@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,362 @@
|
|
|
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
|
+
---
|
|
4
|
+
|
|
5
|
+
This guide shows how to use the vector edit APIs to enter path editing mode, switch between move, bend, add and delete modes, control bezier handle mirroring, and manage anchor points on any shape.
|
|
6
|
+
|
|
7
|
+
> **Reading time:** 10 minutes
|
|
8
|
+
>
|
|
9
|
+
> **Resources:**
|
|
10
|
+
>
|
|
11
|
+
> - [Download examples](https://github.com/imgly/cesdk-web-examples/archive/refs/tags/release-$UBQ_VERSION$.zip)
|
|
12
|
+
> - [View source on GitHub](https://github.com/imgly/cesdk-web-examples/tree/release-$UBQ_VERSION$/guides-stickers-and-shapes-vector-edit-browser)
|
|
13
|
+
> - [Open in StackBlitz](https://stackblitz.com/github/imgly/cesdk-web-examples/tree/v$UBQ_VERSION$/guides-stickers-and-shapes-vector-edit-browser)
|
|
14
|
+
> - [Live demo](https://img.ly/docs/cesdk/examples/guides-stickers-and-shapes-vector-edit-browser/)
|
|
15
|
+
|
|
16
|
+
Vector edit mode lets you modify any shape at the path level. When you enter vector edit mode on a shape, CE.SDK converts it to a vector path and exposes its anchor points and bezier handles for direct manipulation.
|
|
17
|
+
|
|
18
|
+
```typescript file=@cesdk_web_examples/guides-stickers-and-shapes-vector-edit-browser/browser.ts reference-only
|
|
19
|
+
import type { EditorPlugin, EditorPluginContext } from '@cesdk/cesdk-js';
|
|
20
|
+
|
|
21
|
+
import {
|
|
22
|
+
BlurAssetSource,
|
|
23
|
+
ColorPaletteAssetSource,
|
|
24
|
+
CropPresetsAssetSource,
|
|
25
|
+
DemoAssetSources,
|
|
26
|
+
EffectsAssetSource,
|
|
27
|
+
FiltersAssetSource,
|
|
28
|
+
PagePresetsAssetSource,
|
|
29
|
+
StickerAssetSource,
|
|
30
|
+
TextAssetSource,
|
|
31
|
+
TextComponentAssetSource,
|
|
32
|
+
TypefaceAssetSource,
|
|
33
|
+
UploadAssetSources,
|
|
34
|
+
VectorShapeAssetSource
|
|
35
|
+
} from '@cesdk/cesdk-js/plugins';
|
|
36
|
+
import { DesignEditorConfig } from './design-editor/plugin';
|
|
37
|
+
import packageJson from './package.json';
|
|
38
|
+
|
|
39
|
+
class Example implements EditorPlugin {
|
|
40
|
+
name = packageJson.name;
|
|
41
|
+
version = packageJson.version;
|
|
42
|
+
|
|
43
|
+
async initialize({ cesdk }: EditorPluginContext): Promise<void> {
|
|
44
|
+
if (!cesdk) {
|
|
45
|
+
throw new Error('CE.SDK instance is required for this plugin');
|
|
46
|
+
}
|
|
47
|
+
await cesdk.addPlugin(new DesignEditorConfig());
|
|
48
|
+
|
|
49
|
+
await cesdk.addPlugin(new BlurAssetSource());
|
|
50
|
+
await cesdk.addPlugin(new ColorPaletteAssetSource());
|
|
51
|
+
await cesdk.addPlugin(new CropPresetsAssetSource());
|
|
52
|
+
await cesdk.addPlugin(
|
|
53
|
+
new UploadAssetSources({ include: ['ly.img.image.upload'] })
|
|
54
|
+
);
|
|
55
|
+
await cesdk.addPlugin(
|
|
56
|
+
new DemoAssetSources({
|
|
57
|
+
include: [
|
|
58
|
+
'ly.img.templates.blank.*',
|
|
59
|
+
'ly.img.templates.presentation.*',
|
|
60
|
+
'ly.img.templates.print.*',
|
|
61
|
+
'ly.img.templates.social.*',
|
|
62
|
+
'ly.img.image.*'
|
|
63
|
+
]
|
|
64
|
+
})
|
|
65
|
+
);
|
|
66
|
+
await cesdk.addPlugin(new EffectsAssetSource());
|
|
67
|
+
await cesdk.addPlugin(new FiltersAssetSource());
|
|
68
|
+
await cesdk.addPlugin(new PagePresetsAssetSource());
|
|
69
|
+
await cesdk.addPlugin(new StickerAssetSource());
|
|
70
|
+
await cesdk.addPlugin(new TextAssetSource());
|
|
71
|
+
await cesdk.addPlugin(new TextComponentAssetSource());
|
|
72
|
+
await cesdk.addPlugin(new TypefaceAssetSource());
|
|
73
|
+
await cesdk.addPlugin(new VectorShapeAssetSource());
|
|
74
|
+
|
|
75
|
+
// Enable vector path editing feature
|
|
76
|
+
cesdk.feature.enable('ly.img.shape.edit');
|
|
77
|
+
|
|
78
|
+
await cesdk.actions.run('scene.create', {
|
|
79
|
+
page: { width: 100, height: 100, unit: 'Pixel' }
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
const engine = cesdk.engine;
|
|
83
|
+
const page = engine.block.findByType('page')[0];
|
|
84
|
+
|
|
85
|
+
// Create a graphic block with a star shape
|
|
86
|
+
const graphic = engine.block.create('graphic');
|
|
87
|
+
const starShape = engine.block.createShape('star');
|
|
88
|
+
engine.block.setShape(graphic, starShape);
|
|
89
|
+
|
|
90
|
+
const solidFill = engine.block.createFill('color');
|
|
91
|
+
engine.block.setFill(graphic, solidFill);
|
|
92
|
+
engine.block.setWidth(graphic, 60);
|
|
93
|
+
engine.block.setHeight(graphic, 60);
|
|
94
|
+
engine.block.appendChild(page, graphic);
|
|
95
|
+
engine.block.setPositionX(graphic, 20);
|
|
96
|
+
engine.block.setPositionY(graphic, 20);
|
|
97
|
+
|
|
98
|
+
await engine.scene.zoomToBlock(page, { padding: 40 });
|
|
99
|
+
|
|
100
|
+
// Select the graphic block and enter vector edit mode.
|
|
101
|
+
// This converts the shape to a vector path so you can
|
|
102
|
+
// manipulate individual anchor points and curves.
|
|
103
|
+
engine.block.select(graphic);
|
|
104
|
+
engine.editor.setEditMode('Vector');
|
|
105
|
+
|
|
106
|
+
// Move mode (default): select and drag anchor points.
|
|
107
|
+
// All mode flags start as false — move mode is active
|
|
108
|
+
// when none of the other modes are set.
|
|
109
|
+
|
|
110
|
+
// Bend mode: drag path segments to pull out bezier handles.
|
|
111
|
+
engine.editor.setVectorEditBendMode(true);
|
|
112
|
+
engine.editor.getVectorEditBendMode(); // true
|
|
113
|
+
|
|
114
|
+
// Add mode: click on a path segment to insert a new anchor point.
|
|
115
|
+
engine.editor.setVectorEditBendMode(false);
|
|
116
|
+
engine.editor.setVectorEditAddMode(true);
|
|
117
|
+
engine.editor.getVectorEditAddMode(); // true
|
|
118
|
+
|
|
119
|
+
// Delete mode: click an anchor point to remove it from the path.
|
|
120
|
+
engine.editor.setVectorEditAddMode(false);
|
|
121
|
+
engine.editor.setVectorEditDeleteMode(true);
|
|
122
|
+
engine.editor.getVectorEditDeleteMode(); // true
|
|
123
|
+
|
|
124
|
+
// Return to move mode by clearing all flags.
|
|
125
|
+
engine.editor.setVectorEditDeleteMode(false);
|
|
126
|
+
|
|
127
|
+
// Mirror mode controls how bezier handles behave when you
|
|
128
|
+
// adjust one side of an anchor point.
|
|
129
|
+
// 0 = None: handles move independently.
|
|
130
|
+
// 1 = Angle & Length: handles mirror both angle and length.
|
|
131
|
+
// 2 = Angle Only: handles mirror angle but keep their own length.
|
|
132
|
+
if (engine.editor.hasSelectedVectorNode()) {
|
|
133
|
+
engine.editor.setSelectedVectorNodeMirrorMode(1);
|
|
134
|
+
engine.editor.getSelectedVectorNodeMirrorMode(); // 1
|
|
135
|
+
|
|
136
|
+
// Toggle smooth/sharp for the selected node.
|
|
137
|
+
engine.editor.toggleSelectedVectorNodeSmooth();
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
// Query whether any vector anchor node is currently selected.
|
|
141
|
+
engine.editor.hasSelectedVectorNode();
|
|
142
|
+
|
|
143
|
+
// Insert a new anchor point at the midpoint of the
|
|
144
|
+
// selected segment (only works in add mode).
|
|
145
|
+
engine.editor.setVectorEditAddMode(true);
|
|
146
|
+
// engine.editor.addVectorNode();
|
|
147
|
+
|
|
148
|
+
// Remove the currently selected anchor point from the path.
|
|
149
|
+
// engine.editor.deleteVectorNode();
|
|
150
|
+
engine.editor.setVectorEditAddMode(false);
|
|
151
|
+
|
|
152
|
+
// Exit vector edit mode and return to the normal transform mode.
|
|
153
|
+
engine.editor.setEditMode('Transform');
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
export default Example;
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
## Setup
|
|
161
|
+
|
|
162
|
+
Before using vector edit, enable the `ly.img.shape.edit` feature flag. This flag is disabled by default and must be explicitly enabled. The design editor and video editor starter kits enable it automatically.
|
|
163
|
+
|
|
164
|
+
```typescript highlight-setup
|
|
165
|
+
await cesdk.addPlugin(new DesignEditorConfig());
|
|
166
|
+
|
|
167
|
+
await cesdk.addPlugin(new BlurAssetSource());
|
|
168
|
+
await cesdk.addPlugin(new ColorPaletteAssetSource());
|
|
169
|
+
await cesdk.addPlugin(new CropPresetsAssetSource());
|
|
170
|
+
await cesdk.addPlugin(
|
|
171
|
+
new UploadAssetSources({ include: ['ly.img.image.upload'] })
|
|
172
|
+
);
|
|
173
|
+
await cesdk.addPlugin(
|
|
174
|
+
new DemoAssetSources({
|
|
175
|
+
include: [
|
|
176
|
+
'ly.img.templates.blank.*',
|
|
177
|
+
'ly.img.templates.presentation.*',
|
|
178
|
+
'ly.img.templates.print.*',
|
|
179
|
+
'ly.img.templates.social.*',
|
|
180
|
+
'ly.img.image.*'
|
|
181
|
+
]
|
|
182
|
+
})
|
|
183
|
+
);
|
|
184
|
+
await cesdk.addPlugin(new EffectsAssetSource());
|
|
185
|
+
await cesdk.addPlugin(new FiltersAssetSource());
|
|
186
|
+
await cesdk.addPlugin(new PagePresetsAssetSource());
|
|
187
|
+
await cesdk.addPlugin(new StickerAssetSource());
|
|
188
|
+
await cesdk.addPlugin(new TextAssetSource());
|
|
189
|
+
await cesdk.addPlugin(new TextComponentAssetSource());
|
|
190
|
+
await cesdk.addPlugin(new TypefaceAssetSource());
|
|
191
|
+
await cesdk.addPlugin(new VectorShapeAssetSource());
|
|
192
|
+
|
|
193
|
+
// Enable vector path editing feature
|
|
194
|
+
cesdk.feature.enable('ly.img.shape.edit');
|
|
195
|
+
|
|
196
|
+
await cesdk.actions.run('scene.create', {
|
|
197
|
+
page: { width: 100, height: 100, unit: 'Pixel' }
|
|
198
|
+
});
|
|
199
|
+
|
|
200
|
+
const engine = cesdk.engine;
|
|
201
|
+
const page = engine.block.findByType('page')[0];
|
|
202
|
+
|
|
203
|
+
// Create a graphic block with a star shape
|
|
204
|
+
const graphic = engine.block.create('graphic');
|
|
205
|
+
const starShape = engine.block.createShape('star');
|
|
206
|
+
engine.block.setShape(graphic, starShape);
|
|
207
|
+
|
|
208
|
+
const solidFill = engine.block.createFill('color');
|
|
209
|
+
engine.block.setFill(graphic, solidFill);
|
|
210
|
+
engine.block.setWidth(graphic, 60);
|
|
211
|
+
engine.block.setHeight(graphic, 60);
|
|
212
|
+
engine.block.appendChild(page, graphic);
|
|
213
|
+
engine.block.setPositionX(graphic, 20);
|
|
214
|
+
engine.block.setPositionY(graphic, 20);
|
|
215
|
+
|
|
216
|
+
await engine.scene.zoomToBlock(page, { padding: 40 });
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
## Entering Vector Edit Mode
|
|
220
|
+
|
|
221
|
+
Select a block that supports shapes and call `engine.editor.setEditMode('Vector')`. CE.SDK converts the current shape to a vector path so you can manipulate individual anchor points and curves.
|
|
222
|
+
|
|
223
|
+
```typescript highlight-enterVectorEdit
|
|
224
|
+
// Select the graphic block and enter vector edit mode.
|
|
225
|
+
// This converts the shape to a vector path so you can
|
|
226
|
+
// manipulate individual anchor points and curves.
|
|
227
|
+
engine.block.select(graphic);
|
|
228
|
+
engine.editor.setEditMode('Vector');
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
## Edit Modes
|
|
232
|
+
|
|
233
|
+
Vector edit provides four mutually exclusive modes. Only one can be active at a time — setting a new mode clears the others. When all mode flags are `false`, you are in the default **move mode**.
|
|
234
|
+
|
|
235
|
+
| Mode | Purpose |
|
|
236
|
+
| ------ | ---------------------------------------------------- |
|
|
237
|
+
| Move | Select and drag anchor points and control handles |
|
|
238
|
+
| Bend | Drag path segments to pull out bezier handles |
|
|
239
|
+
| Add | Click on a path segment to insert a new anchor point |
|
|
240
|
+
| Delete | Click an anchor point to remove it from the path |
|
|
241
|
+
|
|
242
|
+
```typescript highlight-modes
|
|
243
|
+
// Move mode (default): select and drag anchor points.
|
|
244
|
+
// All mode flags start as false — move mode is active
|
|
245
|
+
// when none of the other modes are set.
|
|
246
|
+
|
|
247
|
+
// Bend mode: drag path segments to pull out bezier handles.
|
|
248
|
+
engine.editor.setVectorEditBendMode(true);
|
|
249
|
+
engine.editor.getVectorEditBendMode(); // true
|
|
250
|
+
|
|
251
|
+
// Add mode: click on a path segment to insert a new anchor point.
|
|
252
|
+
engine.editor.setVectorEditBendMode(false);
|
|
253
|
+
engine.editor.setVectorEditAddMode(true);
|
|
254
|
+
engine.editor.getVectorEditAddMode(); // true
|
|
255
|
+
|
|
256
|
+
// Delete mode: click an anchor point to remove it from the path.
|
|
257
|
+
engine.editor.setVectorEditAddMode(false);
|
|
258
|
+
engine.editor.setVectorEditDeleteMode(true);
|
|
259
|
+
engine.editor.getVectorEditDeleteMode(); // true
|
|
260
|
+
|
|
261
|
+
// Return to move mode by clearing all flags.
|
|
262
|
+
engine.editor.setVectorEditDeleteMode(false);
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
## Mirror Mode
|
|
266
|
+
|
|
267
|
+
Mirror mode controls how the two bezier handles of an anchor point behave when you adjust one of them.
|
|
268
|
+
|
|
269
|
+
| Value | Name | Behavior |
|
|
270
|
+
| ----- | -------------- | ----------------------------------------------------- |
|
|
271
|
+
| `0` | None | Handles move independently |
|
|
272
|
+
| `1` | Angle & Length | Handles mirror both direction and distance |
|
|
273
|
+
| `2` | Angle Only | Handles mirror direction but keep independent lengths |
|
|
274
|
+
|
|
275
|
+
Use `toggleSelectedVectorNodeSmooth()` to quickly switch between a sharp corner (no handles) and a smooth curve.
|
|
276
|
+
|
|
277
|
+
```typescript highlight-mirrorMode
|
|
278
|
+
// Mirror mode controls how bezier handles behave when you
|
|
279
|
+
// adjust one side of an anchor point.
|
|
280
|
+
// 0 = None: handles move independently.
|
|
281
|
+
// 1 = Angle & Length: handles mirror both angle and length.
|
|
282
|
+
// 2 = Angle Only: handles mirror angle but keep their own length.
|
|
283
|
+
if (engine.editor.hasSelectedVectorNode()) {
|
|
284
|
+
engine.editor.setSelectedVectorNodeMirrorMode(1);
|
|
285
|
+
engine.editor.getSelectedVectorNodeMirrorMode(); // 1
|
|
286
|
+
|
|
287
|
+
// Toggle smooth/sharp for the selected node.
|
|
288
|
+
engine.editor.toggleSelectedVectorNodeSmooth();
|
|
289
|
+
}
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
## Node Operations
|
|
293
|
+
|
|
294
|
+
Use these APIs to query selection state and add or remove anchor points programmatically.
|
|
295
|
+
|
|
296
|
+
```typescript highlight-nodeOperations
|
|
297
|
+
// Query whether any vector anchor node is currently selected.
|
|
298
|
+
engine.editor.hasSelectedVectorNode();
|
|
299
|
+
|
|
300
|
+
// Insert a new anchor point at the midpoint of the
|
|
301
|
+
// selected segment (only works in add mode).
|
|
302
|
+
engine.editor.setVectorEditAddMode(true);
|
|
303
|
+
// engine.editor.addVectorNode();
|
|
304
|
+
|
|
305
|
+
// Remove the currently selected anchor point from the path.
|
|
306
|
+
// engine.editor.deleteVectorNode();
|
|
307
|
+
engine.editor.setVectorEditAddMode(false);
|
|
308
|
+
```
|
|
309
|
+
|
|
310
|
+
## Exiting Vector Edit Mode
|
|
311
|
+
|
|
312
|
+
Call `engine.editor.setEditMode('Transform')` to leave vector edit mode and return to the normal transform controls.
|
|
313
|
+
|
|
314
|
+
```typescript highlight-exitVectorEdit
|
|
315
|
+
// Exit vector edit mode and return to the normal transform mode.
|
|
316
|
+
engine.editor.setEditMode('Transform');
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
## Keyboard Shortcuts
|
|
320
|
+
|
|
321
|
+
In the built-in editor UI, vector edit mode supports keyboard shortcuts:
|
|
322
|
+
|
|
323
|
+
- **Backspace / Delete** removes the selected anchor point from the path.
|
|
324
|
+
|
|
325
|
+
## Troubleshooting
|
|
326
|
+
|
|
327
|
+
### Edit Path Button Not Visible
|
|
328
|
+
|
|
329
|
+
- Ensure the `ly.img.shape.edit` feature flag is enabled via `cesdk.feature.enable('ly.img.shape.edit')`.
|
|
330
|
+
- Verify the selected block supports shapes: `engine.block.supportsShape(block)` must return `true`.
|
|
331
|
+
|
|
332
|
+
### Shape Not Converting
|
|
333
|
+
|
|
334
|
+
- Only blocks with a valid shape can enter vector edit mode. If the block has no shape, create and assign one first using `engine.block.createShape()` and `engine.block.setShape()`.
|
|
335
|
+
|
|
336
|
+
## API Reference
|
|
337
|
+
|
|
338
|
+
| Method | Category | Purpose |
|
|
339
|
+
| ----------------------------------------------------- | --------- | --------------------------------- |
|
|
340
|
+
| `engine.editor.setEditMode('Vector')` | Mode | Enter vector edit mode |
|
|
341
|
+
| `engine.editor.setEditMode('Transform')` | Mode | Exit vector edit mode |
|
|
342
|
+
| `engine.editor.setVectorEditBendMode(flag)` | Mode | Enable or disable bend mode |
|
|
343
|
+
| `engine.editor.getVectorEditBendMode()` | Mode | Query bend mode state |
|
|
344
|
+
| `engine.editor.setVectorEditAddMode(flag)` | Mode | Enable or disable add mode |
|
|
345
|
+
| `engine.editor.getVectorEditAddMode()` | Mode | Query add mode state |
|
|
346
|
+
| `engine.editor.setVectorEditDeleteMode(flag)` | Mode | Enable or disable delete mode |
|
|
347
|
+
| `engine.editor.getVectorEditDeleteMode()` | Mode | Query delete mode state |
|
|
348
|
+
| `engine.editor.hasSelectedVectorNode()` | Selection | Check if an anchor is selected |
|
|
349
|
+
| `engine.editor.addVectorNode()` | Edit | Insert anchor at segment midpoint |
|
|
350
|
+
| `engine.editor.deleteVectorNode()` | Edit | Remove selected anchor |
|
|
351
|
+
| `engine.editor.toggleSelectedVectorNodeSmooth()` | Edit | Toggle smooth/sharp anchor |
|
|
352
|
+
| `engine.editor.setSelectedVectorNodeMirrorMode(mode)` | Edit | Set handle mirror behavior |
|
|
353
|
+
| `engine.editor.getSelectedVectorNodeMirrorMode()` | Edit | Query handle mirror mode |
|
|
354
|
+
|
|
355
|
+
---
|
|
356
|
+
|
|
357
|
+
## More Resources
|
|
358
|
+
|
|
359
|
+
- **[Vanilla JS/TS Documentation Index](https://img.ly/docs/cesdk/js.md)** - Browse all Vanilla JS/TS documentation
|
|
360
|
+
- **[Complete Documentation](./llms-full.txt.md)** - Full documentation in one file (for LLMs)
|
|
361
|
+
- **[Web Documentation](./js.md)** - Interactive documentation with examples
|
|
362
|
+
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
|
|
@@ -0,0 +1,208 @@
|
|
|
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 Shapes](./shapes.md) > [Insert QR Code](./stickers-and-shapes/insert-qr-code.md) > [Plugins](./plugins.md) > [QR Code](./stickers-and-shapes/insert-qr-code.md)
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Add scannable QR codes to designs programmatically using image fills.
|
|
8
|
+
|
|
9
|
+

|
|
10
|
+
|
|
11
|
+
> **Reading time:** 5 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-stickers-and-shapes-insert-qr-code-browser)
|
|
17
|
+
> - [Open in StackBlitz](https://stackblitz.com/github/imgly/cesdk-web-examples/tree/v$UBQ_VERSION$/guides-stickers-and-shapes-insert-qr-code-browser)
|
|
18
|
+
> - [Live demo](https://img.ly/docs/cesdk/examples/guides-stickers-and-shapes-insert-qr-code-browser/)
|
|
19
|
+
|
|
20
|
+
QR codes encode URLs that mobile devices can scan, making them useful for marketing materials, business cards, event posters, and product packaging. This guide shows how to generate QR codes as images and add them to CE.SDK designs.
|
|
21
|
+
|
|
22
|
+
> **Note:** For a simpler integration, consider using the official [@imgly/plugin-qr-code-web](https://www.npmjs.com/package/@imgly/plugin-qr-code-web) plugin which provides ready-to-use QR code functionality.
|
|
23
|
+
|
|
24
|
+
```typescript file=@cesdk_web_examples/guides-stickers-and-shapes-insert-qr-code-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
|
+
import { generateQRCodeDataURL } from './qr-utils';
|
|
45
|
+
|
|
46
|
+
class Example implements EditorPlugin {
|
|
47
|
+
name = packageJson.name;
|
|
48
|
+
version = packageJson.version;
|
|
49
|
+
|
|
50
|
+
async initialize({ cesdk }: EditorPluginContext): Promise<void> {
|
|
51
|
+
if (!cesdk) {
|
|
52
|
+
throw new Error('CE.SDK instance is required for this plugin');
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
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
|
+
const engine = cesdk.engine;
|
|
88
|
+
const page = engine.block.findByType('page')[0];
|
|
89
|
+
|
|
90
|
+
const qrSize = 200;
|
|
91
|
+
|
|
92
|
+
// ===== Demonstration: QR Code as Image Fill =====
|
|
93
|
+
// Generate QR code as data URL image with custom colors
|
|
94
|
+
const qrImageUrl = await generateQRCodeDataURL('https://img.ly', {
|
|
95
|
+
width: 256,
|
|
96
|
+
color: { dark: '#1a5fb4', light: '#ffffff' }
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
// Create graphic block with rectangle shape and image fill
|
|
100
|
+
const imageQrBlock = engine.block.create('graphic');
|
|
101
|
+
const rectShape = engine.block.createShape('rect');
|
|
102
|
+
engine.block.setShape(imageQrBlock, rectShape);
|
|
103
|
+
|
|
104
|
+
// Create image fill with QR code data URL
|
|
105
|
+
const imageFill = engine.block.createFill('image');
|
|
106
|
+
engine.block.setString(imageFill, 'fill/image/imageFileURI', qrImageUrl);
|
|
107
|
+
engine.block.setFill(imageQrBlock, imageFill);
|
|
108
|
+
|
|
109
|
+
// Set dimensions and position for image-based QR code
|
|
110
|
+
engine.block.setWidth(imageQrBlock, qrSize);
|
|
111
|
+
engine.block.setHeight(imageQrBlock, qrSize);
|
|
112
|
+
engine.block.setPositionX(imageQrBlock, 300);
|
|
113
|
+
engine.block.setPositionY(imageQrBlock, 200);
|
|
114
|
+
|
|
115
|
+
// Add to page
|
|
116
|
+
engine.block.appendChild(page, imageQrBlock);
|
|
117
|
+
|
|
118
|
+
// Add label for the QR code
|
|
119
|
+
const textBlock = engine.block.create('text');
|
|
120
|
+
engine.block.replaceText(textBlock, 'Image Fill');
|
|
121
|
+
engine.block.setFloat(textBlock, 'text/fontSize', 69);
|
|
122
|
+
engine.block.setEnum(textBlock, 'text/horizontalAlignment', 'Center');
|
|
123
|
+
engine.block.setWidth(textBlock, 300);
|
|
124
|
+
engine.block.setPositionX(textBlock, 250);
|
|
125
|
+
engine.block.setPositionY(textBlock, 420);
|
|
126
|
+
engine.block.appendChild(page, textBlock);
|
|
127
|
+
|
|
128
|
+
// Zoom to fit all content
|
|
129
|
+
await engine.scene.zoomToBlock(page, { padding: 40 });
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
export default Example;
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
## Generating QR Code Images
|
|
137
|
+
|
|
138
|
+
Use a QR code library like `qrcode` to generate QR codes as data URLs with custom colors.
|
|
139
|
+
|
|
140
|
+
```typescript highlight-generate-image
|
|
141
|
+
// Generate QR code as data URL image with custom colors
|
|
142
|
+
const qrImageUrl = await generateQRCodeDataURL('https://img.ly', {
|
|
143
|
+
width: 256,
|
|
144
|
+
color: { dark: '#1a5fb4', light: '#ffffff' }
|
|
145
|
+
});
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
The `toDataURL` method creates a base64-encoded image that works directly with CE.SDK's image fill. You can customize the colors at generation time.
|
|
149
|
+
|
|
150
|
+
## Creating a QR Code Block
|
|
151
|
+
|
|
152
|
+
Create a graphic block with a rectangle shape and apply the QR code as an image fill.
|
|
153
|
+
|
|
154
|
+
```typescript highlight-create-image-block
|
|
155
|
+
// Create graphic block with rectangle shape and image fill
|
|
156
|
+
const imageQrBlock = engine.block.create('graphic');
|
|
157
|
+
const rectShape = engine.block.createShape('rect');
|
|
158
|
+
engine.block.setShape(imageQrBlock, rectShape);
|
|
159
|
+
|
|
160
|
+
// Create image fill with QR code data URL
|
|
161
|
+
const imageFill = engine.block.createFill('image');
|
|
162
|
+
engine.block.setString(imageFill, 'fill/image/imageFileURI', qrImageUrl);
|
|
163
|
+
engine.block.setFill(imageQrBlock, imageFill);
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
Image fills use a rectangle shape with the QR code as the fill content. This approach is straightforward and supports color customization at generation time.
|
|
167
|
+
|
|
168
|
+
## Positioning and Sizing
|
|
169
|
+
|
|
170
|
+
Set the QR code dimensions and position on the page.
|
|
171
|
+
|
|
172
|
+
```typescript highlight-position-image
|
|
173
|
+
// Set dimensions and position for image-based QR code
|
|
174
|
+
engine.block.setWidth(imageQrBlock, qrSize);
|
|
175
|
+
engine.block.setHeight(imageQrBlock, qrSize);
|
|
176
|
+
engine.block.setPositionX(imageQrBlock, 300);
|
|
177
|
+
engine.block.setPositionY(imageQrBlock, 200);
|
|
178
|
+
|
|
179
|
+
// Add to page
|
|
180
|
+
engine.block.appendChild(page, imageQrBlock);
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
Maintain a square aspect ratio by setting equal width and height. For reliable scanning, keep QR codes at least 100x100 pixels.
|
|
184
|
+
|
|
185
|
+
## API Reference
|
|
186
|
+
|
|
187
|
+
| Method | Category | Purpose |
|
|
188
|
+
| ------------------------------------------------------------ | --------- | -------------------------------- |
|
|
189
|
+
| `engine.block.create('graphic')` | Creation | Create graphic block for QR code |
|
|
190
|
+
| `engine.block.createShape('rect')` | Shapes | Create rectangle shape |
|
|
191
|
+
| `engine.block.setShape(id, shape)` | Shapes | Apply shape to graphic block |
|
|
192
|
+
| `engine.block.createFill('image')` | Fills | Create image fill |
|
|
193
|
+
| `engine.block.setString(id, 'fill/image/imageFileURI', uri)` | Fills | Set image data URL |
|
|
194
|
+
| `engine.block.setFill(id, fill)` | Fills | Apply fill to block |
|
|
195
|
+
| `engine.block.setWidth(id, width)` | Transform | Set QR code width |
|
|
196
|
+
| `engine.block.setHeight(id, height)` | Transform | Set QR code height |
|
|
197
|
+
| `engine.block.setPositionX(id, x)` | Transform | Set horizontal position |
|
|
198
|
+
| `engine.block.setPositionY(id, y)` | Transform | Set vertical position |
|
|
199
|
+
| `engine.block.appendChild(parent, child)` | Hierarchy | Add QR code to page |
|
|
200
|
+
|
|
201
|
+
---
|
|
202
|
+
|
|
203
|
+
## More Resources
|
|
204
|
+
|
|
205
|
+
- **[Vanilla JS/TS Documentation Index](https://img.ly/docs/cesdk/js.md)** - Browse all Vanilla JS/TS documentation
|
|
206
|
+
- **[Complete Documentation](./llms-full.txt.md)** - Full documentation in one file (for LLMs)
|
|
207
|
+
- **[Web Documentation](./js.md)** - Interactive documentation with examples
|
|
208
|
+
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
|
|
@@ -0,0 +1,21 @@
|
|
|
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 Stickers](./stickers.md)
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Related Pages
|
|
10
|
+
|
|
11
|
+
- [Create Stickers](./stickers-and-shapes/create-edit/create-stickers.md) - Create stickers in CE.SDK using image fills for icons, logos, emoji, and multi-color graphics
|
|
12
|
+
- [Create Cutout](./stickers-and-shapes/create-cutout.md) - Create cutout paths for cutting printers to produce die-cut stickers, iron-on decals, and custom-shaped prints.
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## More Resources
|
|
17
|
+
|
|
18
|
+
- **[Vanilla JS/TS Documentation Index](https://img.ly/docs/cesdk/js.md)** - Browse all Vanilla JS/TS documentation
|
|
19
|
+
- **[Complete Documentation](./llms-full.txt.md)** - Full documentation in one file (for LLMs)
|
|
20
|
+
- **[Web Documentation](./js.md)** - Interactive documentation with examples
|
|
21
|
+
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
|