@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,641 @@
|
|
|
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) > [Fills](./fills.md) > [Video](./fills/video.md)
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Apply motion content to design elements by filling shapes, backgrounds, and
|
|
8
|
+
text with videos using CE.SDK's video fill system.
|
|
9
|
+
|
|
10
|
+

|
|
11
|
+
|
|
12
|
+
> **Reading time:** 15 minutes
|
|
13
|
+
>
|
|
14
|
+
> **Resources:**
|
|
15
|
+
>
|
|
16
|
+
> - [Download examples](https://github.com/imgly/cesdk-web-examples/archive/refs/tags/release-$UBQ_VERSION$.zip)
|
|
17
|
+
> - [View source on GitHub](https://github.com/imgly/cesdk-web-examples/tree/release-$UBQ_VERSION$/guides-fills-video-browser)
|
|
18
|
+
> - [Open in StackBlitz](https://stackblitz.com/github/imgly/cesdk-web-examples/tree/v$UBQ_VERSION$/guides-fills-video-browser)
|
|
19
|
+
> - [Live demo](https://img.ly/docs/cesdk/examples/guides-fills-video-browser/)
|
|
20
|
+
|
|
21
|
+
Understanding the distinction between **video fills** and **video blocks** is essential. Video fills are fill objects that can be applied to any block supporting fills—shapes, text, backgrounds—to paint them with video content. Video blocks, created with `addVideo()`, are dedicated time-based blocks with full editing capabilities like trimming and duration control. Video fills focus on applying video as a visual treatment, while video blocks provide complete video editing functionality.
|
|
22
|
+
|
|
23
|
+
```typescript file=@cesdk_web_examples/guides-fills-video-browser/browser.ts reference-only
|
|
24
|
+
import type {
|
|
25
|
+
CreativeEngine,
|
|
26
|
+
EditorPlugin,
|
|
27
|
+
EditorPluginContext
|
|
28
|
+
} from '@cesdk/cesdk-js';
|
|
29
|
+
import packageJson from './package.json';
|
|
30
|
+
|
|
31
|
+
import {
|
|
32
|
+
BlurAssetSource,
|
|
33
|
+
CaptionPresetsAssetSource,
|
|
34
|
+
ColorPaletteAssetSource,
|
|
35
|
+
CropPresetsAssetSource,
|
|
36
|
+
DemoAssetSources,
|
|
37
|
+
EffectsAssetSource,
|
|
38
|
+
FiltersAssetSource,
|
|
39
|
+
PagePresetsAssetSource,
|
|
40
|
+
StickerAssetSource,
|
|
41
|
+
TextAssetSource,
|
|
42
|
+
TextComponentAssetSource,
|
|
43
|
+
TypefaceAssetSource,
|
|
44
|
+
UploadAssetSources,
|
|
45
|
+
VectorShapeAssetSource
|
|
46
|
+
} from '@cesdk/cesdk-js/plugins';
|
|
47
|
+
import { VideoEditorConfig } from './video-editor/plugin';
|
|
48
|
+
import { calculateGridLayout } from './utils';
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* CE.SDK Plugin: Video Fills Guide
|
|
52
|
+
*
|
|
53
|
+
* Demonstrates video fills in CE.SDK:
|
|
54
|
+
* - Creating video fills
|
|
55
|
+
* - Setting video sources (single URI and source sets)
|
|
56
|
+
* - Applying video fills to blocks
|
|
57
|
+
* - Content fill modes (Cover, Contain)
|
|
58
|
+
* - Loading video resources
|
|
59
|
+
* - Getting video thumbnails
|
|
60
|
+
* - Different use cases (backgrounds, shapes, text)
|
|
61
|
+
*/
|
|
62
|
+
class Example implements EditorPlugin {
|
|
63
|
+
name = packageJson.name;
|
|
64
|
+
version = packageJson.version;
|
|
65
|
+
|
|
66
|
+
async initialize({ cesdk }: EditorPluginContext): Promise<void> {
|
|
67
|
+
if (!cesdk) {
|
|
68
|
+
throw new Error('CE.SDK instance is required for this plugin');
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
await cesdk.addPlugin(new VideoEditorConfig());
|
|
72
|
+
|
|
73
|
+
// Add asset source plugins
|
|
74
|
+
await cesdk.addPlugin(new BlurAssetSource());
|
|
75
|
+
await cesdk.addPlugin(new CaptionPresetsAssetSource());
|
|
76
|
+
await cesdk.addPlugin(new ColorPaletteAssetSource());
|
|
77
|
+
await cesdk.addPlugin(new CropPresetsAssetSource());
|
|
78
|
+
await cesdk.addPlugin(
|
|
79
|
+
new UploadAssetSources({
|
|
80
|
+
include: [
|
|
81
|
+
'ly.img.image.upload',
|
|
82
|
+
'ly.img.video.upload',
|
|
83
|
+
'ly.img.audio.upload'
|
|
84
|
+
]
|
|
85
|
+
})
|
|
86
|
+
);
|
|
87
|
+
await cesdk.addPlugin(
|
|
88
|
+
new DemoAssetSources({
|
|
89
|
+
include: [
|
|
90
|
+
'ly.img.templates.video.*',
|
|
91
|
+
'ly.img.image.*',
|
|
92
|
+
'ly.img.audio.*',
|
|
93
|
+
'ly.img.video.*'
|
|
94
|
+
]
|
|
95
|
+
})
|
|
96
|
+
);
|
|
97
|
+
await cesdk.addPlugin(new EffectsAssetSource());
|
|
98
|
+
await cesdk.addPlugin(new FiltersAssetSource());
|
|
99
|
+
await cesdk.addPlugin(
|
|
100
|
+
new PagePresetsAssetSource({
|
|
101
|
+
include: [
|
|
102
|
+
'ly.img.page.presets.instagram.*',
|
|
103
|
+
'ly.img.page.presets.facebook.*',
|
|
104
|
+
'ly.img.page.presets.x.*',
|
|
105
|
+
'ly.img.page.presets.linkedin.*',
|
|
106
|
+
'ly.img.page.presets.pinterest.*',
|
|
107
|
+
'ly.img.page.presets.tiktok.*',
|
|
108
|
+
'ly.img.page.presets.youtube.*',
|
|
109
|
+
'ly.img.page.presets.video.*'
|
|
110
|
+
]
|
|
111
|
+
})
|
|
112
|
+
);
|
|
113
|
+
await cesdk.addPlugin(new StickerAssetSource());
|
|
114
|
+
await cesdk.addPlugin(new TextAssetSource());
|
|
115
|
+
await cesdk.addPlugin(new TextComponentAssetSource());
|
|
116
|
+
await cesdk.addPlugin(new TypefaceAssetSource());
|
|
117
|
+
await cesdk.addPlugin(new VectorShapeAssetSource());
|
|
118
|
+
|
|
119
|
+
await cesdk.actions.run('scene.create', {
|
|
120
|
+
layout: 'DepthStack',
|
|
121
|
+
page: {
|
|
122
|
+
sourceId: 'ly.img.page.presets',
|
|
123
|
+
assetId: 'ly.img.page.presets.instagram.story',
|
|
124
|
+
color: { r: 0, g: 0, b: 0, a: 1 }
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
|
|
128
|
+
const engine = cesdk.engine as CreativeEngine;
|
|
129
|
+
const pages = engine.block.findByType('page');
|
|
130
|
+
const page = pages.length > 0 ? pages[0] : engine.scene.get();
|
|
131
|
+
|
|
132
|
+
// Calculate responsive grid layout based on page dimensions
|
|
133
|
+
const pageWidth = engine.block.getWidth(page);
|
|
134
|
+
const pageHeight = engine.block.getHeight(page);
|
|
135
|
+
const layout = calculateGridLayout(pageWidth, pageHeight, 8);
|
|
136
|
+
const { blockWidth, blockHeight, getPosition } = layout;
|
|
137
|
+
|
|
138
|
+
// Use a sample video URL from demo assets
|
|
139
|
+
const videoUri = 'https://img.ly/static/ubq_video_samples/bbb.mp4';
|
|
140
|
+
|
|
141
|
+
// Create a sample block to demonstrate fill support checking
|
|
142
|
+
const sampleBlock = engine.block.create('graphic');
|
|
143
|
+
engine.block.setShape(sampleBlock, engine.block.createShape('rect'));
|
|
144
|
+
|
|
145
|
+
// Check if the block supports fills
|
|
146
|
+
const supportsFills = engine.block.supportsFill(sampleBlock);
|
|
147
|
+
// eslint-disable-next-line no-console
|
|
148
|
+
console.log('Block supports fills:', supportsFills); // true for graphic blocks
|
|
149
|
+
|
|
150
|
+
// Pattern #1: Demonstrate Individual Before Combined
|
|
151
|
+
// Create a basic video fill demonstration
|
|
152
|
+
const basicBlock = engine.block.create('graphic');
|
|
153
|
+
engine.block.setShape(basicBlock, engine.block.createShape('rect'));
|
|
154
|
+
engine.block.setWidth(basicBlock, blockWidth);
|
|
155
|
+
engine.block.setHeight(basicBlock, blockHeight);
|
|
156
|
+
engine.block.appendChild(page, basicBlock);
|
|
157
|
+
|
|
158
|
+
// Create a video fill
|
|
159
|
+
const basicVideoFill = engine.block.createFill('video');
|
|
160
|
+
// or using full type name: engine.block.createFill('//ly.img.ubq/fill/video');
|
|
161
|
+
|
|
162
|
+
// Set the video source URI
|
|
163
|
+
engine.block.setString(basicVideoFill, 'fill/video/fileURI', videoUri);
|
|
164
|
+
|
|
165
|
+
// Apply the fill to the block
|
|
166
|
+
engine.block.setFill(basicBlock, basicVideoFill);
|
|
167
|
+
|
|
168
|
+
// Get and verify the current fill
|
|
169
|
+
const fillId = engine.block.getFill(basicBlock);
|
|
170
|
+
const fillType = engine.block.getType(fillId);
|
|
171
|
+
// eslint-disable-next-line no-console
|
|
172
|
+
console.log('Fill type:', fillType); // '//ly.img.ubq/fill/video'
|
|
173
|
+
|
|
174
|
+
// Pattern #2: Content fill mode - Cover
|
|
175
|
+
// Cover mode fills entire block, may crop video to fit
|
|
176
|
+
const coverBlock = engine.block.create('graphic');
|
|
177
|
+
engine.block.setShape(coverBlock, engine.block.createShape('rect'));
|
|
178
|
+
engine.block.setWidth(coverBlock, blockWidth);
|
|
179
|
+
engine.block.setHeight(coverBlock, blockHeight);
|
|
180
|
+
engine.block.appendChild(page, coverBlock);
|
|
181
|
+
|
|
182
|
+
const coverVideoFill = engine.block.createFill('video');
|
|
183
|
+
engine.block.setString(coverVideoFill, 'fill/video/fileURI', videoUri);
|
|
184
|
+
engine.block.setFill(coverBlock, coverVideoFill);
|
|
185
|
+
|
|
186
|
+
// Set content fill mode to Cover
|
|
187
|
+
engine.block.setEnum(coverBlock, 'contentFill/mode', 'Cover');
|
|
188
|
+
|
|
189
|
+
// Get current fill mode
|
|
190
|
+
const coverMode = engine.block.getEnum(coverBlock, 'contentFill/mode');
|
|
191
|
+
// eslint-disable-next-line no-console
|
|
192
|
+
console.log('Cover block fill mode:', coverMode); // 'Cover'
|
|
193
|
+
|
|
194
|
+
// Content fill mode - Contain
|
|
195
|
+
// Contain mode fits entire video, may leave empty space
|
|
196
|
+
const containBlock = engine.block.create('graphic');
|
|
197
|
+
engine.block.setShape(containBlock, engine.block.createShape('rect'));
|
|
198
|
+
engine.block.setWidth(containBlock, blockWidth);
|
|
199
|
+
engine.block.setHeight(containBlock, blockHeight);
|
|
200
|
+
engine.block.appendChild(page, containBlock);
|
|
201
|
+
|
|
202
|
+
const containVideoFill = engine.block.createFill('video');
|
|
203
|
+
engine.block.setString(containVideoFill, 'fill/video/fileURI', videoUri);
|
|
204
|
+
engine.block.setFill(containBlock, containVideoFill);
|
|
205
|
+
|
|
206
|
+
// Set content fill mode to Contain
|
|
207
|
+
engine.block.setEnum(containBlock, 'contentFill/mode', 'Contain');
|
|
208
|
+
|
|
209
|
+
// Force load video resource to access metadata
|
|
210
|
+
const resourceBlock = engine.block.create('graphic');
|
|
211
|
+
engine.block.setShape(resourceBlock, engine.block.createShape('rect'));
|
|
212
|
+
engine.block.setWidth(resourceBlock, blockWidth);
|
|
213
|
+
engine.block.setHeight(resourceBlock, blockHeight);
|
|
214
|
+
engine.block.appendChild(page, resourceBlock);
|
|
215
|
+
|
|
216
|
+
const resourceVideoFill = engine.block.createFill('video');
|
|
217
|
+
engine.block.setString(resourceVideoFill, 'fill/video/fileURI', videoUri);
|
|
218
|
+
engine.block.setFill(resourceBlock, resourceVideoFill);
|
|
219
|
+
|
|
220
|
+
// Force load the video resource before accessing metadata
|
|
221
|
+
await engine.block.forceLoadAVResource(resourceVideoFill);
|
|
222
|
+
|
|
223
|
+
// Now we can access video metadata
|
|
224
|
+
const totalDuration = engine.block.getDouble(
|
|
225
|
+
resourceVideoFill,
|
|
226
|
+
'fill/video/totalDuration'
|
|
227
|
+
);
|
|
228
|
+
// eslint-disable-next-line no-console
|
|
229
|
+
console.log('Video total duration:', totalDuration, 'seconds');
|
|
230
|
+
|
|
231
|
+
// Use case: Video as shape fill - Ellipse
|
|
232
|
+
const ellipseBlock = engine.block.create('graphic');
|
|
233
|
+
const ellipseShape = engine.block.createShape('//ly.img.ubq/shape/ellipse');
|
|
234
|
+
engine.block.setShape(ellipseBlock, ellipseShape);
|
|
235
|
+
engine.block.setWidth(ellipseBlock, blockWidth);
|
|
236
|
+
engine.block.setHeight(ellipseBlock, blockHeight);
|
|
237
|
+
engine.block.appendChild(page, ellipseBlock);
|
|
238
|
+
|
|
239
|
+
const ellipseVideoFill = engine.block.createFill('video');
|
|
240
|
+
engine.block.setString(ellipseVideoFill, 'fill/video/fileURI', videoUri);
|
|
241
|
+
engine.block.setFill(ellipseBlock, ellipseVideoFill);
|
|
242
|
+
|
|
243
|
+
// Advanced: Video fill with opacity
|
|
244
|
+
const opacityBlock = engine.block.create('graphic');
|
|
245
|
+
engine.block.setShape(opacityBlock, engine.block.createShape('rect'));
|
|
246
|
+
engine.block.setWidth(opacityBlock, blockWidth);
|
|
247
|
+
engine.block.setHeight(opacityBlock, blockHeight);
|
|
248
|
+
engine.block.appendChild(page, opacityBlock);
|
|
249
|
+
|
|
250
|
+
const opacityVideoFill = engine.block.createFill('video');
|
|
251
|
+
engine.block.setString(opacityVideoFill, 'fill/video/fileURI', videoUri);
|
|
252
|
+
engine.block.setFill(opacityBlock, opacityVideoFill);
|
|
253
|
+
|
|
254
|
+
// Set block opacity to 70%
|
|
255
|
+
engine.block.setFloat(opacityBlock, 'opacity', 0.7);
|
|
256
|
+
|
|
257
|
+
// Advanced: Share one video fill between multiple blocks
|
|
258
|
+
const sharedFill = engine.block.createFill('video');
|
|
259
|
+
engine.block.setString(sharedFill, 'fill/video/fileURI', videoUri);
|
|
260
|
+
|
|
261
|
+
// First block using shared fill
|
|
262
|
+
const sharedBlock1 = engine.block.create('graphic');
|
|
263
|
+
engine.block.setShape(sharedBlock1, engine.block.createShape('rect'));
|
|
264
|
+
engine.block.setWidth(sharedBlock1, blockWidth);
|
|
265
|
+
engine.block.setHeight(sharedBlock1, blockHeight);
|
|
266
|
+
engine.block.appendChild(page, sharedBlock1);
|
|
267
|
+
engine.block.setFill(sharedBlock1, sharedFill);
|
|
268
|
+
|
|
269
|
+
// Second block using the same shared fill
|
|
270
|
+
const sharedBlock2 = engine.block.create('graphic');
|
|
271
|
+
engine.block.setShape(sharedBlock2, engine.block.createShape('rect'));
|
|
272
|
+
engine.block.setWidth(sharedBlock2, blockWidth * 0.8); // Slightly smaller
|
|
273
|
+
engine.block.setHeight(sharedBlock2, blockHeight * 0.8);
|
|
274
|
+
engine.block.appendChild(page, sharedBlock2);
|
|
275
|
+
engine.block.setFill(sharedBlock2, sharedFill);
|
|
276
|
+
|
|
277
|
+
// eslint-disable-next-line no-console
|
|
278
|
+
console.log(
|
|
279
|
+
'Shared fill - Two blocks using the same video fill instance for memory efficiency'
|
|
280
|
+
);
|
|
281
|
+
|
|
282
|
+
// ===== Position all blocks in grid layout =====
|
|
283
|
+
const blocks = [
|
|
284
|
+
basicBlock, // Position 0
|
|
285
|
+
coverBlock, // Position 1
|
|
286
|
+
containBlock, // Position 2
|
|
287
|
+
resourceBlock, // Position 3
|
|
288
|
+
ellipseBlock, // Position 4
|
|
289
|
+
opacityBlock, // Position 5
|
|
290
|
+
sharedBlock1, // Position 6
|
|
291
|
+
sharedBlock2 // Position 7
|
|
292
|
+
];
|
|
293
|
+
|
|
294
|
+
blocks.forEach((block, index) => {
|
|
295
|
+
const pos = getPosition(index);
|
|
296
|
+
engine.block.setPositionX(block, pos.x);
|
|
297
|
+
engine.block.setPositionY(block, pos.y);
|
|
298
|
+
});
|
|
299
|
+
|
|
300
|
+
// Select the first block so users can see the fill in action
|
|
301
|
+
engine.block.setSelected(basicBlock, true);
|
|
302
|
+
|
|
303
|
+
// Set playback time to 2 seconds to show video content
|
|
304
|
+
engine.block.setPlaybackTime(page, 2);
|
|
305
|
+
|
|
306
|
+
// Start playback automatically
|
|
307
|
+
try {
|
|
308
|
+
engine.block.setPlaying(page, true);
|
|
309
|
+
// eslint-disable-next-line no-console
|
|
310
|
+
console.log(
|
|
311
|
+
'Video fills guide initialized. Playback started. Demonstrating various video fill techniques across the grid.'
|
|
312
|
+
);
|
|
313
|
+
} catch (error) {
|
|
314
|
+
// eslint-disable-next-line no-console
|
|
315
|
+
console.log(
|
|
316
|
+
'Video fills guide initialized. Click play to start video playback (browser autoplay restriction).'
|
|
317
|
+
);
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
export default Example;
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
This guide covers how to create video fills, apply them to blocks, configure fill modes, and work with video resources programmatically.
|
|
326
|
+
|
|
327
|
+
## Understanding Video Fills
|
|
328
|
+
|
|
329
|
+
### What is a Video Fill?
|
|
330
|
+
|
|
331
|
+
A video fill is a fill object that paints a design block with video content. Like color and image fills, video fills are part of CE.SDK's broader fill system.
|
|
332
|
+
|
|
333
|
+
Video fills are identified by the type `'//ly.img.ubq/fill/video'` or the short form `'video'`. They contain properties for the video source, positioning, scaling, and playback behavior.
|
|
334
|
+
|
|
335
|
+
### Video Fill vs Video Blocks
|
|
336
|
+
|
|
337
|
+
**Video fills** are fill objects created with `createFill('video')` and applied to blocks with `setFill()`. You can use them to fill shapes with video content, create video backgrounds, or add video textures to text.
|
|
338
|
+
|
|
339
|
+
**Video blocks** are created with the convenience method `addVideo()` and come pre-configured with time-based properties including trim support, duration, and playback time. Use video blocks when you need features like trimming, duration adjustment, and precise playback control.
|
|
340
|
+
|
|
341
|
+
For this guide, we focus on video fills—applying video content as a fill to design elements. For video editing workflows, see the [Trim Video guide](./edit-video/trim.md).
|
|
342
|
+
|
|
343
|
+
## Checking Video Fill Support
|
|
344
|
+
|
|
345
|
+
Before applying video fills, verify that blocks support fills.
|
|
346
|
+
|
|
347
|
+
```typescript highlight-check-fill-support
|
|
348
|
+
// Create a sample block to demonstrate fill support checking
|
|
349
|
+
const sampleBlock = engine.block.create('graphic');
|
|
350
|
+
engine.block.setShape(sampleBlock, engine.block.createShape('rect'));
|
|
351
|
+
|
|
352
|
+
// Check if the block supports fills
|
|
353
|
+
const supportsFills = engine.block.supportsFill(sampleBlock);
|
|
354
|
+
// eslint-disable-next-line no-console
|
|
355
|
+
console.log('Block supports fills:', supportsFills); // true for graphic blocks
|
|
356
|
+
```
|
|
357
|
+
|
|
358
|
+
Graphic blocks, shapes, and text blocks typically support fills. Pages and scenes don't. Always check `supportsFill()` before attempting to apply video fills to prevent errors.
|
|
359
|
+
|
|
360
|
+
## Creating Video Fills
|
|
361
|
+
|
|
362
|
+
### Creating Video Fills
|
|
363
|
+
|
|
364
|
+
Creating a video fill involves three steps: create the fill object, set the video source, and apply it to a block.
|
|
365
|
+
|
|
366
|
+
```typescript highlight-create-video-fill
|
|
367
|
+
// Pattern #1: Demonstrate Individual Before Combined
|
|
368
|
+
// Create a basic video fill demonstration
|
|
369
|
+
const basicBlock = engine.block.create('graphic');
|
|
370
|
+
engine.block.setShape(basicBlock, engine.block.createShape('rect'));
|
|
371
|
+
engine.block.setWidth(basicBlock, blockWidth);
|
|
372
|
+
engine.block.setHeight(basicBlock, blockHeight);
|
|
373
|
+
engine.block.appendChild(page, basicBlock);
|
|
374
|
+
|
|
375
|
+
// Create a video fill
|
|
376
|
+
const basicVideoFill = engine.block.createFill('video');
|
|
377
|
+
// or using full type name: engine.block.createFill('//ly.img.ubq/fill/video');
|
|
378
|
+
|
|
379
|
+
// Set the video source URI
|
|
380
|
+
engine.block.setString(basicVideoFill, 'fill/video/fileURI', videoUri);
|
|
381
|
+
|
|
382
|
+
// Apply the fill to the block
|
|
383
|
+
engine.block.setFill(basicBlock, basicVideoFill);
|
|
384
|
+
```
|
|
385
|
+
|
|
386
|
+
The video fill exists independently until you attach it to a block. This allows you to configure the fill completely before applying it. Once applied, the fill paints the block with the video content.
|
|
387
|
+
|
|
388
|
+
### Getting Current Fill Information
|
|
389
|
+
|
|
390
|
+
We can retrieve the current fill from a block and inspect its type to verify it's a video fill.
|
|
391
|
+
|
|
392
|
+
```typescript highlight-get-current-fill
|
|
393
|
+
// Get and verify the current fill
|
|
394
|
+
const fillId = engine.block.getFill(basicBlock);
|
|
395
|
+
const fillType = engine.block.getType(fillId);
|
|
396
|
+
// eslint-disable-next-line no-console
|
|
397
|
+
console.log('Fill type:', fillType); // '//ly.img.ubq/fill/video'
|
|
398
|
+
```
|
|
399
|
+
|
|
400
|
+
This is useful when building UIs that need to adapt based on the current fill type or when implementing undo/redo functionality that tracks fill changes.
|
|
401
|
+
|
|
402
|
+
## Content Fill Modes
|
|
403
|
+
|
|
404
|
+
Content fill modes control how video scales and positions within blocks. The two primary modes are Cover and Contain, each suited to different use cases.
|
|
405
|
+
|
|
406
|
+
### Cover Mode
|
|
407
|
+
|
|
408
|
+
Cover mode fills the entire block with video while maintaining the video's aspect ratio. If the aspect ratios don't match, CE.SDK crops portions of the video to ensure no empty space appears in the block.
|
|
409
|
+
|
|
410
|
+
```typescript highlight-fill-mode-cover
|
|
411
|
+
// Pattern #2: Content fill mode - Cover
|
|
412
|
+
// Cover mode fills entire block, may crop video to fit
|
|
413
|
+
const coverBlock = engine.block.create('graphic');
|
|
414
|
+
engine.block.setShape(coverBlock, engine.block.createShape('rect'));
|
|
415
|
+
engine.block.setWidth(coverBlock, blockWidth);
|
|
416
|
+
engine.block.setHeight(coverBlock, blockHeight);
|
|
417
|
+
engine.block.appendChild(page, coverBlock);
|
|
418
|
+
|
|
419
|
+
const coverVideoFill = engine.block.createFill('video');
|
|
420
|
+
engine.block.setString(coverVideoFill, 'fill/video/fileURI', videoUri);
|
|
421
|
+
engine.block.setFill(coverBlock, coverVideoFill);
|
|
422
|
+
|
|
423
|
+
// Set content fill mode to Cover
|
|
424
|
+
engine.block.setEnum(coverBlock, 'contentFill/mode', 'Cover');
|
|
425
|
+
|
|
426
|
+
// Get current fill mode
|
|
427
|
+
const coverMode = engine.block.getEnum(coverBlock, 'contentFill/mode');
|
|
428
|
+
// eslint-disable-next-line no-console
|
|
429
|
+
console.log('Cover block fill mode:', coverMode); // 'Cover'
|
|
430
|
+
```
|
|
431
|
+
|
|
432
|
+
Use Cover mode for background videos, full-frame video content, and situations where visual consistency matters more than showing the entire video. It guarantees no empty space but may crop content.
|
|
433
|
+
|
|
434
|
+
### Contain Mode
|
|
435
|
+
|
|
436
|
+
Contain mode fits the entire video within the block while maintaining aspect ratio. If aspect ratios don't match, CE.SDK adds empty space to preserve the full video visibility.
|
|
437
|
+
|
|
438
|
+
```typescript highlight-fill-mode-contain
|
|
439
|
+
// Content fill mode - Contain
|
|
440
|
+
// Contain mode fits entire video, may leave empty space
|
|
441
|
+
const containBlock = engine.block.create('graphic');
|
|
442
|
+
engine.block.setShape(containBlock, engine.block.createShape('rect'));
|
|
443
|
+
engine.block.setWidth(containBlock, blockWidth);
|
|
444
|
+
engine.block.setHeight(containBlock, blockHeight);
|
|
445
|
+
engine.block.appendChild(page, containBlock);
|
|
446
|
+
|
|
447
|
+
const containVideoFill = engine.block.createFill('video');
|
|
448
|
+
engine.block.setString(containVideoFill, 'fill/video/fileURI', videoUri);
|
|
449
|
+
engine.block.setFill(containBlock, containVideoFill);
|
|
450
|
+
|
|
451
|
+
// Set content fill mode to Contain
|
|
452
|
+
engine.block.setEnum(containBlock, 'contentFill/mode', 'Contain');
|
|
453
|
+
```
|
|
454
|
+
|
|
455
|
+
Use Contain mode when the entire video must remain visible—presentations, product demos, or content where cropping would lose important information. Empty space is acceptable to preserve complete visibility.
|
|
456
|
+
|
|
457
|
+
## Loading Video Resources
|
|
458
|
+
|
|
459
|
+
Before accessing video metadata like duration or dimensions, you must force load the video resource. This ensures CE.SDK has downloaded the necessary information.
|
|
460
|
+
|
|
461
|
+
```typescript highlight-force-load-resource
|
|
462
|
+
// Force load video resource to access metadata
|
|
463
|
+
const resourceBlock = engine.block.create('graphic');
|
|
464
|
+
engine.block.setShape(resourceBlock, engine.block.createShape('rect'));
|
|
465
|
+
engine.block.setWidth(resourceBlock, blockWidth);
|
|
466
|
+
engine.block.setHeight(resourceBlock, blockHeight);
|
|
467
|
+
engine.block.appendChild(page, resourceBlock);
|
|
468
|
+
|
|
469
|
+
const resourceVideoFill = engine.block.createFill('video');
|
|
470
|
+
engine.block.setString(resourceVideoFill, 'fill/video/fileURI', videoUri);
|
|
471
|
+
engine.block.setFill(resourceBlock, resourceVideoFill);
|
|
472
|
+
|
|
473
|
+
// Force load the video resource before accessing metadata
|
|
474
|
+
await engine.block.forceLoadAVResource(resourceVideoFill);
|
|
475
|
+
|
|
476
|
+
// Now we can access video metadata
|
|
477
|
+
const totalDuration = engine.block.getDouble(
|
|
478
|
+
resourceVideoFill,
|
|
479
|
+
'fill/video/totalDuration'
|
|
480
|
+
);
|
|
481
|
+
// eslint-disable-next-line no-console
|
|
482
|
+
console.log('Video total duration:', totalDuration, 'seconds');
|
|
483
|
+
```
|
|
484
|
+
|
|
485
|
+
Skipping this step causes errors when trying to access metadata. Videos load asynchronously, so `forceLoadAVResource` ensures the metadata is available before you query it.
|
|
486
|
+
|
|
487
|
+
Once loaded, you can access properties like `fill/video/totalDuration` to get the video length in seconds. This information helps you build UI previews or validate user input.
|
|
488
|
+
|
|
489
|
+
## Common Use Cases
|
|
490
|
+
|
|
491
|
+
### Video as Shape Fill
|
|
492
|
+
|
|
493
|
+
Video fills aren't limited to rectangles. You can fill any shape with video content.
|
|
494
|
+
|
|
495
|
+
```typescript highlight-video-shape-fill
|
|
496
|
+
// Use case: Video as shape fill - Ellipse
|
|
497
|
+
const ellipseBlock = engine.block.create('graphic');
|
|
498
|
+
const ellipseShape = engine.block.createShape('//ly.img.ubq/shape/ellipse');
|
|
499
|
+
engine.block.setShape(ellipseBlock, ellipseShape);
|
|
500
|
+
engine.block.setWidth(ellipseBlock, blockWidth);
|
|
501
|
+
engine.block.setHeight(ellipseBlock, blockHeight);
|
|
502
|
+
engine.block.appendChild(page, ellipseBlock);
|
|
503
|
+
|
|
504
|
+
const ellipseVideoFill = engine.block.createFill('video');
|
|
505
|
+
engine.block.setString(ellipseVideoFill, 'fill/video/fileURI', videoUri);
|
|
506
|
+
engine.block.setFill(ellipseBlock, ellipseVideoFill);
|
|
507
|
+
```
|
|
508
|
+
|
|
509
|
+
Ellipse shapes, polygons, stars, and custom paths all support video fills. The video content fills the shape boundary, masking the video.
|
|
510
|
+
|
|
511
|
+
### Video with Opacity
|
|
512
|
+
|
|
513
|
+
Control the transparency of video-filled blocks to create overlay effects or blend video content with backgrounds.
|
|
514
|
+
|
|
515
|
+
```typescript highlight-opacity
|
|
516
|
+
// Advanced: Video fill with opacity
|
|
517
|
+
const opacityBlock = engine.block.create('graphic');
|
|
518
|
+
engine.block.setShape(opacityBlock, engine.block.createShape('rect'));
|
|
519
|
+
engine.block.setWidth(opacityBlock, blockWidth);
|
|
520
|
+
engine.block.setHeight(opacityBlock, blockHeight);
|
|
521
|
+
engine.block.appendChild(page, opacityBlock);
|
|
522
|
+
|
|
523
|
+
const opacityVideoFill = engine.block.createFill('video');
|
|
524
|
+
engine.block.setString(opacityVideoFill, 'fill/video/fileURI', videoUri);
|
|
525
|
+
engine.block.setFill(opacityBlock, opacityVideoFill);
|
|
526
|
+
|
|
527
|
+
// Set block opacity to 70%
|
|
528
|
+
engine.block.setFloat(opacityBlock, 'opacity', 0.7);
|
|
529
|
+
```
|
|
530
|
+
|
|
531
|
+
Opacity affects the entire block, including its video fill. This technique creates semi-transparent video overlays, watermarks, or layered compositions where video content blends with other elements.
|
|
532
|
+
|
|
533
|
+
## Additional Techniques
|
|
534
|
+
|
|
535
|
+
### Sharing Video Fills
|
|
536
|
+
|
|
537
|
+
Memory efficiency improves when multiple blocks share a single video fill instance. Changes to the shared fill affect all blocks using it.
|
|
538
|
+
|
|
539
|
+
```typescript highlight-shared-fill
|
|
540
|
+
// Advanced: Share one video fill between multiple blocks
|
|
541
|
+
const sharedFill = engine.block.createFill('video');
|
|
542
|
+
engine.block.setString(sharedFill, 'fill/video/fileURI', videoUri);
|
|
543
|
+
|
|
544
|
+
// First block using shared fill
|
|
545
|
+
const sharedBlock1 = engine.block.create('graphic');
|
|
546
|
+
engine.block.setShape(sharedBlock1, engine.block.createShape('rect'));
|
|
547
|
+
engine.block.setWidth(sharedBlock1, blockWidth);
|
|
548
|
+
engine.block.setHeight(sharedBlock1, blockHeight);
|
|
549
|
+
engine.block.appendChild(page, sharedBlock1);
|
|
550
|
+
engine.block.setFill(sharedBlock1, sharedFill);
|
|
551
|
+
|
|
552
|
+
// Second block using the same shared fill
|
|
553
|
+
const sharedBlock2 = engine.block.create('graphic');
|
|
554
|
+
engine.block.setShape(sharedBlock2, engine.block.createShape('rect'));
|
|
555
|
+
engine.block.setWidth(sharedBlock2, blockWidth * 0.8); // Slightly smaller
|
|
556
|
+
engine.block.setHeight(sharedBlock2, blockHeight * 0.8);
|
|
557
|
+
engine.block.appendChild(page, sharedBlock2);
|
|
558
|
+
engine.block.setFill(sharedBlock2, sharedFill);
|
|
559
|
+
|
|
560
|
+
// eslint-disable-next-line no-console
|
|
561
|
+
console.log(
|
|
562
|
+
'Shared fill - Two blocks using the same video fill instance for memory efficiency'
|
|
563
|
+
);
|
|
564
|
+
```
|
|
565
|
+
|
|
566
|
+
This pattern reduces memory usage when the same video appears multiple times in a composition. It's particularly useful for repeated elements like watermarks or background patterns.
|
|
567
|
+
|
|
568
|
+
Shared fills play back synchronized—all blocks display the same frame at the same time during playback. This ensures visual consistency across multiple elements.
|
|
569
|
+
|
|
570
|
+
## Troubleshooting
|
|
571
|
+
|
|
572
|
+
### Video Not Visible
|
|
573
|
+
|
|
574
|
+
If your video fill doesn't appear, check several common causes. Verify the fill is enabled with `isFillEnabled(block)`. Ensure the video URL is accessible—CORS restrictions on web platforms can block video loading. Confirm the block has valid dimensions (width and height greater than zero) and exists in the scene hierarchy.
|
|
575
|
+
|
|
576
|
+
Check that the video format is supported on your platform. MP4 with H.264 encoding works reliably across platforms, while other codecs may have limited support.
|
|
577
|
+
|
|
578
|
+
### Cannot Create Video Fill
|
|
579
|
+
|
|
580
|
+
If creating a video fill throws an error, verify the block supports fills using `engine.block.supportsFill(block)` and that the block is part of a valid scene hierarchy.
|
|
581
|
+
|
|
582
|
+
### Video Not Loading
|
|
583
|
+
|
|
584
|
+
When videos fail to load, verify network connectivity for remote URLs. Check CORS headers—web browsers enforce cross-origin restrictions that can block video access. Validate the URI format uses `https://` for remote videos or appropriate schemes for local files.
|
|
585
|
+
|
|
586
|
+
Test with a known working video URL to isolate whether the issue is with your specific video or a broader configuration problem. Check the browser console for detailed error messages.
|
|
587
|
+
|
|
588
|
+
### Memory Leaks
|
|
589
|
+
|
|
590
|
+
Always destroy replaced fills to prevent memory leaks. When changing a block's fill, retrieve the old fill with `getFill()`, assign the new fill with `setFill()`, then destroy the old fill with `destroy()`.
|
|
591
|
+
|
|
592
|
+
Don't create fills without attaching them to blocks—unattached fills remain in memory indefinitely. Clean up shared fills when no blocks reference them anymore.
|
|
593
|
+
|
|
594
|
+
### Performance Issues
|
|
595
|
+
|
|
596
|
+
Video playback is resource-intensive. Use appropriately sized videos—avoid massive files that strain decoding hardware. Consider lower resolutions for editing with high-resolution sources reserved for export.
|
|
597
|
+
|
|
598
|
+
Limit the number of simultaneously playing videos, especially on mobile devices. Too many concurrent video decodes overwhelm device capabilities. Compress videos before use to reduce file sizes and improve loading times.
|
|
599
|
+
|
|
600
|
+
## API Reference
|
|
601
|
+
|
|
602
|
+
| Method | Description |
|
|
603
|
+
| ----------------------------------------- | -------------------------------- |
|
|
604
|
+
| `createFill('video')` | Create a new video fill object |
|
|
605
|
+
| `setFill(block, fill)` | Assign fill to a block |
|
|
606
|
+
| `getFill(block)` | Get the fill ID from a block |
|
|
607
|
+
| `setString(fill, property, value)` | Set video URI property |
|
|
608
|
+
| `getString(fill, property)` | Get current video URI |
|
|
609
|
+
| `setSourceSet(fill, property, sources)` | Set responsive video sources |
|
|
610
|
+
| `getSourceSet(fill, property)` | Get current source set |
|
|
611
|
+
| `setEnum(block, property, value)` | Set content fill mode |
|
|
612
|
+
| `getEnum(block, property)` | Get current fill mode |
|
|
613
|
+
| `setFillEnabled(block, enabled)` | Enable or disable fill rendering |
|
|
614
|
+
| `isFillEnabled(block)` | Check if fill is enabled |
|
|
615
|
+
| `supportsFill(block)` | Check if block supports fills |
|
|
616
|
+
| `forceLoadAVResource(fill)` | Force load video metadata |
|
|
617
|
+
| `getVideoFillThumbnail(fill, height)` | Get single thumbnail frame |
|
|
618
|
+
| `adjustCropToFillFrame(block, fillIndex)` | Adjust crop to fill frame |
|
|
619
|
+
|
|
620
|
+
### Video Fill Properties
|
|
621
|
+
|
|
622
|
+
| Property | Type | Description |
|
|
623
|
+
| -------------------------- | ------------ | ------------------------------------------- |
|
|
624
|
+
| `fill/video/fileURI` | String | Single video URI (URL, data URI, file path) |
|
|
625
|
+
| `fill/video/sourceSet` | SourceSet\[] | Array of responsive video sources |
|
|
626
|
+
| `fill/video/totalDuration` | Double | Total duration of video in seconds |
|
|
627
|
+
|
|
628
|
+
### Content Fill Properties
|
|
629
|
+
|
|
630
|
+
| Property | Type | Values | Description |
|
|
631
|
+
| ------------------ | ---- | ------------------ | ----------------------------- |
|
|
632
|
+
| `contentFill/mode` | Enum | 'Cover', 'Contain' | How video scales within block |
|
|
633
|
+
|
|
634
|
+
---
|
|
635
|
+
|
|
636
|
+
## More Resources
|
|
637
|
+
|
|
638
|
+
- **[Vanilla JS/TS Documentation Index](https://img.ly/docs/cesdk/js.md)** - Browse all Vanilla JS/TS documentation
|
|
639
|
+
- **[Complete Documentation](./llms-full.txt.md)** - Full documentation in one file (for LLMs)
|
|
640
|
+
- **[Web Documentation](./js.md)** - Interactive documentation with examples
|
|
641
|
+
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
|
|
@@ -0,0 +1,24 @@
|
|
|
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) > [Fills](./fills.md)
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Related Pages
|
|
10
|
+
|
|
11
|
+
- [Fills](./fills/overview.md) - Apply solid colors, gradients, images, or videos as fills to shapes, text, and other design elements.
|
|
12
|
+
- [Color Fills](./fills/color.md) - Learn how to apply solid color fills to design elements using RGB, CMYK, and Spot Colors in CE.SDK
|
|
13
|
+
- [Gradient Fills](./filters-and-effects/gradients.md) - Learn how to create and apply linear, radial, and conical gradient fills to design elements in CE.SDK
|
|
14
|
+
- [Image Fills](./fills/image.md) - Apply photos, textures, and patterns to design elements using image fills in CE.SDK for web browsers.
|
|
15
|
+
- [Video Fills](./fills/video.md) - Learn how to apply video content as fills to design elements in CE.SDK.
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## More Resources
|
|
20
|
+
|
|
21
|
+
- **[Vanilla JS/TS Documentation Index](https://img.ly/docs/cesdk/js.md)** - Browse all Vanilla JS/TS documentation
|
|
22
|
+
- **[Complete Documentation](./llms-full.txt.md)** - Full documentation in one file (for LLMs)
|
|
23
|
+
- **[Web Documentation](./js.md)** - Interactive documentation with examples
|
|
24
|
+
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
|