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