@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,399 @@
|
|
|
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) > [Dock](./user-interface/customization/dock.md)
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
The dock is a sidebar containing buttons that open asset library panels. You
|
|
8
|
+
can position it on the left, right, or bottom of the editor. By default it
|
|
9
|
+
appears on the left side. This guide covers dock positioning, appearance
|
|
10
|
+
settings, edit mode contexts, and the asset source relationship.
|
|
11
|
+
|
|
12
|
+

|
|
13
|
+
|
|
14
|
+
> **Reading time:** 10 minutes
|
|
15
|
+
>
|
|
16
|
+
> **Resources:**
|
|
17
|
+
>
|
|
18
|
+
> - [Download examples](https://github.com/imgly/cesdk-web-examples/archive/refs/tags/release-$UBQ_VERSION$.zip)
|
|
19
|
+
> - [View source on GitHub](https://github.com/imgly/cesdk-web-examples)
|
|
20
|
+
> - [Open in StackBlitz](https://stackblitz.com/github/imgly/cesdk-web-examples)
|
|
21
|
+
> - [Live demo](https://img.ly/docs/cesdk/examples/guides-user-interface-customization-dock-browser/)
|
|
22
|
+
|
|
23
|
+
For adding and configuring dock buttons, see [Add Dock Buttons](./user-interface/customization/quick-start/add-dock-buttons.md). For general component manipulation (reordering, inserting, removing), see the [Component Order API Reference](./user-interface/customization/reference/component-order-api.md).
|
|
24
|
+
|
|
25
|
+
```typescript file=@cesdk_web_examples/guides-user-interface-customization-dock-browser/browser.ts reference-only
|
|
26
|
+
import type { EditorPlugin, EditorPluginContext } from '@cesdk/cesdk-js';
|
|
27
|
+
|
|
28
|
+
import {
|
|
29
|
+
BlurAssetSource,
|
|
30
|
+
ColorPaletteAssetSource,
|
|
31
|
+
CropPresetsAssetSource,
|
|
32
|
+
DemoAssetSources,
|
|
33
|
+
EffectsAssetSource,
|
|
34
|
+
FiltersAssetSource,
|
|
35
|
+
PagePresetsAssetSource,
|
|
36
|
+
StickerAssetSource,
|
|
37
|
+
TextAssetSource,
|
|
38
|
+
TextComponentAssetSource,
|
|
39
|
+
TypefaceAssetSource,
|
|
40
|
+
UploadAssetSources,
|
|
41
|
+
VectorShapeAssetSource
|
|
42
|
+
} from '@cesdk/cesdk-js/plugins';
|
|
43
|
+
import { DesignEditorConfig } from './design-editor/plugin';
|
|
44
|
+
import packageJson from './package.json';
|
|
45
|
+
|
|
46
|
+
class Example implements EditorPlugin {
|
|
47
|
+
name = packageJson.name;
|
|
48
|
+
version = packageJson.version;
|
|
49
|
+
|
|
50
|
+
async initialize({ cesdk }: EditorPluginContext): Promise<void> {
|
|
51
|
+
if (!cesdk) {
|
|
52
|
+
throw new Error('CE.SDK instance is required for this plugin');
|
|
53
|
+
}
|
|
54
|
+
await cesdk.addPlugin(new DesignEditorConfig());
|
|
55
|
+
|
|
56
|
+
// Add asset source plugins
|
|
57
|
+
await cesdk.addPlugin(new BlurAssetSource());
|
|
58
|
+
await cesdk.addPlugin(new ColorPaletteAssetSource());
|
|
59
|
+
await cesdk.addPlugin(new CropPresetsAssetSource());
|
|
60
|
+
await cesdk.addPlugin(
|
|
61
|
+
new UploadAssetSources({ include: ['ly.img.image.upload'] })
|
|
62
|
+
);
|
|
63
|
+
await cesdk.addPlugin(
|
|
64
|
+
new DemoAssetSources({
|
|
65
|
+
include: [
|
|
66
|
+
'ly.img.templates.blank.*',
|
|
67
|
+
'ly.img.templates.presentation.*',
|
|
68
|
+
'ly.img.templates.print.*',
|
|
69
|
+
'ly.img.templates.social.*',
|
|
70
|
+
'ly.img.image.*'
|
|
71
|
+
]
|
|
72
|
+
})
|
|
73
|
+
);
|
|
74
|
+
await cesdk.addPlugin(new EffectsAssetSource());
|
|
75
|
+
await cesdk.addPlugin(new FiltersAssetSource());
|
|
76
|
+
await cesdk.addPlugin(new PagePresetsAssetSource());
|
|
77
|
+
await cesdk.addPlugin(new StickerAssetSource());
|
|
78
|
+
await cesdk.addPlugin(new TextAssetSource());
|
|
79
|
+
await cesdk.addPlugin(new TextComponentAssetSource());
|
|
80
|
+
await cesdk.addPlugin(new TypefaceAssetSource());
|
|
81
|
+
await cesdk.addPlugin(new VectorShapeAssetSource());
|
|
82
|
+
|
|
83
|
+
await cesdk.actions.run('scene.create', {
|
|
84
|
+
page: {
|
|
85
|
+
sourceId: 'ly.img.page.presets',
|
|
86
|
+
assetId: 'ly.img.page.presets.print.iso.a6.landscape'
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
const engine = cesdk.engine;
|
|
91
|
+
const page = engine.block.findByType('page')[0];
|
|
92
|
+
const pageWidth = engine.block.getWidth(page);
|
|
93
|
+
const pageHeight = engine.block.getHeight(page);
|
|
94
|
+
|
|
95
|
+
// Create gradient background
|
|
96
|
+
const gradientFill = engine.block.createFill('gradient/linear');
|
|
97
|
+
engine.block.setGradientColorStops(gradientFill, 'fill/gradient/colors', [
|
|
98
|
+
{ color: { r: 0.18, g: 0.42, b: 0.71, a: 1 }, stop: 0 },
|
|
99
|
+
{ color: { r: 0.31, g: 0.58, b: 0.8, a: 1 }, stop: 0.5 },
|
|
100
|
+
{ color: { r: 0.13, g: 0.7, b: 0.67, a: 1 }, stop: 1 }
|
|
101
|
+
]);
|
|
102
|
+
engine.block.setFloat(gradientFill, 'fill/gradient/linear/startPointX', 0);
|
|
103
|
+
engine.block.setFloat(gradientFill, 'fill/gradient/linear/startPointY', 0);
|
|
104
|
+
engine.block.setFloat(gradientFill, 'fill/gradient/linear/endPointX', 1);
|
|
105
|
+
engine.block.setFloat(gradientFill, 'fill/gradient/linear/endPointY', 1);
|
|
106
|
+
engine.block.setFill(page, gradientFill);
|
|
107
|
+
|
|
108
|
+
// Create centered text
|
|
109
|
+
const titleText = engine.block.create('text');
|
|
110
|
+
engine.block.appendChild(page, titleText);
|
|
111
|
+
engine.block.replaceText(titleText, 'Dock\n\nimg.ly');
|
|
112
|
+
engine.block.setWidth(titleText, pageWidth);
|
|
113
|
+
engine.block.setHeightMode(titleText, 'Auto');
|
|
114
|
+
engine.block.setPositionX(titleText, 0);
|
|
115
|
+
engine.block.setPositionY(titleText, pageHeight * 0.35);
|
|
116
|
+
engine.block.setEnum(titleText, 'text/horizontalAlignment', 'Center');
|
|
117
|
+
engine.block.setFloat(titleText, 'text/fontSize', 24);
|
|
118
|
+
engine.block.setTextColor(titleText, { r: 1, g: 1, b: 1, a: 1 });
|
|
119
|
+
|
|
120
|
+
// Deselect all blocks for clean hero image
|
|
121
|
+
engine.block
|
|
122
|
+
.findAllSelected()
|
|
123
|
+
.forEach((block) => engine.block.setSelected(block, false));
|
|
124
|
+
engine.block.select(page);
|
|
125
|
+
|
|
126
|
+
// Configure dock to use large icons and hide text labels
|
|
127
|
+
cesdk.engine.editor.setSetting('dock/iconSize', 'large');
|
|
128
|
+
cesdk.engine.editor.setSetting('dock/hideLabels', true);
|
|
129
|
+
|
|
130
|
+
// Set a simplified dock for Text edit mode
|
|
131
|
+
cesdk.ui.setComponentOrder(
|
|
132
|
+
{ in: 'ly.img.dock', when: { editMode: 'Text' } },
|
|
133
|
+
[
|
|
134
|
+
{
|
|
135
|
+
id: 'ly.img.assetLibrary.dock',
|
|
136
|
+
key: 'ly.img.text',
|
|
137
|
+
icon: '@imgly/Text',
|
|
138
|
+
label: 'libraries.ly.img.text.label',
|
|
139
|
+
entries: ['ly.img.text']
|
|
140
|
+
}
|
|
141
|
+
]
|
|
142
|
+
);
|
|
143
|
+
|
|
144
|
+
// Add a custom asset source, create an entry for it, and add a dock button
|
|
145
|
+
// Step 1: Create the asset source (stores/provides assets)
|
|
146
|
+
cesdk.engine.asset.addLocalSource('my.brand.assets');
|
|
147
|
+
|
|
148
|
+
// Step 2: Create an asset library entry (UI representation of the source)
|
|
149
|
+
cesdk.ui.addAssetLibraryEntry({
|
|
150
|
+
id: 'my.brand.entry',
|
|
151
|
+
sourceIds: ['my.brand.assets'],
|
|
152
|
+
previewLength: 3,
|
|
153
|
+
gridColumns: 3,
|
|
154
|
+
gridItemHeight: 'square'
|
|
155
|
+
});
|
|
156
|
+
|
|
157
|
+
// Step 3: Add a dock button that opens the entry
|
|
158
|
+
cesdk.ui.insertOrderComponent(
|
|
159
|
+
{ in: 'ly.img.dock', position: 'end' },
|
|
160
|
+
{
|
|
161
|
+
id: 'ly.img.assetLibrary.dock',
|
|
162
|
+
key: 'brand',
|
|
163
|
+
entries: ['my.brand.entry'],
|
|
164
|
+
label: 'Brand',
|
|
165
|
+
icon: '@imgly/Favorite'
|
|
166
|
+
}
|
|
167
|
+
);
|
|
168
|
+
|
|
169
|
+
// Register a custom component and add it to the dock bottom
|
|
170
|
+
cesdk.ui.registerComponent('my.settings.button', ({ builder }) => {
|
|
171
|
+
builder.Button('settings', {
|
|
172
|
+
label: 'Settings',
|
|
173
|
+
icon: '@imgly/Settings',
|
|
174
|
+
onClick: () => {
|
|
175
|
+
cesdk.ui.showNotification({
|
|
176
|
+
message: 'Settings panel would open here',
|
|
177
|
+
type: 'info',
|
|
178
|
+
duration: 'short'
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
});
|
|
182
|
+
});
|
|
183
|
+
|
|
184
|
+
cesdk.ui.insertOrderComponent({ in: 'ly.img.dock', position: 'end' }, [
|
|
185
|
+
'ly.img.spacer',
|
|
186
|
+
'my.settings.button'
|
|
187
|
+
]);
|
|
188
|
+
|
|
189
|
+
// Retrieve and log the current dock order for reference
|
|
190
|
+
const currentOrder = cesdk.ui.getComponentOrder({
|
|
191
|
+
in: 'ly.img.dock'
|
|
192
|
+
});
|
|
193
|
+
console.log('Current dock order:', currentOrder);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
export default Example;
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
This guide covers dock positioning, configuring dock appearance settings, setting up edit mode-specific layouts, understanding the relationship between dock entries and asset sources, adding custom registered components, and viewing the default component order.
|
|
201
|
+
|
|
202
|
+
## Dock Position
|
|
203
|
+
|
|
204
|
+
Use the `at` option in `setComponentOrder` to place the dock on the left, right, or bottom of the editor. When `at` is omitted, `setComponentOrder` targets the `'left'` position.
|
|
205
|
+
|
|
206
|
+
```typescript
|
|
207
|
+
// Place dock on the right side
|
|
208
|
+
cesdk.ui.setComponentOrder({ in: 'ly.img.dock', at: 'right' }, [
|
|
209
|
+
'ly.img.assetLibrary.dock'
|
|
210
|
+
]);
|
|
211
|
+
|
|
212
|
+
// Place dock at the bottom (renders horizontally)
|
|
213
|
+
cesdk.ui.setComponentOrder({ in: 'ly.img.dock', at: 'bottom' }, [
|
|
214
|
+
'ly.img.assetLibrary.dock'
|
|
215
|
+
]);
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
You can place dock components at multiple positions simultaneously. Each position renders independently:
|
|
219
|
+
|
|
220
|
+
```typescript
|
|
221
|
+
// Main dock on the left
|
|
222
|
+
cesdk.ui.setComponentOrder({ in: 'ly.img.dock', at: 'left' }, [
|
|
223
|
+
'ly.img.assetLibrary.dock'
|
|
224
|
+
]);
|
|
225
|
+
|
|
226
|
+
// Secondary tools on the right
|
|
227
|
+
cesdk.ui.setComponentOrder({ in: 'ly.img.dock', at: 'right' }, [
|
|
228
|
+
'my.custom.tool'
|
|
229
|
+
]);
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
On small viewports, all dock positions automatically collapse into a single horizontal dock at the bottom.
|
|
233
|
+
|
|
234
|
+
## Show or Hide the Dock
|
|
235
|
+
|
|
236
|
+
Use the Feature API to control dock visibility:
|
|
237
|
+
|
|
238
|
+
```typescript
|
|
239
|
+
// Hide the dock
|
|
240
|
+
cesdk.feature.disable('ly.img.dock');
|
|
241
|
+
|
|
242
|
+
// Show the dock (default)
|
|
243
|
+
cesdk.feature.enable('ly.img.dock');
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
For more on the Feature API, see [Show/Hide Components](./user-interface/customization/quick-start/show-hide-components.md).
|
|
247
|
+
|
|
248
|
+
## Dock Appearance Settings
|
|
249
|
+
|
|
250
|
+
Two editor settings control how dock buttons look. Set `dock/iconSize` to `'large'` for 24px icons or `'normal'` for the default 16px. Set `dock/hideLabels` to `true` to show icons only.. When hidden, labels appear as tooltips on hover.
|
|
251
|
+
|
|
252
|
+
```typescript highlight=highlight-appearance-settings
|
|
253
|
+
// Configure dock to use large icons and hide text labels
|
|
254
|
+
cesdk.engine.editor.setSetting('dock/iconSize', 'large');
|
|
255
|
+
cesdk.engine.editor.setSetting('dock/hideLabels', true);
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
| Setting | Values | Description |
|
|
259
|
+
| ----------------- | ---------- | --------------------------------- | ------------------------------- |
|
|
260
|
+
| `dock/iconSize` | `'normal'` | `'large'` | Button icon size (16px or 24px) |
|
|
261
|
+
| `dock/hideLabels` | `boolean` | Hide text labels, show icons only |
|
|
262
|
+
|
|
263
|
+
## Edit Mode Context
|
|
264
|
+
|
|
265
|
+
The dock supports different component orders for different edit modes. Use the `when` option in `setComponentOrder` to define a layout that activates only in a specific mode. The following example sets a simplified dock that appears only when the user enters Text edit mode.
|
|
266
|
+
|
|
267
|
+
```typescript highlight=highlight-edit-mode-context
|
|
268
|
+
// Set a simplified dock for Text edit mode
|
|
269
|
+
cesdk.ui.setComponentOrder({ in: 'ly.img.dock', when: { editMode: 'Text' } }, [
|
|
270
|
+
{
|
|
271
|
+
id: 'ly.img.assetLibrary.dock',
|
|
272
|
+
key: 'ly.img.text',
|
|
273
|
+
icon: '@imgly/Text',
|
|
274
|
+
label: 'libraries.ly.img.text.label',
|
|
275
|
+
entries: ['ly.img.text']
|
|
276
|
+
}
|
|
277
|
+
]);
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
Available edit modes: `'Transform'` (default), `'Text'`, `'Crop'`, `'Trim'`, or any custom value. All Component Order API methods accept an optional `when` context. See the [Component Order API Reference](./user-interface/customization/reference/component-order-api.md) for details.
|
|
281
|
+
|
|
282
|
+
## Relationship with Asset Sources
|
|
283
|
+
|
|
284
|
+
Asset sources, asset library entries, and dock buttons work together in three steps:
|
|
285
|
+
|
|
286
|
+
1. **Create an asset source** — Register a source with the engine that stores and provides assets
|
|
287
|
+
2. **Create an asset library entry** — Define a UI entry that references the source via `sourceIds`
|
|
288
|
+
3. **Add a dock button** — Insert a button that opens the entry via the `entries` array
|
|
289
|
+
|
|
290
|
+
```typescript highlight=highlight-asset-source-relationship
|
|
291
|
+
// Add a custom asset source, create an entry for it, and add a dock button
|
|
292
|
+
// Step 1: Create the asset source (stores/provides assets)
|
|
293
|
+
cesdk.engine.asset.addLocalSource('my.brand.assets');
|
|
294
|
+
|
|
295
|
+
// Step 2: Create an asset library entry (UI representation of the source)
|
|
296
|
+
cesdk.ui.addAssetLibraryEntry({
|
|
297
|
+
id: 'my.brand.entry',
|
|
298
|
+
sourceIds: ['my.brand.assets'],
|
|
299
|
+
previewLength: 3,
|
|
300
|
+
gridColumns: 3,
|
|
301
|
+
gridItemHeight: 'square'
|
|
302
|
+
});
|
|
303
|
+
|
|
304
|
+
// Step 3: Add a dock button that opens the entry
|
|
305
|
+
cesdk.ui.insertOrderComponent(
|
|
306
|
+
{ in: 'ly.img.dock', position: 'end' },
|
|
307
|
+
{
|
|
308
|
+
id: 'ly.img.assetLibrary.dock',
|
|
309
|
+
key: 'brand',
|
|
310
|
+
entries: ['my.brand.entry'],
|
|
311
|
+
label: 'Brand',
|
|
312
|
+
icon: '@imgly/Favorite'
|
|
313
|
+
}
|
|
314
|
+
);
|
|
315
|
+
```
|
|
316
|
+
|
|
317
|
+
The `entries` array on the dock button takes **entry IDs**, not source IDs. If the entry ID doesn't exist, the button won't appear.
|
|
318
|
+
|
|
319
|
+
## Adding Custom Registered Components
|
|
320
|
+
|
|
321
|
+
Register fully custom components and add them to the dock. Use `cesdk.ui.registerComponent()` to define a component with the builder pattern, then insert it into the dock order. A spacer pushes the custom button to the bottom of the dock.
|
|
322
|
+
|
|
323
|
+
```typescript highlight=highlight-custom-component
|
|
324
|
+
// Register a custom component and add it to the dock bottom
|
|
325
|
+
cesdk.ui.registerComponent('my.settings.button', ({ builder }) => {
|
|
326
|
+
builder.Button('settings', {
|
|
327
|
+
label: 'Settings',
|
|
328
|
+
icon: '@imgly/Settings',
|
|
329
|
+
onClick: () => {
|
|
330
|
+
cesdk.ui.showNotification({
|
|
331
|
+
message: 'Settings panel would open here',
|
|
332
|
+
type: 'info',
|
|
333
|
+
duration: 'short'
|
|
334
|
+
});
|
|
335
|
+
}
|
|
336
|
+
});
|
|
337
|
+
});
|
|
338
|
+
|
|
339
|
+
cesdk.ui.insertOrderComponent({ in: 'ly.img.dock', position: 'end' }, [
|
|
340
|
+
'ly.img.spacer',
|
|
341
|
+
'my.settings.button'
|
|
342
|
+
]);
|
|
343
|
+
```
|
|
344
|
+
|
|
345
|
+
For the complete builder API documentation, see [Register a New Component](./user-interface/ui-extensions/register-new-component.md).
|
|
346
|
+
|
|
347
|
+
## Default Component Order
|
|
348
|
+
|
|
349
|
+
Retrieve the current dock order with `getComponentOrder` to inspect the default layout. For detailed descriptions of each component ID, see the [Component Reference](./user-interface/customization/reference/component-reference.md).
|
|
350
|
+
|
|
351
|
+
```typescript highlight=highlight-default-order
|
|
352
|
+
// Retrieve and log the current dock order for reference
|
|
353
|
+
const currentOrder = cesdk.ui.getComponentOrder({
|
|
354
|
+
in: 'ly.img.dock'
|
|
355
|
+
});
|
|
356
|
+
console.log('Current dock order:', currentOrder);
|
|
357
|
+
```
|
|
358
|
+
|
|
359
|
+
### Asset Library Buttons
|
|
360
|
+
|
|
361
|
+
| Component ID | Description |
|
|
362
|
+
| -------------------------- | -------------------------------------------------------------------------- |
|
|
363
|
+
| `ly.img.assetLibrary.dock` | Asset library button (configurable with `key`, `label`, `icon`, `entries`) |
|
|
364
|
+
|
|
365
|
+
### Layout
|
|
366
|
+
|
|
367
|
+
| Key | Type | Description |
|
|
368
|
+
| ------------ | ---------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
|
|
369
|
+
| `key` | `string` | Unique identifier within the dock. |
|
|
370
|
+
| `label` | `string` | Button label. If a matching I18N key is found, it is localized. |
|
|
371
|
+
| `icon` | `CustomIcon` | A URL string pointing to an SVG, a built-in icon ID (see [Icons](./user-interface/appearance/icons.md)), or a callback returning a URL. |
|
|
372
|
+
| `entries` | `string[]` | Asset entries shown when the button is pressed. A single entry opens directly; multiple entries show a group overview. |
|
|
373
|
+
| `onClick` | `() => void` | Custom click handler. If provided, overrides the default asset library toggle behavior. |
|
|
374
|
+
| `isSelected` | `boolean \| (() => boolean)` | Controls the selected state of the button. |
|
|
375
|
+
| `isDisabled` | `boolean \| (() => boolean)` | Controls the disabled state of the button. |
|
|
376
|
+
| `size` | `'normal' \| 'large'` | Size of the button. Defaults to `'normal'`. |
|
|
377
|
+
| `variant` | `'regular' \| 'plain'` | Visual variant of the button. Defaults to `'regular'`. |
|
|
378
|
+
| `color` | `'accent' \| 'danger'` | Color scheme of the button. |
|
|
379
|
+
|
|
380
|
+
## API Reference
|
|
381
|
+
|
|
382
|
+
| Method | Purpose |
|
|
383
|
+
| --------------------------------------------------------------- | --------------------------------------- |
|
|
384
|
+
| `cesdk.ui.getComponentOrder({ in: 'ly.img.dock', at? })` | Get dock component order at a position |
|
|
385
|
+
| `cesdk.ui.setComponentOrder({ in: 'ly.img.dock', at? }, order)` | Set dock component order at a position |
|
|
386
|
+
| `cesdk.ui.insertOrderComponent({ in: 'ly.img.dock', at? }, c)` | Insert components into the dock |
|
|
387
|
+
| `cesdk.ui.updateOrderComponent({ in: 'ly.img.dock', at? }, u)` | Update dock components |
|
|
388
|
+
| `cesdk.ui.removeOrderComponent({ in: 'ly.img.dock', at? })` | Remove dock components |
|
|
389
|
+
| `cesdk.ui.registerComponent()` | Register custom components for dock use |
|
|
390
|
+
| `cesdk.engine.editor.setSetting()` | Configure dock appearance settings |
|
|
391
|
+
|
|
392
|
+
---
|
|
393
|
+
|
|
394
|
+
## More Resources
|
|
395
|
+
|
|
396
|
+
- **[Vanilla JS/TS Documentation Index](https://img.ly/docs/cesdk/js.md)** - Browse all Vanilla JS/TS documentation
|
|
397
|
+
- **[Complete Documentation](./llms-full.txt.md)** - Full documentation in one file (for LLMs)
|
|
398
|
+
- **[Web Documentation](./js.md)** - Interactive documentation with examples
|
|
399
|
+
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
|
|
@@ -0,0 +1,289 @@
|
|
|
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) > [Force Crop](./user-interface/customization/force-crop.md)
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Programmatically apply crop presets to enforce specific aspect ratios or dimensions on design blocks using the `applyForceCrop` API.
|
|
8
|
+
|
|
9
|
+

|
|
10
|
+
|
|
11
|
+
> **Reading time:** 8 minutes
|
|
12
|
+
>
|
|
13
|
+
> **Resources:**
|
|
14
|
+
>
|
|
15
|
+
> - [Download examples](https://github.com/imgly/cesdk-web-examples/archive/refs/tags/release-$UBQ_VERSION$.zip)
|
|
16
|
+
> - [View source on GitHub](https://github.com/imgly/cesdk-web-examples)
|
|
17
|
+
> - [Open in StackBlitz](https://stackblitz.com/github/imgly/cesdk-web-examples)
|
|
18
|
+
> - [Live demo](https://img.ly/docs/cesdk/examples/guides-user-interface-customization-force-crop-browser/)
|
|
19
|
+
|
|
20
|
+
The `applyForceCrop` API lets you enforce specific dimensions or aspect ratios on blocks that support cropping. This is useful when building integrations that require content to match specific formats, such as Instagram portrait posts, LinkedIn profile photos, or Facebook shared images. You can control whether the crop UI appears after applying a preset through three different modes.
|
|
21
|
+
|
|
22
|
+
```typescript file=@cesdk_web_examples/guides-user-interface-customization-force-crop-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
|
+
|
|
52
|
+
const engine = cesdk.engine;
|
|
53
|
+
await cesdk.addPlugin(new DesignEditorConfig());
|
|
54
|
+
|
|
55
|
+
// Add asset source plugins
|
|
56
|
+
await cesdk.addPlugin(new BlurAssetSource());
|
|
57
|
+
await cesdk.addPlugin(new ColorPaletteAssetSource());
|
|
58
|
+
await cesdk.addPlugin(new CropPresetsAssetSource());
|
|
59
|
+
await cesdk.addPlugin(
|
|
60
|
+
new UploadAssetSources({ include: ['ly.img.image.upload'] })
|
|
61
|
+
);
|
|
62
|
+
await cesdk.addPlugin(
|
|
63
|
+
new DemoAssetSources({
|
|
64
|
+
include: [
|
|
65
|
+
'ly.img.templates.blank.*',
|
|
66
|
+
'ly.img.templates.presentation.*',
|
|
67
|
+
'ly.img.templates.print.*',
|
|
68
|
+
'ly.img.templates.social.*',
|
|
69
|
+
'ly.img.image.*'
|
|
70
|
+
]
|
|
71
|
+
})
|
|
72
|
+
);
|
|
73
|
+
await cesdk.addPlugin(new EffectsAssetSource());
|
|
74
|
+
await cesdk.addPlugin(new FiltersAssetSource());
|
|
75
|
+
await cesdk.addPlugin(new PagePresetsAssetSource());
|
|
76
|
+
await cesdk.addPlugin(new StickerAssetSource());
|
|
77
|
+
await cesdk.addPlugin(new TextAssetSource());
|
|
78
|
+
await cesdk.addPlugin(new TextComponentAssetSource());
|
|
79
|
+
await cesdk.addPlugin(new TypefaceAssetSource());
|
|
80
|
+
await cesdk.addPlugin(new VectorShapeAssetSource());
|
|
81
|
+
|
|
82
|
+
await cesdk.actions.run('scene.create', {
|
|
83
|
+
page: { width: 800, height: 600, unit: 'Pixel' }
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
const page = engine.block.findByType('page')[0];
|
|
87
|
+
|
|
88
|
+
// Add an image to demonstrate force crop
|
|
89
|
+
const imageUri = 'https://img.ly/static/ubq_samples/sample_1.jpg';
|
|
90
|
+
const imageBlock = await engine.block.addImage(imageUri);
|
|
91
|
+
engine.block.appendChild(page, imageBlock);
|
|
92
|
+
|
|
93
|
+
// Position and size the image to fill the page
|
|
94
|
+
engine.block.setWidth(imageBlock, 800);
|
|
95
|
+
engine.block.setHeight(imageBlock, 600);
|
|
96
|
+
engine.block.setPositionX(imageBlock, 0);
|
|
97
|
+
engine.block.setPositionY(imageBlock, 0);
|
|
98
|
+
|
|
99
|
+
// Create a custom crop preset with a fixed aspect ratio (4:5 for portrait)
|
|
100
|
+
engine.asset.addAssetToSource('ly.img.crop.presets', {
|
|
101
|
+
id: 'instagram-portrait',
|
|
102
|
+
label: { en: 'Portrait Post (4:5)' },
|
|
103
|
+
payload: {
|
|
104
|
+
transformPreset: {
|
|
105
|
+
type: 'FixedAspectRatio',
|
|
106
|
+
width: 4,
|
|
107
|
+
height: 5
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
|
|
112
|
+
// Create a custom crop preset with fixed dimensions
|
|
113
|
+
engine.asset.addAssetToSource('ly.img.crop.presets', {
|
|
114
|
+
id: 'profile-photo',
|
|
115
|
+
label: { en: 'Profile Photo (400x400)' },
|
|
116
|
+
payload: {
|
|
117
|
+
transformPreset: {
|
|
118
|
+
type: 'FixedSize',
|
|
119
|
+
width: 400,
|
|
120
|
+
height: 400,
|
|
121
|
+
designUnit: 'Pixel'
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
|
|
126
|
+
// Select the image block to demonstrate force crop
|
|
127
|
+
engine.block.select(imageBlock);
|
|
128
|
+
|
|
129
|
+
// Apply force crop with 'ifNeeded' mode
|
|
130
|
+
// This will only enter crop mode if dimensions differ from target
|
|
131
|
+
await cesdk.ui.applyForceCrop(imageBlock, {
|
|
132
|
+
sourceId: 'ly.img.crop.presets',
|
|
133
|
+
presetId: 'instagram-portrait',
|
|
134
|
+
mode: 'ifNeeded'
|
|
135
|
+
});
|
|
136
|
+
|
|
137
|
+
// If Needed mode - only enters crop mode when dimensions differ
|
|
138
|
+
// await cesdk.ui.applyForceCrop(imageBlock, {
|
|
139
|
+
// sourceId: 'ly.img.crop.presets',
|
|
140
|
+
// presetId: 'instagram-portrait',
|
|
141
|
+
// mode: 'ifNeeded'
|
|
142
|
+
// });
|
|
143
|
+
|
|
144
|
+
// Example of silent mode - applies crop without showing UI
|
|
145
|
+
// await cesdk.ui.applyForceCrop(imageBlock, {
|
|
146
|
+
// sourceId: 'ly.img.crop.presets',
|
|
147
|
+
// presetId: 'profile-photo',
|
|
148
|
+
// mode: 'silent'
|
|
149
|
+
// });
|
|
150
|
+
|
|
151
|
+
// Example of always mode - always enters crop mode
|
|
152
|
+
// await cesdk.ui.applyForceCrop(imageBlock, {
|
|
153
|
+
// sourceId: 'ly.img.crop.presets',
|
|
154
|
+
// presetId: 'instagram-portrait',
|
|
155
|
+
// mode: 'always'
|
|
156
|
+
// });
|
|
157
|
+
|
|
158
|
+
console.log('Force crop example loaded successfully!');
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
export default Example;
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
This guide covers how to apply crop presets programmatically, create custom presets with fixed aspect ratios or dimensions, and control the crop mode behavior.
|
|
166
|
+
|
|
167
|
+
## Applying a Crop Preset
|
|
168
|
+
|
|
169
|
+
The `cesdk.ui.applyForceCrop()` method takes a block ID and an options object containing `sourceId`, `presetId`, and `mode`. The `sourceId` identifies the asset source containing crop presets, `presetId` specifies which preset to apply, and `mode` determines whether the crop UI appears.
|
|
170
|
+
|
|
171
|
+
```typescript highlight=highlight-apply-force-crop
|
|
172
|
+
// Apply force crop with 'ifNeeded' mode
|
|
173
|
+
// This will only enter crop mode if dimensions differ from target
|
|
174
|
+
await cesdk.ui.applyForceCrop(imageBlock, {
|
|
175
|
+
sourceId: 'ly.img.crop.presets',
|
|
176
|
+
presetId: 'instagram-portrait',
|
|
177
|
+
mode: 'ifNeeded'
|
|
178
|
+
});
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
CE.SDK ships with default crop presets in the `ly.img.crop.presets` source. Common ratios like 1:1, 4:3, and 16:9 are available without additional configuration.
|
|
182
|
+
|
|
183
|
+
## Creating Custom Crop Presets
|
|
184
|
+
|
|
185
|
+
You can create custom crop presets by adding assets to the `ly.img.crop.presets` source using `engine.asset.addAssetToSource()`. Two preset types are available: fixed aspect ratio and fixed size.
|
|
186
|
+
|
|
187
|
+
### Fixed Aspect Ratio Presets
|
|
188
|
+
|
|
189
|
+
Fixed aspect ratio presets maintain a ratio but allow flexible dimensions. Set `type: 'FixedAspectRatio'` with width and height values representing the ratio.
|
|
190
|
+
|
|
191
|
+
```typescript highlight=highlight-custom-preset
|
|
192
|
+
// Create a custom crop preset with a fixed aspect ratio (4:5 for portrait)
|
|
193
|
+
engine.asset.addAssetToSource('ly.img.crop.presets', {
|
|
194
|
+
id: 'instagram-portrait',
|
|
195
|
+
label: { en: 'Portrait Post (4:5)' },
|
|
196
|
+
payload: {
|
|
197
|
+
transformPreset: {
|
|
198
|
+
type: 'FixedAspectRatio',
|
|
199
|
+
width: 4,
|
|
200
|
+
height: 5
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
});
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
### Fixed Size Presets
|
|
207
|
+
|
|
208
|
+
Fixed size presets enforce exact pixel dimensions. Set `type: 'FixedSize'` with specific width and height values.
|
|
209
|
+
|
|
210
|
+
```typescript highlight=highlight-fixed-size-preset
|
|
211
|
+
// Create a custom crop preset with fixed dimensions
|
|
212
|
+
engine.asset.addAssetToSource('ly.img.crop.presets', {
|
|
213
|
+
id: 'profile-photo',
|
|
214
|
+
label: { en: 'Profile Photo (400x400)' },
|
|
215
|
+
payload: {
|
|
216
|
+
transformPreset: {
|
|
217
|
+
type: 'FixedSize',
|
|
218
|
+
width: 400,
|
|
219
|
+
height: 400,
|
|
220
|
+
designUnit: 'Pixel'
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
});
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
## Understanding Crop Modes
|
|
227
|
+
|
|
228
|
+
The `mode` parameter controls how the editor responds after applying a crop preset.
|
|
229
|
+
|
|
230
|
+
### Silent Mode
|
|
231
|
+
|
|
232
|
+
Silent mode applies the crop without any UI feedback. The editor remains in its current mode. Use this for batch operations or when cropping should be invisible to the user.
|
|
233
|
+
|
|
234
|
+
```typescript highlight=highlight-silent-mode
|
|
235
|
+
// Example of silent mode - applies crop without showing UI
|
|
236
|
+
// await cesdk.ui.applyForceCrop(imageBlock, {
|
|
237
|
+
// sourceId: 'ly.img.crop.presets',
|
|
238
|
+
// presetId: 'profile-photo',
|
|
239
|
+
// mode: 'silent'
|
|
240
|
+
// });
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
### Always Mode
|
|
244
|
+
|
|
245
|
+
Always mode applies the crop and opens crop mode for user adjustment. Dimension inputs are hidden to prevent changing the preset.
|
|
246
|
+
|
|
247
|
+
```typescript highlight=highlight-always-mode
|
|
248
|
+
// Example of always mode - always enters crop mode
|
|
249
|
+
// await cesdk.ui.applyForceCrop(imageBlock, {
|
|
250
|
+
// sourceId: 'ly.img.crop.presets',
|
|
251
|
+
// presetId: 'instagram-portrait',
|
|
252
|
+
// mode: 'always'
|
|
253
|
+
// });
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
### If Needed Mode
|
|
257
|
+
|
|
258
|
+
If needed mode applies the crop only if dimensions differ from the target. The crop mode opens only when changes occur. This prevents unnecessary user interaction when content already fits the required dimensions.
|
|
259
|
+
|
|
260
|
+
```typescript highlight=highlight-if-needed-mode
|
|
261
|
+
// If Needed mode - only enters crop mode when dimensions differ
|
|
262
|
+
// await cesdk.ui.applyForceCrop(imageBlock, {
|
|
263
|
+
// sourceId: 'ly.img.crop.presets',
|
|
264
|
+
// presetId: 'instagram-portrait',
|
|
265
|
+
// mode: 'ifNeeded'
|
|
266
|
+
// });
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
## Applying Force Crop to Pages
|
|
270
|
+
|
|
271
|
+
When applying force crop to page blocks, the API automatically enables page resize interaction during the operation. In `silent` mode, resize interaction is disabled after completion. In `always` and `ifNeeded` modes, it remains enabled while crop mode is open.
|
|
272
|
+
|
|
273
|
+
## API Reference
|
|
274
|
+
|
|
275
|
+
| Method | Description |
|
|
276
|
+
| ------------------------------------------------ | -------------------------------- |
|
|
277
|
+
| `cesdk.ui.applyForceCrop(blockId, options)` | Apply a crop preset to a block |
|
|
278
|
+
| `engine.asset.addAssetToSource(sourceId, asset)` | Add an asset to a source |
|
|
279
|
+
| `engine.asset.findAllSources()` | List available asset sources |
|
|
280
|
+
| `engine.block.supportsCrop(blockId)` | Check if block supports cropping |
|
|
281
|
+
|
|
282
|
+
---
|
|
283
|
+
|
|
284
|
+
## More Resources
|
|
285
|
+
|
|
286
|
+
- **[Vanilla JS/TS Documentation Index](https://img.ly/docs/cesdk/js.md)** - Browse all Vanilla JS/TS documentation
|
|
287
|
+
- **[Complete Documentation](./llms-full.txt.md)** - Full documentation in one file (for LLMs)
|
|
288
|
+
- **[Web Documentation](./js.md)** - Interactive documentation with examples
|
|
289
|
+
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
|