@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,307 @@
|
|
|
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) > [Create and Use Templates](./create-templates.md) > [Insert Dynamic Content](./create-templates/add-dynamic-content.md)
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Dynamic content transforms static designs into flexible, data-driven templates. CE.SDK provides three complementary capabilities—text variables, placeholders, and editing constraints—that work together to enable personalization while maintaining design integrity.
|
|
8
|
+
|
|
9
|
+

|
|
10
|
+
|
|
11
|
+
> **Reading time:** 8 minutes
|
|
12
|
+
>
|
|
13
|
+
> **Resources:**
|
|
14
|
+
>
|
|
15
|
+
> - [Download examples](https://github.com/imgly/cesdk-web-examples/archive/refs/tags/release-$UBQ_VERSION$.zip)
|
|
16
|
+
> - [View source on GitHub](https://github.com/imgly/cesdk-web-examples/tree/release-$UBQ_VERSION$/guides-create-templates-add-dynamic-content-browser)
|
|
17
|
+
> - [Open in StackBlitz](https://stackblitz.com/github/imgly/cesdk-web-examples/tree/v$UBQ_VERSION$/guides-create-templates-add-dynamic-content-browser)
|
|
18
|
+
> - [Live demo](https://img.ly/docs/cesdk/examples/guides-create-templates-add-dynamic-content-browser/)
|
|
19
|
+
|
|
20
|
+
```typescript file=@cesdk_web_examples/guides-create-templates-add-dynamic-content-browser/browser.ts reference-only
|
|
21
|
+
import type { EditorPlugin, EditorPluginContext } from '@cesdk/cesdk-js';
|
|
22
|
+
|
|
23
|
+
import {
|
|
24
|
+
BlurAssetSource,
|
|
25
|
+
ColorPaletteAssetSource,
|
|
26
|
+
CropPresetsAssetSource,
|
|
27
|
+
DemoAssetSources,
|
|
28
|
+
EffectsAssetSource,
|
|
29
|
+
FiltersAssetSource,
|
|
30
|
+
PagePresetsAssetSource,
|
|
31
|
+
StickerAssetSource,
|
|
32
|
+
TextAssetSource,
|
|
33
|
+
TextComponentAssetSource,
|
|
34
|
+
TypefaceAssetSource,
|
|
35
|
+
UploadAssetSources,
|
|
36
|
+
VectorShapeAssetSource
|
|
37
|
+
} from '@cesdk/cesdk-js/plugins';
|
|
38
|
+
import { DesignEditorConfig } from './design-editor/plugin';
|
|
39
|
+
import packageJson from './package.json';
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* CE.SDK Plugin: Dynamic Content Overview
|
|
43
|
+
*
|
|
44
|
+
* Demonstrates the dynamic content capabilities in CE.SDK templates:
|
|
45
|
+
* - Text Variables: Insert {{tokens}} that resolve to dynamic values
|
|
46
|
+
* - Placeholders: Create drop zones for swappable images/videos
|
|
47
|
+
* - Editing Constraints: Lock properties while allowing controlled changes
|
|
48
|
+
*/
|
|
49
|
+
class Example implements EditorPlugin {
|
|
50
|
+
name = packageJson.name;
|
|
51
|
+
|
|
52
|
+
version = packageJson.version;
|
|
53
|
+
|
|
54
|
+
async initialize({ cesdk }: EditorPluginContext): Promise<void> {
|
|
55
|
+
if (!cesdk) {
|
|
56
|
+
throw new Error('CE.SDK instance is required for this plugin');
|
|
57
|
+
}
|
|
58
|
+
await cesdk.addPlugin(new DesignEditorConfig());
|
|
59
|
+
|
|
60
|
+
// Add asset source plugins
|
|
61
|
+
await cesdk.addPlugin(new BlurAssetSource());
|
|
62
|
+
await cesdk.addPlugin(new ColorPaletteAssetSource());
|
|
63
|
+
await cesdk.addPlugin(new CropPresetsAssetSource());
|
|
64
|
+
await cesdk.addPlugin(
|
|
65
|
+
new UploadAssetSources({ include: ['ly.img.image.upload'] })
|
|
66
|
+
);
|
|
67
|
+
await cesdk.addPlugin(
|
|
68
|
+
new DemoAssetSources({
|
|
69
|
+
include: [
|
|
70
|
+
'ly.img.templates.blank.*',
|
|
71
|
+
'ly.img.templates.presentation.*',
|
|
72
|
+
'ly.img.templates.print.*',
|
|
73
|
+
'ly.img.templates.social.*',
|
|
74
|
+
'ly.img.image.*'
|
|
75
|
+
]
|
|
76
|
+
})
|
|
77
|
+
);
|
|
78
|
+
await cesdk.addPlugin(new EffectsAssetSource());
|
|
79
|
+
await cesdk.addPlugin(new FiltersAssetSource());
|
|
80
|
+
await cesdk.addPlugin(new PagePresetsAssetSource());
|
|
81
|
+
await cesdk.addPlugin(new StickerAssetSource());
|
|
82
|
+
await cesdk.addPlugin(new TextAssetSource());
|
|
83
|
+
await cesdk.addPlugin(new TextComponentAssetSource());
|
|
84
|
+
await cesdk.addPlugin(new TypefaceAssetSource());
|
|
85
|
+
await cesdk.addPlugin(new VectorShapeAssetSource());
|
|
86
|
+
|
|
87
|
+
await cesdk.actions.run('scene.create', {
|
|
88
|
+
page: { width: 800, height: 600, unit: 'Pixel' }
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
const engine = cesdk.engine;
|
|
92
|
+
|
|
93
|
+
// Set editor role to Adopter for template usage
|
|
94
|
+
engine.editor.setRole('Adopter');
|
|
95
|
+
|
|
96
|
+
const page = engine.block.findByType('page')[0];
|
|
97
|
+
|
|
98
|
+
// Content area: 480px wide, centered (left margin = 160px)
|
|
99
|
+
const contentX = 160;
|
|
100
|
+
const contentWidth = 480;
|
|
101
|
+
|
|
102
|
+
// TEXT VARIABLES: Define variables for personalization
|
|
103
|
+
engine.variable.setString('firstName', 'Jane');
|
|
104
|
+
engine.variable.setString('lastName', 'Doe');
|
|
105
|
+
engine.variable.setString('companyName', 'IMG.LY');
|
|
106
|
+
|
|
107
|
+
// Create heading with company variable
|
|
108
|
+
const headingText = engine.block.create('text');
|
|
109
|
+
engine.block.replaceText(
|
|
110
|
+
headingText,
|
|
111
|
+
'Welcome to {{companyName}}, {{firstName}} {{lastName}}.'
|
|
112
|
+
);
|
|
113
|
+
engine.block.setWidth(headingText, contentWidth);
|
|
114
|
+
engine.block.setHeightMode(headingText, 'Auto');
|
|
115
|
+
engine.block.setFloat(headingText, 'text/fontSize', 64);
|
|
116
|
+
engine.block.setEnum(headingText, 'text/horizontalAlignment', 'Left');
|
|
117
|
+
engine.block.appendChild(page, headingText);
|
|
118
|
+
engine.block.setPositionX(headingText, contentX);
|
|
119
|
+
engine.block.setPositionY(headingText, 200);
|
|
120
|
+
|
|
121
|
+
// Create description with bullet points
|
|
122
|
+
const descriptionText = engine.block.create('text');
|
|
123
|
+
engine.block.replaceText(
|
|
124
|
+
descriptionText,
|
|
125
|
+
'This example demonstrates dynamic templates.\n\n' +
|
|
126
|
+
'• Text Variables — Personalize content with {{tokens}}\n' +
|
|
127
|
+
'• Placeholders — Swappable images and media\n' +
|
|
128
|
+
'• Editing Constraints — Protected brand elements'
|
|
129
|
+
);
|
|
130
|
+
engine.block.setWidth(descriptionText, contentWidth);
|
|
131
|
+
engine.block.setHeightMode(descriptionText, 'Auto');
|
|
132
|
+
engine.block.setFloat(descriptionText, 'text/fontSize', 44);
|
|
133
|
+
engine.block.setEnum(descriptionText, 'text/horizontalAlignment', 'Left');
|
|
134
|
+
engine.block.appendChild(page, descriptionText);
|
|
135
|
+
engine.block.setPositionX(descriptionText, contentX);
|
|
136
|
+
engine.block.setPositionY(descriptionText, 300);
|
|
137
|
+
|
|
138
|
+
// Discover all variables in the scene
|
|
139
|
+
const allVariables = engine.variable.findAll();
|
|
140
|
+
console.log('Variables in scene:', allVariables);
|
|
141
|
+
|
|
142
|
+
// PLACEHOLDERS: Create hero image as a swappable drop zone
|
|
143
|
+
const heroImage = await engine.block.addImage(
|
|
144
|
+
'https://img.ly/static/ubq_samples/sample_1.jpg',
|
|
145
|
+
{ size: { width: contentWidth, height: 140 } }
|
|
146
|
+
);
|
|
147
|
+
engine.block.appendChild(page, heroImage);
|
|
148
|
+
engine.block.setPositionX(heroImage, contentX);
|
|
149
|
+
engine.block.setPositionY(heroImage, 40);
|
|
150
|
+
|
|
151
|
+
// Enable placeholder behavior for the hero image
|
|
152
|
+
if (engine.block.supportsPlaceholderBehavior(heroImage)) {
|
|
153
|
+
engine.block.setPlaceholderBehaviorEnabled(heroImage, true);
|
|
154
|
+
engine.block.setPlaceholderEnabled(heroImage, true);
|
|
155
|
+
|
|
156
|
+
if (engine.block.supportsPlaceholderControls(heroImage)) {
|
|
157
|
+
engine.block.setPlaceholderControlsOverlayEnabled(heroImage, true);
|
|
158
|
+
engine.block.setPlaceholderControlsButtonEnabled(heroImage, true);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
// Find all placeholders in the scene
|
|
163
|
+
const placeholders = engine.block.findAllPlaceholders();
|
|
164
|
+
console.log('Placeholders in scene:', placeholders.length);
|
|
165
|
+
|
|
166
|
+
// EDITING CONSTRAINTS: Add logo that cannot be moved or selected
|
|
167
|
+
const logo = await engine.block.addImage(
|
|
168
|
+
'https://img.ly/static/ubq_samples/imgly_logo.jpg',
|
|
169
|
+
{ size: { width: 100, height: 25 } }
|
|
170
|
+
);
|
|
171
|
+
engine.block.appendChild(page, logo);
|
|
172
|
+
engine.block.setPositionX(logo, 350);
|
|
173
|
+
engine.block.setPositionY(logo, 540);
|
|
174
|
+
|
|
175
|
+
// Lock the logo: prevent moving, resizing, and selection
|
|
176
|
+
engine.block.setScopeEnabled(logo, 'layer/move', false);
|
|
177
|
+
engine.block.setScopeEnabled(logo, 'layer/resize', false);
|
|
178
|
+
engine.block.setScopeEnabled(logo, 'editor/select', false);
|
|
179
|
+
|
|
180
|
+
// Verify constraints are applied
|
|
181
|
+
const canSelect = engine.block.isScopeEnabled(logo, 'editor/select');
|
|
182
|
+
const canMove = engine.block.isScopeEnabled(logo, 'layer/move');
|
|
183
|
+
console.log('Logo - canSelect:', canSelect, 'canMove:', canMove);
|
|
184
|
+
|
|
185
|
+
// Zoom to fit the page with autoFit enabled
|
|
186
|
+
await cesdk.actions.run('zoom.toBlock', page, {
|
|
187
|
+
padding: 40,
|
|
188
|
+
animate: false,
|
|
189
|
+
autoFit: true
|
|
190
|
+
});
|
|
191
|
+
|
|
192
|
+
console.log('Dynamic Content demo initialized.');
|
|
193
|
+
|
|
194
|
+
cesdk.engine.block.setSelected(page, false);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
export default Example;
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
This guide covers how to use dynamic content capabilities in CE.SDK templates. The example creates a social media card with personalized name and company variables, a replaceable hero image, and a protected logo.
|
|
202
|
+
|
|
203
|
+
## Dynamic Content Capabilities
|
|
204
|
+
|
|
205
|
+
CE.SDK offers three ways to make templates dynamic:
|
|
206
|
+
|
|
207
|
+
- **Text Variables** — Insert `{{tokens}}` in text that resolve to dynamic values at runtime
|
|
208
|
+
- **Placeholders** — Mark blocks as drop zones where users can swap images or videos
|
|
209
|
+
- **Editing Constraints** — Lock specific properties to protect brand elements while allowing controlled changes
|
|
210
|
+
|
|
211
|
+
## Text Variables
|
|
212
|
+
|
|
213
|
+
Text variables enable data-driven text personalization. Define variables using `engine.variable.setString()`, then reference them in text blocks with `{{variableName}}` tokens.
|
|
214
|
+
|
|
215
|
+
```typescript highlight-text-variables
|
|
216
|
+
engine.variable.setString('firstName', 'Jane');
|
|
217
|
+
engine.variable.setString('lastName', 'Doe');
|
|
218
|
+
engine.variable.setString('companyName', 'IMG.LY');
|
|
219
|
+
|
|
220
|
+
// Create heading with company variable
|
|
221
|
+
const headingText = engine.block.create('text');
|
|
222
|
+
engine.block.replaceText(
|
|
223
|
+
headingText,
|
|
224
|
+
'Welcome to {{companyName}}, {{firstName}} {{lastName}}.'
|
|
225
|
+
);
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
Variables are defined globally and can be referenced in any text block. The `findAll()` method returns all variable keys in the scene, useful for building dynamic editing interfaces.
|
|
229
|
+
|
|
230
|
+
> **Note:** Variable keys are case-sensitive. `{{Name}}` and `{{name}}` are different variables.
|
|
231
|
+
|
|
232
|
+
## Placeholders
|
|
233
|
+
|
|
234
|
+
Placeholders turn design blocks into drop zones for swappable media. Mark an image block as a placeholder, and users can replace its content while the surrounding design remains fixed.
|
|
235
|
+
|
|
236
|
+
```typescript highlight-placeholders
|
|
237
|
+
// Enable placeholder behavior for the hero image
|
|
238
|
+
if (engine.block.supportsPlaceholderBehavior(heroImage)) {
|
|
239
|
+
engine.block.setPlaceholderBehaviorEnabled(heroImage, true);
|
|
240
|
+
engine.block.setPlaceholderEnabled(heroImage, true);
|
|
241
|
+
|
|
242
|
+
if (engine.block.supportsPlaceholderControls(heroImage)) {
|
|
243
|
+
engine.block.setPlaceholderControlsOverlayEnabled(heroImage, true);
|
|
244
|
+
engine.block.setPlaceholderControlsButtonEnabled(heroImage, true);
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
Enable placeholder behavior with `setPlaceholderBehaviorEnabled()`, then enable user interaction with `setPlaceholderEnabled()`. The visual overlay and replace button are controlled separately via `setPlaceholderControlsOverlayEnabled()` and `setPlaceholderControlsButtonEnabled()`.
|
|
250
|
+
|
|
251
|
+
## Editing Constraints
|
|
252
|
+
|
|
253
|
+
Editing constraints protect design integrity by limiting what users can modify. Use scope-based APIs to lock specific properties while keeping others editable.
|
|
254
|
+
|
|
255
|
+
```typescript highlight-editing-constraints
|
|
256
|
+
// Lock the logo: prevent moving, resizing, and selection
|
|
257
|
+
engine.block.setScopeEnabled(logo, 'layer/move', false);
|
|
258
|
+
engine.block.setScopeEnabled(logo, 'layer/resize', false);
|
|
259
|
+
engine.block.setScopeEnabled(logo, 'editor/select', false);
|
|
260
|
+
|
|
261
|
+
// Verify constraints are applied
|
|
262
|
+
const canSelect = engine.block.isScopeEnabled(logo, 'editor/select');
|
|
263
|
+
const canMove = engine.block.isScopeEnabled(logo, 'layer/move');
|
|
264
|
+
console.log('Logo - canSelect:', canSelect, 'canMove:', canMove);
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
The `setScopeEnabled()` method controls individual properties. Setting `'editor/select'` to `false` prevents users from selecting the block entirely, making it completely non-interactive. Combined with `'layer/move'` and `'layer/resize'`, this creates a fully protected element.
|
|
268
|
+
|
|
269
|
+
## Choosing the Right Capability
|
|
270
|
+
|
|
271
|
+
| Need | Capability |
|
|
272
|
+
| ------------------------ | ------------------- |
|
|
273
|
+
| Dynamic text content | Text Variables |
|
|
274
|
+
| Swappable images/videos | Placeholders |
|
|
275
|
+
| Lock specific properties | Editing Constraints |
|
|
276
|
+
|
|
277
|
+
## API Reference
|
|
278
|
+
|
|
279
|
+
| Method | Description |
|
|
280
|
+
| ---------------------------------------------- | ---------------------------------------- |
|
|
281
|
+
| `engine.editor.setRole()` | Set user role (Creator, Adopter, Viewer) |
|
|
282
|
+
| `engine.variable.findAll()` | Get all variable keys in the scene |
|
|
283
|
+
| `engine.variable.setString()` | Create or update a text variable |
|
|
284
|
+
| `engine.variable.getString()` | Read a variable's current value |
|
|
285
|
+
| `engine.block.supportsPlaceholderBehavior()` | Check placeholder support |
|
|
286
|
+
| `engine.block.setPlaceholderBehaviorEnabled()` | Enable placeholder behavior |
|
|
287
|
+
| `engine.block.setPlaceholderEnabled()` | Enable user interaction |
|
|
288
|
+
| `engine.block.findAllPlaceholders()` | Find all placeholder blocks |
|
|
289
|
+
| `engine.block.setScopeEnabled()` | Enable or disable editing scope |
|
|
290
|
+
| `engine.block.isScopeEnabled()` | Query scope state |
|
|
291
|
+
|
|
292
|
+
---
|
|
293
|
+
|
|
294
|
+
## Related Pages
|
|
295
|
+
|
|
296
|
+
- [Text Variables](./create-templates/add-dynamic-content/text-variables.md) - Define dynamic text elements that can be populated with custom values during design generation.
|
|
297
|
+
- [Placeholders](./create-templates/add-dynamic-content/placeholders.md) - Use placeholders to mark editable image, video, or text areas within a locked template layout.
|
|
298
|
+
- [Set Editing Constraints](./create-templates/add-dynamic-content/set-editing-constraints.md) - Learn how to control editing capabilities in CE.SDK templates using the Scope system to lock positions, prevent transformations, and create guided editing experiences
|
|
299
|
+
|
|
300
|
+
---
|
|
301
|
+
|
|
302
|
+
## More Resources
|
|
303
|
+
|
|
304
|
+
- **[Vanilla JS/TS Documentation Index](https://img.ly/docs/cesdk/js.md)** - Browse all Vanilla JS/TS documentation
|
|
305
|
+
- **[Complete Documentation](./llms-full.txt.md)** - Full documentation in one file (for LLMs)
|
|
306
|
+
- **[Web Documentation](./js.md)** - Interactive documentation with examples
|
|
307
|
+
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
|
|
@@ -0,0 +1,297 @@
|
|
|
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) > [Create and Use Templates](./create-templates.md) > [Add to Template Library](./create-templates/add-to-template-library.md)
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Create a template library where users can browse, preview, and apply templates from a custom asset source.
|
|
8
|
+
|
|
9
|
+

|
|
10
|
+
|
|
11
|
+
> **Reading time:** 10 minutes
|
|
12
|
+
>
|
|
13
|
+
> **Resources:**
|
|
14
|
+
>
|
|
15
|
+
> - [Download examples](https://github.com/imgly/cesdk-web-examples/archive/refs/tags/release-$UBQ_VERSION$.zip)
|
|
16
|
+
> - [View source on GitHub](https://github.com/imgly/cesdk-web-examples/tree/release-$UBQ_VERSION$/guides-create-templates-add-to-template-library-browser)
|
|
17
|
+
> - [Open in StackBlitz](https://stackblitz.com/github/imgly/cesdk-web-examples/tree/v$UBQ_VERSION$/guides-create-templates-add-to-template-library-browser)
|
|
18
|
+
> - [Live demo](https://img.ly/docs/cesdk/examples/guides-create-templates-add-to-template-library-browser/)
|
|
19
|
+
|
|
20
|
+
Templates in CE.SDK are stored and accessed through the asset system. A template library is a local asset source configured to hold and serve template assets, allowing users to browse thumbnails and apply templates to their designs.
|
|
21
|
+
|
|
22
|
+
```typescript file=@cesdk_web_examples/guides-create-templates-add-to-template-library-browser/browser.ts reference-only
|
|
23
|
+
import type { EditorPlugin, EditorPluginContext } from '@cesdk/cesdk-js';
|
|
24
|
+
|
|
25
|
+
import { DesignEditorConfig } from './design-editor/plugin';
|
|
26
|
+
import packageJson from './package.json';
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* CE.SDK Plugin: Add to Template Library
|
|
30
|
+
*
|
|
31
|
+
* This example demonstrates how to create a template library by:
|
|
32
|
+
* 1. Creating a local asset source for templates
|
|
33
|
+
* 2. Adding templates with metadata (label, thumbnail, URI)
|
|
34
|
+
* 3. Configuring the UI to display the template library
|
|
35
|
+
* 4. Saving scenes as templates
|
|
36
|
+
*/
|
|
37
|
+
class Example implements EditorPlugin {
|
|
38
|
+
name = packageJson.name;
|
|
39
|
+
|
|
40
|
+
version = packageJson.version;
|
|
41
|
+
|
|
42
|
+
async initialize({ cesdk }: EditorPluginContext): Promise<void> {
|
|
43
|
+
if (!cesdk) {
|
|
44
|
+
throw new Error('CE.SDK instance is required for this plugin');
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
await cesdk.addPlugin(new DesignEditorConfig());
|
|
48
|
+
const engine = cesdk.engine;
|
|
49
|
+
|
|
50
|
+
// Create a local asset source for templates
|
|
51
|
+
engine.asset.addLocalSource('my-templates', undefined, async (asset) => {
|
|
52
|
+
// Apply the selected template to the current scene
|
|
53
|
+
await engine.scene.applyTemplateFromURL(asset.meta!.uri as string);
|
|
54
|
+
// Set zoom to auto-fit after applying template
|
|
55
|
+
await cesdk.actions.run('zoom.toPage', { autoFit: true });
|
|
56
|
+
return undefined;
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
// Add a template to the source with metadata
|
|
60
|
+
engine.asset.addAssetToSource('my-templates', {
|
|
61
|
+
id: 'template-postcard',
|
|
62
|
+
label: { en: 'Postcard' },
|
|
63
|
+
meta: {
|
|
64
|
+
uri: 'https://cdn.img.ly/assets/demo/v3/ly.img.template/templates/cesdk_postcard_1.scene',
|
|
65
|
+
thumbUri:
|
|
66
|
+
'https://cdn.img.ly/assets/demo/v3/ly.img.template/thumbnails/cesdk_postcard_1.jpg'
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
// Add more templates
|
|
71
|
+
engine.asset.addAssetToSource('my-templates', {
|
|
72
|
+
id: 'template-business-card',
|
|
73
|
+
label: { en: 'Business Card' },
|
|
74
|
+
meta: {
|
|
75
|
+
uri: 'https://cdn.img.ly/assets/demo/v3/ly.img.template/templates/cesdk_business_card_1.scene',
|
|
76
|
+
thumbUri:
|
|
77
|
+
'https://cdn.img.ly/assets/demo/v3/ly.img.template/thumbnails/cesdk_business_card_1.jpg'
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
engine.asset.addAssetToSource('my-templates', {
|
|
82
|
+
id: 'template-social-media',
|
|
83
|
+
label: { en: 'Social Media Post' },
|
|
84
|
+
meta: {
|
|
85
|
+
uri: 'https://cdn.img.ly/assets/demo/v3/ly.img.template/templates/cesdk_instagram_post_1.scene',
|
|
86
|
+
thumbUri:
|
|
87
|
+
'https://cdn.img.ly/assets/demo/v3/ly.img.template/thumbnails/cesdk_instagram_post_1.jpg'
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
// Add translation for the library entry
|
|
92
|
+
cesdk.i18n.setTranslations({
|
|
93
|
+
en: { 'libraries.my-templates-entry.label': 'My Templates' }
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
// Add the template source to the asset library
|
|
97
|
+
cesdk.ui.addAssetLibraryEntry({
|
|
98
|
+
id: 'my-templates-entry',
|
|
99
|
+
sourceIds: ['my-templates'],
|
|
100
|
+
previewLength: 3,
|
|
101
|
+
previewBackgroundType: 'cover',
|
|
102
|
+
gridBackgroundType: 'cover',
|
|
103
|
+
gridColumns: 2,
|
|
104
|
+
cardLabelPosition: () => 'below'
|
|
105
|
+
});
|
|
106
|
+
|
|
107
|
+
// Add template library to the dock
|
|
108
|
+
cesdk.ui.setComponentOrder({ in: 'ly.img.dock' }, [
|
|
109
|
+
...cesdk.ui.getComponentOrder({ in: 'ly.img.dock' }),
|
|
110
|
+
'ly.img.spacer',
|
|
111
|
+
{
|
|
112
|
+
id: 'ly.img.assetLibrary.dock',
|
|
113
|
+
key: 'my-templates-dock',
|
|
114
|
+
label: 'My Templates',
|
|
115
|
+
icon: '@imgly/Template',
|
|
116
|
+
entries: ['my-templates-entry']
|
|
117
|
+
}
|
|
118
|
+
]);
|
|
119
|
+
|
|
120
|
+
// Load the first template
|
|
121
|
+
await engine.scene.loadFromURL(
|
|
122
|
+
'https://cdn.img.ly/assets/demo/v3/ly.img.template/templates/cesdk_postcard_1.scene'
|
|
123
|
+
);
|
|
124
|
+
|
|
125
|
+
// Set zoom to auto-fit
|
|
126
|
+
await cesdk.actions.run('zoom.toPage', { autoFit: true });
|
|
127
|
+
|
|
128
|
+
// Open the template library panel by default
|
|
129
|
+
cesdk.ui.openPanel('//ly.img.panel/assetLibrary', {
|
|
130
|
+
payload: { entries: ['my-templates-entry'] }
|
|
131
|
+
});
|
|
132
|
+
|
|
133
|
+
// Save as string format (lightweight, references remote assets)
|
|
134
|
+
const templateString = await engine.scene.saveToString();
|
|
135
|
+
console.log('Template saved as string. Length:', templateString.length);
|
|
136
|
+
|
|
137
|
+
// Save as archive format (self-contained with bundled assets)
|
|
138
|
+
const templateBlob = await engine.scene.saveToArchive();
|
|
139
|
+
console.log('Template saved as archive. Size:', templateBlob.size, 'bytes');
|
|
140
|
+
|
|
141
|
+
// List all registered asset sources
|
|
142
|
+
const sources = engine.asset.findAllSources();
|
|
143
|
+
console.log('Registered sources:', sources);
|
|
144
|
+
|
|
145
|
+
// Notify UI when source contents change
|
|
146
|
+
engine.asset.assetSourceContentsChanged('my-templates');
|
|
147
|
+
|
|
148
|
+
// Query templates from the source
|
|
149
|
+
const queryResult = await engine.asset.findAssets('my-templates', {
|
|
150
|
+
page: 0,
|
|
151
|
+
perPage: 10
|
|
152
|
+
});
|
|
153
|
+
console.log('Templates in library:', queryResult.total);
|
|
154
|
+
|
|
155
|
+
// Remove a template from the source
|
|
156
|
+
engine.asset.removeAssetFromSource('my-templates', 'template-social-media');
|
|
157
|
+
console.log('Removed template-social-media from library');
|
|
158
|
+
|
|
159
|
+
cesdk.ui.insertOrderComponent(
|
|
160
|
+
{ in: 'ly.img.navigation.bar', position: 'end' },
|
|
161
|
+
{
|
|
162
|
+
id: 'ly.img.actions.navigationBar',
|
|
163
|
+
children: [
|
|
164
|
+
'ly.img.saveScene.navigationBar',
|
|
165
|
+
'ly.img.exportArchive.navigationBar'
|
|
166
|
+
]
|
|
167
|
+
}
|
|
168
|
+
);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
export default Example;
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
This guide covers how to save scenes as templates, create a template asset source, and add templates with metadata.
|
|
176
|
+
|
|
177
|
+
## Saving Templates
|
|
178
|
+
|
|
179
|
+
Scenes can be exported in two formats for use as templates.
|
|
180
|
+
|
|
181
|
+
### String Format
|
|
182
|
+
|
|
183
|
+
Use `engine.scene.saveToString()` to serialize the scene to a base64 string. This lightweight format references remote assets by URL and is ideal for templates where assets are hosted on a CDN.
|
|
184
|
+
|
|
185
|
+
```typescript highlight=highlight-save-string
|
|
186
|
+
// Save as string format (lightweight, references remote assets)
|
|
187
|
+
const templateString = await engine.scene.saveToString();
|
|
188
|
+
console.log('Template saved as string. Length:', templateString.length);
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
### Archive Format
|
|
192
|
+
|
|
193
|
+
For self-contained templates that bundle all assets, use `engine.scene.saveToArchive()`. This returns a Blob containing all assets bundled together, making templates portable without external dependencies.
|
|
194
|
+
|
|
195
|
+
```typescript highlight=highlight-save-archive
|
|
196
|
+
// Save as archive format (self-contained with bundled assets)
|
|
197
|
+
const templateBlob = await engine.scene.saveToArchive();
|
|
198
|
+
console.log('Template saved as archive. Size:', templateBlob.size, 'bytes');
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
## Creating a Template Asset Source
|
|
202
|
+
|
|
203
|
+
Register a local asset source using `engine.asset.addLocalSource()` with an ID and `applyAsset` callback.
|
|
204
|
+
|
|
205
|
+
```typescript highlight=highlight-create-source
|
|
206
|
+
// Create a local asset source for templates
|
|
207
|
+
engine.asset.addLocalSource('my-templates', undefined, async (asset) => {
|
|
208
|
+
// Apply the selected template to the current scene
|
|
209
|
+
await engine.scene.applyTemplateFromURL(asset.meta!.uri as string);
|
|
210
|
+
// Set zoom to auto-fit after applying template
|
|
211
|
+
await cesdk.actions.run('zoom.toPage', { autoFit: true });
|
|
212
|
+
return undefined;
|
|
213
|
+
});
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
The `applyAsset` callback receives the selected asset and determines how to apply it. We use `engine.scene.applyTemplateFromURL()` to load the template from the asset's `meta.uri` property. The template is applied to the current scene, adjusting content to fit the existing page dimensions.
|
|
217
|
+
|
|
218
|
+
## Adding Templates to the Source
|
|
219
|
+
|
|
220
|
+
Register templates using `engine.asset.addAssetToSource()` with an asset definition that includes metadata for display and loading.
|
|
221
|
+
|
|
222
|
+
```typescript highlight=highlight-add-templates
|
|
223
|
+
// Add a template to the source with metadata
|
|
224
|
+
engine.asset.addAssetToSource('my-templates', {
|
|
225
|
+
id: 'template-postcard',
|
|
226
|
+
label: { en: 'Postcard' },
|
|
227
|
+
meta: {
|
|
228
|
+
uri: 'https://cdn.img.ly/assets/demo/v3/ly.img.template/templates/cesdk_postcard_1.scene',
|
|
229
|
+
thumbUri:
|
|
230
|
+
'https://cdn.img.ly/assets/demo/v3/ly.img.template/thumbnails/cesdk_postcard_1.jpg'
|
|
231
|
+
}
|
|
232
|
+
});
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
Each template asset requires:
|
|
236
|
+
|
|
237
|
+
- `id` - Unique identifier for the template
|
|
238
|
+
- `label` - Localized display name shown in the template library
|
|
239
|
+
- `meta.uri` - URL to the `.scene` file that will be loaded when the template is selected
|
|
240
|
+
- `meta.thumbUri` - URL to a preview image displayed in the template library grid
|
|
241
|
+
|
|
242
|
+
## Managing Templates
|
|
243
|
+
|
|
244
|
+
After the initial setup, you can manage templates programmatically.
|
|
245
|
+
|
|
246
|
+
```typescript highlight=highlight-manage-templates
|
|
247
|
+
// List all registered asset sources
|
|
248
|
+
const sources = engine.asset.findAllSources();
|
|
249
|
+
console.log('Registered sources:', sources);
|
|
250
|
+
|
|
251
|
+
// Notify UI when source contents change
|
|
252
|
+
engine.asset.assetSourceContentsChanged('my-templates');
|
|
253
|
+
|
|
254
|
+
// Query templates from the source
|
|
255
|
+
const queryResult = await engine.asset.findAssets('my-templates', {
|
|
256
|
+
page: 0,
|
|
257
|
+
perPage: 10
|
|
258
|
+
});
|
|
259
|
+
console.log('Templates in library:', queryResult.total);
|
|
260
|
+
|
|
261
|
+
// Remove a template from the source
|
|
262
|
+
engine.asset.removeAssetFromSource('my-templates', 'template-social-media');
|
|
263
|
+
console.log('Removed template-social-media from library');
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
Use `engine.asset.findAllSources()` to list registered sources. When you add or remove templates from a source, call `engine.asset.assetSourceContentsChanged()` to refresh the UI. To remove a template, use `engine.asset.removeAssetFromSource()`.
|
|
267
|
+
|
|
268
|
+
## Troubleshooting
|
|
269
|
+
|
|
270
|
+
| Issue | Cause | Solution |
|
|
271
|
+
| ----------------------------- | -------------------------------------------- | -------------------------------------------------- |
|
|
272
|
+
| Templates not appearing in UI | Asset source not added to library entry | Ensure `sourceIds` includes the template source ID |
|
|
273
|
+
| Template fails to load | Incorrect URI in asset meta | Verify the `uri` points to a valid `.scene` file |
|
|
274
|
+
| Thumbnails not displaying | Missing or incorrect `thumbUri` | Check the thumbnail URL is accessible |
|
|
275
|
+
| Apply callback not triggered | `applyAsset` not defined in `addLocalSource` | Provide the callback when creating the source |
|
|
276
|
+
|
|
277
|
+
## API Reference
|
|
278
|
+
|
|
279
|
+
| Method | Description |
|
|
280
|
+
| ------------------------------------------- | ---------------------------------------------------- |
|
|
281
|
+
| `engine.asset.addLocalSource()` | Register a local asset source with an apply callback |
|
|
282
|
+
| `engine.asset.addAssetToSource()` | Add an asset to a registered source |
|
|
283
|
+
| `engine.asset.removeAssetFromSource()` | Remove an asset from a source by ID |
|
|
284
|
+
| `engine.asset.assetSourceContentsChanged()` | Notify UI that source contents changed |
|
|
285
|
+
| `engine.scene.saveToString()` | Serialize scene to base64 string format |
|
|
286
|
+
| `engine.scene.saveToArchive()` | Save scene as self-contained archive blob |
|
|
287
|
+
| `engine.scene.applyTemplateFromURL()` | Apply a template to the current scene |
|
|
288
|
+
| `cesdk.ui.addAssetLibraryEntry()` | Add a library entry to the asset library |
|
|
289
|
+
|
|
290
|
+
---
|
|
291
|
+
|
|
292
|
+
## More Resources
|
|
293
|
+
|
|
294
|
+
- **[Vanilla JS/TS Documentation Index](https://img.ly/docs/cesdk/js.md)** - Browse all Vanilla JS/TS documentation
|
|
295
|
+
- **[Complete Documentation](./llms-full.txt.md)** - Full documentation in one file (for LLMs)
|
|
296
|
+
- **[Web Documentation](./js.md)** - Interactive documentation with examples
|
|
297
|
+
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
|