@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,625 @@
|
|
|
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 IMG.LY Premium Assets](./import-media/from-remote-source/imgly-premium-assets.md)
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Host IMG.LY premium templates on your infrastructure and integrate them
|
|
8
|
+
directly into CE.SDK's asset library.
|
|
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-imgly-premium-assets-browser)
|
|
18
|
+
> - [Open in StackBlitz](https://stackblitz.com/github/imgly/cesdk-web-examples/tree/v$UBQ_VERSION$/guides-import-media-from-remote-source-imgly-premium-assets-browser)
|
|
19
|
+
> - [Live demo](https://img.ly/docs/cesdk/examples/guides-import-media-from-remote-source-imgly-premium-assets-browser/)
|
|
20
|
+
|
|
21
|
+
IMG.LY offers premium templates through downloadable asset archives. These templates can be hosted on your own infrastructure and seamlessly integrated into CE.SDK's asset library, making them available to users alongside other asset sources. Contact IMG.LY sales to purchase premium template packages.
|
|
22
|
+
|
|
23
|
+
```typescript file=@cesdk_web_examples/guides-import-media-from-remote-source-imgly-premium-assets-browser/browser.ts reference-only
|
|
24
|
+
import type {
|
|
25
|
+
AssetDefinition,
|
|
26
|
+
EditorPlugin,
|
|
27
|
+
EditorPluginContext
|
|
28
|
+
} from '@cesdk/cesdk-js';
|
|
29
|
+
import packageJson from './package.json';
|
|
30
|
+
|
|
31
|
+
import {
|
|
32
|
+
BlurAssetSource,
|
|
33
|
+
ColorPaletteAssetSource,
|
|
34
|
+
CropPresetsAssetSource,
|
|
35
|
+
DemoAssetSources,
|
|
36
|
+
EffectsAssetSource,
|
|
37
|
+
FiltersAssetSource,
|
|
38
|
+
PagePresetsAssetSource,
|
|
39
|
+
StickerAssetSource,
|
|
40
|
+
TextAssetSource,
|
|
41
|
+
TextComponentAssetSource,
|
|
42
|
+
TypefaceAssetSource,
|
|
43
|
+
UploadAssetSources,
|
|
44
|
+
VectorShapeAssetSource
|
|
45
|
+
} from '@cesdk/cesdk-js/plugins';
|
|
46
|
+
import { DesignEditorConfig } from './design-editor/plugin';
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Type definition for IMG.LY Premium Assets content.json manifest
|
|
50
|
+
*/
|
|
51
|
+
interface ContentJSON {
|
|
52
|
+
version: string;
|
|
53
|
+
id: string;
|
|
54
|
+
assets: AssetDefinition[];
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* CE.SDK Plugin: IMG.LY Premium Assets
|
|
59
|
+
*
|
|
60
|
+
* Demonstrates integrating self-hosted IMG.LY premium templates:
|
|
61
|
+
* - Fetching and parsing content.json manifest
|
|
62
|
+
* - Creating local asset sources for finite collections
|
|
63
|
+
* - Replacing {{base_url}} placeholders with actual hosting URLs
|
|
64
|
+
* - Adding template assets to the asset library
|
|
65
|
+
*/
|
|
66
|
+
class Example implements EditorPlugin {
|
|
67
|
+
name = packageJson.name;
|
|
68
|
+
version = packageJson.version;
|
|
69
|
+
|
|
70
|
+
async initialize({ cesdk }: EditorPluginContext): Promise<void> {
|
|
71
|
+
if (!cesdk) {
|
|
72
|
+
throw new Error('CE.SDK instance is required for this plugin');
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
const engine = cesdk.engine;
|
|
76
|
+
await cesdk.addPlugin(new DesignEditorConfig());
|
|
77
|
+
|
|
78
|
+
// Add asset source plugins
|
|
79
|
+
await cesdk.addPlugin(new BlurAssetSource());
|
|
80
|
+
await cesdk.addPlugin(new ColorPaletteAssetSource());
|
|
81
|
+
await cesdk.addPlugin(new CropPresetsAssetSource());
|
|
82
|
+
await cesdk.addPlugin(
|
|
83
|
+
new UploadAssetSources({ include: ['ly.img.image.upload'] })
|
|
84
|
+
);
|
|
85
|
+
await cesdk.addPlugin(
|
|
86
|
+
new DemoAssetSources({
|
|
87
|
+
include: [
|
|
88
|
+
'ly.img.templates.blank.*',
|
|
89
|
+
'ly.img.templates.presentation.*',
|
|
90
|
+
'ly.img.templates.print.*',
|
|
91
|
+
'ly.img.templates.social.*',
|
|
92
|
+
'ly.img.image.*'
|
|
93
|
+
]
|
|
94
|
+
})
|
|
95
|
+
);
|
|
96
|
+
await cesdk.addPlugin(new EffectsAssetSource());
|
|
97
|
+
await cesdk.addPlugin(new FiltersAssetSource());
|
|
98
|
+
await cesdk.addPlugin(new PagePresetsAssetSource());
|
|
99
|
+
await cesdk.addPlugin(new StickerAssetSource());
|
|
100
|
+
await cesdk.addPlugin(new TextAssetSource());
|
|
101
|
+
await cesdk.addPlugin(new TextComponentAssetSource());
|
|
102
|
+
await cesdk.addPlugin(new TypefaceAssetSource());
|
|
103
|
+
await cesdk.addPlugin(new VectorShapeAssetSource());
|
|
104
|
+
|
|
105
|
+
await cesdk.actions.run('scene.create', {
|
|
106
|
+
page: {
|
|
107
|
+
sourceId: 'ly.img.page.presets',
|
|
108
|
+
assetId: 'ly.img.page.presets.print.iso.a6.landscape'
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
|
|
112
|
+
// Configure the base URL where premium assets are hosted
|
|
113
|
+
// This points to IMG.LY's premium templates CDN
|
|
114
|
+
const baseURL = import.meta.env.VITE_CESDK_PREMIUM_TEMPLATES_URL;
|
|
115
|
+
|
|
116
|
+
if (!baseURL) {
|
|
117
|
+
throw new Error(
|
|
118
|
+
'VITE_CESDK_PREMIUM_TEMPLATES_URL environment variable is required'
|
|
119
|
+
);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
// Fetch the content.json manifest file
|
|
123
|
+
// This file lists all available templates and their metadata
|
|
124
|
+
const contentJSONUrl = `${baseURL}/dist/templates/content.json`;
|
|
125
|
+
const response = await fetch(contentJSONUrl);
|
|
126
|
+
|
|
127
|
+
if (!response.ok) {
|
|
128
|
+
throw new Error(`Failed to fetch content.json: ${response.statusText}`);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
const content: ContentJSON = await response.json();
|
|
132
|
+
|
|
133
|
+
// Extract the source ID and assets array from the manifest
|
|
134
|
+
const { assets, id: sourceId } = content;
|
|
135
|
+
|
|
136
|
+
// Create a local asset source for the premium templates with custom apply handler
|
|
137
|
+
// Templates are archive files that need special loading
|
|
138
|
+
engine.asset.addLocalSource(sourceId, [], async (asset) => {
|
|
139
|
+
// Load the template from the archive URL
|
|
140
|
+
await engine.scene.loadFromArchiveURL(asset.meta.uri);
|
|
141
|
+
// Return the scene ID after loading
|
|
142
|
+
return engine.scene.get()!;
|
|
143
|
+
});
|
|
144
|
+
|
|
145
|
+
// Process each asset and add it to the source
|
|
146
|
+
assets.forEach((asset) => {
|
|
147
|
+
// Replace {{base_url}} placeholders in asset metadata
|
|
148
|
+
// Note: We append '/dist' to match the CDN structure
|
|
149
|
+
const replacementURL = `${baseURL}/dist`;
|
|
150
|
+
if (asset.meta) {
|
|
151
|
+
Object.entries(asset.meta).forEach(([key, value]: [any, any]) => {
|
|
152
|
+
const stringValue: string = value.toString();
|
|
153
|
+
if (stringValue.includes('{{base_url}}')) {
|
|
154
|
+
const updated = stringValue.replace('{{base_url}}', replacementURL);
|
|
155
|
+
if (asset.meta) {
|
|
156
|
+
asset.meta[key] = updated;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
// Replace {{base_url}} in payload sourceSet for responsive images
|
|
163
|
+
// cSpell:ignore sourceset
|
|
164
|
+
if (asset.payload?.sourceSet) {
|
|
165
|
+
asset.payload.sourceSet.forEach((sourceSet) => {
|
|
166
|
+
sourceSet.uri = sourceSet.uri.replace('{{base_url}}', replacementURL);
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
// Add the processed asset to the local source
|
|
171
|
+
engine.asset.addAssetToSource(sourceId, asset);
|
|
172
|
+
});
|
|
173
|
+
|
|
174
|
+
// Query and apply the second template to demonstrate the integration
|
|
175
|
+
const result = await engine.asset.findAssets(sourceId, {
|
|
176
|
+
page: 0,
|
|
177
|
+
perPage: 2
|
|
178
|
+
});
|
|
179
|
+
|
|
180
|
+
if (result.assets.length > 1) {
|
|
181
|
+
// Apply the second template - this triggers the custom applyAsset callback
|
|
182
|
+
await engine.asset.apply(sourceId, result.assets[1]);
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
// Set translations for category labels
|
|
186
|
+
cesdk.i18n.setTranslations({
|
|
187
|
+
en: {
|
|
188
|
+
'libraries.ly.img.template.premium.ly.img.template.premium1.label':
|
|
189
|
+
'Templates',
|
|
190
|
+
'libraries.ly.img.template.premium.ly.img.template.premium1.e-commerce.label':
|
|
191
|
+
'E-Commerce',
|
|
192
|
+
'libraries.ly.img.template.premium.ly.img.template.premium1.event.label':
|
|
193
|
+
'Event',
|
|
194
|
+
'libraries.ly.img.template.premium.ly.img.template.premium1.personal.label':
|
|
195
|
+
'Personal',
|
|
196
|
+
'libraries.ly.img.template.premium.ly.img.template.premium1.professional.label':
|
|
197
|
+
'Professional',
|
|
198
|
+
'libraries.ly.img.template.premium.ly.img.template.premium1.socials.label':
|
|
199
|
+
'Socials'
|
|
200
|
+
}
|
|
201
|
+
});
|
|
202
|
+
|
|
203
|
+
// Configure the asset library dock entry for premium templates
|
|
204
|
+
cesdk.ui.addAssetLibraryEntry({
|
|
205
|
+
id: 'ly.img.template.premium',
|
|
206
|
+
sourceIds: [sourceId],
|
|
207
|
+
previewLength: 3,
|
|
208
|
+
gridColumns: 3,
|
|
209
|
+
gridItemHeight: 'auto'
|
|
210
|
+
});
|
|
211
|
+
|
|
212
|
+
// Add premium templates as the first button in the dock with a separator
|
|
213
|
+
cesdk.ui.setComponentOrder({ in: 'ly.img.dock' }, [
|
|
214
|
+
{
|
|
215
|
+
id: 'ly.img.assetLibrary.dock',
|
|
216
|
+
key: 'premium-templates',
|
|
217
|
+
label: 'Premium Templates',
|
|
218
|
+
entries: ['ly.img.template.premium']
|
|
219
|
+
},
|
|
220
|
+
{ id: 'ly.img.separator' },
|
|
221
|
+
...cesdk.ui.getComponentOrder({ in: 'ly.img.dock' })
|
|
222
|
+
]);
|
|
223
|
+
|
|
224
|
+
// Open the Premium Templates panel to showcase the feature on load
|
|
225
|
+
cesdk.ui.openPanel('//ly.img.panel/assetLibrary', {
|
|
226
|
+
payload: { entries: ['ly.img.template.premium'] }
|
|
227
|
+
});
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
export default Example;
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
This guide covers environment setup, fetching and parsing the content manifest, creating local asset sources with archive loading support, replacing URL placeholders, configuring category labels, and displaying templates as a prominent dock entry in the asset library.
|
|
235
|
+
|
|
236
|
+
## Prerequisites
|
|
237
|
+
|
|
238
|
+
Before integrating premium assets, ensure you have:
|
|
239
|
+
|
|
240
|
+
- IMG.LY premium asset archive (contact sales to purchase)
|
|
241
|
+
- Self-hosted server or CDN for asset files
|
|
242
|
+
- Working CE.SDK instance
|
|
243
|
+
- Understanding of URL structure and path resolution
|
|
244
|
+
- Environment variable support (Vite, webpack, or equivalent bundler)
|
|
245
|
+
|
|
246
|
+
The premium asset package contains a structured archive with template metadata, thumbnails, and design files ready for hosting.
|
|
247
|
+
|
|
248
|
+
## Premium Asset Package Structure
|
|
249
|
+
|
|
250
|
+
The archive contains a `content.json` manifest and template directories. Each template directory includes three essential files: `asset.json` containing metadata, `thumbnail.jpg` for preview images, and `design.zip` with the complete template and assets.
|
|
251
|
+
|
|
252
|
+
```json
|
|
253
|
+
{
|
|
254
|
+
"version": "1.0",
|
|
255
|
+
"id": "imgly-premium-templates",
|
|
256
|
+
"assets": [
|
|
257
|
+
{
|
|
258
|
+
"id": "social-media-story-1",
|
|
259
|
+
"label": { "en": "Modern Social Media Story" },
|
|
260
|
+
"meta": {
|
|
261
|
+
"uri": "{{base_url}}/social-media-story-1/design.zip",
|
|
262
|
+
"thumbUri": "{{base_url}}/social-media-story-1/thumbnail.jpg"
|
|
263
|
+
},
|
|
264
|
+
"payload": {
|
|
265
|
+
"sourceSet": [
|
|
266
|
+
{ "uri": "{{base_url}}/social-media-story-1/thumbnail.jpg" }
|
|
267
|
+
]
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
]
|
|
271
|
+
}
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
The `{{base_url}}` placeholders allow flexible hosting by replacing them with your actual server URL at runtime.
|
|
275
|
+
|
|
276
|
+
## Hosting Premium Assets
|
|
277
|
+
|
|
278
|
+
Upload extracted asset folders to your server with all three files accessible via URL. CE.SDK combines the base URL with template paths to fetch resources.
|
|
279
|
+
|
|
280
|
+
### Environment Configuration
|
|
281
|
+
|
|
282
|
+
Configure the base URL using environment variables to keep your hosting location secure and easily configurable across environments.
|
|
283
|
+
|
|
284
|
+
Create a `.env` file in your project root:
|
|
285
|
+
|
|
286
|
+
```bash
|
|
287
|
+
VITE_PREMIUM_TEMPLATES_BASE_URL=https://your-cdn.example.com/premium-templates
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
For reference and team setup, create a `.env.example` file:
|
|
291
|
+
|
|
292
|
+
```bash
|
|
293
|
+
VITE_PREMIUM_TEMPLATES_BASE_URL=https://your-cdn.example.com/premium-templates
|
|
294
|
+
# CE.SDK License Key (Optional)
|
|
295
|
+
# VITE_CESDK_LICENSE=YOUR_LICENSE_KEY_HERE
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
Add `.env` to your `.gitignore` to prevent exposing sensitive URLs:
|
|
299
|
+
|
|
300
|
+
```bash
|
|
301
|
+
# Environment files
|
|
302
|
+
.env
|
|
303
|
+
.env.local
|
|
304
|
+
.env.*.local
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
### Loading Configuration
|
|
308
|
+
|
|
309
|
+
Load the base URL from environment variables with validation:
|
|
310
|
+
|
|
311
|
+
```typescript highlight-base-url-config
|
|
312
|
+
// Configure the base URL where premium assets are hosted
|
|
313
|
+
// This points to IMG.LY's premium templates CDN
|
|
314
|
+
const baseURL = import.meta.env.VITE_CESDK_PREMIUM_TEMPLATES_URL;
|
|
315
|
+
|
|
316
|
+
if (!baseURL) {
|
|
317
|
+
throw new Error(
|
|
318
|
+
'VITE_CESDK_PREMIUM_TEMPLATES_URL environment variable is required'
|
|
319
|
+
);
|
|
320
|
+
}
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
The base URL points to the root directory where template folders are hosted. This URL can be a CDN, your own server, or any accessible HTTP location. Using environment variables keeps your hosting location confidential and allows different configurations for development, staging, and production environments.
|
|
324
|
+
|
|
325
|
+
## Configuring Asset Sources
|
|
326
|
+
|
|
327
|
+
We configure CE.SDK to load premium templates by fetching the `content.json` manifest and creating a local asset source.
|
|
328
|
+
|
|
329
|
+
### Fetching the Manifest
|
|
330
|
+
|
|
331
|
+
First, we fetch and parse the `content.json` file that lists all available templates.
|
|
332
|
+
|
|
333
|
+
```typescript highlight-fetch-content-json
|
|
334
|
+
// Fetch the content.json manifest file
|
|
335
|
+
// This file lists all available templates and their metadata
|
|
336
|
+
const contentJSONUrl = `${baseURL}/dist/templates/content.json`;
|
|
337
|
+
const response = await fetch(contentJSONUrl);
|
|
338
|
+
|
|
339
|
+
if (!response.ok) {
|
|
340
|
+
throw new Error(`Failed to fetch content.json: ${response.statusText}`);
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
const content: ContentJSON = await response.json();
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
The manifest contains the source ID and an array of asset definitions with metadata for each template.
|
|
347
|
+
|
|
348
|
+
### Extracting Source Data
|
|
349
|
+
|
|
350
|
+
We extract the source ID and assets array from the parsed manifest.
|
|
351
|
+
|
|
352
|
+
```typescript highlight-extract-source-data
|
|
353
|
+
// Extract the source ID and assets array from the manifest
|
|
354
|
+
const { assets, id: sourceId } = content;
|
|
355
|
+
```
|
|
356
|
+
|
|
357
|
+
The source ID determines which asset library panel displays the templates. The assets array contains all template definitions.
|
|
358
|
+
|
|
359
|
+
### Creating a Local Source
|
|
360
|
+
|
|
361
|
+
We create a local asset source with a custom apply handler for loading template archives.
|
|
362
|
+
|
|
363
|
+
```typescript highlight-create-local-source
|
|
364
|
+
// Create a local asset source for the premium templates with custom apply handler
|
|
365
|
+
// Templates are archive files that need special loading
|
|
366
|
+
engine.asset.addLocalSource(sourceId, [], async (asset) => {
|
|
367
|
+
// Load the template from the archive URL
|
|
368
|
+
await engine.scene.loadFromArchiveURL(asset.meta.uri);
|
|
369
|
+
// Return the scene ID after loading
|
|
370
|
+
return engine.scene.get()!;
|
|
371
|
+
});
|
|
372
|
+
```
|
|
373
|
+
|
|
374
|
+
Premium templates are distributed as `.zip` archives, so we provide a custom `applyAsset` callback that uses `loadFromArchiveURL()` instead of the standard asset application logic. This callback:
|
|
375
|
+
|
|
376
|
+
1. Loads the template archive from the asset's URI
|
|
377
|
+
2. Replaces the current scene with the template content
|
|
378
|
+
3. Returns the scene ID for tracking
|
|
379
|
+
|
|
380
|
+
Local sources are ideal for finite asset collections that don't require custom query logic. The engine manages search and pagination automatically.
|
|
381
|
+
|
|
382
|
+
### Processing and Adding Assets
|
|
383
|
+
|
|
384
|
+
We process each asset to replace `{{base_url}}` placeholders with the actual hosting URL, then add them to the source.
|
|
385
|
+
|
|
386
|
+
```typescript highlight-process-assets
|
|
387
|
+
// Process each asset and add it to the source
|
|
388
|
+
assets.forEach((asset) => {
|
|
389
|
+
// Replace {{base_url}} placeholders in asset metadata
|
|
390
|
+
// Note: We append '/dist' to match the CDN structure
|
|
391
|
+
const replacementURL = `${baseURL}/dist`;
|
|
392
|
+
if (asset.meta) {
|
|
393
|
+
Object.entries(asset.meta).forEach(([key, value]: [any, any]) => {
|
|
394
|
+
const stringValue: string = value.toString();
|
|
395
|
+
if (stringValue.includes('{{base_url}}')) {
|
|
396
|
+
const updated = stringValue.replace('{{base_url}}', replacementURL);
|
|
397
|
+
if (asset.meta) {
|
|
398
|
+
asset.meta[key] = updated;
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
});
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
// Replace {{base_url}} in payload sourceSet for responsive images
|
|
405
|
+
// cSpell:ignore sourceset
|
|
406
|
+
if (asset.payload?.sourceSet) {
|
|
407
|
+
asset.payload.sourceSet.forEach((sourceSet) => {
|
|
408
|
+
sourceSet.uri = sourceSet.uri.replace('{{base_url}}', replacementURL);
|
|
409
|
+
});
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
// Add the processed asset to the local source
|
|
413
|
+
engine.asset.addAssetToSource(sourceId, asset);
|
|
414
|
+
});
|
|
415
|
+
```
|
|
416
|
+
|
|
417
|
+
For each asset, we replace placeholders in two locations: the `meta` object and the `payload.sourceSet` array.
|
|
418
|
+
|
|
419
|
+
#### Replacing Meta Placeholders
|
|
420
|
+
|
|
421
|
+
We iterate through the `meta` object to replace any `{{base_url}}` placeholders.
|
|
422
|
+
|
|
423
|
+
```typescript highlight-replace-meta-placeholders
|
|
424
|
+
// Replace {{base_url}} placeholders in asset metadata
|
|
425
|
+
// Note: We append '/dist' to match the CDN structure
|
|
426
|
+
const replacementURL = `${baseURL}/dist`;
|
|
427
|
+
if (asset.meta) {
|
|
428
|
+
Object.entries(asset.meta).forEach(([key, value]: [any, any]) => {
|
|
429
|
+
const stringValue: string = value.toString();
|
|
430
|
+
if (stringValue.includes('{{base_url}}')) {
|
|
431
|
+
const updated = stringValue.replace('{{base_url}}', replacementURL);
|
|
432
|
+
if (asset.meta) {
|
|
433
|
+
asset.meta[key] = updated;
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
});
|
|
437
|
+
}
|
|
438
|
+
```
|
|
439
|
+
|
|
440
|
+
This ensures the template URI and thumbnail URI point to the correct server location.
|
|
441
|
+
|
|
442
|
+
#### Replacing SourceSet Placeholders
|
|
443
|
+
|
|
444
|
+
We also replace placeholders in the `payload.sourceSet` array for responsive image variants.
|
|
445
|
+
|
|
446
|
+
```typescript highlight-replace-sourceset-placeholders
|
|
447
|
+
// Replace {{base_url}} in payload sourceSet for responsive images
|
|
448
|
+
// cSpell:ignore sourceset
|
|
449
|
+
if (asset.payload?.sourceSet) {
|
|
450
|
+
asset.payload.sourceSet.forEach((sourceSet) => {
|
|
451
|
+
sourceSet.uri = sourceSet.uri.replace('{{base_url}}', replacementURL);
|
|
452
|
+
});
|
|
453
|
+
}
|
|
454
|
+
```
|
|
455
|
+
|
|
456
|
+
The source set array contains multiple image sizes for optimal loading performance.
|
|
457
|
+
|
|
458
|
+
#### Adding to Source
|
|
459
|
+
|
|
460
|
+
After processing, we add the asset to the local source.
|
|
461
|
+
|
|
462
|
+
```typescript highlight-add-asset
|
|
463
|
+
// Add the processed asset to the local source
|
|
464
|
+
engine.asset.addAssetToSource(sourceId, asset);
|
|
465
|
+
```
|
|
466
|
+
|
|
467
|
+
The engine stores the asset and makes it available for search queries and display.
|
|
468
|
+
|
|
469
|
+
## Displaying Templates in Asset Library
|
|
470
|
+
|
|
471
|
+
Templates automatically appear in the asset library after being added to the source. To make them easily accessible, we configure category labels and a dedicated dock entry.
|
|
472
|
+
|
|
473
|
+
### Configuring Category Labels
|
|
474
|
+
|
|
475
|
+
Premium templates are organized into categories. We configure i18n translations for user-friendly category labels:
|
|
476
|
+
|
|
477
|
+
```typescript highlight-translations
|
|
478
|
+
// Set translations for category labels
|
|
479
|
+
cesdk.i18n.setTranslations({
|
|
480
|
+
en: {
|
|
481
|
+
'libraries.ly.img.template.premium.ly.img.template.premium1.label':
|
|
482
|
+
'Templates',
|
|
483
|
+
'libraries.ly.img.template.premium.ly.img.template.premium1.e-commerce.label':
|
|
484
|
+
'E-Commerce',
|
|
485
|
+
'libraries.ly.img.template.premium.ly.img.template.premium1.event.label':
|
|
486
|
+
'Event',
|
|
487
|
+
'libraries.ly.img.template.premium.ly.img.template.premium1.personal.label':
|
|
488
|
+
'Personal',
|
|
489
|
+
'libraries.ly.img.template.premium.ly.img.template.premium1.professional.label':
|
|
490
|
+
'Professional',
|
|
491
|
+
'libraries.ly.img.template.premium.ly.img.template.premium1.socials.label':
|
|
492
|
+
'Socials'
|
|
493
|
+
}
|
|
494
|
+
});
|
|
495
|
+
```
|
|
496
|
+
|
|
497
|
+
These translations map the internal category identifiers from `content.json` (like `e-commerce`, `event`, `personal`) to readable labels that appear in the asset library interface. The translation keys follow the pattern: `libraries.{sourceId}.{categoryId}.label`.
|
|
498
|
+
|
|
499
|
+
### Configuring the Dock Entry
|
|
500
|
+
|
|
501
|
+
We add a custom dock entry as the first button in the asset library dock, followed by a separator for visual grouping.
|
|
502
|
+
|
|
503
|
+
```typescript highlight-setup
|
|
504
|
+
// Configure the asset library dock entry for premium templates
|
|
505
|
+
cesdk.ui.addAssetLibraryEntry({
|
|
506
|
+
id: 'ly.img.template.premium',
|
|
507
|
+
sourceIds: [sourceId],
|
|
508
|
+
previewLength: 3,
|
|
509
|
+
gridColumns: 3,
|
|
510
|
+
gridItemHeight: 'auto'
|
|
511
|
+
});
|
|
512
|
+
|
|
513
|
+
// Add premium templates as the first button in the dock with a separator
|
|
514
|
+
cesdk.ui.setComponentOrder({ in: 'ly.img.dock' }, [
|
|
515
|
+
{
|
|
516
|
+
id: 'ly.img.assetLibrary.dock',
|
|
517
|
+
key: 'premium-templates',
|
|
518
|
+
label: 'Premium Templates',
|
|
519
|
+
entries: ['ly.img.template.premium']
|
|
520
|
+
},
|
|
521
|
+
{ id: 'ly.img.separator' },
|
|
522
|
+
...cesdk.ui.getComponentOrder({ in: 'ly.img.dock' })
|
|
523
|
+
]);
|
|
524
|
+
```
|
|
525
|
+
|
|
526
|
+
This configuration:
|
|
527
|
+
|
|
528
|
+
- Places "Premium Templates" as the first dock button
|
|
529
|
+
- Adds a visual separator after it
|
|
530
|
+
- Preserves all existing dock entries using the spread operator
|
|
531
|
+
- Shows 3 preview templates in a 3-column grid
|
|
532
|
+
- Uses the default template icon instead of custom emoji
|
|
533
|
+
|
|
534
|
+
The `sourceIds` array specifies which asset source to display (matching the source ID from `content.json`). The `entries` array contains the asset library entry IDs to display in this dock panel.
|
|
535
|
+
|
|
536
|
+
## Testing the Integration
|
|
537
|
+
|
|
538
|
+
Verify templates appear in the asset library and load correctly with all assets. Query the asset source programmatically to check availability:
|
|
539
|
+
|
|
540
|
+
```typescript
|
|
541
|
+
const result = await engine.asset.findAssets('imgly-premium-templates', {
|
|
542
|
+
page: 0,
|
|
543
|
+
perPage: 10
|
|
544
|
+
});
|
|
545
|
+
|
|
546
|
+
console.log(`Found ${result.total} templates`);
|
|
547
|
+
```
|
|
548
|
+
|
|
549
|
+
### Applying Templates Programmatically
|
|
550
|
+
|
|
551
|
+
To demonstrate the integration working immediately upon load, apply a template programmatically after the asset source is configured:
|
|
552
|
+
|
|
553
|
+
```typescript highlight-apply-first-template
|
|
554
|
+
// Query and apply the second template to demonstrate the integration
|
|
555
|
+
const result = await engine.asset.findAssets(sourceId, {
|
|
556
|
+
page: 0,
|
|
557
|
+
perPage: 2
|
|
558
|
+
});
|
|
559
|
+
|
|
560
|
+
if (result.assets.length > 1) {
|
|
561
|
+
// Apply the second template - this triggers the custom applyAsset callback
|
|
562
|
+
await engine.asset.apply(sourceId, result.assets[1]);
|
|
563
|
+
}
|
|
564
|
+
```
|
|
565
|
+
|
|
566
|
+
This queries the asset source for templates and applies the second one (index 1) to the canvas. This provides immediate visual feedback that the integration is working correctly. Users can then click other templates in the asset library to explore the full collection.
|
|
567
|
+
|
|
568
|
+
## Optimization
|
|
569
|
+
|
|
570
|
+
Implement CDN caching for `design.zip` files and thumbnails to improve load times. Configure appropriate cache headers on your server to reduce bandwidth and latency.
|
|
571
|
+
|
|
572
|
+
For authenticated access, implement server access controls to restrict premium content to authorized users only. Use signed URLs or token-based authentication to protect template files.
|
|
573
|
+
|
|
574
|
+
Environment variables provide additional security benefits by keeping hosting locations out of source control. Configure different base URLs for development, staging, and production environments without code changes. This allows you to test with staging assets locally while production uses the actual CDN.
|
|
575
|
+
|
|
576
|
+
## Troubleshooting
|
|
577
|
+
|
|
578
|
+
**Environment variable not defined**: If you see "VITE_PREMIUM_TEMPLATES_BASE_URL environment variable is required", ensure your `.env` file exists and contains the base URL. Restart your development server after creating or modifying the `.env` file.
|
|
579
|
+
|
|
580
|
+
**Base URL configuration errors**: Verify the base URL matches your hosting location exactly, including protocol (http/https) and trailing slashes. Check that the environment variable is loaded correctly using `console.log(import.meta.env.VITE_PREMIUM_TEMPLATES_BASE_URL)`.
|
|
581
|
+
|
|
582
|
+
**Templates not applying or showing serialization errors**: Premium templates are `.zip` archives that require a custom `applyAsset` callback using `loadFromArchiveURL()`. Verify your asset source creation includes this callback instead of relying on default asset application behavior.
|
|
583
|
+
|
|
584
|
+
**Missing or incorrect file paths (404 errors)**: Check that template folders and files are uploaded correctly and accessible at the expected URLs. Verify the `/dist` path is included if your CDN uses that structure.
|
|
585
|
+
|
|
586
|
+
**CORS issues when loading from different domains**: Configure CORS headers on your server to allow CE.SDK to fetch resources from your domain.
|
|
587
|
+
|
|
588
|
+
**Template files not loading or appearing blank**: Ensure `design.zip` files are valid CE.SDK archives and contain all required assets.
|
|
589
|
+
|
|
590
|
+
**Thumbnail images not displaying**: Verify thumbnail file paths are correct and images are accessible via HTTP.
|
|
591
|
+
|
|
592
|
+
**Content manifest parsing errors**: Validate `content.json` structure matches the expected format with required fields like `id`, `version`, and `assets` array.
|
|
593
|
+
|
|
594
|
+
**Category labels not appearing**: Ensure i18n translations are configured before adding the asset library entry. Translation keys must match the pattern `libraries.{sourceId}.{categoryId}.label`.
|
|
595
|
+
|
|
596
|
+
## API Reference
|
|
597
|
+
|
|
598
|
+
| Method | Category | Purpose |
|
|
599
|
+
| ---------------------------------------------------------- | -------- | ------------------------------------------------------- |
|
|
600
|
+
| `engine.asset.addLocalSource()` | Asset | Create a local asset source with custom apply callback |
|
|
601
|
+
| `engine.asset.addAssetToSource()` | Asset | Add individual template assets to the source |
|
|
602
|
+
| `engine.scene.loadFromArchiveURL()` | Scene | Load template from .zip archive URL |
|
|
603
|
+
| `engine.asset.findAssets()` | Asset | Query assets from a source for programmatic application |
|
|
604
|
+
| `cesdk.i18n.setTranslations()` | UI | Configure category labels and localized strings |
|
|
605
|
+
| `cesdk.ui.addAssetLibraryEntry()` | UI | Add custom asset library panel configuration |
|
|
606
|
+
| `cesdk.ui.setComponentOrder({ in: 'ly.img.dock' }, order)` | UI | Configure dock button order and custom entries |
|
|
607
|
+
| `cesdk.ui.getComponentOrder({ in: 'ly.img.dock' })` | UI | Get current dock configuration for preservation |
|
|
608
|
+
|
|
609
|
+
## Next Steps
|
|
610
|
+
|
|
611
|
+
- [Integrate Unsplash Stock Images](./import-media/from-remote-source/unsplash.md) — Add stock photo
|
|
612
|
+
integration
|
|
613
|
+
- [Customize Asset Library](./import-media/asset-panel/customize.md) — Configure asset panels and
|
|
614
|
+
UI
|
|
615
|
+
- [Asset Library Basics](./import-media/asset-panel/basics.md) — Understand asset sources
|
|
616
|
+
- [Import Media Concepts](./import-media/concepts.md) — Learn core import concepts
|
|
617
|
+
|
|
618
|
+
---
|
|
619
|
+
|
|
620
|
+
## More Resources
|
|
621
|
+
|
|
622
|
+
- **[Vanilla JS/TS Documentation Index](https://img.ly/docs/cesdk/js.md)** - Browse all Vanilla JS/TS documentation
|
|
623
|
+
- **[Complete Documentation](./llms-full.txt.md)** - Full documentation in one file (for LLMs)
|
|
624
|
+
- **[Web Documentation](./js.md)** - Interactive documentation with examples
|
|
625
|
+
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
|