@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,694 @@
|
|
|
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) > [Export Media Assets](./export-save-publish/export.md) > [Partial Export](./export-save-publish/export/partial-export.md)
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Export individual design elements, grouped blocks, or specific pages from your
|
|
8
|
+
scene instead of exporting everything at once using CE.SDK's flexible export
|
|
9
|
+
API.
|
|
10
|
+
|
|
11
|
+

|
|
12
|
+
|
|
13
|
+
> **Reading time:** 10 minutes
|
|
14
|
+
>
|
|
15
|
+
> **Resources:**
|
|
16
|
+
>
|
|
17
|
+
> - [Download examples](https://github.com/imgly/cesdk-web-examples/archive/refs/tags/release-$UBQ_VERSION$.zip)
|
|
18
|
+
> - [View source on GitHub](https://github.com/imgly/cesdk-web-examples)
|
|
19
|
+
> - [Open in StackBlitz](https://stackblitz.com/github/imgly/cesdk-web-examples)
|
|
20
|
+
> - [Live demo](https://img.ly/docs/cesdk/examples/guides-export-save-publish-export-partial-export-browser/)
|
|
21
|
+
|
|
22
|
+
Understanding how to export specific parts of your scene gives you fine-grained control over output generation. Instead of exporting an entire scene, you can export individual images, text blocks, shapes, grouped elements, or specific pages. This is essential for creating asset libraries, implementing "export selection" features, or generating multiple outputs from a single design.
|
|
23
|
+
|
|
24
|
+
```typescript file=@cesdk_web_examples/guides-export-save-publish-export-partial-export-browser/browser.ts reference-only
|
|
25
|
+
import type { EditorPlugin, EditorPluginContext } from '@cesdk/cesdk-js';
|
|
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
|
+
import packageJson from './package.json';
|
|
43
|
+
import { calculateGridLayout } from './utils';
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* CE.SDK Plugin: Partial Export Guide
|
|
47
|
+
*
|
|
48
|
+
* This example demonstrates:
|
|
49
|
+
* - Exporting individual design blocks
|
|
50
|
+
* - Exporting grouped elements
|
|
51
|
+
* - Exporting with different formats and options
|
|
52
|
+
* - Understanding block hierarchy in exports
|
|
53
|
+
*/
|
|
54
|
+
class Example implements EditorPlugin {
|
|
55
|
+
name = packageJson.name;
|
|
56
|
+
|
|
57
|
+
version = packageJson.version;
|
|
58
|
+
|
|
59
|
+
async initialize({ cesdk }: EditorPluginContext): Promise<void> {
|
|
60
|
+
if (!cesdk) {
|
|
61
|
+
throw new Error('CE.SDK instance is required for this plugin');
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
await cesdk.addPlugin(new DesignEditorConfig());
|
|
65
|
+
// Add asset source plugins
|
|
66
|
+
await cesdk.addPlugin(new BlurAssetSource());
|
|
67
|
+
await cesdk.addPlugin(new ColorPaletteAssetSource());
|
|
68
|
+
await cesdk.addPlugin(new CropPresetsAssetSource());
|
|
69
|
+
await cesdk.addPlugin(
|
|
70
|
+
new UploadAssetSources({ include: ['ly.img.image.upload'] })
|
|
71
|
+
);
|
|
72
|
+
await cesdk.addPlugin(
|
|
73
|
+
new DemoAssetSources({
|
|
74
|
+
include: [
|
|
75
|
+
'ly.img.templates.blank.*',
|
|
76
|
+
'ly.img.templates.presentation.*',
|
|
77
|
+
'ly.img.templates.print.*',
|
|
78
|
+
'ly.img.templates.social.*',
|
|
79
|
+
'ly.img.image.*'
|
|
80
|
+
]
|
|
81
|
+
})
|
|
82
|
+
);
|
|
83
|
+
await cesdk.addPlugin(new EffectsAssetSource());
|
|
84
|
+
await cesdk.addPlugin(new FiltersAssetSource());
|
|
85
|
+
await cesdk.addPlugin(new PagePresetsAssetSource());
|
|
86
|
+
await cesdk.addPlugin(new StickerAssetSource());
|
|
87
|
+
await cesdk.addPlugin(new TextAssetSource());
|
|
88
|
+
await cesdk.addPlugin(new TextComponentAssetSource());
|
|
89
|
+
await cesdk.addPlugin(new TypefaceAssetSource());
|
|
90
|
+
await cesdk.addPlugin(new VectorShapeAssetSource());
|
|
91
|
+
|
|
92
|
+
// Create a design scene using CE.SDK cesdk method
|
|
93
|
+
await cesdk.actions.run('scene.create', {
|
|
94
|
+
page: { width: 800, height: 600, unit: 'Pixel' }
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
const engine = cesdk.engine;
|
|
98
|
+
|
|
99
|
+
// Get the page
|
|
100
|
+
const pages = engine.block.findByType('page');
|
|
101
|
+
const page = pages[0];
|
|
102
|
+
if (!page) {
|
|
103
|
+
throw new Error('No page found');
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
// Set page background to light gray
|
|
107
|
+
const pageFill = engine.block.getFill(page);
|
|
108
|
+
engine.block.setColor(pageFill, 'fill/color/value', {
|
|
109
|
+
r: 0.95,
|
|
110
|
+
g: 0.95,
|
|
111
|
+
b: 0.95,
|
|
112
|
+
a: 1.0
|
|
113
|
+
});
|
|
114
|
+
|
|
115
|
+
// Calculate responsive grid layout based on page dimensions
|
|
116
|
+
const pageWidth = engine.block.getWidth(page);
|
|
117
|
+
const pageHeight = engine.block.getHeight(page);
|
|
118
|
+
const layout = calculateGridLayout(pageWidth, pageHeight, 6);
|
|
119
|
+
const { blockWidth, blockHeight, getPosition } = layout;
|
|
120
|
+
|
|
121
|
+
// Sample image URI for demonstrations
|
|
122
|
+
const imageUri = 'https://img.ly/static/ubq_samples/sample_1.jpg';
|
|
123
|
+
|
|
124
|
+
// Create design elements for demonstration
|
|
125
|
+
// Create first image block
|
|
126
|
+
const imageBlock1 = await engine.block.addImage(imageUri, {
|
|
127
|
+
size: { width: blockWidth, height: blockHeight }
|
|
128
|
+
});
|
|
129
|
+
engine.block.appendChild(page, imageBlock1);
|
|
130
|
+
|
|
131
|
+
// Create second image block with different styling
|
|
132
|
+
const imageBlock2 = await engine.block.addImage(imageUri, {
|
|
133
|
+
size: { width: blockWidth, height: blockHeight },
|
|
134
|
+
cornerRadius: 20
|
|
135
|
+
});
|
|
136
|
+
engine.block.appendChild(page, imageBlock2);
|
|
137
|
+
|
|
138
|
+
// Create a shape block
|
|
139
|
+
const shapeBlock = engine.block.create('//ly.img.ubq/graphic');
|
|
140
|
+
const shape = engine.block.createShape('star');
|
|
141
|
+
engine.block.setShape(shapeBlock, shape);
|
|
142
|
+
engine.block.setWidth(shapeBlock, blockWidth);
|
|
143
|
+
engine.block.setHeight(shapeBlock, blockHeight);
|
|
144
|
+
|
|
145
|
+
// Add a color fill to the shape
|
|
146
|
+
const shapeFill = engine.block.createFill('color');
|
|
147
|
+
engine.block.setFill(shapeBlock, shapeFill);
|
|
148
|
+
engine.block.setColor(shapeFill, 'fill/color/value', {
|
|
149
|
+
r: 1.0,
|
|
150
|
+
g: 0.7,
|
|
151
|
+
b: 0.0,
|
|
152
|
+
a: 1.0
|
|
153
|
+
});
|
|
154
|
+
engine.block.appendChild(page, shapeBlock);
|
|
155
|
+
|
|
156
|
+
// Create two shapes for grouping demonstration
|
|
157
|
+
const groupShape1 = engine.block.create('//ly.img.ubq/graphic');
|
|
158
|
+
const rect = engine.block.createShape('rect');
|
|
159
|
+
engine.block.setShape(groupShape1, rect);
|
|
160
|
+
engine.block.setWidth(groupShape1, blockWidth * 0.4);
|
|
161
|
+
engine.block.setHeight(groupShape1, blockHeight * 0.4);
|
|
162
|
+
const groupFill1 = engine.block.createFill('color');
|
|
163
|
+
engine.block.setFill(groupShape1, groupFill1);
|
|
164
|
+
engine.block.setColor(groupFill1, 'fill/color/value', {
|
|
165
|
+
r: 0.3,
|
|
166
|
+
g: 0.6,
|
|
167
|
+
b: 0.9,
|
|
168
|
+
a: 1.0
|
|
169
|
+
});
|
|
170
|
+
engine.block.appendChild(page, groupShape1);
|
|
171
|
+
|
|
172
|
+
const groupShape2 = engine.block.create('//ly.img.ubq/graphic');
|
|
173
|
+
const ellipse = engine.block.createShape('ellipse');
|
|
174
|
+
engine.block.setShape(groupShape2, ellipse);
|
|
175
|
+
engine.block.setWidth(groupShape2, blockWidth * 0.4);
|
|
176
|
+
engine.block.setHeight(groupShape2, blockHeight * 0.4);
|
|
177
|
+
const groupFill2 = engine.block.createFill('color');
|
|
178
|
+
engine.block.setFill(groupShape2, groupFill2);
|
|
179
|
+
engine.block.setColor(groupFill2, 'fill/color/value', {
|
|
180
|
+
r: 0.9,
|
|
181
|
+
g: 0.3,
|
|
182
|
+
b: 0.5,
|
|
183
|
+
a: 1.0
|
|
184
|
+
});
|
|
185
|
+
engine.block.appendChild(page, groupShape2);
|
|
186
|
+
|
|
187
|
+
// Group the two shapes together
|
|
188
|
+
const group = engine.block.group([groupShape1, groupShape2]);
|
|
189
|
+
|
|
190
|
+
// Position all blocks in grid layout for visualization
|
|
191
|
+
const allBlocks = [
|
|
192
|
+
imageBlock1,
|
|
193
|
+
imageBlock2,
|
|
194
|
+
shapeBlock,
|
|
195
|
+
group,
|
|
196
|
+
groupShape1 // Note: groupShape1 is inside group, positioning group will position children
|
|
197
|
+
];
|
|
198
|
+
|
|
199
|
+
allBlocks.forEach((block, index) => {
|
|
200
|
+
if (index < 6) {
|
|
201
|
+
// Only position first 6 blocks (group contains 2)
|
|
202
|
+
const pos = getPosition(index);
|
|
203
|
+
engine.block.setPositionX(block, pos.x);
|
|
204
|
+
engine.block.setPositionY(block, pos.y);
|
|
205
|
+
}
|
|
206
|
+
});
|
|
207
|
+
|
|
208
|
+
// Position grouped shapes relative to group
|
|
209
|
+
const groupPos = getPosition(4);
|
|
210
|
+
engine.block.setPositionX(group, groupPos.x);
|
|
211
|
+
engine.block.setPositionY(group, groupPos.y);
|
|
212
|
+
engine.block.setPositionX(groupShape1, 10);
|
|
213
|
+
engine.block.setPositionY(groupShape1, 10);
|
|
214
|
+
engine.block.setPositionX(groupShape2, 60);
|
|
215
|
+
engine.block.setPositionY(groupShape2, 60);
|
|
216
|
+
|
|
217
|
+
// Helper function: Download blob and show notification
|
|
218
|
+
const downloadWithNotification = async (
|
|
219
|
+
blob: Blob,
|
|
220
|
+
filename: string,
|
|
221
|
+
mimeType: string,
|
|
222
|
+
exportType: string
|
|
223
|
+
) => {
|
|
224
|
+
await cesdk.utils.downloadFile(blob, mimeType as any);
|
|
225
|
+
|
|
226
|
+
// Show notification after successful download
|
|
227
|
+
cesdk.ui.showNotification({
|
|
228
|
+
message: `Export "${exportType}" completed`,
|
|
229
|
+
type: 'info',
|
|
230
|
+
duration: 'infinite'
|
|
231
|
+
});
|
|
232
|
+
};
|
|
233
|
+
|
|
234
|
+
// Override exportDesign action to export selected block or page
|
|
235
|
+
cesdk.actions.register('exportDesign', async () => {
|
|
236
|
+
// eslint-disable-next-line no-console
|
|
237
|
+
console.log('🚀 Export action triggered');
|
|
238
|
+
|
|
239
|
+
const selectedBlocks = engine.block.findAllSelected();
|
|
240
|
+
// eslint-disable-next-line no-console
|
|
241
|
+
console.log(`📦 Selected blocks: ${selectedBlocks.length}`);
|
|
242
|
+
|
|
243
|
+
let blockToExport: number;
|
|
244
|
+
if (selectedBlocks.length > 0) {
|
|
245
|
+
// Export first selected block (or group them if multiple)
|
|
246
|
+
blockToExport =
|
|
247
|
+
selectedBlocks.length === 1
|
|
248
|
+
? selectedBlocks[0]
|
|
249
|
+
: engine.block.group(selectedBlocks);
|
|
250
|
+
// eslint-disable-next-line no-console
|
|
251
|
+
console.log(
|
|
252
|
+
`✅ Exporting selected block(s): ${
|
|
253
|
+
selectedBlocks.length === 1 ? 'single block' : 'grouped blocks'
|
|
254
|
+
}`
|
|
255
|
+
);
|
|
256
|
+
} else {
|
|
257
|
+
// No selection - export current page
|
|
258
|
+
const pages = engine.block.findByType('page');
|
|
259
|
+
blockToExport = pages[0];
|
|
260
|
+
// eslint-disable-next-line no-console
|
|
261
|
+
console.log('📄 No selection - exporting current page');
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
// eslint-disable-next-line no-console
|
|
265
|
+
console.log(`📸 Exporting block ID: ${blockToExport}`);
|
|
266
|
+
|
|
267
|
+
// Export the block with high compression
|
|
268
|
+
const blob = await engine.block.export(blockToExport, {
|
|
269
|
+
mimeType: 'image/png',
|
|
270
|
+
pngCompressionLevel: 9 // Maximum compression for smaller file size
|
|
271
|
+
});
|
|
272
|
+
|
|
273
|
+
// eslint-disable-next-line no-console
|
|
274
|
+
console.log(
|
|
275
|
+
`✨ Export complete - size: ${(blob.size / 1024).toFixed(2)} KB`
|
|
276
|
+
);
|
|
277
|
+
|
|
278
|
+
// Download the blob
|
|
279
|
+
await downloadWithNotification(blob, 'export.png', 'image/png', 'Design');
|
|
280
|
+
|
|
281
|
+
// eslint-disable-next-line no-console
|
|
282
|
+
console.log('💾 Download complete');
|
|
283
|
+
});
|
|
284
|
+
|
|
285
|
+
// Helper function: Export individual block
|
|
286
|
+
const exportIndividualBlock = async () => {
|
|
287
|
+
// eslint-disable-next-line no-console
|
|
288
|
+
console.log('🚀 Starting individual block export...');
|
|
289
|
+
|
|
290
|
+
// Show loading dialog before export
|
|
291
|
+
const exportDialog = cesdk.utils.showLoadingDialog({
|
|
292
|
+
title: 'Exporting Block',
|
|
293
|
+
message: 'Processing export...',
|
|
294
|
+
progress: 'indeterminate'
|
|
295
|
+
});
|
|
296
|
+
|
|
297
|
+
// Find a specific block to export
|
|
298
|
+
const blockToExport = imageBlock1;
|
|
299
|
+
|
|
300
|
+
// Export the block as PNG with high compression and target size
|
|
301
|
+
const individualBlob = await engine.block.export(blockToExport, {
|
|
302
|
+
mimeType: 'image/png',
|
|
303
|
+
pngCompressionLevel: 9, // Maximum compression for smaller file size
|
|
304
|
+
targetWidth: 800, // Limit export resolution for faster exports
|
|
305
|
+
targetHeight: 600
|
|
306
|
+
});
|
|
307
|
+
|
|
308
|
+
// eslint-disable-next-line no-console
|
|
309
|
+
console.log(
|
|
310
|
+
`✅ Individual block exported - size: ${(
|
|
311
|
+
individualBlob.size / 1024
|
|
312
|
+
).toFixed(2)} KB`
|
|
313
|
+
);
|
|
314
|
+
|
|
315
|
+
// Close the export dialog
|
|
316
|
+
exportDialog.close();
|
|
317
|
+
|
|
318
|
+
// Download the exported block
|
|
319
|
+
await downloadWithNotification(
|
|
320
|
+
individualBlob,
|
|
321
|
+
'block-export.png',
|
|
322
|
+
'image/png',
|
|
323
|
+
'Block'
|
|
324
|
+
);
|
|
325
|
+
};
|
|
326
|
+
|
|
327
|
+
// Helper function: Create and export a group
|
|
328
|
+
const exportGroupExample = async () => {
|
|
329
|
+
// eslint-disable-next-line no-console
|
|
330
|
+
console.log('🚀 Starting group export...');
|
|
331
|
+
|
|
332
|
+
// Show loading dialog before export
|
|
333
|
+
const exportDialog = cesdk.utils.showLoadingDialog({
|
|
334
|
+
title: 'Exporting Group',
|
|
335
|
+
message: 'Processing export...',
|
|
336
|
+
progress: 'indeterminate'
|
|
337
|
+
});
|
|
338
|
+
|
|
339
|
+
// Group the blocks together (shapes already created above)
|
|
340
|
+
const exportGroup = engine.block.group([groupShape1, groupShape2]);
|
|
341
|
+
|
|
342
|
+
// Export the group (includes all children) with high compression and target size
|
|
343
|
+
const groupBlob = await engine.block.export(exportGroup, {
|
|
344
|
+
mimeType: 'image/png',
|
|
345
|
+
pngCompressionLevel: 9, // Maximum compression for smaller file size
|
|
346
|
+
targetWidth: 800, // Limit export resolution for faster exports
|
|
347
|
+
targetHeight: 600
|
|
348
|
+
});
|
|
349
|
+
|
|
350
|
+
// eslint-disable-next-line no-console
|
|
351
|
+
console.log(
|
|
352
|
+
`✅ Group exported - size: ${(groupBlob.size / 1024).toFixed(2)} KB`
|
|
353
|
+
);
|
|
354
|
+
|
|
355
|
+
// Close the export dialog
|
|
356
|
+
exportDialog.close();
|
|
357
|
+
|
|
358
|
+
// Download the exported group
|
|
359
|
+
await downloadWithNotification(
|
|
360
|
+
groupBlob,
|
|
361
|
+
'group-export.png',
|
|
362
|
+
'image/png',
|
|
363
|
+
'Group'
|
|
364
|
+
);
|
|
365
|
+
};
|
|
366
|
+
|
|
367
|
+
// Helper function: Export current page
|
|
368
|
+
const exportCurrentPage = async () => {
|
|
369
|
+
// Check export limits before exporting
|
|
370
|
+
const maxExportSize = engine.editor.getMaxExportSize();
|
|
371
|
+
const availableMemory = engine.editor.getAvailableMemory();
|
|
372
|
+
|
|
373
|
+
// eslint-disable-next-line no-console
|
|
374
|
+
console.log('🚀 Starting page export...');
|
|
375
|
+
// eslint-disable-next-line no-console
|
|
376
|
+
console.log(
|
|
377
|
+
`📊 Export limits - Max size: ${maxExportSize}px, Available memory: ${availableMemory} bytes`
|
|
378
|
+
);
|
|
379
|
+
|
|
380
|
+
// Show loading dialog before export
|
|
381
|
+
const exportDialog = cesdk.utils.showLoadingDialog({
|
|
382
|
+
title: 'Exporting Page',
|
|
383
|
+
message: 'Processing export...',
|
|
384
|
+
progress: 'indeterminate'
|
|
385
|
+
});
|
|
386
|
+
|
|
387
|
+
// Export the entire page with high compression and target size
|
|
388
|
+
const pageBlob = await engine.block.export(page, {
|
|
389
|
+
mimeType: 'image/png',
|
|
390
|
+
pngCompressionLevel: 9, // Maximum compression for smaller file size
|
|
391
|
+
targetWidth: 800, // Limit export resolution for faster exports
|
|
392
|
+
targetHeight: 600
|
|
393
|
+
});
|
|
394
|
+
|
|
395
|
+
// eslint-disable-next-line no-console
|
|
396
|
+
console.log(
|
|
397
|
+
`✅ Page exported - size: ${(pageBlob.size / 1024).toFixed(2)} KB`
|
|
398
|
+
);
|
|
399
|
+
|
|
400
|
+
// Close the export dialog
|
|
401
|
+
exportDialog.close();
|
|
402
|
+
|
|
403
|
+
// Download the exported page
|
|
404
|
+
await downloadWithNotification(
|
|
405
|
+
pageBlob,
|
|
406
|
+
'page-export.png',
|
|
407
|
+
'image/png',
|
|
408
|
+
'Page'
|
|
409
|
+
);
|
|
410
|
+
};
|
|
411
|
+
|
|
412
|
+
// Configure navigation bar layout
|
|
413
|
+
cesdk.ui.setComponentOrder({ in: 'ly.img.navigation.bar' }, [
|
|
414
|
+
'ly.img.undoRedo.navigationBar',
|
|
415
|
+
'ly.img.spacer',
|
|
416
|
+
{
|
|
417
|
+
id: 'ly.img.action.navigationBar',
|
|
418
|
+
onClick: async () => await exportCurrentPage(),
|
|
419
|
+
key: 'export-page',
|
|
420
|
+
label: 'Export Page',
|
|
421
|
+
icon: '@imgly/Save',
|
|
422
|
+
variant: 'plain',
|
|
423
|
+
color: 'accent'
|
|
424
|
+
},
|
|
425
|
+
{
|
|
426
|
+
id: 'ly.img.action.navigationBar',
|
|
427
|
+
onClick: async () => await exportGroupExample(),
|
|
428
|
+
key: 'export-group',
|
|
429
|
+
label: 'Export Group',
|
|
430
|
+
icon: '@imgly/Group',
|
|
431
|
+
color: 'accent'
|
|
432
|
+
},
|
|
433
|
+
{
|
|
434
|
+
id: 'ly.img.action.navigationBar',
|
|
435
|
+
onClick: async () => await exportIndividualBlock(),
|
|
436
|
+
key: 'export-block',
|
|
437
|
+
label: 'Export Block',
|
|
438
|
+
icon: '@imgly/Image',
|
|
439
|
+
variant: 'plain',
|
|
440
|
+
color: 'accent'
|
|
441
|
+
}
|
|
442
|
+
]);
|
|
443
|
+
|
|
444
|
+
// Show notification to guide users
|
|
445
|
+
cesdk.ui.showNotification({
|
|
446
|
+
message:
|
|
447
|
+
'Use the export buttons on the right to try different export options (Export Page, Export Group, Export Block)',
|
|
448
|
+
type: 'info',
|
|
449
|
+
duration: 'infinite'
|
|
450
|
+
});
|
|
451
|
+
|
|
452
|
+
// eslint-disable-next-line no-console
|
|
453
|
+
console.log('Partial export examples initialized successfully');
|
|
454
|
+
}
|
|
455
|
+
}
|
|
456
|
+
|
|
457
|
+
export default Example;
|
|
458
|
+
```
|
|
459
|
+
|
|
460
|
+
This guide covers how to export individual blocks, grouped elements, and pages programmatically using the Block API.
|
|
461
|
+
|
|
462
|
+
## Understanding Block Hierarchy and Export
|
|
463
|
+
|
|
464
|
+
### How Block Hierarchy Affects Exports
|
|
465
|
+
|
|
466
|
+
CE.SDK organizes content in a tree structure: Scene → Pages → Groups → Individual Blocks. When you export a block, the export automatically includes all child elements in the hierarchy.
|
|
467
|
+
|
|
468
|
+
Exporting a page exports every element on that page. Exporting a group exports all blocks within that group. Exporting an individual block (like an image or text) exports only that specific element.
|
|
469
|
+
|
|
470
|
+
This hierarchical behavior is powerful because you can control export scope by choosing which level of the hierarchy to target. Want just one image? Export the image block. Want a complete layout section? Export the parent group.
|
|
471
|
+
|
|
472
|
+
### Export Behavior
|
|
473
|
+
|
|
474
|
+
The export API applies several transformations to ensure consistent output. If the exported block itself is rotated, it will be exported without that rotation—the content appears upright in the output file. Any margin set on the block is included in the export bounds. Outside strokes are included for most block types, though pages handle strokes differently.
|
|
475
|
+
|
|
476
|
+
> **Note:** Only blocks that belong to the scene hierarchy can be exported. Orphaned blocks
|
|
477
|
+
> (created but not added to the page) cannot be exported until they're attached
|
|
478
|
+
> to the scene tree.
|
|
479
|
+
|
|
480
|
+
## Exporting Individual Blocks
|
|
481
|
+
|
|
482
|
+
### Finding Blocks to Export
|
|
483
|
+
|
|
484
|
+
Before exporting, we need to identify which block to export. We can find blocks by type using `findByType`, by name if you've assigned custom names, or by ID if you already have a reference.
|
|
485
|
+
|
|
486
|
+
Once we have a block reference, exporting is straightforward. Pass the block ID to `engine.block.export()` along with export options like format and quality settings.
|
|
487
|
+
|
|
488
|
+
### Basic Block Export
|
|
489
|
+
|
|
490
|
+
Here we export a single image block as PNG with compression settings. The export returns a Blob containing the image data.
|
|
491
|
+
|
|
492
|
+
```typescript highlight-export-individual-block
|
|
493
|
+
// eslint-disable-next-line no-console
|
|
494
|
+
console.log('🚀 Starting individual block export...');
|
|
495
|
+
|
|
496
|
+
// Show loading dialog before export
|
|
497
|
+
const exportDialog = cesdk.utils.showLoadingDialog({
|
|
498
|
+
title: 'Exporting Block',
|
|
499
|
+
message: 'Processing export...',
|
|
500
|
+
progress: 'indeterminate'
|
|
501
|
+
});
|
|
502
|
+
|
|
503
|
+
// Find a specific block to export
|
|
504
|
+
const blockToExport = imageBlock1;
|
|
505
|
+
|
|
506
|
+
// Export the block as PNG with high compression and target size
|
|
507
|
+
const individualBlob = await engine.block.export(blockToExport, {
|
|
508
|
+
mimeType: 'image/png',
|
|
509
|
+
pngCompressionLevel: 9, // Maximum compression for smaller file size
|
|
510
|
+
targetWidth: 800, // Limit export resolution for faster exports
|
|
511
|
+
targetHeight: 600
|
|
512
|
+
});
|
|
513
|
+
|
|
514
|
+
// eslint-disable-next-line no-console
|
|
515
|
+
console.log(
|
|
516
|
+
`✅ Individual block exported - size: ${(individualBlob.size / 1024).toFixed(
|
|
517
|
+
2
|
|
518
|
+
)} KB`
|
|
519
|
+
);
|
|
520
|
+
|
|
521
|
+
// Close the export dialog
|
|
522
|
+
exportDialog.close();
|
|
523
|
+
```
|
|
524
|
+
|
|
525
|
+
The `mimeType` determines the output format. CE.SDK supports PNG, JPEG, WEBP, and PDF for static exports. Each format has specific options—PNG uses `pngCompressionLevel`, JPEG uses `jpegQuality`, and WEBP uses `webpQuality`.
|
|
526
|
+
|
|
527
|
+
Different formats serve different purposes. PNG is ideal for graphics requiring transparency, such as UI elements, logos, or illustrations with alpha channels. JPEG works well for photographs where file size matters and transparency isn't needed. WEBP provides better compression than PNG or JPEG for web delivery. PDF preserves vector information and is suited for print workflows.
|
|
528
|
+
|
|
529
|
+
JPEG exports drop transparency and replace it with a solid background, which may produce unexpected results if your design relies on transparency. Always consider whether your content needs an alpha channel when choosing export formats.
|
|
530
|
+
|
|
531
|
+
## Exporting Grouped Elements
|
|
532
|
+
|
|
533
|
+
### Creating and Exporting Groups
|
|
534
|
+
|
|
535
|
+
Groups let you export multiple elements together as a single output. This is useful for composite graphics like logos with multiple components, complex illustrations made from many shapes, or layout sections that should be exported as a unit.
|
|
536
|
+
|
|
537
|
+
```typescript highlight-create-and-export-group
|
|
538
|
+
// eslint-disable-next-line no-console
|
|
539
|
+
console.log('🚀 Starting group export...');
|
|
540
|
+
|
|
541
|
+
// Show loading dialog before export
|
|
542
|
+
const exportDialog = cesdk.utils.showLoadingDialog({
|
|
543
|
+
title: 'Exporting Group',
|
|
544
|
+
message: 'Processing export...',
|
|
545
|
+
progress: 'indeterminate'
|
|
546
|
+
});
|
|
547
|
+
|
|
548
|
+
// Group the blocks together (shapes already created above)
|
|
549
|
+
const exportGroup = engine.block.group([groupShape1, groupShape2]);
|
|
550
|
+
|
|
551
|
+
// Export the group (includes all children) with high compression and target size
|
|
552
|
+
const groupBlob = await engine.block.export(exportGroup, {
|
|
553
|
+
mimeType: 'image/png',
|
|
554
|
+
pngCompressionLevel: 9, // Maximum compression for smaller file size
|
|
555
|
+
targetWidth: 800, // Limit export resolution for faster exports
|
|
556
|
+
targetHeight: 600
|
|
557
|
+
});
|
|
558
|
+
|
|
559
|
+
// eslint-disable-next-line no-console
|
|
560
|
+
console.log(
|
|
561
|
+
`✅ Group exported - size: ${(groupBlob.size / 1024).toFixed(2)} KB`
|
|
562
|
+
);
|
|
563
|
+
|
|
564
|
+
// Close the export dialog
|
|
565
|
+
exportDialog.close();
|
|
566
|
+
```
|
|
567
|
+
|
|
568
|
+
When you export a group, CE.SDK renders all children together into a single image. The group's bounding box determines the export dimensions, and relative positioning between children is preserved exactly as designed.
|
|
569
|
+
|
|
570
|
+
### Exporting Selected Elements
|
|
571
|
+
|
|
572
|
+
A common workflow is allowing users to select elements and export their selection. Use `findAllSelected()` to get selected blocks, group them temporarily, and export the group.
|
|
573
|
+
|
|
574
|
+
```typescript
|
|
575
|
+
// Get currently selected blocks
|
|
576
|
+
const selectedBlocks = engine.block.findAllSelected();
|
|
577
|
+
|
|
578
|
+
if (selectedBlocks.length === 0) {
|
|
579
|
+
console.log('No blocks selected');
|
|
580
|
+
} else if (selectedBlocks.length === 1) {
|
|
581
|
+
// Export single block directly
|
|
582
|
+
const blob = await engine.block.export(selectedBlocks[0], {
|
|
583
|
+
mimeType: 'image/png'
|
|
584
|
+
});
|
|
585
|
+
} else {
|
|
586
|
+
// Group and export multiple selected blocks
|
|
587
|
+
const group = engine.block.group(selectedBlocks);
|
|
588
|
+
const blob = await engine.block.export(group, {
|
|
589
|
+
mimeType: 'image/png'
|
|
590
|
+
});
|
|
591
|
+
}
|
|
592
|
+
```
|
|
593
|
+
|
|
594
|
+
This pattern enables "Export Selection" functionality in design tools, letting users export precisely what they've chosen without exporting the entire canvas.
|
|
595
|
+
|
|
596
|
+
## Exporting Pages
|
|
597
|
+
|
|
598
|
+
When working with multi-page documents, you often want to export pages individually rather than as a complete scene. Exporting the page block directly gives you output for that specific page.
|
|
599
|
+
|
|
600
|
+
```typescript highlight-export-current-page
|
|
601
|
+
// Check export limits before exporting
|
|
602
|
+
const maxExportSize = engine.editor.getMaxExportSize();
|
|
603
|
+
const availableMemory = engine.editor.getAvailableMemory();
|
|
604
|
+
|
|
605
|
+
// eslint-disable-next-line no-console
|
|
606
|
+
console.log('🚀 Starting page export...');
|
|
607
|
+
// eslint-disable-next-line no-console
|
|
608
|
+
console.log(
|
|
609
|
+
`📊 Export limits - Max size: ${maxExportSize}px, Available memory: ${availableMemory} bytes`
|
|
610
|
+
);
|
|
611
|
+
|
|
612
|
+
// Show loading dialog before export
|
|
613
|
+
const exportDialog = cesdk.utils.showLoadingDialog({
|
|
614
|
+
title: 'Exporting Page',
|
|
615
|
+
message: 'Processing export...',
|
|
616
|
+
progress: 'indeterminate'
|
|
617
|
+
});
|
|
618
|
+
|
|
619
|
+
// Export the entire page with high compression and target size
|
|
620
|
+
const pageBlob = await engine.block.export(page, {
|
|
621
|
+
mimeType: 'image/png',
|
|
622
|
+
pngCompressionLevel: 9, // Maximum compression for smaller file size
|
|
623
|
+
targetWidth: 800, // Limit export resolution for faster exports
|
|
624
|
+
targetHeight: 600
|
|
625
|
+
});
|
|
626
|
+
|
|
627
|
+
// eslint-disable-next-line no-console
|
|
628
|
+
console.log(`✅ Page exported - size: ${(pageBlob.size / 1024).toFixed(2)} KB`);
|
|
629
|
+
|
|
630
|
+
// Close the export dialog
|
|
631
|
+
exportDialog.close();
|
|
632
|
+
```
|
|
633
|
+
|
|
634
|
+
Page exports include everything on the page—the background, all content blocks, and any page-level effects. The page dimensions determine the output size unless you specify `targetWidth` and `targetHeight` to override the dimensions.
|
|
635
|
+
|
|
636
|
+
## Export Options and Configuration
|
|
637
|
+
|
|
638
|
+
### Target Size Control
|
|
639
|
+
|
|
640
|
+
Sometimes you need exports at specific dimensions regardless of the block's actual size. The `targetWidth` and `targetHeight` options render the block large enough to fill the target size while maintaining aspect ratio.
|
|
641
|
+
|
|
642
|
+
If you specify a target size that doesn't match the block's aspect ratio, CE.SDK ensures the block fills the target dimensions completely. The output may extend beyond the target size on one axis to preserve the correct proportions—no stretching or distortion occurs.
|
|
643
|
+
|
|
644
|
+
### Quality and Compression
|
|
645
|
+
|
|
646
|
+
Each export format offers quality controls that balance output size against visual fidelity.
|
|
647
|
+
|
|
648
|
+
For PNG, `pngCompressionLevel` ranges from 0 (no compression, fastest) to 9 (maximum compression, slowest). Higher compression takes longer but produces smaller files without affecting image quality—PNG is lossless.
|
|
649
|
+
|
|
650
|
+
JPEG `jpegQuality` ranges from 0 (lowest quality) to 1 (highest quality). Lower values create smaller files but introduce visible artifacts. Values above 0.9 provide excellent quality for most use cases.
|
|
651
|
+
|
|
652
|
+
WEBP `webpQuality` also ranges from 0 to 1. A value of 1.0 triggers a special lossless mode that often produces smaller files than equivalent PNG exports.
|
|
653
|
+
|
|
654
|
+
### Export Size Limits
|
|
655
|
+
|
|
656
|
+
Before exporting large blocks or requesting high target dimensions, check the platform's export capabilities. `getMaxExportSize()` returns the maximum width or height in pixels that can be exported. Both the width and height of your export must be below or equal to this limit. However, memory constraints may prevent exports that technically fit within size limits—use `getAvailableMemory()` to assess available memory before attempting large exports.
|
|
657
|
+
|
|
658
|
+
## Export Limitations and Considerations
|
|
659
|
+
|
|
660
|
+
### Format-Specific Constraints
|
|
661
|
+
|
|
662
|
+
JPEG drops transparency from the final image, replacing transparent pixels with a solid background (usually white or black depending on implementation). This can cause unexpected results when exporting designs that rely on alpha channels. Always use PNG or WEBP if transparency is required.
|
|
663
|
+
|
|
664
|
+
PDF export behavior depends on the `exportPdfWithHighCompatibility` option. When set to `true`, images and effects are rasterized according to the scene's DPI setting for broader viewer compatibility. When `false`, PDFs export faster by embedding images directly, but gradients with transparency may not render correctly in Safari or macOS Preview. See the [PDF export guide](./export-save-publish/export/to-pdf.md) for detailed performance guidance.
|
|
665
|
+
|
|
666
|
+
### Performance Considerations
|
|
667
|
+
|
|
668
|
+
Exporting is a synchronous operation that blocks the main thread while rendering. For large exports or multiple sequential exports, provide user feedback like progress indicators to prevent the interface from appearing frozen.
|
|
669
|
+
|
|
670
|
+
Batch exports can be optimized by processing blocks in parallel where possible, though be mindful of memory constraints. Exporting dozens of high-resolution images simultaneously may exhaust available memory. Consider batching in smaller groups with delays between batches.
|
|
671
|
+
|
|
672
|
+
### Hierarchy Requirements
|
|
673
|
+
|
|
674
|
+
Only blocks attached to the scene hierarchy can be exported. If you create a block but don't append it to a page, export will fail. Always ensure blocks are children of the page (or nested within groups that are children of the page) before attempting export.
|
|
675
|
+
|
|
676
|
+
## API Reference
|
|
677
|
+
|
|
678
|
+
| Method | Description |
|
|
679
|
+
| ------------------------------------ | -------------------------------------------------------- |
|
|
680
|
+
| `engine.block.export()` | Export a block with specified format and quality options |
|
|
681
|
+
| `engine.block.findByType()` | Find blocks by type identifier |
|
|
682
|
+
| `engine.block.group()` | Group multiple blocks into a single logical unit |
|
|
683
|
+
| `engine.scene.getPages()` | Get all pages in the current scene |
|
|
684
|
+
| `engine.editor.getMaxExportSize()` | Get maximum export dimension in pixels |
|
|
685
|
+
| `engine.editor.getAvailableMemory()` | Get available engine memory in bytes |
|
|
686
|
+
|
|
687
|
+
---
|
|
688
|
+
|
|
689
|
+
## More Resources
|
|
690
|
+
|
|
691
|
+
- **[Vanilla JS/TS Documentation Index](https://img.ly/docs/cesdk/js.md)** - Browse all Vanilla JS/TS documentation
|
|
692
|
+
- **[Complete Documentation](./llms-full.txt.md)** - Full documentation in one file (for LLMs)
|
|
693
|
+
- **[Web Documentation](./js.md)** - Interactive documentation with examples
|
|
694
|
+
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
|