@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,540 @@
|
|
|
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) > [Join and Arrange](./edit-video/join-and-arrange.md)
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Combine multiple video clips into sequences and organize them in the composition using CE.SDK's track system and programmatic APIs.
|
|
8
|
+
|
|
9
|
+

|
|
10
|
+
|
|
11
|
+
> **Reading time:** 12 minutes
|
|
12
|
+
>
|
|
13
|
+
> **Resources:**
|
|
14
|
+
>
|
|
15
|
+
> - [Download examples](https://github.com/imgly/cesdk-web-examples/archive/refs/tags/release-$UBQ_VERSION$.zip)
|
|
16
|
+
> - [View source on GitHub](https://github.com/imgly/cesdk-web-examples/tree/release-$UBQ_VERSION$/guides-create-video-join-and-arrange-browser)
|
|
17
|
+
> - [Open in StackBlitz](https://stackblitz.com/github/imgly/cesdk-web-examples/tree/v$UBQ_VERSION$/guides-create-video-join-and-arrange-browser)
|
|
18
|
+
> - [Live demo](https://img.ly/docs/cesdk/examples/guides-create-video-join-and-arrange-browser/)
|
|
19
|
+
|
|
20
|
+
Video compositions in CE.SDK use a hierarchy: **Scene → Page → Track → Clip**. Tracks organize clips for sequential playback—when you add clips to a track, they play one after another. You can control precise timing using time offsets and create layered compositions by adding multiple tracks to a page.
|
|
21
|
+
|
|
22
|
+
In CE.SDK's block-based architecture, a **clip is a graphic block with a video fill**. This means video clips share the same APIs and capabilities as other blocks—you can position, rotate, scale, and apply effects to video just like images or shapes. The `addVideo()` helper creates this structure automatically and loads the video metadata.
|
|
23
|
+
|
|
24
|
+
```typescript file=@cesdk_web_examples/guides-create-video-join-and-arrange-browser/browser.ts reference-only
|
|
25
|
+
import type { EditorPlugin, EditorPluginContext } from '@cesdk/cesdk-js';
|
|
26
|
+
|
|
27
|
+
import {
|
|
28
|
+
BlurAssetSource,
|
|
29
|
+
CaptionPresetsAssetSource,
|
|
30
|
+
ColorPaletteAssetSource,
|
|
31
|
+
CropPresetsAssetSource,
|
|
32
|
+
DemoAssetSources,
|
|
33
|
+
EffectsAssetSource,
|
|
34
|
+
FiltersAssetSource,
|
|
35
|
+
PagePresetsAssetSource,
|
|
36
|
+
StickerAssetSource,
|
|
37
|
+
TextAssetSource,
|
|
38
|
+
TextComponentAssetSource,
|
|
39
|
+
TypefaceAssetSource,
|
|
40
|
+
UploadAssetSources,
|
|
41
|
+
VectorShapeAssetSource
|
|
42
|
+
} from '@cesdk/cesdk-js/plugins';
|
|
43
|
+
import { VideoEditorConfig } from './video-editor/plugin';
|
|
44
|
+
import packageJson from './package.json';
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* CE.SDK Plugin: Join and Arrange Video Clips Guide
|
|
48
|
+
*
|
|
49
|
+
* Demonstrates combining multiple video clips into sequences:
|
|
50
|
+
* - Creating video scenes and tracks
|
|
51
|
+
* - Adding clips to tracks for sequential playback
|
|
52
|
+
* - Reordering clips within a track
|
|
53
|
+
* - Controlling clip timing with time offsets
|
|
54
|
+
* - Creating multi-track compositions
|
|
55
|
+
*/
|
|
56
|
+
class Example implements EditorPlugin {
|
|
57
|
+
name = packageJson.name;
|
|
58
|
+
|
|
59
|
+
version = packageJson.version;
|
|
60
|
+
|
|
61
|
+
async initialize({ cesdk }: EditorPluginContext): Promise<void> {
|
|
62
|
+
if (!cesdk) {
|
|
63
|
+
throw new Error('CE.SDK instance is required for this plugin');
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
await cesdk.addPlugin(new VideoEditorConfig());
|
|
67
|
+
|
|
68
|
+
// Add asset source plugins
|
|
69
|
+
await cesdk.addPlugin(new BlurAssetSource());
|
|
70
|
+
await cesdk.addPlugin(new CaptionPresetsAssetSource());
|
|
71
|
+
await cesdk.addPlugin(new ColorPaletteAssetSource());
|
|
72
|
+
await cesdk.addPlugin(new CropPresetsAssetSource());
|
|
73
|
+
await cesdk.addPlugin(
|
|
74
|
+
new UploadAssetSources({
|
|
75
|
+
include: [
|
|
76
|
+
'ly.img.image.upload',
|
|
77
|
+
'ly.img.video.upload',
|
|
78
|
+
'ly.img.audio.upload'
|
|
79
|
+
]
|
|
80
|
+
})
|
|
81
|
+
);
|
|
82
|
+
await cesdk.addPlugin(
|
|
83
|
+
new DemoAssetSources({
|
|
84
|
+
include: [
|
|
85
|
+
'ly.img.templates.video.*',
|
|
86
|
+
'ly.img.image.*',
|
|
87
|
+
'ly.img.audio.*',
|
|
88
|
+
'ly.img.video.*'
|
|
89
|
+
]
|
|
90
|
+
})
|
|
91
|
+
);
|
|
92
|
+
await cesdk.addPlugin(new EffectsAssetSource());
|
|
93
|
+
await cesdk.addPlugin(new FiltersAssetSource());
|
|
94
|
+
await cesdk.addPlugin(
|
|
95
|
+
new PagePresetsAssetSource({
|
|
96
|
+
include: [
|
|
97
|
+
'ly.img.page.presets.instagram.*',
|
|
98
|
+
'ly.img.page.presets.facebook.*',
|
|
99
|
+
'ly.img.page.presets.x.*',
|
|
100
|
+
'ly.img.page.presets.linkedin.*',
|
|
101
|
+
'ly.img.page.presets.pinterest.*',
|
|
102
|
+
'ly.img.page.presets.tiktok.*',
|
|
103
|
+
'ly.img.page.presets.youtube.*',
|
|
104
|
+
'ly.img.page.presets.video.*'
|
|
105
|
+
]
|
|
106
|
+
})
|
|
107
|
+
);
|
|
108
|
+
await cesdk.addPlugin(new StickerAssetSource());
|
|
109
|
+
await cesdk.addPlugin(new TextAssetSource());
|
|
110
|
+
await cesdk.addPlugin(new TextComponentAssetSource());
|
|
111
|
+
await cesdk.addPlugin(new TypefaceAssetSource());
|
|
112
|
+
await cesdk.addPlugin(new VectorShapeAssetSource());
|
|
113
|
+
|
|
114
|
+
await cesdk.actions.run('scene.create', {
|
|
115
|
+
layout: 'DepthStack',
|
|
116
|
+
page: { width: 1920, height: 1080, unit: 'Pixel' }
|
|
117
|
+
});
|
|
118
|
+
|
|
119
|
+
const engine = cesdk.engine;
|
|
120
|
+
const page = engine.block.findByType('page')[0];
|
|
121
|
+
|
|
122
|
+
// Set page duration to accommodate all clips (15 seconds total)
|
|
123
|
+
engine.block.setDuration(page, 15);
|
|
124
|
+
|
|
125
|
+
// Sample video URL for the demonstration
|
|
126
|
+
const videoUrl =
|
|
127
|
+
'https://cdn.img.ly/assets/demo/v3/ly.img.video/videos/pexels-drone-footage-of-a-surfer-barrelling-a-wave-12715991.mp4';
|
|
128
|
+
|
|
129
|
+
// Create video clips using the addVideo helper method
|
|
130
|
+
// Each clip is sized to fill the canvas (1920x1080 is standard video resolution)
|
|
131
|
+
const clipA = await engine.block.addVideo(videoUrl, 1920, 1080, {
|
|
132
|
+
timeline: { duration: 5, timeOffset: 0 }
|
|
133
|
+
});
|
|
134
|
+
|
|
135
|
+
const clipB = await engine.block.addVideo(videoUrl, 1920, 1080, {
|
|
136
|
+
timeline: { duration: 5, timeOffset: 5 }
|
|
137
|
+
});
|
|
138
|
+
|
|
139
|
+
const clipC = await engine.block.addVideo(videoUrl, 1920, 1080, {
|
|
140
|
+
timeline: { duration: 5, timeOffset: 10 }
|
|
141
|
+
});
|
|
142
|
+
|
|
143
|
+
// Create a track and add it to the page
|
|
144
|
+
// Tracks organize clips for sequential playback on the timeline
|
|
145
|
+
const track = engine.block.create('track');
|
|
146
|
+
engine.block.appendChild(page, track);
|
|
147
|
+
|
|
148
|
+
// Add clips to the track
|
|
149
|
+
engine.block.appendChild(track, clipA);
|
|
150
|
+
engine.block.appendChild(track, clipB);
|
|
151
|
+
engine.block.appendChild(track, clipC);
|
|
152
|
+
|
|
153
|
+
// Resize all track children to fill the page dimensions
|
|
154
|
+
engine.block.fillParent(track);
|
|
155
|
+
|
|
156
|
+
// Query track children to verify order
|
|
157
|
+
const trackClips = engine.block.getChildren(track);
|
|
158
|
+
// eslint-disable-next-line no-console
|
|
159
|
+
console.log('Track clip count:', trackClips.length, 'clips');
|
|
160
|
+
|
|
161
|
+
// Set durations for each clip
|
|
162
|
+
engine.block.setDuration(clipA, 5);
|
|
163
|
+
engine.block.setDuration(clipB, 5);
|
|
164
|
+
engine.block.setDuration(clipC, 5);
|
|
165
|
+
|
|
166
|
+
// Set time offsets to position clips sequentially on the timeline
|
|
167
|
+
engine.block.setTimeOffset(clipA, 0);
|
|
168
|
+
engine.block.setTimeOffset(clipB, 5);
|
|
169
|
+
engine.block.setTimeOffset(clipC, 10);
|
|
170
|
+
|
|
171
|
+
// eslint-disable-next-line no-console
|
|
172
|
+
console.log('Track offsets set: Clip A: 0s, Clip B: 5s, Clip C: 10s');
|
|
173
|
+
|
|
174
|
+
// Reorder clips: move Clip C to the beginning (index 0)
|
|
175
|
+
// This demonstrates using insertChild for precise positioning
|
|
176
|
+
engine.block.insertChild(track, clipC, 0);
|
|
177
|
+
|
|
178
|
+
// After reordering, update time offsets to reflect the new sequence
|
|
179
|
+
engine.block.setTimeOffset(clipC, 0);
|
|
180
|
+
engine.block.setTimeOffset(clipA, 5);
|
|
181
|
+
engine.block.setTimeOffset(clipB, 10);
|
|
182
|
+
|
|
183
|
+
// eslint-disable-next-line no-console
|
|
184
|
+
console.log('After reorder - updated offsets: C=0s, A=5s, B=10s');
|
|
185
|
+
|
|
186
|
+
// Get all clips in the track to verify arrangement
|
|
187
|
+
const finalClips = engine.block.getChildren(track);
|
|
188
|
+
// eslint-disable-next-line no-console
|
|
189
|
+
console.log('Final track arrangement:');
|
|
190
|
+
finalClips.forEach((clipId, index) => {
|
|
191
|
+
const offset = engine.block.getTimeOffset(clipId);
|
|
192
|
+
const duration = engine.block.getDuration(clipId);
|
|
193
|
+
// eslint-disable-next-line no-console
|
|
194
|
+
console.log(
|
|
195
|
+
` Clip ${index + 1}: offset=${offset}s, duration=${duration}s`
|
|
196
|
+
);
|
|
197
|
+
});
|
|
198
|
+
|
|
199
|
+
// Create a second track for layered compositions
|
|
200
|
+
// Track order determines z-index: last track renders on top
|
|
201
|
+
const overlayTrack = engine.block.create('track');
|
|
202
|
+
engine.block.appendChild(page, overlayTrack);
|
|
203
|
+
|
|
204
|
+
// Create an overlay clip for picture-in-picture effect (1/4 size)
|
|
205
|
+
const overlayClip = await engine.block.addVideo(
|
|
206
|
+
videoUrl,
|
|
207
|
+
1920 / 4,
|
|
208
|
+
1080 / 4,
|
|
209
|
+
{
|
|
210
|
+
timeline: { duration: 5, timeOffset: 2 }
|
|
211
|
+
}
|
|
212
|
+
);
|
|
213
|
+
engine.block.appendChild(overlayTrack, overlayClip);
|
|
214
|
+
|
|
215
|
+
// Position overlay in bottom-right corner with padding
|
|
216
|
+
engine.block.setPositionX(overlayClip, 1920 - 1920 / 4 - 40);
|
|
217
|
+
engine.block.setPositionY(overlayClip, 1080 - 1080 / 4 - 40);
|
|
218
|
+
|
|
219
|
+
// eslint-disable-next-line no-console
|
|
220
|
+
console.log('Multi-track composition created with overlay starting at 2s');
|
|
221
|
+
|
|
222
|
+
// Select the first clip in the main track to show timeline controls
|
|
223
|
+
engine.block.select(clipC);
|
|
224
|
+
|
|
225
|
+
// Seek to 2.5s to show both main clip and overlay visible
|
|
226
|
+
// (overlay starts at 2s, so 2.5s shows both elements)
|
|
227
|
+
engine.block.setPlaybackTime(page, 2.5);
|
|
228
|
+
|
|
229
|
+
// eslint-disable-next-line no-console
|
|
230
|
+
console.log(
|
|
231
|
+
'Join and Arrange guide initialized. Use timeline to view clip arrangement.'
|
|
232
|
+
);
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
export default Example;
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
This guide covers how to join clips using the built-in timeline UI, how to programmatically add and arrange clips in tracks, and how to create multi-track compositions.
|
|
240
|
+
|
|
241
|
+
## Joining Clips via UI
|
|
242
|
+
|
|
243
|
+
CE.SDK's timeline UI provides visual tools for arranging video clips.
|
|
244
|
+
|
|
245
|
+
### Adding Clips to Timeline
|
|
246
|
+
|
|
247
|
+
Drag clips from the asset panel directly onto the timeline. When you drop a clip on an existing track, it joins the sequence. Dropping on an empty area creates a new track for that clip.
|
|
248
|
+
|
|
249
|
+
The timeline displays clip duration visually—longer clips take more horizontal space. You can see at a glance how clips relate to each other in time.
|
|
250
|
+
|
|
251
|
+
### Reordering Clips
|
|
252
|
+
|
|
253
|
+
Drag clips within a track to reorder them. As you drag, CE.SDK shows where the clip will land. Release to confirm the new position.
|
|
254
|
+
|
|
255
|
+
The timeline UI updates time offsets when you reorder clips via drag-and-drop, positioning clips sequentially without gaps.
|
|
256
|
+
|
|
257
|
+
### Creating Additional Tracks
|
|
258
|
+
|
|
259
|
+
Add multiple tracks to create layered compositions. Tracks stack vertically in the timeline, and clips on upper tracks render on top of clips below. This enables picture-in-picture effects, overlays, and complex multi-layer edits.
|
|
260
|
+
|
|
261
|
+
## Programmatic Clip Joining
|
|
262
|
+
|
|
263
|
+
### Creating the Scene
|
|
264
|
+
|
|
265
|
+
We create a scene and set up a page for the video composition.
|
|
266
|
+
|
|
267
|
+
```typescript highlight=highlight-create-video-scene
|
|
268
|
+
await cesdk.addPlugin(new VideoEditorConfig());
|
|
269
|
+
|
|
270
|
+
// Add asset source plugins
|
|
271
|
+
await cesdk.addPlugin(new BlurAssetSource());
|
|
272
|
+
await cesdk.addPlugin(new CaptionPresetsAssetSource());
|
|
273
|
+
await cesdk.addPlugin(new ColorPaletteAssetSource());
|
|
274
|
+
await cesdk.addPlugin(new CropPresetsAssetSource());
|
|
275
|
+
await cesdk.addPlugin(
|
|
276
|
+
new UploadAssetSources({
|
|
277
|
+
include: [
|
|
278
|
+
'ly.img.image.upload',
|
|
279
|
+
'ly.img.video.upload',
|
|
280
|
+
'ly.img.audio.upload'
|
|
281
|
+
]
|
|
282
|
+
})
|
|
283
|
+
);
|
|
284
|
+
await cesdk.addPlugin(
|
|
285
|
+
new DemoAssetSources({
|
|
286
|
+
include: [
|
|
287
|
+
'ly.img.templates.video.*',
|
|
288
|
+
'ly.img.image.*',
|
|
289
|
+
'ly.img.audio.*',
|
|
290
|
+
'ly.img.video.*'
|
|
291
|
+
]
|
|
292
|
+
})
|
|
293
|
+
);
|
|
294
|
+
await cesdk.addPlugin(new EffectsAssetSource());
|
|
295
|
+
await cesdk.addPlugin(new FiltersAssetSource());
|
|
296
|
+
await cesdk.addPlugin(
|
|
297
|
+
new PagePresetsAssetSource({
|
|
298
|
+
include: [
|
|
299
|
+
'ly.img.page.presets.instagram.*',
|
|
300
|
+
'ly.img.page.presets.facebook.*',
|
|
301
|
+
'ly.img.page.presets.x.*',
|
|
302
|
+
'ly.img.page.presets.linkedin.*',
|
|
303
|
+
'ly.img.page.presets.pinterest.*',
|
|
304
|
+
'ly.img.page.presets.tiktok.*',
|
|
305
|
+
'ly.img.page.presets.youtube.*',
|
|
306
|
+
'ly.img.page.presets.video.*'
|
|
307
|
+
]
|
|
308
|
+
})
|
|
309
|
+
);
|
|
310
|
+
await cesdk.addPlugin(new StickerAssetSource());
|
|
311
|
+
await cesdk.addPlugin(new TextAssetSource());
|
|
312
|
+
await cesdk.addPlugin(new TextComponentAssetSource());
|
|
313
|
+
await cesdk.addPlugin(new TypefaceAssetSource());
|
|
314
|
+
await cesdk.addPlugin(new VectorShapeAssetSource());
|
|
315
|
+
|
|
316
|
+
await cesdk.actions.run('scene.create', {
|
|
317
|
+
layout: 'DepthStack',
|
|
318
|
+
page: { width: 1920, height: 1080, unit: 'Pixel' }
|
|
319
|
+
});
|
|
320
|
+
|
|
321
|
+
const engine = cesdk.engine;
|
|
322
|
+
const page = engine.block.findByType('page')[0];
|
|
323
|
+
|
|
324
|
+
// Set page duration to accommodate all clips (15 seconds total)
|
|
325
|
+
engine.block.setDuration(page, 15);
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
The page duration determines how long the composition plays. Set it to accommodate all your clips—in this example, 15 seconds for three 5-second clips.
|
|
329
|
+
|
|
330
|
+
### Creating Video Clips
|
|
331
|
+
|
|
332
|
+
We create video clips as graphic blocks with video fills. Each clip needs a video fill that references the source media.
|
|
333
|
+
|
|
334
|
+
```typescript highlight=highlight-create-clips
|
|
335
|
+
// Create video clips using the addVideo helper method
|
|
336
|
+
// Each clip is sized to fill the canvas (1920x1080 is standard video resolution)
|
|
337
|
+
const clipA = await engine.block.addVideo(videoUrl, 1920, 1080, {
|
|
338
|
+
timeline: { duration: 5, timeOffset: 0 }
|
|
339
|
+
});
|
|
340
|
+
|
|
341
|
+
const clipB = await engine.block.addVideo(videoUrl, 1920, 1080, {
|
|
342
|
+
timeline: { duration: 5, timeOffset: 5 }
|
|
343
|
+
});
|
|
344
|
+
|
|
345
|
+
const clipC = await engine.block.addVideo(videoUrl, 1920, 1080, {
|
|
346
|
+
timeline: { duration: 5, timeOffset: 10 }
|
|
347
|
+
});
|
|
348
|
+
```
|
|
349
|
+
|
|
350
|
+
The `addVideo` helper method creates a graphic block with an attached video fill and automatically loads the video resource metadata. We set width and height to control how the clip appears in the composition. The `timeline` options let us set duration and time offset in one call.
|
|
351
|
+
|
|
352
|
+
### Creating Tracks
|
|
353
|
+
|
|
354
|
+
Tracks organize clips for sequential playback. We create a track and attach it to the page.
|
|
355
|
+
|
|
356
|
+
```typescript highlight=highlight-create-track
|
|
357
|
+
// Create a track and add it to the page
|
|
358
|
+
// Tracks organize clips for sequential playback on the timeline
|
|
359
|
+
const track = engine.block.create('track');
|
|
360
|
+
engine.block.appendChild(page, track);
|
|
361
|
+
```
|
|
362
|
+
|
|
363
|
+
A track acts as a container for clips. When you add clips to a track, they play in the order they were added.
|
|
364
|
+
|
|
365
|
+
### Adding Clips to Track
|
|
366
|
+
|
|
367
|
+
We add clips to the track using `appendChild`. Clips join the sequence in the order they're added.
|
|
368
|
+
|
|
369
|
+
```typescript highlight=highlight-add-clips-to-track
|
|
370
|
+
// Add clips to the track
|
|
371
|
+
engine.block.appendChild(track, clipA);
|
|
372
|
+
engine.block.appendChild(track, clipB);
|
|
373
|
+
engine.block.appendChild(track, clipC);
|
|
374
|
+
|
|
375
|
+
// Resize all track children to fill the page dimensions
|
|
376
|
+
engine.block.fillParent(track);
|
|
377
|
+
|
|
378
|
+
// Query track children to verify order
|
|
379
|
+
const trackClips = engine.block.getChildren(track);
|
|
380
|
+
// eslint-disable-next-line no-console
|
|
381
|
+
console.log('Track clip count:', trackClips.length, 'clips');
|
|
382
|
+
```
|
|
383
|
+
|
|
384
|
+
After adding clips, you can query the track's children to verify the order. `getChildren` returns an array of clip IDs in playback order.
|
|
385
|
+
|
|
386
|
+
### Setting Clip Durations
|
|
387
|
+
|
|
388
|
+
Each clip needs a duration that determines how long it plays.
|
|
389
|
+
|
|
390
|
+
```typescript highlight=highlight-set-clip-durations
|
|
391
|
+
// Set durations for each clip
|
|
392
|
+
engine.block.setDuration(clipA, 5);
|
|
393
|
+
engine.block.setDuration(clipB, 5);
|
|
394
|
+
engine.block.setDuration(clipC, 5);
|
|
395
|
+
```
|
|
396
|
+
|
|
397
|
+
Duration is measured in seconds. A 5-second duration means the clip plays for 5 seconds.
|
|
398
|
+
|
|
399
|
+
## Arranging Clips
|
|
400
|
+
|
|
401
|
+
### Time Offsets
|
|
402
|
+
|
|
403
|
+
Time offsets control when each clip starts playing. We set offsets to position clips at specific points in the composition.
|
|
404
|
+
|
|
405
|
+
```typescript highlight=highlight-time-offsets
|
|
406
|
+
// Set time offsets to position clips sequentially on the timeline
|
|
407
|
+
engine.block.setTimeOffset(clipA, 0);
|
|
408
|
+
engine.block.setTimeOffset(clipB, 5);
|
|
409
|
+
engine.block.setTimeOffset(clipC, 10);
|
|
410
|
+
|
|
411
|
+
// eslint-disable-next-line no-console
|
|
412
|
+
console.log('Track offsets set: Clip A: 0s, Clip B: 5s, Clip C: 10s');
|
|
413
|
+
```
|
|
414
|
+
|
|
415
|
+
Clip A starts at 0 seconds, Clip B at 5 seconds, and Clip C at 10 seconds. Combined with 5-second durations, this creates a continuous 15-second sequence with no gaps.
|
|
416
|
+
|
|
417
|
+
### Reordering Clips
|
|
418
|
+
|
|
419
|
+
Use `insertChild` to move clips to specific positions within a track. This moves an existing child to a new index.
|
|
420
|
+
|
|
421
|
+
```typescript highlight=highlight-reorder-clips
|
|
422
|
+
// Reorder clips: move Clip C to the beginning (index 0)
|
|
423
|
+
// This demonstrates using insertChild for precise positioning
|
|
424
|
+
engine.block.insertChild(track, clipC, 0);
|
|
425
|
+
|
|
426
|
+
// After reordering, update time offsets to reflect the new sequence
|
|
427
|
+
engine.block.setTimeOffset(clipC, 0);
|
|
428
|
+
engine.block.setTimeOffset(clipA, 5);
|
|
429
|
+
engine.block.setTimeOffset(clipB, 10);
|
|
430
|
+
|
|
431
|
+
// eslint-disable-next-line no-console
|
|
432
|
+
console.log('After reorder - updated offsets: C=0s, A=5s, B=10s');
|
|
433
|
+
```
|
|
434
|
+
|
|
435
|
+
When we insert Clip C at index 0, it becomes the first clip. The order changes from A-B-C to C-A-B. We update time offsets to match the new sequence.
|
|
436
|
+
|
|
437
|
+
### Querying Track Children
|
|
438
|
+
|
|
439
|
+
Use `getChildren` to inspect the current clip order and verify arrangements.
|
|
440
|
+
|
|
441
|
+
```typescript highlight=highlight-get-track-children
|
|
442
|
+
// Get all clips in the track to verify arrangement
|
|
443
|
+
const finalClips = engine.block.getChildren(track);
|
|
444
|
+
// eslint-disable-next-line no-console
|
|
445
|
+
console.log('Final track arrangement:');
|
|
446
|
+
finalClips.forEach((clipId, index) => {
|
|
447
|
+
const offset = engine.block.getTimeOffset(clipId);
|
|
448
|
+
const duration = engine.block.getDuration(clipId);
|
|
449
|
+
// eslint-disable-next-line no-console
|
|
450
|
+
console.log(` Clip ${index + 1}: offset=${offset}s, duration=${duration}s`);
|
|
451
|
+
});
|
|
452
|
+
```
|
|
453
|
+
|
|
454
|
+
This loop outputs each clip's position, time offset, and duration—useful for debugging or building custom timeline UIs.
|
|
455
|
+
|
|
456
|
+
## Multi-Track Compositions
|
|
457
|
+
|
|
458
|
+
### Adding Multiple Tracks
|
|
459
|
+
|
|
460
|
+
Create layered compositions by adding multiple tracks to a page. Track order determines rendering order—clips in later tracks appear on top.
|
|
461
|
+
|
|
462
|
+
```typescript highlight=highlight-multi-track
|
|
463
|
+
// Create a second track for layered compositions
|
|
464
|
+
// Track order determines z-index: last track renders on top
|
|
465
|
+
const overlayTrack = engine.block.create('track');
|
|
466
|
+
engine.block.appendChild(page, overlayTrack);
|
|
467
|
+
|
|
468
|
+
// Create an overlay clip for picture-in-picture effect (1/4 size)
|
|
469
|
+
const overlayClip = await engine.block.addVideo(videoUrl, 1920 / 4, 1080 / 4, {
|
|
470
|
+
timeline: { duration: 5, timeOffset: 2 }
|
|
471
|
+
});
|
|
472
|
+
engine.block.appendChild(overlayTrack, overlayClip);
|
|
473
|
+
|
|
474
|
+
// Position overlay in bottom-right corner with padding
|
|
475
|
+
engine.block.setPositionX(overlayClip, 1920 - 1920 / 4 - 40);
|
|
476
|
+
engine.block.setPositionY(overlayClip, 1080 - 1080 / 4 - 40);
|
|
477
|
+
|
|
478
|
+
// eslint-disable-next-line no-console
|
|
479
|
+
console.log('Multi-track composition created with overlay starting at 2s');
|
|
480
|
+
```
|
|
481
|
+
|
|
482
|
+
The overlay track contains a smaller clip positioned in the corner. It starts at 2 seconds and lasts 5 seconds, creating a picture-in-picture effect during that time range.
|
|
483
|
+
|
|
484
|
+
### Track Rendering Order
|
|
485
|
+
|
|
486
|
+
CE.SDK renders tracks from first to last. The first track added appears at the bottom, and subsequent tracks layer on top. Use this to create:
|
|
487
|
+
|
|
488
|
+
- **Background layers**: Full-screen videos or images on the first track
|
|
489
|
+
- **Overlays**: Smaller clips positioned on upper tracks
|
|
490
|
+
- **Titles**: Text or graphics that appear over video content
|
|
491
|
+
|
|
492
|
+
## Troubleshooting
|
|
493
|
+
|
|
494
|
+
### Clips Not Appearing
|
|
495
|
+
|
|
496
|
+
If clips don't appear in the composition, verify they're attached to a track that's attached to the page. Use `getParent` and `getChildren` to inspect the hierarchy:
|
|
497
|
+
|
|
498
|
+
```typescript
|
|
499
|
+
const parent = engine.block.getParent(clipId);
|
|
500
|
+
const children = engine.block.getChildren(trackId);
|
|
501
|
+
```
|
|
502
|
+
|
|
503
|
+
### Wrong Playback Order
|
|
504
|
+
|
|
505
|
+
If clips play in unexpected order, check time offsets. Clips play based on their time offset values, not their order in the children array. Set explicit offsets when precise timing matters.
|
|
506
|
+
|
|
507
|
+
### Video Not Loading
|
|
508
|
+
|
|
509
|
+
If video content doesn't appear when using `addVideo`, check that the video URL is accessible and the format is supported. The `addVideo` helper automatically loads video metadata.
|
|
510
|
+
|
|
511
|
+
## API Reference
|
|
512
|
+
|
|
513
|
+
| Method | Description | Parameters | Returns |
|
|
514
|
+
| --------------------------------------------- | ------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ------------------------ |
|
|
515
|
+
| `block.addVideo(uri, width, height, options)` | Create video clip with automatic resource loading | `uri: string, width: number, height: number, options?: { timeline: { duration, timeOffset } }` | `Promise<DesignBlockId>` |
|
|
516
|
+
| `block.create('track')` | Create a new track | `type: 'track'` | `DesignBlockId` |
|
|
517
|
+
| `block.appendChild(parent, child)` | Add child to parent | `parent: DesignBlockId, child: DesignBlockId` | `void` |
|
|
518
|
+
| `block.insertChild(parent, child, index)` | Insert child at specific position | `parent: DesignBlockId, child: DesignBlockId, index: number` | `void` |
|
|
519
|
+
| `block.getChildren(id)` | Get all children of a block | `id: DesignBlockId` | `DesignBlockId[]` |
|
|
520
|
+
| `block.setTimeOffset(id, offset)` | Set when block starts playing | `id: DesignBlockId, offset: number` | `void` |
|
|
521
|
+
| `block.getTimeOffset(id)` | Get block's time offset | `id: DesignBlockId` | `number` |
|
|
522
|
+
| `block.setDuration(id, duration)` | Set block's duration | `id: DesignBlockId, duration: number` | `void` |
|
|
523
|
+
| `block.getDuration(id)` | Get block's duration | `id: DesignBlockId` | `number` |
|
|
524
|
+
|
|
525
|
+
## Next Steps
|
|
526
|
+
|
|
527
|
+
Now that you understand how to join and arrange clips, explore related video editing features:
|
|
528
|
+
|
|
529
|
+
- [Trim Video Clips](./edit-video/trim.md) - Control which portion of media plays back
|
|
530
|
+
- [Control Audio and Video](./create-video/control.md) - Master playback timing and audio mixing
|
|
531
|
+
- [Video Timeline Overview](./create-video/timeline-editor.md) - Understand the complete timeline editing system
|
|
532
|
+
|
|
533
|
+
---
|
|
534
|
+
|
|
535
|
+
## More Resources
|
|
536
|
+
|
|
537
|
+
- **[Vanilla JS/TS Documentation Index](https://img.ly/docs/cesdk/js.md)** - Browse all Vanilla JS/TS documentation
|
|
538
|
+
- **[Complete Documentation](./llms-full.txt.md)** - Full documentation in one file (for LLMs)
|
|
539
|
+
- **[Web Documentation](./js.md)** - Interactive documentation with examples
|
|
540
|
+
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
|