@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,539 @@
|
|
|
1
|
+
> This is one page of the CE.SDK Vanilla JS/TS documentation. For a complete overview, see the [Vanilla JS/TS Documentation Index](https://img.ly/docs/cesdk/js.md). For all docs in one file, see [llms-full.txt](./llms-full.txt.md).
|
|
2
|
+
|
|
3
|
+
**Navigation:** [Guides](./guides.md) > [Fills](./fills.md) > [Image](./fills/image.md)
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Fill shapes, text, and design blocks with photos and images from URLs,
|
|
8
|
+
uploads, or asset libraries using CE.SDK's versatile image fill system.
|
|
9
|
+
|
|
10
|
+

|
|
11
|
+
|
|
12
|
+
> **Reading time:** 15 minutes
|
|
13
|
+
>
|
|
14
|
+
> **Resources:**
|
|
15
|
+
>
|
|
16
|
+
> - [Download examples](https://github.com/imgly/cesdk-web-examples/archive/refs/tags/release-$UBQ_VERSION$.zip)
|
|
17
|
+
> - [View source on GitHub](https://github.com/imgly/cesdk-web-examples/tree/release-$UBQ_VERSION$/guides-fills-image-browser)
|
|
18
|
+
> - [Open in StackBlitz](https://stackblitz.com/github/imgly/cesdk-web-examples/tree/v$UBQ_VERSION$/guides-fills-image-browser)
|
|
19
|
+
> - [Live demo](https://img.ly/docs/cesdk/examples/guides-fills-image-browser/)
|
|
20
|
+
|
|
21
|
+
Image fills paint design blocks with raster or vector image content, supporting various formats including PNG, JPEG, WebP, and SVG. You can load images from remote URLs, local files, data URIs, and asset libraries, with built-in support for responsive images through source sets and multiple content fill modes for flexible positioning.
|
|
22
|
+
|
|
23
|
+
```typescript file=@cesdk_web_examples/guides-fills-image-browser/browser.ts reference-only
|
|
24
|
+
import type { EditorPlugin, EditorPluginContext } from '@cesdk/cesdk-js';
|
|
25
|
+
|
|
26
|
+
import {
|
|
27
|
+
BlurAssetSource,
|
|
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 { DesignEditorConfig } from './design-editor/plugin';
|
|
42
|
+
import packageJson from './package.json';
|
|
43
|
+
import { calculateGridLayout } from './utils';
|
|
44
|
+
|
|
45
|
+
class Example implements EditorPlugin {
|
|
46
|
+
name = packageJson.name;
|
|
47
|
+
|
|
48
|
+
version = packageJson.version;
|
|
49
|
+
|
|
50
|
+
async initialize({ cesdk }: EditorPluginContext): Promise<void> {
|
|
51
|
+
if (!cesdk) {
|
|
52
|
+
throw new Error('CE.SDK instance is required for this plugin');
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// Fill features are enabled by default in CE.SDK
|
|
56
|
+
// You can check and control fill feature availability:
|
|
57
|
+
const isFillEnabled = cesdk.feature.isEnabled('ly.img.fill', {
|
|
58
|
+
engine: cesdk.engine
|
|
59
|
+
});
|
|
60
|
+
console.log('Fill feature enabled:', isFillEnabled);
|
|
61
|
+
await cesdk.addPlugin(new DesignEditorConfig());
|
|
62
|
+
|
|
63
|
+
// Add asset source plugins
|
|
64
|
+
await cesdk.addPlugin(new BlurAssetSource());
|
|
65
|
+
await cesdk.addPlugin(new ColorPaletteAssetSource());
|
|
66
|
+
await cesdk.addPlugin(new CropPresetsAssetSource());
|
|
67
|
+
await cesdk.addPlugin(
|
|
68
|
+
new UploadAssetSources({ include: ['ly.img.image.upload'] })
|
|
69
|
+
);
|
|
70
|
+
await cesdk.addPlugin(
|
|
71
|
+
new DemoAssetSources({
|
|
72
|
+
include: [
|
|
73
|
+
'ly.img.templates.blank.*',
|
|
74
|
+
'ly.img.templates.presentation.*',
|
|
75
|
+
'ly.img.templates.print.*',
|
|
76
|
+
'ly.img.templates.social.*',
|
|
77
|
+
'ly.img.image.*'
|
|
78
|
+
]
|
|
79
|
+
})
|
|
80
|
+
);
|
|
81
|
+
await cesdk.addPlugin(new EffectsAssetSource());
|
|
82
|
+
await cesdk.addPlugin(new FiltersAssetSource());
|
|
83
|
+
await cesdk.addPlugin(new PagePresetsAssetSource());
|
|
84
|
+
await cesdk.addPlugin(new StickerAssetSource());
|
|
85
|
+
await cesdk.addPlugin(new TextAssetSource());
|
|
86
|
+
await cesdk.addPlugin(new TextComponentAssetSource());
|
|
87
|
+
await cesdk.addPlugin(new TypefaceAssetSource());
|
|
88
|
+
await cesdk.addPlugin(new VectorShapeAssetSource());
|
|
89
|
+
|
|
90
|
+
await cesdk.actions.run('scene.create', {
|
|
91
|
+
page: { width: 800, height: 600, unit: 'Pixel' }
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
const engine = cesdk.engine;
|
|
95
|
+
const page = engine.block.findByType('page')[0];
|
|
96
|
+
|
|
97
|
+
// Calculate responsive grid layout for demonstrations
|
|
98
|
+
const pageWidth = engine.block.getWidth(page);
|
|
99
|
+
const pageHeight = engine.block.getHeight(page);
|
|
100
|
+
const layout = calculateGridLayout(pageWidth, pageHeight, 7);
|
|
101
|
+
const { blockWidth, blockHeight, getPosition } = layout;
|
|
102
|
+
|
|
103
|
+
const imageUri = 'https://img.ly/static/ubq_samples/sample_1.jpg';
|
|
104
|
+
const blockSize = { width: blockWidth, height: blockHeight };
|
|
105
|
+
|
|
106
|
+
// ===== Section 1: Check Fill Support =====
|
|
107
|
+
// Check if a block supports fills before accessing fill APIs
|
|
108
|
+
const testBlock = engine.block.create('graphic');
|
|
109
|
+
const canHaveFill = engine.block.supportsFill(testBlock);
|
|
110
|
+
console.log('Block supports fills:', canHaveFill);
|
|
111
|
+
engine.block.destroy(testBlock);
|
|
112
|
+
|
|
113
|
+
// ===== Section 2: Create and Apply Image Fill =====
|
|
114
|
+
// Create a new image fill using the convenience API
|
|
115
|
+
const coverImageBlock = await engine.block.addImage(imageUri, {
|
|
116
|
+
size: blockSize
|
|
117
|
+
});
|
|
118
|
+
engine.block.appendChild(page, coverImageBlock);
|
|
119
|
+
|
|
120
|
+
// Or create manually for more control
|
|
121
|
+
const manualBlock = engine.block.create('graphic');
|
|
122
|
+
engine.block.setShape(manualBlock, engine.block.createShape('rect'));
|
|
123
|
+
engine.block.setWidth(manualBlock, blockWidth);
|
|
124
|
+
engine.block.setHeight(manualBlock, blockHeight);
|
|
125
|
+
|
|
126
|
+
const imageFill = engine.block.createFill('image');
|
|
127
|
+
engine.block.setString(
|
|
128
|
+
imageFill,
|
|
129
|
+
'fill/image/imageFileURI',
|
|
130
|
+
'https://img.ly/static/ubq_samples/sample_2.jpg'
|
|
131
|
+
);
|
|
132
|
+
engine.block.setFill(manualBlock, imageFill);
|
|
133
|
+
engine.block.appendChild(page, manualBlock);
|
|
134
|
+
|
|
135
|
+
// Get the current fill from a block
|
|
136
|
+
const currentFill = engine.block.getFill(coverImageBlock);
|
|
137
|
+
const fillType = engine.block.getType(currentFill);
|
|
138
|
+
console.log('Fill type:', fillType); // '//ly.img.ubq/fill/image'
|
|
139
|
+
|
|
140
|
+
// ===== Section 3: Content Fill Modes =====
|
|
141
|
+
// Cover mode: Fill entire block, may crop image
|
|
142
|
+
const coverBlock = await engine.block.addImage(
|
|
143
|
+
'https://img.ly/static/ubq_samples/sample_3.jpg',
|
|
144
|
+
{
|
|
145
|
+
size: blockSize
|
|
146
|
+
}
|
|
147
|
+
);
|
|
148
|
+
engine.block.appendChild(page, coverBlock);
|
|
149
|
+
engine.block.setEnum(coverBlock, 'contentFill/mode', 'Cover');
|
|
150
|
+
|
|
151
|
+
// Contain mode: Fit entire image, may leave empty space
|
|
152
|
+
const containBlock = await engine.block.addImage(
|
|
153
|
+
'https://img.ly/static/ubq_samples/sample_4.jpg',
|
|
154
|
+
{
|
|
155
|
+
size: blockSize
|
|
156
|
+
}
|
|
157
|
+
);
|
|
158
|
+
engine.block.appendChild(page, containBlock);
|
|
159
|
+
engine.block.setEnum(containBlock, 'contentFill/mode', 'Contain');
|
|
160
|
+
|
|
161
|
+
// Get current fill mode
|
|
162
|
+
const currentMode = engine.block.getEnum(containBlock, 'contentFill/mode');
|
|
163
|
+
console.log('Current fill mode:', currentMode);
|
|
164
|
+
|
|
165
|
+
// ===== Section 4: Source Sets (Responsive Images) =====
|
|
166
|
+
// Use source sets for responsive images
|
|
167
|
+
const responsiveBlock = engine.block.create('graphic');
|
|
168
|
+
engine.block.setShape(responsiveBlock, engine.block.createShape('rect'));
|
|
169
|
+
engine.block.setWidth(responsiveBlock, blockWidth);
|
|
170
|
+
engine.block.setHeight(responsiveBlock, blockHeight);
|
|
171
|
+
|
|
172
|
+
const responsiveFill = engine.block.createFill('image');
|
|
173
|
+
engine.block.setSourceSet(responsiveFill, 'fill/image/sourceSet', [
|
|
174
|
+
{
|
|
175
|
+
uri: 'https://img.ly/static/ubq_samples/sample_1.jpg',
|
|
176
|
+
width: 512,
|
|
177
|
+
height: 341
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
uri: 'https://img.ly/static/ubq_samples/sample_1.jpg',
|
|
181
|
+
width: 1024,
|
|
182
|
+
height: 683
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
uri: 'https://img.ly/static/ubq_samples/sample_1.jpg',
|
|
186
|
+
width: 2048,
|
|
187
|
+
height: 1366
|
|
188
|
+
}
|
|
189
|
+
]);
|
|
190
|
+
engine.block.setFill(responsiveBlock, responsiveFill);
|
|
191
|
+
engine.block.appendChild(page, responsiveBlock);
|
|
192
|
+
|
|
193
|
+
// Get current source set
|
|
194
|
+
const sourceSet = engine.block.getSourceSet(
|
|
195
|
+
responsiveFill,
|
|
196
|
+
'fill/image/sourceSet'
|
|
197
|
+
);
|
|
198
|
+
console.log('Source set entries:', sourceSet.length);
|
|
199
|
+
|
|
200
|
+
// ===== Section 5: Data URI / Base64 Images =====
|
|
201
|
+
// Use data URI for embedded images (small SVG example)
|
|
202
|
+
const svgContent = `<svg width="100" height="100" xmlns="http://www.w3.org/2000/svg">
|
|
203
|
+
<circle cx="50" cy="50" r="40" fill="#4CAF50"/>
|
|
204
|
+
<text x="50" y="55" text-anchor="middle" fill="white" font-size="20" font-weight="bold">SVG</text>
|
|
205
|
+
</svg>`;
|
|
206
|
+
const svgDataUri = `data:image/svg+xml;base64,${btoa(svgContent)}`;
|
|
207
|
+
|
|
208
|
+
const dataUriBlock = engine.block.create('graphic');
|
|
209
|
+
engine.block.setShape(dataUriBlock, engine.block.createShape('rect'));
|
|
210
|
+
engine.block.setWidth(dataUriBlock, blockWidth);
|
|
211
|
+
engine.block.setHeight(dataUriBlock, blockHeight);
|
|
212
|
+
|
|
213
|
+
const dataUriFill = engine.block.createFill('image');
|
|
214
|
+
engine.block.setString(dataUriFill, 'fill/image/imageFileURI', svgDataUri);
|
|
215
|
+
engine.block.setFill(dataUriBlock, dataUriFill);
|
|
216
|
+
engine.block.appendChild(page, dataUriBlock);
|
|
217
|
+
|
|
218
|
+
// ===== Section 6: Opacity =====
|
|
219
|
+
// Control opacity for transparency effects
|
|
220
|
+
const opacityBlock = await engine.block.addImage(
|
|
221
|
+
'https://img.ly/static/ubq_samples/sample_6.jpg',
|
|
222
|
+
{
|
|
223
|
+
size: blockSize
|
|
224
|
+
}
|
|
225
|
+
);
|
|
226
|
+
engine.block.appendChild(page, opacityBlock);
|
|
227
|
+
engine.block.setFloat(opacityBlock, 'opacity', 0.6);
|
|
228
|
+
|
|
229
|
+
// ===== Position all blocks in grid layout =====
|
|
230
|
+
const blocks = [
|
|
231
|
+
coverImageBlock, // Position 0
|
|
232
|
+
manualBlock, // Position 1
|
|
233
|
+
coverBlock, // Position 2
|
|
234
|
+
containBlock, // Position 3
|
|
235
|
+
responsiveBlock, // Position 4
|
|
236
|
+
dataUriBlock, // Position 5
|
|
237
|
+
opacityBlock // Position 6
|
|
238
|
+
];
|
|
239
|
+
|
|
240
|
+
blocks.forEach((block, index) => {
|
|
241
|
+
const pos = getPosition(index);
|
|
242
|
+
engine.block.setPositionX(block, pos.x);
|
|
243
|
+
engine.block.setPositionY(block, pos.y);
|
|
244
|
+
});
|
|
245
|
+
|
|
246
|
+
// Zoom to show all content
|
|
247
|
+
await engine.scene.zoomToBlock(page);
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
export default Example;
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
This guide covers how to create and apply image fills programmatically, configure content fill modes, work with responsive images, and load images from different sources.
|
|
255
|
+
|
|
256
|
+
## Understanding Image Fills
|
|
257
|
+
|
|
258
|
+
Image fills are one of the fundamental fill types in CE.SDK, identified by the type `'//ly.img.ubq/fill/image'` or simply `'image'`. Unlike color fills that provide solid colors or gradient fills that create color transitions, image fills paint blocks with photographic or graphic content from image files.
|
|
259
|
+
|
|
260
|
+
CE.SDK supports common image formats including PNG, JPEG, JPG, GIF, WebP, SVG, and BMP, with transparency support in formats like PNG, WebP, and SVG. The image fill system handles content scaling, positioning, and optimization automatically while giving you full programmatic control when needed.
|
|
261
|
+
|
|
262
|
+
## Checking Image Fill Support
|
|
263
|
+
|
|
264
|
+
Before working with fills, we should verify that a block supports fill operations. Not all blocks in CE.SDK can have fills—for example, scenes and pages typically don't support fills, while graphic blocks, shapes, and text blocks do.
|
|
265
|
+
|
|
266
|
+
```typescript highlight-check-fill-support
|
|
267
|
+
// Check if a block supports fills before accessing fill APIs
|
|
268
|
+
const testBlock = engine.block.create('graphic');
|
|
269
|
+
const canHaveFill = engine.block.supportsFill(testBlock);
|
|
270
|
+
console.log('Block supports fills:', canHaveFill);
|
|
271
|
+
engine.block.destroy(testBlock);
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
The `supportsFill()` method returns `true` if the block can have a fill assigned to it. Always check this before attempting to access fill APIs to avoid errors.
|
|
275
|
+
|
|
276
|
+
## Creating Image Fills
|
|
277
|
+
|
|
278
|
+
CE.SDK provides two approaches for creating image fills: a convenience API for quick block creation, and manual creation for more control over the fill configuration.
|
|
279
|
+
|
|
280
|
+
### Using the Convenience API
|
|
281
|
+
|
|
282
|
+
The fastest way to create a block with an image fill is using the `addImage()` method, which creates a graphic block, configures the image fill, and adds it to the scene in one operation:
|
|
283
|
+
|
|
284
|
+
```typescript highlight-create-image-fill
|
|
285
|
+
// Create a new image fill using the convenience API
|
|
286
|
+
const coverImageBlock = await engine.block.addImage(imageUri, {
|
|
287
|
+
size: blockSize
|
|
288
|
+
});
|
|
289
|
+
engine.block.appendChild(page, coverImageBlock);
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
This convenience method handles all the underlying setup automatically, including creating the graphic block, shape, fill, and positioning.
|
|
293
|
+
|
|
294
|
+
### Manual Image Fill Creation
|
|
295
|
+
|
|
296
|
+
For more control over the fill configuration or to apply fills to existing blocks, you can create fills manually:
|
|
297
|
+
|
|
298
|
+
```typescript highlight-manual-fill-creation
|
|
299
|
+
// Or create manually for more control
|
|
300
|
+
const manualBlock = engine.block.create('graphic');
|
|
301
|
+
engine.block.setShape(manualBlock, engine.block.createShape('rect'));
|
|
302
|
+
engine.block.setWidth(manualBlock, blockWidth);
|
|
303
|
+
engine.block.setHeight(manualBlock, blockHeight);
|
|
304
|
+
|
|
305
|
+
const imageFill = engine.block.createFill('image');
|
|
306
|
+
engine.block.setString(
|
|
307
|
+
imageFill,
|
|
308
|
+
'fill/image/imageFileURI',
|
|
309
|
+
'https://img.ly/static/ubq_samples/sample_2.jpg'
|
|
310
|
+
);
|
|
311
|
+
engine.block.setFill(manualBlock, imageFill);
|
|
312
|
+
engine.block.appendChild(page, manualBlock);
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
When creating fills manually, the fill exists independently until you attach it to a block using `setFill()`. If you create a fill but don't attach it to a block, you must destroy it manually to avoid memory leaks.
|
|
316
|
+
|
|
317
|
+
### Getting the Current Fill
|
|
318
|
+
|
|
319
|
+
You can retrieve the fill from any block and inspect its type to verify it's an image fill:
|
|
320
|
+
|
|
321
|
+
```typescript highlight-get-current-fill
|
|
322
|
+
// Get the current fill from a block
|
|
323
|
+
const currentFill = engine.block.getFill(coverImageBlock);
|
|
324
|
+
const fillType = engine.block.getType(currentFill);
|
|
325
|
+
console.log('Fill type:', fillType); // '//ly.img.ubq/fill/image'
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
The `getFill()` method returns the fill's block ID, which you can then use to query the fill's type and properties.
|
|
329
|
+
|
|
330
|
+
## Configuring Content Fill Modes
|
|
331
|
+
|
|
332
|
+
Content fill modes control how images scale and position within their containing blocks. CE.SDK provides two primary modes: Cover and Contain, each optimized for different use cases.
|
|
333
|
+
|
|
334
|
+
### Cover Mode
|
|
335
|
+
|
|
336
|
+
Cover mode ensures the image fills the entire block while maintaining its aspect ratio. Parts of the image may be cropped if the aspect ratios don't match, but there will never be empty space in the block:
|
|
337
|
+
|
|
338
|
+
```typescript highlight-fill-mode-cover
|
|
339
|
+
// Cover mode: Fill entire block, may crop image
|
|
340
|
+
const coverBlock = await engine.block.addImage(
|
|
341
|
+
'https://img.ly/static/ubq_samples/sample_3.jpg',
|
|
342
|
+
{
|
|
343
|
+
size: blockSize
|
|
344
|
+
}
|
|
345
|
+
);
|
|
346
|
+
engine.block.appendChild(page, coverBlock);
|
|
347
|
+
engine.block.setEnum(coverBlock, 'contentFill/mode', 'Cover');
|
|
348
|
+
```
|
|
349
|
+
|
|
350
|
+
Cover mode is ideal for backgrounds, hero images, and photo frames where you want the block completely filled with image content. The image is scaled to cover the entire area, and any overflow is cropped.
|
|
351
|
+
|
|
352
|
+
### Contain Mode
|
|
353
|
+
|
|
354
|
+
Contain mode fits the entire image within the block while maintaining its aspect ratio. This may leave empty space if the aspect ratios don't match, but the entire image will always be visible:
|
|
355
|
+
|
|
356
|
+
```typescript highlight-fill-mode-contain
|
|
357
|
+
// Contain mode: Fit entire image, may leave empty space
|
|
358
|
+
const containBlock = await engine.block.addImage(
|
|
359
|
+
'https://img.ly/static/ubq_samples/sample_4.jpg',
|
|
360
|
+
{
|
|
361
|
+
size: blockSize
|
|
362
|
+
}
|
|
363
|
+
);
|
|
364
|
+
engine.block.appendChild(page, containBlock);
|
|
365
|
+
engine.block.setEnum(containBlock, 'contentFill/mode', 'Contain');
|
|
366
|
+
```
|
|
367
|
+
|
|
368
|
+
Contain mode is best for logos, product images, and situations where preserving the complete image visibility is more important than filling the entire block.
|
|
369
|
+
|
|
370
|
+
### Getting the Current Fill Mode
|
|
371
|
+
|
|
372
|
+
You can query the current fill mode to understand how the image is being displayed:
|
|
373
|
+
|
|
374
|
+
```typescript highlight-get-fill-mode
|
|
375
|
+
// Get current fill mode
|
|
376
|
+
const currentMode = engine.block.getEnum(containBlock, 'contentFill/mode');
|
|
377
|
+
console.log('Current fill mode:', currentMode);
|
|
378
|
+
```
|
|
379
|
+
|
|
380
|
+
This returns either `'Cover'` or `'Contain'` depending on the current configuration.
|
|
381
|
+
|
|
382
|
+
## Working with Source Sets
|
|
383
|
+
|
|
384
|
+
Source sets enable responsive images by providing multiple resolutions of the same image. The engine automatically selects the most appropriate size based on the current display context, optimizing both performance and visual quality.
|
|
385
|
+
|
|
386
|
+
### Setting Up a Source Set
|
|
387
|
+
|
|
388
|
+
A source set is an array of image sources, each with a URI and dimensions:
|
|
389
|
+
|
|
390
|
+
```typescript highlight-source-set
|
|
391
|
+
// Use source sets for responsive images
|
|
392
|
+
const responsiveBlock = engine.block.create('graphic');
|
|
393
|
+
engine.block.setShape(responsiveBlock, engine.block.createShape('rect'));
|
|
394
|
+
engine.block.setWidth(responsiveBlock, blockWidth);
|
|
395
|
+
engine.block.setHeight(responsiveBlock, blockHeight);
|
|
396
|
+
|
|
397
|
+
const responsiveFill = engine.block.createFill('image');
|
|
398
|
+
engine.block.setSourceSet(responsiveFill, 'fill/image/sourceSet', [
|
|
399
|
+
{
|
|
400
|
+
uri: 'https://img.ly/static/ubq_samples/sample_1.jpg',
|
|
401
|
+
width: 512,
|
|
402
|
+
height: 341
|
|
403
|
+
},
|
|
404
|
+
{
|
|
405
|
+
uri: 'https://img.ly/static/ubq_samples/sample_1.jpg',
|
|
406
|
+
width: 1024,
|
|
407
|
+
height: 683
|
|
408
|
+
},
|
|
409
|
+
{
|
|
410
|
+
uri: 'https://img.ly/static/ubq_samples/sample_1.jpg',
|
|
411
|
+
width: 2048,
|
|
412
|
+
height: 1366
|
|
413
|
+
}
|
|
414
|
+
]);
|
|
415
|
+
engine.block.setFill(responsiveBlock, responsiveFill);
|
|
416
|
+
engine.block.appendChild(page, responsiveBlock);
|
|
417
|
+
```
|
|
418
|
+
|
|
419
|
+
Each entry in the source set specifies a URI and the image's width and height in pixels. The engine calculates the current drawing size and selects the source with the closest size that exceeds the required dimensions.
|
|
420
|
+
|
|
421
|
+
> **Note:** Source sets are particularly valuable for optimizing bandwidth usage during
|
|
422
|
+
> preview while ensuring high-resolution output during export. The engine
|
|
423
|
+
> automatically uses the highest resolution available when exporting.
|
|
424
|
+
|
|
425
|
+
### Retrieving Source Sets
|
|
426
|
+
|
|
427
|
+
You can get the current source set from a fill to inspect or modify it:
|
|
428
|
+
|
|
429
|
+
```typescript highlight-get-source-set
|
|
430
|
+
// Get current source set
|
|
431
|
+
const sourceSet = engine.block.getSourceSet(
|
|
432
|
+
responsiveFill,
|
|
433
|
+
'fill/image/sourceSet'
|
|
434
|
+
);
|
|
435
|
+
console.log('Source set entries:', sourceSet.length);
|
|
436
|
+
```
|
|
437
|
+
|
|
438
|
+
## Loading Images from Different Sources
|
|
439
|
+
|
|
440
|
+
CE.SDK's image fills support multiple image source types, giving you flexibility in how you provide image content to your designs.
|
|
441
|
+
|
|
442
|
+
### Data URIs and Base64
|
|
443
|
+
|
|
444
|
+
You can embed image data directly using data URIs, which is particularly useful for small images, icons, or dynamically generated graphics:
|
|
445
|
+
|
|
446
|
+
```typescript highlight-data-uri
|
|
447
|
+
// Use data URI for embedded images (small SVG example)
|
|
448
|
+
const svgContent = `<svg width="100" height="100" xmlns="http://www.w3.org/2000/svg">
|
|
449
|
+
<circle cx="50" cy="50" r="40" fill="#4CAF50"/>
|
|
450
|
+
<text x="50" y="55" text-anchor="middle" fill="white" font-size="20" font-weight="bold">SVG</text>
|
|
451
|
+
</svg>`;
|
|
452
|
+
const svgDataUri = `data:image/svg+xml;base64,${btoa(svgContent)}`;
|
|
453
|
+
|
|
454
|
+
const dataUriBlock = engine.block.create('graphic');
|
|
455
|
+
engine.block.setShape(dataUriBlock, engine.block.createShape('rect'));
|
|
456
|
+
engine.block.setWidth(dataUriBlock, blockWidth);
|
|
457
|
+
engine.block.setHeight(dataUriBlock, blockHeight);
|
|
458
|
+
|
|
459
|
+
const dataUriFill = engine.block.createFill('image');
|
|
460
|
+
engine.block.setString(dataUriFill, 'fill/image/imageFileURI', svgDataUri);
|
|
461
|
+
engine.block.setFill(dataUriBlock, dataUriFill);
|
|
462
|
+
engine.block.appendChild(page, dataUriBlock);
|
|
463
|
+
```
|
|
464
|
+
|
|
465
|
+
Data URIs embed the entire image within the URI string itself, eliminating the need for network requests. However, this increases the scene file size, so it's best reserved for smaller images or cases where you need guaranteed availability without network dependencies.
|
|
466
|
+
|
|
467
|
+
## Additional Techniques
|
|
468
|
+
|
|
469
|
+
### Controlling Opacity
|
|
470
|
+
|
|
471
|
+
You can control the overall opacity of blocks with image fills, affecting the entire block including its fill:
|
|
472
|
+
|
|
473
|
+
```typescript highlight-opacity
|
|
474
|
+
// Control opacity for transparency effects
|
|
475
|
+
const opacityBlock = await engine.block.addImage(
|
|
476
|
+
'https://img.ly/static/ubq_samples/sample_6.jpg',
|
|
477
|
+
{
|
|
478
|
+
size: blockSize
|
|
479
|
+
}
|
|
480
|
+
);
|
|
481
|
+
engine.block.appendChild(page, opacityBlock);
|
|
482
|
+
engine.block.setFloat(opacityBlock, 'opacity', 0.6);
|
|
483
|
+
```
|
|
484
|
+
|
|
485
|
+
The opacity value ranges from 0 (fully transparent) to 1 (fully opaque). This affects the entire block, including the image fill. For transparency within the image itself, use image formats that support alpha channels like PNG, WebP, or SVG.
|
|
486
|
+
|
|
487
|
+
> **Note:** Opacity is a block property, not a fill property. It affects the entire block
|
|
488
|
+
> including any strokes, effects, or other visual properties applied to the
|
|
489
|
+
> block.
|
|
490
|
+
|
|
491
|
+
## API Reference
|
|
492
|
+
|
|
493
|
+
### Core Methods
|
|
494
|
+
|
|
495
|
+
| Method | Description |
|
|
496
|
+
| --------------------------------------- | -------------------------------------------------- |
|
|
497
|
+
| `createFill('image')` | Create a new image fill object |
|
|
498
|
+
| `setFill(block, fill)` | Assign an image fill to a block |
|
|
499
|
+
| `getFill(block)` | Get the fill ID from a block |
|
|
500
|
+
| `setString(fill, property, value)` | Set the image URI |
|
|
501
|
+
| `getString(fill, property)` | Get the current image URI |
|
|
502
|
+
| `setSourceSet(fill, property, sources)` | Set responsive image sources |
|
|
503
|
+
| `getSourceSet(fill, property)` | Get current source set |
|
|
504
|
+
| `setEnum(block, property, value)` | Set content fill mode |
|
|
505
|
+
| `getEnum(block, property)` | Get current fill mode |
|
|
506
|
+
| `supportsFill(block)` | Check if block supports fills |
|
|
507
|
+
| `addImage(url, options)` | Convenience method to create image block with fill |
|
|
508
|
+
|
|
509
|
+
### Image Fill Properties
|
|
510
|
+
|
|
511
|
+
| Property | Type | Description |
|
|
512
|
+
| ------------------------- | ------------ | ------------------------------------------------- |
|
|
513
|
+
| `fill/image/imageFileURI` | String | Single image URI (URL, data URI, or file path) |
|
|
514
|
+
| `fill/image/sourceSet` | SourceSet\[] | Array of responsive image sources with dimensions |
|
|
515
|
+
|
|
516
|
+
### Content Fill Properties
|
|
517
|
+
|
|
518
|
+
| Property | Type | Values | Description |
|
|
519
|
+
| ------------------ | ---- | ------------------ | ------------------------------------- |
|
|
520
|
+
| `contentFill/mode` | Enum | 'Cover', 'Contain' | How the image scales within its block |
|
|
521
|
+
|
|
522
|
+
### SourceSet Interface
|
|
523
|
+
|
|
524
|
+
```typescript
|
|
525
|
+
interface SourceSetEntry {
|
|
526
|
+
uri: string; // Image URI
|
|
527
|
+
width: number; // Image width in pixels
|
|
528
|
+
height: number; // Image height in pixels
|
|
529
|
+
}
|
|
530
|
+
```
|
|
531
|
+
|
|
532
|
+
---
|
|
533
|
+
|
|
534
|
+
## More Resources
|
|
535
|
+
|
|
536
|
+
- **[Vanilla JS/TS Documentation Index](https://img.ly/docs/cesdk/js.md)** - Browse all Vanilla JS/TS documentation
|
|
537
|
+
- **[Complete Documentation](./llms-full.txt.md)** - Full documentation in one file (for LLMs)
|
|
538
|
+
- **[Web Documentation](./js.md)** - Interactive documentation with examples
|
|
539
|
+
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
> This is one page of the CE.SDK Vanilla JS/TS documentation. For a complete overview, see the [Vanilla JS/TS Documentation Index](https://img.ly/docs/cesdk/js.md). For all docs in one file, see [llms-full.txt](./llms-full.txt.md).
|
|
2
|
+
|
|
3
|
+
**Navigation:** [Guides](./guides.md) > [Fills](./fills.md) > [Overview](./fills/overview.md)
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Some [design blocks](./concepts/blocks.md) in CE.SDK allow you to modify or replace their fill. The fill is an object that defines the contents within the shape of a block. CreativeEditor SDK supports many different types of fills, such as images, solid colors, gradients and videos.
|
|
8
|
+
|
|
9
|
+
Similarly to blocks, each fill has a numeric id which can be used to query and [modify its properties](./concepts/blocks.md).
|
|
10
|
+
|
|
11
|
+
We currently support the following fill types:
|
|
12
|
+
|
|
13
|
+
- `'//ly.img.ubq/fill/color'`
|
|
14
|
+
- `'//ly.img.ubq/fill/gradient/linear'`
|
|
15
|
+
- `'//ly.img.ubq/fill/gradient/radial'`
|
|
16
|
+
- `'//ly.img.ubq/fill/gradient/conical'`
|
|
17
|
+
- `'//ly.img.ubq/fill/image'`
|
|
18
|
+
- `'//ly.img.ubq/fill/video'`
|
|
19
|
+
- `'//ly.img.ubq/fill/pixelStream'`
|
|
20
|
+
|
|
21
|
+
Note: short types are also accepted, e.g. 'color' instead of '//ly.img.ubq/fill/color'.
|
|
22
|
+
|
|
23
|
+
## Accessing Fills
|
|
24
|
+
|
|
25
|
+
Not all types of design blocks support fills, so you should always first call the `supportsFill(id: number): boolean` API before accessing any of the following APIs.
|
|
26
|
+
|
|
27
|
+
```javascript
|
|
28
|
+
engine.block.supportsFill(scene); // Returns false
|
|
29
|
+
engine.block.supportsFill(block); // Returns true
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
In order to receive the fill id of a design block, call the `getFill(id: number): number` API. You can now pass this id into other APIs in order to query more information about the fill, e.g. its type via the `getType(id: number): ObjectType` API.
|
|
33
|
+
|
|
34
|
+
```javascript
|
|
35
|
+
const colorFill = engine.block.getFill(block);
|
|
36
|
+
const defaultRectFillType = engine.block.getType(colorFill);
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Fill Properties
|
|
40
|
+
|
|
41
|
+
Just like design blocks, fills with different types have different properties that you can query and modify via the API. Use `findAllProperties(id: number): string[]` in order to get a list of all properties of a given fill.
|
|
42
|
+
|
|
43
|
+
For the solid color fill in this example, the call would return `["fill/color/value", "type"]`.
|
|
44
|
+
|
|
45
|
+
Please refer to the [design blocks](./concepts/blocks.md) for a complete list of all available properties for each type of fill.
|
|
46
|
+
|
|
47
|
+
```javascript
|
|
48
|
+
const allFillProperties = engine.block.findAllProperties(colorFill);
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Once we know the property keys of a fill, we can use the same APIs as for design blocks in order to modify those properties. For example, we can use `setColor(id: number, property: string, value: Color): void` in order to change the color of the fill to red.
|
|
52
|
+
|
|
53
|
+
Once we do this, our graphic block with rect shape will be filled with solid red.
|
|
54
|
+
|
|
55
|
+
```javascript
|
|
56
|
+
engine.block.setColor(colorFill, 'fill/color/value', {
|
|
57
|
+
r: 1.0,
|
|
58
|
+
g: 0.0,
|
|
59
|
+
b: 0.0,
|
|
60
|
+
a: 1.0
|
|
61
|
+
});
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Disabling Fills
|
|
65
|
+
|
|
66
|
+
You can disable and enable a fill using the `setFillEnabled(id: number, enabled: boolean): void` API, for example in cases where the design block should only have a stroke but no fill. Notice that you have to pass the id of the design block and not of the fill to the API.
|
|
67
|
+
|
|
68
|
+
```javascript
|
|
69
|
+
engine.block.setFillEnabled(block, false);
|
|
70
|
+
engine.block.setFillEnabled(block, !engine.block.isFillEnabled(block));
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## Changing Fill Types
|
|
74
|
+
|
|
75
|
+
All design blocks that support fills allow you to also exchange their current fill for any other type of fill. In order to do this, you need to first create a new fill object using `createFill(type: FillType): number`.
|
|
76
|
+
|
|
77
|
+
```javascript
|
|
78
|
+
const imageFill = engine.block.createFill('image');
|
|
79
|
+
engine.block.setString(
|
|
80
|
+
imageFill,
|
|
81
|
+
'fill/image/imageFileURI',
|
|
82
|
+
'https://img.ly/static/ubq_samples/sample_1.jpg'
|
|
83
|
+
);
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
In order to assign a fill to a design block, simply call `setFill(id: number, fill: number): void`. Make sure to delete the previous fill of the design block first if you don't need it any more, otherwise we will have leaked it into the scene and won't be able to access it any more, because we don't know its id.
|
|
87
|
+
|
|
88
|
+
Notice that we don't use the `appendChild` API here, which only works with design blocks and not fills.
|
|
89
|
+
|
|
90
|
+
When a fill is attached to one design block, it will be automatically destroyed when the block itself gets destroyed.
|
|
91
|
+
|
|
92
|
+
```javascript
|
|
93
|
+
engine.block.destroy(engine.block.getFill(block));
|
|
94
|
+
engine.block.setFill(block, imageFill);
|
|
95
|
+
|
|
96
|
+
/* The following line would also destroy imageFill */
|
|
97
|
+
// engine.block.destroy(circle);
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
## Duplicating Fills
|
|
101
|
+
|
|
102
|
+
If we duplicate a design block with a fill that is only attached to this block, the fill will automatically be duplicated as well. In order to modify the properties of the duplicate fill, we have to query its id from the duplicate block.
|
|
103
|
+
|
|
104
|
+
```javascript
|
|
105
|
+
const duplicateBlock = engine.block.duplicate(block);
|
|
106
|
+
engine.block.setPositionX(duplicateBlock, 450);
|
|
107
|
+
const autoDuplicateFill = engine.block.getFill(duplicateBlock);
|
|
108
|
+
engine.block.setString(
|
|
109
|
+
autoDuplicateFill,
|
|
110
|
+
'fill/image/imageFileURI',
|
|
111
|
+
'https://img.ly/static/ubq_samples/sample_2.jpg'
|
|
112
|
+
);
|
|
113
|
+
|
|
114
|
+
// const manualDuplicateFill = engine.block.duplicate(autoDuplicateFill);
|
|
115
|
+
// /* We could now assign this fill to another block. */
|
|
116
|
+
// engine.block.destroy(manualDuplicateFill);
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
## Sharing Fills
|
|
120
|
+
|
|
121
|
+
It is also possible to share a single fill instance between multiple design blocks. In that case, changing the properties of the fill will apply to all of the blocks that it's attached to at once.
|
|
122
|
+
|
|
123
|
+
Destroying a block with a shared fill will not destroy the fill until there are no other design blocks left that still use that fill.
|
|
124
|
+
|
|
125
|
+
```javascript
|
|
126
|
+
const sharedFillBlock = engine.block.create('graphic');
|
|
127
|
+
engine.block.setShape(sharedFillBlock, engine.block.createShape('rect'));
|
|
128
|
+
engine.block.setPositionX(sharedFillBlock, 350);
|
|
129
|
+
engine.block.setPositionY(sharedFillBlock, 400);
|
|
130
|
+
engine.block.setWidth(sharedFillBlock, 100);
|
|
131
|
+
engine.block.setHeight(sharedFillBlock, 100);
|
|
132
|
+
engine.block.appendChild(page, sharedFillBlock);
|
|
133
|
+
|
|
134
|
+
engine.block.setFill(sharedFillBlock, engine.block.getFill(block));
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
## More Resources
|
|
140
|
+
|
|
141
|
+
- **[Vanilla JS/TS Documentation Index](https://img.ly/docs/cesdk/js.md)** - Browse all Vanilla JS/TS documentation
|
|
142
|
+
- **[Complete Documentation](./llms-full.txt.md)** - Full documentation in one file (for LLMs)
|
|
143
|
+
- **[Web Documentation](./js.md)** - Interactive documentation with examples
|
|
144
|
+
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
|