@imgly/codesign-mcp 0.1.5 → 0.1.6

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 (973) hide show
  1. package/README.md +51 -1
  2. package/assets/docs/guide/SKILL.md +45 -53
  3. package/assets/docs/guide/animation/create/base.md +234 -243
  4. package/assets/docs/guide/animation/create/text.md +250 -231
  5. package/assets/docs/guide/animation/create.md +197 -231
  6. package/assets/docs/guide/animation/edit.md +196 -271
  7. package/assets/docs/guide/animation/types.md +182 -185
  8. package/assets/docs/guide/animation.md +9 -6
  9. package/assets/docs/guide/api/AssetAPI.md +7 -53
  10. package/assets/docs/guide/api/BlockAPI.md +725 -648
  11. package/assets/docs/guide/api/CreativeEngine.md +7 -16
  12. package/assets/docs/guide/api/EditorAPI.md +32 -93
  13. package/assets/docs/guide/api/EventAPI.md +1 -2
  14. package/assets/docs/guide/api/SceneAPI.md +47 -98
  15. package/assets/docs/guide/api/VariableAPI.md +1 -4
  16. package/assets/docs/guide/api/node/classes/assetapi.md +1090 -0
  17. package/assets/docs/guide/api/node/classes/blockapi.md +12965 -0
  18. package/assets/docs/guide/api/node/classes/creativeengine.md +319 -0
  19. package/assets/docs/guide/api/node/classes/editorapi.md +3417 -0
  20. package/assets/docs/guide/api/node/classes/engineactions.md +319 -0
  21. package/assets/docs/guide/api/node/classes/eventapi.md +56 -0
  22. package/assets/docs/guide/api/node/classes/sceneapi.md +1370 -0
  23. package/assets/docs/guide/api/node/classes/variableapi.md +143 -0
  24. package/assets/docs/guide/api/node/enumerations/compressionformat.md +23 -0
  25. package/assets/docs/guide/api/node/enumerations/compressionlevel.md +24 -0
  26. package/assets/docs/guide/api/node/functions/iscmykcolor.md +30 -0
  27. package/assets/docs/guide/api/node/functions/isrgbacolor.md +30 -0
  28. package/assets/docs/guide/api/node/functions/isspotcolor.md +30 -0
  29. package/assets/docs/guide/api/node/interfaces/addvideooptions.md +31 -0
  30. package/assets/docs/guide/api/node/interfaces/applyassetoptions.md +31 -0
  31. package/assets/docs/guide/api/node/interfaces/asset.md +30 -0
  32. package/assets/docs/guide/api/node/interfaces/assetbooleanproperty.md +25 -0
  33. package/assets/docs/guide/api/node/interfaces/assetcmykcolor.md +26 -0
  34. package/assets/docs/guide/api/node/interfaces/assetcolorproperty.md +25 -0
  35. package/assets/docs/guide/api/node/interfaces/assetcontentaspectratio.md +23 -0
  36. package/assets/docs/guide/api/node/interfaces/assetdefinition.md +31 -0
  37. package/assets/docs/guide/api/node/interfaces/assetenumproperty.md +26 -0
  38. package/assets/docs/guide/api/node/interfaces/assetfixedaspectratio.md +24 -0
  39. package/assets/docs/guide/api/node/interfaces/assetfixedsize.md +25 -0
  40. package/assets/docs/guide/api/node/interfaces/assetfreeaspectratio.md +22 -0
  41. package/assets/docs/guide/api/node/interfaces/assetnumberproperty.md +28 -0
  42. package/assets/docs/guide/api/node/interfaces/assetpayload.md +27 -0
  43. package/assets/docs/guide/api/node/interfaces/assetquerydata.md +32 -0
  44. package/assets/docs/guide/api/node/interfaces/assetresult.md +46 -0
  45. package/assets/docs/guide/api/node/interfaces/assetrgbcolor.md +25 -0
  46. package/assets/docs/guide/api/node/interfaces/assetsource.md +111 -0
  47. package/assets/docs/guide/api/node/interfaces/assetspotcolor.md +25 -0
  48. package/assets/docs/guide/api/node/interfaces/assetsqueryresult.md +31 -0
  49. package/assets/docs/guide/api/node/interfaces/assetstringproperty.md +25 -0
  50. package/assets/docs/guide/api/node/interfaces/assetstylepreset.md +39 -0
  51. package/assets/docs/guide/api/node/interfaces/assetstylepresetanimation.md +23 -0
  52. package/assets/docs/guide/api/node/interfaces/audiotrackinfo.md +32 -0
  53. package/assets/docs/guide/api/node/interfaces/blockevent.md +26 -0
  54. package/assets/docs/guide/api/node/interfaces/blockstateerror.md +26 -0
  55. package/assets/docs/guide/api/node/interfaces/blockstatepending.md +26 -0
  56. package/assets/docs/guide/api/node/interfaces/blockstateready.md +25 -0
  57. package/assets/docs/guide/api/node/interfaces/buffer.md +26 -0
  58. package/assets/docs/guide/api/node/interfaces/characterinkbox.md +29 -0
  59. package/assets/docs/guide/api/node/interfaces/cmykcolor.md +34 -0
  60. package/assets/docs/guide/api/node/interfaces/completeassetresult.md +46 -0
  61. package/assets/docs/guide/api/node/interfaces/configuration.md +38 -0
  62. package/assets/docs/guide/api/node/interfaces/dominantcolor.md +25 -0
  63. package/assets/docs/guide/api/node/interfaces/dominantcolorsoptions.md +23 -0
  64. package/assets/docs/guide/api/node/interfaces/engineactioninfo.md +24 -0
  65. package/assets/docs/guide/api/node/interfaces/engineactionsregistry.md +18 -0
  66. package/assets/docs/guide/api/node/interfaces/engineplugin.md +30 -0
  67. package/assets/docs/guide/api/node/interfaces/font.md +27 -0
  68. package/assets/docs/guide/api/node/interfaces/fontmetrics.md +32 -0
  69. package/assets/docs/guide/api/node/interfaces/gradientcolorstop.md +28 -0
  70. package/assets/docs/guide/api/node/interfaces/logger.md +39 -0
  71. package/assets/docs/guide/api/node/interfaces/pageduration.md +23 -0
  72. package/assets/docs/guide/api/node/interfaces/range.md +23 -0
  73. package/assets/docs/guide/api/node/interfaces/rgbacolor.md +32 -0
  74. package/assets/docs/guide/api/node/interfaces/rgbcolor.md +30 -0
  75. package/assets/docs/guide/api/node/interfaces/settings.md +126 -0
  76. package/assets/docs/guide/api/node/interfaces/size2.md +21 -0
  77. package/assets/docs/guide/api/node/interfaces/source.md +24 -0
  78. package/assets/docs/guide/api/node/interfaces/spotcolor.md +30 -0
  79. package/assets/docs/guide/api/node/interfaces/textdecorationconfig.md +31 -0
  80. package/assets/docs/guide/api/node/interfaces/textfontsizeoptions.md +24 -0
  81. package/assets/docs/guide/api/node/interfaces/textruninfo.md +33 -0
  82. package/assets/docs/guide/api/node/interfaces/transientresource.md +26 -0
  83. package/assets/docs/guide/api/node/interfaces/typeface.md +23 -0
  84. package/assets/docs/guide/api/node/interfaces/vec2.md +21 -0
  85. package/assets/docs/guide/api/node/interfaces/vec3.md +22 -0
  86. package/assets/docs/guide/api/node/type-aliases/addimageoptions.md +36 -0
  87. package/assets/docs/guide/api/node/type-aliases/animationbaselinedirection.md +18 -0
  88. package/assets/docs/guide/api/node/type-aliases/animationblockswipetextdirection.md +18 -0
  89. package/assets/docs/guide/api/node/type-aliases/animationeasing.md +18 -0
  90. package/assets/docs/guide/api/node/type-aliases/animationentry.md +28 -0
  91. package/assets/docs/guide/api/node/type-aliases/animationgrowdirection.md +18 -0
  92. package/assets/docs/guide/api/node/type-aliases/animationjumploopdirection.md +18 -0
  93. package/assets/docs/guide/api/node/type-aliases/animationkenburnsdirection.md +18 -0
  94. package/assets/docs/guide/api/node/type-aliases/animationmergetextdirection.md +18 -0
  95. package/assets/docs/guide/api/node/type-aliases/animationoptions.md +28 -0
  96. package/assets/docs/guide/api/node/type-aliases/animationspindirection.md +18 -0
  97. package/assets/docs/guide/api/node/type-aliases/animationspinloopdirection.md +18 -0
  98. package/assets/docs/guide/api/node/type-aliases/animationtype.md +24 -0
  99. package/assets/docs/guide/api/node/type-aliases/animationtypelonghand.md +21 -0
  100. package/assets/docs/guide/api/node/type-aliases/animationtypeshorthand.md +18 -0
  101. package/assets/docs/guide/api/node/type-aliases/animationtypewritertextwritingstyle.md +18 -0
  102. package/assets/docs/guide/api/node/type-aliases/animationwipedirection.md +18 -0
  103. package/assets/docs/guide/api/node/type-aliases/applicationmimetype.md +20 -0
  104. package/assets/docs/guide/api/node/type-aliases/assetcolor.md +23 -0
  105. package/assets/docs/guide/api/node/type-aliases/assetfilter.md +47 -0
  106. package/assets/docs/guide/api/node/type-aliases/assetgroups.md +25 -0
  107. package/assets/docs/guide/api/node/type-aliases/assetmetadata.md +42 -0
  108. package/assets/docs/guide/api/node/type-aliases/assetproperty.md +25 -0
  109. package/assets/docs/guide/api/node/type-aliases/assetpropertyfilter.md +41 -0
  110. package/assets/docs/guide/api/node/type-aliases/assetpropertypath.md +26 -0
  111. package/assets/docs/guide/api/node/type-aliases/assetstylepresetanimationproperties.md +34 -0
  112. package/assets/docs/guide/api/node/type-aliases/assetstylepresetproperties.md +29 -0
  113. package/assets/docs/guide/api/node/type-aliases/assetstylepresetpropertyvalue.md +29 -0
  114. package/assets/docs/guide/api/node/type-aliases/assetstylepresetscalableproperty.md +28 -0
  115. package/assets/docs/guide/api/node/type-aliases/assettransformpreset.md +24 -0
  116. package/assets/docs/guide/api/node/type-aliases/asyncuriresolver.md +36 -0
  117. package/assets/docs/guide/api/node/type-aliases/audioexportoptions.md +43 -0
  118. package/assets/docs/guide/api/node/type-aliases/audiofromvideooptions.md +27 -0
  119. package/assets/docs/guide/api/node/type-aliases/audiomimetype.md +20 -0
  120. package/assets/docs/guide/api/node/type-aliases/blendmode.md +18 -0
  121. package/assets/docs/guide/api/node/type-aliases/blockenumtype.md +63 -0
  122. package/assets/docs/guide/api/node/type-aliases/blockstate.md +26 -0
  123. package/assets/docs/guide/api/node/type-aliases/blurtype.md +24 -0
  124. package/assets/docs/guide/api/node/type-aliases/blurtypelonghand.md +21 -0
  125. package/assets/docs/guide/api/node/type-aliases/blurtypeshorthand.md +18 -0
  126. package/assets/docs/guide/api/node/type-aliases/booleanoperation.md +27 -0
  127. package/assets/docs/guide/api/node/type-aliases/boolpropertyname.md +79 -0
  128. package/assets/docs/guide/api/node/type-aliases/cameraclampingovershootmode.md +18 -0
  129. package/assets/docs/guide/api/node/type-aliases/captionhorizontalalignment.md +18 -0
  130. package/assets/docs/guide/api/node/type-aliases/captionverticalalignment.md +18 -0
  131. package/assets/docs/guide/api/node/type-aliases/cmyk.md +23 -0
  132. package/assets/docs/guide/api/node/type-aliases/color.md +23 -0
  133. package/assets/docs/guide/api/node/type-aliases/colorpickercolormode.md +18 -0
  134. package/assets/docs/guide/api/node/type-aliases/colorpropertyname.md +31 -0
  135. package/assets/docs/guide/api/node/type-aliases/colorspace.md +20 -0
  136. package/assets/docs/guide/api/node/type-aliases/contentfillmode.md +18 -0
  137. package/assets/docs/guide/api/node/type-aliases/controlgizmomovehandlevisibility.md +18 -0
  138. package/assets/docs/guide/api/node/type-aliases/controlgizmoresizehandlesvisibility.md +18 -0
  139. package/assets/docs/guide/api/node/type-aliases/controlgizmorotatehandlesvisibility.md +18 -0
  140. package/assets/docs/guide/api/node/type-aliases/controlgizmoscalehandlesvisibility.md +18 -0
  141. package/assets/docs/guide/api/node/type-aliases/createsceneoptions.md +30 -0
  142. package/assets/docs/guide/api/node/type-aliases/cutoutoperation.md +20 -0
  143. package/assets/docs/guide/api/node/type-aliases/cutouttype.md +18 -0
  144. package/assets/docs/guide/api/node/type-aliases/defaultassetsourceid.md +37 -0
  145. package/assets/docs/guide/api/node/type-aliases/demoassetsourceid.md +33 -0
  146. package/assets/docs/guide/api/node/type-aliases/designblockid.md +20 -0
  147. package/assets/docs/guide/api/node/type-aliases/designblocktype.md +24 -0
  148. package/assets/docs/guide/api/node/type-aliases/designblocktypelonghand.md +21 -0
  149. package/assets/docs/guide/api/node/type-aliases/designblocktypeshorthand.md +18 -0
  150. package/assets/docs/guide/api/node/type-aliases/designunit.md +18 -0
  151. package/assets/docs/guide/api/node/type-aliases/doubleclickselectionmode.md +18 -0
  152. package/assets/docs/guide/api/node/type-aliases/doublepropertyname.md +26 -0
  153. package/assets/docs/guide/api/node/type-aliases/dropshadowoptions.md +32 -0
  154. package/assets/docs/guide/api/node/type-aliases/editmode.md +27 -0
  155. package/assets/docs/guide/api/node/type-aliases/effecttype.md +24 -0
  156. package/assets/docs/guide/api/node/type-aliases/effecttypelonghand.md +21 -0
  157. package/assets/docs/guide/api/node/type-aliases/effecttypeshorthand.md +18 -0
  158. package/assets/docs/guide/api/node/type-aliases/engineactionid.md +20 -0
  159. package/assets/docs/guide/api/node/type-aliases/enginecustomactionfunction.md +30 -0
  160. package/assets/docs/guide/api/node/type-aliases/engineplugincontext.md +30 -0
  161. package/assets/docs/guide/api/node/type-aliases/enumpropertyname.md +59 -0
  162. package/assets/docs/guide/api/node/type-aliases/enumvalues.md +59 -0
  163. package/assets/docs/guide/api/node/type-aliases/exportoptions.md +57 -0
  164. package/assets/docs/guide/api/node/type-aliases/fillpixelstreamorientation.md +18 -0
  165. package/assets/docs/guide/api/node/type-aliases/filltype.md +24 -0
  166. package/assets/docs/guide/api/node/type-aliases/filltypelonghand.md +21 -0
  167. package/assets/docs/guide/api/node/type-aliases/filltypeshorthand.md +18 -0
  168. package/assets/docs/guide/api/node/type-aliases/floatpropertyname.md +184 -0
  169. package/assets/docs/guide/api/node/type-aliases/fontsizeunit.md +23 -0
  170. package/assets/docs/guide/api/node/type-aliases/fontstyle.md +20 -0
  171. package/assets/docs/guide/api/node/type-aliases/fontweight.md +30 -0
  172. package/assets/docs/guide/api/node/type-aliases/gradientstoprgba.md +23 -0
  173. package/assets/docs/guide/api/node/type-aliases/heightmode.md +18 -0
  174. package/assets/docs/guide/api/node/type-aliases/hexcolorstring.md +20 -0
  175. package/assets/docs/guide/api/node/type-aliases/historyid.md +20 -0
  176. package/assets/docs/guide/api/node/type-aliases/historyupdate.md +25 -0
  177. package/assets/docs/guide/api/node/type-aliases/horizontalblockalignment.md +18 -0
  178. package/assets/docs/guide/api/node/type-aliases/horizontalcontentfillalignment.md +18 -0
  179. package/assets/docs/guide/api/node/type-aliases/horizontaltextalignment.md +18 -0
  180. package/assets/docs/guide/api/node/type-aliases/imagemimetype.md +25 -0
  181. package/assets/docs/guide/api/node/type-aliases/intpropertyname.md +26 -0
  182. package/assets/docs/guide/api/node/type-aliases/liststyle.md +20 -0
  183. package/assets/docs/guide/api/node/type-aliases/locale.md +20 -0
  184. package/assets/docs/guide/api/node/type-aliases/loglevel.md +24 -0
  185. package/assets/docs/guide/api/node/type-aliases/mimetype.md +20 -0
  186. package/assets/docs/guide/api/node/type-aliases/objecttype.md +24 -0
  187. package/assets/docs/guide/api/node/type-aliases/objecttypelonghand.md +27 -0
  188. package/assets/docs/guide/api/node/type-aliases/objecttypeshorthand.md +27 -0
  189. package/assets/docs/guide/api/node/type-aliases/optionalprefix.md +24 -0
  190. package/assets/docs/guide/api/node/type-aliases/pageguidessource.md +18 -0
  191. package/assets/docs/guide/api/node/type-aliases/palettecolor.md +24 -0
  192. package/assets/docs/guide/api/node/type-aliases/positionmode.md +20 -0
  193. package/assets/docs/guide/api/node/type-aliases/positionxmode.md +18 -0
  194. package/assets/docs/guide/api/node/type-aliases/positionymode.md +18 -0
  195. package/assets/docs/guide/api/node/type-aliases/propertytype.md +31 -0
  196. package/assets/docs/guide/api/node/type-aliases/rgba.md +23 -0
  197. package/assets/docs/guide/api/node/type-aliases/rolestring.md +23 -0
  198. package/assets/docs/guide/api/node/type-aliases/scenefontsizeunit.md +18 -0
  199. package/assets/docs/guide/api/node/type-aliases/scenelayout.md +18 -0
  200. package/assets/docs/guide/api/node/type-aliases/scenemode.md +18 -0
  201. package/assets/docs/guide/api/node/type-aliases/scope.md +50 -0
  202. package/assets/docs/guide/api/node/type-aliases/settingboolpropertyname.md +62 -0
  203. package/assets/docs/guide/api/node/type-aliases/settingcolorpropertyname.md +38 -0
  204. package/assets/docs/guide/api/node/type-aliases/settingenumpropertyname.md +29 -0
  205. package/assets/docs/guide/api/node/type-aliases/settingenumtype.md +33 -0
  206. package/assets/docs/guide/api/node/type-aliases/settingenumvalues.md +29 -0
  207. package/assets/docs/guide/api/node/type-aliases/settingfloatpropertyname.md +25 -0
  208. package/assets/docs/guide/api/node/type-aliases/settingintpropertyname.md +18 -0
  209. package/assets/docs/guide/api/node/type-aliases/settingkey.md +20 -0
  210. package/assets/docs/guide/api/node/type-aliases/settingsbool.md +18 -0
  211. package/assets/docs/guide/api/node/type-aliases/settingscolor.md +20 -0
  212. package/assets/docs/guide/api/node/type-aliases/settingscolorrgba.md +24 -0
  213. package/assets/docs/guide/api/node/type-aliases/settingsenum.md +18 -0
  214. package/assets/docs/guide/api/node/type-aliases/settingsfloat.md +18 -0
  215. package/assets/docs/guide/api/node/type-aliases/settingsint.md +18 -0
  216. package/assets/docs/guide/api/node/type-aliases/settingsstring.md +18 -0
  217. package/assets/docs/guide/api/node/type-aliases/settingstringpropertyname.md +28 -0
  218. package/assets/docs/guide/api/node/type-aliases/settingtype.md +20 -0
  219. package/assets/docs/guide/api/node/type-aliases/settingvaluetype.md +26 -0
  220. package/assets/docs/guide/api/node/type-aliases/shapetype.md +24 -0
  221. package/assets/docs/guide/api/node/type-aliases/shapetypelonghand.md +21 -0
  222. package/assets/docs/guide/api/node/type-aliases/shapetypeshorthand.md +18 -0
  223. package/assets/docs/guide/api/node/type-aliases/shapevectorpathfillrule.md +18 -0
  224. package/assets/docs/guide/api/node/type-aliases/sizemode.md +20 -0
  225. package/assets/docs/guide/api/node/type-aliases/sortingorder.md +21 -0
  226. package/assets/docs/guide/api/node/type-aliases/sourcesetpropertyname.md +18 -0
  227. package/assets/docs/guide/api/node/type-aliases/splitoptions.md +28 -0
  228. package/assets/docs/guide/api/node/type-aliases/stringpropertyname.md +43 -0
  229. package/assets/docs/guide/api/node/type-aliases/strokecap.md +18 -0
  230. package/assets/docs/guide/api/node/type-aliases/strokecornergeometry.md +18 -0
  231. package/assets/docs/guide/api/node/type-aliases/strokedashendcap.md +18 -0
  232. package/assets/docs/guide/api/node/type-aliases/strokedashstartcap.md +18 -0
  233. package/assets/docs/guide/api/node/type-aliases/strokeendcap.md +18 -0
  234. package/assets/docs/guide/api/node/type-aliases/strokeposition.md +18 -0
  235. package/assets/docs/guide/api/node/type-aliases/strokestartcap.md +18 -0
  236. package/assets/docs/guide/api/node/type-aliases/strokestyle.md +18 -0
  237. package/assets/docs/guide/api/node/type-aliases/syncuriresolver.md +31 -0
  238. package/assets/docs/guide/api/node/type-aliases/textanimationwritingstyle.md +18 -0
  239. package/assets/docs/guide/api/node/type-aliases/textcase.md +20 -0
  240. package/assets/docs/guide/api/node/type-aliases/textdecorationline.md +27 -0
  241. package/assets/docs/guide/api/node/type-aliases/textdecorationstyle.md +26 -0
  242. package/assets/docs/guide/api/node/type-aliases/textverticalalignment.md +18 -0
  243. package/assets/docs/guide/api/node/type-aliases/timelinetrackvisibility.md +18 -0
  244. package/assets/docs/guide/api/node/type-aliases/touchpinchaction.md +18 -0
  245. package/assets/docs/guide/api/node/type-aliases/touchrotateaction.md +18 -0
  246. package/assets/docs/guide/api/node/type-aliases/typefacedefinition.md +41 -0
  247. package/assets/docs/guide/api/node/type-aliases/verticalblockalignment.md +18 -0
  248. package/assets/docs/guide/api/node/type-aliases/verticalcontentfillalignment.md +18 -0
  249. package/assets/docs/guide/api/node/type-aliases/videoexportoptions.md +54 -0
  250. package/assets/docs/guide/api/node/type-aliases/videomimetype.md +20 -0
  251. package/assets/docs/guide/api/node/type-aliases/widthmode.md +18 -0
  252. package/assets/docs/guide/api/node/type-aliases/xywh.md +23 -0
  253. package/assets/docs/guide/api/node/type-aliases/zoomautofitaxis.md +20 -0
  254. package/assets/docs/guide/api/node/type-aliases/zoomoptions.md +27 -0
  255. package/assets/docs/guide/api/node/variables/animation_types.md +21 -0
  256. package/assets/docs/guide/api/node/variables/animationbaselinedirectionvalues.md +18 -0
  257. package/assets/docs/guide/api/node/variables/animationblockswipetextdirectionvalues.md +18 -0
  258. package/assets/docs/guide/api/node/variables/animationeasingvalues.md +18 -0
  259. package/assets/docs/guide/api/node/variables/animationgrowdirectionvalues.md +18 -0
  260. package/assets/docs/guide/api/node/variables/animationjumploopdirectionvalues.md +18 -0
  261. package/assets/docs/guide/api/node/variables/animationkenburnsdirectionvalues.md +18 -0
  262. package/assets/docs/guide/api/node/variables/animationmergetextdirectionvalues.md +18 -0
  263. package/assets/docs/guide/api/node/variables/animationspindirectionvalues.md +18 -0
  264. package/assets/docs/guide/api/node/variables/animationspinloopdirectionvalues.md +18 -0
  265. package/assets/docs/guide/api/node/variables/animationtypewritertextwritingstylevalues.md +18 -0
  266. package/assets/docs/guide/api/node/variables/animationwipedirectionvalues.md +18 -0
  267. package/assets/docs/guide/api/node/variables/blendmodevalues.md +18 -0
  268. package/assets/docs/guide/api/node/variables/blur_types.md +21 -0
  269. package/assets/docs/guide/api/node/variables/cameraclampingovershootmodevalues.md +18 -0
  270. package/assets/docs/guide/api/node/variables/captionhorizontalalignmentvalues.md +18 -0
  271. package/assets/docs/guide/api/node/variables/captionverticalalignmentvalues.md +18 -0
  272. package/assets/docs/guide/api/node/variables/colorpickercolormodevalues.md +18 -0
  273. package/assets/docs/guide/api/node/variables/contentfillmodevalues.md +18 -0
  274. package/assets/docs/guide/api/node/variables/controlgizmomovehandlevisibilityvalues.md +18 -0
  275. package/assets/docs/guide/api/node/variables/controlgizmoresizehandlesvisibilityvalues.md +18 -0
  276. package/assets/docs/guide/api/node/variables/controlgizmorotatehandlesvisibilityvalues.md +18 -0
  277. package/assets/docs/guide/api/node/variables/controlgizmoscalehandlesvisibilityvalues.md +18 -0
  278. package/assets/docs/guide/api/node/variables/cutouttypevalues.md +18 -0
  279. package/assets/docs/guide/api/node/variables/design_block_types.md +21 -0
  280. package/assets/docs/guide/api/node/variables/doubleclickselectionmodevalues.md +18 -0
  281. package/assets/docs/guide/api/node/variables/effect_types.md +21 -0
  282. package/assets/docs/guide/api/node/variables/fill_types.md +21 -0
  283. package/assets/docs/guide/api/node/variables/fillpixelstreamorientationvalues.md +18 -0
  284. package/assets/docs/guide/api/node/variables/heightmodevalues.md +18 -0
  285. package/assets/docs/guide/api/node/variables/horizontalcontentfillalignmentvalues.md +18 -0
  286. package/assets/docs/guide/api/node/variables/loglevel.md +37 -0
  287. package/assets/docs/guide/api/node/variables/mimetype.md +41 -0
  288. package/assets/docs/guide/api/node/variables/pageguidessourcevalues.md +18 -0
  289. package/assets/docs/guide/api/node/variables/positionxmodevalues.md +18 -0
  290. package/assets/docs/guide/api/node/variables/positionymodevalues.md +18 -0
  291. package/assets/docs/guide/api/node/variables/scenedesignunitvalues.md +18 -0
  292. package/assets/docs/guide/api/node/variables/scenefontsizeunitvalues.md +18 -0
  293. package/assets/docs/guide/api/node/variables/scenelayoutvalues.md +18 -0
  294. package/assets/docs/guide/api/node/variables/scenemodevalues.md +18 -0
  295. package/assets/docs/guide/api/node/variables/shape_types.md +21 -0
  296. package/assets/docs/guide/api/node/variables/shapevectorpathfillrulevalues.md +18 -0
  297. package/assets/docs/guide/api/node/variables/strokecapvalues.md +18 -0
  298. package/assets/docs/guide/api/node/variables/strokecornergeometryvalues.md +18 -0
  299. package/assets/docs/guide/api/node/variables/strokedashendcapvalues.md +18 -0
  300. package/assets/docs/guide/api/node/variables/strokedashstartcapvalues.md +18 -0
  301. package/assets/docs/guide/api/node/variables/strokeendcapvalues.md +18 -0
  302. package/assets/docs/guide/api/node/variables/strokepositionvalues.md +18 -0
  303. package/assets/docs/guide/api/node/variables/strokestartcapvalues.md +18 -0
  304. package/assets/docs/guide/api/node/variables/strokestylevalues.md +18 -0
  305. package/assets/docs/guide/api/node/variables/textanimationwritingstylevalues.md +18 -0
  306. package/assets/docs/guide/api/node/variables/texthorizontalalignmentvalues.md +18 -0
  307. package/assets/docs/guide/api/node/variables/textverticalalignmentvalues.md +18 -0
  308. package/assets/docs/guide/api/node/variables/timelinetrackvisibilityvalues.md +18 -0
  309. package/assets/docs/guide/api/node/variables/touchpinchactionvalues.md +18 -0
  310. package/assets/docs/guide/api/node/variables/touchrotateactionvalues.md +18 -0
  311. package/assets/docs/guide/api/node/variables/verticalcontentfillalignmentvalues.md +18 -0
  312. package/assets/docs/guide/api/node/variables/widthmodevalues.md +18 -0
  313. package/assets/docs/guide/api/types.md +5 -9
  314. package/assets/docs/guide/api-reference/overview.md +7 -7
  315. package/assets/docs/guide/automation/auto-resize.md +263 -300
  316. package/assets/docs/guide/automation/data-merge.md +246 -275
  317. package/assets/docs/guide/automation/design-generation.md +102 -31
  318. package/assets/docs/guide/automation/multi-image-generation.md +758 -0
  319. package/assets/docs/guide/automation/overview.md +21 -4
  320. package/assets/docs/guide/automation.md +10 -5
  321. package/assets/docs/guide/capabilities.md +6 -4
  322. package/assets/docs/guide/colors/adjust.md +247 -249
  323. package/assets/docs/guide/colors/apply.md +127 -138
  324. package/assets/docs/guide/colors/basics.md +126 -150
  325. package/assets/docs/guide/colors/conversion.md +171 -177
  326. package/assets/docs/guide/colors/create-color-palette.md +244 -245
  327. package/assets/docs/guide/colors/extract-colors.md +144 -0
  328. package/assets/docs/guide/colors/for-print/cmyk.md +292 -352
  329. package/assets/docs/guide/colors/for-print/spot.md +521 -578
  330. package/assets/docs/guide/colors/for-print.md +9 -4
  331. package/assets/docs/guide/colors/for-screen/p3.md +12 -10
  332. package/assets/docs/guide/colors/for-screen/srgb.md +107 -133
  333. package/assets/docs/guide/colors/for-screen.md +9 -4
  334. package/assets/docs/guide/colors/overview.md +6 -4
  335. package/assets/docs/guide/colors/replace.md +381 -419
  336. package/assets/docs/guide/colors.md +9 -4
  337. package/assets/docs/guide/compatibility.md +7 -5
  338. package/assets/docs/guide/concepts/architecture.md +17 -15
  339. package/assets/docs/guide/concepts/assets.md +152 -140
  340. package/assets/docs/guide/concepts/blocks.md +227 -323
  341. package/assets/docs/guide/concepts/buffers.md +147 -276
  342. package/assets/docs/guide/concepts/design-units.md +95 -145
  343. package/assets/docs/guide/concepts/editing-workflow.md +69 -183
  344. package/assets/docs/guide/concepts/events.md +80 -122
  345. package/assets/docs/guide/concepts/headless-mode.md +237 -0
  346. package/assets/docs/guide/concepts/pages.md +137 -127
  347. package/assets/docs/guide/concepts/resources.md +156 -217
  348. package/assets/docs/guide/concepts/scenes.md +191 -210
  349. package/assets/docs/guide/concepts/templating.md +118 -74
  350. package/assets/docs/guide/concepts/terminology.md +49 -47
  351. package/assets/docs/guide/concepts/undo-and-history.md +229 -303
  352. package/assets/docs/guide/concepts.md +9 -7
  353. package/assets/docs/guide/configuration.md +252 -380
  354. package/assets/docs/guide/conversion/overview.md +33 -4
  355. package/assets/docs/guide/conversion/to-base64.md +127 -167
  356. package/assets/docs/guide/conversion/to-pdf.md +24 -474
  357. package/assets/docs/guide/conversion/to-png.md +168 -211
  358. package/assets/docs/guide/conversion.md +9 -4
  359. package/assets/docs/guide/create-audio/audio/add-music.md +301 -327
  360. package/assets/docs/guide/create-audio/audio/add-sound-effects.md +475 -359
  361. package/assets/docs/guide/create-audio/audio/loop.md +232 -272
  362. package/assets/docs/guide/create-composition/add-background.md +237 -239
  363. package/assets/docs/guide/create-composition/blend-modes.md +118 -209
  364. package/assets/docs/guide/create-composition/collage.md +538 -320
  365. package/assets/docs/guide/create-composition/group-and-ungroup.md +216 -261
  366. package/assets/docs/guide/create-composition/layer-management.md +219 -257
  367. package/assets/docs/guide/create-composition/layout.md +513 -315
  368. package/assets/docs/guide/create-composition/lock-design.md +90 -109
  369. package/assets/docs/guide/create-composition/multi-page.md +133 -113
  370. package/assets/docs/guide/create-composition/overview.md +16 -4
  371. package/assets/docs/guide/create-composition/programmatic.md +288 -344
  372. package/assets/docs/guide/create-composition.md +10 -5
  373. package/assets/docs/guide/create-templates/add-dynamic-content/placeholders.md +443 -569
  374. package/assets/docs/guide/create-templates/add-dynamic-content/set-editing-constraints.md +567 -470
  375. package/assets/docs/guide/create-templates/add-dynamic-content/text-variables.md +179 -516
  376. package/assets/docs/guide/create-templates/add-dynamic-content.md +226 -224
  377. package/assets/docs/guide/create-templates/add-to-template-library.md +183 -193
  378. package/assets/docs/guide/create-templates/edit-or-remove.md +297 -303
  379. package/assets/docs/guide/create-templates/from-scratch.md +207 -268
  380. package/assets/docs/guide/create-templates/import/from-scene-file.md +158 -236
  381. package/assets/docs/guide/create-templates/import.md +145 -161
  382. package/assets/docs/guide/create-templates/lock.md +42 -295
  383. package/assets/docs/guide/create-templates/overview.md +33 -4
  384. package/assets/docs/guide/create-templates.md +9 -5
  385. package/assets/docs/guide/create-video/audio/adjust-speed.md +157 -207
  386. package/assets/docs/guide/create-video/audio/adjust-volume.md +116 -227
  387. package/assets/docs/guide/create-video/control.md +352 -193
  388. package/assets/docs/guide/create-video/limitations.md +175 -280
  389. package/assets/docs/guide/create-video.md +11 -10
  390. package/assets/docs/guide/edit-image/add-watermark.md +283 -330
  391. package/assets/docs/guide/edit-image/overview.md +29 -4
  392. package/assets/docs/guide/edit-image/remove-bg.md +283 -337
  393. package/assets/docs/guide/edit-image/replace-colors.md +424 -502
  394. package/assets/docs/guide/edit-image/transform/crop.md +463 -402
  395. package/assets/docs/guide/edit-image/transform/flip.md +353 -0
  396. package/assets/docs/guide/edit-image/transform/move.md +143 -100
  397. package/assets/docs/guide/edit-image/transform/resize.md +118 -88
  398. package/assets/docs/guide/edit-image/transform/rotate.md +132 -165
  399. package/assets/docs/guide/edit-image/transform/scale.md +230 -228
  400. package/assets/docs/guide/edit-image/transform.md +10 -5
  401. package/assets/docs/guide/edit-image.md +11 -7
  402. package/assets/docs/guide/edit-video/add-captions.md +344 -421
  403. package/assets/docs/guide/edit-video/add-watermark.md +312 -258
  404. package/assets/docs/guide/edit-video/join-and-arrange.md +237 -371
  405. package/assets/docs/guide/edit-video/redaction.md +419 -385
  406. package/assets/docs/guide/edit-video/split.md +243 -493
  407. package/assets/docs/guide/edit-video/transform/crop.md +21 -352
  408. package/assets/docs/guide/edit-video/transform/flip.md +102 -76
  409. package/assets/docs/guide/edit-video/transform/move.md +258 -310
  410. package/assets/docs/guide/edit-video/transform/resize.md +264 -428
  411. package/assets/docs/guide/edit-video/transform/rotate.md +265 -228
  412. package/assets/docs/guide/edit-video/transform/scale.md +320 -417
  413. package/assets/docs/guide/edit-video/transform.md +10 -6
  414. package/assets/docs/guide/edit-video/trim.md +448 -494
  415. package/assets/docs/guide/engine-interface.md +51 -62
  416. package/assets/docs/guide/export-save-publish/create-thumbnail.md +148 -184
  417. package/assets/docs/guide/export-save-publish/export/compress.md +161 -559
  418. package/assets/docs/guide/export-save-publish/export/overview.md +224 -373
  419. package/assets/docs/guide/export-save-publish/export/partial-export.md +386 -577
  420. package/assets/docs/guide/export-save-publish/export/size-limits.md +215 -310
  421. package/assets/docs/guide/export-save-publish/export/to-jpeg.md +132 -213
  422. package/assets/docs/guide/export-save-publish/export/to-pdf.md +139 -267
  423. package/assets/docs/guide/export-save-publish/export/to-png.md +121 -165
  424. package/assets/docs/guide/export-save-publish/export/to-raw-data.md +187 -234
  425. package/assets/docs/guide/export-save-publish/export/to-webp.md +160 -190
  426. package/assets/docs/guide/export-save-publish/export/with-color-mask.md +359 -203
  427. package/assets/docs/guide/export-save-publish/export.md +14 -11
  428. package/assets/docs/guide/export-save-publish/for-printing.md +141 -237
  429. package/assets/docs/guide/export-save-publish/for-social-media.md +124 -261
  430. package/assets/docs/guide/export-save-publish/pre-export-validation.md +436 -522
  431. package/assets/docs/guide/export-save-publish/save.md +167 -226
  432. package/assets/docs/guide/export-save-publish/store-custom-metadata.md +97 -162
  433. package/assets/docs/guide/file-format-support.md +9 -9
  434. package/assets/docs/guide/fills/color.md +370 -347
  435. package/assets/docs/guide/fills/image.md +167 -196
  436. package/assets/docs/guide/fills/overview.md +6 -4
  437. package/assets/docs/guide/fills/video.md +286 -438
  438. package/assets/docs/guide/fills.md +12 -8
  439. package/assets/docs/guide/filters-and-effects/apply.md +598 -664
  440. package/assets/docs/guide/filters-and-effects/blur.md +261 -159
  441. package/assets/docs/guide/filters-and-effects/chroma-key-green-screen.md +194 -293
  442. package/assets/docs/guide/filters-and-effects/create-custom-filters.md +548 -466
  443. package/assets/docs/guide/filters-and-effects/create-custom-lut-filter.md +176 -244
  444. package/assets/docs/guide/filters-and-effects/distortion.md +317 -384
  445. package/assets/docs/guide/filters-and-effects/duotone.md +221 -217
  446. package/assets/docs/guide/filters-and-effects/gradients.md +670 -813
  447. package/assets/docs/guide/filters-and-effects/overview.md +7 -7
  448. package/assets/docs/guide/filters-and-effects/support.md +97 -132
  449. package/assets/docs/guide/filters-and-effects.md +11 -6
  450. package/assets/docs/guide/get-started/agent-skills.md +20 -18
  451. package/assets/docs/guide/get-started/build-with-ai.md +7 -4
  452. package/assets/docs/guide/get-started/bun.md +219 -0
  453. package/assets/docs/guide/get-started/deno.md +161 -0
  454. package/assets/docs/guide/get-started/mcp-server.md +6 -4
  455. package/assets/docs/guide/get-started/overview.md +11 -6
  456. package/assets/docs/guide/get-started/vanilla-aws-lambda.md +506 -0
  457. package/assets/docs/guide/get-started/vanilla-clone-github-project.md +124 -0
  458. package/assets/docs/guide/get-started/vanilla.md +235 -0
  459. package/assets/docs/guide/guides/export-save-publish/export/audio.md +80 -66
  460. package/assets/docs/guide/guides.md +10 -9
  461. package/assets/docs/guide/import-media/asset-panel/refresh-assets.md +259 -288
  462. package/assets/docs/guide/import-media/concepts.md +20 -38
  463. package/assets/docs/guide/import-media/content-json-schema.md +145 -125
  464. package/assets/docs/guide/import-media/default-assets.md +113 -161
  465. package/assets/docs/guide/import-media/edit-or-remove-assets.md +391 -395
  466. package/assets/docs/guide/import-media/file-format-support.md +78 -61
  467. package/assets/docs/guide/import-media/from-remote-source/asset-versioning.md +273 -244
  468. package/assets/docs/guide/import-media/from-remote-source/remote-asset.md +152 -222
  469. package/assets/docs/guide/import-media/from-remote-source.md +9 -11
  470. package/assets/docs/guide/import-media/overview.md +5 -5
  471. package/assets/docs/guide/import-media/retrieve-mimetype.md +216 -108
  472. package/assets/docs/guide/import-media/size-limits.md +6 -4
  473. package/assets/docs/guide/import-media/source-sets.md +190 -251
  474. package/assets/docs/guide/import-media.md +10 -8
  475. package/assets/docs/guide/insert-media/audio.md +202 -195
  476. package/assets/docs/guide/insert-media/images.md +190 -188
  477. package/assets/docs/guide/insert-media/position-and-align.md +284 -551
  478. package/assets/docs/guide/insert-media/shapes-or-stickers.md +402 -418
  479. package/assets/docs/guide/insert-media/videos.md +236 -203
  480. package/assets/docs/guide/insert-media.md +10 -5
  481. package/assets/docs/guide/key-capabilities.md +36 -4
  482. package/assets/docs/guide/key-concepts.md +6 -4
  483. package/assets/docs/guide/licensing.md +6 -4
  484. package/assets/docs/guide/llms-txt.md +11 -7
  485. package/assets/docs/guide/open-the-editor/blank-canvas.md +102 -63
  486. package/assets/docs/guide/open-the-editor/from-image.md +157 -127
  487. package/assets/docs/guide/open-the-editor/from-template.md +131 -92
  488. package/assets/docs/guide/open-the-editor/from-video.md +204 -212
  489. package/assets/docs/guide/open-the-editor/import-design/from-archive.md +310 -360
  490. package/assets/docs/guide/open-the-editor/import-design/from-indesign.md +716 -513
  491. package/assets/docs/guide/open-the-editor/import-design/from-photoshop.md +667 -695
  492. package/assets/docs/guide/open-the-editor/import-design.md +228 -266
  493. package/assets/docs/guide/open-the-editor/load-scene.md +72 -68
  494. package/assets/docs/guide/open-the-editor/overview.md +6 -4
  495. package/assets/docs/guide/open-the-editor/uri-resolver.md +160 -251
  496. package/assets/docs/guide/open-the-editor.md +11 -9
  497. package/assets/docs/guide/outlines/overview.md +12 -4
  498. package/assets/docs/guide/outlines/shadows-and-glows.md +105 -410
  499. package/assets/docs/guide/outlines/strokes.md +218 -166
  500. package/assets/docs/guide/outlines.md +9 -4
  501. package/assets/docs/guide/overview.md +14 -6
  502. package/assets/docs/guide/performance.md +220 -113
  503. package/assets/docs/guide/plugins/print-ready-pdf.md +273 -368
  504. package/assets/docs/guide/plugins.md +10 -16
  505. package/assets/docs/guide/rules/asset-handling.md +7 -18
  506. package/assets/docs/guide/rules/common-pitfalls.md +25 -42
  507. package/assets/docs/guide/rules/content-fill-mode.md +4 -4
  508. package/assets/docs/guide/rules/enforce-brand-guidelines.md +398 -567
  509. package/assets/docs/guide/rules/lock-content.md +188 -231
  510. package/assets/docs/guide/rules/moderate-content.md +580 -571
  511. package/assets/docs/guide/rules/overview.md +345 -380
  512. package/assets/docs/guide/rules/silent-init-errors.md +4 -1
  513. package/assets/docs/guide/rules/verify-properties-before-use.md +2 -11
  514. package/assets/docs/guide/rules.md +10 -5
  515. package/assets/docs/guide/security.md +7 -5
  516. package/assets/docs/guide/serve-assets.md +57 -284
  517. package/assets/docs/guide/settings.md +96 -74
  518. package/assets/docs/guide/shapes.md +10 -5
  519. package/assets/docs/guide/stickers-and-shapes/combine.md +397 -583
  520. package/assets/docs/guide/stickers-and-shapes/create-cutout.md +181 -268
  521. package/assets/docs/guide/stickers-and-shapes/create-edit/create-shapes.md +418 -431
  522. package/assets/docs/guide/stickers-and-shapes/create-edit/create-stickers.md +147 -226
  523. package/assets/docs/guide/stickers-and-shapes/create-edit/edit-shapes.md +138 -123
  524. package/assets/docs/guide/stickers-and-shapes/insert-qr-code.md +151 -149
  525. package/assets/docs/guide/stickers.md +9 -4
  526. package/assets/docs/guide/text/add.md +470 -482
  527. package/assets/docs/guide/text/adjust-spacing.md +179 -214
  528. package/assets/docs/guide/text/auto-size.md +210 -271
  529. package/assets/docs/guide/text/edit.md +294 -309
  530. package/assets/docs/guide/text/effects.md +154 -190
  531. package/assets/docs/guide/text/emojis.md +199 -232
  532. package/assets/docs/guide/text/language-support.md +369 -382
  533. package/assets/docs/guide/text/overview.md +41 -4
  534. package/assets/docs/guide/text/styling.md +239 -273
  535. package/assets/docs/guide/text/text-designs.md +405 -544
  536. package/assets/docs/guide/text.md +10 -9
  537. package/assets/docs/guide/to-v1-19.md +12 -10
  538. package/assets/docs/guide/upgrade.md +8 -9
  539. package/assets/docs/guide/use-templates/apply-template.md +174 -163
  540. package/assets/docs/guide/use-templates/generate.md +171 -152
  541. package/assets/docs/guide/use-templates/overview.md +32 -4
  542. package/assets/docs/guide/use-templates/programmatic.md +266 -301
  543. package/assets/docs/guide/use-templates/replace-content.md +181 -171
  544. package/assets/docs/guide/what-is-cesdk.md +71 -282
  545. package/assets/docs/handbook/SKILL.md +24 -0
  546. package/dist/assets/inline.generated.d.ts.map +1 -1
  547. package/dist/assets/inline.generated.js +544 -406
  548. package/dist/assets/inline.generated.js.map +1 -1
  549. package/dist/assets/load-browser.d.ts +1 -1
  550. package/dist/assets/load-browser.js +1 -1
  551. package/dist/assets/load-browser.js.map +1 -1
  552. package/dist/assets/load-node.d.ts +1 -1
  553. package/dist/assets/load-node.js +1 -1
  554. package/dist/assets/load-node.js.map +1 -1
  555. package/dist/cli/http.d.ts.map +1 -1
  556. package/dist/cli/http.js +4 -28
  557. package/dist/cli/http.js.map +1 -1
  558. package/dist/cli/redirect-console.d.ts +1 -1
  559. package/dist/cli/redirect-console.d.ts.map +1 -1
  560. package/dist/cli/redirect-console.js +12 -3
  561. package/dist/cli/redirect-console.js.map +1 -1
  562. package/dist/cli/resolve-license.d.ts.map +1 -1
  563. package/dist/cli/resolve-license.js +8 -6
  564. package/dist/cli/resolve-license.js.map +1 -1
  565. package/dist/cli/stdio.d.ts +9 -0
  566. package/dist/cli/stdio.d.ts.map +1 -1
  567. package/dist/cli/stdio.js +48 -4
  568. package/dist/cli/stdio.js.map +1 -1
  569. package/dist/cli.js +10 -1
  570. package/dist/cli.js.map +1 -1
  571. package/dist/config.d.ts +11 -2
  572. package/dist/config.d.ts.map +1 -1
  573. package/dist/config.js +20 -1
  574. package/dist/config.js.map +1 -1
  575. package/dist/diagnostics/bundle.d.ts +10 -0
  576. package/dist/diagnostics/bundle.d.ts.map +1 -0
  577. package/dist/diagnostics/bundle.js +148 -0
  578. package/dist/diagnostics/bundle.js.map +1 -0
  579. package/dist/diagnostics/compose.d.ts +3 -0
  580. package/dist/diagnostics/compose.d.ts.map +1 -0
  581. package/dist/diagnostics/compose.js +15 -0
  582. package/dist/diagnostics/compose.js.map +1 -0
  583. package/dist/diagnostics/events.d.ts +34 -0
  584. package/dist/diagnostics/events.d.ts.map +1 -0
  585. package/dist/diagnostics/events.js +3 -0
  586. package/dist/diagnostics/events.js.map +1 -0
  587. package/dist/diagnostics/file-sink.d.ts +38 -0
  588. package/dist/diagnostics/file-sink.d.ts.map +1 -0
  589. package/dist/diagnostics/file-sink.js +157 -0
  590. package/dist/diagnostics/file-sink.js.map +1 -0
  591. package/dist/diagnostics/redact.d.ts +7 -0
  592. package/dist/diagnostics/redact.d.ts.map +1 -0
  593. package/dist/diagnostics/redact.js +43 -0
  594. package/dist/diagnostics/redact.js.map +1 -0
  595. package/dist/diagnostics/tool-call-adapter.d.ts +4 -0
  596. package/dist/diagnostics/tool-call-adapter.d.ts.map +1 -0
  597. package/dist/diagnostics/tool-call-adapter.js +21 -0
  598. package/dist/diagnostics/tool-call-adapter.js.map +1 -0
  599. package/dist/engine/cesdk-adapter.d.ts +5 -1
  600. package/dist/engine/cesdk-adapter.d.ts.map +1 -1
  601. package/dist/engine/cesdk-adapter.js +9 -2
  602. package/dist/engine/cesdk-adapter.js.map +1 -1
  603. package/dist/engine/index.d.ts +1 -0
  604. package/dist/engine/index.d.ts.map +1 -1
  605. package/dist/engine/index.js +4 -0
  606. package/dist/engine/index.js.map +1 -1
  607. package/dist/engine/scene-resource-schemes.d.ts +2 -0
  608. package/dist/engine/scene-resource-schemes.d.ts.map +1 -0
  609. package/dist/engine/scene-resource-schemes.js +20 -0
  610. package/dist/engine/scene-resource-schemes.js.map +1 -0
  611. package/dist/http/server.d.ts +0 -6
  612. package/dist/http/server.d.ts.map +1 -1
  613. package/dist/http/server.js +1 -2
  614. package/dist/http/server.js.map +1 -1
  615. package/dist/server.d.ts +0 -4
  616. package/dist/server.d.ts.map +1 -1
  617. package/dist/server.js +4 -60
  618. package/dist/server.js.map +1 -1
  619. package/dist/test/scripts/changelog-add.d.ts +8 -0
  620. package/dist/test/scripts/changelog-add.d.ts.map +1 -0
  621. package/dist/test/scripts/changelog-add.js +50 -0
  622. package/dist/test/scripts/changelog-add.js.map +1 -0
  623. package/dist/test/scripts/changelog-collate.d.ts +38 -0
  624. package/dist/test/scripts/changelog-collate.d.ts.map +1 -0
  625. package/dist/test/scripts/changelog-collate.js +171 -0
  626. package/dist/test/scripts/changelog-collate.js.map +1 -0
  627. package/dist/test/test/changelog.test.d.ts +2 -0
  628. package/dist/test/test/changelog.test.d.ts.map +1 -0
  629. package/dist/test/test/changelog.test.js +293 -0
  630. package/dist/test/test/changelog.test.js.map +1 -0
  631. package/dist/test/test/cli/dispatcher.test.js +10 -3
  632. package/dist/test/test/cli/dispatcher.test.js.map +1 -1
  633. package/dist/test/test/cli/redirect-console.test.js +31 -0
  634. package/dist/test/test/cli/redirect-console.test.js.map +1 -1
  635. package/dist/test/test/cli/resolve-license.test.js +10 -1
  636. package/dist/test/test/cli/resolve-license.test.js.map +1 -1
  637. package/dist/test/test/cli/stdio-diagnostics.test.d.ts +2 -0
  638. package/dist/test/test/cli/stdio-diagnostics.test.d.ts.map +1 -0
  639. package/dist/test/test/cli/stdio-diagnostics.test.js +31 -0
  640. package/dist/test/test/cli/stdio-diagnostics.test.js.map +1 -0
  641. package/dist/test/test/config.test.js +17 -13
  642. package/dist/test/test/config.test.js.map +1 -1
  643. package/dist/test/test/diagnostics/bundle.test.d.ts +2 -0
  644. package/dist/test/test/diagnostics/bundle.test.d.ts.map +1 -0
  645. package/dist/test/test/diagnostics/bundle.test.js +53 -0
  646. package/dist/test/test/diagnostics/bundle.test.js.map +1 -0
  647. package/dist/test/test/diagnostics/compose.test.d.ts +2 -0
  648. package/dist/test/test/diagnostics/compose.test.d.ts.map +1 -0
  649. package/dist/test/test/diagnostics/compose.test.js +31 -0
  650. package/dist/test/test/diagnostics/compose.test.js.map +1 -0
  651. package/dist/test/test/diagnostics/file-sink.test.d.ts +2 -0
  652. package/dist/test/test/diagnostics/file-sink.test.d.ts.map +1 -0
  653. package/dist/test/test/diagnostics/file-sink.test.js +113 -0
  654. package/dist/test/test/diagnostics/file-sink.test.js.map +1 -0
  655. package/dist/test/test/diagnostics/redact.test.d.ts +2 -0
  656. package/dist/test/test/diagnostics/redact.test.d.ts.map +1 -0
  657. package/dist/test/test/diagnostics/redact.test.js +59 -0
  658. package/dist/test/test/diagnostics/redact.test.js.map +1 -0
  659. package/dist/test/test/diagnostics/tool-call-adapter.test.d.ts +2 -0
  660. package/dist/test/test/diagnostics/tool-call-adapter.test.d.ts.map +1 -0
  661. package/dist/test/test/diagnostics/tool-call-adapter.test.js +34 -0
  662. package/dist/test/test/diagnostics/tool-call-adapter.test.js.map +1 -0
  663. package/dist/test/test/engine/cesdk-adapter.test.d.ts +2 -0
  664. package/dist/test/test/engine/cesdk-adapter.test.d.ts.map +1 -0
  665. package/dist/test/test/engine/cesdk-adapter.test.js +32 -0
  666. package/dist/test/test/engine/cesdk-adapter.test.js.map +1 -0
  667. package/dist/test/test/handbook-contract.test.js +6 -2
  668. package/dist/test/test/handbook-contract.test.js.map +1 -1
  669. package/dist/test/test/http/server.test.js +0 -36
  670. package/dist/test/test/http/server.test.js.map +1 -1
  671. package/dist/test/test/http/workspace-auth.test.js +0 -1
  672. package/dist/test/test/http/workspace-auth.test.js.map +1 -1
  673. package/dist/test/test/server.test.js +0 -40
  674. package/dist/test/test/server.test.js.map +1 -1
  675. package/dist/test/test/tools/edit-harness.d.ts +14 -0
  676. package/dist/test/test/tools/edit-harness.d.ts.map +1 -0
  677. package/dist/test/test/tools/edit-harness.js +30 -0
  678. package/dist/test/test/tools/edit-harness.js.map +1 -0
  679. package/dist/test/test/tools/edit.telemetry.test.d.ts +2 -0
  680. package/dist/test/test/tools/edit.telemetry.test.d.ts.map +1 -0
  681. package/dist/test/test/tools/edit.telemetry.test.js +46 -0
  682. package/dist/test/test/tools/edit.telemetry.test.js.map +1 -0
  683. package/dist/test/test/tools/export-harness.d.ts +13 -0
  684. package/dist/test/test/tools/export-harness.d.ts.map +1 -0
  685. package/dist/test/test/tools/export-harness.js +27 -0
  686. package/dist/test/test/tools/export-harness.js.map +1 -0
  687. package/dist/test/test/tools/export.telemetry.test.d.ts +2 -0
  688. package/dist/test/test/tools/export.telemetry.test.d.ts.map +1 -0
  689. package/dist/test/test/tools/export.telemetry.test.js +65 -0
  690. package/dist/test/test/tools/export.telemetry.test.js.map +1 -0
  691. package/dist/test/test/tools/import.test.d.ts +2 -0
  692. package/dist/test/test/tools/import.test.d.ts.map +1 -0
  693. package/dist/test/test/tools/import.test.js +122 -0
  694. package/dist/test/test/tools/import.test.js.map +1 -0
  695. package/dist/test/test/tools/index.test.js +78 -16
  696. package/dist/test/test/tools/index.test.js.map +1 -1
  697. package/dist/test/test/tools/load.integration.test.d.ts +2 -0
  698. package/dist/test/test/tools/load.integration.test.d.ts.map +1 -0
  699. package/dist/test/test/tools/load.integration.test.js +165 -0
  700. package/dist/test/test/tools/load.integration.test.js.map +1 -0
  701. package/dist/test/test/tools/load.test.d.ts +2 -0
  702. package/dist/test/test/tools/load.test.d.ts.map +1 -0
  703. package/dist/test/test/tools/load.test.js +387 -0
  704. package/dist/test/test/tools/load.test.js.map +1 -0
  705. package/dist/test/test/tools/preview-harness.d.ts +9 -0
  706. package/dist/test/test/tools/preview-harness.d.ts.map +1 -0
  707. package/dist/test/test/tools/preview-harness.js +23 -0
  708. package/dist/test/test/tools/preview-harness.js.map +1 -0
  709. package/dist/test/test/tools/preview.telemetry.test.d.ts +2 -0
  710. package/dist/test/test/tools/preview.telemetry.test.d.ts.map +1 -0
  711. package/dist/test/test/tools/preview.telemetry.test.js +36 -0
  712. package/dist/test/test/tools/preview.telemetry.test.js.map +1 -0
  713. package/dist/test/test/tools/schema-best-practices.d.ts +13 -0
  714. package/dist/test/test/tools/schema-best-practices.d.ts.map +1 -0
  715. package/dist/test/test/tools/schema-best-practices.js +169 -0
  716. package/dist/test/test/tools/schema-best-practices.js.map +1 -0
  717. package/dist/test/test/tools/schema-best-practices.test.d.ts +3 -0
  718. package/dist/test/test/tools/schema-best-practices.test.d.ts.map +1 -0
  719. package/dist/test/test/tools/schema-best-practices.test.js +194 -0
  720. package/dist/test/test/tools/schema-best-practices.test.js.map +1 -0
  721. package/dist/test/test/tools/spans.test.d.ts +2 -0
  722. package/dist/test/test/tools/spans.test.d.ts.map +1 -0
  723. package/dist/test/test/tools/spans.test.js +84 -0
  724. package/dist/test/test/tools/spans.test.js.map +1 -0
  725. package/dist/test/test/viewer/cesdk-cdn.test.d.ts +2 -0
  726. package/dist/test/test/viewer/cesdk-cdn.test.d.ts.map +1 -0
  727. package/dist/test/test/viewer/cesdk-cdn.test.js +19 -0
  728. package/dist/test/test/viewer/cesdk-cdn.test.js.map +1 -0
  729. package/dist/test/test/viewer/config-route.test.d.ts +2 -0
  730. package/dist/test/test/viewer/config-route.test.d.ts.map +1 -0
  731. package/dist/test/test/viewer/config-route.test.js +28 -0
  732. package/dist/test/test/viewer/config-route.test.js.map +1 -0
  733. package/dist/test/test/viewer/spa-version.test.d.ts +2 -0
  734. package/dist/test/test/viewer/spa-version.test.d.ts.map +1 -0
  735. package/dist/test/test/viewer/spa-version.test.js +14 -0
  736. package/dist/test/test/viewer/spa-version.test.js.map +1 -0
  737. package/dist/test/test/workspace/content-hash.test.d.ts +2 -0
  738. package/dist/test/test/workspace/content-hash.test.d.ts.map +1 -0
  739. package/dist/test/test/workspace/content-hash.test.js +17 -0
  740. package/dist/test/test/workspace/content-hash.test.js.map +1 -0
  741. package/dist/test/tsconfig.test.tsbuildinfo +1 -1
  742. package/dist/test/vitest.config.js +1 -1
  743. package/dist/test/vitest.config.js.map +1 -1
  744. package/dist/tools/asset-generate.d.ts.map +1 -1
  745. package/dist/tools/asset-generate.js +1 -8
  746. package/dist/tools/asset-generate.js.map +1 -1
  747. package/dist/tools/edit.d.ts +3 -0
  748. package/dist/tools/edit.d.ts.map +1 -1
  749. package/dist/tools/edit.js +145 -96
  750. package/dist/tools/edit.js.map +1 -1
  751. package/dist/tools/export.d.ts +3 -0
  752. package/dist/tools/export.d.ts.map +1 -1
  753. package/dist/tools/export.js +146 -108
  754. package/dist/tools/export.js.map +1 -1
  755. package/dist/tools/import.d.ts +12 -0
  756. package/dist/tools/import.d.ts.map +1 -0
  757. package/dist/tools/import.js +144 -0
  758. package/dist/tools/import.js.map +1 -0
  759. package/dist/tools/index.d.ts +3 -0
  760. package/dist/tools/index.d.ts.map +1 -1
  761. package/dist/tools/index.js +44 -4
  762. package/dist/tools/index.js.map +1 -1
  763. package/dist/tools/load.d.ts +26 -0
  764. package/dist/tools/load.d.ts.map +1 -0
  765. package/dist/tools/load.js +400 -0
  766. package/dist/tools/load.js.map +1 -0
  767. package/dist/tools/preview.d.ts +3 -0
  768. package/dist/tools/preview.d.ts.map +1 -1
  769. package/dist/tools/preview.js +79 -44
  770. package/dist/tools/preview.js.map +1 -1
  771. package/dist/tools/result.d.ts +1 -1
  772. package/dist/tools/result.js +2 -2
  773. package/dist/tools/result.js.map +1 -1
  774. package/dist/tools/spans.d.ts +45 -0
  775. package/dist/tools/spans.d.ts.map +1 -0
  776. package/dist/tools/spans.js +77 -0
  777. package/dist/tools/spans.js.map +1 -0
  778. package/dist/tools/telemetry-wrapper.d.ts +4 -0
  779. package/dist/tools/telemetry-wrapper.d.ts.map +1 -0
  780. package/dist/tools/telemetry-wrapper.js +43 -0
  781. package/dist/tools/telemetry-wrapper.js.map +1 -0
  782. package/dist/viewer/cesdk-cdn.d.ts +16 -0
  783. package/dist/viewer/cesdk-cdn.d.ts.map +1 -0
  784. package/dist/viewer/cesdk-cdn.js +30 -0
  785. package/dist/viewer/cesdk-cdn.js.map +1 -0
  786. package/dist/viewer/router.d.ts +6 -0
  787. package/dist/viewer/router.d.ts.map +1 -1
  788. package/dist/viewer/router.js +4 -1
  789. package/dist/viewer/router.js.map +1 -1
  790. package/dist/viewer/spa-assets.generated.d.ts.map +1 -1
  791. package/dist/viewer/spa-assets.generated.js +2 -3
  792. package/dist/viewer/spa-assets.generated.js.map +1 -1
  793. package/dist/workspace/content-hash.d.ts +2 -0
  794. package/dist/workspace/content-hash.d.ts.map +1 -0
  795. package/dist/workspace/content-hash.js +15 -0
  796. package/dist/workspace/content-hash.js.map +1 -0
  797. package/package.json +18 -9
  798. package/assets/docs/guide/actions.md +0 -1038
  799. package/assets/docs/guide/animation/overview.md +0 -22
  800. package/assets/docs/guide/automation/batch-processing.md +0 -474
  801. package/assets/docs/guide/browser-support.md +0 -38
  802. package/assets/docs/guide/concepts/edit-modes.md +0 -431
  803. package/assets/docs/guide/concepts/headless-mode/browser.md +0 -291
  804. package/assets/docs/guide/create-audio/audio.md +0 -336
  805. package/assets/docs/guide/create-video/overview.md +0 -224
  806. package/assets/docs/guide/create-video/timeline-editor.md +0 -622
  807. package/assets/docs/guide/create-video/update-caption-presets.md +0 -676
  808. package/assets/docs/guide/edit-image/vectorize.md +0 -204
  809. package/assets/docs/guide/export-save-publish/export/to-html5.md +0 -474
  810. package/assets/docs/guide/export-save-publish/export/to-mp4.md +0 -364
  811. package/assets/docs/guide/get-started/vanilla-js/quickstart.md +0 -175
  812. package/assets/docs/guide/grid-and-rulers.md +0 -222
  813. package/assets/docs/guide/guides/text/rendering-internals.md +0 -796
  814. package/assets/docs/guide/import-media/asset-library.md +0 -23
  815. package/assets/docs/guide/import-media/asset-panel/basics.md +0 -324
  816. package/assets/docs/guide/import-media/asset-panel/customize.md +0 -478
  817. package/assets/docs/guide/import-media/asset-panel/thumbnails.md +0 -633
  818. package/assets/docs/guide/import-media/capture-from-camera/record-video.md +0 -137
  819. package/assets/docs/guide/import-media/capture-from-camera.md +0 -20
  820. package/assets/docs/guide/import-media/from-local-source/user-upload.md +0 -438
  821. package/assets/docs/guide/import-media/from-local-source.md +0 -20
  822. package/assets/docs/guide/import-media/from-remote-source/getty-images.md +0 -627
  823. package/assets/docs/guide/import-media/from-remote-source/imgly-premium-assets.md +0 -625
  824. package/assets/docs/guide/import-media/from-remote-source/pexels.md +0 -692
  825. package/assets/docs/guide/import-media/from-remote-source/soundstripe.md +0 -497
  826. package/assets/docs/guide/import-media/from-remote-source/third-party.md +0 -51
  827. package/assets/docs/guide/import-media/from-remote-source/unsplash.md +0 -914
  828. package/assets/docs/guide/import-media/from-remote-source/your-server.md +0 -764
  829. package/assets/docs/guide/open-the-editor/from-htmlcanvas.md +0 -228
  830. package/assets/docs/guide/open-the-editor/set-zoom-level.md +0 -303
  831. package/assets/docs/guide/plugins/asset-sources.md +0 -553
  832. package/assets/docs/guide/starterkits/3d-mockup-editor.md +0 -748
  833. package/assets/docs/guide/starterkits/advanced-editor.md +0 -698
  834. package/assets/docs/guide/starterkits/advanced-video-editor.md +0 -696
  835. package/assets/docs/guide/starterkits/ai-editor.md +0 -749
  836. package/assets/docs/guide/starterkits/airtable-image-editor.md +0 -672
  837. package/assets/docs/guide/starterkits/apparel-ui.md +0 -188
  838. package/assets/docs/guide/starterkits/assets.md +0 -27
  839. package/assets/docs/guide/starterkits/auto-resize.md +0 -586
  840. package/assets/docs/guide/starterkits/automated-video-generation.md +0 -692
  841. package/assets/docs/guide/starterkits/background-removal-editor.md +0 -480
  842. package/assets/docs/guide/starterkits/content-moderation.md +0 -863
  843. package/assets/docs/guide/starterkits/creative-automation.md +0 -28
  844. package/assets/docs/guide/starterkits/custom-built-uis.md +0 -26
  845. package/assets/docs/guide/starterkits/customization.md +0 -29
  846. package/assets/docs/guide/starterkits/cutout-lines-editor.md +0 -470
  847. package/assets/docs/guide/starterkits/data-merge.md +0 -850
  848. package/assets/docs/guide/starterkits/design-editor.md +0 -698
  849. package/assets/docs/guide/starterkits/design-generation.md +0 -719
  850. package/assets/docs/guide/starterkits/design-validation.md +0 -808
  851. package/assets/docs/guide/starterkits/editor-ui-configurations.md +0 -14
  852. package/assets/docs/guide/starterkits/export-options.md +0 -724
  853. package/assets/docs/guide/starterkits/export-using-renderer.md +0 -708
  854. package/assets/docs/guide/starterkits/extensibility.md +0 -28
  855. package/assets/docs/guide/starterkits/force-crop-editor.md +0 -675
  856. package/assets/docs/guide/starterkits/form-based-template-adoption.md +0 -522
  857. package/assets/docs/guide/starterkits/getty-images-editor.md +0 -700
  858. package/assets/docs/guide/starterkits/html5-ads-exporter.md +0 -719
  859. package/assets/docs/guide/starterkits/indesign-template-import.md +0 -580
  860. package/assets/docs/guide/starterkits/layouts-editor.md +0 -724
  861. package/assets/docs/guide/starterkits/mobile-ui.md +0 -185
  862. package/assets/docs/guide/starterkits/mockup-editor.md +0 -745
  863. package/assets/docs/guide/starterkits/multi-image-generation.md +0 -542
  864. package/assets/docs/guide/starterkits/page-sizes-editor.md +0 -657
  865. package/assets/docs/guide/starterkits/pexels-image-editor.md +0 -665
  866. package/assets/docs/guide/starterkits/photo-editor.md +0 -755
  867. package/assets/docs/guide/starterkits/photo-ui.md +0 -186
  868. package/assets/docs/guide/starterkits/photobook-ui.md +0 -188
  869. package/assets/docs/guide/starterkits/placeholders.md +0 -678
  870. package/assets/docs/guide/starterkits/player.md +0 -405
  871. package/assets/docs/guide/starterkits/plugins.md +0 -25
  872. package/assets/docs/guide/starterkits/postcard-editor.md +0 -202
  873. package/assets/docs/guide/starterkits/pptx-template-import.md +0 -581
  874. package/assets/docs/guide/starterkits/print-ready-pdf-editor.md +0 -746
  875. package/assets/docs/guide/starterkits/product-editor.md +0 -773
  876. package/assets/docs/guide/starterkits/psd-template-import.md +0 -580
  877. package/assets/docs/guide/starterkits/qr-code-editor.md +0 -470
  878. package/assets/docs/guide/starterkits/single-page-editor.md +0 -661
  879. package/assets/docs/guide/starterkits/start-with-image.md +0 -684
  880. package/assets/docs/guide/starterkits/start-with-video.md +0 -651
  881. package/assets/docs/guide/starterkits/t-shirt-designer.md +0 -742
  882. package/assets/docs/guide/starterkits/templating.md +0 -23
  883. package/assets/docs/guide/starterkits/theming.md +0 -662
  884. package/assets/docs/guide/starterkits/translation-internationalization.md +0 -662
  885. package/assets/docs/guide/starterkits/unsplash-editor.md +0 -839
  886. package/assets/docs/guide/starterkits/vectorizer-editor.md +0 -466
  887. package/assets/docs/guide/starterkits/version-history.md +0 -745
  888. package/assets/docs/guide/starterkits/video-animations.md +0 -853
  889. package/assets/docs/guide/starterkits/video-captions.md +0 -884
  890. package/assets/docs/guide/starterkits/video-editing.md +0 -25
  891. package/assets/docs/guide/starterkits/video-editor.md +0 -696
  892. package/assets/docs/guide/starterkits/video-export-options.md +0 -676
  893. package/assets/docs/guide/starterkits/viewer.md +0 -400
  894. package/assets/docs/guide/starterkits.md +0 -41
  895. package/assets/docs/guide/stickers-and-shapes/create-edit/vector-edit.md +0 -362
  896. package/assets/docs/guide/text/custom-fonts.md +0 -401
  897. package/assets/docs/guide/text/decorations.md +0 -330
  898. package/assets/docs/guide/text/enumerations.md +0 -258
  899. package/assets/docs/guide/to-v1-10.md +0 -131
  900. package/assets/docs/guide/to-v1-13.md +0 -165
  901. package/assets/docs/guide/to-v1-32.md +0 -110
  902. package/assets/docs/guide/to-v1-69.md +0 -468
  903. package/assets/docs/guide/to-v1-72.md +0 -193
  904. package/assets/docs/guide/use-templates/library.md +0 -450
  905. package/assets/docs/guide/user-interface/ai-integration/audio-generation.md +0 -428
  906. package/assets/docs/guide/user-interface/ai-integration/auto-captions.md +0 -337
  907. package/assets/docs/guide/user-interface/ai-integration/custom-provider.md +0 -853
  908. package/assets/docs/guide/user-interface/ai-integration/gateway-provider.md +0 -1045
  909. package/assets/docs/guide/user-interface/ai-integration/image-generation.md +0 -641
  910. package/assets/docs/guide/user-interface/ai-integration/integrate.md +0 -966
  911. package/assets/docs/guide/user-interface/ai-integration/proxy-server.md +0 -99
  912. package/assets/docs/guide/user-interface/ai-integration/text-generation.md +0 -498
  913. package/assets/docs/guide/user-interface/ai-integration/video-generation.md +0 -493
  914. package/assets/docs/guide/user-interface/ai-integration.md +0 -30
  915. package/assets/docs/guide/user-interface/appearance/change-ui-font.md +0 -316
  916. package/assets/docs/guide/user-interface/appearance/custom-labels.md +0 -509
  917. package/assets/docs/guide/user-interface/appearance/icons.md +0 -373
  918. package/assets/docs/guide/user-interface/appearance/theming.md +0 -665
  919. package/assets/docs/guide/user-interface/appearance.md +0 -23
  920. package/assets/docs/guide/user-interface/build-your-own-ui.md +0 -620
  921. package/assets/docs/guide/user-interface/customization/canvas-menu.md +0 -412
  922. package/assets/docs/guide/user-interface/customization/canvas.md +0 -281
  923. package/assets/docs/guide/user-interface/customization/color-palette.md +0 -413
  924. package/assets/docs/guide/user-interface/customization/crop-presets.md +0 -384
  925. package/assets/docs/guide/user-interface/customization/disable-or-enable.md +0 -676
  926. package/assets/docs/guide/user-interface/customization/dock.md +0 -399
  927. package/assets/docs/guide/user-interface/customization/force-crop.md +0 -289
  928. package/assets/docs/guide/user-interface/customization/inspector-bar.md +0 -371
  929. package/assets/docs/guide/user-interface/customization/navigation-bar.md +0 -516
  930. package/assets/docs/guide/user-interface/customization/page-format.md +0 -436
  931. package/assets/docs/guide/user-interface/customization/panel.md +0 -605
  932. package/assets/docs/guide/user-interface/customization/quick-start/add-action-buttons.md +0 -531
  933. package/assets/docs/guide/user-interface/customization/quick-start/add-dock-buttons.md +0 -358
  934. package/assets/docs/guide/user-interface/customization/quick-start/create-custom-components.md +0 -374
  935. package/assets/docs/guide/user-interface/customization/quick-start/reorder-components.md +0 -323
  936. package/assets/docs/guide/user-interface/customization/quick-start/show-hide-components.md +0 -294
  937. package/assets/docs/guide/user-interface/customization/quick-start.md +0 -12
  938. package/assets/docs/guide/user-interface/customization/reference/component-order-api.md +0 -519
  939. package/assets/docs/guide/user-interface/customization/reference/component-reference.md +0 -333
  940. package/assets/docs/guide/user-interface/customization/reference.md +0 -12
  941. package/assets/docs/guide/user-interface/customization.md +0 -39
  942. package/assets/docs/guide/user-interface/localization.md +0 -633
  943. package/assets/docs/guide/user-interface/overview.md +0 -167
  944. package/assets/docs/guide/user-interface/ui-extensions/add-custom-feature.md +0 -411
  945. package/assets/docs/guide/user-interface/ui-extensions/asset-library.md +0 -721
  946. package/assets/docs/guide/user-interface/ui-extensions/create-custom-panel.md +0 -331
  947. package/assets/docs/guide/user-interface/ui-extensions/customize-behaviour.md +0 -553
  948. package/assets/docs/guide/user-interface/ui-extensions/notifications-and-dialogs.md +0 -672
  949. package/assets/docs/guide/user-interface/ui-extensions/quick-actions.md +0 -415
  950. package/assets/docs/guide/user-interface/ui-extensions/register-new-component.md +0 -521
  951. package/assets/docs/guide/user-interface/ui-extensions.md +0 -26
  952. package/assets/docs/guide/user-interface.md +0 -25
  953. package/assets/prompts/evals-assetGenerate.md +0 -12
  954. package/assets/prompts/evals-brutalistCore.md +0 -34
  955. package/assets/prompts/evals-danskCatalogue.md +0 -31
  956. package/assets/prompts/evals-exportRoundTrip.md +0 -12
  957. package/assets/prompts/evals-inspectPriorCode.md +0 -16
  958. package/assets/prompts/evals-listProjectFiles.md +0 -6
  959. package/assets/prompts/evals-readAndExplainScript.md +0 -6
  960. package/assets/prompts/evals-resumeAcrossRestart.md +0 -15
  961. package/assets/prompts/evals-rewindRecovery.md +0 -10
  962. package/assets/prompts/evals-searchAcrossFiles.md +0 -6
  963. package/assets/prompts/evals-weddingCard.md +0 -20
  964. package/assets/prompts/explain.md +0 -6
  965. package/assets/prompts/review.md +0 -6
  966. package/dist/frontmatter.d.ts +0 -15
  967. package/dist/frontmatter.d.ts.map +0 -1
  968. package/dist/frontmatter.js +0 -46
  969. package/dist/frontmatter.js.map +0 -1
  970. package/dist/test/test/frontmatter.test.d.ts +0 -2
  971. package/dist/test/test/frontmatter.test.d.ts.map +0 -1
  972. package/dist/test/test/frontmatter.test.js +0 -55
  973. package/dist/test/test/frontmatter.test.js.map +0 -1
@@ -1,54 +1,38 @@
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).
1
+ > This is one page of the CE.SDK Node.js documentation. For a complete overview, see the [Node.js Documentation Index](https://img.ly/docs/cesdk/node.md). For all docs in one file, see [llms-full.txt](./llms-full.txt.md).
2
2
 
3
3
  **Navigation:** [Guides](./guides.md) > [Filters and Effects](./filters-and-effects.md) > [Create Custom Filters](./filters-and-effects/create-custom-filters.md)
4
4
 
5
5
  ---
6
6
 
7
- Extend CE.SDK with your own LUT filters by creating and registering custom filter asset sources for brand-specific color grading.
8
-
9
- ![Create Custom Filters example showing images with custom filters applied](https://img.ly/docs/cesdk/./assets/browser.hero.webp)
7
+ Extend CE.SDK with your own LUT filters by creating and registering custom filter asset sources for server-side image processing pipelines.
10
8
 
11
9
  > **Reading time:** 10 minutes
12
10
  >
13
11
  > **Resources:**
14
12
  >
15
13
  > - [Download examples](https://github.com/imgly/cesdk-web-examples/archive/refs/tags/release-$UBQ_VERSION$.zip)
16
- > - [View source on GitHub](https://github.com/imgly/cesdk-web-examples/tree/release-$UBQ_VERSION$/guides-filters-and-effects-add-browser)
17
- > - [Open in StackBlitz](https://stackblitz.com/github/imgly/cesdk-web-examples/tree/v$UBQ_VERSION$/guides-filters-and-effects-add-browser)
18
- > - [Live demo](https://img.ly/docs/cesdk/examples/guides-filters-and-effects-add-browser/)
14
+ >
15
+ > - [View source on GitHub](https://github.com/imgly/cesdk-web-examples/tree/release-$UBQ_VERSION$/guides-filters-and-effects-add-server-js)
16
+ >
17
+ > - [Open in StackBlitz](https://stackblitz.com/github/imgly/cesdk-web-examples/tree/v$UBQ_VERSION$/guides-filters-and-effects-add-server-js)
19
18
 
20
- CE.SDK provides built-in LUT filters, but many applications need brand-specific color grading or custom filter collections. Custom filter asset sources let you register your own LUT filters that appear alongside or replace the defaults. Once registered, custom filters integrate seamlessly with the built-in UI and can be applied programmatically.
19
+ CE.SDK provides built-in LUT filters, but many applications need brand-specific color grading or custom filter collections. Custom filter asset sources let you register your own LUT filters for automated batch processing and server-side image workflows. Once registered, custom filters can be queried and applied programmatically.
21
20
 
22
- ```typescript file=@cesdk_web_examples/guides-filters-and-effects-add-browser/browser.ts reference-only
23
- import type {
24
- AssetQueryData,
25
- AssetResult,
21
+ ```typescript file=@cesdk_web_examples/guides-filters-and-effects-add-server-js/server-js.ts reference-only
22
+ import CreativeEngine, {
26
23
  AssetSource,
24
+ AssetQueryData,
27
25
  AssetsQueryResult,
28
- EditorPlugin,
29
- EditorPluginContext
30
- } from '@cesdk/cesdk-js';
31
- import packageJson from './package.json';
32
-
33
- import {
34
- BlurAssetSource,
35
- ColorPaletteAssetSource,
36
- CropPresetsAssetSource,
37
- DemoAssetSources,
38
- EffectsAssetSource,
39
- FiltersAssetSource,
40
- PagePresetsAssetSource,
41
- StickerAssetSource,
42
- TextAssetSource,
43
- TextComponentAssetSource,
44
- TypefaceAssetSource,
45
- UploadAssetSources,
46
- VectorShapeAssetSource
47
- } from '@cesdk/cesdk-js/plugins';
48
- import { DesignEditorConfig } from './design-editor/plugin';
26
+ AssetResult
27
+ } from '@cesdk/node';
28
+ import { config } from 'dotenv';
29
+ import { writeFileSync, mkdirSync, existsSync } from 'fs';
30
+
31
+ // Load environment variables
32
+ config();
49
33
 
50
34
  /**
51
- * CE.SDK Plugin: Create Custom Filters Guide
35
+ * CE.SDK Server Guide: Create Custom Filters
52
36
  *
53
37
  * Demonstrates creating and registering custom LUT filter asset sources:
54
38
  * - Creating a filter source with addSource()
@@ -56,63 +40,28 @@ import { DesignEditorConfig } from './design-editor/plugin';
56
40
  * - Loading filters from JSON configuration
57
41
  * - Querying custom filters
58
42
  * - Applying filters from custom sources
43
+ * - Exporting the result
59
44
  */
60
- class Example implements EditorPlugin {
61
- name = packageJson.name;
62
-
63
- version = packageJson.version;
64
45
 
65
- async initialize({ cesdk }: EditorPluginContext): Promise<void> {
66
- if (!cesdk) {
67
- throw new Error('CE.SDK instance is required for this plugin');
68
- }
46
+ // Initialize CE.SDK engine in headless mode
47
+ const engine = await CreativeEngine.init({
48
+ baseURL: process.env.IMGLY_LOCAL_ASSETS_URL
49
+ // license: process.env.CESDK_LICENSE, // Optional (trial mode available)
50
+ });
69
51
 
70
- await cesdk.addPlugin(new DesignEditorConfig());
52
+ try {
53
+ // Create a design scene with specific page dimensions
54
+ engine.scene.create('VerticalStack', {
55
+ page: { size: { width: 800, height: 600 } }
56
+ });
57
+ const page = engine.block.findByType('page')[0];
71
58
 
72
- // Add asset source plugins
73
- await cesdk.addPlugin(new BlurAssetSource());
74
- await cesdk.addPlugin(new ColorPaletteAssetSource());
75
- await cesdk.addPlugin(new CropPresetsAssetSource());
76
- await cesdk.addPlugin(
77
- new UploadAssetSources({ include: ['ly.img.image.upload'] })
78
- );
79
- await cesdk.addPlugin(
80
- new DemoAssetSources({
81
- include: [
82
- 'ly.img.templates.blank.*',
83
- 'ly.img.templates.presentation.*',
84
- 'ly.img.templates.print.*',
85
- 'ly.img.templates.social.*',
86
- 'ly.img.image.*'
87
- ]
88
- })
89
- );
90
- await cesdk.addPlugin(new EffectsAssetSource());
91
- await cesdk.addPlugin(new FiltersAssetSource());
92
- await cesdk.addPlugin(new PagePresetsAssetSource());
93
- await cesdk.addPlugin(new StickerAssetSource());
94
- await cesdk.addPlugin(new TextAssetSource());
95
- await cesdk.addPlugin(new TextComponentAssetSource());
96
- await cesdk.addPlugin(new TypefaceAssetSource());
97
- await cesdk.addPlugin(new VectorShapeAssetSource());
98
-
99
- await cesdk.actions.run('scene.create', {
100
- page: { width: 800, height: 600, unit: 'Pixel' }
101
- });
102
-
103
- const engine = cesdk.engine;
104
- const page = engine.block.findByType('page')[0];
105
-
106
- // Enable filters in the inspector panel using the Feature API
107
- cesdk.feature.enable('ly.img.filter');
108
-
109
- // Add a custom filter to the built-in LUT filter source
110
- // The ID must follow the format //ly.img.cesdk.filters.lut/{name}
111
- // for the UI to display the label correctly
112
- engine.asset.addAssetToSource('ly.img.filter', {
113
- id: '//ly.img.cesdk.filters.lut/mycustomfilter',
114
- label: { en: 'MY CUSTOM FILTER' },
115
- tags: { en: ['custom', 'brand'] },
59
+ // Define custom LUT filter assets with metadata
60
+ const customFilters: AssetResult[] = [
61
+ {
62
+ id: 'vintage-warm',
63
+ label: 'Vintage Warm',
64
+ tags: ['vintage', 'warm', 'retro'],
116
65
  meta: {
117
66
  uri: 'https://cdn.img.ly/assets/v4/ly.img.filter.lut/LUTs/imgly_lut_ad1920_5_5_128.png',
118
67
  thumbUri:
@@ -121,279 +70,100 @@ class Example implements EditorPlugin {
121
70
  verticalTileCount: '5',
122
71
  blockType: '//ly.img.ubq/effect/lut_filter'
123
72
  }
124
- });
125
-
126
- // Add translation for the custom filter label
127
- cesdk.i18n.setTranslations({
128
- en: {
129
- 'property.lutFilter.mycustomfilter': 'MY CUSTOM FILTER'
73
+ },
74
+ {
75
+ id: 'cool-cinema',
76
+ label: 'Cool Cinema',
77
+ tags: ['cinema', 'cool', 'film'],
78
+ meta: {
79
+ uri: 'https://cdn.img.ly/assets/v4/ly.img.filter.lut/LUTs/imgly_lut_bw_5_5_128.png',
80
+ thumbUri:
81
+ 'https://cdn.img.ly/assets/v4/ly.img.filter.lut/LUTs/imgly_lut_bw_5_5_128.png',
82
+ horizontalTileCount: '5',
83
+ verticalTileCount: '5',
84
+ blockType: '//ly.img.ubq/effect/lut_filter'
130
85
  }
131
- });
132
-
133
- // Create a custom filter asset source for organizing multiple filters
134
- const customFilterSource: AssetSource = {
135
- id: 'my-custom-filters',
136
-
137
- async findAssets(
138
- queryData: AssetQueryData
139
- ): Promise<AssetsQueryResult | undefined> {
140
- // Define custom LUT filter assets
141
- const filters: AssetResult[] = [
142
- {
143
- id: 'vintage-warm',
144
- label: 'Vintage Warm',
145
- tags: ['vintage', 'warm', 'retro'],
146
- meta: {
147
- uri: 'https://cdn.img.ly/assets/v4/ly.img.filter.lut/LUTs/imgly_lut_ad1920_5_5_128.png',
148
- thumbUri:
149
- 'https://cdn.img.ly/assets/v4/ly.img.filter.lut/LUTs/imgly_lut_ad1920_5_5_128.png',
150
- horizontalTileCount: '5',
151
- verticalTileCount: '5',
152
- blockType: '//ly.img.ubq/effect/lut_filter'
153
- }
154
- },
155
- {
156
- id: 'cool-cinema',
157
- label: 'Cool Cinema',
158
- tags: ['cinema', 'cool', 'film'],
159
- meta: {
160
- uri: 'https://cdn.img.ly/assets/v4/ly.img.filter.lut/LUTs/imgly_lut_ad1920_5_5_128.png',
161
- thumbUri:
162
- 'https://cdn.img.ly/assets/v4/ly.img.filter.lut/LUTs/imgly_lut_ad1920_5_5_128.png',
163
- horizontalTileCount: '5',
164
- verticalTileCount: '5',
165
- blockType: '//ly.img.ubq/effect/lut_filter'
166
- }
167
- },
168
- {
169
- id: 'bw-classic',
170
- label: 'B&W Classic',
171
- tags: ['black and white', 'classic', 'monochrome'],
172
- meta: {
173
- uri: 'https://cdn.img.ly/assets/v4/ly.img.filter.lut/LUTs/imgly_lut_ad1920_5_5_128.png',
174
- thumbUri:
175
- 'https://cdn.img.ly/assets/v4/ly.img.filter.lut/LUTs/imgly_lut_ad1920_5_5_128.png',
176
- horizontalTileCount: '5',
177
- verticalTileCount: '5',
178
- blockType: '//ly.img.ubq/effect/lut_filter'
179
- }
180
- }
181
- ];
182
-
183
- // Filter by query if provided
184
- let filteredAssets = filters;
185
- if (queryData.query) {
186
- const searchTerm = queryData.query.toLowerCase();
187
- filteredAssets = filters.filter(
188
- (asset) =>
189
- asset.label?.toLowerCase().includes(searchTerm) ||
190
- asset.tags?.some((tag) => tag.toLowerCase().includes(searchTerm))
191
- );
192
- }
193
-
194
- // Filter by groups if provided
195
- if (queryData.groups && queryData.groups.length > 0) {
196
- filteredAssets = filteredAssets.filter((asset) =>
197
- asset.tags?.some((tag) => queryData.groups?.includes(tag))
198
- );
199
- }
200
-
201
- // Handle pagination
202
- const page = queryData.page ?? 0;
203
- const perPage = queryData.perPage ?? 10;
204
- const startIndex = page * perPage;
205
- const paginatedAssets = filteredAssets.slice(
206
- startIndex,
207
- startIndex + perPage
208
- );
209
-
210
- return {
211
- assets: paginatedAssets,
212
- total: filteredAssets.length,
213
- currentPage: page,
214
- nextPage:
215
- startIndex + perPage < filteredAssets.length ? page + 1 : undefined
216
- };
217
- },
218
-
219
- // Return available filter categories
220
- async getGroups(): Promise<string[]> {
221
- return ['vintage', 'cinema', 'black and white'];
86
+ },
87
+ {
88
+ id: 'bw-classic',
89
+ label: 'B&W Classic',
90
+ tags: ['black and white', 'classic', 'monochrome'],
91
+ meta: {
92
+ uri: 'https://cdn.img.ly/assets/v4/ly.img.filter.lut/LUTs/imgly_lut_bw_5_5_128.png',
93
+ thumbUri:
94
+ 'https://cdn.img.ly/assets/v4/ly.img.filter.lut/LUTs/imgly_lut_bw_5_5_128.png',
95
+ horizontalTileCount: '5',
96
+ verticalTileCount: '5',
97
+ blockType: '//ly.img.ubq/effect/lut_filter'
222
98
  }
223
- };
224
-
225
- // Register the custom filter source for programmatic access
226
- engine.asset.addSource(customFilterSource);
227
-
228
- // Load filters from a JSON configuration string
229
- const filterConfigJSON = JSON.stringify({
230
- version: '2.0.0',
231
- id: 'my-json-filters',
232
- assets: [
233
- {
234
- id: 'sunset-glow',
235
- label: { en: 'Sunset Glow' },
236
- tags: { en: ['warm', 'sunset', 'golden'] },
237
- groups: ['Warm Tones'],
238
- meta: {
239
- uri: 'https://cdn.img.ly/assets/v4/ly.img.filter.lut/LUTs/imgly_lut_ad1920_5_5_128.png',
240
- thumbUri:
241
- 'https://cdn.img.ly/assets/v4/ly.img.filter.lut/LUTs/imgly_lut_ad1920_5_5_128.png',
242
- horizontalTileCount: '5',
243
- verticalTileCount: '5',
244
- blockType: '//ly.img.ubq/effect/lut_filter'
245
- }
246
- },
247
- {
248
- id: 'ocean-breeze',
249
- label: { en: 'Ocean Breeze' },
250
- tags: { en: ['cool', 'blue', 'ocean'] },
251
- groups: ['Cool Tones'],
252
- meta: {
253
- uri: 'https://cdn.img.ly/assets/v4/ly.img.filter.lut/LUTs/imgly_lut_ad1920_5_5_128.png',
254
- thumbUri:
255
- 'https://cdn.img.ly/assets/v4/ly.img.filter.lut/LUTs/imgly_lut_ad1920_5_5_128.png',
256
- horizontalTileCount: '5',
257
- verticalTileCount: '5',
258
- blockType: '//ly.img.ubq/effect/lut_filter'
259
- }
260
- }
261
- ]
262
- });
263
-
264
- // Create asset source from JSON string
265
- const jsonSourceId =
266
- await engine.asset.addLocalAssetSourceFromJSONString(filterConfigJSON);
267
- // eslint-disable-next-line no-console
268
- console.log('Created JSON-based filter source:', jsonSourceId);
269
-
270
- // Query filters from our custom source for programmatic use
271
- const customFilterResults = await engine.asset.findAssets(
272
- 'my-custom-filters',
273
- {
274
- page: 0,
275
- perPage: 10
99
+ }
100
+ ];
101
+
102
+ // Create a custom filter asset source
103
+ const customFilterSource: AssetSource = {
104
+ id: 'my-custom-filters',
105
+
106
+ async findAssets(
107
+ queryData: AssetQueryData
108
+ ): Promise<AssetsQueryResult | undefined> {
109
+ // Filter by query if provided
110
+ let filteredAssets = customFilters;
111
+ if (queryData.query) {
112
+ const searchTerm = queryData.query.toLowerCase();
113
+ filteredAssets = customFilters.filter(
114
+ (asset) =>
115
+ asset.label?.toLowerCase().includes(searchTerm) ||
116
+ asset.tags?.some((tag) => tag.toLowerCase().includes(searchTerm))
117
+ );
276
118
  }
277
- );
278
-
279
- // Create an image block to demonstrate applying a custom filter
280
- const imageUri = 'https://img.ly/static/ubq_samples/sample_1.jpg';
281
- const imageBlock = await engine.block.addImage(imageUri, {
282
- x: 50,
283
- y: 150,
284
- size: { width: 300, height: 200 }
285
- });
286
- engine.block.appendChild(page, imageBlock);
287
-
288
- // Get a filter from our custom source
289
- const filterAsset = customFilterResults.assets[0];
290
- if (filterAsset && filterAsset.meta) {
291
- // Create and configure the LUT filter effect
292
- const lutEffect = engine.block.createEffect(
293
- '//ly.img.ubq/effect/lut_filter'
294
- );
295
119
 
296
- // Set LUT file URI from asset metadata
297
- engine.block.setString(
298
- lutEffect,
299
- 'effect/lut_filter/lutFileURI',
300
- filterAsset.meta.uri as string
301
- );
120
+ // Filter by groups if provided
121
+ if (queryData.groups && queryData.groups.length > 0) {
122
+ filteredAssets = filteredAssets.filter((asset) =>
123
+ asset.tags?.some((tag) => queryData.groups?.includes(tag))
124
+ );
125
+ }
302
126
 
303
- // Configure LUT grid dimensions
304
- engine.block.setInt(
305
- lutEffect,
306
- 'effect/lut_filter/horizontalTileCount',
307
- parseInt(filterAsset.meta.horizontalTileCount as string, 10)
308
- );
309
- engine.block.setInt(
310
- lutEffect,
311
- 'effect/lut_filter/verticalTileCount',
312
- parseInt(filterAsset.meta.verticalTileCount as string, 10)
127
+ // Handle pagination
128
+ const currentPage = queryData.page ?? 0;
129
+ const perPage = queryData.perPage ?? 10;
130
+ const startIndex = currentPage * perPage;
131
+ const paginatedAssets = filteredAssets.slice(
132
+ startIndex,
133
+ startIndex + perPage
313
134
  );
314
135
 
315
- // Set filter intensity (0.0 to 1.0)
316
- engine.block.setFloat(lutEffect, 'effect/lut_filter/intensity', 0.85);
136
+ return {
137
+ assets: paginatedAssets,
138
+ total: filteredAssets.length,
139
+ currentPage,
140
+ nextPage:
141
+ startIndex + perPage < filteredAssets.length
142
+ ? currentPage + 1
143
+ : undefined
144
+ };
145
+ },
317
146
 
318
- // Apply the effect to the image block
319
- engine.block.appendEffect(imageBlock, lutEffect);
147
+ // Return available filter categories
148
+ async getGroups(): Promise<string[]> {
149
+ return ['vintage', 'cinema', 'black and white'];
320
150
  }
151
+ };
321
152
 
322
- // Create a second image without a filter for comparison
323
- const imageBlock2 = await engine.block.addImage(imageUri, {
324
- x: 450,
325
- y: 150,
326
- size: { width: 300, height: 200 }
327
- });
328
- engine.block.appendChild(page, imageBlock2);
329
-
330
- // Select the filtered image to show the filter in the inspector
331
- engine.block.select(imageBlock);
332
-
333
- // eslint-disable-next-line no-console
334
- console.log(
335
- 'Custom filters guide initialized. Select an image to see filters in the inspector panel.'
336
- );
337
- }
338
- }
153
+ // Register the custom filter source
154
+ engine.asset.addSource(customFilterSource);
155
+ console.log('Registered custom filter source: my-custom-filters');
339
156
 
340
- export default Example;
341
- ```
342
-
343
- This guide covers how to create filter asset sources, define filter metadata, load filters from JSON configuration, and apply custom filters to design elements.
344
-
345
- ## Filter Asset Metadata
346
-
347
- LUT filters need these properties in the `meta` object:
348
-
349
- - **`uri`** - URL to the LUT image file (PNG format)
350
- - **`thumbUri`** - URL to the thumbnail preview image
351
- - **`horizontalTileCount`** - Number of horizontal tiles in the LUT grid (typically 5 or 8)
352
- - **`verticalTileCount`** - Number of vertical tiles in the LUT grid (typically 5 or 8)
353
- - **`blockType`** - Must be `//ly.img.ubq/effect/lut_filter` for LUT filters
354
-
355
- ## Adding a Custom Filter
356
-
357
- We register a custom filter source using `engine.asset.addSource()` with a `findAssets` callback. This callback returns filter assets matching the query parameters. After registering the source, we use `cesdk.ui.updateAssetLibraryEntry()` to add our custom source to the filter inspector panel.
358
-
359
- ```typescript highlight-create-custom-source
360
- // Add a custom filter to the built-in LUT filter source
361
- // The ID must follow the format //ly.img.cesdk.filters.lut/{name}
362
- // for the UI to display the label correctly
363
- engine.asset.addAssetToSource('ly.img.filter', {
364
- id: '//ly.img.cesdk.filters.lut/mycustomfilter',
365
- label: { en: 'MY CUSTOM FILTER' },
366
- tags: { en: ['custom', 'brand'] },
367
- meta: {
368
- uri: 'https://cdn.img.ly/assets/v4/ly.img.filter.lut/LUTs/imgly_lut_ad1920_5_5_128.png',
369
- thumbUri:
370
- 'https://cdn.img.ly/assets/v4/ly.img.filter.lut/LUTs/imgly_lut_ad1920_5_5_128.png',
371
- horizontalTileCount: '5',
372
- verticalTileCount: '5',
373
- blockType: '//ly.img.ubq/effect/lut_filter'
374
- }
375
- });
376
-
377
- // Add translation for the custom filter label
378
- cesdk.i18n.setTranslations({
379
- en: {
380
- 'property.lutFilter.mycustomfilter': 'MY CUSTOM FILTER'
381
- }
382
- });
383
-
384
- // Create a custom filter asset source for organizing multiple filters
385
- const customFilterSource: AssetSource = {
386
- id: 'my-custom-filters',
387
-
388
- async findAssets(
389
- queryData: AssetQueryData
390
- ): Promise<AssetsQueryResult | undefined> {
391
- // Define custom LUT filter assets
392
- const filters: AssetResult[] = [
157
+ // Load filters from a JSON configuration string
158
+ const filterConfigJSON = JSON.stringify({
159
+ version: '2.0.0',
160
+ id: 'my-json-filters',
161
+ assets: [
393
162
  {
394
- id: 'vintage-warm',
395
- label: 'Vintage Warm',
396
- tags: ['vintage', 'warm', 'retro'],
163
+ id: 'sunset-glow',
164
+ label: { en: 'Sunset Glow' },
165
+ tags: { en: ['warm', 'sunset', 'golden'] },
166
+ groups: ['Warm Tones'],
397
167
  meta: {
398
168
  uri: 'https://cdn.img.ly/assets/v4/ly.img.filter.lut/LUTs/imgly_lut_ad1920_5_5_128.png',
399
169
  thumbUri:
@@ -404,109 +174,168 @@ const customFilterSource: AssetSource = {
404
174
  }
405
175
  },
406
176
  {
407
- id: 'cool-cinema',
408
- label: 'Cool Cinema',
409
- tags: ['cinema', 'cool', 'film'],
177
+ id: 'ocean-breeze',
178
+ label: { en: 'Ocean Breeze' },
179
+ tags: { en: ['cool', 'blue', 'ocean'] },
180
+ groups: ['Cool Tones'],
410
181
  meta: {
411
- uri: 'https://cdn.img.ly/assets/v4/ly.img.filter.lut/LUTs/imgly_lut_ad1920_5_5_128.png',
182
+ uri: 'https://cdn.img.ly/assets/v4/ly.img.filter.lut/LUTs/imgly_lut_bw_5_5_128.png',
412
183
  thumbUri:
413
- 'https://cdn.img.ly/assets/v4/ly.img.filter.lut/LUTs/imgly_lut_ad1920_5_5_128.png',
414
- horizontalTileCount: '5',
415
- verticalTileCount: '5',
416
- blockType: '//ly.img.ubq/effect/lut_filter'
417
- }
418
- },
419
- {
420
- id: 'bw-classic',
421
- label: 'B&W Classic',
422
- tags: ['black and white', 'classic', 'monochrome'],
423
- meta: {
424
- uri: 'https://cdn.img.ly/assets/v4/ly.img.filter.lut/LUTs/imgly_lut_ad1920_5_5_128.png',
425
- thumbUri:
426
- 'https://cdn.img.ly/assets/v4/ly.img.filter.lut/LUTs/imgly_lut_ad1920_5_5_128.png',
184
+ 'https://cdn.img.ly/assets/v4/ly.img.filter.lut/LUTs/imgly_lut_bw_5_5_128.png',
427
185
  horizontalTileCount: '5',
428
186
  verticalTileCount: '5',
429
187
  blockType: '//ly.img.ubq/effect/lut_filter'
430
188
  }
431
189
  }
432
- ];
433
-
434
- // Filter by query if provided
435
- let filteredAssets = filters;
436
- if (queryData.query) {
437
- const searchTerm = queryData.query.toLowerCase();
438
- filteredAssets = filters.filter(
439
- (asset) =>
440
- asset.label?.toLowerCase().includes(searchTerm) ||
441
- asset.tags?.some((tag) => tag.toLowerCase().includes(searchTerm))
442
- );
443
- }
190
+ ]
191
+ });
444
192
 
445
- // Filter by groups if provided
446
- if (queryData.groups && queryData.groups.length > 0) {
447
- filteredAssets = filteredAssets.filter((asset) =>
448
- asset.tags?.some((tag) => queryData.groups?.includes(tag))
449
- );
193
+ // Create asset source from JSON string
194
+ const jsonSourceId =
195
+ await engine.asset.addLocalAssetSourceFromJSONString(filterConfigJSON);
196
+ console.log('Created JSON-based filter source:', jsonSourceId);
197
+
198
+ // Query filters from the custom source
199
+ const customFilterResults = await engine.asset.findAssets(
200
+ 'my-custom-filters',
201
+ {
202
+ page: 0,
203
+ perPage: 10
450
204
  }
205
+ );
206
+ console.log('Found', customFilterResults.total, 'filters in custom source');
207
+
208
+ // Query filters from the JSON source
209
+ const jsonFilterResults = await engine.asset.findAssets('my-json-filters', {
210
+ page: 0,
211
+ perPage: 10
212
+ });
213
+ console.log('Found', jsonFilterResults.total, 'filters in JSON source');
214
+
215
+ // List all registered asset sources
216
+ const allSources = engine.asset.findAllSources();
217
+ console.log('Registered sources:', allSources);
218
+
219
+ // Create an image block
220
+ const imageUri = 'https://img.ly/static/ubq_samples/sample_1.jpg';
221
+ const imageBlock = await engine.block.addImage(imageUri, {
222
+ x: 50,
223
+ y: 50,
224
+ size: { width: 300, height: 225 }
225
+ });
226
+ engine.block.appendChild(page, imageBlock);
227
+
228
+ // Get the first filter from our custom source
229
+ const filterAsset = customFilterResults.assets[0];
230
+ if (filterAsset && filterAsset.meta) {
231
+ // Create and configure the LUT filter effect
232
+ const lutEffect = engine.block.createEffect(
233
+ '//ly.img.ubq/effect/lut_filter'
234
+ );
451
235
 
452
- // Handle pagination
453
- const page = queryData.page ?? 0;
454
- const perPage = queryData.perPage ?? 10;
455
- const startIndex = page * perPage;
456
- const paginatedAssets = filteredAssets.slice(
457
- startIndex,
458
- startIndex + perPage
236
+ // Set LUT file URI from asset metadata
237
+ engine.block.setString(
238
+ lutEffect,
239
+ 'effect/lut_filter/lutFileURI',
240
+ filterAsset.meta.uri as string
459
241
  );
460
242
 
461
- return {
462
- assets: paginatedAssets,
463
- total: filteredAssets.length,
464
- currentPage: page,
465
- nextPage:
466
- startIndex + perPage < filteredAssets.length ? page + 1 : undefined
467
- };
468
- },
469
-
470
- // Return available filter categories
471
- async getGroups(): Promise<string[]> {
472
- return ['vintage', 'cinema', 'black and white'];
243
+ // Configure LUT grid dimensions
244
+ engine.block.setInt(
245
+ lutEffect,
246
+ 'effect/lut_filter/horizontalTileCount',
247
+ parseInt(filterAsset.meta.horizontalTileCount as string, 10)
248
+ );
249
+ engine.block.setInt(
250
+ lutEffect,
251
+ 'effect/lut_filter/verticalTileCount',
252
+ parseInt(filterAsset.meta.verticalTileCount as string, 10)
253
+ );
254
+
255
+ // Set filter intensity (0.0 to 1.0)
256
+ engine.block.setFloat(lutEffect, 'effect/lut_filter/intensity', 0.85);
257
+
258
+ // Apply the effect to the image block
259
+ engine.block.appendEffect(imageBlock, lutEffect);
260
+ console.log('Applied filter:', filterAsset.label);
473
261
  }
474
- };
475
262
 
476
- // Register the custom filter source for programmatic access
477
- engine.asset.addSource(customFilterSource);
478
- ```
263
+ // Create a second image block with a filter from JSON source
264
+ const imageBlock2 = await engine.block.addImage(imageUri, {
265
+ x: 450,
266
+ y: 50,
267
+ size: { width: 300, height: 225 }
268
+ });
269
+ engine.block.appendChild(page, imageBlock2);
270
+
271
+ // Get a filter from the JSON source
272
+ const jsonFilterAsset = jsonFilterResults.assets[0];
273
+ if (jsonFilterAsset && jsonFilterAsset.meta) {
274
+ const lutEffect2 = engine.block.createEffect(
275
+ '//ly.img.ubq/effect/lut_filter'
276
+ );
479
277
 
480
- The `findAssets` callback receives query parameters including pagination (`page`, `perPage`), search terms (`query`), and category filters (`groups`). We filter and paginate the results accordingly.
278
+ engine.block.setString(
279
+ lutEffect2,
280
+ 'effect/lut_filter/lutFileURI',
281
+ jsonFilterAsset.meta.uri as string
282
+ );
283
+ engine.block.setInt(
284
+ lutEffect2,
285
+ 'effect/lut_filter/horizontalTileCount',
286
+ parseInt(jsonFilterAsset.meta.horizontalTileCount as string, 10)
287
+ );
288
+ engine.block.setInt(
289
+ lutEffect2,
290
+ 'effect/lut_filter/verticalTileCount',
291
+ parseInt(jsonFilterAsset.meta.verticalTileCount as string, 10)
292
+ );
293
+ engine.block.setFloat(lutEffect2, 'effect/lut_filter/intensity', 0.85);
481
294
 
482
- The `updateAssetLibraryEntry()` call connects our custom source to the `ly.img.filter` panel, making our filters appear alongside the built-in LUT filters when a user selects an image.
295
+ engine.block.appendEffect(imageBlock2, lutEffect2);
296
+ console.log('Applied JSON filter:', jsonFilterAsset.label);
297
+ }
483
298
 
484
- ### Filter Asset Structure
299
+ // Export the scene to PNG
300
+ const blob = await engine.block.export(page, { mimeType: 'image/png' });
301
+ const buffer = Buffer.from(await blob.arrayBuffer());
485
302
 
486
- Each filter asset returned by `findAssets` needs:
303
+ // Ensure output directory exists
304
+ if (!existsSync('output')) {
305
+ mkdirSync('output');
306
+ }
487
307
 
488
- - **`id`** - Unique identifier for the filter
489
- - **`label`** - Display name shown in the UI
490
- - **`tags`** - Keywords for search filtering
491
- - **`meta`** - Object containing LUT configuration (uri, thumbUri, tile counts, blockType)
308
+ // Save to file
309
+ writeFileSync('output/custom-filters.png', buffer);
310
+ console.log('Exported to output/custom-filters.png');
311
+ } finally {
312
+ engine.dispose();
313
+ }
314
+ ```
492
315
 
493
- The optional `getGroups()` method returns available filter categories for the UI.
316
+ This guide covers how to create filter asset sources, define filter metadata, load filters from JSON configuration, query custom sources, and apply filters to images.
494
317
 
495
- ## Loading Filters from JSON Configuration
318
+ ## Filter Asset Metadata
496
319
 
497
- For larger filter collections, we load definitions from JSON using `engine.asset.addLocalAssetSourceFromJSONString()`. This approach simplifies management of filter libraries.
320
+ LUT filters need these properties in the `meta` object:
498
321
 
499
- ```typescript highlight-load-from-json-string
500
- // Load filters from a JSON configuration string
501
- const filterConfigJSON = JSON.stringify({
502
- version: '2.0.0',
503
- id: 'my-json-filters',
504
- assets: [
322
+ - **`uri`** - URL to the LUT image file (PNG format)
323
+ - **`thumbUri`** - URL to the thumbnail preview image
324
+ - **`horizontalTileCount`** - Number of horizontal tiles in the LUT grid (typically 5 or 8)
325
+ - **`verticalTileCount`** - Number of vertical tiles in the LUT grid (typically 5 or 8)
326
+ - **`blockType`** - Must be `//ly.img.ubq/effect/lut_filter` for LUT filters
327
+
328
+ ## Adding a Custom Filter
329
+
330
+ We register a custom filter source using `engine.asset.addSource()` with a `findAssets` callback. This callback returns filter assets matching the query parameters including pagination, search terms, and category filters.
331
+
332
+ ```typescript highlight-create-custom-source
333
+ // Define custom LUT filter assets with metadata
334
+ const customFilters: AssetResult[] = [
505
335
  {
506
- id: 'sunset-glow',
507
- label: { en: 'Sunset Glow' },
508
- tags: { en: ['warm', 'sunset', 'golden'] },
509
- groups: ['Warm Tones'],
336
+ id: 'vintage-warm',
337
+ label: 'Vintage Warm',
338
+ tags: ['vintage', 'warm', 'retro'],
510
339
  meta: {
511
340
  uri: 'https://cdn.img.ly/assets/v4/ly.img.filter.lut/LUTs/imgly_lut_ad1920_5_5_128.png',
512
341
  thumbUri:
@@ -517,27 +346,147 @@ const filterConfigJSON = JSON.stringify({
517
346
  }
518
347
  },
519
348
  {
520
- id: 'ocean-breeze',
521
- label: { en: 'Ocean Breeze' },
522
- tags: { en: ['cool', 'blue', 'ocean'] },
523
- groups: ['Cool Tones'],
349
+ id: 'cool-cinema',
350
+ label: 'Cool Cinema',
351
+ tags: ['cinema', 'cool', 'film'],
524
352
  meta: {
525
- uri: 'https://cdn.img.ly/assets/v4/ly.img.filter.lut/LUTs/imgly_lut_ad1920_5_5_128.png',
353
+ uri: 'https://cdn.img.ly/assets/v4/ly.img.filter.lut/LUTs/imgly_lut_bw_5_5_128.png',
526
354
  thumbUri:
527
- 'https://cdn.img.ly/assets/v4/ly.img.filter.lut/LUTs/imgly_lut_ad1920_5_5_128.png',
355
+ 'https://cdn.img.ly/assets/v4/ly.img.filter.lut/LUTs/imgly_lut_bw_5_5_128.png',
356
+ horizontalTileCount: '5',
357
+ verticalTileCount: '5',
358
+ blockType: '//ly.img.ubq/effect/lut_filter'
359
+ }
360
+ },
361
+ {
362
+ id: 'bw-classic',
363
+ label: 'B&W Classic',
364
+ tags: ['black and white', 'classic', 'monochrome'],
365
+ meta: {
366
+ uri: 'https://cdn.img.ly/assets/v4/ly.img.filter.lut/LUTs/imgly_lut_bw_5_5_128.png',
367
+ thumbUri:
368
+ 'https://cdn.img.ly/assets/v4/ly.img.filter.lut/LUTs/imgly_lut_bw_5_5_128.png',
528
369
  horizontalTileCount: '5',
529
370
  verticalTileCount: '5',
530
371
  blockType: '//ly.img.ubq/effect/lut_filter'
531
372
  }
532
373
  }
533
- ]
534
- });
374
+ ];
375
+
376
+ // Create a custom filter asset source
377
+ const customFilterSource: AssetSource = {
378
+ id: 'my-custom-filters',
379
+
380
+ async findAssets(
381
+ queryData: AssetQueryData
382
+ ): Promise<AssetsQueryResult | undefined> {
383
+ // Filter by query if provided
384
+ let filteredAssets = customFilters;
385
+ if (queryData.query) {
386
+ const searchTerm = queryData.query.toLowerCase();
387
+ filteredAssets = customFilters.filter(
388
+ (asset) =>
389
+ asset.label?.toLowerCase().includes(searchTerm) ||
390
+ asset.tags?.some((tag) => tag.toLowerCase().includes(searchTerm))
391
+ );
392
+ }
393
+
394
+ // Filter by groups if provided
395
+ if (queryData.groups && queryData.groups.length > 0) {
396
+ filteredAssets = filteredAssets.filter((asset) =>
397
+ asset.tags?.some((tag) => queryData.groups?.includes(tag))
398
+ );
399
+ }
400
+
401
+ // Handle pagination
402
+ const currentPage = queryData.page ?? 0;
403
+ const perPage = queryData.perPage ?? 10;
404
+ const startIndex = currentPage * perPage;
405
+ const paginatedAssets = filteredAssets.slice(
406
+ startIndex,
407
+ startIndex + perPage
408
+ );
409
+
410
+ return {
411
+ assets: paginatedAssets,
412
+ total: filteredAssets.length,
413
+ currentPage,
414
+ nextPage:
415
+ startIndex + perPage < filteredAssets.length
416
+ ? currentPage + 1
417
+ : undefined
418
+ };
419
+ },
420
+
421
+ // Return available filter categories
422
+ async getGroups(): Promise<string[]> {
423
+ return ['vintage', 'cinema', 'black and white'];
424
+ }
425
+ };
426
+
427
+ // Register the custom filter source
428
+ engine.asset.addSource(customFilterSource);
429
+ console.log('Registered custom filter source: my-custom-filters');
430
+ ```
431
+
432
+ The `findAssets` callback receives query parameters including pagination (`page`, `perPage`), search terms (`query`), and category filters (`groups`). We filter and paginate the results accordingly.
433
+
434
+ ### Filter Asset Structure
435
+
436
+ Each filter asset returned by `findAssets` needs:
437
+
438
+ - **`id`** - Unique identifier for the filter
439
+ - **`label`** - Display name for the filter
440
+ - **`tags`** - Keywords for search filtering
441
+ - **`meta`** - Object containing LUT configuration (uri, thumbUri, tile counts, blockType)
442
+
443
+ The optional `getGroups()` method returns available filter categories for organizing filters.
444
+
445
+ ## Loading Filters from JSON Configuration
446
+
447
+ For larger filter collections, we load definitions from JSON using `engine.asset.addLocalAssetSourceFromJSONString()`. This approach simplifies management of filter libraries.
448
+
449
+ ```typescript highlight-load-from-json-string
450
+ // Load filters from a JSON configuration string
451
+ const filterConfigJSON = JSON.stringify({
452
+ version: '2.0.0',
453
+ id: 'my-json-filters',
454
+ assets: [
455
+ {
456
+ id: 'sunset-glow',
457
+ label: { en: 'Sunset Glow' },
458
+ tags: { en: ['warm', 'sunset', 'golden'] },
459
+ groups: ['Warm Tones'],
460
+ meta: {
461
+ uri: 'https://cdn.img.ly/assets/v4/ly.img.filter.lut/LUTs/imgly_lut_ad1920_5_5_128.png',
462
+ thumbUri:
463
+ 'https://cdn.img.ly/assets/v4/ly.img.filter.lut/LUTs/imgly_lut_ad1920_5_5_128.png',
464
+ horizontalTileCount: '5',
465
+ verticalTileCount: '5',
466
+ blockType: '//ly.img.ubq/effect/lut_filter'
467
+ }
468
+ },
469
+ {
470
+ id: 'ocean-breeze',
471
+ label: { en: 'Ocean Breeze' },
472
+ tags: { en: ['cool', 'blue', 'ocean'] },
473
+ groups: ['Cool Tones'],
474
+ meta: {
475
+ uri: 'https://cdn.img.ly/assets/v4/ly.img.filter.lut/LUTs/imgly_lut_bw_5_5_128.png',
476
+ thumbUri:
477
+ 'https://cdn.img.ly/assets/v4/ly.img.filter.lut/LUTs/imgly_lut_bw_5_5_128.png',
478
+ horizontalTileCount: '5',
479
+ verticalTileCount: '5',
480
+ blockType: '//ly.img.ubq/effect/lut_filter'
481
+ }
482
+ }
483
+ ]
484
+ });
535
485
 
536
- // Create asset source from JSON string
537
- const jsonSourceId =
538
- await engine.asset.addLocalAssetSourceFromJSONString(filterConfigJSON);
539
- // eslint-disable-next-line no-console
540
- console.log('Created JSON-based filter source:', jsonSourceId);
486
+ // Create asset source from JSON string
487
+ const jsonSourceId =
488
+ await engine.asset.addLocalAssetSourceFromJSONString(filterConfigJSON);
489
+ console.log('Created JSON-based filter source:', jsonSourceId);
541
490
  ```
542
491
 
543
492
  ### JSON Structure for Filter Assets
@@ -553,48 +502,179 @@ Each asset in the array contains:
553
502
  - **`id`** - Unique filter identifier
554
503
  - **`label`** - Localized label object (e.g., `{ "en": "Filter Name" }`)
555
504
  - **`tags`** - Localized tags for search
556
- - **`groups`** - Category assignments for UI organization
505
+ - **`groups`** - Category assignments for organization
557
506
  - **`meta`** - LUT configuration properties
558
507
 
559
508
  For filters hosted on a CDN, use `engine.asset.addLocalAssetSourceFromJSONURI()` instead, which resolves relative URLs against the JSON file's parent directory.
560
509
 
510
+ ## Querying and Applying Filters
511
+
512
+ We query filters from registered sources using `engine.asset.findAssets()`, then create and configure LUT filter effects from the returned metadata.
513
+
514
+ ```typescript highlight-query-custom-filters
515
+ // Query filters from the custom source
516
+ const customFilterResults = await engine.asset.findAssets(
517
+ 'my-custom-filters',
518
+ {
519
+ page: 0,
520
+ perPage: 10
521
+ }
522
+ );
523
+ console.log('Found', customFilterResults.total, 'filters in custom source');
524
+
525
+ // Query filters from the JSON source
526
+ const jsonFilterResults = await engine.asset.findAssets('my-json-filters', {
527
+ page: 0,
528
+ perPage: 10
529
+ });
530
+ console.log('Found', jsonFilterResults.total, 'filters in JSON source');
531
+
532
+ // List all registered asset sources
533
+ const allSources = engine.asset.findAllSources();
534
+ console.log('Registered sources:', allSources);
535
+ ```
536
+
537
+ We create a `lut_filter` effect using `engine.block.createEffect()` and configure it with metadata from the queried filter asset. The effect is then attached to an image block.
538
+
539
+ ```typescript highlight-apply-custom-filter
540
+ // Create an image block
541
+ const imageUri = 'https://img.ly/static/ubq_samples/sample_1.jpg';
542
+ const imageBlock = await engine.block.addImage(imageUri, {
543
+ x: 50,
544
+ y: 50,
545
+ size: { width: 300, height: 225 }
546
+ });
547
+ engine.block.appendChild(page, imageBlock);
548
+
549
+ // Get the first filter from our custom source
550
+ const filterAsset = customFilterResults.assets[0];
551
+ if (filterAsset && filterAsset.meta) {
552
+ // Create and configure the LUT filter effect
553
+ const lutEffect = engine.block.createEffect(
554
+ '//ly.img.ubq/effect/lut_filter'
555
+ );
556
+
557
+ // Set LUT file URI from asset metadata
558
+ engine.block.setString(
559
+ lutEffect,
560
+ 'effect/lut_filter/lutFileURI',
561
+ filterAsset.meta.uri as string
562
+ );
563
+
564
+ // Configure LUT grid dimensions
565
+ engine.block.setInt(
566
+ lutEffect,
567
+ 'effect/lut_filter/horizontalTileCount',
568
+ parseInt(filterAsset.meta.horizontalTileCount as string, 10)
569
+ );
570
+ engine.block.setInt(
571
+ lutEffect,
572
+ 'effect/lut_filter/verticalTileCount',
573
+ parseInt(filterAsset.meta.verticalTileCount as string, 10)
574
+ );
575
+
576
+ // Set filter intensity (0.0 to 1.0)
577
+ engine.block.setFloat(lutEffect, 'effect/lut_filter/intensity', 0.85);
578
+
579
+ // Apply the effect to the image block
580
+ engine.block.appendEffect(imageBlock, lutEffect);
581
+ console.log('Applied filter:', filterAsset.label);
582
+ }
583
+ ```
584
+
585
+ We can apply filters from any registered source, including JSON-based sources.
586
+
587
+ ```typescript highlight-apply-json-filter
588
+ // Create a second image block with a filter from JSON source
589
+ const imageBlock2 = await engine.block.addImage(imageUri, {
590
+ x: 450,
591
+ y: 50,
592
+ size: { width: 300, height: 225 }
593
+ });
594
+ engine.block.appendChild(page, imageBlock2);
595
+
596
+ // Get a filter from the JSON source
597
+ const jsonFilterAsset = jsonFilterResults.assets[0];
598
+ if (jsonFilterAsset && jsonFilterAsset.meta) {
599
+ const lutEffect2 = engine.block.createEffect(
600
+ '//ly.img.ubq/effect/lut_filter'
601
+ );
602
+
603
+ engine.block.setString(
604
+ lutEffect2,
605
+ 'effect/lut_filter/lutFileURI',
606
+ jsonFilterAsset.meta.uri as string
607
+ );
608
+ engine.block.setInt(
609
+ lutEffect2,
610
+ 'effect/lut_filter/horizontalTileCount',
611
+ parseInt(jsonFilterAsset.meta.horizontalTileCount as string, 10)
612
+ );
613
+ engine.block.setInt(
614
+ lutEffect2,
615
+ 'effect/lut_filter/verticalTileCount',
616
+ parseInt(jsonFilterAsset.meta.verticalTileCount as string, 10)
617
+ );
618
+ engine.block.setFloat(lutEffect2, 'effect/lut_filter/intensity', 0.85);
619
+
620
+ engine.block.appendEffect(imageBlock2, lutEffect2);
621
+ console.log('Applied JSON filter:', jsonFilterAsset.label);
622
+ }
623
+ ```
624
+
625
+ After applying filters, we export the scene to PNG.
626
+
627
+ ```typescript highlight-export
628
+ // Export the scene to PNG
629
+ const blob = await engine.block.export(page, { mimeType: 'image/png' });
630
+ const buffer = Buffer.from(await blob.arrayBuffer());
631
+
632
+ // Ensure output directory exists
633
+ if (!existsSync('output')) {
634
+ mkdirSync('output');
635
+ }
636
+
637
+ // Save to file
638
+ writeFileSync('output/custom-filters.png', buffer);
639
+ console.log('Exported to output/custom-filters.png');
640
+ ```
641
+
561
642
  ## Troubleshooting
562
643
 
563
- ### Filters Not Appearing in UI
644
+ ### Filters Not Found in Query
564
645
 
565
- - Verify the asset source is registered before loading the scene
646
+ - Verify the asset source is registered with `engine.asset.addSource()` or `addLocalAssetSourceFromJSONString()`
566
647
  - Check that filter metadata includes all required fields (`uri`, `thumbUri`, tile counts)
567
648
  - Ensure the `blockType` is set to `//ly.img.ubq/effect/lut_filter`
568
- - Confirm thumbnails are accessible URLs
649
+ - Confirm the source ID matches when calling `findAssets()`
569
650
 
570
651
  ### LUT Not Rendering Correctly
571
652
 
572
653
  - Verify tile count values match the actual LUT image grid dimensions
573
- - Check that the LUT image URL is CORS-enabled for cross-origin requests
654
+ - Check that the LUT image URL is accessible from your server
574
655
  - Confirm the LUT image uses PNG format
575
656
 
576
- ### Filter Thumbnails Missing
657
+ ### JSON Source Not Loading
577
658
 
578
- - Verify `thumbUri` points to an accessible image
579
- - Check that thumbnail URLs don't have CORS restrictions
580
- - Ensure thumbnail dimensions are appropriate for UI display (typically 100-200px)
659
+ - Verify JSON structure matches the required format with `version`, `id`, and `assets`
660
+ - Ensure asset metadata includes required fields
661
+ - Check for JSON syntax errors
581
662
 
582
663
  ## API Reference
583
664
 
584
- | Method | Description |
585
- | ---------------------------------------------------------------- | ----------------------------------------------------------------------------- |
586
- | `engine.asset.addSource(source)` | Register a custom asset source with findAssets callback |
587
- | `engine.asset.addLocalAssetSourceFromJSONString(json, basePath)` | Create asset source from inline JSON configuration |
588
- | `engine.asset.addLocalAssetSourceFromJSONURI(uri)` | Load asset source from remote JSON file |
589
- | `engine.asset.findAssets(sourceId, query)` | Query assets from a registered source |
590
- | `engine.asset.findAllSources()` | Get all registered asset source IDs |
591
- | `engine.asset.removeSource(id)` | Remove a registered asset source |
592
- | `cesdk.ui.updateAssetLibraryEntry(entryId, config)` | Add custom sources to filter inspector panel |
593
- | `engine.block.createEffect(type)` | Create effect instance (use `//ly.img.ubq/effect/lut_filter` for LUT filters) |
594
- | `engine.block.setString(effect, property, value)` | Set string property (LUT file URI) |
595
- | `engine.block.setInt(effect, property, value)` | Set integer property (tile counts) |
596
- | `engine.block.setFloat(effect, property, value)` | Set float property (intensity) |
597
- | `engine.block.appendEffect(block, effect)` | Add effect to block's effect stack |
665
+ | Method | Description |
666
+ | --- | --- |
667
+ | `engine.asset.addSource(source)` | Register a custom asset source with findAssets callback |
668
+ | `engine.asset.addLocalAssetSourceFromJSONString(json, basePath)` | Create asset source from inline JSON configuration |
669
+ | `engine.asset.addLocalAssetSourceFromJSONURI(uri)` | Load asset source from remote JSON file |
670
+ | `engine.asset.findAssets(sourceId, query)` | Query assets from a registered source |
671
+ | `engine.asset.findAllSources()` | Get all registered asset source IDs |
672
+ | `engine.asset.removeSource(id)` | Remove a registered asset source |
673
+ | `engine.block.createEffect(type)` | Create effect instance (use `//ly.img.ubq/effect/lut_filter` for LUT filters) |
674
+ | `engine.block.setString(effect, property, value)` | Set string property (LUT file URI) |
675
+ | `engine.block.setInt(effect, property, value)` | Set integer property (tile counts) |
676
+ | `engine.block.setFloat(effect, property, value)` | Set float property (intensity) |
677
+ | `engine.block.appendEffect(block, effect)` | Add effect to block's effect stack |
598
678
 
599
679
  ## Next Steps
600
680
 
@@ -604,11 +684,13 @@ Now that you understand how to create and register custom filter sources, explor
604
684
  - [Create a Custom LUT Filter](./filters-and-effects/create-custom-lut-filter.md) - Understand LUT image format and create your own color grading filters
605
685
  - [Blur Effects](./filters-and-effects/blur.md) - Add blur effects to images and videos
606
686
 
687
+
688
+
607
689
  ---
608
690
 
609
691
  ## More Resources
610
692
 
611
- - **[Vanilla JS/TS Documentation Index](https://img.ly/docs/cesdk/js.md)** - Browse all Vanilla JS/TS documentation
693
+ - **[Node.js Documentation Index](https://img.ly/docs/cesdk/node.md)** - Browse all Node.js documentation
612
694
  - **[Complete Documentation](./llms-full.txt.md)** - Full documentation in one file (for LLMs)
613
- - **[Web Documentation](./js.md)** - Interactive documentation with examples
614
- - **[Support](mailto:support@img.ly)** - Contact IMG.LY support
695
+ - **[Web Documentation](./node.md)** - Interactive documentation with examples
696
+ - **[Support](mailto:support@img.ly)** - Contact IMG.LY support