@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.
Files changed (816) hide show
  1. package/LICENSE.md +16 -0
  2. package/README.md +158 -0
  3. package/assets/docs/api/SKILL.md +49 -0
  4. package/assets/docs/api/index.d.ts +10518 -0
  5. package/assets/docs/guide/SKILL.md +142 -0
  6. package/assets/docs/guide/actions.md +1038 -0
  7. package/assets/docs/guide/animation/create/base.md +467 -0
  8. package/assets/docs/guide/animation/create/text.md +453 -0
  9. package/assets/docs/guide/animation/create.md +558 -0
  10. package/assets/docs/guide/animation/edit.md +501 -0
  11. package/assets/docs/guide/animation/overview.md +22 -0
  12. package/assets/docs/guide/animation/types.md +430 -0
  13. package/assets/docs/guide/animation.md +23 -0
  14. package/assets/docs/guide/api/AssetAPI.md +602 -0
  15. package/assets/docs/guide/api/BlockAPI.md +6152 -0
  16. package/assets/docs/guide/api/CreativeEngine.md +180 -0
  17. package/assets/docs/guide/api/EditorAPI.md +1261 -0
  18. package/assets/docs/guide/api/EventAPI.md +25 -0
  19. package/assets/docs/guide/api/SceneAPI.md +729 -0
  20. package/assets/docs/guide/api/VariableAPI.md +59 -0
  21. package/assets/docs/guide/api/types.md +71 -0
  22. package/assets/docs/guide/api-reference/overview.md +20 -0
  23. package/assets/docs/guide/automation/auto-resize.md +412 -0
  24. package/assets/docs/guide/automation/batch-processing.md +474 -0
  25. package/assets/docs/guide/automation/data-merge.md +406 -0
  26. package/assets/docs/guide/automation/design-generation.md +107 -0
  27. package/assets/docs/guide/automation/overview.md +16 -0
  28. package/assets/docs/guide/automation.md +24 -0
  29. package/assets/docs/guide/browser-support.md +38 -0
  30. package/assets/docs/guide/capabilities.md +18 -0
  31. package/assets/docs/guide/colors/adjust.md +551 -0
  32. package/assets/docs/guide/colors/apply.md +349 -0
  33. package/assets/docs/guide/colors/basics.md +440 -0
  34. package/assets/docs/guide/colors/conversion.md +504 -0
  35. package/assets/docs/guide/colors/create-color-palette.md +426 -0
  36. package/assets/docs/guide/colors/for-print/cmyk.md +577 -0
  37. package/assets/docs/guide/colors/for-print/spot.md +751 -0
  38. package/assets/docs/guide/colors/for-print.md +21 -0
  39. package/assets/docs/guide/colors/for-screen/p3.md +60 -0
  40. package/assets/docs/guide/colors/for-screen/srgb.md +463 -0
  41. package/assets/docs/guide/colors/for-screen.md +21 -0
  42. package/assets/docs/guide/colors/overview.md +20 -0
  43. package/assets/docs/guide/colors/replace.md +535 -0
  44. package/assets/docs/guide/colors.md +28 -0
  45. package/assets/docs/guide/compatibility.md +27 -0
  46. package/assets/docs/guide/concepts/architecture.md +99 -0
  47. package/assets/docs/guide/concepts/assets.md +360 -0
  48. package/assets/docs/guide/concepts/blocks.md +750 -0
  49. package/assets/docs/guide/concepts/buffers.md +546 -0
  50. package/assets/docs/guide/concepts/design-units.md +333 -0
  51. package/assets/docs/guide/concepts/edit-modes.md +431 -0
  52. package/assets/docs/guide/concepts/editing-workflow.md +303 -0
  53. package/assets/docs/guide/concepts/events.md +466 -0
  54. package/assets/docs/guide/concepts/headless-mode/browser.md +291 -0
  55. package/assets/docs/guide/concepts/pages.md +396 -0
  56. package/assets/docs/guide/concepts/resources.md +496 -0
  57. package/assets/docs/guide/concepts/scenes.md +443 -0
  58. package/assets/docs/guide/concepts/templating.md +194 -0
  59. package/assets/docs/guide/concepts/terminology.md +296 -0
  60. package/assets/docs/guide/concepts/undo-and-history.md +461 -0
  61. package/assets/docs/guide/concepts.md +38 -0
  62. package/assets/docs/guide/configuration.md +469 -0
  63. package/assets/docs/guide/conversion/overview.md +22 -0
  64. package/assets/docs/guide/conversion/to-base64.md +234 -0
  65. package/assets/docs/guide/conversion/to-pdf.md +616 -0
  66. package/assets/docs/guide/conversion/to-png.md +290 -0
  67. package/assets/docs/guide/conversion.md +23 -0
  68. package/assets/docs/guide/create-audio/audio/add-music.md +430 -0
  69. package/assets/docs/guide/create-audio/audio/add-sound-effects.md +664 -0
  70. package/assets/docs/guide/create-audio/audio/loop.md +370 -0
  71. package/assets/docs/guide/create-audio/audio.md +336 -0
  72. package/assets/docs/guide/create-composition/add-background.md +395 -0
  73. package/assets/docs/guide/create-composition/blend-modes.md +372 -0
  74. package/assets/docs/guide/create-composition/collage.md +432 -0
  75. package/assets/docs/guide/create-composition/group-and-ungroup.md +388 -0
  76. package/assets/docs/guide/create-composition/layer-management.md +503 -0
  77. package/assets/docs/guide/create-composition/layout.md +396 -0
  78. package/assets/docs/guide/create-composition/lock-design.md +362 -0
  79. package/assets/docs/guide/create-composition/multi-page.md +204 -0
  80. package/assets/docs/guide/create-composition/overview.md +18 -0
  81. package/assets/docs/guide/create-composition/programmatic.md +593 -0
  82. package/assets/docs/guide/create-composition.md +30 -0
  83. package/assets/docs/guide/create-templates/add-dynamic-content/placeholders.md +688 -0
  84. package/assets/docs/guide/create-templates/add-dynamic-content/set-editing-constraints.md +600 -0
  85. package/assets/docs/guide/create-templates/add-dynamic-content/text-variables.md +647 -0
  86. package/assets/docs/guide/create-templates/add-dynamic-content.md +307 -0
  87. package/assets/docs/guide/create-templates/add-to-template-library.md +297 -0
  88. package/assets/docs/guide/create-templates/edit-or-remove.md +441 -0
  89. package/assets/docs/guide/create-templates/from-scratch.md +558 -0
  90. package/assets/docs/guide/create-templates/import/from-scene-file.md +440 -0
  91. package/assets/docs/guide/create-templates/import.md +244 -0
  92. package/assets/docs/guide/create-templates/lock.md +325 -0
  93. package/assets/docs/guide/create-templates/overview.md +16 -0
  94. package/assets/docs/guide/create-templates.md +32 -0
  95. package/assets/docs/guide/create-video/audio/adjust-speed.md +302 -0
  96. package/assets/docs/guide/create-video/audio/adjust-volume.md +346 -0
  97. package/assets/docs/guide/create-video/control.md +285 -0
  98. package/assets/docs/guide/create-video/limitations.md +396 -0
  99. package/assets/docs/guide/create-video/overview.md +224 -0
  100. package/assets/docs/guide/create-video/timeline-editor.md +622 -0
  101. package/assets/docs/guide/create-video/update-caption-presets.md +676 -0
  102. package/assets/docs/guide/create-video.md +32 -0
  103. package/assets/docs/guide/edit-image/add-watermark.md +497 -0
  104. package/assets/docs/guide/edit-image/overview.md +22 -0
  105. package/assets/docs/guide/edit-image/remove-bg.md +420 -0
  106. package/assets/docs/guide/edit-image/replace-colors.md +680 -0
  107. package/assets/docs/guide/edit-image/transform/crop.md +523 -0
  108. package/assets/docs/guide/edit-image/transform/move.md +279 -0
  109. package/assets/docs/guide/edit-image/transform/resize.md +301 -0
  110. package/assets/docs/guide/edit-image/transform/rotate.md +408 -0
  111. package/assets/docs/guide/edit-image/transform/scale.md +278 -0
  112. package/assets/docs/guide/edit-image/transform.md +24 -0
  113. package/assets/docs/guide/edit-image/vectorize.md +204 -0
  114. package/assets/docs/guide/edit-image.md +25 -0
  115. package/assets/docs/guide/edit-video/add-captions.md +589 -0
  116. package/assets/docs/guide/edit-video/add-watermark.md +429 -0
  117. package/assets/docs/guide/edit-video/join-and-arrange.md +540 -0
  118. package/assets/docs/guide/edit-video/redaction.md +544 -0
  119. package/assets/docs/guide/edit-video/split.md +634 -0
  120. package/assets/docs/guide/edit-video/transform/crop.md +380 -0
  121. package/assets/docs/guide/edit-video/transform/flip.md +182 -0
  122. package/assets/docs/guide/edit-video/transform/move.md +413 -0
  123. package/assets/docs/guide/edit-video/transform/resize.md +534 -0
  124. package/assets/docs/guide/edit-video/transform/rotate.md +312 -0
  125. package/assets/docs/guide/edit-video/transform/scale.md +603 -0
  126. package/assets/docs/guide/edit-video/transform.md +25 -0
  127. package/assets/docs/guide/edit-video/trim.md +773 -0
  128. package/assets/docs/guide/engine-interface.md +108 -0
  129. package/assets/docs/guide/export-save-publish/create-thumbnail.md +292 -0
  130. package/assets/docs/guide/export-save-publish/export/compress.md +639 -0
  131. package/assets/docs/guide/export-save-publish/export/overview.md +576 -0
  132. package/assets/docs/guide/export-save-publish/export/partial-export.md +694 -0
  133. package/assets/docs/guide/export-save-publish/export/size-limits.md +401 -0
  134. package/assets/docs/guide/export-save-publish/export/to-html5.md +474 -0
  135. package/assets/docs/guide/export-save-publish/export/to-jpeg.md +312 -0
  136. package/assets/docs/guide/export-save-publish/export/to-mp4.md +364 -0
  137. package/assets/docs/guide/export-save-publish/export/to-pdf.md +389 -0
  138. package/assets/docs/guide/export-save-publish/export/to-png.md +255 -0
  139. package/assets/docs/guide/export-save-publish/export/to-raw-data.md +303 -0
  140. package/assets/docs/guide/export-save-publish/export/to-webp.md +261 -0
  141. package/assets/docs/guide/export-save-publish/export/with-color-mask.md +278 -0
  142. package/assets/docs/guide/export-save-publish/export.md +36 -0
  143. package/assets/docs/guide/export-save-publish/for-printing.md +423 -0
  144. package/assets/docs/guide/export-save-publish/for-social-media.md +318 -0
  145. package/assets/docs/guide/export-save-publish/pre-export-validation.md +698 -0
  146. package/assets/docs/guide/export-save-publish/save.md +340 -0
  147. package/assets/docs/guide/export-save-publish/store-custom-metadata.md +367 -0
  148. package/assets/docs/guide/file-format-support.md +34 -0
  149. package/assets/docs/guide/fills/color.md +678 -0
  150. package/assets/docs/guide/fills/image.md +539 -0
  151. package/assets/docs/guide/fills/overview.md +144 -0
  152. package/assets/docs/guide/fills/video.md +641 -0
  153. package/assets/docs/guide/fills.md +24 -0
  154. package/assets/docs/guide/filters-and-effects/apply.md +1019 -0
  155. package/assets/docs/guide/filters-and-effects/blur.md +382 -0
  156. package/assets/docs/guide/filters-and-effects/chroma-key-green-screen.md +445 -0
  157. package/assets/docs/guide/filters-and-effects/create-custom-filters.md +614 -0
  158. package/assets/docs/guide/filters-and-effects/create-custom-lut-filter.md +426 -0
  159. package/assets/docs/guide/filters-and-effects/distortion.md +527 -0
  160. package/assets/docs/guide/filters-and-effects/duotone.md +602 -0
  161. package/assets/docs/guide/filters-and-effects/gradients.md +1311 -0
  162. package/assets/docs/guide/filters-and-effects/overview.md +22 -0
  163. package/assets/docs/guide/filters-and-effects/support.md +623 -0
  164. package/assets/docs/guide/filters-and-effects.md +28 -0
  165. package/assets/docs/guide/get-started/agent-skills.md +119 -0
  166. package/assets/docs/guide/get-started/build-with-ai.md +45 -0
  167. package/assets/docs/guide/get-started/mcp-server.md +119 -0
  168. package/assets/docs/guide/get-started/overview.md +28 -0
  169. package/assets/docs/guide/get-started/vanilla-js/quickstart.md +175 -0
  170. package/assets/docs/guide/grid-and-rulers.md +222 -0
  171. package/assets/docs/guide/guides/export-save-publish/export/audio.md +224 -0
  172. package/assets/docs/guide/guides/text/rendering-internals.md +796 -0
  173. package/assets/docs/guide/guides.md +49 -0
  174. package/assets/docs/guide/import-media/asset-library.md +23 -0
  175. package/assets/docs/guide/import-media/asset-panel/basics.md +324 -0
  176. package/assets/docs/guide/import-media/asset-panel/customize.md +478 -0
  177. package/assets/docs/guide/import-media/asset-panel/refresh-assets.md +415 -0
  178. package/assets/docs/guide/import-media/asset-panel/thumbnails.md +633 -0
  179. package/assets/docs/guide/import-media/capture-from-camera/record-video.md +137 -0
  180. package/assets/docs/guide/import-media/capture-from-camera.md +20 -0
  181. package/assets/docs/guide/import-media/concepts.md +173 -0
  182. package/assets/docs/guide/import-media/content-json-schema.md +615 -0
  183. package/assets/docs/guide/import-media/default-assets.md +381 -0
  184. package/assets/docs/guide/import-media/edit-or-remove-assets.md +489 -0
  185. package/assets/docs/guide/import-media/file-format-support.md +178 -0
  186. package/assets/docs/guide/import-media/from-local-source/user-upload.md +438 -0
  187. package/assets/docs/guide/import-media/from-local-source.md +20 -0
  188. package/assets/docs/guide/import-media/from-remote-source/asset-versioning.md +390 -0
  189. package/assets/docs/guide/import-media/from-remote-source/getty-images.md +627 -0
  190. package/assets/docs/guide/import-media/from-remote-source/imgly-premium-assets.md +625 -0
  191. package/assets/docs/guide/import-media/from-remote-source/pexels.md +692 -0
  192. package/assets/docs/guide/import-media/from-remote-source/remote-asset.md +473 -0
  193. package/assets/docs/guide/import-media/from-remote-source/soundstripe.md +497 -0
  194. package/assets/docs/guide/import-media/from-remote-source/third-party.md +51 -0
  195. package/assets/docs/guide/import-media/from-remote-source/unsplash.md +914 -0
  196. package/assets/docs/guide/import-media/from-remote-source/your-server.md +764 -0
  197. package/assets/docs/guide/import-media/from-remote-source.md +28 -0
  198. package/assets/docs/guide/import-media/overview.md +32 -0
  199. package/assets/docs/guide/import-media/retrieve-mimetype.md +274 -0
  200. package/assets/docs/guide/import-media/size-limits.md +20 -0
  201. package/assets/docs/guide/import-media/source-sets.md +476 -0
  202. package/assets/docs/guide/import-media.md +32 -0
  203. package/assets/docs/guide/insert-media/audio.md +291 -0
  204. package/assets/docs/guide/insert-media/images.md +380 -0
  205. package/assets/docs/guide/insert-media/position-and-align.md +734 -0
  206. package/assets/docs/guide/insert-media/shapes-or-stickers.md +799 -0
  207. package/assets/docs/guide/insert-media/videos.md +308 -0
  208. package/assets/docs/guide/insert-media.md +24 -0
  209. package/assets/docs/guide/key-capabilities.md +24 -0
  210. package/assets/docs/guide/key-concepts.md +83 -0
  211. package/assets/docs/guide/licensing.md +45 -0
  212. package/assets/docs/guide/llms-txt.md +53 -0
  213. package/assets/docs/guide/open-the-editor/blank-canvas.md +124 -0
  214. package/assets/docs/guide/open-the-editor/from-htmlcanvas.md +228 -0
  215. package/assets/docs/guide/open-the-editor/from-image.md +205 -0
  216. package/assets/docs/guide/open-the-editor/from-template.md +189 -0
  217. package/assets/docs/guide/open-the-editor/from-video.md +274 -0
  218. package/assets/docs/guide/open-the-editor/import-design/from-archive.md +504 -0
  219. package/assets/docs/guide/open-the-editor/import-design/from-indesign.md +680 -0
  220. package/assets/docs/guide/open-the-editor/import-design/from-photoshop.md +865 -0
  221. package/assets/docs/guide/open-the-editor/import-design.md +481 -0
  222. package/assets/docs/guide/open-the-editor/load-scene.md +178 -0
  223. package/assets/docs/guide/open-the-editor/overview.md +20 -0
  224. package/assets/docs/guide/open-the-editor/set-zoom-level.md +303 -0
  225. package/assets/docs/guide/open-the-editor/uri-resolver.md +347 -0
  226. package/assets/docs/guide/open-the-editor.md +29 -0
  227. package/assets/docs/guide/outlines/overview.md +14 -0
  228. package/assets/docs/guide/outlines/shadows-and-glows.md +515 -0
  229. package/assets/docs/guide/outlines/strokes.md +292 -0
  230. package/assets/docs/guide/outlines.md +22 -0
  231. package/assets/docs/guide/overview.md +22 -0
  232. package/assets/docs/guide/performance.md +217 -0
  233. package/assets/docs/guide/plugins/asset-sources.md +553 -0
  234. package/assets/docs/guide/plugins/print-ready-pdf.md +549 -0
  235. package/assets/docs/guide/plugins.md +36 -0
  236. package/assets/docs/guide/rules/asset-handling.md +180 -0
  237. package/assets/docs/guide/rules/common-pitfalls.md +272 -0
  238. package/assets/docs/guide/rules/content-fill-mode.md +29 -0
  239. package/assets/docs/guide/rules/enforce-brand-guidelines.md +672 -0
  240. package/assets/docs/guide/rules/lock-content.md +478 -0
  241. package/assets/docs/guide/rules/moderate-content.md +761 -0
  242. package/assets/docs/guide/rules/overview.md +514 -0
  243. package/assets/docs/guide/rules/silent-init-errors.md +137 -0
  244. package/assets/docs/guide/rules/verify-properties-before-use.md +78 -0
  245. package/assets/docs/guide/rules.md +23 -0
  246. package/assets/docs/guide/security.md +199 -0
  247. package/assets/docs/guide/serve-assets.md +332 -0
  248. package/assets/docs/guide/settings.md +199 -0
  249. package/assets/docs/guide/shapes.md +23 -0
  250. package/assets/docs/guide/starterkits/3d-mockup-editor.md +748 -0
  251. package/assets/docs/guide/starterkits/advanced-editor.md +698 -0
  252. package/assets/docs/guide/starterkits/advanced-video-editor.md +696 -0
  253. package/assets/docs/guide/starterkits/ai-editor.md +749 -0
  254. package/assets/docs/guide/starterkits/airtable-image-editor.md +672 -0
  255. package/assets/docs/guide/starterkits/apparel-ui.md +188 -0
  256. package/assets/docs/guide/starterkits/assets.md +27 -0
  257. package/assets/docs/guide/starterkits/auto-resize.md +586 -0
  258. package/assets/docs/guide/starterkits/automated-video-generation.md +692 -0
  259. package/assets/docs/guide/starterkits/background-removal-editor.md +480 -0
  260. package/assets/docs/guide/starterkits/content-moderation.md +863 -0
  261. package/assets/docs/guide/starterkits/creative-automation.md +28 -0
  262. package/assets/docs/guide/starterkits/custom-built-uis.md +26 -0
  263. package/assets/docs/guide/starterkits/customization.md +29 -0
  264. package/assets/docs/guide/starterkits/cutout-lines-editor.md +470 -0
  265. package/assets/docs/guide/starterkits/data-merge.md +850 -0
  266. package/assets/docs/guide/starterkits/design-editor.md +698 -0
  267. package/assets/docs/guide/starterkits/design-generation.md +719 -0
  268. package/assets/docs/guide/starterkits/design-validation.md +808 -0
  269. package/assets/docs/guide/starterkits/editor-ui-configurations.md +14 -0
  270. package/assets/docs/guide/starterkits/export-options.md +724 -0
  271. package/assets/docs/guide/starterkits/export-using-renderer.md +708 -0
  272. package/assets/docs/guide/starterkits/extensibility.md +28 -0
  273. package/assets/docs/guide/starterkits/force-crop-editor.md +675 -0
  274. package/assets/docs/guide/starterkits/form-based-template-adoption.md +522 -0
  275. package/assets/docs/guide/starterkits/getty-images-editor.md +700 -0
  276. package/assets/docs/guide/starterkits/html5-ads-exporter.md +719 -0
  277. package/assets/docs/guide/starterkits/indesign-template-import.md +580 -0
  278. package/assets/docs/guide/starterkits/layouts-editor.md +724 -0
  279. package/assets/docs/guide/starterkits/mobile-ui.md +185 -0
  280. package/assets/docs/guide/starterkits/mockup-editor.md +745 -0
  281. package/assets/docs/guide/starterkits/multi-image-generation.md +542 -0
  282. package/assets/docs/guide/starterkits/page-sizes-editor.md +657 -0
  283. package/assets/docs/guide/starterkits/pexels-image-editor.md +665 -0
  284. package/assets/docs/guide/starterkits/photo-editor.md +755 -0
  285. package/assets/docs/guide/starterkits/photo-ui.md +186 -0
  286. package/assets/docs/guide/starterkits/photobook-ui.md +188 -0
  287. package/assets/docs/guide/starterkits/placeholders.md +678 -0
  288. package/assets/docs/guide/starterkits/player.md +405 -0
  289. package/assets/docs/guide/starterkits/plugins.md +25 -0
  290. package/assets/docs/guide/starterkits/postcard-editor.md +202 -0
  291. package/assets/docs/guide/starterkits/pptx-template-import.md +581 -0
  292. package/assets/docs/guide/starterkits/print-ready-pdf-editor.md +746 -0
  293. package/assets/docs/guide/starterkits/product-editor.md +773 -0
  294. package/assets/docs/guide/starterkits/psd-template-import.md +580 -0
  295. package/assets/docs/guide/starterkits/qr-code-editor.md +470 -0
  296. package/assets/docs/guide/starterkits/single-page-editor.md +661 -0
  297. package/assets/docs/guide/starterkits/start-with-image.md +684 -0
  298. package/assets/docs/guide/starterkits/start-with-video.md +651 -0
  299. package/assets/docs/guide/starterkits/t-shirt-designer.md +742 -0
  300. package/assets/docs/guide/starterkits/templating.md +23 -0
  301. package/assets/docs/guide/starterkits/theming.md +662 -0
  302. package/assets/docs/guide/starterkits/translation-internationalization.md +662 -0
  303. package/assets/docs/guide/starterkits/unsplash-editor.md +839 -0
  304. package/assets/docs/guide/starterkits/vectorizer-editor.md +466 -0
  305. package/assets/docs/guide/starterkits/version-history.md +745 -0
  306. package/assets/docs/guide/starterkits/video-animations.md +853 -0
  307. package/assets/docs/guide/starterkits/video-captions.md +884 -0
  308. package/assets/docs/guide/starterkits/video-editing.md +25 -0
  309. package/assets/docs/guide/starterkits/video-editor.md +696 -0
  310. package/assets/docs/guide/starterkits/video-export-options.md +676 -0
  311. package/assets/docs/guide/starterkits/viewer.md +400 -0
  312. package/assets/docs/guide/starterkits.md +41 -0
  313. package/assets/docs/guide/stickers-and-shapes/combine.md +743 -0
  314. package/assets/docs/guide/stickers-and-shapes/create-cutout.md +425 -0
  315. package/assets/docs/guide/stickers-and-shapes/create-edit/create-shapes.md +794 -0
  316. package/assets/docs/guide/stickers-and-shapes/create-edit/create-stickers.md +290 -0
  317. package/assets/docs/guide/stickers-and-shapes/create-edit/edit-shapes.md +211 -0
  318. package/assets/docs/guide/stickers-and-shapes/create-edit/vector-edit.md +362 -0
  319. package/assets/docs/guide/stickers-and-shapes/insert-qr-code.md +208 -0
  320. package/assets/docs/guide/stickers.md +21 -0
  321. package/assets/docs/guide/text/add.md +641 -0
  322. package/assets/docs/guide/text/adjust-spacing.md +288 -0
  323. package/assets/docs/guide/text/auto-size.md +404 -0
  324. package/assets/docs/guide/text/custom-fonts.md +401 -0
  325. package/assets/docs/guide/text/decorations.md +330 -0
  326. package/assets/docs/guide/text/edit.md +458 -0
  327. package/assets/docs/guide/text/effects.md +244 -0
  328. package/assets/docs/guide/text/emojis.md +310 -0
  329. package/assets/docs/guide/text/enumerations.md +258 -0
  330. package/assets/docs/guide/text/language-support.md +604 -0
  331. package/assets/docs/guide/text/overview.md +14 -0
  332. package/assets/docs/guide/text/styling.md +390 -0
  333. package/assets/docs/guide/text/text-designs.md +834 -0
  334. package/assets/docs/guide/text.md +33 -0
  335. package/assets/docs/guide/to-v1-10.md +131 -0
  336. package/assets/docs/guide/to-v1-13.md +165 -0
  337. package/assets/docs/guide/to-v1-19.md +315 -0
  338. package/assets/docs/guide/to-v1-32.md +110 -0
  339. package/assets/docs/guide/to-v1-69.md +468 -0
  340. package/assets/docs/guide/to-v1-72.md +193 -0
  341. package/assets/docs/guide/upgrade.md +25 -0
  342. package/assets/docs/guide/use-templates/apply-template.md +279 -0
  343. package/assets/docs/guide/use-templates/generate.md +405 -0
  344. package/assets/docs/guide/use-templates/library.md +450 -0
  345. package/assets/docs/guide/use-templates/overview.md +20 -0
  346. package/assets/docs/guide/use-templates/programmatic.md +482 -0
  347. package/assets/docs/guide/use-templates/replace-content.md +399 -0
  348. package/assets/docs/guide/user-interface/ai-integration/audio-generation.md +428 -0
  349. package/assets/docs/guide/user-interface/ai-integration/auto-captions.md +337 -0
  350. package/assets/docs/guide/user-interface/ai-integration/custom-provider.md +853 -0
  351. package/assets/docs/guide/user-interface/ai-integration/gateway-provider.md +1045 -0
  352. package/assets/docs/guide/user-interface/ai-integration/image-generation.md +641 -0
  353. package/assets/docs/guide/user-interface/ai-integration/integrate.md +966 -0
  354. package/assets/docs/guide/user-interface/ai-integration/proxy-server.md +99 -0
  355. package/assets/docs/guide/user-interface/ai-integration/text-generation.md +498 -0
  356. package/assets/docs/guide/user-interface/ai-integration/video-generation.md +493 -0
  357. package/assets/docs/guide/user-interface/ai-integration.md +30 -0
  358. package/assets/docs/guide/user-interface/appearance/change-ui-font.md +316 -0
  359. package/assets/docs/guide/user-interface/appearance/custom-labels.md +509 -0
  360. package/assets/docs/guide/user-interface/appearance/icons.md +373 -0
  361. package/assets/docs/guide/user-interface/appearance/theming.md +665 -0
  362. package/assets/docs/guide/user-interface/appearance.md +23 -0
  363. package/assets/docs/guide/user-interface/build-your-own-ui.md +620 -0
  364. package/assets/docs/guide/user-interface/customization/canvas-menu.md +412 -0
  365. package/assets/docs/guide/user-interface/customization/canvas.md +281 -0
  366. package/assets/docs/guide/user-interface/customization/color-palette.md +413 -0
  367. package/assets/docs/guide/user-interface/customization/crop-presets.md +384 -0
  368. package/assets/docs/guide/user-interface/customization/disable-or-enable.md +676 -0
  369. package/assets/docs/guide/user-interface/customization/dock.md +399 -0
  370. package/assets/docs/guide/user-interface/customization/force-crop.md +289 -0
  371. package/assets/docs/guide/user-interface/customization/inspector-bar.md +371 -0
  372. package/assets/docs/guide/user-interface/customization/navigation-bar.md +516 -0
  373. package/assets/docs/guide/user-interface/customization/page-format.md +436 -0
  374. package/assets/docs/guide/user-interface/customization/panel.md +605 -0
  375. package/assets/docs/guide/user-interface/customization/quick-start/add-action-buttons.md +531 -0
  376. package/assets/docs/guide/user-interface/customization/quick-start/add-dock-buttons.md +358 -0
  377. package/assets/docs/guide/user-interface/customization/quick-start/create-custom-components.md +374 -0
  378. package/assets/docs/guide/user-interface/customization/quick-start/reorder-components.md +323 -0
  379. package/assets/docs/guide/user-interface/customization/quick-start/show-hide-components.md +294 -0
  380. package/assets/docs/guide/user-interface/customization/quick-start.md +12 -0
  381. package/assets/docs/guide/user-interface/customization/reference/component-order-api.md +519 -0
  382. package/assets/docs/guide/user-interface/customization/reference/component-reference.md +333 -0
  383. package/assets/docs/guide/user-interface/customization/reference.md +12 -0
  384. package/assets/docs/guide/user-interface/customization.md +39 -0
  385. package/assets/docs/guide/user-interface/localization.md +633 -0
  386. package/assets/docs/guide/user-interface/overview.md +167 -0
  387. package/assets/docs/guide/user-interface/ui-extensions/add-custom-feature.md +411 -0
  388. package/assets/docs/guide/user-interface/ui-extensions/asset-library.md +721 -0
  389. package/assets/docs/guide/user-interface/ui-extensions/create-custom-panel.md +331 -0
  390. package/assets/docs/guide/user-interface/ui-extensions/customize-behaviour.md +553 -0
  391. package/assets/docs/guide/user-interface/ui-extensions/notifications-and-dialogs.md +672 -0
  392. package/assets/docs/guide/user-interface/ui-extensions/quick-actions.md +415 -0
  393. package/assets/docs/guide/user-interface/ui-extensions/register-new-component.md +521 -0
  394. package/assets/docs/guide/user-interface/ui-extensions.md +26 -0
  395. package/assets/docs/guide/user-interface.md +25 -0
  396. package/assets/docs/guide/what-is-cesdk.md +319 -0
  397. package/assets/docs/handbook/SKILL.md +521 -0
  398. package/assets/prompts/evals-assetGenerate.md +12 -0
  399. package/assets/prompts/evals-brutalistCore.md +34 -0
  400. package/assets/prompts/evals-danskCatalogue.md +31 -0
  401. package/assets/prompts/evals-exportRoundTrip.md +12 -0
  402. package/assets/prompts/evals-inspectPriorCode.md +16 -0
  403. package/assets/prompts/evals-listProjectFiles.md +6 -0
  404. package/assets/prompts/evals-readAndExplainScript.md +6 -0
  405. package/assets/prompts/evals-resumeAcrossRestart.md +15 -0
  406. package/assets/prompts/evals-rewindRecovery.md +10 -0
  407. package/assets/prompts/evals-searchAcrossFiles.md +6 -0
  408. package/assets/prompts/evals-weddingCard.md +20 -0
  409. package/assets/prompts/explain.md +6 -0
  410. package/assets/prompts/review.md +6 -0
  411. package/dist/assets/inline.generated.d.ts +2 -0
  412. package/dist/assets/inline.generated.d.ts.map +1 -0
  413. package/dist/assets/inline.generated.js +413 -0
  414. package/dist/assets/inline.generated.js.map +1 -0
  415. package/dist/assets/load-browser.d.ts +8 -0
  416. package/dist/assets/load-browser.d.ts.map +1 -0
  417. package/dist/assets/load-browser.js +11 -0
  418. package/dist/assets/load-browser.js.map +1 -0
  419. package/dist/assets/load-node.d.ts +8 -0
  420. package/dist/assets/load-node.d.ts.map +1 -0
  421. package/dist/assets/load-node.js +11 -0
  422. package/dist/assets/load-node.js.map +1 -0
  423. package/dist/cli/http.d.ts +2 -0
  424. package/dist/cli/http.d.ts.map +1 -0
  425. package/dist/cli/http.js +231 -0
  426. package/dist/cli/http.js.map +1 -0
  427. package/dist/cli/redirect-console.d.ts +10 -0
  428. package/dist/cli/redirect-console.d.ts.map +1 -0
  429. package/dist/cli/redirect-console.js +18 -0
  430. package/dist/cli/redirect-console.js.map +1 -0
  431. package/dist/cli/resolve-license.d.ts +2 -0
  432. package/dist/cli/resolve-license.d.ts.map +1 -0
  433. package/dist/cli/resolve-license.js +13 -0
  434. package/dist/cli/resolve-license.js.map +1 -0
  435. package/dist/cli/stdio.d.ts +2 -0
  436. package/dist/cli/stdio.d.ts.map +1 -0
  437. package/dist/cli/stdio.js +124 -0
  438. package/dist/cli/stdio.js.map +1 -0
  439. package/dist/cli/trial-license.generated.d.ts +2 -0
  440. package/dist/cli/trial-license.generated.d.ts.map +1 -0
  441. package/dist/cli/trial-license.generated.js +4 -0
  442. package/dist/cli/trial-license.generated.js.map +1 -0
  443. package/dist/cli.d.ts +3 -0
  444. package/dist/cli.d.ts.map +1 -0
  445. package/dist/cli.js +64 -0
  446. package/dist/cli.js.map +1 -0
  447. package/dist/config.d.ts +61 -0
  448. package/dist/config.d.ts.map +1 -0
  449. package/dist/config.js +102 -0
  450. package/dist/config.js.map +1 -0
  451. package/dist/cross-ref.d.ts +2 -0
  452. package/dist/cross-ref.d.ts.map +1 -0
  453. package/dist/cross-ref.js +31 -0
  454. package/dist/cross-ref.js.map +1 -0
  455. package/dist/dashboard/router.d.ts +3 -0
  456. package/dist/dashboard/router.d.ts.map +1 -0
  457. package/dist/dashboard/router.js +19 -0
  458. package/dist/dashboard/router.js.map +1 -0
  459. package/dist/dashboard/spa-assets.generated.d.ts +2 -0
  460. package/dist/dashboard/spa-assets.generated.d.ts.map +1 -0
  461. package/dist/dashboard/spa-assets.generated.js +220 -0
  462. package/dist/dashboard/spa-assets.generated.js.map +1 -0
  463. package/dist/engine/asset-sources.d.ts +17 -0
  464. package/dist/engine/asset-sources.d.ts.map +1 -0
  465. package/dist/engine/asset-sources.js +75 -0
  466. package/dist/engine/asset-sources.js.map +1 -0
  467. package/dist/engine/cesdk-adapter.d.ts +10 -0
  468. package/dist/engine/cesdk-adapter.d.ts.map +1 -0
  469. package/dist/engine/cesdk-adapter.js +19 -0
  470. package/dist/engine/cesdk-adapter.js.map +1 -0
  471. package/dist/engine/index.d.ts +3 -0
  472. package/dist/engine/index.d.ts.map +1 -0
  473. package/dist/engine/index.js +3 -0
  474. package/dist/engine/index.js.map +1 -0
  475. package/dist/engine/mutex.d.ts +5 -0
  476. package/dist/engine/mutex.d.ts.map +1 -0
  477. package/dist/engine/mutex.js +42 -0
  478. package/dist/engine/mutex.js.map +1 -0
  479. package/dist/engine/session.d.ts +50 -0
  480. package/dist/engine/session.d.ts.map +1 -0
  481. package/dist/engine/session.js +95 -0
  482. package/dist/engine/session.js.map +1 -0
  483. package/dist/engine/uri-resolver.d.ts +14 -0
  484. package/dist/engine/uri-resolver.d.ts.map +1 -0
  485. package/dist/engine/uri-resolver.js +12 -0
  486. package/dist/engine/uri-resolver.js.map +1 -0
  487. package/dist/frontmatter.d.ts +15 -0
  488. package/dist/frontmatter.d.ts.map +1 -0
  489. package/dist/frontmatter.js +46 -0
  490. package/dist/frontmatter.js.map +1 -0
  491. package/dist/gateway/hosted-stub.d.ts +6 -0
  492. package/dist/gateway/hosted-stub.d.ts.map +1 -0
  493. package/dist/gateway/hosted-stub.js +11 -0
  494. package/dist/gateway/hosted-stub.js.map +1 -0
  495. package/dist/gateway/index.d.ts +4 -0
  496. package/dist/gateway/index.d.ts.map +1 -0
  497. package/dist/gateway/index.js +4 -0
  498. package/dist/gateway/index.js.map +1 -0
  499. package/dist/gateway/local.d.ts +14 -0
  500. package/dist/gateway/local.d.ts.map +1 -0
  501. package/dist/gateway/local.js +41 -0
  502. package/dist/gateway/local.js.map +1 -0
  503. package/dist/gateway/types.d.ts +24 -0
  504. package/dist/gateway/types.d.ts.map +1 -0
  505. package/dist/gateway/types.js +7 -0
  506. package/dist/gateway/types.js.map +1 -0
  507. package/dist/http/server.d.ts +80 -0
  508. package/dist/http/server.d.ts.map +1 -0
  509. package/dist/http/server.js +183 -0
  510. package/dist/http/server.js.map +1 -0
  511. package/dist/http/session-manager.d.ts +42 -0
  512. package/dist/http/session-manager.d.ts.map +1 -0
  513. package/dist/http/session-manager.js +82 -0
  514. package/dist/http/session-manager.js.map +1 -0
  515. package/dist/http/workspace-auth.d.ts +9 -0
  516. package/dist/http/workspace-auth.d.ts.map +1 -0
  517. package/dist/http/workspace-auth.js +29 -0
  518. package/dist/http/workspace-auth.js.map +1 -0
  519. package/dist/index.d.ts +10 -0
  520. package/dist/index.d.ts.map +1 -0
  521. package/dist/index.js +10 -0
  522. package/dist/index.js.map +1 -0
  523. package/dist/metrics/mount.d.ts +11 -0
  524. package/dist/metrics/mount.d.ts.map +1 -0
  525. package/dist/metrics/mount.js +13 -0
  526. package/dist/metrics/mount.js.map +1 -0
  527. package/dist/metrics/recorder.d.ts +55 -0
  528. package/dist/metrics/recorder.d.ts.map +1 -0
  529. package/dist/metrics/recorder.js +97 -0
  530. package/dist/metrics/recorder.js.map +1 -0
  531. package/dist/revisions/hash.d.ts +7 -0
  532. package/dist/revisions/hash.d.ts.map +1 -0
  533. package/dist/revisions/hash.js +24 -0
  534. package/dist/revisions/hash.js.map +1 -0
  535. package/dist/revisions/index.d.ts +4 -0
  536. package/dist/revisions/index.d.ts.map +1 -0
  537. package/dist/revisions/index.js +4 -0
  538. package/dist/revisions/index.js.map +1 -0
  539. package/dist/revisions/store.d.ts +69 -0
  540. package/dist/revisions/store.d.ts.map +1 -0
  541. package/dist/revisions/store.js +196 -0
  542. package/dist/revisions/store.js.map +1 -0
  543. package/dist/revisions/types.d.ts +39 -0
  544. package/dist/revisions/types.d.ts.map +1 -0
  545. package/dist/revisions/types.js +2 -0
  546. package/dist/revisions/types.js.map +1 -0
  547. package/dist/server.d.ts +51 -0
  548. package/dist/server.d.ts.map +1 -0
  549. package/dist/server.js +175 -0
  550. package/dist/server.js.map +1 -0
  551. package/dist/skill-tools.d.ts +3 -0
  552. package/dist/skill-tools.d.ts.map +1 -0
  553. package/dist/skill-tools.js +105 -0
  554. package/dist/skill-tools.js.map +1 -0
  555. package/dist/test/test/cli/dispatcher.test.d.ts +2 -0
  556. package/dist/test/test/cli/dispatcher.test.d.ts.map +1 -0
  557. package/dist/test/test/cli/dispatcher.test.js +47 -0
  558. package/dist/test/test/cli/dispatcher.test.js.map +1 -0
  559. package/dist/test/test/cross-ref.test.d.ts +2 -0
  560. package/dist/test/test/cross-ref.test.d.ts.map +1 -0
  561. package/dist/test/test/cross-ref.test.js +39 -0
  562. package/dist/test/test/cross-ref.test.js.map +1 -0
  563. package/dist/test/test/engine/session.test.d.ts +2 -0
  564. package/dist/test/test/engine/session.test.d.ts.map +1 -0
  565. package/dist/test/test/engine/session.test.js +144 -0
  566. package/dist/test/test/engine/session.test.js.map +1 -0
  567. package/dist/test/test/engine/uri-resolver.test.d.ts +2 -0
  568. package/dist/test/test/engine/uri-resolver.test.d.ts.map +1 -0
  569. package/dist/test/test/engine/uri-resolver.test.js +38 -0
  570. package/dist/test/test/engine/uri-resolver.test.js.map +1 -0
  571. package/dist/test/test/frontmatter.test.d.ts +2 -0
  572. package/dist/test/test/frontmatter.test.d.ts.map +1 -0
  573. package/dist/test/test/frontmatter.test.js +55 -0
  574. package/dist/test/test/frontmatter.test.js.map +1 -0
  575. package/dist/test/test/gateway/hosted-stub.test.d.ts +2 -0
  576. package/dist/test/test/gateway/hosted-stub.test.d.ts.map +1 -0
  577. package/dist/test/test/gateway/hosted-stub.test.js +11 -0
  578. package/dist/test/test/gateway/hosted-stub.test.js.map +1 -0
  579. package/dist/test/test/gateway/local.test.d.ts +2 -0
  580. package/dist/test/test/gateway/local.test.d.ts.map +1 -0
  581. package/dist/test/test/gateway/local.test.js +29 -0
  582. package/dist/test/test/gateway/local.test.js.map +1 -0
  583. package/dist/test/test/handbook-contract.test.d.ts +2 -0
  584. package/dist/test/test/handbook-contract.test.d.ts.map +1 -0
  585. package/dist/test/test/handbook-contract.test.js +71 -0
  586. package/dist/test/test/handbook-contract.test.js.map +1 -0
  587. package/dist/test/test/http/server.test.d.ts +2 -0
  588. package/dist/test/test/http/server.test.d.ts.map +1 -0
  589. package/dist/test/test/http/server.test.js +245 -0
  590. package/dist/test/test/http/server.test.js.map +1 -0
  591. package/dist/test/test/http/session-manager.test.d.ts +2 -0
  592. package/dist/test/test/http/session-manager.test.d.ts.map +1 -0
  593. package/dist/test/test/http/session-manager.test.js +83 -0
  594. package/dist/test/test/http/session-manager.test.js.map +1 -0
  595. package/dist/test/test/revisions/hash.test.d.ts +2 -0
  596. package/dist/test/test/revisions/hash.test.d.ts.map +1 -0
  597. package/dist/test/test/revisions/hash.test.js +33 -0
  598. package/dist/test/test/revisions/hash.test.js.map +1 -0
  599. package/dist/test/test/revisions/store.test.d.ts +2 -0
  600. package/dist/test/test/revisions/store.test.d.ts.map +1 -0
  601. package/dist/test/test/revisions/store.test.js +245 -0
  602. package/dist/test/test/revisions/store.test.js.map +1 -0
  603. package/dist/test/test/server.test.d.ts +2 -0
  604. package/dist/test/test/server.test.d.ts.map +1 -0
  605. package/dist/test/test/server.test.js +157 -0
  606. package/dist/test/test/server.test.js.map +1 -0
  607. package/dist/test/test/skill-tools.test.d.ts +2 -0
  608. package/dist/test/test/skill-tools.test.d.ts.map +1 -0
  609. package/dist/test/test/skill-tools.test.js +84 -0
  610. package/dist/test/test/skill-tools.test.js.map +1 -0
  611. package/dist/test/test/smoke.test.d.ts +2 -0
  612. package/dist/test/test/smoke.test.d.ts.map +1 -0
  613. package/dist/test/test/smoke.test.js +8 -0
  614. package/dist/test/test/smoke.test.js.map +1 -0
  615. package/dist/test/test/tools/asset-generate.test.d.ts +2 -0
  616. package/dist/test/test/tools/asset-generate.test.d.ts.map +1 -0
  617. package/dist/test/test/tools/asset-generate.test.js +66 -0
  618. package/dist/test/test/tools/asset-generate.test.js.map +1 -0
  619. package/dist/test/test/tools/edit.test.d.ts +2 -0
  620. package/dist/test/test/tools/edit.test.d.ts.map +1 -0
  621. package/dist/test/test/tools/edit.test.js +205 -0
  622. package/dist/test/test/tools/edit.test.js.map +1 -0
  623. package/dist/test/test/tools/export.test.d.ts +2 -0
  624. package/dist/test/test/tools/export.test.d.ts.map +1 -0
  625. package/dist/test/test/tools/export.test.js +144 -0
  626. package/dist/test/test/tools/export.test.js.map +1 -0
  627. package/dist/test/test/tools/history.test.d.ts +2 -0
  628. package/dist/test/test/tools/history.test.d.ts.map +1 -0
  629. package/dist/test/test/tools/history.test.js +29 -0
  630. package/dist/test/test/tools/history.test.js.map +1 -0
  631. package/dist/test/test/tools/inspect.test.d.ts +2 -0
  632. package/dist/test/test/tools/inspect.test.d.ts.map +1 -0
  633. package/dist/test/test/tools/inspect.test.js +62 -0
  634. package/dist/test/test/tools/inspect.test.js.map +1 -0
  635. package/dist/test/test/tools/list.test.d.ts +2 -0
  636. package/dist/test/test/tools/list.test.d.ts.map +1 -0
  637. package/dist/test/test/tools/list.test.js +23 -0
  638. package/dist/test/test/tools/list.test.js.map +1 -0
  639. package/dist/test/test/tools/open-editor.test.d.ts +2 -0
  640. package/dist/test/test/tools/open-editor.test.d.ts.map +1 -0
  641. package/dist/test/test/tools/open-editor.test.js +53 -0
  642. package/dist/test/test/tools/open-editor.test.js.map +1 -0
  643. package/dist/test/test/tools/preview.test.d.ts +2 -0
  644. package/dist/test/test/tools/preview.test.d.ts.map +1 -0
  645. package/dist/test/test/tools/preview.test.js +73 -0
  646. package/dist/test/test/tools/preview.test.js.map +1 -0
  647. package/dist/test/test/tools/rename.test.d.ts +2 -0
  648. package/dist/test/test/tools/rename.test.d.ts.map +1 -0
  649. package/dist/test/test/tools/rename.test.js +17 -0
  650. package/dist/test/test/tools/rename.test.js.map +1 -0
  651. package/dist/test/test/viewer/broadcaster.test.d.ts +2 -0
  652. package/dist/test/test/viewer/broadcaster.test.d.ts.map +1 -0
  653. package/dist/test/test/viewer/broadcaster.test.js +53 -0
  654. package/dist/test/test/viewer/broadcaster.test.js.map +1 -0
  655. package/dist/test/test/viewer/resource-route.test.d.ts +2 -0
  656. package/dist/test/test/viewer/resource-route.test.d.ts.map +1 -0
  657. package/dist/test/test/viewer/resource-route.test.js +70 -0
  658. package/dist/test/test/viewer/resource-route.test.js.map +1 -0
  659. package/dist/test/test/viewer/router.test.d.ts +2 -0
  660. package/dist/test/test/viewer/router.test.d.ts.map +1 -0
  661. package/dist/test/test/viewer/router.test.js +171 -0
  662. package/dist/test/test/viewer/router.test.js.map +1 -0
  663. package/dist/test/test/viewer/url-builder.test.d.ts +2 -0
  664. package/dist/test/test/viewer/url-builder.test.d.ts.map +1 -0
  665. package/dist/test/test/viewer/url-builder.test.js +31 -0
  666. package/dist/test/test/viewer/url-builder.test.js.map +1 -0
  667. package/dist/test/test/workspace/hosted-stub.test.d.ts +2 -0
  668. package/dist/test/test/workspace/hosted-stub.test.d.ts.map +1 -0
  669. package/dist/test/test/workspace/hosted-stub.test.js +30 -0
  670. package/dist/test/test/workspace/hosted-stub.test.js.map +1 -0
  671. package/dist/test/test/workspace/in-memory.test.d.ts +2 -0
  672. package/dist/test/test/workspace/in-memory.test.d.ts.map +1 -0
  673. package/dist/test/test/workspace/in-memory.test.js +4 -0
  674. package/dist/test/test/workspace/in-memory.test.js.map +1 -0
  675. package/dist/test/test/workspace/node-fs.test.d.ts +2 -0
  676. package/dist/test/test/workspace/node-fs.test.d.ts.map +1 -0
  677. package/dist/test/test/workspace/node-fs.test.js +20 -0
  678. package/dist/test/test/workspace/node-fs.test.js.map +1 -0
  679. package/dist/test/test/workspace/shared-contract.d.ts +3 -0
  680. package/dist/test/test/workspace/shared-contract.d.ts.map +1 -0
  681. package/dist/test/test/workspace/shared-contract.js +92 -0
  682. package/dist/test/test/workspace/shared-contract.js.map +1 -0
  683. package/dist/test/tsconfig.test.tsbuildinfo +1 -0
  684. package/dist/test/vitest.config.d.ts +3 -0
  685. package/dist/test/vitest.config.d.ts.map +1 -0
  686. package/dist/test/vitest.config.js +8 -0
  687. package/dist/test/vitest.config.js.map +1 -0
  688. package/dist/tools/asset-generate.d.ts +12 -0
  689. package/dist/tools/asset-generate.d.ts.map +1 -0
  690. package/dist/tools/asset-generate.js +112 -0
  691. package/dist/tools/asset-generate.js.map +1 -0
  692. package/dist/tools/asset-search.d.ts +10 -0
  693. package/dist/tools/asset-search.d.ts.map +1 -0
  694. package/dist/tools/asset-search.js +120 -0
  695. package/dist/tools/asset-search.js.map +1 -0
  696. package/dist/tools/content-types.d.ts +11 -0
  697. package/dist/tools/content-types.d.ts.map +1 -0
  698. package/dist/tools/content-types.js +2 -0
  699. package/dist/tools/content-types.js.map +1 -0
  700. package/dist/tools/edit.d.ts +29 -0
  701. package/dist/tools/edit.d.ts.map +1 -0
  702. package/dist/tools/edit.js +165 -0
  703. package/dist/tools/edit.js.map +1 -0
  704. package/dist/tools/engine.d.ts +31 -0
  705. package/dist/tools/engine.d.ts.map +1 -0
  706. package/dist/tools/engine.js +59 -0
  707. package/dist/tools/engine.js.map +1 -0
  708. package/dist/tools/export.d.ts +19 -0
  709. package/dist/tools/export.d.ts.map +1 -0
  710. package/dist/tools/export.js +179 -0
  711. package/dist/tools/export.js.map +1 -0
  712. package/dist/tools/history.d.ts +7 -0
  713. package/dist/tools/history.d.ts.map +1 -0
  714. package/dist/tools/history.js +54 -0
  715. package/dist/tools/history.js.map +1 -0
  716. package/dist/tools/index.d.ts +35 -0
  717. package/dist/tools/index.d.ts.map +1 -0
  718. package/dist/tools/index.js +72 -0
  719. package/dist/tools/index.js.map +1 -0
  720. package/dist/tools/inspect.d.ts +7 -0
  721. package/dist/tools/inspect.d.ts.map +1 -0
  722. package/dist/tools/inspect.js +80 -0
  723. package/dist/tools/inspect.js.map +1 -0
  724. package/dist/tools/list.d.ts +7 -0
  725. package/dist/tools/list.d.ts.map +1 -0
  726. package/dist/tools/list.js +18 -0
  727. package/dist/tools/list.js.map +1 -0
  728. package/dist/tools/metrics.d.ts +11 -0
  729. package/dist/tools/metrics.d.ts.map +1 -0
  730. package/dist/tools/metrics.js +28 -0
  731. package/dist/tools/metrics.js.map +1 -0
  732. package/dist/tools/open-editor.d.ts +10 -0
  733. package/dist/tools/open-editor.d.ts.map +1 -0
  734. package/dist/tools/open-editor.js +62 -0
  735. package/dist/tools/open-editor.js.map +1 -0
  736. package/dist/tools/preview.d.ts +12 -0
  737. package/dist/tools/preview.d.ts.map +1 -0
  738. package/dist/tools/preview.js +104 -0
  739. package/dist/tools/preview.js.map +1 -0
  740. package/dist/tools/rename.d.ts +7 -0
  741. package/dist/tools/rename.d.ts.map +1 -0
  742. package/dist/tools/rename.js +39 -0
  743. package/dist/tools/rename.js.map +1 -0
  744. package/dist/tools/result.d.ts +12 -0
  745. package/dist/tools/result.d.ts.map +1 -0
  746. package/dist/tools/result.js +55 -0
  747. package/dist/tools/result.js.map +1 -0
  748. package/dist/tools/save.d.ts +19 -0
  749. package/dist/tools/save.d.ts.map +1 -0
  750. package/dist/tools/save.js +117 -0
  751. package/dist/tools/save.js.map +1 -0
  752. package/dist/viewer/broadcaster.d.ts +13 -0
  753. package/dist/viewer/broadcaster.d.ts.map +1 -0
  754. package/dist/viewer/broadcaster.js +44 -0
  755. package/dist/viewer/broadcaster.js.map +1 -0
  756. package/dist/viewer/index.d.ts +7 -0
  757. package/dist/viewer/index.d.ts.map +1 -0
  758. package/dist/viewer/index.js +7 -0
  759. package/dist/viewer/index.js.map +1 -0
  760. package/dist/viewer/listener.d.ts +16 -0
  761. package/dist/viewer/listener.d.ts.map +1 -0
  762. package/dist/viewer/listener.js +30 -0
  763. package/dist/viewer/listener.js.map +1 -0
  764. package/dist/viewer/presigned-r2-url-builder.d.ts +30 -0
  765. package/dist/viewer/presigned-r2-url-builder.d.ts.map +1 -0
  766. package/dist/viewer/presigned-r2-url-builder.js +40 -0
  767. package/dist/viewer/presigned-r2-url-builder.js.map +1 -0
  768. package/dist/viewer/resource-route.d.ts +9 -0
  769. package/dist/viewer/resource-route.d.ts.map +1 -0
  770. package/dist/viewer/resource-route.js +59 -0
  771. package/dist/viewer/resource-route.js.map +1 -0
  772. package/dist/viewer/router.d.ts +20 -0
  773. package/dist/viewer/router.d.ts.map +1 -0
  774. package/dist/viewer/router.js +142 -0
  775. package/dist/viewer/router.js.map +1 -0
  776. package/dist/viewer/session-mount.d.ts +10 -0
  777. package/dist/viewer/session-mount.d.ts.map +1 -0
  778. package/dist/viewer/session-mount.js +24 -0
  779. package/dist/viewer/session-mount.js.map +1 -0
  780. package/dist/viewer/spa-assets.generated.d.ts +2 -0
  781. package/dist/viewer/spa-assets.generated.d.ts.map +1 -0
  782. package/dist/viewer/spa-assets.generated.js +989 -0
  783. package/dist/viewer/spa-assets.generated.js.map +1 -0
  784. package/dist/viewer/url-builder.d.ts +48 -0
  785. package/dist/viewer/url-builder.d.ts.map +1 -0
  786. package/dist/viewer/url-builder.js +38 -0
  787. package/dist/viewer/url-builder.js.map +1 -0
  788. package/dist/workspace/hosted-stub.d.ts +28 -0
  789. package/dist/workspace/hosted-stub.d.ts.map +1 -0
  790. package/dist/workspace/hosted-stub.js +44 -0
  791. package/dist/workspace/hosted-stub.js.map +1 -0
  792. package/dist/workspace/in-memory.d.ts +23 -0
  793. package/dist/workspace/in-memory.d.ts.map +1 -0
  794. package/dist/workspace/in-memory.js +161 -0
  795. package/dist/workspace/in-memory.js.map +1 -0
  796. package/dist/workspace/index.d.ts +6 -0
  797. package/dist/workspace/index.d.ts.map +1 -0
  798. package/dist/workspace/index.js +6 -0
  799. package/dist/workspace/index.js.map +1 -0
  800. package/dist/workspace/node-fs.d.ts +23 -0
  801. package/dist/workspace/node-fs.d.ts.map +1 -0
  802. package/dist/workspace/node-fs.js +90 -0
  803. package/dist/workspace/node-fs.js.map +1 -0
  804. package/dist/workspace/s3.d.ts +32 -0
  805. package/dist/workspace/s3.d.ts.map +1 -0
  806. package/dist/workspace/s3.js +191 -0
  807. package/dist/workspace/s3.js.map +1 -0
  808. package/dist/workspace/scoped.d.ts +32 -0
  809. package/dist/workspace/scoped.d.ts.map +1 -0
  810. package/dist/workspace/scoped.js +76 -0
  811. package/dist/workspace/scoped.js.map +1 -0
  812. package/dist/workspace/types.d.ts +75 -0
  813. package/dist/workspace/types.d.ts.map +1 -0
  814. package/dist/workspace/types.js +18 -0
  815. package/dist/workspace/types.js.map +1 -0
  816. package/package.json +80 -0
@@ -0,0 +1,764 @@
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 Your Server](./import-media/from-remote-source/your-server.md)
4
+
5
+ ---
6
+
7
+ Learn how to load images, videos, and audio from your backend servers into
8
+ CE.SDK for integration with CMS, DAM, or custom asset management systems.
9
+
10
+ ![Load Assets From Your Server](https://img.ly/docs/cesdk/./assets/browser.hero.webp)
11
+
12
+ > **Reading time:** 10 minutes
13
+ >
14
+ > **Resources:**
15
+ >
16
+ > - [Download examples](https://github.com/imgly/cesdk-web-examples/archive/refs/tags/release-$UBQ_VERSION$.zip)
17
+ > - [View source on GitHub](https://github.com/imgly/cesdk-web-examples/tree/release-$UBQ_VERSION$/guides-import-media-from-remote-source-your-server-browser)
18
+ > - [Open in StackBlitz](https://stackblitz.com/github/imgly/cesdk-web-examples/tree/v$UBQ_VERSION$/guides-import-media-from-remote-source-your-server-browser)
19
+ > - [Live demo](https://img.ly/docs/cesdk/examples/guides-import-media-from-remote-source-your-server-browser/)
20
+
21
+ CE.SDK provides multiple ways to load assets from your servers. Static libraries like stickers and icons use JSON manifests hosted on a CDN. Dynamic libraries like user photos and DAM content require API endpoints backed by databases.
22
+
23
+ ```typescript file=@cesdk_web_examples/guides-import-media-from-remote-source-your-server-browser/browser.ts reference-only
24
+ import type { EditorPlugin, EditorPluginContext } from '@cesdk/cesdk-js';
25
+
26
+ import {
27
+ BlurAssetSource,
28
+ CaptionPresetsAssetSource,
29
+ ColorPaletteAssetSource,
30
+ CropPresetsAssetSource,
31
+ DemoAssetSources,
32
+ EffectsAssetSource,
33
+ FiltersAssetSource,
34
+ PagePresetsAssetSource,
35
+ StickerAssetSource,
36
+ TextAssetSource,
37
+ TextComponentAssetSource,
38
+ TypefaceAssetSource,
39
+ UploadAssetSources,
40
+ VectorShapeAssetSource
41
+ } from '@cesdk/cesdk-js/plugins';
42
+ import { VideoEditorConfig } from './video-editor/plugin';
43
+ import packageJson from './package.json';
44
+
45
+ class Example implements EditorPlugin {
46
+ name = packageJson.name;
47
+
48
+ version = packageJson.version;
49
+
50
+ async initialize({ cesdk }: EditorPluginContext): Promise<void> {
51
+ if (!cesdk) {
52
+ throw new Error('CE.SDK instance is required for this plugin');
53
+ }
54
+ await cesdk.addPlugin(new VideoEditorConfig());
55
+
56
+ // Add asset source plugins
57
+ await cesdk.addPlugin(new BlurAssetSource());
58
+ await cesdk.addPlugin(new CaptionPresetsAssetSource());
59
+ await cesdk.addPlugin(new ColorPaletteAssetSource());
60
+ await cesdk.addPlugin(new CropPresetsAssetSource());
61
+ await cesdk.addPlugin(
62
+ new UploadAssetSources({
63
+ include: [
64
+ 'ly.img.image.upload',
65
+ 'ly.img.video.upload',
66
+ 'ly.img.audio.upload'
67
+ ]
68
+ })
69
+ );
70
+ await cesdk.addPlugin(
71
+ new DemoAssetSources({
72
+ include: [
73
+ 'ly.img.templates.video.*',
74
+ 'ly.img.image.*',
75
+ 'ly.img.audio.*',
76
+ 'ly.img.video.*'
77
+ ]
78
+ })
79
+ );
80
+ await cesdk.addPlugin(new EffectsAssetSource());
81
+ await cesdk.addPlugin(new FiltersAssetSource());
82
+ await cesdk.addPlugin(
83
+ new PagePresetsAssetSource({
84
+ include: [
85
+ 'ly.img.page.presets.instagram.*',
86
+ 'ly.img.page.presets.facebook.*',
87
+ 'ly.img.page.presets.x.*',
88
+ 'ly.img.page.presets.linkedin.*',
89
+ 'ly.img.page.presets.pinterest.*',
90
+ 'ly.img.page.presets.tiktok.*',
91
+ 'ly.img.page.presets.youtube.*',
92
+ 'ly.img.page.presets.video.*'
93
+ ]
94
+ })
95
+ );
96
+ await cesdk.addPlugin(new StickerAssetSource());
97
+ await cesdk.addPlugin(new TextAssetSource());
98
+ await cesdk.addPlugin(new TextComponentAssetSource());
99
+ await cesdk.addPlugin(new TypefaceAssetSource());
100
+ await cesdk.addPlugin(new VectorShapeAssetSource());
101
+
102
+ await cesdk.actions.run('scene.create', {
103
+ page: {
104
+ sourceId: 'ly.img.page.presets',
105
+ assetId: 'ly.img.page.presets.instagram.story',
106
+ color: { r: 0, g: 0, b: 0, a: 1 }
107
+ }
108
+ });
109
+
110
+ const engine = cesdk.engine;
111
+
112
+ // Register a custom asset source for images from your backend API
113
+ engine.asset.addSource({
114
+ id: 'my-server-images',
115
+ async findAssets(queryData) {
116
+ // Replace with your API: fetch(`/api/images?page=${queryData.page}&q=${queryData.query}`)
117
+ const filtered = filterByQuery(MOCK_IMAGES, queryData.query);
118
+ const paginated = paginate(filtered, queryData.page, queryData.perPage);
119
+
120
+ return {
121
+ assets: paginated.items.map((item) => ({
122
+ id: item.id,
123
+ label: item.title,
124
+ meta: {
125
+ uri: item.url,
126
+ thumbUri: item.thumbnail,
127
+ blockType: '//ly.img.ubq/graphic',
128
+ fillType: '//ly.img.ubq/fill/image',
129
+ width: item.width,
130
+ height: item.height
131
+ }
132
+ })),
133
+ total: filtered.length,
134
+ currentPage: queryData.page,
135
+ nextPage: paginated.nextPage
136
+ };
137
+ }
138
+ });
139
+
140
+ // Register a custom source for video assets
141
+ engine.asset.addSource({
142
+ id: 'my-server-videos',
143
+ async findAssets(queryData) {
144
+ const filtered = filterByQuery(MOCK_VIDEOS, queryData.query);
145
+
146
+ return {
147
+ assets: filtered.map((item) => ({
148
+ id: item.id,
149
+ label: item.title,
150
+ meta: {
151
+ uri: item.url,
152
+ thumbUri: item.thumbnail,
153
+ blockType: '//ly.img.ubq/graphic',
154
+ fillType: '//ly.img.ubq/fill/video',
155
+ duration: String(item.duration)
156
+ }
157
+ })),
158
+ total: filtered.length,
159
+ currentPage: queryData.page,
160
+ nextPage: undefined
161
+ };
162
+ }
163
+ });
164
+
165
+ // Register a custom source for audio assets
166
+ engine.asset.addSource({
167
+ id: 'my-server-audio',
168
+ async findAssets(queryData) {
169
+ const filtered = filterByQuery(MOCK_AUDIO, queryData.query);
170
+
171
+ return {
172
+ assets: filtered.map((item) => ({
173
+ id: item.id,
174
+ label: item.title,
175
+ meta: {
176
+ uri: item.url,
177
+ thumbUri: item.thumbnail,
178
+ blockType: '//ly.img.ubq/audio',
179
+ mimeType: item.mimeType,
180
+ duration: String(item.duration)
181
+ }
182
+ })),
183
+ total: filtered.length,
184
+ currentPage: queryData.page,
185
+ nextPage: undefined
186
+ };
187
+ }
188
+ });
189
+
190
+ // Register a custom source for sticker assets (PNG/SVG overlays)
191
+ engine.asset.addSource({
192
+ id: 'my-server-stickers',
193
+ async findAssets(queryData) {
194
+ const filtered = filterByQuery(MOCK_STICKERS, queryData.query);
195
+
196
+ return {
197
+ assets: filtered.map((item) => ({
198
+ id: item.id,
199
+ label: item.title,
200
+ meta: {
201
+ uri: item.url,
202
+ thumbUri: item.thumbnail,
203
+ blockType: '//ly.img.ubq/graphic',
204
+ fillType: '//ly.img.ubq/fill/image',
205
+ kind: 'sticker',
206
+ width: item.width,
207
+ height: item.height
208
+ }
209
+ })),
210
+ total: filtered.length,
211
+ currentPage: queryData.page,
212
+ nextPage: undefined
213
+ };
214
+ }
215
+ });
216
+
217
+ // Register a custom source for scene templates
218
+ engine.asset.addLocalSource(
219
+ 'my-server-templates',
220
+ undefined,
221
+ async (asset) => {
222
+ if (asset.meta?.uri) {
223
+ await engine.scene.loadFromURL(asset.meta.uri as string);
224
+ }
225
+ return undefined;
226
+ }
227
+ );
228
+
229
+ // Add video templates to the source
230
+ for (const template of MOCK_TEMPLATES) {
231
+ engine.asset.addAssetToSource('my-server-templates', {
232
+ id: template.id,
233
+ label: { en: template.title },
234
+ meta: { uri: template.url, thumbUri: template.thumbnail }
235
+ });
236
+ }
237
+
238
+ // Load static assets from a JSON manifest file
239
+ await engine.asset.addLocalAssetSourceFromJSONURI(
240
+ 'https://cdn.img.ly/assets/v1/ly.img.sticker/content.json'
241
+ );
242
+
243
+ // Add a custom entry to the asset library panel
244
+ cesdk.ui.addAssetLibraryEntry({
245
+ id: 'my-server-assets',
246
+ sourceIds: [
247
+ 'my-server-images',
248
+ 'my-server-videos',
249
+ 'my-server-audio',
250
+ 'my-server-stickers',
251
+ 'my-server-templates'
252
+ ],
253
+ title: ({ sourceId }) => SOURCE_TITLES[sourceId ?? ''] ?? 'My Server',
254
+ gridColumns: 3,
255
+ gridItemHeight: 'square'
256
+ });
257
+
258
+ // Add a dock button for "My Server" as the first item with a separator
259
+ cesdk.ui.setComponentOrder({ in: 'ly.img.dock' }, [
260
+ 'my-server-assets.dock',
261
+ 'ly.img.separator',
262
+ ...cesdk.ui.getComponentOrder({ in: 'ly.img.dock' })
263
+ ]);
264
+
265
+ cesdk.ui.registerComponent(
266
+ 'my-server-assets.dock',
267
+ ({ builder: { Button } }) => {
268
+ Button('my-server-dock-button', {
269
+ label: 'My Server',
270
+ onClick: () => {
271
+ cesdk.ui.openPanel('//ly.img.panel/assetLibrary', {
272
+ payload: { entries: ['my-server-assets'] }
273
+ });
274
+ }
275
+ });
276
+ }
277
+ );
278
+
279
+ // Open the asset library to show our custom server assets
280
+ cesdk.ui.openPanel('//ly.img.panel/assetLibrary', {
281
+ payload: { entries: ['my-server-assets'] }
282
+ });
283
+
284
+ // Apply sample assets to canvas for verification
285
+ await applyFirstAsset(engine, 'my-server-images');
286
+ await applyFirstAsset(engine, 'my-server-videos');
287
+ await applyFirstAsset(engine, 'my-server-audio');
288
+ await applyFirstAsset(engine, 'my-server-stickers');
289
+ }
290
+ }
291
+
292
+ export default Example;
293
+
294
+ // ============================================================================
295
+ // Mock Data - Replace with your backend API
296
+ // ============================================================================
297
+
298
+ interface MockAsset {
299
+ id: string;
300
+ title: string;
301
+ url: string;
302
+ thumbnail: string;
303
+ width?: number;
304
+ height?: number;
305
+ duration?: number;
306
+ mimeType?: string;
307
+ }
308
+
309
+ const MOCK_IMAGES: MockAsset[] = [
310
+ {
311
+ id: 'img-001',
312
+ title: 'Mountain Landscape',
313
+ url: 'https://img.ly/static/ubq_samples/sample_1.jpg',
314
+ thumbnail: 'https://img.ly/static/ubq_samples/sample_1.jpg',
315
+ width: 1920,
316
+ height: 1280
317
+ },
318
+ {
319
+ id: 'img-002',
320
+ title: 'Ocean Sunset',
321
+ url: 'https://img.ly/static/ubq_samples/sample_2.jpg',
322
+ thumbnail: 'https://img.ly/static/ubq_samples/sample_2.jpg',
323
+ width: 1920,
324
+ height: 1280
325
+ },
326
+ {
327
+ id: 'img-003',
328
+ title: 'Forest Path',
329
+ url: 'https://img.ly/static/ubq_samples/sample_3.jpg',
330
+ thumbnail: 'https://img.ly/static/ubq_samples/sample_3.jpg',
331
+ width: 1920,
332
+ height: 1280
333
+ },
334
+ {
335
+ id: 'img-004',
336
+ title: 'City Skyline',
337
+ url: 'https://img.ly/static/ubq_samples/sample_4.jpg',
338
+ thumbnail: 'https://img.ly/static/ubq_samples/sample_4.jpg',
339
+ width: 1920,
340
+ height: 1280
341
+ },
342
+ {
343
+ id: 'img-005',
344
+ title: 'Desert Dunes',
345
+ url: 'https://img.ly/static/ubq_samples/sample_5.jpg',
346
+ thumbnail: 'https://img.ly/static/ubq_samples/sample_5.jpg',
347
+ width: 1920,
348
+ height: 1280
349
+ }
350
+ ];
351
+
352
+ const MOCK_VIDEOS: MockAsset[] = [
353
+ {
354
+ id: 'vid-001',
355
+ title: 'Surfer Barrelling a Wave',
356
+ url: 'https://cdn.img.ly/assets/demo/v3/ly.img.video/videos/pexels-drone-footage-of-a-surfer-barrelling-a-wave-12715991.mp4',
357
+ thumbnail:
358
+ 'https://cdn.img.ly/assets/demo/v3/ly.img.video/thumbnails/pexels-drone-footage-of-a-surfer-barrelling-a-wave-12715991.jpg',
359
+ duration: 15.58
360
+ }
361
+ ];
362
+
363
+ const MOCK_AUDIO: MockAsset[] = [
364
+ {
365
+ id: 'audio-001',
366
+ title: 'Background Music',
367
+ url: 'https://cdn.img.ly/assets/demo/v3/ly.img.audio/audios/dance_harder.m4a',
368
+ thumbnail:
369
+ 'https://cdn.img.ly/assets/demo/v3/ly.img.audio/thumbnails/dance_harder.jpg',
370
+ duration: 212.5,
371
+ mimeType: 'audio/x-m4a'
372
+ }
373
+ ];
374
+
375
+ const MOCK_STICKERS: MockAsset[] = [
376
+ {
377
+ id: 'sticker-001',
378
+ title: 'Camera',
379
+ url: 'https://cdn.img.ly/assets/v1/ly.img.sticker/images/doodle/doodle_camera.svg',
380
+ thumbnail:
381
+ 'https://cdn.img.ly/assets/v1/ly.img.sticker/thumbnails/doodle/doodle_camera.png',
382
+ width: 2048,
383
+ height: 1339
384
+ }
385
+ ];
386
+
387
+ const MOCK_TEMPLATES: MockAsset[] = [
388
+ {
389
+ id: 'template-001',
390
+ title: 'Surf School Promo',
391
+ url: 'https://cdn.img.ly/assets/demo/v3/ly.img.video.template/templates/milli-surf-school.scene',
392
+ thumbnail:
393
+ 'https://cdn.img.ly/assets/demo/v3/ly.img.video.template/thumbnails/milli-surf-school.png'
394
+ },
395
+ {
396
+ id: 'template-002',
397
+ title: 'Monthly Review',
398
+ url: 'https://cdn.img.ly/assets/demo/v3/ly.img.video.template/templates/monthly-review.scene',
399
+ thumbnail:
400
+ 'https://cdn.img.ly/assets/demo/v3/ly.img.video.template/thumbnails/monthly-review.png'
401
+ },
402
+ {
403
+ id: 'template-003',
404
+ title: 'My Plants Video',
405
+ url: 'https://cdn.img.ly/assets/demo/v3/ly.img.video.template/templates/my-plants.scene',
406
+ thumbnail:
407
+ 'https://cdn.img.ly/assets/demo/v3/ly.img.video.template/thumbnails/my-plants.png'
408
+ }
409
+ ];
410
+
411
+ const SOURCE_TITLES: Record<string, string> = {
412
+ 'my-server-images': 'My User Photos',
413
+ 'my-server-videos': 'My User Videos',
414
+ 'my-server-audio': 'My User Audio',
415
+ 'my-server-stickers': 'My User Stickers',
416
+ 'my-server-templates': 'My User Templates'
417
+ };
418
+
419
+ // ============================================================================
420
+ // Helper Functions
421
+ // ============================================================================
422
+
423
+ function filterByQuery<T extends { title: string }>(
424
+ items: T[],
425
+ query: string | undefined
426
+ ): T[] {
427
+ if (!query) return items;
428
+ const searchTerm = query.toLowerCase();
429
+ return items.filter((item) => item.title.toLowerCase().includes(searchTerm));
430
+ }
431
+
432
+ function paginate<T>(
433
+ items: T[],
434
+ page: number,
435
+ perPage: number
436
+ ): { items: T[]; nextPage: number | undefined } {
437
+ const start = page * perPage;
438
+ const end = start + perPage;
439
+ return {
440
+ items: items.slice(start, end),
441
+ nextPage: end < items.length ? page + 1 : undefined
442
+ };
443
+ }
444
+
445
+ async function applyFirstAsset(
446
+ engine: Parameters<EditorPlugin['initialize']>[0]['cesdk'] extends infer C
447
+ ? C extends { engine: infer E }
448
+ ? E
449
+ : never
450
+ : never,
451
+ sourceId: string
452
+ ): Promise<void> {
453
+ const results = await engine.asset.findAssets(sourceId, {
454
+ page: 0,
455
+ perPage: 1
456
+ });
457
+ if (results.assets.length > 0) {
458
+ await engine.asset.apply(sourceId, results.assets[0]);
459
+ }
460
+ }
461
+ ```
462
+
463
+ This guide covers creating custom asset sources with API integration, serving images, videos, audio, stickers, and templates with correct metadata, configuring the asset library UI, and handling common integration issues.
464
+
465
+ ## Understanding Asset Source Types
466
+
467
+ CE.SDK supports two primary patterns for loading server assets.
468
+
469
+ **Custom Asset Sources** work best for database-backed content like user uploads, DAM integrations, and CMS media. Your API endpoint returns assets and handles filtering, pagination, and search. Register with `engine.asset.addSource()` providing a `findAssets` callback.
470
+
471
+ **JSON Asset Sources** work best for static assets that don't change frequently, such as stickers, icons, templates, and brand elements. Host a JSON manifest on a CDN alongside the assets. CE.SDK's default libraries use this pattern. Use `engine.asset.addLocalAssetSourceFromJSONURI()`.
472
+
473
+ ## Serving Different Media Types
474
+
475
+ Custom asset sources connect CE.SDK to your backend API. The `findAssets` callback receives query parameters and returns paginated results. Asset metadata varies by media type—configure the correct `blockType` and `fillType` for each.
476
+
477
+ ### Image Assets
478
+
479
+ Image assets use a graphic block with image fill. Include `width` and `height` for proper aspect ratio handling.
480
+
481
+ ```typescript highlight-image-assets
482
+ // Register a custom asset source for images from your backend API
483
+ engine.asset.addSource({
484
+ id: 'my-server-images',
485
+ async findAssets(queryData) {
486
+ // Replace with your API: fetch(`/api/images?page=${queryData.page}&q=${queryData.query}`)
487
+ const filtered = filterByQuery(MOCK_IMAGES, queryData.query);
488
+ const paginated = paginate(filtered, queryData.page, queryData.perPage);
489
+
490
+ return {
491
+ assets: paginated.items.map((item) => ({
492
+ id: item.id,
493
+ label: item.title,
494
+ meta: {
495
+ uri: item.url,
496
+ thumbUri: item.thumbnail,
497
+ blockType: '//ly.img.ubq/graphic',
498
+ fillType: '//ly.img.ubq/fill/image',
499
+ width: item.width,
500
+ height: item.height
501
+ }
502
+ })),
503
+ total: filtered.length,
504
+ currentPage: queryData.page,
505
+ nextPage: paginated.nextPage
506
+ };
507
+ }
508
+ });
509
+ ```
510
+
511
+ The `findAssets` callback receives a `queryData` object containing `query` (search term), `page`, `perPage`, `locale`, and `tags`. Return an object with `assets` (the current page), `total` (complete count), `currentPage`, and `nextPage` (next page number or `undefined` when exhausted).
512
+
513
+ Each asset requires an `id` and a `meta` object. Set `blockType` to `//ly.img.ubq/graphic` and `fillType` to `//ly.img.ubq/fill/image`. The `thumbUri` provides the thumbnail shown in the asset library, while `uri` is the full-resolution image loaded onto the canvas.
514
+
515
+ ### Video Assets
516
+
517
+ Video assets use a graphic block with video fill. Include `duration` for duration display and `thumbUri` for the library thumbnail.
518
+
519
+ ```typescript highlight-video-assets
520
+ // Register a custom source for video assets
521
+ engine.asset.addSource({
522
+ id: 'my-server-videos',
523
+ async findAssets(queryData) {
524
+ const filtered = filterByQuery(MOCK_VIDEOS, queryData.query);
525
+
526
+ return {
527
+ assets: filtered.map((item) => ({
528
+ id: item.id,
529
+ label: item.title,
530
+ meta: {
531
+ uri: item.url,
532
+ thumbUri: item.thumbnail,
533
+ blockType: '//ly.img.ubq/graphic',
534
+ fillType: '//ly.img.ubq/fill/video',
535
+ duration: String(item.duration)
536
+ }
537
+ })),
538
+ total: filtered.length,
539
+ currentPage: queryData.page,
540
+ nextPage: undefined
541
+ };
542
+ }
543
+ });
544
+ ```
545
+
546
+ The `fillType` tells CE.SDK how to render the asset. Use `//ly.img.ubq/fill/video` for video content. The `duration` metadata enables proper duration display when working with video scenes.
547
+
548
+ ### Audio Assets
549
+
550
+ Audio assets require the `mimeType` property for the asset library to display the play button overlay.
551
+
552
+ ```typescript highlight-audio-assets
553
+ // Register a custom source for audio assets
554
+ engine.asset.addSource({
555
+ id: 'my-server-audio',
556
+ async findAssets(queryData) {
557
+ const filtered = filterByQuery(MOCK_AUDIO, queryData.query);
558
+
559
+ return {
560
+ assets: filtered.map((item) => ({
561
+ id: item.id,
562
+ label: item.title,
563
+ meta: {
564
+ uri: item.url,
565
+ thumbUri: item.thumbnail,
566
+ blockType: '//ly.img.ubq/audio',
567
+ mimeType: item.mimeType,
568
+ duration: String(item.duration)
569
+ }
570
+ })),
571
+ total: filtered.length,
572
+ currentPage: queryData.page,
573
+ nextPage: undefined
574
+ };
575
+ }
576
+ });
577
+ ```
578
+
579
+ Set `blockType` to `//ly.img.ubq/audio` for audio content. The `mimeType` (e.g., `audio/x-m4a` or `audio/mpeg`) is required for preview playback in the asset library. Include `duration` for duration display.
580
+
581
+ ### Sticker Assets
582
+
583
+ Stickers are image overlays that users can place on the canvas. They use the same structure as images but include `kind: 'sticker'` to differentiate them in the UI.
584
+
585
+ ```typescript highlight-sticker-assets
586
+ // Register a custom source for sticker assets (PNG/SVG overlays)
587
+ engine.asset.addSource({
588
+ id: 'my-server-stickers',
589
+ async findAssets(queryData) {
590
+ const filtered = filterByQuery(MOCK_STICKERS, queryData.query);
591
+
592
+ return {
593
+ assets: filtered.map((item) => ({
594
+ id: item.id,
595
+ label: item.title,
596
+ meta: {
597
+ uri: item.url,
598
+ thumbUri: item.thumbnail,
599
+ blockType: '//ly.img.ubq/graphic',
600
+ fillType: '//ly.img.ubq/fill/image',
601
+ kind: 'sticker',
602
+ width: item.width,
603
+ height: item.height
604
+ }
605
+ })),
606
+ total: filtered.length,
607
+ currentPage: queryData.page,
608
+ nextPage: undefined
609
+ };
610
+ }
611
+ });
612
+ ```
613
+
614
+ The `kind` property tells CE.SDK to treat this asset as a sticker rather than a regular image. Stickers typically don't support cropping and have limited editing options compared to images.
615
+
616
+ ### Template Assets
617
+
618
+ Templates are complete scenes that users can load as starting points. Use a local source with a custom `applyAsset` function to load scenes from URLs.
619
+
620
+ ```typescript highlight-template-assets
621
+ // Register a custom source for scene templates
622
+ engine.asset.addLocalSource('my-server-templates', undefined, async (asset) => {
623
+ if (asset.meta?.uri) {
624
+ await engine.scene.loadFromURL(asset.meta.uri as string);
625
+ }
626
+ return undefined;
627
+ });
628
+
629
+ // Add video templates to the source
630
+ for (const template of MOCK_TEMPLATES) {
631
+ engine.asset.addAssetToSource('my-server-templates', {
632
+ id: template.id,
633
+ label: { en: template.title },
634
+ meta: { uri: template.url, thumbUri: template.thumbnail }
635
+ });
636
+ }
637
+ ```
638
+
639
+ Templates require a custom `applyAsset` callback because they replace the entire scene rather than adding a block. The `meta.uri` should point to a `.scene` file, and `meta.thumbUri` provides the preview thumbnail.
640
+
641
+ ## Loading Assets from JSON
642
+
643
+ For static asset collections that don't change frequently, load assets from a JSON manifest file hosted on your CDN.
644
+
645
+ ```typescript highlight-json-source
646
+ // Load static assets from a JSON manifest file
647
+ await engine.asset.addLocalAssetSourceFromJSONURI(
648
+ 'https://cdn.img.ly/assets/v1/ly.img.sticker/content.json'
649
+ );
650
+ ```
651
+
652
+ The JSON file should contain asset definitions with `id` and `meta` properties. Use the `{{base_url}}` placeholder in URLs to resolve paths relative to the JSON file's location. This pattern works well for brand assets, stickers, icons, and templates.
653
+
654
+ ## Displaying Assets in the UI
655
+
656
+ Connect your asset sources to the CE.SDK asset library panel using the UI API.
657
+
658
+ ### Add an Asset Library Entry
659
+
660
+ Create a library entry that combines one or more asset sources into a single panel tab.
661
+
662
+ ```typescript highlight-asset-library-entry
663
+ // Add a custom entry to the asset library panel
664
+ cesdk.ui.addAssetLibraryEntry({
665
+ id: 'my-server-assets',
666
+ sourceIds: [
667
+ 'my-server-images',
668
+ 'my-server-videos',
669
+ 'my-server-audio',
670
+ 'my-server-stickers',
671
+ 'my-server-templates'
672
+ ],
673
+ title: ({ sourceId }) => SOURCE_TITLES[sourceId ?? ''] ?? 'My Server',
674
+ gridColumns: 3,
675
+ gridItemHeight: 'square'
676
+ });
677
+
678
+ // Add a dock button for "My Server" as the first item with a separator
679
+ cesdk.ui.setComponentOrder({ in: 'ly.img.dock' }, [
680
+ 'my-server-assets.dock',
681
+ 'ly.img.separator',
682
+ ...cesdk.ui.getComponentOrder({ in: 'ly.img.dock' })
683
+ ]);
684
+
685
+ cesdk.ui.registerComponent(
686
+ 'my-server-assets.dock',
687
+ ({ builder: { Button } }) => {
688
+ Button('my-server-dock-button', {
689
+ label: 'My Server',
690
+ onClick: () => {
691
+ cesdk.ui.openPanel('//ly.img.panel/assetLibrary', {
692
+ payload: { entries: ['my-server-assets'] }
693
+ });
694
+ }
695
+ });
696
+ }
697
+ );
698
+ ```
699
+
700
+ The `sourceIds` array lists which asset sources appear in this library entry. Use a title function to display descriptive names for each source. Configure `gridColumns` and `gridItemHeight` to control the thumbnail grid layout.
701
+
702
+ The code also adds a custom dock button using `cesdk.ui.registerComponent()` that opens the asset library panel with your custom entry. Use `cesdk.ui.setComponentOrder({ in: 'ly.img.dock' }, order)` to place the button at the start of the dock with a separator, preserving all default icons (Templates, Videos, Audio, Images, etc.).
703
+
704
+ ## Server Architecture Considerations
705
+
706
+ Backend configuration affects asset loading reliability and performance.
707
+
708
+ **CORS Configuration**: Configure CORS headers to allow requests from your editor domain. Both asset URLs and API endpoints need CORS headers. For development, allow `localhost`. For production, restrict to your editor's domain.
709
+
710
+ **Authentication**: Pass authentication tokens in the `findAssets` callback via custom headers. For protected assets, use signed URLs that include temporary access tokens in the URL itself.
711
+
712
+ **Thumbnail Strategy**: Generate 512px width thumbnails server-side for optimal library performance. Return the thumbnail URL in `meta.thumbUri`. The full-resolution asset goes in `meta.uri`.
713
+
714
+ **CDN and Caching**: Use a CDN for asset delivery to minimize latency. Set appropriate cache headers for thumbnails (long TTL) and dynamic content (shorter TTL or revalidation).
715
+
716
+ ## Troubleshooting
717
+
718
+ Common issues when serving assets from your server.
719
+
720
+ **Assets Not Appearing**: Verify `findAssets` returns the correct structure with `assets`, `total`, `currentPage`, and `nextPage`. Check that each asset has a valid `id` and `meta.uri`. Ensure the source is connected to the UI via `cesdk.ui.addAssetLibraryEntry()`.
721
+
722
+ **Images Not Loading**: Check CORS headers include your editor domain. Verify `meta.uri` URLs are accessible from the browser. Open the browser network tab to see specific error responses.
723
+
724
+ **Search Not Working**: Confirm `findAssets` reads `queryData.query` and forwards the search term to your backend. The callback runs on every keystroke, so debounce server requests if needed.
725
+
726
+ **Pagination Issues**: Set `nextPage` to `undefined` when there are no more results. Ensure `total` reflects the complete result count, not just the current page. Verify `perPage` matches your API's page size.
727
+
728
+ ## API Reference
729
+
730
+ | Method | Purpose |
731
+ | ---------------------------------------------------------- | -------------------------------------- |
732
+ | `engine.asset.addSource()` | Register custom source with findAssets |
733
+ | `engine.asset.addLocalSource()` | Register source with custom applyAsset |
734
+ | `engine.asset.addLocalAssetSourceFromJSONURI()` | Load assets from hosted JSON manifest |
735
+ | `cesdk.ui.addAssetLibraryEntry()` | Add entry to asset library panel |
736
+ | `cesdk.ui.registerComponent()` | Register custom dock button component |
737
+ | `cesdk.ui.setComponentOrder({ in: 'ly.img.dock' }, order)` | Configure dock button order |
738
+
739
+ | Metadata Property | Purpose |
740
+ | ---------------------------- | ------------------------------- |
741
+ | `meta.uri` | Full asset URL for canvas |
742
+ | `meta.thumbUri` | Thumbnail URL for asset library |
743
+ | `meta.blockType` | Block type (graphic, audio) |
744
+ | `meta.fillType` | Fill type (image, video) |
745
+ | `meta.kind` | Asset kind (sticker) |
746
+ | `meta.mimeType` | MIME type (required for audio) |
747
+ | `meta.duration` | Duration for video/audio |
748
+ | `meta.width` / `meta.height` | Dimensions for aspect ratio |
749
+
750
+ ## Next Steps
751
+
752
+ - [User Upload](./import-media/from-local-source/user-upload.md) — Handle file uploads with progress tracking
753
+ - [Asset Concepts](./import-media/concepts.md) — Asset sources and metadata architecture
754
+ - [Thumbnails](./import-media/asset-panel/thumbnails.md) — Configure thumbnail display and preview URIs
755
+ - [Customize Asset Library](./import-media/asset-panel/customize.md) — UI customization options
756
+
757
+ ---
758
+
759
+ ## More Resources
760
+
761
+ - **[Vanilla JS/TS Documentation Index](https://img.ly/docs/cesdk/js.md)** - Browse all Vanilla JS/TS documentation
762
+ - **[Complete Documentation](./llms-full.txt.md)** - Full documentation in one file (for LLMs)
763
+ - **[Web Documentation](./js.md)** - Interactive documentation with examples
764
+ - **[Support](mailto:support@img.ly)** - Contact IMG.LY support