@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,751 @@
|
|
|
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) > [Colors](./colors.md) > [For Print](./colors/for-print.md) > [Spot Colors](./colors/for-print/spot.md)
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Define and manage spot colors programmatically for professional print workflows with exact color matching through premixed inks.
|
|
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-colors-for-print-spot-browser)
|
|
17
|
+
> - [Open in StackBlitz](https://stackblitz.com/github/imgly/cesdk-web-examples/tree/v$UBQ_VERSION$/guides-colors-for-print-spot-browser)
|
|
18
|
+
> - [Live demo](https://img.ly/docs/cesdk/examples/guides-colors-for-print-spot-browser/)
|
|
19
|
+
|
|
20
|
+
Spot colors are named colors reproduced using premixed inks in print production, providing exact color matching that CMYK process colors cannot guarantee. CE.SDK maintains a registry of spot color definitions at the editor level, where each spot color has a name and screen approximations (RGB and/or CMYK) for display purposes. The actual premixed ink is used during printing based on the color name.
|
|
21
|
+
|
|
22
|
+
```typescript file=@cesdk_web_examples/guides-colors-for-print-spot-browser/browser.ts reference-only
|
|
23
|
+
import type {
|
|
24
|
+
EditorPlugin,
|
|
25
|
+
EditorPluginContext,
|
|
26
|
+
SpotColor
|
|
27
|
+
} from '@cesdk/cesdk-js';
|
|
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
|
+
// Type guard to check if a color is a SpotColor
|
|
47
|
+
// Color can be RGBAColor, CMYKColor, or SpotColor
|
|
48
|
+
const isSpotColor = (color: unknown): color is SpotColor => {
|
|
49
|
+
return (
|
|
50
|
+
typeof color === 'object' &&
|
|
51
|
+
color !== null &&
|
|
52
|
+
'name' in color &&
|
|
53
|
+
'tint' in color &&
|
|
54
|
+
'externalReference' in color
|
|
55
|
+
);
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* CE.SDK Plugin: Spot Colors Guide
|
|
60
|
+
*
|
|
61
|
+
* This example demonstrates:
|
|
62
|
+
* - Defining spot colors with RGB and CMYK approximations
|
|
63
|
+
* - Applying spot colors to fills, strokes, and shadows
|
|
64
|
+
* - Using tints for lighter color variations
|
|
65
|
+
* - Querying and updating spot color definitions
|
|
66
|
+
* - Removing spot colors and handling the magenta fallback
|
|
67
|
+
* - Assigning spot colors to cutout types
|
|
68
|
+
*/
|
|
69
|
+
class Example implements EditorPlugin {
|
|
70
|
+
name = packageJson.name;
|
|
71
|
+
|
|
72
|
+
version = packageJson.version;
|
|
73
|
+
|
|
74
|
+
async initialize({ cesdk }: EditorPluginContext): Promise<void> {
|
|
75
|
+
if (!cesdk) {
|
|
76
|
+
throw new Error('CE.SDK instance is required for this plugin');
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
await cesdk.addPlugin(new DesignEditorConfig());
|
|
80
|
+
// Add asset source plugins
|
|
81
|
+
await cesdk.addPlugin(new BlurAssetSource());
|
|
82
|
+
await cesdk.addPlugin(new ColorPaletteAssetSource());
|
|
83
|
+
await cesdk.addPlugin(new CropPresetsAssetSource());
|
|
84
|
+
await cesdk.addPlugin(
|
|
85
|
+
new UploadAssetSources({ include: ['ly.img.image.upload'] })
|
|
86
|
+
);
|
|
87
|
+
await cesdk.addPlugin(
|
|
88
|
+
new DemoAssetSources({
|
|
89
|
+
include: [
|
|
90
|
+
'ly.img.templates.blank.*',
|
|
91
|
+
'ly.img.templates.presentation.*',
|
|
92
|
+
'ly.img.templates.print.*',
|
|
93
|
+
'ly.img.templates.social.*',
|
|
94
|
+
'ly.img.image.*'
|
|
95
|
+
]
|
|
96
|
+
})
|
|
97
|
+
);
|
|
98
|
+
await cesdk.addPlugin(new EffectsAssetSource());
|
|
99
|
+
await cesdk.addPlugin(new FiltersAssetSource());
|
|
100
|
+
await cesdk.addPlugin(new PagePresetsAssetSource());
|
|
101
|
+
await cesdk.addPlugin(new StickerAssetSource());
|
|
102
|
+
await cesdk.addPlugin(new TextAssetSource());
|
|
103
|
+
await cesdk.addPlugin(new TextComponentAssetSource());
|
|
104
|
+
await cesdk.addPlugin(new TypefaceAssetSource());
|
|
105
|
+
await cesdk.addPlugin(new VectorShapeAssetSource());
|
|
106
|
+
|
|
107
|
+
// Create a design scene using CE.SDK convenience method
|
|
108
|
+
await cesdk.actions.run('scene.create', {
|
|
109
|
+
page: { width: 800, height: 600, unit: 'Pixel' }
|
|
110
|
+
});
|
|
111
|
+
|
|
112
|
+
const engine = cesdk.engine;
|
|
113
|
+
|
|
114
|
+
// Get the page
|
|
115
|
+
const pages = engine.block.findByType('page');
|
|
116
|
+
const page = pages[0];
|
|
117
|
+
if (!page) {
|
|
118
|
+
throw new Error('No page found');
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
// Set page background to light gray for visibility
|
|
122
|
+
const pageFill = engine.block.getFill(page);
|
|
123
|
+
engine.block.setColor(pageFill, 'fill/color/value', {
|
|
124
|
+
r: 0.95,
|
|
125
|
+
g: 0.95,
|
|
126
|
+
b: 0.95,
|
|
127
|
+
a: 1.0
|
|
128
|
+
});
|
|
129
|
+
|
|
130
|
+
// Helper function to create a graphic block with a color fill
|
|
131
|
+
const createColorBlock = (
|
|
132
|
+
x: number,
|
|
133
|
+
y: number,
|
|
134
|
+
width: number,
|
|
135
|
+
height: number,
|
|
136
|
+
shape: 'rect' | 'ellipse' = 'rect'
|
|
137
|
+
): { block: number; fill: number } => {
|
|
138
|
+
const block = engine.block.create('graphic');
|
|
139
|
+
const blockShape = engine.block.createShape(shape);
|
|
140
|
+
engine.block.setShape(block, blockShape);
|
|
141
|
+
engine.block.setWidth(block, width);
|
|
142
|
+
engine.block.setHeight(block, height);
|
|
143
|
+
engine.block.setPositionX(block, x);
|
|
144
|
+
engine.block.setPositionY(block, y);
|
|
145
|
+
engine.block.appendChild(page, block);
|
|
146
|
+
|
|
147
|
+
const colorFill = engine.block.createFill('color');
|
|
148
|
+
engine.block.setFill(block, colorFill);
|
|
149
|
+
|
|
150
|
+
return { block, fill: colorFill };
|
|
151
|
+
};
|
|
152
|
+
|
|
153
|
+
// Define a spot color with RGB approximation
|
|
154
|
+
// RGB values range from 0.0 to 1.0
|
|
155
|
+
engine.editor.setSpotColorRGB('Brand-Primary', 0.8, 0.1, 0.2);
|
|
156
|
+
|
|
157
|
+
// Add CMYK approximation for the same spot color
|
|
158
|
+
// This provides print-accurate preview in addition to screen display
|
|
159
|
+
engine.editor.setSpotColorCMYK('Brand-Primary', 0.05, 0.95, 0.85, 0.0);
|
|
160
|
+
|
|
161
|
+
// Define another spot color with both approximations
|
|
162
|
+
engine.editor.setSpotColorRGB('Brand-Accent', 0.2, 0.4, 0.8);
|
|
163
|
+
engine.editor.setSpotColorCMYK('Brand-Accent', 0.75, 0.5, 0.0, 0.0);
|
|
164
|
+
|
|
165
|
+
// Apply spot colors to fills using SpotColor objects
|
|
166
|
+
// The tint property (0.0 to 1.0) controls color intensity
|
|
167
|
+
// The externalReference field stores metadata like color system origin
|
|
168
|
+
const brandPrimary: SpotColor = {
|
|
169
|
+
name: 'Brand-Primary',
|
|
170
|
+
tint: 1.0,
|
|
171
|
+
externalReference: ''
|
|
172
|
+
};
|
|
173
|
+
|
|
174
|
+
// Create a block and apply the Brand-Primary spot color
|
|
175
|
+
const { fill: primaryFill } = createColorBlock(50, 50, 150, 150);
|
|
176
|
+
engine.block.setColor(primaryFill, 'fill/color/value', brandPrimary);
|
|
177
|
+
|
|
178
|
+
// Apply Brand-Accent to another block
|
|
179
|
+
const brandAccent: SpotColor = {
|
|
180
|
+
name: 'Brand-Accent',
|
|
181
|
+
tint: 1.0,
|
|
182
|
+
externalReference: ''
|
|
183
|
+
};
|
|
184
|
+
const { fill: accentFill } = createColorBlock(220, 50, 150, 150);
|
|
185
|
+
engine.block.setColor(accentFill, 'fill/color/value', brandAccent);
|
|
186
|
+
|
|
187
|
+
// Use tints for lighter variations without defining new spot colors
|
|
188
|
+
// Tint of 0.5 gives 50% color intensity
|
|
189
|
+
const brandPrimaryHalfTint: SpotColor = {
|
|
190
|
+
name: 'Brand-Primary',
|
|
191
|
+
tint: 0.5,
|
|
192
|
+
externalReference: ''
|
|
193
|
+
};
|
|
194
|
+
const { fill: tintedFill } = createColorBlock(390, 50, 150, 150, 'ellipse');
|
|
195
|
+
engine.block.setColor(tintedFill, 'fill/color/value', brandPrimaryHalfTint);
|
|
196
|
+
|
|
197
|
+
// Create a gradient of tints
|
|
198
|
+
const brandAccentLightTint: SpotColor = {
|
|
199
|
+
name: 'Brand-Accent',
|
|
200
|
+
tint: 0.3,
|
|
201
|
+
externalReference: ''
|
|
202
|
+
};
|
|
203
|
+
const { fill: lightTintFill } = createColorBlock(560, 50, 150, 150);
|
|
204
|
+
engine.block.setColor(
|
|
205
|
+
lightTintFill,
|
|
206
|
+
'fill/color/value',
|
|
207
|
+
brandAccentLightTint
|
|
208
|
+
);
|
|
209
|
+
|
|
210
|
+
// Apply spot colors to strokes and shadows
|
|
211
|
+
const { block: strokeBlock, fill: strokeBlockFill } = createColorBlock(
|
|
212
|
+
50,
|
|
213
|
+
220,
|
|
214
|
+
150,
|
|
215
|
+
150
|
|
216
|
+
);
|
|
217
|
+
// Set fill to white
|
|
218
|
+
engine.block.setColor(strokeBlockFill, 'fill/color/value', {
|
|
219
|
+
r: 1.0,
|
|
220
|
+
g: 1.0,
|
|
221
|
+
b: 1.0,
|
|
222
|
+
a: 1.0
|
|
223
|
+
});
|
|
224
|
+
|
|
225
|
+
// Enable stroke and apply spot color
|
|
226
|
+
engine.block.setStrokeEnabled(strokeBlock, true);
|
|
227
|
+
engine.block.setStrokeWidth(strokeBlock, 8);
|
|
228
|
+
const strokeColor: SpotColor = {
|
|
229
|
+
name: 'Brand-Primary',
|
|
230
|
+
tint: 1.0,
|
|
231
|
+
externalReference: ''
|
|
232
|
+
};
|
|
233
|
+
engine.block.setColor(strokeBlock, 'stroke/color', strokeColor);
|
|
234
|
+
|
|
235
|
+
// Apply spot color to drop shadow
|
|
236
|
+
const { block: shadowBlock, fill: shadowBlockFill } = createColorBlock(
|
|
237
|
+
220,
|
|
238
|
+
220,
|
|
239
|
+
150,
|
|
240
|
+
150
|
|
241
|
+
);
|
|
242
|
+
engine.block.setColor(shadowBlockFill, 'fill/color/value', {
|
|
243
|
+
r: 0.95,
|
|
244
|
+
g: 0.95,
|
|
245
|
+
b: 0.95,
|
|
246
|
+
a: 1.0
|
|
247
|
+
});
|
|
248
|
+
|
|
249
|
+
engine.block.setDropShadowEnabled(shadowBlock, true);
|
|
250
|
+
engine.block.setDropShadowOffsetX(shadowBlock, 10);
|
|
251
|
+
engine.block.setDropShadowOffsetY(shadowBlock, 10);
|
|
252
|
+
engine.block.setDropShadowBlurRadiusX(shadowBlock, 15);
|
|
253
|
+
engine.block.setDropShadowBlurRadiusY(shadowBlock, 15);
|
|
254
|
+
const shadowColor: SpotColor = {
|
|
255
|
+
name: 'Brand-Accent',
|
|
256
|
+
tint: 0.8,
|
|
257
|
+
externalReference: ''
|
|
258
|
+
};
|
|
259
|
+
engine.block.setColor(shadowBlock, 'dropShadow/color', shadowColor);
|
|
260
|
+
|
|
261
|
+
// Query all defined spot colors
|
|
262
|
+
const spotColors = engine.editor.findAllSpotColors();
|
|
263
|
+
// eslint-disable-next-line no-console
|
|
264
|
+
console.log('Defined spot colors:', spotColors);
|
|
265
|
+
|
|
266
|
+
// Query RGB approximation for a spot color
|
|
267
|
+
const rgbaApprox = engine.editor.getSpotColorRGBA('Brand-Primary');
|
|
268
|
+
// eslint-disable-next-line no-console
|
|
269
|
+
console.log('Brand-Primary RGB approximation:', rgbaApprox);
|
|
270
|
+
|
|
271
|
+
// Query CMYK approximation for a spot color
|
|
272
|
+
const cmykApprox = engine.editor.getSpotColorCMYK('Brand-Primary');
|
|
273
|
+
// eslint-disable-next-line no-console
|
|
274
|
+
console.log('Brand-Primary CMYK approximation:', cmykApprox);
|
|
275
|
+
|
|
276
|
+
// Read back the color from a block and check if it's a spot color
|
|
277
|
+
const retrievedColor = engine.block.getColor(
|
|
278
|
+
primaryFill,
|
|
279
|
+
'fill/color/value'
|
|
280
|
+
);
|
|
281
|
+
if (isSpotColor(retrievedColor)) {
|
|
282
|
+
// eslint-disable-next-line no-console
|
|
283
|
+
console.log(
|
|
284
|
+
`Retrieved SpotColor - Name: ${retrievedColor.name}, Tint: ${retrievedColor.tint}`
|
|
285
|
+
);
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
// Update an existing spot color's approximation
|
|
289
|
+
// This changes how the color appears on screen without affecting the color name
|
|
290
|
+
engine.editor.setSpotColorRGB('Brand-Accent', 0.3, 0.5, 0.9);
|
|
291
|
+
// eslint-disable-next-line no-console
|
|
292
|
+
console.log('Updated Brand-Accent RGB approximation');
|
|
293
|
+
|
|
294
|
+
// Show the updated color in a new block
|
|
295
|
+
const { fill: updatedFill } = createColorBlock(390, 220, 150, 150);
|
|
296
|
+
const updatedAccent: SpotColor = {
|
|
297
|
+
name: 'Brand-Accent',
|
|
298
|
+
tint: 1.0,
|
|
299
|
+
externalReference: ''
|
|
300
|
+
};
|
|
301
|
+
engine.block.setColor(updatedFill, 'fill/color/value', updatedAccent);
|
|
302
|
+
|
|
303
|
+
// Define a temporary spot color
|
|
304
|
+
engine.editor.setSpotColorRGB('Temporary-Color', 0.5, 0.8, 0.3);
|
|
305
|
+
|
|
306
|
+
// Create a block using the temporary color
|
|
307
|
+
const { fill: tempFill } = createColorBlock(560, 220, 150, 150);
|
|
308
|
+
const tempColor: SpotColor = {
|
|
309
|
+
name: 'Temporary-Color',
|
|
310
|
+
tint: 1.0,
|
|
311
|
+
externalReference: ''
|
|
312
|
+
};
|
|
313
|
+
engine.block.setColor(tempFill, 'fill/color/value', tempColor);
|
|
314
|
+
|
|
315
|
+
// Remove the spot color definition
|
|
316
|
+
// Blocks using this color will display magenta (default fallback)
|
|
317
|
+
engine.editor.removeSpotColor('Temporary-Color');
|
|
318
|
+
|
|
319
|
+
// eslint-disable-next-line no-console
|
|
320
|
+
console.log('Removed Temporary-Color - block now shows magenta fallback');
|
|
321
|
+
|
|
322
|
+
// Verify the color is no longer defined
|
|
323
|
+
const remainingSpotColors = engine.editor.findAllSpotColors();
|
|
324
|
+
// eslint-disable-next-line no-console
|
|
325
|
+
console.log('Remaining spot colors:', remainingSpotColors);
|
|
326
|
+
|
|
327
|
+
// Assign spot colors to cutout types for die-cutting operations
|
|
328
|
+
// First define a spot color for the die line
|
|
329
|
+
engine.editor.setSpotColorRGB('DieLine', 1.0, 0.0, 1.0);
|
|
330
|
+
engine.editor.setSpotColorCMYK('DieLine', 0.0, 1.0, 0.0, 0.0);
|
|
331
|
+
|
|
332
|
+
// Associate the spot color with a cutout type
|
|
333
|
+
// CutoutType can be 'Solid' or 'Dashed'
|
|
334
|
+
engine.editor.setSpotColorForCutoutType('Solid', 'DieLine');
|
|
335
|
+
|
|
336
|
+
// Query the assigned spot color
|
|
337
|
+
const cutoutSpotColor = engine.editor.getSpotColorForCutoutType('Solid');
|
|
338
|
+
// eslint-disable-next-line no-console
|
|
339
|
+
console.log('Cutout type Solid uses spot color:', cutoutSpotColor);
|
|
340
|
+
|
|
341
|
+
// Create a legend block with text
|
|
342
|
+
const textBlock = engine.block.create('text');
|
|
343
|
+
engine.block.replaceText(textBlock, 'Spot Colors Demo');
|
|
344
|
+
engine.block.setTextFontSize(textBlock, 36);
|
|
345
|
+
engine.block.setWidthMode(textBlock, 'Auto');
|
|
346
|
+
engine.block.setHeightMode(textBlock, 'Auto');
|
|
347
|
+
engine.block.setPositionX(textBlock, 50);
|
|
348
|
+
engine.block.setPositionY(textBlock, 400);
|
|
349
|
+
engine.block.appendChild(page, textBlock);
|
|
350
|
+
|
|
351
|
+
// Create smaller label texts
|
|
352
|
+
const labels = [
|
|
353
|
+
{ text: 'Brand-Primary', x: 50, y: 205 },
|
|
354
|
+
{ text: 'Brand-Accent', x: 220, y: 205 },
|
|
355
|
+
{ text: 'Primary 50%', x: 390, y: 205 },
|
|
356
|
+
{ text: 'Accent 30%', x: 560, y: 205 },
|
|
357
|
+
{ text: 'Stroke', x: 50, y: 375 },
|
|
358
|
+
{ text: 'Shadow', x: 220, y: 375 },
|
|
359
|
+
{ text: 'Updated', x: 390, y: 375 },
|
|
360
|
+
{ text: 'Removed', x: 560, y: 375 }
|
|
361
|
+
];
|
|
362
|
+
|
|
363
|
+
for (const label of labels) {
|
|
364
|
+
const labelBlock = engine.block.create('text');
|
|
365
|
+
engine.block.replaceText(labelBlock, label.text);
|
|
366
|
+
engine.block.setTextFontSize(labelBlock, 14);
|
|
367
|
+
engine.block.setWidthMode(labelBlock, 'Auto');
|
|
368
|
+
engine.block.setHeightMode(labelBlock, 'Auto');
|
|
369
|
+
engine.block.setPositionX(labelBlock, label.x);
|
|
370
|
+
engine.block.setPositionY(labelBlock, label.y);
|
|
371
|
+
engine.block.appendChild(page, labelBlock);
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
// Zoom to fit all content
|
|
375
|
+
await engine.scene.zoomToBlock(page, {
|
|
376
|
+
padding: {
|
|
377
|
+
left: 40,
|
|
378
|
+
top: 40,
|
|
379
|
+
right: 40,
|
|
380
|
+
bottom: 40
|
|
381
|
+
}
|
|
382
|
+
});
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
export default Example;
|
|
387
|
+
```
|
|
388
|
+
|
|
389
|
+
This guide covers how to define spot colors with RGB and CMYK approximations, apply them to design elements with varying tints, query and update definitions, and assign spot colors to cutout types for die-cutting operations.
|
|
390
|
+
|
|
391
|
+
## Understanding Spot Colors
|
|
392
|
+
|
|
393
|
+
Spot colors differ from CMYK process colors in several important ways:
|
|
394
|
+
|
|
395
|
+
- **Exact color matching** - Premixed inks guarantee consistent color reproduction across print runs
|
|
396
|
+
- **Brand consistency** - Essential for logos and brand colors (e.g., Pantone colors)
|
|
397
|
+
- **Specialty effects** - Enable metallic, fluorescent, and other specialty inks
|
|
398
|
+
- **Color gamut** - Some colors are unreproducible with CMYK process inks
|
|
399
|
+
|
|
400
|
+
In CE.SDK, spot colors have three components:
|
|
401
|
+
|
|
402
|
+
- **Name** - The identifier used in print output (e.g., "Pantone-485-C")
|
|
403
|
+
- **Approximations** - RGB and/or CMYK values for screen display
|
|
404
|
+
- **Tint** - A value from 0.0 to 1.0 controlling color intensity
|
|
405
|
+
|
|
406
|
+
## Define Spot Colors
|
|
407
|
+
|
|
408
|
+
### RGB Approximation
|
|
409
|
+
|
|
410
|
+
We register spot colors using `engine.editor.setSpotColorRGB()`. This creates a new spot color if the name doesn't exist, or updates the approximation if it does.
|
|
411
|
+
|
|
412
|
+
```typescript highlight-define-spot-rgb
|
|
413
|
+
// Define a spot color with RGB approximation
|
|
414
|
+
// RGB values range from 0.0 to 1.0
|
|
415
|
+
engine.editor.setSpotColorRGB('Brand-Primary', 0.8, 0.1, 0.2);
|
|
416
|
+
```
|
|
417
|
+
|
|
418
|
+
RGB approximations display the spot color on screen during editing. The values range from 0.0 to 1.0 for each channel.
|
|
419
|
+
|
|
420
|
+
### CMYK Approximation
|
|
421
|
+
|
|
422
|
+
We can add a CMYK approximation using `engine.editor.setSpotColorCMYK()`. This provides print-accurate previews alongside the RGB screen display.
|
|
423
|
+
|
|
424
|
+
```typescript highlight-define-spot-cmyk
|
|
425
|
+
// Add CMYK approximation for the same spot color
|
|
426
|
+
// This provides print-accurate preview in addition to screen display
|
|
427
|
+
engine.editor.setSpotColorCMYK('Brand-Primary', 0.05, 0.95, 0.85, 0.0);
|
|
428
|
+
|
|
429
|
+
// Define another spot color with both approximations
|
|
430
|
+
engine.editor.setSpotColorRGB('Brand-Accent', 0.2, 0.4, 0.8);
|
|
431
|
+
engine.editor.setSpotColorCMYK('Brand-Accent', 0.75, 0.5, 0.0, 0.0);
|
|
432
|
+
```
|
|
433
|
+
|
|
434
|
+
For best results, provide both RGB and CMYK approximations for each spot color. RGB displays on screen while CMYK enables accurate print preview.
|
|
435
|
+
|
|
436
|
+
## Apply Spot Colors to Design Elements
|
|
437
|
+
|
|
438
|
+
We apply spot colors to blocks using `engine.block.setColor()` with a SpotColor object containing `name`, `tint`, and `externalReference`.
|
|
439
|
+
|
|
440
|
+
```typescript highlight-apply-spot-fill
|
|
441
|
+
// Apply spot colors to fills using SpotColor objects
|
|
442
|
+
// The tint property (0.0 to 1.0) controls color intensity
|
|
443
|
+
// The externalReference field stores metadata like color system origin
|
|
444
|
+
const brandPrimary: SpotColor = {
|
|
445
|
+
name: 'Brand-Primary',
|
|
446
|
+
tint: 1.0,
|
|
447
|
+
externalReference: ''
|
|
448
|
+
};
|
|
449
|
+
|
|
450
|
+
// Create a block and apply the Brand-Primary spot color
|
|
451
|
+
const { fill: primaryFill } = createColorBlock(50, 50, 150, 150);
|
|
452
|
+
engine.block.setColor(primaryFill, 'fill/color/value', brandPrimary);
|
|
453
|
+
```
|
|
454
|
+
|
|
455
|
+
The SpotColor object has these properties:
|
|
456
|
+
|
|
457
|
+
- **name** - Must match a defined spot color exactly (case-sensitive)
|
|
458
|
+
- **tint** - Controls intensity from 0.0 (transparent) to 1.0 (full strength)
|
|
459
|
+
- **externalReference** - Optional metadata like the color system origin (e.g., "Pantone")
|
|
460
|
+
|
|
461
|
+
> **Note:** The spot color must be defined before applying it to blocks. Undefined spot colors display as magenta—the default fallback color.
|
|
462
|
+
|
|
463
|
+
### Using Tints
|
|
464
|
+
|
|
465
|
+
Tints create lighter variations without defining separate spot colors for each shade. A tint of 0.5 gives 50% color intensity.
|
|
466
|
+
|
|
467
|
+
```typescript highlight-tint
|
|
468
|
+
// Use tints for lighter variations without defining new spot colors
|
|
469
|
+
// Tint of 0.5 gives 50% color intensity
|
|
470
|
+
const brandPrimaryHalfTint: SpotColor = {
|
|
471
|
+
name: 'Brand-Primary',
|
|
472
|
+
tint: 0.5,
|
|
473
|
+
externalReference: ''
|
|
474
|
+
};
|
|
475
|
+
const { fill: tintedFill } = createColorBlock(390, 50, 150, 150, 'ellipse');
|
|
476
|
+
engine.block.setColor(tintedFill, 'fill/color/value', brandPrimaryHalfTint);
|
|
477
|
+
|
|
478
|
+
// Create a gradient of tints
|
|
479
|
+
const brandAccentLightTint: SpotColor = {
|
|
480
|
+
name: 'Brand-Accent',
|
|
481
|
+
tint: 0.3,
|
|
482
|
+
externalReference: ''
|
|
483
|
+
};
|
|
484
|
+
const { fill: lightTintFill } = createColorBlock(560, 50, 150, 150);
|
|
485
|
+
engine.block.setColor(lightTintFill, 'fill/color/value', brandAccentLightTint);
|
|
486
|
+
```
|
|
487
|
+
|
|
488
|
+
Use tints for:
|
|
489
|
+
|
|
490
|
+
- Color variations in design systems
|
|
491
|
+
- Lighter backgrounds using brand colors
|
|
492
|
+
- Gradient-like effects with consistent spot color names
|
|
493
|
+
|
|
494
|
+
### Strokes and Shadows
|
|
495
|
+
|
|
496
|
+
Spot colors work with any color property, including strokes and drop shadows.
|
|
497
|
+
|
|
498
|
+
```typescript highlight-stroke-shadow
|
|
499
|
+
// Apply spot colors to strokes and shadows
|
|
500
|
+
const { block: strokeBlock, fill: strokeBlockFill } = createColorBlock(
|
|
501
|
+
50,
|
|
502
|
+
220,
|
|
503
|
+
150,
|
|
504
|
+
150
|
|
505
|
+
);
|
|
506
|
+
// Set fill to white
|
|
507
|
+
engine.block.setColor(strokeBlockFill, 'fill/color/value', {
|
|
508
|
+
r: 1.0,
|
|
509
|
+
g: 1.0,
|
|
510
|
+
b: 1.0,
|
|
511
|
+
a: 1.0
|
|
512
|
+
});
|
|
513
|
+
|
|
514
|
+
// Enable stroke and apply spot color
|
|
515
|
+
engine.block.setStrokeEnabled(strokeBlock, true);
|
|
516
|
+
engine.block.setStrokeWidth(strokeBlock, 8);
|
|
517
|
+
const strokeColor: SpotColor = {
|
|
518
|
+
name: 'Brand-Primary',
|
|
519
|
+
tint: 1.0,
|
|
520
|
+
externalReference: ''
|
|
521
|
+
};
|
|
522
|
+
engine.block.setColor(strokeBlock, 'stroke/color', strokeColor);
|
|
523
|
+
|
|
524
|
+
// Apply spot color to drop shadow
|
|
525
|
+
const { block: shadowBlock, fill: shadowBlockFill } = createColorBlock(
|
|
526
|
+
220,
|
|
527
|
+
220,
|
|
528
|
+
150,
|
|
529
|
+
150
|
|
530
|
+
);
|
|
531
|
+
engine.block.setColor(shadowBlockFill, 'fill/color/value', {
|
|
532
|
+
r: 0.95,
|
|
533
|
+
g: 0.95,
|
|
534
|
+
b: 0.95,
|
|
535
|
+
a: 1.0
|
|
536
|
+
});
|
|
537
|
+
|
|
538
|
+
engine.block.setDropShadowEnabled(shadowBlock, true);
|
|
539
|
+
engine.block.setDropShadowOffsetX(shadowBlock, 10);
|
|
540
|
+
engine.block.setDropShadowOffsetY(shadowBlock, 10);
|
|
541
|
+
engine.block.setDropShadowBlurRadiusX(shadowBlock, 15);
|
|
542
|
+
engine.block.setDropShadowBlurRadiusY(shadowBlock, 15);
|
|
543
|
+
const shadowColor: SpotColor = {
|
|
544
|
+
name: 'Brand-Accent',
|
|
545
|
+
tint: 0.8,
|
|
546
|
+
externalReference: ''
|
|
547
|
+
};
|
|
548
|
+
engine.block.setColor(shadowBlock, 'dropShadow/color', shadowColor);
|
|
549
|
+
```
|
|
550
|
+
|
|
551
|
+
The `stroke/color` and `dropShadow/color` properties accept the same SpotColor objects as fill colors.
|
|
552
|
+
|
|
553
|
+
## Query Spot Color Definitions
|
|
554
|
+
|
|
555
|
+
### List Defined Spot Colors
|
|
556
|
+
|
|
557
|
+
We retrieve all defined spot colors with `engine.editor.findAllSpotColors()`.
|
|
558
|
+
|
|
559
|
+
```typescript highlight-query-spot
|
|
560
|
+
// Query all defined spot colors
|
|
561
|
+
const spotColors = engine.editor.findAllSpotColors();
|
|
562
|
+
// eslint-disable-next-line no-console
|
|
563
|
+
console.log('Defined spot colors:', spotColors);
|
|
564
|
+
|
|
565
|
+
// Query RGB approximation for a spot color
|
|
566
|
+
const rgbaApprox = engine.editor.getSpotColorRGBA('Brand-Primary');
|
|
567
|
+
// eslint-disable-next-line no-console
|
|
568
|
+
console.log('Brand-Primary RGB approximation:', rgbaApprox);
|
|
569
|
+
|
|
570
|
+
// Query CMYK approximation for a spot color
|
|
571
|
+
const cmykApprox = engine.editor.getSpotColorCMYK('Brand-Primary');
|
|
572
|
+
// eslint-disable-next-line no-console
|
|
573
|
+
console.log('Brand-Primary CMYK approximation:', cmykApprox);
|
|
574
|
+
|
|
575
|
+
// Read back the color from a block and check if it's a spot color
|
|
576
|
+
const retrievedColor = engine.block.getColor(primaryFill, 'fill/color/value');
|
|
577
|
+
if (isSpotColor(retrievedColor)) {
|
|
578
|
+
// eslint-disable-next-line no-console
|
|
579
|
+
console.log(
|
|
580
|
+
`Retrieved SpotColor - Name: ${retrievedColor.name}, Tint: ${retrievedColor.tint}`
|
|
581
|
+
);
|
|
582
|
+
}
|
|
583
|
+
```
|
|
584
|
+
|
|
585
|
+
This returns an array of spot color names currently registered in the editor.
|
|
586
|
+
|
|
587
|
+
### Get Color Approximations
|
|
588
|
+
|
|
589
|
+
Query individual color approximations with `engine.editor.getSpotColorRGBA()` or `engine.editor.getSpotColorCMYK()`.
|
|
590
|
+
|
|
591
|
+
Querying an undefined spot color returns magenta values—use this to detect missing definitions.
|
|
592
|
+
|
|
593
|
+
### Read Colors from Blocks
|
|
594
|
+
|
|
595
|
+
When reading a color back from a block, `engine.block.getColor()` can return an `RGBAColor`, `CMYKColor`, or `SpotColor`. Use a type guard to check if it's a SpotColor:
|
|
596
|
+
|
|
597
|
+
```typescript
|
|
598
|
+
const isSpotColor = (color: unknown): color is SpotColor => {
|
|
599
|
+
return (
|
|
600
|
+
typeof color === 'object' &&
|
|
601
|
+
color !== null &&
|
|
602
|
+
'name' in color &&
|
|
603
|
+
'tint' in color &&
|
|
604
|
+
'externalReference' in color
|
|
605
|
+
);
|
|
606
|
+
};
|
|
607
|
+
|
|
608
|
+
const retrievedColor = engine.block.getColor(fill, 'fill/color/value');
|
|
609
|
+
if (isSpotColor(retrievedColor)) {
|
|
610
|
+
console.log(`Name: ${retrievedColor.name}, Tint: ${retrievedColor.tint}`);
|
|
611
|
+
}
|
|
612
|
+
```
|
|
613
|
+
|
|
614
|
+
## Update and Remove Spot Colors
|
|
615
|
+
|
|
616
|
+
### Update Approximations
|
|
617
|
+
|
|
618
|
+
We update spot colors by calling the set methods again with the same name. This changes how the color appears on screen without affecting the color name in the print output.
|
|
619
|
+
|
|
620
|
+
```typescript highlight-update-spot
|
|
621
|
+
// Update an existing spot color's approximation
|
|
622
|
+
// This changes how the color appears on screen without affecting the color name
|
|
623
|
+
engine.editor.setSpotColorRGB('Brand-Accent', 0.3, 0.5, 0.9);
|
|
624
|
+
// eslint-disable-next-line no-console
|
|
625
|
+
console.log('Updated Brand-Accent RGB approximation');
|
|
626
|
+
|
|
627
|
+
// Show the updated color in a new block
|
|
628
|
+
const { fill: updatedFill } = createColorBlock(390, 220, 150, 150);
|
|
629
|
+
const updatedAccent: SpotColor = {
|
|
630
|
+
name: 'Brand-Accent',
|
|
631
|
+
tint: 1.0,
|
|
632
|
+
externalReference: ''
|
|
633
|
+
};
|
|
634
|
+
engine.block.setColor(updatedFill, 'fill/color/value', updatedAccent);
|
|
635
|
+
```
|
|
636
|
+
|
|
637
|
+
Existing blocks using that spot color automatically reflect the updated approximation.
|
|
638
|
+
|
|
639
|
+
### Remove Spot Colors
|
|
640
|
+
|
|
641
|
+
We remove spot colors with `engine.editor.removeSpotColor()` when they're no longer needed.
|
|
642
|
+
|
|
643
|
+
```typescript highlight-remove-spot
|
|
644
|
+
// Define a temporary spot color
|
|
645
|
+
engine.editor.setSpotColorRGB('Temporary-Color', 0.5, 0.8, 0.3);
|
|
646
|
+
|
|
647
|
+
// Create a block using the temporary color
|
|
648
|
+
const { fill: tempFill } = createColorBlock(560, 220, 150, 150);
|
|
649
|
+
const tempColor: SpotColor = {
|
|
650
|
+
name: 'Temporary-Color',
|
|
651
|
+
tint: 1.0,
|
|
652
|
+
externalReference: ''
|
|
653
|
+
};
|
|
654
|
+
engine.block.setColor(tempFill, 'fill/color/value', tempColor);
|
|
655
|
+
|
|
656
|
+
// Remove the spot color definition
|
|
657
|
+
// Blocks using this color will display magenta (default fallback)
|
|
658
|
+
engine.editor.removeSpotColor('Temporary-Color');
|
|
659
|
+
|
|
660
|
+
// eslint-disable-next-line no-console
|
|
661
|
+
console.log('Removed Temporary-Color - block now shows magenta fallback');
|
|
662
|
+
|
|
663
|
+
// Verify the color is no longer defined
|
|
664
|
+
const remainingSpotColors = engine.editor.findAllSpotColors();
|
|
665
|
+
// eslint-disable-next-line no-console
|
|
666
|
+
console.log('Remaining spot colors:', remainingSpotColors);
|
|
667
|
+
```
|
|
668
|
+
|
|
669
|
+
Removing a spot color doesn't affect blocks already using it—they display magenta until redefined or until you apply a different color.
|
|
670
|
+
|
|
671
|
+
## Spot Colors for Cutouts
|
|
672
|
+
|
|
673
|
+
CE.SDK supports assigning spot colors to cutout types for die-cutting, embossing, and other print finishing operations.
|
|
674
|
+
|
|
675
|
+
```typescript highlight-cutout
|
|
676
|
+
// Assign spot colors to cutout types for die-cutting operations
|
|
677
|
+
// First define a spot color for the die line
|
|
678
|
+
engine.editor.setSpotColorRGB('DieLine', 1.0, 0.0, 1.0);
|
|
679
|
+
engine.editor.setSpotColorCMYK('DieLine', 0.0, 1.0, 0.0, 0.0);
|
|
680
|
+
|
|
681
|
+
// Associate the spot color with a cutout type
|
|
682
|
+
// CutoutType can be 'Solid' or 'Dashed'
|
|
683
|
+
engine.editor.setSpotColorForCutoutType('Solid', 'DieLine');
|
|
684
|
+
|
|
685
|
+
// Query the assigned spot color
|
|
686
|
+
const cutoutSpotColor = engine.editor.getSpotColorForCutoutType('Solid');
|
|
687
|
+
// eslint-disable-next-line no-console
|
|
688
|
+
console.log('Cutout type Solid uses spot color:', cutoutSpotColor);
|
|
689
|
+
```
|
|
690
|
+
|
|
691
|
+
Use `engine.editor.setSpotColorForCutoutType()` to associate a spot color with a specific cutout type. Available cutout types are `'Solid'` and `'Dashed'`, representing different die-line styles used in print finishing. All cutout blocks of that type automatically use the assigned spot color in the output. Query the assignment with `engine.editor.getSpotColorForCutoutType()`.
|
|
692
|
+
|
|
693
|
+
## Best Practices
|
|
694
|
+
|
|
695
|
+
**Define early** - Register spot colors at initialization before applying them to blocks. Undefined colors display as magenta, which can confuse users.
|
|
696
|
+
|
|
697
|
+
**Use descriptive names** - Match your print vendor's reference (e.g., "Pantone-485-C") to ensure correct ink matching in production.
|
|
698
|
+
|
|
699
|
+
**Provide both approximations** - RGB for screen display, CMYK for print-accurate previews. This gives designers the best experience across different workflows.
|
|
700
|
+
|
|
701
|
+
**Use tints sparingly** - Prefer tints (0.0-1.0) for lighter variations rather than defining separate spot colors for each shade. This keeps your spot color list manageable.
|
|
702
|
+
|
|
703
|
+
**Validate before export** - Query `findAllSpotColors()` to verify all expected spot colors are defined before exporting for print.
|
|
704
|
+
|
|
705
|
+
## Troubleshooting
|
|
706
|
+
|
|
707
|
+
### Spot Color Displays as Magenta
|
|
708
|
+
|
|
709
|
+
The spot color hasn't been defined. Call `setSpotColorRGB()` or `setSpotColorCMYK()` with the color name before applying it to blocks.
|
|
710
|
+
|
|
711
|
+
### Color Approximation Looks Wrong
|
|
712
|
+
|
|
713
|
+
Update the approximation values using `setSpotColorRGB()` or `setSpotColorCMYK()`. Remember that RGB values are for screen display while CMYK values are for print preview.
|
|
714
|
+
|
|
715
|
+
### Spot Color Not in Output
|
|
716
|
+
|
|
717
|
+
Verify the spot color name matches exactly (names are case-sensitive). Check that the block is using a SpotColor object, not an RGB or CMYK color value.
|
|
718
|
+
|
|
719
|
+
### Can't Remove Spot Color
|
|
720
|
+
|
|
721
|
+
Ensure you're using the exact name string. Note that removing a spot color doesn't update existing blocks—they'll show magenta until redefined or replaced with a different color.
|
|
722
|
+
|
|
723
|
+
## API Reference
|
|
724
|
+
|
|
725
|
+
| Method | Description |
|
|
726
|
+
| ------------------------------------------------------ | ------------------------------------------------ |
|
|
727
|
+
| `engine.editor.setSpotColorRGB(name, r, g, b)` | Define/update spot color with RGB approximation |
|
|
728
|
+
| `engine.editor.setSpotColorCMYK(name, c, m, y, k)` | Define/update spot color with CMYK approximation |
|
|
729
|
+
| `engine.editor.findAllSpotColors()` | Get array of all defined spot color names |
|
|
730
|
+
| `engine.editor.getSpotColorRGBA(name)` | Query RGB approximation for a spot color |
|
|
731
|
+
| `engine.editor.getSpotColorCMYK(name)` | Query CMYK approximation for a spot color |
|
|
732
|
+
| `engine.editor.removeSpotColor(name)` | Remove a spot color from the registry |
|
|
733
|
+
| `engine.editor.setSpotColorForCutoutType(type, color)` | Assign spot color to a cutout type |
|
|
734
|
+
| `engine.editor.getSpotColorForCutoutType(type)` | Get spot color assigned to a cutout type |
|
|
735
|
+
| `engine.block.setColor(block, property, color)` | Apply color (including SpotColor) to a property |
|
|
736
|
+
| `engine.block.getColor(block, property)` | Read color from a block property |
|
|
737
|
+
|
|
738
|
+
## Next Steps
|
|
739
|
+
|
|
740
|
+
- [Export for Printing](./export-save-publish/for-printing.md) - Export designs with spot colors for professional print production
|
|
741
|
+
- [Apply Colors](./colors/apply.md) - Apply colors to fills, strokes, and shadows
|
|
742
|
+
- [CMYK Colors](./colors/for-print/cmyk.md) - Work with CMYK process colors
|
|
743
|
+
|
|
744
|
+
---
|
|
745
|
+
|
|
746
|
+
## More Resources
|
|
747
|
+
|
|
748
|
+
- **[Vanilla JS/TS Documentation Index](https://img.ly/docs/cesdk/js.md)** - Browse all Vanilla JS/TS documentation
|
|
749
|
+
- **[Complete Documentation](./llms-full.txt.md)** - Full documentation in one file (for LLMs)
|
|
750
|
+
- **[Web Documentation](./js.md)** - Interactive documentation with examples
|
|
751
|
+
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
|