@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,544 @@
|
|
|
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) > [Redaction](./edit-video/redaction.md)
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Redact sensitive video content using blur, pixelization, or solid overlays for privacy protection.
|
|
8
|
+
|
|
9
|
+

|
|
10
|
+
|
|
11
|
+
> **Reading time:** 15 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-redaction-browser)
|
|
17
|
+
> - [Open in StackBlitz](https://stackblitz.com/github/imgly/cesdk-web-examples/tree/v$UBQ_VERSION$/guides-create-video-redaction-browser)
|
|
18
|
+
> - [Live demo](https://img.ly/docs/cesdk/examples/guides-create-video-redaction-browser/)
|
|
19
|
+
|
|
20
|
+
CE.SDK applies effects to blocks themselves, not as overlays affecting content beneath. This means redaction involves applying effects directly to the block for complete obscuration. Four techniques cover most privacy scenarios: full-block blur, radial blur, pixelization, and solid overlays.
|
|
21
|
+
|
|
22
|
+
```typescript file=@cesdk_web_examples/guides-create-video-redaction-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
|
+
// Video URLs for demonstrating different redaction scenarios
|
|
45
|
+
const VIDEOS = {
|
|
46
|
+
surfer:
|
|
47
|
+
'https://cdn.img.ly/assets/demo/v3/ly.img.video/videos/pexels-drone-footage-of-a-surfer-barrelling-a-wave-12715991.mp4',
|
|
48
|
+
lifestyle1:
|
|
49
|
+
'https://cdn.img.ly/assets/demo/v3/ly.img.video/videos/pexels-taryn-elliott-7108793.mp4',
|
|
50
|
+
lifestyle2:
|
|
51
|
+
'https://cdn.img.ly/assets/demo/v3/ly.img.video/videos/pexels-taryn-elliott-7108801.mp4',
|
|
52
|
+
nature1:
|
|
53
|
+
'https://cdn.img.ly/assets/demo/v3/ly.img.video/videos/pexels-taryn-elliott-8713109.mp4',
|
|
54
|
+
nature2:
|
|
55
|
+
'https://cdn.img.ly/assets/demo/v3/ly.img.video/videos/pexels-taryn-elliott-8713114.mp4'
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
// Labels for each redaction technique
|
|
59
|
+
const LABELS = [
|
|
60
|
+
'Radial Blur',
|
|
61
|
+
'Full-Block Blur',
|
|
62
|
+
'Pixelization',
|
|
63
|
+
'Solid Overlay',
|
|
64
|
+
'Time-Based'
|
|
65
|
+
];
|
|
66
|
+
|
|
67
|
+
// Duration for each video segment (in seconds)
|
|
68
|
+
const SEGMENT_DURATION = 5.0;
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* CE.SDK Plugin: Video Redaction Guide
|
|
72
|
+
*
|
|
73
|
+
* Demonstrates video redaction techniques in CE.SDK:
|
|
74
|
+
* - Full-block blur for complete video obscuration
|
|
75
|
+
* - Radial blur for circular redaction patterns
|
|
76
|
+
* - Pixelization for mosaic-style censoring
|
|
77
|
+
* - Solid overlays for complete blocking
|
|
78
|
+
* - Time-based redactions
|
|
79
|
+
*/
|
|
80
|
+
class Example implements EditorPlugin {
|
|
81
|
+
name = packageJson.name;
|
|
82
|
+
|
|
83
|
+
version = packageJson.version;
|
|
84
|
+
|
|
85
|
+
async initialize({ cesdk }: EditorPluginContext): Promise<void> {
|
|
86
|
+
if (!cesdk) {
|
|
87
|
+
throw new Error('CE.SDK instance is required for this plugin');
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
cesdk.feature.enable('ly.img.blur');
|
|
91
|
+
cesdk.feature.enable('ly.img.effect');
|
|
92
|
+
await cesdk.addPlugin(new VideoEditorConfig());
|
|
93
|
+
|
|
94
|
+
// Add asset source plugins
|
|
95
|
+
await cesdk.addPlugin(new BlurAssetSource());
|
|
96
|
+
await cesdk.addPlugin(new CaptionPresetsAssetSource());
|
|
97
|
+
await cesdk.addPlugin(new ColorPaletteAssetSource());
|
|
98
|
+
await cesdk.addPlugin(new CropPresetsAssetSource());
|
|
99
|
+
await cesdk.addPlugin(
|
|
100
|
+
new UploadAssetSources({
|
|
101
|
+
include: [
|
|
102
|
+
'ly.img.image.upload',
|
|
103
|
+
'ly.img.video.upload',
|
|
104
|
+
'ly.img.audio.upload'
|
|
105
|
+
]
|
|
106
|
+
})
|
|
107
|
+
);
|
|
108
|
+
await cesdk.addPlugin(
|
|
109
|
+
new DemoAssetSources({
|
|
110
|
+
include: [
|
|
111
|
+
'ly.img.templates.video.*',
|
|
112
|
+
'ly.img.image.*',
|
|
113
|
+
'ly.img.audio.*',
|
|
114
|
+
'ly.img.video.*'
|
|
115
|
+
]
|
|
116
|
+
})
|
|
117
|
+
);
|
|
118
|
+
await cesdk.addPlugin(new EffectsAssetSource());
|
|
119
|
+
await cesdk.addPlugin(new FiltersAssetSource());
|
|
120
|
+
await cesdk.addPlugin(
|
|
121
|
+
new PagePresetsAssetSource({
|
|
122
|
+
include: [
|
|
123
|
+
'ly.img.page.presets.instagram.*',
|
|
124
|
+
'ly.img.page.presets.facebook.*',
|
|
125
|
+
'ly.img.page.presets.x.*',
|
|
126
|
+
'ly.img.page.presets.linkedin.*',
|
|
127
|
+
'ly.img.page.presets.pinterest.*',
|
|
128
|
+
'ly.img.page.presets.tiktok.*',
|
|
129
|
+
'ly.img.page.presets.youtube.*',
|
|
130
|
+
'ly.img.page.presets.video.*'
|
|
131
|
+
]
|
|
132
|
+
})
|
|
133
|
+
);
|
|
134
|
+
await cesdk.addPlugin(new StickerAssetSource());
|
|
135
|
+
await cesdk.addPlugin(new TextAssetSource());
|
|
136
|
+
await cesdk.addPlugin(new TextComponentAssetSource());
|
|
137
|
+
await cesdk.addPlugin(new TypefaceAssetSource());
|
|
138
|
+
await cesdk.addPlugin(new VectorShapeAssetSource());
|
|
139
|
+
|
|
140
|
+
await cesdk.actions.run('scene.create', {
|
|
141
|
+
layout: 'DepthStack',
|
|
142
|
+
page: { width: 1920, height: 1080, unit: 'Pixel' }
|
|
143
|
+
});
|
|
144
|
+
|
|
145
|
+
const engine = cesdk.engine;
|
|
146
|
+
const scene = engine.scene.get();
|
|
147
|
+
const pages = engine.block.findByType('page');
|
|
148
|
+
const page = pages.length > 0 ? pages[0] : scene;
|
|
149
|
+
|
|
150
|
+
// Set 16:9 page dimensions (1920x1080)
|
|
151
|
+
const pageWidth = engine.block.getWidth(page);
|
|
152
|
+
const pageHeight = engine.block.getHeight(page);
|
|
153
|
+
|
|
154
|
+
// Load all videos simultaneously
|
|
155
|
+
const videoUrls = [
|
|
156
|
+
VIDEOS.nature2,
|
|
157
|
+
VIDEOS.surfer,
|
|
158
|
+
VIDEOS.lifestyle1,
|
|
159
|
+
VIDEOS.lifestyle2,
|
|
160
|
+
VIDEOS.nature1
|
|
161
|
+
];
|
|
162
|
+
|
|
163
|
+
const videos = await Promise.all(
|
|
164
|
+
videoUrls.map((url) => engine.block.addVideo(url, pageWidth, pageHeight))
|
|
165
|
+
);
|
|
166
|
+
|
|
167
|
+
const [
|
|
168
|
+
radialVideo,
|
|
169
|
+
fullBlurVideo,
|
|
170
|
+
pixelVideo, // Base video for overlay segment (overlay is created separately)
|
|
171
|
+
,
|
|
172
|
+
timedVideo
|
|
173
|
+
] = videos;
|
|
174
|
+
|
|
175
|
+
// Position all videos at origin (they'll play sequentially)
|
|
176
|
+
videos.forEach((video, index) => {
|
|
177
|
+
engine.block.setPositionX(video, 0);
|
|
178
|
+
engine.block.setPositionY(video, 0);
|
|
179
|
+
engine.block.setDuration(video, SEGMENT_DURATION);
|
|
180
|
+
engine.block.setTimeOffset(video, index * SEGMENT_DURATION);
|
|
181
|
+
engine.block.appendChild(page, video);
|
|
182
|
+
});
|
|
183
|
+
|
|
184
|
+
// Full-Block Blur: Apply blur to entire video
|
|
185
|
+
// Use this when the entire video content needs obscuring
|
|
186
|
+
|
|
187
|
+
// Check if the block supports blur
|
|
188
|
+
const supportsBlur = engine.block.supportsBlur(fullBlurVideo);
|
|
189
|
+
// eslint-disable-next-line no-console
|
|
190
|
+
console.log('Video supports blur:', supportsBlur);
|
|
191
|
+
|
|
192
|
+
// Create and apply uniform blur to entire video
|
|
193
|
+
const uniformBlur = engine.block.createBlur('uniform');
|
|
194
|
+
engine.block.setFloat(uniformBlur, 'blur/uniform/intensity', 0.7);
|
|
195
|
+
engine.block.setBlur(fullBlurVideo, uniformBlur);
|
|
196
|
+
engine.block.setBlurEnabled(fullBlurVideo, true);
|
|
197
|
+
|
|
198
|
+
// Pixelization: Apply mosaic effect for clearly intentional censoring
|
|
199
|
+
|
|
200
|
+
// Check if the block supports effects
|
|
201
|
+
if (engine.block.supportsEffects(pixelVideo)) {
|
|
202
|
+
// Create and apply pixelize effect
|
|
203
|
+
const pixelizeEffect = engine.block.createEffect('pixelize');
|
|
204
|
+
engine.block.setInt(
|
|
205
|
+
pixelizeEffect,
|
|
206
|
+
'effect/pixelize/horizontalPixelSize',
|
|
207
|
+
24
|
|
208
|
+
);
|
|
209
|
+
engine.block.setInt(
|
|
210
|
+
pixelizeEffect,
|
|
211
|
+
'effect/pixelize/verticalPixelSize',
|
|
212
|
+
24
|
|
213
|
+
);
|
|
214
|
+
engine.block.appendEffect(pixelVideo, pixelizeEffect);
|
|
215
|
+
engine.block.setEffectEnabled(pixelizeEffect, true);
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
// Solid Overlay: Create opaque shape for complete blocking
|
|
219
|
+
// Best for highly sensitive information like documents or credentials
|
|
220
|
+
|
|
221
|
+
// Create a solid rectangle overlay
|
|
222
|
+
const overlay = engine.block.create('//ly.img.ubq/graphic');
|
|
223
|
+
const rectShape = engine.block.createShape('//ly.img.ubq/shape/rect');
|
|
224
|
+
engine.block.setShape(overlay, rectShape);
|
|
225
|
+
|
|
226
|
+
// Create solid black fill
|
|
227
|
+
const solidFill = engine.block.createFill('//ly.img.ubq/fill/color');
|
|
228
|
+
engine.block.setColor(solidFill, 'fill/color/value', {
|
|
229
|
+
r: 0.1,
|
|
230
|
+
g: 0.1,
|
|
231
|
+
b: 0.1,
|
|
232
|
+
a: 1.0
|
|
233
|
+
});
|
|
234
|
+
engine.block.setFill(overlay, solidFill);
|
|
235
|
+
|
|
236
|
+
// Position and size the overlay
|
|
237
|
+
engine.block.setWidth(overlay, pageWidth * 0.4);
|
|
238
|
+
engine.block.setHeight(overlay, pageHeight * 0.3);
|
|
239
|
+
engine.block.setPositionX(overlay, pageWidth * 0.55);
|
|
240
|
+
engine.block.setPositionY(overlay, pageHeight * 0.65);
|
|
241
|
+
engine.block.appendChild(page, overlay);
|
|
242
|
+
engine.block.setTimeOffset(overlay, 3 * SEGMENT_DURATION);
|
|
243
|
+
engine.block.setDuration(overlay, SEGMENT_DURATION);
|
|
244
|
+
|
|
245
|
+
// Time-Based Redaction: Redaction appears only during specific time range
|
|
246
|
+
|
|
247
|
+
// Apply blur to the video
|
|
248
|
+
const timedBlur = engine.block.createBlur('uniform');
|
|
249
|
+
engine.block.setFloat(timedBlur, 'blur/uniform/intensity', 0.9);
|
|
250
|
+
engine.block.setBlur(timedVideo, timedBlur);
|
|
251
|
+
engine.block.setBlurEnabled(timedVideo, true);
|
|
252
|
+
|
|
253
|
+
// The video is already timed to appear at a specific offset (set earlier)
|
|
254
|
+
// You can adjust timeOffset and duration to control when redaction is visible
|
|
255
|
+
engine.block.setTimeOffset(timedVideo, 4 * SEGMENT_DURATION);
|
|
256
|
+
engine.block.setDuration(timedVideo, SEGMENT_DURATION);
|
|
257
|
+
|
|
258
|
+
// Radial Blur: Use radial blur for face-like regions
|
|
259
|
+
|
|
260
|
+
// Apply radial blur for circular redaction effect
|
|
261
|
+
const radialBlur = engine.block.createBlur('radial');
|
|
262
|
+
engine.block.setFloat(radialBlur, 'blur/radial/blurRadius', 50);
|
|
263
|
+
engine.block.setFloat(radialBlur, 'blur/radial/radius', 25);
|
|
264
|
+
engine.block.setFloat(radialBlur, 'blur/radial/gradientRadius', 35);
|
|
265
|
+
engine.block.setFloat(radialBlur, 'blur/radial/x', 0.5);
|
|
266
|
+
engine.block.setFloat(radialBlur, 'blur/radial/y', 0.45);
|
|
267
|
+
engine.block.setBlur(radialVideo, radialBlur);
|
|
268
|
+
engine.block.setBlurEnabled(radialVideo, true);
|
|
269
|
+
|
|
270
|
+
// Add text labels for each video segment (positioned top-right)
|
|
271
|
+
const labelWidth = 400;
|
|
272
|
+
const labelHeight = 60;
|
|
273
|
+
const labelPadding = 20;
|
|
274
|
+
const labelMargin = 30;
|
|
275
|
+
|
|
276
|
+
videos.forEach((_, index) => {
|
|
277
|
+
const label = LABELS[index];
|
|
278
|
+
|
|
279
|
+
// Add background first (so it's behind text)
|
|
280
|
+
const labelBg = engine.block.create('//ly.img.ubq/graphic');
|
|
281
|
+
const labelBgShape = engine.block.createShape('//ly.img.ubq/shape/rect');
|
|
282
|
+
engine.block.setShape(labelBg, labelBgShape);
|
|
283
|
+
|
|
284
|
+
const labelBgFill = engine.block.createFill('//ly.img.ubq/fill/color');
|
|
285
|
+
engine.block.setColor(labelBgFill, 'fill/color/value', {
|
|
286
|
+
r: 0.0,
|
|
287
|
+
g: 0.0,
|
|
288
|
+
b: 0.0,
|
|
289
|
+
a: 0.8
|
|
290
|
+
});
|
|
291
|
+
engine.block.setFill(labelBg, labelBgFill);
|
|
292
|
+
|
|
293
|
+
engine.block.setWidth(labelBg, labelWidth);
|
|
294
|
+
engine.block.setHeight(labelBg, labelHeight + labelPadding);
|
|
295
|
+
engine.block.setPositionX(labelBg, pageWidth - labelWidth - labelMargin);
|
|
296
|
+
engine.block.setPositionY(labelBg, labelMargin);
|
|
297
|
+
engine.block.setTimeOffset(labelBg, index * SEGMENT_DURATION);
|
|
298
|
+
engine.block.setDuration(labelBg, SEGMENT_DURATION);
|
|
299
|
+
engine.block.appendChild(page, labelBg);
|
|
300
|
+
|
|
301
|
+
// Create text block for label
|
|
302
|
+
const textBlock = engine.block.create('//ly.img.ubq/text');
|
|
303
|
+
engine.block.setString(textBlock, 'text/text', label);
|
|
304
|
+
engine.block.setFloat(textBlock, 'text/fontSize', 48);
|
|
305
|
+
engine.block.setEnum(textBlock, 'text/horizontalAlignment', 'Center');
|
|
306
|
+
engine.block.setEnum(textBlock, 'text/verticalAlignment', 'Center');
|
|
307
|
+
|
|
308
|
+
// Set white text color
|
|
309
|
+
engine.block.setTextColor(textBlock, { r: 1.0, g: 1.0, b: 1.0, a: 1.0 });
|
|
310
|
+
|
|
311
|
+
// Position label at top right
|
|
312
|
+
engine.block.setWidth(textBlock, labelWidth);
|
|
313
|
+
engine.block.setHeight(textBlock, labelHeight);
|
|
314
|
+
engine.block.setPositionX(
|
|
315
|
+
textBlock,
|
|
316
|
+
pageWidth - labelWidth - labelMargin
|
|
317
|
+
);
|
|
318
|
+
engine.block.setPositionY(textBlock, labelMargin + labelPadding / 2);
|
|
319
|
+
engine.block.setTimeOffset(textBlock, index * SEGMENT_DURATION);
|
|
320
|
+
engine.block.setDuration(textBlock, SEGMENT_DURATION);
|
|
321
|
+
|
|
322
|
+
engine.block.appendChild(page, textBlock);
|
|
323
|
+
});
|
|
324
|
+
|
|
325
|
+
// Enable auto-fit to keep page in view
|
|
326
|
+
cesdk.engine.scene.enableZoomAutoFit(page, 'Both', 40, 40, 40, 40);
|
|
327
|
+
|
|
328
|
+
// Select first video to show timeline controls
|
|
329
|
+
engine.block.select(fullBlurVideo);
|
|
330
|
+
|
|
331
|
+
// eslint-disable-next-line no-console
|
|
332
|
+
console.log(
|
|
333
|
+
'Video redaction guide initialized. Videos play sequentially - press play to see each redaction technique.'
|
|
334
|
+
);
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
export default Example;
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
This guide covers how to use the built-in UI for blur and pixelization effects, and how to apply redaction programmatically using blur, pixelization, solid overlays, and time-based controls.
|
|
342
|
+
|
|
343
|
+
## Understanding Redaction in CE.SDK
|
|
344
|
+
|
|
345
|
+
### How Effects Work
|
|
346
|
+
|
|
347
|
+
Effects in CE.SDK modify the block's appearance directly rather than creating transparent overlays that affect content beneath. When you blur a video block, the entire block becomes blurred—not just a region on top of the video.
|
|
348
|
+
|
|
349
|
+
### Choosing a Redaction Technique
|
|
350
|
+
|
|
351
|
+
Select your technique based on privacy requirements and visual impact:
|
|
352
|
+
|
|
353
|
+
- **Full-block blur**: Complete obscuration for backgrounds or placeholder content
|
|
354
|
+
- **Radial blur**: Circular blur patterns ideal for face-like regions
|
|
355
|
+
- **Pixelization**: Clearly intentional censoring that's faster to render than heavy blur
|
|
356
|
+
- **Solid overlays**: Complete blocking for highly sensitive information like documents or credentials
|
|
357
|
+
|
|
358
|
+
## Using the Built-in UI
|
|
359
|
+
|
|
360
|
+
### Accessing Blur Controls
|
|
361
|
+
|
|
362
|
+
When you select a video block, the inspector panel provides access to blur settings. Navigate to the blur section to find controls for different blur types including uniform, radial, linear, and mirrored.
|
|
363
|
+
|
|
364
|
+
The uniform blur applies consistent intensity across the entire block. Adjust the intensity slider to control how strongly the content is obscured. Higher values create stronger privacy protection but may affect visual quality.
|
|
365
|
+
|
|
366
|
+
### Accessing Pixelization Controls
|
|
367
|
+
|
|
368
|
+
The effects panel contains pixelization settings. Select your video block, open the effects section, and add a pixelize effect. Configure the horizontal and vertical pixel sizes to control the mosaic block dimensions.
|
|
369
|
+
|
|
370
|
+
Larger pixel sizes create stronger obscuration but are more visually disruptive. Values between 15-30 pixels work well for standard redaction scenarios.
|
|
371
|
+
|
|
372
|
+
## Programmatic Redaction
|
|
373
|
+
|
|
374
|
+
### Full-Block Blur
|
|
375
|
+
|
|
376
|
+
When the entire video needs obscuring, apply blur directly to the original block without duplication. This approach works well for background content or privacy placeholders.
|
|
377
|
+
|
|
378
|
+
```typescript highlight-full-block-blur
|
|
379
|
+
// Check if the block supports blur
|
|
380
|
+
const supportsBlur = engine.block.supportsBlur(fullBlurVideo);
|
|
381
|
+
// eslint-disable-next-line no-console
|
|
382
|
+
console.log('Video supports blur:', supportsBlur);
|
|
383
|
+
|
|
384
|
+
// Create and apply uniform blur to entire video
|
|
385
|
+
const uniformBlur = engine.block.createBlur('uniform');
|
|
386
|
+
engine.block.setFloat(uniformBlur, 'blur/uniform/intensity', 0.7);
|
|
387
|
+
engine.block.setBlur(fullBlurVideo, uniformBlur);
|
|
388
|
+
engine.block.setBlurEnabled(fullBlurVideo, true);
|
|
389
|
+
```
|
|
390
|
+
|
|
391
|
+
We first check that the block supports blur with `supportsBlur()`. Then we create a uniform blur, configure its intensity, attach it to the video block with `setBlur()`, and enable it with `setBlurEnabled()`. The intensity value ranges from 0.0 to 1.0, where higher values create stronger blur.
|
|
392
|
+
|
|
393
|
+
### Pixelization
|
|
394
|
+
|
|
395
|
+
Pixelization creates a mosaic effect that's clearly intentional and renders faster than heavy blur. We use the effect system rather than the blur system for pixelization.
|
|
396
|
+
|
|
397
|
+
```typescript highlight-pixelization
|
|
398
|
+
// Check if the block supports effects
|
|
399
|
+
if (engine.block.supportsEffects(pixelVideo)) {
|
|
400
|
+
// Create and apply pixelize effect
|
|
401
|
+
const pixelizeEffect = engine.block.createEffect('pixelize');
|
|
402
|
+
engine.block.setInt(
|
|
403
|
+
pixelizeEffect,
|
|
404
|
+
'effect/pixelize/horizontalPixelSize',
|
|
405
|
+
24
|
|
406
|
+
);
|
|
407
|
+
engine.block.setInt(pixelizeEffect, 'effect/pixelize/verticalPixelSize', 24);
|
|
408
|
+
engine.block.appendEffect(pixelVideo, pixelizeEffect);
|
|
409
|
+
engine.block.setEffectEnabled(pixelizeEffect, true);
|
|
410
|
+
}
|
|
411
|
+
```
|
|
412
|
+
|
|
413
|
+
We check `supportsEffects()` before creating the pixelize effect. The horizontal and vertical pixel sizes control the mosaic block dimensions—larger values create stronger obscuration.
|
|
414
|
+
|
|
415
|
+
### Solid Overlays
|
|
416
|
+
|
|
417
|
+
For complete blocking without any visual hint of the underlying content, create an opaque shape overlay. This approach doesn't require block duplication.
|
|
418
|
+
|
|
419
|
+
```typescript highlight-solid-overlay
|
|
420
|
+
// Create a solid rectangle overlay
|
|
421
|
+
const overlay = engine.block.create('//ly.img.ubq/graphic');
|
|
422
|
+
const rectShape = engine.block.createShape('//ly.img.ubq/shape/rect');
|
|
423
|
+
engine.block.setShape(overlay, rectShape);
|
|
424
|
+
|
|
425
|
+
// Create solid black fill
|
|
426
|
+
const solidFill = engine.block.createFill('//ly.img.ubq/fill/color');
|
|
427
|
+
engine.block.setColor(solidFill, 'fill/color/value', {
|
|
428
|
+
r: 0.1,
|
|
429
|
+
g: 0.1,
|
|
430
|
+
b: 0.1,
|
|
431
|
+
a: 1.0
|
|
432
|
+
});
|
|
433
|
+
engine.block.setFill(overlay, solidFill);
|
|
434
|
+
|
|
435
|
+
// Position and size the overlay
|
|
436
|
+
engine.block.setWidth(overlay, pageWidth * 0.4);
|
|
437
|
+
engine.block.setHeight(overlay, pageHeight * 0.3);
|
|
438
|
+
engine.block.setPositionX(overlay, pageWidth * 0.55);
|
|
439
|
+
engine.block.setPositionY(overlay, pageHeight * 0.65);
|
|
440
|
+
engine.block.appendChild(page, overlay);
|
|
441
|
+
```
|
|
442
|
+
|
|
443
|
+
We create a graphic block with a rectangle shape and solid color fill. The overlay uses absolute page coordinates for positioning. Set the alpha to 1.0 for complete opacity.
|
|
444
|
+
|
|
445
|
+
### Time-Based Redaction
|
|
446
|
+
|
|
447
|
+
Redactions can appear only during specific portions of the video. We use `setTimeOffset()` and `setDuration()` to control when the redaction is visible.
|
|
448
|
+
|
|
449
|
+
```typescript highlight-time-based-redaction
|
|
450
|
+
// Apply blur to the video
|
|
451
|
+
const timedBlur = engine.block.createBlur('uniform');
|
|
452
|
+
engine.block.setFloat(timedBlur, 'blur/uniform/intensity', 0.9);
|
|
453
|
+
engine.block.setBlur(timedVideo, timedBlur);
|
|
454
|
+
engine.block.setBlurEnabled(timedVideo, true);
|
|
455
|
+
|
|
456
|
+
// The video is already timed to appear at a specific offset (set earlier)
|
|
457
|
+
// You can adjust timeOffset and duration to control when redaction is visible
|
|
458
|
+
engine.block.setTimeOffset(timedVideo, 4 * SEGMENT_DURATION);
|
|
459
|
+
engine.block.setDuration(timedVideo, SEGMENT_DURATION);
|
|
460
|
+
```
|
|
461
|
+
|
|
462
|
+
The time offset specifies when the redaction appears (in seconds from the start), and the duration controls how long it remains visible. This is useful for redacting faces or information that only appears briefly.
|
|
463
|
+
|
|
464
|
+
### Radial Blur
|
|
465
|
+
|
|
466
|
+
For face-like regions, radial blur creates a circular blur pattern that works well with rounded subjects.
|
|
467
|
+
|
|
468
|
+
```typescript highlight-radial-blur
|
|
469
|
+
// Apply radial blur for circular redaction effect
|
|
470
|
+
const radialBlur = engine.block.createBlur('radial');
|
|
471
|
+
engine.block.setFloat(radialBlur, 'blur/radial/blurRadius', 50);
|
|
472
|
+
engine.block.setFloat(radialBlur, 'blur/radial/radius', 25);
|
|
473
|
+
engine.block.setFloat(radialBlur, 'blur/radial/gradientRadius', 35);
|
|
474
|
+
engine.block.setFloat(radialBlur, 'blur/radial/x', 0.5);
|
|
475
|
+
engine.block.setFloat(radialBlur, 'blur/radial/y', 0.45);
|
|
476
|
+
engine.block.setBlur(radialVideo, radialBlur);
|
|
477
|
+
engine.block.setBlurEnabled(radialVideo, true);
|
|
478
|
+
```
|
|
479
|
+
|
|
480
|
+
Radial blur properties control the blur center (`x`, `y` from 0.0-1.0), the unblurred center area (`radius`), the blur transition zone (`gradientRadius`), and the blur strength (`blurRadius`).
|
|
481
|
+
|
|
482
|
+
## Performance Considerations
|
|
483
|
+
|
|
484
|
+
Different redaction techniques have different performance impacts:
|
|
485
|
+
|
|
486
|
+
- **Solid overlays**: Minimal impact, can create many without significant overhead
|
|
487
|
+
- **Pixelization**: Faster than blur, larger pixel sizes have minimal impact
|
|
488
|
+
- **Blur effects**: Higher intensity values increase rendering time
|
|
489
|
+
|
|
490
|
+
For complex scenes with multiple redactions, consider using solid overlays where blur isn't necessary, or reduce blur intensity to maintain smooth playback.
|
|
491
|
+
|
|
492
|
+
## Troubleshooting
|
|
493
|
+
|
|
494
|
+
### Redaction Not Visible
|
|
495
|
+
|
|
496
|
+
If your redaction doesn't appear, verify that:
|
|
497
|
+
|
|
498
|
+
- The overlay is a child of the page with `appendChild()`
|
|
499
|
+
- Blur is enabled with `setBlurEnabled()` after setting it with `setBlur()`
|
|
500
|
+
- Effects are enabled with `setEffectEnabled()` after appending with `appendEffect()`
|
|
501
|
+
|
|
502
|
+
### Performance Issues
|
|
503
|
+
|
|
504
|
+
Reduce blur intensity, use pixelization instead of heavy blur, or switch to solid overlays for some redactions.
|
|
505
|
+
|
|
506
|
+
## Best Practices
|
|
507
|
+
|
|
508
|
+
- **Preview thoroughly**: Scrub the entire timeline to verify all sensitive content is covered
|
|
509
|
+
- **Add safety margins**: Make redaction regions slightly larger than the sensitive area
|
|
510
|
+
- **Test at export resolution**: Higher resolutions may need stronger blur settings
|
|
511
|
+
- **Archive originals**: Exported redactions are permanent and cannot be reversed
|
|
512
|
+
- **Document redactions**: For compliance requirements, maintain records of what was redacted
|
|
513
|
+
|
|
514
|
+
## API Reference
|
|
515
|
+
|
|
516
|
+
| Method | Description |
|
|
517
|
+
| ----------------------------------------- | -------------------------------------------------------- |
|
|
518
|
+
| `block.supportsBlur(id)` | Check if block supports blur effects |
|
|
519
|
+
| `block.createBlur(type)` | Create blur instance (uniform, radial, linear, mirrored) |
|
|
520
|
+
| `block.setBlur(id, blur)` | Apply blur to block |
|
|
521
|
+
| `block.setBlurEnabled(id, enabled)` | Enable or disable blur |
|
|
522
|
+
| `block.supportsEffects(id)` | Check if block supports effects |
|
|
523
|
+
| `block.createEffect(type)` | Create effect instance (pixelize, etc.) |
|
|
524
|
+
| `block.appendEffect(id, effect)` | Add effect to block |
|
|
525
|
+
| `block.setEffectEnabled(effect, enabled)` | Enable or disable effect |
|
|
526
|
+
| `block.setTimeOffset(id, offset)` | Set when block appears |
|
|
527
|
+
| `block.setDuration(id, duration)` | Set block duration |
|
|
528
|
+
| `block.create(type)` | Create block of specified type |
|
|
529
|
+
| `block.createShape(type)` | Create shape for graphic blocks |
|
|
530
|
+
| `block.setShape(id, shape)` | Apply shape to graphic block |
|
|
531
|
+
| `block.createFill(type)` | Create fill (color, image, video, gradient) |
|
|
532
|
+
| `block.setFill(id, fill)` | Apply fill to block |
|
|
533
|
+
| `block.setFloat(id, property, value)` | Set float property value |
|
|
534
|
+
| `block.setInt(id, property, value)` | Set integer property value |
|
|
535
|
+
| `block.setColor(id, property, color)` | Set color property value |
|
|
536
|
+
|
|
537
|
+
---
|
|
538
|
+
|
|
539
|
+
## More Resources
|
|
540
|
+
|
|
541
|
+
- **[Vanilla JS/TS Documentation Index](https://img.ly/docs/cesdk/js.md)** - Browse all Vanilla JS/TS documentation
|
|
542
|
+
- **[Complete Documentation](./llms-full.txt.md)** - Full documentation in one file (for LLMs)
|
|
543
|
+
- **[Web Documentation](./js.md)** - Interactive documentation with examples
|
|
544
|
+
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
|