@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,362 @@
|
|
|
1
|
+
> This is one page of the CE.SDK Vanilla JS/TS documentation. For a complete overview, see the [Vanilla JS/TS Documentation Index](https://img.ly/docs/cesdk/js.md). For all docs in one file, see [llms-full.txt](./llms-full.txt.md).
|
|
2
|
+
|
|
3
|
+
**Navigation:** [Guides](./guides.md) > [Create and Edit Compositions](./create-composition.md) > [Lock Design](./create-composition/lock-design.md)
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Protect design elements from unwanted modifications using CE.SDK's scope-based permission system.
|
|
8
|
+
|
|
9
|
+

|
|
10
|
+
|
|
11
|
+
> **Reading time:** 10 minutes
|
|
12
|
+
>
|
|
13
|
+
> **Resources:**
|
|
14
|
+
>
|
|
15
|
+
> - [Download examples](https://github.com/imgly/cesdk-web-examples/archive/refs/tags/release-$UBQ_VERSION$.zip)
|
|
16
|
+
> - [View source on GitHub](https://github.com/imgly/cesdk-web-examples/tree/release-$UBQ_VERSION$/guides-create-composition-lock-design-browser)
|
|
17
|
+
> - [Open in StackBlitz](https://stackblitz.com/github/imgly/cesdk-web-examples/tree/v$UBQ_VERSION$/guides-create-composition-lock-design-browser)
|
|
18
|
+
> - [Live demo](https://img.ly/docs/cesdk/examples/guides-create-composition-lock-design-browser/)
|
|
19
|
+
|
|
20
|
+
CE.SDK uses a two-layer scope system to control editing permissions. Global scopes set defaults for the entire scene, while block-level scopes override when the global setting is `Defer`. This enables flexible permission models from fully locked to selectively editable designs.
|
|
21
|
+
|
|
22
|
+
```typescript file=@cesdk_web_examples/guides-create-composition-lock-design-browser/browser.ts reference-only
|
|
23
|
+
import type { EditorPlugin, EditorPluginContext, Scope } from '@cesdk/cesdk-js';
|
|
24
|
+
import packageJson from './package.json';
|
|
25
|
+
|
|
26
|
+
import {
|
|
27
|
+
BlurAssetSource,
|
|
28
|
+
ColorPaletteAssetSource,
|
|
29
|
+
CropPresetsAssetSource,
|
|
30
|
+
DemoAssetSources,
|
|
31
|
+
EffectsAssetSource,
|
|
32
|
+
FiltersAssetSource,
|
|
33
|
+
PagePresetsAssetSource,
|
|
34
|
+
StickerAssetSource,
|
|
35
|
+
TextAssetSource,
|
|
36
|
+
TextComponentAssetSource,
|
|
37
|
+
TypefaceAssetSource,
|
|
38
|
+
UploadAssetSources,
|
|
39
|
+
VectorShapeAssetSource
|
|
40
|
+
} from '@cesdk/cesdk-js/plugins';
|
|
41
|
+
import { DesignEditorConfig } from './design-editor/plugin';
|
|
42
|
+
|
|
43
|
+
class LockDesign implements EditorPlugin {
|
|
44
|
+
name = packageJson.name;
|
|
45
|
+
version = packageJson.version;
|
|
46
|
+
|
|
47
|
+
async initialize({ cesdk }: EditorPluginContext): Promise<void> {
|
|
48
|
+
if (!cesdk) {
|
|
49
|
+
throw new Error('CE.SDK instance is required for this plugin');
|
|
50
|
+
}
|
|
51
|
+
await cesdk.addPlugin(new DesignEditorConfig());
|
|
52
|
+
|
|
53
|
+
// Add asset source plugins
|
|
54
|
+
await cesdk.addPlugin(new BlurAssetSource());
|
|
55
|
+
await cesdk.addPlugin(new ColorPaletteAssetSource());
|
|
56
|
+
await cesdk.addPlugin(new CropPresetsAssetSource());
|
|
57
|
+
await cesdk.addPlugin(
|
|
58
|
+
new UploadAssetSources({ include: ['ly.img.image.upload'] })
|
|
59
|
+
);
|
|
60
|
+
await cesdk.addPlugin(
|
|
61
|
+
new DemoAssetSources({
|
|
62
|
+
include: [
|
|
63
|
+
'ly.img.templates.blank.*',
|
|
64
|
+
'ly.img.templates.presentation.*',
|
|
65
|
+
'ly.img.templates.print.*',
|
|
66
|
+
'ly.img.templates.social.*',
|
|
67
|
+
'ly.img.image.*'
|
|
68
|
+
]
|
|
69
|
+
})
|
|
70
|
+
);
|
|
71
|
+
await cesdk.addPlugin(new EffectsAssetSource());
|
|
72
|
+
await cesdk.addPlugin(new FiltersAssetSource());
|
|
73
|
+
await cesdk.addPlugin(new PagePresetsAssetSource());
|
|
74
|
+
await cesdk.addPlugin(new StickerAssetSource());
|
|
75
|
+
await cesdk.addPlugin(new TextAssetSource());
|
|
76
|
+
await cesdk.addPlugin(new TextComponentAssetSource());
|
|
77
|
+
await cesdk.addPlugin(new TypefaceAssetSource());
|
|
78
|
+
await cesdk.addPlugin(new VectorShapeAssetSource());
|
|
79
|
+
|
|
80
|
+
await cesdk.actions.run('scene.create', {
|
|
81
|
+
page: { width: 800, height: 600, unit: 'Pixel' }
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
const engine = cesdk.engine;
|
|
85
|
+
const page = engine.block.findByType('page')[0]!;
|
|
86
|
+
|
|
87
|
+
// Create sample content to demonstrate different locking techniques
|
|
88
|
+
const imageUri = 'https://img.ly/static/ubq_samples/sample_1.jpg';
|
|
89
|
+
|
|
90
|
+
// Column 1: Fully Locked
|
|
91
|
+
const caption1 = engine.block.create('text');
|
|
92
|
+
engine.block.setString(caption1, 'text/text', 'Fully Locked');
|
|
93
|
+
engine.block.setFloat(caption1, 'text/fontSize', 32);
|
|
94
|
+
engine.block.setWidth(caption1, 220);
|
|
95
|
+
engine.block.setHeight(caption1, 50);
|
|
96
|
+
engine.block.setPositionX(caption1, 30);
|
|
97
|
+
engine.block.setPositionY(caption1, 30);
|
|
98
|
+
engine.block.appendChild(page, caption1);
|
|
99
|
+
|
|
100
|
+
const imageBlock = await engine.block.addImage(imageUri, {
|
|
101
|
+
x: 30,
|
|
102
|
+
y: 100,
|
|
103
|
+
size: { width: 220, height: 165 }
|
|
104
|
+
});
|
|
105
|
+
engine.block.appendChild(page, imageBlock);
|
|
106
|
+
|
|
107
|
+
// Column 2: Text Editing Only
|
|
108
|
+
const caption2 = engine.block.create('text');
|
|
109
|
+
engine.block.setString(caption2, 'text/text', 'Text Editing');
|
|
110
|
+
engine.block.setFloat(caption2, 'text/fontSize', 32);
|
|
111
|
+
engine.block.setWidth(caption2, 220);
|
|
112
|
+
engine.block.setHeight(caption2, 50);
|
|
113
|
+
engine.block.setPositionX(caption2, 290);
|
|
114
|
+
engine.block.setPositionY(caption2, 30);
|
|
115
|
+
engine.block.appendChild(page, caption2);
|
|
116
|
+
|
|
117
|
+
const textBlock = engine.block.create('text');
|
|
118
|
+
engine.block.setString(textBlock, 'text/text', 'Edit Me');
|
|
119
|
+
engine.block.setFloat(textBlock, 'text/fontSize', 72);
|
|
120
|
+
engine.block.setWidth(textBlock, 220);
|
|
121
|
+
engine.block.setHeight(textBlock, 165);
|
|
122
|
+
engine.block.setPositionX(textBlock, 290);
|
|
123
|
+
engine.block.setPositionY(textBlock, 100);
|
|
124
|
+
engine.block.appendChild(page, textBlock);
|
|
125
|
+
|
|
126
|
+
// Column 3: Image Replace Only
|
|
127
|
+
const caption3 = engine.block.create('text');
|
|
128
|
+
engine.block.setString(caption3, 'text/text', 'Image Replace');
|
|
129
|
+
engine.block.setFloat(caption3, 'text/fontSize', 32);
|
|
130
|
+
engine.block.setWidth(caption3, 220);
|
|
131
|
+
engine.block.setHeight(caption3, 50);
|
|
132
|
+
engine.block.setPositionX(caption3, 550);
|
|
133
|
+
engine.block.setPositionY(caption3, 30);
|
|
134
|
+
engine.block.appendChild(page, caption3);
|
|
135
|
+
|
|
136
|
+
const placeholderBlock = await engine.block.addImage(imageUri, {
|
|
137
|
+
x: 550,
|
|
138
|
+
y: 100,
|
|
139
|
+
size: { width: 220, height: 165 }
|
|
140
|
+
});
|
|
141
|
+
engine.block.appendChild(page, placeholderBlock);
|
|
142
|
+
|
|
143
|
+
// Lock the entire design by setting all scopes to Deny
|
|
144
|
+
const scopes = engine.editor.findAllScopes();
|
|
145
|
+
for (const scope of scopes) {
|
|
146
|
+
engine.editor.setGlobalScope(scope, 'Deny');
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
// Enable selection for specific blocks
|
|
150
|
+
engine.editor.setGlobalScope('editor/select', 'Defer');
|
|
151
|
+
engine.block.setScopeEnabled(textBlock, 'editor/select', true);
|
|
152
|
+
engine.block.setScopeEnabled(placeholderBlock, 'editor/select', true);
|
|
153
|
+
|
|
154
|
+
// Enable text editing on the text block
|
|
155
|
+
engine.editor.setGlobalScope('text/edit', 'Defer');
|
|
156
|
+
engine.editor.setGlobalScope('text/character', 'Defer');
|
|
157
|
+
engine.block.setScopeEnabled(textBlock, 'text/edit', true);
|
|
158
|
+
engine.block.setScopeEnabled(textBlock, 'text/character', true);
|
|
159
|
+
|
|
160
|
+
// Enable image replacement on the placeholder block
|
|
161
|
+
engine.editor.setGlobalScope('fill/change', 'Defer');
|
|
162
|
+
engine.block.setScopeEnabled(placeholderBlock, 'fill/change', true);
|
|
163
|
+
|
|
164
|
+
// Check if operations are permitted on blocks
|
|
165
|
+
const canEditText = engine.block.isAllowedByScope(textBlock, 'text/edit');
|
|
166
|
+
const canMoveImage = engine.block.isAllowedByScope(
|
|
167
|
+
imageBlock,
|
|
168
|
+
'layer/move'
|
|
169
|
+
);
|
|
170
|
+
const canReplacePlaceholder = engine.block.isAllowedByScope(
|
|
171
|
+
placeholderBlock,
|
|
172
|
+
'fill/change'
|
|
173
|
+
);
|
|
174
|
+
|
|
175
|
+
console.log('Permission status:');
|
|
176
|
+
console.log('- Can edit text:', canEditText); // true
|
|
177
|
+
console.log('- Can move locked image:', canMoveImage); // false
|
|
178
|
+
console.log('- Can replace placeholder:', canReplacePlaceholder); // true
|
|
179
|
+
|
|
180
|
+
// Discover all available scopes
|
|
181
|
+
const allScopes: Scope[] = engine.editor.findAllScopes();
|
|
182
|
+
console.log('Available scopes:', allScopes);
|
|
183
|
+
|
|
184
|
+
// Check global scope settings
|
|
185
|
+
const textEditGlobal = engine.editor.getGlobalScope('text/edit');
|
|
186
|
+
const layerMoveGlobal = engine.editor.getGlobalScope('layer/move');
|
|
187
|
+
console.log('Global text/edit:', textEditGlobal); // 'Defer'
|
|
188
|
+
console.log('Global layer/move:', layerMoveGlobal); // 'Deny'
|
|
189
|
+
|
|
190
|
+
// Check block-level scope settings
|
|
191
|
+
const textEditEnabled = engine.block.isScopeEnabled(textBlock, 'text/edit');
|
|
192
|
+
console.log('Text block text/edit enabled:', textEditEnabled); // true
|
|
193
|
+
|
|
194
|
+
// Select the text block to demonstrate editability
|
|
195
|
+
engine.block.select(textBlock);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
export default LockDesign;
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
This guide covers how to lock entire designs, selectively enable specific editing capabilities, and check permissions programmatically.
|
|
203
|
+
|
|
204
|
+
## Understanding the Scope Permission Model
|
|
205
|
+
|
|
206
|
+
Scopes control what operations users can perform on design elements. CE.SDK combines global scope settings with block-level settings to determine the final permission.
|
|
207
|
+
|
|
208
|
+
| Global Scope | Block Scope | Result |
|
|
209
|
+
| ------------ | ----------- | --------- |
|
|
210
|
+
| `Allow` | any | Permitted |
|
|
211
|
+
| `Deny` | any | Blocked |
|
|
212
|
+
| `Defer` | enabled | Permitted |
|
|
213
|
+
| `Defer` | disabled | Blocked |
|
|
214
|
+
|
|
215
|
+
Global scopes have three possible values:
|
|
216
|
+
|
|
217
|
+
- **`Allow`**: The operation is always permitted, regardless of block-level settings
|
|
218
|
+
- **`Deny`**: The operation is always blocked, regardless of block-level settings
|
|
219
|
+
- **`Defer`**: The permission depends on the block-level scope setting
|
|
220
|
+
|
|
221
|
+
Block-level scopes are binary: enabled or disabled. They only take effect when the global scope is set to `Defer`.
|
|
222
|
+
|
|
223
|
+
## Locking an Entire Design
|
|
224
|
+
|
|
225
|
+
To lock all editing operations, iterate through all available scopes and set each to `Deny`. We use `engine.editor.findAllScopes()` to discover all scope names dynamically.
|
|
226
|
+
|
|
227
|
+
```typescript highlight=highlight-lock-entire-design
|
|
228
|
+
// Lock the entire design by setting all scopes to Deny
|
|
229
|
+
const scopes = engine.editor.findAllScopes();
|
|
230
|
+
for (const scope of scopes) {
|
|
231
|
+
engine.editor.setGlobalScope(scope, 'Deny');
|
|
232
|
+
}
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
When all scopes are set to `Deny`, users cannot modify any aspect of the design. This includes selecting, moving, editing text, or changing any visual properties.
|
|
236
|
+
|
|
237
|
+
## Enabling Selection for Interactive Blocks
|
|
238
|
+
|
|
239
|
+
Before users can interact with any block, you must enable the `editor/select` scope. Without selection, users cannot click on or access any blocks, even if other editing capabilities are enabled.
|
|
240
|
+
|
|
241
|
+
```typescript highlight=highlight-enable-selection
|
|
242
|
+
// Enable selection for specific blocks
|
|
243
|
+
engine.editor.setGlobalScope('editor/select', 'Defer');
|
|
244
|
+
engine.block.setScopeEnabled(textBlock, 'editor/select', true);
|
|
245
|
+
engine.block.setScopeEnabled(placeholderBlock, 'editor/select', true);
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
Setting the global `editor/select` scope to `Defer` delegates the decision to each block. We then enable selection only on the specific blocks users should be able to interact with.
|
|
249
|
+
|
|
250
|
+
## Selective Locking Patterns
|
|
251
|
+
|
|
252
|
+
Lock everything first, then selectively enable specific capabilities on chosen blocks. This pattern provides fine-grained control over what users can modify.
|
|
253
|
+
|
|
254
|
+
### Text-Only Editing
|
|
255
|
+
|
|
256
|
+
To allow users to edit text content while protecting everything else, enable the `text/edit` scope. For text styling changes like font, size, and color, also enable `text/character`.
|
|
257
|
+
|
|
258
|
+
```typescript highlight=highlight-text-editing
|
|
259
|
+
// Enable text editing on the text block
|
|
260
|
+
engine.editor.setGlobalScope('text/edit', 'Defer');
|
|
261
|
+
engine.editor.setGlobalScope('text/character', 'Defer');
|
|
262
|
+
engine.block.setScopeEnabled(textBlock, 'text/edit', true);
|
|
263
|
+
engine.block.setScopeEnabled(textBlock, 'text/character', true);
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
Users can now type new text content in the designated text block but cannot move, resize, or delete it.
|
|
267
|
+
|
|
268
|
+
### Image Replacement
|
|
269
|
+
|
|
270
|
+
To allow users to swap images while protecting layout and position, enable the `fill/change` scope on placeholder blocks.
|
|
271
|
+
|
|
272
|
+
```typescript highlight=highlight-image-replacement
|
|
273
|
+
// Enable image replacement on the placeholder block
|
|
274
|
+
engine.editor.setGlobalScope('fill/change', 'Defer');
|
|
275
|
+
engine.block.setScopeEnabled(placeholderBlock, 'fill/change', true);
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
Users can replace the image content but the block's position, dimensions, and other properties remain locked.
|
|
279
|
+
|
|
280
|
+
## Checking Permissions
|
|
281
|
+
|
|
282
|
+
Verify whether operations are permitted using `engine.block.isAllowedByScope()`. This method evaluates both global and block-level settings to return the effective permission state.
|
|
283
|
+
|
|
284
|
+
```typescript highlight=highlight-check-permissions
|
|
285
|
+
// Check if operations are permitted on blocks
|
|
286
|
+
const canEditText = engine.block.isAllowedByScope(textBlock, 'text/edit');
|
|
287
|
+
const canMoveImage = engine.block.isAllowedByScope(imageBlock, 'layer/move');
|
|
288
|
+
const canReplacePlaceholder = engine.block.isAllowedByScope(
|
|
289
|
+
placeholderBlock,
|
|
290
|
+
'fill/change'
|
|
291
|
+
);
|
|
292
|
+
|
|
293
|
+
console.log('Permission status:');
|
|
294
|
+
console.log('- Can edit text:', canEditText); // true
|
|
295
|
+
console.log('- Can move locked image:', canMoveImage); // false
|
|
296
|
+
console.log('- Can replace placeholder:', canReplacePlaceholder); // true
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
The distinction between checking methods is:
|
|
300
|
+
|
|
301
|
+
- `isAllowedByScope()` returns the **effective permission** after evaluating all scope levels
|
|
302
|
+
- `isScopeEnabled()` returns only the **block-level setting**
|
|
303
|
+
- `getGlobalScope()` returns only the **global setting**
|
|
304
|
+
|
|
305
|
+
## Discovering Available Scopes
|
|
306
|
+
|
|
307
|
+
To work with scopes programmatically, you can discover all available scope names and check their current settings.
|
|
308
|
+
|
|
309
|
+
```typescript highlight=highlight-get-scopes
|
|
310
|
+
// Discover all available scopes
|
|
311
|
+
const allScopes: Scope[] = engine.editor.findAllScopes();
|
|
312
|
+
console.log('Available scopes:', allScopes);
|
|
313
|
+
|
|
314
|
+
// Check global scope settings
|
|
315
|
+
const textEditGlobal = engine.editor.getGlobalScope('text/edit');
|
|
316
|
+
const layerMoveGlobal = engine.editor.getGlobalScope('layer/move');
|
|
317
|
+
console.log('Global text/edit:', textEditGlobal); // 'Defer'
|
|
318
|
+
console.log('Global layer/move:', layerMoveGlobal); // 'Deny'
|
|
319
|
+
|
|
320
|
+
// Check block-level scope settings
|
|
321
|
+
const textEditEnabled = engine.block.isScopeEnabled(textBlock, 'text/edit');
|
|
322
|
+
console.log('Text block text/edit enabled:', textEditEnabled); // true
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
## Available Scopes Reference
|
|
326
|
+
|
|
327
|
+
| Scope | Description |
|
|
328
|
+
| ------------------------ | --------------------------------------- |
|
|
329
|
+
| `layer/move` | Move block position |
|
|
330
|
+
| `layer/resize` | Resize block dimensions |
|
|
331
|
+
| `layer/rotate` | Rotate block |
|
|
332
|
+
| `layer/flip` | Flip block horizontally or vertically |
|
|
333
|
+
| `layer/crop` | Crop block content |
|
|
334
|
+
| `layer/opacity` | Change block opacity |
|
|
335
|
+
| `layer/blendMode` | Change blend mode |
|
|
336
|
+
| `layer/visibility` | Toggle block visibility |
|
|
337
|
+
| `layer/clipping` | Change clipping behavior |
|
|
338
|
+
| `fill/change` | Change fill content |
|
|
339
|
+
| `fill/changeType` | Change fill type |
|
|
340
|
+
| `stroke/change` | Change stroke properties |
|
|
341
|
+
| `shape/change` | Change shape type |
|
|
342
|
+
| `text/edit` | Edit text content |
|
|
343
|
+
| `text/character` | Change text styling (font, size, color) |
|
|
344
|
+
| `appearance/adjustments` | Change color adjustments |
|
|
345
|
+
| `appearance/filter` | Apply or change filters |
|
|
346
|
+
| `appearance/effect` | Apply or change effects |
|
|
347
|
+
| `appearance/blur` | Apply or change blur |
|
|
348
|
+
| `appearance/shadow` | Apply or change shadows |
|
|
349
|
+
| `appearance/animation` | Apply or change animations |
|
|
350
|
+
| `lifecycle/destroy` | Delete the block |
|
|
351
|
+
| `lifecycle/duplicate` | Duplicate the block |
|
|
352
|
+
| `editor/add` | Add new blocks |
|
|
353
|
+
| `editor/select` | Select blocks |
|
|
354
|
+
|
|
355
|
+
---
|
|
356
|
+
|
|
357
|
+
## More Resources
|
|
358
|
+
|
|
359
|
+
- **[Vanilla JS/TS Documentation Index](https://img.ly/docs/cesdk/js.md)** - Browse all Vanilla JS/TS documentation
|
|
360
|
+
- **[Complete Documentation](./llms-full.txt.md)** - Full documentation in one file (for LLMs)
|
|
361
|
+
- **[Web Documentation](./js.md)** - Interactive documentation with examples
|
|
362
|
+
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
> This is one page of the CE.SDK Vanilla JS/TS documentation. For a complete overview, see the [Vanilla JS/TS Documentation Index](https://img.ly/docs/cesdk/js.md). For all docs in one file, see [llms-full.txt](./llms-full.txt.md).
|
|
2
|
+
|
|
3
|
+
**Navigation:** [Guides](./guides.md) > [Create and Edit Compositions](./create-composition.md) > [Multi-Page Layouts](./create-composition/multi-page.md)
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Create multi-page designs in CE.SDK for brochures, presentations, catalogs, and other documents requiring multiple pages within a single scene.
|
|
8
|
+
|
|
9
|
+

|
|
10
|
+
|
|
11
|
+
> **Reading time:** 10 minutes
|
|
12
|
+
>
|
|
13
|
+
> **Resources:**
|
|
14
|
+
>
|
|
15
|
+
> - [Download examples](https://github.com/imgly/cesdk-web-examples/archive/refs/tags/release-$UBQ_VERSION$.zip)
|
|
16
|
+
> - [View source on GitHub](https://github.com/imgly/cesdk-web-examples/tree/release-$UBQ_VERSION$/guides-create-composition-multi-page-browser)
|
|
17
|
+
> - [Open in StackBlitz](https://stackblitz.com/github/imgly/cesdk-web-examples/tree/v$UBQ_VERSION$/guides-create-composition-multi-page-browser)
|
|
18
|
+
> - [Live demo](https://img.ly/docs/cesdk/examples/guides-create-composition-multi-page-browser/)
|
|
19
|
+
|
|
20
|
+
Multi-page layouts allow you to create documents with multiple artboards within a single scene. Each page operates as an independent canvas that can contain different content while sharing the same scene context. CE.SDK provides scene layout modes that automatically arrange pages vertically, horizontally, or in a free-form canvas.
|
|
21
|
+
|
|
22
|
+
```typescript file=@cesdk_web_examples/guides-create-composition-multi-page-browser/browser.ts reference-only
|
|
23
|
+
import type { EditorPlugin, EditorPluginContext } from '@cesdk/cesdk-js';
|
|
24
|
+
|
|
25
|
+
import { DesignEditorConfig } from './design-editor/plugin';
|
|
26
|
+
import packageJson from './package.json';
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* CE.SDK Plugin: Multi-Page Layouts Guide
|
|
30
|
+
*
|
|
31
|
+
* This example demonstrates:
|
|
32
|
+
* - Creating scenes with multiple pages
|
|
33
|
+
* - Adding and configuring pages
|
|
34
|
+
* - Scene layout types (HorizontalStack)
|
|
35
|
+
* - Stack spacing between pages
|
|
36
|
+
*/
|
|
37
|
+
class Example implements EditorPlugin {
|
|
38
|
+
name = packageJson.name;
|
|
39
|
+
|
|
40
|
+
version = packageJson.version;
|
|
41
|
+
|
|
42
|
+
async initialize({ cesdk }: EditorPluginContext): Promise<void> {
|
|
43
|
+
if (!cesdk) {
|
|
44
|
+
throw new Error('CE.SDK instance is required for this plugin');
|
|
45
|
+
}
|
|
46
|
+
await cesdk.addPlugin(new DesignEditorConfig());
|
|
47
|
+
const engine = cesdk.engine;
|
|
48
|
+
|
|
49
|
+
// Create a scene with HorizontalStack layout
|
|
50
|
+
engine.scene.create('HorizontalStack');
|
|
51
|
+
|
|
52
|
+
// Get the stack container
|
|
53
|
+
const [stack] = engine.block.findByType('stack');
|
|
54
|
+
|
|
55
|
+
// Add spacing between pages (20 pixels in screen space)
|
|
56
|
+
engine.block.setFloat(stack, 'stack/spacing', 20);
|
|
57
|
+
engine.block.setBool(stack, 'stack/spacingInScreenspace', true);
|
|
58
|
+
|
|
59
|
+
// Create the first page
|
|
60
|
+
const firstPage = engine.block.create('page');
|
|
61
|
+
engine.block.setWidth(firstPage, 800);
|
|
62
|
+
engine.block.setHeight(firstPage, 600);
|
|
63
|
+
engine.block.appendChild(stack, firstPage);
|
|
64
|
+
|
|
65
|
+
// Add content to the first page
|
|
66
|
+
const imageBlock1 = await engine.block.addImage(
|
|
67
|
+
'https://img.ly/static/ubq_samples/sample_1.jpg',
|
|
68
|
+
{ size: { width: 300, height: 200 } }
|
|
69
|
+
);
|
|
70
|
+
engine.block.setPositionX(imageBlock1, 250);
|
|
71
|
+
engine.block.setPositionY(imageBlock1, 200);
|
|
72
|
+
engine.block.appendChild(firstPage, imageBlock1);
|
|
73
|
+
|
|
74
|
+
// Create a second page with different content
|
|
75
|
+
const secondPage = engine.block.create('page');
|
|
76
|
+
engine.block.setWidth(secondPage, 800);
|
|
77
|
+
engine.block.setHeight(secondPage, 600);
|
|
78
|
+
engine.block.appendChild(stack, secondPage);
|
|
79
|
+
|
|
80
|
+
// Add a different image to the second page
|
|
81
|
+
const imageBlock2 = await engine.block.addImage(
|
|
82
|
+
'https://img.ly/static/ubq_samples/sample_2.jpg',
|
|
83
|
+
{ size: { width: 300, height: 200 } }
|
|
84
|
+
);
|
|
85
|
+
engine.block.setPositionX(imageBlock2, 250);
|
|
86
|
+
engine.block.setPositionY(imageBlock2, 200);
|
|
87
|
+
engine.block.appendChild(secondPage, imageBlock2);
|
|
88
|
+
|
|
89
|
+
engine.block.select(firstPage);
|
|
90
|
+
engine.scene.enableZoomAutoFit(firstPage, 'Both');
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
export default Example;
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
This guide covers how to create multi-page scenes, add pages, and configure spacing between pages.
|
|
98
|
+
|
|
99
|
+
## Using the Built-in Page Management UI
|
|
100
|
+
|
|
101
|
+
The CE.SDK editor provides built-in UI controls for managing pages. Users can interact with the page panel to add new pages, duplicate existing ones, reorder them with drag-and-drop, delete pages, and navigate between pages by clicking.
|
|
102
|
+
|
|
103
|
+
The page panel displays thumbnails of all pages in the scene, making it easy to understand the document structure at a glance. When you click a page thumbnail, the viewport automatically zooms to that page.
|
|
104
|
+
|
|
105
|
+
## Creating Multi-Page Scenes Programmatically
|
|
106
|
+
|
|
107
|
+
We can create scenes with multiple pages using the engine API. The scene acts as a container for pages, and each page can hold any number of content blocks.
|
|
108
|
+
|
|
109
|
+
### Creating a Scene with Pages
|
|
110
|
+
|
|
111
|
+
We create a new scene using `engine.scene.create()` and specify the layout type. The layout type determines how pages are arranged in the viewport. After creating the scene, we get the stack container and create pages within it.
|
|
112
|
+
|
|
113
|
+
```typescript highlight=highlight-create-scene
|
|
114
|
+
// Create a scene with HorizontalStack layout
|
|
115
|
+
engine.scene.create('HorizontalStack');
|
|
116
|
+
|
|
117
|
+
// Get the stack container
|
|
118
|
+
const [stack] = engine.block.findByType('stack');
|
|
119
|
+
|
|
120
|
+
// Add spacing between pages (20 pixels in screen space)
|
|
121
|
+
engine.block.setFloat(stack, 'stack/spacing', 20);
|
|
122
|
+
engine.block.setBool(stack, 'stack/spacingInScreenspace', true);
|
|
123
|
+
|
|
124
|
+
// Create the first page
|
|
125
|
+
const firstPage = engine.block.create('page');
|
|
126
|
+
engine.block.setWidth(firstPage, 800);
|
|
127
|
+
engine.block.setHeight(firstPage, 600);
|
|
128
|
+
engine.block.appendChild(stack, firstPage);
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
The scene is created with a `HorizontalStack` layout, meaning pages are arranged side by side from left to right. We then create a page, set its dimensions, and append it to the stack container.
|
|
132
|
+
|
|
133
|
+
### Configuring Page Spacing
|
|
134
|
+
|
|
135
|
+
We can add spacing between pages in a stack layout using the `stack/spacing` property. This creates visual separation between pages.
|
|
136
|
+
|
|
137
|
+
```typescript highlight=highlight-stack-spacing
|
|
138
|
+
// Add spacing between pages (20 pixels in screen space)
|
|
139
|
+
engine.block.setFloat(stack, 'stack/spacing', 20);
|
|
140
|
+
engine.block.setBool(stack, 'stack/spacingInScreenspace', true);
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
Setting `stack/spacingInScreenspace` to `true` means the spacing value is interpreted as screen pixels, maintaining consistent visual spacing regardless of zoom level.
|
|
144
|
+
|
|
145
|
+
### Adding More Pages
|
|
146
|
+
|
|
147
|
+
To add additional pages, we create new page blocks, set their dimensions, and append them to the stack container.
|
|
148
|
+
|
|
149
|
+
```typescript highlight=highlight-add-page
|
|
150
|
+
// Create a second page with different content
|
|
151
|
+
const secondPage = engine.block.create('page');
|
|
152
|
+
engine.block.setWidth(secondPage, 800);
|
|
153
|
+
engine.block.setHeight(secondPage, 600);
|
|
154
|
+
engine.block.appendChild(stack, secondPage);
|
|
155
|
+
|
|
156
|
+
// Add a different image to the second page
|
|
157
|
+
const imageBlock2 = await engine.block.addImage(
|
|
158
|
+
'https://img.ly/static/ubq_samples/sample_2.jpg',
|
|
159
|
+
{ size: { width: 300, height: 200 } }
|
|
160
|
+
);
|
|
161
|
+
engine.block.setPositionX(imageBlock2, 250);
|
|
162
|
+
engine.block.setPositionY(imageBlock2, 200);
|
|
163
|
+
engine.block.appendChild(secondPage, imageBlock2);
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
Each page can contain different content. Here we add different images to each page to demonstrate independent page content.
|
|
167
|
+
|
|
168
|
+
## Scene Layout Types
|
|
169
|
+
|
|
170
|
+
CE.SDK supports different layout modes that control how pages are arranged on the canvas. You specify the layout type when creating the scene with `engine.scene.create()`.
|
|
171
|
+
|
|
172
|
+
**Free Layout** is the default where pages can be positioned anywhere on the canvas. This provides complete control over page placement.
|
|
173
|
+
|
|
174
|
+
**VerticalStack Layout** arranges pages automatically in a vertical stack from top to bottom. This is useful for scroll-based document previews.
|
|
175
|
+
|
|
176
|
+
**HorizontalStack Layout** arranges pages side by side from left to right. This is useful for carousel-style presentations or side-by-side comparisons.
|
|
177
|
+
|
|
178
|
+
## Setting the Zoom Level
|
|
179
|
+
|
|
180
|
+
We can control the viewport zoom level using `engine.scene.setZoomLevel()`. A value of 1.0 represents 100% zoom.
|
|
181
|
+
|
|
182
|
+
```typescript highlight=highlight-zoom
|
|
183
|
+
engine.block.select(firstPage);
|
|
184
|
+
engine.scene.enableZoomAutoFit(firstPage, 'Both');
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
## Troubleshooting
|
|
188
|
+
|
|
189
|
+
**Page not visible after creation**: Ensure the page is attached to the stack with `appendChild()` and has valid dimensions set with `setWidth()` and `setHeight()`.
|
|
190
|
+
|
|
191
|
+
**Cannot add content to page**: Verify you're appending blocks to the page block, not the scene directly. Content blocks should be children of pages.
|
|
192
|
+
|
|
193
|
+
**Pages overlapping**: When using stack layouts, make sure pages are appended to the stack container (found via `findByType('stack')`), not directly to the scene.
|
|
194
|
+
|
|
195
|
+
**Spacing not visible**: Check that `stack/spacing` is set to a positive value and that you're using a stack layout (HorizontalStack or VerticalStack).
|
|
196
|
+
|
|
197
|
+
---
|
|
198
|
+
|
|
199
|
+
## More Resources
|
|
200
|
+
|
|
201
|
+
- **[Vanilla JS/TS Documentation Index](https://img.ly/docs/cesdk/js.md)** - Browse all Vanilla JS/TS documentation
|
|
202
|
+
- **[Complete Documentation](./llms-full.txt.md)** - Full documentation in one file (for LLMs)
|
|
203
|
+
- **[Web Documentation](./js.md)** - Interactive documentation with examples
|
|
204
|
+
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
> This is one page of the CE.SDK Vanilla JS/TS documentation. For a complete overview, see the [Vanilla JS/TS Documentation Index](https://img.ly/docs/cesdk/js.md). For all docs in one file, see [llms-full.txt](./llms-full.txt.md).
|
|
2
|
+
|
|
3
|
+
**Navigation:** [Guides](./guides.md) > [Create and Edit Compositions](./create-composition.md) > [Overview](./create-composition/overview.md)
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Exporting Compositions
|
|
8
|
+
|
|
9
|
+
CE.SDK compositions can be exported in several formats:
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## More Resources
|
|
14
|
+
|
|
15
|
+
- **[Vanilla JS/TS Documentation Index](https://img.ly/docs/cesdk/js.md)** - Browse all Vanilla JS/TS documentation
|
|
16
|
+
- **[Complete Documentation](./llms-full.txt.md)** - Full documentation in one file (for LLMs)
|
|
17
|
+
- **[Web Documentation](./js.md)** - Interactive documentation with examples
|
|
18
|
+
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
|