@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,639 @@
|
|
|
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) > [Export Media Assets](./export-save-publish/export.md) > [Compress](./export-save-publish/export/compress.md)
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Compression reduces file sizes during export while maintaining visual quality. With CE.SDK you can fine-tune compression settings for both images and videos, allowing your app to manage performance, quality, and storage efficiency.
|
|
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-export-save-publish-export-compress-browser)
|
|
17
|
+
> - [Open in StackBlitz](https://stackblitz.com/github/imgly/cesdk-web-examples/tree/v$UBQ_VERSION$/guides-export-save-publish-export-compress-browser)
|
|
18
|
+
> - [Live demo](https://img.ly/docs/cesdk/examples/guides-export-save-publish-export-compress-browser/)
|
|
19
|
+
|
|
20
|
+
Image compression reduces file sizes while maintaining acceptable visual quality. CE.SDK supports format-specific compression controls: lossless compression for PNG, lossy quality settings for JPEG, and both modes for WebP. The example includes a navigation bar dropdown menu with export options for comparing different formats and compression levels.
|
|
21
|
+
|
|
22
|
+
```typescript file=@cesdk_web_examples/guides-export-save-publish-export-compress-browser/browser.ts reference-only
|
|
23
|
+
import type { EditorPlugin, EditorPluginContext } from '@cesdk/cesdk-js';
|
|
24
|
+
|
|
25
|
+
import { CaptionPresetsAssetSource } from '@cesdk/cesdk-js/plugins';
|
|
26
|
+
import { VideoEditorConfig } from './video-editor/plugin';
|
|
27
|
+
import packageJson from './package.json';
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* CE.SDK Plugin: Compress Guide
|
|
31
|
+
*
|
|
32
|
+
* Demonstrates compression during export:
|
|
33
|
+
* - PNG lossless compression levels
|
|
34
|
+
* - JPEG lossy quality settings
|
|
35
|
+
* - WebP quality settings
|
|
36
|
+
* - Target dimension scaling
|
|
37
|
+
* - Video compression with bitrate control
|
|
38
|
+
* - Navigation bar dropdown with export options
|
|
39
|
+
*/
|
|
40
|
+
class Example implements EditorPlugin {
|
|
41
|
+
name = packageJson.name;
|
|
42
|
+
|
|
43
|
+
version = packageJson.version;
|
|
44
|
+
|
|
45
|
+
async initialize({ cesdk }: EditorPluginContext): Promise<void> {
|
|
46
|
+
if (!cesdk) {
|
|
47
|
+
throw new Error('CE.SDK instance is required for this plugin');
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
await cesdk.addPlugin(new VideoEditorConfig());
|
|
51
|
+
await cesdk.addPlugin(new CaptionPresetsAssetSource());
|
|
52
|
+
|
|
53
|
+
// Load a video template scene for demonstration
|
|
54
|
+
await cesdk.loadFromURL(
|
|
55
|
+
'https://cdn.img.ly/assets/demo/v3/ly.img.video.template/templates/milli-surf-school.scene'
|
|
56
|
+
);
|
|
57
|
+
|
|
58
|
+
const engine = cesdk.engine;
|
|
59
|
+
const page = engine.block.findByType('page')[0];
|
|
60
|
+
if (page == null) throw new Error('No page found');
|
|
61
|
+
|
|
62
|
+
// Helper function to download blob
|
|
63
|
+
const downloadBlob = (blob: Blob, filename: string) => {
|
|
64
|
+
const url = URL.createObjectURL(blob);
|
|
65
|
+
const anchor = document.createElement('a');
|
|
66
|
+
anchor.href = url;
|
|
67
|
+
anchor.download = filename;
|
|
68
|
+
anchor.click();
|
|
69
|
+
URL.revokeObjectURL(url);
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
// PNG uses lossless compression - level 0-9
|
|
73
|
+
// Higher levels = smaller files, slower encoding
|
|
74
|
+
// Quality is identical at all levels
|
|
75
|
+
const exportPngLevel9 = async () => {
|
|
76
|
+
const blob = await engine.block.export(page, {
|
|
77
|
+
mimeType: 'image/png',
|
|
78
|
+
pngCompressionLevel: 9
|
|
79
|
+
});
|
|
80
|
+
downloadBlob(blob, 'export-png-level9.png');
|
|
81
|
+
cesdk.ui.showNotification({
|
|
82
|
+
message: `PNG Level 9: ${(blob.size / 1024).toFixed(0)} KB`,
|
|
83
|
+
type: 'success'
|
|
84
|
+
});
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
const exportPngLevel5 = async () => {
|
|
88
|
+
const blob = await engine.block.export(page, {
|
|
89
|
+
mimeType: 'image/png',
|
|
90
|
+
pngCompressionLevel: 5
|
|
91
|
+
});
|
|
92
|
+
downloadBlob(blob, 'export-png-level5.png');
|
|
93
|
+
cesdk.ui.showNotification({
|
|
94
|
+
message: `PNG Level 5: ${(blob.size / 1024).toFixed(0)} KB`,
|
|
95
|
+
type: 'success'
|
|
96
|
+
});
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
// JPEG uses lossy compression - quality 0-1
|
|
100
|
+
// Lower values = smaller files, more artifacts
|
|
101
|
+
const exportJpeg90 = async () => {
|
|
102
|
+
const blob = await engine.block.export(page, {
|
|
103
|
+
mimeType: 'image/jpeg',
|
|
104
|
+
jpegQuality: 0.9
|
|
105
|
+
});
|
|
106
|
+
downloadBlob(blob, 'export-jpeg-90.jpg');
|
|
107
|
+
cesdk.ui.showNotification({
|
|
108
|
+
message: `JPEG 90%: ${(blob.size / 1024).toFixed(0)} KB`,
|
|
109
|
+
type: 'success'
|
|
110
|
+
});
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
const exportJpeg60 = async () => {
|
|
114
|
+
const blob = await engine.block.export(page, {
|
|
115
|
+
mimeType: 'image/jpeg',
|
|
116
|
+
jpegQuality: 0.6
|
|
117
|
+
});
|
|
118
|
+
downloadBlob(blob, 'export-jpeg-60.jpg');
|
|
119
|
+
cesdk.ui.showNotification({
|
|
120
|
+
message: `JPEG 60%: ${(blob.size / 1024).toFixed(0)} KB`,
|
|
121
|
+
type: 'success'
|
|
122
|
+
});
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
// WebP supports both lossless (1.0) and lossy (<1.0) modes
|
|
126
|
+
// Typically 20-30% smaller than JPEG at equivalent quality
|
|
127
|
+
const exportWebp90 = async () => {
|
|
128
|
+
const blob = await engine.block.export(page, {
|
|
129
|
+
mimeType: 'image/webp',
|
|
130
|
+
webpQuality: 0.9
|
|
131
|
+
});
|
|
132
|
+
downloadBlob(blob, 'export-webp-90.webp');
|
|
133
|
+
cesdk.ui.showNotification({
|
|
134
|
+
message: `WebP 90%: ${(blob.size / 1024).toFixed(0)} KB`,
|
|
135
|
+
type: 'success'
|
|
136
|
+
});
|
|
137
|
+
};
|
|
138
|
+
|
|
139
|
+
const exportWebp60 = async () => {
|
|
140
|
+
const blob = await engine.block.export(page, {
|
|
141
|
+
mimeType: 'image/webp',
|
|
142
|
+
webpQuality: 0.6
|
|
143
|
+
});
|
|
144
|
+
downloadBlob(blob, 'export-webp-60.webp');
|
|
145
|
+
cesdk.ui.showNotification({
|
|
146
|
+
message: `WebP 60%: ${(blob.size / 1024).toFixed(0)} KB`,
|
|
147
|
+
type: 'success'
|
|
148
|
+
});
|
|
149
|
+
};
|
|
150
|
+
|
|
151
|
+
// Combine compression with dimension scaling
|
|
152
|
+
// Useful for creating thumbnails or social media previews
|
|
153
|
+
const exportScaled = async () => {
|
|
154
|
+
const blob = await engine.block.export(page, {
|
|
155
|
+
mimeType: 'image/png',
|
|
156
|
+
pngCompressionLevel: 6,
|
|
157
|
+
targetWidth: 1200,
|
|
158
|
+
targetHeight: 630
|
|
159
|
+
});
|
|
160
|
+
downloadBlob(blob, 'export-scaled-1200x630.png');
|
|
161
|
+
cesdk.ui.showNotification({
|
|
162
|
+
message: `Scaled 1200×630: ${(blob.size / 1024).toFixed(0)} KB`,
|
|
163
|
+
type: 'success'
|
|
164
|
+
});
|
|
165
|
+
};
|
|
166
|
+
|
|
167
|
+
// Video export with web-optimized bitrate (720p, 2 Mbps)
|
|
168
|
+
const exportVideoWeb = async () => {
|
|
169
|
+
const blob = await engine.block.exportVideo(page, {
|
|
170
|
+
mimeType: 'video/mp4',
|
|
171
|
+
videoBitrate: 2_000_000,
|
|
172
|
+
audioBitrate: 128_000,
|
|
173
|
+
framerate: 30,
|
|
174
|
+
targetWidth: 1280,
|
|
175
|
+
targetHeight: 720
|
|
176
|
+
});
|
|
177
|
+
downloadBlob(blob, 'export-web-720p.mp4');
|
|
178
|
+
cesdk.ui.showNotification({
|
|
179
|
+
message: `Video 720p: ${(blob.size / (1024 * 1024)).toFixed(1)} MB`,
|
|
180
|
+
type: 'success'
|
|
181
|
+
});
|
|
182
|
+
};
|
|
183
|
+
|
|
184
|
+
// Video export with HD bitrate (1080p, 8 Mbps)
|
|
185
|
+
const exportVideoHD = async () => {
|
|
186
|
+
const blob = await engine.block.exportVideo(page, {
|
|
187
|
+
mimeType: 'video/mp4',
|
|
188
|
+
videoBitrate: 8_000_000,
|
|
189
|
+
audioBitrate: 192_000,
|
|
190
|
+
framerate: 30,
|
|
191
|
+
targetWidth: 1920,
|
|
192
|
+
targetHeight: 1080
|
|
193
|
+
});
|
|
194
|
+
downloadBlob(blob, 'export-hd-1080p.mp4');
|
|
195
|
+
cesdk.ui.showNotification({
|
|
196
|
+
message: `Video 1080p: ${(blob.size / (1024 * 1024)).toFixed(1)} MB`,
|
|
197
|
+
type: 'success'
|
|
198
|
+
});
|
|
199
|
+
};
|
|
200
|
+
|
|
201
|
+
// Configure navigation bar with export dropdown
|
|
202
|
+
cesdk.ui.setComponentOrder({ in: 'ly.img.navigation.bar' }, [
|
|
203
|
+
'ly.img.back.navigationBar',
|
|
204
|
+
'ly.img.undoRedo.navigationBar',
|
|
205
|
+
'ly.img.spacer',
|
|
206
|
+
'ly.img.zoom.navigationBar',
|
|
207
|
+
// Actions dropdown with all export options
|
|
208
|
+
{
|
|
209
|
+
id: 'ly.img.actions.navigationBar',
|
|
210
|
+
children: [
|
|
211
|
+
// PNG exports
|
|
212
|
+
{
|
|
213
|
+
id: 'ly.img.action.navigationBar',
|
|
214
|
+
key: 'export-png-9',
|
|
215
|
+
label: 'PNG (Level 9 - Smallest)',
|
|
216
|
+
icon: '@imgly/Save',
|
|
217
|
+
onClick: exportPngLevel9
|
|
218
|
+
},
|
|
219
|
+
{
|
|
220
|
+
id: 'ly.img.action.navigationBar',
|
|
221
|
+
key: 'export-png-5',
|
|
222
|
+
label: 'PNG (Level 5 - Balanced)',
|
|
223
|
+
icon: '@imgly/Save',
|
|
224
|
+
onClick: exportPngLevel5
|
|
225
|
+
},
|
|
226
|
+
// JPEG exports
|
|
227
|
+
{
|
|
228
|
+
id: 'ly.img.action.navigationBar',
|
|
229
|
+
key: 'export-jpeg-90',
|
|
230
|
+
label: 'JPEG (90% Quality)',
|
|
231
|
+
icon: '@imgly/Save',
|
|
232
|
+
onClick: exportJpeg90
|
|
233
|
+
},
|
|
234
|
+
{
|
|
235
|
+
id: 'ly.img.action.navigationBar',
|
|
236
|
+
key: 'export-jpeg-60',
|
|
237
|
+
label: 'JPEG (60% Quality)',
|
|
238
|
+
icon: '@imgly/Save',
|
|
239
|
+
onClick: exportJpeg60
|
|
240
|
+
},
|
|
241
|
+
// WebP exports
|
|
242
|
+
{
|
|
243
|
+
id: 'ly.img.action.navigationBar',
|
|
244
|
+
key: 'export-webp-90',
|
|
245
|
+
label: 'WebP (90% Quality)',
|
|
246
|
+
icon: '@imgly/Save',
|
|
247
|
+
onClick: exportWebp90
|
|
248
|
+
},
|
|
249
|
+
{
|
|
250
|
+
id: 'ly.img.action.navigationBar',
|
|
251
|
+
key: 'export-webp-60',
|
|
252
|
+
label: 'WebP (60% Quality)',
|
|
253
|
+
icon: '@imgly/Save',
|
|
254
|
+
onClick: exportWebp60
|
|
255
|
+
},
|
|
256
|
+
// Scaled export
|
|
257
|
+
{
|
|
258
|
+
id: 'ly.img.action.navigationBar',
|
|
259
|
+
key: 'export-scaled',
|
|
260
|
+
label: 'Scaled (1200×630)',
|
|
261
|
+
icon: '@imgly/Save',
|
|
262
|
+
onClick: exportScaled
|
|
263
|
+
},
|
|
264
|
+
// Video exports
|
|
265
|
+
{
|
|
266
|
+
id: 'ly.img.action.navigationBar',
|
|
267
|
+
key: 'export-video-web',
|
|
268
|
+
label: 'Video 720p (2 Mbps)',
|
|
269
|
+
icon: '@imgly/Video',
|
|
270
|
+
onClick: exportVideoWeb
|
|
271
|
+
},
|
|
272
|
+
{
|
|
273
|
+
id: 'ly.img.action.navigationBar',
|
|
274
|
+
key: 'export-video-hd',
|
|
275
|
+
label: 'Video 1080p (8 Mbps)',
|
|
276
|
+
icon: '@imgly/Video',
|
|
277
|
+
onClick: exportVideoHD
|
|
278
|
+
}
|
|
279
|
+
]
|
|
280
|
+
}
|
|
281
|
+
]);
|
|
282
|
+
|
|
283
|
+
// eslint-disable-next-line no-console
|
|
284
|
+
console.log(
|
|
285
|
+
'Compression guide initialized. Use the dropdown menu to export in different formats.'
|
|
286
|
+
);
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
export default Example;
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
This guide covers exporting with compression settings, configuring quality levels, controlling output dimensions, and video compression options.
|
|
294
|
+
|
|
295
|
+
## Compression Options by Format
|
|
296
|
+
|
|
297
|
+
To compress assets, use `engine.block.export` with format-specific options. Each format supports different parameters for balancing speed, file size, and quality.
|
|
298
|
+
|
|
299
|
+
| Format | Parameter | Type | Effect | Default |
|
|
300
|
+
| ------ | ------------------------------ | -------- | ----------------------------------- | -------- |
|
|
301
|
+
| PNG | `pngCompressionLevel` | 0–9 | Higher = smaller, slower (lossless) | 5 |
|
|
302
|
+
| JPEG | `jpegQuality` | 0.0–1.0 | Lower = smaller, lower quality | 0.9 |
|
|
303
|
+
| WebP | `webpQuality` | 0.0–1.0 | 1.0 = lossless, below 1.0 = lossy | 1.0 |
|
|
304
|
+
| MP4 | `videoBitrate`, `audioBitrate` | bits/sec | Higher = larger, higher quality | 0 (auto) |
|
|
305
|
+
|
|
306
|
+
## Export with Compression
|
|
307
|
+
|
|
308
|
+
Call `engine.block.export()` with format-specific compression options. Each format uses different parameters to control file size and quality.
|
|
309
|
+
|
|
310
|
+
### PNG Compression
|
|
311
|
+
|
|
312
|
+
PNG uses lossless compression controlled by `pngCompressionLevel` (0-9). Higher values produce smaller files but take longer to encode. Quality remains identical at all levels.
|
|
313
|
+
|
|
314
|
+
```typescript highlight=highlight-png-compression
|
|
315
|
+
// PNG uses lossless compression - level 0-9
|
|
316
|
+
// Higher levels = smaller files, slower encoding
|
|
317
|
+
// Quality is identical at all levels
|
|
318
|
+
const exportPngLevel9 = async () => {
|
|
319
|
+
const blob = await engine.block.export(page, {
|
|
320
|
+
mimeType: 'image/png',
|
|
321
|
+
pngCompressionLevel: 9
|
|
322
|
+
});
|
|
323
|
+
downloadBlob(blob, 'export-png-level9.png');
|
|
324
|
+
cesdk.ui.showNotification({
|
|
325
|
+
message: `PNG Level 9: ${(blob.size / 1024).toFixed(0)} KB`,
|
|
326
|
+
type: 'success'
|
|
327
|
+
});
|
|
328
|
+
};
|
|
329
|
+
```
|
|
330
|
+
|
|
331
|
+
Use level 5-6 for balanced results, or level 9 when file size is critical and encoding time is acceptable.
|
|
332
|
+
|
|
333
|
+
### JPEG Quality
|
|
334
|
+
|
|
335
|
+
JPEG uses lossy compression controlled by `jpegQuality` (0-1). Lower values produce smaller files with more visible artifacts.
|
|
336
|
+
|
|
337
|
+
```typescript highlight=highlight-jpeg-quality
|
|
338
|
+
// JPEG uses lossy compression - quality 0-1
|
|
339
|
+
// Lower values = smaller files, more artifacts
|
|
340
|
+
const exportJpeg90 = async () => {
|
|
341
|
+
const blob = await engine.block.export(page, {
|
|
342
|
+
mimeType: 'image/jpeg',
|
|
343
|
+
jpegQuality: 0.9
|
|
344
|
+
});
|
|
345
|
+
downloadBlob(blob, 'export-jpeg-90.jpg');
|
|
346
|
+
cesdk.ui.showNotification({
|
|
347
|
+
message: `JPEG 90%: ${(blob.size / 1024).toFixed(0)} KB`,
|
|
348
|
+
type: 'success'
|
|
349
|
+
});
|
|
350
|
+
};
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
Quality 0.8 provides a good balance for web delivery. Use 0.9+ for archival or print workflows.
|
|
354
|
+
|
|
355
|
+
### WebP Quality
|
|
356
|
+
|
|
357
|
+
WebP supports both lossless and lossy modes via `webpQuality` (0-1). At 1.0, WebP uses lossless encoding. Values below 1.0 enable lossy compression.
|
|
358
|
+
|
|
359
|
+
```typescript highlight=highlight-webp-quality
|
|
360
|
+
// WebP supports both lossless (1.0) and lossy (<1.0) modes
|
|
361
|
+
// Typically 20-30% smaller than JPEG at equivalent quality
|
|
362
|
+
const exportWebp90 = async () => {
|
|
363
|
+
const blob = await engine.block.export(page, {
|
|
364
|
+
mimeType: 'image/webp',
|
|
365
|
+
webpQuality: 0.9
|
|
366
|
+
});
|
|
367
|
+
downloadBlob(blob, 'export-webp-90.webp');
|
|
368
|
+
cesdk.ui.showNotification({
|
|
369
|
+
message: `WebP 90%: ${(blob.size / 1024).toFixed(0)} KB`,
|
|
370
|
+
type: 'success'
|
|
371
|
+
});
|
|
372
|
+
};
|
|
373
|
+
```
|
|
374
|
+
|
|
375
|
+
WebP typically produces 20-30% smaller files than JPEG at equivalent quality, with optional transparency support.
|
|
376
|
+
|
|
377
|
+
## Target Dimensions
|
|
378
|
+
|
|
379
|
+
Use `targetWidth` and `targetHeight` together to export at specific dimensions. The block renders large enough to fill the target size while maintaining aspect ratio.
|
|
380
|
+
|
|
381
|
+
```typescript highlight=highlight-target-size
|
|
382
|
+
// Combine compression with dimension scaling
|
|
383
|
+
// Useful for creating thumbnails or social media previews
|
|
384
|
+
const exportScaled = async () => {
|
|
385
|
+
const blob = await engine.block.export(page, {
|
|
386
|
+
mimeType: 'image/png',
|
|
387
|
+
pngCompressionLevel: 6,
|
|
388
|
+
targetWidth: 1200,
|
|
389
|
+
targetHeight: 630
|
|
390
|
+
});
|
|
391
|
+
downloadBlob(blob, 'export-scaled-1200x630.png');
|
|
392
|
+
cesdk.ui.showNotification({
|
|
393
|
+
message: `Scaled 1200×630: ${(blob.size / 1024).toFixed(0)} KB`,
|
|
394
|
+
type: 'success'
|
|
395
|
+
});
|
|
396
|
+
};
|
|
397
|
+
```
|
|
398
|
+
|
|
399
|
+
Combining dimension scaling with compression produces smaller files suitable for specific platforms like social media thumbnails.
|
|
400
|
+
|
|
401
|
+
## Navigation Bar Export Menu
|
|
402
|
+
|
|
403
|
+
The example demonstrates configuring the CE.SDK navigation bar with a dropdown menu containing all export options. This approach integrates naturally with the editor UI.
|
|
404
|
+
|
|
405
|
+
```typescript highlight=highlight-navigation-bar
|
|
406
|
+
// Configure navigation bar with export dropdown
|
|
407
|
+
cesdk.ui.setComponentOrder({ in: 'ly.img.navigation.bar' }, [
|
|
408
|
+
'ly.img.back.navigationBar',
|
|
409
|
+
'ly.img.undoRedo.navigationBar',
|
|
410
|
+
'ly.img.spacer',
|
|
411
|
+
'ly.img.zoom.navigationBar',
|
|
412
|
+
// Actions dropdown with all export options
|
|
413
|
+
{
|
|
414
|
+
id: 'ly.img.actions.navigationBar',
|
|
415
|
+
children: [
|
|
416
|
+
// PNG exports
|
|
417
|
+
{
|
|
418
|
+
id: 'ly.img.action.navigationBar',
|
|
419
|
+
key: 'export-png-9',
|
|
420
|
+
label: 'PNG (Level 9 - Smallest)',
|
|
421
|
+
icon: '@imgly/Save',
|
|
422
|
+
onClick: exportPngLevel9
|
|
423
|
+
},
|
|
424
|
+
{
|
|
425
|
+
id: 'ly.img.action.navigationBar',
|
|
426
|
+
key: 'export-png-5',
|
|
427
|
+
label: 'PNG (Level 5 - Balanced)',
|
|
428
|
+
icon: '@imgly/Save',
|
|
429
|
+
onClick: exportPngLevel5
|
|
430
|
+
},
|
|
431
|
+
// JPEG exports
|
|
432
|
+
{
|
|
433
|
+
id: 'ly.img.action.navigationBar',
|
|
434
|
+
key: 'export-jpeg-90',
|
|
435
|
+
label: 'JPEG (90% Quality)',
|
|
436
|
+
icon: '@imgly/Save',
|
|
437
|
+
onClick: exportJpeg90
|
|
438
|
+
},
|
|
439
|
+
{
|
|
440
|
+
id: 'ly.img.action.navigationBar',
|
|
441
|
+
key: 'export-jpeg-60',
|
|
442
|
+
label: 'JPEG (60% Quality)',
|
|
443
|
+
icon: '@imgly/Save',
|
|
444
|
+
onClick: exportJpeg60
|
|
445
|
+
},
|
|
446
|
+
// WebP exports
|
|
447
|
+
{
|
|
448
|
+
id: 'ly.img.action.navigationBar',
|
|
449
|
+
key: 'export-webp-90',
|
|
450
|
+
label: 'WebP (90% Quality)',
|
|
451
|
+
icon: '@imgly/Save',
|
|
452
|
+
onClick: exportWebp90
|
|
453
|
+
},
|
|
454
|
+
{
|
|
455
|
+
id: 'ly.img.action.navigationBar',
|
|
456
|
+
key: 'export-webp-60',
|
|
457
|
+
label: 'WebP (60% Quality)',
|
|
458
|
+
icon: '@imgly/Save',
|
|
459
|
+
onClick: exportWebp60
|
|
460
|
+
},
|
|
461
|
+
// Scaled export
|
|
462
|
+
{
|
|
463
|
+
id: 'ly.img.action.navigationBar',
|
|
464
|
+
key: 'export-scaled',
|
|
465
|
+
label: 'Scaled (1200×630)',
|
|
466
|
+
icon: '@imgly/Save',
|
|
467
|
+
onClick: exportScaled
|
|
468
|
+
},
|
|
469
|
+
// Video exports
|
|
470
|
+
{
|
|
471
|
+
id: 'ly.img.action.navigationBar',
|
|
472
|
+
key: 'export-video-web',
|
|
473
|
+
label: 'Video 720p (2 Mbps)',
|
|
474
|
+
icon: '@imgly/Video',
|
|
475
|
+
onClick: exportVideoWeb
|
|
476
|
+
},
|
|
477
|
+
{
|
|
478
|
+
id: 'ly.img.action.navigationBar',
|
|
479
|
+
key: 'export-video-hd',
|
|
480
|
+
label: 'Video 1080p (8 Mbps)',
|
|
481
|
+
icon: '@imgly/Video',
|
|
482
|
+
onClick: exportVideoHD
|
|
483
|
+
}
|
|
484
|
+
]
|
|
485
|
+
}
|
|
486
|
+
]);
|
|
487
|
+
```
|
|
488
|
+
|
|
489
|
+
Each menu item triggers an export with specific compression options and displays the resulting file size via a notification.
|
|
490
|
+
|
|
491
|
+
## Compress Videos
|
|
492
|
+
|
|
493
|
+
To compress video, use the `VideoExportOptions` structure in the export workflow. You can specify:
|
|
494
|
+
|
|
495
|
+
- **Bitrate**: Mbps for video, kbps for audio
|
|
496
|
+
- **Frame rate**: fps (frames per second)
|
|
497
|
+
- **H.264 profile**: Compatibility and feature level
|
|
498
|
+
- **Target resolution**: Output dimensions in pixels
|
|
499
|
+
|
|
500
|
+
The example includes video export options in the dropdown menu. CE.SDK automatically displays a progress modal during video encoding.
|
|
501
|
+
|
|
502
|
+
```typescript highlight=highlight-video-export
|
|
503
|
+
// Video export with web-optimized bitrate (720p, 2 Mbps)
|
|
504
|
+
const exportVideoWeb = async () => {
|
|
505
|
+
const blob = await engine.block.exportVideo(page, {
|
|
506
|
+
mimeType: 'video/mp4',
|
|
507
|
+
videoBitrate: 2_000_000,
|
|
508
|
+
audioBitrate: 128_000,
|
|
509
|
+
framerate: 30,
|
|
510
|
+
targetWidth: 1280,
|
|
511
|
+
targetHeight: 720
|
|
512
|
+
});
|
|
513
|
+
downloadBlob(blob, 'export-web-720p.mp4');
|
|
514
|
+
cesdk.ui.showNotification({
|
|
515
|
+
message: `Video 720p: ${(blob.size / (1024 * 1024)).toFixed(1)} MB`,
|
|
516
|
+
type: 'success'
|
|
517
|
+
});
|
|
518
|
+
};
|
|
519
|
+
|
|
520
|
+
// Video export with HD bitrate (1080p, 8 Mbps)
|
|
521
|
+
const exportVideoHD = async () => {
|
|
522
|
+
const blob = await engine.block.exportVideo(page, {
|
|
523
|
+
mimeType: 'video/mp4',
|
|
524
|
+
videoBitrate: 8_000_000,
|
|
525
|
+
audioBitrate: 192_000,
|
|
526
|
+
framerate: 30,
|
|
527
|
+
targetWidth: 1920,
|
|
528
|
+
targetHeight: 1080
|
|
529
|
+
});
|
|
530
|
+
downloadBlob(blob, 'export-hd-1080p.mp4');
|
|
531
|
+
cesdk.ui.showNotification({
|
|
532
|
+
message: `Video 1080p: ${(blob.size / (1024 * 1024)).toFixed(1)} MB`,
|
|
533
|
+
type: 'success'
|
|
534
|
+
});
|
|
535
|
+
};
|
|
536
|
+
```
|
|
537
|
+
|
|
538
|
+
### Choose Bitrate Values
|
|
539
|
+
|
|
540
|
+
Adjust bitrate according to your use case:
|
|
541
|
+
|
|
542
|
+
- **Web/social media clips**: 1–2 Mbps
|
|
543
|
+
- **Downloadable HD video**: 8–12 Mbps
|
|
544
|
+
- **Automatic optimization**: Set `videoBitrate` to `0` to let CE.SDK choose based on resolution and frame rate
|
|
545
|
+
|
|
546
|
+
### H.264 Profile Selection
|
|
547
|
+
|
|
548
|
+
The H.264 profile and level determine encoder compatibility and features:
|
|
549
|
+
|
|
550
|
+
- **Baseline**: Mobile-friendly playback
|
|
551
|
+
- **Main**: Standard HD
|
|
552
|
+
- **High**: Highest quality (desktop/professional workflows)
|
|
553
|
+
|
|
554
|
+
## Performance and Trade-Offs
|
|
555
|
+
|
|
556
|
+
Higher compression produces smaller files but has trade-offs:
|
|
557
|
+
|
|
558
|
+
- **Slower export speeds** with higher compression levels
|
|
559
|
+
- **JPEG and WebP** are faster but can introduce visible artifacts (blurring, color banding)
|
|
560
|
+
- **Video exports** are resource-consuming and depend on device CPU/GPU performance
|
|
561
|
+
|
|
562
|
+
### Check Export Limits
|
|
563
|
+
|
|
564
|
+
The EditorAPI provides options to check available export limits before encoding:
|
|
565
|
+
|
|
566
|
+
```typescript
|
|
567
|
+
const maxSize = engine.editor.getMaxExportSize();
|
|
568
|
+
const availableMemory = engine.editor.getAvailableMemory();
|
|
569
|
+
console.log('Max export size:', maxSize, 'Memory:', availableMemory);
|
|
570
|
+
```
|
|
571
|
+
|
|
572
|
+
## Real-World Compression Comparison (1080×1080)
|
|
573
|
+
|
|
574
|
+
| Format | Setting | Avg. File Size | Encode Time | PSNR | Notes |
|
|
575
|
+
| -------- | ---------- | -------------- | ----------- | ------------ | ----------------------------- |
|
|
576
|
+
| **PNG** | Level 0 | ~1,450 KB | ~44 ms | ∞ (lossless) | Fastest, largest |
|
|
577
|
+
| **PNG** | Level 5 | ~1,260 KB | ~61 ms | ∞ | Balanced speed and size |
|
|
578
|
+
| **PNG** | Level 9 | ~1,080 KB | ~88 ms | ∞ | Smallest, slowest |
|
|
579
|
+
| **JPEG** | Quality 95 | ~640 KB | ~24 ms | 43 dB | Near-lossless |
|
|
580
|
+
| **JPEG** | Quality 80 | ~420 KB | ~20 ms | 39 dB | Good default for photos |
|
|
581
|
+
| **JPEG** | Quality 60 | ~290 KB | ~17 ms | 35 dB | Some artifacts visible |
|
|
582
|
+
| **WebP** | Quality 95 | ~510 KB | ~27 ms | 44 dB | Smaller than JPEG |
|
|
583
|
+
| **WebP** | Quality 80 | ~350 KB | ~23 ms | 39 dB | Good web balance |
|
|
584
|
+
| **WebP** | Lossless | ~830 KB | ~33 ms | ∞ | Smaller than PNG, keeps alpha |
|
|
585
|
+
|
|
586
|
+
_PSNR > 40 dB ≈ visually lossless; 30–35 dB shows mild artifacts._
|
|
587
|
+
|
|
588
|
+
**Key Takeaways**:
|
|
589
|
+
|
|
590
|
+
- **WebP** achieves 70–85% smaller files than PNG with high quality around 0.8
|
|
591
|
+
- **JPEG** performs well for photographs; use 0.8–0.9 for web/print, 0.6 for compact exports
|
|
592
|
+
- **PNG** is essential for transparency; higher levels reduce size modestly at the cost of speed
|
|
593
|
+
|
|
594
|
+
## Practical Presets
|
|
595
|
+
|
|
596
|
+
| Use Case | Format | Settings | Notes |
|
|
597
|
+
| ---------------------- | --------- | ------------------------- | --------------------------- |
|
|
598
|
+
| **Web/Social Sharing** | JPEG/WebP | `jpegQuality: 0.8` | Balanced quality and size |
|
|
599
|
+
| **Transparent Assets** | PNG/WebP | `pngCompressionLevel: 6` | Maintains transparency |
|
|
600
|
+
| **Print/Archival** | PNG | `pngCompressionLevel: 9` | Best fidelity, large files |
|
|
601
|
+
| **Video for Web** | MP4 | `videoBitrate: 2_000_000` | Smooth playback, small file |
|
|
602
|
+
| **Video HD Download** | MP4 | `videoBitrate: 8_000_000` | Full HD quality |
|
|
603
|
+
|
|
604
|
+
> **Note:** Consider showing users an **estimated file size** before export. It helps them make informed choices about quality vs. performance.
|
|
605
|
+
|
|
606
|
+
## Troubleshooting
|
|
607
|
+
|
|
608
|
+
| Issue | Solution |
|
|
609
|
+
| --------------------- | ---------------------------------------------------------- |
|
|
610
|
+
| File size not reduced | Use the correct option name (`jpegQuality`, `webpQuality`) |
|
|
611
|
+
| JPEG quality too low | Raise quality to 0.9 or switch to PNG/WebP lossless |
|
|
612
|
+
| Slow export | Lower the compression level—PNG level 5–6 is a good target |
|
|
613
|
+
| Video not compressing | Set `videoBitrate` to a reasonable non-zero value |
|
|
614
|
+
|
|
615
|
+
## API Reference
|
|
616
|
+
|
|
617
|
+
| Method | Description |
|
|
618
|
+
| -------------------------------------------- | -------------------------------------------------- |
|
|
619
|
+
| `engine.block.export(blockId, options)` | Export a block with compression and format options |
|
|
620
|
+
| `engine.block.exportVideo(blockId, options)` | Export a video with compression settings |
|
|
621
|
+
| `engine.editor.getMaxExportSize()` | Get maximum export dimensions |
|
|
622
|
+
| `engine.editor.getAvailableMemory()` | Get available memory for export |
|
|
623
|
+
|
|
624
|
+
## Next Steps
|
|
625
|
+
|
|
626
|
+
- [Export Overview](./export-save-publish/export/overview.md) - Compare all supported export formats
|
|
627
|
+
- [Export to PNG](./export-save-publish/export/to-png.md) - Full PNG export options and transparency handling
|
|
628
|
+
- [Export to JPEG](./export-save-publish/export/to-jpeg.md) - JPEG-specific options for photographs
|
|
629
|
+
- [Export to WebP](./export-save-publish/export/to-webp.md) - WebP format with lossless and lossy modes
|
|
630
|
+
- [Batch Processing](./automation/batch-processing.md) - Apply compression consistently in automated exports
|
|
631
|
+
|
|
632
|
+
---
|
|
633
|
+
|
|
634
|
+
## More Resources
|
|
635
|
+
|
|
636
|
+
- **[Vanilla JS/TS Documentation Index](https://img.ly/docs/cesdk/js.md)** - Browse all Vanilla JS/TS documentation
|
|
637
|
+
- **[Complete Documentation](./llms-full.txt.md)** - Full documentation in one file (for LLMs)
|
|
638
|
+
- **[Web Documentation](./js.md)** - Interactive documentation with examples
|
|
639
|
+
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
|