@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,641 @@
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) > [Fills](./fills.md) > [Video](./fills/video.md)
4
+
5
+ ---
6
+
7
+ Apply motion content to design elements by filling shapes, backgrounds, and
8
+ text with videos using CE.SDK's video fill system.
9
+
10
+ ![CE.SDK video fills example showing a 3x3 grid with video content applied to different blocks including rectangles, ellipse, and opacity variations](https://img.ly/docs/cesdk/./assets/browser.hero.webp)
11
+
12
+ > **Reading time:** 15 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-fills-video-browser)
18
+ > - [Open in StackBlitz](https://stackblitz.com/github/imgly/cesdk-web-examples/tree/v$UBQ_VERSION$/guides-fills-video-browser)
19
+ > - [Live demo](https://img.ly/docs/cesdk/examples/guides-fills-video-browser/)
20
+
21
+ Understanding the distinction between **video fills** and **video blocks** is essential. Video fills are fill objects that can be applied to any block supporting fills—shapes, text, backgrounds—to paint them with video content. Video blocks, created with `addVideo()`, are dedicated time-based blocks with full editing capabilities like trimming and duration control. Video fills focus on applying video as a visual treatment, while video blocks provide complete video editing functionality.
22
+
23
+ ```typescript file=@cesdk_web_examples/guides-fills-video-browser/browser.ts reference-only
24
+ import type {
25
+ CreativeEngine,
26
+ EditorPlugin,
27
+ EditorPluginContext
28
+ } from '@cesdk/cesdk-js';
29
+ import packageJson from './package.json';
30
+
31
+ import {
32
+ BlurAssetSource,
33
+ CaptionPresetsAssetSource,
34
+ ColorPaletteAssetSource,
35
+ CropPresetsAssetSource,
36
+ DemoAssetSources,
37
+ EffectsAssetSource,
38
+ FiltersAssetSource,
39
+ PagePresetsAssetSource,
40
+ StickerAssetSource,
41
+ TextAssetSource,
42
+ TextComponentAssetSource,
43
+ TypefaceAssetSource,
44
+ UploadAssetSources,
45
+ VectorShapeAssetSource
46
+ } from '@cesdk/cesdk-js/plugins';
47
+ import { VideoEditorConfig } from './video-editor/plugin';
48
+ import { calculateGridLayout } from './utils';
49
+
50
+ /**
51
+ * CE.SDK Plugin: Video Fills Guide
52
+ *
53
+ * Demonstrates video fills in CE.SDK:
54
+ * - Creating video fills
55
+ * - Setting video sources (single URI and source sets)
56
+ * - Applying video fills to blocks
57
+ * - Content fill modes (Cover, Contain)
58
+ * - Loading video resources
59
+ * - Getting video thumbnails
60
+ * - Different use cases (backgrounds, shapes, text)
61
+ */
62
+ class Example implements EditorPlugin {
63
+ name = packageJson.name;
64
+ version = packageJson.version;
65
+
66
+ async initialize({ cesdk }: EditorPluginContext): Promise<void> {
67
+ if (!cesdk) {
68
+ throw new Error('CE.SDK instance is required for this plugin');
69
+ }
70
+
71
+ await cesdk.addPlugin(new VideoEditorConfig());
72
+
73
+ // Add asset source plugins
74
+ await cesdk.addPlugin(new BlurAssetSource());
75
+ await cesdk.addPlugin(new CaptionPresetsAssetSource());
76
+ await cesdk.addPlugin(new ColorPaletteAssetSource());
77
+ await cesdk.addPlugin(new CropPresetsAssetSource());
78
+ await cesdk.addPlugin(
79
+ new UploadAssetSources({
80
+ include: [
81
+ 'ly.img.image.upload',
82
+ 'ly.img.video.upload',
83
+ 'ly.img.audio.upload'
84
+ ]
85
+ })
86
+ );
87
+ await cesdk.addPlugin(
88
+ new DemoAssetSources({
89
+ include: [
90
+ 'ly.img.templates.video.*',
91
+ 'ly.img.image.*',
92
+ 'ly.img.audio.*',
93
+ 'ly.img.video.*'
94
+ ]
95
+ })
96
+ );
97
+ await cesdk.addPlugin(new EffectsAssetSource());
98
+ await cesdk.addPlugin(new FiltersAssetSource());
99
+ await cesdk.addPlugin(
100
+ new PagePresetsAssetSource({
101
+ include: [
102
+ 'ly.img.page.presets.instagram.*',
103
+ 'ly.img.page.presets.facebook.*',
104
+ 'ly.img.page.presets.x.*',
105
+ 'ly.img.page.presets.linkedin.*',
106
+ 'ly.img.page.presets.pinterest.*',
107
+ 'ly.img.page.presets.tiktok.*',
108
+ 'ly.img.page.presets.youtube.*',
109
+ 'ly.img.page.presets.video.*'
110
+ ]
111
+ })
112
+ );
113
+ await cesdk.addPlugin(new StickerAssetSource());
114
+ await cesdk.addPlugin(new TextAssetSource());
115
+ await cesdk.addPlugin(new TextComponentAssetSource());
116
+ await cesdk.addPlugin(new TypefaceAssetSource());
117
+ await cesdk.addPlugin(new VectorShapeAssetSource());
118
+
119
+ await cesdk.actions.run('scene.create', {
120
+ layout: 'DepthStack',
121
+ page: {
122
+ sourceId: 'ly.img.page.presets',
123
+ assetId: 'ly.img.page.presets.instagram.story',
124
+ color: { r: 0, g: 0, b: 0, a: 1 }
125
+ }
126
+ });
127
+
128
+ const engine = cesdk.engine as CreativeEngine;
129
+ const pages = engine.block.findByType('page');
130
+ const page = pages.length > 0 ? pages[0] : engine.scene.get();
131
+
132
+ // Calculate responsive grid layout based on page dimensions
133
+ const pageWidth = engine.block.getWidth(page);
134
+ const pageHeight = engine.block.getHeight(page);
135
+ const layout = calculateGridLayout(pageWidth, pageHeight, 8);
136
+ const { blockWidth, blockHeight, getPosition } = layout;
137
+
138
+ // Use a sample video URL from demo assets
139
+ const videoUri = 'https://img.ly/static/ubq_video_samples/bbb.mp4';
140
+
141
+ // Create a sample block to demonstrate fill support checking
142
+ const sampleBlock = engine.block.create('graphic');
143
+ engine.block.setShape(sampleBlock, engine.block.createShape('rect'));
144
+
145
+ // Check if the block supports fills
146
+ const supportsFills = engine.block.supportsFill(sampleBlock);
147
+ // eslint-disable-next-line no-console
148
+ console.log('Block supports fills:', supportsFills); // true for graphic blocks
149
+
150
+ // Pattern #1: Demonstrate Individual Before Combined
151
+ // Create a basic video fill demonstration
152
+ const basicBlock = engine.block.create('graphic');
153
+ engine.block.setShape(basicBlock, engine.block.createShape('rect'));
154
+ engine.block.setWidth(basicBlock, blockWidth);
155
+ engine.block.setHeight(basicBlock, blockHeight);
156
+ engine.block.appendChild(page, basicBlock);
157
+
158
+ // Create a video fill
159
+ const basicVideoFill = engine.block.createFill('video');
160
+ // or using full type name: engine.block.createFill('//ly.img.ubq/fill/video');
161
+
162
+ // Set the video source URI
163
+ engine.block.setString(basicVideoFill, 'fill/video/fileURI', videoUri);
164
+
165
+ // Apply the fill to the block
166
+ engine.block.setFill(basicBlock, basicVideoFill);
167
+
168
+ // Get and verify the current fill
169
+ const fillId = engine.block.getFill(basicBlock);
170
+ const fillType = engine.block.getType(fillId);
171
+ // eslint-disable-next-line no-console
172
+ console.log('Fill type:', fillType); // '//ly.img.ubq/fill/video'
173
+
174
+ // Pattern #2: Content fill mode - Cover
175
+ // Cover mode fills entire block, may crop video to fit
176
+ const coverBlock = engine.block.create('graphic');
177
+ engine.block.setShape(coverBlock, engine.block.createShape('rect'));
178
+ engine.block.setWidth(coverBlock, blockWidth);
179
+ engine.block.setHeight(coverBlock, blockHeight);
180
+ engine.block.appendChild(page, coverBlock);
181
+
182
+ const coverVideoFill = engine.block.createFill('video');
183
+ engine.block.setString(coverVideoFill, 'fill/video/fileURI', videoUri);
184
+ engine.block.setFill(coverBlock, coverVideoFill);
185
+
186
+ // Set content fill mode to Cover
187
+ engine.block.setEnum(coverBlock, 'contentFill/mode', 'Cover');
188
+
189
+ // Get current fill mode
190
+ const coverMode = engine.block.getEnum(coverBlock, 'contentFill/mode');
191
+ // eslint-disable-next-line no-console
192
+ console.log('Cover block fill mode:', coverMode); // 'Cover'
193
+
194
+ // Content fill mode - Contain
195
+ // Contain mode fits entire video, may leave empty space
196
+ const containBlock = engine.block.create('graphic');
197
+ engine.block.setShape(containBlock, engine.block.createShape('rect'));
198
+ engine.block.setWidth(containBlock, blockWidth);
199
+ engine.block.setHeight(containBlock, blockHeight);
200
+ engine.block.appendChild(page, containBlock);
201
+
202
+ const containVideoFill = engine.block.createFill('video');
203
+ engine.block.setString(containVideoFill, 'fill/video/fileURI', videoUri);
204
+ engine.block.setFill(containBlock, containVideoFill);
205
+
206
+ // Set content fill mode to Contain
207
+ engine.block.setEnum(containBlock, 'contentFill/mode', 'Contain');
208
+
209
+ // Force load video resource to access metadata
210
+ const resourceBlock = engine.block.create('graphic');
211
+ engine.block.setShape(resourceBlock, engine.block.createShape('rect'));
212
+ engine.block.setWidth(resourceBlock, blockWidth);
213
+ engine.block.setHeight(resourceBlock, blockHeight);
214
+ engine.block.appendChild(page, resourceBlock);
215
+
216
+ const resourceVideoFill = engine.block.createFill('video');
217
+ engine.block.setString(resourceVideoFill, 'fill/video/fileURI', videoUri);
218
+ engine.block.setFill(resourceBlock, resourceVideoFill);
219
+
220
+ // Force load the video resource before accessing metadata
221
+ await engine.block.forceLoadAVResource(resourceVideoFill);
222
+
223
+ // Now we can access video metadata
224
+ const totalDuration = engine.block.getDouble(
225
+ resourceVideoFill,
226
+ 'fill/video/totalDuration'
227
+ );
228
+ // eslint-disable-next-line no-console
229
+ console.log('Video total duration:', totalDuration, 'seconds');
230
+
231
+ // Use case: Video as shape fill - Ellipse
232
+ const ellipseBlock = engine.block.create('graphic');
233
+ const ellipseShape = engine.block.createShape('//ly.img.ubq/shape/ellipse');
234
+ engine.block.setShape(ellipseBlock, ellipseShape);
235
+ engine.block.setWidth(ellipseBlock, blockWidth);
236
+ engine.block.setHeight(ellipseBlock, blockHeight);
237
+ engine.block.appendChild(page, ellipseBlock);
238
+
239
+ const ellipseVideoFill = engine.block.createFill('video');
240
+ engine.block.setString(ellipseVideoFill, 'fill/video/fileURI', videoUri);
241
+ engine.block.setFill(ellipseBlock, ellipseVideoFill);
242
+
243
+ // Advanced: Video fill with opacity
244
+ const opacityBlock = engine.block.create('graphic');
245
+ engine.block.setShape(opacityBlock, engine.block.createShape('rect'));
246
+ engine.block.setWidth(opacityBlock, blockWidth);
247
+ engine.block.setHeight(opacityBlock, blockHeight);
248
+ engine.block.appendChild(page, opacityBlock);
249
+
250
+ const opacityVideoFill = engine.block.createFill('video');
251
+ engine.block.setString(opacityVideoFill, 'fill/video/fileURI', videoUri);
252
+ engine.block.setFill(opacityBlock, opacityVideoFill);
253
+
254
+ // Set block opacity to 70%
255
+ engine.block.setFloat(opacityBlock, 'opacity', 0.7);
256
+
257
+ // Advanced: Share one video fill between multiple blocks
258
+ const sharedFill = engine.block.createFill('video');
259
+ engine.block.setString(sharedFill, 'fill/video/fileURI', videoUri);
260
+
261
+ // First block using shared fill
262
+ const sharedBlock1 = engine.block.create('graphic');
263
+ engine.block.setShape(sharedBlock1, engine.block.createShape('rect'));
264
+ engine.block.setWidth(sharedBlock1, blockWidth);
265
+ engine.block.setHeight(sharedBlock1, blockHeight);
266
+ engine.block.appendChild(page, sharedBlock1);
267
+ engine.block.setFill(sharedBlock1, sharedFill);
268
+
269
+ // Second block using the same shared fill
270
+ const sharedBlock2 = engine.block.create('graphic');
271
+ engine.block.setShape(sharedBlock2, engine.block.createShape('rect'));
272
+ engine.block.setWidth(sharedBlock2, blockWidth * 0.8); // Slightly smaller
273
+ engine.block.setHeight(sharedBlock2, blockHeight * 0.8);
274
+ engine.block.appendChild(page, sharedBlock2);
275
+ engine.block.setFill(sharedBlock2, sharedFill);
276
+
277
+ // eslint-disable-next-line no-console
278
+ console.log(
279
+ 'Shared fill - Two blocks using the same video fill instance for memory efficiency'
280
+ );
281
+
282
+ // ===== Position all blocks in grid layout =====
283
+ const blocks = [
284
+ basicBlock, // Position 0
285
+ coverBlock, // Position 1
286
+ containBlock, // Position 2
287
+ resourceBlock, // Position 3
288
+ ellipseBlock, // Position 4
289
+ opacityBlock, // Position 5
290
+ sharedBlock1, // Position 6
291
+ sharedBlock2 // Position 7
292
+ ];
293
+
294
+ blocks.forEach((block, index) => {
295
+ const pos = getPosition(index);
296
+ engine.block.setPositionX(block, pos.x);
297
+ engine.block.setPositionY(block, pos.y);
298
+ });
299
+
300
+ // Select the first block so users can see the fill in action
301
+ engine.block.setSelected(basicBlock, true);
302
+
303
+ // Set playback time to 2 seconds to show video content
304
+ engine.block.setPlaybackTime(page, 2);
305
+
306
+ // Start playback automatically
307
+ try {
308
+ engine.block.setPlaying(page, true);
309
+ // eslint-disable-next-line no-console
310
+ console.log(
311
+ 'Video fills guide initialized. Playback started. Demonstrating various video fill techniques across the grid.'
312
+ );
313
+ } catch (error) {
314
+ // eslint-disable-next-line no-console
315
+ console.log(
316
+ 'Video fills guide initialized. Click play to start video playback (browser autoplay restriction).'
317
+ );
318
+ }
319
+ }
320
+ }
321
+
322
+ export default Example;
323
+ ```
324
+
325
+ This guide covers how to create video fills, apply them to blocks, configure fill modes, and work with video resources programmatically.
326
+
327
+ ## Understanding Video Fills
328
+
329
+ ### What is a Video Fill?
330
+
331
+ A video fill is a fill object that paints a design block with video content. Like color and image fills, video fills are part of CE.SDK's broader fill system.
332
+
333
+ Video fills are identified by the type `'//ly.img.ubq/fill/video'` or the short form `'video'`. They contain properties for the video source, positioning, scaling, and playback behavior.
334
+
335
+ ### Video Fill vs Video Blocks
336
+
337
+ **Video fills** are fill objects created with `createFill('video')` and applied to blocks with `setFill()`. You can use them to fill shapes with video content, create video backgrounds, or add video textures to text.
338
+
339
+ **Video blocks** are created with the convenience method `addVideo()` and come pre-configured with time-based properties including trim support, duration, and playback time. Use video blocks when you need features like trimming, duration adjustment, and precise playback control.
340
+
341
+ For this guide, we focus on video fills—applying video content as a fill to design elements. For video editing workflows, see the [Trim Video guide](./edit-video/trim.md).
342
+
343
+ ## Checking Video Fill Support
344
+
345
+ Before applying video fills, verify that blocks support fills.
346
+
347
+ ```typescript highlight-check-fill-support
348
+ // Create a sample block to demonstrate fill support checking
349
+ const sampleBlock = engine.block.create('graphic');
350
+ engine.block.setShape(sampleBlock, engine.block.createShape('rect'));
351
+
352
+ // Check if the block supports fills
353
+ const supportsFills = engine.block.supportsFill(sampleBlock);
354
+ // eslint-disable-next-line no-console
355
+ console.log('Block supports fills:', supportsFills); // true for graphic blocks
356
+ ```
357
+
358
+ Graphic blocks, shapes, and text blocks typically support fills. Pages and scenes don't. Always check `supportsFill()` before attempting to apply video fills to prevent errors.
359
+
360
+ ## Creating Video Fills
361
+
362
+ ### Creating Video Fills
363
+
364
+ Creating a video fill involves three steps: create the fill object, set the video source, and apply it to a block.
365
+
366
+ ```typescript highlight-create-video-fill
367
+ // Pattern #1: Demonstrate Individual Before Combined
368
+ // Create a basic video fill demonstration
369
+ const basicBlock = engine.block.create('graphic');
370
+ engine.block.setShape(basicBlock, engine.block.createShape('rect'));
371
+ engine.block.setWidth(basicBlock, blockWidth);
372
+ engine.block.setHeight(basicBlock, blockHeight);
373
+ engine.block.appendChild(page, basicBlock);
374
+
375
+ // Create a video fill
376
+ const basicVideoFill = engine.block.createFill('video');
377
+ // or using full type name: engine.block.createFill('//ly.img.ubq/fill/video');
378
+
379
+ // Set the video source URI
380
+ engine.block.setString(basicVideoFill, 'fill/video/fileURI', videoUri);
381
+
382
+ // Apply the fill to the block
383
+ engine.block.setFill(basicBlock, basicVideoFill);
384
+ ```
385
+
386
+ The video fill exists independently until you attach it to a block. This allows you to configure the fill completely before applying it. Once applied, the fill paints the block with the video content.
387
+
388
+ ### Getting Current Fill Information
389
+
390
+ We can retrieve the current fill from a block and inspect its type to verify it's a video fill.
391
+
392
+ ```typescript highlight-get-current-fill
393
+ // Get and verify the current fill
394
+ const fillId = engine.block.getFill(basicBlock);
395
+ const fillType = engine.block.getType(fillId);
396
+ // eslint-disable-next-line no-console
397
+ console.log('Fill type:', fillType); // '//ly.img.ubq/fill/video'
398
+ ```
399
+
400
+ This is useful when building UIs that need to adapt based on the current fill type or when implementing undo/redo functionality that tracks fill changes.
401
+
402
+ ## Content Fill Modes
403
+
404
+ Content fill modes control how video scales and positions within blocks. The two primary modes are Cover and Contain, each suited to different use cases.
405
+
406
+ ### Cover Mode
407
+
408
+ Cover mode fills the entire block with video while maintaining the video's aspect ratio. If the aspect ratios don't match, CE.SDK crops portions of the video to ensure no empty space appears in the block.
409
+
410
+ ```typescript highlight-fill-mode-cover
411
+ // Pattern #2: Content fill mode - Cover
412
+ // Cover mode fills entire block, may crop video to fit
413
+ const coverBlock = engine.block.create('graphic');
414
+ engine.block.setShape(coverBlock, engine.block.createShape('rect'));
415
+ engine.block.setWidth(coverBlock, blockWidth);
416
+ engine.block.setHeight(coverBlock, blockHeight);
417
+ engine.block.appendChild(page, coverBlock);
418
+
419
+ const coverVideoFill = engine.block.createFill('video');
420
+ engine.block.setString(coverVideoFill, 'fill/video/fileURI', videoUri);
421
+ engine.block.setFill(coverBlock, coverVideoFill);
422
+
423
+ // Set content fill mode to Cover
424
+ engine.block.setEnum(coverBlock, 'contentFill/mode', 'Cover');
425
+
426
+ // Get current fill mode
427
+ const coverMode = engine.block.getEnum(coverBlock, 'contentFill/mode');
428
+ // eslint-disable-next-line no-console
429
+ console.log('Cover block fill mode:', coverMode); // 'Cover'
430
+ ```
431
+
432
+ Use Cover mode for background videos, full-frame video content, and situations where visual consistency matters more than showing the entire video. It guarantees no empty space but may crop content.
433
+
434
+ ### Contain Mode
435
+
436
+ Contain mode fits the entire video within the block while maintaining aspect ratio. If aspect ratios don't match, CE.SDK adds empty space to preserve the full video visibility.
437
+
438
+ ```typescript highlight-fill-mode-contain
439
+ // Content fill mode - Contain
440
+ // Contain mode fits entire video, may leave empty space
441
+ const containBlock = engine.block.create('graphic');
442
+ engine.block.setShape(containBlock, engine.block.createShape('rect'));
443
+ engine.block.setWidth(containBlock, blockWidth);
444
+ engine.block.setHeight(containBlock, blockHeight);
445
+ engine.block.appendChild(page, containBlock);
446
+
447
+ const containVideoFill = engine.block.createFill('video');
448
+ engine.block.setString(containVideoFill, 'fill/video/fileURI', videoUri);
449
+ engine.block.setFill(containBlock, containVideoFill);
450
+
451
+ // Set content fill mode to Contain
452
+ engine.block.setEnum(containBlock, 'contentFill/mode', 'Contain');
453
+ ```
454
+
455
+ Use Contain mode when the entire video must remain visible—presentations, product demos, or content where cropping would lose important information. Empty space is acceptable to preserve complete visibility.
456
+
457
+ ## Loading Video Resources
458
+
459
+ Before accessing video metadata like duration or dimensions, you must force load the video resource. This ensures CE.SDK has downloaded the necessary information.
460
+
461
+ ```typescript highlight-force-load-resource
462
+ // Force load video resource to access metadata
463
+ const resourceBlock = engine.block.create('graphic');
464
+ engine.block.setShape(resourceBlock, engine.block.createShape('rect'));
465
+ engine.block.setWidth(resourceBlock, blockWidth);
466
+ engine.block.setHeight(resourceBlock, blockHeight);
467
+ engine.block.appendChild(page, resourceBlock);
468
+
469
+ const resourceVideoFill = engine.block.createFill('video');
470
+ engine.block.setString(resourceVideoFill, 'fill/video/fileURI', videoUri);
471
+ engine.block.setFill(resourceBlock, resourceVideoFill);
472
+
473
+ // Force load the video resource before accessing metadata
474
+ await engine.block.forceLoadAVResource(resourceVideoFill);
475
+
476
+ // Now we can access video metadata
477
+ const totalDuration = engine.block.getDouble(
478
+ resourceVideoFill,
479
+ 'fill/video/totalDuration'
480
+ );
481
+ // eslint-disable-next-line no-console
482
+ console.log('Video total duration:', totalDuration, 'seconds');
483
+ ```
484
+
485
+ Skipping this step causes errors when trying to access metadata. Videos load asynchronously, so `forceLoadAVResource` ensures the metadata is available before you query it.
486
+
487
+ Once loaded, you can access properties like `fill/video/totalDuration` to get the video length in seconds. This information helps you build UI previews or validate user input.
488
+
489
+ ## Common Use Cases
490
+
491
+ ### Video as Shape Fill
492
+
493
+ Video fills aren't limited to rectangles. You can fill any shape with video content.
494
+
495
+ ```typescript highlight-video-shape-fill
496
+ // Use case: Video as shape fill - Ellipse
497
+ const ellipseBlock = engine.block.create('graphic');
498
+ const ellipseShape = engine.block.createShape('//ly.img.ubq/shape/ellipse');
499
+ engine.block.setShape(ellipseBlock, ellipseShape);
500
+ engine.block.setWidth(ellipseBlock, blockWidth);
501
+ engine.block.setHeight(ellipseBlock, blockHeight);
502
+ engine.block.appendChild(page, ellipseBlock);
503
+
504
+ const ellipseVideoFill = engine.block.createFill('video');
505
+ engine.block.setString(ellipseVideoFill, 'fill/video/fileURI', videoUri);
506
+ engine.block.setFill(ellipseBlock, ellipseVideoFill);
507
+ ```
508
+
509
+ Ellipse shapes, polygons, stars, and custom paths all support video fills. The video content fills the shape boundary, masking the video.
510
+
511
+ ### Video with Opacity
512
+
513
+ Control the transparency of video-filled blocks to create overlay effects or blend video content with backgrounds.
514
+
515
+ ```typescript highlight-opacity
516
+ // Advanced: Video fill with opacity
517
+ const opacityBlock = engine.block.create('graphic');
518
+ engine.block.setShape(opacityBlock, engine.block.createShape('rect'));
519
+ engine.block.setWidth(opacityBlock, blockWidth);
520
+ engine.block.setHeight(opacityBlock, blockHeight);
521
+ engine.block.appendChild(page, opacityBlock);
522
+
523
+ const opacityVideoFill = engine.block.createFill('video');
524
+ engine.block.setString(opacityVideoFill, 'fill/video/fileURI', videoUri);
525
+ engine.block.setFill(opacityBlock, opacityVideoFill);
526
+
527
+ // Set block opacity to 70%
528
+ engine.block.setFloat(opacityBlock, 'opacity', 0.7);
529
+ ```
530
+
531
+ Opacity affects the entire block, including its video fill. This technique creates semi-transparent video overlays, watermarks, or layered compositions where video content blends with other elements.
532
+
533
+ ## Additional Techniques
534
+
535
+ ### Sharing Video Fills
536
+
537
+ Memory efficiency improves when multiple blocks share a single video fill instance. Changes to the shared fill affect all blocks using it.
538
+
539
+ ```typescript highlight-shared-fill
540
+ // Advanced: Share one video fill between multiple blocks
541
+ const sharedFill = engine.block.createFill('video');
542
+ engine.block.setString(sharedFill, 'fill/video/fileURI', videoUri);
543
+
544
+ // First block using shared fill
545
+ const sharedBlock1 = engine.block.create('graphic');
546
+ engine.block.setShape(sharedBlock1, engine.block.createShape('rect'));
547
+ engine.block.setWidth(sharedBlock1, blockWidth);
548
+ engine.block.setHeight(sharedBlock1, blockHeight);
549
+ engine.block.appendChild(page, sharedBlock1);
550
+ engine.block.setFill(sharedBlock1, sharedFill);
551
+
552
+ // Second block using the same shared fill
553
+ const sharedBlock2 = engine.block.create('graphic');
554
+ engine.block.setShape(sharedBlock2, engine.block.createShape('rect'));
555
+ engine.block.setWidth(sharedBlock2, blockWidth * 0.8); // Slightly smaller
556
+ engine.block.setHeight(sharedBlock2, blockHeight * 0.8);
557
+ engine.block.appendChild(page, sharedBlock2);
558
+ engine.block.setFill(sharedBlock2, sharedFill);
559
+
560
+ // eslint-disable-next-line no-console
561
+ console.log(
562
+ 'Shared fill - Two blocks using the same video fill instance for memory efficiency'
563
+ );
564
+ ```
565
+
566
+ This pattern reduces memory usage when the same video appears multiple times in a composition. It's particularly useful for repeated elements like watermarks or background patterns.
567
+
568
+ Shared fills play back synchronized—all blocks display the same frame at the same time during playback. This ensures visual consistency across multiple elements.
569
+
570
+ ## Troubleshooting
571
+
572
+ ### Video Not Visible
573
+
574
+ If your video fill doesn't appear, check several common causes. Verify the fill is enabled with `isFillEnabled(block)`. Ensure the video URL is accessible—CORS restrictions on web platforms can block video loading. Confirm the block has valid dimensions (width and height greater than zero) and exists in the scene hierarchy.
575
+
576
+ Check that the video format is supported on your platform. MP4 with H.264 encoding works reliably across platforms, while other codecs may have limited support.
577
+
578
+ ### Cannot Create Video Fill
579
+
580
+ If creating a video fill throws an error, verify the block supports fills using `engine.block.supportsFill(block)` and that the block is part of a valid scene hierarchy.
581
+
582
+ ### Video Not Loading
583
+
584
+ When videos fail to load, verify network connectivity for remote URLs. Check CORS headers—web browsers enforce cross-origin restrictions that can block video access. Validate the URI format uses `https://` for remote videos or appropriate schemes for local files.
585
+
586
+ Test with a known working video URL to isolate whether the issue is with your specific video or a broader configuration problem. Check the browser console for detailed error messages.
587
+
588
+ ### Memory Leaks
589
+
590
+ Always destroy replaced fills to prevent memory leaks. When changing a block's fill, retrieve the old fill with `getFill()`, assign the new fill with `setFill()`, then destroy the old fill with `destroy()`.
591
+
592
+ Don't create fills without attaching them to blocks—unattached fills remain in memory indefinitely. Clean up shared fills when no blocks reference them anymore.
593
+
594
+ ### Performance Issues
595
+
596
+ Video playback is resource-intensive. Use appropriately sized videos—avoid massive files that strain decoding hardware. Consider lower resolutions for editing with high-resolution sources reserved for export.
597
+
598
+ Limit the number of simultaneously playing videos, especially on mobile devices. Too many concurrent video decodes overwhelm device capabilities. Compress videos before use to reduce file sizes and improve loading times.
599
+
600
+ ## API Reference
601
+
602
+ | Method | Description |
603
+ | ----------------------------------------- | -------------------------------- |
604
+ | `createFill('video')` | Create a new video fill object |
605
+ | `setFill(block, fill)` | Assign fill to a block |
606
+ | `getFill(block)` | Get the fill ID from a block |
607
+ | `setString(fill, property, value)` | Set video URI property |
608
+ | `getString(fill, property)` | Get current video URI |
609
+ | `setSourceSet(fill, property, sources)` | Set responsive video sources |
610
+ | `getSourceSet(fill, property)` | Get current source set |
611
+ | `setEnum(block, property, value)` | Set content fill mode |
612
+ | `getEnum(block, property)` | Get current fill mode |
613
+ | `setFillEnabled(block, enabled)` | Enable or disable fill rendering |
614
+ | `isFillEnabled(block)` | Check if fill is enabled |
615
+ | `supportsFill(block)` | Check if block supports fills |
616
+ | `forceLoadAVResource(fill)` | Force load video metadata |
617
+ | `getVideoFillThumbnail(fill, height)` | Get single thumbnail frame |
618
+ | `adjustCropToFillFrame(block, fillIndex)` | Adjust crop to fill frame |
619
+
620
+ ### Video Fill Properties
621
+
622
+ | Property | Type | Description |
623
+ | -------------------------- | ------------ | ------------------------------------------- |
624
+ | `fill/video/fileURI` | String | Single video URI (URL, data URI, file path) |
625
+ | `fill/video/sourceSet` | SourceSet\[] | Array of responsive video sources |
626
+ | `fill/video/totalDuration` | Double | Total duration of video in seconds |
627
+
628
+ ### Content Fill Properties
629
+
630
+ | Property | Type | Values | Description |
631
+ | ------------------ | ---- | ------------------ | ----------------------------- |
632
+ | `contentFill/mode` | Enum | 'Cover', 'Contain' | How video scales within block |
633
+
634
+ ---
635
+
636
+ ## More Resources
637
+
638
+ - **[Vanilla JS/TS Documentation Index](https://img.ly/docs/cesdk/js.md)** - Browse all Vanilla JS/TS documentation
639
+ - **[Complete Documentation](./llms-full.txt.md)** - Full documentation in one file (for LLMs)
640
+ - **[Web Documentation](./js.md)** - Interactive documentation with examples
641
+ - **[Support](mailto:support@img.ly)** - Contact IMG.LY support
@@ -0,0 +1,24 @@
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) > [Fills](./fills.md)
4
+
5
+ ---
6
+
7
+ ---
8
+
9
+ ## Related Pages
10
+
11
+ - [Fills](./fills/overview.md) - Apply solid colors, gradients, images, or videos as fills to shapes, text, and other design elements.
12
+ - [Color Fills](./fills/color.md) - Learn how to apply solid color fills to design elements using RGB, CMYK, and Spot Colors in CE.SDK
13
+ - [Gradient Fills](./filters-and-effects/gradients.md) - Learn how to create and apply linear, radial, and conical gradient fills to design elements in CE.SDK
14
+ - [Image Fills](./fills/image.md) - Apply photos, textures, and patterns to design elements using image fills in CE.SDK for web browsers.
15
+ - [Video Fills](./fills/video.md) - Learn how to apply video content as fills to design elements in CE.SDK.
16
+
17
+ ---
18
+
19
+ ## More Resources
20
+
21
+ - **[Vanilla JS/TS Documentation Index](https://img.ly/docs/cesdk/js.md)** - Browse all Vanilla JS/TS documentation
22
+ - **[Complete Documentation](./llms-full.txt.md)** - Full documentation in one file (for LLMs)
23
+ - **[Web Documentation](./js.md)** - Interactive documentation with examples
24
+ - **[Support](mailto:support@img.ly)** - Contact IMG.LY support