Skip to main content
CESDK/CE.SDK/Web Editor/Customization/API Reference

Asset Library Entry

Learn how to configure what is shown in the asset library

An Asset Source is defined within the engine and can be seen as some sort of database of assets, it does not define how these assets are presented to the user. The web editor provides a versatile asset library that will display the assets in a user-friendly way inside a panel. However since an asset source does not provide any presentational information, the web editor needs to be told how to display the assets. This connection is made with an Asset Library Entry.

When you open the asset library, either by calling openPanel or adding a ly.img.assetLibrary.dock component to the dock, you must provide asset library entries. Only with these entries, the asset library will know what and how to display assets.

Managing Asset Library Entries#

The CE.SDK web editor has an internal store of asset library entries that are referenced by asset libraries. You can find, add, remove, and update entries in this store.

CreativeEditorSDK.create('#cesdk', config).then(async (cesdk) => {
await cesdk.addDefaultAssetSources();
await cesdk.addDemoAssetSources();
await cesdk.createDesignScene();
// Find all asset library entries
const entryIds = cesdk.ui.findAllAssetLibraryEntries();
if (entryIds.includes('ly.img.image')) {
// Get the default image entry of the web editor
const entry = cesdk.ui.getAssetLibraryEntry('ly.img.image');
// ... to add a new source id.
cesdk.ui.updateAssetLibraryEntry('ly.img.image', {
sourceIds: [...entry.sourceIds, 'my.own.image.source'],
});
}
// Add a new custom asset library entry
cesdk.ui.addAssetLibraryEntry({
id: 'my.own.image.entry',
sourceIds: ['my.own.image.source'],
sceneMode: 'Design',
previewLength: 5,
previewBackgroundType: 'cover',
gridBackgroundType: 'cover',
gridColumns: 2
});
// Remove a default entry for stickers.
cesdk.ui.removeAssetLibraryEntry('ly.img.sticker');
MethodDescription
Method
findAllAssetLibraryEntries()
Description
Returns all available asset library entries by their id.
Method
addAssetLibraryEntry(entry)
Description
Adds a new asset library entry to the store.
Method
getAssetLibraryEntry(id)
Description
Returns the asset library entry for the given id if present and undefined otherwise.
Method
updateAssetLibraryEntry(id, entry)
Description
Updates the asset library entry for the given id with the provided entry object. It does not replace the entry but is merged with a present entry.
Method
removeAssetLibraryEntry(id)
Description
Removes the asset library entry for the given id.

Using Asset Library Entries#

Asset library entries are used by an asset library. How the library gets the entries depends on the context. The main use case for a library is the dock. This is described in the Dock API documentation. We will describe further use cases here.

Replace Asset Library#

The fill of a block can be replaced with another asset. What assets are applicable is different for each block. The web editor provides a function setReplaceAssetLibraryEntries. It gets a function that is used to define what block should be replaced with what asset. It will get the current context (most importantly the selected block) and will return ids to asset library entries that shall be used by the replace asset library.

cesdk.ui.setReplaceAssetLibraryEntries((context) => {
const { selectedBlocks, defaultEntryIds } = context;
// Most of the time replace makes only sense if one block is selected.
if (selectedBlocks.length !== 1) {
// If no entry ids are returned, a replace button will not be shown.
return [];
}
// id, block and fill type are provided for the selected block.
const { id, blockType, fillType } = selectedBlocks[0];
if (fillType === '//ly.img.ubq/fill/image') {
return ['my.own.image.entry'];
}
return [];
});

Background Tracks Asset Library#

In the video timeline, the background track allows only certain type of assets. With setBackgroundTrackAssetLibraryEntries you can define what asset library entries are allowed for the background track when the user clicks on the "Add to Background Track" button.

// Only the image and video entries are allowed for the background track.
cesdk.ui.setBackgroundTrackAssetLibraryEntries(['ly.img.video', 'ly.img.video']);

Asset Library Entry Definition#

Define What to Display#

The following properties tell the asset library what data should be queried and displayed.

PropertyTypeDescription
Property
id
Type
string
Description
The unique id of this entry that is referenced by other APIs and passed to the asset library.
Property
sourceIds
Type
string[]
Description
Defines what asset sources should be queried by the asset library.
Property
excludeGroups
Type
string[]
Description
If the asset sources support groups, these will be excluded and not displayed.
Property
includeGroups
Type
string[]
Description
If the asset sources support groups, only these will be displayed and all other groups will be ignored.
Property
sceneMode
Type
'Design' or 'Video'
Description
If set, the asset library will use this entry exclusively in the respective scene mode.

Define How to Display#

Besides properties that define what data should be displayed, there are also properties that specify how the data should be displayed to meet specific use case requirements.

Preview and Grid#

Some settings are for the preview and some for the grid view. If multiple asset sources or groups within a source are used, the asset library will show short sections with only a few assets shown. This is what we call the preview. The grid view is the main view where all assets are shown.

PropertyTypeDescription
Property
title
Type
string or ((options: { group?: string; sourceId?: string }) => string
Description
Use for custom translation in the overviews for a group or a source. If undefined is returned by the function it will be handled like there wasn't a title function set at all.
Property
canAdd
Type
boolean' or '(sourceId: string) => boolean'
Description
If true an upload button will be shown and the uploaded file will be added to the source. Please note that the asset source needs to support addAsset as well.
Property
canRemove
Type
boolean' or '(sourceId: string) => boolean'
Description
If true a remove button will be shown which will remove the asset from the source. Please note that the asset source needs to support removeAsset as well.
Property
previewLength
Type
number
Description
Defines how many assets will be shown in a preview section of a source or group.
Property
previewBackgroundType
Type
cover or contain
Description
If the thumbUri is set as a background that will be contained or covered by the card in the preview view.
Property
gridBackgroundType
Type
cover or contain
Description
If the thumbUri is set as a background that will be contained or covered by the card in the grid view.
Property
gridColumns
Type
number
Description
Number of columns in the grid view.
Property
gridItemHeight
Type
auto or square
Description
The height of an item in the grid view:
- auto automatically determines height yielding a masonry-like grid view.
- square every card will have the same square size.
Property
cardBorder
Type
boolean
Description
Draws a border around the card if set to true.
Property
cardLabel
Type
(assetResult: AssetResult) => string
Description
Overwrites the label of a card for a specific asset result
Property
cardLabelPosition
Type
(assetResult: AssetResult) => 'inside' \| 'below'
Description
Position of the label inside or below the card.
Property
cardLabelTruncateLines
Type
(assetResult: AssetResult) => 'single' \| 'multi'
Description
Controls label truncation to occur at end of first line (single), or at end of second line (multi).
Property
cardBackground
Type
CardBackground[]
Description
Determines what will be used as the card background from the asset and in which priorities. The first preference for which the path returns a value will be used to decide what and how the background will be rendered. E.g. a path of meta.thumbUri will look inside the asset for a value asset.meta.thumbUri. This non-null value will be used.
The type of preference decides how the card will render the background.

svgVectorPath creates a <svg> element with the given vector path. Adapts the color depending on the theme. image uses a CSS background image