@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,647 @@
|
|
|
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) > [Text Variables](./create-templates/add-dynamic-content/text-variables.md)
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Text variables enable data-driven template personalization in CE.SDK. Insert
|
|
8
|
+
placeholder tokens like `{{ firstName }}` into text blocks, then populate them
|
|
9
|
+
with actual values programmatically. This separates design from content,
|
|
10
|
+
enabling automated document generation, batch processing, and mass
|
|
11
|
+
personalization workflows.
|
|
12
|
+
|
|
13
|
+

|
|
14
|
+
|
|
15
|
+
> **Reading time:** 10 minutes
|
|
16
|
+
>
|
|
17
|
+
> **Resources:**
|
|
18
|
+
>
|
|
19
|
+
> - [Download examples](https://github.com/imgly/cesdk-web-examples/archive/refs/tags/release-$UBQ_VERSION$.zip)
|
|
20
|
+
> - [View source on GitHub](https://github.com/imgly/cesdk-web-examples/tree/release-$UBQ_VERSION$/guides-create-templates-dynamic-content-text-variables-browser)
|
|
21
|
+
> - [Open in StackBlitz](https://stackblitz.com/github/imgly/cesdk-web-examples/tree/v$UBQ_VERSION$/guides-create-templates-dynamic-content-text-variables-browser)
|
|
22
|
+
> - [Live demo](https://img.ly/docs/cesdk/examples/guides-create-templates-dynamic-content-text-variables-browser/)
|
|
23
|
+
|
|
24
|
+
```typescript file=@cesdk_web_examples/guides-create-templates-dynamic-content-text-variables-browser/browser.ts reference-only
|
|
25
|
+
import type { EditorPlugin, EditorPluginContext } from '@cesdk/cesdk-js';
|
|
26
|
+
|
|
27
|
+
import {
|
|
28
|
+
BlurAssetSource,
|
|
29
|
+
ColorPaletteAssetSource,
|
|
30
|
+
CropPresetsAssetSource,
|
|
31
|
+
DemoAssetSources,
|
|
32
|
+
EffectsAssetSource,
|
|
33
|
+
FiltersAssetSource,
|
|
34
|
+
PagePresetsAssetSource,
|
|
35
|
+
StickerAssetSource,
|
|
36
|
+
TextAssetSource,
|
|
37
|
+
TextComponentAssetSource,
|
|
38
|
+
TypefaceAssetSource,
|
|
39
|
+
UploadAssetSources,
|
|
40
|
+
VectorShapeAssetSource
|
|
41
|
+
} from '@cesdk/cesdk-js/plugins';
|
|
42
|
+
import { DesignEditorConfig } from './design-editor/plugin';
|
|
43
|
+
import packageJson from './package.json';
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* CE.SDK Plugin: Text Variables Guide
|
|
47
|
+
*
|
|
48
|
+
* Demonstrates text variable management in CE.SDK with a single comprehensive example:
|
|
49
|
+
* - Discovering variables with findAll()
|
|
50
|
+
* - Creating and updating variables with setString()
|
|
51
|
+
* - Reading variable values with getString()
|
|
52
|
+
* - Binding variables to text blocks with {{variable}} tokens
|
|
53
|
+
* - Detecting variable references with referencesAnyVariables()
|
|
54
|
+
* - Removing variables with remove()
|
|
55
|
+
* - Localizing variable labels
|
|
56
|
+
*/
|
|
57
|
+
class Example implements EditorPlugin {
|
|
58
|
+
name = packageJson.name;
|
|
59
|
+
|
|
60
|
+
version = packageJson.version;
|
|
61
|
+
|
|
62
|
+
async initialize({ cesdk }: EditorPluginContext): Promise<void> {
|
|
63
|
+
if (!cesdk) {
|
|
64
|
+
throw new Error('CE.SDK instance is required for this plugin');
|
|
65
|
+
}
|
|
66
|
+
await cesdk.addPlugin(new DesignEditorConfig());
|
|
67
|
+
|
|
68
|
+
// Add asset source plugins
|
|
69
|
+
await cesdk.addPlugin(new BlurAssetSource());
|
|
70
|
+
await cesdk.addPlugin(new ColorPaletteAssetSource());
|
|
71
|
+
await cesdk.addPlugin(new CropPresetsAssetSource());
|
|
72
|
+
await cesdk.addPlugin(
|
|
73
|
+
new UploadAssetSources({ include: ['ly.img.image.upload'] })
|
|
74
|
+
);
|
|
75
|
+
await cesdk.addPlugin(
|
|
76
|
+
new DemoAssetSources({
|
|
77
|
+
include: [
|
|
78
|
+
'ly.img.templates.blank.*',
|
|
79
|
+
'ly.img.templates.presentation.*',
|
|
80
|
+
'ly.img.templates.print.*',
|
|
81
|
+
'ly.img.templates.social.*',
|
|
82
|
+
'ly.img.image.*'
|
|
83
|
+
]
|
|
84
|
+
})
|
|
85
|
+
);
|
|
86
|
+
await cesdk.addPlugin(new EffectsAssetSource());
|
|
87
|
+
await cesdk.addPlugin(new FiltersAssetSource());
|
|
88
|
+
await cesdk.addPlugin(new PagePresetsAssetSource());
|
|
89
|
+
await cesdk.addPlugin(new StickerAssetSource());
|
|
90
|
+
await cesdk.addPlugin(new TextAssetSource());
|
|
91
|
+
await cesdk.addPlugin(new TextComponentAssetSource());
|
|
92
|
+
await cesdk.addPlugin(new TypefaceAssetSource());
|
|
93
|
+
await cesdk.addPlugin(new VectorShapeAssetSource());
|
|
94
|
+
|
|
95
|
+
await cesdk.actions.run('scene.create', {
|
|
96
|
+
page: { width: 800, height: 600, unit: 'Pixel' }
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
const engine = cesdk.engine;
|
|
100
|
+
const page = engine.block.findByType('page')[0];
|
|
101
|
+
|
|
102
|
+
const pageWidth = engine.block.getWidth(page);
|
|
103
|
+
const pageHeight = engine.block.getHeight(page);
|
|
104
|
+
|
|
105
|
+
// Localize variable labels that appear in the Variables panel UI
|
|
106
|
+
cesdk.i18n.setTranslations({
|
|
107
|
+
en: {
|
|
108
|
+
'variables.firstName.label': 'First Name',
|
|
109
|
+
'variables.lastName.label': 'Last Name',
|
|
110
|
+
'variables.email.label': 'Email Address',
|
|
111
|
+
'variables.company.label': 'Company Name',
|
|
112
|
+
'variables.title.label': 'Job Title'
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
|
|
116
|
+
// Pattern 1: Discover all existing variables in the scene
|
|
117
|
+
// This is useful when loading templates to see what variables need values
|
|
118
|
+
const existingVariables = engine.variable.findAll();
|
|
119
|
+
// eslint-disable-next-line no-console
|
|
120
|
+
console.log('Existing variables:', existingVariables); // []
|
|
121
|
+
|
|
122
|
+
// Pattern 2: Create and update text variables
|
|
123
|
+
// If a variable doesn't exist, setString() creates it
|
|
124
|
+
// If it already exists, setString() updates its value
|
|
125
|
+
engine.variable.setString('firstName', 'Alex');
|
|
126
|
+
engine.variable.setString('lastName', 'Smith');
|
|
127
|
+
engine.variable.setString('email', 'alex.smith@example.com');
|
|
128
|
+
engine.variable.setString('company', 'IMG.LY');
|
|
129
|
+
engine.variable.setString('title', 'Creative Developer');
|
|
130
|
+
|
|
131
|
+
// Pattern 3: Read variable values at runtime
|
|
132
|
+
const firstName = engine.variable.getString('firstName');
|
|
133
|
+
// eslint-disable-next-line no-console
|
|
134
|
+
console.log('First name variable:', firstName); // 'Alex'
|
|
135
|
+
|
|
136
|
+
// Create a single comprehensive text block demonstrating all variable patterns
|
|
137
|
+
const textBlock = engine.block.create('text');
|
|
138
|
+
|
|
139
|
+
// Multi-line text combining:
|
|
140
|
+
// - Single variable ({{firstName}})
|
|
141
|
+
// - Multiple variables ({{firstName}} {{lastName}})
|
|
142
|
+
// - Variables in context (Email: {{email}})
|
|
143
|
+
const textContent = `Hello, {{firstName}}!
|
|
144
|
+
|
|
145
|
+
Full Name: {{firstName}} {{lastName}}
|
|
146
|
+
Email: {{email}}
|
|
147
|
+
Position: {{title}}
|
|
148
|
+
Company: {{company}}`;
|
|
149
|
+
|
|
150
|
+
engine.block.replaceText(textBlock, textContent);
|
|
151
|
+
engine.block.setWidthMode(textBlock, 'Auto');
|
|
152
|
+
engine.block.setHeightMode(textBlock, 'Auto');
|
|
153
|
+
engine.block.setFloat(textBlock, 'text/fontSize', 52);
|
|
154
|
+
engine.block.appendChild(page, textBlock);
|
|
155
|
+
|
|
156
|
+
// Center the text block on the page (after font size is set)
|
|
157
|
+
// Get the actual frame dimensions of the block (including its bounds)
|
|
158
|
+
const frameX = engine.block.getFrameX(textBlock);
|
|
159
|
+
const frameY = engine.block.getFrameY(textBlock);
|
|
160
|
+
const frameWidth = engine.block.getFrameWidth(textBlock);
|
|
161
|
+
const frameHeight = engine.block.getFrameHeight(textBlock);
|
|
162
|
+
|
|
163
|
+
// Calculate centered position accounting for frame offset
|
|
164
|
+
engine.block.setPositionX(textBlock, (pageWidth - frameWidth) / 2 - frameX);
|
|
165
|
+
engine.block.setPositionY(
|
|
166
|
+
textBlock,
|
|
167
|
+
(pageHeight - frameHeight) / 2 - frameY
|
|
168
|
+
);
|
|
169
|
+
|
|
170
|
+
// Check if the block contains variable references
|
|
171
|
+
const hasVariables = engine.block.referencesAnyVariables(textBlock);
|
|
172
|
+
// eslint-disable-next-line no-console
|
|
173
|
+
console.log('Text block has variables:', hasVariables); // true
|
|
174
|
+
|
|
175
|
+
// Create and then remove a temporary variable to demonstrate removal
|
|
176
|
+
engine.variable.setString('tempVariable', 'Temporary Value');
|
|
177
|
+
// eslint-disable-next-line no-console
|
|
178
|
+
console.log('Variables before removal:', engine.variable.findAll());
|
|
179
|
+
|
|
180
|
+
// Remove the temporary variable
|
|
181
|
+
engine.variable.remove('tempVariable');
|
|
182
|
+
// eslint-disable-next-line no-console
|
|
183
|
+
console.log('Variables after removal:', engine.variable.findAll());
|
|
184
|
+
|
|
185
|
+
// Select the text block to show the Variables panel
|
|
186
|
+
engine.block.setSelected(textBlock, true);
|
|
187
|
+
|
|
188
|
+
// Final check: List all variables in the scene
|
|
189
|
+
const finalVariables = engine.variable.findAll();
|
|
190
|
+
// eslint-disable-next-line no-console
|
|
191
|
+
console.log('Final variables in scene:', finalVariables);
|
|
192
|
+
// Expected: ['firstName', 'lastName', 'email', 'company', 'title']
|
|
193
|
+
|
|
194
|
+
// Build a custom Variables Manager panel
|
|
195
|
+
// CE.SDK doesn't include a built-in UI for creating/managing variables,
|
|
196
|
+
// so you can build one using the Panel Builder API
|
|
197
|
+
cesdk.ui.registerPanel(
|
|
198
|
+
'ly.img.variablesManager',
|
|
199
|
+
({ builder, engine: panelEngine, state }) => {
|
|
200
|
+
const { Section, TextInput, Button } = builder;
|
|
201
|
+
|
|
202
|
+
// State for creating new variables
|
|
203
|
+
const newVariableName = state('newVariableName', '');
|
|
204
|
+
const newVariableValue = state('newVariableValue', '');
|
|
205
|
+
|
|
206
|
+
// Section: Create New Variable
|
|
207
|
+
Section('create-variable', {
|
|
208
|
+
title: 'Create New Variable',
|
|
209
|
+
children: () => {
|
|
210
|
+
TextInput('new-name', {
|
|
211
|
+
inputLabel: 'Variable Name',
|
|
212
|
+
...newVariableName
|
|
213
|
+
});
|
|
214
|
+
|
|
215
|
+
TextInput('new-value', {
|
|
216
|
+
inputLabel: 'Default Value',
|
|
217
|
+
...newVariableValue
|
|
218
|
+
});
|
|
219
|
+
|
|
220
|
+
Button('create-btn', {
|
|
221
|
+
label: 'Create Variable',
|
|
222
|
+
color: 'accent',
|
|
223
|
+
isDisabled: !newVariableName.value.trim(),
|
|
224
|
+
onClick: () => {
|
|
225
|
+
const name = newVariableName.value.trim();
|
|
226
|
+
if (name) {
|
|
227
|
+
panelEngine.variable.setString(name, newVariableValue.value);
|
|
228
|
+
newVariableName.setValue('');
|
|
229
|
+
newVariableValue.setValue('');
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
});
|
|
235
|
+
|
|
236
|
+
// Section: Existing Variables
|
|
237
|
+
const variables = panelEngine.variable.findAll();
|
|
238
|
+
Section('existing-variables', {
|
|
239
|
+
title: `Manage Variables (${variables.length})`,
|
|
240
|
+
children: () => {
|
|
241
|
+
if (variables.length === 0) {
|
|
242
|
+
builder.Text('no-vars', { content: 'No variables defined yet.' });
|
|
243
|
+
return;
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
variables.forEach((varName) => {
|
|
247
|
+
TextInput(`var-${varName}`, {
|
|
248
|
+
inputLabel: varName,
|
|
249
|
+
value: panelEngine.variable.getString(varName),
|
|
250
|
+
setValue: (value) => {
|
|
251
|
+
panelEngine.variable.setString(varName, value);
|
|
252
|
+
},
|
|
253
|
+
suffix: {
|
|
254
|
+
icon: '@imgly/TrashBin',
|
|
255
|
+
tooltip: 'Delete variable',
|
|
256
|
+
onClick: () => {
|
|
257
|
+
panelEngine.variable.remove(varName);
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
});
|
|
261
|
+
});
|
|
262
|
+
}
|
|
263
|
+
});
|
|
264
|
+
}
|
|
265
|
+
);
|
|
266
|
+
|
|
267
|
+
// Set the panel title
|
|
268
|
+
cesdk.i18n.setTranslations({
|
|
269
|
+
en: {
|
|
270
|
+
'panel.ly.img.variablesManager': 'Custom Variables Panel'
|
|
271
|
+
}
|
|
272
|
+
});
|
|
273
|
+
|
|
274
|
+
// Add a dock button to open the panel
|
|
275
|
+
cesdk.ui.registerComponent('variablesManager.dock', ({ builder: b }) => {
|
|
276
|
+
const isPanelOpen = cesdk.ui.isPanelOpen('ly.img.variablesManager');
|
|
277
|
+
b.Button('variables-dock-btn', {
|
|
278
|
+
label: 'Variables',
|
|
279
|
+
icon: '@imgly/Text',
|
|
280
|
+
onClick: () => {
|
|
281
|
+
if (isPanelOpen) {
|
|
282
|
+
cesdk.ui.closePanel('ly.img.variablesManager');
|
|
283
|
+
} else {
|
|
284
|
+
cesdk.ui.openPanel('ly.img.variablesManager');
|
|
285
|
+
}
|
|
286
|
+
},
|
|
287
|
+
isActive: isPanelOpen
|
|
288
|
+
});
|
|
289
|
+
});
|
|
290
|
+
|
|
291
|
+
// Add button to dock
|
|
292
|
+
cesdk.ui.setComponentOrder({ in: 'ly.img.dock' }, [
|
|
293
|
+
...cesdk.ui.getComponentOrder({ in: 'ly.img.dock' }),
|
|
294
|
+
'ly.img.spacer',
|
|
295
|
+
'variablesManager.dock'
|
|
296
|
+
]);
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
export default Example;
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
This guide covers how to discover, create, update, and manage text variables both through the UI and programmatically using the Variables API.
|
|
304
|
+
|
|
305
|
+
## Introduction
|
|
306
|
+
|
|
307
|
+
Text variables allow you to design templates once and personalize them with different content for each use. At render time, CE.SDK replaces variable tokens with actual values provided through the Variables API. This approach is ideal for:
|
|
308
|
+
|
|
309
|
+
- **Automated document generation** - Certificates, invoices, reports
|
|
310
|
+
- **Mass personalization** - Marketing materials with recipient data
|
|
311
|
+
- **Data-driven design** - Templates populated from JSON, CSV, or APIs
|
|
312
|
+
- **Form-based editing** - Expose variables through custom interfaces
|
|
313
|
+
|
|
314
|
+
## Using the Built-in Insert Variable UI
|
|
315
|
+
|
|
316
|
+
CE.SDK includes an _Insert Variable_ dropdown in the text editing canvas menu that allows template authors to insert variable tokens into text blocks.
|
|
317
|
+
|
|
318
|
+
> **Caution:** The Insert Variable dropdown **only appears when at least one variable is
|
|
319
|
+
> already defined** in the scene. If no variables exist, the dropdown will not
|
|
320
|
+
> be visible. You must first create variables programmatically using
|
|
321
|
+
> `engine.variable.setString()` before the UI becomes available.
|
|
322
|
+
|
|
323
|
+
To use the Insert Variable UI:
|
|
324
|
+
|
|
325
|
+
1. **Define variables** using `engine.variable.setString()` — the dropdown won't appear without this step
|
|
326
|
+
2. **Enter text edit mode** by double-clicking a text block
|
|
327
|
+
3. **Click the Insert Variable dropdown** in the canvas menu (or press `Ctrl+Shift+L` / `Cmd+Shift+L`)
|
|
328
|
+
|
|
329
|
+
The dropdown allows you to:
|
|
330
|
+
|
|
331
|
+
- **Insert tokens** into text blocks using `{{variableName}}` syntax
|
|
332
|
+
- **Select from all defined variables** in the current scene
|
|
333
|
+
|
|
334
|
+
Variables appear with localized labels when you configure translations through the i18n API.
|
|
335
|
+
|
|
336
|
+
> **Note:** CE.SDK does not include a built-in UI for end users to _create_ or _manage_
|
|
337
|
+
> variables — the Insert Variable dropdown only lets users insert existing
|
|
338
|
+
> variables into text. If you need a UI for creating and editing variables, see
|
|
339
|
+
> [Building a Variables Manager Panel](#building-a-variables-manager-panel)
|
|
340
|
+
> below.
|
|
341
|
+
|
|
342
|
+
## Discovering Variables
|
|
343
|
+
|
|
344
|
+
When working with templates that already contain variables, discover what variables exist before populating them with values.
|
|
345
|
+
|
|
346
|
+
```typescript highlight-discover-variables
|
|
347
|
+
// Pattern 1: Discover all existing variables in the scene
|
|
348
|
+
// This is useful when loading templates to see what variables need values
|
|
349
|
+
const existingVariables = engine.variable.findAll();
|
|
350
|
+
// eslint-disable-next-line no-console
|
|
351
|
+
console.log('Existing variables:', existingVariables); // []
|
|
352
|
+
```
|
|
353
|
+
|
|
354
|
+
The `findAll()` method returns an array of all variable keys defined in the scene. This is essential when loading templates to understand what data needs to be provided.
|
|
355
|
+
|
|
356
|
+
## Creating and Updating Variables
|
|
357
|
+
|
|
358
|
+
Create or update variables using `setString()`. If the variable doesn't exist, it will be created. If it already exists, its value will be updated.
|
|
359
|
+
|
|
360
|
+
```typescript highlight-create-update-variables
|
|
361
|
+
// Pattern 2: Create and update text variables
|
|
362
|
+
// If a variable doesn't exist, setString() creates it
|
|
363
|
+
// If it already exists, setString() updates its value
|
|
364
|
+
engine.variable.setString('firstName', 'Alex');
|
|
365
|
+
engine.variable.setString('lastName', 'Smith');
|
|
366
|
+
engine.variable.setString('email', 'alex.smith@example.com');
|
|
367
|
+
engine.variable.setString('company', 'IMG.LY');
|
|
368
|
+
engine.variable.setString('title', 'Creative Developer');
|
|
369
|
+
```
|
|
370
|
+
|
|
371
|
+
> **Note:** Variable keys are case-sensitive. `{{ Name }}` and `{{ name }}` are different
|
|
372
|
+
> variables.
|
|
373
|
+
|
|
374
|
+
## Reading Variable Values
|
|
375
|
+
|
|
376
|
+
Retrieve the current value of a variable at runtime using `getString()`. This is useful for validation or displaying current values in custom UI.
|
|
377
|
+
|
|
378
|
+
```typescript highlight-read-variable-value
|
|
379
|
+
// Pattern 3: Read variable values at runtime
|
|
380
|
+
const firstName = engine.variable.getString('firstName');
|
|
381
|
+
// eslint-disable-next-line no-console
|
|
382
|
+
console.log('First name variable:', firstName); // 'Alex'
|
|
383
|
+
```
|
|
384
|
+
|
|
385
|
+
## Binding Variables to Text Blocks
|
|
386
|
+
|
|
387
|
+
Insert variable tokens directly into text block content using the `{{variableName}}` syntax. CE.SDK automatically detects and resolves these tokens at render time.
|
|
388
|
+
|
|
389
|
+
### Single Variable
|
|
390
|
+
|
|
391
|
+
```typescript highlight-single-variable-binding
|
|
392
|
+
// Create a single comprehensive text block demonstrating all variable patterns
|
|
393
|
+
const textBlock = engine.block.create('text');
|
|
394
|
+
|
|
395
|
+
// Multi-line text combining:
|
|
396
|
+
// - Single variable ({{firstName}})
|
|
397
|
+
// - Multiple variables ({{firstName}} {{lastName}})
|
|
398
|
+
// - Variables in context (Email: {{email}})
|
|
399
|
+
const textContent = `Hello, {{firstName}}!
|
|
400
|
+
|
|
401
|
+
Full Name: {{firstName}} {{lastName}}
|
|
402
|
+
Email: {{email}}
|
|
403
|
+
Position: {{title}}
|
|
404
|
+
Company: {{company}}`;
|
|
405
|
+
|
|
406
|
+
engine.block.replaceText(textBlock, textContent);
|
|
407
|
+
engine.block.setWidthMode(textBlock, 'Auto');
|
|
408
|
+
engine.block.setHeightMode(textBlock, 'Auto');
|
|
409
|
+
engine.block.setFloat(textBlock, 'text/fontSize', 52);
|
|
410
|
+
engine.block.appendChild(page, textBlock);
|
|
411
|
+
```
|
|
412
|
+
|
|
413
|
+
### Multiple Variables
|
|
414
|
+
|
|
415
|
+
Combine multiple variables in a single text block:
|
|
416
|
+
|
|
417
|
+
```typescript highlight-multiple-variable-binding
|
|
418
|
+
// Create a single comprehensive text block demonstrating all variable patterns
|
|
419
|
+
const textBlock = engine.block.create('text');
|
|
420
|
+
|
|
421
|
+
// Multi-line text combining:
|
|
422
|
+
// - Single variable ({{firstName}})
|
|
423
|
+
// - Multiple variables ({{firstName}} {{lastName}})
|
|
424
|
+
// - Variables in context (Email: {{email}})
|
|
425
|
+
const textContent = `Hello, {{firstName}}!
|
|
426
|
+
|
|
427
|
+
Full Name: {{firstName}} {{lastName}}
|
|
428
|
+
Email: {{email}}
|
|
429
|
+
Position: {{title}}
|
|
430
|
+
Company: {{company}}`;
|
|
431
|
+
|
|
432
|
+
engine.block.replaceText(textBlock, textContent);
|
|
433
|
+
engine.block.setWidthMode(textBlock, 'Auto');
|
|
434
|
+
engine.block.setHeightMode(textBlock, 'Auto');
|
|
435
|
+
engine.block.setFloat(textBlock, 'text/fontSize', 52);
|
|
436
|
+
engine.block.appendChild(page, textBlock);
|
|
437
|
+
```
|
|
438
|
+
|
|
439
|
+
The variables resolve in place, maintaining the surrounding text and formatting.
|
|
440
|
+
|
|
441
|
+
## Detecting Variable References
|
|
442
|
+
|
|
443
|
+
Check if a block contains variable references using `referencesAnyVariables()`. This returns `true` if the block's text contains any `{{variable}}` tokens.
|
|
444
|
+
|
|
445
|
+
```typescript highlight-detect-variable-references
|
|
446
|
+
// Check if the block contains variable references
|
|
447
|
+
const hasVariables = engine.block.referencesAnyVariables(textBlock);
|
|
448
|
+
// eslint-disable-next-line no-console
|
|
449
|
+
console.log('Text block has variables:', hasVariables); // true
|
|
450
|
+
```
|
|
451
|
+
|
|
452
|
+
This is useful for identifying which blocks need variable values before export or for implementing validation logic.
|
|
453
|
+
|
|
454
|
+
## Removing Variables
|
|
455
|
+
|
|
456
|
+
Remove unused variables from the scene with `remove()`. This cleans up the variable store when certain variables are no longer needed.
|
|
457
|
+
|
|
458
|
+
```typescript highlight-remove-variable
|
|
459
|
+
// Create and then remove a temporary variable to demonstrate removal
|
|
460
|
+
engine.variable.setString('tempVariable', 'Temporary Value');
|
|
461
|
+
// eslint-disable-next-line no-console
|
|
462
|
+
console.log('Variables before removal:', engine.variable.findAll());
|
|
463
|
+
|
|
464
|
+
// Remove the temporary variable
|
|
465
|
+
engine.variable.remove('tempVariable');
|
|
466
|
+
// eslint-disable-next-line no-console
|
|
467
|
+
console.log('Variables after removal:', engine.variable.findAll());
|
|
468
|
+
```
|
|
469
|
+
|
|
470
|
+
After removal, the variable no longer exists in the scene. Text blocks that reference removed variables will display the token literally (e.g., `{{removedVar}}`).
|
|
471
|
+
|
|
472
|
+
## Localizing Variable Labels
|
|
473
|
+
|
|
474
|
+
In CE.SDK (with UI), display friendly labels for variables in the inspector panel using i18n translations. Map variable keys to human-readable names that appear in the UI.
|
|
475
|
+
|
|
476
|
+
```typescript highlight-localize-variables
|
|
477
|
+
// Localize variable labels that appear in the Variables panel UI
|
|
478
|
+
cesdk.i18n.setTranslations({
|
|
479
|
+
en: {
|
|
480
|
+
'variables.firstName.label': 'First Name',
|
|
481
|
+
'variables.lastName.label': 'Last Name',
|
|
482
|
+
'variables.email.label': 'Email Address',
|
|
483
|
+
'variables.company.label': 'Company Name',
|
|
484
|
+
'variables.title.label': 'Job Title'
|
|
485
|
+
}
|
|
486
|
+
});
|
|
487
|
+
```
|
|
488
|
+
|
|
489
|
+
Without localization, the Insert Variable dropdown shows the technical variable key (e.g., `firstName`). With localization, it shows the friendly label (e.g., "First Name").
|
|
490
|
+
|
|
491
|
+
## Combining with Other Features
|
|
492
|
+
|
|
493
|
+
Text variables work seamlessly with other CE.SDK template features:
|
|
494
|
+
|
|
495
|
+
### With Placeholders
|
|
496
|
+
|
|
497
|
+
Use **placeholders** for dynamic images and videos while **variables** personalize text content. This combination enables fully dynamic templates where both visuals and copy change per use case.
|
|
498
|
+
|
|
499
|
+
### With Editing Constraints
|
|
500
|
+
|
|
501
|
+
Lock layout elements while allowing only variable token editing. This ensures brand consistency while enabling content personalization.
|
|
502
|
+
|
|
503
|
+
### With Role-Based Editing
|
|
504
|
+
|
|
505
|
+
Show the Insert Variable dropdown only to template authors (Creator role) and hide it from end users (Adopter role). This guides the editing experience based on user permissions.
|
|
506
|
+
|
|
507
|
+
## Building a Variables Manager Panel
|
|
508
|
+
|
|
509
|
+
CE.SDK's built-in Insert Variable dropdown only allows users to insert existing variables — it doesn't provide a UI for creating or managing variables. If you want end users to create, edit, and delete variables through the editor interface, you can build a custom panel using the Panel Builder API.
|
|
510
|
+
|
|
511
|
+
The following example creates a Variables Manager panel with:
|
|
512
|
+
|
|
513
|
+
- A form to create new variables with a name and default value
|
|
514
|
+
- A list of existing variables with editable values and delete buttons
|
|
515
|
+
- A dock button to toggle the panel
|
|
516
|
+
|
|
517
|
+
```typescript highlight-variables-manager-panel
|
|
518
|
+
// Build a custom Variables Manager panel
|
|
519
|
+
// CE.SDK doesn't include a built-in UI for creating/managing variables,
|
|
520
|
+
// so you can build one using the Panel Builder API
|
|
521
|
+
cesdk.ui.registerPanel(
|
|
522
|
+
'ly.img.variablesManager',
|
|
523
|
+
({ builder, engine: panelEngine, state }) => {
|
|
524
|
+
const { Section, TextInput, Button } = builder;
|
|
525
|
+
|
|
526
|
+
// State for creating new variables
|
|
527
|
+
const newVariableName = state('newVariableName', '');
|
|
528
|
+
const newVariableValue = state('newVariableValue', '');
|
|
529
|
+
|
|
530
|
+
// Section: Create New Variable
|
|
531
|
+
Section('create-variable', {
|
|
532
|
+
title: 'Create New Variable',
|
|
533
|
+
children: () => {
|
|
534
|
+
TextInput('new-name', {
|
|
535
|
+
inputLabel: 'Variable Name',
|
|
536
|
+
...newVariableName
|
|
537
|
+
});
|
|
538
|
+
|
|
539
|
+
TextInput('new-value', {
|
|
540
|
+
inputLabel: 'Default Value',
|
|
541
|
+
...newVariableValue
|
|
542
|
+
});
|
|
543
|
+
|
|
544
|
+
Button('create-btn', {
|
|
545
|
+
label: 'Create Variable',
|
|
546
|
+
color: 'accent',
|
|
547
|
+
isDisabled: !newVariableName.value.trim(),
|
|
548
|
+
onClick: () => {
|
|
549
|
+
const name = newVariableName.value.trim();
|
|
550
|
+
if (name) {
|
|
551
|
+
panelEngine.variable.setString(name, newVariableValue.value);
|
|
552
|
+
newVariableName.setValue('');
|
|
553
|
+
newVariableValue.setValue('');
|
|
554
|
+
}
|
|
555
|
+
}
|
|
556
|
+
});
|
|
557
|
+
}
|
|
558
|
+
});
|
|
559
|
+
|
|
560
|
+
// Section: Existing Variables
|
|
561
|
+
const variables = panelEngine.variable.findAll();
|
|
562
|
+
Section('existing-variables', {
|
|
563
|
+
title: `Manage Variables (${variables.length})`,
|
|
564
|
+
children: () => {
|
|
565
|
+
if (variables.length === 0) {
|
|
566
|
+
builder.Text('no-vars', { content: 'No variables defined yet.' });
|
|
567
|
+
return;
|
|
568
|
+
}
|
|
569
|
+
|
|
570
|
+
variables.forEach((varName) => {
|
|
571
|
+
TextInput(`var-${varName}`, {
|
|
572
|
+
inputLabel: varName,
|
|
573
|
+
value: panelEngine.variable.getString(varName),
|
|
574
|
+
setValue: (value) => {
|
|
575
|
+
panelEngine.variable.setString(varName, value);
|
|
576
|
+
},
|
|
577
|
+
suffix: {
|
|
578
|
+
icon: '@imgly/TrashBin',
|
|
579
|
+
tooltip: 'Delete variable',
|
|
580
|
+
onClick: () => {
|
|
581
|
+
panelEngine.variable.remove(varName);
|
|
582
|
+
}
|
|
583
|
+
}
|
|
584
|
+
});
|
|
585
|
+
});
|
|
586
|
+
}
|
|
587
|
+
});
|
|
588
|
+
}
|
|
589
|
+
);
|
|
590
|
+
|
|
591
|
+
// Set the panel title
|
|
592
|
+
cesdk.i18n.setTranslations({
|
|
593
|
+
en: {
|
|
594
|
+
'panel.ly.img.variablesManager': 'Custom Variables Panel'
|
|
595
|
+
}
|
|
596
|
+
});
|
|
597
|
+
|
|
598
|
+
// Add a dock button to open the panel
|
|
599
|
+
cesdk.ui.registerComponent('variablesManager.dock', ({ builder: b }) => {
|
|
600
|
+
const isPanelOpen = cesdk.ui.isPanelOpen('ly.img.variablesManager');
|
|
601
|
+
b.Button('variables-dock-btn', {
|
|
602
|
+
label: 'Variables',
|
|
603
|
+
icon: '@imgly/Text',
|
|
604
|
+
onClick: () => {
|
|
605
|
+
if (isPanelOpen) {
|
|
606
|
+
cesdk.ui.closePanel('ly.img.variablesManager');
|
|
607
|
+
} else {
|
|
608
|
+
cesdk.ui.openPanel('ly.img.variablesManager');
|
|
609
|
+
}
|
|
610
|
+
},
|
|
611
|
+
isActive: isPanelOpen
|
|
612
|
+
});
|
|
613
|
+
});
|
|
614
|
+
|
|
615
|
+
// Add button to dock
|
|
616
|
+
cesdk.ui.setComponentOrder({ in: 'ly.img.dock' }, [
|
|
617
|
+
...cesdk.ui.getComponentOrder({ in: 'ly.img.dock' }),
|
|
618
|
+
'ly.img.spacer',
|
|
619
|
+
'variablesManager.dock'
|
|
620
|
+
]);
|
|
621
|
+
```
|
|
622
|
+
|
|
623
|
+
This panel integrates with the dock and provides a complete variable management experience. Users can create new variables, edit existing values, and remove variables they no longer need.
|
|
624
|
+
|
|
625
|
+
> **Note:** For more information on building custom panels, see the 
|
|
626
|
+
> [Create a Custom Panel](./user-interface/ui-extensions/create-custom-panel.md) guide.
|
|
627
|
+
|
|
628
|
+
## API Reference
|
|
629
|
+
|
|
630
|
+
| Method | Description |
|
|
631
|
+
| --------------------------------------- | ------------------------------------------- |
|
|
632
|
+
| `engine.variable.findAll()` | Get array of all variable keys in the scene |
|
|
633
|
+
| `engine.variable.setString()` | Create or update a text variable |
|
|
634
|
+
| `engine.variable.getString()` | Read the current value of a variable |
|
|
635
|
+
| `engine.variable.remove()` | Delete a variable from the scene |
|
|
636
|
+
| `engine.block.referencesAnyVariables()` | Check if a block contains variable tokens |
|
|
637
|
+
| `engine.block.replaceText()` | Set text content (supports variable tokens) |
|
|
638
|
+
| `cesdk.i18n.setTranslations()` | Set UI labels for variable names |
|
|
639
|
+
|
|
640
|
+
---
|
|
641
|
+
|
|
642
|
+
## More Resources
|
|
643
|
+
|
|
644
|
+
- **[Vanilla JS/TS Documentation Index](https://img.ly/docs/cesdk/js.md)** - Browse all Vanilla JS/TS documentation
|
|
645
|
+
- **[Complete Documentation](./llms-full.txt.md)** - Full documentation in one file (for LLMs)
|
|
646
|
+
- **[Web Documentation](./js.md)** - Interactive documentation with examples
|
|
647
|
+
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
|