@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,408 @@
|
|
|
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) > [Rotate](./edit-image/transform/rotate.md)
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Rotate images to adjust orientation, correct crooked photos, or create creative effects using CE.SDK's rotation APIs.
|
|
8
|
+
|
|
9
|
+

|
|
10
|
+
|
|
11
|
+
> **Reading time:** 8 minutes
|
|
12
|
+
>
|
|
13
|
+
> **Resources:**
|
|
14
|
+
>
|
|
15
|
+
> - [Download examples](https://github.com/imgly/cesdk-web-examples/archive/refs/tags/release-$UBQ_VERSION$.zip)
|
|
16
|
+
> - [View source on GitHub](https://github.com/imgly/cesdk-web-examples/tree/release-$UBQ_VERSION$/guides-edit-image-transform-rotate-browser)
|
|
17
|
+
> - [Open in StackBlitz](https://stackblitz.com/github/imgly/cesdk-web-examples/tree/v$UBQ_VERSION$/guides-edit-image-transform-rotate-browser)
|
|
18
|
+
> - [Live demo](https://img.ly/docs/cesdk/examples/guides-edit-image-transform-rotate-browser/)
|
|
19
|
+
|
|
20
|
+
Rotation uses radians where `Math.PI / 2` equals 90°, `Math.PI` equals 180°, and negative values rotate clockwise. Values are relative to the block's center point.
|
|
21
|
+
|
|
22
|
+
```typescript file=@cesdk_web_examples/guides-edit-image-transform-rotate-browser/browser.ts reference-only
|
|
23
|
+
import CreativeEditorSDK, {
|
|
24
|
+
type EditorPlugin,
|
|
25
|
+
type EditorPluginContext
|
|
26
|
+
} from '@cesdk/cesdk-js';
|
|
27
|
+
|
|
28
|
+
import {
|
|
29
|
+
BlurAssetSource,
|
|
30
|
+
ColorPaletteAssetSource,
|
|
31
|
+
CropPresetsAssetSource,
|
|
32
|
+
DemoAssetSources,
|
|
33
|
+
EffectsAssetSource,
|
|
34
|
+
FiltersAssetSource,
|
|
35
|
+
PagePresetsAssetSource,
|
|
36
|
+
StickerAssetSource,
|
|
37
|
+
TextAssetSource,
|
|
38
|
+
TextComponentAssetSource,
|
|
39
|
+
TypefaceAssetSource,
|
|
40
|
+
UploadAssetSources,
|
|
41
|
+
VectorShapeAssetSource
|
|
42
|
+
} from '@cesdk/cesdk-js/plugins';
|
|
43
|
+
import { DesignEditorConfig } from './design-editor/plugin';
|
|
44
|
+
|
|
45
|
+
class Example implements EditorPlugin {
|
|
46
|
+
name = 'guides-edit-image-transform-rotate-browser';
|
|
47
|
+
|
|
48
|
+
version = CreativeEditorSDK.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
|
+
await cesdk.addPlugin(new DesignEditorConfig());
|
|
56
|
+
|
|
57
|
+
// Add asset source plugins
|
|
58
|
+
await cesdk.addPlugin(new BlurAssetSource());
|
|
59
|
+
await cesdk.addPlugin(new ColorPaletteAssetSource());
|
|
60
|
+
await cesdk.addPlugin(new CropPresetsAssetSource());
|
|
61
|
+
await cesdk.addPlugin(
|
|
62
|
+
new UploadAssetSources({ include: ['ly.img.image.upload'] })
|
|
63
|
+
);
|
|
64
|
+
await cesdk.addPlugin(
|
|
65
|
+
new DemoAssetSources({
|
|
66
|
+
include: [
|
|
67
|
+
'ly.img.templates.blank.*',
|
|
68
|
+
'ly.img.templates.presentation.*',
|
|
69
|
+
'ly.img.templates.print.*',
|
|
70
|
+
'ly.img.templates.social.*',
|
|
71
|
+
'ly.img.image.*'
|
|
72
|
+
]
|
|
73
|
+
})
|
|
74
|
+
);
|
|
75
|
+
await cesdk.addPlugin(new EffectsAssetSource());
|
|
76
|
+
await cesdk.addPlugin(new FiltersAssetSource());
|
|
77
|
+
await cesdk.addPlugin(new PagePresetsAssetSource());
|
|
78
|
+
await cesdk.addPlugin(new StickerAssetSource());
|
|
79
|
+
await cesdk.addPlugin(new TextAssetSource());
|
|
80
|
+
await cesdk.addPlugin(new TextComponentAssetSource());
|
|
81
|
+
await cesdk.addPlugin(new TypefaceAssetSource());
|
|
82
|
+
await cesdk.addPlugin(new VectorShapeAssetSource());
|
|
83
|
+
|
|
84
|
+
await cesdk.actions.run('scene.create', {
|
|
85
|
+
page: { width: 800, height: 500, unit: 'Pixel' }
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
const engine = cesdk.engine;
|
|
89
|
+
const page = engine.block.findByType('page')[0];
|
|
90
|
+
|
|
91
|
+
// Demo 1: Original image (no rotation)
|
|
92
|
+
const originalImage = await engine.block.addImage(
|
|
93
|
+
'https://img.ly/static/ubq_samples/sample_3.jpg',
|
|
94
|
+
{
|
|
95
|
+
size: { width: 150, height: 150 }
|
|
96
|
+
}
|
|
97
|
+
);
|
|
98
|
+
engine.block.appendChild(page, originalImage);
|
|
99
|
+
engine.block.setPositionX(originalImage, 50);
|
|
100
|
+
engine.block.setPositionY(originalImage, 50);
|
|
101
|
+
|
|
102
|
+
const text1 = engine.block.create('text');
|
|
103
|
+
engine.block.setString(text1, 'text/text', 'Original');
|
|
104
|
+
engine.block.setFloat(text1, 'text/fontSize', 24);
|
|
105
|
+
engine.block.setEnum(text1, 'text/horizontalAlignment', 'Center');
|
|
106
|
+
engine.block.setWidth(text1, 150);
|
|
107
|
+
engine.block.setPositionX(text1, 50);
|
|
108
|
+
engine.block.setPositionY(text1, 210);
|
|
109
|
+
engine.block.appendChild(page, text1);
|
|
110
|
+
|
|
111
|
+
// Demo 2: Rotate 45 degrees
|
|
112
|
+
const rotated45Image = await engine.block.addImage(
|
|
113
|
+
'https://img.ly/static/ubq_samples/sample_3.jpg',
|
|
114
|
+
{
|
|
115
|
+
size: { width: 150, height: 150 }
|
|
116
|
+
}
|
|
117
|
+
);
|
|
118
|
+
engine.block.appendChild(page, rotated45Image);
|
|
119
|
+
engine.block.setPositionX(rotated45Image, 225);
|
|
120
|
+
engine.block.setPositionY(rotated45Image, 50);
|
|
121
|
+
|
|
122
|
+
// Rotate the block by 45 degrees (π/4 radians)
|
|
123
|
+
engine.block.setRotation(rotated45Image, Math.PI / 4);
|
|
124
|
+
|
|
125
|
+
const text2 = engine.block.create('text');
|
|
126
|
+
engine.block.setString(text2, 'text/text', '45°');
|
|
127
|
+
engine.block.setFloat(text2, 'text/fontSize', 24);
|
|
128
|
+
engine.block.setEnum(text2, 'text/horizontalAlignment', 'Center');
|
|
129
|
+
engine.block.setWidth(text2, 150);
|
|
130
|
+
engine.block.setPositionX(text2, 225);
|
|
131
|
+
engine.block.setPositionY(text2, 210);
|
|
132
|
+
engine.block.appendChild(page, text2);
|
|
133
|
+
|
|
134
|
+
// Demo 3: Rotate 90 degrees
|
|
135
|
+
const rotated90Image = await engine.block.addImage(
|
|
136
|
+
'https://img.ly/static/ubq_samples/sample_3.jpg',
|
|
137
|
+
{
|
|
138
|
+
size: { width: 150, height: 150 }
|
|
139
|
+
}
|
|
140
|
+
);
|
|
141
|
+
engine.block.appendChild(page, rotated90Image);
|
|
142
|
+
engine.block.setPositionX(rotated90Image, 400);
|
|
143
|
+
engine.block.setPositionY(rotated90Image, 50);
|
|
144
|
+
|
|
145
|
+
// Rotate the block by 90 degrees (π/2 radians)
|
|
146
|
+
engine.block.setRotation(rotated90Image, Math.PI / 2);
|
|
147
|
+
|
|
148
|
+
const text3 = engine.block.create('text');
|
|
149
|
+
engine.block.setString(text3, 'text/text', '90°');
|
|
150
|
+
engine.block.setFloat(text3, 'text/fontSize', 24);
|
|
151
|
+
engine.block.setEnum(text3, 'text/horizontalAlignment', 'Center');
|
|
152
|
+
engine.block.setWidth(text3, 150);
|
|
153
|
+
engine.block.setPositionX(text3, 400);
|
|
154
|
+
engine.block.setPositionY(text3, 210);
|
|
155
|
+
engine.block.appendChild(page, text3);
|
|
156
|
+
|
|
157
|
+
// Demo 4: Rotate 180 degrees
|
|
158
|
+
const rotated180Image = await engine.block.addImage(
|
|
159
|
+
'https://img.ly/static/ubq_samples/sample_3.jpg',
|
|
160
|
+
{
|
|
161
|
+
size: { width: 150, height: 150 }
|
|
162
|
+
}
|
|
163
|
+
);
|
|
164
|
+
engine.block.appendChild(page, rotated180Image);
|
|
165
|
+
engine.block.setPositionX(rotated180Image, 575);
|
|
166
|
+
engine.block.setPositionY(rotated180Image, 50);
|
|
167
|
+
|
|
168
|
+
// Rotate the block by 180 degrees (π radians)
|
|
169
|
+
engine.block.setRotation(rotated180Image, Math.PI);
|
|
170
|
+
|
|
171
|
+
const text4 = engine.block.create('text');
|
|
172
|
+
engine.block.setString(text4, 'text/text', '180°');
|
|
173
|
+
engine.block.setFloat(text4, 'text/fontSize', 24);
|
|
174
|
+
engine.block.setEnum(text4, 'text/horizontalAlignment', 'Center');
|
|
175
|
+
engine.block.setWidth(text4, 150);
|
|
176
|
+
engine.block.setPositionX(text4, 575);
|
|
177
|
+
engine.block.setPositionY(text4, 210);
|
|
178
|
+
engine.block.appendChild(page, text4);
|
|
179
|
+
|
|
180
|
+
// Demo 5: Grouped rotation
|
|
181
|
+
const groupedImage1 = await engine.block.addImage(
|
|
182
|
+
'https://img.ly/static/ubq_samples/sample_5.jpg',
|
|
183
|
+
{
|
|
184
|
+
size: { width: 100, height: 100 }
|
|
185
|
+
}
|
|
186
|
+
);
|
|
187
|
+
engine.block.appendChild(page, groupedImage1);
|
|
188
|
+
engine.block.setPositionX(groupedImage1, 150);
|
|
189
|
+
engine.block.setPositionY(groupedImage1, 300);
|
|
190
|
+
|
|
191
|
+
const groupedImage2 = await engine.block.addImage(
|
|
192
|
+
'https://img.ly/static/ubq_samples/sample_6.jpg',
|
|
193
|
+
{
|
|
194
|
+
size: { width: 100, height: 100 }
|
|
195
|
+
}
|
|
196
|
+
);
|
|
197
|
+
engine.block.appendChild(page, groupedImage2);
|
|
198
|
+
engine.block.setPositionX(groupedImage2, 260);
|
|
199
|
+
engine.block.setPositionY(groupedImage2, 300);
|
|
200
|
+
|
|
201
|
+
// Group blocks and rotate them together
|
|
202
|
+
const groupId = engine.block.group([groupedImage1, groupedImage2]);
|
|
203
|
+
engine.block.setRotation(groupId, Math.PI / 8);
|
|
204
|
+
|
|
205
|
+
const text5 = engine.block.create('text');
|
|
206
|
+
engine.block.setString(text5, 'text/text', 'Grouped');
|
|
207
|
+
engine.block.setFloat(text5, 'text/fontSize', 24);
|
|
208
|
+
engine.block.setEnum(text5, 'text/horizontalAlignment', 'Center');
|
|
209
|
+
engine.block.setWidth(text5, 200);
|
|
210
|
+
engine.block.setPositionX(text5, 150);
|
|
211
|
+
engine.block.setPositionY(text5, 440);
|
|
212
|
+
engine.block.appendChild(page, text5);
|
|
213
|
+
|
|
214
|
+
// Demo 6: Locked rotation
|
|
215
|
+
const lockedImage = await engine.block.addImage(
|
|
216
|
+
'https://img.ly/static/ubq_samples/sample_3.jpg',
|
|
217
|
+
{
|
|
218
|
+
size: { width: 150, height: 150 }
|
|
219
|
+
}
|
|
220
|
+
);
|
|
221
|
+
engine.block.appendChild(page, lockedImage);
|
|
222
|
+
engine.block.setPositionX(lockedImage, 500);
|
|
223
|
+
engine.block.setPositionY(lockedImage, 300);
|
|
224
|
+
engine.block.setRotation(lockedImage, Math.PI / 6);
|
|
225
|
+
|
|
226
|
+
// Lock rotation for a single block
|
|
227
|
+
engine.block.setScopeEnabled(lockedImage, 'layer/rotate', false);
|
|
228
|
+
|
|
229
|
+
const text6 = engine.block.create('text');
|
|
230
|
+
engine.block.setString(text6, 'text/text', 'Locked');
|
|
231
|
+
engine.block.setFloat(text6, 'text/fontSize', 24);
|
|
232
|
+
engine.block.setEnum(text6, 'text/horizontalAlignment', 'Center');
|
|
233
|
+
engine.block.setWidth(text6, 150);
|
|
234
|
+
engine.block.setPositionX(text6, 500);
|
|
235
|
+
engine.block.setPositionY(text6, 460);
|
|
236
|
+
engine.block.appendChild(page, text6);
|
|
237
|
+
|
|
238
|
+
// Get current rotation value
|
|
239
|
+
const currentRotation = engine.block.getRotation(rotated45Image);
|
|
240
|
+
console.log('Current rotation (radians):', currentRotation);
|
|
241
|
+
console.log(
|
|
242
|
+
'Current rotation (degrees):',
|
|
243
|
+
(currentRotation * 180) / Math.PI
|
|
244
|
+
);
|
|
245
|
+
|
|
246
|
+
// Helpers for degree/radian conversion
|
|
247
|
+
const toRadians = (degrees: number) => (degrees * Math.PI) / 180;
|
|
248
|
+
const toDegrees = (radians: number) => (radians * 180) / Math.PI;
|
|
249
|
+
|
|
250
|
+
// Example: rotate by 30 degrees using helper
|
|
251
|
+
const targetRadians = toRadians(30);
|
|
252
|
+
console.log('30 degrees in radians:', targetRadians);
|
|
253
|
+
console.log('Converted back to degrees:', toDegrees(targetRadians));
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
export default Example;
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
This guide covers rotating images by specific angles, reading rotation values, converting between degrees and radians, rotating grouped elements together, and locking rotation on blocks.
|
|
261
|
+
|
|
262
|
+
## Initialize the Editor
|
|
263
|
+
|
|
264
|
+
Set up the editor with default assets and create a design scene:
|
|
265
|
+
|
|
266
|
+
```typescript highlight=highlight-setup
|
|
267
|
+
await cesdk.addPlugin(new DesignEditorConfig());
|
|
268
|
+
|
|
269
|
+
// Add asset source plugins
|
|
270
|
+
await cesdk.addPlugin(new BlurAssetSource());
|
|
271
|
+
await cesdk.addPlugin(new ColorPaletteAssetSource());
|
|
272
|
+
await cesdk.addPlugin(new CropPresetsAssetSource());
|
|
273
|
+
await cesdk.addPlugin(
|
|
274
|
+
new UploadAssetSources({ include: ['ly.img.image.upload'] })
|
|
275
|
+
);
|
|
276
|
+
await cesdk.addPlugin(
|
|
277
|
+
new DemoAssetSources({
|
|
278
|
+
include: [
|
|
279
|
+
'ly.img.templates.blank.*',
|
|
280
|
+
'ly.img.templates.presentation.*',
|
|
281
|
+
'ly.img.templates.print.*',
|
|
282
|
+
'ly.img.templates.social.*',
|
|
283
|
+
'ly.img.image.*'
|
|
284
|
+
]
|
|
285
|
+
})
|
|
286
|
+
);
|
|
287
|
+
await cesdk.addPlugin(new EffectsAssetSource());
|
|
288
|
+
await cesdk.addPlugin(new FiltersAssetSource());
|
|
289
|
+
await cesdk.addPlugin(new PagePresetsAssetSource());
|
|
290
|
+
await cesdk.addPlugin(new StickerAssetSource());
|
|
291
|
+
await cesdk.addPlugin(new TextAssetSource());
|
|
292
|
+
await cesdk.addPlugin(new TextComponentAssetSource());
|
|
293
|
+
await cesdk.addPlugin(new TypefaceAssetSource());
|
|
294
|
+
await cesdk.addPlugin(new VectorShapeAssetSource());
|
|
295
|
+
|
|
296
|
+
await cesdk.actions.run('scene.create', {
|
|
297
|
+
page: { width: 800, height: 500, unit: 'Pixel' }
|
|
298
|
+
});
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
## Rotate an Image
|
|
302
|
+
|
|
303
|
+
Rotate blocks using `engine.block.setRotation()` with angle values in radians. Use `Math.PI` for 180° or divide for smaller increments:
|
|
304
|
+
|
|
305
|
+
```typescript highlight=highlight-rotate-45
|
|
306
|
+
// Rotate the block by 45 degrees (π/4 radians)
|
|
307
|
+
engine.block.setRotation(rotated45Image, Math.PI / 4);
|
|
308
|
+
```
|
|
309
|
+
|
|
310
|
+
## Rotate by 90 Degrees
|
|
311
|
+
|
|
312
|
+
Rotate a block by 90 degrees using `Math.PI / 2`:
|
|
313
|
+
|
|
314
|
+
```typescript highlight=highlight-rotate-90
|
|
315
|
+
// Rotate the block by 90 degrees (π/2 radians)
|
|
316
|
+
engine.block.setRotation(rotated90Image, Math.PI / 2);
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
## Rotate by 180 Degrees
|
|
320
|
+
|
|
321
|
+
Flip a block upside down by rotating 180 degrees using `Math.PI`:
|
|
322
|
+
|
|
323
|
+
```typescript highlight=highlight-rotate-180
|
|
324
|
+
// Rotate the block by 180 degrees (π radians)
|
|
325
|
+
engine.block.setRotation(rotated180Image, Math.PI);
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
## Get Current Rotation
|
|
329
|
+
|
|
330
|
+
Read the current rotation value using `engine.block.getRotation()`. The returned value is in radians:
|
|
331
|
+
|
|
332
|
+
```typescript highlight=highlight-get-rotation
|
|
333
|
+
// Get current rotation value
|
|
334
|
+
const currentRotation = engine.block.getRotation(rotated45Image);
|
|
335
|
+
console.log('Current rotation (radians):', currentRotation);
|
|
336
|
+
console.log('Current rotation (degrees):', (currentRotation * 180) / Math.PI);
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
## Convert Between Degrees and Radians
|
|
340
|
+
|
|
341
|
+
Create helper functions to convert between degrees and radians for more intuitive angle values:
|
|
342
|
+
|
|
343
|
+
```typescript highlight=highlight-convert-radians
|
|
344
|
+
// Helpers for degree/radian conversion
|
|
345
|
+
const toRadians = (degrees: number) => (degrees * Math.PI) / 180;
|
|
346
|
+
const toDegrees = (radians: number) => (radians * 180) / Math.PI;
|
|
347
|
+
|
|
348
|
+
// Example: rotate by 30 degrees using helper
|
|
349
|
+
const targetRadians = toRadians(30);
|
|
350
|
+
console.log('30 degrees in radians:', targetRadians);
|
|
351
|
+
console.log('Converted back to degrees:', toDegrees(targetRadians));
|
|
352
|
+
```
|
|
353
|
+
|
|
354
|
+
## Rotate Groups Together
|
|
355
|
+
|
|
356
|
+
Group multiple blocks and rotate them as a unit to maintain their relative positions:
|
|
357
|
+
|
|
358
|
+
```typescript highlight=highlight-rotate-group
|
|
359
|
+
// Group blocks and rotate them together
|
|
360
|
+
const groupId = engine.block.group([groupedImage1, groupedImage2]);
|
|
361
|
+
engine.block.setRotation(groupId, Math.PI / 8);
|
|
362
|
+
```
|
|
363
|
+
|
|
364
|
+
## Lock Rotation
|
|
365
|
+
|
|
366
|
+
Disable rotation for a specific block using `engine.block.setScopeEnabled()` with the `layer/rotate` scope:
|
|
367
|
+
|
|
368
|
+
```typescript highlight=highlight-lock-rotation
|
|
369
|
+
// Lock rotation for a single block
|
|
370
|
+
engine.block.setScopeEnabled(lockedImage, 'layer/rotate', false);
|
|
371
|
+
```
|
|
372
|
+
|
|
373
|
+
## Troubleshooting
|
|
374
|
+
|
|
375
|
+
### Rotation Has No Effect
|
|
376
|
+
|
|
377
|
+
Ensure the block exists and is appended to a page before calling `setRotation()`. Verify the block ID is valid using `engine.block.isValid()`.
|
|
378
|
+
|
|
379
|
+
### Unexpected Rotation Direction
|
|
380
|
+
|
|
381
|
+
Positive values rotate counterclockwise, negative values rotate clockwise. Double-check your angle calculation if the rotation appears inverted.
|
|
382
|
+
|
|
383
|
+
### Block Appears Skewed After Rotation
|
|
384
|
+
|
|
385
|
+
Rotation uses the block's center as the pivot point. If the block appears off-center, check that no unexpected scaling or positioning was applied.
|
|
386
|
+
|
|
387
|
+
### Locked Block Won't Rotate
|
|
388
|
+
|
|
389
|
+
Check if the block's `layer/rotate` scope is disabled using `engine.block.isScopeEnabled()`. Re-enable with `engine.block.setScopeEnabled(block, 'layer/rotate', true)`.
|
|
390
|
+
|
|
391
|
+
## API Reference
|
|
392
|
+
|
|
393
|
+
| Method | Description |
|
|
394
|
+
| -------------------------------- | --------------------------------------- |
|
|
395
|
+
| `engine.block.setRotation()` | Set rotation angle in radians |
|
|
396
|
+
| `engine.block.getRotation()` | Get current rotation angle in radians |
|
|
397
|
+
| `engine.block.group()` | Group blocks for collective transforms |
|
|
398
|
+
| `engine.block.setScopeEnabled()` | Enable or disable specific block scopes |
|
|
399
|
+
| `engine.block.isScopeEnabled()` | Check if a scope is enabled for a block |
|
|
400
|
+
|
|
401
|
+
---
|
|
402
|
+
|
|
403
|
+
## More Resources
|
|
404
|
+
|
|
405
|
+
- **[Vanilla JS/TS Documentation Index](https://img.ly/docs/cesdk/js.md)** - Browse all Vanilla JS/TS documentation
|
|
406
|
+
- **[Complete Documentation](./llms-full.txt.md)** - Full documentation in one file (for LLMs)
|
|
407
|
+
- **[Web Documentation](./js.md)** - Interactive documentation with examples
|
|
408
|
+
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
|
|
@@ -0,0 +1,278 @@
|
|
|
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) > [Scale](./edit-image/transform/scale.md)
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Scale images proportionally with `engine.block.scale()` using configurable anchor points, or stretch individual axes with direct width/height manipulation.
|
|
8
|
+
|
|
9
|
+

|
|
10
|
+
|
|
11
|
+
> **Reading time:** 8 minutes
|
|
12
|
+
>
|
|
13
|
+
> **Resources:**
|
|
14
|
+
>
|
|
15
|
+
> - [Download examples](https://github.com/imgly/cesdk-web-examples/archive/refs/tags/release-$UBQ_VERSION$.zip)
|
|
16
|
+
> - [View source on GitHub](https://github.com/imgly/cesdk-web-examples/tree/release-$UBQ_VERSION$/guides-edit-image-transform-scale-browser)
|
|
17
|
+
> - [Open in StackBlitz](https://stackblitz.com/github/imgly/cesdk-web-examples/tree/v$UBQ_VERSION$/guides-edit-image-transform-scale-browser)
|
|
18
|
+
> - [Live demo](https://img.ly/docs/cesdk/examples/guides-edit-image-transform-scale-browser/)
|
|
19
|
+
|
|
20
|
+
Scaling transforms a block proportionally using a factor, while resizing changes dimensions directly. Use scaling to maintain aspect ratio or apply consistent size changes across multiple elements.
|
|
21
|
+
|
|
22
|
+
```typescript file=@cesdk_web_examples/guides-edit-image-transform-scale-browser/browser.ts reference-only
|
|
23
|
+
import CreativeEditorSDK, {
|
|
24
|
+
type EditorPlugin,
|
|
25
|
+
type EditorPluginContext
|
|
26
|
+
} from '@cesdk/cesdk-js';
|
|
27
|
+
|
|
28
|
+
import {
|
|
29
|
+
BlurAssetSource,
|
|
30
|
+
ColorPaletteAssetSource,
|
|
31
|
+
CropPresetsAssetSource,
|
|
32
|
+
DemoAssetSources,
|
|
33
|
+
EffectsAssetSource,
|
|
34
|
+
FiltersAssetSource,
|
|
35
|
+
PagePresetsAssetSource,
|
|
36
|
+
StickerAssetSource,
|
|
37
|
+
TextAssetSource,
|
|
38
|
+
TextComponentAssetSource,
|
|
39
|
+
TypefaceAssetSource,
|
|
40
|
+
UploadAssetSources,
|
|
41
|
+
VectorShapeAssetSource
|
|
42
|
+
} from '@cesdk/cesdk-js/plugins';
|
|
43
|
+
import { DesignEditorConfig } from './design-editor/plugin';
|
|
44
|
+
|
|
45
|
+
class Example implements EditorPlugin {
|
|
46
|
+
name = 'guides-edit-image-transform-scale-browser';
|
|
47
|
+
|
|
48
|
+
version = CreativeEditorSDK.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
|
+
await cesdk.addPlugin(new DesignEditorConfig());
|
|
56
|
+
|
|
57
|
+
// Add asset source plugins
|
|
58
|
+
await cesdk.addPlugin(new BlurAssetSource());
|
|
59
|
+
await cesdk.addPlugin(new ColorPaletteAssetSource());
|
|
60
|
+
await cesdk.addPlugin(new CropPresetsAssetSource());
|
|
61
|
+
await cesdk.addPlugin(
|
|
62
|
+
new UploadAssetSources({ include: ['ly.img.image.upload'] })
|
|
63
|
+
);
|
|
64
|
+
await cesdk.addPlugin(
|
|
65
|
+
new DemoAssetSources({
|
|
66
|
+
include: [
|
|
67
|
+
'ly.img.templates.blank.*',
|
|
68
|
+
'ly.img.templates.presentation.*',
|
|
69
|
+
'ly.img.templates.print.*',
|
|
70
|
+
'ly.img.templates.social.*',
|
|
71
|
+
'ly.img.image.*'
|
|
72
|
+
]
|
|
73
|
+
})
|
|
74
|
+
);
|
|
75
|
+
await cesdk.addPlugin(new EffectsAssetSource());
|
|
76
|
+
await cesdk.addPlugin(new FiltersAssetSource());
|
|
77
|
+
await cesdk.addPlugin(new PagePresetsAssetSource());
|
|
78
|
+
await cesdk.addPlugin(new StickerAssetSource());
|
|
79
|
+
await cesdk.addPlugin(new TextAssetSource());
|
|
80
|
+
await cesdk.addPlugin(new TextComponentAssetSource());
|
|
81
|
+
await cesdk.addPlugin(new TypefaceAssetSource());
|
|
82
|
+
await cesdk.addPlugin(new VectorShapeAssetSource());
|
|
83
|
+
|
|
84
|
+
await cesdk.actions.run('scene.create', {
|
|
85
|
+
page: { width: 800, height: 600, unit: 'Pixel' }
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
const engine = cesdk.engine;
|
|
89
|
+
const page = engine.block.findByType('page')[0];
|
|
90
|
+
|
|
91
|
+
// Demo 1: Uniform Scaling - Scale from center anchor
|
|
92
|
+
const scaledImage = await engine.block.addImage(
|
|
93
|
+
'https://img.ly/static/ubq_samples/sample_1.jpg',
|
|
94
|
+
{
|
|
95
|
+
size: { width: 150, height: 150 }
|
|
96
|
+
}
|
|
97
|
+
);
|
|
98
|
+
engine.block.appendChild(page, scaledImage);
|
|
99
|
+
engine.block.setPositionX(scaledImage, 50);
|
|
100
|
+
engine.block.setPositionY(scaledImage, 100);
|
|
101
|
+
|
|
102
|
+
// Scale uniformly to 150% from center anchor
|
|
103
|
+
engine.block.scale(scaledImage, 1.5, 0.5, 0.5);
|
|
104
|
+
|
|
105
|
+
const text1 = engine.block.create('text');
|
|
106
|
+
engine.block.setString(text1, 'text/text', 'Uniform Scale');
|
|
107
|
+
engine.block.setFloat(text1, 'text/fontSize', 28);
|
|
108
|
+
engine.block.setEnum(text1, 'text/horizontalAlignment', 'Center');
|
|
109
|
+
engine.block.setWidth(text1, 225);
|
|
110
|
+
engine.block.setPositionX(text1, 50);
|
|
111
|
+
engine.block.setPositionY(text1, 360);
|
|
112
|
+
engine.block.appendChild(page, text1);
|
|
113
|
+
|
|
114
|
+
// Demo 2: Non-Uniform Scaling - Stretch width only
|
|
115
|
+
const stretchedImage = await engine.block.addImage(
|
|
116
|
+
'https://img.ly/static/ubq_samples/sample_3.jpg',
|
|
117
|
+
{
|
|
118
|
+
size: { width: 150, height: 150 }
|
|
119
|
+
}
|
|
120
|
+
);
|
|
121
|
+
engine.block.appendChild(page, stretchedImage);
|
|
122
|
+
engine.block.setPositionX(stretchedImage, 300);
|
|
123
|
+
engine.block.setPositionY(stretchedImage, 150);
|
|
124
|
+
|
|
125
|
+
// Stretch width by 50% while keeping height
|
|
126
|
+
engine.block.setWidthMode(stretchedImage, 'Absolute');
|
|
127
|
+
const currentWidth = engine.block.getWidth(stretchedImage);
|
|
128
|
+
engine.block.setWidth(stretchedImage, currentWidth * 1.5, true);
|
|
129
|
+
|
|
130
|
+
const text2 = engine.block.create('text');
|
|
131
|
+
engine.block.setString(text2, 'text/text', 'Non-Uniform');
|
|
132
|
+
engine.block.setFloat(text2, 'text/fontSize', 28);
|
|
133
|
+
engine.block.setEnum(text2, 'text/horizontalAlignment', 'Center');
|
|
134
|
+
engine.block.setWidth(text2, 225);
|
|
135
|
+
engine.block.setPositionX(text2, 300);
|
|
136
|
+
engine.block.setPositionY(text2, 360);
|
|
137
|
+
engine.block.appendChild(page, text2);
|
|
138
|
+
|
|
139
|
+
// Demo 3: Locked Image - Cannot be scaled
|
|
140
|
+
const lockedImage = await engine.block.addImage(
|
|
141
|
+
'https://img.ly/static/ubq_samples/sample_5.jpg',
|
|
142
|
+
{
|
|
143
|
+
size: { width: 150, height: 150 }
|
|
144
|
+
}
|
|
145
|
+
);
|
|
146
|
+
engine.block.appendChild(page, lockedImage);
|
|
147
|
+
engine.block.setPositionX(lockedImage, 575);
|
|
148
|
+
engine.block.setPositionY(lockedImage, 150);
|
|
149
|
+
|
|
150
|
+
// Lock transforms to prevent scaling
|
|
151
|
+
engine.block.setTransformLocked(lockedImage, true);
|
|
152
|
+
|
|
153
|
+
const text3 = engine.block.create('text');
|
|
154
|
+
engine.block.setString(text3, 'text/text', 'Locked');
|
|
155
|
+
engine.block.setFloat(text3, 'text/fontSize', 28);
|
|
156
|
+
engine.block.setEnum(text3, 'text/horizontalAlignment', 'Center');
|
|
157
|
+
engine.block.setWidth(text3, 150);
|
|
158
|
+
engine.block.setPositionX(text3, 575);
|
|
159
|
+
engine.block.setPositionY(text3, 360);
|
|
160
|
+
engine.block.appendChild(page, text3);
|
|
161
|
+
|
|
162
|
+
// Scale with different anchor points
|
|
163
|
+
// Top-left anchor (0, 0) - default
|
|
164
|
+
// Center anchor (0.5, 0.5) - scales from center
|
|
165
|
+
// Bottom-right anchor (1, 1) - scales from bottom-right corner
|
|
166
|
+
const anchorX = 0.5;
|
|
167
|
+
const anchorY = 0.5;
|
|
168
|
+
const scaleFactor = 1.2;
|
|
169
|
+
engine.block.scale(scaledImage, scaleFactor, anchorX, anchorY);
|
|
170
|
+
|
|
171
|
+
// Restrict scaling through scopes
|
|
172
|
+
engine.block.setScopeEnabled(lockedImage, 'layer/resize', false);
|
|
173
|
+
|
|
174
|
+
// Select the scaled image to show the result
|
|
175
|
+
engine.block.select(scaledImage);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
export default Example;
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
This guide covers uniform scaling with anchor points, non-uniform axis stretching, and locking transforms to prevent scaling in templates.
|
|
183
|
+
|
|
184
|
+
## Uniform Scaling
|
|
185
|
+
|
|
186
|
+
Apply a scale factor with `engine.block.scale()` where 1.0 keeps the original size, values greater than 1 enlarge, and values less than 1 shrink. The third and fourth parameters control the anchor point (0 to 1 range):
|
|
187
|
+
|
|
188
|
+
```typescript highlight-uniform-scale
|
|
189
|
+
// Scale uniformly to 150% from center anchor
|
|
190
|
+
engine.block.scale(scaledImage, 1.5, 0.5, 0.5);
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
## Anchor Point Control
|
|
194
|
+
|
|
195
|
+
Control the scaling origin with `anchorX` and `anchorY` parameters. Use (0, 0) for top-left, (0.5, 0.5) for center, or (1, 1) for bottom-right. Center anchor expands equally in all directions:
|
|
196
|
+
|
|
197
|
+
```typescript highlight-anchor-points
|
|
198
|
+
// Scale with different anchor points
|
|
199
|
+
// Top-left anchor (0, 0) - default
|
|
200
|
+
// Center anchor (0.5, 0.5) - scales from center
|
|
201
|
+
// Bottom-right anchor (1, 1) - scales from bottom-right corner
|
|
202
|
+
const anchorX = 0.5;
|
|
203
|
+
const anchorY = 0.5;
|
|
204
|
+
const scaleFactor = 1.2;
|
|
205
|
+
engine.block.scale(scaledImage, scaleFactor, anchorX, anchorY);
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
## Non-Uniform Scaling
|
|
209
|
+
|
|
210
|
+
Stretch a single axis by setting absolute mode and modifying width or height independently. This changes the aspect ratio:
|
|
211
|
+
|
|
212
|
+
```typescript highlight-non-uniform-scale
|
|
213
|
+
// Stretch width by 50% while keeping height
|
|
214
|
+
engine.block.setWidthMode(stretchedImage, 'Absolute');
|
|
215
|
+
const currentWidth = engine.block.getWidth(stretchedImage);
|
|
216
|
+
engine.block.setWidth(stretchedImage, currentWidth * 1.5, true);
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
## Locking Transforms
|
|
220
|
+
|
|
221
|
+
Lock transforms to prevent scaling, rotation, and repositioning using `setTransformLocked`:
|
|
222
|
+
|
|
223
|
+
```typescript highlight-lock-scaling
|
|
224
|
+
// Lock transforms to prevent scaling
|
|
225
|
+
engine.block.setTransformLocked(lockedImage, true);
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
## Scope Restrictions
|
|
229
|
+
|
|
230
|
+
Disable specific capabilities using scopes. Use `'layer/resize'` to prevent resizing while allowing other operations:
|
|
231
|
+
|
|
232
|
+
```typescript highlight-scope-restriction
|
|
233
|
+
// Restrict scaling through scopes
|
|
234
|
+
engine.block.setScopeEnabled(lockedImage, 'layer/resize', false);
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
## Troubleshooting
|
|
238
|
+
|
|
239
|
+
### Image Scales Unevenly
|
|
240
|
+
|
|
241
|
+
Use the same anchor values for both X and Y (e.g., 0.5, 0.5 for center). Use `scale()` instead of separate width/height changes to maintain proportions.
|
|
242
|
+
|
|
243
|
+
### Scaling Doesn't Apply
|
|
244
|
+
|
|
245
|
+
Verify the block is valid using `engine.block.isValid(blockId)`. Ensure the block is appended to the scene hierarchy with `engine.block.appendChild()`.
|
|
246
|
+
|
|
247
|
+
### Users Can Still Scale Locked Blocks
|
|
248
|
+
|
|
249
|
+
Check that the `'layer/resize'` scope is disabled using `engine.block.isScopeEnabled()`. Transform locks prevent UI manipulation but not API calls.
|
|
250
|
+
|
|
251
|
+
### Export Shows Original Size
|
|
252
|
+
|
|
253
|
+
Confirm scaling was applied before export. Use `engine.block.getWidth()` and `engine.block.getHeight()` to verify dimensions after scaling.
|
|
254
|
+
|
|
255
|
+
## API Reference
|
|
256
|
+
|
|
257
|
+
| Method | Description |
|
|
258
|
+
| ----------------------------------- | ----------------------------------------- |
|
|
259
|
+
| `engine.block.scale()` | Scale block and children proportionally |
|
|
260
|
+
| `engine.block.getWidth()` | Get current width |
|
|
261
|
+
| `engine.block.setWidth()` | Set width with optional crop maintenance |
|
|
262
|
+
| `engine.block.getHeight()` | Get current height |
|
|
263
|
+
| `engine.block.setHeight()` | Set height with optional crop maintenance |
|
|
264
|
+
| `engine.block.setWidthMode()` | Set width mode (Absolute, Percent, Auto) |
|
|
265
|
+
| `engine.block.setHeightMode()` | Set height mode (Absolute, Percent, Auto) |
|
|
266
|
+
| `engine.block.setTransformLocked()` | Lock all transformations |
|
|
267
|
+
| `engine.block.isTransformLocked()` | Check if transforms are locked |
|
|
268
|
+
| `engine.block.setScopeEnabled()` | Enable or disable a scope |
|
|
269
|
+
| `engine.block.isScopeEnabled()` | Check if scope is enabled |
|
|
270
|
+
|
|
271
|
+
---
|
|
272
|
+
|
|
273
|
+
## More Resources
|
|
274
|
+
|
|
275
|
+
- **[Vanilla JS/TS Documentation Index](https://img.ly/docs/cesdk/js.md)** - Browse all Vanilla JS/TS documentation
|
|
276
|
+
- **[Complete Documentation](./llms-full.txt.md)** - Full documentation in one file (for LLMs)
|
|
277
|
+
- **[Web Documentation](./js.md)** - Interactive documentation with examples
|
|
278
|
+
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
|