@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,600 @@
|
|
|
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) > [Set Editing Constraints](./create-templates/add-dynamic-content/set-editing-constraints.md)
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Control what users can edit in templates by setting fine-grained permissions on individual blocks or globally across your scene using CE.SDK's Scope system.
|
|
8
|
+
|
|
9
|
+

|
|
10
|
+
|
|
11
|
+
> **Reading time:** 15 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-dynamic-content-set-editing-constraints-browser)
|
|
17
|
+
> - [Open in StackBlitz](https://stackblitz.com/github/imgly/cesdk-web-examples/tree/v$UBQ_VERSION$/guides-create-templates-dynamic-content-set-editing-constraints-browser)
|
|
18
|
+
> - [Live demo](https://img.ly/docs/cesdk/examples/guides-create-templates-dynamic-content-set-editing-constraints-browser/)
|
|
19
|
+
|
|
20
|
+
Editing constraints in CE.SDK allow you to lock specific properties of design elements while keeping others editable. The Scope system provides granular control over 20+ editing capabilities including movement, resizing, rotation, fill changes, text editing, and lifecycle operations.
|
|
21
|
+
|
|
22
|
+
```typescript file=@cesdk_web_examples/guides-create-templates-dynamic-content-set-editing-constraints-browser/browser.ts reference-only
|
|
23
|
+
import type { EditorPlugin, EditorPluginContext } from '@cesdk/cesdk-js';
|
|
24
|
+
import {
|
|
25
|
+
BlurAssetSource,
|
|
26
|
+
ColorPaletteAssetSource,
|
|
27
|
+
CropPresetsAssetSource,
|
|
28
|
+
DemoAssetSources,
|
|
29
|
+
EffectsAssetSource,
|
|
30
|
+
FiltersAssetSource,
|
|
31
|
+
PagePresetsAssetSource,
|
|
32
|
+
StickerAssetSource,
|
|
33
|
+
TextAssetSource,
|
|
34
|
+
TextComponentAssetSource,
|
|
35
|
+
TypefaceAssetSource,
|
|
36
|
+
UploadAssetSources,
|
|
37
|
+
VectorShapeAssetSource
|
|
38
|
+
} from '@cesdk/cesdk-js/plugins';
|
|
39
|
+
import { DesignEditorConfig } from './design-editor/plugin';
|
|
40
|
+
import packageJson from './package.json';
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* CE.SDK Plugin: Set Editing Constraints Guide
|
|
44
|
+
*
|
|
45
|
+
* This example demonstrates:
|
|
46
|
+
* - Setting global scopes to respect block-level settings
|
|
47
|
+
* - Disabling move scope to lock position
|
|
48
|
+
* - Disabling lifecycle scopes to prevent deletion
|
|
49
|
+
*/
|
|
50
|
+
class Example implements EditorPlugin {
|
|
51
|
+
name = packageJson.name;
|
|
52
|
+
|
|
53
|
+
version = packageJson.version;
|
|
54
|
+
|
|
55
|
+
async initialize({ cesdk }: EditorPluginContext): Promise<void> {
|
|
56
|
+
if (!cesdk) {
|
|
57
|
+
throw new Error('CE.SDK instance is required for this plugin');
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
await cesdk.addPlugin(new DesignEditorConfig());
|
|
61
|
+
// Add asset source plugins
|
|
62
|
+
await cesdk.addPlugin(new BlurAssetSource());
|
|
63
|
+
await cesdk.addPlugin(new ColorPaletteAssetSource());
|
|
64
|
+
await cesdk.addPlugin(new CropPresetsAssetSource());
|
|
65
|
+
await cesdk.addPlugin(
|
|
66
|
+
new UploadAssetSources({ include: ['ly.img.image.upload'] })
|
|
67
|
+
);
|
|
68
|
+
await cesdk.addPlugin(
|
|
69
|
+
new DemoAssetSources({
|
|
70
|
+
include: [
|
|
71
|
+
'ly.img.templates.blank.*',
|
|
72
|
+
'ly.img.templates.presentation.*',
|
|
73
|
+
'ly.img.templates.print.*',
|
|
74
|
+
'ly.img.templates.social.*',
|
|
75
|
+
'ly.img.image.*'
|
|
76
|
+
]
|
|
77
|
+
})
|
|
78
|
+
);
|
|
79
|
+
await cesdk.addPlugin(new EffectsAssetSource());
|
|
80
|
+
await cesdk.addPlugin(new FiltersAssetSource());
|
|
81
|
+
await cesdk.addPlugin(new PagePresetsAssetSource());
|
|
82
|
+
await cesdk.addPlugin(new StickerAssetSource());
|
|
83
|
+
await cesdk.addPlugin(new TextAssetSource());
|
|
84
|
+
await cesdk.addPlugin(new TextComponentAssetSource());
|
|
85
|
+
await cesdk.addPlugin(new TypefaceAssetSource());
|
|
86
|
+
await cesdk.addPlugin(new VectorShapeAssetSource());
|
|
87
|
+
|
|
88
|
+
// Create a design scene
|
|
89
|
+
await cesdk.actions.run('scene.create', {
|
|
90
|
+
page: { width: 1200, height: 600, unit: 'Pixel' }
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
const engine = cesdk.engine;
|
|
94
|
+
|
|
95
|
+
// Get the page
|
|
96
|
+
const pages = engine.block.findByType('page');
|
|
97
|
+
const page = pages[0];
|
|
98
|
+
if (!page) {
|
|
99
|
+
throw new Error('No page found');
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
// Set page background color
|
|
103
|
+
const pageFill = engine.block.getFill(page);
|
|
104
|
+
engine.block.setColor(pageFill, 'fill/color/value', {
|
|
105
|
+
r: 0.95,
|
|
106
|
+
g: 0.95,
|
|
107
|
+
b: 0.95,
|
|
108
|
+
a: 1.0
|
|
109
|
+
});
|
|
110
|
+
|
|
111
|
+
// ===== Configure Global Scopes =====
|
|
112
|
+
// Set global scopes to 'Defer' to respect block-level scope settings
|
|
113
|
+
// Without this, global 'Allow' settings might override block-level restrictions
|
|
114
|
+
engine.editor.setGlobalScope('layer/move', 'Defer');
|
|
115
|
+
engine.editor.setGlobalScope('layer/resize', 'Defer');
|
|
116
|
+
engine.editor.setGlobalScope('lifecycle/destroy', 'Defer');
|
|
117
|
+
engine.editor.setGlobalScope('lifecycle/duplicate', 'Defer');
|
|
118
|
+
|
|
119
|
+
// Global scope modes:
|
|
120
|
+
// - 'Allow': Always allow (overrides block-level settings)
|
|
121
|
+
// - 'Deny': Always deny (overrides block-level settings)
|
|
122
|
+
// - 'Defer': Use block-level settings (respects setScopeEnabled)
|
|
123
|
+
|
|
124
|
+
// Calculate layout for 4 examples (2x2 grid)
|
|
125
|
+
const pageWidth = engine.block.getWidth(page);
|
|
126
|
+
const pageHeight = engine.block.getHeight(page);
|
|
127
|
+
const margin = 40;
|
|
128
|
+
const spacing = 20;
|
|
129
|
+
const blockWidth = (pageWidth - margin * 2 - spacing) / 2;
|
|
130
|
+
const blockHeight = (pageHeight - margin * 2 - spacing) / 2;
|
|
131
|
+
|
|
132
|
+
const getPosition = (index: number) => {
|
|
133
|
+
const col = index % 2;
|
|
134
|
+
const row = Math.floor(index / 2);
|
|
135
|
+
return {
|
|
136
|
+
x: margin + col * (blockWidth + spacing),
|
|
137
|
+
y: margin + row * (blockHeight + spacing)
|
|
138
|
+
};
|
|
139
|
+
};
|
|
140
|
+
|
|
141
|
+
// Helper function to create a labeled example block
|
|
142
|
+
const createExampleBlock = (
|
|
143
|
+
labelText: string,
|
|
144
|
+
backgroundColor: { r: number; g: number; b: number },
|
|
145
|
+
applyScopesCallback?: (blockId: number) => void
|
|
146
|
+
): number => {
|
|
147
|
+
// Create container block
|
|
148
|
+
const block = engine.block.create('graphic');
|
|
149
|
+
const shape = engine.block.createShape('rect');
|
|
150
|
+
engine.block.setShape(block, shape);
|
|
151
|
+
engine.block.setWidth(block, blockWidth);
|
|
152
|
+
engine.block.setHeight(block, blockHeight);
|
|
153
|
+
|
|
154
|
+
// Set background color
|
|
155
|
+
const fill = engine.block.createFill('color');
|
|
156
|
+
engine.block.setFill(block, fill);
|
|
157
|
+
engine.block.setColor(fill, 'fill/color/value', {
|
|
158
|
+
...backgroundColor,
|
|
159
|
+
a: 1.0
|
|
160
|
+
});
|
|
161
|
+
|
|
162
|
+
// Add label text
|
|
163
|
+
const textBlock = engine.block.create('text');
|
|
164
|
+
engine.block.setWidth(textBlock, blockWidth * 0.85);
|
|
165
|
+
engine.block.setHeightMode(textBlock, 'Auto');
|
|
166
|
+
engine.block.setString(textBlock, 'text/text', labelText);
|
|
167
|
+
engine.block.setEnum(textBlock, 'text/horizontalAlignment', 'Center');
|
|
168
|
+
engine.block.setFloat(textBlock, 'text/fontSize', 36);
|
|
169
|
+
|
|
170
|
+
// Append text to get dimensions
|
|
171
|
+
engine.block.appendChild(block, textBlock);
|
|
172
|
+
|
|
173
|
+
// Center text in container
|
|
174
|
+
const textWidth = engine.block.getWidth(textBlock);
|
|
175
|
+
const textHeight = engine.block.getHeight(textBlock);
|
|
176
|
+
engine.block.setPositionX(textBlock, (blockWidth - textWidth) / 2);
|
|
177
|
+
engine.block.setPositionY(textBlock, (blockHeight - textHeight) / 2);
|
|
178
|
+
|
|
179
|
+
// Set text color to white
|
|
180
|
+
const textFill = engine.block.createFill('color');
|
|
181
|
+
engine.block.setFill(textBlock, textFill);
|
|
182
|
+
engine.block.setColor(textFill, 'fill/color/value', {
|
|
183
|
+
r: 1.0,
|
|
184
|
+
g: 1.0,
|
|
185
|
+
b: 1.0,
|
|
186
|
+
a: 1.0
|
|
187
|
+
});
|
|
188
|
+
|
|
189
|
+
// Apply scope configuration to both blocks
|
|
190
|
+
if (applyScopesCallback) {
|
|
191
|
+
applyScopesCallback(block);
|
|
192
|
+
applyScopesCallback(textBlock);
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
// Append container to page
|
|
196
|
+
engine.block.appendChild(page, block);
|
|
197
|
+
|
|
198
|
+
return block;
|
|
199
|
+
};
|
|
200
|
+
|
|
201
|
+
// ===== Example 1: Lock Position (Disable Move Scope) =====
|
|
202
|
+
const disableMoveScope = (block: number) => {
|
|
203
|
+
// Disable move scope
|
|
204
|
+
engine.block.setScopeEnabled(block, 'layer/move', false);
|
|
205
|
+
|
|
206
|
+
// Explicitly enable other transform scopes
|
|
207
|
+
engine.block.setScopeEnabled(block, 'layer/resize', true);
|
|
208
|
+
engine.block.setScopeEnabled(block, 'layer/rotate', true);
|
|
209
|
+
engine.block.setScopeEnabled(block, 'layer/flip', true);
|
|
210
|
+
|
|
211
|
+
// Explicitly enable lifecycle scopes
|
|
212
|
+
engine.block.setScopeEnabled(block, 'lifecycle/destroy', true);
|
|
213
|
+
engine.block.setScopeEnabled(block, 'lifecycle/duplicate', true);
|
|
214
|
+
};
|
|
215
|
+
|
|
216
|
+
const moveLockedBlock = createExampleBlock(
|
|
217
|
+
'Locked\nposition',
|
|
218
|
+
{
|
|
219
|
+
r: 0.5,
|
|
220
|
+
g: 0.75,
|
|
221
|
+
b: 0.9
|
|
222
|
+
},
|
|
223
|
+
disableMoveScope
|
|
224
|
+
);
|
|
225
|
+
// Block position is locked - users cannot move or reposition it
|
|
226
|
+
// Other scopes are explicitly enabled: resizing, rotation, flipping, deletion, duplication
|
|
227
|
+
|
|
228
|
+
// ===== Example 2: Prevent Deletion (Disable Lifecycle Scopes) =====
|
|
229
|
+
const disableLifecycleScopes = (block: number) => {
|
|
230
|
+
// Disable lifecycle scopes
|
|
231
|
+
engine.block.setScopeEnabled(block, 'lifecycle/destroy', false);
|
|
232
|
+
engine.block.setScopeEnabled(block, 'lifecycle/duplicate', false);
|
|
233
|
+
|
|
234
|
+
// Explicitly enable transform scopes
|
|
235
|
+
engine.block.setScopeEnabled(block, 'layer/move', true);
|
|
236
|
+
engine.block.setScopeEnabled(block, 'layer/resize', true);
|
|
237
|
+
engine.block.setScopeEnabled(block, 'layer/rotate', true);
|
|
238
|
+
engine.block.setScopeEnabled(block, 'layer/flip', true);
|
|
239
|
+
};
|
|
240
|
+
|
|
241
|
+
const lifecycleLockedBlock = createExampleBlock(
|
|
242
|
+
'Cannot\ndelete',
|
|
243
|
+
{
|
|
244
|
+
r: 0.75,
|
|
245
|
+
g: 0.75,
|
|
246
|
+
b: 0.75
|
|
247
|
+
},
|
|
248
|
+
disableLifecycleScopes
|
|
249
|
+
);
|
|
250
|
+
// Block cannot be deleted or duplicated
|
|
251
|
+
// Other scopes are explicitly enabled: moving, resizing, rotation, flipping
|
|
252
|
+
|
|
253
|
+
// ===== Example 3: All Scopes Enabled =====
|
|
254
|
+
const enableAllScopes = (block: number) => {
|
|
255
|
+
// Explicitly enable all transform scopes
|
|
256
|
+
engine.block.setScopeEnabled(block, 'layer/move', true);
|
|
257
|
+
engine.block.setScopeEnabled(block, 'layer/resize', true);
|
|
258
|
+
engine.block.setScopeEnabled(block, 'layer/rotate', true);
|
|
259
|
+
engine.block.setScopeEnabled(block, 'layer/flip', true);
|
|
260
|
+
|
|
261
|
+
// Explicitly enable lifecycle scopes
|
|
262
|
+
engine.block.setScopeEnabled(block, 'lifecycle/destroy', true);
|
|
263
|
+
engine.block.setScopeEnabled(block, 'lifecycle/duplicate', true);
|
|
264
|
+
|
|
265
|
+
// Explicitly enable fill scopes
|
|
266
|
+
engine.block.setScopeEnabled(block, 'fill/change', true);
|
|
267
|
+
engine.block.setScopeEnabled(block, 'fill/changeType', true);
|
|
268
|
+
|
|
269
|
+
// Explicitly enable text scopes
|
|
270
|
+
engine.block.setScopeEnabled(block, 'text/edit', true);
|
|
271
|
+
engine.block.setScopeEnabled(block, 'text/character', true);
|
|
272
|
+
};
|
|
273
|
+
|
|
274
|
+
const fullyEditableBlock = createExampleBlock(
|
|
275
|
+
'Fully\neditable',
|
|
276
|
+
{
|
|
277
|
+
r: 0.5,
|
|
278
|
+
g: 0.85,
|
|
279
|
+
b: 0.5
|
|
280
|
+
},
|
|
281
|
+
enableAllScopes
|
|
282
|
+
);
|
|
283
|
+
// All scopes are explicitly enabled - users have full editing capabilities
|
|
284
|
+
// This is the default behavior, but explicitly enabling shows clear intent
|
|
285
|
+
|
|
286
|
+
// ===== Example 4: All Scopes Disabled =====
|
|
287
|
+
const disableAllScopes = (block: number) => {
|
|
288
|
+
// Disable all transform scopes
|
|
289
|
+
engine.block.setScopeEnabled(block, 'layer/move', false);
|
|
290
|
+
engine.block.setScopeEnabled(block, 'layer/resize', false);
|
|
291
|
+
engine.block.setScopeEnabled(block, 'layer/rotate', false);
|
|
292
|
+
engine.block.setScopeEnabled(block, 'layer/flip', false);
|
|
293
|
+
engine.block.setScopeEnabled(block, 'layer/crop', false);
|
|
294
|
+
|
|
295
|
+
// Disable lifecycle scopes
|
|
296
|
+
engine.block.setScopeEnabled(block, 'lifecycle/destroy', false);
|
|
297
|
+
engine.block.setScopeEnabled(block, 'lifecycle/duplicate', false);
|
|
298
|
+
|
|
299
|
+
// Disable fill scopes
|
|
300
|
+
engine.block.setScopeEnabled(block, 'fill/change', false);
|
|
301
|
+
engine.block.setScopeEnabled(block, 'fill/changeType', false);
|
|
302
|
+
engine.block.setScopeEnabled(block, 'stroke/change', false);
|
|
303
|
+
|
|
304
|
+
// Disable text scopes
|
|
305
|
+
engine.block.setScopeEnabled(block, 'text/edit', false);
|
|
306
|
+
engine.block.setScopeEnabled(block, 'text/character', false);
|
|
307
|
+
|
|
308
|
+
// Disable shape scopes
|
|
309
|
+
engine.block.setScopeEnabled(block, 'shape/change', false);
|
|
310
|
+
|
|
311
|
+
// Disable editor scopes
|
|
312
|
+
engine.block.setScopeEnabled(block, 'editor/select', false);
|
|
313
|
+
|
|
314
|
+
// Disable appearance scopes
|
|
315
|
+
engine.block.setScopeEnabled(block, 'layer/opacity', false);
|
|
316
|
+
engine.block.setScopeEnabled(block, 'layer/blendMode', false);
|
|
317
|
+
engine.block.setScopeEnabled(block, 'layer/visibility', false);
|
|
318
|
+
};
|
|
319
|
+
|
|
320
|
+
const fullyLockedBlock = createExampleBlock(
|
|
321
|
+
'Fully\nlocked',
|
|
322
|
+
{
|
|
323
|
+
r: 0.9,
|
|
324
|
+
g: 0.5,
|
|
325
|
+
b: 0.5
|
|
326
|
+
},
|
|
327
|
+
disableAllScopes
|
|
328
|
+
);
|
|
329
|
+
// All scopes are disabled - block is completely locked and cannot be edited
|
|
330
|
+
// Useful for watermarks, logos, or legal disclaimers
|
|
331
|
+
|
|
332
|
+
// ===== Block-Level Scope Setting Example =====
|
|
333
|
+
// Check if a scope is enabled for a specific block
|
|
334
|
+
const canMove = engine.block.isScopeEnabled(moveLockedBlock, 'layer/move');
|
|
335
|
+
const canDelete = engine.block.isScopeEnabled(
|
|
336
|
+
lifecycleLockedBlock,
|
|
337
|
+
'lifecycle/destroy'
|
|
338
|
+
);
|
|
339
|
+
const canEditFully = engine.block.isScopeEnabled(
|
|
340
|
+
fullyEditableBlock,
|
|
341
|
+
'layer/move'
|
|
342
|
+
);
|
|
343
|
+
const canEditLocked = engine.block.isScopeEnabled(
|
|
344
|
+
fullyLockedBlock,
|
|
345
|
+
'layer/move'
|
|
346
|
+
);
|
|
347
|
+
|
|
348
|
+
// eslint-disable-next-line no-console
|
|
349
|
+
console.log('Move-locked block - layer/move enabled:', canMove); // false
|
|
350
|
+
// eslint-disable-next-line no-console
|
|
351
|
+
console.log(
|
|
352
|
+
'Lifecycle-locked block - lifecycle/destroy enabled:',
|
|
353
|
+
canDelete
|
|
354
|
+
); // false
|
|
355
|
+
// eslint-disable-next-line no-console
|
|
356
|
+
console.log('Fully editable block - layer/move enabled:', canEditFully); // true
|
|
357
|
+
// eslint-disable-next-line no-console
|
|
358
|
+
console.log('Fully locked block - layer/move enabled:', canEditLocked); // false
|
|
359
|
+
|
|
360
|
+
// Position blocks in 2x2 grid
|
|
361
|
+
const blocks = [
|
|
362
|
+
fullyEditableBlock,
|
|
363
|
+
moveLockedBlock,
|
|
364
|
+
lifecycleLockedBlock,
|
|
365
|
+
fullyLockedBlock
|
|
366
|
+
];
|
|
367
|
+
|
|
368
|
+
blocks.forEach((block, index) => {
|
|
369
|
+
const pos = getPosition(index);
|
|
370
|
+
engine.block.setPositionX(block, pos.x);
|
|
371
|
+
engine.block.setPositionY(block, pos.y);
|
|
372
|
+
});
|
|
373
|
+
|
|
374
|
+
// Deselect all blocks
|
|
375
|
+
engine.block.findAllSelected().forEach((block) => {
|
|
376
|
+
engine.block.setSelected(block, false);
|
|
377
|
+
});
|
|
378
|
+
|
|
379
|
+
// Zoom to fit content
|
|
380
|
+
await engine.scene.zoomToBlock(page, {
|
|
381
|
+
padding: 50,
|
|
382
|
+
animate: false
|
|
383
|
+
});
|
|
384
|
+
|
|
385
|
+
// Log instructions
|
|
386
|
+
// eslint-disable-next-line no-console
|
|
387
|
+
console.log(`
|
|
388
|
+
=== Editing Constraints Demo ===
|
|
389
|
+
|
|
390
|
+
Try interacting with the 4 examples (arranged in 2x2 grid):
|
|
391
|
+
|
|
392
|
+
Top row:
|
|
393
|
+
1. "Fully editable" (green): All scopes enabled - complete editing freedom
|
|
394
|
+
2. "Locked position" (light blue): Cannot move, but can resize/edit/delete
|
|
395
|
+
|
|
396
|
+
Bottom row:
|
|
397
|
+
3. "Cannot delete" (light grey): Cannot delete/duplicate, but can move/resize/edit
|
|
398
|
+
4. "Fully locked" (red): All scopes disabled - completely locked
|
|
399
|
+
|
|
400
|
+
Note: Global scopes are set to 'Defer' to respect block-level settings.
|
|
401
|
+
`);
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
export default Example;
|
|
406
|
+
```
|
|
407
|
+
|
|
408
|
+
This guide demonstrates how to apply editing constraints to create brand templates, guided editing experiences, and form-based workflows.
|
|
409
|
+
|
|
410
|
+
## Understanding Scopes
|
|
411
|
+
|
|
412
|
+
### What are Scopes?
|
|
413
|
+
|
|
414
|
+
A scope is a permission key that controls a specific editing capability in CE.SDK. Each scope represents a distinct action users can perform, such as moving blocks (`'layer/move'`), changing fills (`'fill/change'`), or editing text content (`'text/edit'`). By enabling or disabling scopes, you control exactly what users can and cannot do with each design element.
|
|
415
|
+
|
|
416
|
+
Scopes exist at two levels:
|
|
417
|
+
|
|
418
|
+
- **Block-level scopes**: Per-block permissions set using `setScopeEnabled()`
|
|
419
|
+
- **Global scopes**: Default behavior for all blocks set using `setGlobalScope()`
|
|
420
|
+
|
|
421
|
+
### Available Scope Categories
|
|
422
|
+
|
|
423
|
+
CE.SDK provides scopes organized into logical categories:
|
|
424
|
+
|
|
425
|
+
| Category | Purpose | Example Scopes |
|
|
426
|
+
| --------------------- | ----------------------------------- | ---------------------------------------------------------------------------------------------------------- |
|
|
427
|
+
| **Text Editing** | Control text content and formatting | `text/edit`, `text/character` |
|
|
428
|
+
| **Fill & Stroke** | Manage colors and gradients | `fill/change`, `fill/changeType`, `stroke/change` |
|
|
429
|
+
| **Shape** | Modify shape properties | `shape/change` |
|
|
430
|
+
| **Layer Transform** | Control position and dimensions | `layer/move`, `layer/resize`, `layer/rotate`, `layer/flip`, `layer/crop` |
|
|
431
|
+
| **Layer Appearance** | Manage visual properties | `layer/opacity`, `layer/blendMode`, `layer/visibility` |
|
|
432
|
+
| **Effects & Filters** | Apply visual effects | `appearance/adjustments`, `appearance/filter`, `appearance/effect`, `appearance/blur`, `appearance/shadow` |
|
|
433
|
+
| **Lifecycle** | Control creation and deletion | `lifecycle/destroy`, `lifecycle/duplicate` |
|
|
434
|
+
| **Editor** | Manage scene-level actions | `editor/add`, `editor/select` |
|
|
435
|
+
|
|
436
|
+
## Scope Configuration
|
|
437
|
+
|
|
438
|
+
### Global Scope Modes
|
|
439
|
+
|
|
440
|
+
Global scopes set the default behavior for all blocks in the scene. They have three modes:
|
|
441
|
+
|
|
442
|
+
- **Allow**: Always allow the action, overriding block-level settings
|
|
443
|
+
- **Deny**: Always deny the action, overriding block-level settings
|
|
444
|
+
- **Defer**: Use block-level settings (default mode)
|
|
445
|
+
|
|
446
|
+
To ensure block-level scope settings are respected, set relevant global scopes to 'Defer':
|
|
447
|
+
|
|
448
|
+
```typescript highlight=highlight-global-scopes
|
|
449
|
+
// Set global scopes to 'Defer' to respect block-level scope settings
|
|
450
|
+
// Without this, global 'Allow' settings might override block-level restrictions
|
|
451
|
+
engine.editor.setGlobalScope('layer/move', 'Defer');
|
|
452
|
+
engine.editor.setGlobalScope('layer/resize', 'Defer');
|
|
453
|
+
engine.editor.setGlobalScope('lifecycle/destroy', 'Defer');
|
|
454
|
+
engine.editor.setGlobalScope('lifecycle/duplicate', 'Defer');
|
|
455
|
+
|
|
456
|
+
// Global scope modes:
|
|
457
|
+
// - 'Allow': Always allow (overrides block-level settings)
|
|
458
|
+
// - 'Deny': Always deny (overrides block-level settings)
|
|
459
|
+
// - 'Defer': Use block-level settings (respects setScopeEnabled)
|
|
460
|
+
```
|
|
461
|
+
|
|
462
|
+
Without setting global scopes to 'Defer', default 'Allow' settings might override your block-level restrictions. This is essential when applying fine-grained constraints.
|
|
463
|
+
|
|
464
|
+
### Scope Resolution Priority
|
|
465
|
+
|
|
466
|
+
When both global and block-level scopes are set, they resolve in this order:
|
|
467
|
+
|
|
468
|
+
1. **Global Deny** takes highest priority (action always denied)
|
|
469
|
+
2. **Global Allow** takes second priority (action always allowed)
|
|
470
|
+
3. **Global Defer** defers to block-level settings (default behavior)
|
|
471
|
+
|
|
472
|
+
## Setting Block-Level Constraints
|
|
473
|
+
|
|
474
|
+
### Locking Position
|
|
475
|
+
|
|
476
|
+
Prevent users from moving or repositioning a block while allowing other edits:
|
|
477
|
+
|
|
478
|
+
```typescript highlight=highlight-disable-move-scope
|
|
479
|
+
const disableMoveScope = (block: number) => {
|
|
480
|
+
// Disable move scope
|
|
481
|
+
engine.block.setScopeEnabled(block, 'layer/move', false);
|
|
482
|
+
|
|
483
|
+
// Explicitly enable other transform scopes
|
|
484
|
+
engine.block.setScopeEnabled(block, 'layer/resize', true);
|
|
485
|
+
engine.block.setScopeEnabled(block, 'layer/rotate', true);
|
|
486
|
+
engine.block.setScopeEnabled(block, 'layer/flip', true);
|
|
487
|
+
|
|
488
|
+
// Explicitly enable lifecycle scopes
|
|
489
|
+
engine.block.setScopeEnabled(block, 'lifecycle/destroy', true);
|
|
490
|
+
engine.block.setScopeEnabled(block, 'lifecycle/duplicate', true);
|
|
491
|
+
};
|
|
492
|
+
|
|
493
|
+
const moveLockedBlock = createExampleBlock(
|
|
494
|
+
'Locked\nposition',
|
|
495
|
+
{
|
|
496
|
+
r: 0.5,
|
|
497
|
+
g: 0.75,
|
|
498
|
+
b: 0.9
|
|
499
|
+
},
|
|
500
|
+
disableMoveScope
|
|
501
|
+
);
|
|
502
|
+
// Block position is locked - users cannot move or reposition it
|
|
503
|
+
// Other scopes are explicitly enabled: resizing, rotation, flipping, deletion, duplication
|
|
504
|
+
```
|
|
505
|
+
|
|
506
|
+
The block position is locked—users cannot move or reposition it. Other scopes remain enabled, allowing resizing, editing, and deletion. This pattern maintains layout integrity while allowing content updates.
|
|
507
|
+
|
|
508
|
+
### Preventing Deletion
|
|
509
|
+
|
|
510
|
+
Protect blocks from being deleted or duplicated:
|
|
511
|
+
|
|
512
|
+
```typescript highlight=highlight-disable-lifecycle-scopes
|
|
513
|
+
const disableLifecycleScopes = (block: number) => {
|
|
514
|
+
// Disable lifecycle scopes
|
|
515
|
+
engine.block.setScopeEnabled(block, 'lifecycle/destroy', false);
|
|
516
|
+
engine.block.setScopeEnabled(block, 'lifecycle/duplicate', false);
|
|
517
|
+
|
|
518
|
+
// Explicitly enable transform scopes
|
|
519
|
+
engine.block.setScopeEnabled(block, 'layer/move', true);
|
|
520
|
+
engine.block.setScopeEnabled(block, 'layer/resize', true);
|
|
521
|
+
engine.block.setScopeEnabled(block, 'layer/rotate', true);
|
|
522
|
+
engine.block.setScopeEnabled(block, 'layer/flip', true);
|
|
523
|
+
};
|
|
524
|
+
|
|
525
|
+
const lifecycleLockedBlock = createExampleBlock(
|
|
526
|
+
'Cannot\ndelete',
|
|
527
|
+
{
|
|
528
|
+
r: 0.75,
|
|
529
|
+
g: 0.75,
|
|
530
|
+
b: 0.75
|
|
531
|
+
},
|
|
532
|
+
disableLifecycleScopes
|
|
533
|
+
);
|
|
534
|
+
// Block cannot be deleted or duplicated
|
|
535
|
+
// Other scopes are explicitly enabled: moving, resizing, rotation, flipping
|
|
536
|
+
```
|
|
537
|
+
|
|
538
|
+
Users cannot delete or duplicate the block but can still move, resize, and edit it. Use this for essential template elements that must remain present.
|
|
539
|
+
|
|
540
|
+
### Checking Scope State
|
|
541
|
+
|
|
542
|
+
Query the current state of any scope for a block:
|
|
543
|
+
|
|
544
|
+
```typescript highlight=highlight-block-level-scope-check
|
|
545
|
+
// Check if a scope is enabled for a specific block
|
|
546
|
+
const canMove = engine.block.isScopeEnabled(moveLockedBlock, 'layer/move');
|
|
547
|
+
const canDelete = engine.block.isScopeEnabled(
|
|
548
|
+
lifecycleLockedBlock,
|
|
549
|
+
'lifecycle/destroy'
|
|
550
|
+
);
|
|
551
|
+
const canEditFully = engine.block.isScopeEnabled(
|
|
552
|
+
fullyEditableBlock,
|
|
553
|
+
'layer/move'
|
|
554
|
+
);
|
|
555
|
+
const canEditLocked = engine.block.isScopeEnabled(
|
|
556
|
+
fullyLockedBlock,
|
|
557
|
+
'layer/move'
|
|
558
|
+
);
|
|
559
|
+
|
|
560
|
+
// eslint-disable-next-line no-console
|
|
561
|
+
console.log('Move-locked block - layer/move enabled:', canMove); // false
|
|
562
|
+
// eslint-disable-next-line no-console
|
|
563
|
+
console.log('Lifecycle-locked block - lifecycle/destroy enabled:', canDelete); // false
|
|
564
|
+
// eslint-disable-next-line no-console
|
|
565
|
+
console.log('Fully editable block - layer/move enabled:', canEditFully); // true
|
|
566
|
+
// eslint-disable-next-line no-console
|
|
567
|
+
console.log('Fully locked block - layer/move enabled:', canEditLocked); // false
|
|
568
|
+
```
|
|
569
|
+
|
|
570
|
+
Use `isScopeEnabled()` to check the block-level setting. This returns whether the scope is enabled at the block level, but doesn't consider global scope settings.
|
|
571
|
+
|
|
572
|
+
### Checking Effective Permissions
|
|
573
|
+
|
|
574
|
+
Check the effective permission considering both block and global settings:
|
|
575
|
+
|
|
576
|
+
```typescript
|
|
577
|
+
// Check if scope is allowed (considers global + block settings)
|
|
578
|
+
const moveAllowed = engine.block.isAllowedByScope(block, 'layer/move');
|
|
579
|
+
```
|
|
580
|
+
|
|
581
|
+
`isAllowedByScope()` returns the final permission after resolving block-level and global scope settings. Use this when you need to know if an action is actually permitted.
|
|
582
|
+
|
|
583
|
+
## API Reference
|
|
584
|
+
|
|
585
|
+
| Method | Description |
|
|
586
|
+
| --------------------------------- | ---------------------------------------------------------------------- |
|
|
587
|
+
| `engine.block.setScopeEnabled()` | Enable or disable a scope for a specific block |
|
|
588
|
+
| `engine.block.isScopeEnabled()` | Check if a scope is enabled at the block level |
|
|
589
|
+
| `engine.block.isAllowedByScope()` | Check if a scope is allowed considering both block and global settings |
|
|
590
|
+
| `engine.editor.setGlobalScope()` | Set global scope policy (`'Allow'`, `'Deny'`, or `'Defer'`) |
|
|
591
|
+
| `engine.editor.findAllScopes()` | List all available scope keys |
|
|
592
|
+
|
|
593
|
+
---
|
|
594
|
+
|
|
595
|
+
## More Resources
|
|
596
|
+
|
|
597
|
+
- **[Vanilla JS/TS Documentation Index](https://img.ly/docs/cesdk/js.md)** - Browse all Vanilla JS/TS documentation
|
|
598
|
+
- **[Complete Documentation](./llms-full.txt.md)** - Full documentation in one file (for LLMs)
|
|
599
|
+
- **[Web Documentation](./js.md)** - Interactive documentation with examples
|
|
600
|
+
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
|