@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,799 @@
|
|
|
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) > [Insert Media Assets](./insert-media.md) > [Insert Shapes or Stickers](./insert-media/shapes-or-stickers.md)
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Add vector shapes and pre-made stickers to your designs using CE.SDK's block
|
|
8
|
+
API. Shapes require fills to be visible and offer type-specific properties
|
|
9
|
+
like corner radius and star points.
|
|
10
|
+
|
|
11
|
+

|
|
12
|
+
|
|
13
|
+
> **Reading time:** 10 minutes
|
|
14
|
+
>
|
|
15
|
+
> **Resources:**
|
|
16
|
+
>
|
|
17
|
+
> - [Download examples](https://github.com/imgly/cesdk-web-examples/archive/refs/tags/release-$UBQ_VERSION$.zip)
|
|
18
|
+
> - [View source on GitHub](https://github.com/imgly/cesdk-web-examples/tree/release-$UBQ_VERSION$/guides-insert-media-shapes-or-stickers-browser)
|
|
19
|
+
> - [Open in StackBlitz](https://stackblitz.com/github/imgly/cesdk-web-examples/tree/v$UBQ_VERSION$/guides-insert-media-shapes-or-stickers-browser)
|
|
20
|
+
> - [Live demo](https://img.ly/docs/cesdk/examples/guides-insert-media-shapes-or-stickers-browser/)
|
|
21
|
+
|
|
22
|
+
Shapes are vector graphics created with `engine.block.createShape()` and attached to graphic blocks. CE.SDK supports six shape types: **rect**, **ellipse**, **star**, **polygon**, **line**, and **vector_path**. Stickers are pre-made graphic assets from sources like `ly.img.sticker`. Both require fills or strokes to be visible on the canvas.
|
|
23
|
+
|
|
24
|
+
```typescript file=@cesdk_web_examples/guides-insert-media-shapes-or-stickers-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 { calculateGridLayout } from './utils';
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* CE.SDK Plugin: Insert Shapes or Stickers Guide
|
|
48
|
+
*
|
|
49
|
+
* Demonstrates inserting various shapes and stickers into designs:
|
|
50
|
+
* - Checking shape support on blocks
|
|
51
|
+
* - Creating different shape types (rect, ellipse, star, polygon, line, vector_path)
|
|
52
|
+
* - Configuring shape-specific properties
|
|
53
|
+
* - Applying fills to make shapes visible
|
|
54
|
+
* - Adding stickers using convenience API and manual construction
|
|
55
|
+
*/
|
|
56
|
+
class Example implements EditorPlugin {
|
|
57
|
+
name = packageJson.name;
|
|
58
|
+
|
|
59
|
+
version = packageJson.version;
|
|
60
|
+
|
|
61
|
+
async initialize({ cesdk }: EditorPluginContext): Promise<void> {
|
|
62
|
+
if (cesdk == null) {
|
|
63
|
+
throw new Error('CE.SDK instance is required for this plugin');
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
await cesdk.addPlugin(new DesignEditorConfig());
|
|
67
|
+
|
|
68
|
+
// Add asset source plugins
|
|
69
|
+
await cesdk.addPlugin(new BlurAssetSource());
|
|
70
|
+
await cesdk.addPlugin(new ColorPaletteAssetSource());
|
|
71
|
+
await cesdk.addPlugin(new CropPresetsAssetSource());
|
|
72
|
+
await cesdk.addPlugin(
|
|
73
|
+
new UploadAssetSources({ include: ['ly.img.image.upload'] })
|
|
74
|
+
);
|
|
75
|
+
await cesdk.addPlugin(
|
|
76
|
+
new DemoAssetSources({
|
|
77
|
+
include: [
|
|
78
|
+
'ly.img.templates.blank.*',
|
|
79
|
+
'ly.img.templates.presentation.*',
|
|
80
|
+
'ly.img.templates.print.*',
|
|
81
|
+
'ly.img.templates.social.*',
|
|
82
|
+
'ly.img.image.*'
|
|
83
|
+
]
|
|
84
|
+
})
|
|
85
|
+
);
|
|
86
|
+
await cesdk.addPlugin(new EffectsAssetSource());
|
|
87
|
+
await cesdk.addPlugin(new FiltersAssetSource());
|
|
88
|
+
await cesdk.addPlugin(new PagePresetsAssetSource());
|
|
89
|
+
await cesdk.addPlugin(new StickerAssetSource());
|
|
90
|
+
await cesdk.addPlugin(new TextAssetSource());
|
|
91
|
+
await cesdk.addPlugin(new TextComponentAssetSource());
|
|
92
|
+
await cesdk.addPlugin(new TypefaceAssetSource());
|
|
93
|
+
await cesdk.addPlugin(new VectorShapeAssetSource());
|
|
94
|
+
|
|
95
|
+
await cesdk.actions.run('scene.create', {
|
|
96
|
+
page: { width: 800, height: 600, unit: 'Pixel' }
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
const engine = cesdk.engine;
|
|
100
|
+
const page = engine.block.findByType('page')[0];
|
|
101
|
+
if (!engine.block.isValid(page)) {
|
|
102
|
+
throw new Error('No page found');
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
const pageWidth = engine.block.getWidth(page);
|
|
106
|
+
const pageHeight = engine.block.getHeight(page);
|
|
107
|
+
|
|
108
|
+
// Calculate responsive grid layout based on page dimensions
|
|
109
|
+
const layout = calculateGridLayout(pageWidth, pageHeight, 10);
|
|
110
|
+
const { blockWidth, blockHeight, getPosition } = layout;
|
|
111
|
+
const blockSize = { width: blockWidth, height: blockHeight };
|
|
112
|
+
|
|
113
|
+
// Check if a block supports shapes before attaching one
|
|
114
|
+
const testBlock = engine.block.create('graphic');
|
|
115
|
+
const supportsShape = engine.block.supportsShape(testBlock);
|
|
116
|
+
// eslint-disable-next-line no-console
|
|
117
|
+
console.log('Graphic block supports shapes:', supportsShape); // true
|
|
118
|
+
|
|
119
|
+
// Text blocks do not support shapes
|
|
120
|
+
const textBlock = engine.block.create('text');
|
|
121
|
+
const textSupportsShape = engine.block.supportsShape(textBlock);
|
|
122
|
+
// eslint-disable-next-line no-console
|
|
123
|
+
console.log('Text block supports shapes:', textSupportsShape); // false
|
|
124
|
+
engine.block.destroy(textBlock);
|
|
125
|
+
engine.block.destroy(testBlock);
|
|
126
|
+
|
|
127
|
+
// Track all created blocks for positioning
|
|
128
|
+
const allBlocks: number[] = [];
|
|
129
|
+
|
|
130
|
+
// Create a rectangle with a solid color fill
|
|
131
|
+
const rectBlock = engine.block.create('graphic');
|
|
132
|
+
const rectShape = engine.block.createShape('rect');
|
|
133
|
+
engine.block.setShape(rectBlock, rectShape);
|
|
134
|
+
|
|
135
|
+
// Apply a solid color fill to make the shape visible
|
|
136
|
+
const rectFill = engine.block.createFill('color');
|
|
137
|
+
engine.block.setColor(rectFill, 'fill/color/value', {
|
|
138
|
+
r: 0.2,
|
|
139
|
+
g: 0.5,
|
|
140
|
+
b: 0.9,
|
|
141
|
+
a: 1.0
|
|
142
|
+
});
|
|
143
|
+
engine.block.setFill(rectBlock, rectFill);
|
|
144
|
+
|
|
145
|
+
engine.block.setWidth(rectBlock, blockWidth);
|
|
146
|
+
engine.block.setHeight(rectBlock, blockHeight);
|
|
147
|
+
engine.block.appendChild(page, rectBlock);
|
|
148
|
+
allBlocks.push(rectBlock);
|
|
149
|
+
|
|
150
|
+
// Create a rounded rectangle with corner radius
|
|
151
|
+
const roundedRectBlock = engine.block.create('graphic');
|
|
152
|
+
const roundedRectShape = engine.block.createShape('rect');
|
|
153
|
+
engine.block.setShape(roundedRectBlock, roundedRectShape);
|
|
154
|
+
|
|
155
|
+
// Set corner radius for rounded corners
|
|
156
|
+
engine.block.setFloat(roundedRectShape, 'shape/rect/cornerRadiusTL', 20);
|
|
157
|
+
engine.block.setFloat(roundedRectShape, 'shape/rect/cornerRadiusTR', 20);
|
|
158
|
+
engine.block.setFloat(roundedRectShape, 'shape/rect/cornerRadiusBL', 20);
|
|
159
|
+
engine.block.setFloat(roundedRectShape, 'shape/rect/cornerRadiusBR', 20);
|
|
160
|
+
|
|
161
|
+
const roundedRectFill = engine.block.createFill('color');
|
|
162
|
+
engine.block.setColor(roundedRectFill, 'fill/color/value', {
|
|
163
|
+
r: 0.9,
|
|
164
|
+
g: 0.4,
|
|
165
|
+
b: 0.2,
|
|
166
|
+
a: 1.0
|
|
167
|
+
});
|
|
168
|
+
engine.block.setFill(roundedRectBlock, roundedRectFill);
|
|
169
|
+
|
|
170
|
+
engine.block.setWidth(roundedRectBlock, blockWidth);
|
|
171
|
+
engine.block.setHeight(roundedRectBlock, blockHeight);
|
|
172
|
+
engine.block.appendChild(page, roundedRectBlock);
|
|
173
|
+
allBlocks.push(roundedRectBlock);
|
|
174
|
+
|
|
175
|
+
// Create an ellipse (circle when width equals height)
|
|
176
|
+
const ellipseBlock = engine.block.create('graphic');
|
|
177
|
+
const ellipseShape = engine.block.createShape('ellipse');
|
|
178
|
+
engine.block.setShape(ellipseBlock, ellipseShape);
|
|
179
|
+
|
|
180
|
+
const ellipseFill = engine.block.createFill('color');
|
|
181
|
+
engine.block.setColor(ellipseFill, 'fill/color/value', {
|
|
182
|
+
r: 0.3,
|
|
183
|
+
g: 0.8,
|
|
184
|
+
b: 0.4,
|
|
185
|
+
a: 1.0
|
|
186
|
+
});
|
|
187
|
+
engine.block.setFill(ellipseBlock, ellipseFill);
|
|
188
|
+
|
|
189
|
+
engine.block.setWidth(ellipseBlock, blockWidth);
|
|
190
|
+
engine.block.setHeight(ellipseBlock, blockHeight);
|
|
191
|
+
engine.block.appendChild(page, ellipseBlock);
|
|
192
|
+
allBlocks.push(ellipseBlock);
|
|
193
|
+
|
|
194
|
+
// Create a star with custom points and inner diameter
|
|
195
|
+
const starBlock = engine.block.create('graphic');
|
|
196
|
+
const starShape = engine.block.createShape('star');
|
|
197
|
+
engine.block.setShape(starBlock, starShape);
|
|
198
|
+
|
|
199
|
+
// Configure star properties
|
|
200
|
+
engine.block.setInt(starShape, 'shape/star/points', 5);
|
|
201
|
+
engine.block.setFloat(starShape, 'shape/star/innerDiameter', 0.4);
|
|
202
|
+
|
|
203
|
+
const starFill = engine.block.createFill('color');
|
|
204
|
+
engine.block.setColor(starFill, 'fill/color/value', {
|
|
205
|
+
r: 1.0,
|
|
206
|
+
g: 0.8,
|
|
207
|
+
b: 0.0,
|
|
208
|
+
a: 1.0
|
|
209
|
+
});
|
|
210
|
+
engine.block.setFill(starBlock, starFill);
|
|
211
|
+
|
|
212
|
+
engine.block.setWidth(starBlock, blockWidth);
|
|
213
|
+
engine.block.setHeight(starBlock, blockHeight);
|
|
214
|
+
engine.block.appendChild(page, starBlock);
|
|
215
|
+
allBlocks.push(starBlock);
|
|
216
|
+
|
|
217
|
+
// Create a polygon (hexagon with 6 sides)
|
|
218
|
+
const polygonBlock = engine.block.create('graphic');
|
|
219
|
+
const polygonShape = engine.block.createShape('polygon');
|
|
220
|
+
engine.block.setShape(polygonBlock, polygonShape);
|
|
221
|
+
|
|
222
|
+
// Set number of sides for the polygon
|
|
223
|
+
engine.block.setInt(polygonShape, 'shape/polygon/sides', 6);
|
|
224
|
+
|
|
225
|
+
const polygonFill = engine.block.createFill('color');
|
|
226
|
+
engine.block.setColor(polygonFill, 'fill/color/value', {
|
|
227
|
+
r: 0.6,
|
|
228
|
+
g: 0.2,
|
|
229
|
+
b: 0.8,
|
|
230
|
+
a: 1.0
|
|
231
|
+
});
|
|
232
|
+
engine.block.setFill(polygonBlock, polygonFill);
|
|
233
|
+
|
|
234
|
+
engine.block.setWidth(polygonBlock, blockWidth);
|
|
235
|
+
engine.block.setHeight(polygonBlock, blockHeight);
|
|
236
|
+
engine.block.appendChild(page, polygonBlock);
|
|
237
|
+
allBlocks.push(polygonBlock);
|
|
238
|
+
|
|
239
|
+
// Create a line shape
|
|
240
|
+
const lineBlock = engine.block.create('graphic');
|
|
241
|
+
const lineShape = engine.block.createShape('line');
|
|
242
|
+
engine.block.setShape(lineBlock, lineShape);
|
|
243
|
+
|
|
244
|
+
// Lines typically use strokes instead of fills
|
|
245
|
+
engine.block.setStrokeEnabled(lineBlock, true);
|
|
246
|
+
engine.block.setStrokeWidth(lineBlock, 6);
|
|
247
|
+
engine.block.setStrokeColor(lineBlock, {
|
|
248
|
+
r: 0.9,
|
|
249
|
+
g: 0.2,
|
|
250
|
+
b: 0.5,
|
|
251
|
+
a: 1.0
|
|
252
|
+
});
|
|
253
|
+
|
|
254
|
+
engine.block.setWidth(lineBlock, blockWidth);
|
|
255
|
+
engine.block.setHeight(lineBlock, blockHeight);
|
|
256
|
+
engine.block.appendChild(page, lineBlock);
|
|
257
|
+
allBlocks.push(lineBlock);
|
|
258
|
+
|
|
259
|
+
// Create a custom triangle using vector path
|
|
260
|
+
const vectorPathBlock = engine.block.create('graphic');
|
|
261
|
+
const vectorPathShape = engine.block.createShape('vector_path');
|
|
262
|
+
engine.block.setShape(vectorPathBlock, vectorPathShape);
|
|
263
|
+
|
|
264
|
+
// Define a triangle using SVG path syntax (coordinates scale with block size)
|
|
265
|
+
const trianglePath = 'M 50,0 L 100,100 L 0,100 Z';
|
|
266
|
+
engine.block.setString(
|
|
267
|
+
vectorPathShape,
|
|
268
|
+
'shape/vector_path/path',
|
|
269
|
+
trianglePath
|
|
270
|
+
);
|
|
271
|
+
|
|
272
|
+
const vectorPathFill = engine.block.createFill('color');
|
|
273
|
+
engine.block.setColor(vectorPathFill, 'fill/color/value', {
|
|
274
|
+
r: 0.9,
|
|
275
|
+
g: 0.2,
|
|
276
|
+
b: 0.5,
|
|
277
|
+
a: 1.0
|
|
278
|
+
});
|
|
279
|
+
engine.block.setFill(vectorPathBlock, vectorPathFill);
|
|
280
|
+
|
|
281
|
+
engine.block.setWidth(vectorPathBlock, blockWidth);
|
|
282
|
+
engine.block.setHeight(vectorPathBlock, blockHeight);
|
|
283
|
+
engine.block.appendChild(page, vectorPathBlock);
|
|
284
|
+
allBlocks.push(vectorPathBlock);
|
|
285
|
+
|
|
286
|
+
// Discover available properties for a shape
|
|
287
|
+
const shapeProperties = engine.block.findAllProperties(starShape);
|
|
288
|
+
// eslint-disable-next-line no-console
|
|
289
|
+
console.log('Star shape properties:', shapeProperties);
|
|
290
|
+
|
|
291
|
+
// Add a sticker using the convenience API
|
|
292
|
+
const stickerUrl =
|
|
293
|
+
'https://cdn.img.ly/assets/v4/ly.img.sticker/images/emoticons/imgly_sticker_emoticons_grin.svg';
|
|
294
|
+
const stickerBlock = await engine.block.addImage(stickerUrl, {
|
|
295
|
+
size: blockSize
|
|
296
|
+
});
|
|
297
|
+
engine.block.setKind(stickerBlock, 'sticker');
|
|
298
|
+
engine.block.appendChild(page, stickerBlock);
|
|
299
|
+
allBlocks.push(stickerBlock);
|
|
300
|
+
|
|
301
|
+
// Add a sticker using manual construction for more control
|
|
302
|
+
const manualStickerBlock = engine.block.create('graphic');
|
|
303
|
+
const manualStickerShape = engine.block.createShape('rect');
|
|
304
|
+
engine.block.setShape(manualStickerBlock, manualStickerShape);
|
|
305
|
+
|
|
306
|
+
// Create image fill with the sticker URI
|
|
307
|
+
const stickerFill = engine.block.createFill('image');
|
|
308
|
+
engine.block.setString(
|
|
309
|
+
stickerFill,
|
|
310
|
+
'fill/image/imageFileURI',
|
|
311
|
+
'https://cdn.img.ly/assets/v4/ly.img.sticker/images/emoticons/imgly_sticker_emoticons_star.svg'
|
|
312
|
+
);
|
|
313
|
+
engine.block.setFill(manualStickerBlock, stickerFill);
|
|
314
|
+
|
|
315
|
+
// Set content fill mode to preserve aspect ratio
|
|
316
|
+
if (engine.block.supportsContentFillMode(manualStickerBlock)) {
|
|
317
|
+
engine.block.setContentFillMode(manualStickerBlock, 'Contain');
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
// Set kind to 'sticker' for proper categorization
|
|
321
|
+
engine.block.setKind(manualStickerBlock, 'sticker');
|
|
322
|
+
|
|
323
|
+
engine.block.setWidth(manualStickerBlock, blockWidth);
|
|
324
|
+
engine.block.setHeight(manualStickerBlock, blockHeight);
|
|
325
|
+
engine.block.appendChild(page, manualStickerBlock);
|
|
326
|
+
allBlocks.push(manualStickerBlock);
|
|
327
|
+
|
|
328
|
+
// Query stickers from the asset library
|
|
329
|
+
const stickerResults = await engine.asset.findAssets('ly.img.sticker', {
|
|
330
|
+
page: 0,
|
|
331
|
+
perPage: 5
|
|
332
|
+
});
|
|
333
|
+
// eslint-disable-next-line no-console
|
|
334
|
+
console.log('Available stickers:', stickerResults.assets.length);
|
|
335
|
+
|
|
336
|
+
// Position all blocks in grid layout
|
|
337
|
+
allBlocks.forEach((block, index) => {
|
|
338
|
+
const pos = getPosition(index);
|
|
339
|
+
engine.block.setPositionX(block, pos.x);
|
|
340
|
+
engine.block.setPositionY(block, pos.y);
|
|
341
|
+
});
|
|
342
|
+
|
|
343
|
+
// Select the star block to show it in the inspector
|
|
344
|
+
engine.block.setSelected(starBlock, true);
|
|
345
|
+
|
|
346
|
+
// Set zoom to auto-fit the page
|
|
347
|
+
await cesdk.actions.run('zoom.toPage', { autoFit: true });
|
|
348
|
+
|
|
349
|
+
// eslint-disable-next-line no-console
|
|
350
|
+
console.log('Shapes and stickers guide initialized.');
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
export default Example;
|
|
355
|
+
```
|
|
356
|
+
|
|
357
|
+
This guide covers using the built-in shapes panel for interactive editing and inserting shapes and stickers programmatically using the block API.
|
|
358
|
+
|
|
359
|
+
## Using the Built-in UI
|
|
360
|
+
|
|
361
|
+
### Shapes Panel
|
|
362
|
+
|
|
363
|
+
Users access shapes through the asset library panel. The shapes panel displays available shape types that can be placed onto the canvas with a single click.
|
|
364
|
+
|
|
365
|
+
Once placed, shapes can be:
|
|
366
|
+
|
|
367
|
+
- **Resized** by dragging corner handles
|
|
368
|
+
- **Rotated** using the rotation handle
|
|
369
|
+
- **Styled** through the inspector panel (fills, strokes, opacity)
|
|
370
|
+
- **Positioned** by dragging or using alignment tools
|
|
371
|
+
|
|
372
|
+
### Stickers Panel
|
|
373
|
+
|
|
374
|
+
Stickers appear in the asset library under their categories. Users browse available stickers and add them to the canvas with a single click. Stickers maintain their aspect ratio when resized.
|
|
375
|
+
|
|
376
|
+
## Programmatic Shape Creation
|
|
377
|
+
|
|
378
|
+
### Initialize CE.SDK
|
|
379
|
+
|
|
380
|
+
Set up CE.SDK and configure the scene dimensions for your shapes.
|
|
381
|
+
|
|
382
|
+
```typescript highlight-setup
|
|
383
|
+
await cesdk.addPlugin(new DesignEditorConfig());
|
|
384
|
+
|
|
385
|
+
// Add asset source plugins
|
|
386
|
+
await cesdk.addPlugin(new BlurAssetSource());
|
|
387
|
+
await cesdk.addPlugin(new ColorPaletteAssetSource());
|
|
388
|
+
await cesdk.addPlugin(new CropPresetsAssetSource());
|
|
389
|
+
await cesdk.addPlugin(
|
|
390
|
+
new UploadAssetSources({ include: ['ly.img.image.upload'] })
|
|
391
|
+
);
|
|
392
|
+
await cesdk.addPlugin(
|
|
393
|
+
new DemoAssetSources({
|
|
394
|
+
include: [
|
|
395
|
+
'ly.img.templates.blank.*',
|
|
396
|
+
'ly.img.templates.presentation.*',
|
|
397
|
+
'ly.img.templates.print.*',
|
|
398
|
+
'ly.img.templates.social.*',
|
|
399
|
+
'ly.img.image.*'
|
|
400
|
+
]
|
|
401
|
+
})
|
|
402
|
+
);
|
|
403
|
+
await cesdk.addPlugin(new EffectsAssetSource());
|
|
404
|
+
await cesdk.addPlugin(new FiltersAssetSource());
|
|
405
|
+
await cesdk.addPlugin(new PagePresetsAssetSource());
|
|
406
|
+
await cesdk.addPlugin(new StickerAssetSource());
|
|
407
|
+
await cesdk.addPlugin(new TextAssetSource());
|
|
408
|
+
await cesdk.addPlugin(new TextComponentAssetSource());
|
|
409
|
+
await cesdk.addPlugin(new TypefaceAssetSource());
|
|
410
|
+
await cesdk.addPlugin(new VectorShapeAssetSource());
|
|
411
|
+
|
|
412
|
+
await cesdk.actions.run('scene.create', {
|
|
413
|
+
page: { width: 800, height: 600, unit: 'Pixel' }
|
|
414
|
+
});
|
|
415
|
+
|
|
416
|
+
const engine = cesdk.engine;
|
|
417
|
+
const page = engine.block.findByType('page')[0];
|
|
418
|
+
if (!engine.block.isValid(page)) {
|
|
419
|
+
throw new Error('No page found');
|
|
420
|
+
}
|
|
421
|
+
|
|
422
|
+
const pageWidth = engine.block.getWidth(page);
|
|
423
|
+
const pageHeight = engine.block.getHeight(page);
|
|
424
|
+
```
|
|
425
|
+
|
|
426
|
+
### Check Shape Support
|
|
427
|
+
|
|
428
|
+
Before attaching a shape to a block, verify it supports shapes using `supportsShape()`. Graphic blocks support shapes while text blocks do not.
|
|
429
|
+
|
|
430
|
+
```typescript highlight-check-shape-support
|
|
431
|
+
// Check if a block supports shapes before attaching one
|
|
432
|
+
const testBlock = engine.block.create('graphic');
|
|
433
|
+
const supportsShape = engine.block.supportsShape(testBlock);
|
|
434
|
+
// eslint-disable-next-line no-console
|
|
435
|
+
console.log('Graphic block supports shapes:', supportsShape); // true
|
|
436
|
+
|
|
437
|
+
// Text blocks do not support shapes
|
|
438
|
+
const textBlock = engine.block.create('text');
|
|
439
|
+
const textSupportsShape = engine.block.supportsShape(textBlock);
|
|
440
|
+
// eslint-disable-next-line no-console
|
|
441
|
+
console.log('Text block supports shapes:', textSupportsShape); // false
|
|
442
|
+
engine.block.destroy(textBlock);
|
|
443
|
+
engine.block.destroy(testBlock);
|
|
444
|
+
```
|
|
445
|
+
|
|
446
|
+
### Create Rectangle
|
|
447
|
+
|
|
448
|
+
Create rectangles with `createShape('rect')` and attach them to a graphic block with `setShape()`. Apply a fill to make the shape visible.
|
|
449
|
+
|
|
450
|
+
```typescript highlight-create-rectangle
|
|
451
|
+
// Create a rectangle with a solid color fill
|
|
452
|
+
const rectBlock = engine.block.create('graphic');
|
|
453
|
+
const rectShape = engine.block.createShape('rect');
|
|
454
|
+
engine.block.setShape(rectBlock, rectShape);
|
|
455
|
+
|
|
456
|
+
// Apply a solid color fill to make the shape visible
|
|
457
|
+
const rectFill = engine.block.createFill('color');
|
|
458
|
+
engine.block.setColor(rectFill, 'fill/color/value', {
|
|
459
|
+
r: 0.2,
|
|
460
|
+
g: 0.5,
|
|
461
|
+
b: 0.9,
|
|
462
|
+
a: 1.0
|
|
463
|
+
});
|
|
464
|
+
engine.block.setFill(rectBlock, rectFill);
|
|
465
|
+
|
|
466
|
+
engine.block.setWidth(rectBlock, blockWidth);
|
|
467
|
+
engine.block.setHeight(rectBlock, blockHeight);
|
|
468
|
+
engine.block.appendChild(page, rectBlock);
|
|
469
|
+
allBlocks.push(rectBlock);
|
|
470
|
+
```
|
|
471
|
+
|
|
472
|
+
### Create Rounded Rectangle
|
|
473
|
+
|
|
474
|
+
Rectangles support corner radius properties for rounded corners. Set each corner individually using `shape/rect/cornerRadiusTL`, `cornerRadiusTR`, `cornerRadiusBL`, and `cornerRadiusBR`.
|
|
475
|
+
|
|
476
|
+
```typescript highlight-create-rounded-rectangle
|
|
477
|
+
// Create a rounded rectangle with corner radius
|
|
478
|
+
const roundedRectBlock = engine.block.create('graphic');
|
|
479
|
+
const roundedRectShape = engine.block.createShape('rect');
|
|
480
|
+
engine.block.setShape(roundedRectBlock, roundedRectShape);
|
|
481
|
+
|
|
482
|
+
// Set corner radius for rounded corners
|
|
483
|
+
engine.block.setFloat(roundedRectShape, 'shape/rect/cornerRadiusTL', 20);
|
|
484
|
+
engine.block.setFloat(roundedRectShape, 'shape/rect/cornerRadiusTR', 20);
|
|
485
|
+
engine.block.setFloat(roundedRectShape, 'shape/rect/cornerRadiusBL', 20);
|
|
486
|
+
engine.block.setFloat(roundedRectShape, 'shape/rect/cornerRadiusBR', 20);
|
|
487
|
+
|
|
488
|
+
const roundedRectFill = engine.block.createFill('color');
|
|
489
|
+
engine.block.setColor(roundedRectFill, 'fill/color/value', {
|
|
490
|
+
r: 0.9,
|
|
491
|
+
g: 0.4,
|
|
492
|
+
b: 0.2,
|
|
493
|
+
a: 1.0
|
|
494
|
+
});
|
|
495
|
+
engine.block.setFill(roundedRectBlock, roundedRectFill);
|
|
496
|
+
|
|
497
|
+
engine.block.setWidth(roundedRectBlock, blockWidth);
|
|
498
|
+
engine.block.setHeight(roundedRectBlock, blockHeight);
|
|
499
|
+
engine.block.appendChild(page, roundedRectBlock);
|
|
500
|
+
allBlocks.push(roundedRectBlock);
|
|
501
|
+
```
|
|
502
|
+
|
|
503
|
+
### Create Ellipse
|
|
504
|
+
|
|
505
|
+
Create circles and ovals with `createShape('ellipse')`. The block's aspect ratio determines whether it appears as a circle (equal width and height) or an oval.
|
|
506
|
+
|
|
507
|
+
```typescript highlight-create-ellipse
|
|
508
|
+
// Create an ellipse (circle when width equals height)
|
|
509
|
+
const ellipseBlock = engine.block.create('graphic');
|
|
510
|
+
const ellipseShape = engine.block.createShape('ellipse');
|
|
511
|
+
engine.block.setShape(ellipseBlock, ellipseShape);
|
|
512
|
+
|
|
513
|
+
const ellipseFill = engine.block.createFill('color');
|
|
514
|
+
engine.block.setColor(ellipseFill, 'fill/color/value', {
|
|
515
|
+
r: 0.3,
|
|
516
|
+
g: 0.8,
|
|
517
|
+
b: 0.4,
|
|
518
|
+
a: 1.0
|
|
519
|
+
});
|
|
520
|
+
engine.block.setFill(ellipseBlock, ellipseFill);
|
|
521
|
+
|
|
522
|
+
engine.block.setWidth(ellipseBlock, blockWidth);
|
|
523
|
+
engine.block.setHeight(ellipseBlock, blockHeight);
|
|
524
|
+
engine.block.appendChild(page, ellipseBlock);
|
|
525
|
+
allBlocks.push(ellipseBlock);
|
|
526
|
+
```
|
|
527
|
+
|
|
528
|
+
### Create Star
|
|
529
|
+
|
|
530
|
+
Create stars with `createShape('star')`. Configure the number of points with `shape/star/points` and control the inner diameter with `shape/star/innerDiameter` (0.0 to 1.0).
|
|
531
|
+
|
|
532
|
+
```typescript highlight-create-star
|
|
533
|
+
// Create a star with custom points and inner diameter
|
|
534
|
+
const starBlock = engine.block.create('graphic');
|
|
535
|
+
const starShape = engine.block.createShape('star');
|
|
536
|
+
engine.block.setShape(starBlock, starShape);
|
|
537
|
+
|
|
538
|
+
// Configure star properties
|
|
539
|
+
engine.block.setInt(starShape, 'shape/star/points', 5);
|
|
540
|
+
engine.block.setFloat(starShape, 'shape/star/innerDiameter', 0.4);
|
|
541
|
+
|
|
542
|
+
const starFill = engine.block.createFill('color');
|
|
543
|
+
engine.block.setColor(starFill, 'fill/color/value', {
|
|
544
|
+
r: 1.0,
|
|
545
|
+
g: 0.8,
|
|
546
|
+
b: 0.0,
|
|
547
|
+
a: 1.0
|
|
548
|
+
});
|
|
549
|
+
engine.block.setFill(starBlock, starFill);
|
|
550
|
+
|
|
551
|
+
engine.block.setWidth(starBlock, blockWidth);
|
|
552
|
+
engine.block.setHeight(starBlock, blockHeight);
|
|
553
|
+
engine.block.appendChild(page, starBlock);
|
|
554
|
+
allBlocks.push(starBlock);
|
|
555
|
+
```
|
|
556
|
+
|
|
557
|
+
### Create Polygon
|
|
558
|
+
|
|
559
|
+
Create regular polygons with `createShape('polygon')`. Set the number of sides with `shape/polygon/sides` to create triangles (3), pentagons (5), hexagons (6), and more.
|
|
560
|
+
|
|
561
|
+
```typescript highlight-create-polygon
|
|
562
|
+
// Create a polygon (hexagon with 6 sides)
|
|
563
|
+
const polygonBlock = engine.block.create('graphic');
|
|
564
|
+
const polygonShape = engine.block.createShape('polygon');
|
|
565
|
+
engine.block.setShape(polygonBlock, polygonShape);
|
|
566
|
+
|
|
567
|
+
// Set number of sides for the polygon
|
|
568
|
+
engine.block.setInt(polygonShape, 'shape/polygon/sides', 6);
|
|
569
|
+
|
|
570
|
+
const polygonFill = engine.block.createFill('color');
|
|
571
|
+
engine.block.setColor(polygonFill, 'fill/color/value', {
|
|
572
|
+
r: 0.6,
|
|
573
|
+
g: 0.2,
|
|
574
|
+
b: 0.8,
|
|
575
|
+
a: 1.0
|
|
576
|
+
});
|
|
577
|
+
engine.block.setFill(polygonBlock, polygonFill);
|
|
578
|
+
|
|
579
|
+
engine.block.setWidth(polygonBlock, blockWidth);
|
|
580
|
+
engine.block.setHeight(polygonBlock, blockHeight);
|
|
581
|
+
engine.block.appendChild(page, polygonBlock);
|
|
582
|
+
allBlocks.push(polygonBlock);
|
|
583
|
+
```
|
|
584
|
+
|
|
585
|
+
### Create Line
|
|
586
|
+
|
|
587
|
+
Create lines with `createShape('line')`. Lines are typically styled with strokes rather than fills using `setStrokeEnabled()` and `setStrokeWidth()`.
|
|
588
|
+
|
|
589
|
+
```typescript highlight-create-line
|
|
590
|
+
// Create a line shape
|
|
591
|
+
const lineBlock = engine.block.create('graphic');
|
|
592
|
+
const lineShape = engine.block.createShape('line');
|
|
593
|
+
engine.block.setShape(lineBlock, lineShape);
|
|
594
|
+
|
|
595
|
+
// Lines typically use strokes instead of fills
|
|
596
|
+
engine.block.setStrokeEnabled(lineBlock, true);
|
|
597
|
+
engine.block.setStrokeWidth(lineBlock, 6);
|
|
598
|
+
engine.block.setStrokeColor(lineBlock, {
|
|
599
|
+
r: 0.9,
|
|
600
|
+
g: 0.2,
|
|
601
|
+
b: 0.5,
|
|
602
|
+
a: 1.0
|
|
603
|
+
});
|
|
604
|
+
|
|
605
|
+
engine.block.setWidth(lineBlock, blockWidth);
|
|
606
|
+
engine.block.setHeight(lineBlock, blockHeight);
|
|
607
|
+
engine.block.appendChild(page, lineBlock);
|
|
608
|
+
allBlocks.push(lineBlock);
|
|
609
|
+
```
|
|
610
|
+
|
|
611
|
+
### Create Vector Path
|
|
612
|
+
|
|
613
|
+
Create custom shapes with `createShape('vector_path')`. Define the path using SVG path syntax with `shape/vector_path/path`. The path coordinates scale proportionally with the block dimensions.
|
|
614
|
+
|
|
615
|
+
```typescript highlight-create-vector-path
|
|
616
|
+
// Create a custom triangle using vector path
|
|
617
|
+
const vectorPathBlock = engine.block.create('graphic');
|
|
618
|
+
const vectorPathShape = engine.block.createShape('vector_path');
|
|
619
|
+
engine.block.setShape(vectorPathBlock, vectorPathShape);
|
|
620
|
+
|
|
621
|
+
// Define a triangle using SVG path syntax (coordinates scale with block size)
|
|
622
|
+
const trianglePath = 'M 50,0 L 100,100 L 0,100 Z';
|
|
623
|
+
engine.block.setString(vectorPathShape, 'shape/vector_path/path', trianglePath);
|
|
624
|
+
|
|
625
|
+
const vectorPathFill = engine.block.createFill('color');
|
|
626
|
+
engine.block.setColor(vectorPathFill, 'fill/color/value', {
|
|
627
|
+
r: 0.9,
|
|
628
|
+
g: 0.2,
|
|
629
|
+
b: 0.5,
|
|
630
|
+
a: 1.0
|
|
631
|
+
});
|
|
632
|
+
engine.block.setFill(vectorPathBlock, vectorPathFill);
|
|
633
|
+
|
|
634
|
+
engine.block.setWidth(vectorPathBlock, blockWidth);
|
|
635
|
+
engine.block.setHeight(vectorPathBlock, blockHeight);
|
|
636
|
+
engine.block.appendChild(page, vectorPathBlock);
|
|
637
|
+
allBlocks.push(vectorPathBlock);
|
|
638
|
+
```
|
|
639
|
+
|
|
640
|
+
### Discover Shape Properties
|
|
641
|
+
|
|
642
|
+
Use `findAllProperties()` to discover available configuration options for any shape type.
|
|
643
|
+
|
|
644
|
+
```typescript highlight-discover-shape-properties
|
|
645
|
+
// Discover available properties for a shape
|
|
646
|
+
const shapeProperties = engine.block.findAllProperties(starShape);
|
|
647
|
+
// eslint-disable-next-line no-console
|
|
648
|
+
console.log('Star shape properties:', shapeProperties);
|
|
649
|
+
```
|
|
650
|
+
|
|
651
|
+
Each shape type has specific properties:
|
|
652
|
+
|
|
653
|
+
- **Rectangle**: `shape/rect/cornerRadiusTL`, `cornerRadiusTR`, `cornerRadiusBL`, `cornerRadiusBR`
|
|
654
|
+
- **Star**: `shape/star/points`, `shape/star/innerDiameter`
|
|
655
|
+
- **Polygon**: `shape/polygon/sides`
|
|
656
|
+
- **Vector Path**: `shape/vector_path/path`
|
|
657
|
+
|
|
658
|
+
## Programmatic Sticker Insertion
|
|
659
|
+
|
|
660
|
+
### Using the Convenience API
|
|
661
|
+
|
|
662
|
+
The simplest way to add stickers is with `engine.block.addImage()`. This convenience API handles graphic block creation, shape attachment, and fill setup automatically.
|
|
663
|
+
|
|
664
|
+
```typescript highlight-sticker-convenience-api
|
|
665
|
+
// Add a sticker using the convenience API
|
|
666
|
+
const stickerUrl =
|
|
667
|
+
'https://cdn.img.ly/assets/v4/ly.img.sticker/images/emoticons/imgly_sticker_emoticons_grin.svg';
|
|
668
|
+
const stickerBlock = await engine.block.addImage(stickerUrl, {
|
|
669
|
+
size: blockSize
|
|
670
|
+
});
|
|
671
|
+
engine.block.setKind(stickerBlock, 'sticker');
|
|
672
|
+
engine.block.appendChild(page, stickerBlock);
|
|
673
|
+
allBlocks.push(stickerBlock);
|
|
674
|
+
```
|
|
675
|
+
|
|
676
|
+
Setting `setKind(block, 'sticker')` categorizes the block correctly in the UI, which helps with organization and enables sticker-specific behaviors.
|
|
677
|
+
|
|
678
|
+
### Manual Sticker Construction
|
|
679
|
+
|
|
680
|
+
For full control over sticker creation, manually construct a graphic block with a rect shape and image fill.
|
|
681
|
+
|
|
682
|
+
```typescript highlight-sticker-manual-construction
|
|
683
|
+
// Add a sticker using manual construction for more control
|
|
684
|
+
const manualStickerBlock = engine.block.create('graphic');
|
|
685
|
+
const manualStickerShape = engine.block.createShape('rect');
|
|
686
|
+
engine.block.setShape(manualStickerBlock, manualStickerShape);
|
|
687
|
+
|
|
688
|
+
// Create image fill with the sticker URI
|
|
689
|
+
const stickerFill = engine.block.createFill('image');
|
|
690
|
+
engine.block.setString(
|
|
691
|
+
stickerFill,
|
|
692
|
+
'fill/image/imageFileURI',
|
|
693
|
+
'https://cdn.img.ly/assets/v4/ly.img.sticker/images/emoticons/imgly_sticker_emoticons_star.svg'
|
|
694
|
+
);
|
|
695
|
+
engine.block.setFill(manualStickerBlock, stickerFill);
|
|
696
|
+
|
|
697
|
+
// Set content fill mode to preserve aspect ratio
|
|
698
|
+
if (engine.block.supportsContentFillMode(manualStickerBlock)) {
|
|
699
|
+
engine.block.setContentFillMode(manualStickerBlock, 'Contain');
|
|
700
|
+
}
|
|
701
|
+
|
|
702
|
+
// Set kind to 'sticker' for proper categorization
|
|
703
|
+
engine.block.setKind(manualStickerBlock, 'sticker');
|
|
704
|
+
|
|
705
|
+
engine.block.setWidth(manualStickerBlock, blockWidth);
|
|
706
|
+
engine.block.setHeight(manualStickerBlock, blockHeight);
|
|
707
|
+
engine.block.appendChild(page, manualStickerBlock);
|
|
708
|
+
allBlocks.push(manualStickerBlock);
|
|
709
|
+
```
|
|
710
|
+
|
|
711
|
+
Using `setContentFillMode(block, 'Contain')` preserves the sticker's aspect ratio within the block bounds. Always check `supportsContentFillMode()` before setting this property.
|
|
712
|
+
|
|
713
|
+
### Query Stickers from Asset Library
|
|
714
|
+
|
|
715
|
+
Browse available stickers from asset sources using `engine.asset.findAssets()`.
|
|
716
|
+
|
|
717
|
+
```typescript highlight-query-stickers
|
|
718
|
+
// Query stickers from the asset library
|
|
719
|
+
const stickerResults = await engine.asset.findAssets('ly.img.sticker', {
|
|
720
|
+
page: 0,
|
|
721
|
+
perPage: 5
|
|
722
|
+
});
|
|
723
|
+
// eslint-disable-next-line no-console
|
|
724
|
+
console.log('Available stickers:', stickerResults.assets.length);
|
|
725
|
+
```
|
|
726
|
+
|
|
727
|
+
Use `ly.img.sticker` for raster stickers or `ly.img.vector.shape` for vector-based sticker assets.
|
|
728
|
+
|
|
729
|
+
## Troubleshooting
|
|
730
|
+
|
|
731
|
+
### Shape Not Visible
|
|
732
|
+
|
|
733
|
+
If a shape doesn't appear after creation:
|
|
734
|
+
|
|
735
|
+
- **Verify a fill is applied** - Shapes without fills are invisible. Create a fill with `createFill()` and apply it with `setFill()`
|
|
736
|
+
- **Check the block is added to the page** - Use `appendChild(page, block)` to add the block to the scene hierarchy
|
|
737
|
+
- **Ensure dimensions are set** - Call `setWidth()` and `setHeight()` to give the shape a size
|
|
738
|
+
|
|
739
|
+
### Sticker Appears Cropped
|
|
740
|
+
|
|
741
|
+
If stickers appear cropped or distorted:
|
|
742
|
+
|
|
743
|
+
- Use `setContentFillMode(block, 'Contain')` to preserve aspect ratio
|
|
744
|
+
- Check `supportsContentFillMode()` before setting the mode
|
|
745
|
+
- Adjust block dimensions to better match the sticker's native aspect ratio
|
|
746
|
+
|
|
747
|
+
### Invalid Shape Type
|
|
748
|
+
|
|
749
|
+
If `createShape()` throws an error:
|
|
750
|
+
|
|
751
|
+
- Verify the shape type is one of: `rect`, `ellipse`, `star`, `polygon`, `line`, `vector_path`
|
|
752
|
+
- Check for typos in the type string (case-sensitive)
|
|
753
|
+
|
|
754
|
+
## API Reference
|
|
755
|
+
|
|
756
|
+
| Method | Description |
|
|
757
|
+
| ----------------------------------------- | ------------------------------------------------ |
|
|
758
|
+
| `block.create('graphic')` | Create a graphic block for shapes |
|
|
759
|
+
| `block.createShape(type)` | Create a shape of the specified type |
|
|
760
|
+
| `block.supportsShape(block)` | Check if a block supports shapes |
|
|
761
|
+
| `block.setShape(block, shape)` | Attach a shape to a graphic block |
|
|
762
|
+
| `block.getShape(block)` | Get the shape attached to a block |
|
|
763
|
+
| `block.findAllProperties(shape)` | Discover available shape properties |
|
|
764
|
+
| `block.setInt(shape, property, value)` | Set integer property (points, sides) |
|
|
765
|
+
| `block.setFloat(shape, property, value)` | Set float property (corner radius, diameter) |
|
|
766
|
+
| `block.setString(shape, property, value)` | Set string property (vector path) |
|
|
767
|
+
| `block.createFill(type)` | Create a fill for the shape |
|
|
768
|
+
| `block.setFill(block, fill)` | Apply fill to a block |
|
|
769
|
+
| `block.setColor(fill, property, color)` | Set fill color value |
|
|
770
|
+
| `block.addImage(uri, options?)` | Convenience API for adding images/stickers |
|
|
771
|
+
| `block.setKind(block, kind)` | Set block kind for categorization |
|
|
772
|
+
| `block.setContentFillMode(block, mode)` | Set content fill mode ('Contain', 'Cover', etc.) |
|
|
773
|
+
| `block.supportsContentFillMode(block)` | Check if block supports content fill mode |
|
|
774
|
+
| `block.setPositionX(block, x)` | Set horizontal position |
|
|
775
|
+
| `block.setPositionY(block, y)` | Set vertical position |
|
|
776
|
+
| `block.setWidth(block, width)` | Set block width |
|
|
777
|
+
| `block.setHeight(block, height)` | Set block height |
|
|
778
|
+
| `block.appendChild(parent, child)` | Add block to parent |
|
|
779
|
+
| `block.setStrokeEnabled(block, enabled)` | Enable or disable stroke |
|
|
780
|
+
| `block.setStrokeWidth(block, width)` | Set stroke width |
|
|
781
|
+
| `block.setStrokeColor(block, color)` | Set stroke color |
|
|
782
|
+
| `block.isValid(block)` | Check if a block handle is valid |
|
|
783
|
+
| `scene.zoomToBlock(block, options)` | Zoom view to fit a block |
|
|
784
|
+
| `asset.findAssets(sourceId, query)` | Query assets from a source |
|
|
785
|
+
|
|
786
|
+
## Next Steps
|
|
787
|
+
|
|
788
|
+
- [Colors](./colors.md) - Work with colors, fills, and gradients
|
|
789
|
+
- [Filters and Effects](./filters-and-effects.md) - Apply visual effects to design elements
|
|
790
|
+
- [Position and Align](./insert-media/position-and-align.md) - Position elements precisely on the canvas
|
|
791
|
+
|
|
792
|
+
---
|
|
793
|
+
|
|
794
|
+
## More Resources
|
|
795
|
+
|
|
796
|
+
- **[Vanilla JS/TS Documentation Index](https://img.ly/docs/cesdk/js.md)** - Browse all Vanilla JS/TS documentation
|
|
797
|
+
- **[Complete Documentation](./llms-full.txt.md)** - Full documentation in one file (for LLMs)
|
|
798
|
+
- **[Web Documentation](./js.md)** - Interactive documentation with examples
|
|
799
|
+
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
|