@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,1038 @@
|
|
|
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) > [Actions](./actions.md)
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
The Actions API provides a centralized way to manage and customize actions for various user interactions in CE.SDK.
|
|
8
|
+
|
|
9
|
+
> **Note:** The Actions API is available after CE.SDK initialization through
|
|
10
|
+
> `cesdk.actions`.
|
|
11
|
+
|
|
12
|
+
> **Tip:** CE.SDK also provides a Utils API (`cesdk.utils`) with utility functions for
|
|
13
|
+
> common operations like exporting, file handling, and UI dialogs. These
|
|
14
|
+
> utilities can be used directly or within your custom actions.
|
|
15
|
+
|
|
16
|
+
## API Methods
|
|
17
|
+
|
|
18
|
+
The Actions API provides four methods:
|
|
19
|
+
|
|
20
|
+
- `register(actionId, handler)` - Register an action function for a specific event
|
|
21
|
+
- `get(actionId)` - Retrieve a registered action function
|
|
22
|
+
- `run(actionId, ...args)` - Execute a registered action with the provided arguments (throws if not registered)
|
|
23
|
+
- `list(matcher)` - Lists registered action IDs, optionally filtered by wildcard pattern
|
|
24
|
+
|
|
25
|
+
## Getting Started
|
|
26
|
+
|
|
27
|
+
Register actions after initializing CE.SDK:
|
|
28
|
+
|
|
29
|
+
```javascript
|
|
30
|
+
import CreativeEditorSDK from '@cesdk/cesdk-js';
|
|
31
|
+
|
|
32
|
+
const cesdk = await CreativeEditorSDK.create(container, {
|
|
33
|
+
// license: 'YOUR_CESDK_LICENSE_KEY',
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
// Register an action
|
|
37
|
+
cesdk.actions.register('actionType', async (...args) => {
|
|
38
|
+
// Your custom implementation
|
|
39
|
+
return result;
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
// Execute a registered action
|
|
43
|
+
await cesdk.actions.run('actionType', arg1, arg2);
|
|
44
|
+
|
|
45
|
+
// Or retrieve an action to call it later
|
|
46
|
+
const action = cesdk.actions.get('actionType');
|
|
47
|
+
|
|
48
|
+
// List all registered actions
|
|
49
|
+
const allActions = cesdk.actions.list();
|
|
50
|
+
|
|
51
|
+
// List actions matching a pattern
|
|
52
|
+
const exportActions = cesdk.actions.list({ matcher: 'export*' });
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Default Actions
|
|
56
|
+
|
|
57
|
+
CE.SDK automatically registers the following default actions:
|
|
58
|
+
|
|
59
|
+
### Scene Creation
|
|
60
|
+
|
|
61
|
+
- `scene.create` - Creates a new scene with configurable layout and page sizes
|
|
62
|
+
|
|
63
|
+
### Action Handlers
|
|
64
|
+
|
|
65
|
+
- `saveScene` - Saves the current scene (default: downloads scene file)
|
|
66
|
+
- `shareScene` - Shares the current scene (no default implementation)
|
|
67
|
+
- `exportDesign` - Exports design in various formats (default: downloads the exported file)
|
|
68
|
+
- `importScene` - Imports scene or archive files (default: opens file picker)
|
|
69
|
+
- `exportScene` - Exports scene or archive (default: downloads the file)
|
|
70
|
+
- `uploadFile` - Uploads files to asset sources (default: local upload for development)
|
|
71
|
+
- `onUnsupportedBrowser` - Handles unsupported browsers (no default implementation)
|
|
72
|
+
- `video.decode.checkSupport` - Checks video decoding/playback support (shows blocking dialog if unsupported)
|
|
73
|
+
- `video.encode.checkSupport` - Checks video encoding/export support (shows warning dialog if unsupported)
|
|
74
|
+
|
|
75
|
+
### Zoom Actions
|
|
76
|
+
|
|
77
|
+
- `zoom.toBlock` - Zoom to a specific block with configurable padding
|
|
78
|
+
- `zoom.toPage` - Zoom to the current page with auto-fit support
|
|
79
|
+
- `zoom.toSelection` - Zoom to currently selected blocks
|
|
80
|
+
- `zoom.in` - Zoom in by one step with configurable maximum
|
|
81
|
+
- `zoom.out` - Zoom out by one step with configurable minimum
|
|
82
|
+
- `zoom.toLevel` - Set zoom to a specific level
|
|
83
|
+
|
|
84
|
+
### Scroll Actions
|
|
85
|
+
|
|
86
|
+
- `scroll.toPage` - Scroll the viewport to center on a specific page with optional animation
|
|
87
|
+
|
|
88
|
+
### Video Timeline Zoom Actions
|
|
89
|
+
|
|
90
|
+
- `timeline.zoom.in` - Zoom in the video timeline by one step
|
|
91
|
+
- `timeline.zoom.out` - Zoom out the video timeline by one step
|
|
92
|
+
- `timeline.zoom.fit` - Fit the video timeline to show all content
|
|
93
|
+
- `timeline.zoom.toLevel` - Set the video timeline zoom to a specific level
|
|
94
|
+
- `timeline.zoom.reset` - Reset the video timeline zoom to default (1.0)
|
|
95
|
+
|
|
96
|
+
> **Note:** The `shareScene` and `onUnsupportedBrowser` actions do not have default
|
|
97
|
+
> implementations and must be registered manually.
|
|
98
|
+
|
|
99
|
+
> **Tip:** CE.SDK provides both an Actions API for handling user actions and a Utils API
|
|
100
|
+
> for utility functions. See the Utils API section below for details on
|
|
101
|
+
> available utilities.
|
|
102
|
+
|
|
103
|
+
### Scene Creation
|
|
104
|
+
|
|
105
|
+
#### `scene.create`
|
|
106
|
+
|
|
107
|
+
Creates a new scene with configurable mode, layout and page sizes. Returns the scene block ID.
|
|
108
|
+
|
|
109
|
+
```javascript
|
|
110
|
+
// Create a scene
|
|
111
|
+
await cesdk.actions.run('scene.create');
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
**Options:**
|
|
115
|
+
|
|
116
|
+
| Option | Type | Default | Description |
|
|
117
|
+
| ----------- | ------------- | ----------------- | ----------------------------------------------------------------------------------------- |
|
|
118
|
+
| `layout` | `SceneLayout` | `'VerticalStack'` | The scene layout. |
|
|
119
|
+
| `page` | `PageSpec` | — | A single page specification. Cannot be used together with `pages`. |
|
|
120
|
+
| `pageCount` | `number` | `1` | Number of pages to create from the single `page` spec. Ignored when `pages` is used. |
|
|
121
|
+
| `pages` | `PageSpec[]` | — | An array of page specifications, one page per entry. Cannot be used together with `page`. |
|
|
122
|
+
|
|
123
|
+
#### Page Specification
|
|
124
|
+
|
|
125
|
+
Pages can be specified in three ways:
|
|
126
|
+
|
|
127
|
+
**1. Direct dimensions**
|
|
128
|
+
|
|
129
|
+
Specify width, height, and unit directly:
|
|
130
|
+
|
|
131
|
+
```javascript
|
|
132
|
+
await cesdk.actions.run('scene.create', {
|
|
133
|
+
page: { width: 1080, height: 1920, unit: 'Pixel' }
|
|
134
|
+
});
|
|
135
|
+
|
|
136
|
+
// With fixed orientation (prevents rotation from swapping dimensions)
|
|
137
|
+
await cesdk.actions.run('scene.create', {
|
|
138
|
+
page: { width: 1080, height: 1920, unit: 'Pixel', fixedOrientation: true }
|
|
139
|
+
});
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
**2. Asset source reference**
|
|
143
|
+
|
|
144
|
+
Reference a page preset from an asset source by its source and asset IDs:
|
|
145
|
+
|
|
146
|
+
```javascript
|
|
147
|
+
// Use an Instagram Story preset
|
|
148
|
+
await cesdk.actions.run('scene.create', {
|
|
149
|
+
page: {
|
|
150
|
+
sourceId: 'ly.img.page.presets',
|
|
151
|
+
assetId: 'ly.img.page.presets.instagram.story'
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
**3. Asset object**
|
|
157
|
+
|
|
158
|
+
Pass an asset object directly, for example one returned by `engine.asset.findAssets()`:
|
|
159
|
+
|
|
160
|
+
```javascript
|
|
161
|
+
const result = await cesdk.engine.asset.findAssets('ly.img.page.presets', {
|
|
162
|
+
query: ''
|
|
163
|
+
});
|
|
164
|
+
await cesdk.actions.run('scene.create', {
|
|
165
|
+
page: result.assets[0]
|
|
166
|
+
});
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
#### Multiple Pages
|
|
170
|
+
|
|
171
|
+
Create scenes with multiple pages:
|
|
172
|
+
|
|
173
|
+
```javascript
|
|
174
|
+
// Multiple pages with different sizes
|
|
175
|
+
await cesdk.actions.run('scene.create', {
|
|
176
|
+
pages: [
|
|
177
|
+
{ width: 1080, height: 1920, unit: 'Pixel' },
|
|
178
|
+
{ width: 1920, height: 1080, unit: 'Pixel' }
|
|
179
|
+
]
|
|
180
|
+
});
|
|
181
|
+
|
|
182
|
+
// Multiple identical pages using pageCount
|
|
183
|
+
await cesdk.actions.run('scene.create', {
|
|
184
|
+
page: { width: 1080, height: 1080, unit: 'Pixel' },
|
|
185
|
+
pageCount: 3
|
|
186
|
+
});
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
> **Tip:** When no `page` or `pages` option is provided, `scene.create` creates a single
|
|
190
|
+
> page with the default format from the configured page preset asset sources.
|
|
191
|
+
|
|
192
|
+
### Scene Management Actions
|
|
193
|
+
|
|
194
|
+
#### `saveScene`
|
|
195
|
+
|
|
196
|
+
Handles saving the current scene. Default implementation downloads the scene file.
|
|
197
|
+
|
|
198
|
+
```javascript
|
|
199
|
+
// Basic implementation
|
|
200
|
+
cesdk.actions.register('saveScene', async () => {
|
|
201
|
+
const scene = await cesdk.engine.scene.saveToString();
|
|
202
|
+
console.log('Scene saved:', scene.length, 'characters');
|
|
203
|
+
|
|
204
|
+
// Production:
|
|
205
|
+
// await yourAPI.saveScene(scene);
|
|
206
|
+
|
|
207
|
+
cesdk.ui.showNotification('Scene saved successfully');
|
|
208
|
+
});
|
|
209
|
+
|
|
210
|
+
// With loading dialog
|
|
211
|
+
cesdk.actions.register('saveScene', async () => {
|
|
212
|
+
const dialogController = cesdk.utils.showLoadingDialog({
|
|
213
|
+
title: 'Saving Scene',
|
|
214
|
+
message: 'Please wait...',
|
|
215
|
+
progress: 'indeterminate'
|
|
216
|
+
});
|
|
217
|
+
|
|
218
|
+
try {
|
|
219
|
+
const scene = await cesdk.engine.scene.saveToString();
|
|
220
|
+
console.log('Scene saved:', scene.length, 'characters');
|
|
221
|
+
|
|
222
|
+
// Production:
|
|
223
|
+
// await yourAPI.saveScene(scene);
|
|
224
|
+
|
|
225
|
+
dialogController.showSuccess({
|
|
226
|
+
title: 'Saved',
|
|
227
|
+
message: 'Scene saved successfully'
|
|
228
|
+
});
|
|
229
|
+
} catch (error) {
|
|
230
|
+
dialogController.showError({
|
|
231
|
+
title: 'Save Failed',
|
|
232
|
+
message: 'Could not save the scene'
|
|
233
|
+
});
|
|
234
|
+
throw error;
|
|
235
|
+
}
|
|
236
|
+
});
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
#### `shareScene`
|
|
240
|
+
|
|
241
|
+
Handles scene sharing. No default implementation.
|
|
242
|
+
|
|
243
|
+
```javascript
|
|
244
|
+
// Register share functionality
|
|
245
|
+
cesdk.actions.register('shareScene', async () => {
|
|
246
|
+
const scene = await cesdk.engine.scene.saveToString();
|
|
247
|
+
const shareUrl = 'https://example.com/shared-scene-placeholder';
|
|
248
|
+
console.log('Scene ready to share:', scene.length, 'characters');
|
|
249
|
+
|
|
250
|
+
// Production:
|
|
251
|
+
// const shareUrl = await yourAPI.createShareableLink(scene);
|
|
252
|
+
|
|
253
|
+
await navigator.share({ url: shareUrl });
|
|
254
|
+
});
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
#### `importScene` and `exportScene`
|
|
258
|
+
|
|
259
|
+
Handle scene import/export operations with support for both scene files and archives.
|
|
260
|
+
|
|
261
|
+
```javascript
|
|
262
|
+
// Import scene or archive
|
|
263
|
+
cesdk.actions.register('importScene', async ({ format }) => {
|
|
264
|
+
if (format === 'archive') {
|
|
265
|
+
console.log('Archive import requested');
|
|
266
|
+
|
|
267
|
+
// Production:
|
|
268
|
+
// const archive = await yourAPI.loadArchive();
|
|
269
|
+
// await cesdk.engine.scene.loadFromArchiveURL(archive);
|
|
270
|
+
} else {
|
|
271
|
+
console.log('Scene import requested');
|
|
272
|
+
|
|
273
|
+
// Production:
|
|
274
|
+
// const scene = await yourAPI.loadScene();
|
|
275
|
+
// await cesdk.engine.scene.loadFromString(scene);
|
|
276
|
+
}
|
|
277
|
+
});
|
|
278
|
+
|
|
279
|
+
// Export scene or archive
|
|
280
|
+
cesdk.actions.register('exportScene', async ({ format }) => {
|
|
281
|
+
if (format === 'archive') {
|
|
282
|
+
const archive = await cesdk.engine.scene.saveToArchive();
|
|
283
|
+
console.log('Archive ready for export:', archive.length, 'bytes');
|
|
284
|
+
|
|
285
|
+
// Production:
|
|
286
|
+
// await yourAPI.uploadArchive(archive);
|
|
287
|
+
} else {
|
|
288
|
+
const scene = await cesdk.engine.scene.saveToString();
|
|
289
|
+
console.log('Scene ready for export:', scene.length, 'characters');
|
|
290
|
+
|
|
291
|
+
// Production:
|
|
292
|
+
// await yourAPI.uploadScene(scene);
|
|
293
|
+
}
|
|
294
|
+
});
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
### Export Operations
|
|
298
|
+
|
|
299
|
+
#### `exportDesign`
|
|
300
|
+
|
|
301
|
+
Handles all export operations (images, PDFs, videos). Default implementation downloads the exported file.
|
|
302
|
+
|
|
303
|
+
```javascript
|
|
304
|
+
// Basic implementation
|
|
305
|
+
cesdk.actions.register('exportDesign', async (options) => {
|
|
306
|
+
// Use the utils API to perform the export with loading dialog
|
|
307
|
+
const { blobs, options: exportOptions } = await cesdk.utils.export(options);
|
|
308
|
+
console.log('Exported', blobs.length, 'files');
|
|
309
|
+
blobs.forEach((blob, i) => console.log(`File ${i + 1}:`, blob.size, 'bytes'));
|
|
310
|
+
|
|
311
|
+
// Production:
|
|
312
|
+
// await Promise.all(blobs.map(blob => yourCDN.upload(blob)));
|
|
313
|
+
|
|
314
|
+
cesdk.ui.showNotification('Export completed successfully');
|
|
315
|
+
});
|
|
316
|
+
|
|
317
|
+
// Direct engine export with custom loading dialog (bypassing utils)
|
|
318
|
+
cesdk.actions.register('exportDesign', async (options) => {
|
|
319
|
+
const dialogController = cesdk.utils.showLoadingDialog({
|
|
320
|
+
title: 'Exporting',
|
|
321
|
+
message: 'Processing your export...'
|
|
322
|
+
});
|
|
323
|
+
|
|
324
|
+
try {
|
|
325
|
+
const page = cesdk.engine.scene.getCurrentPage();
|
|
326
|
+
if (page === null) {
|
|
327
|
+
throw new Error('No page selected for export');
|
|
328
|
+
}
|
|
329
|
+
let result;
|
|
330
|
+
|
|
331
|
+
if (options?.mimeType?.startsWith('video/')) {
|
|
332
|
+
// Video export with progress
|
|
333
|
+
result = await cesdk.engine.block.exportVideo(page, {
|
|
334
|
+
...options,
|
|
335
|
+
onProgress: (rendered, encoded, total) => {
|
|
336
|
+
dialogController.updateProgress({
|
|
337
|
+
value: rendered,
|
|
338
|
+
max: total
|
|
339
|
+
});
|
|
340
|
+
}
|
|
341
|
+
});
|
|
342
|
+
} else {
|
|
343
|
+
// Static export (image/PDF)
|
|
344
|
+
result = await cesdk.engine.block.export(page, options);
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
console.log('File ready for export:', result.size, 'bytes');
|
|
348
|
+
|
|
349
|
+
// Production:
|
|
350
|
+
// await yourCDN.upload(result);
|
|
351
|
+
|
|
352
|
+
dialogController.showSuccess({
|
|
353
|
+
title: 'Export Complete',
|
|
354
|
+
message: 'Files uploaded successfully'
|
|
355
|
+
});
|
|
356
|
+
} catch (error) {
|
|
357
|
+
dialogController.showError({
|
|
358
|
+
title: 'Export Failed',
|
|
359
|
+
message: 'Could not complete the export'
|
|
360
|
+
});
|
|
361
|
+
throw error;
|
|
362
|
+
}
|
|
363
|
+
});
|
|
364
|
+
```
|
|
365
|
+
|
|
366
|
+
### File Upload Action
|
|
367
|
+
|
|
368
|
+
#### `uploadFile`
|
|
369
|
+
|
|
370
|
+
Handles file uploads to asset sources. Default implementation uses local upload for development.
|
|
371
|
+
|
|
372
|
+
```javascript
|
|
373
|
+
// Register production upload handler
|
|
374
|
+
cesdk.actions.register('uploadFile', async (file, onProgress, context) => {
|
|
375
|
+
console.log('Uploading file:', file.name, file.size, 'bytes');
|
|
376
|
+
onProgress(50); // Simulate progress
|
|
377
|
+
await new Promise((resolve) => setTimeout(resolve, 500));
|
|
378
|
+
onProgress(100);
|
|
379
|
+
|
|
380
|
+
// Production:
|
|
381
|
+
// const asset = await yourStorageService.upload(file, {
|
|
382
|
+
// onProgress: (percent) => onProgress(percent),
|
|
383
|
+
// context
|
|
384
|
+
// });
|
|
385
|
+
|
|
386
|
+
// Return AssetDefinition
|
|
387
|
+
return {
|
|
388
|
+
id: 'local-' + Date.now(),
|
|
389
|
+
label: { en: file.name },
|
|
390
|
+
meta: {
|
|
391
|
+
uri: URL.createObjectURL(file),
|
|
392
|
+
thumbUri: URL.createObjectURL(file),
|
|
393
|
+
kind: 'image',
|
|
394
|
+
width: 1920,
|
|
395
|
+
height: 1080
|
|
396
|
+
// Production:
|
|
397
|
+
// uri: asset.url,
|
|
398
|
+
// thumbUri: asset.thumbnailUrl,
|
|
399
|
+
// width: asset.width,
|
|
400
|
+
// height: asset.height
|
|
401
|
+
}
|
|
402
|
+
};
|
|
403
|
+
});
|
|
404
|
+
```
|
|
405
|
+
|
|
406
|
+
You can control which file types users can upload by setting the `upload/supportedMimeTypes` setting:
|
|
407
|
+
|
|
408
|
+
```javascript
|
|
409
|
+
// Example 1: Only allow images
|
|
410
|
+
cesdk.engine.editor.setSettingString(
|
|
411
|
+
'upload/supportedMimeTypes',
|
|
412
|
+
'image/png,image/jpeg,image/gif,image/svg+xml'
|
|
413
|
+
);
|
|
414
|
+
|
|
415
|
+
// Example 2: Allow images and videos
|
|
416
|
+
cesdk.engine.editor.setSettingString(
|
|
417
|
+
'upload/supportedMimeTypes',
|
|
418
|
+
'image/png,image/jpeg,image/gif,video/mp4,video/quicktime'
|
|
419
|
+
);
|
|
420
|
+
|
|
421
|
+
// Example 3: Allow specific document types
|
|
422
|
+
cesdk.engine.editor.setSettingString(
|
|
423
|
+
'upload/supportedMimeTypes',
|
|
424
|
+
'application/pdf,image/png,image/jpeg'
|
|
425
|
+
);
|
|
426
|
+
```
|
|
427
|
+
|
|
428
|
+
> **Caution:** The default `uploadFile` implementation uses local upload for development
|
|
429
|
+
> only. Always register a proper upload handler for production.
|
|
430
|
+
|
|
431
|
+
### Unsupported Browser Action
|
|
432
|
+
|
|
433
|
+
#### `onUnsupportedBrowser`
|
|
434
|
+
|
|
435
|
+
Handles unsupported browser detection. No default implementation is provided.
|
|
436
|
+
|
|
437
|
+
```javascript
|
|
438
|
+
// Register handler for unsupported browsers
|
|
439
|
+
cesdk.actions.register('onUnsupportedBrowser', () => {
|
|
440
|
+
// Redirect to a custom compatibility page
|
|
441
|
+
window.location.href = '/browser-not-supported';
|
|
442
|
+
});
|
|
443
|
+
```
|
|
444
|
+
|
|
445
|
+
### Video Support Actions
|
|
446
|
+
|
|
447
|
+
CE.SDK provides actions to detect video capabilities at runtime. These actions help you handle browsers and platforms that lack required video codecs, particularly Linux browsers and Firefox.
|
|
448
|
+
|
|
449
|
+
#### `video.decode.checkSupport`
|
|
450
|
+
|
|
451
|
+
Checks if the browser supports video decoding and playback via the WebCodecs API. If unsupported, displays a blocking error dialog that users cannot dismiss.
|
|
452
|
+
|
|
453
|
+
Returns `true` if video decoding is supported, `false` otherwise.
|
|
454
|
+
|
|
455
|
+
```javascript
|
|
456
|
+
// Check video decode support before loading video content
|
|
457
|
+
const isSupported = cesdk.actions.run('video.decode.checkSupport');
|
|
458
|
+
|
|
459
|
+
if (!isSupported) {
|
|
460
|
+
// A blocking error dialog is shown automatically
|
|
461
|
+
// The user cannot proceed with video editing
|
|
462
|
+
return;
|
|
463
|
+
}
|
|
464
|
+
|
|
465
|
+
// Safe to proceed with video content
|
|
466
|
+
await cesdk.engine.scene.loadFromURL(videoSceneUrl);
|
|
467
|
+
|
|
468
|
+
// You can also disable the dialog and handle feedback yourself:
|
|
469
|
+
const supportedSilently = cesdk.actions.run('video.decode.checkSupport', {
|
|
470
|
+
dialog: false
|
|
471
|
+
});
|
|
472
|
+
```
|
|
473
|
+
|
|
474
|
+
**Options:**
|
|
475
|
+
|
|
476
|
+
| Option | Type | Default | Description |
|
|
477
|
+
| -------- | -------------------------------------------------------------------- | ----------------------------- | --------------------------------------------------------------------------------------- |
|
|
478
|
+
| `dialog` | `boolean \| { show: boolean; backdrop?: 'transparent' \| 'opaque' }` | `true` (backdrop: `'opaque'`) | Controls dialog display. Use `false` to disable, or an object for fine-grained control. |
|
|
479
|
+
|
|
480
|
+
> **Caution:** The `video.decode.checkSupport` action shows a blocking dialog with no dismiss option
|
|
481
|
+
> when video is not supported. Only call this action when you intend to work
|
|
482
|
+
> with video content.
|
|
483
|
+
|
|
484
|
+
#### `video.encode.checkSupport`
|
|
485
|
+
|
|
486
|
+
Checks if the browser supports video encoding/export (H.264 video and AAC audio encoding). If unsupported, displays a warning dialog that users can dismiss to continue editing.
|
|
487
|
+
|
|
488
|
+
Returns a `Promise<boolean>` - `true` if video encoding is supported, `false` otherwise.
|
|
489
|
+
|
|
490
|
+
```javascript
|
|
491
|
+
// Check video encode support before attempting export
|
|
492
|
+
const canExport = await cesdk.actions.run('video.encode.checkSupport');
|
|
493
|
+
|
|
494
|
+
if (!canExport) {
|
|
495
|
+
// A warning dialog is shown automatically
|
|
496
|
+
// User can dismiss and continue editing
|
|
497
|
+
// Consider offering server-side export as alternative
|
|
498
|
+
console.log('Video export unavailable - consider server-side rendering');
|
|
499
|
+
}
|
|
500
|
+
|
|
501
|
+
// You can also disable the dialog and handle feedback yourself:
|
|
502
|
+
const canExportSilently = await cesdk.actions.run('video.encode.checkSupport', {
|
|
503
|
+
dialog: false
|
|
504
|
+
});
|
|
505
|
+
```
|
|
506
|
+
|
|
507
|
+
**Options:**
|
|
508
|
+
|
|
509
|
+
| Option | Type | Default | Description |
|
|
510
|
+
| -------- | -------------------------------------------------------------------- | ---------------------------------- | --------------------------------------------------------------------------------------- |
|
|
511
|
+
| `dialog` | `boolean \| { show: boolean; backdrop?: 'transparent' \| 'opaque' }` | `true` (backdrop: `'transparent'`) | Controls dialog display. Use `false` to disable, or an object for fine-grained control. |
|
|
512
|
+
|
|
513
|
+
> **Tip:** For platforms that don't support client-side video export (Linux, Firefox),
|
|
514
|
+
> consider using [CE.SDK Renderer](#broken-link-7f3e9a)
|
|
515
|
+
> for server-side video rendering.
|
|
516
|
+
|
|
517
|
+
#### Platform Support
|
|
518
|
+
|
|
519
|
+
| Platform | Video Import | Video Export |
|
|
520
|
+
| ---------------------------- | ------------ | ------------ |
|
|
521
|
+
| Chrome/Edge (Windows, macOS) | ✅ | ✅ |
|
|
522
|
+
| Safari (macOS) | ✅ | ✅ |
|
|
523
|
+
| Chrome (Linux) | ❌ | ❌ |
|
|
524
|
+
| Firefox (all platforms) | ❌ | ❌ |
|
|
525
|
+
|
|
526
|
+
### Zoom Actions
|
|
527
|
+
|
|
528
|
+
CE.SDK provides built-in zoom actions for controlling the viewport zoom level and focus. These actions are automatically registered and can be customized or called programmatically.
|
|
529
|
+
|
|
530
|
+
#### Available Zoom Actions
|
|
531
|
+
|
|
532
|
+
- `zoom.toBlock` - Zoom to a specific block with configurable padding
|
|
533
|
+
- `zoom.toPage` - Zoom to the current page (or a specified page)
|
|
534
|
+
- `zoom.toSelection` - Zoom to the currently selected blocks
|
|
535
|
+
- `zoom.in` - Zoom in by one step
|
|
536
|
+
- `zoom.out` - Zoom out by one step
|
|
537
|
+
- `zoom.toLevel` - Set zoom to a specific level
|
|
538
|
+
|
|
539
|
+
#### `zoom.toBlock`
|
|
540
|
+
|
|
541
|
+
Zooms the viewport to fit a specific block.
|
|
542
|
+
|
|
543
|
+
```javascript
|
|
544
|
+
// Zoom to a block with default settings
|
|
545
|
+
await cesdk.actions.run('zoom.toBlock', blockId);
|
|
546
|
+
|
|
547
|
+
// Zoom with custom padding and animation
|
|
548
|
+
await cesdk.actions.run('zoom.toBlock', blockId, {
|
|
549
|
+
padding: 50, // Uniform padding on all sides
|
|
550
|
+
animate: true,
|
|
551
|
+
autoFit: false
|
|
552
|
+
});
|
|
553
|
+
|
|
554
|
+
// Different padding for each side
|
|
555
|
+
await cesdk.actions.run('zoom.toBlock', blockId, {
|
|
556
|
+
padding: { top: 20, bottom: 20, left: 40, right: 40 },
|
|
557
|
+
animate: {
|
|
558
|
+
duration: 0.3,
|
|
559
|
+
easing: 'EaseInOut'
|
|
560
|
+
}
|
|
561
|
+
});
|
|
562
|
+
```
|
|
563
|
+
|
|
564
|
+
#### `zoom.toPage`
|
|
565
|
+
|
|
566
|
+
Zooms to the current page or a specified page. If no options are provided, defaults to the current page.
|
|
567
|
+
|
|
568
|
+
```javascript
|
|
569
|
+
// Zoom to current page with auto-fit
|
|
570
|
+
await cesdk.actions.run('zoom.toPage', {
|
|
571
|
+
autoFit: true,
|
|
572
|
+
animate: false
|
|
573
|
+
});
|
|
574
|
+
|
|
575
|
+
// Zoom with custom padding
|
|
576
|
+
await cesdk.actions.run('zoom.toPage', {
|
|
577
|
+
padding: { x: 40, y: 80 },
|
|
578
|
+
animate: true
|
|
579
|
+
});
|
|
580
|
+
```
|
|
581
|
+
|
|
582
|
+
#### `zoom.toSelection`
|
|
583
|
+
|
|
584
|
+
Zooms to fit all currently selected blocks in the viewport.
|
|
585
|
+
|
|
586
|
+
```javascript
|
|
587
|
+
// Zoom to selection with animation
|
|
588
|
+
await cesdk.actions.run('zoom.toSelection', {
|
|
589
|
+
padding: 40,
|
|
590
|
+
animate: true
|
|
591
|
+
});
|
|
592
|
+
|
|
593
|
+
// Auto-fit to selection
|
|
594
|
+
await cesdk.actions.run('zoom.toSelection', {
|
|
595
|
+
autoFit: true,
|
|
596
|
+
padding: { x: 20, y: 20 }
|
|
597
|
+
});
|
|
598
|
+
```
|
|
599
|
+
|
|
600
|
+
#### `zoom.in` and `zoom.out`
|
|
601
|
+
|
|
602
|
+
Step-based zoom controls with configurable limits.
|
|
603
|
+
|
|
604
|
+
```javascript
|
|
605
|
+
// Zoom in with default settings
|
|
606
|
+
await cesdk.actions.run('zoom.in');
|
|
607
|
+
|
|
608
|
+
// Zoom in with custom maximum
|
|
609
|
+
await cesdk.actions.run('zoom.in', {
|
|
610
|
+
maxZoom: 4, // Maximum zoom level
|
|
611
|
+
animate: true
|
|
612
|
+
});
|
|
613
|
+
|
|
614
|
+
// Zoom out with custom minimum
|
|
615
|
+
await cesdk.actions.run('zoom.out', {
|
|
616
|
+
minZoom: 0.25, // Minimum zoom level
|
|
617
|
+
animate: {
|
|
618
|
+
duration: 0.2,
|
|
619
|
+
easing: 'EaseOut'
|
|
620
|
+
}
|
|
621
|
+
});
|
|
622
|
+
```
|
|
623
|
+
|
|
624
|
+
#### `zoom.toLevel`
|
|
625
|
+
|
|
626
|
+
Sets the zoom to a specific level.
|
|
627
|
+
|
|
628
|
+
```javascript
|
|
629
|
+
// Set zoom to 100%
|
|
630
|
+
await cesdk.actions.run('zoom.toLevel', 1.0);
|
|
631
|
+
|
|
632
|
+
// Set zoom to 200% with animation
|
|
633
|
+
await cesdk.actions.run('zoom.toLevel', 2.0, {
|
|
634
|
+
animate: true,
|
|
635
|
+
minZoom: 0.125,
|
|
636
|
+
maxZoom: 32
|
|
637
|
+
});
|
|
638
|
+
|
|
639
|
+
// Fit to width (50% zoom)
|
|
640
|
+
await cesdk.actions.run('zoom.toLevel', 0.5, {
|
|
641
|
+
animate: {
|
|
642
|
+
duration: 0.3,
|
|
643
|
+
easing: 'EaseInOut'
|
|
644
|
+
}
|
|
645
|
+
});
|
|
646
|
+
```
|
|
647
|
+
|
|
648
|
+
#### Padding Options
|
|
649
|
+
|
|
650
|
+
Padding can be specified in multiple ways:
|
|
651
|
+
|
|
652
|
+
```javascript
|
|
653
|
+
// Uniform padding on all sides
|
|
654
|
+
{ padding: 20 }
|
|
655
|
+
|
|
656
|
+
// Different horizontal and vertical padding
|
|
657
|
+
{ padding: { x: 40, y: 20 } }
|
|
658
|
+
|
|
659
|
+
// Individual padding for each side
|
|
660
|
+
{ padding: { top: 10, bottom: 20, left: 30, right: 40 } }
|
|
661
|
+
```
|
|
662
|
+
|
|
663
|
+
#### Animation Options
|
|
664
|
+
|
|
665
|
+
Animation can be a boolean or an object with detailed settings:
|
|
666
|
+
|
|
667
|
+
```javascript
|
|
668
|
+
// Simple animation toggle
|
|
669
|
+
{ animate: true } // Uses default duration and easing
|
|
670
|
+
{ animate: false } // No animation
|
|
671
|
+
|
|
672
|
+
// Detailed animation configuration
|
|
673
|
+
{
|
|
674
|
+
animate: {
|
|
675
|
+
duration: 0.3, // Duration in seconds
|
|
676
|
+
easing: 'EaseInOut', // 'Linear', 'EaseIn', 'EaseOut', or 'EaseInOut'
|
|
677
|
+
interruptible: true // Whether the animation can be interrupted
|
|
678
|
+
}
|
|
679
|
+
}
|
|
680
|
+
```
|
|
681
|
+
|
|
682
|
+
#### Auto-Fit Mode
|
|
683
|
+
|
|
684
|
+
The `autoFit` option enables automatic zoom adjustment when the viewport resizes:
|
|
685
|
+
|
|
686
|
+
```javascript
|
|
687
|
+
// Enable auto-fit to maintain proper framing
|
|
688
|
+
await cesdk.actions.run('zoom.toPage', {
|
|
689
|
+
autoFit: true,
|
|
690
|
+
padding: { x: 40, y: 80 }
|
|
691
|
+
});
|
|
692
|
+
```
|
|
693
|
+
|
|
694
|
+
When auto-fit is enabled, the zoom level will automatically adjust to keep the target properly framed when the viewport size changes.
|
|
695
|
+
|
|
696
|
+
#### Custom Zoom Action Example
|
|
697
|
+
|
|
698
|
+
You can override the default zoom actions with custom implementations:
|
|
699
|
+
|
|
700
|
+
```javascript
|
|
701
|
+
// Custom zoom to page with analytics
|
|
702
|
+
cesdk.actions.register('zoom.toPage', async (options) => {
|
|
703
|
+
// Track zoom event
|
|
704
|
+
console.log('User zoomed to page');
|
|
705
|
+
|
|
706
|
+
// Get current page
|
|
707
|
+
const currentPage = cesdk.engine.scene.getCurrentPage();
|
|
708
|
+
if (!currentPage) return;
|
|
709
|
+
|
|
710
|
+
// Apply custom zoom logic
|
|
711
|
+
await cesdk.engine.scene.zoomToBlock(currentPage, {
|
|
712
|
+
padding: options?.padding ?? { x: 50, y: 100 },
|
|
713
|
+
animate: options?.animate ?? true
|
|
714
|
+
});
|
|
715
|
+
|
|
716
|
+
// Custom post-zoom behavior
|
|
717
|
+
cesdk.ui.showNotification('Zoomed to page');
|
|
718
|
+
});
|
|
719
|
+
```
|
|
720
|
+
|
|
721
|
+
### Video Timeline Zoom Actions
|
|
722
|
+
|
|
723
|
+
The video timeline has its own set of zoom controls for managing the timeline view. These actions are registered when the video timeline component is active and provide instant zoom without animation.
|
|
724
|
+
|
|
725
|
+
#### `timeline.zoom.in`
|
|
726
|
+
|
|
727
|
+
Zooms in the video timeline by one step (multiplies current zoom level by 1.25).
|
|
728
|
+
|
|
729
|
+
```javascript
|
|
730
|
+
// Zoom in the timeline
|
|
731
|
+
await cesdk.actions.run('timeline.zoom.in');
|
|
732
|
+
```
|
|
733
|
+
|
|
734
|
+
#### `timeline.zoom.out`
|
|
735
|
+
|
|
736
|
+
Zooms out the video timeline by one step (divides current zoom level by 1.25).
|
|
737
|
+
|
|
738
|
+
```javascript
|
|
739
|
+
// Zoom out the timeline
|
|
740
|
+
await cesdk.actions.run('timeline.zoom.out');
|
|
741
|
+
```
|
|
742
|
+
|
|
743
|
+
#### `timeline.zoom.fit`
|
|
744
|
+
|
|
745
|
+
Automatically adjusts the timeline zoom to fit all content in the visible area.
|
|
746
|
+
|
|
747
|
+
```javascript
|
|
748
|
+
// Fit timeline to show all content
|
|
749
|
+
await cesdk.actions.run('timeline.zoom.fit');
|
|
750
|
+
```
|
|
751
|
+
|
|
752
|
+
#### `timeline.zoom.toLevel`
|
|
753
|
+
|
|
754
|
+
Sets the timeline zoom to a specific level.
|
|
755
|
+
|
|
756
|
+
```javascript
|
|
757
|
+
// Set timeline zoom to 100%
|
|
758
|
+
await cesdk.actions.run('timeline.zoom.toLevel', 1.0);
|
|
759
|
+
|
|
760
|
+
// Set timeline zoom to 150%
|
|
761
|
+
await cesdk.actions.run('timeline.zoom.toLevel', 1.5);
|
|
762
|
+
|
|
763
|
+
// Set timeline zoom to 50%
|
|
764
|
+
await cesdk.actions.run('timeline.zoom.toLevel', 0.5);
|
|
765
|
+
```
|
|
766
|
+
|
|
767
|
+
#### `timeline.zoom.reset`
|
|
768
|
+
|
|
769
|
+
Resets the timeline zoom to the default level (1.0 or 100%).
|
|
770
|
+
|
|
771
|
+
```javascript
|
|
772
|
+
// Reset timeline zoom to default
|
|
773
|
+
await cesdk.actions.run('timeline.zoom.reset');
|
|
774
|
+
```
|
|
775
|
+
|
|
776
|
+
### Scroll Actions
|
|
777
|
+
|
|
778
|
+
CE.SDK provides a scroll action for panning the viewport to different pages without changing the zoom level. This is useful for multi-page navigation where you want to maintain the current zoom.
|
|
779
|
+
|
|
780
|
+
#### `scroll.toPage`
|
|
781
|
+
|
|
782
|
+
Scrolls the viewport to center on a specific page without changing the zoom level.
|
|
783
|
+
|
|
784
|
+
```javascript
|
|
785
|
+
// Scroll to current page without animation
|
|
786
|
+
await cesdk.actions.run('scroll.toPage');
|
|
787
|
+
|
|
788
|
+
// Scroll to current page with smooth animation
|
|
789
|
+
await cesdk.actions.run('scroll.toPage', {
|
|
790
|
+
animate: true
|
|
791
|
+
});
|
|
792
|
+
|
|
793
|
+
// Scroll to a specific page
|
|
794
|
+
await cesdk.actions.run('scroll.toPage', {
|
|
795
|
+
pageId: myPageId,
|
|
796
|
+
animate: true
|
|
797
|
+
});
|
|
798
|
+
```
|
|
799
|
+
|
|
800
|
+
#### Parameters
|
|
801
|
+
|
|
802
|
+
The `scroll.toPage` action accepts an optional options object:
|
|
803
|
+
|
|
804
|
+
- `pageId` (optional): The ID of the page to scroll to. If not provided, scrolls to the current page.
|
|
805
|
+
- `animate` (optional): Whether to animate the scroll transition. Default is `false`.
|
|
806
|
+
|
|
807
|
+
#### Scroll vs Zoom
|
|
808
|
+
|
|
809
|
+
The key difference between `scroll.toPage` and `zoom.toPage`:
|
|
810
|
+
|
|
811
|
+
- **`scroll.toPage`**: Pans the viewport to center on the page while maintaining the current zoom level
|
|
812
|
+
- **`zoom.toPage`**: Adjusts the zoom level to fit the page within the viewport with padding
|
|
813
|
+
|
|
814
|
+
Use `scroll.toPage` when you want to navigate between pages in a multi-page document while keeping the same zoom level. Use `zoom.toPage` when you want to frame a page properly within the viewport.
|
|
815
|
+
|
|
816
|
+
## Utils API
|
|
817
|
+
|
|
818
|
+
CE.SDK provides a Utils API with utility functions for common operations. These utilities are available through `cesdk.utils`:
|
|
819
|
+
|
|
820
|
+
### Loading Dialogs
|
|
821
|
+
|
|
822
|
+
```javascript
|
|
823
|
+
// Create and manage loading dialogs
|
|
824
|
+
const dialogController = cesdk.utils.showLoadingDialog({
|
|
825
|
+
title: 'Processing...',
|
|
826
|
+
message: 'Please wait', // Can also be an array of strings
|
|
827
|
+
progress: 0, // Initial progress value or 'indeterminate'
|
|
828
|
+
cancelLabel: 'Cancel',
|
|
829
|
+
abortTitle: 'Abort Operation?',
|
|
830
|
+
abortMessage: 'Are you sure you want to abort?',
|
|
831
|
+
abortLabel: 'Abort',
|
|
832
|
+
size: 'large', // 'regular' or 'large'
|
|
833
|
+
clickOutsideToClose: false,
|
|
834
|
+
onAbort: () => console.log('User cancelled'),
|
|
835
|
+
onDone: () => console.log('Dialog closed')
|
|
836
|
+
});
|
|
837
|
+
|
|
838
|
+
// Update progress
|
|
839
|
+
dialogController.updateProgress({ value: 50, max: 100 });
|
|
840
|
+
|
|
841
|
+
// Show success or error
|
|
842
|
+
dialogController.showSuccess({
|
|
843
|
+
title: 'Done!',
|
|
844
|
+
message: 'Operation completed'
|
|
845
|
+
});
|
|
846
|
+
dialogController.showError({ title: 'Error', message: 'Something went wrong' });
|
|
847
|
+
|
|
848
|
+
// Close dialog
|
|
849
|
+
dialogController.close();
|
|
850
|
+
```
|
|
851
|
+
|
|
852
|
+
### Export Utility
|
|
853
|
+
|
|
854
|
+
The export utility automatically handles both static (images, PDFs) and video exports:
|
|
855
|
+
|
|
856
|
+
```javascript
|
|
857
|
+
// Export image or PDF
|
|
858
|
+
const { blobs, options } = await cesdk.utils.export({
|
|
859
|
+
mimeType: 'image/png',
|
|
860
|
+
pngCompressionLevel: 7
|
|
861
|
+
});
|
|
862
|
+
|
|
863
|
+
// Export video (automatically detected by MIME type)
|
|
864
|
+
const { blobs, options } = await cesdk.utils.export({
|
|
865
|
+
mimeType: 'video/mp4',
|
|
866
|
+
onProgress: (rendered, encoded, total) => {
|
|
867
|
+
console.log(`Progress: ${rendered}/${total} frames`);
|
|
868
|
+
}
|
|
869
|
+
});
|
|
870
|
+
```
|
|
871
|
+
|
|
872
|
+
### File Operations
|
|
873
|
+
|
|
874
|
+
```javascript
|
|
875
|
+
// Load file from user
|
|
876
|
+
const file = await cesdk.utils.loadFile({
|
|
877
|
+
accept: 'image/*',
|
|
878
|
+
returnType: 'File' // 'dataURL', 'objectURL', 'text', 'blob', 'arrayBuffer', or 'File'
|
|
879
|
+
});
|
|
880
|
+
|
|
881
|
+
// Download file to user's device
|
|
882
|
+
await cesdk.utils.downloadFile(blob, 'image/png');
|
|
883
|
+
|
|
884
|
+
// Local upload (development only)
|
|
885
|
+
const asset = await cesdk.utils.localUpload(file, context);
|
|
886
|
+
```
|
|
887
|
+
|
|
888
|
+
### Video Support Detection
|
|
889
|
+
|
|
890
|
+
Check browser video capabilities before working with video content:
|
|
891
|
+
|
|
892
|
+
```javascript
|
|
893
|
+
// Check if video decoding/playback is supported
|
|
894
|
+
if (cesdk.utils.supportsVideoDecode()) {
|
|
895
|
+
// Safe to load and play video content
|
|
896
|
+
await cesdk.engine.scene.loadFromURL(videoSceneUrl);
|
|
897
|
+
} else {
|
|
898
|
+
// Show fallback UI or message
|
|
899
|
+
console.log('Video playback not available in this browser');
|
|
900
|
+
}
|
|
901
|
+
|
|
902
|
+
// Check if video encoding/export is supported (async)
|
|
903
|
+
if (await cesdk.utils.supportsVideoEncode()) {
|
|
904
|
+
// Video export is available
|
|
905
|
+
const blob = await cesdk.engine.block.exportVideo(page);
|
|
906
|
+
} else {
|
|
907
|
+
// Suggest server-side rendering alternative
|
|
908
|
+
console.log('Video export not available - consider using CE.SDK Renderer');
|
|
909
|
+
}
|
|
910
|
+
```
|
|
911
|
+
|
|
912
|
+
These utilities provide the same checks as the `video.decode.checkSupport` and `video.encode.checkSupport` actions, but without showing dialogs. Use them when you want to check support silently and handle the UI yourself.
|
|
913
|
+
|
|
914
|
+
## Implementation Examples
|
|
915
|
+
|
|
916
|
+
### Environment-Based Upload Strategy
|
|
917
|
+
|
|
918
|
+
```javascript
|
|
919
|
+
// Use local upload in development, CDN in production
|
|
920
|
+
cesdk.actions.register('uploadFile', async (file, onProgress, context) => {
|
|
921
|
+
if (process.env.NODE_ENV === 'development') {
|
|
922
|
+
// Use utils for local upload
|
|
923
|
+
return await cesdk.utils.localUpload(file, context);
|
|
924
|
+
} else {
|
|
925
|
+
console.log('Production upload for:', file.name);
|
|
926
|
+
onProgress(100);
|
|
927
|
+
|
|
928
|
+
// Production:
|
|
929
|
+
// const asset = await yourCDNService.upload(file, {
|
|
930
|
+
// onProgress: onProgress
|
|
931
|
+
// });
|
|
932
|
+
|
|
933
|
+
return {
|
|
934
|
+
id: 'prod-' + Date.now(),
|
|
935
|
+
label: { en: file.name },
|
|
936
|
+
meta: {
|
|
937
|
+
uri: URL.createObjectURL(file),
|
|
938
|
+
thumbUri: URL.createObjectURL(file)
|
|
939
|
+
// Production:
|
|
940
|
+
// uri: asset.url,
|
|
941
|
+
// thumbUri: asset.thumbnailUrl
|
|
942
|
+
}
|
|
943
|
+
};
|
|
944
|
+
}
|
|
945
|
+
});
|
|
946
|
+
```
|
|
947
|
+
|
|
948
|
+
### Combining Utils with Custom Logic
|
|
949
|
+
|
|
950
|
+
```javascript
|
|
951
|
+
// Use utils for heavy lifting, add custom business logic
|
|
952
|
+
cesdk.actions.register('exportDesign', async (options) => {
|
|
953
|
+
console.log('Export started:', { format: options?.mimeType });
|
|
954
|
+
|
|
955
|
+
// Production:
|
|
956
|
+
// analytics.track('export_started', { format: options?.mimeType });
|
|
957
|
+
|
|
958
|
+
// Use utils to handle the export with loading dialog
|
|
959
|
+
const { blobs, options: exportOptions } = await cesdk.utils.export(options);
|
|
960
|
+
|
|
961
|
+
// Custom post-processing
|
|
962
|
+
if (exportOptions.mimeType === 'application/pdf') {
|
|
963
|
+
console.log('PDF ready for watermarking:', blobs[0].size, 'bytes');
|
|
964
|
+
|
|
965
|
+
// Production:
|
|
966
|
+
// const watermarkedBlob = await addWatermark(blobs[0]);
|
|
967
|
+
// await cesdk.utils.downloadFile(watermarkedBlob, 'application/pdf');
|
|
968
|
+
|
|
969
|
+
await cesdk.utils.downloadFile(blobs[0], 'application/pdf');
|
|
970
|
+
} else {
|
|
971
|
+
// Direct download for other formats
|
|
972
|
+
await cesdk.utils.downloadFile(blobs[0], exportOptions.mimeType);
|
|
973
|
+
}
|
|
974
|
+
|
|
975
|
+
console.log('Export completed:', { format: exportOptions.mimeType });
|
|
976
|
+
|
|
977
|
+
// Production:
|
|
978
|
+
// analytics.track('export_completed', { format: exportOptions.mimeType });
|
|
979
|
+
});
|
|
980
|
+
```
|
|
981
|
+
|
|
982
|
+
## Registering Custom Actions with Custom IDs
|
|
983
|
+
|
|
984
|
+
Beyond the predefined action types, you can register actions with custom IDs for your own application-specific needs:
|
|
985
|
+
|
|
986
|
+
```javascript
|
|
987
|
+
// Register a custom action
|
|
988
|
+
cesdk.actions.register('myCustomAction', async (data) => {
|
|
989
|
+
console.log('Custom action triggered with:', data);
|
|
990
|
+
return { success: true, processedData: data };
|
|
991
|
+
});
|
|
992
|
+
|
|
993
|
+
// Execute the custom action using run
|
|
994
|
+
const result = await cesdk.actions.run('myCustomAction', { someData: 'value' });
|
|
995
|
+
|
|
996
|
+
// Or retrieve it for conditional execution
|
|
997
|
+
const customAction = cesdk.actions.get('myCustomAction');
|
|
998
|
+
if (customAction) {
|
|
999
|
+
const result = await customAction({ someData: 'value' });
|
|
1000
|
+
}
|
|
1001
|
+
```
|
|
1002
|
+
|
|
1003
|
+
## Discovering Registered Actions
|
|
1004
|
+
|
|
1005
|
+
Use `list()` to get all registered action IDs or find actions matching a pattern:
|
|
1006
|
+
|
|
1007
|
+
```javascript
|
|
1008
|
+
// Get all registered action IDs
|
|
1009
|
+
const registeredActions = cesdk.actions.list();
|
|
1010
|
+
console.log('Available actions:', registeredActions);
|
|
1011
|
+
|
|
1012
|
+
// Find actions matching a pattern
|
|
1013
|
+
const exportActions = cesdk.actions.list({ matcher: 'export*' });
|
|
1014
|
+
console.log('Export actions:', exportActions);
|
|
1015
|
+
```
|
|
1016
|
+
|
|
1017
|
+
## Using Actions with Navigation Actions
|
|
1018
|
+
|
|
1019
|
+
The navigation bar actions in CE.SDK automatically use the registered actions:
|
|
1020
|
+
|
|
1021
|
+
### Default Navigation Bar Actions
|
|
1022
|
+
|
|
1023
|
+
The default navigation bar actions map to actions:
|
|
1024
|
+
|
|
1025
|
+
- Save action → `saveScene` action
|
|
1026
|
+
- Share action → `shareScene` action
|
|
1027
|
+
- Export actions → `exportDesign` action
|
|
1028
|
+
- Import scene/archive → `importScene` action
|
|
1029
|
+
- Export scene/archive → `exportScene` action
|
|
1030
|
+
|
|
1031
|
+
---
|
|
1032
|
+
|
|
1033
|
+
## More Resources
|
|
1034
|
+
|
|
1035
|
+
- **[Vanilla JS/TS Documentation Index](https://img.ly/docs/cesdk/js.md)** - Browse all Vanilla JS/TS documentation
|
|
1036
|
+
- **[Complete Documentation](./llms-full.txt.md)** - Full documentation in one file (for LLMs)
|
|
1037
|
+
- **[Web Documentation](./js.md)** - Interactive documentation with examples
|
|
1038
|
+
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
|