@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,478 @@
|
|
|
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) > [Rules](./rules.md) > [Lock Content](./rules/lock-content.md)
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Lock design elements to prevent unwanted modifications using CE.SDK's scope-based permission system.
|
|
8
|
+
|
|
9
|
+
> **Reading time:** 10 minutes
|
|
10
|
+
>
|
|
11
|
+
> **Resources:**
|
|
12
|
+
>
|
|
13
|
+
> - [Download examples](https://github.com/imgly/cesdk-web-examples/archive/refs/tags/release-$UBQ_VERSION$.zip)
|
|
14
|
+
> - [View source on GitHub](https://github.com/imgly/cesdk-web-examples/tree/release-$UBQ_VERSION$/guides-rules-lock-content-browser)
|
|
15
|
+
> - [Open in StackBlitz](https://stackblitz.com/github/imgly/cesdk-web-examples/tree/v$UBQ_VERSION$/guides-rules-lock-content-browser)
|
|
16
|
+
> - [Live demo](https://img.ly/docs/cesdk/examples/guides-rules-lock-content-browser/)
|
|
17
|
+
|
|
18
|
+

|
|
19
|
+
|
|
20
|
+
CE.SDK uses **scopes** to control what users can modify in a design. Each scope gates a specific capability—moving, resizing, text editing, image replacement, and more. The permission system has two layers: **global scopes** set defaults for the entire editor, and **block-level scopes** override those defaults when the global scope is set to `Defer`.
|
|
21
|
+
|
|
22
|
+
```typescript file=@cesdk_web_examples/guides-rules-lock-content-browser/browser.ts reference-only
|
|
23
|
+
import type {
|
|
24
|
+
CreativeEngine,
|
|
25
|
+
EditorPlugin,
|
|
26
|
+
EditorPluginContext
|
|
27
|
+
} from '@cesdk/cesdk-js';
|
|
28
|
+
import packageJson from './package.json';
|
|
29
|
+
|
|
30
|
+
import {
|
|
31
|
+
BlurAssetSource,
|
|
32
|
+
ColorPaletteAssetSource,
|
|
33
|
+
CropPresetsAssetSource,
|
|
34
|
+
DemoAssetSources,
|
|
35
|
+
EffectsAssetSource,
|
|
36
|
+
FiltersAssetSource,
|
|
37
|
+
PagePresetsAssetSource,
|
|
38
|
+
StickerAssetSource,
|
|
39
|
+
TextAssetSource,
|
|
40
|
+
TextComponentAssetSource,
|
|
41
|
+
TypefaceAssetSource,
|
|
42
|
+
UploadAssetSources,
|
|
43
|
+
VectorShapeAssetSource
|
|
44
|
+
} from '@cesdk/cesdk-js/plugins';
|
|
45
|
+
import { DesignEditorConfig } from './design-editor/plugin';
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* CE.SDK Plugin: Lock Content Guide
|
|
49
|
+
*
|
|
50
|
+
* Demonstrates how to use scopes to lock design elements and control what users can modify.
|
|
51
|
+
*/
|
|
52
|
+
class Example implements EditorPlugin {
|
|
53
|
+
name = packageJson.name;
|
|
54
|
+
version = packageJson.version;
|
|
55
|
+
|
|
56
|
+
async initialize({ cesdk }: EditorPluginContext): Promise<void> {
|
|
57
|
+
if (!cesdk) {
|
|
58
|
+
throw new Error('CE.SDK instance is required for this plugin');
|
|
59
|
+
}
|
|
60
|
+
await cesdk.addPlugin(new DesignEditorConfig());
|
|
61
|
+
|
|
62
|
+
// Add asset source plugins
|
|
63
|
+
await cesdk.addPlugin(new BlurAssetSource());
|
|
64
|
+
await cesdk.addPlugin(new ColorPaletteAssetSource());
|
|
65
|
+
await cesdk.addPlugin(new CropPresetsAssetSource());
|
|
66
|
+
await cesdk.addPlugin(
|
|
67
|
+
new UploadAssetSources({ include: ['ly.img.image.upload'] })
|
|
68
|
+
);
|
|
69
|
+
await cesdk.addPlugin(
|
|
70
|
+
new DemoAssetSources({
|
|
71
|
+
include: [
|
|
72
|
+
'ly.img.templates.blank.*',
|
|
73
|
+
'ly.img.templates.presentation.*',
|
|
74
|
+
'ly.img.templates.print.*',
|
|
75
|
+
'ly.img.templates.social.*',
|
|
76
|
+
'ly.img.image.*'
|
|
77
|
+
]
|
|
78
|
+
})
|
|
79
|
+
);
|
|
80
|
+
await cesdk.addPlugin(new EffectsAssetSource());
|
|
81
|
+
await cesdk.addPlugin(new FiltersAssetSource());
|
|
82
|
+
await cesdk.addPlugin(new PagePresetsAssetSource());
|
|
83
|
+
await cesdk.addPlugin(new StickerAssetSource());
|
|
84
|
+
await cesdk.addPlugin(new TextAssetSource());
|
|
85
|
+
await cesdk.addPlugin(new TextComponentAssetSource());
|
|
86
|
+
await cesdk.addPlugin(new TypefaceAssetSource());
|
|
87
|
+
await cesdk.addPlugin(new VectorShapeAssetSource());
|
|
88
|
+
|
|
89
|
+
await cesdk.actions.run('scene.create', {
|
|
90
|
+
page: { width: 1200, height: 800, unit: 'Pixel' }
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
const engine = cesdk.engine;
|
|
94
|
+
const page = engine.block.findByType('page')[0];
|
|
95
|
+
|
|
96
|
+
// Create sample content to demonstrate locking
|
|
97
|
+
// Layout: 2x2 grid centered on page (1200x800)
|
|
98
|
+
const imageUri = 'https://img.ly/static/ubq_samples/sample_1.jpg';
|
|
99
|
+
|
|
100
|
+
// Create an image block that will be fully locked (top-left)
|
|
101
|
+
const lockedImage = await engine.block.addImage(imageUri, {
|
|
102
|
+
size: { width: 300, height: 200 }
|
|
103
|
+
});
|
|
104
|
+
engine.block.setPositionX(lockedImage, 185);
|
|
105
|
+
engine.block.setPositionY(lockedImage, 70);
|
|
106
|
+
engine.block.setName(lockedImage, 'Locked Image');
|
|
107
|
+
engine.block.appendChild(page, lockedImage);
|
|
108
|
+
|
|
109
|
+
// Create a text block that allows text editing only (top-right)
|
|
110
|
+
const editableText = engine.block.create('text');
|
|
111
|
+
engine.block.setString(editableText, 'text/text', 'Edit me!');
|
|
112
|
+
engine.block.setPositionX(editableText, 565);
|
|
113
|
+
engine.block.setPositionY(editableText, 70);
|
|
114
|
+
engine.block.setWidth(editableText, 450);
|
|
115
|
+
engine.block.setHeight(editableText, 200);
|
|
116
|
+
engine.block.setFloat(editableText, 'text/fontSize', 90);
|
|
117
|
+
engine.block.setName(editableText, 'Editable Text');
|
|
118
|
+
engine.block.appendChild(page, editableText);
|
|
119
|
+
|
|
120
|
+
// Create an image block that allows image replacement only (bottom-left)
|
|
121
|
+
const replaceableImage = await engine.block.addImage(
|
|
122
|
+
'https://img.ly/static/ubq_samples/sample_2.jpg',
|
|
123
|
+
{ size: { width: 300, height: 200 } }
|
|
124
|
+
);
|
|
125
|
+
engine.block.setPositionX(replaceableImage, 185);
|
|
126
|
+
engine.block.setPositionY(replaceableImage, 380);
|
|
127
|
+
engine.block.setName(replaceableImage, 'Replaceable Image');
|
|
128
|
+
engine.block.appendChild(page, replaceableImage);
|
|
129
|
+
|
|
130
|
+
// Create a movable shape (bottom-right)
|
|
131
|
+
const movableShape = engine.block.create('graphic');
|
|
132
|
+
engine.block.setShape(movableShape, engine.block.createShape('rect'));
|
|
133
|
+
const shapeFill = engine.block.createFill('color');
|
|
134
|
+
engine.block.setColor(shapeFill, 'fill/color/value', {
|
|
135
|
+
r: 0.2,
|
|
136
|
+
g: 0.6,
|
|
137
|
+
b: 0.9,
|
|
138
|
+
a: 1.0
|
|
139
|
+
});
|
|
140
|
+
engine.block.setFill(movableShape, shapeFill);
|
|
141
|
+
engine.block.setPositionX(movableShape, 565);
|
|
142
|
+
engine.block.setPositionY(movableShape, 380);
|
|
143
|
+
engine.block.setWidth(movableShape, 200);
|
|
144
|
+
engine.block.setHeight(movableShape, 200);
|
|
145
|
+
engine.block.setName(movableShape, 'Movable Shape');
|
|
146
|
+
engine.block.appendChild(page, movableShape);
|
|
147
|
+
|
|
148
|
+
// Add description labels below each block
|
|
149
|
+
const labelFontSize = 48;
|
|
150
|
+
const labelY1 = 280; // Below row 1
|
|
151
|
+
const labelY2 = 590; // Below row 2
|
|
152
|
+
|
|
153
|
+
const label1 = engine.block.create('text');
|
|
154
|
+
engine.block.setString(label1, 'text/text', 'Fully Locked');
|
|
155
|
+
engine.block.setPositionX(label1, 185);
|
|
156
|
+
engine.block.setPositionY(label1, labelY1);
|
|
157
|
+
engine.block.setWidth(label1, 300);
|
|
158
|
+
engine.block.setHeight(label1, 60);
|
|
159
|
+
engine.block.setFloat(label1, 'text/fontSize', labelFontSize);
|
|
160
|
+
engine.block.setEnum(label1, 'text/horizontalAlignment', 'Center');
|
|
161
|
+
engine.block.appendChild(page, label1);
|
|
162
|
+
|
|
163
|
+
const label2 = engine.block.create('text');
|
|
164
|
+
engine.block.setString(label2, 'text/text', 'Text Editable');
|
|
165
|
+
engine.block.setPositionX(label2, 565);
|
|
166
|
+
engine.block.setPositionY(label2, labelY1);
|
|
167
|
+
engine.block.setWidth(label2, 450);
|
|
168
|
+
engine.block.setHeight(label2, 60);
|
|
169
|
+
engine.block.setFloat(label2, 'text/fontSize', labelFontSize);
|
|
170
|
+
engine.block.setEnum(label2, 'text/horizontalAlignment', 'Center');
|
|
171
|
+
engine.block.appendChild(page, label2);
|
|
172
|
+
|
|
173
|
+
const label3 = engine.block.create('text');
|
|
174
|
+
engine.block.setString(label3, 'text/text', 'Image Replaceable');
|
|
175
|
+
engine.block.setPositionX(label3, 185);
|
|
176
|
+
engine.block.setPositionY(label3, labelY2);
|
|
177
|
+
engine.block.setWidth(label3, 300);
|
|
178
|
+
engine.block.setHeight(label3, 60);
|
|
179
|
+
engine.block.setFloat(label3, 'text/fontSize', labelFontSize);
|
|
180
|
+
engine.block.setEnum(label3, 'text/horizontalAlignment', 'Center');
|
|
181
|
+
engine.block.appendChild(page, label3);
|
|
182
|
+
|
|
183
|
+
const label4 = engine.block.create('text');
|
|
184
|
+
engine.block.setString(label4, 'text/text', 'Move & Resize');
|
|
185
|
+
engine.block.setPositionX(label4, 565);
|
|
186
|
+
engine.block.setPositionY(label4, labelY2);
|
|
187
|
+
engine.block.setWidth(label4, 200);
|
|
188
|
+
engine.block.setHeight(label4, 60);
|
|
189
|
+
engine.block.setFloat(label4, 'text/fontSize', labelFontSize);
|
|
190
|
+
engine.block.setEnum(label4, 'text/horizontalAlignment', 'Center');
|
|
191
|
+
engine.block.appendChild(page, label4);
|
|
192
|
+
|
|
193
|
+
// Get all available scopes
|
|
194
|
+
const allScopes = engine.editor.findAllScopes();
|
|
195
|
+
// eslint-disable-next-line no-console
|
|
196
|
+
console.log('Available scopes:', allScopes);
|
|
197
|
+
|
|
198
|
+
// Step 1: Lock everything by setting all global scopes to 'Deny'
|
|
199
|
+
for (const scope of allScopes) {
|
|
200
|
+
engine.editor.setGlobalScope(scope, 'Deny');
|
|
201
|
+
}
|
|
202
|
+
// eslint-disable-next-line no-console
|
|
203
|
+
console.log('All scopes locked globally');
|
|
204
|
+
|
|
205
|
+
// Enable selection for interactive blocks (required for any interaction)
|
|
206
|
+
engine.editor.setGlobalScope('editor/select', 'Defer');
|
|
207
|
+
engine.block.setScopeEnabled(editableText, 'editor/select', true);
|
|
208
|
+
engine.block.setScopeEnabled(replaceableImage, 'editor/select', true);
|
|
209
|
+
engine.block.setScopeEnabled(movableShape, 'editor/select', true);
|
|
210
|
+
|
|
211
|
+
// Step 2: Allow text editing on specific blocks
|
|
212
|
+
// Set text/edit scope to 'Defer' so block-level settings take effect
|
|
213
|
+
engine.editor.setGlobalScope('text/edit', 'Defer');
|
|
214
|
+
engine.editor.setGlobalScope('text/character', 'Defer');
|
|
215
|
+
|
|
216
|
+
// Enable text editing on the editable text block
|
|
217
|
+
engine.block.setScopeEnabled(editableText, 'text/edit', true);
|
|
218
|
+
engine.block.setScopeEnabled(editableText, 'text/character', true);
|
|
219
|
+
// eslint-disable-next-line no-console
|
|
220
|
+
console.log(
|
|
221
|
+
'Text editing enabled for:',
|
|
222
|
+
engine.block.getName(editableText)
|
|
223
|
+
);
|
|
224
|
+
|
|
225
|
+
// Step 3: Allow image replacement on specific blocks
|
|
226
|
+
// Set fill/change scope to 'Defer'
|
|
227
|
+
engine.editor.setGlobalScope('fill/change', 'Defer');
|
|
228
|
+
|
|
229
|
+
// Enable image replacement on the replaceable image block
|
|
230
|
+
engine.block.setScopeEnabled(replaceableImage, 'fill/change', true);
|
|
231
|
+
// eslint-disable-next-line no-console
|
|
232
|
+
console.log(
|
|
233
|
+
'Image replacement enabled for:',
|
|
234
|
+
engine.block.getName(replaceableImage)
|
|
235
|
+
);
|
|
236
|
+
|
|
237
|
+
// Step 4: Allow repositioning of specific blocks
|
|
238
|
+
// Set layer/move scope to 'Defer'
|
|
239
|
+
engine.editor.setGlobalScope('layer/move', 'Defer');
|
|
240
|
+
engine.editor.setGlobalScope('layer/resize', 'Defer');
|
|
241
|
+
|
|
242
|
+
// Enable movement and resizing on the movable shape
|
|
243
|
+
engine.block.setScopeEnabled(movableShape, 'layer/move', true);
|
|
244
|
+
engine.block.setScopeEnabled(movableShape, 'layer/resize', true);
|
|
245
|
+
// eslint-disable-next-line no-console
|
|
246
|
+
console.log(
|
|
247
|
+
'Position adjustment enabled for:',
|
|
248
|
+
engine.block.getName(movableShape)
|
|
249
|
+
);
|
|
250
|
+
|
|
251
|
+
// Step 5: Verify the effective permissions
|
|
252
|
+
this.logPermissions(engine, 'Locked Image', lockedImage);
|
|
253
|
+
this.logPermissions(engine, 'Editable Text', editableText);
|
|
254
|
+
this.logPermissions(engine, 'Replaceable Image', replaceableImage);
|
|
255
|
+
this.logPermissions(engine, 'Movable Shape', movableShape);
|
|
256
|
+
|
|
257
|
+
// Zoom to fit the page
|
|
258
|
+
await engine.scene.zoomToBlock(page, {
|
|
259
|
+
padding: { left: 40, top: 40, right: 40, bottom: 40 }
|
|
260
|
+
});
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
private logPermissions(
|
|
264
|
+
engine: CreativeEngine,
|
|
265
|
+
name: string,
|
|
266
|
+
blockId: number
|
|
267
|
+
): void {
|
|
268
|
+
const canMove = engine.block.isAllowedByScope(blockId, 'layer/move');
|
|
269
|
+
const canResize = engine.block.isAllowedByScope(blockId, 'layer/resize');
|
|
270
|
+
const canEditText = engine.block.isAllowedByScope(blockId, 'text/edit');
|
|
271
|
+
const canChangeFill = engine.block.isAllowedByScope(blockId, 'fill/change');
|
|
272
|
+
const canDelete = engine.block.isAllowedByScope(
|
|
273
|
+
blockId,
|
|
274
|
+
'lifecycle/destroy'
|
|
275
|
+
);
|
|
276
|
+
|
|
277
|
+
// eslint-disable-next-line no-console
|
|
278
|
+
console.log(`Permissions for "${name}":`);
|
|
279
|
+
// eslint-disable-next-line no-console
|
|
280
|
+
console.log(` - Move: ${canMove}`);
|
|
281
|
+
// eslint-disable-next-line no-console
|
|
282
|
+
console.log(` - Resize: ${canResize}`);
|
|
283
|
+
// eslint-disable-next-line no-console
|
|
284
|
+
console.log(` - Edit text: ${canEditText}`);
|
|
285
|
+
// eslint-disable-next-line no-console
|
|
286
|
+
console.log(` - Change fill: ${canChangeFill}`);
|
|
287
|
+
// eslint-disable-next-line no-console
|
|
288
|
+
console.log(` - Delete: ${canDelete}`);
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
export default Example;
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
This guide covers how to discover available scopes, lock an entire design, and selectively enable specific editing capabilities on individual blocks.
|
|
296
|
+
|
|
297
|
+
## Understanding the Scope Permission Model
|
|
298
|
+
|
|
299
|
+
Global and block-level scopes combine to determine whether an operation is permitted. The global scope can be set to one of three values:
|
|
300
|
+
|
|
301
|
+
| Global Scope | Block Scope | Result |
|
|
302
|
+
| ------------ | ----------- | --------- |
|
|
303
|
+
| `Allow` | any | Permitted |
|
|
304
|
+
| `Deny` | any | Blocked |
|
|
305
|
+
| `Defer` | enabled | Permitted |
|
|
306
|
+
| `Defer` | disabled | Blocked |
|
|
307
|
+
|
|
308
|
+
When global is `Allow`, the operation is always permitted regardless of block settings. When global is `Deny`, it's always blocked. When global is `Defer`, the block-level enabled/disabled state determines the outcome.
|
|
309
|
+
|
|
310
|
+
## Discovering Available Scopes
|
|
311
|
+
|
|
312
|
+
We can retrieve all available scope names using `engine.editor.findAllScopes()`. This returns an array of scope identifiers that can be used with the global and block-level scope APIs.
|
|
313
|
+
|
|
314
|
+
```typescript highlight=highlight-find-all-scopes
|
|
315
|
+
// Get all available scopes
|
|
316
|
+
const allScopes = engine.editor.findAllScopes();
|
|
317
|
+
// eslint-disable-next-line no-console
|
|
318
|
+
console.log('Available scopes:', allScopes);
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
## Locking an Entire Design
|
|
322
|
+
|
|
323
|
+
To lock everything, we iterate through all scopes and set each global scope to `Deny`. This prevents any editing operation on any block in the design.
|
|
324
|
+
|
|
325
|
+
```typescript highlight=highlight-lock-all
|
|
326
|
+
// Step 1: Lock everything by setting all global scopes to 'Deny'
|
|
327
|
+
for (const scope of allScopes) {
|
|
328
|
+
engine.editor.setGlobalScope(scope, 'Deny');
|
|
329
|
+
}
|
|
330
|
+
// eslint-disable-next-line no-console
|
|
331
|
+
console.log('All scopes locked globally');
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
**Important:** When locking all scopes, the `editor/select` scope is also locked. Users cannot interact with a block they cannot select. Before enabling specific capabilities, you must also enable `editor/select` on blocks users should be able to interact with.
|
|
335
|
+
|
|
336
|
+
## Selective Locking Patterns
|
|
337
|
+
|
|
338
|
+
In most real-world scenarios, you want to lock some aspects while allowing others. Here are common patterns for partial locking.
|
|
339
|
+
|
|
340
|
+
### Allowing Text Editing
|
|
341
|
+
|
|
342
|
+
To allow users to edit text content but nothing else, we set the `text/edit` and `text/character` global scopes to `Defer`, then enable them on specific text blocks.
|
|
343
|
+
|
|
344
|
+
```typescript highlight=highlight-text-edit
|
|
345
|
+
// Step 2: Allow text editing on specific blocks
|
|
346
|
+
// Set text/edit scope to 'Defer' so block-level settings take effect
|
|
347
|
+
engine.editor.setGlobalScope('text/edit', 'Defer');
|
|
348
|
+
engine.editor.setGlobalScope('text/character', 'Defer');
|
|
349
|
+
|
|
350
|
+
// Enable text editing on the editable text block
|
|
351
|
+
engine.block.setScopeEnabled(editableText, 'text/edit', true);
|
|
352
|
+
engine.block.setScopeEnabled(editableText, 'text/character', true);
|
|
353
|
+
// eslint-disable-next-line no-console
|
|
354
|
+
console.log('Text editing enabled for:', engine.block.getName(editableText));
|
|
355
|
+
```
|
|
356
|
+
|
|
357
|
+
### Allowing Image Replacement
|
|
358
|
+
|
|
359
|
+
To allow users to swap images while protecting layout, we set the `fill/change` global scope to `Defer` and enable it on specific image blocks.
|
|
360
|
+
|
|
361
|
+
```typescript highlight=highlight-image-replace
|
|
362
|
+
// Step 3: Allow image replacement on specific blocks
|
|
363
|
+
// Set fill/change scope to 'Defer'
|
|
364
|
+
engine.editor.setGlobalScope('fill/change', 'Defer');
|
|
365
|
+
|
|
366
|
+
// Enable image replacement on the replaceable image block
|
|
367
|
+
engine.block.setScopeEnabled(replaceableImage, 'fill/change', true);
|
|
368
|
+
// eslint-disable-next-line no-console
|
|
369
|
+
console.log(
|
|
370
|
+
'Image replacement enabled for:',
|
|
371
|
+
engine.block.getName(replaceableImage)
|
|
372
|
+
);
|
|
373
|
+
```
|
|
374
|
+
|
|
375
|
+
### Allowing Position Adjustments
|
|
376
|
+
|
|
377
|
+
To allow repositioning of specific elements, we set `layer/move` and `layer/resize` to `Defer` globally, then enable them on selected blocks.
|
|
378
|
+
|
|
379
|
+
```typescript highlight=highlight-position-adjust
|
|
380
|
+
// Step 4: Allow repositioning of specific blocks
|
|
381
|
+
// Set layer/move scope to 'Defer'
|
|
382
|
+
engine.editor.setGlobalScope('layer/move', 'Defer');
|
|
383
|
+
engine.editor.setGlobalScope('layer/resize', 'Defer');
|
|
384
|
+
|
|
385
|
+
// Enable movement and resizing on the movable shape
|
|
386
|
+
engine.block.setScopeEnabled(movableShape, 'layer/move', true);
|
|
387
|
+
engine.block.setScopeEnabled(movableShape, 'layer/resize', true);
|
|
388
|
+
// eslint-disable-next-line no-console
|
|
389
|
+
console.log(
|
|
390
|
+
'Position adjustment enabled for:',
|
|
391
|
+
engine.block.getName(movableShape)
|
|
392
|
+
);
|
|
393
|
+
```
|
|
394
|
+
|
|
395
|
+
## Checking Permissions
|
|
396
|
+
|
|
397
|
+
We can verify the effective permission on a block using `engine.block.isAllowedByScope()`. This returns `true` if the operation is permitted after evaluating both global and block-level settings.
|
|
398
|
+
|
|
399
|
+
```typescript highlight=highlight-log-permissions
|
|
400
|
+
private logPermissions(
|
|
401
|
+
engine: CreativeEngine,
|
|
402
|
+
name: string,
|
|
403
|
+
blockId: number
|
|
404
|
+
): void {
|
|
405
|
+
const canMove = engine.block.isAllowedByScope(blockId, 'layer/move');
|
|
406
|
+
const canResize = engine.block.isAllowedByScope(blockId, 'layer/resize');
|
|
407
|
+
const canEditText = engine.block.isAllowedByScope(blockId, 'text/edit');
|
|
408
|
+
const canChangeFill = engine.block.isAllowedByScope(blockId, 'fill/change');
|
|
409
|
+
const canDelete = engine.block.isAllowedByScope(
|
|
410
|
+
blockId,
|
|
411
|
+
'lifecycle/destroy'
|
|
412
|
+
);
|
|
413
|
+
|
|
414
|
+
// eslint-disable-next-line no-console
|
|
415
|
+
console.log(`Permissions for "${name}":`);
|
|
416
|
+
// eslint-disable-next-line no-console
|
|
417
|
+
console.log(` - Move: ${canMove}`);
|
|
418
|
+
// eslint-disable-next-line no-console
|
|
419
|
+
console.log(` - Resize: ${canResize}`);
|
|
420
|
+
// eslint-disable-next-line no-console
|
|
421
|
+
console.log(` - Edit text: ${canEditText}`);
|
|
422
|
+
// eslint-disable-next-line no-console
|
|
423
|
+
console.log(` - Change fill: ${canChangeFill}`);
|
|
424
|
+
// eslint-disable-next-line no-console
|
|
425
|
+
console.log(` - Delete: ${canDelete}`);
|
|
426
|
+
}
|
|
427
|
+
```
|
|
428
|
+
|
|
429
|
+
Use `engine.block.isScopeEnabled()` to check just the block-level setting, and `engine.editor.getGlobalScope()` to check the global setting.
|
|
430
|
+
|
|
431
|
+
## Available Scopes Reference
|
|
432
|
+
|
|
433
|
+
| Scope | Description |
|
|
434
|
+
| ------------------------ | --------------------------------------- |
|
|
435
|
+
| `layer/move` | Move block position |
|
|
436
|
+
| `layer/resize` | Resize block dimensions |
|
|
437
|
+
| `layer/rotate` | Rotate block |
|
|
438
|
+
| `layer/flip` | Flip block horizontally or vertically |
|
|
439
|
+
| `layer/crop` | Crop block content |
|
|
440
|
+
| `layer/opacity` | Change block opacity |
|
|
441
|
+
| `layer/blendMode` | Change blend mode |
|
|
442
|
+
| `layer/visibility` | Toggle block visibility |
|
|
443
|
+
| `layer/clipping` | Change clipping behavior |
|
|
444
|
+
| `fill/change` | Change fill content |
|
|
445
|
+
| `fill/changeType` | Change fill type |
|
|
446
|
+
| `stroke/change` | Change stroke properties |
|
|
447
|
+
| `shape/change` | Change shape type |
|
|
448
|
+
| `text/edit` | Edit text content |
|
|
449
|
+
| `text/character` | Change text styling (font, size, color) |
|
|
450
|
+
| `appearance/adjustments` | Change color adjustments |
|
|
451
|
+
| `appearance/filter` | Apply or change filters |
|
|
452
|
+
| `appearance/effect` | Apply or change effects |
|
|
453
|
+
| `appearance/blur` | Apply or change blur |
|
|
454
|
+
| `appearance/shadow` | Apply or change shadows |
|
|
455
|
+
| `appearance/animation` | Apply or change animations |
|
|
456
|
+
| `lifecycle/destroy` | Delete the block |
|
|
457
|
+
| `lifecycle/duplicate` | Duplicate the block |
|
|
458
|
+
| `editor/add` | Add new blocks |
|
|
459
|
+
| `editor/select` | Select blocks |
|
|
460
|
+
|
|
461
|
+
## Troubleshooting
|
|
462
|
+
|
|
463
|
+
| Issue | Cause | Solution |
|
|
464
|
+
| ------------------------------------ | ------------------------------------- | ----------------------------------------------------------- |
|
|
465
|
+
| Block still editable | Global scope set to `Allow` | Change global scope to `Deny` or `Defer` |
|
|
466
|
+
| Block unexpectedly locked | Global scope set to `Deny` | Set global scope to `Defer` and enable block-level scope |
|
|
467
|
+
| Can't interact with unlocked block | `editor/select` scope is locked | Enable `editor/select` on blocks users should interact with |
|
|
468
|
+
| Permission check returns wrong value | Checking wrong scope level | Use `isAllowedByScope()` for effective permission |
|
|
469
|
+
| New SDK scopes not locked | Locking code doesn't cover new scopes | Use `findAllScopes()` dynamically |
|
|
470
|
+
|
|
471
|
+
---
|
|
472
|
+
|
|
473
|
+
## More Resources
|
|
474
|
+
|
|
475
|
+
- **[Vanilla JS/TS Documentation Index](https://img.ly/docs/cesdk/js.md)** - Browse all Vanilla JS/TS documentation
|
|
476
|
+
- **[Complete Documentation](./llms-full.txt.md)** - Full documentation in one file (for LLMs)
|
|
477
|
+
- **[Web Documentation](./js.md)** - Interactive documentation with examples
|
|
478
|
+
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
|