@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,680 @@
|
|
|
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 Images](./edit-image.md) > [Replace Colors](./edit-image/replace-colors.md)
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Transform images by swapping specific colors using the Recolor effect or remove backgrounds with the Green Screen effect in CE.SDK.
|
|
8
|
+
|
|
9
|
+

|
|
10
|
+
|
|
11
|
+
> **Reading time:** 8 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-edit-image-replace-colors-browser)
|
|
17
|
+
> - [Open in StackBlitz](https://stackblitz.com/github/imgly/cesdk-web-examples/tree/v$UBQ_VERSION$/guides-edit-image-replace-colors-browser)
|
|
18
|
+
> - [Live demo](https://img.ly/docs/cesdk/examples/guides-edit-image-replace-colors-browser/)
|
|
19
|
+
|
|
20
|
+
CE.SDK offers two color replacement effects. The **Recolor** effect swaps one color for another while preserving image details. The **Green Screen** effect removes background colors with transparency. Both effects provide precise control over color matching, edge smoothness, and intensity.
|
|
21
|
+
|
|
22
|
+
```typescript file=@cesdk_web_examples/guides-edit-image-replace-colors-browser/browser.ts reference-only
|
|
23
|
+
import type { EditorPlugin, EditorPluginContext } from '@cesdk/cesdk-js';
|
|
24
|
+
|
|
25
|
+
import {
|
|
26
|
+
BlurAssetSource,
|
|
27
|
+
ColorPaletteAssetSource,
|
|
28
|
+
CropPresetsAssetSource,
|
|
29
|
+
DemoAssetSources,
|
|
30
|
+
EffectsAssetSource,
|
|
31
|
+
FiltersAssetSource,
|
|
32
|
+
PagePresetsAssetSource,
|
|
33
|
+
StickerAssetSource,
|
|
34
|
+
TextAssetSource,
|
|
35
|
+
TextComponentAssetSource,
|
|
36
|
+
TypefaceAssetSource,
|
|
37
|
+
UploadAssetSources,
|
|
38
|
+
VectorShapeAssetSource
|
|
39
|
+
} from '@cesdk/cesdk-js/plugins';
|
|
40
|
+
import { DesignEditorConfig } from './design-editor/plugin';
|
|
41
|
+
import packageJson from './package.json';
|
|
42
|
+
import { calculateGridLayout } from './utils';
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* CE.SDK Plugin: Replace Colors Guide
|
|
46
|
+
*
|
|
47
|
+
* Demonstrates color replacement using Recolor and Green Screen effects:
|
|
48
|
+
* - Using the built-in effects UI
|
|
49
|
+
* - Creating and applying Recolor effects
|
|
50
|
+
* - Creating and applying Green Screen effects
|
|
51
|
+
* - Configuring effect properties
|
|
52
|
+
* - Managing multiple effects
|
|
53
|
+
*/
|
|
54
|
+
class Example implements EditorPlugin {
|
|
55
|
+
name = packageJson.name;
|
|
56
|
+
|
|
57
|
+
version = packageJson.version;
|
|
58
|
+
|
|
59
|
+
async initialize({ cesdk }: EditorPluginContext): Promise<void> {
|
|
60
|
+
if (!cesdk) {
|
|
61
|
+
throw new Error('CE.SDK instance is required for this plugin');
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
await cesdk.addPlugin(new DesignEditorConfig());
|
|
65
|
+
|
|
66
|
+
// Add asset source plugins
|
|
67
|
+
await cesdk.addPlugin(new BlurAssetSource());
|
|
68
|
+
await cesdk.addPlugin(new ColorPaletteAssetSource());
|
|
69
|
+
await cesdk.addPlugin(new CropPresetsAssetSource());
|
|
70
|
+
await cesdk.addPlugin(
|
|
71
|
+
new UploadAssetSources({ include: ['ly.img.image.upload'] })
|
|
72
|
+
);
|
|
73
|
+
await cesdk.addPlugin(
|
|
74
|
+
new DemoAssetSources({
|
|
75
|
+
include: [
|
|
76
|
+
'ly.img.templates.blank.*',
|
|
77
|
+
'ly.img.templates.presentation.*',
|
|
78
|
+
'ly.img.templates.print.*',
|
|
79
|
+
'ly.img.templates.social.*',
|
|
80
|
+
'ly.img.image.*'
|
|
81
|
+
]
|
|
82
|
+
})
|
|
83
|
+
);
|
|
84
|
+
await cesdk.addPlugin(new EffectsAssetSource());
|
|
85
|
+
await cesdk.addPlugin(new FiltersAssetSource());
|
|
86
|
+
await cesdk.addPlugin(new PagePresetsAssetSource());
|
|
87
|
+
await cesdk.addPlugin(new StickerAssetSource());
|
|
88
|
+
await cesdk.addPlugin(new TextAssetSource());
|
|
89
|
+
await cesdk.addPlugin(new TextComponentAssetSource());
|
|
90
|
+
await cesdk.addPlugin(new TypefaceAssetSource());
|
|
91
|
+
await cesdk.addPlugin(new VectorShapeAssetSource());
|
|
92
|
+
|
|
93
|
+
await cesdk.actions.run('scene.create', {
|
|
94
|
+
page: { width: 800, height: 600, unit: 'Pixel' }
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
const engine = cesdk.engine;
|
|
98
|
+
const page = engine.block.findByType('page')[0];
|
|
99
|
+
|
|
100
|
+
const pageWidth = engine.block.getWidth(page);
|
|
101
|
+
const pageHeight = engine.block.getHeight(page);
|
|
102
|
+
|
|
103
|
+
// Enable effects in the inspector panel using the Feature API
|
|
104
|
+
cesdk.feature.enable('ly.img.effect'); // Enable all effects including recolor and green screen
|
|
105
|
+
|
|
106
|
+
// Calculate responsive grid layout for 6 examples
|
|
107
|
+
const layout = calculateGridLayout(pageWidth, pageHeight, 6);
|
|
108
|
+
const { blockWidth, blockHeight, getPosition } = layout;
|
|
109
|
+
|
|
110
|
+
// Use sample images for demonstrations
|
|
111
|
+
const imageUri = 'https://img.ly/static/ubq_samples/sample_1.jpg';
|
|
112
|
+
const blockSize = { width: blockWidth, height: blockHeight };
|
|
113
|
+
|
|
114
|
+
// Create a Recolor effect to swap red colors to blue
|
|
115
|
+
const block1 = await engine.block.addImage(imageUri, { size: blockSize });
|
|
116
|
+
engine.block.appendChild(page, block1);
|
|
117
|
+
|
|
118
|
+
const recolorEffect = engine.block.createEffect('recolor');
|
|
119
|
+
engine.block.setColor(recolorEffect, 'effect/recolor/fromColor', {
|
|
120
|
+
r: 1.0,
|
|
121
|
+
g: 0.0,
|
|
122
|
+
b: 0.0,
|
|
123
|
+
a: 1.0
|
|
124
|
+
}); // Red source color
|
|
125
|
+
engine.block.setColor(recolorEffect, 'effect/recolor/toColor', {
|
|
126
|
+
r: 0.0,
|
|
127
|
+
g: 0.5,
|
|
128
|
+
b: 1.0,
|
|
129
|
+
a: 1.0
|
|
130
|
+
}); // Blue target color
|
|
131
|
+
engine.block.appendEffect(block1, recolorEffect);
|
|
132
|
+
|
|
133
|
+
// Select this block to show the effects panel
|
|
134
|
+
engine.block.setSelected(block1, true);
|
|
135
|
+
|
|
136
|
+
// Configure color matching precision for Recolor effect
|
|
137
|
+
const block2 = await engine.block.addImage(imageUri, { size: blockSize });
|
|
138
|
+
engine.block.appendChild(page, block2);
|
|
139
|
+
|
|
140
|
+
const recolorEffect2 = engine.block.createEffect('recolor');
|
|
141
|
+
engine.block.setColor(recolorEffect2, 'effect/recolor/fromColor', {
|
|
142
|
+
r: 0.8,
|
|
143
|
+
g: 0.6,
|
|
144
|
+
b: 0.4,
|
|
145
|
+
a: 1.0
|
|
146
|
+
}); // Skin tone source
|
|
147
|
+
engine.block.setColor(recolorEffect2, 'effect/recolor/toColor', {
|
|
148
|
+
r: 0.3,
|
|
149
|
+
g: 0.7,
|
|
150
|
+
b: 0.3,
|
|
151
|
+
a: 1.0
|
|
152
|
+
}); // Green tint
|
|
153
|
+
// Adjust color match tolerance (0-1, higher = more inclusive)
|
|
154
|
+
engine.block.setFloat(recolorEffect2, 'effect/recolor/colorMatch', 0.3);
|
|
155
|
+
// Adjust brightness match tolerance
|
|
156
|
+
engine.block.setFloat(
|
|
157
|
+
recolorEffect2,
|
|
158
|
+
'effect/recolor/brightnessMatch',
|
|
159
|
+
0.2
|
|
160
|
+
);
|
|
161
|
+
// Adjust edge smoothness
|
|
162
|
+
engine.block.setFloat(recolorEffect2, 'effect/recolor/smoothness', 0.1);
|
|
163
|
+
engine.block.appendEffect(block2, recolorEffect2);
|
|
164
|
+
|
|
165
|
+
// Create a Green Screen effect to remove green backgrounds
|
|
166
|
+
const block3 = await engine.block.addImage(imageUri, { size: blockSize });
|
|
167
|
+
engine.block.appendChild(page, block3);
|
|
168
|
+
|
|
169
|
+
const greenScreenEffect = engine.block.createEffect('green_screen');
|
|
170
|
+
// Specify the color to remove (green)
|
|
171
|
+
engine.block.setColor(greenScreenEffect, 'effect/green_screen/fromColor', {
|
|
172
|
+
r: 0.0,
|
|
173
|
+
g: 1.0,
|
|
174
|
+
b: 0.0,
|
|
175
|
+
a: 1.0
|
|
176
|
+
});
|
|
177
|
+
engine.block.appendEffect(block3, greenScreenEffect);
|
|
178
|
+
|
|
179
|
+
// Fine-tune Green Screen removal parameters
|
|
180
|
+
const block4 = await engine.block.addImage(imageUri, { size: blockSize });
|
|
181
|
+
engine.block.appendChild(page, block4);
|
|
182
|
+
|
|
183
|
+
const greenScreenEffect2 = engine.block.createEffect('green_screen');
|
|
184
|
+
engine.block.setColor(greenScreenEffect2, 'effect/green_screen/fromColor', {
|
|
185
|
+
r: 0.2,
|
|
186
|
+
g: 0.8,
|
|
187
|
+
b: 0.3,
|
|
188
|
+
a: 1.0
|
|
189
|
+
}); // Specific green shade
|
|
190
|
+
// Adjust color match tolerance
|
|
191
|
+
engine.block.setFloat(
|
|
192
|
+
greenScreenEffect2,
|
|
193
|
+
'effect/green_screen/colorMatch',
|
|
194
|
+
0.4
|
|
195
|
+
);
|
|
196
|
+
// Adjust edge smoothness for cleaner removal
|
|
197
|
+
engine.block.setFloat(
|
|
198
|
+
greenScreenEffect2,
|
|
199
|
+
'effect/green_screen/smoothness',
|
|
200
|
+
0.2
|
|
201
|
+
);
|
|
202
|
+
// Reduce color spill from green background
|
|
203
|
+
engine.block.setFloat(greenScreenEffect2, 'effect/green_screen/spill', 0.5);
|
|
204
|
+
engine.block.appendEffect(block4, greenScreenEffect2);
|
|
205
|
+
|
|
206
|
+
// Demonstrate managing multiple effects on a block
|
|
207
|
+
const block5 = await engine.block.addImage(imageUri, { size: blockSize });
|
|
208
|
+
engine.block.appendChild(page, block5);
|
|
209
|
+
|
|
210
|
+
// Add multiple effects to the same block
|
|
211
|
+
const recolor1 = engine.block.createEffect('recolor');
|
|
212
|
+
engine.block.setColor(recolor1, 'effect/recolor/fromColor', {
|
|
213
|
+
r: 1.0,
|
|
214
|
+
g: 0.0,
|
|
215
|
+
b: 0.0,
|
|
216
|
+
a: 1.0
|
|
217
|
+
});
|
|
218
|
+
engine.block.setColor(recolor1, 'effect/recolor/toColor', {
|
|
219
|
+
r: 0.0,
|
|
220
|
+
g: 0.0,
|
|
221
|
+
b: 1.0,
|
|
222
|
+
a: 1.0
|
|
223
|
+
});
|
|
224
|
+
engine.block.appendEffect(block5, recolor1);
|
|
225
|
+
|
|
226
|
+
const recolor2 = engine.block.createEffect('recolor');
|
|
227
|
+
engine.block.setColor(recolor2, 'effect/recolor/fromColor', {
|
|
228
|
+
r: 0.0,
|
|
229
|
+
g: 1.0,
|
|
230
|
+
b: 0.0,
|
|
231
|
+
a: 1.0
|
|
232
|
+
});
|
|
233
|
+
engine.block.setColor(recolor2, 'effect/recolor/toColor', {
|
|
234
|
+
r: 1.0,
|
|
235
|
+
g: 0.5,
|
|
236
|
+
b: 0.0,
|
|
237
|
+
a: 1.0
|
|
238
|
+
});
|
|
239
|
+
engine.block.appendEffect(block5, recolor2);
|
|
240
|
+
|
|
241
|
+
// Get all effects on the block
|
|
242
|
+
const effects = engine.block.getEffects(block5);
|
|
243
|
+
// eslint-disable-next-line no-console
|
|
244
|
+
console.log('Number of effects:', effects.length); // 2
|
|
245
|
+
|
|
246
|
+
// Disable the first effect without removing it
|
|
247
|
+
engine.block.setEffectEnabled(effects[0], false);
|
|
248
|
+
|
|
249
|
+
// Check if effect is enabled
|
|
250
|
+
const isEnabled = engine.block.isEffectEnabled(effects[0]);
|
|
251
|
+
// eslint-disable-next-line no-console
|
|
252
|
+
console.log('First effect enabled:', isEnabled); // false
|
|
253
|
+
|
|
254
|
+
// Apply consistent color replacement across multiple blocks
|
|
255
|
+
const block6 = await engine.block.addImage(imageUri, { size: blockSize });
|
|
256
|
+
engine.block.appendChild(page, block6);
|
|
257
|
+
|
|
258
|
+
// Find all image blocks in the scene
|
|
259
|
+
const allBlocks = engine.block.findByType('//ly.img.ubq/graphic');
|
|
260
|
+
|
|
261
|
+
// Apply a consistent recolor effect to each block
|
|
262
|
+
allBlocks.forEach((blockId) => {
|
|
263
|
+
// Skip if block already has effects
|
|
264
|
+
if (engine.block.getEffects(blockId).length > 0) {
|
|
265
|
+
return;
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
const batchRecolor = engine.block.createEffect('recolor');
|
|
269
|
+
engine.block.setColor(batchRecolor, 'effect/recolor/fromColor', {
|
|
270
|
+
r: 0.8,
|
|
271
|
+
g: 0.7,
|
|
272
|
+
b: 0.6,
|
|
273
|
+
a: 1.0
|
|
274
|
+
});
|
|
275
|
+
engine.block.setColor(batchRecolor, 'effect/recolor/toColor', {
|
|
276
|
+
r: 0.6,
|
|
277
|
+
g: 0.7,
|
|
278
|
+
b: 0.9,
|
|
279
|
+
a: 1.0
|
|
280
|
+
});
|
|
281
|
+
engine.block.setFloat(batchRecolor, 'effect/recolor/colorMatch', 0.25);
|
|
282
|
+
engine.block.appendEffect(blockId, batchRecolor);
|
|
283
|
+
});
|
|
284
|
+
|
|
285
|
+
// Position all blocks in a grid layout
|
|
286
|
+
const blocks = [block1, block2, block3, block4, block5, block6];
|
|
287
|
+
blocks.forEach((block, index) => {
|
|
288
|
+
const pos = getPosition(index);
|
|
289
|
+
engine.block.setPositionX(block, pos.x);
|
|
290
|
+
engine.block.setPositionY(block, pos.y);
|
|
291
|
+
});
|
|
292
|
+
|
|
293
|
+
// Zoom to show all blocks
|
|
294
|
+
engine.block.setSelected(block1, true);
|
|
295
|
+
cesdk.engine.scene.zoomToBlock(page);
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
export default Example;
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
This guide shows how to enable the built-in effects UI for interactive color replacement and apply effects programmatically using the block API.
|
|
303
|
+
|
|
304
|
+
## Using the Built-in Effects UI
|
|
305
|
+
|
|
306
|
+
### Enable Effects Panel
|
|
307
|
+
|
|
308
|
+
We enable the effects feature using CE.SDK's Feature API. The effects panel appears in the inspector when users select a compatible graphic block.
|
|
309
|
+
|
|
310
|
+
```typescript highlight-enable-effects-panel
|
|
311
|
+
// Enable effects in the inspector panel using the Feature API
|
|
312
|
+
cesdk.feature.enable('ly.img.effect'); // Enable all effects including recolor and green screen
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
Enabling `ly.img.effect` makes all effect options available in the inspector panel, including Recolor and Green Screen.
|
|
316
|
+
|
|
317
|
+
### User Workflow
|
|
318
|
+
|
|
319
|
+
With effects enabled, users can replace colors through the inspector panel:
|
|
320
|
+
|
|
321
|
+
1. **Select an image block** - Click an image or graphic block on the canvas
|
|
322
|
+
2. **Open inspector** - The inspector shows available options for the selected element
|
|
323
|
+
3. **Find effects section** - Scroll to the effects section
|
|
324
|
+
4. **Choose Recolor or Green Screen** - Click the desired effect
|
|
325
|
+
5. **Select colors** - Use the color picker to specify source and target colors
|
|
326
|
+
6. **Adjust parameters** - Fine-tune color matching, smoothness, and intensity
|
|
327
|
+
7. **Toggle effects** - Enable or disable effects to compare results
|
|
328
|
+
|
|
329
|
+
Users can experiment with color replacements and see results immediately.
|
|
330
|
+
|
|
331
|
+
## Programmatic Color Replacement
|
|
332
|
+
|
|
333
|
+
### Initialize CE.SDK
|
|
334
|
+
|
|
335
|
+
To apply color replacement programmatically, we set up CE.SDK with the proper configuration.
|
|
336
|
+
|
|
337
|
+
```typescript highlight-setup
|
|
338
|
+
await cesdk.addPlugin(new DesignEditorConfig());
|
|
339
|
+
|
|
340
|
+
// Add asset source plugins
|
|
341
|
+
await cesdk.addPlugin(new BlurAssetSource());
|
|
342
|
+
await cesdk.addPlugin(new ColorPaletteAssetSource());
|
|
343
|
+
await cesdk.addPlugin(new CropPresetsAssetSource());
|
|
344
|
+
await cesdk.addPlugin(
|
|
345
|
+
new UploadAssetSources({ include: ['ly.img.image.upload'] })
|
|
346
|
+
);
|
|
347
|
+
await cesdk.addPlugin(
|
|
348
|
+
new DemoAssetSources({
|
|
349
|
+
include: [
|
|
350
|
+
'ly.img.templates.blank.*',
|
|
351
|
+
'ly.img.templates.presentation.*',
|
|
352
|
+
'ly.img.templates.print.*',
|
|
353
|
+
'ly.img.templates.social.*',
|
|
354
|
+
'ly.img.image.*'
|
|
355
|
+
]
|
|
356
|
+
})
|
|
357
|
+
);
|
|
358
|
+
await cesdk.addPlugin(new EffectsAssetSource());
|
|
359
|
+
await cesdk.addPlugin(new FiltersAssetSource());
|
|
360
|
+
await cesdk.addPlugin(new PagePresetsAssetSource());
|
|
361
|
+
await cesdk.addPlugin(new StickerAssetSource());
|
|
362
|
+
await cesdk.addPlugin(new TextAssetSource());
|
|
363
|
+
await cesdk.addPlugin(new TextComponentAssetSource());
|
|
364
|
+
await cesdk.addPlugin(new TypefaceAssetSource());
|
|
365
|
+
await cesdk.addPlugin(new VectorShapeAssetSource());
|
|
366
|
+
|
|
367
|
+
await cesdk.actions.run('scene.create', {
|
|
368
|
+
page: { width: 800, height: 600, unit: 'Pixel' }
|
|
369
|
+
});
|
|
370
|
+
|
|
371
|
+
const engine = cesdk.engine;
|
|
372
|
+
const page = engine.block.findByType('page')[0];
|
|
373
|
+
|
|
374
|
+
const pageWidth = engine.block.getWidth(page);
|
|
375
|
+
const pageHeight = engine.block.getHeight(page);
|
|
376
|
+
```
|
|
377
|
+
|
|
378
|
+
This initializes CE.SDK with the effects panel enabled, providing both UI and API access.
|
|
379
|
+
|
|
380
|
+
### Creating and Applying Recolor Effects
|
|
381
|
+
|
|
382
|
+
The Recolor effect swaps one color for another throughout an image. We create a Recolor effect using `engine.block.createEffect('recolor')` and specify the source and target colors.
|
|
383
|
+
|
|
384
|
+
```typescript highlight-create-recolor-effect
|
|
385
|
+
// Create a Recolor effect to swap red colors to blue
|
|
386
|
+
const block1 = await engine.block.addImage(imageUri, { size: blockSize });
|
|
387
|
+
engine.block.appendChild(page, block1);
|
|
388
|
+
|
|
389
|
+
const recolorEffect = engine.block.createEffect('recolor');
|
|
390
|
+
engine.block.setColor(recolorEffect, 'effect/recolor/fromColor', {
|
|
391
|
+
r: 1.0,
|
|
392
|
+
g: 0.0,
|
|
393
|
+
b: 0.0,
|
|
394
|
+
a: 1.0
|
|
395
|
+
}); // Red source color
|
|
396
|
+
engine.block.setColor(recolorEffect, 'effect/recolor/toColor', {
|
|
397
|
+
r: 0.0,
|
|
398
|
+
g: 0.5,
|
|
399
|
+
b: 1.0,
|
|
400
|
+
a: 1.0
|
|
401
|
+
}); // Blue target color
|
|
402
|
+
engine.block.appendEffect(block1, recolorEffect);
|
|
403
|
+
|
|
404
|
+
// Select this block to show the effects panel
|
|
405
|
+
engine.block.setSelected(block1, true);
|
|
406
|
+
```
|
|
407
|
+
|
|
408
|
+
The Recolor effect identifies pixels matching the source color (fromColor) and replaces them with the target color (toColor). Color values use RGBA format with values from 0.0 to 1.0.
|
|
409
|
+
|
|
410
|
+
> **Tip:** The example code uses the `engine.block.addImage()` convenience API. This simplifies image block creation compared to manually constructing graphic blocks with image fills.
|
|
411
|
+
|
|
412
|
+
### Configuring Color Matching
|
|
413
|
+
|
|
414
|
+
We adjust the matching tolerance and smoothness parameters to control how precisely colors must match before replacement.
|
|
415
|
+
|
|
416
|
+
```typescript highlight-configure-recolor-matching
|
|
417
|
+
// Configure color matching precision for Recolor effect
|
|
418
|
+
const block2 = await engine.block.addImage(imageUri, { size: blockSize });
|
|
419
|
+
engine.block.appendChild(page, block2);
|
|
420
|
+
|
|
421
|
+
const recolorEffect2 = engine.block.createEffect('recolor');
|
|
422
|
+
engine.block.setColor(recolorEffect2, 'effect/recolor/fromColor', {
|
|
423
|
+
r: 0.8,
|
|
424
|
+
g: 0.6,
|
|
425
|
+
b: 0.4,
|
|
426
|
+
a: 1.0
|
|
427
|
+
}); // Skin tone source
|
|
428
|
+
engine.block.setColor(recolorEffect2, 'effect/recolor/toColor', {
|
|
429
|
+
r: 0.3,
|
|
430
|
+
g: 0.7,
|
|
431
|
+
b: 0.3,
|
|
432
|
+
a: 1.0
|
|
433
|
+
}); // Green tint
|
|
434
|
+
// Adjust color match tolerance (0-1, higher = more inclusive)
|
|
435
|
+
engine.block.setFloat(recolorEffect2, 'effect/recolor/colorMatch', 0.3);
|
|
436
|
+
// Adjust brightness match tolerance
|
|
437
|
+
engine.block.setFloat(recolorEffect2, 'effect/recolor/brightnessMatch', 0.2);
|
|
438
|
+
// Adjust edge smoothness
|
|
439
|
+
engine.block.setFloat(recolorEffect2, 'effect/recolor/smoothness', 0.1);
|
|
440
|
+
engine.block.appendEffect(block2, recolorEffect2);
|
|
441
|
+
```
|
|
442
|
+
|
|
443
|
+
The Recolor effect provides these parameters:
|
|
444
|
+
|
|
445
|
+
- **colorMatch** (0-1) - How closely colors must match the source. Lower values match exact colors, higher values match broader ranges
|
|
446
|
+
- **brightnessMatch** (0-1) - Tolerance for brightness variations
|
|
447
|
+
- **smoothness** (0-1) - Edge blending to reduce artifacts
|
|
448
|
+
|
|
449
|
+
These parameters help handle images where colors vary due to lighting, shadows, or compression.
|
|
450
|
+
|
|
451
|
+
### Creating and Applying Green Screen Effects
|
|
452
|
+
|
|
453
|
+
The Green Screen effect removes backgrounds by making specific colors transparent.
|
|
454
|
+
|
|
455
|
+
```typescript highlight-create-green-screen-effect
|
|
456
|
+
// Create a Green Screen effect to remove green backgrounds
|
|
457
|
+
const block3 = await engine.block.addImage(imageUri, { size: blockSize });
|
|
458
|
+
engine.block.appendChild(page, block3);
|
|
459
|
+
|
|
460
|
+
const greenScreenEffect = engine.block.createEffect('green_screen');
|
|
461
|
+
// Specify the color to remove (green)
|
|
462
|
+
engine.block.setColor(greenScreenEffect, 'effect/green_screen/fromColor', {
|
|
463
|
+
r: 0.0,
|
|
464
|
+
g: 1.0,
|
|
465
|
+
b: 0.0,
|
|
466
|
+
a: 1.0
|
|
467
|
+
});
|
|
468
|
+
engine.block.appendEffect(block3, greenScreenEffect);
|
|
469
|
+
```
|
|
470
|
+
|
|
471
|
+
The Green Screen effect identifies pixels matching the specified color (fromColor) and makes them transparent. This works best with solid-color backgrounds like green screens or blue screens.
|
|
472
|
+
|
|
473
|
+
### Fine-Tuning Green Screen Removal
|
|
474
|
+
|
|
475
|
+
We adjust the color matching tolerance, edge smoothness, and spill suppression parameters.
|
|
476
|
+
|
|
477
|
+
```typescript highlight-configure-green-screen
|
|
478
|
+
// Fine-tune Green Screen removal parameters
|
|
479
|
+
const block4 = await engine.block.addImage(imageUri, { size: blockSize });
|
|
480
|
+
engine.block.appendChild(page, block4);
|
|
481
|
+
|
|
482
|
+
const greenScreenEffect2 = engine.block.createEffect('green_screen');
|
|
483
|
+
engine.block.setColor(greenScreenEffect2, 'effect/green_screen/fromColor', {
|
|
484
|
+
r: 0.2,
|
|
485
|
+
g: 0.8,
|
|
486
|
+
b: 0.3,
|
|
487
|
+
a: 1.0
|
|
488
|
+
}); // Specific green shade
|
|
489
|
+
// Adjust color match tolerance
|
|
490
|
+
engine.block.setFloat(
|
|
491
|
+
greenScreenEffect2,
|
|
492
|
+
'effect/green_screen/colorMatch',
|
|
493
|
+
0.4
|
|
494
|
+
);
|
|
495
|
+
// Adjust edge smoothness for cleaner removal
|
|
496
|
+
engine.block.setFloat(
|
|
497
|
+
greenScreenEffect2,
|
|
498
|
+
'effect/green_screen/smoothness',
|
|
499
|
+
0.2
|
|
500
|
+
);
|
|
501
|
+
// Reduce color spill from green background
|
|
502
|
+
engine.block.setFloat(greenScreenEffect2, 'effect/green_screen/spill', 0.5);
|
|
503
|
+
engine.block.appendEffect(block4, greenScreenEffect2);
|
|
504
|
+
```
|
|
505
|
+
|
|
506
|
+
The Green Screen effect provides these parameters:
|
|
507
|
+
|
|
508
|
+
- **colorMatch** (0-1) - Tolerance for color variations in the background
|
|
509
|
+
- **smoothness** (0-1) - Edge feathering for natural transitions
|
|
510
|
+
- **spill** (0-1) - Reduces color spill from the background onto foreground objects
|
|
511
|
+
|
|
512
|
+
These parameters help create clean composites without harsh edges or color artifacts.
|
|
513
|
+
|
|
514
|
+
## Managing Multiple Effects
|
|
515
|
+
|
|
516
|
+
We can apply multiple color replacement effects to the same block. CE.SDK maintains an effect stack for each block, applying effects in the order they were added.
|
|
517
|
+
|
|
518
|
+
```typescript highlight-manage-effects
|
|
519
|
+
// Demonstrate managing multiple effects on a block
|
|
520
|
+
const block5 = await engine.block.addImage(imageUri, { size: blockSize });
|
|
521
|
+
engine.block.appendChild(page, block5);
|
|
522
|
+
|
|
523
|
+
// Add multiple effects to the same block
|
|
524
|
+
const recolor1 = engine.block.createEffect('recolor');
|
|
525
|
+
engine.block.setColor(recolor1, 'effect/recolor/fromColor', {
|
|
526
|
+
r: 1.0,
|
|
527
|
+
g: 0.0,
|
|
528
|
+
b: 0.0,
|
|
529
|
+
a: 1.0
|
|
530
|
+
});
|
|
531
|
+
engine.block.setColor(recolor1, 'effect/recolor/toColor', {
|
|
532
|
+
r: 0.0,
|
|
533
|
+
g: 0.0,
|
|
534
|
+
b: 1.0,
|
|
535
|
+
a: 1.0
|
|
536
|
+
});
|
|
537
|
+
engine.block.appendEffect(block5, recolor1);
|
|
538
|
+
|
|
539
|
+
const recolor2 = engine.block.createEffect('recolor');
|
|
540
|
+
engine.block.setColor(recolor2, 'effect/recolor/fromColor', {
|
|
541
|
+
r: 0.0,
|
|
542
|
+
g: 1.0,
|
|
543
|
+
b: 0.0,
|
|
544
|
+
a: 1.0
|
|
545
|
+
});
|
|
546
|
+
engine.block.setColor(recolor2, 'effect/recolor/toColor', {
|
|
547
|
+
r: 1.0,
|
|
548
|
+
g: 0.5,
|
|
549
|
+
b: 0.0,
|
|
550
|
+
a: 1.0
|
|
551
|
+
});
|
|
552
|
+
engine.block.appendEffect(block5, recolor2);
|
|
553
|
+
|
|
554
|
+
// Get all effects on the block
|
|
555
|
+
const effects = engine.block.getEffects(block5);
|
|
556
|
+
// eslint-disable-next-line no-console
|
|
557
|
+
console.log('Number of effects:', effects.length); // 2
|
|
558
|
+
|
|
559
|
+
// Disable the first effect without removing it
|
|
560
|
+
engine.block.setEffectEnabled(effects[0], false);
|
|
561
|
+
|
|
562
|
+
// Check if effect is enabled
|
|
563
|
+
const isEnabled = engine.block.isEffectEnabled(effects[0]);
|
|
564
|
+
// eslint-disable-next-line no-console
|
|
565
|
+
console.log('First effect enabled:', isEnabled); // false
|
|
566
|
+
```
|
|
567
|
+
|
|
568
|
+
Effect management capabilities:
|
|
569
|
+
|
|
570
|
+
- **Get effects** - Retrieve all effects with `engine.block.getEffects()`
|
|
571
|
+
- **Enable/disable** - Toggle effects with `engine.block.setEffectEnabled()` without removing them
|
|
572
|
+
- **Check status** - Query effect state with `engine.block.isEffectEnabled()`
|
|
573
|
+
- **Remove effects** - Delete effects by index with `engine.block.removeEffect()`
|
|
574
|
+
|
|
575
|
+
Disabling effects is useful for before/after comparisons or performance optimization.
|
|
576
|
+
|
|
577
|
+
## Batch Processing Multiple Images
|
|
578
|
+
|
|
579
|
+
We can loop through all image blocks in a scene and apply the same effect configuration to each.
|
|
580
|
+
|
|
581
|
+
```typescript highlight-batch-processing
|
|
582
|
+
// Apply consistent color replacement across multiple blocks
|
|
583
|
+
const block6 = await engine.block.addImage(imageUri, { size: blockSize });
|
|
584
|
+
engine.block.appendChild(page, block6);
|
|
585
|
+
|
|
586
|
+
// Find all image blocks in the scene
|
|
587
|
+
const allBlocks = engine.block.findByType('//ly.img.ubq/graphic');
|
|
588
|
+
|
|
589
|
+
// Apply a consistent recolor effect to each block
|
|
590
|
+
allBlocks.forEach((blockId) => {
|
|
591
|
+
// Skip if block already has effects
|
|
592
|
+
if (engine.block.getEffects(blockId).length > 0) {
|
|
593
|
+
return;
|
|
594
|
+
}
|
|
595
|
+
|
|
596
|
+
const batchRecolor = engine.block.createEffect('recolor');
|
|
597
|
+
engine.block.setColor(batchRecolor, 'effect/recolor/fromColor', {
|
|
598
|
+
r: 0.8,
|
|
599
|
+
g: 0.7,
|
|
600
|
+
b: 0.6,
|
|
601
|
+
a: 1.0
|
|
602
|
+
});
|
|
603
|
+
engine.block.setColor(batchRecolor, 'effect/recolor/toColor', {
|
|
604
|
+
r: 0.6,
|
|
605
|
+
g: 0.7,
|
|
606
|
+
b: 0.9,
|
|
607
|
+
a: 1.0
|
|
608
|
+
});
|
|
609
|
+
engine.block.setFloat(batchRecolor, 'effect/recolor/colorMatch', 0.25);
|
|
610
|
+
engine.block.appendEffect(blockId, batchRecolor);
|
|
611
|
+
});
|
|
612
|
+
```
|
|
613
|
+
|
|
614
|
+
Batch processing use cases:
|
|
615
|
+
|
|
616
|
+
- **Product variations** - Generate multiple color variants
|
|
617
|
+
- **Brand consistency** - Apply consistent color corrections
|
|
618
|
+
- **Automated workflows** - Process multiple images with the same adjustments
|
|
619
|
+
|
|
620
|
+
The `engine.block.findByType()` method locates all graphic blocks in the scene.
|
|
621
|
+
|
|
622
|
+
## Troubleshooting
|
|
623
|
+
|
|
624
|
+
Common issues and solutions when working with color replacement effects:
|
|
625
|
+
|
|
626
|
+
**Effect not visible**
|
|
627
|
+
|
|
628
|
+
- Verify the effect is enabled with `engine.block.isEffectEnabled()`
|
|
629
|
+
- Check that the effect is attached to the correct block using `engine.block.getEffects()`
|
|
630
|
+
- Ensure the block type supports effects with `engine.block.supportsEffects()`
|
|
631
|
+
|
|
632
|
+
**Wrong colors being replaced**
|
|
633
|
+
|
|
634
|
+
- Decrease `colorMatch` for more precise matching
|
|
635
|
+
- Increase `colorMatch` to capture broader color ranges
|
|
636
|
+
- Adjust `brightnessMatch` for Recolor effects with lighting variations
|
|
637
|
+
|
|
638
|
+
**Harsh edges or artifacts**
|
|
639
|
+
|
|
640
|
+
- Increase `smoothness` to blend edges more gradually
|
|
641
|
+
- For Green Screen, adjust `spill` to reduce color contamination
|
|
642
|
+
- Use higher resolution images for smoother results
|
|
643
|
+
|
|
644
|
+
**Performance issues**
|
|
645
|
+
|
|
646
|
+
- Limit active effects on a single block
|
|
647
|
+
- Use `engine.block.setEffectEnabled(false)` to disable effects during editing
|
|
648
|
+
- Process effects sequentially rather than simultaneously
|
|
649
|
+
|
|
650
|
+
## API Reference
|
|
651
|
+
|
|
652
|
+
| Method | Category | Purpose |
|
|
653
|
+
| --------------------------------- | -------- | ----------------------------------------------------------- |
|
|
654
|
+
| `engine.block.createEffect()` | Block | Create a new Recolor or Green Screen effect block |
|
|
655
|
+
| `engine.block.appendEffect()` | Block | Attach an effect to an image block |
|
|
656
|
+
| `engine.block.insertEffect()` | Block | Insert an effect at a specific position in the effect stack |
|
|
657
|
+
| `engine.block.removeEffect()` | Block | Remove an effect from a block by index |
|
|
658
|
+
| `engine.block.getEffects()` | Block | Get all effects attached to a block |
|
|
659
|
+
| `engine.block.supportsEffects()` | Block | Check if a block can render effects |
|
|
660
|
+
| `engine.block.setColor()` | Block | Set color properties on effect blocks |
|
|
661
|
+
| `engine.block.getColor()` | Block | Get color properties from effect blocks |
|
|
662
|
+
| `engine.block.setFloat()` | Block | Set numeric effect properties |
|
|
663
|
+
| `engine.block.getFloat()` | Block | Get numeric effect properties |
|
|
664
|
+
| `engine.block.setEffectEnabled()` | Block | Enable or disable an effect |
|
|
665
|
+
| `engine.block.isEffectEnabled()` | Block | Check if an effect is enabled |
|
|
666
|
+
| `engine.block.findByType()` | Block | Find all blocks of a specific type |
|
|
667
|
+
|
|
668
|
+
## Next Steps
|
|
669
|
+
|
|
670
|
+
- [Apply Filters and Effects](./filters-and-effects/apply.md) — Explore other visual effects available in CE.SDK
|
|
671
|
+
- [Export Designs](./export-save-publish/export.md) — Save your color-replaced images in various formats
|
|
672
|
+
|
|
673
|
+
---
|
|
674
|
+
|
|
675
|
+
## More Resources
|
|
676
|
+
|
|
677
|
+
- **[Vanilla JS/TS Documentation Index](https://img.ly/docs/cesdk/js.md)** - Browse all Vanilla JS/TS documentation
|
|
678
|
+
- **[Complete Documentation](./llms-full.txt.md)** - Full documentation in one file (for LLMs)
|
|
679
|
+
- **[Web Documentation](./js.md)** - Interactive documentation with examples
|
|
680
|
+
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
|