@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,4 +1,4 @@
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) > [Apply Filter or Effect](./filters-and-effects/apply.md)
4
4
 
@@ -7,444 +7,387 @@
7
7
  Apply professional color grading, blur effects, and artistic treatments to
8
8
  design elements using CE.SDK's visual effects system.
9
9
 
10
- ![Apply Filters and Effects example showing images with various effects applied](https://img.ly/docs/cesdk/./assets/browser.hero.webp)
11
-
12
10
  > **Reading time:** 10 minutes
13
11
  >
14
12
  > **Resources:**
15
13
  >
16
14
  > - [Download examples](https://github.com/imgly/cesdk-web-examples/archive/refs/tags/release-$UBQ_VERSION$.zip)
17
- > - [View source on GitHub](https://github.com/imgly/cesdk-web-examples/tree/release-$UBQ_VERSION$/guides-filters-and-effects-apply-browser)
18
- > - [Open in StackBlitz](https://stackblitz.com/github/imgly/cesdk-web-examples/tree/v$UBQ_VERSION$/guides-filters-and-effects-apply-browser)
19
- > - [Live demo](https://img.ly/docs/cesdk/examples/guides-filters-and-effects-apply-browser/)
15
+ >
16
+ > - [View source on GitHub](https://github.com/imgly/cesdk-web-examples/tree/release-$UBQ_VERSION$/guides-filters-and-effects-apply-server-js)
17
+ >
18
+ > - [Open in StackBlitz](https://stackblitz.com/github/imgly/cesdk-web-examples/tree/v$UBQ_VERSION$/guides-filters-and-effects-apply-server-js)
20
19
 
21
20
  While CE.SDK uses a unified effect API for both filters and effects, they serve different purposes. **Filters** typically apply color transformations like LUT filters and duotone, while **effects** apply visual modifications such as blur, pixelize, vignette, and image adjustments. You can combine multiple effects on a single element, creating complex visual treatments by stacking them in a customizable order.
22
21
 
23
- ```typescript file=@cesdk_web_examples/guides-filters-and-effects-apply-browser/browser.ts reference-only
24
- import type { EditorPlugin, EditorPluginContext } from '@cesdk/cesdk-js';
25
-
26
- import {
27
- BlurAssetSource,
28
- ColorPaletteAssetSource,
29
- CropPresetsAssetSource,
30
- DemoAssetSources,
31
- EffectsAssetSource,
32
- FiltersAssetSource,
33
- PagePresetsAssetSource,
34
- StickerAssetSource,
35
- TextAssetSource,
36
- TextComponentAssetSource,
37
- TypefaceAssetSource,
38
- UploadAssetSources,
39
- VectorShapeAssetSource
40
- } from '@cesdk/cesdk-js/plugins';
41
- import { DesignEditorConfig } from './design-editor/plugin';
42
- import packageJson from './package.json';
43
- import { calculateGridLayout, hexToRgba } from './utils';
22
+ ```typescript file=@cesdk_web_examples/guides-filters-and-effects-apply-server-js/server-js.ts reference-only
23
+ import CreativeEngine from '@cesdk/node';
24
+ import { config } from 'dotenv';
25
+ import { writeFileSync, mkdirSync, existsSync } from 'fs';
26
+
27
+ // Load environment variables
28
+ config();
44
29
 
45
30
  /**
46
- * CE.SDK Plugin: Filters and Effects Guide
31
+ * CE.SDK Server Guide: Apply Filters and Effects
47
32
  *
48
33
  * Demonstrates applying various filters and effects to image blocks:
49
34
  * - Checking effect support
50
35
  * - Applying basic effects (blur)
51
36
  * - Configuring effect parameters (adjustments)
52
37
  * - Applying LUT filters
38
+ * - Applying duotone filters
53
39
  * - Combining multiple effects
54
40
  * - Managing effect stacks
41
+ * - Batch processing
42
+ * - Exporting results
55
43
  */
56
- class Example implements EditorPlugin {
57
- name = packageJson.name;
58
-
59
- version = packageJson.version;
60
44
 
61
- async initialize({ cesdk }: EditorPluginContext): Promise<void> {
62
- if (!cesdk) {
63
- throw new Error('CE.SDK instance is required for this plugin');
64
- }
65
-
66
- await cesdk.addPlugin(new DesignEditorConfig());
67
-
68
- // Add asset source plugins
69
- await cesdk.addPlugin(new BlurAssetSource());
70
- await cesdk.addPlugin(new ColorPaletteAssetSource());
71
- await cesdk.addPlugin(new CropPresetsAssetSource());
72
- await cesdk.addPlugin(
73
- new UploadAssetSources({ include: ['ly.img.image.upload'] })
74
- );
75
- await cesdk.addPlugin(
76
- new DemoAssetSources({
77
- include: [
78
- 'ly.img.templates.blank.*',
79
- 'ly.img.templates.presentation.*',
80
- 'ly.img.templates.print.*',
81
- 'ly.img.templates.social.*',
82
- 'ly.img.image.*'
83
- ]
84
- })
85
- );
86
- await cesdk.addPlugin(new EffectsAssetSource());
87
- await cesdk.addPlugin(new FiltersAssetSource());
88
- await cesdk.addPlugin(new PagePresetsAssetSource());
89
- await cesdk.addPlugin(new StickerAssetSource());
90
- await cesdk.addPlugin(new TextAssetSource());
91
- await cesdk.addPlugin(new TextComponentAssetSource());
92
- await cesdk.addPlugin(new TypefaceAssetSource());
93
- await cesdk.addPlugin(new VectorShapeAssetSource());
94
-
95
- await cesdk.actions.run('scene.create', {
96
- page: { width: 800, height: 600, unit: 'Pixel' }
97
- });
45
+ /**
46
+ * Convert hex color string to RGBA values (0-1 range)
47
+ */
48
+ function hexToRgba(hex: string): {
49
+ r: number;
50
+ g: number;
51
+ b: number;
52
+ a: number;
53
+ } {
54
+ const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
55
+ return result
56
+ ? {
57
+ r: parseInt(result[1], 16) / 255,
58
+ g: parseInt(result[2], 16) / 255,
59
+ b: parseInt(result[3], 16) / 255,
60
+ a: 1.0
61
+ }
62
+ : { r: 0, g: 0, b: 0, a: 1.0 };
63
+ }
98
64
 
99
- const engine = cesdk.engine;
100
- const page = engine.block.findByType('page')[0];
65
+ // Initialize CE.SDK engine in headless mode
66
+ const engine = await CreativeEngine.init({
67
+ baseURL: process.env.IMGLY_LOCAL_ASSETS_URL
68
+ // license: process.env.CESDK_LICENSE, // Optional (trial mode available)
69
+ });
101
70
 
102
- const pageWidth = engine.block.getWidth(page);
103
- const pageHeight = engine.block.getHeight(page);
71
+ try {
72
+ // Create a design scene with specific page dimensions
73
+ engine.scene.create('VerticalStack', {
74
+ page: { size: { width: 800, height: 600 } }
75
+ });
76
+ const page = engine.block.findByType('page')[0];
104
77
 
105
- // Enable effects and filters in the inspector panel using the Feature API
106
- cesdk.feature.enable('ly.img.effect'); // Enable all effects
107
- cesdk.feature.enable('ly.img.filter'); // Enable all filters
108
- cesdk.feature.enable('ly.img.blur'); // Enable blur effect
109
- cesdk.feature.enable('ly.img.adjustment'); // Enable adjustments
78
+ // Sample image URL for demonstrations
79
+ const imageUri = 'https://img.ly/static/ubq_samples/sample_1.jpg';
110
80
 
111
- // Calculate responsive grid layout based on page dimensions
112
- const layout = calculateGridLayout(pageWidth, pageHeight, 9);
113
- const { blockWidth, blockHeight, getPosition } = layout;
81
+ // Block size for grid layout (will be positioned at the end)
82
+ const blockSize = { width: 200, height: 150 };
114
83
 
115
- // Use a sample image URL (this will load from demo assets)
116
- const imageUri = 'https://img.ly/static/ubq_samples/sample_1.jpg';
84
+ // Create an image block to check effect support
85
+ const sampleBlock = await engine.block.addImage(imageUri, {
86
+ size: blockSize
87
+ });
88
+ engine.block.appendChild(page, sampleBlock);
117
89
 
118
- // Query available LUT and Duotone filters from asset sources
119
- // These filters are provided by the demo asset sources loaded above
120
- const lutResults = await engine.asset.findAssets('ly.img.filter', {
121
- page: 0,
122
- perPage: 10
123
- });
124
- const duotoneResults = await engine.asset.findAssets('ly.img.filter', {
125
- page: 0,
126
- perPage: 10
127
- });
90
+ // Check if a block supports effects - graphic blocks with image fills support effects
91
+ const supportsEffects = engine.block.supportsEffects(sampleBlock);
92
+ console.log('Block supports effects:', supportsEffects); // true
128
93
 
129
- const lutAssets = lutResults.assets;
130
- const duotoneAssets = duotoneResults.assets;
94
+ // Page blocks support effects when they have fills applied
95
+ const pageSupportsEffects = engine.block.supportsEffects(page);
96
+ console.log('Page supports effects:', pageSupportsEffects);
131
97
 
132
- // Pattern #2: Use Convenience APIs - addImage() simplifies block creation
133
- // Create a sample block to demonstrate effect support checking
134
- const blockSize = { width: blockWidth, height: blockHeight };
135
- const sampleBlock = await engine.block.addImage(imageUri, {
136
- size: blockSize
137
- });
138
- engine.block.appendChild(page, sampleBlock);
98
+ // Create a separate image block for blur demonstration
99
+ const blurImageBlock = await engine.block.addImage(imageUri, {
100
+ size: blockSize
101
+ });
102
+ engine.block.appendChild(page, blurImageBlock);
139
103
 
140
- // Check if a block supports effects
141
- const supportsEffects = engine.block.supportsEffects(sampleBlock);
142
- // eslint-disable-next-line no-console
143
- console.log('Block supports effects:', supportsEffects); // true for graphics
104
+ // Create and apply a blur effect
105
+ const blurEffect = engine.block.createEffect('extrude_blur');
106
+ engine.block.appendEffect(blurImageBlock, blurEffect);
144
107
 
145
- // Page blocks don't support effects
146
- const pageSupportsEffects = engine.block.supportsEffects(page);
147
- // eslint-disable-next-line no-console
148
- console.log('Page supports effects:', pageSupportsEffects); // false
108
+ // Adjust blur intensity (0.0 to 1.0)
109
+ engine.block.setFloat(blurEffect, 'effect/extrude_blur/amount', 0.5);
149
110
 
150
- // Select this block so effects panel is visible
151
- engine.block.setSelected(sampleBlock, true);
111
+ // Create a separate image block for adjustments demonstration
112
+ const adjustmentsImageBlock = await engine.block.addImage(imageUri, {
113
+ size: blockSize
114
+ });
115
+ engine.block.appendChild(page, adjustmentsImageBlock);
152
116
 
153
- // Pattern #1: Demonstrate Individual Before Combined
154
- // Create a separate image block for blur demonstration
155
- const blurImageBlock = await engine.block.addImage(imageUri, {
156
- size: blockSize
157
- });
158
- engine.block.appendChild(page, blurImageBlock);
117
+ // Create adjustments effect for brightness and contrast
118
+ const adjustmentsEffect = engine.block.createEffect('adjustments');
119
+ engine.block.appendEffect(adjustmentsImageBlock, adjustmentsEffect);
159
120
 
160
- // Create and apply a blur effect
161
- const blurEffect = engine.block.createEffect('extrude_blur');
162
- engine.block.appendEffect(blurImageBlock, blurEffect);
121
+ // Set brightness, contrast, and saturation
122
+ engine.block.setFloat(
123
+ adjustmentsEffect,
124
+ 'effect/adjustments/brightness',
125
+ 0.2
126
+ );
127
+ engine.block.setFloat(adjustmentsEffect, 'effect/adjustments/contrast', 0.15);
128
+ engine.block.setFloat(
129
+ adjustmentsEffect,
130
+ 'effect/adjustments/saturation',
131
+ 0.1
132
+ );
163
133
 
164
- // Adjust blur intensity
165
- engine.block.setFloat(blurEffect, 'effect/extrude_blur/amount', 0.5);
134
+ // Find all available properties for this effect
135
+ const adjustmentProperties =
136
+ engine.block.findAllProperties(adjustmentsEffect);
137
+ console.log('Available adjustment properties:', adjustmentProperties);
138
+
139
+ // Demonstrate LUT filters by applying 2 different presets (Grid positions 3-4)
140
+ // LUT configurations with different color grading styles
141
+ const lutConfigs = [
142
+ {
143
+ uri: 'https://cdn.img.ly/packages/imgly/cesdk-js/latest/assets/extensions/ly.img.cesdk.filters.lut/LUTs/imgly_lut_ad1920_5_5_128.png',
144
+ horizontalTileCount: 5,
145
+ verticalTileCount: 5
146
+ },
147
+ {
148
+ uri: 'https://cdn.img.ly/packages/imgly/cesdk-js/latest/assets/extensions/ly.img.cesdk.filters.lut/LUTs/imgly_lut_bw_5_5_128.png',
149
+ horizontalTileCount: 5,
150
+ verticalTileCount: 5
151
+ }
152
+ ];
166
153
 
167
- // Create a separate image block for adjustments demonstration
168
- const adjustmentsImageBlock = await engine.block.addImage(imageUri, {
169
- size: blockSize
154
+ const lutImageBlocks = [];
155
+ for (const lutConfig of lutConfigs) {
156
+ const lutImageBlock = await engine.block.addImage(imageUri, {
157
+ size: { width: 200, height: 150 }
170
158
  });
171
- engine.block.appendChild(page, adjustmentsImageBlock);
172
-
173
- // Create adjustments effect for brightness and contrast
174
- const adjustmentsEffect = engine.block.createEffect('adjustments');
175
- engine.block.appendEffect(adjustmentsImageBlock, adjustmentsEffect);
159
+ engine.block.appendChild(page, lutImageBlock);
160
+ lutImageBlocks.push(lutImageBlock);
176
161
 
177
- // Find all available properties for this effect
178
- const adjustmentProperties =
179
- engine.block.findAllProperties(adjustmentsEffect);
180
- // eslint-disable-next-line no-console
181
- console.log('Available adjustment properties:', adjustmentProperties);
162
+ // Create LUT filter effect
163
+ const lutEffect = engine.block.createEffect(
164
+ '//ly.img.ubq/effect/lut_filter'
165
+ );
182
166
 
183
- // Set brightness, contrast, and saturation
184
- engine.block.setFloat(
185
- adjustmentsEffect,
186
- 'effect/adjustments/brightness',
187
- 0.2
167
+ // Configure LUT with preset filter settings
168
+ engine.block.setString(
169
+ lutEffect,
170
+ 'effect/lut_filter/lutFileURI',
171
+ lutConfig.uri
188
172
  );
189
- engine.block.setFloat(
190
- adjustmentsEffect,
191
- 'effect/adjustments/contrast',
192
- 0.15
173
+ engine.block.setInt(
174
+ lutEffect,
175
+ 'effect/lut_filter/horizontalTileCount',
176
+ lutConfig.horizontalTileCount
193
177
  );
194
- engine.block.setFloat(
195
- adjustmentsEffect,
196
- 'effect/adjustments/saturation',
197
- 0.1
178
+ engine.block.setInt(
179
+ lutEffect,
180
+ 'effect/lut_filter/verticalTileCount',
181
+ lutConfig.verticalTileCount
198
182
  );
183
+ engine.block.setFloat(lutEffect, 'effect/lut_filter/intensity', 0.85);
199
184
 
200
- // Demonstrate LUT filters by applying the first 2 from asset library
201
- // These filters are fetched from the demo asset sources (Grid positions 3-4)
202
- const lutImageBlocks = [];
203
- for (let i = 0; i < Math.min(2, lutAssets.length); i++) {
204
- const lutAsset = lutAssets[i];
205
-
206
- const lutImageBlock = await engine.block.addImage(imageUri, {
207
- size: blockSize
208
- });
209
- engine.block.appendChild(page, lutImageBlock);
210
- lutImageBlocks.push(lutImageBlock);
211
-
212
- // Create LUT filter effect using the full effect type URI
213
- const lutEffect = engine.block.createEffect(
214
- '//ly.img.ubq/effect/lut_filter'
215
- );
216
-
217
- // Use asset metadata for LUT configuration
218
- // The asset provides the LUT file URI and grid dimensions
219
- engine.block.setString(
220
- lutEffect,
221
- 'effect/lut_filter/lutFileURI',
222
- lutAsset.meta?.uri as string
223
- );
224
- engine.block.setInt(
225
- lutEffect,
226
- 'effect/lut_filter/horizontalTileCount',
227
- parseInt(lutAsset.meta?.horizontalTileCount as string, 10)
228
- );
229
- engine.block.setInt(
230
- lutEffect,
231
- 'effect/lut_filter/verticalTileCount',
232
- parseInt(lutAsset.meta?.verticalTileCount as string, 10)
233
- );
234
- engine.block.setFloat(lutEffect, 'effect/lut_filter/intensity', 0.85);
235
-
236
- engine.block.appendEffect(lutImageBlock, lutEffect);
237
- }
238
-
239
- // Demonstrate Duotone filters by applying the first 2 from asset library
240
- // Duotone filters create artistic two-color treatments (Grid positions 5-6)
241
- const duotoneImageBlocks = [];
242
- for (let i = 0; i < Math.min(2, duotoneAssets.length); i++) {
243
- const duotoneAsset = duotoneAssets[i];
244
-
245
- const duotoneImageBlock = await engine.block.addImage(imageUri, {
246
- size: blockSize
247
- });
248
- engine.block.appendChild(page, duotoneImageBlock);
249
- duotoneImageBlocks.push(duotoneImageBlock);
250
-
251
- // Create Duotone filter effect using the full effect type URI
252
- const duotoneEffect = engine.block.createEffect(
253
- '//ly.img.ubq/effect/duotone_filter'
254
- );
255
-
256
- // Convert hex colors from asset metadata to RGBA (0-1 range)
257
- const darkColor = hexToRgba(duotoneAsset.meta?.darkColor as string);
258
- engine.block.setColor(
259
- duotoneEffect,
260
- 'effect/duotone_filter/darkColor',
261
- darkColor
262
- );
263
-
264
- const lightColor = hexToRgba(duotoneAsset.meta?.lightColor as string);
265
- engine.block.setColor(
266
- duotoneEffect,
267
- 'effect/duotone_filter/lightColor',
268
- lightColor
269
- );
270
-
271
- engine.block.setFloat(
272
- duotoneEffect,
273
- 'effect/duotone_filter/intensity',
274
- 0.8
275
- );
276
-
277
- engine.block.appendEffect(duotoneImageBlock, duotoneEffect);
278
- }
185
+ engine.block.appendEffect(lutImageBlock, lutEffect);
186
+ }
279
187
 
280
- // Pattern #5: Progressive Complexity - now combining multiple effects
281
- // Create a separate image block to demonstrate combining multiple effects (Grid position 7)
282
- const combinedImageBlock = await engine.block.addImage(imageUri, {
283
- size: blockSize
188
+ // Demonstrate Duotone filters by applying 2 different color combinations (Grid positions 5-6)
189
+ // Duotone configurations with different color schemes
190
+ const duotoneConfigs = [
191
+ { darkColor: '#0b3d5b', lightColor: '#f8bc60' }, // Blue/Orange
192
+ { darkColor: '#2d1e3e', lightColor: '#e8d5b7' } // Purple/Cream
193
+ ];
194
+
195
+ const duotoneImageBlocks = [];
196
+ for (const duotoneConfig of duotoneConfigs) {
197
+ const duotoneImageBlock = await engine.block.addImage(imageUri, {
198
+ size: { width: 200, height: 150 }
284
199
  });
285
- engine.block.appendChild(page, combinedImageBlock);
200
+ engine.block.appendChild(page, duotoneImageBlock);
201
+ duotoneImageBlocks.push(duotoneImageBlock);
286
202
 
287
- // Apply effects in order - the stack will contain:
288
- // 1. adjustments (brightness/contrast) - applied first
289
- // 2. blur - applied second
290
- // 3. duotone (color tinting) - applied third
291
- // 4. pixelize - applied last
203
+ // Create duotone filter effect
204
+ const duotoneEffect = engine.block.createEffect(
205
+ '//ly.img.ubq/effect/duotone_filter'
206
+ );
292
207
 
293
- const combinedAdjustments = engine.block.createEffect('adjustments');
294
- engine.block.appendEffect(combinedImageBlock, combinedAdjustments);
295
- engine.block.setFloat(
296
- combinedAdjustments,
297
- 'effect/adjustments/brightness',
298
- 0.2
208
+ // Configure duotone colors using hex to RGBA conversion
209
+ const darkColor = hexToRgba(duotoneConfig.darkColor);
210
+ engine.block.setColor(
211
+ duotoneEffect,
212
+ 'effect/duotone_filter/darkColor',
213
+ darkColor
299
214
  );
215
+
216
+ const lightColor = hexToRgba(duotoneConfig.lightColor);
217
+ engine.block.setColor(
218
+ duotoneEffect,
219
+ 'effect/duotone_filter/lightColor',
220
+ lightColor
221
+ );
222
+
300
223
  engine.block.setFloat(
301
- combinedAdjustments,
302
- 'effect/adjustments/contrast',
303
- 0.15
224
+ duotoneEffect,
225
+ 'effect/duotone_filter/intensity',
226
+ 0.8
304
227
  );
228
+ engine.block.appendEffect(duotoneImageBlock, duotoneEffect);
229
+ }
305
230
 
306
- const combinedBlur = engine.block.createEffect('extrude_blur');
307
- engine.block.appendEffect(combinedImageBlock, combinedBlur);
308
- engine.block.setFloat(combinedBlur, 'effect/extrude_blur/amount', 0.3);
309
-
310
- const combinedDuotone = engine.block.createEffect('duotone_filter');
311
- engine.block.appendEffect(combinedImageBlock, combinedDuotone);
312
- engine.block.setColor(combinedDuotone, 'duotone_filter/darkColor', {
313
- r: 0.1,
314
- g: 0.2,
315
- b: 0.4,
316
- a: 1.0
317
- });
318
- engine.block.setColor(combinedDuotone, 'duotone_filter/lightColor', {
319
- r: 0.9,
320
- g: 0.8,
321
- b: 0.6,
322
- a: 1.0
323
- });
324
- engine.block.setFloat(combinedDuotone, 'duotone_filter/intensity', 0.6);
325
-
326
- const pixelizeEffect = engine.block.createEffect('pixelize');
327
- engine.block.appendEffect(combinedImageBlock, pixelizeEffect);
328
- engine.block.setInt(pixelizeEffect, 'pixelize/horizontalPixelSize', 8);
329
- engine.block.setInt(pixelizeEffect, 'pixelize/verticalPixelSize', 8);
330
-
331
- // Get all effects applied to the combined block
332
- const effects = engine.block.getEffects(combinedImageBlock);
333
- // eslint-disable-next-line no-console
334
- console.log('Applied effects:', effects);
335
-
336
- // Access properties of specific effects
337
- effects.forEach((effect, index) => {
338
- const effectType = engine.block.getType(effect);
339
- const isEnabled = engine.block.isEffectEnabled(effect);
340
- // eslint-disable-next-line no-console
341
- console.log(`Effect ${index}: ${effectType}, enabled: ${isEnabled}`);
342
- });
231
+ // Create an image block to demonstrate combining multiple effects (Grid position 7)
232
+ const combinedImageBlock = await engine.block.addImage(imageUri, {
233
+ size: { width: 200, height: 150 }
234
+ });
235
+ engine.block.appendChild(page, combinedImageBlock);
236
+
237
+ // Apply effects in order - the stack will contain:
238
+ // 1. adjustments (brightness/contrast) - applied first
239
+ // 2. blur - applied second
240
+ // 3. duotone (color tinting) - applied third
241
+ // 4. pixelize - applied last
242
+
243
+ const combinedAdjustments = engine.block.createEffect('adjustments');
244
+ engine.block.appendEffect(combinedImageBlock, combinedAdjustments);
245
+ engine.block.setFloat(
246
+ combinedAdjustments,
247
+ 'effect/adjustments/brightness',
248
+ 0.2
249
+ );
250
+ engine.block.setFloat(
251
+ combinedAdjustments,
252
+ 'effect/adjustments/contrast',
253
+ 0.15
254
+ );
343
255
 
344
- // Check if effect is enabled
345
- const isBlurEnabled = engine.block.isEffectEnabled(combinedBlur);
346
- // eslint-disable-next-line no-console
347
- console.log('Blur effect is enabled:', isBlurEnabled);
256
+ const combinedBlur = engine.block.createEffect('extrude_blur');
257
+ engine.block.appendEffect(combinedImageBlock, combinedBlur);
258
+ engine.block.setFloat(combinedBlur, 'effect/extrude_blur/amount', 0.3);
259
+
260
+ const combinedDuotone = engine.block.createEffect('duotone_filter');
261
+ engine.block.appendEffect(combinedImageBlock, combinedDuotone);
262
+ engine.block.setColor(combinedDuotone, 'duotone_filter/darkColor', {
263
+ r: 0.1,
264
+ g: 0.2,
265
+ b: 0.4,
266
+ a: 1.0
267
+ });
268
+ engine.block.setColor(combinedDuotone, 'duotone_filter/lightColor', {
269
+ r: 0.9,
270
+ g: 0.8,
271
+ b: 0.6,
272
+ a: 1.0
273
+ });
274
+ engine.block.setFloat(combinedDuotone, 'duotone_filter/intensity', 0.6);
275
+
276
+ const pixelizeEffect = engine.block.createEffect('pixelize');
277
+ engine.block.appendEffect(combinedImageBlock, pixelizeEffect);
278
+ engine.block.setInt(pixelizeEffect, 'pixelize/horizontalPixelSize', 8);
279
+ engine.block.setInt(pixelizeEffect, 'pixelize/verticalPixelSize', 8);
280
+
281
+ // Get all effects applied to the combined block
282
+ const effects = engine.block.getEffects(combinedImageBlock);
283
+ console.log('Applied effects:', effects);
284
+
285
+ // Access properties of specific effects
286
+ effects.forEach((effect, index) => {
287
+ const effectType = engine.block.getType(effect);
288
+ const isEnabled = engine.block.isEffectEnabled(effect);
289
+ console.log(`Effect ${index}: ${effectType}, enabled: ${isEnabled}`);
290
+ });
348
291
 
349
- // Create a temporary block to demonstrate effect removal
350
- const tempBlock = await engine.block.addImage(imageUri, {
351
- size: blockSize
352
- });
353
- engine.block.appendChild(page, tempBlock);
292
+ // Check if effect is enabled and toggle
293
+ const isBlurEnabled = engine.block.isEffectEnabled(combinedBlur);
294
+ console.log('Blur effect is enabled:', isBlurEnabled);
354
295
 
355
- const tempEffect = engine.block.createEffect('pixelize');
356
- engine.block.appendEffect(tempBlock, tempEffect);
357
- engine.block.setInt(tempEffect, 'pixelize/horizontalPixelSize', 12);
296
+ // Temporarily disable the blur effect
297
+ engine.block.setEffectEnabled(combinedBlur, false);
298
+ console.log(
299
+ 'Blur effect disabled:',
300
+ !engine.block.isEffectEnabled(combinedBlur)
301
+ );
358
302
 
359
- // Remove the effect
360
- const tempEffects = engine.block.getEffects(tempBlock);
361
- const effectIndex = tempEffects.indexOf(tempEffect);
362
- if (effectIndex !== -1) {
363
- engine.block.removeEffect(tempBlock, effectIndex);
364
- }
303
+ // Re-enable for final export
304
+ engine.block.setEffectEnabled(combinedBlur, true);
365
305
 
366
- // Destroy the removed effect to free memory
367
- engine.block.destroy(tempEffect);
368
-
369
- // ===== Position all blocks in grid layout =====
370
- const blocks = [
371
- sampleBlock, // Position 0
372
- blurImageBlock, // Position 1
373
- adjustmentsImageBlock, // Position 2
374
- ...lutImageBlocks, // Positions 3-4
375
- ...duotoneImageBlocks, // Positions 5-6
376
- combinedImageBlock, // Position 7
377
- tempBlock // Position 8
378
- ];
379
-
380
- blocks.forEach((block, index) => {
381
- const pos = getPosition(index);
382
- engine.block.setPositionX(block, pos.x);
383
- engine.block.setPositionY(block, pos.y);
384
- });
306
+ // Create a temporary block to demonstrate effect removal (Grid position 8)
307
+ const tempBlock = await engine.block.addImage(imageUri, {
308
+ size: blockSize
309
+ });
310
+ engine.block.appendChild(page, tempBlock);
385
311
 
386
- // Apply same effects to multiple blocks
387
- const allGraphics = engine.block.findByType('graphic');
388
-
389
- allGraphics.forEach((graphic) => {
390
- if (engine.block.supportsEffects(graphic)) {
391
- // Only apply to blocks that don't already have effects
392
- const existingEffects = engine.block.getEffects(graphic);
393
- if (existingEffects.length === 0) {
394
- const effect = engine.block.createEffect('adjustments');
395
- engine.block.appendEffect(graphic, effect);
396
- engine.block.setFloat(effect, 'effect/adjustments/brightness', 0.1);
397
- }
398
- }
399
- });
312
+ const tempEffect = engine.block.createEffect('pixelize');
313
+ engine.block.appendEffect(tempBlock, tempEffect);
314
+ engine.block.setInt(tempEffect, 'pixelize/horizontalPixelSize', 12);
400
315
 
401
- // eslint-disable-next-line no-console
402
- console.log(
403
- 'Effects guide initialized. Select any image to see effects panel.'
404
- );
316
+ // Remove the effect from the block
317
+ const tempEffects = engine.block.getEffects(tempBlock);
318
+ const effectIndex = tempEffects.indexOf(tempEffect);
319
+ if (effectIndex !== -1) {
320
+ engine.block.removeEffect(tempBlock, effectIndex);
405
321
  }
406
- }
407
322
 
408
- export default Example;
409
- ```
323
+ // Destroy the removed effect to free memory
324
+ engine.block.destroy(tempEffect);
325
+ console.log('Effect removed and destroyed');
326
+
327
+ // ===== Position all blocks in grid layout =====
328
+ // Calculate grid positions for 9 blocks (3x3 grid)
329
+ const spacing = 20;
330
+ const margin = 40;
331
+ const cols = 3;
332
+ const totalGridWidth = cols * blockSize.width + (cols - 1) * spacing;
333
+ const startX = (800 - totalGridWidth) / 2;
334
+ const startY = margin;
335
+
336
+ const getPosition = (index: number) => ({
337
+ x: startX + (index % cols) * (blockSize.width + spacing),
338
+ y: startY + Math.floor(index / cols) * (blockSize.height + spacing)
339
+ });
410
340
 
411
- This guide covers how to enable the built-in effects panel for interactive editing and how to apply and manage effects programmatically using the block API.
341
+ const blocks = [
342
+ sampleBlock, // Position 0
343
+ blurImageBlock, // Position 1
344
+ adjustmentsImageBlock, // Position 2
345
+ ...lutImageBlocks, // Positions 3-4
346
+ ...duotoneImageBlocks, // Positions 5-6
347
+ combinedImageBlock, // Position 7
348
+ tempBlock // Position 8
349
+ ];
350
+
351
+ blocks.forEach((block, index) => {
352
+ const pos = getPosition(index);
353
+ engine.block.setPositionX(block, pos.x);
354
+ engine.block.setPositionY(block, pos.y);
355
+ });
412
356
 
413
- ## Using the Built-in Effects UI
357
+ // Apply same effects to multiple blocks (batch processing)
358
+ const allGraphics = engine.block.findByType('graphic');
359
+
360
+ allGraphics.forEach((graphic) => {
361
+ if (engine.block.supportsEffects(graphic)) {
362
+ // Only apply to blocks that don't already have effects
363
+ const existingEffects = engine.block.getEffects(graphic);
364
+ if (existingEffects.length === 0) {
365
+ const effect = engine.block.createEffect('adjustments');
366
+ engine.block.appendEffect(graphic, effect);
367
+ engine.block.setFloat(effect, 'effect/adjustments/brightness', 0.1);
368
+ }
369
+ }
370
+ });
371
+ console.log('Batch processing complete');
414
372
 
415
- ### Enable Effects Features
373
+ // Export the scene to PNG
374
+ const blob = await engine.block.export(page, { mimeType: 'image/png' });
375
+ const buffer = Buffer.from(await blob.arrayBuffer());
416
376
 
417
- To give users access to effects in the inspector panel, we enable the effects features using CE.SDK's Feature API. Effects and filters appear in the **inspector bar** and **advanced inspector** when a user selects a supported element.
377
+ // Ensure output directory exists
378
+ if (!existsSync('output')) {
379
+ mkdirSync('output');
380
+ }
418
381
 
419
- ```typescript highlight-enable-effects-features
420
- // Enable effects and filters in the inspector panel using the Feature API
421
- cesdk.feature.enable('ly.img.effect'); // Enable all effects
422
- cesdk.feature.enable('ly.img.filter'); // Enable all filters
423
- cesdk.feature.enable('ly.img.blur'); // Enable blur effect
424
- cesdk.feature.enable('ly.img.adjustment'); // Enable adjustments
382
+ // Save to file
383
+ writeFileSync('output/filters-and-effects.png', buffer);
384
+ console.log('Exported to output/filters-and-effects.png');
385
+ } finally {
386
+ engine.dispose();
387
+ }
425
388
  ```
426
389
 
427
- The Feature API controls which capabilities are available to users. By enabling `ly.img.effect` and `ly.img.filter`, the inspector panel displays effect and filter options when users select compatible blocks. You can also enable specific effects individually like `ly.img.blur` or `ly.img.adjustment` for more granular control.
428
-
429
- Effects are enabled by default for graphic blocks with image or video fills. The Feature API shown above allows you to control which specific effects appear in the inspector panel UI.
430
-
431
- ### User Workflow
432
-
433
- With effects features enabled, users can enhance their designs through a visual workflow in the inspector panel:
434
-
435
- 1. **Select an element** - Click on any image or supported graphic block in the canvas
436
- 2. **Access inspector** - The inspector panel shows available options for the selected element
437
- 3. **Find effects section** - Scroll to the effects and filters sections within the inspector
438
- 4. **Browse and apply** - Click through available effects to apply them
439
- 5. **Adjust parameters** - Use sliders and controls to fine-tune intensity and other effect properties
440
- 6. **Manage effects** - Toggle effects on/off, switch between effects, or reset effect parameters
441
-
442
- > **Note:** Effects are applied immediately when selected. CE.SDK does not currently
443
- > support live preview mode when browsing effects before application. Effect
444
- > reordering is not supported—use toggle on/off, switch, or reset operations to
445
- > manage applied effects.
446
-
447
- This interactive approach is perfect for creative exploration and allows users to see results immediately without any coding knowledge.
390
+ This guide covers how to apply and manage effects programmatically using the block API.
448
391
 
449
392
  ## Programmatic Effect Application
450
393
 
@@ -453,73 +396,33 @@ This interactive approach is perfect for creative exploration and allows users t
453
396
  For applications that need to apply effects programmatically—whether for automation, batch processing, or dynamic user experiences—we start by setting up CE.SDK with the proper configuration.
454
397
 
455
398
  ```typescript highlight-setup
456
- await cesdk.addPlugin(new DesignEditorConfig());
457
-
458
- // Add asset source plugins
459
- await cesdk.addPlugin(new BlurAssetSource());
460
- await cesdk.addPlugin(new ColorPaletteAssetSource());
461
- await cesdk.addPlugin(new CropPresetsAssetSource());
462
- await cesdk.addPlugin(
463
- new UploadAssetSources({ include: ['ly.img.image.upload'] })
464
- );
465
- await cesdk.addPlugin(
466
- new DemoAssetSources({
467
- include: [
468
- 'ly.img.templates.blank.*',
469
- 'ly.img.templates.presentation.*',
470
- 'ly.img.templates.print.*',
471
- 'ly.img.templates.social.*',
472
- 'ly.img.image.*'
473
- ]
474
- })
475
- );
476
- await cesdk.addPlugin(new EffectsAssetSource());
477
- await cesdk.addPlugin(new FiltersAssetSource());
478
- await cesdk.addPlugin(new PagePresetsAssetSource());
479
- await cesdk.addPlugin(new StickerAssetSource());
480
- await cesdk.addPlugin(new TextAssetSource());
481
- await cesdk.addPlugin(new TextComponentAssetSource());
482
- await cesdk.addPlugin(new TypefaceAssetSource());
483
- await cesdk.addPlugin(new VectorShapeAssetSource());
484
-
485
- await cesdk.actions.run('scene.create', {
486
- page: { width: 800, height: 600, unit: 'Pixel' }
399
+ // Initialize CE.SDK engine in headless mode
400
+ const engine = await CreativeEngine.init({
401
+ baseURL: process.env.IMGLY_LOCAL_ASSETS_URL
402
+ // license: process.env.CESDK_LICENSE, // Optional (trial mode available)
487
403
  });
488
-
489
- const engine = cesdk.engine;
490
- const page = engine.block.findByType('page')[0];
491
-
492
- const pageWidth = engine.block.getWidth(page);
493
- const pageHeight = engine.block.getHeight(page);
494
404
  ```
495
405
 
496
- This initializes the full CE.SDK interface with the effects panel enabled, giving you both UI and API access to the effects system.
406
+ This initializes the CE.SDK engine in headless mode, giving you full API access to the effects system without UI dependencies.
497
407
 
498
408
  ### Check Effect Support
499
409
 
500
- Before applying effects to a block, we check whether it supports them. Not all block types can have effects applied—for example, page blocks and scene blocks do not support effects.
501
-
502
- ```typescript highlight-check-effect-support
503
- // Pattern #2: Use Convenience APIs - addImage() simplifies block creation
504
- // Create a sample block to demonstrate effect support checking
505
- const blockSize = { width: blockWidth, height: blockHeight };
506
- const sampleBlock = await engine.block.addImage(imageUri, {
507
- size: blockSize
508
- });
509
- engine.block.appendChild(page, sampleBlock);
410
+ Before applying effects to a block, we check whether it supports them. Not all block types can have effects applied—for example, scene blocks do not support effects.
510
411
 
511
- // Check if a block supports effects
512
- const supportsEffects = engine.block.supportsEffects(sampleBlock);
513
- // eslint-disable-next-line no-console
514
- console.log('Block supports effects:', supportsEffects); // true for graphics
412
+ ```typescript highlight-supportsEffects
413
+ // Create an image block to check effect support
414
+ const sampleBlock = await engine.block.addImage(imageUri, {
415
+ size: blockSize
416
+ });
417
+ engine.block.appendChild(page, sampleBlock);
515
418
 
516
- // Page blocks don't support effects
517
- const pageSupportsEffects = engine.block.supportsEffects(page);
518
- // eslint-disable-next-line no-console
519
- console.log('Page supports effects:', pageSupportsEffects); // false
419
+ // Check if a block supports effects - graphic blocks with image fills support effects
420
+ const supportsEffects = engine.block.supportsEffects(sampleBlock);
421
+ console.log('Block supports effects:', supportsEffects); // true
520
422
 
521
- // Select this block so effects panel is visible
522
- engine.block.setSelected(sampleBlock, true);
423
+ // Page blocks support effects when they have fills applied
424
+ const pageSupportsEffects = engine.block.supportsEffects(page);
425
+ console.log('Page supports effects:', pageSupportsEffects);
523
426
  ```
524
427
 
525
428
  Effect support is available for:
@@ -530,7 +433,7 @@ Effect support is available for:
530
433
  - **Text blocks** (with limited effect types)
531
434
  - **Page blocks** (particularly when they have fills applied, such as background fills)
532
435
 
533
- Always verify support before creating and applying effects to avoid errors and ensure a smooth user experience.
436
+ Always verify support before creating and applying effects to avoid errors.
534
437
 
535
438
  ### Apply Basic Effects
536
439
 
@@ -542,20 +445,19 @@ Once we've confirmed a block supports effects, we can create and apply effects u
542
445
  > configuration options like positioning, sizing, corner radius, shadows, and
543
446
  > time-based properties.
544
447
 
545
- ```typescript highlight-apply-basic-effects
546
- // Pattern #1: Demonstrate Individual Before Combined
547
- // Create a separate image block for blur demonstration
548
- const blurImageBlock = await engine.block.addImage(imageUri, {
549
- size: blockSize
550
- });
551
- engine.block.appendChild(page, blurImageBlock);
448
+ ```typescript highlight-createEffect
449
+ // Create a separate image block for blur demonstration
450
+ const blurImageBlock = await engine.block.addImage(imageUri, {
451
+ size: blockSize
452
+ });
453
+ engine.block.appendChild(page, blurImageBlock);
552
454
 
553
- // Create and apply a blur effect
554
- const blurEffect = engine.block.createEffect('extrude_blur');
555
- engine.block.appendEffect(blurImageBlock, blurEffect);
455
+ // Create and apply a blur effect
456
+ const blurEffect = engine.block.createEffect('extrude_blur');
457
+ engine.block.appendEffect(blurImageBlock, blurEffect);
556
458
 
557
- // Adjust blur intensity
558
- engine.block.setFloat(blurEffect, 'effect/extrude_blur/amount', 0.5);
459
+ // Adjust blur intensity (0.0 to 1.0)
460
+ engine.block.setFloat(blurEffect, 'effect/extrude_blur/amount', 0.5);
559
461
  ```
560
462
 
561
463
  CE.SDK provides several built-in effect types:
@@ -577,26 +479,29 @@ Each effect type has its own set of configurable properties that control its vis
577
479
 
578
480
  After creating an effect, we can customize its appearance by setting properties. Each effect exposes different parameters depending on its type and capabilities.
579
481
 
580
- ```typescript highlight-configure-effect-parameters
581
- // Create a separate image block for adjustments demonstration
582
- const adjustmentsImageBlock = await engine.block.addImage(imageUri, {
583
- size: blockSize
584
- });
585
- engine.block.appendChild(page, adjustmentsImageBlock);
586
-
587
- // Create adjustments effect for brightness and contrast
588
- const adjustmentsEffect = engine.block.createEffect('adjustments');
589
- engine.block.appendEffect(adjustmentsImageBlock, adjustmentsEffect);
482
+ ```typescript highlight-modifyProperties
483
+ // Create a separate image block for adjustments demonstration
484
+ const adjustmentsImageBlock = await engine.block.addImage(imageUri, {
485
+ size: blockSize
486
+ });
487
+ engine.block.appendChild(page, adjustmentsImageBlock);
590
488
 
591
- // Find all available properties for this effect
592
- const adjustmentProperties = engine.block.findAllProperties(adjustmentsEffect);
593
- // eslint-disable-next-line no-console
594
- console.log('Available adjustment properties:', adjustmentProperties);
489
+ // Create adjustments effect for brightness and contrast
490
+ const adjustmentsEffect = engine.block.createEffect('adjustments');
491
+ engine.block.appendEffect(adjustmentsImageBlock, adjustmentsEffect);
595
492
 
596
- // Set brightness, contrast, and saturation
597
- engine.block.setFloat(adjustmentsEffect, 'effect/adjustments/brightness', 0.2);
598
- engine.block.setFloat(adjustmentsEffect, 'effect/adjustments/contrast', 0.15);
599
- engine.block.setFloat(adjustmentsEffect, 'effect/adjustments/saturation', 0.1);
493
+ // Set brightness, contrast, and saturation
494
+ engine.block.setFloat(
495
+ adjustmentsEffect,
496
+ 'effect/adjustments/brightness',
497
+ 0.2
498
+ );
499
+ engine.block.setFloat(adjustmentsEffect, 'effect/adjustments/contrast', 0.15);
500
+ engine.block.setFloat(
501
+ adjustmentsEffect,
502
+ 'effect/adjustments/saturation',
503
+ 0.1
504
+ );
600
505
  ```
601
506
 
602
507
  CE.SDK provides typed setter methods for different parameter types:
@@ -612,45 +517,55 @@ Using the correct setter method ensures type safety and proper value validation.
612
517
 
613
518
  LUT (Look-Up Table) filters apply professional color grading by transforming colors through a predefined mapping. These are particularly useful for creating consistent brand aesthetics or applying cinematic color treatments.
614
519
 
615
- The example demonstrates querying LUT filters from the asset library using `engine.asset.findAssets('ly.img.filter')`, then applying them using metadata from the asset results. This approach matches how CE.SDK's built-in filter panel works.
616
-
617
520
  ```typescript highlight-apply-lut-filter
618
- // Demonstrate LUT filters by applying the first 2 from asset library
619
- // These filters are fetched from the demo asset sources (Grid positions 3-4)
620
- const lutImageBlocks = [];
621
- for (let i = 0; i < Math.min(2, lutAssets.length); i++) {
622
- const lutAsset = lutAssets[i];
521
+ // Demonstrate LUT filters by applying 2 different presets (Grid positions 3-4)
522
+ // LUT configurations with different color grading styles
523
+ const lutConfigs = [
524
+ {
525
+ uri: 'https://cdn.img.ly/packages/imgly/cesdk-js/latest/assets/extensions/ly.img.cesdk.filters.lut/LUTs/imgly_lut_ad1920_5_5_128.png',
526
+ horizontalTileCount: 5,
527
+ verticalTileCount: 5
528
+ },
529
+ {
530
+ uri: 'https://cdn.img.ly/packages/imgly/cesdk-js/latest/assets/extensions/ly.img.cesdk.filters.lut/LUTs/imgly_lut_bw_5_5_128.png',
531
+ horizontalTileCount: 5,
532
+ verticalTileCount: 5
533
+ }
534
+ ];
623
535
 
624
- const lutImageBlock = await engine.block.addImage(imageUri, {
625
- size: blockSize
626
- });
627
- engine.block.appendChild(page, lutImageBlock);
628
- lutImageBlocks.push(lutImageBlock);
536
+ const lutImageBlocks = [];
537
+ for (const lutConfig of lutConfigs) {
538
+ const lutImageBlock = await engine.block.addImage(imageUri, {
539
+ size: { width: 200, height: 150 }
540
+ });
541
+ engine.block.appendChild(page, lutImageBlock);
542
+ lutImageBlocks.push(lutImageBlock);
629
543
 
630
- // Create LUT filter effect using the full effect type URI
631
- const lutEffect = engine.block.createEffect('//ly.img.ubq/effect/lut_filter');
544
+ // Create LUT filter effect
545
+ const lutEffect = engine.block.createEffect(
546
+ '//ly.img.ubq/effect/lut_filter'
547
+ );
632
548
 
633
- // Use asset metadata for LUT configuration
634
- // The asset provides the LUT file URI and grid dimensions
635
- engine.block.setString(
636
- lutEffect,
637
- 'effect/lut_filter/lutFileURI',
638
- lutAsset.meta?.uri as string
639
- );
640
- engine.block.setInt(
641
- lutEffect,
642
- 'effect/lut_filter/horizontalTileCount',
643
- parseInt(lutAsset.meta?.horizontalTileCount as string, 10)
644
- );
645
- engine.block.setInt(
646
- lutEffect,
647
- 'effect/lut_filter/verticalTileCount',
648
- parseInt(lutAsset.meta?.verticalTileCount as string, 10)
649
- );
650
- engine.block.setFloat(lutEffect, 'effect/lut_filter/intensity', 0.85);
549
+ // Configure LUT with preset filter settings
550
+ engine.block.setString(
551
+ lutEffect,
552
+ 'effect/lut_filter/lutFileURI',
553
+ lutConfig.uri
554
+ );
555
+ engine.block.setInt(
556
+ lutEffect,
557
+ 'effect/lut_filter/horizontalTileCount',
558
+ lutConfig.horizontalTileCount
559
+ );
560
+ engine.block.setInt(
561
+ lutEffect,
562
+ 'effect/lut_filter/verticalTileCount',
563
+ lutConfig.verticalTileCount
564
+ );
565
+ engine.block.setFloat(lutEffect, 'effect/lut_filter/intensity', 0.85);
651
566
 
652
- engine.block.appendEffect(lutImageBlock, lutEffect);
653
- }
567
+ engine.block.appendEffect(lutImageBlock, lutEffect);
568
+ }
654
569
  ```
655
570
 
656
571
  LUT filters are ideal for:
@@ -660,51 +575,57 @@ LUT filters are ideal for:
660
575
  - Matching reference images or maintaining color continuity
661
576
  - Building curated filter collections for users
662
577
 
663
- **Asset metadata structure**: Each LUT asset provides `uri` (the LUT file URL), `horizontalTileCount`, and `verticalTileCount` describing the grid layout of color transformation cubes.
578
+ **LUT configuration**: Each LUT file requires specifying the `lutFileURI` pointing to the LUT image, along with `horizontalTileCount` and `verticalTileCount` describing the grid layout of color transformation cubes.
664
579
 
665
580
  ### Apply Duotone Filters
666
581
 
667
582
  Duotone filters create artistic two-color effects by mapping image tones to two colors (dark and light). This effect is popular for creating stylized visuals, vintage aesthetics, or brand-specific color treatments.
668
583
 
669
- The example queries duotone filters from the asset library, then applies them using color metadata. The `hexToRgba` utility converts hex color values from asset metadata to RGBA format required by the `setColorRGBA` API.
584
+ The example applies duotone filters using direct color configuration. The `hexToRgba` utility converts hex color values to RGBA format required by the `setColor` API.
670
585
 
671
586
  ```typescript highlight-apply-duotone-filter
672
- // Demonstrate Duotone filters by applying the first 2 from asset library
673
- // Duotone filters create artistic two-color treatments (Grid positions 5-6)
674
- const duotoneImageBlocks = [];
675
- for (let i = 0; i < Math.min(2, duotoneAssets.length); i++) {
676
- const duotoneAsset = duotoneAssets[i];
677
-
678
- const duotoneImageBlock = await engine.block.addImage(imageUri, {
679
- size: blockSize
680
- });
681
- engine.block.appendChild(page, duotoneImageBlock);
682
- duotoneImageBlocks.push(duotoneImageBlock);
683
-
684
- // Create Duotone filter effect using the full effect type URI
685
- const duotoneEffect = engine.block.createEffect(
686
- '//ly.img.ubq/effect/duotone_filter'
687
- );
587
+ // Demonstrate Duotone filters by applying 2 different color combinations (Grid positions 5-6)
588
+ // Duotone configurations with different color schemes
589
+ const duotoneConfigs = [
590
+ { darkColor: '#0b3d5b', lightColor: '#f8bc60' }, // Blue/Orange
591
+ { darkColor: '#2d1e3e', lightColor: '#e8d5b7' } // Purple/Cream
592
+ ];
593
+
594
+ const duotoneImageBlocks = [];
595
+ for (const duotoneConfig of duotoneConfigs) {
596
+ const duotoneImageBlock = await engine.block.addImage(imageUri, {
597
+ size: { width: 200, height: 150 }
598
+ });
599
+ engine.block.appendChild(page, duotoneImageBlock);
600
+ duotoneImageBlocks.push(duotoneImageBlock);
688
601
 
689
- // Convert hex colors from asset metadata to RGBA (0-1 range)
690
- const darkColor = hexToRgba(duotoneAsset.meta?.darkColor as string);
691
- engine.block.setColor(
692
- duotoneEffect,
693
- 'effect/duotone_filter/darkColor',
694
- darkColor
695
- );
602
+ // Create duotone filter effect
603
+ const duotoneEffect = engine.block.createEffect(
604
+ '//ly.img.ubq/effect/duotone_filter'
605
+ );
696
606
 
697
- const lightColor = hexToRgba(duotoneAsset.meta?.lightColor as string);
698
- engine.block.setColor(
699
- duotoneEffect,
700
- 'effect/duotone_filter/lightColor',
701
- lightColor
702
- );
607
+ // Configure duotone colors using hex to RGBA conversion
608
+ const darkColor = hexToRgba(duotoneConfig.darkColor);
609
+ engine.block.setColor(
610
+ duotoneEffect,
611
+ 'effect/duotone_filter/darkColor',
612
+ darkColor
613
+ );
703
614
 
704
- engine.block.setFloat(duotoneEffect, 'effect/duotone_filter/intensity', 0.8);
615
+ const lightColor = hexToRgba(duotoneConfig.lightColor);
616
+ engine.block.setColor(
617
+ duotoneEffect,
618
+ 'effect/duotone_filter/lightColor',
619
+ lightColor
620
+ );
705
621
 
706
- engine.block.appendEffect(duotoneImageBlock, duotoneEffect);
707
- }
622
+ engine.block.setFloat(
623
+ duotoneEffect,
624
+ 'effect/duotone_filter/intensity',
625
+ 0.8
626
+ );
627
+ engine.block.appendEffect(duotoneImageBlock, duotoneEffect);
628
+ }
708
629
  ```
709
630
 
710
631
  Duotone filters work by:
@@ -714,7 +635,7 @@ Duotone filters work by:
714
635
  - Blending between the two colors based on pixel brightness
715
636
  - Adjusting intensity to control the effect strength (0.0 to 1.0)
716
637
 
717
- **Asset metadata structure**: Each duotone asset provides `darkColor` and `lightColor` as hex strings (e.g., `"#1a2b3c"`) which must be converted to RGBA values for the effect API.
638
+ **Color format**: Duotone colors use RGBA values in the 0.0 to 1.0 range. Convert hex colors using a helper function as shown in the example.
718
639
 
719
640
  ### Combine Multiple Effects
720
641
 
@@ -726,60 +647,63 @@ One of the most powerful features of CE.SDK's effect system is the ability to st
726
647
  > production code, you can apply multiple effects directly to the same block
727
648
  > without this separation.
728
649
 
729
- ```typescript highlight-combine-multiple-effects
730
- // Pattern #5: Progressive Complexity - now combining multiple effects
731
- // Create a separate image block to demonstrate combining multiple effects (Grid position 7)
732
- const combinedImageBlock = await engine.block.addImage(imageUri, {
733
- size: blockSize
734
- });
735
- engine.block.appendChild(page, combinedImageBlock);
736
-
737
- // Apply effects in order - the stack will contain:
738
- // 1. adjustments (brightness/contrast) - applied first
739
- // 2. blur - applied second
740
- // 3. duotone (color tinting) - applied third
741
- // 4. pixelize - applied last
742
-
743
- const combinedAdjustments = engine.block.createEffect('adjustments');
744
- engine.block.appendEffect(combinedImageBlock, combinedAdjustments);
745
- engine.block.setFloat(
746
- combinedAdjustments,
747
- 'effect/adjustments/brightness',
748
- 0.2
749
- );
750
- engine.block.setFloat(combinedAdjustments, 'effect/adjustments/contrast', 0.15);
751
-
752
- const combinedBlur = engine.block.createEffect('extrude_blur');
753
- engine.block.appendEffect(combinedImageBlock, combinedBlur);
754
- engine.block.setFloat(combinedBlur, 'effect/extrude_blur/amount', 0.3);
755
-
756
- const combinedDuotone = engine.block.createEffect('duotone_filter');
757
- engine.block.appendEffect(combinedImageBlock, combinedDuotone);
758
- engine.block.setColor(combinedDuotone, 'duotone_filter/darkColor', {
759
- r: 0.1,
760
- g: 0.2,
761
- b: 0.4,
762
- a: 1.0
763
- });
764
- engine.block.setColor(combinedDuotone, 'duotone_filter/lightColor', {
765
- r: 0.9,
766
- g: 0.8,
767
- b: 0.6,
768
- a: 1.0
769
- });
770
- engine.block.setFloat(combinedDuotone, 'duotone_filter/intensity', 0.6);
650
+ ```typescript highlight-addEffect
651
+ // Create an image block to demonstrate combining multiple effects (Grid position 7)
652
+ const combinedImageBlock = await engine.block.addImage(imageUri, {
653
+ size: { width: 200, height: 150 }
654
+ });
655
+ engine.block.appendChild(page, combinedImageBlock);
656
+
657
+ // Apply effects in order - the stack will contain:
658
+ // 1. adjustments (brightness/contrast) - applied first
659
+ // 2. blur - applied second
660
+ // 3. duotone (color tinting) - applied third
661
+ // 4. pixelize - applied last
662
+
663
+ const combinedAdjustments = engine.block.createEffect('adjustments');
664
+ engine.block.appendEffect(combinedImageBlock, combinedAdjustments);
665
+ engine.block.setFloat(
666
+ combinedAdjustments,
667
+ 'effect/adjustments/brightness',
668
+ 0.2
669
+ );
670
+ engine.block.setFloat(
671
+ combinedAdjustments,
672
+ 'effect/adjustments/contrast',
673
+ 0.15
674
+ );
771
675
 
772
- const pixelizeEffect = engine.block.createEffect('pixelize');
773
- engine.block.appendEffect(combinedImageBlock, pixelizeEffect);
774
- engine.block.setInt(pixelizeEffect, 'pixelize/horizontalPixelSize', 8);
775
- engine.block.setInt(pixelizeEffect, 'pixelize/verticalPixelSize', 8);
676
+ const combinedBlur = engine.block.createEffect('extrude_blur');
677
+ engine.block.appendEffect(combinedImageBlock, combinedBlur);
678
+ engine.block.setFloat(combinedBlur, 'effect/extrude_blur/amount', 0.3);
679
+
680
+ const combinedDuotone = engine.block.createEffect('duotone_filter');
681
+ engine.block.appendEffect(combinedImageBlock, combinedDuotone);
682
+ engine.block.setColor(combinedDuotone, 'duotone_filter/darkColor', {
683
+ r: 0.1,
684
+ g: 0.2,
685
+ b: 0.4,
686
+ a: 1.0
687
+ });
688
+ engine.block.setColor(combinedDuotone, 'duotone_filter/lightColor', {
689
+ r: 0.9,
690
+ g: 0.8,
691
+ b: 0.6,
692
+ a: 1.0
693
+ });
694
+ engine.block.setFloat(combinedDuotone, 'duotone_filter/intensity', 0.6);
695
+
696
+ const pixelizeEffect = engine.block.createEffect('pixelize');
697
+ engine.block.appendEffect(combinedImageBlock, pixelizeEffect);
698
+ engine.block.setInt(pixelizeEffect, 'pixelize/horizontalPixelSize', 8);
699
+ engine.block.setInt(pixelizeEffect, 'pixelize/verticalPixelSize', 8);
776
700
  ```
777
701
 
778
702
  **Effect ordering matters**: Effects are applied from the bottom of the stack to the top. In this example:
779
703
 
780
704
  1. First, we adjust brightness and contrast
781
705
  2. Then, we apply blur
782
- 3. Then, we apply color grading with a LUT filter
706
+ 3. Then, we apply color grading with duotone
783
707
  4. Finally, we add stylization with pixelization
784
708
 
785
709
  Experiment with different orderings to achieve the desired visual result—changing the order can significantly impact the final appearance.
@@ -788,64 +712,72 @@ Experiment with different orderings to achieve the desired visual result—chang
788
712
 
789
713
  ### List and Access Effects
790
714
 
791
- We can retrieve all effects applied to a block and inspect their properties. This is useful for building effect management interfaces or debugging effect configurations.
715
+ We can retrieve all effects applied to a block and inspect their properties. This is useful for building effect management logic or debugging effect configurations.
792
716
 
793
- ```typescript highlight-list-effects
794
- // Get all effects applied to the combined block
795
- const effects = engine.block.getEffects(combinedImageBlock);
796
- // eslint-disable-next-line no-console
797
- console.log('Applied effects:', effects);
717
+ ```typescript highlight-getEffects
718
+ // Get all effects applied to the combined block
719
+ const effects = engine.block.getEffects(combinedImageBlock);
720
+ console.log('Applied effects:', effects);
798
721
 
799
- // Access properties of specific effects
800
- effects.forEach((effect, index) => {
801
- const effectType = engine.block.getType(effect);
802
- const isEnabled = engine.block.isEffectEnabled(effect);
803
- // eslint-disable-next-line no-console
804
- console.log(`Effect ${index}: ${effectType}, enabled: ${isEnabled}`);
805
- });
722
+ // Access properties of specific effects
723
+ effects.forEach((effect, index) => {
724
+ const effectType = engine.block.getType(effect);
725
+ const isEnabled = engine.block.isEffectEnabled(effect);
726
+ console.log(`Effect ${index}: ${effectType}, enabled: ${isEnabled}`);
727
+ });
806
728
  ```
807
729
 
808
730
  This allows you to iterate through all applied effects, read their properties, and make modifications as needed.
809
731
 
810
732
  ### Enable/Disable Effects
811
733
 
812
- CE.SDK allows you to temporarily toggle effects on and off without removing them from the block. This is particularly useful for before/after comparisons or when you need to optimize rendering performance during interactive editing sessions.
734
+ CE.SDK allows you to temporarily toggle effects on and off without removing them from the block. This is particularly useful for before/after comparisons or conditional rendering in processing pipelines.
813
735
 
814
- ```typescript highlight-enable-disable-effects
815
- // Check if effect is enabled
816
- const isBlurEnabled = engine.block.isEffectEnabled(combinedBlur);
817
- // eslint-disable-next-line no-console
818
- console.log('Blur effect is enabled:', isBlurEnabled);
736
+ ```typescript highlight-disableEffect
737
+ // Check if effect is enabled and toggle
738
+ const isBlurEnabled = engine.block.isEffectEnabled(combinedBlur);
739
+ console.log('Blur effect is enabled:', isBlurEnabled);
740
+
741
+ // Temporarily disable the blur effect
742
+ engine.block.setEffectEnabled(combinedBlur, false);
743
+ console.log(
744
+ 'Blur effect disabled:',
745
+ !engine.block.isEffectEnabled(combinedBlur)
746
+ );
747
+
748
+ // Re-enable for final export
749
+ engine.block.setEffectEnabled(combinedBlur, true);
819
750
  ```
820
751
 
821
752
  When you disable an effect, it remains attached to the block but won't be rendered until you enable it again. This preserves all effect parameters while giving you full control over when the effect is applied.
822
753
 
823
- You can use this feature to create interactive preview modes, implement undo-like functionality, or conditionally apply effects based on user preferences or device capabilities.
754
+ You can use this feature to create comparison outputs, implement conditional processing, or optimize rendering based on output requirements.
824
755
 
825
756
  ### Remove Effects
826
757
 
827
758
  When you no longer need an effect, you can remove it from the effect stack and free its resources. Always destroy effects that are no longer in use to prevent memory leaks.
828
759
 
829
- ```typescript highlight-remove-effects
830
- // Create a temporary block to demonstrate effect removal
831
- const tempBlock = await engine.block.addImage(imageUri, {
832
- size: blockSize
833
- });
834
- engine.block.appendChild(page, tempBlock);
760
+ ```typescript highlight-destroyEffect
761
+ // Create a temporary block to demonstrate effect removal (Grid position 8)
762
+ const tempBlock = await engine.block.addImage(imageUri, {
763
+ size: blockSize
764
+ });
765
+ engine.block.appendChild(page, tempBlock);
835
766
 
836
- const tempEffect = engine.block.createEffect('pixelize');
837
- engine.block.appendEffect(tempBlock, tempEffect);
838
- engine.block.setInt(tempEffect, 'pixelize/horizontalPixelSize', 12);
767
+ const tempEffect = engine.block.createEffect('pixelize');
768
+ engine.block.appendEffect(tempBlock, tempEffect);
769
+ engine.block.setInt(tempEffect, 'pixelize/horizontalPixelSize', 12);
839
770
 
840
- // Remove the effect
841
- const tempEffects = engine.block.getEffects(tempBlock);
842
- const effectIndex = tempEffects.indexOf(tempEffect);
843
- if (effectIndex !== -1) {
844
- engine.block.removeEffect(tempBlock, effectIndex);
845
- }
771
+ // Remove the effect from the block
772
+ const tempEffects = engine.block.getEffects(tempBlock);
773
+ const effectIndex = tempEffects.indexOf(tempEffect);
774
+ if (effectIndex !== -1) {
775
+ engine.block.removeEffect(tempBlock, effectIndex);
776
+ }
846
777
 
847
- // Destroy the removed effect to free memory
848
- engine.block.destroy(tempEffect);
778
+ // Destroy the removed effect to free memory
779
+ engine.block.destroy(tempEffect);
780
+ console.log('Effect removed and destroyed');
849
781
  ```
850
782
 
851
783
  The `removeEffect()` method takes an index position, so you can remove effects selectively from any position in the stack. After removal, destroy the effect instance to ensure proper cleanup.
@@ -857,35 +789,25 @@ The `removeEffect()` method takes an index position, so you can remove effects s
857
789
  For applications that need to apply the same effects to multiple elements, we can iterate through a collection of blocks and apply effects efficiently.
858
790
 
859
791
  ```typescript highlight-batch-processing
860
- // Apply same effects to multiple blocks
861
- const allGraphics = engine.block.findByType('graphic');
862
-
863
- allGraphics.forEach((graphic) => {
864
- if (engine.block.supportsEffects(graphic)) {
865
- // Only apply to blocks that don't already have effects
866
- const existingEffects = engine.block.getEffects(graphic);
867
- if (existingEffects.length === 0) {
868
- const effect = engine.block.createEffect('adjustments');
869
- engine.block.appendEffect(graphic, effect);
870
- engine.block.setFloat(effect, 'effect/adjustments/brightness', 0.1);
792
+ // Apply same effects to multiple blocks (batch processing)
793
+ const allGraphics = engine.block.findByType('graphic');
794
+
795
+ allGraphics.forEach((graphic) => {
796
+ if (engine.block.supportsEffects(graphic)) {
797
+ // Only apply to blocks that don't already have effects
798
+ const existingEffects = engine.block.getEffects(graphic);
799
+ if (existingEffects.length === 0) {
800
+ const effect = engine.block.createEffect('adjustments');
801
+ engine.block.appendEffect(graphic, effect);
802
+ engine.block.setFloat(effect, 'effect/adjustments/brightness', 0.1);
803
+ }
871
804
  }
872
- }
873
- });
805
+ });
806
+ console.log('Batch processing complete');
874
807
  ```
875
808
 
876
809
  When batch processing, check effect support before creating effects to avoid unnecessary work. You can also reuse effect instances when applying the same configuration to multiple blocks, though be careful to destroy them properly when done.
877
810
 
878
- ### Dynamic Effects with Animations
879
-
880
- You can combine effects with CE.SDK's built-in animation system to create dynamic visual treatments that change over time.
881
-
882
- > **Caution:** Effect parameters are static properties and cannot be animated using
883
- > JavaScript timers like `setInterval` or `requestAnimationFrame`. For animated
884
- > content, use CE.SDK's built-in animation blocks (`createAnimation()`,
885
- > `setInAnimation()`, etc.) or refer to the animation guides.
886
-
887
- For dynamic visual effects in video projects, explore CE.SDK's animation system which provides professionally designed transitions and effects that integrate seamlessly with the rendering pipeline.
888
-
889
811
  ### Custom Effect Combinations
890
812
 
891
813
  Creating reusable effect presets allows you to maintain consistent styling across your application and speed up common effect applications. Here's a pattern for building reusable effect configurations:
@@ -898,7 +820,7 @@ async function applyVintagePreset(engine: CreativeEngine, imageBlock: number) {
898
820
  engine.block.setString(
899
821
  lutEffect,
900
822
  'lut_filter/lutFileURI',
901
- 'https://img.ly/static/ubq_luts/vintage.png'
823
+ 'https://cdn.img.ly/packages/imgly/cesdk-js/latest/assets/extensions/ly.img.cesdk.filters.lut/LUTs/imgly_lut_ad1920_5_5_128.png',
902
824
  );
903
825
  engine.block.appendEffect(imageBlock, lutEffect);
904
826
 
@@ -918,19 +840,39 @@ Preset strategies include:
918
840
 
919
841
  - **Brand filters** - Maintain a consistent look across campaigns
920
842
  - **Style templates** - Provide quick application of complex multi-effect treatments
921
- - **User favorites** - Allow users to save and recall their preferred settings
843
+ - **Processing pipelines** - Apply standardized effects across batch operations
844
+
845
+ ### Export Results
846
+
847
+ After applying effects, export the processed content to a file. CE.SDK supports various export formats including PNG, JPEG, and PDF.
848
+
849
+ ```typescript highlight-export
850
+ // Export the scene to PNG
851
+ const blob = await engine.block.export(page, { mimeType: 'image/png' });
852
+ const buffer = Buffer.from(await blob.arrayBuffer());
853
+
854
+ // Ensure output directory exists
855
+ if (!existsSync('output')) {
856
+ mkdirSync('output');
857
+ }
858
+
859
+ // Save to file
860
+ writeFileSync('output/filters-and-effects.png', buffer);
861
+ console.log('Exported to output/filters-and-effects.png');
862
+ ```
863
+
864
+ The export operation renders all effects and saves the result to the file system. Always dispose of the engine instance when processing is complete to free resources.
922
865
 
923
866
  ## Performance Considerations
924
867
 
925
- CE.SDK's effect system is optimized for real-time performance, but understanding these considerations helps you build responsive applications:
868
+ CE.SDK's effect system is optimized for performance, but understanding these considerations helps you build efficient processing pipelines:
926
869
 
927
- - **GPU acceleration**: Effects leverage GPU rendering for smooth performance on modern devices
928
- - **Mobile optimization**: Limit effects to 2-3 per element on mobile devices to maintain responsiveness
870
+ - **GPU acceleration**: Effects leverage GPU rendering for smooth performance on modern systems
929
871
  - **Effect complexity**: Blur and LUT filters are computationally expensive compared to simple adjustments
930
- - **Video effects**: Apply effects sparingly to video blocks to maintain smooth playback
931
- - **Real-time editing**: Temporarily disable effects during intensive editing operations for better interactivity
872
+ - **Video effects**: Apply effects sparingly to video blocks to maintain smooth processing
873
+ - **Batch optimization**: When processing many images, consider reusing engine instances rather than reinitializing
932
874
 
933
- Test your effect combinations on target devices early in development to ensure acceptable performance.
875
+ Test your effect combinations with representative workloads early in development to ensure acceptable performance.
934
876
 
935
877
  ## Troubleshooting
936
878
 
@@ -945,12 +887,12 @@ If an effect doesn't appear after applying it, check these common issues:
945
887
 
946
888
  ### Performance Degradation
947
889
 
948
- If you experience slow rendering or laggy interactions:
890
+ If you experience slow processing:
949
891
 
950
- - Reduce the number of effects per element (aim for 2-3 maximum on mobile)
892
+ - Reduce the number of effects per element
951
893
  - Lower blur radius values or use smaller LUT files
952
- - Temporarily disable effects during editing with `setEffectEnabled()`
953
- - Test on target devices early to identify performance bottlenecks
894
+ - Temporarily disable effects during intermediate operations with `setEffectEnabled()`
895
+ - Profile your processing pipeline to identify bottlenecks
954
896
 
955
897
  ### Effects Not Persisting
956
898
 
@@ -965,7 +907,7 @@ Effects should save automatically with the scene, but verify:
965
907
  If you can't apply an effect:
966
908
 
967
909
  - Remember that graphic blocks (with image or video fills), shape blocks, and text blocks support effects
968
- - Page blocks themselves don't support effects directly, but page fills (such as background fills) do support effects
910
+ - Page blocks support effects when they have fills applied (such as background fills)
969
911
  - Scene blocks cannot have effects applied
970
912
  - Check the block type with `block.getType()` and use `block.supportsEffects()` before attempting to apply effects
971
913
 
@@ -994,26 +936,18 @@ The example code accompanying this guide follows educational design patterns to
994
936
 
995
937
  - **Individual demonstrations**: Each effect type is demonstrated on its own image block before showing combinations, making it easier to understand what each effect does
996
938
  - **Convenience API usage**: The code uses `engine.block.addImage()` instead of manual block construction—this is the recommended approach for simplicity and maintainability
997
- - **Spatial layout**: Image blocks are positioned in a grid layout (x/y coordinates) so you can visually see the results of each effect when running the example
939
+ - **Spatial layout**: Image blocks are positioned in a grid layout (x/y coordinates) so you can see the results of each effect in the exported output
998
940
  - **Progressive complexity**: The example starts with simple single effects and gradually builds to complex multi-effect combinations
999
941
 
1000
942
  In your production code, you can apply multiple effects directly to the same block without creating separate demonstration blocks. The example structure is optimized for learning, not production usage.
1001
943
 
1002
- ## Next Steps
1003
-
1004
- Now that you understand how to apply and manage filters and effects, explore specific effect types and advanced techniques:
1005
944
 
1006
- - **LUT Filters** - Create custom color grading filters for cinematic looks
1007
- - **Blur Effects** - Apply depth of field and motion blur techniques
1008
- - **Duotone Effects** - Create striking two-color artistic treatments
1009
- - **Adjustments** - Fine-tune brightness, contrast, and saturation
1010
- - **Effect Combinations** - Build sophisticated multi-effect visual treatments
1011
945
 
1012
946
  ---
1013
947
 
1014
948
  ## More Resources
1015
949
 
1016
- - **[Vanilla JS/TS Documentation Index](https://img.ly/docs/cesdk/js.md)** - Browse all Vanilla JS/TS documentation
950
+ - **[Node.js Documentation Index](https://img.ly/docs/cesdk/node.md)** - Browse all Node.js documentation
1017
951
  - **[Complete Documentation](./llms-full.txt.md)** - Full documentation in one file (for LLMs)
1018
- - **[Web Documentation](./js.md)** - Interactive documentation with examples
1019
- - **[Support](mailto:support@img.ly)** - Contact IMG.LY support
952
+ - **[Web Documentation](./node.md)** - Interactive documentation with examples
953
+ - **[Support](mailto:support@img.ly)** - Contact IMG.LY support