@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) > [Export Media Assets](./export-save-publish/export.md) > [Pre-Export Validation](./export-save-publish/pre-export-validation.md)
4
4
 
@@ -6,46 +6,26 @@
6
6
 
7
7
  Validate your design before export by detecting elements outside the page,
8
8
  protruding content, obscured text, and other issues that could affect the
9
- final output quality.
10
-
11
- ![Pre-Export Validation example showing validation workflow](https://img.ly/docs/cesdk/./assets/browser.hero.webp)
9
+ final output quality in headless environments.
12
10
 
13
11
  > **Reading time:** 10 minutes
14
12
  >
15
13
  > **Resources:**
16
14
  >
17
15
  > - [Download examples](https://github.com/imgly/cesdk-web-examples/archive/refs/tags/release-$UBQ_VERSION$.zip)
18
- > - [View source on GitHub](https://github.com/imgly/cesdk-web-examples/tree/release-$UBQ_VERSION$/guides-export-save-publish-export-pre-export-validation-browser)
19
- > - [Open in StackBlitz](https://stackblitz.com/github/imgly/cesdk-web-examples/tree/v$UBQ_VERSION$/guides-export-save-publish-export-pre-export-validation-browser)
20
- > - [Live demo](https://img.ly/docs/cesdk/examples/guides-export-save-publish-export-pre-export-validation-browser/)
16
+ >
17
+ > - [View source on GitHub](https://github.com/imgly/cesdk-web-examples/tree/release-$UBQ_VERSION$/guides-export-save-publish-export-pre-export-validation-server-js)
18
+ >
19
+ > - [Open in StackBlitz](https://stackblitz.com/github/imgly/cesdk-web-examples/tree/v$UBQ_VERSION$/guides-export-save-publish-export-pre-export-validation-server-js)
21
20
 
22
21
  Pre-export validation catches layout and quality issues before export, preventing problems like cropped content, hidden text, and elements missing from the final output. Production-quality designs require elements to be properly positioned within the page boundaries.
23
22
 
24
- ```typescript file=@cesdk_web_examples/guides-export-save-publish-export-pre-export-validation-browser/browser.ts reference-only
25
- import type {
26
- CreativeEngine,
27
- EditorPlugin,
28
- EditorPluginContext
29
- } from '@cesdk/cesdk-js';
30
- import type CreativeEditorSDK from '@cesdk/cesdk-js';
31
-
32
- import {
33
- BlurAssetSource,
34
- ColorPaletteAssetSource,
35
- CropPresetsAssetSource,
36
- DemoAssetSources,
37
- EffectsAssetSource,
38
- FiltersAssetSource,
39
- PagePresetsAssetSource,
40
- StickerAssetSource,
41
- TextAssetSource,
42
- TextComponentAssetSource,
43
- TypefaceAssetSource,
44
- UploadAssetSources,
45
- VectorShapeAssetSource
46
- } from '@cesdk/cesdk-js/plugins';
47
- import { DesignEditorConfig } from './design-editor/plugin';
48
- import packageJson from './package.json';
23
+ ```typescript file=@cesdk_web_examples/guides-export-save-publish-export-pre-export-validation-server-js/server-js.ts reference-only
24
+ import CreativeEngine from '@cesdk/node';
25
+ import { config } from 'dotenv';
26
+ import { existsSync, mkdirSync, writeFileSync } from 'fs';
27
+
28
+ config();
49
29
 
50
30
  type ValidationSeverity = 'error' | 'warning';
51
31
 
@@ -66,461 +46,394 @@ interface ValidationResult {
66
46
  warnings: ValidationIssue[];
67
47
  }
68
48
 
69
- class Example implements EditorPlugin {
70
- name = packageJson.name;
71
- version = packageJson.version;
49
+ const engine = await CreativeEngine.init({
50
+ baseURL: process.env.IMGLY_LOCAL_ASSETS_URL,
51
+ license: process.env.CESDK_LICENSE
52
+ });
72
53
 
73
- async initialize({ cesdk }: EditorPluginContext): Promise<void> {
74
- if (!cesdk) {
75
- throw new Error('CE.SDK instance is required for this plugin');
76
- }
77
- await cesdk.addPlugin(new DesignEditorConfig());
78
-
79
- // Add asset source plugins
80
- await cesdk.addPlugin(new BlurAssetSource());
81
- await cesdk.addPlugin(new ColorPaletteAssetSource());
82
- await cesdk.addPlugin(new CropPresetsAssetSource());
83
- await cesdk.addPlugin(
84
- new UploadAssetSources({ include: ['ly.img.image.upload'] })
54
+ try {
55
+ // Create a scene with test elements that demonstrate validation issues
56
+ engine.scene.create('VerticalStack', {
57
+ page: { size: { width: 800, height: 600 } }
58
+ });
59
+
60
+ const page = engine.block.findByType('page')[0];
61
+ const pageWidth = engine.block.getWidth(page);
62
+ const pageHeight = engine.block.getHeight(page);
63
+ const centerY = pageHeight / 2;
64
+
65
+ // Row layout: Main validation examples (horizontally aligned)
66
+ const row1Y = centerY - 50;
67
+ const elementWidth = 150;
68
+ const elementHeight = 100;
69
+ const spacing = 20;
70
+
71
+ // Calculate positions for 4 elements in a row
72
+ const totalRowWidth = elementWidth * 4 + spacing * 3;
73
+ const startX = (pageWidth - totalRowWidth) / 2;
74
+
75
+ // Create an image that's outside the page (will trigger error)
76
+ // Positioned to the left of the page - completely outside
77
+ const outsideImage = engine.block.create('graphic');
78
+ engine.block.setName(outsideImage, 'Outside Image');
79
+ engine.block.setShape(outsideImage, engine.block.createShape('rect'));
80
+ const outsideFill = engine.block.createFill('image');
81
+ engine.block.setString(
82
+ outsideFill,
83
+ 'fill/image/imageFileURI',
84
+ 'https://img.ly/static/ubq_samples/sample_1.jpg'
85
+ );
86
+ engine.block.setFill(outsideImage, outsideFill);
87
+ engine.block.setWidth(outsideImage, elementWidth);
88
+ engine.block.setHeight(outsideImage, elementHeight);
89
+ engine.block.setPositionX(outsideImage, -elementWidth - 10); // Left of the page
90
+ engine.block.setPositionY(outsideImage, row1Y);
91
+ engine.block.appendChild(page, outsideImage);
92
+
93
+ // Create a properly placed image for reference (first in row)
94
+ const validImage = engine.block.create('graphic');
95
+ engine.block.setName(validImage, 'Valid Image');
96
+ engine.block.setShape(validImage, engine.block.createShape('rect'));
97
+ const validFill = engine.block.createFill('image');
98
+ engine.block.setString(
99
+ validFill,
100
+ 'fill/image/imageFileURI',
101
+ 'https://img.ly/static/ubq_samples/sample_3.jpg'
102
+ );
103
+ engine.block.setFill(validImage, validFill);
104
+ engine.block.setWidth(validImage, elementWidth);
105
+ engine.block.setHeight(validImage, elementHeight);
106
+ engine.block.setPositionX(validImage, startX);
107
+ engine.block.setPositionY(validImage, row1Y);
108
+ engine.block.appendChild(page, validImage);
109
+
110
+ // Create unfilled placeholder (second in row - triggers error)
111
+ const placeholder = engine.block.create('graphic');
112
+ engine.block.setName(placeholder, 'Unfilled Placeholder');
113
+ engine.block.setShape(placeholder, engine.block.createShape('rect'));
114
+ const placeholderFill = engine.block.createFill('image');
115
+ engine.block.setFill(placeholder, placeholderFill);
116
+ engine.block.setWidth(placeholder, elementWidth);
117
+ engine.block.setHeight(placeholder, elementHeight);
118
+ engine.block.setPositionX(placeholder, startX + elementWidth + spacing);
119
+ engine.block.setPositionY(placeholder, row1Y);
120
+ engine.block.appendChild(page, placeholder);
121
+ engine.block.setScopeEnabled(placeholder, 'fill/change', true);
122
+ engine.block.setPlaceholderBehaviorEnabled(placeholderFill, true);
123
+ engine.block.setPlaceholderEnabled(placeholder, true);
124
+
125
+ // Create text that will be partially obscured (third in row)
126
+ const obscuredText = engine.block.create('text');
127
+ engine.block.setName(obscuredText, 'Obscured Text');
128
+ engine.block.setPositionX(
129
+ obscuredText,
130
+ startX + (elementWidth + spacing) * 2
131
+ );
132
+ engine.block.setPositionY(obscuredText, row1Y);
133
+ engine.block.setWidth(obscuredText, elementWidth);
134
+ engine.block.setHeight(obscuredText, elementHeight);
135
+ engine.block.replaceText(obscuredText, 'Hidden');
136
+ engine.block.setFloat(obscuredText, 'text/fontSize', 48);
137
+ engine.block.appendChild(page, obscuredText);
138
+
139
+ // Create a shape that overlaps the text (added after text = on top)
140
+ const overlappingShape = engine.block.create('graphic');
141
+ engine.block.setName(overlappingShape, 'Overlapping Shape');
142
+ engine.block.setShape(overlappingShape, engine.block.createShape('rect'));
143
+ const shapeFill = engine.block.createFill('color');
144
+ engine.block.setColor(shapeFill, 'fill/color/value', {
145
+ r: 0.2,
146
+ g: 0.4,
147
+ b: 0.8,
148
+ a: 0.8
149
+ });
150
+ engine.block.setFill(overlappingShape, shapeFill);
151
+ engine.block.setWidth(overlappingShape, elementWidth);
152
+ engine.block.setHeight(overlappingShape, elementHeight);
153
+ engine.block.setPositionX(
154
+ overlappingShape,
155
+ startX + (elementWidth + spacing) * 2
156
+ );
157
+ engine.block.setPositionY(overlappingShape, row1Y);
158
+ engine.block.appendChild(page, overlappingShape);
159
+
160
+ // Create an image that protrudes from the page (fourth in row - will trigger warning)
161
+ // Extends past right page boundary
162
+ const protrudingImage = engine.block.create('graphic');
163
+ engine.block.setName(protrudingImage, 'Protruding Image');
164
+ engine.block.setShape(protrudingImage, engine.block.createShape('rect'));
165
+ const protrudingFill = engine.block.createFill('image');
166
+ engine.block.setString(
167
+ protrudingFill,
168
+ 'fill/image/imageFileURI',
169
+ 'https://img.ly/static/ubq_samples/sample_2.jpg'
170
+ );
171
+ engine.block.setFill(protrudingImage, protrudingFill);
172
+ engine.block.setWidth(protrudingImage, elementWidth);
173
+ engine.block.setHeight(protrudingImage, elementHeight);
174
+ engine.block.setPositionX(protrudingImage, pageWidth - elementWidth / 2); // Extends past right
175
+ engine.block.setPositionY(protrudingImage, row1Y);
176
+ engine.block.appendChild(page, protrudingImage);
177
+
178
+ // Validate design before export
179
+ const result = validateDesign(engine);
180
+
181
+ console.log('=== Pre-Export Validation ===');
182
+
183
+ // Log all issues for debugging
184
+ if (result.errors.length > 0) {
185
+ console.error(`Found ${result.errors.length} error(s):`);
186
+ result.errors.forEach((err) =>
187
+ console.error(` - ${err.blockName}: ${err.message}`)
85
188
  );
86
- await cesdk.addPlugin(
87
- new DemoAssetSources({
88
- include: [
89
- 'ly.img.templates.blank.*',
90
- 'ly.img.templates.presentation.*',
91
- 'ly.img.templates.print.*',
92
- 'ly.img.templates.social.*',
93
- 'ly.img.image.*'
94
- ]
95
- })
96
- );
97
- await cesdk.addPlugin(new EffectsAssetSource());
98
- await cesdk.addPlugin(new FiltersAssetSource());
99
- await cesdk.addPlugin(new PagePresetsAssetSource());
100
- await cesdk.addPlugin(new StickerAssetSource());
101
- await cesdk.addPlugin(new TextAssetSource());
102
- await cesdk.addPlugin(new TextComponentAssetSource());
103
- await cesdk.addPlugin(new TypefaceAssetSource());
104
- await cesdk.addPlugin(new VectorShapeAssetSource());
105
-
106
- await cesdk.actions.run('scene.create', {
107
- page: { width: 800, height: 600, unit: 'Pixel' }
108
- });
109
-
110
- const engine = cesdk.engine;
111
-
112
- // Set role to adopter so placeholders can be replaced
113
- engine.editor.setRole('Adopter');
114
-
115
- const page = engine.block.findByType('page')[0];
116
-
117
- await this.createDemoScene(engine, page);
118
- this.overrideExportAction(cesdk, engine);
119
189
  }
120
190
 
121
- private async createDemoScene(
122
- engine: CreativeEngine,
123
- page: number
124
- ): Promise<void> {
125
- const pageWidth = engine.block.getWidth(page);
126
- const pageHeight = engine.block.getHeight(page);
127
- const centerY = pageHeight / 2;
128
-
129
- // Row 1: Main validation examples (horizontally aligned)
130
- const row1Y = centerY - 120;
131
- const elementWidth = 150;
132
- const elementHeight = 100;
133
- const spacing = 20;
134
-
135
- // Calculate positions for 4 elements in a row
136
- const totalRowWidth = elementWidth * 4 + spacing * 3;
137
- const startX = (pageWidth - totalRowWidth) / 2;
138
-
139
- // Create an image that's outside the page (will trigger error)
140
- // Positioned to the left of the page - completely outside
141
- const outsideImage = engine.block.create('graphic');
142
- engine.block.setName(outsideImage, 'Outside Image');
143
- engine.block.setShape(outsideImage, engine.block.createShape('rect'));
144
- const outsideFill = engine.block.createFill('image');
145
- engine.block.setString(
146
- outsideFill,
147
- 'fill/image/imageFileURI',
148
- 'https://img.ly/static/ubq_samples/sample_1.jpg'
149
- );
150
- engine.block.setFill(outsideImage, outsideFill);
151
- engine.block.setWidth(outsideImage, elementWidth);
152
- engine.block.setHeight(outsideImage, elementHeight);
153
- engine.block.setPositionX(outsideImage, -elementWidth - 10); // Left of the page
154
- engine.block.setPositionY(outsideImage, row1Y);
155
- engine.block.appendChild(page, outsideImage);
156
-
157
- // Create a properly placed image for reference (first in row)
158
- const validImage = engine.block.create('graphic');
159
- engine.block.setName(validImage, 'Valid Image');
160
- engine.block.setShape(validImage, engine.block.createShape('rect'));
161
- const validFill = engine.block.createFill('image');
162
- engine.block.setString(
163
- validFill,
164
- 'fill/image/imageFileURI',
165
- 'https://img.ly/static/ubq_samples/sample_3.jpg'
166
- );
167
- engine.block.setFill(validImage, validFill);
168
- engine.block.setWidth(validImage, elementWidth);
169
- engine.block.setHeight(validImage, elementHeight);
170
- engine.block.setPositionX(validImage, startX);
171
- engine.block.setPositionY(validImage, row1Y);
172
- engine.block.appendChild(page, validImage);
173
-
174
- // Create unfilled placeholder (second in row - triggers error)
175
- const placeholder = engine.block.create('graphic');
176
- engine.block.setName(placeholder, 'Unfilled Placeholder');
177
- engine.block.setShape(placeholder, engine.block.createShape('rect'));
178
- const placeholderFill = engine.block.createFill('image');
179
- engine.block.setFill(placeholder, placeholderFill);
180
- engine.block.setWidth(placeholder, elementWidth);
181
- engine.block.setHeight(placeholder, elementHeight);
182
- engine.block.setPositionX(placeholder, startX + elementWidth + spacing);
183
- engine.block.setPositionY(placeholder, row1Y);
184
- engine.block.appendChild(page, placeholder);
185
- engine.block.setScopeEnabled(placeholder, 'fill/change', true);
186
- engine.block.setPlaceholderBehaviorEnabled(placeholderFill, true);
187
- engine.block.setPlaceholderEnabled(placeholder, true);
188
- engine.block.setPlaceholderControlsOverlayEnabled(placeholder, true);
189
- engine.block.setPlaceholderControlsButtonEnabled(placeholder, true);
190
-
191
- // Create text that will be partially obscured (third in row)
192
- const obscuredText = engine.block.create('text');
193
- engine.block.setName(obscuredText, 'Obscured Text');
194
- engine.block.setPositionX(
195
- obscuredText,
196
- startX + (elementWidth + spacing) * 2
197
- );
198
- engine.block.setPositionY(obscuredText, row1Y);
199
- engine.block.setWidth(obscuredText, elementWidth);
200
- engine.block.setHeight(obscuredText, elementHeight);
201
- engine.block.replaceText(obscuredText, 'Hidden');
202
- engine.block.setFloat(obscuredText, 'text/fontSize', 48);
203
- engine.block.appendChild(page, obscuredText);
204
-
205
- // Create a shape that overlaps the text (added after text = on top)
206
- const overlappingShape = engine.block.create('graphic');
207
- engine.block.setName(overlappingShape, 'Overlapping Shape');
208
- engine.block.setShape(overlappingShape, engine.block.createShape('rect'));
209
- const shapeFill = engine.block.createFill('color');
210
- engine.block.setColor(shapeFill, 'fill/color/value', {
211
- r: 0.2,
212
- g: 0.4,
213
- b: 0.8,
214
- a: 0.8
215
- });
216
- engine.block.setFill(overlappingShape, shapeFill);
217
- engine.block.setWidth(overlappingShape, elementWidth);
218
- engine.block.setHeight(overlappingShape, elementHeight);
219
- engine.block.setPositionX(
220
- overlappingShape,
221
- startX + (elementWidth + spacing) * 2
222
- );
223
- engine.block.setPositionY(overlappingShape, row1Y);
224
- engine.block.appendChild(page, overlappingShape);
225
-
226
- // Create an image that protrudes from the page (fourth in row - will trigger warning)
227
- // Extends past right page boundary
228
- const protrudingImage = engine.block.create('graphic');
229
- engine.block.setName(protrudingImage, 'Protruding Image');
230
- engine.block.setShape(protrudingImage, engine.block.createShape('rect'));
231
- const protrudingFill = engine.block.createFill('image');
232
- engine.block.setString(
233
- protrudingFill,
234
- 'fill/image/imageFileURI',
235
- 'https://img.ly/static/ubq_samples/sample_2.jpg'
191
+ if (result.warnings.length > 0) {
192
+ console.warn(`Found ${result.warnings.length} warning(s):`);
193
+ result.warnings.forEach((warn) =>
194
+ console.warn(` - ${warn.blockName}: ${warn.message}`)
236
195
  );
237
- engine.block.setFill(protrudingImage, protrudingFill);
238
- engine.block.setWidth(protrudingImage, elementWidth);
239
- engine.block.setHeight(protrudingImage, elementHeight);
240
- engine.block.setPositionX(protrudingImage, pageWidth - elementWidth / 2); // Extends 75px past right
241
- engine.block.setPositionY(protrudingImage, row1Y);
242
- engine.block.appendChild(page, protrudingImage);
243
-
244
- // Add explanatory text below the row
245
- const explanationText = engine.block.create('text');
246
- engine.block.setPositionX(explanationText, 50);
247
- engine.block.setPositionY(explanationText, row1Y + elementHeight + 40);
248
- engine.block.setWidth(explanationText, pageWidth - 100);
249
- engine.block.setHeightMode(explanationText, 'Auto');
250
- engine.block.replaceText(
251
- explanationText,
252
- 'Click Export to run validation. Move elements to fix issues.'
253
- );
254
- engine.block.setFloat(explanationText, 'text/fontSize', 48);
255
- engine.block.setEnum(explanationText, 'text/horizontalAlignment', 'Center');
256
- engine.block.appendChild(page, explanationText);
257
196
  }
258
197
 
259
- private getBoundingBox(
260
- engine: CreativeEngine,
261
- blockId: number
262
- ): [number, number, number, number] {
263
- const x = engine.block.getGlobalBoundingBoxX(blockId);
264
- const y = engine.block.getGlobalBoundingBoxY(blockId);
265
- const width = engine.block.getGlobalBoundingBoxWidth(blockId);
266
- const height = engine.block.getGlobalBoundingBoxHeight(blockId);
267
- return [x, y, x + width, y + height];
198
+ // Block export for errors
199
+ if (result.errors.length > 0) {
200
+ console.error('\nExport blocked: Fix errors before exporting');
201
+ process.exit(1);
268
202
  }
269
203
 
270
- private calculateOverlap(
271
- box1: [number, number, number, number],
272
- box2: [number, number, number, number]
273
- ): number {
274
- const [ax1, ay1, ax2, ay2] = box1;
275
- const [bx1, by1, bx2, by2] = box2;
204
+ // Allow export with warnings
205
+ if (result.warnings.length > 0) {
206
+ console.log('\nProceeding with export despite warnings...');
207
+ } else {
208
+ console.log('\nValidation passed - no issues found');
209
+ }
276
210
 
277
- const overlapWidth = Math.max(0, Math.min(ax2, bx2) - Math.max(ax1, bx1));
278
- const overlapHeight = Math.max(0, Math.min(ay2, by2) - Math.max(ay1, by1));
279
- const overlapArea = overlapWidth * overlapHeight;
211
+ // Export the design
212
+ const outputDir = './output';
213
+ if (!existsSync(outputDir)) mkdirSync(outputDir, { recursive: true });
280
214
 
281
- const box1Area = (ax2 - ax1) * (ay2 - ay1);
282
- if (box1Area === 0) return 0;
215
+ const blob = await engine.block.export(page, { mimeType: 'image/png' });
216
+ const buffer = Buffer.from(await blob.arrayBuffer());
217
+ writeFileSync(`${outputDir}/validated-design.png`, buffer);
218
+ console.log('Export successful: output/validated-design.png');
219
+ } finally {
220
+ engine.dispose();
221
+ }
283
222
 
284
- return overlapArea / box1Area;
285
- }
223
+ function getBoundingBox(
224
+ engine: InstanceType<typeof CreativeEngine>,
225
+ blockId: number
226
+ ): [number, number, number, number] {
227
+ const x = engine.block.getGlobalBoundingBoxX(blockId);
228
+ const y = engine.block.getGlobalBoundingBoxY(blockId);
229
+ const width = engine.block.getGlobalBoundingBoxWidth(blockId);
230
+ const height = engine.block.getGlobalBoundingBoxHeight(blockId);
231
+ return [x, y, x + width, y + height];
232
+ }
286
233
 
287
- private getBlockName(engine: CreativeEngine, blockId: number): string {
288
- const name = engine.block.getName(blockId);
289
- if (name) return name;
290
- const kind = engine.block.getKind(blockId);
291
- return kind.charAt(0).toUpperCase() + kind.slice(1);
292
- }
234
+ function calculateOverlap(
235
+ box1: [number, number, number, number],
236
+ box2: [number, number, number, number]
237
+ ): number {
238
+ const [ax1, ay1, ax2, ay2] = box1;
239
+ const [bx1, by1, bx2, by2] = box2;
293
240
 
294
- private getRelevantBlocks(engine: CreativeEngine): number[] {
295
- return [
296
- ...engine.block.findByType('text'),
297
- ...engine.block.findByType('graphic')
298
- ];
299
- }
241
+ const overlapWidth = Math.max(0, Math.min(ax2, bx2) - Math.max(ax1, bx1));
242
+ const overlapHeight = Math.max(0, Math.min(ay2, by2) - Math.max(ay1, by1));
243
+ const overlapArea = overlapWidth * overlapHeight;
300
244
 
301
- private findOutsideBlocks(
302
- engine: CreativeEngine,
303
- page: number
304
- ): ValidationIssue[] {
305
- const issues: ValidationIssue[] = [];
306
- const pageBounds = this.getBoundingBox(engine, page);
245
+ const box1Area = (ax2 - ax1) * (ay2 - ay1);
246
+ if (box1Area === 0) return 0;
307
247
 
308
- for (const blockId of this.getRelevantBlocks(engine)) {
309
- if (!engine.block.isValid(blockId)) continue;
248
+ return overlapArea / box1Area;
249
+ }
310
250
 
311
- const blockBounds = this.getBoundingBox(engine, blockId);
312
- const overlap = this.calculateOverlap(blockBounds, pageBounds);
251
+ function getBlockName(
252
+ engine: InstanceType<typeof CreativeEngine>,
253
+ blockId: number
254
+ ): string {
255
+ const name = engine.block.getName(blockId);
256
+ if (name) return name;
257
+ const kind = engine.block.getKind(blockId);
258
+ return kind.charAt(0).toUpperCase() + kind.slice(1);
259
+ }
313
260
 
314
- if (overlap === 0) {
315
- // Element is completely outside the page
316
- issues.push({
317
- type: 'outside_page',
318
- severity: 'error',
319
- blockId,
320
- blockName: this.getBlockName(engine, blockId),
321
- message: 'Element is completely outside the visible page area'
322
- });
323
- }
324
- }
261
+ function getRelevantBlocks(
262
+ engine: InstanceType<typeof CreativeEngine>
263
+ ): number[] {
264
+ return [
265
+ ...engine.block.findByType('text'),
266
+ ...engine.block.findByType('graphic')
267
+ ];
268
+ }
325
269
 
326
- return issues;
270
+ function findOutsideBlocks(
271
+ engine: InstanceType<typeof CreativeEngine>,
272
+ page: number
273
+ ): ValidationIssue[] {
274
+ const issues: ValidationIssue[] = [];
275
+ const pageBounds = getBoundingBox(engine, page);
276
+
277
+ for (const blockId of getRelevantBlocks(engine)) {
278
+ if (!engine.block.isValid(blockId)) continue;
279
+
280
+ const blockBounds = getBoundingBox(engine, blockId);
281
+ const overlap = calculateOverlap(blockBounds, pageBounds);
282
+
283
+ if (overlap === 0) {
284
+ // Element is completely outside the page
285
+ issues.push({
286
+ type: 'outside_page',
287
+ severity: 'error',
288
+ blockId,
289
+ blockName: getBlockName(engine, blockId),
290
+ message: 'Element is completely outside the visible page area'
291
+ });
292
+ }
327
293
  }
328
294
 
329
- private findProtrudingBlocks(
330
- engine: CreativeEngine,
331
- page: number
332
- ): ValidationIssue[] {
333
- const issues: ValidationIssue[] = [];
334
- const pageBounds = this.getBoundingBox(engine, page);
295
+ return issues;
296
+ }
335
297
 
336
- for (const blockId of this.getRelevantBlocks(engine)) {
337
- if (!engine.block.isValid(blockId)) continue;
298
+ function findProtrudingBlocks(
299
+ engine: InstanceType<typeof CreativeEngine>,
300
+ page: number
301
+ ): ValidationIssue[] {
302
+ const issues: ValidationIssue[] = [];
303
+ const pageBounds = getBoundingBox(engine, page);
304
+
305
+ for (const blockId of getRelevantBlocks(engine)) {
306
+ if (!engine.block.isValid(blockId)) continue;
307
+
308
+ // Compare element bounds against page bounds
309
+ const blockBounds = getBoundingBox(engine, blockId);
310
+ const overlap = calculateOverlap(blockBounds, pageBounds);
311
+
312
+ // Protruding: partially inside (overlap > 0) but not fully inside (overlap < 1)
313
+ if (overlap > 0 && overlap < 0.99) {
314
+ issues.push({
315
+ type: 'protruding',
316
+ severity: 'warning',
317
+ blockId,
318
+ blockName: getBlockName(engine, blockId),
319
+ message: 'Element extends beyond page boundaries'
320
+ });
321
+ }
322
+ }
338
323
 
339
- // Compare element bounds against page bounds
340
- const blockBounds = this.getBoundingBox(engine, blockId);
341
- const overlap = this.calculateOverlap(blockBounds, pageBounds);
324
+ return issues;
325
+ }
342
326
 
343
- // Protruding: partially inside (overlap > 0) but not fully inside (overlap < 1)
344
- if (overlap > 0 && overlap < 0.99) {
345
- issues.push({
346
- type: 'protruding',
347
- severity: 'warning',
348
- blockId,
349
- blockName: this.getBlockName(engine, blockId),
350
- message: 'Element extends beyond page boundaries'
351
- });
352
- }
353
- }
327
+ function findObscuredText(
328
+ engine: InstanceType<typeof CreativeEngine>,
329
+ page: number
330
+ ): ValidationIssue[] {
331
+ const issues: ValidationIssue[] = [];
332
+ const children = engine.block.getChildren(page);
333
+ const textBlocks = engine.block.findByType('text');
354
334
 
355
- return issues;
356
- }
335
+ for (const textId of textBlocks) {
336
+ if (!engine.block.isValid(textId)) continue;
357
337
 
358
- private findObscuredText(
359
- engine: CreativeEngine,
360
- page: number
361
- ): ValidationIssue[] {
362
- const issues: ValidationIssue[] = [];
363
- const children = engine.block.getChildren(page);
364
- const textBlocks = engine.block.findByType('text');
365
-
366
- for (const textId of textBlocks) {
367
- if (!engine.block.isValid(textId)) continue;
368
-
369
- const textIndex = children.indexOf(textId);
370
- if (textIndex === -1) continue;
371
-
372
- // Elements later in children array are rendered on top
373
- const blocksAbove = children.slice(textIndex + 1);
374
-
375
- for (const aboveId of blocksAbove) {
376
- // Skip text blocks - they don't typically obscure other text
377
- if (engine.block.getType(aboveId) === '//ly.img.ubq/text') continue;
378
-
379
- const overlap = this.calculateOverlap(
380
- this.getBoundingBox(engine, textId),
381
- this.getBoundingBox(engine, aboveId)
382
- );
383
-
384
- if (overlap > 0) {
385
- // Text is obscured by element above it
386
- issues.push({
387
- type: 'text_obscured',
388
- severity: 'warning',
389
- blockId: textId,
390
- blockName: this.getBlockName(engine, textId),
391
- message: 'Text may be partially hidden by overlapping elements'
392
- });
393
- break;
394
- }
395
- }
396
- }
338
+ const textIndex = children.indexOf(textId);
339
+ if (textIndex === -1) continue;
397
340
 
398
- return issues;
399
- }
341
+ // Elements later in children array are rendered on top
342
+ const blocksAbove = children.slice(textIndex + 1);
400
343
 
401
- private findUnfilledPlaceholders(engine: CreativeEngine): ValidationIssue[] {
402
- const issues: ValidationIssue[] = [];
403
- const placeholders = engine.block.findAllPlaceholders();
344
+ for (const aboveId of blocksAbove) {
345
+ // Skip text blocks - they don't typically obscure other text
346
+ if (engine.block.getType(aboveId) === '//ly.img.ubq/text') continue;
404
347
 
405
- for (const blockId of placeholders) {
406
- if (!engine.block.isValid(blockId)) continue;
348
+ const overlap = calculateOverlap(
349
+ getBoundingBox(engine, textId),
350
+ getBoundingBox(engine, aboveId)
351
+ );
407
352
 
408
- if (!this.isPlaceholderFilled(engine, blockId)) {
353
+ if (overlap > 0) {
354
+ // Text is obscured by element above it
409
355
  issues.push({
410
- type: 'unfilled_placeholder',
411
- severity: 'error',
412
- blockId,
413
- blockName: this.getBlockName(engine, blockId),
414
- message: 'Placeholder has not been filled with content'
356
+ type: 'text_obscured',
357
+ severity: 'warning',
358
+ blockId: textId,
359
+ blockName: getBlockName(engine, textId),
360
+ message: 'Text may be partially hidden by overlapping elements'
415
361
  });
362
+ break;
416
363
  }
417
364
  }
418
-
419
- return issues;
420
365
  }
421
366
 
422
- private isPlaceholderFilled(
423
- engine: CreativeEngine,
424
- blockId: number
425
- ): boolean {
426
- const fillId = engine.block.getFill(blockId);
427
- if (!fillId || !engine.block.isValid(fillId)) return false;
428
-
429
- const fillType = engine.block.getType(fillId);
367
+ return issues;
368
+ }
430
369
 
431
- // Check image fill - empty URI means unfilled placeholder
432
- if (fillType === '//ly.img.ubq/fill/image') {
433
- const imageUri = engine.block.getString(
434
- fillId,
435
- 'fill/image/imageFileURI'
436
- );
437
- return imageUri !== '' && imageUri !== undefined;
370
+ function findUnfilledPlaceholders(
371
+ engine: InstanceType<typeof CreativeEngine>
372
+ ): ValidationIssue[] {
373
+ const issues: ValidationIssue[] = [];
374
+ const placeholders = engine.block.findAllPlaceholders();
375
+
376
+ for (const blockId of placeholders) {
377
+ if (!engine.block.isValid(blockId)) continue;
378
+
379
+ if (!isPlaceholderFilled(engine, blockId)) {
380
+ issues.push({
381
+ type: 'unfilled_placeholder',
382
+ severity: 'error',
383
+ blockId,
384
+ blockName: getBlockName(engine, blockId),
385
+ message: 'Placeholder has not been filled with content'
386
+ });
438
387
  }
439
-
440
- // Other fill types are considered filled
441
- return true;
442
- }
443
-
444
- private validateDesign(engine: CreativeEngine): ValidationResult {
445
- const page = engine.block.findByType('page')[0];
446
-
447
- const outsideIssues = this.findOutsideBlocks(engine, page);
448
- const protrudingIssues = this.findProtrudingBlocks(engine, page);
449
- const obscuredIssues = this.findObscuredText(engine, page);
450
- const placeholderIssues = this.findUnfilledPlaceholders(engine);
451
-
452
- const allIssues = [
453
- ...outsideIssues,
454
- ...protrudingIssues,
455
- ...obscuredIssues,
456
- ...placeholderIssues
457
- ];
458
-
459
- return {
460
- errors: allIssues.filter((i) => i.severity === 'error'),
461
- warnings: allIssues.filter((i) => i.severity === 'warning')
462
- };
463
388
  }
464
389
 
465
- private overrideExportAction(
466
- cesdk: CreativeEditorSDK,
467
- engine: CreativeEngine
468
- ): void {
469
- cesdk.ui.insertOrderComponent(
470
- { in: 'ly.img.navigation.bar', position: 'end' },
471
- {
472
- id: 'ly.img.actions.navigationBar',
473
- children: ['ly.img.exportImage.navigationBar']
474
- }
475
- );
476
-
477
- const exportDesign = cesdk.actions.get('exportDesign');
478
-
479
- cesdk.actions.register('exportDesign', async () => {
480
- const result = this.validateDesign(engine);
481
- const hasErrors = result.errors.length > 0;
482
- const hasWarnings = result.warnings.length > 0;
483
-
484
- // Log all issues to console for debugging
485
- if (hasErrors || hasWarnings) {
486
- console.log('Validation Results:', result);
487
- }
488
-
489
- // Block export for errors
490
- if (hasErrors) {
491
- cesdk.ui.showNotification({
492
- message: `${result.errors.length} error(s) found - export blocked`,
493
- type: 'error',
494
- duration: 'long'
495
- });
390
+ return issues;
391
+ }
496
392
 
497
- // Select first problematic block
498
- const firstError = result.errors[0];
499
- if (engine.block.isValid(firstError.blockId)) {
500
- engine.block.select(firstError.blockId);
501
- }
502
- return;
503
- }
393
+ function isPlaceholderFilled(
394
+ engine: InstanceType<typeof CreativeEngine>,
395
+ blockId: number
396
+ ): boolean {
397
+ const fillId = engine.block.getFill(blockId);
398
+ if (!fillId || !engine.block.isValid(fillId)) return false;
504
399
 
505
- // Show warning but allow export
506
- if (hasWarnings) {
507
- cesdk.ui.showNotification({
508
- message: `${result.warnings.length} warning(s) found - proceeding with export`,
509
- type: 'warning',
510
- duration: 'medium'
511
- });
512
- }
400
+ const fillType = engine.block.getType(fillId);
513
401
 
514
- // Proceed with export
515
- exportDesign();
516
- });
402
+ // Check image fill - empty URI means unfilled placeholder
403
+ if (fillType === '//ly.img.ubq/fill/image') {
404
+ const imageUri = engine.block.getString(fillId, 'fill/image/imageFileURI');
405
+ return imageUri !== '' && imageUri !== undefined;
517
406
  }
407
+
408
+ // Other fill types are considered filled
409
+ return true;
518
410
  }
519
411
 
520
- export default Example;
412
+ function validateDesign(
413
+ engine: InstanceType<typeof CreativeEngine>
414
+ ): ValidationResult {
415
+ const page = engine.block.findByType('page')[0];
416
+
417
+ const outsideIssues = findOutsideBlocks(engine, page);
418
+ const protrudingIssues = findProtrudingBlocks(engine, page);
419
+ const obscuredIssues = findObscuredText(engine, page);
420
+ const placeholderIssues = findUnfilledPlaceholders(engine);
421
+
422
+ const allIssues = [
423
+ ...outsideIssues,
424
+ ...protrudingIssues,
425
+ ...obscuredIssues,
426
+ ...placeholderIssues
427
+ ];
428
+
429
+ return {
430
+ errors: allIssues.filter((i) => i.severity === 'error'),
431
+ warnings: allIssues.filter((i) => i.severity === 'warning')
432
+ };
433
+ }
521
434
  ```
522
435
 
523
- This guide demonstrates how to detect elements outside the page, find protruding content, identify obscured text, and integrate validation into the export workflow.
436
+ This guide demonstrates how to detect elements outside the page, find protruding content, identify obscured text, and integrate validation into the export workflow in headless Node.js environments.
524
437
 
525
438
  ## Getting Element Bounds
526
439
 
@@ -541,11 +454,11 @@ This returns coordinates as `[x1, y1, x2, y2]` representing the top-left and bot
541
454
  Elements completely outside the page won't appear in the exported output. We find these by checking for blocks with zero overlap with the page bounds:
542
455
 
543
456
  ```typescript highlight-find-outside-blocks
544
- const blockBounds = this.getBoundingBox(engine, blockId);
545
- const overlap = this.calculateOverlap(blockBounds, pageBounds);
457
+ const blockBounds = getBoundingBox(engine, blockId);
458
+ const overlap = calculateOverlap(blockBounds, pageBounds);
546
459
 
547
- if (overlap === 0) {
548
- // Element is completely outside the page
460
+ if (overlap === 0) {
461
+ // Element is completely outside the page
549
462
  ```
550
463
 
551
464
  These issues are categorized as errors because the content is completely missing from the export.
@@ -555,12 +468,12 @@ These issues are categorized as errors because the content is completely missing
555
468
  Elements that extend beyond the page boundaries will be partially cropped in the export. For each block, compare its bounds against the page bounds and calculate the overlap ratio:
556
469
 
557
470
  ```typescript highlight-find-protruding-blocks
558
- // Compare element bounds against page bounds
559
- const blockBounds = this.getBoundingBox(engine, blockId);
560
- const overlap = this.calculateOverlap(blockBounds, pageBounds);
471
+ // Compare element bounds against page bounds
472
+ const blockBounds = getBoundingBox(engine, blockId);
473
+ const overlap = calculateOverlap(blockBounds, pageBounds);
561
474
 
562
- // Protruding: partially inside (overlap > 0) but not fully inside (overlap < 1)
563
- if (overlap > 0 && overlap < 0.99) {
475
+ // Protruding: partially inside (overlap > 0) but not fully inside (overlap < 1)
476
+ if (overlap > 0 && overlap < 0.99) {
564
477
  ```
565
478
 
566
479
  An overlap between 0% and 100% indicates the element is partially inside the page. These issues are warnings because the content is partially visible but may not appear as intended.
@@ -577,20 +490,20 @@ const textBlocks = engine.block.findByType('text');
577
490
  The `getChildren()` method returns blocks in stacking order - elements later in the array are rendered on top. For each text block, check if any non-text element above it overlaps with its bounds:
578
491
 
579
492
  ```typescript highlight-check-text-obscured
580
- // Elements later in children array are rendered on top
581
- const blocksAbove = children.slice(textIndex + 1);
493
+ // Elements later in children array are rendered on top
494
+ const blocksAbove = children.slice(textIndex + 1);
582
495
 
583
- for (const aboveId of blocksAbove) {
584
- // Skip text blocks - they don't typically obscure other text
585
- if (engine.block.getType(aboveId) === '//ly.img.ubq/text') continue;
496
+ for (const aboveId of blocksAbove) {
497
+ // Skip text blocks - they don't typically obscure other text
498
+ if (engine.block.getType(aboveId) === '//ly.img.ubq/text') continue;
586
499
 
587
- const overlap = this.calculateOverlap(
588
- this.getBoundingBox(engine, textId),
589
- this.getBoundingBox(engine, aboveId)
590
- );
500
+ const overlap = calculateOverlap(
501
+ getBoundingBox(engine, textId),
502
+ getBoundingBox(engine, aboveId)
503
+ );
591
504
 
592
- if (overlap > 0) {
593
- // Text is obscured by element above it
505
+ if (overlap > 0) {
506
+ // Text is obscured by element above it
594
507
  ```
595
508
 
596
509
  We skip text-on-text comparisons since transparent text backgrounds don't typically obscure other text. When overlap is detected, we flag the text as potentially obscured.
@@ -606,93 +519,94 @@ const placeholders = engine.block.findAllPlaceholders();
606
519
  Then inspect each placeholder's fill to determine if content has been added. Get the fill block and check its type to determine the validation logic:
607
520
 
608
521
  ```typescript highlight-check-placeholder-filled
609
- const fillId = engine.block.getFill(blockId);
610
- if (!fillId || !engine.block.isValid(fillId)) return false;
522
+ const fillId = engine.block.getFill(blockId);
523
+ if (!fillId || !engine.block.isValid(fillId)) return false;
611
524
 
612
- const fillType = engine.block.getType(fillId);
525
+ const fillType = engine.block.getType(fillId);
613
526
 
614
- // Check image fill - empty URI means unfilled placeholder
615
- if (fillType === '//ly.img.ubq/fill/image') {
616
- const imageUri = engine.block.getString(fillId, 'fill/image/imageFileURI');
617
- return imageUri !== '' && imageUri !== undefined;
618
- }
527
+ // Check image fill - empty URI means unfilled placeholder
528
+ if (fillType === '//ly.img.ubq/fill/image') {
529
+ const imageUri = engine.block.getString(fillId, 'fill/image/imageFileURI');
530
+ return imageUri !== '' && imageUri !== undefined;
531
+ }
619
532
  ```
620
533
 
621
534
  For image placeholders, check if the `fill/image/imageFileURI` property has a value. An empty or undefined URI indicates the placeholder hasn't been filled. Unfilled placeholders are treated as errors that block export, ensuring users complete all required content before exporting.
622
535
 
623
- ## Overriding the Export Action
536
+ ## Integrating with Export
624
537
 
625
- Intercept the navigation bar export action using `cesdk.actions.get()` and `cesdk.actions.register()`. The action ID `'exportDesign'` controls the export button in the CE.SDK interface:
538
+ In headless environments, run validation before export and handle results programmatically. Errors block the export entirely, while warnings can be logged but allow the export to proceed:
626
539
 
627
- ```typescript highlight-override-export-action
628
- cesdk.actions.register('exportDesign', async () => {
629
- const result = this.validateDesign(engine);
630
- const hasErrors = result.errors.length > 0;
631
- const hasWarnings = result.warnings.length > 0;
540
+ ```typescript highlight-export-with-validation
541
+ // Validate design before export
542
+ const result = validateDesign(engine);
632
543
 
633
- // Log all issues to console for debugging
634
- if (hasErrors || hasWarnings) {
635
- console.log('Validation Results:', result);
544
+ console.log('=== Pre-Export Validation ===');
545
+
546
+ // Log all issues for debugging
547
+ if (result.errors.length > 0) {
548
+ console.error(`Found ${result.errors.length} error(s):`);
549
+ result.errors.forEach((err) =>
550
+ console.error(` - ${err.blockName}: ${err.message}`)
551
+ );
552
+ }
553
+
554
+ if (result.warnings.length > 0) {
555
+ console.warn(`Found ${result.warnings.length} warning(s):`);
556
+ result.warnings.forEach((warn) =>
557
+ console.warn(` - ${warn.blockName}: ${warn.message}`)
558
+ );
636
559
  }
637
560
 
638
561
  // Block export for errors
639
- if (hasErrors) {
640
- cesdk.ui.showNotification({
641
- message: `${result.errors.length} error(s) found - export blocked`,
642
- type: 'error',
643
- duration: 'long'
644
- });
645
-
646
- // Select first problematic block
647
- const firstError = result.errors[0];
648
- if (engine.block.isValid(firstError.blockId)) {
649
- engine.block.select(firstError.blockId);
650
- }
651
- return;
562
+ if (result.errors.length > 0) {
563
+ console.error('\nExport blocked: Fix errors before exporting');
564
+ process.exit(1);
652
565
  }
653
566
 
654
- // Show warning but allow export
655
- if (hasWarnings) {
656
- cesdk.ui.showNotification({
657
- message: `${result.warnings.length} warning(s) found - proceeding with export`,
658
- type: 'warning',
659
- duration: 'medium'
660
- });
567
+ // Allow export with warnings
568
+ if (result.warnings.length > 0) {
569
+ console.log('\nProceeding with export despite warnings...');
570
+ } else {
571
+ console.log('\nValidation passed - no issues found');
661
572
  }
662
573
 
663
- // Proceed with export
664
- exportDesign();
665
- });
574
+ // Export the design
575
+ const outputDir = './output';
576
+ if (!existsSync(outputDir)) mkdirSync(outputDir, { recursive: true });
577
+
578
+ const blob = await engine.block.export(page, { mimeType: 'image/png' });
579
+ const buffer = Buffer.from(await blob.arrayBuffer());
580
+ writeFileSync(`${outputDir}/validated-design.png`, buffer);
581
+ console.log('Export successful: output/validated-design.png');
666
582
  ```
667
583
 
668
- This override runs validation before export, shows notifications for errors or warnings, and selects the first problematic block to help users locate issues. Export proceeds only when validation passes.
584
+ When validation fails, log the issues and exit with an error code so calling systems know the export was blocked.
669
585
 
670
586
  ## API Reference
671
587
 
672
- | Method | Purpose |
673
- | --------------------------------------------- | ---------------------------------- |
674
- | `engine.block.getGlobalBoundingBoxX(id)` | Get element's global X position |
675
- | `engine.block.getGlobalBoundingBoxY(id)` | Get element's global Y position |
676
- | `engine.block.getGlobalBoundingBoxWidth(id)` | Get element's global width |
677
- | `engine.block.getGlobalBoundingBoxHeight(id)` | Get element's global height |
678
- | `engine.block.findByType(type)` | Find all blocks of a specific type |
679
- | `engine.block.getChildren(id)` | Get child blocks in stacking order |
680
- | `engine.block.getType(id)` | Get the block's type string |
681
- | `engine.block.getName(id)` | Get the block's display name |
682
- | `engine.block.isValid(id)` | Check if block exists |
683
- | `engine.block.select(id)` | Select a block in the editor |
684
- | `engine.block.findAllPlaceholders()` | Find all placeholder blocks |
685
- | `engine.block.getFill(id)` | Get the fill block |
686
- | `engine.block.getString(id, property)` | Get a string property value |
687
- | `cesdk.actions.get(actionId)` | Get an action function (browser) |
688
- | `cesdk.actions.register(actionId, fn)` | Register an action (browser) |
689
- | `cesdk.ui.showNotification(options)` | Display notification (browser) |
588
+ | Method | Purpose |
589
+ |--------|---------|
590
+ | `engine.block.getGlobalBoundingBoxX(id)` | Get element's global X position |
591
+ | `engine.block.getGlobalBoundingBoxY(id)` | Get element's global Y position |
592
+ | `engine.block.getGlobalBoundingBoxWidth(id)` | Get element's global width |
593
+ | `engine.block.getGlobalBoundingBoxHeight(id)` | Get element's global height |
594
+ | `engine.block.findByType(type)` | Find all blocks of a specific type |
595
+ | `engine.block.getChildren(id)` | Get child blocks in stacking order |
596
+ | `engine.block.getType(id)` | Get the block's type string |
597
+ | `engine.block.getName(id)` | Get the block's display name |
598
+ | `engine.block.isValid(id)` | Check if block exists |
599
+ | `engine.block.findAllPlaceholders()` | Find all placeholder blocks |
600
+ | `engine.block.getFill(id)` | Get the fill block |
601
+ | `engine.block.getString(id, property)` | Get a string property value |
602
+
603
+
690
604
 
691
605
  ---
692
606
 
693
607
  ## More Resources
694
608
 
695
- - **[Vanilla JS/TS Documentation Index](https://img.ly/docs/cesdk/js.md)** - Browse all Vanilla JS/TS documentation
609
+ - **[Node.js Documentation Index](https://img.ly/docs/cesdk/node.md)** - Browse all Node.js documentation
696
610
  - **[Complete Documentation](./llms-full.txt.md)** - Full documentation in one file (for LLMs)
697
- - **[Web Documentation](./js.md)** - Interactive documentation with examples
698
- - **[Support](mailto:support@img.ly)** - Contact IMG.LY support
611
+ - **[Web Documentation](./node.md)** - Interactive documentation with examples
612
+ - **[Support](mailto:support@img.ly)** - Contact IMG.LY support