@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,514 @@
|
|
|
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) > [Overview](./rules/overview.md)
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Learn how CE.SDK's rules system enforces design constraints and controls editing permissions through the scopes mechanism.
|
|
8
|
+
|
|
9
|
+

|
|
10
|
+
|
|
11
|
+
> **Reading time:** 5 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-rules-overview-browser)
|
|
17
|
+
> - [Open in StackBlitz](https://stackblitz.com/github/imgly/cesdk-web-examples/tree/v$UBQ_VERSION$/guides-rules-overview-browser)
|
|
18
|
+
> - [Live demo](https://img.ly/docs/cesdk/examples/guides-rules-overview-browser/)
|
|
19
|
+
|
|
20
|
+
In CE.SDK, "rules" refer to design constraints and guardrails that control what editing operations are permitted. The primary mechanism for enforcing rules is the **scopes system**—permission flags that enable you to create guided editing experiences maintaining brand consistency, ensuring design quality, and preventing unauthorized modifications.
|
|
21
|
+
|
|
22
|
+
```typescript file=@cesdk_web_examples/guides-rules-overview-browser/browser.ts reference-only
|
|
23
|
+
import type { EditorPlugin, EditorPluginContext } from '@cesdk/cesdk-js';
|
|
24
|
+
|
|
25
|
+
import {
|
|
26
|
+
BlurAssetSource,
|
|
27
|
+
ColorPaletteAssetSource,
|
|
28
|
+
CropPresetsAssetSource,
|
|
29
|
+
DemoAssetSources,
|
|
30
|
+
EffectsAssetSource,
|
|
31
|
+
FiltersAssetSource,
|
|
32
|
+
PagePresetsAssetSource,
|
|
33
|
+
StickerAssetSource,
|
|
34
|
+
TextAssetSource,
|
|
35
|
+
TextComponentAssetSource,
|
|
36
|
+
TypefaceAssetSource,
|
|
37
|
+
UploadAssetSources,
|
|
38
|
+
VectorShapeAssetSource
|
|
39
|
+
} from '@cesdk/cesdk-js/plugins';
|
|
40
|
+
import { DesignEditorConfig } from './design-editor/plugin';
|
|
41
|
+
import packageJson from './package.json';
|
|
42
|
+
import { calculatePyramidLayout } from './utils';
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* CE.SDK Plugin: Rules Overview Guide
|
|
46
|
+
*
|
|
47
|
+
* Demonstrates the scopes system for enforcing editing rules and constraints.
|
|
48
|
+
* Shows global scopes, block-level scopes, and how they control editing operations
|
|
49
|
+
* across different scope categories including layer, appearance, content, and lifecycle scopes.
|
|
50
|
+
*/
|
|
51
|
+
class Example implements EditorPlugin {
|
|
52
|
+
name = packageJson.name;
|
|
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
|
+
await cesdk.addPlugin(new DesignEditorConfig());
|
|
60
|
+
|
|
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
|
+
await cesdk.actions.run('scene.create', {
|
|
89
|
+
page: { width: 1600, height: 1000, unit: 'Pixel' }
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
const engine = cesdk.engine;
|
|
93
|
+
const page = engine.block.findByType('page')[0];
|
|
94
|
+
|
|
95
|
+
const pageWidth = engine.block.getWidth(page);
|
|
96
|
+
const pageHeight = engine.block.getHeight(page);
|
|
97
|
+
|
|
98
|
+
// Calculate grid layout using utility function
|
|
99
|
+
const layout = calculatePyramidLayout(pageWidth, pageHeight);
|
|
100
|
+
|
|
101
|
+
// Different sample images for each block
|
|
102
|
+
const imageUris = [
|
|
103
|
+
'https://img.ly/static/ubq_samples/sample_1.jpg',
|
|
104
|
+
'https://img.ly/static/ubq_samples/sample_2.jpg',
|
|
105
|
+
'https://img.ly/static/ubq_samples/sample_3.jpg',
|
|
106
|
+
'https://img.ly/static/ubq_samples/sample_4.jpg',
|
|
107
|
+
'https://img.ly/static/ubq_samples/sample_5.jpg'
|
|
108
|
+
];
|
|
109
|
+
|
|
110
|
+
// Set global scopes to Defer - this allows block-level control
|
|
111
|
+
// Layer operations
|
|
112
|
+
engine.editor.setGlobalScope('layer/move', 'Defer');
|
|
113
|
+
engine.editor.setGlobalScope('layer/resize', 'Defer');
|
|
114
|
+
engine.editor.setGlobalScope('layer/rotate', 'Defer');
|
|
115
|
+
engine.editor.setGlobalScope('layer/flip', 'Defer');
|
|
116
|
+
engine.editor.setGlobalScope('layer/crop', 'Defer');
|
|
117
|
+
engine.editor.setGlobalScope('layer/opacity', 'Defer');
|
|
118
|
+
engine.editor.setGlobalScope('layer/blendMode', 'Defer');
|
|
119
|
+
engine.editor.setGlobalScope('layer/visibility', 'Defer');
|
|
120
|
+
engine.editor.setGlobalScope('layer/clipping', 'Defer');
|
|
121
|
+
|
|
122
|
+
// Appearance
|
|
123
|
+
engine.editor.setGlobalScope('appearance/adjustments', 'Defer');
|
|
124
|
+
engine.editor.setGlobalScope('appearance/filter', 'Defer');
|
|
125
|
+
engine.editor.setGlobalScope('appearance/effect', 'Defer');
|
|
126
|
+
engine.editor.setGlobalScope('appearance/blur', 'Defer');
|
|
127
|
+
engine.editor.setGlobalScope('appearance/shadow', 'Defer');
|
|
128
|
+
|
|
129
|
+
// Content editing
|
|
130
|
+
engine.editor.setGlobalScope('fill/change', 'Defer');
|
|
131
|
+
engine.editor.setGlobalScope('fill/changeType', 'Defer');
|
|
132
|
+
engine.editor.setGlobalScope('stroke/change', 'Defer');
|
|
133
|
+
|
|
134
|
+
// Lifecycle
|
|
135
|
+
engine.editor.setGlobalScope('lifecycle/destroy', 'Defer');
|
|
136
|
+
engine.editor.setGlobalScope('lifecycle/duplicate', 'Defer');
|
|
137
|
+
engine.editor.setGlobalScope('editor/add', 'Defer');
|
|
138
|
+
engine.editor.setGlobalScope('editor/select', 'Defer');
|
|
139
|
+
|
|
140
|
+
// Create 5 image blocks - one for each scope category plus fully enabled
|
|
141
|
+
// Block 1: Layer Operations Disabled (top row)
|
|
142
|
+
const layerBlock = await engine.block.addImage(imageUris[0], {
|
|
143
|
+
size: { width: layout.blockWidth, height: layout.blockHeight }
|
|
144
|
+
});
|
|
145
|
+
const pos1 = layout.getBlockPosition(0);
|
|
146
|
+
engine.block.setPositionX(layerBlock, pos1.x);
|
|
147
|
+
engine.block.setPositionY(layerBlock, pos1.y);
|
|
148
|
+
engine.block.appendChild(page, layerBlock);
|
|
149
|
+
engine.block.setName(layerBlock, 'Layer Operations Disabled');
|
|
150
|
+
|
|
151
|
+
// Block 2: Appearance Disabled (top row)
|
|
152
|
+
const appearanceBlock = await engine.block.addImage(imageUris[1], {
|
|
153
|
+
size: { width: layout.blockWidth, height: layout.blockHeight }
|
|
154
|
+
});
|
|
155
|
+
const pos2 = layout.getBlockPosition(1);
|
|
156
|
+
engine.block.setPositionX(appearanceBlock, pos2.x);
|
|
157
|
+
engine.block.setPositionY(appearanceBlock, pos2.y);
|
|
158
|
+
engine.block.appendChild(page, appearanceBlock);
|
|
159
|
+
engine.block.setName(appearanceBlock, 'Appearance Disabled');
|
|
160
|
+
|
|
161
|
+
// Block 3: Content Editing Disabled (top row)
|
|
162
|
+
const contentBlock = await engine.block.addImage(imageUris[2], {
|
|
163
|
+
size: { width: layout.blockWidth, height: layout.blockHeight }
|
|
164
|
+
});
|
|
165
|
+
const pos3 = layout.getBlockPosition(2);
|
|
166
|
+
engine.block.setPositionX(contentBlock, pos3.x);
|
|
167
|
+
engine.block.setPositionY(contentBlock, pos3.y);
|
|
168
|
+
engine.block.appendChild(page, contentBlock);
|
|
169
|
+
engine.block.setName(contentBlock, 'Content Editing Disabled');
|
|
170
|
+
|
|
171
|
+
// Block 4: All Scopes Disabled (bottom row) - fully locked
|
|
172
|
+
const lockedBlock = await engine.block.addImage(imageUris[3], {
|
|
173
|
+
size: { width: layout.blockWidth, height: layout.blockHeight }
|
|
174
|
+
});
|
|
175
|
+
const pos4 = layout.getBlockPosition(3);
|
|
176
|
+
engine.block.setPositionX(lockedBlock, pos4.x);
|
|
177
|
+
engine.block.setPositionY(lockedBlock, pos4.y);
|
|
178
|
+
engine.block.appendChild(page, lockedBlock);
|
|
179
|
+
engine.block.setName(lockedBlock, 'All Scopes Disabled');
|
|
180
|
+
|
|
181
|
+
// Block 5: Fully Enabled - all scopes enabled (bottom row)
|
|
182
|
+
const enabledBlock = await engine.block.addImage(imageUris[4], {
|
|
183
|
+
size: { width: layout.blockWidth, height: layout.blockHeight }
|
|
184
|
+
});
|
|
185
|
+
const pos5 = layout.getBlockPosition(4);
|
|
186
|
+
engine.block.setPositionX(enabledBlock, pos5.x);
|
|
187
|
+
engine.block.setPositionY(enabledBlock, pos5.y);
|
|
188
|
+
engine.block.appendChild(page, enabledBlock);
|
|
189
|
+
engine.block.setName(enabledBlock, 'All Scopes Enabled');
|
|
190
|
+
|
|
191
|
+
// Block 1: Disable all layer operations
|
|
192
|
+
engine.block.setScopeEnabled(layerBlock, 'layer/move', false);
|
|
193
|
+
engine.block.setScopeEnabled(layerBlock, 'layer/resize', false);
|
|
194
|
+
engine.block.setScopeEnabled(layerBlock, 'layer/rotate', false);
|
|
195
|
+
engine.block.setScopeEnabled(layerBlock, 'layer/flip', false);
|
|
196
|
+
engine.block.setScopeEnabled(layerBlock, 'layer/crop', false);
|
|
197
|
+
engine.block.setScopeEnabled(layerBlock, 'layer/opacity', false);
|
|
198
|
+
engine.block.setScopeEnabled(layerBlock, 'layer/blendMode', false);
|
|
199
|
+
engine.block.setScopeEnabled(layerBlock, 'layer/visibility', false);
|
|
200
|
+
engine.block.setScopeEnabled(layerBlock, 'layer/clipping', false);
|
|
201
|
+
// Keep other scopes enabled
|
|
202
|
+
engine.block.setScopeEnabled(layerBlock, 'appearance/adjustments', true);
|
|
203
|
+
engine.block.setScopeEnabled(layerBlock, 'appearance/filter', true);
|
|
204
|
+
engine.block.setScopeEnabled(layerBlock, 'fill/change', true);
|
|
205
|
+
engine.block.setScopeEnabled(layerBlock, 'lifecycle/destroy', true);
|
|
206
|
+
engine.block.setScopeEnabled(layerBlock, 'lifecycle/duplicate', true);
|
|
207
|
+
engine.block.setScopeEnabled(layerBlock, 'editor/select', true);
|
|
208
|
+
|
|
209
|
+
// Block 2: Disable all appearance scopes
|
|
210
|
+
engine.block.setScopeEnabled(
|
|
211
|
+
appearanceBlock,
|
|
212
|
+
'appearance/adjustments',
|
|
213
|
+
false
|
|
214
|
+
);
|
|
215
|
+
engine.block.setScopeEnabled(appearanceBlock, 'appearance/filter', false);
|
|
216
|
+
engine.block.setScopeEnabled(appearanceBlock, 'appearance/effect', false);
|
|
217
|
+
engine.block.setScopeEnabled(appearanceBlock, 'appearance/blur', false);
|
|
218
|
+
engine.block.setScopeEnabled(appearanceBlock, 'appearance/shadow', false);
|
|
219
|
+
// Keep other scopes enabled
|
|
220
|
+
engine.block.setScopeEnabled(appearanceBlock, 'layer/move', true);
|
|
221
|
+
engine.block.setScopeEnabled(appearanceBlock, 'layer/resize', true);
|
|
222
|
+
engine.block.setScopeEnabled(appearanceBlock, 'layer/rotate', true);
|
|
223
|
+
engine.block.setScopeEnabled(appearanceBlock, 'fill/change', true);
|
|
224
|
+
engine.block.setScopeEnabled(appearanceBlock, 'lifecycle/destroy', true);
|
|
225
|
+
engine.block.setScopeEnabled(appearanceBlock, 'lifecycle/duplicate', true);
|
|
226
|
+
engine.block.setScopeEnabled(appearanceBlock, 'editor/select', true);
|
|
227
|
+
|
|
228
|
+
// Block 3: Disable all content editing scopes
|
|
229
|
+
engine.block.setScopeEnabled(contentBlock, 'fill/change', false);
|
|
230
|
+
engine.block.setScopeEnabled(contentBlock, 'fill/changeType', false);
|
|
231
|
+
engine.block.setScopeEnabled(contentBlock, 'stroke/change', false);
|
|
232
|
+
// Keep other scopes enabled
|
|
233
|
+
engine.block.setScopeEnabled(contentBlock, 'layer/move', true);
|
|
234
|
+
engine.block.setScopeEnabled(contentBlock, 'layer/resize', true);
|
|
235
|
+
engine.block.setScopeEnabled(contentBlock, 'layer/rotate', true);
|
|
236
|
+
engine.block.setScopeEnabled(contentBlock, 'appearance/adjustments', true);
|
|
237
|
+
engine.block.setScopeEnabled(contentBlock, 'appearance/filter', true);
|
|
238
|
+
engine.block.setScopeEnabled(contentBlock, 'lifecycle/destroy', true);
|
|
239
|
+
engine.block.setScopeEnabled(contentBlock, 'lifecycle/duplicate', true);
|
|
240
|
+
engine.block.setScopeEnabled(contentBlock, 'editor/select', true);
|
|
241
|
+
|
|
242
|
+
// Block 4: Disable all scopes (fully locked)
|
|
243
|
+
engine.block.setScopeEnabled(lockedBlock, 'layer/move', false);
|
|
244
|
+
engine.block.setScopeEnabled(lockedBlock, 'layer/resize', false);
|
|
245
|
+
engine.block.setScopeEnabled(lockedBlock, 'layer/rotate', false);
|
|
246
|
+
engine.block.setScopeEnabled(lockedBlock, 'layer/flip', false);
|
|
247
|
+
engine.block.setScopeEnabled(lockedBlock, 'layer/crop', false);
|
|
248
|
+
engine.block.setScopeEnabled(lockedBlock, 'layer/opacity', false);
|
|
249
|
+
engine.block.setScopeEnabled(lockedBlock, 'layer/blendMode', false);
|
|
250
|
+
engine.block.setScopeEnabled(lockedBlock, 'layer/visibility', false);
|
|
251
|
+
engine.block.setScopeEnabled(lockedBlock, 'layer/clipping', false);
|
|
252
|
+
engine.block.setScopeEnabled(lockedBlock, 'appearance/adjustments', false);
|
|
253
|
+
engine.block.setScopeEnabled(lockedBlock, 'appearance/filter', false);
|
|
254
|
+
engine.block.setScopeEnabled(lockedBlock, 'appearance/effect', false);
|
|
255
|
+
engine.block.setScopeEnabled(lockedBlock, 'appearance/blur', false);
|
|
256
|
+
engine.block.setScopeEnabled(lockedBlock, 'appearance/shadow', false);
|
|
257
|
+
engine.block.setScopeEnabled(lockedBlock, 'fill/change', false);
|
|
258
|
+
engine.block.setScopeEnabled(lockedBlock, 'fill/changeType', false);
|
|
259
|
+
engine.block.setScopeEnabled(lockedBlock, 'stroke/change', false);
|
|
260
|
+
engine.block.setScopeEnabled(lockedBlock, 'lifecycle/destroy', false);
|
|
261
|
+
engine.block.setScopeEnabled(lockedBlock, 'lifecycle/duplicate', false);
|
|
262
|
+
engine.block.setScopeEnabled(lockedBlock, 'editor/add', false);
|
|
263
|
+
engine.block.setScopeEnabled(lockedBlock, 'editor/select', false);
|
|
264
|
+
|
|
265
|
+
// Block 5: Enable all scopes (fully editable)
|
|
266
|
+
engine.block.setScopeEnabled(enabledBlock, 'layer/move', true);
|
|
267
|
+
engine.block.setScopeEnabled(enabledBlock, 'layer/resize', true);
|
|
268
|
+
engine.block.setScopeEnabled(enabledBlock, 'layer/rotate', true);
|
|
269
|
+
engine.block.setScopeEnabled(enabledBlock, 'layer/flip', true);
|
|
270
|
+
engine.block.setScopeEnabled(enabledBlock, 'layer/crop', true);
|
|
271
|
+
engine.block.setScopeEnabled(enabledBlock, 'layer/opacity', true);
|
|
272
|
+
engine.block.setScopeEnabled(enabledBlock, 'layer/blendMode', true);
|
|
273
|
+
engine.block.setScopeEnabled(enabledBlock, 'layer/visibility', true);
|
|
274
|
+
engine.block.setScopeEnabled(enabledBlock, 'layer/clipping', true);
|
|
275
|
+
engine.block.setScopeEnabled(enabledBlock, 'appearance/adjustments', true);
|
|
276
|
+
engine.block.setScopeEnabled(enabledBlock, 'appearance/filter', true);
|
|
277
|
+
engine.block.setScopeEnabled(enabledBlock, 'appearance/effect', true);
|
|
278
|
+
engine.block.setScopeEnabled(enabledBlock, 'appearance/blur', true);
|
|
279
|
+
engine.block.setScopeEnabled(enabledBlock, 'appearance/shadow', true);
|
|
280
|
+
engine.block.setScopeEnabled(enabledBlock, 'fill/change', true);
|
|
281
|
+
engine.block.setScopeEnabled(enabledBlock, 'fill/changeType', true);
|
|
282
|
+
engine.block.setScopeEnabled(enabledBlock, 'stroke/change', true);
|
|
283
|
+
engine.block.setScopeEnabled(enabledBlock, 'lifecycle/destroy', true);
|
|
284
|
+
engine.block.setScopeEnabled(enabledBlock, 'lifecycle/duplicate', true);
|
|
285
|
+
engine.block.setScopeEnabled(enabledBlock, 'editor/add', true);
|
|
286
|
+
engine.block.setScopeEnabled(enabledBlock, 'editor/select', true);
|
|
287
|
+
|
|
288
|
+
// Create text labels below each block
|
|
289
|
+
const labels = [
|
|
290
|
+
{ text: 'Layer Operations', constraint: 'Disabled' },
|
|
291
|
+
{ text: 'Appearance', constraint: 'Disabled' },
|
|
292
|
+
{ text: 'Content Editing', constraint: 'Disabled' },
|
|
293
|
+
{ text: 'All Scopes', constraint: 'Disabled' },
|
|
294
|
+
{ text: 'All Scopes', constraint: 'Enabled' }
|
|
295
|
+
];
|
|
296
|
+
|
|
297
|
+
for (let i = 0; i < labels.length; i++) {
|
|
298
|
+
const labelPos = layout.getLabelPosition(i);
|
|
299
|
+
const label = engine.block.create('text');
|
|
300
|
+
engine.block.setWidth(label, layout.blockWidth);
|
|
301
|
+
engine.block.setHeight(label, layout.labelHeight);
|
|
302
|
+
engine.block.setPositionX(label, labelPos.x);
|
|
303
|
+
engine.block.setPositionY(label, labelPos.y);
|
|
304
|
+
engine.block.appendChild(page, label);
|
|
305
|
+
engine.block.replaceText(
|
|
306
|
+
label,
|
|
307
|
+
`${labels[i].text}\n${labels[i].constraint}`
|
|
308
|
+
);
|
|
309
|
+
engine.block.setFloat(label, 'text/fontSize', 48);
|
|
310
|
+
engine.block.setEnum(label, 'text/horizontalAlignment', 'Center');
|
|
311
|
+
engine.block.setEnum(label, 'text/verticalAlignment', 'Top');
|
|
312
|
+
|
|
313
|
+
// Lock the label so it can't be edited
|
|
314
|
+
engine.block.setScopeEnabled(label, 'layer/move', false);
|
|
315
|
+
engine.block.setScopeEnabled(label, 'layer/resize', false);
|
|
316
|
+
engine.block.setScopeEnabled(label, 'lifecycle/destroy', false);
|
|
317
|
+
engine.block.setScopeEnabled(label, 'editor/select', false);
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
// Check if operations are allowed for each block
|
|
321
|
+
const canMoveLayer = engine.block.isAllowedByScope(
|
|
322
|
+
layerBlock,
|
|
323
|
+
'layer/move'
|
|
324
|
+
);
|
|
325
|
+
const canMoveEnabled = engine.block.isAllowedByScope(
|
|
326
|
+
enabledBlock,
|
|
327
|
+
'layer/move'
|
|
328
|
+
);
|
|
329
|
+
const canMoveLocked = engine.block.isAllowedByScope(
|
|
330
|
+
lockedBlock,
|
|
331
|
+
'layer/move'
|
|
332
|
+
);
|
|
333
|
+
|
|
334
|
+
console.log(`Layer block - can move: ${canMoveLayer}`); // false
|
|
335
|
+
console.log(`Enabled block - can move: ${canMoveEnabled}`); // true
|
|
336
|
+
console.log(`Locked block - can move: ${canMoveLocked}`); // false
|
|
337
|
+
|
|
338
|
+
// Demonstrate global Deny - would block all operations regardless of block settings
|
|
339
|
+
// Example: engine.editor.setGlobalScope('layer/flip', 'Deny');
|
|
340
|
+
// This would prevent flipping on ALL blocks, even the fully enabled one
|
|
341
|
+
|
|
342
|
+
// Zoom to fit the page in the viewport
|
|
343
|
+
await engine.scene.zoomToBlock(page, {
|
|
344
|
+
padding: {
|
|
345
|
+
left: 40,
|
|
346
|
+
top: 40,
|
|
347
|
+
right: 40,
|
|
348
|
+
bottom: 40
|
|
349
|
+
}
|
|
350
|
+
});
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
export default Example;
|
|
355
|
+
```
|
|
356
|
+
|
|
357
|
+
This guide covers the scopes system conceptually, including global vs block-level scopes, available scope categories, and how scopes integrate with the UI. For detailed implementation of specific use cases, see the Next Steps section.
|
|
358
|
+
|
|
359
|
+
## What Are Scopes
|
|
360
|
+
|
|
361
|
+
Scopes are permission flags that control specific editing capabilities. Each scope maps to a particular operation category. When a scope is denied for a block, the corresponding editing controls become unavailable in the UI.
|
|
362
|
+
|
|
363
|
+
CE.SDK organizes scopes into four main categories:
|
|
364
|
+
|
|
365
|
+
**Layer operations** — Control positioning and transformation:
|
|
366
|
+
|
|
367
|
+
- `layer/move`, `layer/resize`, `layer/rotate`, `layer/flip`
|
|
368
|
+
- `layer/crop`, `layer/opacity`, `layer/blendMode`
|
|
369
|
+
- `layer/visibility`, `layer/clipping`
|
|
370
|
+
|
|
371
|
+
**Appearance** — Control visual effects and adjustments:
|
|
372
|
+
|
|
373
|
+
- `appearance/adjustments`, `appearance/filter`, `appearance/effect`
|
|
374
|
+
- `appearance/blur`, `appearance/shadow`, `appearance/animation`
|
|
375
|
+
|
|
376
|
+
**Content editing** — Control content modifications:
|
|
377
|
+
|
|
378
|
+
- `text/edit`, `text/character`
|
|
379
|
+
- `fill/change`, `fill/changeType`
|
|
380
|
+
- `stroke/change`, `shape/change`
|
|
381
|
+
|
|
382
|
+
**Lifecycle** — Control block management:
|
|
383
|
+
|
|
384
|
+
- `lifecycle/destroy`, `lifecycle/duplicate`
|
|
385
|
+
- `editor/add`, `editor/select`
|
|
386
|
+
|
|
387
|
+
## Setting Global Scopes
|
|
388
|
+
|
|
389
|
+
Global scopes set editor-wide defaults that apply to all blocks. Use `engine.editor.setGlobalScope()` to configure them with three permission levels:
|
|
390
|
+
|
|
391
|
+
- `'Allow'` — Operation always permitted for all blocks
|
|
392
|
+
- `'Deny'` — Operation always blocked for all blocks
|
|
393
|
+
- `'Defer'` — Defer to each block's individual scope setting
|
|
394
|
+
|
|
395
|
+
```typescript highlight-global-scope
|
|
396
|
+
// Set global scopes to Defer - this allows block-level control
|
|
397
|
+
// Layer operations
|
|
398
|
+
engine.editor.setGlobalScope('layer/move', 'Defer');
|
|
399
|
+
engine.editor.setGlobalScope('layer/resize', 'Defer');
|
|
400
|
+
engine.editor.setGlobalScope('layer/rotate', 'Defer');
|
|
401
|
+
engine.editor.setGlobalScope('layer/flip', 'Defer');
|
|
402
|
+
engine.editor.setGlobalScope('layer/crop', 'Defer');
|
|
403
|
+
engine.editor.setGlobalScope('layer/opacity', 'Defer');
|
|
404
|
+
engine.editor.setGlobalScope('layer/blendMode', 'Defer');
|
|
405
|
+
engine.editor.setGlobalScope('layer/visibility', 'Defer');
|
|
406
|
+
engine.editor.setGlobalScope('layer/clipping', 'Defer');
|
|
407
|
+
|
|
408
|
+
// Appearance
|
|
409
|
+
engine.editor.setGlobalScope('appearance/adjustments', 'Defer');
|
|
410
|
+
engine.editor.setGlobalScope('appearance/filter', 'Defer');
|
|
411
|
+
engine.editor.setGlobalScope('appearance/effect', 'Defer');
|
|
412
|
+
engine.editor.setGlobalScope('appearance/blur', 'Defer');
|
|
413
|
+
engine.editor.setGlobalScope('appearance/shadow', 'Defer');
|
|
414
|
+
|
|
415
|
+
// Content editing
|
|
416
|
+
engine.editor.setGlobalScope('fill/change', 'Defer');
|
|
417
|
+
engine.editor.setGlobalScope('fill/changeType', 'Defer');
|
|
418
|
+
engine.editor.setGlobalScope('stroke/change', 'Defer');
|
|
419
|
+
|
|
420
|
+
// Lifecycle
|
|
421
|
+
engine.editor.setGlobalScope('lifecycle/destroy', 'Defer');
|
|
422
|
+
engine.editor.setGlobalScope('lifecycle/duplicate', 'Defer');
|
|
423
|
+
engine.editor.setGlobalScope('editor/add', 'Defer');
|
|
424
|
+
engine.editor.setGlobalScope('editor/select', 'Defer');
|
|
425
|
+
```
|
|
426
|
+
|
|
427
|
+
When set to `'Defer'`, the global scope defers control to block-level settings, enabling fine-grained permissions per element.
|
|
428
|
+
|
|
429
|
+
## Setting Block-Level Scopes
|
|
430
|
+
|
|
431
|
+
Block-level scopes override deferred global settings for specific elements. Use `engine.block.setScopeEnabled()` to enable or disable operations on individual blocks:
|
|
432
|
+
|
|
433
|
+
```typescript highlight-block-scope
|
|
434
|
+
// Block 1: Disable all layer operations
|
|
435
|
+
engine.block.setScopeEnabled(layerBlock, 'layer/move', false);
|
|
436
|
+
engine.block.setScopeEnabled(layerBlock, 'layer/resize', false);
|
|
437
|
+
engine.block.setScopeEnabled(layerBlock, 'layer/rotate', false);
|
|
438
|
+
engine.block.setScopeEnabled(layerBlock, 'layer/flip', false);
|
|
439
|
+
engine.block.setScopeEnabled(layerBlock, 'layer/crop', false);
|
|
440
|
+
engine.block.setScopeEnabled(layerBlock, 'layer/opacity', false);
|
|
441
|
+
engine.block.setScopeEnabled(layerBlock, 'layer/blendMode', false);
|
|
442
|
+
engine.block.setScopeEnabled(layerBlock, 'layer/visibility', false);
|
|
443
|
+
engine.block.setScopeEnabled(layerBlock, 'layer/clipping', false);
|
|
444
|
+
// Keep other scopes enabled
|
|
445
|
+
engine.block.setScopeEnabled(layerBlock, 'appearance/adjustments', true);
|
|
446
|
+
engine.block.setScopeEnabled(layerBlock, 'appearance/filter', true);
|
|
447
|
+
engine.block.setScopeEnabled(layerBlock, 'fill/change', true);
|
|
448
|
+
engine.block.setScopeEnabled(layerBlock, 'lifecycle/destroy', true);
|
|
449
|
+
engine.block.setScopeEnabled(layerBlock, 'lifecycle/duplicate', true);
|
|
450
|
+
engine.block.setScopeEnabled(layerBlock, 'editor/select', true);
|
|
451
|
+
```
|
|
452
|
+
|
|
453
|
+
This creates differentiated editing experiences — some elements remain fully editable while others have specific categories locked. In the example above, we configure five blocks with different scope categories:
|
|
454
|
+
|
|
455
|
+
- **Layer Operations Disabled** — Cannot move, resize, rotate, flip, crop, or adjust opacity/blend mode
|
|
456
|
+
- **Appearance Disabled** — Cannot apply adjustments, filters, effects, blur, or shadows
|
|
457
|
+
- **Content Editing Disabled** — Cannot change fills, fill types, or strokes
|
|
458
|
+
- **All Scopes Disabled** — Completely locked with no editing capabilities, including selection
|
|
459
|
+
- **All Scopes Enabled** — Full editing capabilities across all categories
|
|
460
|
+
|
|
461
|
+
## Checking Scope Permissions
|
|
462
|
+
|
|
463
|
+
Before performing operations, verify if they're allowed using `engine.block.isAllowedByScope()`. This method considers both global and block-level settings:
|
|
464
|
+
|
|
465
|
+
```typescript highlight-check-scope
|
|
466
|
+
// Check if operations are allowed for each block
|
|
467
|
+
const canMoveLayer = engine.block.isAllowedByScope(layerBlock, 'layer/move');
|
|
468
|
+
const canMoveEnabled = engine.block.isAllowedByScope(
|
|
469
|
+
enabledBlock,
|
|
470
|
+
'layer/move'
|
|
471
|
+
);
|
|
472
|
+
const canMoveLocked = engine.block.isAllowedByScope(lockedBlock, 'layer/move');
|
|
473
|
+
|
|
474
|
+
console.log(`Layer block - can move: ${canMoveLayer}`); // false
|
|
475
|
+
console.log(`Enabled block - can move: ${canMoveEnabled}`); // true
|
|
476
|
+
console.log(`Locked block - can move: ${canMoveLocked}`); // false
|
|
477
|
+
```
|
|
478
|
+
|
|
479
|
+
When the global scope is set to `'Deny'`, operations are blocked regardless of block-level settings:
|
|
480
|
+
|
|
481
|
+
```typescript highlight-deny-global
|
|
482
|
+
// Demonstrate global Deny - would block all operations regardless of block settings
|
|
483
|
+
// Example: engine.editor.setGlobalScope('layer/flip', 'Deny');
|
|
484
|
+
// This would prevent flipping on ALL blocks, even the fully enabled one
|
|
485
|
+
```
|
|
486
|
+
|
|
487
|
+
## Common Use Cases
|
|
488
|
+
|
|
489
|
+
The scopes system supports various rule enforcement scenarios:
|
|
490
|
+
|
|
491
|
+
- **Lock content** — Prevent modifications to specific elements like logos or legal text
|
|
492
|
+
- **Define safe zones** — Mark areas where content must remain for proper trimming
|
|
493
|
+
- **Enforce brand guidelines** — Restrict fonts, colors, and styles to approved options
|
|
494
|
+
|
|
495
|
+
For content appropriateness checking, see the [Moderate Content](./rules/moderate-content.md) guide which covers integrating external moderation services.
|
|
496
|
+
|
|
497
|
+
## API Reference
|
|
498
|
+
|
|
499
|
+
| Method | Category | Purpose |
|
|
500
|
+
| -------------------------------------------------- | -------- | --------------------------------------- |
|
|
501
|
+
| `engine.editor.setGlobalScope(scope, value)` | Global | Set editor-wide scope permission |
|
|
502
|
+
| `engine.editor.getGlobalScope(scope)` | Global | Get current global scope value |
|
|
503
|
+
| `engine.block.setScopeEnabled(id, scope, enabled)` | Block | Enable/disable scope for specific block |
|
|
504
|
+
| `engine.block.isScopeEnabled(id, scope)` | Block | Check if scope is enabled for block |
|
|
505
|
+
| `engine.block.isAllowedByScope(id, scope)` | Block | Check if operation is allowed |
|
|
506
|
+
|
|
507
|
+
---
|
|
508
|
+
|
|
509
|
+
## More Resources
|
|
510
|
+
|
|
511
|
+
- **[Vanilla JS/TS Documentation Index](https://img.ly/docs/cesdk/js.md)** - Browse all Vanilla JS/TS documentation
|
|
512
|
+
- **[Complete Documentation](./llms-full.txt.md)** - Full documentation in one file (for LLMs)
|
|
513
|
+
- **[Web Documentation](./js.md)** - Interactive documentation with examples
|
|
514
|
+
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
# CreativeEditor Init Callback Fails Silently
|
|
2
|
+
|
|
3
|
+
The `init` callback passed to `<CreativeEditor>` swallows thrown errors. If any line in `init` throws, all subsequent lines are skipped with **no console error or warning**. This results in a partially-built scene that appears "broken" with no obvious cause.
|
|
4
|
+
|
|
5
|
+
## Rule
|
|
6
|
+
|
|
7
|
+
During development, wrap sections of the `init` callback in `try/catch` with `console.error` logging. For production, wrap the entire `init` body in a `try/catch` to surface failures.
|
|
8
|
+
|
|
9
|
+
```tsx
|
|
10
|
+
import { DesignEditorConfig } from './config/plugin';
|
|
11
|
+
import {
|
|
12
|
+
BlurAssetSource,
|
|
13
|
+
ColorPaletteAssetSource,
|
|
14
|
+
CropPresetsAssetSource,
|
|
15
|
+
DemoAssetSources,
|
|
16
|
+
EffectsAssetSource,
|
|
17
|
+
FiltersAssetSource,
|
|
18
|
+
PagePresetsAssetSource,
|
|
19
|
+
StickerAssetSource,
|
|
20
|
+
TextAssetSource,
|
|
21
|
+
TextComponentAssetSource,
|
|
22
|
+
TypefaceAssetSource,
|
|
23
|
+
UploadAssetSources,
|
|
24
|
+
VectorShapeAssetSource
|
|
25
|
+
} from '@cesdk/cesdk-js/plugins';
|
|
26
|
+
|
|
27
|
+
<CreativeEditor
|
|
28
|
+
init={async (cesdk) => {
|
|
29
|
+
try {
|
|
30
|
+
// Add configuration plugin
|
|
31
|
+
await cesdk.addPlugin(new DesignEditorConfig());
|
|
32
|
+
|
|
33
|
+
// Add default asset source plugins
|
|
34
|
+
await cesdk.addPlugin(new BlurAssetSource());
|
|
35
|
+
await cesdk.addPlugin(new ColorPaletteAssetSource());
|
|
36
|
+
await cesdk.addPlugin(new CropPresetsAssetSource());
|
|
37
|
+
await cesdk.addPlugin(new EffectsAssetSource());
|
|
38
|
+
await cesdk.addPlugin(new FiltersAssetSource());
|
|
39
|
+
await cesdk.addPlugin(new PagePresetsAssetSource());
|
|
40
|
+
await cesdk.addPlugin(new StickerAssetSource());
|
|
41
|
+
await cesdk.addPlugin(new TextAssetSource());
|
|
42
|
+
await cesdk.addPlugin(new TextComponentAssetSource());
|
|
43
|
+
await cesdk.addPlugin(new TypefaceAssetSource());
|
|
44
|
+
await cesdk.addPlugin(new VectorShapeAssetSource());
|
|
45
|
+
|
|
46
|
+
// Add demo and upload asset sources
|
|
47
|
+
await cesdk.addPlugin(
|
|
48
|
+
new UploadAssetSources({ include: ['ly.img.image.upload'] })
|
|
49
|
+
);
|
|
50
|
+
await cesdk.addPlugin(
|
|
51
|
+
new DemoAssetSources({
|
|
52
|
+
include: [
|
|
53
|
+
'ly.img.image.*',
|
|
54
|
+
'ly.img.templates.blank.*',
|
|
55
|
+
'ly.img.templates.social.*'
|
|
56
|
+
]
|
|
57
|
+
})
|
|
58
|
+
);
|
|
59
|
+
|
|
60
|
+
// Create scene
|
|
61
|
+
await cesdk.actions.run('scene.create', {
|
|
62
|
+
page: {
|
|
63
|
+
sourceId: 'ly.img.page.presets',
|
|
64
|
+
assetId: 'ly.img.page.presets.print.iso.a6.landscape'
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
const engine = cesdk.engine;
|
|
69
|
+
const page = engine.block.findByType('page')[0];
|
|
70
|
+
|
|
71
|
+
// ... scene setup ...
|
|
72
|
+
} catch (error) {
|
|
73
|
+
console.error('[CE.SDK init] Failed:', error);
|
|
74
|
+
}
|
|
75
|
+
}}
|
|
76
|
+
/>;
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## Symptoms of Silent Init Failure
|
|
80
|
+
|
|
81
|
+
- The editor loads but the scene is empty or partially built
|
|
82
|
+
- Some blocks are missing that should have been created
|
|
83
|
+
- No errors in the browser console
|
|
84
|
+
- The issue is intermittent (depends on which line throws)
|
|
85
|
+
|
|
86
|
+
## Debugging Strategy
|
|
87
|
+
|
|
88
|
+
Add section markers to isolate which part of `init` is failing:
|
|
89
|
+
|
|
90
|
+
```ts
|
|
91
|
+
init={async (cesdk) => {
|
|
92
|
+
console.log('[init] Starting');
|
|
93
|
+
try {
|
|
94
|
+
await cesdk.addPlugin(new DesignEditorConfig());
|
|
95
|
+
console.log('[init] Config loaded');
|
|
96
|
+
|
|
97
|
+
// Default asset source plugins
|
|
98
|
+
await cesdk.addPlugin(new BlurAssetSource());
|
|
99
|
+
await cesdk.addPlugin(new ColorPaletteAssetSource());
|
|
100
|
+
await cesdk.addPlugin(new CropPresetsAssetSource());
|
|
101
|
+
await cesdk.addPlugin(new EffectsAssetSource());
|
|
102
|
+
await cesdk.addPlugin(new FiltersAssetSource());
|
|
103
|
+
await cesdk.addPlugin(new PagePresetsAssetSource());
|
|
104
|
+
await cesdk.addPlugin(new StickerAssetSource());
|
|
105
|
+
await cesdk.addPlugin(new TextAssetSource());
|
|
106
|
+
await cesdk.addPlugin(new TextComponentAssetSource());
|
|
107
|
+
await cesdk.addPlugin(new TypefaceAssetSource());
|
|
108
|
+
await cesdk.addPlugin(new VectorShapeAssetSource());
|
|
109
|
+
console.log('[init] Default assets loaded');
|
|
110
|
+
|
|
111
|
+
// Demo and upload sources
|
|
112
|
+
await cesdk.addPlugin(
|
|
113
|
+
new UploadAssetSources({ include: ['ly.img.image.upload'] })
|
|
114
|
+
);
|
|
115
|
+
await cesdk.addPlugin(
|
|
116
|
+
new DemoAssetSources({ include: ['ly.img.image.*'] })
|
|
117
|
+
);
|
|
118
|
+
console.log('[init] Demo assets loaded');
|
|
119
|
+
|
|
120
|
+
// Create scene
|
|
121
|
+
await cesdk.actions.run('scene.create', {
|
|
122
|
+
page: {
|
|
123
|
+
sourceId: 'ly.img.page.presets',
|
|
124
|
+
assetId: 'ly.img.page.presets.print.iso.a6.landscape'
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
console.log('[init] Scene created');
|
|
128
|
+
|
|
129
|
+
// ... more setup ...
|
|
130
|
+
console.log('[init] Complete');
|
|
131
|
+
} catch (error) {
|
|
132
|
+
console.error('[init] Failed:', error);
|
|
133
|
+
}
|
|
134
|
+
}}
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
If `[init] Complete` never appears but no error is logged, the error is being swallowed by the `<CreativeEditor>` component itself. Adding the `try/catch` makes the error visible.
|