@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,396 @@
|
|
|
1
|
+
> This is one page of the CE.SDK Vanilla JS/TS documentation. For a complete overview, see the [Vanilla JS/TS Documentation Index](https://img.ly/docs/cesdk/js.md). For all docs in one file, see [llms-full.txt](./llms-full.txt.md).
|
|
2
|
+
|
|
3
|
+
**Navigation:** [Guides](./guides.md) > [Create and Edit Videos](./create-video.md) > [Limitations](./create-video/limitations.md)
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
CE.SDK performs video processing client-side, providing privacy and
|
|
8
|
+
responsiveness while introducing hardware-dependent constraints. This
|
|
9
|
+
reference covers resolution limits, codec support, and platform-specific
|
|
10
|
+
restrictions to help you plan video workflows within platform capabilities.
|
|
11
|
+
|
|
12
|
+

|
|
13
|
+
|
|
14
|
+
> **Reading time:** 8 minutes
|
|
15
|
+
>
|
|
16
|
+
> **Resources:**
|
|
17
|
+
>
|
|
18
|
+
> - [Download examples](https://github.com/imgly/cesdk-web-examples/archive/refs/tags/release-$UBQ_VERSION$.zip)
|
|
19
|
+
> - [View source on GitHub](https://github.com/imgly/cesdk-web-examples/tree/release-$UBQ_VERSION$/guides-create-video-limitations-browser)
|
|
20
|
+
> - [Open in StackBlitz](https://stackblitz.com/github/imgly/cesdk-web-examples/tree/v$UBQ_VERSION$/guides-create-video-limitations-browser)
|
|
21
|
+
> - [Live demo](https://img.ly/docs/cesdk/examples/guides-create-video-limitations-browser/)
|
|
22
|
+
|
|
23
|
+
Client-side video processing provides significant advantages for privacy and user experience, but it operates within the constraints of the user's device. Understanding these limitations helps you build applications that work reliably across different hardware configurations and browsers.
|
|
24
|
+
|
|
25
|
+
```typescript file=@cesdk_web_examples/guides-create-video-limitations-browser/browser.ts reference-only
|
|
26
|
+
import type { EditorPlugin, EditorPluginContext } from '@cesdk/cesdk-js';
|
|
27
|
+
|
|
28
|
+
import {
|
|
29
|
+
BlurAssetSource,
|
|
30
|
+
CaptionPresetsAssetSource,
|
|
31
|
+
ColorPaletteAssetSource,
|
|
32
|
+
CropPresetsAssetSource,
|
|
33
|
+
DemoAssetSources,
|
|
34
|
+
EffectsAssetSource,
|
|
35
|
+
FiltersAssetSource,
|
|
36
|
+
PagePresetsAssetSource,
|
|
37
|
+
StickerAssetSource,
|
|
38
|
+
TextAssetSource,
|
|
39
|
+
TextComponentAssetSource,
|
|
40
|
+
TypefaceAssetSource,
|
|
41
|
+
UploadAssetSources,
|
|
42
|
+
VectorShapeAssetSource
|
|
43
|
+
} from '@cesdk/cesdk-js/plugins';
|
|
44
|
+
import { VideoEditorConfig } from './video-editor/plugin';
|
|
45
|
+
import packageJson from './package.json';
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* CE.SDK Plugin: Video Limitations Guide
|
|
49
|
+
*
|
|
50
|
+
* Demonstrates how to query video processing limitations in CE.SDK:
|
|
51
|
+
* - Querying maximum export size
|
|
52
|
+
* - Monitoring memory usage and availability
|
|
53
|
+
* - Understanding resolution and duration constraints
|
|
54
|
+
*/
|
|
55
|
+
class Example implements EditorPlugin {
|
|
56
|
+
name = packageJson.name;
|
|
57
|
+
|
|
58
|
+
version = packageJson.version;
|
|
59
|
+
|
|
60
|
+
async initialize({ cesdk }: EditorPluginContext): Promise<void> {
|
|
61
|
+
if (!cesdk) {
|
|
62
|
+
throw new Error('CE.SDK instance is required for this plugin');
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
await cesdk.addPlugin(new VideoEditorConfig());
|
|
66
|
+
|
|
67
|
+
// Add asset source plugins
|
|
68
|
+
await cesdk.addPlugin(new BlurAssetSource());
|
|
69
|
+
await cesdk.addPlugin(new CaptionPresetsAssetSource());
|
|
70
|
+
await cesdk.addPlugin(new ColorPaletteAssetSource());
|
|
71
|
+
await cesdk.addPlugin(new CropPresetsAssetSource());
|
|
72
|
+
await cesdk.addPlugin(
|
|
73
|
+
new UploadAssetSources({
|
|
74
|
+
include: [
|
|
75
|
+
'ly.img.image.upload',
|
|
76
|
+
'ly.img.video.upload',
|
|
77
|
+
'ly.img.audio.upload'
|
|
78
|
+
]
|
|
79
|
+
})
|
|
80
|
+
);
|
|
81
|
+
await cesdk.addPlugin(
|
|
82
|
+
new DemoAssetSources({
|
|
83
|
+
include: [
|
|
84
|
+
'ly.img.templates.video.*',
|
|
85
|
+
'ly.img.image.*',
|
|
86
|
+
'ly.img.audio.*',
|
|
87
|
+
'ly.img.video.*'
|
|
88
|
+
]
|
|
89
|
+
})
|
|
90
|
+
);
|
|
91
|
+
await cesdk.addPlugin(new EffectsAssetSource());
|
|
92
|
+
await cesdk.addPlugin(new FiltersAssetSource());
|
|
93
|
+
await cesdk.addPlugin(
|
|
94
|
+
new PagePresetsAssetSource({
|
|
95
|
+
include: [
|
|
96
|
+
'ly.img.page.presets.instagram.*',
|
|
97
|
+
'ly.img.page.presets.facebook.*',
|
|
98
|
+
'ly.img.page.presets.x.*',
|
|
99
|
+
'ly.img.page.presets.linkedin.*',
|
|
100
|
+
'ly.img.page.presets.pinterest.*',
|
|
101
|
+
'ly.img.page.presets.tiktok.*',
|
|
102
|
+
'ly.img.page.presets.youtube.*',
|
|
103
|
+
'ly.img.page.presets.video.*'
|
|
104
|
+
]
|
|
105
|
+
})
|
|
106
|
+
);
|
|
107
|
+
await cesdk.addPlugin(new StickerAssetSource());
|
|
108
|
+
await cesdk.addPlugin(new TextAssetSource());
|
|
109
|
+
await cesdk.addPlugin(new TextComponentAssetSource());
|
|
110
|
+
await cesdk.addPlugin(new TypefaceAssetSource());
|
|
111
|
+
await cesdk.addPlugin(new VectorShapeAssetSource());
|
|
112
|
+
|
|
113
|
+
await cesdk.actions.run('scene.create', {
|
|
114
|
+
layout: 'DepthStack',
|
|
115
|
+
page: {
|
|
116
|
+
sourceId: 'ly.img.page.presets',
|
|
117
|
+
assetId: 'ly.img.page.presets.instagram.story',
|
|
118
|
+
color: { r: 0, g: 0, b: 0, a: 1 }
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
|
|
122
|
+
const engine = cesdk.engine;
|
|
123
|
+
|
|
124
|
+
// Query the maximum export dimensions supported by this device
|
|
125
|
+
const maxExportSize = engine.editor.getMaxExportSize();
|
|
126
|
+
console.log('Maximum export size:', maxExportSize, 'pixels');
|
|
127
|
+
// The maximum export size depends on the GPU texture size limit
|
|
128
|
+
// Typical values: 4096, 8192, or 16384 pixels
|
|
129
|
+
|
|
130
|
+
// Query current memory consumption
|
|
131
|
+
const usedMemory = engine.editor.getUsedMemory();
|
|
132
|
+
const usedMemoryMB = (usedMemory / (1024 * 1024)).toFixed(2);
|
|
133
|
+
console.log('Memory used:', usedMemoryMB, 'MB');
|
|
134
|
+
|
|
135
|
+
// Query available memory for video processing
|
|
136
|
+
const availableMemory = engine.editor.getAvailableMemory();
|
|
137
|
+
const availableMemoryMB = (availableMemory / (1024 * 1024)).toFixed(2);
|
|
138
|
+
console.log('Memory available:', availableMemoryMB, 'MB');
|
|
139
|
+
// Browser tabs typically cap around 2GB due to WebAssembly's 32-bit address space
|
|
140
|
+
|
|
141
|
+
// Calculate memory utilization percentage
|
|
142
|
+
const totalMemory = usedMemory + availableMemory;
|
|
143
|
+
const memoryUtilization = ((usedMemory / totalMemory) * 100).toFixed(1);
|
|
144
|
+
console.log('Memory utilization:', memoryUtilization, '%');
|
|
145
|
+
|
|
146
|
+
// Check if a specific export size is feasible
|
|
147
|
+
const desiredWidth = 3840; // 4K UHD
|
|
148
|
+
const desiredHeight = 2160;
|
|
149
|
+
const canExport4K =
|
|
150
|
+
desiredWidth <= maxExportSize && desiredHeight <= maxExportSize;
|
|
151
|
+
console.log(
|
|
152
|
+
'Can export at 4K UHD (3840x2160):',
|
|
153
|
+
canExport4K ? 'Yes' : 'No'
|
|
154
|
+
);
|
|
155
|
+
|
|
156
|
+
// Add a sample video to demonstrate the editor with video content
|
|
157
|
+
const videoUri = 'https://img.ly/static/ubq_video_samples/bbb.mp4';
|
|
158
|
+
const pages = engine.block.findByType('page');
|
|
159
|
+
const page = pages.length > 0 ? pages[0] : engine.scene.get();
|
|
160
|
+
|
|
161
|
+
const pageWidth = engine.block.getWidth(page);
|
|
162
|
+
const pageHeight = engine.block.getHeight(page);
|
|
163
|
+
|
|
164
|
+
// Create a video block that fills the page
|
|
165
|
+
const videoBlock = await engine.block.addVideo(
|
|
166
|
+
videoUri,
|
|
167
|
+
pageWidth,
|
|
168
|
+
pageHeight
|
|
169
|
+
);
|
|
170
|
+
|
|
171
|
+
// Position the video at the center of the page
|
|
172
|
+
engine.block.setPositionX(videoBlock, 0);
|
|
173
|
+
engine.block.setPositionY(videoBlock, 0);
|
|
174
|
+
|
|
175
|
+
// Select the video block
|
|
176
|
+
engine.block.setSelected(videoBlock, true);
|
|
177
|
+
|
|
178
|
+
// Re-check memory after loading video content
|
|
179
|
+
const usedAfterLoad = engine.editor.getUsedMemory();
|
|
180
|
+
const availableAfterLoad = engine.editor.getAvailableMemory();
|
|
181
|
+
const usedAfterLoadMB = (usedAfterLoad / (1024 * 1024)).toFixed(2);
|
|
182
|
+
const availableAfterLoadMB = (availableAfterLoad / (1024 * 1024)).toFixed(
|
|
183
|
+
2
|
|
184
|
+
);
|
|
185
|
+
console.log('After loading video:');
|
|
186
|
+
console.log(' Memory used:', usedAfterLoadMB, 'MB');
|
|
187
|
+
console.log(' Memory available:', availableAfterLoadMB, 'MB');
|
|
188
|
+
|
|
189
|
+
// Log summary of device capabilities
|
|
190
|
+
console.log('--- Device Capabilities Summary ---');
|
|
191
|
+
console.log('Max export dimension:', maxExportSize, 'px');
|
|
192
|
+
console.log('4K UHD support:', canExport4K ? 'Supported' : 'Not supported');
|
|
193
|
+
console.log(
|
|
194
|
+
'Initial memory:',
|
|
195
|
+
usedMemoryMB,
|
|
196
|
+
'MB used /',
|
|
197
|
+
availableMemoryMB,
|
|
198
|
+
'MB available'
|
|
199
|
+
);
|
|
200
|
+
console.log(
|
|
201
|
+
'Open the browser console to view detailed limitation information.'
|
|
202
|
+
);
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
export default Example;
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
## Resolution Limits
|
|
210
|
+
|
|
211
|
+
Video resolution capabilities depend on hardware resources and WebAssembly memory constraints. CE.SDK supports up to 4K UHD for playback and export on capable hardware.
|
|
212
|
+
|
|
213
|
+
Import resolution is bounded by WebAssembly's 32-bit address space and browser tab memory limits, which typically cap around 2GB. This means very high resolution video files may exceed available memory during processing. Playback and export at 4K depends on available GPU resources, and higher resolutions require proportionally more memory and processing power.
|
|
214
|
+
|
|
215
|
+
Query the maximum export size before initiating exports to avoid failures:
|
|
216
|
+
|
|
217
|
+
```typescript highlight-query-max-export-size
|
|
218
|
+
// Query the maximum export dimensions supported by this device
|
|
219
|
+
const maxExportSize = engine.editor.getMaxExportSize();
|
|
220
|
+
console.log('Maximum export size:', maxExportSize, 'pixels');
|
|
221
|
+
// The maximum export size depends on the GPU texture size limit
|
|
222
|
+
// Typical values: 4096, 8192, or 16384 pixels
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
The maximum export size varies by device GPU capabilities. Typical values range from 4096 to 16384 pixels depending on the graphics hardware. Before exporting at high resolutions, verify the target dimensions don't exceed this limit:
|
|
226
|
+
|
|
227
|
+
```typescript highlight-check-export-feasibility
|
|
228
|
+
// Check if a specific export size is feasible
|
|
229
|
+
const desiredWidth = 3840; // 4K UHD
|
|
230
|
+
const desiredHeight = 2160;
|
|
231
|
+
const canExport4K =
|
|
232
|
+
desiredWidth <= maxExportSize && desiredHeight <= maxExportSize;
|
|
233
|
+
console.log('Can export at 4K UHD (3840x2160):', canExport4K ? 'Yes' : 'No');
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
## Duration Limits
|
|
237
|
+
|
|
238
|
+
Video duration affects editing responsiveness and export time. CE.SDK optimizes for short-form content while supporting longer videos with performance trade-offs.
|
|
239
|
+
|
|
240
|
+
Stories and reels up to 2 minutes are fully supported with smooth editing performance. Videos up to 10 minutes work well on modern hardware, with export times typically around 1 minute for this length. Longer videos are technically possible but may impact editing responsiveness on less capable devices.
|
|
241
|
+
|
|
242
|
+
For long-form content, consider these approaches:
|
|
243
|
+
|
|
244
|
+
- Split longer videos into shorter segments for editing
|
|
245
|
+
- Use lower resolution previews during editing, then export at full quality
|
|
246
|
+
- Test on target devices to establish acceptable duration limits for your use case
|
|
247
|
+
|
|
248
|
+
## Frame Rate Support
|
|
249
|
+
|
|
250
|
+
Frame rate affects both playback smoothness and export performance. Hardware acceleration significantly impacts high frame rate capabilities.
|
|
251
|
+
|
|
252
|
+
30 FPS at 1080p is broadly supported across devices and provides smooth playback on most hardware. 60 FPS and high-resolution combinations benefit from hardware acceleration. When hardware acceleration is unavailable, high frame rate video may drop frames during preview playback, though exports will maintain the correct timing.
|
|
253
|
+
|
|
254
|
+
Variable frame rate sources may have timing precision limitations. For best results with variable frame rate content, consider transcoding to constant frame rate before importing into CE.SDK.
|
|
255
|
+
|
|
256
|
+
## Supported Codecs
|
|
257
|
+
|
|
258
|
+
CE.SDK supports widely-adopted video and audio codecs, with some platform-specific variations in availability.
|
|
259
|
+
|
|
260
|
+
### Video Codecs
|
|
261
|
+
|
|
262
|
+
H.264/AVC in `.mp4` containers has universal support across all browsers and platforms. This is the most reliable codec choice for broad compatibility.
|
|
263
|
+
|
|
264
|
+
H.265/HEVC in `.mp4` containers has platform-dependent support. Safari on macOS and iOS supports HEVC natively, while Chrome and Firefox support varies by operating system and codec availability.
|
|
265
|
+
|
|
266
|
+
### Audio Codecs
|
|
267
|
+
|
|
268
|
+
MP3 works in `.mp3` files or within `.mp4` containers, with universal browser support.
|
|
269
|
+
|
|
270
|
+
AAC in `.m4a`, `.mp4`, or `.mov` containers is widely supported, though some browsers may require system codecs for encoding during export.
|
|
271
|
+
|
|
272
|
+
## Browser and Platform Restrictions
|
|
273
|
+
|
|
274
|
+
Browser capabilities depend on the host operating system, introducing platform-specific limitations that affect video processing.
|
|
275
|
+
|
|
276
|
+
### Windows Limitations
|
|
277
|
+
|
|
278
|
+
H.265 transparency is not supported on Windows hosts. If your workflow requires alpha channel video with HEVC, consider processing on macOS or using H.264 which supports alpha on all platforms.
|
|
279
|
+
|
|
280
|
+
### Linux Limitations
|
|
281
|
+
|
|
282
|
+
Chrome on Linux typically lacks encoder support for H.264 and AAC due to licensing restrictions in the Chrome Linux build. This means video imports and playback may work correctly, but exports may fail.
|
|
283
|
+
|
|
284
|
+
If you're targeting Linux users, consider:
|
|
285
|
+
|
|
286
|
+
- Recommending Firefox, which may have different codec support
|
|
287
|
+
- Providing fallback export options
|
|
288
|
+
- Using server-side export processing for Linux users
|
|
289
|
+
|
|
290
|
+
Use the `video.decode.checkSupport` and `video.encode.checkSupport` actions to detect video capabilities programmatically and display appropriate user feedback. Alternatively, use `cesdk.utils.supportsVideoDecode()` and `cesdk.utils.supportsVideoEncode()` to check support silently without showing dialogs. See the [Actions API](./actions.md) for implementation details.
|
|
291
|
+
|
|
292
|
+
### Chromium Limitations
|
|
293
|
+
|
|
294
|
+
Chromium-based browsers (without proprietary codecs) don't include video codecs due to licensing. They may fall back to system libraries on some platforms, such as macOS, but support is not guaranteed. Video editing functionality may not work reliably in pure Chromium builds.
|
|
295
|
+
|
|
296
|
+
### Mobile Browser Limitations
|
|
297
|
+
|
|
298
|
+
Video editing is not supported on mobile browsers on any platform due to technical limitations causing performance issues. For mobile video editing capabilities, use the native mobile SDKs for iOS and Android, which provide full video support.
|
|
299
|
+
|
|
300
|
+
## Hardware Requirements
|
|
301
|
+
|
|
302
|
+
Device capabilities directly affect video processing performance. CE.SDK scales with available hardware resources.
|
|
303
|
+
|
|
304
|
+
### Recommended Hardware
|
|
305
|
+
|
|
306
|
+
| Platform | Minimum Hardware |
|
|
307
|
+
| ---------------- | ------------------------------------------------------------------------- |
|
|
308
|
+
| Desktop | Notebook or desktop released in the last 7 years with at least 4GB memory |
|
|
309
|
+
| Mobile (Apple) | iPhone 8, iPad (6th gen) or newer |
|
|
310
|
+
| Mobile (Android) | Phones and tablets released in the last 4 years |
|
|
311
|
+
|
|
312
|
+
### GPU Considerations
|
|
313
|
+
|
|
314
|
+
Hardware acceleration improves encoding and decoding performance significantly. High-resolution and high-frame-rate exports benefit most from GPU support. The maximum export size depends on the maximum texture size the device's GPU can allocate.
|
|
315
|
+
|
|
316
|
+
Integrated graphics can handle most common video editing tasks. Discrete GPUs provide better performance for 4K content and complex compositions with multiple video layers.
|
|
317
|
+
|
|
318
|
+
## Memory Constraints
|
|
319
|
+
|
|
320
|
+
Client-side video processing operates within browser memory limits. Use the memory APIs to monitor consumption and make informed decisions about resource loading.
|
|
321
|
+
|
|
322
|
+
Query current memory usage to understand how much has been consumed:
|
|
323
|
+
|
|
324
|
+
```typescript highlight-query-memory-usage
|
|
325
|
+
// Query current memory consumption
|
|
326
|
+
const usedMemory = engine.editor.getUsedMemory();
|
|
327
|
+
const usedMemoryMB = (usedMemory / (1024 * 1024)).toFixed(2);
|
|
328
|
+
console.log('Memory used:', usedMemoryMB, 'MB');
|
|
329
|
+
```
|
|
330
|
+
|
|
331
|
+
Check how much memory remains available for additional resources:
|
|
332
|
+
|
|
333
|
+
```typescript highlight-query-available-memory
|
|
334
|
+
// Query available memory for video processing
|
|
335
|
+
const availableMemory = engine.editor.getAvailableMemory();
|
|
336
|
+
const availableMemoryMB = (availableMemory / (1024 * 1024)).toFixed(2);
|
|
337
|
+
console.log('Memory available:', availableMemoryMB, 'MB');
|
|
338
|
+
// Browser tabs typically cap around 2GB due to WebAssembly's 32-bit address space
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
WebAssembly uses a 32-bit address space, limiting the maximum addressable memory. Browser tabs typically cap around 2GB of memory, though this varies by browser and system configuration. Multiple video tracks and effects increase memory usage proportionally.
|
|
342
|
+
|
|
343
|
+
Query memory APIs before loading additional video files to avoid out-of-memory conditions:
|
|
344
|
+
|
|
345
|
+
```typescript highlight-monitor-memory-after-load
|
|
346
|
+
// Re-check memory after loading video content
|
|
347
|
+
const usedAfterLoad = engine.editor.getUsedMemory();
|
|
348
|
+
const availableAfterLoad = engine.editor.getAvailableMemory();
|
|
349
|
+
const usedAfterLoadMB = (usedAfterLoad / (1024 * 1024)).toFixed(2);
|
|
350
|
+
const availableAfterLoadMB = (availableAfterLoad / (1024 * 1024)).toFixed(2);
|
|
351
|
+
console.log('After loading video:');
|
|
352
|
+
console.log(' Memory used:', usedAfterLoadMB, 'MB');
|
|
353
|
+
console.log(' Memory available:', availableAfterLoadMB, 'MB');
|
|
354
|
+
```
|
|
355
|
+
|
|
356
|
+
## Export Size Limitations
|
|
357
|
+
|
|
358
|
+
Export dimensions are bounded by GPU texture size limits. Always query `getMaxExportSize()` before initiating exports to ensure the requested dimensions are supported.
|
|
359
|
+
|
|
360
|
+
The maximum export size varies by device GPU capabilities. Common limits include:
|
|
361
|
+
|
|
362
|
+
- **4096 pixels**: Older integrated graphics
|
|
363
|
+
- **8192 pixels**: Most modern integrated and discrete GPUs
|
|
364
|
+
- **16384 pixels**: High-end discrete GPUs
|
|
365
|
+
|
|
366
|
+
Consider target platform requirements when planning export dimensions. Mobile devices and web playback rarely benefit from resolutions above 1080p or 4K, so exporting at extreme resolutions may not provide practical value.
|
|
367
|
+
|
|
368
|
+
## Troubleshooting
|
|
369
|
+
|
|
370
|
+
Common issues developers encounter related to video limitations:
|
|
371
|
+
|
|
372
|
+
| Issue | Cause | Solution |
|
|
373
|
+
| -------------------------------- | ------------------------------------------- | ------------------------------------------------ |
|
|
374
|
+
| Video export fails on Linux | Chrome lacks H.264/AAC encoder support | Use Firefox or implement server-side export |
|
|
375
|
+
| Slow playback at high resolution | Hardware cannot keep up with decoding | Reduce preview resolution or use proxy editing |
|
|
376
|
+
| Export fails with large video | Memory limits exceeded | Reduce resolution or split into shorter segments |
|
|
377
|
+
| H.265 transparency not working | Windows platform limitation | Use H.264 or process on macOS |
|
|
378
|
+
| Mobile browser video not working | Mobile browsers don't support video editing | Use native mobile SDK instead |
|
|
379
|
+
| Export size rejected | Exceeds device GPU texture limits | Query `getMaxExportSize()` and reduce dimensions |
|
|
380
|
+
|
|
381
|
+
## API Reference
|
|
382
|
+
|
|
383
|
+
| Method | Description |
|
|
384
|
+
| ------------------------------------ | ----------------------------------------------------------- |
|
|
385
|
+
| `engine.editor.getMaxExportSize()` | Query the maximum export dimensions supported by the device |
|
|
386
|
+
| `engine.editor.getAvailableMemory()` | Get available memory in bytes for video processing |
|
|
387
|
+
| `engine.editor.getUsedMemory()` | Get current memory usage in bytes |
|
|
388
|
+
|
|
389
|
+
---
|
|
390
|
+
|
|
391
|
+
## More Resources
|
|
392
|
+
|
|
393
|
+
- **[Vanilla JS/TS Documentation Index](https://img.ly/docs/cesdk/js.md)** - Browse all Vanilla JS/TS documentation
|
|
394
|
+
- **[Complete Documentation](./llms-full.txt.md)** - Full documentation in one file (for LLMs)
|
|
395
|
+
- **[Web Documentation](./js.md)** - Interactive documentation with examples
|
|
396
|
+
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
> This is one page of the CE.SDK Vanilla JS/TS documentation. For a complete overview, see the [Vanilla JS/TS Documentation Index](https://img.ly/docs/cesdk/js.md). For all docs in one file, see [llms-full.txt](./llms-full.txt.md).
|
|
2
|
+
|
|
3
|
+
**Navigation:** [Guides](./guides.md) > [Create and Edit Videos](./create-video.md) > [Overview](./create-video/overview.md)
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
In addition to static designs, CE.SDK also allows you to create and edit videos. Working with videos introduces the concept of time into the scene.
|
|
8
|
+
|
|
9
|
+
Each page in the scene has its own time axis within which its children can be placed. The `"playback/time"` property of each page controls the progress of time through the page.
|
|
10
|
+
|
|
11
|
+
In order to add videos to your pages, you can add a block with a `"//ly.img.ubq/fill/video"` fill. As the playback time of the page progresses, the corresponding point in time of the video fill is rendered by the block.
|
|
12
|
+
|
|
13
|
+
You can also customize the video fill's trim in order to control the portion of the video that should be looped while the block is visible.
|
|
14
|
+
|
|
15
|
+
`//ly.img.ubq/audio` blocks can be added to the page in order to play an audio file during playback.
|
|
16
|
+
|
|
17
|
+
The `playback/timeOffset` property controls after how many seconds the audio should begin to play, while the duration property defines how long the audio should play. The same APIs can be used for other design blocks as well, such as text or graphic blocks.
|
|
18
|
+
|
|
19
|
+
Finally, the whole page can be exported as a video file using the `block.exportVideo` function.
|
|
20
|
+
|
|
21
|
+
## A Note on Browser Support
|
|
22
|
+
|
|
23
|
+
Video editing heavily relies on modern features like web codecs.
|
|
24
|
+
A detailed list of supported browser versions can be found in our [Supported Browsers](./browser-support.md).
|
|
25
|
+
Please also take note of [possible restrictions based on the host platform](./file-format-support.md) browsers are running on.
|
|
26
|
+
|
|
27
|
+
## Creating the Scene
|
|
28
|
+
|
|
29
|
+
First, we create a scene by calling the `scene.create()` API. Then we create a page, add it to the scene and define its dimensions. This page will hold our composition.
|
|
30
|
+
|
|
31
|
+
```javascript
|
|
32
|
+
const scene = engine.scene.create();
|
|
33
|
+
|
|
34
|
+
const page = engine.block.create('page');
|
|
35
|
+
engine.block.appendChild(scene, page);
|
|
36
|
+
|
|
37
|
+
engine.block.setWidth(page, 1280);
|
|
38
|
+
engine.block.setHeight(page, 720);
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Setting Page Durations
|
|
42
|
+
|
|
43
|
+
Next, we define the duration of the page using the `setDuration(block: number, duration: number): void` API to be 20 seconds long. This will be the total duration of our exported video in the end.
|
|
44
|
+
|
|
45
|
+
```javascript
|
|
46
|
+
engine.block.setDuration(page, 20);
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Adding Videos
|
|
50
|
+
|
|
51
|
+
In this example, we want to show two videos, one after the other. For this, we first create two graphic blocks and assign two `'video'` fills to them.
|
|
52
|
+
|
|
53
|
+
```javascript
|
|
54
|
+
const video1 = engine.block.create('graphic');
|
|
55
|
+
engine.block.setShape(video1, engine.block.createShape('rect'));
|
|
56
|
+
const videoFill = engine.block.createFill('video');
|
|
57
|
+
engine.block.setString(
|
|
58
|
+
videoFill,
|
|
59
|
+
'fill/video/fileURI',
|
|
60
|
+
'https://cdn.img.ly/assets/demo/v4/ly.img.video/videos/pexels-drone-footage-of-a-surfer-barrelling-a-wave-12715991.mp4'
|
|
61
|
+
);
|
|
62
|
+
engine.block.setFill(video1, videoFill);
|
|
63
|
+
|
|
64
|
+
const video2 = engine.block.create('graphic');
|
|
65
|
+
engine.block.setShape(video2, engine.block.createShape('rect'));
|
|
66
|
+
const videoFill2 = engine.block.createFill('video');
|
|
67
|
+
engine.block.setString(
|
|
68
|
+
videoFill2,
|
|
69
|
+
'fill/video/fileURI',
|
|
70
|
+
'https://cdn.img.ly/assets/demo/v4/ly.img.video/videos/pexels-kampus-production-8154913.mp4'
|
|
71
|
+
);
|
|
72
|
+
engine.block.setFill(video2, videoFill2);
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## Creating a Track
|
|
76
|
+
|
|
77
|
+
While we could add the two blocks directly to the page and and manually set their sizes and time offsets, we can alternatively also use the `track` block to simplify this work. A `track` automatically adjusts the time offsets of its children to make sure that they play one after another without any gaps, based on each child's duration.
|
|
78
|
+
|
|
79
|
+
Tracks themselves cannot be selected directly by clicking on the canvas, nor do they have any visual representation.
|
|
80
|
+
|
|
81
|
+
We create a `track` block, add it to the page and add both videos in the order in which they should play as the track's children. Next, we use the `fillParent` API, which will resize all children of the track to the same dimensions as the page.
|
|
82
|
+
|
|
83
|
+
The dimensions of a `track` are always derived from the dimensions of its children, so you should not call the `setWidth` or `setHeight` APIs on a track, but on its children instead if you can't use the `fillParent` API.
|
|
84
|
+
|
|
85
|
+
```javascript
|
|
86
|
+
const track = engine.block.create('track');
|
|
87
|
+
engine.block.appendChild(page, track);
|
|
88
|
+
engine.block.appendChild(track, video1);
|
|
89
|
+
engine.block.appendChild(track, video2);
|
|
90
|
+
engine.block.fillParent(track);
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
By default, each block has a duration of 5 seconds after it is created. If we want to show it on the page for a different amount of time, we can use the `setDuration` API.
|
|
94
|
+
|
|
95
|
+
Note that we can just increase the duration of the first video block to 15 seconds without having to adjust anything about the second video. The `track` takes care of that for us automatically so that the second video starts playing after 15 seconds.
|
|
96
|
+
|
|
97
|
+
```javascript
|
|
98
|
+
engine.block.setDuration(video1, 15);
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
If the video is longer than the duration of the graphic block that it's attached to, it will cut off once the duration of the graphic is reached. If it is too short, the video will automatically loop for as long as its graphic block is visible.
|
|
102
|
+
|
|
103
|
+
We can also manually define the portion of our video that should loop within the graphic using the `setTrimOffset(block: number, offset: number): void` and `setTrimLength(block: number, length: number): void` APIs. We use the trim offset to cut away the first second of the video and the trim length to only play 10 seconds of the video. Since our graphic is 15 seconds long, the trimmed video will be played fully once and then start looping for the remaining 5 seconds.
|
|
104
|
+
|
|
105
|
+
```javascript
|
|
106
|
+
/* Make sure that the video is loaded before calling the trim APIs. */
|
|
107
|
+
await engine.block.forceLoadAVResource(videoFill);
|
|
108
|
+
engine.block.setTrimOffset(videoFill, 1);
|
|
109
|
+
engine.block.setTrimLength(videoFill, 10);
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
We can control if a video will loop back to its beginning by calling `setLooping(block: number, looping: boolean): void`. Otherwise, the video will simply hold its last frame instead and audio will stop playing. Looping behavior is activated for all blocks by default.
|
|
113
|
+
|
|
114
|
+
```javascript
|
|
115
|
+
engine.block.setLooping(videoFill, true);
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
## Audio
|
|
119
|
+
|
|
120
|
+
If the video of a video fill contains an audio track, that audio will play automatically by default when the video is playing. We can mute it by calling `setMuted(block: number, muted: boolean): void`.
|
|
121
|
+
|
|
122
|
+
```javascript
|
|
123
|
+
engine.block.setMuted(videoFill, true);
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
We can also add audio-only files to play together with the contents of the page by adding an `'audio'` block to the page and assigning it the URL of the audio file.
|
|
127
|
+
|
|
128
|
+
```javascript
|
|
129
|
+
const audio = engine.block.create('audio');
|
|
130
|
+
engine.block.appendChild(page, audio);
|
|
131
|
+
engine.block.setString(
|
|
132
|
+
audio,
|
|
133
|
+
'audio/fileURI',
|
|
134
|
+
'https://cdn.img.ly/assets/demo/v3/ly.img.audio/audios/far_from_home.m4a'
|
|
135
|
+
);
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
We can adjust the volume level of any audio block or video fill by calling `setVolume(block: number, volume: number): void`. The volume is given as a fraction in the range of 0 to 1.
|
|
139
|
+
|
|
140
|
+
```javascript
|
|
141
|
+
/* Set the volume level to 70%. */
|
|
142
|
+
engine.block.setVolume(audio, 0.7);
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
By default, our audio block will start playing at the very beginning of the page. We can change this by specifying how many seconds into the scene it should begin to play using the `setTimeOffset(block: number, offset: number): void` API.
|
|
146
|
+
|
|
147
|
+
```javascript
|
|
148
|
+
/* Start the audio after two seconds of playback. */
|
|
149
|
+
engine.block.setTimeOffset(audio, 2);
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
By default, our audio block will have a duration of 5 seconds. We can change this by specifying its duration in seconds by using the `setDuration(block: number, duration: number): void` API.
|
|
153
|
+
|
|
154
|
+
```javascript
|
|
155
|
+
/* Give the Audio block a duration of 7 seconds. */
|
|
156
|
+
engine.block.setDuration(audio, 7);
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
## Exporting Video
|
|
160
|
+
|
|
161
|
+
You can start exporting the entire page as a video file by calling `exportVideo()`. The encoding process will run in the background. You can get notified about the progress of the encoding process by the `progressCallback`. It will be called whenever another frame has been encoded.
|
|
162
|
+
|
|
163
|
+
Since the encoding process runs in the background the engine will stay interactive. So, you can continue to use the engine to manipulate the scene. Please note that these changes won't be visible in the exported video file because the scene's state has been frozen at the start of the export.
|
|
164
|
+
|
|
165
|
+
```javascript
|
|
166
|
+
/* Export page as mp4 video. */
|
|
167
|
+
const videoBlob = await engine.block.exportVideo(page, {
|
|
168
|
+
mimeType: 'video/mp4',
|
|
169
|
+
onProgress: (renderedFrames, encodedFrames, totalFrames) => {
|
|
170
|
+
console.log(
|
|
171
|
+
'Rendered',
|
|
172
|
+
renderedFrames,
|
|
173
|
+
'frames and encoded',
|
|
174
|
+
encodedFrames,
|
|
175
|
+
'frames out of',
|
|
176
|
+
totalFrames
|
|
177
|
+
);
|
|
178
|
+
}
|
|
179
|
+
});
|
|
180
|
+
|
|
181
|
+
/* Download video blob. */
|
|
182
|
+
let anchor = document.createElement('a');
|
|
183
|
+
anchor.href = URL.createObjectURL(videoBlob);
|
|
184
|
+
anchor.download = 'exported-video.mp4';
|
|
185
|
+
anchor.click();
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
## Exporting Audio
|
|
189
|
+
|
|
190
|
+
You can export just the audio from your video scene by calling `exportAudio()`. This allows you to extract the audio track separately, whether from an entire page, a single audio block, a video block with audio, or a track containing multiple audio sources.
|
|
191
|
+
|
|
192
|
+
The audio export process runs in a background worker, similar to video export, keeping the main engine responsive. You can monitor the progress through the `onProgress` callback.
|
|
193
|
+
|
|
194
|
+
```javascript
|
|
195
|
+
/* Export page audio as an WAV audio. */
|
|
196
|
+
const audioBlob = await engine.block.exportAudio(page, {
|
|
197
|
+
mimeType: 'audio/wav',
|
|
198
|
+
onProgress: (renderedFrames, encodedFrames, totalFrames) => {
|
|
199
|
+
console.log(
|
|
200
|
+
'Rendered',
|
|
201
|
+
renderedFrames,
|
|
202
|
+
'frames and encoded',
|
|
203
|
+
encodedFrames,
|
|
204
|
+
'frames out of',
|
|
205
|
+
totalFrames
|
|
206
|
+
);
|
|
207
|
+
}
|
|
208
|
+
});
|
|
209
|
+
|
|
210
|
+
/* Download audio blob. */
|
|
211
|
+
anchor = document.createElement('a');
|
|
212
|
+
anchor.href = URL.createObjectURL(audioBlob);
|
|
213
|
+
anchor.download = 'exported-audio.wav';
|
|
214
|
+
anchor.click();
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
---
|
|
218
|
+
|
|
219
|
+
## More Resources
|
|
220
|
+
|
|
221
|
+
- **[Vanilla JS/TS Documentation Index](https://img.ly/docs/cesdk/js.md)** - Browse all Vanilla JS/TS documentation
|
|
222
|
+
- **[Complete Documentation](./llms-full.txt.md)** - Full documentation in one file (for LLMs)
|
|
223
|
+
- **[Web Documentation](./js.md)** - Interactive documentation with examples
|
|
224
|
+
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
|