@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,291 @@
|
|
|
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:** [Concepts](./concepts.md) > [Headless Mode](./concepts/headless-mode/browser.md)
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
CreativeEditor SDK (CE.SDK) **Headless Mode** allows your web app to control the Engine API without loading the built-in user interface.
|
|
8
|
+
|
|
9
|
+
Instead of starting the full editor with panels and toolbars, your browser code talks directly to the Engine. That keeps the experience within your own design system—ideal for automation running on the client.
|
|
10
|
+
|
|
11
|
+
## Common Use Cases
|
|
12
|
+
|
|
13
|
+
- **Automating workflows:** Merge data into templates or generate variations with no user input.
|
|
14
|
+
- **Automated exports:** Render custom images or videos in the browser and hand them off to storage or your backend.
|
|
15
|
+
- **Custom interfaces:** Embed the Engine beneath your own UI components.
|
|
16
|
+
- **Background actions:** Run batch jobs or event-driven edits without overlaying the default UI.
|
|
17
|
+
|
|
18
|
+
### When to Use Headless Mode
|
|
19
|
+
|
|
20
|
+
<HeadlessScenario />
|
|
21
|
+
|
|
22
|
+
## How Headless Mode Works
|
|
23
|
+
|
|
24
|
+
The standard editor wires UI events (button clicks, drag interactions) to the Engine under the hood. In headless mode, you call the same Engine APIs yourself.
|
|
25
|
+
|
|
26
|
+
### Features Available in Headless Mode
|
|
27
|
+
|
|
28
|
+
In headless mode, you keep access to the CE.SDK features while staying entirely within your app’s DOM lifecycle, such as:
|
|
29
|
+
|
|
30
|
+
- Scene management
|
|
31
|
+
- Asset manipulation
|
|
32
|
+
- Rendering and export
|
|
33
|
+
- Templates and dynamic content
|
|
34
|
+
|
|
35
|
+
### Requirements to Run the CreativeEngine in the Client
|
|
36
|
+
|
|
37
|
+
CE.SDK’s Engine needs a **WebGL-capable environment**. When you ship a headless build in the browser:
|
|
38
|
+
|
|
39
|
+
- Point the `baseURL` in your config at a publicly reachable asset directory (CDN or self-hosted) so the browser can load fonts and other Engine files—even when you install the npm package.
|
|
40
|
+
- Only start the Engine **after the DOM is available** (for example, inside `useEffect`, `mounted`, or `DOMContentLoaded`).
|
|
41
|
+
- **Dispose** of the Engine during tear down with `engine.dispose()` to release WebGL resources.
|
|
42
|
+
- Ensure iframes or workers that boot the Engine expose `document` and a WebGL context.
|
|
43
|
+
|
|
44
|
+
## Set Up Headless Mode in a Web App
|
|
45
|
+
|
|
46
|
+
1. Install the Engine package:
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
npm install @cesdk/engine@$UBQ_VERSION$
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
````
|
|
53
|
+
|
|
54
|
+
2. Configure your license and asset location. The global CDN works for prototypes; production apps commonly self-host the asset bundle for faster loads.
|
|
55
|
+
|
|
56
|
+
```ts
|
|
57
|
+
const config = {
|
|
58
|
+
license: '<YOUR_LICENSE_KEY>',
|
|
59
|
+
baseURL: 'https://cdn.img.ly/packages/imgly/cesdk-engine/$UBQ_VERSION$/assets'
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
````
|
|
63
|
+
|
|
64
|
+
3. Start the Engine from client-side code and reuse the instance across interactions.
|
|
65
|
+
|
|
66
|
+
> **Tip:** The CreativeEngine doesn’t attach a canvas automatically. If you want a live preview, append `engine.element` onto your own layout.
|
|
67
|
+
|
|
68
|
+
## Quick Start: Initialize the Engine Headlessly
|
|
69
|
+
|
|
70
|
+
When you import `@cesdk/engine`, you get the same runtime that powers the full editor. Using the CreativeEngine instead of the CreativeEditor allows you to expose the Engine interface while skipping all UI bootstrapping that comes with the editor.
|
|
71
|
+
|
|
72
|
+
```js
|
|
73
|
+
import CreativeEngine from '@cesdk/engine';
|
|
74
|
+
|
|
75
|
+
const config = {
|
|
76
|
+
license: '<YOUR_LICENSE_KEY>',
|
|
77
|
+
baseURL: 'https://cdn.img.ly/packages/imgly/cesdk-engine/$UBQ_VERSION$/assets'
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
let engine;
|
|
81
|
+
|
|
82
|
+
export async function getEngine() {
|
|
83
|
+
if (!engine) {
|
|
84
|
+
engine = await CreativeEngine.init(config);
|
|
85
|
+
}
|
|
86
|
+
return engine;
|
|
87
|
+
}
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
Once started, you can trigger Engine operations inside your app logic from:
|
|
91
|
+
|
|
92
|
+
- Buttons
|
|
93
|
+
- Keyboard shortcuts
|
|
94
|
+
- Background tasks
|
|
95
|
+
|
|
96
|
+
## Example: Build and Export a Scene on a Single Click
|
|
97
|
+
|
|
98
|
+
The workflow below wires the Engine to a button, so the user automatically downloads an edited PNG when clicking on a button:
|
|
99
|
+
|
|
100
|
+
1. Copy paste the following code (adjust to your stack as needed):
|
|
101
|
+
|
|
102
|
+
```js
|
|
103
|
+
// Grab the button element
|
|
104
|
+
const downloadButton = document.querySelector('#download-headless');
|
|
105
|
+
|
|
106
|
+
// Register an async click handler
|
|
107
|
+
downloadButton?.addEventListener('click', async () => {
|
|
108
|
+
// Wait for the Engine
|
|
109
|
+
const engine = await getEngine();
|
|
110
|
+
|
|
111
|
+
// Build a fresh scene
|
|
112
|
+
const scene = engine.scene.create();
|
|
113
|
+
const page = engine.block.create('page');
|
|
114
|
+
engine.block.setWidth(page, 800);
|
|
115
|
+
engine.block.setHeight(page, 600);
|
|
116
|
+
// Attach the page to the scene
|
|
117
|
+
engine.block.appendChild(scene, page);
|
|
118
|
+
|
|
119
|
+
// Add an image layer
|
|
120
|
+
const imageBlock = engine.block.create('graphic');
|
|
121
|
+
engine.block.setShape(imageBlock, engine.block.createShape('rect'));
|
|
122
|
+
const imageFill = engine.block.createFill('image');
|
|
123
|
+
// Load an image fill from the CDN
|
|
124
|
+
engine.block.setString(
|
|
125
|
+
imageFill,
|
|
126
|
+
'fill/image/imageFileURI',
|
|
127
|
+
'https://img.ly/static/ubq_samples/sample_1.jpg'
|
|
128
|
+
);
|
|
129
|
+
engine.block.setFill(imageBlock, imageFill);
|
|
130
|
+
// Set position and dimensions
|
|
131
|
+
engine.block.setPosition(imageBlock, 100, 100);
|
|
132
|
+
engine.block.setWidth(imageBlock, 300);
|
|
133
|
+
engine.block.setHeight(imageBlock, 300);
|
|
134
|
+
// Append the image to the page
|
|
135
|
+
engine.block.appendChild(page, imageBlock);
|
|
136
|
+
|
|
137
|
+
// Add a text layer
|
|
138
|
+
const textBlock = engine.block.create('text');
|
|
139
|
+
// Set the text content
|
|
140
|
+
engine.block.setString(textBlock, 'text/text', 'Hello from Headless Mode!');
|
|
141
|
+
// Set position and dimensions
|
|
142
|
+
engine.block.setPosition(textBlock, 100, 450);
|
|
143
|
+
engine.block.setWidth(textBlock, 600);
|
|
144
|
+
// Append the text to the page
|
|
145
|
+
engine.block.appendChild(page, textBlock);
|
|
146
|
+
|
|
147
|
+
// Export the page as a PNG
|
|
148
|
+
const exportResult = await engine.block.export(page, 'image/png');
|
|
149
|
+
// Normalize the result to a blob
|
|
150
|
+
const blob =
|
|
151
|
+
exportResult instanceof Blob
|
|
152
|
+
? exportResult
|
|
153
|
+
: new Blob([exportResult], { type: 'image/png' });
|
|
154
|
+
|
|
155
|
+
triggerDownload(blob, 'headless-output.png');
|
|
156
|
+
});
|
|
157
|
+
|
|
158
|
+
function triggerDownload(blob, filename) {
|
|
159
|
+
// Build a temporary object URL
|
|
160
|
+
const url = URL.createObjectURL(blob);
|
|
161
|
+
const link = document.createElement('a');
|
|
162
|
+
link.href = url;
|
|
163
|
+
link.download = filename;
|
|
164
|
+
document.body.appendChild(link);
|
|
165
|
+
// Start the download on click
|
|
166
|
+
link.click();
|
|
167
|
+
// Revoke the link and URL to release resources
|
|
168
|
+
document.body.removeChild(link);
|
|
169
|
+
URL.revokeObjectURL(url);
|
|
170
|
+
}
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
2. Add a clickable element with the matching ID somewhere in your page’s markup. For example:
|
|
174
|
+
|
|
175
|
+
<Tabs>
|
|
176
|
+
<TabItem label="Plain HTML">
|
|
177
|
+
```js
|
|
178
|
+
<button id="download-headless">Download headless export</button>
|
|
179
|
+
```
|
|
180
|
+
</TabItem>
|
|
181
|
+
|
|
182
|
+
<TabItem label="Component-based setup">
|
|
183
|
+
If you’re in a component-based setup (React, Vue, Svelte, etc.), include the same button inside the component’s render/template:
|
|
184
|
+
|
|
185
|
+
```js
|
|
186
|
+
return (
|
|
187
|
+
<button id="download-headless">
|
|
188
|
+
Download headless export
|
|
189
|
+
</button>
|
|
190
|
+
);
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
</TabItem>
|
|
194
|
+
</Tabs>
|
|
195
|
+
|
|
196
|
+
Once that element is in the DOM, the snippet’s querySelector('#download-headless') finds it and wires up the click handler that runs the export.
|
|
197
|
+
|
|
198
|
+
<details>
|
|
199
|
+
<summary>See full module</summary>
|
|
200
|
+
|
|
201
|
+
```js
|
|
202
|
+
import CreativeEngine from '@cesdk/engine';
|
|
203
|
+
|
|
204
|
+
const config = {
|
|
205
|
+
license: '<YOUR_LICENSE_KEY>',
|
|
206
|
+
baseURL: 'https://cdn.img.ly/packages/imgly/cesdk-engine/$UBQ_VERSION$/assets'
|
|
207
|
+
};
|
|
208
|
+
|
|
209
|
+
let engine;
|
|
210
|
+
|
|
211
|
+
export async function getEngine() {
|
|
212
|
+
if (!engine) {
|
|
213
|
+
engine = await CreativeEngine.init(config);
|
|
214
|
+
}
|
|
215
|
+
return engine;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
const downloadButton = document.querySelector('#download-headless');
|
|
219
|
+
|
|
220
|
+
downloadButton?.addEventListener('click', async () => {
|
|
221
|
+
const engine = await getEngine();
|
|
222
|
+
|
|
223
|
+
const scene = engine.scene.create();
|
|
224
|
+
const page = engine.block.create('page');
|
|
225
|
+
engine.block.setWidth(page, 800);
|
|
226
|
+
engine.block.setHeight(page, 600);
|
|
227
|
+
engine.block.appendChild(scene, page);
|
|
228
|
+
|
|
229
|
+
const imageBlock = engine.block.create('graphic');
|
|
230
|
+
engine.block.setShape(imageBlock, engine.block.createShape('rect'));
|
|
231
|
+
const imageFill = engine.block.createFill('image');
|
|
232
|
+
engine.block.setString(
|
|
233
|
+
imageFill,
|
|
234
|
+
'fill/image/imageFileURI',
|
|
235
|
+
'https://img.ly/static/ubq_samples/sample_1.jpg'
|
|
236
|
+
);
|
|
237
|
+
engine.block.setFill(imageBlock, imageFill);
|
|
238
|
+
engine.block.setPosition(imageBlock, 100, 100);
|
|
239
|
+
engine.block.setWidth(imageBlock, 300);
|
|
240
|
+
engine.block.setHeight(imageBlock, 300);
|
|
241
|
+
engine.block.appendChild(page, imageBlock);
|
|
242
|
+
|
|
243
|
+
const textBlock = engine.block.create('text');
|
|
244
|
+
engine.block.setString(textBlock, 'text/text', 'Hello from Headless Mode!');
|
|
245
|
+
engine.block.setPosition(textBlock, 100, 450);
|
|
246
|
+
engine.block.setWidth(textBlock, 600);
|
|
247
|
+
engine.block.appendChild(page, textBlock);
|
|
248
|
+
|
|
249
|
+
const exportResult = await engine.block.export(page, 'image/png');
|
|
250
|
+
const blob =
|
|
251
|
+
exportResult instanceof Blob
|
|
252
|
+
? exportResult
|
|
253
|
+
: new Blob([exportResult], { type: 'image/png' });
|
|
254
|
+
|
|
255
|
+
triggerDownload(blob, 'headless-output.png');
|
|
256
|
+
});
|
|
257
|
+
|
|
258
|
+
function triggerDownload(blob, filename) {
|
|
259
|
+
const url = URL.createObjectURL(blob);
|
|
260
|
+
const link = document.createElement('a');
|
|
261
|
+
link.href = url;
|
|
262
|
+
link.download = filename;
|
|
263
|
+
document.body.appendChild(link);
|
|
264
|
+
link.click();
|
|
265
|
+
document.body.removeChild(link);
|
|
266
|
+
URL.revokeObjectURL(url);
|
|
267
|
+
}
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
</details>
|
|
271
|
+
|
|
272
|
+
After you add the script to your app and run the dev server:
|
|
273
|
+
|
|
274
|
+
1. Click the `#download-headless` button in your interface.
|
|
275
|
+
2. The Engine assembles the scene in memory and exports it as a PNG.
|
|
276
|
+
3. The PNG downloads locally (or you can upload it to your backend).
|
|
277
|
+
|
|
278
|
+
<Picture src={greetingCard} style={{ width: '85%' }} alt="Greeting Card with image and text" formats={['webp']} />
|
|
279
|
+
|
|
280
|
+
## Go Further
|
|
281
|
+
|
|
282
|
+
Need a hybrid approach? [Engine interface guides](./engine-interface.md) show how to combine headless logic with the standard editor UI.
|
|
283
|
+
|
|
284
|
+
---
|
|
285
|
+
|
|
286
|
+
## More Resources
|
|
287
|
+
|
|
288
|
+
- **[Vanilla JS/TS Documentation Index](https://img.ly/docs/cesdk/js.md)** - Browse all Vanilla JS/TS documentation
|
|
289
|
+
- **[Complete Documentation](./llms-full.txt.md)** - Full documentation in one file (for LLMs)
|
|
290
|
+
- **[Web Documentation](./js.md)** - Interactive documentation with examples
|
|
291
|
+
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
|
|
@@ -0,0 +1,396 @@
|
|
|
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:** [Concepts](./concepts.md) > [Pages](./concepts/pages.md)
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Pages define the format of your designs—every graphic block, text element, and media file lives inside a page. This guide covers how pages fit into the scene hierarchy, their properties like margins and title templates, and how to configure page dimensions for different layout modes.
|
|
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)
|
|
17
|
+
> - [Open in StackBlitz](https://stackblitz.com/github/imgly/cesdk-web-examples)
|
|
18
|
+
> - [Live demo](https://img.ly/docs/cesdk/examples/guides-concepts-pages-browser/)
|
|
19
|
+
|
|
20
|
+
Pages provide the canvas and frame for your designs. Whether you're building a multi-page document, a social media carousel, or a video composition, understanding how pages work will help you with structuring your content correctly.
|
|
21
|
+
|
|
22
|
+
```typescript file=@cesdk_web_examples/guides-concepts-pages-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: Pages Guide
|
|
30
|
+
*
|
|
31
|
+
* Demonstrates working with pages in CE.SDK:
|
|
32
|
+
* - Understanding the scene hierarchy (Scene → Pages → Blocks)
|
|
33
|
+
* - Creating and managing multiple pages
|
|
34
|
+
* - Setting page dimensions at the scene level
|
|
35
|
+
* - Configuring page properties (margins, title templates, fills)
|
|
36
|
+
* - Navigating between pages
|
|
37
|
+
*/
|
|
38
|
+
class Example implements EditorPlugin {
|
|
39
|
+
name = packageJson.name;
|
|
40
|
+
|
|
41
|
+
version = packageJson.version;
|
|
42
|
+
|
|
43
|
+
async initialize({ cesdk }: EditorPluginContext): Promise<void> {
|
|
44
|
+
if (!cesdk) {
|
|
45
|
+
throw new Error('CE.SDK instance is required for this plugin');
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
await cesdk.addPlugin(new DesignEditorConfig());
|
|
49
|
+
const engine = cesdk.engine;
|
|
50
|
+
|
|
51
|
+
// Create a scene with VerticalStack layout for multi-page designs
|
|
52
|
+
engine.scene.create('VerticalStack');
|
|
53
|
+
|
|
54
|
+
// Get the stack container to configure spacing
|
|
55
|
+
const [stack] = engine.block.findByType('stack');
|
|
56
|
+
engine.block.setFloat(stack, 'stack/spacing', 20);
|
|
57
|
+
engine.block.setBool(stack, 'stack/spacingInScreenspace', true);
|
|
58
|
+
|
|
59
|
+
// Get the scene to set page dimensions
|
|
60
|
+
const scene = engine.scene.get();
|
|
61
|
+
if (scene === null) {
|
|
62
|
+
throw new Error('No scene available');
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// Set page dimensions at the scene level (all pages share these dimensions)
|
|
66
|
+
engine.block.setFloat(scene, 'scene/pageDimensions/width', 800);
|
|
67
|
+
engine.block.setFloat(scene, 'scene/pageDimensions/height', 600);
|
|
68
|
+
|
|
69
|
+
// Create the first page and set its dimensions
|
|
70
|
+
const firstPage = engine.block.create('page');
|
|
71
|
+
engine.block.setWidth(firstPage, 800);
|
|
72
|
+
engine.block.setHeight(firstPage, 600);
|
|
73
|
+
engine.block.appendChild(stack, firstPage);
|
|
74
|
+
|
|
75
|
+
// Create the second page with the same dimensions
|
|
76
|
+
const secondPage = engine.block.create('page');
|
|
77
|
+
engine.block.setWidth(secondPage, 800);
|
|
78
|
+
engine.block.setHeight(secondPage, 600);
|
|
79
|
+
engine.block.appendChild(stack, secondPage);
|
|
80
|
+
|
|
81
|
+
// Add an image block to the first page
|
|
82
|
+
const imageBlock = engine.block.create('graphic');
|
|
83
|
+
engine.block.appendChild(firstPage, imageBlock);
|
|
84
|
+
|
|
85
|
+
// Create a rect shape for the graphic block
|
|
86
|
+
const rectShape = engine.block.createShape('rect');
|
|
87
|
+
engine.block.setShape(imageBlock, rectShape);
|
|
88
|
+
|
|
89
|
+
// Configure size and position after appending to the page
|
|
90
|
+
engine.block.setWidth(imageBlock, 400);
|
|
91
|
+
engine.block.setHeight(imageBlock, 300);
|
|
92
|
+
engine.block.setPositionX(imageBlock, 200);
|
|
93
|
+
engine.block.setPositionY(imageBlock, 150);
|
|
94
|
+
|
|
95
|
+
// Create and configure the image fill
|
|
96
|
+
const imageFill = engine.block.createFill('image');
|
|
97
|
+
engine.block.setString(
|
|
98
|
+
imageFill,
|
|
99
|
+
'fill/image/imageFileURI',
|
|
100
|
+
'https://img.ly/static/ubq_samples/sample_1.jpg'
|
|
101
|
+
);
|
|
102
|
+
engine.block.setFill(imageBlock, imageFill);
|
|
103
|
+
|
|
104
|
+
// Add a text block to the second page
|
|
105
|
+
const textBlock = engine.block.create('text');
|
|
106
|
+
engine.block.appendChild(secondPage, textBlock);
|
|
107
|
+
|
|
108
|
+
// Configure text properties after appending to the page
|
|
109
|
+
engine.block.replaceText(textBlock, 'Page 2');
|
|
110
|
+
engine.block.setTextFontSize(textBlock, 48);
|
|
111
|
+
engine.block.setTextColor(textBlock, { r: 0.2, g: 0.2, b: 0.2, a: 1.0 });
|
|
112
|
+
engine.block.setEnum(textBlock, 'text/horizontalAlignment', 'Center');
|
|
113
|
+
engine.block.setWidthMode(textBlock, 'Auto');
|
|
114
|
+
engine.block.setHeightMode(textBlock, 'Auto');
|
|
115
|
+
|
|
116
|
+
// Center the text on the page
|
|
117
|
+
const textWidth = engine.block.getFrameWidth(textBlock);
|
|
118
|
+
const textHeight = engine.block.getFrameHeight(textBlock);
|
|
119
|
+
engine.block.setPositionX(textBlock, (800 - textWidth) / 2);
|
|
120
|
+
engine.block.setPositionY(textBlock, (600 - textHeight) / 2);
|
|
121
|
+
|
|
122
|
+
// Configure page properties on the first page
|
|
123
|
+
// Enable and set margins for print bleed
|
|
124
|
+
engine.block.setBool(firstPage, 'page/marginEnabled', true);
|
|
125
|
+
engine.block.setFloat(firstPage, 'page/margin/top', 10);
|
|
126
|
+
engine.block.setFloat(firstPage, 'page/margin/bottom', 10);
|
|
127
|
+
engine.block.setFloat(firstPage, 'page/margin/left', 10);
|
|
128
|
+
engine.block.setFloat(firstPage, 'page/margin/right', 10);
|
|
129
|
+
|
|
130
|
+
// Set a custom title template for the first page
|
|
131
|
+
engine.block.setString(firstPage, 'page/titleTemplate', 'Cover');
|
|
132
|
+
|
|
133
|
+
// Set a custom title template for the second page
|
|
134
|
+
engine.block.setString(secondPage, 'page/titleTemplate', 'Content');
|
|
135
|
+
|
|
136
|
+
// Set a background fill on the second page
|
|
137
|
+
const colorFill = engine.block.createFill('color');
|
|
138
|
+
engine.block.setColor(colorFill, 'fill/color/value', {
|
|
139
|
+
r: 0.95,
|
|
140
|
+
g: 0.95,
|
|
141
|
+
b: 1.0,
|
|
142
|
+
a: 1.0
|
|
143
|
+
});
|
|
144
|
+
engine.block.setFill(secondPage, colorFill);
|
|
145
|
+
|
|
146
|
+
// Demonstrate finding pages
|
|
147
|
+
const allPages = engine.scene.getPages();
|
|
148
|
+
console.log('All pages:', allPages);
|
|
149
|
+
console.log('Number of pages:', allPages.length);
|
|
150
|
+
|
|
151
|
+
// Get the current page (nearest to viewport center or containing selection)
|
|
152
|
+
const currentPage = engine.scene.getCurrentPage();
|
|
153
|
+
console.log('Current page:', currentPage);
|
|
154
|
+
|
|
155
|
+
// Alternative: Find pages using block API
|
|
156
|
+
const pagesByType = engine.block.findByType('page');
|
|
157
|
+
console.log('Pages found by type:', pagesByType);
|
|
158
|
+
|
|
159
|
+
// Select the first page and zoom to fit
|
|
160
|
+
engine.block.select(firstPage);
|
|
161
|
+
engine.scene.enableZoomAutoFit(firstPage, 'Both');
|
|
162
|
+
|
|
163
|
+
console.log('Pages guide initialized with a 2-page design.');
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
export default Example;
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
This guide covers:
|
|
171
|
+
|
|
172
|
+
- Understanding the scene hierarchy: Scene → Pages → Blocks
|
|
173
|
+
- Creating and managing multiple pages
|
|
174
|
+
- Setting page dimensions at the scene level
|
|
175
|
+
- Configuring page properties like margins and title templates
|
|
176
|
+
- Navigating between pages programmatically
|
|
177
|
+
|
|
178
|
+
## Pages in the Scene Hierarchy
|
|
179
|
+
|
|
180
|
+
In CE.SDK, content follows a strict hierarchy: a **scene** contains **pages**, and pages contain **content blocks**. Only blocks attached to a page are rendered on the canvas.
|
|
181
|
+
|
|
182
|
+
```typescript highlight=highlight-create-scene
|
|
183
|
+
// Create a scene with VerticalStack layout for multi-page designs
|
|
184
|
+
engine.scene.create('VerticalStack');
|
|
185
|
+
|
|
186
|
+
// Get the stack container to configure spacing
|
|
187
|
+
const [stack] = engine.block.findByType('stack');
|
|
188
|
+
engine.block.setFloat(stack, 'stack/spacing', 20);
|
|
189
|
+
engine.block.setBool(stack, 'stack/spacingInScreenspace', true);
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
When you create a scene with a layout mode like `VerticalStack`, pages are automatically arranged according to that mode. Create pages using `engine.block.create('page')`, set their dimensions with `setWidth()` and `setHeight()`, then attach them to the scene (or its stack container) with `engine.block.appendChild()`.
|
|
193
|
+
|
|
194
|
+
```typescript highlight=highlight-create-pages
|
|
195
|
+
// Create the first page and set its dimensions
|
|
196
|
+
const firstPage = engine.block.create('page');
|
|
197
|
+
engine.block.setWidth(firstPage, 800);
|
|
198
|
+
engine.block.setHeight(firstPage, 600);
|
|
199
|
+
engine.block.appendChild(stack, firstPage);
|
|
200
|
+
|
|
201
|
+
// Create the second page with the same dimensions
|
|
202
|
+
const secondPage = engine.block.create('page');
|
|
203
|
+
engine.block.setWidth(secondPage, 800);
|
|
204
|
+
engine.block.setHeight(secondPage, 600);
|
|
205
|
+
engine.block.appendChild(stack, secondPage);
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
Content blocks must be added as children of a page to render. For graphic blocks, set both a shape and a fill for content to display. Append blocks to the page before configuring their properties.
|
|
209
|
+
|
|
210
|
+
```typescript highlight=highlight-add-content
|
|
211
|
+
// Add an image block to the first page
|
|
212
|
+
const imageBlock = engine.block.create('graphic');
|
|
213
|
+
engine.block.appendChild(firstPage, imageBlock);
|
|
214
|
+
|
|
215
|
+
// Create a rect shape for the graphic block
|
|
216
|
+
const rectShape = engine.block.createShape('rect');
|
|
217
|
+
engine.block.setShape(imageBlock, rectShape);
|
|
218
|
+
|
|
219
|
+
// Configure size and position after appending to the page
|
|
220
|
+
engine.block.setWidth(imageBlock, 400);
|
|
221
|
+
engine.block.setHeight(imageBlock, 300);
|
|
222
|
+
engine.block.setPositionX(imageBlock, 200);
|
|
223
|
+
engine.block.setPositionY(imageBlock, 150);
|
|
224
|
+
|
|
225
|
+
// Create and configure the image fill
|
|
226
|
+
const imageFill = engine.block.createFill('image');
|
|
227
|
+
engine.block.setString(
|
|
228
|
+
imageFill,
|
|
229
|
+
'fill/image/imageFileURI',
|
|
230
|
+
'https://img.ly/static/ubq_samples/sample_1.jpg'
|
|
231
|
+
);
|
|
232
|
+
engine.block.setFill(imageBlock, imageFill);
|
|
233
|
+
|
|
234
|
+
// Add a text block to the second page
|
|
235
|
+
const textBlock = engine.block.create('text');
|
|
236
|
+
engine.block.appendChild(secondPage, textBlock);
|
|
237
|
+
|
|
238
|
+
// Configure text properties after appending to the page
|
|
239
|
+
engine.block.replaceText(textBlock, 'Page 2');
|
|
240
|
+
engine.block.setTextFontSize(textBlock, 48);
|
|
241
|
+
engine.block.setTextColor(textBlock, { r: 0.2, g: 0.2, b: 0.2, a: 1.0 });
|
|
242
|
+
engine.block.setEnum(textBlock, 'text/horizontalAlignment', 'Center');
|
|
243
|
+
engine.block.setWidthMode(textBlock, 'Auto');
|
|
244
|
+
engine.block.setHeightMode(textBlock, 'Auto');
|
|
245
|
+
|
|
246
|
+
// Center the text on the page
|
|
247
|
+
const textWidth = engine.block.getFrameWidth(textBlock);
|
|
248
|
+
const textHeight = engine.block.getFrameHeight(textBlock);
|
|
249
|
+
engine.block.setPositionX(textBlock, (800 - textWidth) / 2);
|
|
250
|
+
engine.block.setPositionY(textBlock, (600 - textHeight) / 2);
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
## Page Dimensions and Consistency
|
|
254
|
+
|
|
255
|
+
The CE.SDK engine supports pages with different dimensions. When using stacked layout modes (VerticalStack, HorizontalStack), the Editor UI expects all pages to share the same size. However, with the `Free` layout mode, you can set different dimensions for each page in the UI.
|
|
256
|
+
|
|
257
|
+
```typescript highlight=highlight-set-dimensions
|
|
258
|
+
// Get the scene to set page dimensions
|
|
259
|
+
const scene = engine.scene.get();
|
|
260
|
+
if (scene === null) {
|
|
261
|
+
throw new Error('No scene available');
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
// Set page dimensions at the scene level (all pages share these dimensions)
|
|
265
|
+
engine.block.setFloat(scene, 'scene/pageDimensions/width', 800);
|
|
266
|
+
engine.block.setFloat(scene, 'scene/pageDimensions/height', 600);
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
You can set default page dimensions at the scene level using `engine.block.setFloat()` with `scene/pageDimensions/width` and `scene/pageDimensions/height`. The `scene/aspectRatioLock` property controls whether changing one dimension automatically adjusts the other. Individual pages can also have their dimensions set directly with `setWidth()` and `setHeight()`.
|
|
270
|
+
|
|
271
|
+
## Finding and Navigating Pages
|
|
272
|
+
|
|
273
|
+
CE.SDK provides several methods to locate and navigate between pages in your scene.
|
|
274
|
+
|
|
275
|
+
```typescript highlight=highlight-find-pages
|
|
276
|
+
// Demonstrate finding pages
|
|
277
|
+
const allPages = engine.scene.getPages();
|
|
278
|
+
console.log('All pages:', allPages);
|
|
279
|
+
console.log('Number of pages:', allPages.length);
|
|
280
|
+
|
|
281
|
+
// Get the current page (nearest to viewport center or containing selection)
|
|
282
|
+
const currentPage = engine.scene.getCurrentPage();
|
|
283
|
+
console.log('Current page:', currentPage);
|
|
284
|
+
|
|
285
|
+
// Alternative: Find pages using block API
|
|
286
|
+
const pagesByType = engine.block.findByType('page');
|
|
287
|
+
console.log('Pages found by type:', pagesByType);
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
Use these methods based on your needs:
|
|
291
|
+
|
|
292
|
+
- `engine.scene.getPages()` returns all pages in sorted order
|
|
293
|
+
- `engine.scene.getCurrentPage()` returns the page containing the current selection, or the page nearest to the viewport center
|
|
294
|
+
- `engine.block.findByType('page')` finds all page blocks in the scene
|
|
295
|
+
- `engine.scene.findNearestToViewPortCenterByType('page')` returns pages sorted by their distance from the viewport center
|
|
296
|
+
|
|
297
|
+
## Page Properties
|
|
298
|
+
|
|
299
|
+
Each page has its own properties that control its appearance and behavior. These are set on the page block itself, not on the scene.
|
|
300
|
+
|
|
301
|
+
### Margins
|
|
302
|
+
|
|
303
|
+
Page margins define bleed areas useful for print designs. Enable margins and configure each side individually:
|
|
304
|
+
|
|
305
|
+
```typescript highlight=highlight-page-properties
|
|
306
|
+
// Configure page properties on the first page
|
|
307
|
+
// Enable and set margins for print bleed
|
|
308
|
+
engine.block.setBool(firstPage, 'page/marginEnabled', true);
|
|
309
|
+
engine.block.setFloat(firstPage, 'page/margin/top', 10);
|
|
310
|
+
engine.block.setFloat(firstPage, 'page/margin/bottom', 10);
|
|
311
|
+
engine.block.setFloat(firstPage, 'page/margin/left', 10);
|
|
312
|
+
engine.block.setFloat(firstPage, 'page/margin/right', 10);
|
|
313
|
+
|
|
314
|
+
// Set a custom title template for the first page
|
|
315
|
+
engine.block.setString(firstPage, 'page/titleTemplate', 'Cover');
|
|
316
|
+
|
|
317
|
+
// Set a custom title template for the second page
|
|
318
|
+
engine.block.setString(secondPage, 'page/titleTemplate', 'Content');
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
Set `page/marginEnabled` to `true` to enable margins, then use `page/margin/top`, `page/margin/bottom`, `page/margin/left`, and `page/margin/right` to configure each side.
|
|
322
|
+
|
|
323
|
+
### Title Template
|
|
324
|
+
|
|
325
|
+
The `page/titleTemplate` property defines the display label shown for each page. It supports template variables like `{{ubq.page_index}}` for dynamic numbering.
|
|
326
|
+
|
|
327
|
+
The default value is `"Page {{ubq.page_index}}"`. You can customize this to show labels like "Slide 1", "Cover", or any custom text.
|
|
328
|
+
|
|
329
|
+
### Fill and Background
|
|
330
|
+
|
|
331
|
+
Pages support fills for background colors or images using the standard fill system.
|
|
332
|
+
|
|
333
|
+
```typescript highlight=highlight-page-background
|
|
334
|
+
// Set a background fill on the second page
|
|
335
|
+
const colorFill = engine.block.createFill('color');
|
|
336
|
+
engine.block.setColor(colorFill, 'fill/color/value', {
|
|
337
|
+
r: 0.95,
|
|
338
|
+
g: 0.95,
|
|
339
|
+
b: 1.0,
|
|
340
|
+
a: 1.0
|
|
341
|
+
});
|
|
342
|
+
engine.block.setFill(secondPage, colorFill);
|
|
343
|
+
```
|
|
344
|
+
|
|
345
|
+
Create a fill using `engine.block.createFill('color')` or `engine.block.createFill('image')`, configure its properties, then apply it to the page with `engine.block.setFill(page, fill)`.
|
|
346
|
+
|
|
347
|
+
## Page Layout Modes
|
|
348
|
+
|
|
349
|
+
The scene's layout mode controls how multiple pages are arranged. Set this using `engine.block.setEnum()` on the scene with the `scene/layout` property:
|
|
350
|
+
|
|
351
|
+
- **VerticalStack** (default): Pages stack vertically, one below the other
|
|
352
|
+
- **HorizontalStack**: Pages arrange horizontally, side by side
|
|
353
|
+
- **DepthStack**: Pages overlay each other, typically used for video editing
|
|
354
|
+
- **Free**: Pages can be positioned freely without automatic arrangement
|
|
355
|
+
|
|
356
|
+
## Pages for Static Designs vs. Video Editing
|
|
357
|
+
|
|
358
|
+
Page behavior varies depending on how the scene is used.
|
|
359
|
+
|
|
360
|
+
### Static Designs
|
|
361
|
+
|
|
362
|
+
For static designs, pages act like artboards. Each page is a separate canvas ideal for multi-page documents, social media posts, or print layouts. Pages exist side by side and don't have time-based properties.
|
|
363
|
+
|
|
364
|
+
### Video Editing
|
|
365
|
+
|
|
366
|
+
For video editing, pages represent time-based compositions that transition sequentially during playback. Each page has playback properties:
|
|
367
|
+
|
|
368
|
+
- `playback/duration` controls how long the page appears (in seconds)
|
|
369
|
+
- `playback/time` tracks the current playback position
|
|
370
|
+
|
|
371
|
+
## Troubleshooting
|
|
372
|
+
|
|
373
|
+
### Content Not Visible
|
|
374
|
+
|
|
375
|
+
If content blocks aren't appearing, check these common causes:
|
|
376
|
+
|
|
377
|
+
- Verify the block is attached to a page with `engine.block.appendChild(page, block)`
|
|
378
|
+
- For graphic blocks, ensure both a shape and fill are set
|
|
379
|
+
- Append blocks to the page before setting their size and position
|
|
380
|
+
|
|
381
|
+
### Dimension Inconsistencies
|
|
382
|
+
|
|
383
|
+
If pages appear at unexpected sizes when using stacked layouts, ensure all pages have consistent dimensions. With `Free` layout mode, pages can have different sizes. Set dimensions on individual pages using `setWidth()` and `setHeight()`.
|
|
384
|
+
|
|
385
|
+
### Page Not Found
|
|
386
|
+
|
|
387
|
+
If `engine.scene.getPages()` returns an empty array, ensure a scene is loaded first. In headless mode, you must create both the scene and pages manually before querying them.
|
|
388
|
+
|
|
389
|
+
---
|
|
390
|
+
|
|
391
|
+
## More Resources
|
|
392
|
+
|
|
393
|
+
- **[Vanilla JS/TS Documentation Index](https://img.ly/docs/cesdk/js.md)** - Browse all Vanilla JS/TS documentation
|
|
394
|
+
- **[Complete Documentation](./llms-full.txt.md)** - Full documentation in one file (for LLMs)
|
|
395
|
+
- **[Web Documentation](./js.md)** - Interactive documentation with examples
|
|
396
|
+
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
|