@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,676 @@
|
|
|
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) > [Create and Edit Videos](./create-video.md) > [Update Caption Presets](./create-video/update-caption-presets.md)
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Extend CE.SDK's video caption feature with custom caption presets by updating
|
|
8
|
+
the content.json file. Caption presets let your users apply predefined styles
|
|
9
|
+
to video captions with a single click.
|
|
10
|
+
|
|
11
|
+

|
|
12
|
+
|
|
13
|
+
> **Reading time:** 10 minutes
|
|
14
|
+
>
|
|
15
|
+
> **Resources:**
|
|
16
|
+
>
|
|
17
|
+
> - [Download examples](https://github.com/imgly/cesdk-web-examples/archive/refs/tags/release-$UBQ_VERSION$.zip)
|
|
18
|
+
> - [View source on GitHub](https://github.com/imgly/cesdk-web-examples/tree/release-$UBQ_VERSION$/guides-create-video-update-caption-presets-browser)
|
|
19
|
+
> - [Open in StackBlitz](https://stackblitz.com/github/imgly/cesdk-web-examples/tree/v$UBQ_VERSION$/guides-create-video-update-caption-presets-browser)
|
|
20
|
+
> - [Live demo](https://img.ly/docs/cesdk/examples/guides-create-video-update-caption-presets-browser/)
|
|
21
|
+
|
|
22
|
+
Video captions have become an essential part of digital content, improving accessibility and engagement. With CE.SDK's caption presets feature, you can offer your users a selection of predefined caption styles that they can apply with a single click. This guide shows you how to create styled text blocks, serialize them as preset files, and structure the content.json to make them available in the caption presets panel.
|
|
23
|
+
|
|
24
|
+
```typescript file=@cesdk_web_examples/guides-create-video-update-caption-presets-browser/browser.ts reference-only
|
|
25
|
+
import type { EditorPlugin, EditorPluginContext } from '@cesdk/cesdk-js';
|
|
26
|
+
|
|
27
|
+
import {
|
|
28
|
+
BlurAssetSource,
|
|
29
|
+
CaptionPresetsAssetSource,
|
|
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 { VideoEditorConfig } from './video-editor/plugin';
|
|
44
|
+
import packageJson from './package.json';
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* CE.SDK Plugin: Update Caption Presets Guide
|
|
48
|
+
*
|
|
49
|
+
* Demonstrates creating custom caption presets in CE.SDK:
|
|
50
|
+
* - Creating a styled text block as a preset base
|
|
51
|
+
* - Applying neon glow styling with colors and drop shadow
|
|
52
|
+
* - Serializing the block for use as a preset file
|
|
53
|
+
* - Understanding the content.json structure for caption presets
|
|
54
|
+
*/
|
|
55
|
+
class Example implements EditorPlugin {
|
|
56
|
+
name = packageJson.name;
|
|
57
|
+
|
|
58
|
+
version = packageJson.version;
|
|
59
|
+
|
|
60
|
+
async initialize({ cesdk }: EditorPluginContext): Promise<void> {
|
|
61
|
+
if (!cesdk) {
|
|
62
|
+
throw new Error('CE.SDK instance is required for this plugin');
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
await cesdk.addPlugin(new VideoEditorConfig());
|
|
66
|
+
|
|
67
|
+
// Add asset source plugins
|
|
68
|
+
await cesdk.addPlugin(new BlurAssetSource());
|
|
69
|
+
await cesdk.addPlugin(new CaptionPresetsAssetSource());
|
|
70
|
+
await cesdk.addPlugin(new ColorPaletteAssetSource());
|
|
71
|
+
await cesdk.addPlugin(new CropPresetsAssetSource());
|
|
72
|
+
await cesdk.addPlugin(
|
|
73
|
+
new UploadAssetSources({
|
|
74
|
+
include: [
|
|
75
|
+
'ly.img.image.upload',
|
|
76
|
+
'ly.img.video.upload',
|
|
77
|
+
'ly.img.audio.upload'
|
|
78
|
+
]
|
|
79
|
+
})
|
|
80
|
+
);
|
|
81
|
+
await cesdk.addPlugin(
|
|
82
|
+
new DemoAssetSources({
|
|
83
|
+
include: [
|
|
84
|
+
'ly.img.templates.video.*',
|
|
85
|
+
'ly.img.image.*',
|
|
86
|
+
'ly.img.audio.*',
|
|
87
|
+
'ly.img.video.*'
|
|
88
|
+
]
|
|
89
|
+
})
|
|
90
|
+
);
|
|
91
|
+
await cesdk.addPlugin(new EffectsAssetSource());
|
|
92
|
+
await cesdk.addPlugin(new FiltersAssetSource());
|
|
93
|
+
await cesdk.addPlugin(
|
|
94
|
+
new PagePresetsAssetSource({
|
|
95
|
+
include: [
|
|
96
|
+
'ly.img.page.presets.instagram.*',
|
|
97
|
+
'ly.img.page.presets.facebook.*',
|
|
98
|
+
'ly.img.page.presets.x.*',
|
|
99
|
+
'ly.img.page.presets.linkedin.*',
|
|
100
|
+
'ly.img.page.presets.pinterest.*',
|
|
101
|
+
'ly.img.page.presets.tiktok.*',
|
|
102
|
+
'ly.img.page.presets.youtube.*',
|
|
103
|
+
'ly.img.page.presets.video.*'
|
|
104
|
+
]
|
|
105
|
+
})
|
|
106
|
+
);
|
|
107
|
+
await cesdk.addPlugin(new StickerAssetSource());
|
|
108
|
+
await cesdk.addPlugin(new TextAssetSource());
|
|
109
|
+
await cesdk.addPlugin(new TextComponentAssetSource());
|
|
110
|
+
await cesdk.addPlugin(new TypefaceAssetSource());
|
|
111
|
+
await cesdk.addPlugin(new VectorShapeAssetSource());
|
|
112
|
+
|
|
113
|
+
await cesdk.actions.run('scene.create', {
|
|
114
|
+
layout: 'DepthStack',
|
|
115
|
+
page: {
|
|
116
|
+
sourceId: 'ly.img.page.presets',
|
|
117
|
+
assetId: 'ly.img.page.presets.instagram.story',
|
|
118
|
+
color: { r: 0, g: 0, b: 0, a: 1 }
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
|
|
122
|
+
const engine = cesdk.engine;
|
|
123
|
+
|
|
124
|
+
// Create a text block to use as the preset base
|
|
125
|
+
// Text blocks support all the styling properties needed for captions
|
|
126
|
+
const textBlock = engine.block.create('text');
|
|
127
|
+
|
|
128
|
+
// Set sample caption text
|
|
129
|
+
engine.block.setString(textBlock, 'text/text', 'NEON GLOW');
|
|
130
|
+
|
|
131
|
+
// Position and size the text block
|
|
132
|
+
engine.block.setPositionX(textBlock, 50);
|
|
133
|
+
engine.block.setPositionY(textBlock, 200);
|
|
134
|
+
engine.block.setWidth(textBlock, 600);
|
|
135
|
+
engine.block.setHeightMode(textBlock, 'Auto');
|
|
136
|
+
|
|
137
|
+
// Style the text with a bright neon cyan color
|
|
138
|
+
// This will be the fill/solid/color property in the preset
|
|
139
|
+
engine.block.setColor(textBlock, 'fill/solid/color', {
|
|
140
|
+
r: 0.0,
|
|
141
|
+
g: 1.0,
|
|
142
|
+
b: 1.0,
|
|
143
|
+
a: 1.0
|
|
144
|
+
});
|
|
145
|
+
|
|
146
|
+
// Set font properties for the caption style
|
|
147
|
+
engine.block.setFloat(textBlock, 'text/fontSize', 48);
|
|
148
|
+
|
|
149
|
+
// Use a bold font for better visibility
|
|
150
|
+
// Load and set a typeface
|
|
151
|
+
const typefaceResult = await engine.asset.findAssets('ly.img.typeface', {
|
|
152
|
+
query: 'Roboto',
|
|
153
|
+
page: 0,
|
|
154
|
+
perPage: 10
|
|
155
|
+
});
|
|
156
|
+
|
|
157
|
+
if (typefaceResult.assets.length > 0) {
|
|
158
|
+
const typefaceAsset = typefaceResult.assets[0];
|
|
159
|
+
const typeface = typefaceAsset.payload?.typeface;
|
|
160
|
+
if (typeface && typeface.fonts?.[0]?.uri) {
|
|
161
|
+
engine.block.setFont(textBlock, typeface.fonts[0].uri, typeface);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
// Add a glowing drop shadow effect for the neon look
|
|
166
|
+
// This creates the characteristic neon glow effect
|
|
167
|
+
engine.block.setDropShadowEnabled(textBlock, true);
|
|
168
|
+
|
|
169
|
+
// Set glow color (bright cyan to match text)
|
|
170
|
+
engine.block.setColor(textBlock, 'dropShadow/color', {
|
|
171
|
+
r: 0.0,
|
|
172
|
+
g: 1.0,
|
|
173
|
+
b: 1.0,
|
|
174
|
+
a: 0.8
|
|
175
|
+
});
|
|
176
|
+
|
|
177
|
+
// Configure shadow properties for a soft glow
|
|
178
|
+
engine.block.setFloat(textBlock, 'dropShadow/blurRadius/x', 20);
|
|
179
|
+
engine.block.setFloat(textBlock, 'dropShadow/blurRadius/y', 20);
|
|
180
|
+
engine.block.setFloat(textBlock, 'dropShadow/offset/x', 0);
|
|
181
|
+
engine.block.setFloat(textBlock, 'dropShadow/offset/y', 0);
|
|
182
|
+
|
|
183
|
+
// Optionally add a semi-transparent dark background
|
|
184
|
+
// This helps the caption stand out against video content
|
|
185
|
+
engine.block.setBackgroundColorEnabled(textBlock, true);
|
|
186
|
+
engine.block.setColor(textBlock, 'backgroundColor/color', {
|
|
187
|
+
r: 0.0,
|
|
188
|
+
g: 0.0,
|
|
189
|
+
b: 0.1,
|
|
190
|
+
a: 0.7
|
|
191
|
+
});
|
|
192
|
+
|
|
193
|
+
// Add the styled text block to the page
|
|
194
|
+
const pages = engine.block.findByType('page');
|
|
195
|
+
if (pages.length > 0) {
|
|
196
|
+
engine.block.appendChild(pages[0], textBlock);
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
// Select the block and zoom to it so it's visible in the editor
|
|
200
|
+
engine.block.select(textBlock);
|
|
201
|
+
await engine.scene.zoomToBlock(textBlock, { padding: 40 });
|
|
202
|
+
|
|
203
|
+
// Serialize the styled text block to create a preset file
|
|
204
|
+
// This serialized string can be saved as a .blocks or .preset file
|
|
205
|
+
// Include 'bundle' scheme to allow serialization of blocks with bundled fonts
|
|
206
|
+
const serializedPreset = await engine.block.saveToString(
|
|
207
|
+
[textBlock],
|
|
208
|
+
['buffer', 'http', 'https', 'bundle']
|
|
209
|
+
);
|
|
210
|
+
|
|
211
|
+
// eslint-disable-next-line no-console
|
|
212
|
+
console.log('=== Serialized Preset ===');
|
|
213
|
+
// eslint-disable-next-line no-console
|
|
214
|
+
console.log('Save this as a .preset file (e.g., neon-glow.preset):');
|
|
215
|
+
// eslint-disable-next-line no-console
|
|
216
|
+
console.log(serializedPreset);
|
|
217
|
+
|
|
218
|
+
// Example content.json entry for the custom preset
|
|
219
|
+
// This shows the structure needed to add the preset to content.json
|
|
220
|
+
const contentJsonEntry = {
|
|
221
|
+
id: '//ly.img.caption.presets/neon-glow',
|
|
222
|
+
label: {
|
|
223
|
+
en: 'Neon Glow'
|
|
224
|
+
},
|
|
225
|
+
meta: {
|
|
226
|
+
uri: '{{base_url}}/ly.img.caption.presets/presets/neon-glow.preset',
|
|
227
|
+
thumbUri:
|
|
228
|
+
'{{base_url}}/ly.img.caption.presets/thumbnails/neon-glow.png',
|
|
229
|
+
mimeType: 'application/ubq-blocks-string'
|
|
230
|
+
},
|
|
231
|
+
payload: {
|
|
232
|
+
properties: [
|
|
233
|
+
{
|
|
234
|
+
type: 'Color',
|
|
235
|
+
property: 'fill/solid/color',
|
|
236
|
+
value: { r: 0.0, g: 1.0, b: 1.0, a: 1.0 },
|
|
237
|
+
defaultValue: { r: 0.0, g: 1.0, b: 1.0, a: 1.0 }
|
|
238
|
+
},
|
|
239
|
+
{
|
|
240
|
+
type: 'Color',
|
|
241
|
+
property: 'dropShadow/color',
|
|
242
|
+
value: { r: 0.0, g: 1.0, b: 1.0, a: 0.8 },
|
|
243
|
+
defaultValue: { r: 0.0, g: 1.0, b: 1.0, a: 0.8 }
|
|
244
|
+
},
|
|
245
|
+
{
|
|
246
|
+
type: 'Color',
|
|
247
|
+
property: 'backgroundColor/color',
|
|
248
|
+
value: { r: 0.0, g: 0.0, b: 0.1, a: 0.7 },
|
|
249
|
+
defaultValue: { r: 0.0, g: 0.0, b: 0.1, a: 0.7 }
|
|
250
|
+
}
|
|
251
|
+
]
|
|
252
|
+
}
|
|
253
|
+
};
|
|
254
|
+
|
|
255
|
+
// eslint-disable-next-line no-console
|
|
256
|
+
console.log('\n=== content.json Entry ===');
|
|
257
|
+
// eslint-disable-next-line no-console
|
|
258
|
+
console.log('Add this entry to your content.json assets array:');
|
|
259
|
+
// eslint-disable-next-line no-console
|
|
260
|
+
console.log(JSON.stringify(contentJsonEntry, null, 2));
|
|
261
|
+
|
|
262
|
+
// Example of a complete content.json file structure
|
|
263
|
+
const completeContentJson = {
|
|
264
|
+
version: '3.0.0',
|
|
265
|
+
id: 'ly.img.caption.presets',
|
|
266
|
+
assets: [contentJsonEntry]
|
|
267
|
+
};
|
|
268
|
+
|
|
269
|
+
// eslint-disable-next-line no-console
|
|
270
|
+
console.log('\n=== Complete content.json Example ===');
|
|
271
|
+
// eslint-disable-next-line no-console
|
|
272
|
+
console.log(JSON.stringify(completeContentJson, null, 2));
|
|
273
|
+
|
|
274
|
+
// eslint-disable-next-line no-console
|
|
275
|
+
console.log('\n=== Caption Preset Guide ===');
|
|
276
|
+
// eslint-disable-next-line no-console
|
|
277
|
+
console.log(
|
|
278
|
+
'The styled text block above demonstrates a "Neon Glow" caption preset.'
|
|
279
|
+
);
|
|
280
|
+
// eslint-disable-next-line no-console
|
|
281
|
+
console.log('To use this preset:');
|
|
282
|
+
// eslint-disable-next-line no-console
|
|
283
|
+
console.log('1. Save the serialized preset string as a .preset file');
|
|
284
|
+
// eslint-disable-next-line no-console
|
|
285
|
+
console.log('2. Create a thumbnail image showing the preset appearance');
|
|
286
|
+
// eslint-disable-next-line no-console
|
|
287
|
+
console.log('3. Add the content.json entry to your assets folder');
|
|
288
|
+
// eslint-disable-next-line no-console
|
|
289
|
+
console.log('4. Configure CE.SDK baseURL to point to your assets location');
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
export default Example;
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
This guide covers how to understand the caption presets folder structure, create custom caption styles from text blocks, serialize presets for hosting, define customizable properties, and configure CE.SDK to load your custom presets.
|
|
297
|
+
|
|
298
|
+
## Understanding the Caption Presets Structure
|
|
299
|
+
|
|
300
|
+
### Folder Organization
|
|
301
|
+
|
|
302
|
+
CE.SDK's caption presets use a specific directory structure that the engine expects when loading presets. The base path is `assets/v5/ly.img.caption.presets/` and contains:
|
|
303
|
+
|
|
304
|
+
```
|
|
305
|
+
assets/v5/ly.img.caption.presets/
|
|
306
|
+
├── content.json # Master index of all presets
|
|
307
|
+
├── presets/ # Folder containing preset files
|
|
308
|
+
│ ├── my-custom-preset.preset # Serialized caption block with styling
|
|
309
|
+
│ └── ...
|
|
310
|
+
└── thumbnails/ # Folder containing preview images
|
|
311
|
+
├── my-custom-preset.png # Preview image for preset
|
|
312
|
+
└── ...
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
The main `content.json` file acts as an index that lists all available presets with their metadata. When CE.SDK loads caption presets, it reads this file to discover available presets and their locations.
|
|
316
|
+
|
|
317
|
+
### content.json Format
|
|
318
|
+
|
|
319
|
+
The content.json file follows a specific format with version, asset source ID, and an assets array:
|
|
320
|
+
|
|
321
|
+
```json
|
|
322
|
+
{
|
|
323
|
+
"version": "3.0.0",
|
|
324
|
+
"id": "ly.img.caption.presets",
|
|
325
|
+
"assets": [
|
|
326
|
+
{
|
|
327
|
+
"id": "ly.img.caption.presets.my-preset",
|
|
328
|
+
"label": { "en": "My Preset" },
|
|
329
|
+
"meta": {
|
|
330
|
+
"uri": "{{base_url}}/ly.img.caption.presets/presets/my-preset.preset",
|
|
331
|
+
"thumbUri": "{{base_url}}/ly.img.caption.presets/thumbnails/my-preset.png",
|
|
332
|
+
"mimeType": "application/ubq-blocks-string"
|
|
333
|
+
},
|
|
334
|
+
"payload": {
|
|
335
|
+
"properties": []
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
]
|
|
339
|
+
}
|
|
340
|
+
```
|
|
341
|
+
|
|
342
|
+
Each asset entry requires a unique ID with namespace, localized label, meta with URIs and mime type, and optional payload properties for customization.
|
|
343
|
+
|
|
344
|
+
## Creating Custom Caption Presets
|
|
345
|
+
|
|
346
|
+
### Designing a Caption Style
|
|
347
|
+
|
|
348
|
+
We create a styled text block as the basis for our preset. Text blocks support all the styling properties needed for captions including colors, fonts, backgrounds, shadows, and effects.
|
|
349
|
+
|
|
350
|
+
```typescript highlight-create-text-block
|
|
351
|
+
// Create a text block to use as the preset base
|
|
352
|
+
// Text blocks support all the styling properties needed for captions
|
|
353
|
+
const textBlock = engine.block.create('text');
|
|
354
|
+
|
|
355
|
+
// Set sample caption text
|
|
356
|
+
engine.block.setString(textBlock, 'text/text', 'NEON GLOW');
|
|
357
|
+
|
|
358
|
+
// Position and size the text block
|
|
359
|
+
engine.block.setPositionX(textBlock, 50);
|
|
360
|
+
engine.block.setPositionY(textBlock, 200);
|
|
361
|
+
engine.block.setWidth(textBlock, 600);
|
|
362
|
+
engine.block.setHeightMode(textBlock, 'Auto');
|
|
363
|
+
```
|
|
364
|
+
|
|
365
|
+
We position and size the text block, then set sample caption text. The text block serves as our canvas for applying the styling that will define the preset's appearance.
|
|
366
|
+
|
|
367
|
+
### Styling with Colors and Fonts
|
|
368
|
+
|
|
369
|
+
We style the text with colors and configure font properties. The fill color becomes the `fill/solid/color` property in the preset:
|
|
370
|
+
|
|
371
|
+
```typescript highlight-style-text-color
|
|
372
|
+
// Style the text with a bright neon cyan color
|
|
373
|
+
// This will be the fill/solid/color property in the preset
|
|
374
|
+
engine.block.setColor(textBlock, 'fill/solid/color', {
|
|
375
|
+
r: 0.0,
|
|
376
|
+
g: 1.0,
|
|
377
|
+
b: 1.0,
|
|
378
|
+
a: 1.0
|
|
379
|
+
});
|
|
380
|
+
```
|
|
381
|
+
|
|
382
|
+
We also configure font size and load a typeface. When users apply this preset, their captions will inherit these font settings:
|
|
383
|
+
|
|
384
|
+
```typescript highlight-style-font
|
|
385
|
+
// Set font properties for the caption style
|
|
386
|
+
engine.block.setFloat(textBlock, 'text/fontSize', 48);
|
|
387
|
+
|
|
388
|
+
// Use a bold font for better visibility
|
|
389
|
+
// Load and set a typeface
|
|
390
|
+
const typefaceResult = await engine.asset.findAssets('ly.img.typeface', {
|
|
391
|
+
query: 'Roboto',
|
|
392
|
+
page: 0,
|
|
393
|
+
perPage: 10
|
|
394
|
+
});
|
|
395
|
+
|
|
396
|
+
if (typefaceResult.assets.length > 0) {
|
|
397
|
+
const typefaceAsset = typefaceResult.assets[0];
|
|
398
|
+
const typeface = typefaceAsset.payload?.typeface;
|
|
399
|
+
if (typeface && typeface.fonts?.[0]?.uri) {
|
|
400
|
+
engine.block.setFont(textBlock, typeface.fonts[0].uri, typeface);
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
```
|
|
404
|
+
|
|
405
|
+
### Adding Visual Effects
|
|
406
|
+
|
|
407
|
+
We add a glowing drop shadow effect for the neon look. Drop shadow creates the characteristic glow effect that makes caption presets visually distinctive:
|
|
408
|
+
|
|
409
|
+
```typescript highlight-style-drop-shadow
|
|
410
|
+
// Add a glowing drop shadow effect for the neon look
|
|
411
|
+
// This creates the characteristic neon glow effect
|
|
412
|
+
engine.block.setDropShadowEnabled(textBlock, true);
|
|
413
|
+
|
|
414
|
+
// Set glow color (bright cyan to match text)
|
|
415
|
+
engine.block.setColor(textBlock, 'dropShadow/color', {
|
|
416
|
+
r: 0.0,
|
|
417
|
+
g: 1.0,
|
|
418
|
+
b: 1.0,
|
|
419
|
+
a: 0.8
|
|
420
|
+
});
|
|
421
|
+
|
|
422
|
+
// Configure shadow properties for a soft glow
|
|
423
|
+
engine.block.setFloat(textBlock, 'dropShadow/blurRadius/x', 20);
|
|
424
|
+
engine.block.setFloat(textBlock, 'dropShadow/blurRadius/y', 20);
|
|
425
|
+
engine.block.setFloat(textBlock, 'dropShadow/offset/x', 0);
|
|
426
|
+
engine.block.setFloat(textBlock, 'dropShadow/offset/y', 0);
|
|
427
|
+
```
|
|
428
|
+
|
|
429
|
+
Optionally, we add a semi-transparent background to help the caption stand out against video content:
|
|
430
|
+
|
|
431
|
+
```typescript highlight-style-background
|
|
432
|
+
// Optionally add a semi-transparent dark background
|
|
433
|
+
// This helps the caption stand out against video content
|
|
434
|
+
engine.block.setBackgroundColorEnabled(textBlock, true);
|
|
435
|
+
engine.block.setColor(textBlock, 'backgroundColor/color', {
|
|
436
|
+
r: 0.0,
|
|
437
|
+
g: 0.0,
|
|
438
|
+
b: 0.1,
|
|
439
|
+
a: 0.7
|
|
440
|
+
});
|
|
441
|
+
```
|
|
442
|
+
|
|
443
|
+
### Serializing the Preset
|
|
444
|
+
|
|
445
|
+
We serialize the styled text block using `block.saveToString()`. This creates a serialized string that can be saved as a `.preset` or `.blocks` file:
|
|
446
|
+
|
|
447
|
+
```typescript highlight-serialize-preset
|
|
448
|
+
// Serialize the styled text block to create a preset file
|
|
449
|
+
// This serialized string can be saved as a .blocks or .preset file
|
|
450
|
+
// Include 'bundle' scheme to allow serialization of blocks with bundled fonts
|
|
451
|
+
const serializedPreset = await engine.block.saveToString(
|
|
452
|
+
[textBlock],
|
|
453
|
+
['buffer', 'http', 'https', 'bundle']
|
|
454
|
+
);
|
|
455
|
+
|
|
456
|
+
// eslint-disable-next-line no-console
|
|
457
|
+
console.log('=== Serialized Preset ===');
|
|
458
|
+
// eslint-disable-next-line no-console
|
|
459
|
+
console.log('Save this as a .preset file (e.g., neon-glow.preset):');
|
|
460
|
+
// eslint-disable-next-line no-console
|
|
461
|
+
console.log(serializedPreset);
|
|
462
|
+
```
|
|
463
|
+
|
|
464
|
+
The serialized string contains all block properties and styling. Save this output as a file (e.g., `neon-glow.preset`) and create a thumbnail image showing the preset appearance.
|
|
465
|
+
|
|
466
|
+
## Defining Customizable Properties
|
|
467
|
+
|
|
468
|
+
### Color Properties
|
|
469
|
+
|
|
470
|
+
We define which properties users can customize without changing the entire preset. Color properties allow users to modify specific color aspects of a preset:
|
|
471
|
+
|
|
472
|
+
```typescript highlight-content-json-structure
|
|
473
|
+
// Example content.json entry for the custom preset
|
|
474
|
+
// This shows the structure needed to add the preset to content.json
|
|
475
|
+
const contentJsonEntry = {
|
|
476
|
+
id: '//ly.img.caption.presets/neon-glow',
|
|
477
|
+
label: {
|
|
478
|
+
en: 'Neon Glow'
|
|
479
|
+
},
|
|
480
|
+
meta: {
|
|
481
|
+
uri: '{{base_url}}/ly.img.caption.presets/presets/neon-glow.preset',
|
|
482
|
+
thumbUri: '{{base_url}}/ly.img.caption.presets/thumbnails/neon-glow.png',
|
|
483
|
+
mimeType: 'application/ubq-blocks-string'
|
|
484
|
+
},
|
|
485
|
+
payload: {
|
|
486
|
+
properties: [
|
|
487
|
+
{
|
|
488
|
+
type: 'Color',
|
|
489
|
+
property: 'fill/solid/color',
|
|
490
|
+
value: { r: 0.0, g: 1.0, b: 1.0, a: 1.0 },
|
|
491
|
+
defaultValue: { r: 0.0, g: 1.0, b: 1.0, a: 1.0 }
|
|
492
|
+
},
|
|
493
|
+
{
|
|
494
|
+
type: 'Color',
|
|
495
|
+
property: 'dropShadow/color',
|
|
496
|
+
value: { r: 0.0, g: 1.0, b: 1.0, a: 0.8 },
|
|
497
|
+
defaultValue: { r: 0.0, g: 1.0, b: 1.0, a: 0.8 }
|
|
498
|
+
},
|
|
499
|
+
{
|
|
500
|
+
type: 'Color',
|
|
501
|
+
property: 'backgroundColor/color',
|
|
502
|
+
value: { r: 0.0, g: 0.0, b: 0.1, a: 0.7 },
|
|
503
|
+
defaultValue: { r: 0.0, g: 0.0, b: 0.1, a: 0.7 }
|
|
504
|
+
}
|
|
505
|
+
]
|
|
506
|
+
}
|
|
507
|
+
};
|
|
508
|
+
|
|
509
|
+
// eslint-disable-next-line no-console
|
|
510
|
+
console.log('\n=== content.json Entry ===');
|
|
511
|
+
// eslint-disable-next-line no-console
|
|
512
|
+
console.log('Add this entry to your content.json assets array:');
|
|
513
|
+
// eslint-disable-next-line no-console
|
|
514
|
+
console.log(JSON.stringify(contentJsonEntry, null, 2));
|
|
515
|
+
```
|
|
516
|
+
|
|
517
|
+
Each property in the `payload.properties` array needs:
|
|
518
|
+
|
|
519
|
+
- `type`: Must be `"Color"` for color properties
|
|
520
|
+
- `property`: Property path (e.g., `"fill/solid/color"`, `"backgroundColor/color"`, `"dropShadow/color"`)
|
|
521
|
+
- `value`: Current RGBA color object with `r`, `g`, `b`, `a` values (0-1 range)
|
|
522
|
+
- `defaultValue`: Initial RGBA color object
|
|
523
|
+
|
|
524
|
+
### Supported Property Paths
|
|
525
|
+
|
|
526
|
+
Available property paths for caption customization:
|
|
527
|
+
|
|
528
|
+
- `fill/solid/color`: Text fill color
|
|
529
|
+
- `backgroundColor/color`: Background color behind text
|
|
530
|
+
- `dropShadow/color`: Drop shadow color
|
|
531
|
+
- `stroke/color`: Stroke/outline color
|
|
532
|
+
|
|
533
|
+
## Updating the content.json File
|
|
534
|
+
|
|
535
|
+
### Adding a New Preset Entry
|
|
536
|
+
|
|
537
|
+
Add a new object to the `assets` array with all required fields. The complete structure for a preset entry:
|
|
538
|
+
|
|
539
|
+
```json
|
|
540
|
+
{
|
|
541
|
+
"id": "ly.img.caption.presets.neon-glow",
|
|
542
|
+
"label": { "en": "Neon Glow" },
|
|
543
|
+
"meta": {
|
|
544
|
+
"uri": "{{base_url}}/ly.img.caption.presets/presets/neon-glow.preset",
|
|
545
|
+
"thumbUri": "{{base_url}}/ly.img.caption.presets/thumbnails/neon-glow.png",
|
|
546
|
+
"mimeType": "application/ubq-blocks-string"
|
|
547
|
+
},
|
|
548
|
+
"payload": {
|
|
549
|
+
"properties": [
|
|
550
|
+
{
|
|
551
|
+
"type": "Color",
|
|
552
|
+
"property": "fill/solid/color",
|
|
553
|
+
"value": { "r": 0.0, "g": 1.0, "b": 1.0, "a": 1.0 },
|
|
554
|
+
"defaultValue": { "r": 0.0, "g": 1.0, "b": 1.0, "a": 1.0 }
|
|
555
|
+
},
|
|
556
|
+
{
|
|
557
|
+
"type": "Color",
|
|
558
|
+
"property": "dropShadow/color",
|
|
559
|
+
"value": { "r": 0.0, "g": 1.0, "b": 1.0, "a": 0.8 },
|
|
560
|
+
"defaultValue": { "r": 0.0, "g": 1.0, "b": 1.0, "a": 0.8 }
|
|
561
|
+
}
|
|
562
|
+
]
|
|
563
|
+
}
|
|
564
|
+
}
|
|
565
|
+
```
|
|
566
|
+
|
|
567
|
+
Ensure the `mimeType` is set to `"application/ubq-blocks-string"` and use the `{{base_url}}` placeholder for dynamic path resolution.
|
|
568
|
+
|
|
569
|
+
### Complete content.json Example
|
|
570
|
+
|
|
571
|
+
The complete content.json file structure wraps preset entries in the assets array:
|
|
572
|
+
|
|
573
|
+
```typescript highlight-complete-content-json
|
|
574
|
+
// Example of a complete content.json file structure
|
|
575
|
+
const completeContentJson = {
|
|
576
|
+
version: '3.0.0',
|
|
577
|
+
id: 'ly.img.caption.presets',
|
|
578
|
+
assets: [contentJsonEntry]
|
|
579
|
+
};
|
|
580
|
+
|
|
581
|
+
// eslint-disable-next-line no-console
|
|
582
|
+
console.log('\n=== Complete content.json Example ===');
|
|
583
|
+
// eslint-disable-next-line no-console
|
|
584
|
+
console.log(JSON.stringify(completeContentJson, null, 2));
|
|
585
|
+
```
|
|
586
|
+
|
|
587
|
+
## Hosting and Serving Custom Presets
|
|
588
|
+
|
|
589
|
+
### Server Setup
|
|
590
|
+
|
|
591
|
+
Prepare the folder structure and upload files to your server:
|
|
592
|
+
|
|
593
|
+
1. Create folder structure matching `assets/v5/ly.img.caption.presets/`
|
|
594
|
+
2. Upload `content.json` to the root folder
|
|
595
|
+
3. Upload `.preset` files to `presets/` subfolder
|
|
596
|
+
4. Upload thumbnail images to `thumbnails/` subfolder
|
|
597
|
+
5. Ensure files are accessible via HTTP/HTTPS
|
|
598
|
+
6. Configure CORS headers if serving cross-origin
|
|
599
|
+
|
|
600
|
+
### Verifying File Access
|
|
601
|
+
|
|
602
|
+
Test that all files are accessible before configuring CE.SDK:
|
|
603
|
+
|
|
604
|
+
- Access `content.json` directly in browser
|
|
605
|
+
- Access preset files and thumbnails via their URLs
|
|
606
|
+
- Check browser console for CORS errors
|
|
607
|
+
|
|
608
|
+
## Loading Custom Presets into CE.SDK
|
|
609
|
+
|
|
610
|
+
### Base URL Configuration
|
|
611
|
+
|
|
612
|
+
To load your custom caption presets into CE.SDK, you need to tell the engine where to find your updated content.json file. Since CE.SDK already includes a caption presets asset source with the ID "ly.img.caption.presets", we'll update this existing source rather than creating a new one.
|
|
613
|
+
|
|
614
|
+
Set the base URL to point to your asset hosting location. CE.SDK automatically looks for `ly.img.caption.presets/content.json` relative to the base URL:
|
|
615
|
+
|
|
616
|
+
```typescript
|
|
617
|
+
const config = {
|
|
618
|
+
baseURL: 'https://your-server.com/assets/'
|
|
619
|
+
};
|
|
620
|
+
|
|
621
|
+
CreativeEditorSDK.create('#cesdk_container', config).then(async (cesdk) => {
|
|
622
|
+
// Caption presets load automatically from baseURL + 'ly.img.caption.presets/content.json'
|
|
623
|
+
});
|
|
624
|
+
```
|
|
625
|
+
|
|
626
|
+
Your custom presets will seamlessly integrate with any built-in presets and automatically appear in the caption presets panel in the UI. No additional source registration is needed when replacing the default presets.
|
|
627
|
+
|
|
628
|
+
## Troubleshooting
|
|
629
|
+
|
|
630
|
+
### Preset Not Loading
|
|
631
|
+
|
|
632
|
+
- Verify `content.json` is accessible at expected URL
|
|
633
|
+
- Check browser console for 404 errors on preset files
|
|
634
|
+
- Ensure `mimeType` is set to `"application/ubq-blocks-string"`
|
|
635
|
+
- Verify `{{base_url}}` placeholder is used correctly
|
|
636
|
+
|
|
637
|
+
### Preset Styles Not Applying
|
|
638
|
+
|
|
639
|
+
- Ensure preset was serialized from a text block (not other block types)
|
|
640
|
+
- Verify the serialized block contains styling properties
|
|
641
|
+
- Check that property paths in `payload.properties` are correct
|
|
642
|
+
|
|
643
|
+
### Thumbnail Not Displaying
|
|
644
|
+
|
|
645
|
+
- Verify thumbnail file exists at the `thumbUri` path
|
|
646
|
+
- Check image format is PNG
|
|
647
|
+
- Ensure CORS headers allow image loading
|
|
648
|
+
|
|
649
|
+
### Custom Colors Not Working
|
|
650
|
+
|
|
651
|
+
- Verify `properties` array structure in content.json
|
|
652
|
+
- Check property `type` is `"Color"`
|
|
653
|
+
- Ensure `value` and `defaultValue` have correct RGBA format (0-1 range)
|
|
654
|
+
|
|
655
|
+
## API Reference
|
|
656
|
+
|
|
657
|
+
| Method | Category | Purpose |
|
|
658
|
+
| -------------------------------------------- | -------- | ------------------------------------------- |
|
|
659
|
+
| `engine.block.create('text')` | Block | Create text block for preset styling |
|
|
660
|
+
| `engine.block.saveToString(blocks)` | Block | Serialize styled block to preset format |
|
|
661
|
+
| `engine.block.setColor(id, property, color)` | Block | Set color property (fill, background, etc.) |
|
|
662
|
+
| `engine.block.setBackgroundColorEnabled()` | Block | Enable background color |
|
|
663
|
+
| `engine.block.setDropShadowEnabled()` | Block | Enable drop shadow |
|
|
664
|
+
| `engine.block.setFloat(id, property, value)` | Block | Set numeric properties (font size, etc.) |
|
|
665
|
+
| `engine.block.setString(id, property, val)` | Block | Set string properties (text, font URI) |
|
|
666
|
+
| `engine.asset.findAssets(sourceId, query)` | Asset | Find assets like typefaces |
|
|
667
|
+
| `CreativeEngine.init(config)` | Engine | Initialize engine with base URL config |
|
|
668
|
+
|
|
669
|
+
---
|
|
670
|
+
|
|
671
|
+
## More Resources
|
|
672
|
+
|
|
673
|
+
- **[Vanilla JS/TS Documentation Index](https://img.ly/docs/cesdk/js.md)** - Browse all Vanilla JS/TS documentation
|
|
674
|
+
- **[Complete Documentation](./llms-full.txt.md)** - Full documentation in one file (for LLMs)
|
|
675
|
+
- **[Web Documentation](./js.md)** - Interactive documentation with examples
|
|
676
|
+
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
|