@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
package/assets/docs/guide/user-interface/customization/quick-start/create-custom-components.md
ADDED
|
@@ -0,0 +1,374 @@
|
|
|
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) > [User Interface](./user-interface.md) > [Customization](./user-interface/customization.md) > [Create Custom Components](./user-interface/customization/quick-start/create-custom-components.md)
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Create and place custom UI components in CE.SDK using `registerComponent()` and `insertOrderComponent()`. Build buttons, controls, and multi-element components with the builder API.
|
|
8
|
+
|
|
9
|
+

|
|
10
|
+
|
|
11
|
+
> **Reading time:** 10 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-user-interface-customization-quick-start-create-custom-components-browser)
|
|
17
|
+
> - [Open in StackBlitz](https://stackblitz.com/github/imgly/cesdk-web-examples/tree/v$UBQ_VERSION$/guides-user-interface-customization-quick-start-create-custom-components-browser)
|
|
18
|
+
> - [Live demo](https://img.ly/docs/cesdk/examples/guides-user-interface-customization-quick-start-create-custom-components-browser/)
|
|
19
|
+
|
|
20
|
+
Custom components let you extend CE.SDK's UI beyond built-in action buttons. The workflow has two steps: register the component with `registerComponent()`, then place it with `insertOrderComponent()`.
|
|
21
|
+
|
|
22
|
+
```typescript file=@cesdk_web_examples/guides-user-interface-customization-quick-start-create-custom-components-browser/browser.ts reference-only
|
|
23
|
+
import type { EditorPlugin, EditorPluginContext } from '@cesdk/cesdk-js';
|
|
24
|
+
|
|
25
|
+
import {
|
|
26
|
+
BlurAssetSource,
|
|
27
|
+
ColorPaletteAssetSource,
|
|
28
|
+
CropPresetsAssetSource,
|
|
29
|
+
DemoAssetSources,
|
|
30
|
+
EffectsAssetSource,
|
|
31
|
+
FiltersAssetSource,
|
|
32
|
+
PagePresetsAssetSource,
|
|
33
|
+
StickerAssetSource,
|
|
34
|
+
TextAssetSource,
|
|
35
|
+
TextComponentAssetSource,
|
|
36
|
+
TypefaceAssetSource,
|
|
37
|
+
UploadAssetSources,
|
|
38
|
+
VectorShapeAssetSource
|
|
39
|
+
} from '@cesdk/cesdk-js/plugins';
|
|
40
|
+
import { DesignEditorConfig } from './design-editor/plugin';
|
|
41
|
+
import packageJson from './package.json';
|
|
42
|
+
|
|
43
|
+
class Example implements EditorPlugin {
|
|
44
|
+
name = packageJson.name;
|
|
45
|
+
version = packageJson.version;
|
|
46
|
+
|
|
47
|
+
async initialize({ cesdk }: EditorPluginContext): Promise<void> {
|
|
48
|
+
if (!cesdk) {
|
|
49
|
+
throw new Error('CE.SDK instance is required for this plugin');
|
|
50
|
+
}
|
|
51
|
+
await cesdk.addPlugin(new DesignEditorConfig());
|
|
52
|
+
|
|
53
|
+
// Add asset source plugins
|
|
54
|
+
await cesdk.addPlugin(new BlurAssetSource());
|
|
55
|
+
await cesdk.addPlugin(new ColorPaletteAssetSource());
|
|
56
|
+
await cesdk.addPlugin(new CropPresetsAssetSource());
|
|
57
|
+
await cesdk.addPlugin(
|
|
58
|
+
new UploadAssetSources({ include: ['ly.img.image.upload'] })
|
|
59
|
+
);
|
|
60
|
+
await cesdk.addPlugin(
|
|
61
|
+
new DemoAssetSources({
|
|
62
|
+
include: [
|
|
63
|
+
'ly.img.templates.blank.*',
|
|
64
|
+
'ly.img.templates.presentation.*',
|
|
65
|
+
'ly.img.templates.print.*',
|
|
66
|
+
'ly.img.templates.social.*',
|
|
67
|
+
'ly.img.image.*'
|
|
68
|
+
]
|
|
69
|
+
})
|
|
70
|
+
);
|
|
71
|
+
await cesdk.addPlugin(new EffectsAssetSource());
|
|
72
|
+
await cesdk.addPlugin(new FiltersAssetSource());
|
|
73
|
+
await cesdk.addPlugin(new PagePresetsAssetSource());
|
|
74
|
+
await cesdk.addPlugin(new StickerAssetSource());
|
|
75
|
+
await cesdk.addPlugin(new TextAssetSource());
|
|
76
|
+
await cesdk.addPlugin(new TextComponentAssetSource());
|
|
77
|
+
await cesdk.addPlugin(new TypefaceAssetSource());
|
|
78
|
+
await cesdk.addPlugin(new VectorShapeAssetSource());
|
|
79
|
+
|
|
80
|
+
await cesdk.actions.run('scene.create', {
|
|
81
|
+
page: {
|
|
82
|
+
sourceId: 'ly.img.page.presets',
|
|
83
|
+
assetId: 'ly.img.page.presets.print.iso.a6.landscape'
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
// Register a custom theme toggle button
|
|
88
|
+
cesdk.ui.registerComponent('my.themeToggle', ({ builder }) => {
|
|
89
|
+
const currentTheme = cesdk.ui.getTheme();
|
|
90
|
+
builder.Button('my.themeToggle.button', {
|
|
91
|
+
label: currentTheme === 'light' ? 'Dark Mode' : 'Light Mode',
|
|
92
|
+
icon: '@imgly/Adjustments',
|
|
93
|
+
variant: 'regular',
|
|
94
|
+
onClick: () => {
|
|
95
|
+
cesdk.ui.setTheme(currentTheme === 'light' ? 'dark' : 'light');
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
|
|
100
|
+
// Place the theme toggle in the navigation bar
|
|
101
|
+
cesdk.ui.insertOrderComponent(
|
|
102
|
+
{ in: 'ly.img.navigation.bar' },
|
|
103
|
+
'my.themeToggle'
|
|
104
|
+
);
|
|
105
|
+
|
|
106
|
+
// Register a quick actions component with multiple buttons
|
|
107
|
+
cesdk.ui.registerComponent('my.quickActions', ({ builder }) => {
|
|
108
|
+
// Zoom to fit button
|
|
109
|
+
builder.Button('my.quickActions.zoomFit', {
|
|
110
|
+
label: 'Fit',
|
|
111
|
+
icon: '@imgly/ZoomIn',
|
|
112
|
+
onClick: () => {
|
|
113
|
+
const pages = cesdk.engine.scene.getPages();
|
|
114
|
+
if (pages.length > 0) {
|
|
115
|
+
cesdk.engine.scene.zoomToBlock(pages[0]);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
|
|
120
|
+
// Reset zoom button
|
|
121
|
+
builder.Button('my.quickActions.resetZoom', {
|
|
122
|
+
label: 'Reset',
|
|
123
|
+
icon: '@imgly/Reset',
|
|
124
|
+
onClick: () => {
|
|
125
|
+
cesdk.engine.scene.setZoomLevel(1.0);
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
|
|
129
|
+
builder.Separator('my.quickActions.separator');
|
|
130
|
+
|
|
131
|
+
// Center canvas button
|
|
132
|
+
builder.Button('my.quickActions.center', {
|
|
133
|
+
label: 'Center',
|
|
134
|
+
icon: '@imgly/Position',
|
|
135
|
+
onClick: () => {
|
|
136
|
+
const pages = cesdk.engine.scene.getPages();
|
|
137
|
+
if (pages.length > 0) {
|
|
138
|
+
cesdk.engine.scene.zoomToBlock(pages[0], { padding: 40 });
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
});
|
|
142
|
+
});
|
|
143
|
+
|
|
144
|
+
// Place quick actions in the dock
|
|
145
|
+
cesdk.ui.insertOrderComponent({ in: 'ly.img.dock' }, [
|
|
146
|
+
'ly.img.spacer',
|
|
147
|
+
'my.quickActions'
|
|
148
|
+
]);
|
|
149
|
+
|
|
150
|
+
// Register a component demonstrating different builder elements
|
|
151
|
+
cesdk.ui.registerComponent('my.controls', ({ builder, state }) => {
|
|
152
|
+
// Use state to track toggle value
|
|
153
|
+
const { value: isEnabled, setValue: setIsEnabled } = state(
|
|
154
|
+
'isEnabled',
|
|
155
|
+
false
|
|
156
|
+
);
|
|
157
|
+
|
|
158
|
+
builder.Button('my.controls.toggle', {
|
|
159
|
+
label: isEnabled ? 'Enabled' : 'Disabled',
|
|
160
|
+
icon: '@imgly/Checkmark',
|
|
161
|
+
variant: isEnabled ? 'regular' : 'plain',
|
|
162
|
+
onClick: () => {
|
|
163
|
+
setIsEnabled(!isEnabled);
|
|
164
|
+
// eslint-disable-next-line no-console
|
|
165
|
+
console.log(`Controls ${!isEnabled ? 'enabled' : 'disabled'}`);
|
|
166
|
+
}
|
|
167
|
+
});
|
|
168
|
+
});
|
|
169
|
+
|
|
170
|
+
// Place controls in the canvas bar
|
|
171
|
+
cesdk.ui.insertOrderComponent(
|
|
172
|
+
{ in: 'ly.img.canvas.bar', at: 'top' },
|
|
173
|
+
'my.controls'
|
|
174
|
+
);
|
|
175
|
+
|
|
176
|
+
// eslint-disable-next-line no-console
|
|
177
|
+
console.log('Create Custom Components example loaded successfully');
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
export default Example;
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
This guide covers registering components, placing them in UI areas, using the builder API to create buttons and controls, and managing component state.
|
|
185
|
+
|
|
186
|
+
## Register a Component
|
|
187
|
+
|
|
188
|
+
Use `cesdk.ui.registerComponent()` to define a custom component. The function receives a context object with `builder` for creating UI elements and `cesdk` for accessing the SDK.
|
|
189
|
+
|
|
190
|
+
```typescript highlight=highlight-register-component
|
|
191
|
+
// Register a custom theme toggle button
|
|
192
|
+
cesdk.ui.registerComponent('my.themeToggle', ({ builder }) => {
|
|
193
|
+
const currentTheme = cesdk.ui.getTheme();
|
|
194
|
+
builder.Button('my.themeToggle.button', {
|
|
195
|
+
label: currentTheme === 'light' ? 'Dark Mode' : 'Light Mode',
|
|
196
|
+
icon: '@imgly/Adjustments',
|
|
197
|
+
variant: 'regular',
|
|
198
|
+
onClick: () => {
|
|
199
|
+
cesdk.ui.setTheme(currentTheme === 'light' ? 'dark' : 'light');
|
|
200
|
+
}
|
|
201
|
+
});
|
|
202
|
+
});
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
The component function is called whenever the UI needs to render. In this example, the button label updates based on the current theme since `getTheme()` is called inside the render function.
|
|
206
|
+
|
|
207
|
+
## Place the Component
|
|
208
|
+
|
|
209
|
+
Use `insertOrderComponent()` to add your registered component to any UI area.
|
|
210
|
+
|
|
211
|
+
```typescript highlight=highlight-place-component
|
|
212
|
+
// Place the theme toggle in the navigation bar
|
|
213
|
+
cesdk.ui.insertOrderComponent(
|
|
214
|
+
{ in: 'ly.img.navigation.bar' },
|
|
215
|
+
'my.themeToggle'
|
|
216
|
+
);
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
Components can be placed in any UI area:
|
|
220
|
+
|
|
221
|
+
- `ly.img.navigation.bar` - Top navigation bar
|
|
222
|
+
- `ly.img.dock` - Left-side dock panel
|
|
223
|
+
- `ly.img.inspector.bar` - Right-side inspector
|
|
224
|
+
- `ly.img.canvas.bar` - Canvas toolbar (with `at: 'top'` or `at: 'bottom'`)
|
|
225
|
+
- `ly.img.canvas.menu` - Context menu
|
|
226
|
+
|
|
227
|
+
## Build Multi-Button Components
|
|
228
|
+
|
|
229
|
+
A single registered component can render multiple builder elements. This example creates a "Quick Actions" component with zoom controls.
|
|
230
|
+
|
|
231
|
+
```typescript highlight=highlight-quick-actions
|
|
232
|
+
// Register a quick actions component with multiple buttons
|
|
233
|
+
cesdk.ui.registerComponent('my.quickActions', ({ builder }) => {
|
|
234
|
+
// Zoom to fit button
|
|
235
|
+
builder.Button('my.quickActions.zoomFit', {
|
|
236
|
+
label: 'Fit',
|
|
237
|
+
icon: '@imgly/ZoomIn',
|
|
238
|
+
onClick: () => {
|
|
239
|
+
const pages = cesdk.engine.scene.getPages();
|
|
240
|
+
if (pages.length > 0) {
|
|
241
|
+
cesdk.engine.scene.zoomToBlock(pages[0]);
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
});
|
|
245
|
+
|
|
246
|
+
// Reset zoom button
|
|
247
|
+
builder.Button('my.quickActions.resetZoom', {
|
|
248
|
+
label: 'Reset',
|
|
249
|
+
icon: '@imgly/Reset',
|
|
250
|
+
onClick: () => {
|
|
251
|
+
cesdk.engine.scene.setZoomLevel(1.0);
|
|
252
|
+
}
|
|
253
|
+
});
|
|
254
|
+
|
|
255
|
+
builder.Separator('my.quickActions.separator');
|
|
256
|
+
|
|
257
|
+
// Center canvas button
|
|
258
|
+
builder.Button('my.quickActions.center', {
|
|
259
|
+
label: 'Center',
|
|
260
|
+
icon: '@imgly/Position',
|
|
261
|
+
onClick: () => {
|
|
262
|
+
const pages = cesdk.engine.scene.getPages();
|
|
263
|
+
if (pages.length > 0) {
|
|
264
|
+
cesdk.engine.scene.zoomToBlock(pages[0], { padding: 40 });
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
});
|
|
268
|
+
});
|
|
269
|
+
|
|
270
|
+
// Place quick actions in the dock
|
|
271
|
+
cesdk.ui.insertOrderComponent({ in: 'ly.img.dock' }, [
|
|
272
|
+
'ly.img.spacer',
|
|
273
|
+
'my.quickActions'
|
|
274
|
+
]);
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
The component is placed in the dock after a spacer, pushing it toward the bottom. Each button performs a specific action when clicked.
|
|
278
|
+
|
|
279
|
+
## Use Component State
|
|
280
|
+
|
|
281
|
+
The builder context provides a `state` function for managing local component state. State persists across re-renders and triggers updates when changed.
|
|
282
|
+
|
|
283
|
+
```typescript highlight=highlight-builder-elements
|
|
284
|
+
// Register a component demonstrating different builder elements
|
|
285
|
+
cesdk.ui.registerComponent('my.controls', ({ builder, state }) => {
|
|
286
|
+
// Use state to track toggle value
|
|
287
|
+
const { value: isEnabled, setValue: setIsEnabled } = state(
|
|
288
|
+
'isEnabled',
|
|
289
|
+
false
|
|
290
|
+
);
|
|
291
|
+
|
|
292
|
+
builder.Button('my.controls.toggle', {
|
|
293
|
+
label: isEnabled ? 'Enabled' : 'Disabled',
|
|
294
|
+
icon: '@imgly/Checkmark',
|
|
295
|
+
variant: isEnabled ? 'regular' : 'plain',
|
|
296
|
+
onClick: () => {
|
|
297
|
+
setIsEnabled(!isEnabled);
|
|
298
|
+
// eslint-disable-next-line no-console
|
|
299
|
+
console.log(`Controls ${!isEnabled ? 'enabled' : 'disabled'}`);
|
|
300
|
+
}
|
|
301
|
+
});
|
|
302
|
+
});
|
|
303
|
+
|
|
304
|
+
// Place controls in the canvas bar
|
|
305
|
+
cesdk.ui.insertOrderComponent(
|
|
306
|
+
{ in: 'ly.img.canvas.bar', at: 'top' },
|
|
307
|
+
'my.controls'
|
|
308
|
+
);
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
The `state` function takes an ID and default value, returning the current value and a setter. When `setValue` is called, the component re-renders with the new value.
|
|
312
|
+
|
|
313
|
+
## Builder Elements Reference
|
|
314
|
+
|
|
315
|
+
Common builder methods for creating UI elements:
|
|
316
|
+
|
|
317
|
+
| Method | Purpose | Key Options |
|
|
318
|
+
| --------------------- | ----------------- | ---------------------------------------------------------------- |
|
|
319
|
+
| `builder.Button()` | Clickable button | `label`, `icon`, `onClick`, `variant` |
|
|
320
|
+
| `builder.Separator()` | Visual divider | None |
|
|
321
|
+
| `builder.Checkbox()` | Toggle control | `value`, `setValue`, `inputLabel` |
|
|
322
|
+
| `builder.Select()` | Dropdown selector | `values`, `value`, `setValue`, `searchable`, `searchPlaceholder` |
|
|
323
|
+
| `builder.Slider()` | Range input | `min`, `max`, `value`, `setValue` |
|
|
324
|
+
|
|
325
|
+
For the complete builder API, see [Register New Component](./user-interface/ui-extensions/register-new-component.md).
|
|
326
|
+
|
|
327
|
+
## Component Registration Timing
|
|
328
|
+
|
|
329
|
+
Components must be registered before they can be placed. Call `registerComponent()` before `insertOrderComponent()`. In the plugin pattern, both calls happen inside `initialize()`, ensuring the correct order. If registering outside a plugin, register components during the `onCreate` callback or immediately after initialization.
|
|
330
|
+
|
|
331
|
+
## Naming Conventions
|
|
332
|
+
|
|
333
|
+
Follow these patterns for component IDs:
|
|
334
|
+
|
|
335
|
+
- Use a unique prefix: `my.`, `company.`, `app.`
|
|
336
|
+
- Follow the pattern: `[prefix].[feature]` (e.g., `my.themeToggle`)
|
|
337
|
+
- Use dot notation for child elements: `my.themeToggle.button`
|
|
338
|
+
|
|
339
|
+
## Troubleshooting
|
|
340
|
+
|
|
341
|
+
**Component not appearing** - Ensure `registerComponent()` is called before `insertOrderComponent()`. Components must be registered first.
|
|
342
|
+
|
|
343
|
+
**Duplicate component error** - Each component ID must be unique. Don't register the same ID twice.
|
|
344
|
+
|
|
345
|
+
**State not updating** - Verify you're calling `setValue()` from the state function, not modifying the value directly.
|
|
346
|
+
|
|
347
|
+
**Builder elements not rendering** - Check for JavaScript errors in the component function. The render function must complete without throwing.
|
|
348
|
+
|
|
349
|
+
## API Reference
|
|
350
|
+
|
|
351
|
+
| Method | Purpose |
|
|
352
|
+
| --------------------------------- | ------------------------------ |
|
|
353
|
+
| `cesdk.ui.registerComponent()` | Register a custom component |
|
|
354
|
+
| `cesdk.ui.insertOrderComponent()` | Place a component in a UI area |
|
|
355
|
+
| `builder.Button()` | Create a button element |
|
|
356
|
+
| `builder.Separator()` | Create a visual separator |
|
|
357
|
+
| `state()` | Manage component-local state |
|
|
358
|
+
|
|
359
|
+
## Next Steps
|
|
360
|
+
|
|
361
|
+
[Register New Component](./user-interface/ui-extensions/register-new-component.md) - Full builder API documentation with all element types
|
|
362
|
+
|
|
363
|
+
[Component Order API](./user-interface/customization/reference/component-order-api.md) - All placement options and matchers
|
|
364
|
+
|
|
365
|
+
[Add Action Buttons](./user-interface/customization/quick-start/add-action-buttons.md) - Built-in action buttons without registration
|
|
366
|
+
|
|
367
|
+
---
|
|
368
|
+
|
|
369
|
+
## More Resources
|
|
370
|
+
|
|
371
|
+
- **[Vanilla JS/TS Documentation Index](https://img.ly/docs/cesdk/js.md)** - Browse all Vanilla JS/TS documentation
|
|
372
|
+
- **[Complete Documentation](./llms-full.txt.md)** - Full documentation in one file (for LLMs)
|
|
373
|
+
- **[Web Documentation](./js.md)** - Interactive documentation with examples
|
|
374
|
+
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
|
|
@@ -0,0 +1,323 @@
|
|
|
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) > [User Interface](./user-interface.md) > [Customization](./user-interface/customization.md) > [Reorder Components](./user-interface/customization/quick-start/reorder-components.md)
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Rearrange UI components using `getComponentOrder()` to inspect the current layout and `setComponentOrder()` to define custom arrangements.
|
|
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-user-interface-customization-quick-start-reorder-components-browser)
|
|
17
|
+
> - [Open in StackBlitz](https://stackblitz.com/github/imgly/cesdk-web-examples/tree/v$UBQ_VERSION$/guides-user-interface-customization-quick-start-reorder-components-browser)
|
|
18
|
+
> - [Live demo](https://img.ly/docs/cesdk/examples/guides-user-interface-customization-quick-start-reorder-components-browser/)
|
|
19
|
+
|
|
20
|
+
The Component Order API lets you customize the layout of all five UI areas by getting and setting the component order array. Each area maintains an ordered list of components that determines their visual arrangement.
|
|
21
|
+
|
|
22
|
+
```typescript file=@cesdk_web_examples/guides-user-interface-customization-quick-start-reorder-components-browser/browser.ts reference-only
|
|
23
|
+
import type { EditorPlugin, EditorPluginContext } from '@cesdk/cesdk-js';
|
|
24
|
+
|
|
25
|
+
import {
|
|
26
|
+
BlurAssetSource,
|
|
27
|
+
ColorPaletteAssetSource,
|
|
28
|
+
CropPresetsAssetSource,
|
|
29
|
+
DemoAssetSources,
|
|
30
|
+
EffectsAssetSource,
|
|
31
|
+
FiltersAssetSource,
|
|
32
|
+
PagePresetsAssetSource,
|
|
33
|
+
StickerAssetSource,
|
|
34
|
+
TextAssetSource,
|
|
35
|
+
TextComponentAssetSource,
|
|
36
|
+
TypefaceAssetSource,
|
|
37
|
+
UploadAssetSources,
|
|
38
|
+
VectorShapeAssetSource
|
|
39
|
+
} from '@cesdk/cesdk-js/plugins';
|
|
40
|
+
import { DesignEditorConfig } from './design-editor/plugin';
|
|
41
|
+
import packageJson from './package.json';
|
|
42
|
+
|
|
43
|
+
class Example implements EditorPlugin {
|
|
44
|
+
name = packageJson.name;
|
|
45
|
+
version = packageJson.version;
|
|
46
|
+
|
|
47
|
+
async initialize({ cesdk }: EditorPluginContext): Promise<void> {
|
|
48
|
+
if (!cesdk) {
|
|
49
|
+
throw new Error('CE.SDK instance is required for this plugin');
|
|
50
|
+
}
|
|
51
|
+
await cesdk.addPlugin(new DesignEditorConfig());
|
|
52
|
+
|
|
53
|
+
// Add asset source plugins
|
|
54
|
+
await cesdk.addPlugin(new BlurAssetSource());
|
|
55
|
+
await cesdk.addPlugin(new ColorPaletteAssetSource());
|
|
56
|
+
await cesdk.addPlugin(new CropPresetsAssetSource());
|
|
57
|
+
await cesdk.addPlugin(
|
|
58
|
+
new UploadAssetSources({ include: ['ly.img.image.upload'] })
|
|
59
|
+
);
|
|
60
|
+
await cesdk.addPlugin(
|
|
61
|
+
new DemoAssetSources({
|
|
62
|
+
include: [
|
|
63
|
+
'ly.img.templates.blank.*',
|
|
64
|
+
'ly.img.templates.presentation.*',
|
|
65
|
+
'ly.img.templates.print.*',
|
|
66
|
+
'ly.img.templates.social.*',
|
|
67
|
+
'ly.img.image.*'
|
|
68
|
+
]
|
|
69
|
+
})
|
|
70
|
+
);
|
|
71
|
+
await cesdk.addPlugin(new EffectsAssetSource());
|
|
72
|
+
await cesdk.addPlugin(new FiltersAssetSource());
|
|
73
|
+
await cesdk.addPlugin(new PagePresetsAssetSource());
|
|
74
|
+
await cesdk.addPlugin(new StickerAssetSource());
|
|
75
|
+
await cesdk.addPlugin(new TextAssetSource());
|
|
76
|
+
await cesdk.addPlugin(new TextComponentAssetSource());
|
|
77
|
+
await cesdk.addPlugin(new TypefaceAssetSource());
|
|
78
|
+
await cesdk.addPlugin(new VectorShapeAssetSource());
|
|
79
|
+
|
|
80
|
+
await cesdk.actions.run('scene.create', {
|
|
81
|
+
page: {
|
|
82
|
+
sourceId: 'ly.img.page.presets',
|
|
83
|
+
assetId: 'ly.img.page.presets.print.iso.a6.landscape'
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
// Get the current order of components in the navigation bar
|
|
88
|
+
const defaultOrder = cesdk.ui.getComponentOrder({
|
|
89
|
+
in: 'ly.img.navigation.bar'
|
|
90
|
+
});
|
|
91
|
+
console.log('Default navigation bar order:', defaultOrder);
|
|
92
|
+
|
|
93
|
+
// Set a custom order with title centered and actions grouped
|
|
94
|
+
cesdk.ui.setComponentOrder({ in: 'ly.img.navigation.bar' }, [
|
|
95
|
+
'ly.img.back.navigationBar',
|
|
96
|
+
'ly.img.spacer',
|
|
97
|
+
'ly.img.title.navigationBar',
|
|
98
|
+
'ly.img.spacer',
|
|
99
|
+
'ly.img.undoRedo.navigationBar',
|
|
100
|
+
'ly.img.actions.navigationBar'
|
|
101
|
+
]);
|
|
102
|
+
console.log('Navigation bar reordered with centered title');
|
|
103
|
+
|
|
104
|
+
// Canvas bar requires the 'at' option for top or bottom positioning
|
|
105
|
+
const canvasBarOrder = cesdk.ui.getComponentOrder({
|
|
106
|
+
in: 'ly.img.canvas.bar',
|
|
107
|
+
at: 'top'
|
|
108
|
+
});
|
|
109
|
+
console.log('Canvas bar (top) order:', canvasBarOrder);
|
|
110
|
+
|
|
111
|
+
// Set a custom canvas bar order
|
|
112
|
+
cesdk.ui.setComponentOrder({ in: 'ly.img.canvas.bar', at: 'top' }, [
|
|
113
|
+
'ly.img.page.add.canvasBar',
|
|
114
|
+
'ly.img.spacer',
|
|
115
|
+
'ly.img.zoom.canvasBar'
|
|
116
|
+
]);
|
|
117
|
+
|
|
118
|
+
// Use component objects for inline configuration
|
|
119
|
+
cesdk.ui.setComponentOrder({ in: 'ly.img.dock' }, [
|
|
120
|
+
'ly.img.spacer',
|
|
121
|
+
{
|
|
122
|
+
id: 'ly.img.assetLibrary.dock',
|
|
123
|
+
entries: ['ly.img.image', 'ly.img.text', 'ly.img.shape']
|
|
124
|
+
}
|
|
125
|
+
]);
|
|
126
|
+
console.log('Dock reordered with custom asset library entries');
|
|
127
|
+
|
|
128
|
+
// Set different orders for specific edit modes
|
|
129
|
+
cesdk.ui.setComponentOrder(
|
|
130
|
+
{ in: 'ly.img.inspector.bar', when: { editMode: 'Text' } },
|
|
131
|
+
[
|
|
132
|
+
'ly.img.text.typeFace.inspectorBar',
|
|
133
|
+
'ly.img.text.fontSize.inspectorBar',
|
|
134
|
+
'ly.img.separator',
|
|
135
|
+
'ly.img.text.bold.inspectorBar',
|
|
136
|
+
'ly.img.text.italic.inspectorBar'
|
|
137
|
+
]
|
|
138
|
+
);
|
|
139
|
+
console.log('Inspector bar customized for Text edit mode');
|
|
140
|
+
|
|
141
|
+
// Move a specific component to the beginning
|
|
142
|
+
const navOrder = cesdk.ui.getComponentOrder({
|
|
143
|
+
in: 'ly.img.navigation.bar'
|
|
144
|
+
});
|
|
145
|
+
const actionsIndex = navOrder.findIndex(
|
|
146
|
+
(c) => c.id === 'ly.img.actions.navigationBar'
|
|
147
|
+
);
|
|
148
|
+
|
|
149
|
+
if (actionsIndex > 0) {
|
|
150
|
+
const [actions] = navOrder.splice(actionsIndex, 1);
|
|
151
|
+
navOrder.unshift(actions);
|
|
152
|
+
cesdk.ui.setComponentOrder({ in: 'ly.img.navigation.bar' }, navOrder);
|
|
153
|
+
console.log('Moved actions to the beginning of navigation bar');
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
// eslint-disable-next-line no-console
|
|
157
|
+
console.log('Reorder Components example loaded successfully');
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
export default Example;
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
This guide covers how to get the current component order, set a custom order, use component objects for inline configuration, set edit mode-specific orders, and move individual components programmatically.
|
|
165
|
+
|
|
166
|
+
## UI Areas
|
|
167
|
+
|
|
168
|
+
CE.SDK provides five customizable UI areas.
|
|
169
|
+
|
|
170
|
+
| Area | Location | Purpose |
|
|
171
|
+
| ------------------------- | ------------------ | ---------------------- |
|
|
172
|
+
| `'ly.img.navigation.bar'` | Top | Navigation and actions |
|
|
173
|
+
| `'ly.img.dock'` | Side | Asset library access |
|
|
174
|
+
| `'ly.img.inspector.bar'` | Side | Property controls |
|
|
175
|
+
| `'ly.img.canvas.menu'` | Canvas | Context menu |
|
|
176
|
+
| `'ly.img.canvas.bar'` | Above/below canvas | Contextual controls |
|
|
177
|
+
|
|
178
|
+
The canvas bar requires the `at` option specifying `'top'` or `'bottom'`.
|
|
179
|
+
|
|
180
|
+
## Get Current Order
|
|
181
|
+
|
|
182
|
+
Use `getComponentOrder()` to inspect the current arrangement of components in any UI area.
|
|
183
|
+
|
|
184
|
+
```typescript highlight=highlight-get-order
|
|
185
|
+
// Get the current order of components in the navigation bar
|
|
186
|
+
const defaultOrder = cesdk.ui.getComponentOrder({
|
|
187
|
+
in: 'ly.img.navigation.bar'
|
|
188
|
+
});
|
|
189
|
+
console.log('Default navigation bar order:', defaultOrder);
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
The method returns an array of component objects, each with an `id` property and optional configuration. This is useful for understanding the default layout before making changes.
|
|
193
|
+
|
|
194
|
+
## Set Custom Order
|
|
195
|
+
|
|
196
|
+
Use `setComponentOrder()` to define a new component arrangement. Pass an array of component IDs or component objects.
|
|
197
|
+
|
|
198
|
+
```typescript highlight=highlight-set-order
|
|
199
|
+
// Set a custom order with title centered and actions grouped
|
|
200
|
+
cesdk.ui.setComponentOrder({ in: 'ly.img.navigation.bar' }, [
|
|
201
|
+
'ly.img.back.navigationBar',
|
|
202
|
+
'ly.img.spacer',
|
|
203
|
+
'ly.img.title.navigationBar',
|
|
204
|
+
'ly.img.spacer',
|
|
205
|
+
'ly.img.undoRedo.navigationBar',
|
|
206
|
+
'ly.img.actions.navigationBar'
|
|
207
|
+
]);
|
|
208
|
+
console.log('Navigation bar reordered with centered title');
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
The component array completely replaces the existing order. Components not included in the array will not appear in that area.
|
|
212
|
+
|
|
213
|
+
## Canvas Bar Positioning
|
|
214
|
+
|
|
215
|
+
The canvas bar is unique in requiring a position parameter. Use `at: 'top'` or `at: 'bottom'` for both get and set operations.
|
|
216
|
+
|
|
217
|
+
```typescript highlight=highlight-canvas-bar
|
|
218
|
+
// Canvas bar requires the 'at' option for top or bottom positioning
|
|
219
|
+
const canvasBarOrder = cesdk.ui.getComponentOrder({
|
|
220
|
+
in: 'ly.img.canvas.bar',
|
|
221
|
+
at: 'top'
|
|
222
|
+
});
|
|
223
|
+
console.log('Canvas bar (top) order:', canvasBarOrder);
|
|
224
|
+
|
|
225
|
+
// Set a custom canvas bar order
|
|
226
|
+
cesdk.ui.setComponentOrder({ in: 'ly.img.canvas.bar', at: 'top' }, [
|
|
227
|
+
'ly.img.page.add.canvasBar',
|
|
228
|
+
'ly.img.spacer',
|
|
229
|
+
'ly.img.zoom.canvasBar'
|
|
230
|
+
]);
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
## Using Component Objects
|
|
234
|
+
|
|
235
|
+
Pass component objects instead of string IDs when you need inline configuration. This is useful for components like the asset library that accept additional options.
|
|
236
|
+
|
|
237
|
+
```typescript highlight=highlight-component-objects
|
|
238
|
+
// Use component objects for inline configuration
|
|
239
|
+
cesdk.ui.setComponentOrder({ in: 'ly.img.dock' }, [
|
|
240
|
+
'ly.img.spacer',
|
|
241
|
+
{
|
|
242
|
+
id: 'ly.img.assetLibrary.dock',
|
|
243
|
+
entries: ['ly.img.image', 'ly.img.text', 'ly.img.shape']
|
|
244
|
+
}
|
|
245
|
+
]);
|
|
246
|
+
console.log('Dock reordered with custom asset library entries');
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
The `entries` property specifies which asset categories appear in the dock's asset library button.
|
|
250
|
+
|
|
251
|
+
## Edit Mode Specific Orders
|
|
252
|
+
|
|
253
|
+
Set different orders for specific edit modes using the `when` context. This lets you show different controls based on what the user is editing.
|
|
254
|
+
|
|
255
|
+
```typescript highlight=highlight-edit-mode
|
|
256
|
+
// Set different orders for specific edit modes
|
|
257
|
+
cesdk.ui.setComponentOrder(
|
|
258
|
+
{ in: 'ly.img.inspector.bar', when: { editMode: 'Text' } },
|
|
259
|
+
[
|
|
260
|
+
'ly.img.text.typeFace.inspectorBar',
|
|
261
|
+
'ly.img.text.fontSize.inspectorBar',
|
|
262
|
+
'ly.img.separator',
|
|
263
|
+
'ly.img.text.bold.inspectorBar',
|
|
264
|
+
'ly.img.text.italic.inspectorBar'
|
|
265
|
+
]
|
|
266
|
+
);
|
|
267
|
+
console.log('Inspector bar customized for Text edit mode');
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
Common edit modes include `Transform`, `Crop`, `Trim`, and `Text`. The order only applies when the specified edit mode is active.
|
|
271
|
+
|
|
272
|
+
## Moving Components
|
|
273
|
+
|
|
274
|
+
Combine `getComponentOrder()` and `setComponentOrder()` to move individual components. Get the current order, modify the array, and set it back.
|
|
275
|
+
|
|
276
|
+
```typescript highlight=highlight-move-component
|
|
277
|
+
// Move a specific component to the beginning
|
|
278
|
+
const navOrder = cesdk.ui.getComponentOrder({
|
|
279
|
+
in: 'ly.img.navigation.bar'
|
|
280
|
+
});
|
|
281
|
+
const actionsIndex = navOrder.findIndex(
|
|
282
|
+
(c) => c.id === 'ly.img.actions.navigationBar'
|
|
283
|
+
);
|
|
284
|
+
|
|
285
|
+
if (actionsIndex > 0) {
|
|
286
|
+
const [actions] = navOrder.splice(actionsIndex, 1);
|
|
287
|
+
navOrder.unshift(actions);
|
|
288
|
+
cesdk.ui.setComponentOrder({ in: 'ly.img.navigation.bar' }, navOrder);
|
|
289
|
+
console.log('Moved actions to the beginning of navigation bar');
|
|
290
|
+
}
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
Use standard array methods like `splice`, `unshift`, and `push` to rearrange components.
|
|
294
|
+
|
|
295
|
+
## Troubleshooting
|
|
296
|
+
|
|
297
|
+
**Components not rendering** — Ensure all component IDs in the array are valid and registered. Invalid IDs are silently ignored.
|
|
298
|
+
|
|
299
|
+
**Canvas bar error** — Remember to include `at: 'top'` or `at: 'bottom'` for canvas bar operations.
|
|
300
|
+
|
|
301
|
+
**Order not persisting** — Component orders are in-memory only. Persist to your own storage if needed across sessions.
|
|
302
|
+
|
|
303
|
+
## API Reference
|
|
304
|
+
|
|
305
|
+
| Method | Category | Purpose |
|
|
306
|
+
| ------------------------------ | -------- | ---------------------------------------- |
|
|
307
|
+
| `cesdk.ui.getComponentOrder()` | UI | Get current component order for an area |
|
|
308
|
+
| `cesdk.ui.setComponentOrder()` | UI | Set complete component order for an area |
|
|
309
|
+
|
|
310
|
+
## Next Steps
|
|
311
|
+
|
|
312
|
+
- [Add Action Buttons](./user-interface/customization/quick-start/add-action-buttons.md) — Add new buttons to the order
|
|
313
|
+
- [Component Order API](./user-interface/customization/reference/component-order-api.md) — Full API documentation
|
|
314
|
+
- [Component Reference](./user-interface/customization/reference/component-reference.md) — Find component IDs
|
|
315
|
+
|
|
316
|
+
---
|
|
317
|
+
|
|
318
|
+
## More Resources
|
|
319
|
+
|
|
320
|
+
- **[Vanilla JS/TS Documentation Index](https://img.ly/docs/cesdk/js.md)** - Browse all Vanilla JS/TS documentation
|
|
321
|
+
- **[Complete Documentation](./llms-full.txt.md)** - Full documentation in one file (for LLMs)
|
|
322
|
+
- **[Web Documentation](./js.md)** - Interactive documentation with examples
|
|
323
|
+
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
|