@imgly/codesign-mcp 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +16 -0
- package/README.md +158 -0
- package/assets/docs/api/SKILL.md +49 -0
- package/assets/docs/api/index.d.ts +10518 -0
- package/assets/docs/guide/SKILL.md +142 -0
- package/assets/docs/guide/actions.md +1038 -0
- package/assets/docs/guide/animation/create/base.md +467 -0
- package/assets/docs/guide/animation/create/text.md +453 -0
- package/assets/docs/guide/animation/create.md +558 -0
- package/assets/docs/guide/animation/edit.md +501 -0
- package/assets/docs/guide/animation/overview.md +22 -0
- package/assets/docs/guide/animation/types.md +430 -0
- package/assets/docs/guide/animation.md +23 -0
- package/assets/docs/guide/api/AssetAPI.md +602 -0
- package/assets/docs/guide/api/BlockAPI.md +6152 -0
- package/assets/docs/guide/api/CreativeEngine.md +180 -0
- package/assets/docs/guide/api/EditorAPI.md +1261 -0
- package/assets/docs/guide/api/EventAPI.md +25 -0
- package/assets/docs/guide/api/SceneAPI.md +729 -0
- package/assets/docs/guide/api/VariableAPI.md +59 -0
- package/assets/docs/guide/api/types.md +71 -0
- package/assets/docs/guide/api-reference/overview.md +20 -0
- package/assets/docs/guide/automation/auto-resize.md +412 -0
- package/assets/docs/guide/automation/batch-processing.md +474 -0
- package/assets/docs/guide/automation/data-merge.md +406 -0
- package/assets/docs/guide/automation/design-generation.md +107 -0
- package/assets/docs/guide/automation/overview.md +16 -0
- package/assets/docs/guide/automation.md +24 -0
- package/assets/docs/guide/browser-support.md +38 -0
- package/assets/docs/guide/capabilities.md +18 -0
- package/assets/docs/guide/colors/adjust.md +551 -0
- package/assets/docs/guide/colors/apply.md +349 -0
- package/assets/docs/guide/colors/basics.md +440 -0
- package/assets/docs/guide/colors/conversion.md +504 -0
- package/assets/docs/guide/colors/create-color-palette.md +426 -0
- package/assets/docs/guide/colors/for-print/cmyk.md +577 -0
- package/assets/docs/guide/colors/for-print/spot.md +751 -0
- package/assets/docs/guide/colors/for-print.md +21 -0
- package/assets/docs/guide/colors/for-screen/p3.md +60 -0
- package/assets/docs/guide/colors/for-screen/srgb.md +463 -0
- package/assets/docs/guide/colors/for-screen.md +21 -0
- package/assets/docs/guide/colors/overview.md +20 -0
- package/assets/docs/guide/colors/replace.md +535 -0
- package/assets/docs/guide/colors.md +28 -0
- package/assets/docs/guide/compatibility.md +27 -0
- package/assets/docs/guide/concepts/architecture.md +99 -0
- package/assets/docs/guide/concepts/assets.md +360 -0
- package/assets/docs/guide/concepts/blocks.md +750 -0
- package/assets/docs/guide/concepts/buffers.md +546 -0
- package/assets/docs/guide/concepts/design-units.md +333 -0
- package/assets/docs/guide/concepts/edit-modes.md +431 -0
- package/assets/docs/guide/concepts/editing-workflow.md +303 -0
- package/assets/docs/guide/concepts/events.md +466 -0
- package/assets/docs/guide/concepts/headless-mode/browser.md +291 -0
- package/assets/docs/guide/concepts/pages.md +396 -0
- package/assets/docs/guide/concepts/resources.md +496 -0
- package/assets/docs/guide/concepts/scenes.md +443 -0
- package/assets/docs/guide/concepts/templating.md +194 -0
- package/assets/docs/guide/concepts/terminology.md +296 -0
- package/assets/docs/guide/concepts/undo-and-history.md +461 -0
- package/assets/docs/guide/concepts.md +38 -0
- package/assets/docs/guide/configuration.md +469 -0
- package/assets/docs/guide/conversion/overview.md +22 -0
- package/assets/docs/guide/conversion/to-base64.md +234 -0
- package/assets/docs/guide/conversion/to-pdf.md +616 -0
- package/assets/docs/guide/conversion/to-png.md +290 -0
- package/assets/docs/guide/conversion.md +23 -0
- package/assets/docs/guide/create-audio/audio/add-music.md +430 -0
- package/assets/docs/guide/create-audio/audio/add-sound-effects.md +664 -0
- package/assets/docs/guide/create-audio/audio/loop.md +370 -0
- package/assets/docs/guide/create-audio/audio.md +336 -0
- package/assets/docs/guide/create-composition/add-background.md +395 -0
- package/assets/docs/guide/create-composition/blend-modes.md +372 -0
- package/assets/docs/guide/create-composition/collage.md +432 -0
- package/assets/docs/guide/create-composition/group-and-ungroup.md +388 -0
- package/assets/docs/guide/create-composition/layer-management.md +503 -0
- package/assets/docs/guide/create-composition/layout.md +396 -0
- package/assets/docs/guide/create-composition/lock-design.md +362 -0
- package/assets/docs/guide/create-composition/multi-page.md +204 -0
- package/assets/docs/guide/create-composition/overview.md +18 -0
- package/assets/docs/guide/create-composition/programmatic.md +593 -0
- package/assets/docs/guide/create-composition.md +30 -0
- package/assets/docs/guide/create-templates/add-dynamic-content/placeholders.md +688 -0
- package/assets/docs/guide/create-templates/add-dynamic-content/set-editing-constraints.md +600 -0
- package/assets/docs/guide/create-templates/add-dynamic-content/text-variables.md +647 -0
- package/assets/docs/guide/create-templates/add-dynamic-content.md +307 -0
- package/assets/docs/guide/create-templates/add-to-template-library.md +297 -0
- package/assets/docs/guide/create-templates/edit-or-remove.md +441 -0
- package/assets/docs/guide/create-templates/from-scratch.md +558 -0
- package/assets/docs/guide/create-templates/import/from-scene-file.md +440 -0
- package/assets/docs/guide/create-templates/import.md +244 -0
- package/assets/docs/guide/create-templates/lock.md +325 -0
- package/assets/docs/guide/create-templates/overview.md +16 -0
- package/assets/docs/guide/create-templates.md +32 -0
- package/assets/docs/guide/create-video/audio/adjust-speed.md +302 -0
- package/assets/docs/guide/create-video/audio/adjust-volume.md +346 -0
- package/assets/docs/guide/create-video/control.md +285 -0
- package/assets/docs/guide/create-video/limitations.md +396 -0
- package/assets/docs/guide/create-video/overview.md +224 -0
- package/assets/docs/guide/create-video/timeline-editor.md +622 -0
- package/assets/docs/guide/create-video/update-caption-presets.md +676 -0
- package/assets/docs/guide/create-video.md +32 -0
- package/assets/docs/guide/edit-image/add-watermark.md +497 -0
- package/assets/docs/guide/edit-image/overview.md +22 -0
- package/assets/docs/guide/edit-image/remove-bg.md +420 -0
- package/assets/docs/guide/edit-image/replace-colors.md +680 -0
- package/assets/docs/guide/edit-image/transform/crop.md +523 -0
- package/assets/docs/guide/edit-image/transform/move.md +279 -0
- package/assets/docs/guide/edit-image/transform/resize.md +301 -0
- package/assets/docs/guide/edit-image/transform/rotate.md +408 -0
- package/assets/docs/guide/edit-image/transform/scale.md +278 -0
- package/assets/docs/guide/edit-image/transform.md +24 -0
- package/assets/docs/guide/edit-image/vectorize.md +204 -0
- package/assets/docs/guide/edit-image.md +25 -0
- package/assets/docs/guide/edit-video/add-captions.md +589 -0
- package/assets/docs/guide/edit-video/add-watermark.md +429 -0
- package/assets/docs/guide/edit-video/join-and-arrange.md +540 -0
- package/assets/docs/guide/edit-video/redaction.md +544 -0
- package/assets/docs/guide/edit-video/split.md +634 -0
- package/assets/docs/guide/edit-video/transform/crop.md +380 -0
- package/assets/docs/guide/edit-video/transform/flip.md +182 -0
- package/assets/docs/guide/edit-video/transform/move.md +413 -0
- package/assets/docs/guide/edit-video/transform/resize.md +534 -0
- package/assets/docs/guide/edit-video/transform/rotate.md +312 -0
- package/assets/docs/guide/edit-video/transform/scale.md +603 -0
- package/assets/docs/guide/edit-video/transform.md +25 -0
- package/assets/docs/guide/edit-video/trim.md +773 -0
- package/assets/docs/guide/engine-interface.md +108 -0
- package/assets/docs/guide/export-save-publish/create-thumbnail.md +292 -0
- package/assets/docs/guide/export-save-publish/export/compress.md +639 -0
- package/assets/docs/guide/export-save-publish/export/overview.md +576 -0
- package/assets/docs/guide/export-save-publish/export/partial-export.md +694 -0
- package/assets/docs/guide/export-save-publish/export/size-limits.md +401 -0
- package/assets/docs/guide/export-save-publish/export/to-html5.md +474 -0
- package/assets/docs/guide/export-save-publish/export/to-jpeg.md +312 -0
- package/assets/docs/guide/export-save-publish/export/to-mp4.md +364 -0
- package/assets/docs/guide/export-save-publish/export/to-pdf.md +389 -0
- package/assets/docs/guide/export-save-publish/export/to-png.md +255 -0
- package/assets/docs/guide/export-save-publish/export/to-raw-data.md +303 -0
- package/assets/docs/guide/export-save-publish/export/to-webp.md +261 -0
- package/assets/docs/guide/export-save-publish/export/with-color-mask.md +278 -0
- package/assets/docs/guide/export-save-publish/export.md +36 -0
- package/assets/docs/guide/export-save-publish/for-printing.md +423 -0
- package/assets/docs/guide/export-save-publish/for-social-media.md +318 -0
- package/assets/docs/guide/export-save-publish/pre-export-validation.md +698 -0
- package/assets/docs/guide/export-save-publish/save.md +340 -0
- package/assets/docs/guide/export-save-publish/store-custom-metadata.md +367 -0
- package/assets/docs/guide/file-format-support.md +34 -0
- package/assets/docs/guide/fills/color.md +678 -0
- package/assets/docs/guide/fills/image.md +539 -0
- package/assets/docs/guide/fills/overview.md +144 -0
- package/assets/docs/guide/fills/video.md +641 -0
- package/assets/docs/guide/fills.md +24 -0
- package/assets/docs/guide/filters-and-effects/apply.md +1019 -0
- package/assets/docs/guide/filters-and-effects/blur.md +382 -0
- package/assets/docs/guide/filters-and-effects/chroma-key-green-screen.md +445 -0
- package/assets/docs/guide/filters-and-effects/create-custom-filters.md +614 -0
- package/assets/docs/guide/filters-and-effects/create-custom-lut-filter.md +426 -0
- package/assets/docs/guide/filters-and-effects/distortion.md +527 -0
- package/assets/docs/guide/filters-and-effects/duotone.md +602 -0
- package/assets/docs/guide/filters-and-effects/gradients.md +1311 -0
- package/assets/docs/guide/filters-and-effects/overview.md +22 -0
- package/assets/docs/guide/filters-and-effects/support.md +623 -0
- package/assets/docs/guide/filters-and-effects.md +28 -0
- package/assets/docs/guide/get-started/agent-skills.md +119 -0
- package/assets/docs/guide/get-started/build-with-ai.md +45 -0
- package/assets/docs/guide/get-started/mcp-server.md +119 -0
- package/assets/docs/guide/get-started/overview.md +28 -0
- package/assets/docs/guide/get-started/vanilla-js/quickstart.md +175 -0
- package/assets/docs/guide/grid-and-rulers.md +222 -0
- package/assets/docs/guide/guides/export-save-publish/export/audio.md +224 -0
- package/assets/docs/guide/guides/text/rendering-internals.md +796 -0
- package/assets/docs/guide/guides.md +49 -0
- package/assets/docs/guide/import-media/asset-library.md +23 -0
- package/assets/docs/guide/import-media/asset-panel/basics.md +324 -0
- package/assets/docs/guide/import-media/asset-panel/customize.md +478 -0
- package/assets/docs/guide/import-media/asset-panel/refresh-assets.md +415 -0
- package/assets/docs/guide/import-media/asset-panel/thumbnails.md +633 -0
- package/assets/docs/guide/import-media/capture-from-camera/record-video.md +137 -0
- package/assets/docs/guide/import-media/capture-from-camera.md +20 -0
- package/assets/docs/guide/import-media/concepts.md +173 -0
- package/assets/docs/guide/import-media/content-json-schema.md +615 -0
- package/assets/docs/guide/import-media/default-assets.md +381 -0
- package/assets/docs/guide/import-media/edit-or-remove-assets.md +489 -0
- package/assets/docs/guide/import-media/file-format-support.md +178 -0
- package/assets/docs/guide/import-media/from-local-source/user-upload.md +438 -0
- package/assets/docs/guide/import-media/from-local-source.md +20 -0
- package/assets/docs/guide/import-media/from-remote-source/asset-versioning.md +390 -0
- package/assets/docs/guide/import-media/from-remote-source/getty-images.md +627 -0
- package/assets/docs/guide/import-media/from-remote-source/imgly-premium-assets.md +625 -0
- package/assets/docs/guide/import-media/from-remote-source/pexels.md +692 -0
- package/assets/docs/guide/import-media/from-remote-source/remote-asset.md +473 -0
- package/assets/docs/guide/import-media/from-remote-source/soundstripe.md +497 -0
- package/assets/docs/guide/import-media/from-remote-source/third-party.md +51 -0
- package/assets/docs/guide/import-media/from-remote-source/unsplash.md +914 -0
- package/assets/docs/guide/import-media/from-remote-source/your-server.md +764 -0
- package/assets/docs/guide/import-media/from-remote-source.md +28 -0
- package/assets/docs/guide/import-media/overview.md +32 -0
- package/assets/docs/guide/import-media/retrieve-mimetype.md +274 -0
- package/assets/docs/guide/import-media/size-limits.md +20 -0
- package/assets/docs/guide/import-media/source-sets.md +476 -0
- package/assets/docs/guide/import-media.md +32 -0
- package/assets/docs/guide/insert-media/audio.md +291 -0
- package/assets/docs/guide/insert-media/images.md +380 -0
- package/assets/docs/guide/insert-media/position-and-align.md +734 -0
- package/assets/docs/guide/insert-media/shapes-or-stickers.md +799 -0
- package/assets/docs/guide/insert-media/videos.md +308 -0
- package/assets/docs/guide/insert-media.md +24 -0
- package/assets/docs/guide/key-capabilities.md +24 -0
- package/assets/docs/guide/key-concepts.md +83 -0
- package/assets/docs/guide/licensing.md +45 -0
- package/assets/docs/guide/llms-txt.md +53 -0
- package/assets/docs/guide/open-the-editor/blank-canvas.md +124 -0
- package/assets/docs/guide/open-the-editor/from-htmlcanvas.md +228 -0
- package/assets/docs/guide/open-the-editor/from-image.md +205 -0
- package/assets/docs/guide/open-the-editor/from-template.md +189 -0
- package/assets/docs/guide/open-the-editor/from-video.md +274 -0
- package/assets/docs/guide/open-the-editor/import-design/from-archive.md +504 -0
- package/assets/docs/guide/open-the-editor/import-design/from-indesign.md +680 -0
- package/assets/docs/guide/open-the-editor/import-design/from-photoshop.md +865 -0
- package/assets/docs/guide/open-the-editor/import-design.md +481 -0
- package/assets/docs/guide/open-the-editor/load-scene.md +178 -0
- package/assets/docs/guide/open-the-editor/overview.md +20 -0
- package/assets/docs/guide/open-the-editor/set-zoom-level.md +303 -0
- package/assets/docs/guide/open-the-editor/uri-resolver.md +347 -0
- package/assets/docs/guide/open-the-editor.md +29 -0
- package/assets/docs/guide/outlines/overview.md +14 -0
- package/assets/docs/guide/outlines/shadows-and-glows.md +515 -0
- package/assets/docs/guide/outlines/strokes.md +292 -0
- package/assets/docs/guide/outlines.md +22 -0
- package/assets/docs/guide/overview.md +22 -0
- package/assets/docs/guide/performance.md +217 -0
- package/assets/docs/guide/plugins/asset-sources.md +553 -0
- package/assets/docs/guide/plugins/print-ready-pdf.md +549 -0
- package/assets/docs/guide/plugins.md +36 -0
- package/assets/docs/guide/rules/asset-handling.md +180 -0
- package/assets/docs/guide/rules/common-pitfalls.md +272 -0
- package/assets/docs/guide/rules/content-fill-mode.md +29 -0
- package/assets/docs/guide/rules/enforce-brand-guidelines.md +672 -0
- package/assets/docs/guide/rules/lock-content.md +478 -0
- package/assets/docs/guide/rules/moderate-content.md +761 -0
- package/assets/docs/guide/rules/overview.md +514 -0
- package/assets/docs/guide/rules/silent-init-errors.md +137 -0
- package/assets/docs/guide/rules/verify-properties-before-use.md +78 -0
- package/assets/docs/guide/rules.md +23 -0
- package/assets/docs/guide/security.md +199 -0
- package/assets/docs/guide/serve-assets.md +332 -0
- package/assets/docs/guide/settings.md +199 -0
- package/assets/docs/guide/shapes.md +23 -0
- package/assets/docs/guide/starterkits/3d-mockup-editor.md +748 -0
- package/assets/docs/guide/starterkits/advanced-editor.md +698 -0
- package/assets/docs/guide/starterkits/advanced-video-editor.md +696 -0
- package/assets/docs/guide/starterkits/ai-editor.md +749 -0
- package/assets/docs/guide/starterkits/airtable-image-editor.md +672 -0
- package/assets/docs/guide/starterkits/apparel-ui.md +188 -0
- package/assets/docs/guide/starterkits/assets.md +27 -0
- package/assets/docs/guide/starterkits/auto-resize.md +586 -0
- package/assets/docs/guide/starterkits/automated-video-generation.md +692 -0
- package/assets/docs/guide/starterkits/background-removal-editor.md +480 -0
- package/assets/docs/guide/starterkits/content-moderation.md +863 -0
- package/assets/docs/guide/starterkits/creative-automation.md +28 -0
- package/assets/docs/guide/starterkits/custom-built-uis.md +26 -0
- package/assets/docs/guide/starterkits/customization.md +29 -0
- package/assets/docs/guide/starterkits/cutout-lines-editor.md +470 -0
- package/assets/docs/guide/starterkits/data-merge.md +850 -0
- package/assets/docs/guide/starterkits/design-editor.md +698 -0
- package/assets/docs/guide/starterkits/design-generation.md +719 -0
- package/assets/docs/guide/starterkits/design-validation.md +808 -0
- package/assets/docs/guide/starterkits/editor-ui-configurations.md +14 -0
- package/assets/docs/guide/starterkits/export-options.md +724 -0
- package/assets/docs/guide/starterkits/export-using-renderer.md +708 -0
- package/assets/docs/guide/starterkits/extensibility.md +28 -0
- package/assets/docs/guide/starterkits/force-crop-editor.md +675 -0
- package/assets/docs/guide/starterkits/form-based-template-adoption.md +522 -0
- package/assets/docs/guide/starterkits/getty-images-editor.md +700 -0
- package/assets/docs/guide/starterkits/html5-ads-exporter.md +719 -0
- package/assets/docs/guide/starterkits/indesign-template-import.md +580 -0
- package/assets/docs/guide/starterkits/layouts-editor.md +724 -0
- package/assets/docs/guide/starterkits/mobile-ui.md +185 -0
- package/assets/docs/guide/starterkits/mockup-editor.md +745 -0
- package/assets/docs/guide/starterkits/multi-image-generation.md +542 -0
- package/assets/docs/guide/starterkits/page-sizes-editor.md +657 -0
- package/assets/docs/guide/starterkits/pexels-image-editor.md +665 -0
- package/assets/docs/guide/starterkits/photo-editor.md +755 -0
- package/assets/docs/guide/starterkits/photo-ui.md +186 -0
- package/assets/docs/guide/starterkits/photobook-ui.md +188 -0
- package/assets/docs/guide/starterkits/placeholders.md +678 -0
- package/assets/docs/guide/starterkits/player.md +405 -0
- package/assets/docs/guide/starterkits/plugins.md +25 -0
- package/assets/docs/guide/starterkits/postcard-editor.md +202 -0
- package/assets/docs/guide/starterkits/pptx-template-import.md +581 -0
- package/assets/docs/guide/starterkits/print-ready-pdf-editor.md +746 -0
- package/assets/docs/guide/starterkits/product-editor.md +773 -0
- package/assets/docs/guide/starterkits/psd-template-import.md +580 -0
- package/assets/docs/guide/starterkits/qr-code-editor.md +470 -0
- package/assets/docs/guide/starterkits/single-page-editor.md +661 -0
- package/assets/docs/guide/starterkits/start-with-image.md +684 -0
- package/assets/docs/guide/starterkits/start-with-video.md +651 -0
- package/assets/docs/guide/starterkits/t-shirt-designer.md +742 -0
- package/assets/docs/guide/starterkits/templating.md +23 -0
- package/assets/docs/guide/starterkits/theming.md +662 -0
- package/assets/docs/guide/starterkits/translation-internationalization.md +662 -0
- package/assets/docs/guide/starterkits/unsplash-editor.md +839 -0
- package/assets/docs/guide/starterkits/vectorizer-editor.md +466 -0
- package/assets/docs/guide/starterkits/version-history.md +745 -0
- package/assets/docs/guide/starterkits/video-animations.md +853 -0
- package/assets/docs/guide/starterkits/video-captions.md +884 -0
- package/assets/docs/guide/starterkits/video-editing.md +25 -0
- package/assets/docs/guide/starterkits/video-editor.md +696 -0
- package/assets/docs/guide/starterkits/video-export-options.md +676 -0
- package/assets/docs/guide/starterkits/viewer.md +400 -0
- package/assets/docs/guide/starterkits.md +41 -0
- package/assets/docs/guide/stickers-and-shapes/combine.md +743 -0
- package/assets/docs/guide/stickers-and-shapes/create-cutout.md +425 -0
- package/assets/docs/guide/stickers-and-shapes/create-edit/create-shapes.md +794 -0
- package/assets/docs/guide/stickers-and-shapes/create-edit/create-stickers.md +290 -0
- package/assets/docs/guide/stickers-and-shapes/create-edit/edit-shapes.md +211 -0
- package/assets/docs/guide/stickers-and-shapes/create-edit/vector-edit.md +362 -0
- package/assets/docs/guide/stickers-and-shapes/insert-qr-code.md +208 -0
- package/assets/docs/guide/stickers.md +21 -0
- package/assets/docs/guide/text/add.md +641 -0
- package/assets/docs/guide/text/adjust-spacing.md +288 -0
- package/assets/docs/guide/text/auto-size.md +404 -0
- package/assets/docs/guide/text/custom-fonts.md +401 -0
- package/assets/docs/guide/text/decorations.md +330 -0
- package/assets/docs/guide/text/edit.md +458 -0
- package/assets/docs/guide/text/effects.md +244 -0
- package/assets/docs/guide/text/emojis.md +310 -0
- package/assets/docs/guide/text/enumerations.md +258 -0
- package/assets/docs/guide/text/language-support.md +604 -0
- package/assets/docs/guide/text/overview.md +14 -0
- package/assets/docs/guide/text/styling.md +390 -0
- package/assets/docs/guide/text/text-designs.md +834 -0
- package/assets/docs/guide/text.md +33 -0
- package/assets/docs/guide/to-v1-10.md +131 -0
- package/assets/docs/guide/to-v1-13.md +165 -0
- package/assets/docs/guide/to-v1-19.md +315 -0
- package/assets/docs/guide/to-v1-32.md +110 -0
- package/assets/docs/guide/to-v1-69.md +468 -0
- package/assets/docs/guide/to-v1-72.md +193 -0
- package/assets/docs/guide/upgrade.md +25 -0
- package/assets/docs/guide/use-templates/apply-template.md +279 -0
- package/assets/docs/guide/use-templates/generate.md +405 -0
- package/assets/docs/guide/use-templates/library.md +450 -0
- package/assets/docs/guide/use-templates/overview.md +20 -0
- package/assets/docs/guide/use-templates/programmatic.md +482 -0
- package/assets/docs/guide/use-templates/replace-content.md +399 -0
- package/assets/docs/guide/user-interface/ai-integration/audio-generation.md +428 -0
- package/assets/docs/guide/user-interface/ai-integration/auto-captions.md +337 -0
- package/assets/docs/guide/user-interface/ai-integration/custom-provider.md +853 -0
- package/assets/docs/guide/user-interface/ai-integration/gateway-provider.md +1045 -0
- package/assets/docs/guide/user-interface/ai-integration/image-generation.md +641 -0
- package/assets/docs/guide/user-interface/ai-integration/integrate.md +966 -0
- package/assets/docs/guide/user-interface/ai-integration/proxy-server.md +99 -0
- package/assets/docs/guide/user-interface/ai-integration/text-generation.md +498 -0
- package/assets/docs/guide/user-interface/ai-integration/video-generation.md +493 -0
- package/assets/docs/guide/user-interface/ai-integration.md +30 -0
- package/assets/docs/guide/user-interface/appearance/change-ui-font.md +316 -0
- package/assets/docs/guide/user-interface/appearance/custom-labels.md +509 -0
- package/assets/docs/guide/user-interface/appearance/icons.md +373 -0
- package/assets/docs/guide/user-interface/appearance/theming.md +665 -0
- package/assets/docs/guide/user-interface/appearance.md +23 -0
- package/assets/docs/guide/user-interface/build-your-own-ui.md +620 -0
- package/assets/docs/guide/user-interface/customization/canvas-menu.md +412 -0
- package/assets/docs/guide/user-interface/customization/canvas.md +281 -0
- package/assets/docs/guide/user-interface/customization/color-palette.md +413 -0
- package/assets/docs/guide/user-interface/customization/crop-presets.md +384 -0
- package/assets/docs/guide/user-interface/customization/disable-or-enable.md +676 -0
- package/assets/docs/guide/user-interface/customization/dock.md +399 -0
- package/assets/docs/guide/user-interface/customization/force-crop.md +289 -0
- package/assets/docs/guide/user-interface/customization/inspector-bar.md +371 -0
- package/assets/docs/guide/user-interface/customization/navigation-bar.md +516 -0
- package/assets/docs/guide/user-interface/customization/page-format.md +436 -0
- package/assets/docs/guide/user-interface/customization/panel.md +605 -0
- package/assets/docs/guide/user-interface/customization/quick-start/add-action-buttons.md +531 -0
- package/assets/docs/guide/user-interface/customization/quick-start/add-dock-buttons.md +358 -0
- package/assets/docs/guide/user-interface/customization/quick-start/create-custom-components.md +374 -0
- package/assets/docs/guide/user-interface/customization/quick-start/reorder-components.md +323 -0
- package/assets/docs/guide/user-interface/customization/quick-start/show-hide-components.md +294 -0
- package/assets/docs/guide/user-interface/customization/quick-start.md +12 -0
- package/assets/docs/guide/user-interface/customization/reference/component-order-api.md +519 -0
- package/assets/docs/guide/user-interface/customization/reference/component-reference.md +333 -0
- package/assets/docs/guide/user-interface/customization/reference.md +12 -0
- package/assets/docs/guide/user-interface/customization.md +39 -0
- package/assets/docs/guide/user-interface/localization.md +633 -0
- package/assets/docs/guide/user-interface/overview.md +167 -0
- package/assets/docs/guide/user-interface/ui-extensions/add-custom-feature.md +411 -0
- package/assets/docs/guide/user-interface/ui-extensions/asset-library.md +721 -0
- package/assets/docs/guide/user-interface/ui-extensions/create-custom-panel.md +331 -0
- package/assets/docs/guide/user-interface/ui-extensions/customize-behaviour.md +553 -0
- package/assets/docs/guide/user-interface/ui-extensions/notifications-and-dialogs.md +672 -0
- package/assets/docs/guide/user-interface/ui-extensions/quick-actions.md +415 -0
- package/assets/docs/guide/user-interface/ui-extensions/register-new-component.md +521 -0
- package/assets/docs/guide/user-interface/ui-extensions.md +26 -0
- package/assets/docs/guide/user-interface.md +25 -0
- package/assets/docs/guide/what-is-cesdk.md +319 -0
- package/assets/docs/handbook/SKILL.md +521 -0
- package/assets/prompts/evals-assetGenerate.md +12 -0
- package/assets/prompts/evals-brutalistCore.md +34 -0
- package/assets/prompts/evals-danskCatalogue.md +31 -0
- package/assets/prompts/evals-exportRoundTrip.md +12 -0
- package/assets/prompts/evals-inspectPriorCode.md +16 -0
- package/assets/prompts/evals-listProjectFiles.md +6 -0
- package/assets/prompts/evals-readAndExplainScript.md +6 -0
- package/assets/prompts/evals-resumeAcrossRestart.md +15 -0
- package/assets/prompts/evals-rewindRecovery.md +10 -0
- package/assets/prompts/evals-searchAcrossFiles.md +6 -0
- package/assets/prompts/evals-weddingCard.md +20 -0
- package/assets/prompts/explain.md +6 -0
- package/assets/prompts/review.md +6 -0
- package/dist/assets/inline.generated.d.ts +2 -0
- package/dist/assets/inline.generated.d.ts.map +1 -0
- package/dist/assets/inline.generated.js +413 -0
- package/dist/assets/inline.generated.js.map +1 -0
- package/dist/assets/load-browser.d.ts +8 -0
- package/dist/assets/load-browser.d.ts.map +1 -0
- package/dist/assets/load-browser.js +11 -0
- package/dist/assets/load-browser.js.map +1 -0
- package/dist/assets/load-node.d.ts +8 -0
- package/dist/assets/load-node.d.ts.map +1 -0
- package/dist/assets/load-node.js +11 -0
- package/dist/assets/load-node.js.map +1 -0
- package/dist/cli/http.d.ts +2 -0
- package/dist/cli/http.d.ts.map +1 -0
- package/dist/cli/http.js +231 -0
- package/dist/cli/http.js.map +1 -0
- package/dist/cli/redirect-console.d.ts +10 -0
- package/dist/cli/redirect-console.d.ts.map +1 -0
- package/dist/cli/redirect-console.js +18 -0
- package/dist/cli/redirect-console.js.map +1 -0
- package/dist/cli/resolve-license.d.ts +2 -0
- package/dist/cli/resolve-license.d.ts.map +1 -0
- package/dist/cli/resolve-license.js +13 -0
- package/dist/cli/resolve-license.js.map +1 -0
- package/dist/cli/stdio.d.ts +2 -0
- package/dist/cli/stdio.d.ts.map +1 -0
- package/dist/cli/stdio.js +124 -0
- package/dist/cli/stdio.js.map +1 -0
- package/dist/cli/trial-license.generated.d.ts +2 -0
- package/dist/cli/trial-license.generated.d.ts.map +1 -0
- package/dist/cli/trial-license.generated.js +4 -0
- package/dist/cli/trial-license.generated.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +64 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +61 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +102 -0
- package/dist/config.js.map +1 -0
- package/dist/cross-ref.d.ts +2 -0
- package/dist/cross-ref.d.ts.map +1 -0
- package/dist/cross-ref.js +31 -0
- package/dist/cross-ref.js.map +1 -0
- package/dist/dashboard/router.d.ts +3 -0
- package/dist/dashboard/router.d.ts.map +1 -0
- package/dist/dashboard/router.js +19 -0
- package/dist/dashboard/router.js.map +1 -0
- package/dist/dashboard/spa-assets.generated.d.ts +2 -0
- package/dist/dashboard/spa-assets.generated.d.ts.map +1 -0
- package/dist/dashboard/spa-assets.generated.js +220 -0
- package/dist/dashboard/spa-assets.generated.js.map +1 -0
- package/dist/engine/asset-sources.d.ts +17 -0
- package/dist/engine/asset-sources.d.ts.map +1 -0
- package/dist/engine/asset-sources.js +75 -0
- package/dist/engine/asset-sources.js.map +1 -0
- package/dist/engine/cesdk-adapter.d.ts +10 -0
- package/dist/engine/cesdk-adapter.d.ts.map +1 -0
- package/dist/engine/cesdk-adapter.js +19 -0
- package/dist/engine/cesdk-adapter.js.map +1 -0
- package/dist/engine/index.d.ts +3 -0
- package/dist/engine/index.d.ts.map +1 -0
- package/dist/engine/index.js +3 -0
- package/dist/engine/index.js.map +1 -0
- package/dist/engine/mutex.d.ts +5 -0
- package/dist/engine/mutex.d.ts.map +1 -0
- package/dist/engine/mutex.js +42 -0
- package/dist/engine/mutex.js.map +1 -0
- package/dist/engine/session.d.ts +50 -0
- package/dist/engine/session.d.ts.map +1 -0
- package/dist/engine/session.js +95 -0
- package/dist/engine/session.js.map +1 -0
- package/dist/engine/uri-resolver.d.ts +14 -0
- package/dist/engine/uri-resolver.d.ts.map +1 -0
- package/dist/engine/uri-resolver.js +12 -0
- package/dist/engine/uri-resolver.js.map +1 -0
- package/dist/frontmatter.d.ts +15 -0
- package/dist/frontmatter.d.ts.map +1 -0
- package/dist/frontmatter.js +46 -0
- package/dist/frontmatter.js.map +1 -0
- package/dist/gateway/hosted-stub.d.ts +6 -0
- package/dist/gateway/hosted-stub.d.ts.map +1 -0
- package/dist/gateway/hosted-stub.js +11 -0
- package/dist/gateway/hosted-stub.js.map +1 -0
- package/dist/gateway/index.d.ts +4 -0
- package/dist/gateway/index.d.ts.map +1 -0
- package/dist/gateway/index.js +4 -0
- package/dist/gateway/index.js.map +1 -0
- package/dist/gateway/local.d.ts +14 -0
- package/dist/gateway/local.d.ts.map +1 -0
- package/dist/gateway/local.js +41 -0
- package/dist/gateway/local.js.map +1 -0
- package/dist/gateway/types.d.ts +24 -0
- package/dist/gateway/types.d.ts.map +1 -0
- package/dist/gateway/types.js +7 -0
- package/dist/gateway/types.js.map +1 -0
- package/dist/http/server.d.ts +80 -0
- package/dist/http/server.d.ts.map +1 -0
- package/dist/http/server.js +183 -0
- package/dist/http/server.js.map +1 -0
- package/dist/http/session-manager.d.ts +42 -0
- package/dist/http/session-manager.d.ts.map +1 -0
- package/dist/http/session-manager.js +82 -0
- package/dist/http/session-manager.js.map +1 -0
- package/dist/http/workspace-auth.d.ts +9 -0
- package/dist/http/workspace-auth.d.ts.map +1 -0
- package/dist/http/workspace-auth.js +29 -0
- package/dist/http/workspace-auth.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/dist/metrics/mount.d.ts +11 -0
- package/dist/metrics/mount.d.ts.map +1 -0
- package/dist/metrics/mount.js +13 -0
- package/dist/metrics/mount.js.map +1 -0
- package/dist/metrics/recorder.d.ts +55 -0
- package/dist/metrics/recorder.d.ts.map +1 -0
- package/dist/metrics/recorder.js +97 -0
- package/dist/metrics/recorder.js.map +1 -0
- package/dist/revisions/hash.d.ts +7 -0
- package/dist/revisions/hash.d.ts.map +1 -0
- package/dist/revisions/hash.js +24 -0
- package/dist/revisions/hash.js.map +1 -0
- package/dist/revisions/index.d.ts +4 -0
- package/dist/revisions/index.d.ts.map +1 -0
- package/dist/revisions/index.js +4 -0
- package/dist/revisions/index.js.map +1 -0
- package/dist/revisions/store.d.ts +69 -0
- package/dist/revisions/store.d.ts.map +1 -0
- package/dist/revisions/store.js +196 -0
- package/dist/revisions/store.js.map +1 -0
- package/dist/revisions/types.d.ts +39 -0
- package/dist/revisions/types.d.ts.map +1 -0
- package/dist/revisions/types.js +2 -0
- package/dist/revisions/types.js.map +1 -0
- package/dist/server.d.ts +51 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +175 -0
- package/dist/server.js.map +1 -0
- package/dist/skill-tools.d.ts +3 -0
- package/dist/skill-tools.d.ts.map +1 -0
- package/dist/skill-tools.js +105 -0
- package/dist/skill-tools.js.map +1 -0
- package/dist/test/test/cli/dispatcher.test.d.ts +2 -0
- package/dist/test/test/cli/dispatcher.test.d.ts.map +1 -0
- package/dist/test/test/cli/dispatcher.test.js +47 -0
- package/dist/test/test/cli/dispatcher.test.js.map +1 -0
- package/dist/test/test/cross-ref.test.d.ts +2 -0
- package/dist/test/test/cross-ref.test.d.ts.map +1 -0
- package/dist/test/test/cross-ref.test.js +39 -0
- package/dist/test/test/cross-ref.test.js.map +1 -0
- package/dist/test/test/engine/session.test.d.ts +2 -0
- package/dist/test/test/engine/session.test.d.ts.map +1 -0
- package/dist/test/test/engine/session.test.js +144 -0
- package/dist/test/test/engine/session.test.js.map +1 -0
- package/dist/test/test/engine/uri-resolver.test.d.ts +2 -0
- package/dist/test/test/engine/uri-resolver.test.d.ts.map +1 -0
- package/dist/test/test/engine/uri-resolver.test.js +38 -0
- package/dist/test/test/engine/uri-resolver.test.js.map +1 -0
- package/dist/test/test/frontmatter.test.d.ts +2 -0
- package/dist/test/test/frontmatter.test.d.ts.map +1 -0
- package/dist/test/test/frontmatter.test.js +55 -0
- package/dist/test/test/frontmatter.test.js.map +1 -0
- package/dist/test/test/gateway/hosted-stub.test.d.ts +2 -0
- package/dist/test/test/gateway/hosted-stub.test.d.ts.map +1 -0
- package/dist/test/test/gateway/hosted-stub.test.js +11 -0
- package/dist/test/test/gateway/hosted-stub.test.js.map +1 -0
- package/dist/test/test/gateway/local.test.d.ts +2 -0
- package/dist/test/test/gateway/local.test.d.ts.map +1 -0
- package/dist/test/test/gateway/local.test.js +29 -0
- package/dist/test/test/gateway/local.test.js.map +1 -0
- package/dist/test/test/handbook-contract.test.d.ts +2 -0
- package/dist/test/test/handbook-contract.test.d.ts.map +1 -0
- package/dist/test/test/handbook-contract.test.js +71 -0
- package/dist/test/test/handbook-contract.test.js.map +1 -0
- package/dist/test/test/http/server.test.d.ts +2 -0
- package/dist/test/test/http/server.test.d.ts.map +1 -0
- package/dist/test/test/http/server.test.js +245 -0
- package/dist/test/test/http/server.test.js.map +1 -0
- package/dist/test/test/http/session-manager.test.d.ts +2 -0
- package/dist/test/test/http/session-manager.test.d.ts.map +1 -0
- package/dist/test/test/http/session-manager.test.js +83 -0
- package/dist/test/test/http/session-manager.test.js.map +1 -0
- package/dist/test/test/revisions/hash.test.d.ts +2 -0
- package/dist/test/test/revisions/hash.test.d.ts.map +1 -0
- package/dist/test/test/revisions/hash.test.js +33 -0
- package/dist/test/test/revisions/hash.test.js.map +1 -0
- package/dist/test/test/revisions/store.test.d.ts +2 -0
- package/dist/test/test/revisions/store.test.d.ts.map +1 -0
- package/dist/test/test/revisions/store.test.js +245 -0
- package/dist/test/test/revisions/store.test.js.map +1 -0
- package/dist/test/test/server.test.d.ts +2 -0
- package/dist/test/test/server.test.d.ts.map +1 -0
- package/dist/test/test/server.test.js +157 -0
- package/dist/test/test/server.test.js.map +1 -0
- package/dist/test/test/skill-tools.test.d.ts +2 -0
- package/dist/test/test/skill-tools.test.d.ts.map +1 -0
- package/dist/test/test/skill-tools.test.js +84 -0
- package/dist/test/test/skill-tools.test.js.map +1 -0
- package/dist/test/test/smoke.test.d.ts +2 -0
- package/dist/test/test/smoke.test.d.ts.map +1 -0
- package/dist/test/test/smoke.test.js +8 -0
- package/dist/test/test/smoke.test.js.map +1 -0
- package/dist/test/test/tools/asset-generate.test.d.ts +2 -0
- package/dist/test/test/tools/asset-generate.test.d.ts.map +1 -0
- package/dist/test/test/tools/asset-generate.test.js +66 -0
- package/dist/test/test/tools/asset-generate.test.js.map +1 -0
- package/dist/test/test/tools/edit.test.d.ts +2 -0
- package/dist/test/test/tools/edit.test.d.ts.map +1 -0
- package/dist/test/test/tools/edit.test.js +205 -0
- package/dist/test/test/tools/edit.test.js.map +1 -0
- package/dist/test/test/tools/export.test.d.ts +2 -0
- package/dist/test/test/tools/export.test.d.ts.map +1 -0
- package/dist/test/test/tools/export.test.js +144 -0
- package/dist/test/test/tools/export.test.js.map +1 -0
- package/dist/test/test/tools/history.test.d.ts +2 -0
- package/dist/test/test/tools/history.test.d.ts.map +1 -0
- package/dist/test/test/tools/history.test.js +29 -0
- package/dist/test/test/tools/history.test.js.map +1 -0
- package/dist/test/test/tools/inspect.test.d.ts +2 -0
- package/dist/test/test/tools/inspect.test.d.ts.map +1 -0
- package/dist/test/test/tools/inspect.test.js +62 -0
- package/dist/test/test/tools/inspect.test.js.map +1 -0
- package/dist/test/test/tools/list.test.d.ts +2 -0
- package/dist/test/test/tools/list.test.d.ts.map +1 -0
- package/dist/test/test/tools/list.test.js +23 -0
- package/dist/test/test/tools/list.test.js.map +1 -0
- package/dist/test/test/tools/open-editor.test.d.ts +2 -0
- package/dist/test/test/tools/open-editor.test.d.ts.map +1 -0
- package/dist/test/test/tools/open-editor.test.js +53 -0
- package/dist/test/test/tools/open-editor.test.js.map +1 -0
- package/dist/test/test/tools/preview.test.d.ts +2 -0
- package/dist/test/test/tools/preview.test.d.ts.map +1 -0
- package/dist/test/test/tools/preview.test.js +73 -0
- package/dist/test/test/tools/preview.test.js.map +1 -0
- package/dist/test/test/tools/rename.test.d.ts +2 -0
- package/dist/test/test/tools/rename.test.d.ts.map +1 -0
- package/dist/test/test/tools/rename.test.js +17 -0
- package/dist/test/test/tools/rename.test.js.map +1 -0
- package/dist/test/test/viewer/broadcaster.test.d.ts +2 -0
- package/dist/test/test/viewer/broadcaster.test.d.ts.map +1 -0
- package/dist/test/test/viewer/broadcaster.test.js +53 -0
- package/dist/test/test/viewer/broadcaster.test.js.map +1 -0
- package/dist/test/test/viewer/resource-route.test.d.ts +2 -0
- package/dist/test/test/viewer/resource-route.test.d.ts.map +1 -0
- package/dist/test/test/viewer/resource-route.test.js +70 -0
- package/dist/test/test/viewer/resource-route.test.js.map +1 -0
- package/dist/test/test/viewer/router.test.d.ts +2 -0
- package/dist/test/test/viewer/router.test.d.ts.map +1 -0
- package/dist/test/test/viewer/router.test.js +171 -0
- package/dist/test/test/viewer/router.test.js.map +1 -0
- package/dist/test/test/viewer/url-builder.test.d.ts +2 -0
- package/dist/test/test/viewer/url-builder.test.d.ts.map +1 -0
- package/dist/test/test/viewer/url-builder.test.js +31 -0
- package/dist/test/test/viewer/url-builder.test.js.map +1 -0
- package/dist/test/test/workspace/hosted-stub.test.d.ts +2 -0
- package/dist/test/test/workspace/hosted-stub.test.d.ts.map +1 -0
- package/dist/test/test/workspace/hosted-stub.test.js +30 -0
- package/dist/test/test/workspace/hosted-stub.test.js.map +1 -0
- package/dist/test/test/workspace/in-memory.test.d.ts +2 -0
- package/dist/test/test/workspace/in-memory.test.d.ts.map +1 -0
- package/dist/test/test/workspace/in-memory.test.js +4 -0
- package/dist/test/test/workspace/in-memory.test.js.map +1 -0
- package/dist/test/test/workspace/node-fs.test.d.ts +2 -0
- package/dist/test/test/workspace/node-fs.test.d.ts.map +1 -0
- package/dist/test/test/workspace/node-fs.test.js +20 -0
- package/dist/test/test/workspace/node-fs.test.js.map +1 -0
- package/dist/test/test/workspace/shared-contract.d.ts +3 -0
- package/dist/test/test/workspace/shared-contract.d.ts.map +1 -0
- package/dist/test/test/workspace/shared-contract.js +92 -0
- package/dist/test/test/workspace/shared-contract.js.map +1 -0
- package/dist/test/tsconfig.test.tsbuildinfo +1 -0
- package/dist/test/vitest.config.d.ts +3 -0
- package/dist/test/vitest.config.d.ts.map +1 -0
- package/dist/test/vitest.config.js +8 -0
- package/dist/test/vitest.config.js.map +1 -0
- package/dist/tools/asset-generate.d.ts +12 -0
- package/dist/tools/asset-generate.d.ts.map +1 -0
- package/dist/tools/asset-generate.js +112 -0
- package/dist/tools/asset-generate.js.map +1 -0
- package/dist/tools/asset-search.d.ts +10 -0
- package/dist/tools/asset-search.d.ts.map +1 -0
- package/dist/tools/asset-search.js +120 -0
- package/dist/tools/asset-search.js.map +1 -0
- package/dist/tools/content-types.d.ts +11 -0
- package/dist/tools/content-types.d.ts.map +1 -0
- package/dist/tools/content-types.js +2 -0
- package/dist/tools/content-types.js.map +1 -0
- package/dist/tools/edit.d.ts +29 -0
- package/dist/tools/edit.d.ts.map +1 -0
- package/dist/tools/edit.js +165 -0
- package/dist/tools/edit.js.map +1 -0
- package/dist/tools/engine.d.ts +31 -0
- package/dist/tools/engine.d.ts.map +1 -0
- package/dist/tools/engine.js +59 -0
- package/dist/tools/engine.js.map +1 -0
- package/dist/tools/export.d.ts +19 -0
- package/dist/tools/export.d.ts.map +1 -0
- package/dist/tools/export.js +179 -0
- package/dist/tools/export.js.map +1 -0
- package/dist/tools/history.d.ts +7 -0
- package/dist/tools/history.d.ts.map +1 -0
- package/dist/tools/history.js +54 -0
- package/dist/tools/history.js.map +1 -0
- package/dist/tools/index.d.ts +35 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +72 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/inspect.d.ts +7 -0
- package/dist/tools/inspect.d.ts.map +1 -0
- package/dist/tools/inspect.js +80 -0
- package/dist/tools/inspect.js.map +1 -0
- package/dist/tools/list.d.ts +7 -0
- package/dist/tools/list.d.ts.map +1 -0
- package/dist/tools/list.js +18 -0
- package/dist/tools/list.js.map +1 -0
- package/dist/tools/metrics.d.ts +11 -0
- package/dist/tools/metrics.d.ts.map +1 -0
- package/dist/tools/metrics.js +28 -0
- package/dist/tools/metrics.js.map +1 -0
- package/dist/tools/open-editor.d.ts +10 -0
- package/dist/tools/open-editor.d.ts.map +1 -0
- package/dist/tools/open-editor.js +62 -0
- package/dist/tools/open-editor.js.map +1 -0
- package/dist/tools/preview.d.ts +12 -0
- package/dist/tools/preview.d.ts.map +1 -0
- package/dist/tools/preview.js +104 -0
- package/dist/tools/preview.js.map +1 -0
- package/dist/tools/rename.d.ts +7 -0
- package/dist/tools/rename.d.ts.map +1 -0
- package/dist/tools/rename.js +39 -0
- package/dist/tools/rename.js.map +1 -0
- package/dist/tools/result.d.ts +12 -0
- package/dist/tools/result.d.ts.map +1 -0
- package/dist/tools/result.js +55 -0
- package/dist/tools/result.js.map +1 -0
- package/dist/tools/save.d.ts +19 -0
- package/dist/tools/save.d.ts.map +1 -0
- package/dist/tools/save.js +117 -0
- package/dist/tools/save.js.map +1 -0
- package/dist/viewer/broadcaster.d.ts +13 -0
- package/dist/viewer/broadcaster.d.ts.map +1 -0
- package/dist/viewer/broadcaster.js +44 -0
- package/dist/viewer/broadcaster.js.map +1 -0
- package/dist/viewer/index.d.ts +7 -0
- package/dist/viewer/index.d.ts.map +1 -0
- package/dist/viewer/index.js +7 -0
- package/dist/viewer/index.js.map +1 -0
- package/dist/viewer/listener.d.ts +16 -0
- package/dist/viewer/listener.d.ts.map +1 -0
- package/dist/viewer/listener.js +30 -0
- package/dist/viewer/listener.js.map +1 -0
- package/dist/viewer/presigned-r2-url-builder.d.ts +30 -0
- package/dist/viewer/presigned-r2-url-builder.d.ts.map +1 -0
- package/dist/viewer/presigned-r2-url-builder.js +40 -0
- package/dist/viewer/presigned-r2-url-builder.js.map +1 -0
- package/dist/viewer/resource-route.d.ts +9 -0
- package/dist/viewer/resource-route.d.ts.map +1 -0
- package/dist/viewer/resource-route.js +59 -0
- package/dist/viewer/resource-route.js.map +1 -0
- package/dist/viewer/router.d.ts +20 -0
- package/dist/viewer/router.d.ts.map +1 -0
- package/dist/viewer/router.js +142 -0
- package/dist/viewer/router.js.map +1 -0
- package/dist/viewer/session-mount.d.ts +10 -0
- package/dist/viewer/session-mount.d.ts.map +1 -0
- package/dist/viewer/session-mount.js +24 -0
- package/dist/viewer/session-mount.js.map +1 -0
- package/dist/viewer/spa-assets.generated.d.ts +2 -0
- package/dist/viewer/spa-assets.generated.d.ts.map +1 -0
- package/dist/viewer/spa-assets.generated.js +989 -0
- package/dist/viewer/spa-assets.generated.js.map +1 -0
- package/dist/viewer/url-builder.d.ts +48 -0
- package/dist/viewer/url-builder.d.ts.map +1 -0
- package/dist/viewer/url-builder.js +38 -0
- package/dist/viewer/url-builder.js.map +1 -0
- package/dist/workspace/hosted-stub.d.ts +28 -0
- package/dist/workspace/hosted-stub.d.ts.map +1 -0
- package/dist/workspace/hosted-stub.js +44 -0
- package/dist/workspace/hosted-stub.js.map +1 -0
- package/dist/workspace/in-memory.d.ts +23 -0
- package/dist/workspace/in-memory.d.ts.map +1 -0
- package/dist/workspace/in-memory.js +161 -0
- package/dist/workspace/in-memory.js.map +1 -0
- package/dist/workspace/index.d.ts +6 -0
- package/dist/workspace/index.d.ts.map +1 -0
- package/dist/workspace/index.js +6 -0
- package/dist/workspace/index.js.map +1 -0
- package/dist/workspace/node-fs.d.ts +23 -0
- package/dist/workspace/node-fs.d.ts.map +1 -0
- package/dist/workspace/node-fs.js +90 -0
- package/dist/workspace/node-fs.js.map +1 -0
- package/dist/workspace/s3.d.ts +32 -0
- package/dist/workspace/s3.d.ts.map +1 -0
- package/dist/workspace/s3.js +191 -0
- package/dist/workspace/s3.js.map +1 -0
- package/dist/workspace/scoped.d.ts +32 -0
- package/dist/workspace/scoped.d.ts.map +1 -0
- package/dist/workspace/scoped.js +76 -0
- package/dist/workspace/scoped.js.map +1 -0
- package/dist/workspace/types.d.ts +75 -0
- package/dist/workspace/types.d.ts.map +1 -0
- package/dist/workspace/types.js +18 -0
- package/dist/workspace/types.js.map +1 -0
- package/package.json +80 -0
|
@@ -0,0 +1,764 @@
|
|
|
1
|
+
> This is one page of the CE.SDK Vanilla JS/TS documentation. For a complete overview, see the [Vanilla JS/TS Documentation Index](https://img.ly/docs/cesdk/js.md). For all docs in one file, see [llms-full.txt](./llms-full.txt.md).
|
|
2
|
+
|
|
3
|
+
**Navigation:** [Guides](./guides.md) > [Import Media Assets](./import-media.md) > [Import From Remote Source](./import-media/from-remote-source.md) > [From Your Server](./import-media/from-remote-source/your-server.md)
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Learn how to load images, videos, and audio from your backend servers into
|
|
8
|
+
CE.SDK for integration with CMS, DAM, or custom asset management systems.
|
|
9
|
+
|
|
10
|
+

|
|
11
|
+
|
|
12
|
+
> **Reading time:** 10 minutes
|
|
13
|
+
>
|
|
14
|
+
> **Resources:**
|
|
15
|
+
>
|
|
16
|
+
> - [Download examples](https://github.com/imgly/cesdk-web-examples/archive/refs/tags/release-$UBQ_VERSION$.zip)
|
|
17
|
+
> - [View source on GitHub](https://github.com/imgly/cesdk-web-examples/tree/release-$UBQ_VERSION$/guides-import-media-from-remote-source-your-server-browser)
|
|
18
|
+
> - [Open in StackBlitz](https://stackblitz.com/github/imgly/cesdk-web-examples/tree/v$UBQ_VERSION$/guides-import-media-from-remote-source-your-server-browser)
|
|
19
|
+
> - [Live demo](https://img.ly/docs/cesdk/examples/guides-import-media-from-remote-source-your-server-browser/)
|
|
20
|
+
|
|
21
|
+
CE.SDK provides multiple ways to load assets from your servers. Static libraries like stickers and icons use JSON manifests hosted on a CDN. Dynamic libraries like user photos and DAM content require API endpoints backed by databases.
|
|
22
|
+
|
|
23
|
+
```typescript file=@cesdk_web_examples/guides-import-media-from-remote-source-your-server-browser/browser.ts reference-only
|
|
24
|
+
import type { EditorPlugin, EditorPluginContext } from '@cesdk/cesdk-js';
|
|
25
|
+
|
|
26
|
+
import {
|
|
27
|
+
BlurAssetSource,
|
|
28
|
+
CaptionPresetsAssetSource,
|
|
29
|
+
ColorPaletteAssetSource,
|
|
30
|
+
CropPresetsAssetSource,
|
|
31
|
+
DemoAssetSources,
|
|
32
|
+
EffectsAssetSource,
|
|
33
|
+
FiltersAssetSource,
|
|
34
|
+
PagePresetsAssetSource,
|
|
35
|
+
StickerAssetSource,
|
|
36
|
+
TextAssetSource,
|
|
37
|
+
TextComponentAssetSource,
|
|
38
|
+
TypefaceAssetSource,
|
|
39
|
+
UploadAssetSources,
|
|
40
|
+
VectorShapeAssetSource
|
|
41
|
+
} from '@cesdk/cesdk-js/plugins';
|
|
42
|
+
import { VideoEditorConfig } from './video-editor/plugin';
|
|
43
|
+
import packageJson from './package.json';
|
|
44
|
+
|
|
45
|
+
class Example implements EditorPlugin {
|
|
46
|
+
name = packageJson.name;
|
|
47
|
+
|
|
48
|
+
version = packageJson.version;
|
|
49
|
+
|
|
50
|
+
async initialize({ cesdk }: EditorPluginContext): Promise<void> {
|
|
51
|
+
if (!cesdk) {
|
|
52
|
+
throw new Error('CE.SDK instance is required for this plugin');
|
|
53
|
+
}
|
|
54
|
+
await cesdk.addPlugin(new VideoEditorConfig());
|
|
55
|
+
|
|
56
|
+
// Add asset source plugins
|
|
57
|
+
await cesdk.addPlugin(new BlurAssetSource());
|
|
58
|
+
await cesdk.addPlugin(new CaptionPresetsAssetSource());
|
|
59
|
+
await cesdk.addPlugin(new ColorPaletteAssetSource());
|
|
60
|
+
await cesdk.addPlugin(new CropPresetsAssetSource());
|
|
61
|
+
await cesdk.addPlugin(
|
|
62
|
+
new UploadAssetSources({
|
|
63
|
+
include: [
|
|
64
|
+
'ly.img.image.upload',
|
|
65
|
+
'ly.img.video.upload',
|
|
66
|
+
'ly.img.audio.upload'
|
|
67
|
+
]
|
|
68
|
+
})
|
|
69
|
+
);
|
|
70
|
+
await cesdk.addPlugin(
|
|
71
|
+
new DemoAssetSources({
|
|
72
|
+
include: [
|
|
73
|
+
'ly.img.templates.video.*',
|
|
74
|
+
'ly.img.image.*',
|
|
75
|
+
'ly.img.audio.*',
|
|
76
|
+
'ly.img.video.*'
|
|
77
|
+
]
|
|
78
|
+
})
|
|
79
|
+
);
|
|
80
|
+
await cesdk.addPlugin(new EffectsAssetSource());
|
|
81
|
+
await cesdk.addPlugin(new FiltersAssetSource());
|
|
82
|
+
await cesdk.addPlugin(
|
|
83
|
+
new PagePresetsAssetSource({
|
|
84
|
+
include: [
|
|
85
|
+
'ly.img.page.presets.instagram.*',
|
|
86
|
+
'ly.img.page.presets.facebook.*',
|
|
87
|
+
'ly.img.page.presets.x.*',
|
|
88
|
+
'ly.img.page.presets.linkedin.*',
|
|
89
|
+
'ly.img.page.presets.pinterest.*',
|
|
90
|
+
'ly.img.page.presets.tiktok.*',
|
|
91
|
+
'ly.img.page.presets.youtube.*',
|
|
92
|
+
'ly.img.page.presets.video.*'
|
|
93
|
+
]
|
|
94
|
+
})
|
|
95
|
+
);
|
|
96
|
+
await cesdk.addPlugin(new StickerAssetSource());
|
|
97
|
+
await cesdk.addPlugin(new TextAssetSource());
|
|
98
|
+
await cesdk.addPlugin(new TextComponentAssetSource());
|
|
99
|
+
await cesdk.addPlugin(new TypefaceAssetSource());
|
|
100
|
+
await cesdk.addPlugin(new VectorShapeAssetSource());
|
|
101
|
+
|
|
102
|
+
await cesdk.actions.run('scene.create', {
|
|
103
|
+
page: {
|
|
104
|
+
sourceId: 'ly.img.page.presets',
|
|
105
|
+
assetId: 'ly.img.page.presets.instagram.story',
|
|
106
|
+
color: { r: 0, g: 0, b: 0, a: 1 }
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
const engine = cesdk.engine;
|
|
111
|
+
|
|
112
|
+
// Register a custom asset source for images from your backend API
|
|
113
|
+
engine.asset.addSource({
|
|
114
|
+
id: 'my-server-images',
|
|
115
|
+
async findAssets(queryData) {
|
|
116
|
+
// Replace with your API: fetch(`/api/images?page=${queryData.page}&q=${queryData.query}`)
|
|
117
|
+
const filtered = filterByQuery(MOCK_IMAGES, queryData.query);
|
|
118
|
+
const paginated = paginate(filtered, queryData.page, queryData.perPage);
|
|
119
|
+
|
|
120
|
+
return {
|
|
121
|
+
assets: paginated.items.map((item) => ({
|
|
122
|
+
id: item.id,
|
|
123
|
+
label: item.title,
|
|
124
|
+
meta: {
|
|
125
|
+
uri: item.url,
|
|
126
|
+
thumbUri: item.thumbnail,
|
|
127
|
+
blockType: '//ly.img.ubq/graphic',
|
|
128
|
+
fillType: '//ly.img.ubq/fill/image',
|
|
129
|
+
width: item.width,
|
|
130
|
+
height: item.height
|
|
131
|
+
}
|
|
132
|
+
})),
|
|
133
|
+
total: filtered.length,
|
|
134
|
+
currentPage: queryData.page,
|
|
135
|
+
nextPage: paginated.nextPage
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
|
|
140
|
+
// Register a custom source for video assets
|
|
141
|
+
engine.asset.addSource({
|
|
142
|
+
id: 'my-server-videos',
|
|
143
|
+
async findAssets(queryData) {
|
|
144
|
+
const filtered = filterByQuery(MOCK_VIDEOS, queryData.query);
|
|
145
|
+
|
|
146
|
+
return {
|
|
147
|
+
assets: filtered.map((item) => ({
|
|
148
|
+
id: item.id,
|
|
149
|
+
label: item.title,
|
|
150
|
+
meta: {
|
|
151
|
+
uri: item.url,
|
|
152
|
+
thumbUri: item.thumbnail,
|
|
153
|
+
blockType: '//ly.img.ubq/graphic',
|
|
154
|
+
fillType: '//ly.img.ubq/fill/video',
|
|
155
|
+
duration: String(item.duration)
|
|
156
|
+
}
|
|
157
|
+
})),
|
|
158
|
+
total: filtered.length,
|
|
159
|
+
currentPage: queryData.page,
|
|
160
|
+
nextPage: undefined
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
});
|
|
164
|
+
|
|
165
|
+
// Register a custom source for audio assets
|
|
166
|
+
engine.asset.addSource({
|
|
167
|
+
id: 'my-server-audio',
|
|
168
|
+
async findAssets(queryData) {
|
|
169
|
+
const filtered = filterByQuery(MOCK_AUDIO, queryData.query);
|
|
170
|
+
|
|
171
|
+
return {
|
|
172
|
+
assets: filtered.map((item) => ({
|
|
173
|
+
id: item.id,
|
|
174
|
+
label: item.title,
|
|
175
|
+
meta: {
|
|
176
|
+
uri: item.url,
|
|
177
|
+
thumbUri: item.thumbnail,
|
|
178
|
+
blockType: '//ly.img.ubq/audio',
|
|
179
|
+
mimeType: item.mimeType,
|
|
180
|
+
duration: String(item.duration)
|
|
181
|
+
}
|
|
182
|
+
})),
|
|
183
|
+
total: filtered.length,
|
|
184
|
+
currentPage: queryData.page,
|
|
185
|
+
nextPage: undefined
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
});
|
|
189
|
+
|
|
190
|
+
// Register a custom source for sticker assets (PNG/SVG overlays)
|
|
191
|
+
engine.asset.addSource({
|
|
192
|
+
id: 'my-server-stickers',
|
|
193
|
+
async findAssets(queryData) {
|
|
194
|
+
const filtered = filterByQuery(MOCK_STICKERS, queryData.query);
|
|
195
|
+
|
|
196
|
+
return {
|
|
197
|
+
assets: filtered.map((item) => ({
|
|
198
|
+
id: item.id,
|
|
199
|
+
label: item.title,
|
|
200
|
+
meta: {
|
|
201
|
+
uri: item.url,
|
|
202
|
+
thumbUri: item.thumbnail,
|
|
203
|
+
blockType: '//ly.img.ubq/graphic',
|
|
204
|
+
fillType: '//ly.img.ubq/fill/image',
|
|
205
|
+
kind: 'sticker',
|
|
206
|
+
width: item.width,
|
|
207
|
+
height: item.height
|
|
208
|
+
}
|
|
209
|
+
})),
|
|
210
|
+
total: filtered.length,
|
|
211
|
+
currentPage: queryData.page,
|
|
212
|
+
nextPage: undefined
|
|
213
|
+
};
|
|
214
|
+
}
|
|
215
|
+
});
|
|
216
|
+
|
|
217
|
+
// Register a custom source for scene templates
|
|
218
|
+
engine.asset.addLocalSource(
|
|
219
|
+
'my-server-templates',
|
|
220
|
+
undefined,
|
|
221
|
+
async (asset) => {
|
|
222
|
+
if (asset.meta?.uri) {
|
|
223
|
+
await engine.scene.loadFromURL(asset.meta.uri as string);
|
|
224
|
+
}
|
|
225
|
+
return undefined;
|
|
226
|
+
}
|
|
227
|
+
);
|
|
228
|
+
|
|
229
|
+
// Add video templates to the source
|
|
230
|
+
for (const template of MOCK_TEMPLATES) {
|
|
231
|
+
engine.asset.addAssetToSource('my-server-templates', {
|
|
232
|
+
id: template.id,
|
|
233
|
+
label: { en: template.title },
|
|
234
|
+
meta: { uri: template.url, thumbUri: template.thumbnail }
|
|
235
|
+
});
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
// Load static assets from a JSON manifest file
|
|
239
|
+
await engine.asset.addLocalAssetSourceFromJSONURI(
|
|
240
|
+
'https://cdn.img.ly/assets/v1/ly.img.sticker/content.json'
|
|
241
|
+
);
|
|
242
|
+
|
|
243
|
+
// Add a custom entry to the asset library panel
|
|
244
|
+
cesdk.ui.addAssetLibraryEntry({
|
|
245
|
+
id: 'my-server-assets',
|
|
246
|
+
sourceIds: [
|
|
247
|
+
'my-server-images',
|
|
248
|
+
'my-server-videos',
|
|
249
|
+
'my-server-audio',
|
|
250
|
+
'my-server-stickers',
|
|
251
|
+
'my-server-templates'
|
|
252
|
+
],
|
|
253
|
+
title: ({ sourceId }) => SOURCE_TITLES[sourceId ?? ''] ?? 'My Server',
|
|
254
|
+
gridColumns: 3,
|
|
255
|
+
gridItemHeight: 'square'
|
|
256
|
+
});
|
|
257
|
+
|
|
258
|
+
// Add a dock button for "My Server" as the first item with a separator
|
|
259
|
+
cesdk.ui.setComponentOrder({ in: 'ly.img.dock' }, [
|
|
260
|
+
'my-server-assets.dock',
|
|
261
|
+
'ly.img.separator',
|
|
262
|
+
...cesdk.ui.getComponentOrder({ in: 'ly.img.dock' })
|
|
263
|
+
]);
|
|
264
|
+
|
|
265
|
+
cesdk.ui.registerComponent(
|
|
266
|
+
'my-server-assets.dock',
|
|
267
|
+
({ builder: { Button } }) => {
|
|
268
|
+
Button('my-server-dock-button', {
|
|
269
|
+
label: 'My Server',
|
|
270
|
+
onClick: () => {
|
|
271
|
+
cesdk.ui.openPanel('//ly.img.panel/assetLibrary', {
|
|
272
|
+
payload: { entries: ['my-server-assets'] }
|
|
273
|
+
});
|
|
274
|
+
}
|
|
275
|
+
});
|
|
276
|
+
}
|
|
277
|
+
);
|
|
278
|
+
|
|
279
|
+
// Open the asset library to show our custom server assets
|
|
280
|
+
cesdk.ui.openPanel('//ly.img.panel/assetLibrary', {
|
|
281
|
+
payload: { entries: ['my-server-assets'] }
|
|
282
|
+
});
|
|
283
|
+
|
|
284
|
+
// Apply sample assets to canvas for verification
|
|
285
|
+
await applyFirstAsset(engine, 'my-server-images');
|
|
286
|
+
await applyFirstAsset(engine, 'my-server-videos');
|
|
287
|
+
await applyFirstAsset(engine, 'my-server-audio');
|
|
288
|
+
await applyFirstAsset(engine, 'my-server-stickers');
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
export default Example;
|
|
293
|
+
|
|
294
|
+
// ============================================================================
|
|
295
|
+
// Mock Data - Replace with your backend API
|
|
296
|
+
// ============================================================================
|
|
297
|
+
|
|
298
|
+
interface MockAsset {
|
|
299
|
+
id: string;
|
|
300
|
+
title: string;
|
|
301
|
+
url: string;
|
|
302
|
+
thumbnail: string;
|
|
303
|
+
width?: number;
|
|
304
|
+
height?: number;
|
|
305
|
+
duration?: number;
|
|
306
|
+
mimeType?: string;
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
const MOCK_IMAGES: MockAsset[] = [
|
|
310
|
+
{
|
|
311
|
+
id: 'img-001',
|
|
312
|
+
title: 'Mountain Landscape',
|
|
313
|
+
url: 'https://img.ly/static/ubq_samples/sample_1.jpg',
|
|
314
|
+
thumbnail: 'https://img.ly/static/ubq_samples/sample_1.jpg',
|
|
315
|
+
width: 1920,
|
|
316
|
+
height: 1280
|
|
317
|
+
},
|
|
318
|
+
{
|
|
319
|
+
id: 'img-002',
|
|
320
|
+
title: 'Ocean Sunset',
|
|
321
|
+
url: 'https://img.ly/static/ubq_samples/sample_2.jpg',
|
|
322
|
+
thumbnail: 'https://img.ly/static/ubq_samples/sample_2.jpg',
|
|
323
|
+
width: 1920,
|
|
324
|
+
height: 1280
|
|
325
|
+
},
|
|
326
|
+
{
|
|
327
|
+
id: 'img-003',
|
|
328
|
+
title: 'Forest Path',
|
|
329
|
+
url: 'https://img.ly/static/ubq_samples/sample_3.jpg',
|
|
330
|
+
thumbnail: 'https://img.ly/static/ubq_samples/sample_3.jpg',
|
|
331
|
+
width: 1920,
|
|
332
|
+
height: 1280
|
|
333
|
+
},
|
|
334
|
+
{
|
|
335
|
+
id: 'img-004',
|
|
336
|
+
title: 'City Skyline',
|
|
337
|
+
url: 'https://img.ly/static/ubq_samples/sample_4.jpg',
|
|
338
|
+
thumbnail: 'https://img.ly/static/ubq_samples/sample_4.jpg',
|
|
339
|
+
width: 1920,
|
|
340
|
+
height: 1280
|
|
341
|
+
},
|
|
342
|
+
{
|
|
343
|
+
id: 'img-005',
|
|
344
|
+
title: 'Desert Dunes',
|
|
345
|
+
url: 'https://img.ly/static/ubq_samples/sample_5.jpg',
|
|
346
|
+
thumbnail: 'https://img.ly/static/ubq_samples/sample_5.jpg',
|
|
347
|
+
width: 1920,
|
|
348
|
+
height: 1280
|
|
349
|
+
}
|
|
350
|
+
];
|
|
351
|
+
|
|
352
|
+
const MOCK_VIDEOS: MockAsset[] = [
|
|
353
|
+
{
|
|
354
|
+
id: 'vid-001',
|
|
355
|
+
title: 'Surfer Barrelling a Wave',
|
|
356
|
+
url: 'https://cdn.img.ly/assets/demo/v3/ly.img.video/videos/pexels-drone-footage-of-a-surfer-barrelling-a-wave-12715991.mp4',
|
|
357
|
+
thumbnail:
|
|
358
|
+
'https://cdn.img.ly/assets/demo/v3/ly.img.video/thumbnails/pexels-drone-footage-of-a-surfer-barrelling-a-wave-12715991.jpg',
|
|
359
|
+
duration: 15.58
|
|
360
|
+
}
|
|
361
|
+
];
|
|
362
|
+
|
|
363
|
+
const MOCK_AUDIO: MockAsset[] = [
|
|
364
|
+
{
|
|
365
|
+
id: 'audio-001',
|
|
366
|
+
title: 'Background Music',
|
|
367
|
+
url: 'https://cdn.img.ly/assets/demo/v3/ly.img.audio/audios/dance_harder.m4a',
|
|
368
|
+
thumbnail:
|
|
369
|
+
'https://cdn.img.ly/assets/demo/v3/ly.img.audio/thumbnails/dance_harder.jpg',
|
|
370
|
+
duration: 212.5,
|
|
371
|
+
mimeType: 'audio/x-m4a'
|
|
372
|
+
}
|
|
373
|
+
];
|
|
374
|
+
|
|
375
|
+
const MOCK_STICKERS: MockAsset[] = [
|
|
376
|
+
{
|
|
377
|
+
id: 'sticker-001',
|
|
378
|
+
title: 'Camera',
|
|
379
|
+
url: 'https://cdn.img.ly/assets/v1/ly.img.sticker/images/doodle/doodle_camera.svg',
|
|
380
|
+
thumbnail:
|
|
381
|
+
'https://cdn.img.ly/assets/v1/ly.img.sticker/thumbnails/doodle/doodle_camera.png',
|
|
382
|
+
width: 2048,
|
|
383
|
+
height: 1339
|
|
384
|
+
}
|
|
385
|
+
];
|
|
386
|
+
|
|
387
|
+
const MOCK_TEMPLATES: MockAsset[] = [
|
|
388
|
+
{
|
|
389
|
+
id: 'template-001',
|
|
390
|
+
title: 'Surf School Promo',
|
|
391
|
+
url: 'https://cdn.img.ly/assets/demo/v3/ly.img.video.template/templates/milli-surf-school.scene',
|
|
392
|
+
thumbnail:
|
|
393
|
+
'https://cdn.img.ly/assets/demo/v3/ly.img.video.template/thumbnails/milli-surf-school.png'
|
|
394
|
+
},
|
|
395
|
+
{
|
|
396
|
+
id: 'template-002',
|
|
397
|
+
title: 'Monthly Review',
|
|
398
|
+
url: 'https://cdn.img.ly/assets/demo/v3/ly.img.video.template/templates/monthly-review.scene',
|
|
399
|
+
thumbnail:
|
|
400
|
+
'https://cdn.img.ly/assets/demo/v3/ly.img.video.template/thumbnails/monthly-review.png'
|
|
401
|
+
},
|
|
402
|
+
{
|
|
403
|
+
id: 'template-003',
|
|
404
|
+
title: 'My Plants Video',
|
|
405
|
+
url: 'https://cdn.img.ly/assets/demo/v3/ly.img.video.template/templates/my-plants.scene',
|
|
406
|
+
thumbnail:
|
|
407
|
+
'https://cdn.img.ly/assets/demo/v3/ly.img.video.template/thumbnails/my-plants.png'
|
|
408
|
+
}
|
|
409
|
+
];
|
|
410
|
+
|
|
411
|
+
const SOURCE_TITLES: Record<string, string> = {
|
|
412
|
+
'my-server-images': 'My User Photos',
|
|
413
|
+
'my-server-videos': 'My User Videos',
|
|
414
|
+
'my-server-audio': 'My User Audio',
|
|
415
|
+
'my-server-stickers': 'My User Stickers',
|
|
416
|
+
'my-server-templates': 'My User Templates'
|
|
417
|
+
};
|
|
418
|
+
|
|
419
|
+
// ============================================================================
|
|
420
|
+
// Helper Functions
|
|
421
|
+
// ============================================================================
|
|
422
|
+
|
|
423
|
+
function filterByQuery<T extends { title: string }>(
|
|
424
|
+
items: T[],
|
|
425
|
+
query: string | undefined
|
|
426
|
+
): T[] {
|
|
427
|
+
if (!query) return items;
|
|
428
|
+
const searchTerm = query.toLowerCase();
|
|
429
|
+
return items.filter((item) => item.title.toLowerCase().includes(searchTerm));
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
function paginate<T>(
|
|
433
|
+
items: T[],
|
|
434
|
+
page: number,
|
|
435
|
+
perPage: number
|
|
436
|
+
): { items: T[]; nextPage: number | undefined } {
|
|
437
|
+
const start = page * perPage;
|
|
438
|
+
const end = start + perPage;
|
|
439
|
+
return {
|
|
440
|
+
items: items.slice(start, end),
|
|
441
|
+
nextPage: end < items.length ? page + 1 : undefined
|
|
442
|
+
};
|
|
443
|
+
}
|
|
444
|
+
|
|
445
|
+
async function applyFirstAsset(
|
|
446
|
+
engine: Parameters<EditorPlugin['initialize']>[0]['cesdk'] extends infer C
|
|
447
|
+
? C extends { engine: infer E }
|
|
448
|
+
? E
|
|
449
|
+
: never
|
|
450
|
+
: never,
|
|
451
|
+
sourceId: string
|
|
452
|
+
): Promise<void> {
|
|
453
|
+
const results = await engine.asset.findAssets(sourceId, {
|
|
454
|
+
page: 0,
|
|
455
|
+
perPage: 1
|
|
456
|
+
});
|
|
457
|
+
if (results.assets.length > 0) {
|
|
458
|
+
await engine.asset.apply(sourceId, results.assets[0]);
|
|
459
|
+
}
|
|
460
|
+
}
|
|
461
|
+
```
|
|
462
|
+
|
|
463
|
+
This guide covers creating custom asset sources with API integration, serving images, videos, audio, stickers, and templates with correct metadata, configuring the asset library UI, and handling common integration issues.
|
|
464
|
+
|
|
465
|
+
## Understanding Asset Source Types
|
|
466
|
+
|
|
467
|
+
CE.SDK supports two primary patterns for loading server assets.
|
|
468
|
+
|
|
469
|
+
**Custom Asset Sources** work best for database-backed content like user uploads, DAM integrations, and CMS media. Your API endpoint returns assets and handles filtering, pagination, and search. Register with `engine.asset.addSource()` providing a `findAssets` callback.
|
|
470
|
+
|
|
471
|
+
**JSON Asset Sources** work best for static assets that don't change frequently, such as stickers, icons, templates, and brand elements. Host a JSON manifest on a CDN alongside the assets. CE.SDK's default libraries use this pattern. Use `engine.asset.addLocalAssetSourceFromJSONURI()`.
|
|
472
|
+
|
|
473
|
+
## Serving Different Media Types
|
|
474
|
+
|
|
475
|
+
Custom asset sources connect CE.SDK to your backend API. The `findAssets` callback receives query parameters and returns paginated results. Asset metadata varies by media type—configure the correct `blockType` and `fillType` for each.
|
|
476
|
+
|
|
477
|
+
### Image Assets
|
|
478
|
+
|
|
479
|
+
Image assets use a graphic block with image fill. Include `width` and `height` for proper aspect ratio handling.
|
|
480
|
+
|
|
481
|
+
```typescript highlight-image-assets
|
|
482
|
+
// Register a custom asset source for images from your backend API
|
|
483
|
+
engine.asset.addSource({
|
|
484
|
+
id: 'my-server-images',
|
|
485
|
+
async findAssets(queryData) {
|
|
486
|
+
// Replace with your API: fetch(`/api/images?page=${queryData.page}&q=${queryData.query}`)
|
|
487
|
+
const filtered = filterByQuery(MOCK_IMAGES, queryData.query);
|
|
488
|
+
const paginated = paginate(filtered, queryData.page, queryData.perPage);
|
|
489
|
+
|
|
490
|
+
return {
|
|
491
|
+
assets: paginated.items.map((item) => ({
|
|
492
|
+
id: item.id,
|
|
493
|
+
label: item.title,
|
|
494
|
+
meta: {
|
|
495
|
+
uri: item.url,
|
|
496
|
+
thumbUri: item.thumbnail,
|
|
497
|
+
blockType: '//ly.img.ubq/graphic',
|
|
498
|
+
fillType: '//ly.img.ubq/fill/image',
|
|
499
|
+
width: item.width,
|
|
500
|
+
height: item.height
|
|
501
|
+
}
|
|
502
|
+
})),
|
|
503
|
+
total: filtered.length,
|
|
504
|
+
currentPage: queryData.page,
|
|
505
|
+
nextPage: paginated.nextPage
|
|
506
|
+
};
|
|
507
|
+
}
|
|
508
|
+
});
|
|
509
|
+
```
|
|
510
|
+
|
|
511
|
+
The `findAssets` callback receives a `queryData` object containing `query` (search term), `page`, `perPage`, `locale`, and `tags`. Return an object with `assets` (the current page), `total` (complete count), `currentPage`, and `nextPage` (next page number or `undefined` when exhausted).
|
|
512
|
+
|
|
513
|
+
Each asset requires an `id` and a `meta` object. Set `blockType` to `//ly.img.ubq/graphic` and `fillType` to `//ly.img.ubq/fill/image`. The `thumbUri` provides the thumbnail shown in the asset library, while `uri` is the full-resolution image loaded onto the canvas.
|
|
514
|
+
|
|
515
|
+
### Video Assets
|
|
516
|
+
|
|
517
|
+
Video assets use a graphic block with video fill. Include `duration` for duration display and `thumbUri` for the library thumbnail.
|
|
518
|
+
|
|
519
|
+
```typescript highlight-video-assets
|
|
520
|
+
// Register a custom source for video assets
|
|
521
|
+
engine.asset.addSource({
|
|
522
|
+
id: 'my-server-videos',
|
|
523
|
+
async findAssets(queryData) {
|
|
524
|
+
const filtered = filterByQuery(MOCK_VIDEOS, queryData.query);
|
|
525
|
+
|
|
526
|
+
return {
|
|
527
|
+
assets: filtered.map((item) => ({
|
|
528
|
+
id: item.id,
|
|
529
|
+
label: item.title,
|
|
530
|
+
meta: {
|
|
531
|
+
uri: item.url,
|
|
532
|
+
thumbUri: item.thumbnail,
|
|
533
|
+
blockType: '//ly.img.ubq/graphic',
|
|
534
|
+
fillType: '//ly.img.ubq/fill/video',
|
|
535
|
+
duration: String(item.duration)
|
|
536
|
+
}
|
|
537
|
+
})),
|
|
538
|
+
total: filtered.length,
|
|
539
|
+
currentPage: queryData.page,
|
|
540
|
+
nextPage: undefined
|
|
541
|
+
};
|
|
542
|
+
}
|
|
543
|
+
});
|
|
544
|
+
```
|
|
545
|
+
|
|
546
|
+
The `fillType` tells CE.SDK how to render the asset. Use `//ly.img.ubq/fill/video` for video content. The `duration` metadata enables proper duration display when working with video scenes.
|
|
547
|
+
|
|
548
|
+
### Audio Assets
|
|
549
|
+
|
|
550
|
+
Audio assets require the `mimeType` property for the asset library to display the play button overlay.
|
|
551
|
+
|
|
552
|
+
```typescript highlight-audio-assets
|
|
553
|
+
// Register a custom source for audio assets
|
|
554
|
+
engine.asset.addSource({
|
|
555
|
+
id: 'my-server-audio',
|
|
556
|
+
async findAssets(queryData) {
|
|
557
|
+
const filtered = filterByQuery(MOCK_AUDIO, queryData.query);
|
|
558
|
+
|
|
559
|
+
return {
|
|
560
|
+
assets: filtered.map((item) => ({
|
|
561
|
+
id: item.id,
|
|
562
|
+
label: item.title,
|
|
563
|
+
meta: {
|
|
564
|
+
uri: item.url,
|
|
565
|
+
thumbUri: item.thumbnail,
|
|
566
|
+
blockType: '//ly.img.ubq/audio',
|
|
567
|
+
mimeType: item.mimeType,
|
|
568
|
+
duration: String(item.duration)
|
|
569
|
+
}
|
|
570
|
+
})),
|
|
571
|
+
total: filtered.length,
|
|
572
|
+
currentPage: queryData.page,
|
|
573
|
+
nextPage: undefined
|
|
574
|
+
};
|
|
575
|
+
}
|
|
576
|
+
});
|
|
577
|
+
```
|
|
578
|
+
|
|
579
|
+
Set `blockType` to `//ly.img.ubq/audio` for audio content. The `mimeType` (e.g., `audio/x-m4a` or `audio/mpeg`) is required for preview playback in the asset library. Include `duration` for duration display.
|
|
580
|
+
|
|
581
|
+
### Sticker Assets
|
|
582
|
+
|
|
583
|
+
Stickers are image overlays that users can place on the canvas. They use the same structure as images but include `kind: 'sticker'` to differentiate them in the UI.
|
|
584
|
+
|
|
585
|
+
```typescript highlight-sticker-assets
|
|
586
|
+
// Register a custom source for sticker assets (PNG/SVG overlays)
|
|
587
|
+
engine.asset.addSource({
|
|
588
|
+
id: 'my-server-stickers',
|
|
589
|
+
async findAssets(queryData) {
|
|
590
|
+
const filtered = filterByQuery(MOCK_STICKERS, queryData.query);
|
|
591
|
+
|
|
592
|
+
return {
|
|
593
|
+
assets: filtered.map((item) => ({
|
|
594
|
+
id: item.id,
|
|
595
|
+
label: item.title,
|
|
596
|
+
meta: {
|
|
597
|
+
uri: item.url,
|
|
598
|
+
thumbUri: item.thumbnail,
|
|
599
|
+
blockType: '//ly.img.ubq/graphic',
|
|
600
|
+
fillType: '//ly.img.ubq/fill/image',
|
|
601
|
+
kind: 'sticker',
|
|
602
|
+
width: item.width,
|
|
603
|
+
height: item.height
|
|
604
|
+
}
|
|
605
|
+
})),
|
|
606
|
+
total: filtered.length,
|
|
607
|
+
currentPage: queryData.page,
|
|
608
|
+
nextPage: undefined
|
|
609
|
+
};
|
|
610
|
+
}
|
|
611
|
+
});
|
|
612
|
+
```
|
|
613
|
+
|
|
614
|
+
The `kind` property tells CE.SDK to treat this asset as a sticker rather than a regular image. Stickers typically don't support cropping and have limited editing options compared to images.
|
|
615
|
+
|
|
616
|
+
### Template Assets
|
|
617
|
+
|
|
618
|
+
Templates are complete scenes that users can load as starting points. Use a local source with a custom `applyAsset` function to load scenes from URLs.
|
|
619
|
+
|
|
620
|
+
```typescript highlight-template-assets
|
|
621
|
+
// Register a custom source for scene templates
|
|
622
|
+
engine.asset.addLocalSource('my-server-templates', undefined, async (asset) => {
|
|
623
|
+
if (asset.meta?.uri) {
|
|
624
|
+
await engine.scene.loadFromURL(asset.meta.uri as string);
|
|
625
|
+
}
|
|
626
|
+
return undefined;
|
|
627
|
+
});
|
|
628
|
+
|
|
629
|
+
// Add video templates to the source
|
|
630
|
+
for (const template of MOCK_TEMPLATES) {
|
|
631
|
+
engine.asset.addAssetToSource('my-server-templates', {
|
|
632
|
+
id: template.id,
|
|
633
|
+
label: { en: template.title },
|
|
634
|
+
meta: { uri: template.url, thumbUri: template.thumbnail }
|
|
635
|
+
});
|
|
636
|
+
}
|
|
637
|
+
```
|
|
638
|
+
|
|
639
|
+
Templates require a custom `applyAsset` callback because they replace the entire scene rather than adding a block. The `meta.uri` should point to a `.scene` file, and `meta.thumbUri` provides the preview thumbnail.
|
|
640
|
+
|
|
641
|
+
## Loading Assets from JSON
|
|
642
|
+
|
|
643
|
+
For static asset collections that don't change frequently, load assets from a JSON manifest file hosted on your CDN.
|
|
644
|
+
|
|
645
|
+
```typescript highlight-json-source
|
|
646
|
+
// Load static assets from a JSON manifest file
|
|
647
|
+
await engine.asset.addLocalAssetSourceFromJSONURI(
|
|
648
|
+
'https://cdn.img.ly/assets/v1/ly.img.sticker/content.json'
|
|
649
|
+
);
|
|
650
|
+
```
|
|
651
|
+
|
|
652
|
+
The JSON file should contain asset definitions with `id` and `meta` properties. Use the `{{base_url}}` placeholder in URLs to resolve paths relative to the JSON file's location. This pattern works well for brand assets, stickers, icons, and templates.
|
|
653
|
+
|
|
654
|
+
## Displaying Assets in the UI
|
|
655
|
+
|
|
656
|
+
Connect your asset sources to the CE.SDK asset library panel using the UI API.
|
|
657
|
+
|
|
658
|
+
### Add an Asset Library Entry
|
|
659
|
+
|
|
660
|
+
Create a library entry that combines one or more asset sources into a single panel tab.
|
|
661
|
+
|
|
662
|
+
```typescript highlight-asset-library-entry
|
|
663
|
+
// Add a custom entry to the asset library panel
|
|
664
|
+
cesdk.ui.addAssetLibraryEntry({
|
|
665
|
+
id: 'my-server-assets',
|
|
666
|
+
sourceIds: [
|
|
667
|
+
'my-server-images',
|
|
668
|
+
'my-server-videos',
|
|
669
|
+
'my-server-audio',
|
|
670
|
+
'my-server-stickers',
|
|
671
|
+
'my-server-templates'
|
|
672
|
+
],
|
|
673
|
+
title: ({ sourceId }) => SOURCE_TITLES[sourceId ?? ''] ?? 'My Server',
|
|
674
|
+
gridColumns: 3,
|
|
675
|
+
gridItemHeight: 'square'
|
|
676
|
+
});
|
|
677
|
+
|
|
678
|
+
// Add a dock button for "My Server" as the first item with a separator
|
|
679
|
+
cesdk.ui.setComponentOrder({ in: 'ly.img.dock' }, [
|
|
680
|
+
'my-server-assets.dock',
|
|
681
|
+
'ly.img.separator',
|
|
682
|
+
...cesdk.ui.getComponentOrder({ in: 'ly.img.dock' })
|
|
683
|
+
]);
|
|
684
|
+
|
|
685
|
+
cesdk.ui.registerComponent(
|
|
686
|
+
'my-server-assets.dock',
|
|
687
|
+
({ builder: { Button } }) => {
|
|
688
|
+
Button('my-server-dock-button', {
|
|
689
|
+
label: 'My Server',
|
|
690
|
+
onClick: () => {
|
|
691
|
+
cesdk.ui.openPanel('//ly.img.panel/assetLibrary', {
|
|
692
|
+
payload: { entries: ['my-server-assets'] }
|
|
693
|
+
});
|
|
694
|
+
}
|
|
695
|
+
});
|
|
696
|
+
}
|
|
697
|
+
);
|
|
698
|
+
```
|
|
699
|
+
|
|
700
|
+
The `sourceIds` array lists which asset sources appear in this library entry. Use a title function to display descriptive names for each source. Configure `gridColumns` and `gridItemHeight` to control the thumbnail grid layout.
|
|
701
|
+
|
|
702
|
+
The code also adds a custom dock button using `cesdk.ui.registerComponent()` that opens the asset library panel with your custom entry. Use `cesdk.ui.setComponentOrder({ in: 'ly.img.dock' }, order)` to place the button at the start of the dock with a separator, preserving all default icons (Templates, Videos, Audio, Images, etc.).
|
|
703
|
+
|
|
704
|
+
## Server Architecture Considerations
|
|
705
|
+
|
|
706
|
+
Backend configuration affects asset loading reliability and performance.
|
|
707
|
+
|
|
708
|
+
**CORS Configuration**: Configure CORS headers to allow requests from your editor domain. Both asset URLs and API endpoints need CORS headers. For development, allow `localhost`. For production, restrict to your editor's domain.
|
|
709
|
+
|
|
710
|
+
**Authentication**: Pass authentication tokens in the `findAssets` callback via custom headers. For protected assets, use signed URLs that include temporary access tokens in the URL itself.
|
|
711
|
+
|
|
712
|
+
**Thumbnail Strategy**: Generate 512px width thumbnails server-side for optimal library performance. Return the thumbnail URL in `meta.thumbUri`. The full-resolution asset goes in `meta.uri`.
|
|
713
|
+
|
|
714
|
+
**CDN and Caching**: Use a CDN for asset delivery to minimize latency. Set appropriate cache headers for thumbnails (long TTL) and dynamic content (shorter TTL or revalidation).
|
|
715
|
+
|
|
716
|
+
## Troubleshooting
|
|
717
|
+
|
|
718
|
+
Common issues when serving assets from your server.
|
|
719
|
+
|
|
720
|
+
**Assets Not Appearing**: Verify `findAssets` returns the correct structure with `assets`, `total`, `currentPage`, and `nextPage`. Check that each asset has a valid `id` and `meta.uri`. Ensure the source is connected to the UI via `cesdk.ui.addAssetLibraryEntry()`.
|
|
721
|
+
|
|
722
|
+
**Images Not Loading**: Check CORS headers include your editor domain. Verify `meta.uri` URLs are accessible from the browser. Open the browser network tab to see specific error responses.
|
|
723
|
+
|
|
724
|
+
**Search Not Working**: Confirm `findAssets` reads `queryData.query` and forwards the search term to your backend. The callback runs on every keystroke, so debounce server requests if needed.
|
|
725
|
+
|
|
726
|
+
**Pagination Issues**: Set `nextPage` to `undefined` when there are no more results. Ensure `total` reflects the complete result count, not just the current page. Verify `perPage` matches your API's page size.
|
|
727
|
+
|
|
728
|
+
## API Reference
|
|
729
|
+
|
|
730
|
+
| Method | Purpose |
|
|
731
|
+
| ---------------------------------------------------------- | -------------------------------------- |
|
|
732
|
+
| `engine.asset.addSource()` | Register custom source with findAssets |
|
|
733
|
+
| `engine.asset.addLocalSource()` | Register source with custom applyAsset |
|
|
734
|
+
| `engine.asset.addLocalAssetSourceFromJSONURI()` | Load assets from hosted JSON manifest |
|
|
735
|
+
| `cesdk.ui.addAssetLibraryEntry()` | Add entry to asset library panel |
|
|
736
|
+
| `cesdk.ui.registerComponent()` | Register custom dock button component |
|
|
737
|
+
| `cesdk.ui.setComponentOrder({ in: 'ly.img.dock' }, order)` | Configure dock button order |
|
|
738
|
+
|
|
739
|
+
| Metadata Property | Purpose |
|
|
740
|
+
| ---------------------------- | ------------------------------- |
|
|
741
|
+
| `meta.uri` | Full asset URL for canvas |
|
|
742
|
+
| `meta.thumbUri` | Thumbnail URL for asset library |
|
|
743
|
+
| `meta.blockType` | Block type (graphic, audio) |
|
|
744
|
+
| `meta.fillType` | Fill type (image, video) |
|
|
745
|
+
| `meta.kind` | Asset kind (sticker) |
|
|
746
|
+
| `meta.mimeType` | MIME type (required for audio) |
|
|
747
|
+
| `meta.duration` | Duration for video/audio |
|
|
748
|
+
| `meta.width` / `meta.height` | Dimensions for aspect ratio |
|
|
749
|
+
|
|
750
|
+
## Next Steps
|
|
751
|
+
|
|
752
|
+
- [User Upload](./import-media/from-local-source/user-upload.md) — Handle file uploads with progress tracking
|
|
753
|
+
- [Asset Concepts](./import-media/concepts.md) — Asset sources and metadata architecture
|
|
754
|
+
- [Thumbnails](./import-media/asset-panel/thumbnails.md) — Configure thumbnail display and preview URIs
|
|
755
|
+
- [Customize Asset Library](./import-media/asset-panel/customize.md) — UI customization options
|
|
756
|
+
|
|
757
|
+
---
|
|
758
|
+
|
|
759
|
+
## More Resources
|
|
760
|
+
|
|
761
|
+
- **[Vanilla JS/TS Documentation Index](https://img.ly/docs/cesdk/js.md)** - Browse all Vanilla JS/TS documentation
|
|
762
|
+
- **[Complete Documentation](./llms-full.txt.md)** - Full documentation in one file (for LLMs)
|
|
763
|
+
- **[Web Documentation](./js.md)** - Interactive documentation with examples
|
|
764
|
+
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
|