@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,523 @@
|
|
|
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) > [Transform](./edit-image/transform.md) > [Crop](./edit-image/transform/crop.md)
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Crop images to focus on key subjects, remove unwanted elements, or prepare
|
|
8
|
+
visuals for specific formats like social media or print using CE.SDK's crop
|
|
9
|
+
system.
|
|
10
|
+
|
|
11
|
+

|
|
12
|
+
|
|
13
|
+
> **Reading time:** 10 minutes
|
|
14
|
+
>
|
|
15
|
+
> **Resources:**
|
|
16
|
+
>
|
|
17
|
+
> - [Download examples](https://github.com/imgly/cesdk-web-examples/archive/refs/tags/release-$UBQ_VERSION$.zip)
|
|
18
|
+
> - [View source on GitHub](https://github.com/imgly/cesdk-web-examples/tree/release-$UBQ_VERSION$/guides-edit-image-transform-crop-browser)
|
|
19
|
+
> - [Open in StackBlitz](https://stackblitz.com/github/imgly/cesdk-web-examples/tree/v$UBQ_VERSION$/guides-edit-image-transform-crop-browser)
|
|
20
|
+
> - [Live demo](https://img.ly/docs/cesdk/examples/guides-edit-image-transform-crop-browser/)
|
|
21
|
+
|
|
22
|
+
Image cropping in CreativeEditor SDK (CE.SDK) lets you select a region inside an image and discard everything outside that frame. Unlike resizing which changes overall dimensions uniformly, cropping removes unwanted areas while preserving original pixel quality in the selected region.
|
|
23
|
+
|
|
24
|
+
```typescript file=@cesdk_web_examples/guides-edit-image-transform-crop-browser/browser.ts reference-only
|
|
25
|
+
import type { EditorPlugin, EditorPluginContext } from '@cesdk/cesdk-js';
|
|
26
|
+
|
|
27
|
+
import {
|
|
28
|
+
BlurAssetSource,
|
|
29
|
+
ColorPaletteAssetSource,
|
|
30
|
+
CropPresetsAssetSource,
|
|
31
|
+
DemoAssetSources,
|
|
32
|
+
EffectsAssetSource,
|
|
33
|
+
FiltersAssetSource,
|
|
34
|
+
PagePresetsAssetSource,
|
|
35
|
+
StickerAssetSource,
|
|
36
|
+
TextAssetSource,
|
|
37
|
+
TextComponentAssetSource,
|
|
38
|
+
TypefaceAssetSource,
|
|
39
|
+
UploadAssetSources,
|
|
40
|
+
VectorShapeAssetSource
|
|
41
|
+
} from '@cesdk/cesdk-js/plugins';
|
|
42
|
+
import { DesignEditorConfig } from './design-editor/plugin';
|
|
43
|
+
import packageJson from './package.json';
|
|
44
|
+
|
|
45
|
+
class Example implements EditorPlugin {
|
|
46
|
+
name = packageJson.name;
|
|
47
|
+
version = packageJson.version;
|
|
48
|
+
|
|
49
|
+
async initialize({ cesdk }: EditorPluginContext): Promise<void> {
|
|
50
|
+
if (!cesdk) {
|
|
51
|
+
throw new Error('CE.SDK instance is required for this plugin');
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
await cesdk.addPlugin(new DesignEditorConfig());
|
|
55
|
+
|
|
56
|
+
// Add asset source plugins
|
|
57
|
+
await cesdk.addPlugin(new BlurAssetSource());
|
|
58
|
+
await cesdk.addPlugin(new ColorPaletteAssetSource());
|
|
59
|
+
await cesdk.addPlugin(new CropPresetsAssetSource());
|
|
60
|
+
await cesdk.addPlugin(
|
|
61
|
+
new UploadAssetSources({ include: ['ly.img.image.upload'] })
|
|
62
|
+
);
|
|
63
|
+
await cesdk.addPlugin(
|
|
64
|
+
new DemoAssetSources({
|
|
65
|
+
include: [
|
|
66
|
+
'ly.img.templates.blank.*',
|
|
67
|
+
'ly.img.templates.presentation.*',
|
|
68
|
+
'ly.img.templates.print.*',
|
|
69
|
+
'ly.img.templates.social.*',
|
|
70
|
+
'ly.img.image.*'
|
|
71
|
+
]
|
|
72
|
+
})
|
|
73
|
+
);
|
|
74
|
+
await cesdk.addPlugin(new EffectsAssetSource());
|
|
75
|
+
await cesdk.addPlugin(new FiltersAssetSource());
|
|
76
|
+
await cesdk.addPlugin(new PagePresetsAssetSource());
|
|
77
|
+
await cesdk.addPlugin(new StickerAssetSource());
|
|
78
|
+
await cesdk.addPlugin(new TextAssetSource());
|
|
79
|
+
await cesdk.addPlugin(new TextComponentAssetSource());
|
|
80
|
+
await cesdk.addPlugin(new TypefaceAssetSource());
|
|
81
|
+
await cesdk.addPlugin(new VectorShapeAssetSource());
|
|
82
|
+
|
|
83
|
+
await cesdk.actions.run('scene.create', {
|
|
84
|
+
page: { width: 800, height: 600, unit: 'Pixel' }
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
const engine = cesdk.engine;
|
|
88
|
+
|
|
89
|
+
// Get the page from the scene
|
|
90
|
+
const pages = engine.block.findByType('page');
|
|
91
|
+
const page = pages[0];
|
|
92
|
+
|
|
93
|
+
// Add an image using the convenience API
|
|
94
|
+
const imageUri = 'https://img.ly/static/ubq_samples/sample_1.jpg';
|
|
95
|
+
const imageBlock = await engine.block.addImage(imageUri, {
|
|
96
|
+
size: { width: 300, height: 200 }
|
|
97
|
+
});
|
|
98
|
+
engine.block.appendChild(page, imageBlock);
|
|
99
|
+
engine.block.setPositionX(imageBlock, 50);
|
|
100
|
+
engine.block.setPositionY(imageBlock, 50);
|
|
101
|
+
|
|
102
|
+
// Verify the block supports cropping before applying crop operations
|
|
103
|
+
const supportsCrop = engine.block.supportsCrop(imageBlock);
|
|
104
|
+
console.log('Block supports crop:', supportsCrop);
|
|
105
|
+
|
|
106
|
+
// Check if the block supports content fill modes
|
|
107
|
+
const supportsFillMode = engine.block.supportsContentFillMode(imageBlock);
|
|
108
|
+
console.log('Supports content fill mode:', supportsFillMode);
|
|
109
|
+
|
|
110
|
+
// Get the current content fill mode
|
|
111
|
+
const currentMode = engine.block.getContentFillMode(imageBlock);
|
|
112
|
+
console.log('Current fill mode:', currentMode);
|
|
113
|
+
|
|
114
|
+
// Set content fill mode - options are 'Crop', 'Cover', 'Contain'
|
|
115
|
+
// 'Cover' automatically scales and positions to fill the entire frame
|
|
116
|
+
engine.block.setContentFillMode(imageBlock, 'Cover');
|
|
117
|
+
|
|
118
|
+
// Create another image block to demonstrate crop scaling
|
|
119
|
+
const scaleBlock = await engine.block.addImage(imageUri, {
|
|
120
|
+
size: { width: 200, height: 200 }
|
|
121
|
+
});
|
|
122
|
+
engine.block.appendChild(page, scaleBlock);
|
|
123
|
+
engine.block.setPositionX(scaleBlock, 400);
|
|
124
|
+
engine.block.setPositionY(scaleBlock, 50);
|
|
125
|
+
|
|
126
|
+
// Set content fill mode to 'Crop' for manual control
|
|
127
|
+
engine.block.setContentFillMode(scaleBlock, 'Crop');
|
|
128
|
+
|
|
129
|
+
// Scale the content within the crop frame
|
|
130
|
+
// Values > 1 zoom in, values < 1 zoom out
|
|
131
|
+
engine.block.setCropScaleX(scaleBlock, 1.5);
|
|
132
|
+
engine.block.setCropScaleY(scaleBlock, 1.5);
|
|
133
|
+
|
|
134
|
+
// Or use uniform scaling from center
|
|
135
|
+
engine.block.setCropScaleRatio(scaleBlock, 1.2);
|
|
136
|
+
|
|
137
|
+
// Get the current scale values
|
|
138
|
+
const scaleX = engine.block.getCropScaleX(scaleBlock);
|
|
139
|
+
const scaleY = engine.block.getCropScaleY(scaleBlock);
|
|
140
|
+
const scaleRatio = engine.block.getCropScaleRatio(scaleBlock);
|
|
141
|
+
console.log('Crop scale:', { scaleX, scaleY, scaleRatio });
|
|
142
|
+
|
|
143
|
+
// Pan the content within the crop frame using translation
|
|
144
|
+
// Values are in percentage of the crop frame dimensions
|
|
145
|
+
engine.block.setCropTranslationX(scaleBlock, 0.1); // Move 10% right
|
|
146
|
+
engine.block.setCropTranslationY(scaleBlock, -0.1); // Move 10% up
|
|
147
|
+
|
|
148
|
+
// Get the current translation values
|
|
149
|
+
const translationX = engine.block.getCropTranslationX(scaleBlock);
|
|
150
|
+
const translationY = engine.block.getCropTranslationY(scaleBlock);
|
|
151
|
+
console.log('Crop translation:', { translationX, translationY });
|
|
152
|
+
|
|
153
|
+
// Ensure content covers the entire frame without gaps
|
|
154
|
+
// The minScaleRatio parameter sets the minimum scale allowed
|
|
155
|
+
const adjustedRatio = engine.block.adjustCropToFillFrame(scaleBlock, 1.0);
|
|
156
|
+
console.log('Adjusted scale ratio:', adjustedRatio);
|
|
157
|
+
|
|
158
|
+
// Create an image block to demonstrate crop rotation
|
|
159
|
+
const rotateBlock = await engine.block.addImage(imageUri, {
|
|
160
|
+
size: { width: 200, height: 200 }
|
|
161
|
+
});
|
|
162
|
+
engine.block.appendChild(page, rotateBlock);
|
|
163
|
+
engine.block.setPositionX(rotateBlock, 50);
|
|
164
|
+
engine.block.setPositionY(rotateBlock, 300);
|
|
165
|
+
engine.block.setContentFillMode(rotateBlock, 'Crop');
|
|
166
|
+
|
|
167
|
+
// Rotate the content within the crop frame (in radians)
|
|
168
|
+
// Math.PI / 4 = 45 degrees
|
|
169
|
+
engine.block.setCropRotation(rotateBlock, Math.PI / 12);
|
|
170
|
+
|
|
171
|
+
// Get the current rotation
|
|
172
|
+
const rotation = engine.block.getCropRotation(rotateBlock);
|
|
173
|
+
console.log('Crop rotation (radians):', rotation);
|
|
174
|
+
|
|
175
|
+
// Ensure content still fills the frame after rotation
|
|
176
|
+
engine.block.adjustCropToFillFrame(rotateBlock, 1.0);
|
|
177
|
+
|
|
178
|
+
// Create an image block to demonstrate flipping
|
|
179
|
+
const flipBlock = await engine.block.addImage(imageUri, {
|
|
180
|
+
size: { width: 200, height: 200 }
|
|
181
|
+
});
|
|
182
|
+
engine.block.appendChild(page, flipBlock);
|
|
183
|
+
engine.block.setPositionX(flipBlock, 300);
|
|
184
|
+
engine.block.setPositionY(flipBlock, 300);
|
|
185
|
+
engine.block.setContentFillMode(flipBlock, 'Crop');
|
|
186
|
+
|
|
187
|
+
// Flip the content horizontally
|
|
188
|
+
engine.block.flipCropHorizontal(flipBlock);
|
|
189
|
+
|
|
190
|
+
// Create an image block to demonstrate aspect ratio locking
|
|
191
|
+
const lockBlock = await engine.block.addImage(imageUri, {
|
|
192
|
+
size: { width: 200, height: 200 }
|
|
193
|
+
});
|
|
194
|
+
engine.block.appendChild(page, lockBlock);
|
|
195
|
+
engine.block.setPositionX(lockBlock, 550);
|
|
196
|
+
engine.block.setPositionY(lockBlock, 300);
|
|
197
|
+
engine.block.setContentFillMode(lockBlock, 'Crop');
|
|
198
|
+
|
|
199
|
+
// Lock the crop aspect ratio - when locked, crop handles maintain
|
|
200
|
+
// the current aspect ratio during resize operations
|
|
201
|
+
engine.block.setCropAspectRatioLocked(lockBlock, true);
|
|
202
|
+
|
|
203
|
+
// Check if aspect ratio is locked
|
|
204
|
+
const isLocked = engine.block.isCropAspectRatioLocked(lockBlock);
|
|
205
|
+
console.log('Aspect ratio locked:', isLocked);
|
|
206
|
+
|
|
207
|
+
// Reset crop to default state (sets content fill mode to 'Cover')
|
|
208
|
+
engine.block.resetCrop(lockBlock);
|
|
209
|
+
|
|
210
|
+
// Select the first image block to show it in the UI
|
|
211
|
+
engine.block.select(imageBlock);
|
|
212
|
+
|
|
213
|
+
// Zoom to page for better visibility
|
|
214
|
+
cesdk.engine.scene.zoomToBlock(page, {
|
|
215
|
+
padding: { left: 0.5, top: 0.5, right: 0.5, bottom: 0.9 }
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
export default Example;
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
This guide covers both interactive cropping using the built-in UI and programmatic cropping using the engine API for automation workflows.
|
|
224
|
+
|
|
225
|
+
## Using the Built-in Crop UI
|
|
226
|
+
|
|
227
|
+
The CE.SDK default UI provides an interactive crop tool that allows users to visually adjust crop areas with real-time feedback.
|
|
228
|
+
|
|
229
|
+
### User Workflow
|
|
230
|
+
|
|
231
|
+
With the default UI configuration, users can crop images through a visual workflow:
|
|
232
|
+
|
|
233
|
+
1. **Select an image** - Click on any image block in the canvas
|
|
234
|
+
2. **Enter crop mode** - Double-click the image or click the crop icon in the toolbar
|
|
235
|
+
3. **Adjust the crop area** - Drag corners or edges to resize the visible region
|
|
236
|
+
4. **Choose aspect ratio** - Select a preset ratio if available (e.g., 1:1, 4:3, 16:9)
|
|
237
|
+
5. **Apply the crop** - Click "Done" or press Enter to apply changes
|
|
238
|
+
|
|
239
|
+
The cropped image appears in your project, but the underlying original image preserves its values, even when you rotate or resize the cropped image.
|
|
240
|
+
|
|
241
|
+
### Enable Crop Features in Custom UI
|
|
242
|
+
|
|
243
|
+
For developers building custom UIs, you can enable crop functionality using editor settings:
|
|
244
|
+
|
|
245
|
+
```typescript
|
|
246
|
+
// Enable double-click to enter crop mode
|
|
247
|
+
cesdk.editor.setSettingBool('doubleClickToCropEnabled', true);
|
|
248
|
+
|
|
249
|
+
// Show crop handles on the control gizmo
|
|
250
|
+
cesdk.editor.setSettingBool('controlGizmo/showCropHandles', true);
|
|
251
|
+
|
|
252
|
+
// Show crop scale handles
|
|
253
|
+
cesdk.editor.setSettingBool('controlGizmo/showCropScaleHandles', true);
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
### Define Preset Aspect Ratios
|
|
257
|
+
|
|
258
|
+
You can define available aspect ratios to guide user choices:
|
|
259
|
+
|
|
260
|
+
```typescript
|
|
261
|
+
const aspectRatios = [
|
|
262
|
+
'Free', // Unconstrained
|
|
263
|
+
'1:1', // Square
|
|
264
|
+
'4:5', // Instagram Portrait
|
|
265
|
+
'16:9', // Widescreen
|
|
266
|
+
'Custom:3:2' // Custom ratios
|
|
267
|
+
];
|
|
268
|
+
cesdk.editor.setSettingString('ui/crop/aspectRatios', aspectRatios.join(','));
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
> **Tip:** You can hide the aspect ratio selector entirely by setting `ui/crop/allowAspectRatioSelection` to `false`.
|
|
272
|
+
|
|
273
|
+
## Programmatic Cropping
|
|
274
|
+
|
|
275
|
+
For automation, batch processing, or dynamic applications, you can control cropping entirely through the engine API.
|
|
276
|
+
|
|
277
|
+
### Check Crop Support
|
|
278
|
+
|
|
279
|
+
Before applying crop operations, verify the block supports cropping using `engine.block.supportsCrop()`. Graphic blocks with image fills support cropping:
|
|
280
|
+
|
|
281
|
+
```typescript highlight-check-crop-support
|
|
282
|
+
// Verify the block supports cropping before applying crop operations
|
|
283
|
+
const supportsCrop = engine.block.supportsCrop(imageBlock);
|
|
284
|
+
console.log('Block supports crop:', supportsCrop);
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
### Content Fill Modes
|
|
288
|
+
|
|
289
|
+
CE.SDK provides three content fill modes that control how images fit within their frame. Set the mode using `engine.block.setContentFillMode()`:
|
|
290
|
+
|
|
291
|
+
```typescript highlight-content-fill-mode
|
|
292
|
+
// Check if the block supports content fill modes
|
|
293
|
+
const supportsFillMode = engine.block.supportsContentFillMode(imageBlock);
|
|
294
|
+
console.log('Supports content fill mode:', supportsFillMode);
|
|
295
|
+
|
|
296
|
+
// Get the current content fill mode
|
|
297
|
+
const currentMode = engine.block.getContentFillMode(imageBlock);
|
|
298
|
+
console.log('Current fill mode:', currentMode);
|
|
299
|
+
|
|
300
|
+
// Set content fill mode - options are 'Crop', 'Cover', 'Contain'
|
|
301
|
+
// 'Cover' automatically scales and positions to fill the entire frame
|
|
302
|
+
engine.block.setContentFillMode(imageBlock, 'Cover');
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
The available modes are:
|
|
306
|
+
|
|
307
|
+
- **Crop** - Manual control over the exact crop region using scale, translation, and rotation
|
|
308
|
+
- **Cover** - Automatically scale and position content to fill the entire frame (no empty areas)
|
|
309
|
+
- **Contain** - Automatically scale and position content to fit entirely within the frame (may show background)
|
|
310
|
+
|
|
311
|
+
### Scale Crop
|
|
312
|
+
|
|
313
|
+
Scale the image content within its frame using crop scale APIs. Values greater than 1.0 zoom in, values less than 1.0 zoom out:
|
|
314
|
+
|
|
315
|
+
```typescript highlight-scale-crop
|
|
316
|
+
// Create another image block to demonstrate crop scaling
|
|
317
|
+
const scaleBlock = await engine.block.addImage(imageUri, {
|
|
318
|
+
size: { width: 200, height: 200 }
|
|
319
|
+
});
|
|
320
|
+
engine.block.appendChild(page, scaleBlock);
|
|
321
|
+
engine.block.setPositionX(scaleBlock, 400);
|
|
322
|
+
engine.block.setPositionY(scaleBlock, 50);
|
|
323
|
+
|
|
324
|
+
// Set content fill mode to 'Crop' for manual control
|
|
325
|
+
engine.block.setContentFillMode(scaleBlock, 'Crop');
|
|
326
|
+
|
|
327
|
+
// Scale the content within the crop frame
|
|
328
|
+
// Values > 1 zoom in, values < 1 zoom out
|
|
329
|
+
engine.block.setCropScaleX(scaleBlock, 1.5);
|
|
330
|
+
engine.block.setCropScaleY(scaleBlock, 1.5);
|
|
331
|
+
|
|
332
|
+
// Or use uniform scaling from center
|
|
333
|
+
engine.block.setCropScaleRatio(scaleBlock, 1.2);
|
|
334
|
+
|
|
335
|
+
// Get the current scale values
|
|
336
|
+
const scaleX = engine.block.getCropScaleX(scaleBlock);
|
|
337
|
+
const scaleY = engine.block.getCropScaleY(scaleBlock);
|
|
338
|
+
const scaleRatio = engine.block.getCropScaleRatio(scaleBlock);
|
|
339
|
+
console.log('Crop scale:', { scaleX, scaleY, scaleRatio });
|
|
340
|
+
```
|
|
341
|
+
|
|
342
|
+
Use `setCropScaleRatio()` for uniform scaling from the center, or `setCropScaleX()` and `setCropScaleY()` for non-uniform scaling.
|
|
343
|
+
|
|
344
|
+
### Translate Crop
|
|
345
|
+
|
|
346
|
+
Pan the image content within the crop frame using translation. Values are percentages of the crop frame dimensions:
|
|
347
|
+
|
|
348
|
+
```typescript highlight-translate-crop
|
|
349
|
+
// Pan the content within the crop frame using translation
|
|
350
|
+
// Values are in percentage of the crop frame dimensions
|
|
351
|
+
engine.block.setCropTranslationX(scaleBlock, 0.1); // Move 10% right
|
|
352
|
+
engine.block.setCropTranslationY(scaleBlock, -0.1); // Move 10% up
|
|
353
|
+
|
|
354
|
+
// Get the current translation values
|
|
355
|
+
const translationX = engine.block.getCropTranslationX(scaleBlock);
|
|
356
|
+
const translationY = engine.block.getCropTranslationY(scaleBlock);
|
|
357
|
+
console.log('Crop translation:', { translationX, translationY });
|
|
358
|
+
```
|
|
359
|
+
|
|
360
|
+
Positive X moves content right, positive Y moves content down.
|
|
361
|
+
|
|
362
|
+
### Fill Frame
|
|
363
|
+
|
|
364
|
+
Adjust the crop to ensure content fills the frame without empty areas using `engine.block.adjustCropToFillFrame()`. The `minScaleRatio` parameter sets the minimum allowed scale:
|
|
365
|
+
|
|
366
|
+
```typescript highlight-fill-frame
|
|
367
|
+
// Ensure content covers the entire frame without gaps
|
|
368
|
+
// The minScaleRatio parameter sets the minimum scale allowed
|
|
369
|
+
const adjustedRatio = engine.block.adjustCropToFillFrame(scaleBlock, 1.0);
|
|
370
|
+
console.log('Adjusted scale ratio:', adjustedRatio);
|
|
371
|
+
```
|
|
372
|
+
|
|
373
|
+
This is useful after applying translations or rotations that might reveal empty areas.
|
|
374
|
+
|
|
375
|
+
### Rotate Crop
|
|
376
|
+
|
|
377
|
+
Rotate the image content within its frame using `engine.block.setCropRotation()`. Rotation is specified in radians:
|
|
378
|
+
|
|
379
|
+
```typescript highlight-rotate-crop
|
|
380
|
+
// Create an image block to demonstrate crop rotation
|
|
381
|
+
const rotateBlock = await engine.block.addImage(imageUri, {
|
|
382
|
+
size: { width: 200, height: 200 }
|
|
383
|
+
});
|
|
384
|
+
engine.block.appendChild(page, rotateBlock);
|
|
385
|
+
engine.block.setPositionX(rotateBlock, 50);
|
|
386
|
+
engine.block.setPositionY(rotateBlock, 300);
|
|
387
|
+
engine.block.setContentFillMode(rotateBlock, 'Crop');
|
|
388
|
+
|
|
389
|
+
// Rotate the content within the crop frame (in radians)
|
|
390
|
+
// Math.PI / 4 = 45 degrees
|
|
391
|
+
engine.block.setCropRotation(rotateBlock, Math.PI / 12);
|
|
392
|
+
|
|
393
|
+
// Get the current rotation
|
|
394
|
+
const rotation = engine.block.getCropRotation(rotateBlock);
|
|
395
|
+
console.log('Crop rotation (radians):', rotation);
|
|
396
|
+
|
|
397
|
+
// Ensure content still fills the frame after rotation
|
|
398
|
+
engine.block.adjustCropToFillFrame(rotateBlock, 1.0);
|
|
399
|
+
```
|
|
400
|
+
|
|
401
|
+
After rotation, call `adjustCropToFillFrame()` to ensure content still covers the frame.
|
|
402
|
+
|
|
403
|
+
### Flip Crop
|
|
404
|
+
|
|
405
|
+
Flip the image content horizontally or vertically within its crop frame. This flips the content itself, not the block:
|
|
406
|
+
|
|
407
|
+
```typescript highlight-flip-crop
|
|
408
|
+
// Create an image block to demonstrate flipping
|
|
409
|
+
const flipBlock = await engine.block.addImage(imageUri, {
|
|
410
|
+
size: { width: 200, height: 200 }
|
|
411
|
+
});
|
|
412
|
+
engine.block.appendChild(page, flipBlock);
|
|
413
|
+
engine.block.setPositionX(flipBlock, 300);
|
|
414
|
+
engine.block.setPositionY(flipBlock, 300);
|
|
415
|
+
engine.block.setContentFillMode(flipBlock, 'Crop');
|
|
416
|
+
|
|
417
|
+
// Flip the content horizontally
|
|
418
|
+
engine.block.flipCropHorizontal(flipBlock);
|
|
419
|
+
```
|
|
420
|
+
|
|
421
|
+
### Lock Aspect Ratio
|
|
422
|
+
|
|
423
|
+
Lock the crop aspect ratio during interactive editing using `engine.block.setCropAspectRatioLocked()`. When locked, crop handles maintain the current aspect ratio:
|
|
424
|
+
|
|
425
|
+
```typescript highlight-lock-aspect-ratio
|
|
426
|
+
// Create an image block to demonstrate aspect ratio locking
|
|
427
|
+
const lockBlock = await engine.block.addImage(imageUri, {
|
|
428
|
+
size: { width: 200, height: 200 }
|
|
429
|
+
});
|
|
430
|
+
engine.block.appendChild(page, lockBlock);
|
|
431
|
+
engine.block.setPositionX(lockBlock, 550);
|
|
432
|
+
engine.block.setPositionY(lockBlock, 300);
|
|
433
|
+
engine.block.setContentFillMode(lockBlock, 'Crop');
|
|
434
|
+
|
|
435
|
+
// Lock the crop aspect ratio - when locked, crop handles maintain
|
|
436
|
+
// the current aspect ratio during resize operations
|
|
437
|
+
engine.block.setCropAspectRatioLocked(lockBlock, true);
|
|
438
|
+
|
|
439
|
+
// Check if aspect ratio is locked
|
|
440
|
+
const isLocked = engine.block.isCropAspectRatioLocked(lockBlock);
|
|
441
|
+
console.log('Aspect ratio locked:', isLocked);
|
|
442
|
+
```
|
|
443
|
+
|
|
444
|
+
### Reset Crop
|
|
445
|
+
|
|
446
|
+
Reset all crop transformations to their default state using `engine.block.resetCrop()`:
|
|
447
|
+
|
|
448
|
+
```typescript highlight-reset-crop
|
|
449
|
+
// Reset crop to default state (sets content fill mode to 'Cover')
|
|
450
|
+
engine.block.resetCrop(lockBlock);
|
|
451
|
+
```
|
|
452
|
+
|
|
453
|
+
## Coordinate System
|
|
454
|
+
|
|
455
|
+
Crop transforms use normalized values:
|
|
456
|
+
|
|
457
|
+
| Property | Value Type | Description |
|
|
458
|
+
| ----------- | ------------------- | ------------------------------------------------ |
|
|
459
|
+
| Scale | Float (0.0+) | 1.0 is original size, 2.0 is double, 0.5 is half |
|
|
460
|
+
| Translation | Float (-1.0 to 1.0) | Percentage of frame dimensions |
|
|
461
|
+
| Rotation | Float (radians) | Math.PI = 180°, Math.PI/2 = 90° |
|
|
462
|
+
|
|
463
|
+
All crop values are independent of canvas zoom level.
|
|
464
|
+
|
|
465
|
+
## Combining Crop with Other Transforms
|
|
466
|
+
|
|
467
|
+
You can combine crop operations with other block transforms like position, rotation, and scale. Crop transforms affect the content within the block, while block transforms affect the block itself on the canvas:
|
|
468
|
+
|
|
469
|
+
```typescript
|
|
470
|
+
// Crop the content (scales/pans the image within its frame)
|
|
471
|
+
engine.block.setCropScaleRatio(imageBlock, 1.5);
|
|
472
|
+
engine.block.setCropRotation(imageBlock, Math.PI / 12);
|
|
473
|
+
|
|
474
|
+
// Transform the block itself (moves/rotates the entire block on canvas)
|
|
475
|
+
engine.block.setRotation(imageBlock, Math.PI / 6);
|
|
476
|
+
engine.block.setWidth(imageBlock, 400);
|
|
477
|
+
```
|
|
478
|
+
|
|
479
|
+
## Troubleshooting
|
|
480
|
+
|
|
481
|
+
| Issue | Cause / Fix |
|
|
482
|
+
| ------------------------------ | ------------------------------------------------------------------------------- |
|
|
483
|
+
| Crop functions throw error | Verify block supports crop with `supportsCrop()` |
|
|
484
|
+
| Black bars after scaling | Call `adjustCropToFillFrame()` or increase scale ratio |
|
|
485
|
+
| Content not filling frame | Check content fill mode - use 'Cover' for automatic fill |
|
|
486
|
+
| Unexpected crop behavior | Ensure content fill mode is set to 'Crop' for manual control |
|
|
487
|
+
| Crop handles not visible in UI | Enable with `cesdk.editor.setSettingBool('controlGizmo/showCropHandles', true)` |
|
|
488
|
+
|
|
489
|
+
## API Reference
|
|
490
|
+
|
|
491
|
+
| Method | Description |
|
|
492
|
+
| -------------------------------------------- | -------------------------------------------- |
|
|
493
|
+
| `block.supportsCrop(id)` | Check if a block supports cropping |
|
|
494
|
+
| `block.supportsContentFillMode(id)` | Check if block supports fill modes |
|
|
495
|
+
| `block.setContentFillMode(id, mode)` | Set content fill mode (Crop, Cover, Contain) |
|
|
496
|
+
| `block.getContentFillMode(id)` | Get current content fill mode |
|
|
497
|
+
| `block.setCropScaleRatio(id, ratio)` | Set uniform crop scale from center |
|
|
498
|
+
| `block.setCropScaleX(id, scaleX)` | Set horizontal crop scale |
|
|
499
|
+
| `block.setCropScaleY(id, scaleY)` | Set vertical crop scale |
|
|
500
|
+
| `block.setCropTranslationX(id, x)` | Set horizontal crop translation |
|
|
501
|
+
| `block.setCropTranslationY(id, y)` | Set vertical crop translation |
|
|
502
|
+
| `block.setCropRotation(id, rotation)` | Set crop rotation in radians |
|
|
503
|
+
| `block.getCropScaleRatio(id)` | Get uniform crop scale ratio |
|
|
504
|
+
| `block.getCropScaleX(id)` | Get horizontal crop scale |
|
|
505
|
+
| `block.getCropScaleY(id)` | Get vertical crop scale |
|
|
506
|
+
| `block.getCropTranslationX(id)` | Get horizontal crop translation |
|
|
507
|
+
| `block.getCropTranslationY(id)` | Get vertical crop translation |
|
|
508
|
+
| `block.getCropRotation(id)` | Get crop rotation in radians |
|
|
509
|
+
| `block.adjustCropToFillFrame(id, minRatio)` | Adjust crop to fill frame |
|
|
510
|
+
| `block.flipCropHorizontal(id)` | Flip content horizontally |
|
|
511
|
+
| `block.flipCropVertical(id)` | Flip content vertically |
|
|
512
|
+
| `block.setCropAspectRatioLocked(id, locked)` | Lock/unlock aspect ratio |
|
|
513
|
+
| `block.isCropAspectRatioLocked(id)` | Check if aspect ratio is locked |
|
|
514
|
+
| `block.resetCrop(id)` | Reset crop to default state |
|
|
515
|
+
|
|
516
|
+
---
|
|
517
|
+
|
|
518
|
+
## More Resources
|
|
519
|
+
|
|
520
|
+
- **[Vanilla JS/TS Documentation Index](https://img.ly/docs/cesdk/js.md)** - Browse all Vanilla JS/TS documentation
|
|
521
|
+
- **[Complete Documentation](./llms-full.txt.md)** - Full documentation in one file (for LLMs)
|
|
522
|
+
- **[Web Documentation](./js.md)** - Interactive documentation with examples
|
|
523
|
+
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
|