@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,380 @@
|
|
|
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) > [Transform](./edit-video/transform.md) > [Crop](./edit-video/transform/crop.md)
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Crop videos to focus on specific areas, remove unwanted edges, or prepare clips for fixed formats like 9:16 stories using programmatic crop transforms.
|
|
8
|
+
|
|
9
|
+

|
|
10
|
+
|
|
11
|
+
> **Reading time:** 10 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-transform-crop-browser)
|
|
17
|
+
> - [Open in StackBlitz](https://stackblitz.com/github/imgly/cesdk-web-examples/tree/v$UBQ_VERSION$/guides-create-video-transform-crop-browser)
|
|
18
|
+
> - [Live demo](https://img.ly/docs/cesdk/examples/guides-create-video-transform-crop-browser/)
|
|
19
|
+
|
|
20
|
+
Video cropping in CreativeEditor SDK (CE.SDK) lets you re-frame clips, remove unwanted edges, or adapt footage for platform-specific formats. Unlike resizing or scaling which affects the entire frame uniformly, cropping selects a specific region to display.
|
|
21
|
+
|
|
22
|
+
```typescript file=@cesdk_web_examples/guides-create-video-transform-crop-browser/browser.ts reference-only
|
|
23
|
+
import type { EditorPlugin, EditorPluginContext } from '@cesdk/cesdk-js';
|
|
24
|
+
|
|
25
|
+
import {
|
|
26
|
+
BlurAssetSource,
|
|
27
|
+
CaptionPresetsAssetSource,
|
|
28
|
+
ColorPaletteAssetSource,
|
|
29
|
+
CropPresetsAssetSource,
|
|
30
|
+
DemoAssetSources,
|
|
31
|
+
EffectsAssetSource,
|
|
32
|
+
FiltersAssetSource,
|
|
33
|
+
PagePresetsAssetSource,
|
|
34
|
+
StickerAssetSource,
|
|
35
|
+
TextAssetSource,
|
|
36
|
+
TextComponentAssetSource,
|
|
37
|
+
TypefaceAssetSource,
|
|
38
|
+
UploadAssetSources,
|
|
39
|
+
VectorShapeAssetSource
|
|
40
|
+
} from '@cesdk/cesdk-js/plugins';
|
|
41
|
+
import { VideoEditorConfig } from './video-editor/plugin';
|
|
42
|
+
import packageJson from './package.json';
|
|
43
|
+
|
|
44
|
+
class Example implements EditorPlugin {
|
|
45
|
+
name = packageJson.name;
|
|
46
|
+
version = packageJson.version;
|
|
47
|
+
|
|
48
|
+
async initialize({ cesdk }: EditorPluginContext): Promise<void> {
|
|
49
|
+
if (!cesdk) {
|
|
50
|
+
throw new Error('CE.SDK instance is required for this plugin');
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
await cesdk.addPlugin(new VideoEditorConfig());
|
|
54
|
+
|
|
55
|
+
// Add asset source plugins
|
|
56
|
+
await cesdk.addPlugin(new BlurAssetSource());
|
|
57
|
+
await cesdk.addPlugin(new CaptionPresetsAssetSource());
|
|
58
|
+
await cesdk.addPlugin(new ColorPaletteAssetSource());
|
|
59
|
+
await cesdk.addPlugin(new CropPresetsAssetSource());
|
|
60
|
+
await cesdk.addPlugin(
|
|
61
|
+
new UploadAssetSources({
|
|
62
|
+
include: [
|
|
63
|
+
'ly.img.image.upload',
|
|
64
|
+
'ly.img.video.upload',
|
|
65
|
+
'ly.img.audio.upload'
|
|
66
|
+
]
|
|
67
|
+
})
|
|
68
|
+
);
|
|
69
|
+
await cesdk.addPlugin(
|
|
70
|
+
new DemoAssetSources({
|
|
71
|
+
include: [
|
|
72
|
+
'ly.img.templates.video.*',
|
|
73
|
+
'ly.img.image.*',
|
|
74
|
+
'ly.img.audio.*',
|
|
75
|
+
'ly.img.video.*'
|
|
76
|
+
]
|
|
77
|
+
})
|
|
78
|
+
);
|
|
79
|
+
await cesdk.addPlugin(new EffectsAssetSource());
|
|
80
|
+
await cesdk.addPlugin(new FiltersAssetSource());
|
|
81
|
+
await cesdk.addPlugin(
|
|
82
|
+
new PagePresetsAssetSource({
|
|
83
|
+
include: [
|
|
84
|
+
'ly.img.page.presets.instagram.*',
|
|
85
|
+
'ly.img.page.presets.facebook.*',
|
|
86
|
+
'ly.img.page.presets.x.*',
|
|
87
|
+
'ly.img.page.presets.linkedin.*',
|
|
88
|
+
'ly.img.page.presets.pinterest.*',
|
|
89
|
+
'ly.img.page.presets.tiktok.*',
|
|
90
|
+
'ly.img.page.presets.youtube.*',
|
|
91
|
+
'ly.img.page.presets.video.*'
|
|
92
|
+
]
|
|
93
|
+
})
|
|
94
|
+
);
|
|
95
|
+
await cesdk.addPlugin(new StickerAssetSource());
|
|
96
|
+
await cesdk.addPlugin(new TextAssetSource());
|
|
97
|
+
await cesdk.addPlugin(new TextComponentAssetSource());
|
|
98
|
+
await cesdk.addPlugin(new TypefaceAssetSource());
|
|
99
|
+
await cesdk.addPlugin(new VectorShapeAssetSource());
|
|
100
|
+
|
|
101
|
+
await cesdk.actions.run('scene.create', {
|
|
102
|
+
layout: 'DepthStack',
|
|
103
|
+
page: { width: 720, height: 1280, unit: 'Pixel' }
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
const engine = cesdk.engine;
|
|
107
|
+
|
|
108
|
+
// Get the page from the scene
|
|
109
|
+
const pages = engine.block.findByType('page');
|
|
110
|
+
const page = pages[0];
|
|
111
|
+
|
|
112
|
+
// Add a video using the convenience API - this handles track creation automatically
|
|
113
|
+
const videoUri =
|
|
114
|
+
'https://cdn.img.ly/assets/demo/v3/ly.img.video/videos/pexels-drone-footage-of-a-surfer-barrelling-a-wave-12715991.mp4';
|
|
115
|
+
const videoBlock = await engine.block.addVideo(videoUri, 720, 1280);
|
|
116
|
+
|
|
117
|
+
// Append the video block to the page (for video scenes, this adds to the track)
|
|
118
|
+
engine.block.appendChild(page, videoBlock);
|
|
119
|
+
|
|
120
|
+
// Set video duration on the timeline
|
|
121
|
+
engine.block.setDuration(videoBlock, 10);
|
|
122
|
+
|
|
123
|
+
// Get the fill to force load the video resource
|
|
124
|
+
const videoFill = engine.block.getFill(videoBlock);
|
|
125
|
+
await engine.block.forceLoadAVResource(videoFill);
|
|
126
|
+
|
|
127
|
+
// Verify the block supports cropping before applying crop operations
|
|
128
|
+
const supportsCrop = engine.block.supportsCrop(videoBlock);
|
|
129
|
+
console.log('Block supports crop:', supportsCrop);
|
|
130
|
+
|
|
131
|
+
// Set content fill mode to 'Crop' for manual crop control
|
|
132
|
+
// This enables the crop transform APIs to take effect
|
|
133
|
+
engine.block.setContentFillMode(videoBlock, 'Crop');
|
|
134
|
+
|
|
135
|
+
// Scale the video content within its frame using uniform scale ratio
|
|
136
|
+
// Values greater than 1.0 zoom in, values less than 1.0 zoom out
|
|
137
|
+
engine.block.setCropScaleRatio(videoBlock, 1.1);
|
|
138
|
+
|
|
139
|
+
// Pan the video content within the crop frame
|
|
140
|
+
// Translation values are percentages of the crop frame dimensions
|
|
141
|
+
// Positive X moves content right, positive Y moves content down
|
|
142
|
+
engine.block.setCropTranslationX(videoBlock, 0.0);
|
|
143
|
+
engine.block.setCropTranslationY(videoBlock, 0.0);
|
|
144
|
+
|
|
145
|
+
// Rotate the video content within its frame
|
|
146
|
+
// Rotation is specified in radians (Math.PI = 180 degrees)
|
|
147
|
+
engine.block.setCropRotation(videoBlock, Math.PI / 90); // 2 degrees
|
|
148
|
+
|
|
149
|
+
// Retrieve the current crop state
|
|
150
|
+
const scaleRatio = engine.block.getCropScaleRatio(videoBlock);
|
|
151
|
+
const translationX = engine.block.getCropTranslationX(videoBlock);
|
|
152
|
+
const translationY = engine.block.getCropTranslationY(videoBlock);
|
|
153
|
+
const rotation = engine.block.getCropRotation(videoBlock);
|
|
154
|
+
|
|
155
|
+
console.log('Crop scale ratio:', scaleRatio);
|
|
156
|
+
console.log('Crop translation X:', translationX);
|
|
157
|
+
console.log('Crop translation Y:', translationY);
|
|
158
|
+
console.log('Crop rotation (radians):', rotation);
|
|
159
|
+
|
|
160
|
+
// Adjust crop to ensure content fills the frame without letterboxing
|
|
161
|
+
// The minScaleRatio parameter sets the minimum allowed scale
|
|
162
|
+
// This corrects any black bars caused by rotation or translation
|
|
163
|
+
engine.block.adjustCropToFillFrame(videoBlock, 1.1);
|
|
164
|
+
const finalScale = engine.block.getCropScaleRatio(videoBlock);
|
|
165
|
+
console.log('Adjusted scale ratio:', finalScale);
|
|
166
|
+
|
|
167
|
+
// Flip the video content within its crop frame
|
|
168
|
+
// This flips the content, not the entire block
|
|
169
|
+
engine.block.flipCropHorizontal(videoBlock);
|
|
170
|
+
|
|
171
|
+
// Lock the crop aspect ratio during interactive editing
|
|
172
|
+
// When locked, crop handles maintain the current aspect ratio
|
|
173
|
+
engine.block.setCropAspectRatioLocked(videoBlock, true);
|
|
174
|
+
const isLocked = engine.block.isCropAspectRatioLocked(videoBlock);
|
|
175
|
+
console.log('Crop aspect ratio locked:', isLocked);
|
|
176
|
+
|
|
177
|
+
// Reset crop to default state (removes all crop transformations)
|
|
178
|
+
engine.block.resetCrop(videoBlock);
|
|
179
|
+
// Re-apply a subtle zoom to demonstrate crop is working
|
|
180
|
+
engine.block.setCropScaleRatio(videoBlock, 1.05);
|
|
181
|
+
|
|
182
|
+
// Select the video block to show it in the UI
|
|
183
|
+
engine.block.select(videoBlock);
|
|
184
|
+
|
|
185
|
+
// Set playback time to show video content
|
|
186
|
+
engine.block.setPlaybackTime(page, 2.0);
|
|
187
|
+
|
|
188
|
+
// Zoom to the video block for better visibility of the crop effect
|
|
189
|
+
cesdk.engine.scene.zoomToBlock(videoBlock, {
|
|
190
|
+
padding: { left: 0.5, top: 0.5, right: 0.5, bottom: 0.8 }
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
export default Example;
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
This guide covers programmatic video cropping using scale, translation, and rotation transforms, checking crop support, adjusting crop to fill frames, flipping content, and locking aspect ratios.
|
|
199
|
+
|
|
200
|
+
## Check Crop Support
|
|
201
|
+
|
|
202
|
+
Before applying crop operations, verify the block supports cropping using `engine.block.supportsCrop()`. Video blocks with fills support cropping:
|
|
203
|
+
|
|
204
|
+
```typescript highlight-check-crop-support
|
|
205
|
+
// Verify the block supports cropping before applying crop operations
|
|
206
|
+
const supportsCrop = engine.block.supportsCrop(videoBlock);
|
|
207
|
+
console.log('Block supports crop:', supportsCrop);
|
|
208
|
+
|
|
209
|
+
// Set content fill mode to 'Crop' for manual crop control
|
|
210
|
+
// This enables the crop transform APIs to take effect
|
|
211
|
+
engine.block.setContentFillMode(videoBlock, 'Crop');
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
## Scale Crop
|
|
215
|
+
|
|
216
|
+
Scale the video content within its frame using `engine.block.setCropScaleRatio()`. Values greater than 1.0 zoom in, values less than 1.0 zoom out. This applies a uniform scale to both axes:
|
|
217
|
+
|
|
218
|
+
```typescript highlight-scale-crop
|
|
219
|
+
// Scale the video content within its frame using uniform scale ratio
|
|
220
|
+
// Values greater than 1.0 zoom in, values less than 1.0 zoom out
|
|
221
|
+
engine.block.setCropScaleRatio(videoBlock, 1.1);
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
## Translate Crop
|
|
225
|
+
|
|
226
|
+
Pan the video content within the crop frame using `engine.block.setCropTranslationX()` and `engine.block.setCropTranslationY()`. Translation values are percentages of the crop frame dimensions. Positive X moves content right, positive Y moves content down:
|
|
227
|
+
|
|
228
|
+
```typescript highlight-translate-crop
|
|
229
|
+
// Pan the video content within the crop frame
|
|
230
|
+
// Translation values are percentages of the crop frame dimensions
|
|
231
|
+
// Positive X moves content right, positive Y moves content down
|
|
232
|
+
engine.block.setCropTranslationX(videoBlock, 0.0);
|
|
233
|
+
engine.block.setCropTranslationY(videoBlock, 0.0);
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
## Rotate Crop
|
|
237
|
+
|
|
238
|
+
Rotate the video content within its frame using `engine.block.setCropRotation()`. Rotation is specified in radians where `Math.PI` equals 180 degrees:
|
|
239
|
+
|
|
240
|
+
```typescript highlight-rotate-crop
|
|
241
|
+
// Rotate the video content within its frame
|
|
242
|
+
// Rotation is specified in radians (Math.PI = 180 degrees)
|
|
243
|
+
engine.block.setCropRotation(videoBlock, Math.PI / 90); // 2 degrees
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
## Get Crop Values
|
|
247
|
+
|
|
248
|
+
Retrieve the current crop state to read or restore crop settings using getter methods:
|
|
249
|
+
|
|
250
|
+
```typescript highlight-get-crop-values
|
|
251
|
+
// Retrieve the current crop state
|
|
252
|
+
const scaleRatio = engine.block.getCropScaleRatio(videoBlock);
|
|
253
|
+
const translationX = engine.block.getCropTranslationX(videoBlock);
|
|
254
|
+
const translationY = engine.block.getCropTranslationY(videoBlock);
|
|
255
|
+
const rotation = engine.block.getCropRotation(videoBlock);
|
|
256
|
+
|
|
257
|
+
console.log('Crop scale ratio:', scaleRatio);
|
|
258
|
+
console.log('Crop translation X:', translationX);
|
|
259
|
+
console.log('Crop translation Y:', translationY);
|
|
260
|
+
console.log('Crop rotation (radians):', rotation);
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
## Fill Frame
|
|
264
|
+
|
|
265
|
+
Adjust the crop to ensure content fills the frame without letterboxing using `engine.block.adjustCropToFillFrame()`. The `minScaleRatio` parameter sets the minimum allowed scale:
|
|
266
|
+
|
|
267
|
+
```typescript highlight-fill-frame
|
|
268
|
+
// Adjust crop to ensure content fills the frame without letterboxing
|
|
269
|
+
// The minScaleRatio parameter sets the minimum allowed scale
|
|
270
|
+
// This corrects any black bars caused by rotation or translation
|
|
271
|
+
engine.block.adjustCropToFillFrame(videoBlock, 1.1);
|
|
272
|
+
const finalScale = engine.block.getCropScaleRatio(videoBlock);
|
|
273
|
+
console.log('Adjusted scale ratio:', finalScale);
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
This is useful after applying translations or rotations that might reveal empty areas.
|
|
277
|
+
|
|
278
|
+
## Flip Crop
|
|
279
|
+
|
|
280
|
+
Flip the video content horizontally or vertically within its crop frame using `engine.block.flipCropHorizontal()` or `engine.block.flipCropVertical()`. This flips the content, not the block itself:
|
|
281
|
+
|
|
282
|
+
```typescript highlight-flip-crop
|
|
283
|
+
// Flip the video content within its crop frame
|
|
284
|
+
// This flips the content, not the entire block
|
|
285
|
+
engine.block.flipCropHorizontal(videoBlock);
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
## Lock Aspect Ratio
|
|
289
|
+
|
|
290
|
+
Lock the crop aspect ratio during interactive editing using `engine.block.setCropAspectRatioLocked()`. When locked, crop handles maintain the current aspect ratio:
|
|
291
|
+
|
|
292
|
+
```typescript highlight-lock-aspect-ratio
|
|
293
|
+
// Lock the crop aspect ratio during interactive editing
|
|
294
|
+
// When locked, crop handles maintain the current aspect ratio
|
|
295
|
+
engine.block.setCropAspectRatioLocked(videoBlock, true);
|
|
296
|
+
const isLocked = engine.block.isCropAspectRatioLocked(videoBlock);
|
|
297
|
+
console.log('Crop aspect ratio locked:', isLocked);
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
## Reset Crop
|
|
301
|
+
|
|
302
|
+
Reset all crop transformations to their default state using `engine.block.resetCrop()`:
|
|
303
|
+
|
|
304
|
+
```typescript highlight-reset-crop
|
|
305
|
+
// Reset crop to default state (removes all crop transformations)
|
|
306
|
+
engine.block.resetCrop(videoBlock);
|
|
307
|
+
// Re-apply a subtle zoom to demonstrate crop is working
|
|
308
|
+
engine.block.setCropScaleRatio(videoBlock, 1.05);
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
## Coordinate System
|
|
312
|
+
|
|
313
|
+
Crop transforms use normalized values:
|
|
314
|
+
|
|
315
|
+
| Property | Value Type | Description |
|
|
316
|
+
| ----------- | ------------------- | ------------------------------------------------ |
|
|
317
|
+
| Scale | Float (0.0+) | 1.0 is original size, 2.0 is double, 0.5 is half |
|
|
318
|
+
| Translation | Float (-1.0 to 1.0) | Percentage of frame dimensions |
|
|
319
|
+
| Rotation | Float (radians) | Math.PI = 180°, Math.PI/2 = 90° |
|
|
320
|
+
|
|
321
|
+
All crop values are independent of canvas zoom level or timeline duration.
|
|
322
|
+
|
|
323
|
+
## Combining with Other Transforms
|
|
324
|
+
|
|
325
|
+
You can combine crop operations with other block transforms like position, rotation, and scale. The crop transforms affect the content within the block, while block transforms affect the block itself on the canvas:
|
|
326
|
+
|
|
327
|
+
```typescript
|
|
328
|
+
// Crop the content (scales/pans the video within its frame)
|
|
329
|
+
engine.block.setCropScaleRatio(videoBlock, 1.5);
|
|
330
|
+
engine.block.setCropRotation(videoBlock, Math.PI / 12);
|
|
331
|
+
|
|
332
|
+
// Transform the block itself (moves/rotates the entire block on canvas)
|
|
333
|
+
engine.block.setRotation(videoBlock, Math.PI / 6);
|
|
334
|
+
engine.block.setWidth(videoBlock, 800);
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
## Troubleshooting
|
|
338
|
+
|
|
339
|
+
### Crop Functions Not Working
|
|
340
|
+
|
|
341
|
+
Check if the block supports cropping using `engine.block.supportsCrop()`. Ensure the block has a fill that supports cropping (video, image fills).
|
|
342
|
+
|
|
343
|
+
### Black Bars After Scaling
|
|
344
|
+
|
|
345
|
+
Call `engine.block.adjustCropToFillFrame()` or increase the scale ratio so content fully covers the block frame.
|
|
346
|
+
|
|
347
|
+
### Unexpected Crop Behavior
|
|
348
|
+
|
|
349
|
+
Verify you're operating on the correct block ID. Check that the video resource has loaded using `engine.block.forceLoadAVResource()` before applying crop transforms.
|
|
350
|
+
|
|
351
|
+
## API Reference
|
|
352
|
+
|
|
353
|
+
| Method | Description |
|
|
354
|
+
| ----------------------------------------- | -------------------------------- |
|
|
355
|
+
| `engine.block.supportsCrop()` | Check if block supports cropping |
|
|
356
|
+
| `engine.block.setCropScaleRatio()` | Set uniform scale ratio |
|
|
357
|
+
| `engine.block.setCropScaleX()` | Set horizontal scale |
|
|
358
|
+
| `engine.block.setCropScaleY()` | Set vertical scale |
|
|
359
|
+
| `engine.block.setCropTranslationX()` | Set horizontal pan |
|
|
360
|
+
| `engine.block.setCropTranslationY()` | Set vertical pan |
|
|
361
|
+
| `engine.block.setCropRotation()` | Set rotation in radians |
|
|
362
|
+
| `engine.block.getCropScaleRatio()` | Get current scale ratio |
|
|
363
|
+
| `engine.block.getCropTranslationX()` | Get horizontal translation |
|
|
364
|
+
| `engine.block.getCropTranslationY()` | Get vertical translation |
|
|
365
|
+
| `engine.block.getCropRotation()` | Get rotation value |
|
|
366
|
+
| `engine.block.adjustCropToFillFrame()` | Auto-adjust to fill frame |
|
|
367
|
+
| `engine.block.flipCropHorizontal()` | Flip content horizontally |
|
|
368
|
+
| `engine.block.flipCropVertical()` | Flip content vertically |
|
|
369
|
+
| `engine.block.setCropAspectRatioLocked()` | Lock/unlock aspect ratio |
|
|
370
|
+
| `engine.block.isCropAspectRatioLocked()` | Check if aspect ratio locked |
|
|
371
|
+
| `engine.block.resetCrop()` | Reset all crop transforms |
|
|
372
|
+
|
|
373
|
+
---
|
|
374
|
+
|
|
375
|
+
## More Resources
|
|
376
|
+
|
|
377
|
+
- **[Vanilla JS/TS Documentation Index](https://img.ly/docs/cesdk/js.md)** - Browse all Vanilla JS/TS documentation
|
|
378
|
+
- **[Complete Documentation](./llms-full.txt.md)** - Full documentation in one file (for LLMs)
|
|
379
|
+
- **[Web Documentation](./js.md)** - Interactive documentation with examples
|
|
380
|
+
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
|
|
@@ -0,0 +1,182 @@
|
|
|
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) > [Transform](./edit-video/transform.md) > [Flip](./edit-video/transform/flip.md)
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Use **CE.SDK** to **mirror video clips** horizontally or vertically in your web app. Flip videos to create mirror effects and symmetrical designs using the same API calls to the image-flipping workflow.
|
|
8
|
+
|
|
9
|
+
## What You’ll Learn
|
|
10
|
+
|
|
11
|
+
- Flip a video clip **horizontally or vertically**.
|
|
12
|
+
- Use flipping in template or timeline **workflows**.
|
|
13
|
+
- **Reset** or toggle a flip using JavaScript.
|
|
14
|
+
|
|
15
|
+
## When to Use
|
|
16
|
+
|
|
17
|
+
Flipping is useful when you need to:
|
|
18
|
+
|
|
19
|
+
- Create:
|
|
20
|
+
- **Symmetrical** video layouts
|
|
21
|
+
- Animated **collages**
|
|
22
|
+
- Align **eyelines** when switching between front and rear cameras.
|
|
23
|
+
- Keep **branded elements** facing inward on split-screen layouts.
|
|
24
|
+
|
|
25
|
+
## How to Flip Videos
|
|
26
|
+
|
|
27
|
+
The CreativeEditor represents each video clip as a **graphic** block with:
|
|
28
|
+
|
|
29
|
+
- Size
|
|
30
|
+
- Transforms
|
|
31
|
+
- Grouping
|
|
32
|
+
- A fill set to a _video_ asset
|
|
33
|
+
|
|
34
|
+
Use the Engine BlockAPI boolean helpers, common to videos and images.
|
|
35
|
+
|
|
36
|
+
### Flip Horizontally or Vertically
|
|
37
|
+
|
|
38
|
+
To flip a video:
|
|
39
|
+
|
|
40
|
+
1. Call the BlockAPI with `engine.block.SetFipHorizontal` or `engine.block.SetFipVertical`.
|
|
41
|
+
2. Specify the **block ID** to flip.
|
|
42
|
+
3. Set the boolean to `true`.
|
|
43
|
+
|
|
44
|
+
```ts
|
|
45
|
+
engine.block.setFlipHorizontal(videoBlock, true);
|
|
46
|
+
engine.block.setFlipVertical(videoBlock, true);
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
<Picture src={flipVideo} style={{ width: '85%' }} alt="Video flipped horizontally" formats={['webp']} />
|
|
50
|
+
|
|
51
|
+
### Query the Flip Status
|
|
52
|
+
|
|
53
|
+
To know if a video has already been flipped:
|
|
54
|
+
|
|
55
|
+
1. Declare a variable for each direction.
|
|
56
|
+
2. Call `engine.block.getFlip<Directions>`.
|
|
57
|
+
3. Specify the block ID.
|
|
58
|
+
|
|
59
|
+
```ts
|
|
60
|
+
const flippedH = engine.block.getFlipHorizontal(videoBlock);
|
|
61
|
+
const flippedV = engine.block.getFlipVertical(videoBlock);
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
The response is a boolean stating whether this specific block has already been flipped or not.
|
|
65
|
+
|
|
66
|
+
> **Note:** Flipping only affects the **visual track**. Audio (either embedded or separate) isn’t reversed, so **lip-sync and sound design stay intact**.
|
|
67
|
+
|
|
68
|
+
### Flip Clips Together
|
|
69
|
+
|
|
70
|
+
To simplify the process of rotating multiple blocks, instead of rotating each block individually, you can select and rotate a cluster of blocks simultaneously.
|
|
71
|
+
|
|
72
|
+
1. Declare a variable for the group of clips using `engine.block.group`.
|
|
73
|
+
2. Specify each clip to include in the group by its block ID.
|
|
74
|
+
3. Apply the flip to the group variable.
|
|
75
|
+
|
|
76
|
+
For example, to flip three clips together:
|
|
77
|
+
|
|
78
|
+
```ts
|
|
79
|
+
const groupId = await engine.block.group([clipId1, clipId2, clipId3]);
|
|
80
|
+
engine.block.setFlipVertical(groupId, true);
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
<Picture src={flipGroup} style={{ width: '85%' }} alt="Grouped video flipped horizontally" formats={['webp']} />
|
|
84
|
+
|
|
85
|
+
When you flip the group:
|
|
86
|
+
|
|
87
|
+
- The flip mirrors everything at once.
|
|
88
|
+
- Each clip keeps the same **spacing and order** inside the group.
|
|
89
|
+
|
|
90
|
+
## Restore or Manage Flip States
|
|
91
|
+
|
|
92
|
+
The CE.SDK provides ways to reset or toggle a flip. You can either:
|
|
93
|
+
|
|
94
|
+
- **Reset:** when you want to restore a clip to its original orientation.
|
|
95
|
+
- **Code a toggle:** when you need a quick way to switch the current flip state on and off.
|
|
96
|
+
|
|
97
|
+
### Reset a Flip
|
|
98
|
+
|
|
99
|
+
To reset a clip to its default orientation:
|
|
100
|
+
|
|
101
|
+
1. Call `setFlip<Directions>`.
|
|
102
|
+
2. Specify the clip’s block ID.
|
|
103
|
+
3. Set the boolean to `false`.
|
|
104
|
+
|
|
105
|
+
For example, to reset a horizontal flip, use the following code:
|
|
106
|
+
|
|
107
|
+
```ts
|
|
108
|
+
engine.block.setFlipHorizontal(videoBlock, false);
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
### Switch Flip on or Off
|
|
112
|
+
|
|
113
|
+
Calling the same flip twice:
|
|
114
|
+
|
|
115
|
+
- **Doesn't** revert to the original orientation.
|
|
116
|
+
- Issues two flips in the same direction.
|
|
117
|
+
- Leaves the clip mirrored.
|
|
118
|
+
|
|
119
|
+
To “toggle” the flip in your code:
|
|
120
|
+
|
|
121
|
+
1. Check if a specific clip is flipped.
|
|
122
|
+
2. Store the value in a variable (for example, `isFlipped`).
|
|
123
|
+
3. Set the opposite of that value in a new `setFlip<Directions>`function.
|
|
124
|
+
|
|
125
|
+
For example:
|
|
126
|
+
|
|
127
|
+
```ts
|
|
128
|
+
const isFlipped = await engine.block.getFlipHorizontal(videoBlock);
|
|
129
|
+
engine.block.setFlipHorizontal(videoBlock, !isFlipped);
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
In the preceding code, the two actions are possible depending on the value stored in `isFlipped`:
|
|
133
|
+
|
|
134
|
+
- `true`: `!isFlipped` sets the horizontal flip to `false`.
|
|
135
|
+
- `false`: `!isFlipped` sets the horizontal flip to `true`.
|
|
136
|
+
|
|
137
|
+
You can add a toggle button to your custom UI to let users **quickly test flipping a video horizontally**.
|
|
138
|
+
|
|
139
|
+
## Lock or Constrain Flipping
|
|
140
|
+
|
|
141
|
+
CE.SDK provides a way to prevent editors from flipping a video. This can be useful to:
|
|
142
|
+
|
|
143
|
+
- Avoid accidentally mirroring text.
|
|
144
|
+
- Protect UI mock-ups or frames that must stay in a fixed position.
|
|
145
|
+
- Keep templates brand-locked.
|
|
146
|
+
|
|
147
|
+
To deactivate flipping, use `setScopeEnabled` with:
|
|
148
|
+
|
|
149
|
+
- The `"layer/flip"` key
|
|
150
|
+
- The boolean set to `false`
|
|
151
|
+
|
|
152
|
+
```ts
|
|
153
|
+
engine.block.setScopeEnabled(videoBlock, 'layer/flip', false);
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
## Troubleshooting
|
|
157
|
+
|
|
158
|
+
| Issue | Solution |
|
|
159
|
+
| ---------------------------------------------- | ------------------------------------------------------------------------- |
|
|
160
|
+
| ❌ Clip appears flipped, but playback is blank | ✅ Make sure the video file has finished loading before applying the flip |
|
|
161
|
+
| ❌ Flip seems ignored | ✅ Check whether the parent group is already flipped (flips are relative) |
|
|
162
|
+
| ❌ Users can still flip in UI | ✅ Turn off the `"layer/flip"` scope or lock transforms in the template |
|
|
163
|
+
|
|
164
|
+
## API Reference Summary
|
|
165
|
+
|
|
166
|
+
| BlockAPI `engine.block.<>` | Purpose |
|
|
167
|
+
| ------------------------------------------------- | ------------------------------------------------------------- |
|
|
168
|
+
| `setFlipHorizontal(blockId, boolean)` | Mirror a block left/right or restore the default orientation. |
|
|
169
|
+
| `setFlipVertical(blockId, boolean)` | Mirror a block top/bottom or restore the default orientation. |
|
|
170
|
+
| `getFlipHorizontal(blockId)` | Check whether the block is currently flipped horizontally. |
|
|
171
|
+
| `getFlipVertical(blockId)` | Check whether the block is currently flipped vertically. |
|
|
172
|
+
| `group(blockIds[])` | Group blocks so they can be flipped together. |
|
|
173
|
+
| `setScopeEnabled(blockId, "layer/flip", boolean)` | Activate or deactivate flip controls to lock orientation. |
|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
## More Resources
|
|
178
|
+
|
|
179
|
+
- **[Vanilla JS/TS Documentation Index](https://img.ly/docs/cesdk/js.md)** - Browse all Vanilla JS/TS documentation
|
|
180
|
+
- **[Complete Documentation](./llms-full.txt.md)** - Full documentation in one file (for LLMs)
|
|
181
|
+
- **[Web Documentation](./js.md)** - Interactive documentation with examples
|
|
182
|
+
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
|