@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,497 @@
|
|
|
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) > [Import Media Assets](./import-media.md) > [Import From Remote Source](./import-media/from-remote-source.md) > [From Soundstripe](./import-media/from-remote-source/soundstripe.md) > [Plugins](./plugins.md) > [Soundstripe](./import-media/from-remote-source/soundstripe.md)
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Integrate Soundstripe's vast library of royalty-free audio tracks directly
|
|
8
|
+
into CE.SDK, enabling users to search and add high-quality music to their
|
|
9
|
+
designs.
|
|
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)
|
|
19
|
+
> - [Open in StackBlitz](https://stackblitz.com/github/imgly/cesdk-web-examples)
|
|
20
|
+
> - [Live demo](https://img.ly/docs/cesdk/examples/guides-import-media-from-remote-source-soundstripe-browser/)
|
|
21
|
+
|
|
22
|
+
Soundstripe provides a vast library of high-quality, royalty-free audio tracks through their API. This guide shows you how to integrate Soundstripe's audio search and browsing capabilities directly into CE.SDK using the official `@imgly/plugin-soundstripe-web` plugin. You'll learn how to set up Soundstripe API authentication (including proxy server requirements for production), implement search and discovery features, configure the asset library UI, and handle automatic URI refresh for expired audio links.
|
|
23
|
+
|
|
24
|
+
```typescript file=@cesdk_web_examples/guides-import-media-from-remote-source-soundstripe-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 SoundstripePlugin from '@imgly/plugin-soundstripe-web';
|
|
45
|
+
import { refreshSoundstripeAudioURIs } from '@imgly/plugin-soundstripe-web';
|
|
46
|
+
import packageJson from './package.json';
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* CE.SDK Plugin: Soundstripe Audio Integration
|
|
50
|
+
*
|
|
51
|
+
* Demonstrates integrating Soundstripe's audio library into CE.SDK:
|
|
52
|
+
* - Adding the Soundstripe plugin
|
|
53
|
+
* - Configuring API authentication (direct or proxy)
|
|
54
|
+
* - Adding Soundstripe to the audio asset library
|
|
55
|
+
* - Automatic URI refresh for expired audio links
|
|
56
|
+
* - Manual URI refresh utility
|
|
57
|
+
*/
|
|
58
|
+
class Example implements EditorPlugin {
|
|
59
|
+
name = packageJson.name;
|
|
60
|
+
version = packageJson.version;
|
|
61
|
+
|
|
62
|
+
async initialize({ cesdk }: EditorPluginContext): Promise<void> {
|
|
63
|
+
if (!cesdk) {
|
|
64
|
+
throw new Error('CE.SDK instance is required for this plugin');
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
const engine = cesdk.engine;
|
|
68
|
+
await cesdk.addPlugin(new VideoEditorConfig());
|
|
69
|
+
|
|
70
|
+
// Add asset source plugins
|
|
71
|
+
await cesdk.addPlugin(new BlurAssetSource());
|
|
72
|
+
await cesdk.addPlugin(new CaptionPresetsAssetSource());
|
|
73
|
+
await cesdk.addPlugin(new ColorPaletteAssetSource());
|
|
74
|
+
await cesdk.addPlugin(new CropPresetsAssetSource());
|
|
75
|
+
await cesdk.addPlugin(
|
|
76
|
+
new UploadAssetSources({
|
|
77
|
+
include: [
|
|
78
|
+
'ly.img.image.upload',
|
|
79
|
+
'ly.img.video.upload',
|
|
80
|
+
'ly.img.audio.upload'
|
|
81
|
+
]
|
|
82
|
+
})
|
|
83
|
+
);
|
|
84
|
+
await cesdk.addPlugin(
|
|
85
|
+
new DemoAssetSources({
|
|
86
|
+
include: [
|
|
87
|
+
'ly.img.templates.video.*',
|
|
88
|
+
'ly.img.image.*',
|
|
89
|
+
'ly.img.audio.*',
|
|
90
|
+
'ly.img.video.*'
|
|
91
|
+
]
|
|
92
|
+
})
|
|
93
|
+
);
|
|
94
|
+
await cesdk.addPlugin(new EffectsAssetSource());
|
|
95
|
+
await cesdk.addPlugin(new FiltersAssetSource());
|
|
96
|
+
await cesdk.addPlugin(
|
|
97
|
+
new PagePresetsAssetSource({
|
|
98
|
+
include: [
|
|
99
|
+
'ly.img.page.presets.instagram.*',
|
|
100
|
+
'ly.img.page.presets.facebook.*',
|
|
101
|
+
'ly.img.page.presets.x.*',
|
|
102
|
+
'ly.img.page.presets.linkedin.*',
|
|
103
|
+
'ly.img.page.presets.pinterest.*',
|
|
104
|
+
'ly.img.page.presets.tiktok.*',
|
|
105
|
+
'ly.img.page.presets.youtube.*',
|
|
106
|
+
'ly.img.page.presets.video.*'
|
|
107
|
+
]
|
|
108
|
+
})
|
|
109
|
+
);
|
|
110
|
+
await cesdk.addPlugin(new StickerAssetSource());
|
|
111
|
+
await cesdk.addPlugin(new TextAssetSource());
|
|
112
|
+
await cesdk.addPlugin(new TextComponentAssetSource());
|
|
113
|
+
await cesdk.addPlugin(new TypefaceAssetSource());
|
|
114
|
+
await cesdk.addPlugin(new VectorShapeAssetSource());
|
|
115
|
+
|
|
116
|
+
await cesdk.actions.run('scene.create', {
|
|
117
|
+
page: {
|
|
118
|
+
sourceId: 'ly.img.page.presets',
|
|
119
|
+
assetId: 'ly.img.page.presets.instagram.story',
|
|
120
|
+
color: { r: 0, g: 0, b: 0, a: 1 }
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
|
|
124
|
+
// Configure Soundstripe plugin with proxy server
|
|
125
|
+
// The proxy securely handles API authentication without exposing keys in the frontend
|
|
126
|
+
// Set up your own proxy server following:
|
|
127
|
+
// https://docs.soundstripe.com/docs/integrating-soundstripes-content-into-your-application
|
|
128
|
+
const proxyUrl =
|
|
129
|
+
import.meta.env.VITE_SOUNDSTRIPE_PROXY_URL ||
|
|
130
|
+
'https://your-proxy-server.example.com';
|
|
131
|
+
|
|
132
|
+
await cesdk.addPlugin(
|
|
133
|
+
SoundstripePlugin({
|
|
134
|
+
baseUrl: proxyUrl
|
|
135
|
+
})
|
|
136
|
+
);
|
|
137
|
+
|
|
138
|
+
// Configure localization for the asset library
|
|
139
|
+
cesdk.i18n.setTranslations({
|
|
140
|
+
en: {
|
|
141
|
+
'libraries.soundstripe.label': 'Soundstripe'
|
|
142
|
+
}
|
|
143
|
+
});
|
|
144
|
+
|
|
145
|
+
// Configure the asset library UI with a dedicated Soundstripe dock entry
|
|
146
|
+
cesdk.ui.addAssetLibraryEntry({
|
|
147
|
+
id: 'soundstripe',
|
|
148
|
+
sourceIds: ['ly.img.audio.soundstripe'],
|
|
149
|
+
previewLength: 6,
|
|
150
|
+
gridColumns: 2,
|
|
151
|
+
gridItemHeight: 'auto',
|
|
152
|
+
cardLabel: (assetResult) => assetResult.label
|
|
153
|
+
});
|
|
154
|
+
|
|
155
|
+
// Add Soundstripe to the existing Audio asset library
|
|
156
|
+
cesdk.ui.updateAssetLibraryEntry('ly.img.audio', {
|
|
157
|
+
sourceIds: ({ currentIds }) => [...currentIds, 'ly.img.audio.soundstripe']
|
|
158
|
+
});
|
|
159
|
+
|
|
160
|
+
// Add Soundstripe as the first button in the dock with a separator
|
|
161
|
+
cesdk.ui.setComponentOrder({ in: 'ly.img.dock' }, [
|
|
162
|
+
{
|
|
163
|
+
id: 'ly.img.assetLibrary.dock',
|
|
164
|
+
key: 'soundstripe',
|
|
165
|
+
label: 'libraries.soundstripe.label',
|
|
166
|
+
entries: ['soundstripe']
|
|
167
|
+
},
|
|
168
|
+
{ id: 'ly.img.separator' },
|
|
169
|
+
...cesdk.ui.getComponentOrder({ in: 'ly.img.dock' })
|
|
170
|
+
]);
|
|
171
|
+
|
|
172
|
+
// Example: Manual URI refresh utility
|
|
173
|
+
// This is useful if you need to manually refresh expired URIs
|
|
174
|
+
// The plugin handles automatic refresh during scene loading and playback
|
|
175
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
176
|
+
const handleManualRefresh = async () => {
|
|
177
|
+
await refreshSoundstripeAudioURIs(engine, { baseUrl: proxyUrl });
|
|
178
|
+
};
|
|
179
|
+
|
|
180
|
+
// You can call this function when needed
|
|
181
|
+
// For example, when loading a scene or before playback
|
|
182
|
+
// handleManualRefresh();
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
export default Example;
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
This guide covers installing the Soundstripe plugin, configuring API authentication with direct access or proxy server, adding Soundstripe to the audio asset library, understanding URI expiration and automatic refresh, and manually triggering URI refresh when needed.
|
|
190
|
+
|
|
191
|
+
## Prerequisites
|
|
192
|
+
|
|
193
|
+
Before integrating Soundstripe, ensure you have:
|
|
194
|
+
|
|
195
|
+
- The `@imgly/plugin-soundstripe-web` package installed via npm, yarn, or pnpm
|
|
196
|
+
- A Soundstripe API key from [Soundstripe](https://soundstripe.com/)
|
|
197
|
+
- A proxy server setup to handle API authentication securely
|
|
198
|
+
|
|
199
|
+
**IMPORTANT**: For production use, you must set up your own proxy server. Follow [Soundstripe's integration guide](https://docs.soundstripe.com/docs/integrating-soundstripes-content-into-your-application) which covers:
|
|
200
|
+
|
|
201
|
+
- **Option 1**: Direct API integration (client-side)
|
|
202
|
+
- **Option 2**: Proxy server setup (recommended for production)
|
|
203
|
+
|
|
204
|
+
The proxy approach handles authentication securely, prevents exposing API keys in client-side code, ensures CORS compliance, and maintains stable API access.
|
|
205
|
+
|
|
206
|
+
## Installing the Soundstripe Plugin
|
|
207
|
+
|
|
208
|
+
Install the plugin package using a package manager:
|
|
209
|
+
|
|
210
|
+
```bash
|
|
211
|
+
pnpm add @imgly/plugin-soundstripe-web@$UBQ_VERSION$
|
|
212
|
+
# or
|
|
213
|
+
yarn add @imgly/plugin-soundstripe-web@$UBQ_VERSION$
|
|
214
|
+
# or
|
|
215
|
+
npm install @imgly/plugin-soundstripe-web@$UBQ_VERSION$
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
## Configuring the Plugin
|
|
219
|
+
|
|
220
|
+
The Soundstripe plugin requires configuration with either a proxy server (recommended for production) or direct API access (development only).
|
|
221
|
+
|
|
222
|
+
### Proxy Server Setup (Recommended)
|
|
223
|
+
|
|
224
|
+
Configure the plugin with a proxy server base URL to keep your API key secure:
|
|
225
|
+
|
|
226
|
+
```typescript highlight-plugin-configuration
|
|
227
|
+
// Configure Soundstripe plugin with proxy server
|
|
228
|
+
// The proxy securely handles API authentication without exposing keys in the frontend
|
|
229
|
+
// Set up your own proxy server following:
|
|
230
|
+
// https://docs.soundstripe.com/docs/integrating-soundstripes-content-into-your-application
|
|
231
|
+
const proxyUrl =
|
|
232
|
+
import.meta.env.VITE_SOUNDSTRIPE_PROXY_URL ||
|
|
233
|
+
'https://your-proxy-server.example.com';
|
|
234
|
+
|
|
235
|
+
await cesdk.addPlugin(
|
|
236
|
+
SoundstripePlugin({
|
|
237
|
+
baseUrl: proxyUrl
|
|
238
|
+
})
|
|
239
|
+
);
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
The proxy server handles Soundstripe API authentication server-side, preventing exposure of your API key in the frontend code. This is the recommended approach for both development and production environments.
|
|
243
|
+
|
|
244
|
+
### Direct API Access (Development Only)
|
|
245
|
+
|
|
246
|
+
For local development and testing, you can configure the plugin with a direct API key:
|
|
247
|
+
|
|
248
|
+
```typescript
|
|
249
|
+
const apiKey = import.meta.env.VITE_SOUNDSTRIPE_API_KEY;
|
|
250
|
+
|
|
251
|
+
await cesdk.addPlugin(
|
|
252
|
+
SoundstripePlugin({
|
|
253
|
+
apiKey
|
|
254
|
+
})
|
|
255
|
+
);
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
This approach should not be used in production as it exposes your API key in the frontend code.
|
|
259
|
+
|
|
260
|
+
## Plugin Configuration Parameters
|
|
261
|
+
|
|
262
|
+
The plugin configuration object supports the following parameters:
|
|
263
|
+
|
|
264
|
+
- **`apiKey`** (string, conditional): Your Soundstripe API key. Required when using direct API access for development.
|
|
265
|
+
- **`baseUrl`** (string, conditional): Your proxy server base URL. Required when using proxy server for production.
|
|
266
|
+
|
|
267
|
+
**Note:** Either `apiKey` or `baseUrl` must be provided. You cannot omit both parameters.
|
|
268
|
+
|
|
269
|
+
## How the Plugin Works
|
|
270
|
+
|
|
271
|
+
The Soundstripe plugin automatically registers an asset source with CE.SDK using `engine.asset.addSource()` internally. The plugin handles all API communication, translates API responses to CE.SDK's asset format, and manages asset source registration. You don't need to manually implement the asset source interface—the plugin takes care of everything.
|
|
272
|
+
|
|
273
|
+
The source ID for Soundstripe is `ly.img.audio.soundstripe`, which the plugin registers automatically when added.
|
|
274
|
+
|
|
275
|
+
## Adding Soundstripe to the Audio Asset Library
|
|
276
|
+
|
|
277
|
+
After adding the plugin, configure how Soundstripe appears in CE.SDK's asset library panel:
|
|
278
|
+
|
|
279
|
+
```typescript highlight-add-asset-library-entry
|
|
280
|
+
// Configure the asset library UI with a dedicated Soundstripe dock entry
|
|
281
|
+
cesdk.ui.addAssetLibraryEntry({
|
|
282
|
+
id: 'soundstripe',
|
|
283
|
+
sourceIds: ['ly.img.audio.soundstripe'],
|
|
284
|
+
previewLength: 6,
|
|
285
|
+
gridColumns: 2,
|
|
286
|
+
gridItemHeight: 'auto',
|
|
287
|
+
cardLabel: (assetResult) => assetResult.label
|
|
288
|
+
});
|
|
289
|
+
|
|
290
|
+
// Add Soundstripe to the existing Audio asset library
|
|
291
|
+
cesdk.ui.updateAssetLibraryEntry('ly.img.audio', {
|
|
292
|
+
sourceIds: ({ currentIds }) => [...currentIds, 'ly.img.audio.soundstripe']
|
|
293
|
+
});
|
|
294
|
+
|
|
295
|
+
// Add Soundstripe as the first button in the dock with a separator
|
|
296
|
+
cesdk.ui.setComponentOrder({ in: 'ly.img.dock' }, [
|
|
297
|
+
{
|
|
298
|
+
id: 'ly.img.assetLibrary.dock',
|
|
299
|
+
key: 'soundstripe',
|
|
300
|
+
label: 'libraries.soundstripe.label',
|
|
301
|
+
entries: ['soundstripe']
|
|
302
|
+
},
|
|
303
|
+
{ id: 'ly.img.separator' },
|
|
304
|
+
...cesdk.ui.getComponentOrder({ in: 'ly.img.dock' })
|
|
305
|
+
]);
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
The `addAssetLibraryEntry()` call registers the Soundstripe asset library panel with display settings:
|
|
309
|
+
|
|
310
|
+
- `gridColumns`: Number of columns in the grid layout (2 for audio tracks)
|
|
311
|
+
- `gridItemHeight`: Height style for grid items (`'auto'` maintains aspect ratio)
|
|
312
|
+
- `cardLabel`: Function that returns the label to display on each card (shows track title/artist)
|
|
313
|
+
- `previewLength`: Number of preview items to show
|
|
314
|
+
|
|
315
|
+
The `cardLabel` property is particularly important for audio assets as it makes the track title and artist information always visible on the card, matching the display style of the default Audio library.
|
|
316
|
+
|
|
317
|
+
The `setComponentOrder()` call creates an explicit dock button component by prepending a new `AssetLibraryDockComponent` to the existing dock order.
|
|
318
|
+
|
|
319
|
+
The dock component structure includes:
|
|
320
|
+
|
|
321
|
+
- `id`: Fixed identifier for asset library dock buttons (`'ly.img.assetLibrary.dock'`)
|
|
322
|
+
- `key`: Unique identifier for this specific button (`'soundstripe'`)
|
|
323
|
+
- `label`: Internationalization key for the button label (`'libraries.soundstripe.label'`)
|
|
324
|
+
- `entries`: Array of asset library entry IDs to display when clicked (`['soundstripe']`)
|
|
325
|
+
|
|
326
|
+
Additionally, we add Soundstripe to the existing Audio asset library using `updateAssetLibraryEntry()`. This provides dual access: users can access Soundstripe tracks both from the dedicated Soundstripe panel and from the Audio library panel. The functional update pattern `({ currentIds }) => [...currentIds, 'ly.img.audio.soundstripe']` appends Soundstripe to the existing sources without replacing them.
|
|
327
|
+
|
|
328
|
+
The separator component `{ id: 'ly.img.separator' }` adds a visual divider between the Soundstripe button and the default dock buttons, improving UI organization and clarity.
|
|
329
|
+
|
|
330
|
+
## Understanding URI Expiration
|
|
331
|
+
|
|
332
|
+
Soundstripe MP3 file URIs expire after a certain time period. This is a security measure implemented by Soundstripe to protect their content. When URIs expire, audio tracks will fail to play or load in the editor. The plugin automatically handles URI refresh to ensure your audio tracks continue to play without interruption.
|
|
333
|
+
|
|
334
|
+
## Automatic URI Refresh
|
|
335
|
+
|
|
336
|
+
The plugin includes built-in automatic URI refresh that happens at key moments:
|
|
337
|
+
|
|
338
|
+
- When a scene is loaded
|
|
339
|
+
- When the block selection changes
|
|
340
|
+
- Before playback if URIs are expired
|
|
341
|
+
|
|
342
|
+
The plugin monitors audio blocks in your scene and refreshes expired Soundstripe URIs automatically. No additional configuration is required—this functionality works out of the box.
|
|
343
|
+
|
|
344
|
+
## Manual URI Refresh
|
|
345
|
+
|
|
346
|
+
In some cases, you may need to manually trigger a URI refresh. The plugin exports a `refreshSoundstripeAudioURIs()` utility function for this purpose:
|
|
347
|
+
|
|
348
|
+
```typescript highlight-uri-refresh-example
|
|
349
|
+
// Example: Manual URI refresh utility
|
|
350
|
+
// This is useful if you need to manually refresh expired URIs
|
|
351
|
+
// The plugin handles automatic refresh during scene loading and playback
|
|
352
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
353
|
+
const handleManualRefresh = async () => {
|
|
354
|
+
await refreshSoundstripeAudioURIs(engine, { baseUrl: proxyUrl });
|
|
355
|
+
};
|
|
356
|
+
|
|
357
|
+
// You can call this function when needed
|
|
358
|
+
// For example, when loading a scene or before playback
|
|
359
|
+
// handleManualRefresh();
|
|
360
|
+
```
|
|
361
|
+
|
|
362
|
+
This function scans all audio blocks in the current scene, identifies Soundstripe audio tracks with expired URIs, and refreshes them using the configured API key or proxy server. You can call this function when loading a scene from storage, before starting video playback, or when users report audio playback issues.
|
|
363
|
+
|
|
364
|
+
## Setting Up a Proxy Server
|
|
365
|
+
|
|
366
|
+
For production environments, you should set up a proxy server to handle Soundstripe API requests securely. Follow [Soundstripe's integration guide](https://docs.soundstripe.com/docs/integrating-soundstripes-content-into-your-application) for detailed proxy setup instructions.
|
|
367
|
+
|
|
368
|
+
Here's an example Node.js Express endpoint for creating your own proxy:
|
|
369
|
+
|
|
370
|
+
```javascript
|
|
371
|
+
// Example Node.js proxy endpoint
|
|
372
|
+
app.use('/api/soundstripe', async (req, res) => {
|
|
373
|
+
const response = await fetch(`https://api.soundstripe.com/v1${req.path}`, {
|
|
374
|
+
headers: {
|
|
375
|
+
Authorization: `Bearer ${process.env.SOUNDSTRIPE_API_KEY}`,
|
|
376
|
+
Accept: 'application/vnd.api+json',
|
|
377
|
+
'Content-Type': 'application/vnd.api+json'
|
|
378
|
+
}
|
|
379
|
+
});
|
|
380
|
+
|
|
381
|
+
const data = await response.json();
|
|
382
|
+
res.json(data);
|
|
383
|
+
});
|
|
384
|
+
```
|
|
385
|
+
|
|
386
|
+
The proxy server receives requests from your frontend, adds the authentication header with your API key (stored in environment variables), forwards the request to Soundstripe's API, and returns the response to your frontend. Configure your plugin to use your proxy:
|
|
387
|
+
|
|
388
|
+
```typescript
|
|
389
|
+
await cesdk.addPlugin(
|
|
390
|
+
SoundstripePlugin({
|
|
391
|
+
baseUrl: 'https://your-domain.com/api/soundstripe'
|
|
392
|
+
})
|
|
393
|
+
);
|
|
394
|
+
```
|
|
395
|
+
|
|
396
|
+
## Searching and Browsing Audio
|
|
397
|
+
|
|
398
|
+
Once configured, the plugin automatically handles search queries through the asset panel. Users can search for audio tracks by keywords, and the plugin fetches results from Soundstripe's API. The plugin manages pagination, filtering, and all API interactions behind the scenes.
|
|
399
|
+
|
|
400
|
+
## Adding Audio to Scenes
|
|
401
|
+
|
|
402
|
+
To add Soundstripe audio tracks to the scene programmatically, use `engine.asset.apply()`:
|
|
403
|
+
|
|
404
|
+
```typescript
|
|
405
|
+
const sourceId = 'ly.img.audio.soundstripe';
|
|
406
|
+
const assets = await engine.asset.findAssets(sourceId, {
|
|
407
|
+
page: 0,
|
|
408
|
+
perPage: 10
|
|
409
|
+
});
|
|
410
|
+
|
|
411
|
+
if (assets.assets.length > 0) {
|
|
412
|
+
const audioBlock = await engine.asset.apply(sourceId, assets.assets[0]);
|
|
413
|
+
// The audio block is now added to the scene
|
|
414
|
+
}
|
|
415
|
+
```
|
|
416
|
+
|
|
417
|
+
The plugin ensures URIs are fresh before adding audio to the scene.
|
|
418
|
+
|
|
419
|
+
## Retrieving Song IDs
|
|
420
|
+
|
|
421
|
+
When users add Soundstripe songs, the plugin stores the song ID as metadata. You can retrieve these IDs programmatically (e.g., during export). This is useful when you need to pass the song ID through the Soundstripe API to generate a code for YouTube video captions or descriptions before publishing:
|
|
422
|
+
|
|
423
|
+
```typescript
|
|
424
|
+
const audioBlocks = cesdk.engine.block.findByType('audio');
|
|
425
|
+
|
|
426
|
+
audioBlocks.forEach((blockId) => {
|
|
427
|
+
const songId = cesdk.engine.block.getMetadata(
|
|
428
|
+
blockId,
|
|
429
|
+
'ly.img.audio.soundstripe.songId'
|
|
430
|
+
);
|
|
431
|
+
|
|
432
|
+
if (songId) {
|
|
433
|
+
console.log('Soundstripe Song ID:', songId);
|
|
434
|
+
// Use this songId with Soundstripe API to generate YouTube attribution codes
|
|
435
|
+
}
|
|
436
|
+
});
|
|
437
|
+
```
|
|
438
|
+
|
|
439
|
+
The song ID is stored using the metadata key `'ly.img.audio.soundstripe.songId'` and can be retrieved at any time after the audio has been added to the scene. This allows you to integrate with Soundstripe's attribution API or include required attribution information in your exported content.
|
|
440
|
+
|
|
441
|
+
## Testing the Integration
|
|
442
|
+
|
|
443
|
+
Test both search functionality and audio browsing through the asset library panel:
|
|
444
|
+
|
|
445
|
+
1. Open the audio asset library panel in CE.SDK
|
|
446
|
+
2. Navigate to the Soundstripe source
|
|
447
|
+
3. Search for audio tracks by keyword
|
|
448
|
+
4. Preview audio tracks in the panel
|
|
449
|
+
5. Add an audio track to the scene
|
|
450
|
+
6. Verify the audio plays correctly
|
|
451
|
+
|
|
452
|
+
If the audio asset library doesn't show Soundstripe, verify the source ID was added correctly using `getAssetLibraryEntry()`.
|
|
453
|
+
|
|
454
|
+
## Troubleshooting
|
|
455
|
+
|
|
456
|
+
Common issues and solutions:
|
|
457
|
+
|
|
458
|
+
**API authentication errors**: Verify your API key is correct or that your proxy server URL is accessible and properly configured.
|
|
459
|
+
|
|
460
|
+
**Plugin not registering the asset source**: Check that the plugin configuration includes either `apiKey` or `baseUrl`. Verify the plugin was added using `cesdk.addPlugin()` before trying to use the source.
|
|
461
|
+
|
|
462
|
+
**Audio not playing**: Check that URIs haven't expired. Call `refreshSoundstripeAudioURIs()` manually to refresh them. Verify the Soundstripe API is accessible from your environment.
|
|
463
|
+
|
|
464
|
+
**Proxy server CORS issues**: Ensure your proxy server includes proper CORS headers. Add `Access-Control-Allow-Origin` headers to your proxy responses.
|
|
465
|
+
|
|
466
|
+
**Missing audio tracks in asset library**: Verify the Soundstripe source ID (`ly.img.audio.soundstripe`) was added to the audio entry's `sourceIds` array using `updateAssetLibraryEntry()`.
|
|
467
|
+
|
|
468
|
+
## API Reference
|
|
469
|
+
|
|
470
|
+
| Method | Category | Purpose |
|
|
471
|
+
| ------------------------------------ | -------- | -------------------------------------------------- |
|
|
472
|
+
| `cesdk.addPlugin()` | Plugin | Add the Soundstripe plugin to CE.SDK |
|
|
473
|
+
| `engine.asset.findAllSources()` | Asset | List all registered asset sources |
|
|
474
|
+
| `cesdk.ui.getAssetLibraryEntry()` | UI | Get asset library entry configuration |
|
|
475
|
+
| `cesdk.ui.updateAssetLibraryEntry()` | UI | Update asset library entry with Soundstripe source |
|
|
476
|
+
| `engine.asset.apply()` | Asset | Add Soundstripe audio to the scene |
|
|
477
|
+
| `engine.block.findByType()` | Block | Find blocks by type (e.g., audio blocks) |
|
|
478
|
+
| `engine.block.getMetadata()` | Block | Retrieve metadata from a block (e.g., song ID) |
|
|
479
|
+
| `refreshSoundstripeAudioURIs()` | Utility | Manually refresh expired audio URIs |
|
|
480
|
+
|
|
481
|
+
## Next Steps
|
|
482
|
+
|
|
483
|
+
- [Customize Asset Library](./import-media/asset-panel/customize.md) — Configure asset panels and
|
|
484
|
+
UI
|
|
485
|
+
- [Asset Library Basics](./import-media/asset-panel/basics.md) — Understand asset sources
|
|
486
|
+
- [Integrate Unsplash Images](./import-media/from-remote-source/unsplash.md) — Add stock image sources
|
|
487
|
+
- [IMG.LY Premium Assets](./import-media/from-remote-source/imgly-premium-assets.md) — Access premium stock content
|
|
488
|
+
- [Import Media Concepts](./import-media/concepts.md) — Learn core import concepts
|
|
489
|
+
|
|
490
|
+
---
|
|
491
|
+
|
|
492
|
+
## More Resources
|
|
493
|
+
|
|
494
|
+
- **[Vanilla JS/TS Documentation Index](https://img.ly/docs/cesdk/js.md)** - Browse all Vanilla JS/TS documentation
|
|
495
|
+
- **[Complete Documentation](./llms-full.txt.md)** - Full documentation in one file (for LLMs)
|
|
496
|
+
- **[Web Documentation](./js.md)** - Interactive documentation with examples
|
|
497
|
+
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
|
|
@@ -0,0 +1,51 @@
|
|
|
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) > [Import Media Assets](./import-media.md) > [Import From Remote Source](./import-media/from-remote-source.md) > [From Third-Party](./import-media/from-remote-source/third-party.md)
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
CE.SDK makes it easy to integrate any third-party API using the custom asset
|
|
8
|
+
source mechanism, allowing you to import media directly into your creative
|
|
9
|
+
applications.
|
|
10
|
+
|
|
11
|
+
## Custom Asset Sources
|
|
12
|
+
|
|
13
|
+
CE.SDK's asset source system provides a flexible way to connect to any third-party API. Whether you're working with stock images, audio libraries, or custom data sources, the asset source mechanism handles search, pagination, and asset management automatically. The system works with any REST API, giving you complete control over how media is fetched and displayed.
|
|
14
|
+
|
|
15
|
+
## Available Integration Examples
|
|
16
|
+
|
|
17
|
+
We've created detailed implementation guides for popular third-party services that demonstrate how to build custom asset sources:
|
|
18
|
+
|
|
19
|
+
### Stock Images
|
|
20
|
+
|
|
21
|
+
- **[Unsplash](./import-media/from-remote-source/unsplash.md)** - High-quality royalty-free photos with powerful search capabilities
|
|
22
|
+
- **[Pexels](./import-media/from-remote-source/pexels.md)** - Royalty-free stock photography with curated collections
|
|
23
|
+
- **[Getty Images](./import-media/from-remote-source/getty-images.md)** - Premium stock photography using a secure proxy server architecture
|
|
24
|
+
|
|
25
|
+
### Audio Libraries
|
|
26
|
+
|
|
27
|
+
- **[Soundstripe](./import-media/from-remote-source/soundstripe.md)** - Royalty-free music and audio tracks for video projects
|
|
28
|
+
|
|
29
|
+
Each guide includes working code examples, API authentication setup, and best practices for integrating that specific service.
|
|
30
|
+
|
|
31
|
+
## Common Integration Patterns
|
|
32
|
+
|
|
33
|
+
Most third-party integrations share similar patterns:
|
|
34
|
+
|
|
35
|
+
- **Search functionality** - Enable users to search the third-party library
|
|
36
|
+
- **Pagination** - Handle large result sets with infinite scroll or page-based navigation
|
|
37
|
+
- **Asset preview** - Display thumbnails and metadata before importing
|
|
38
|
+
- **Authentication** - Manage API keys securely (client-side or via proxy server)
|
|
39
|
+
|
|
40
|
+
## Next Steps
|
|
41
|
+
|
|
42
|
+
Choose the integration guide that matches your needs to see a complete implementation. The patterns shown in these guides can be adapted to integrate virtually any third-party API into CE.SDK.
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## More Resources
|
|
47
|
+
|
|
48
|
+
- **[Vanilla JS/TS Documentation Index](https://img.ly/docs/cesdk/js.md)** - Browse all Vanilla JS/TS documentation
|
|
49
|
+
- **[Complete Documentation](./llms-full.txt.md)** - Full documentation in one file (for LLMs)
|
|
50
|
+
- **[Web Documentation](./js.md)** - Interactive documentation with examples
|
|
51
|
+
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
|