@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,530 +1,418 @@
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) > [Create and Use Templates](./create-templates.md) > [Insert Dynamic Content](./create-templates/add-dynamic-content.md) > [Placeholders](./create-templates/add-dynamic-content/placeholders.md)
4
4
 
5
5
  ---
6
6
 
7
- Placeholders turn design blocks into drop-zones that users can swap content into while maintaining full control over layout and styling.
8
-
9
- ![Placeholders example showing various configurations of placeholder behavior, controls, and interaction modes](https://img.ly/docs/cesdk/./assets/browser.hero.webp)
7
+ Placeholders turn design blocks into drop-zones that can be programmatically populated with content while maintaining layout and styling control.
10
8
 
11
9
  > **Reading time:** 10 minutes
12
10
  >
13
11
  > **Resources:**
14
12
  >
15
13
  > - [Download examples](https://github.com/imgly/cesdk-web-examples/archive/refs/tags/release-$UBQ_VERSION$.zip)
16
- > - [View source on GitHub](https://github.com/imgly/cesdk-web-examples/tree/release-$UBQ_VERSION$/guides-create-templates-dynamic-content-placeholders-browser)
17
- > - [Open in StackBlitz](https://stackblitz.com/github/imgly/cesdk-web-examples/tree/v$UBQ_VERSION$/guides-create-templates-dynamic-content-placeholders-browser)
18
- > - [Live demo](https://img.ly/docs/cesdk/examples/guides-create-templates-dynamic-content-placeholders-browser/)
19
-
20
- ```typescript file=@cesdk_web_examples/guides-create-templates-dynamic-content-placeholders-browser/browser.ts reference-only
21
- import type { EditorPlugin, EditorPluginContext } from '@cesdk/cesdk-js';
22
-
23
- import {
24
- BlurAssetSource,
25
- ColorPaletteAssetSource,
26
- CropPresetsAssetSource,
27
- DemoAssetSources,
28
- EffectsAssetSource,
29
- FiltersAssetSource,
30
- PagePresetsAssetSource,
31
- StickerAssetSource,
32
- TextAssetSource,
33
- TextComponentAssetSource,
34
- TypefaceAssetSource,
35
- UploadAssetSources,
36
- VectorShapeAssetSource
37
- } from '@cesdk/cesdk-js/plugins';
38
- import { DesignEditorConfig } from './design-editor/plugin';
39
- import packageJson from './package.json';
14
+ >
15
+ > - [View source on GitHub](https://github.com/imgly/cesdk-web-examples/tree/release-$UBQ_VERSION$/guides-create-templates-dynamic-content-placeholders-server-js)
16
+ >
17
+ > - [Open in StackBlitz](https://stackblitz.com/github/imgly/cesdk-web-examples/tree/v$UBQ_VERSION$/guides-create-templates-dynamic-content-placeholders-server-js)
18
+
19
+ Placeholders enable content replacement while preserving design constraints. They support both graphic blocks (images/videos) and text blocks, with different configuration approaches for each type.
20
+
21
+ ```typescript file=@cesdk_web_examples/guides-create-templates-dynamic-content-placeholders-server-js/server-js.ts reference-only
22
+ import CreativeEngine from '@cesdk/node';
23
+ import { writeFileSync, mkdirSync, existsSync } from 'fs';
40
24
 
41
25
  /**
42
- * CE.SDK Plugin: Dynamic Content Placeholders
26
+ * CE.SDK Server Guide: Dynamic Content Placeholders
43
27
  *
44
28
  * This example demonstrates three different placeholder configurations:
45
- * 1. All placeholder controls enabled (all scopes + behavior + controls)
46
- * 2. Fill properties only (fill scopes + behavior + controls)
29
+ * 1. All placeholder controls enabled (all scopes + behavior)
30
+ * 2. Fill properties only (fill scopes + behavior)
47
31
  * 3. No placeholder features (default state)
48
32
  */
49
- class Example implements EditorPlugin {
50
- name = packageJson.name;
51
-
52
- version = packageJson.version;
53
-
54
- async initialize({ cesdk }: EditorPluginContext): Promise<void> {
55
- if (!cesdk) {
56
- throw new Error('CE.SDK instance is required for this plugin');
57
- }
58
33
 
59
- await cesdk.addPlugin(new DesignEditorConfig());
60
-
61
- // Add asset source plugins
62
- await cesdk.addPlugin(new BlurAssetSource());
63
- await cesdk.addPlugin(new ColorPaletteAssetSource());
64
- await cesdk.addPlugin(new CropPresetsAssetSource());
65
- await cesdk.addPlugin(
66
- new UploadAssetSources({ include: ['ly.img.image.upload'] })
67
- );
68
- await cesdk.addPlugin(
69
- new DemoAssetSources({
70
- include: [
71
- 'ly.img.templates.blank.*',
72
- 'ly.img.templates.presentation.*',
73
- 'ly.img.templates.print.*',
74
- 'ly.img.templates.social.*',
75
- 'ly.img.image.*'
76
- ]
77
- })
78
- );
79
- await cesdk.addPlugin(new EffectsAssetSource());
80
- await cesdk.addPlugin(new FiltersAssetSource());
81
- await cesdk.addPlugin(new PagePresetsAssetSource());
82
- await cesdk.addPlugin(new StickerAssetSource());
83
- await cesdk.addPlugin(new TextAssetSource());
84
- await cesdk.addPlugin(new TextComponentAssetSource());
85
- await cesdk.addPlugin(new TypefaceAssetSource());
86
- await cesdk.addPlugin(new VectorShapeAssetSource());
87
-
88
- await cesdk.actions.run('scene.create', {
89
- page: { width: 1200, height: 800, unit: 'Pixel' }
90
- });
91
-
92
- const engine = cesdk.engine;
93
- engine.editor.setRole('Adopter');
94
-
95
- // Get the page
96
- const pages = engine.block.findByType('page');
97
- const page = pages[0];
98
- if (!page) {
99
- throw new Error('No page found');
100
- }
101
-
102
- // Set page dimensions for horizontal layout
103
- const pageWidth = engine.block.getWidth(page);
104
- const pageHeight = engine.block.getHeight(page);
105
-
106
- // Set page background to light gray
107
- const pageFill = engine.block.getFill(page);
108
- engine.block.setColor(pageFill, 'fill/color/value', {
109
- r: 0.95,
110
- g: 0.95,
111
- b: 0.95,
112
- a: 1.0
113
- });
114
-
115
- // Layout configuration for 3 blocks horizontally
116
- const blockWidth = 300;
117
- const blockHeight = 300;
118
- const spacing = 50;
119
- const startX = (pageWidth - blockWidth * 3 - spacing * 2) / 2;
120
- const blockY = (pageHeight - blockHeight) / 2 + 40; // Offset for labels
121
- const labelY = blockY - 50;
122
-
123
- // Sample images
124
- const imageUri1 = 'https://img.ly/static/ubq_samples/sample_1.jpg';
125
- const imageUri2 = 'https://img.ly/static/ubq_samples/sample_2.jpg';
126
- const imageUri3 = 'https://img.ly/static/ubq_samples/sample_3.jpg';
127
-
128
- // Define ALL available scopes for reference
129
- const allScopes: Array<
130
- | 'text/edit'
131
- | 'text/character'
132
- | 'fill/change'
133
- | 'fill/changeType'
134
- | 'stroke/change'
135
- | 'shape/change'
136
- | 'layer/move'
137
- | 'layer/resize'
138
- | 'layer/rotate'
139
- | 'layer/flip'
140
- | 'layer/crop'
141
- | 'layer/opacity'
142
- | 'layer/blendMode'
143
- | 'layer/visibility'
144
- | 'layer/clipping'
145
- | 'appearance/adjustments'
146
- | 'appearance/filter'
147
- | 'appearance/effect'
148
- | 'appearance/blur'
149
- | 'appearance/shadow'
150
- | 'appearance/animation'
151
- | 'lifecycle/destroy'
152
- | 'lifecycle/duplicate'
153
- | 'editor/add'
154
- | 'editor/select'
155
- > = [
156
- 'text/edit',
157
- 'text/character',
158
- 'fill/change',
159
- 'fill/changeType',
160
- 'stroke/change',
161
- 'shape/change',
162
- 'layer/move',
163
- 'layer/resize',
164
- 'layer/rotate',
165
- 'layer/flip',
166
- 'layer/crop',
167
- 'layer/opacity',
168
- 'layer/blendMode',
169
- 'layer/visibility',
170
- 'layer/clipping',
171
- 'appearance/adjustments',
172
- 'appearance/filter',
173
- 'appearance/effect',
174
- 'appearance/blur',
175
- 'appearance/shadow',
176
- 'appearance/animation',
177
- 'lifecycle/destroy',
178
- 'lifecycle/duplicate',
179
- 'editor/add',
180
- 'editor/select'
181
- ];
182
-
183
- // Block 1: All Placeholder Controls Enabled
184
- const block1 = await engine.block.addImage(imageUri1, {
185
- size: {
186
- width: blockWidth,
187
- height: blockHeight
188
- }
189
- });
190
- engine.block.appendChild(page, block1);
191
- engine.block.setPositionX(block1, startX);
192
- engine.block.setPositionY(block1, blockY);
193
-
194
- // Step 1: Explicitly disable ALL scopes first
195
- allScopes.forEach((scope) => {
196
- engine.block.setScopeEnabled(block1, scope, false);
197
- });
198
-
199
- // Step 2: Enable specific scopes for full placeholder functionality
200
- // General/Layer options
201
- engine.block.setScopeEnabled(block1, 'layer/opacity', true);
202
- engine.block.setScopeEnabled(block1, 'layer/blendMode', true);
203
- engine.block.setScopeEnabled(block1, 'lifecycle/duplicate', true);
204
- engine.block.setScopeEnabled(block1, 'lifecycle/destroy', true);
205
-
206
- // Arrange scopes
207
- engine.block.setScopeEnabled(block1, 'layer/move', true);
208
- engine.block.setScopeEnabled(block1, 'layer/resize', true);
209
- engine.block.setScopeEnabled(block1, 'layer/rotate', true);
210
- engine.block.setScopeEnabled(block1, 'layer/flip', true);
211
-
212
- // Fill scopes (for image replacement and cropping)
213
- engine.block.setScopeEnabled(block1, 'fill/change', true);
214
- engine.block.setScopeEnabled(block1, 'fill/changeType', true);
215
- engine.block.setScopeEnabled(block1, 'layer/crop', true);
216
-
217
- // Appearance scopes
218
- engine.block.setScopeEnabled(block1, 'appearance/adjustments', true);
219
- engine.block.setScopeEnabled(block1, 'appearance/filter', true);
220
- engine.block.setScopeEnabled(block1, 'appearance/effect', true);
221
- engine.block.setScopeEnabled(block1, 'appearance/blur', true);
222
- engine.block.setScopeEnabled(block1, 'appearance/shadow', true);
223
- engine.block.setScopeEnabled(block1, 'appearance/animation', true);
224
- engine.block.setScopeEnabled(block1, 'editor/select', true);
225
-
226
- // Step 3: Enable placeholder behavior ("Act as a placeholder")
227
- // This makes the block interactive in Adopter mode
228
- engine.block.setPlaceholderEnabled(block1, true);
229
-
230
- // Step 4: Check if block/fill supports placeholder features
231
- const fill1 = engine.block.getFill(block1);
232
- const supportsBehavior = engine.block.supportsPlaceholderBehavior(fill1);
233
- const supportsControls = engine.block.supportsPlaceholderControls(block1);
234
-
235
- // Enable placeholder behavior on the fill (for graphic blocks)
236
- if (supportsBehavior) {
237
- engine.block.setPlaceholderBehaviorEnabled(fill1, true);
238
- }
239
-
240
- // Enable placeholder overlay pattern
241
- if (supportsControls) {
242
- engine.block.setPlaceholderControlsOverlayEnabled(block1, true);
243
- }
34
+ // Initialize CE.SDK engine in headless mode
35
+ const engine = await CreativeEngine.init();
244
36
 
245
- // Enable placeholder button
246
- if (supportsControls) {
247
- engine.block.setPlaceholderControlsButtonEnabled(block1, true);
248
- }
37
+ try {
38
+ // Create a design scene
39
+ engine.scene.create('VerticalStack', {
40
+ page: { size: { width: 1200, height: 800 } },
41
+ });
249
42
 
250
- // Complete "Act as Placeholder" setup
251
- const fillForConfig = engine.block.getFill(block1);
252
- if (engine.block.supportsPlaceholderBehavior(fillForConfig)) {
253
- engine.block.setPlaceholderBehaviorEnabled(fillForConfig, true);
254
- }
255
- if (supportsControls) {
256
- engine.block.setPlaceholderControlsOverlayEnabled(block1, true);
257
- engine.block.setPlaceholderControlsButtonEnabled(block1, true);
258
- }
43
+ const pages = engine.block.findByType('page');
44
+ const page = pages[0];
45
+ if (!page) {
46
+ throw new Error('No page found');
47
+ }
259
48
 
260
- // Block 2: Fill Properties Only
261
- const block2 = await engine.block.addImage(imageUri2, {
262
- size: {
263
- width: blockWidth,
264
- height: blockHeight
265
- }
266
- });
267
- engine.block.appendChild(page, block2);
268
- engine.block.setPositionX(block2, startX + blockWidth + spacing);
269
- engine.block.setPositionY(block2, blockY);
270
-
271
- // Batch operation: Apply settings to multiple blocks
272
- const graphicBlocks = [block1, block2];
273
- graphicBlocks.forEach((block) => {
274
- // Enable placeholder for each block
275
- engine.block.setPlaceholderEnabled(block, true);
276
-
277
- const fill = engine.block.getFill(block);
278
- if (engine.block.supportsPlaceholderBehavior(fill)) {
279
- engine.block.setPlaceholderBehaviorEnabled(fill, true);
280
- }
281
- });
282
-
283
- // Step 1: Explicitly disable ALL scopes first
284
- allScopes.forEach((scope) => {
285
- engine.block.setScopeEnabled(block2, scope, false);
286
- });
287
-
288
- // Step 2: Enable ONLY fill-related scopes
289
- engine.block.setScopeEnabled(block2, 'fill/change', true);
290
- engine.block.setScopeEnabled(block2, 'fill/changeType', true);
291
- engine.block.setScopeEnabled(block2, 'layer/crop', true);
292
- engine.block.setScopeEnabled(block2, 'editor/select', true);
293
-
294
- // Step 3: Enable placeholder behavior ("Act as a placeholder")
295
- engine.block.setPlaceholderEnabled(block2, true);
296
-
297
- // Step 4: Enable fill-based placeholder behavior and visual controls
298
- const fill2 = engine.block.getFill(block2);
299
- if (engine.block.supportsPlaceholderBehavior(fill2)) {
300
- engine.block.setPlaceholderBehaviorEnabled(fill2, true);
301
- }
49
+ // Get page dimensions
50
+ const pageWidth = engine.block.getWidth(page);
51
+ const pageHeight = engine.block.getHeight(page);
52
+
53
+ // Layout configuration for 3 blocks horizontally
54
+ const blockWidth = 300;
55
+ const blockHeight = 300;
56
+ const spacing = 50;
57
+ const startX = (pageWidth - blockWidth * 3 - spacing * 2) / 2;
58
+ const blockY = (pageHeight - blockHeight) / 2 + 40;
59
+ const labelY = blockY - 50;
60
+
61
+ // Sample images
62
+ const imageUri1 = 'https://img.ly/static/ubq_samples/sample_1.jpg';
63
+ const imageUri2 = 'https://img.ly/static/ubq_samples/sample_2.jpg';
64
+ const imageUri3 = 'https://img.ly/static/ubq_samples/sample_3.jpg';
65
+
66
+ // Define ALL available scopes for reference
67
+ const allScopes: Array<
68
+ | 'text/edit'
69
+ | 'text/character'
70
+ | 'fill/change'
71
+ | 'fill/changeType'
72
+ | 'stroke/change'
73
+ | 'shape/change'
74
+ | 'layer/move'
75
+ | 'layer/resize'
76
+ | 'layer/rotate'
77
+ | 'layer/flip'
78
+ | 'layer/crop'
79
+ | 'layer/opacity'
80
+ | 'layer/blendMode'
81
+ | 'layer/visibility'
82
+ | 'layer/clipping'
83
+ | 'appearance/adjustments'
84
+ | 'appearance/filter'
85
+ | 'appearance/effect'
86
+ | 'appearance/blur'
87
+ | 'appearance/shadow'
88
+ | 'appearance/animation'
89
+ | 'lifecycle/destroy'
90
+ | 'lifecycle/duplicate'
91
+ | 'editor/add'
92
+ | 'editor/select'
93
+ > = [
94
+ 'text/edit',
95
+ 'text/character',
96
+ 'fill/change',
97
+ 'fill/changeType',
98
+ 'stroke/change',
99
+ 'shape/change',
100
+ 'layer/move',
101
+ 'layer/resize',
102
+ 'layer/rotate',
103
+ 'layer/flip',
104
+ 'layer/crop',
105
+ 'layer/opacity',
106
+ 'layer/blendMode',
107
+ 'layer/visibility',
108
+ 'layer/clipping',
109
+ 'appearance/adjustments',
110
+ 'appearance/filter',
111
+ 'appearance/effect',
112
+ 'appearance/blur',
113
+ 'appearance/shadow',
114
+ 'appearance/animation',
115
+ 'lifecycle/destroy',
116
+ 'lifecycle/duplicate',
117
+ 'editor/add',
118
+ 'editor/select',
119
+ ];
120
+
121
+ // Block 1: All Placeholder Controls Enabled
122
+ const block1 = await engine.block.addImage(imageUri1, {
123
+ size: { width: blockWidth, height: blockHeight },
124
+ });
125
+ engine.block.appendChild(page, block1);
126
+ engine.block.setPositionX(block1, startX);
127
+ engine.block.setPositionY(block1, blockY);
128
+
129
+ // Step 1: Explicitly disable ALL scopes first
130
+ allScopes.forEach((scope) => {
131
+ engine.block.setScopeEnabled(block1, scope, false);
132
+ });
133
+
134
+ // Step 2: Enable specific scopes for full placeholder functionality
135
+ // General/Layer options
136
+ engine.block.setScopeEnabled(block1, 'layer/opacity', true);
137
+ engine.block.setScopeEnabled(block1, 'layer/blendMode', true);
138
+ engine.block.setScopeEnabled(block1, 'lifecycle/duplicate', true);
139
+ engine.block.setScopeEnabled(block1, 'lifecycle/destroy', true);
140
+
141
+ // Arrange scopes
142
+ engine.block.setScopeEnabled(block1, 'layer/move', true);
143
+ engine.block.setScopeEnabled(block1, 'layer/resize', true);
144
+ engine.block.setScopeEnabled(block1, 'layer/rotate', true);
145
+ engine.block.setScopeEnabled(block1, 'layer/flip', true);
146
+
147
+ // Fill scopes (for image replacement and cropping)
148
+ engine.block.setScopeEnabled(block1, 'fill/change', true);
149
+ engine.block.setScopeEnabled(block1, 'fill/changeType', true);
150
+ engine.block.setScopeEnabled(block1, 'layer/crop', true);
151
+
152
+ // Appearance scopes
153
+ engine.block.setScopeEnabled(block1, 'appearance/adjustments', true);
154
+ engine.block.setScopeEnabled(block1, 'appearance/filter', true);
155
+ engine.block.setScopeEnabled(block1, 'appearance/effect', true);
156
+ engine.block.setScopeEnabled(block1, 'appearance/blur', true);
157
+ engine.block.setScopeEnabled(block1, 'appearance/shadow', true);
158
+ engine.block.setScopeEnabled(block1, 'appearance/animation', true);
159
+ engine.block.setScopeEnabled(block1, 'editor/select', true);
160
+
161
+ // Step 3: Enable placeholder behavior ("Act as a placeholder")
162
+ // This makes the block interactive in Adopter mode
163
+ engine.block.setPlaceholderEnabled(block1, true);
164
+
165
+ // Step 4: Check if block/fill supports placeholder features
166
+ const fill1 = engine.block.getFill(block1);
167
+ const supportsBehavior = engine.block.supportsPlaceholderBehavior(fill1);
168
+
169
+ // Enable placeholder behavior on the fill (for graphic blocks)
170
+ if (supportsBehavior) {
171
+ engine.block.setPlaceholderBehaviorEnabled(fill1, true);
172
+ }
302
173
 
303
- if (engine.block.supportsPlaceholderControls(block2)) {
304
- engine.block.setPlaceholderControlsOverlayEnabled(block2, true);
305
- engine.block.setPlaceholderControlsButtonEnabled(block2, true);
174
+ // Block 2: Fill Properties Only
175
+ const block2 = await engine.block.addImage(imageUri2, {
176
+ size: { width: blockWidth, height: blockHeight },
177
+ });
178
+ engine.block.appendChild(page, block2);
179
+ engine.block.setPositionX(block2, startX + blockWidth + spacing);
180
+ engine.block.setPositionY(block2, blockY);
181
+
182
+ // Batch operation: Apply settings to multiple blocks
183
+ const graphicBlocks = [block1, block2];
184
+ graphicBlocks.forEach((block) => {
185
+ // Enable placeholder for each block
186
+ engine.block.setPlaceholderEnabled(block, true);
187
+
188
+ const fill = engine.block.getFill(block);
189
+ if (engine.block.supportsPlaceholderBehavior(fill)) {
190
+ engine.block.setPlaceholderBehaviorEnabled(fill, true);
306
191
  }
192
+ });
193
+
194
+ // Step 1: Explicitly disable ALL scopes first
195
+ allScopes.forEach((scope) => {
196
+ engine.block.setScopeEnabled(block2, scope, false);
197
+ });
198
+
199
+ // Step 2: Enable ONLY fill-related scopes
200
+ engine.block.setScopeEnabled(block2, 'fill/change', true);
201
+ engine.block.setScopeEnabled(block2, 'fill/changeType', true);
202
+ engine.block.setScopeEnabled(block2, 'layer/crop', true);
203
+ engine.block.setScopeEnabled(block2, 'editor/select', true);
204
+
205
+ // Step 3: Enable placeholder behavior ("Act as a placeholder")
206
+ engine.block.setPlaceholderEnabled(block2, true);
207
+
208
+ // Step 4: Enable fill-based placeholder behavior
209
+ const fill2 = engine.block.getFill(block2);
210
+ if (engine.block.supportsPlaceholderBehavior(fill2)) {
211
+ engine.block.setPlaceholderBehaviorEnabled(fill2, true);
212
+ }
307
213
 
308
- // Block 3: No Placeholder Features (Default State)
309
- const block3 = await engine.block.addImage(imageUri3, {
310
- size: {
311
- width: blockWidth,
312
- height: blockHeight
313
- }
314
- });
315
- engine.block.appendChild(page, block3);
316
- engine.block.setPositionX(block3, startX + (blockWidth + spacing) * 2);
317
- engine.block.setPositionY(block3, blockY);
318
-
319
- // Explicitly disable ALL scopes to ensure default state
320
- allScopes.forEach((scope) => {
321
- engine.block.setScopeEnabled(block3, scope, false);
322
- });
323
-
324
- // No placeholder behavior enabled - this block remains non-interactive
325
-
326
- // Add descriptive labels above each block
327
- const labelConfig = {
328
- height: 40,
329
- fontSize: 34,
330
- fontUri:
331
- 'https://cdn.img.ly/packages/imgly/cesdk-js/latest/assets/extensions/ly.img.cesdk.fonts/fonts/Roboto/Roboto-Bold.ttf',
332
- fontFamily: 'Roboto'
333
- };
334
-
335
- // Label for Block 1
336
- const label1 = engine.block.create('text');
337
- engine.block.appendChild(page, label1);
338
- engine.block.setPositionX(label1, startX);
339
- engine.block.setPositionY(label1, labelY);
340
- engine.block.setWidth(label1, blockWidth);
341
- engine.block.setHeight(label1, labelConfig.height);
342
- engine.block.replaceText(label1, 'All Controls');
343
- engine.block.setTextColor(label1, {
344
- r: 0.2,
345
- g: 0.2,
346
- b: 0.2,
347
- a: 1.0
348
- });
349
- engine.block.setFont(label1, labelConfig.fontUri, {
350
- name: labelConfig.fontFamily,
351
- fonts: [
352
- {
353
- uri: labelConfig.fontUri,
354
- subFamily: 'Bold'
355
- }
356
- ]
357
- });
358
- engine.block.setFloat(label1, 'text/fontSize', labelConfig.fontSize);
359
- engine.block.setEnum(label1, 'text/horizontalAlignment', 'Center');
360
-
361
- // Label for Block 2
362
- const label2 = engine.block.create('text');
363
- engine.block.appendChild(page, label2);
364
- engine.block.setPositionX(label2, startX + blockWidth + spacing);
365
- engine.block.setPositionY(label2, labelY);
366
- engine.block.setWidth(label2, blockWidth);
367
- engine.block.setHeight(label2, labelConfig.height);
368
- engine.block.replaceText(label2, 'Fill Only');
369
- engine.block.setTextColor(label2, {
370
- r: 0.2,
371
- g: 0.2,
372
- b: 0.2,
373
- a: 1.0
374
- });
375
- engine.block.setFont(label2, labelConfig.fontUri, {
376
- name: labelConfig.fontFamily,
377
- fonts: [
378
- {
379
- uri: labelConfig.fontUri,
380
- subFamily: 'Bold'
381
- }
382
- ]
383
- });
384
- engine.block.setFloat(label2, 'text/fontSize', labelConfig.fontSize);
385
- engine.block.setEnum(label2, 'text/horizontalAlignment', 'Center');
386
-
387
- // Label for Block 3
388
- const label3 = engine.block.create('text');
389
- engine.block.appendChild(page, label3);
390
- engine.block.setPositionX(label3, startX + (blockWidth + spacing) * 2);
391
- engine.block.setPositionY(label3, labelY);
392
- engine.block.setWidth(label3, blockWidth);
393
- engine.block.setHeight(label3, labelConfig.height);
394
- engine.block.replaceText(label3, 'Disabled');
395
- engine.block.setTextColor(label3, {
396
- r: 0.2,
397
- g: 0.2,
398
- b: 0.2,
399
- a: 1.0
400
- });
401
- engine.block.setFont(label3, labelConfig.fontUri, {
402
- name: labelConfig.fontFamily,
403
- fonts: [
404
- {
405
- uri: labelConfig.fontUri,
406
- subFamily: 'Bold'
407
- }
408
- ]
409
- });
410
- engine.block.setFloat(label3, 'text/fontSize', labelConfig.fontSize);
411
- engine.block.setEnum(label3, 'text/horizontalAlignment', 'Center');
412
-
413
- // Verify configurations
414
- // eslint-disable-next-line no-console
415
- console.log('Block 1 - All Controls:');
416
- // eslint-disable-next-line no-console
417
- console.log(
418
- ' Placeholder enabled:',
419
- engine.block.isPlaceholderEnabled(block1)
420
- );
421
- // eslint-disable-next-line no-console
422
- console.log(' Scopes enabled:');
423
- // eslint-disable-next-line no-console
424
- console.log(
425
- ' - layer/move:',
426
- engine.block.isScopeEnabled(block1, 'layer/move')
427
- );
428
- // eslint-disable-next-line no-console
429
- console.log(
430
- ' - layer/resize:',
431
- engine.block.isScopeEnabled(block1, 'layer/resize')
432
- );
433
- // eslint-disable-next-line no-console
434
- console.log(
435
- ' - fill/change:',
436
- engine.block.isScopeEnabled(block1, 'fill/change')
437
- );
438
- // eslint-disable-next-line no-console
439
- console.log(
440
- ' - layer/crop:',
441
- engine.block.isScopeEnabled(block1, 'layer/crop')
442
- );
443
- // eslint-disable-next-line no-console
444
- console.log(
445
- ' - appearance/adjustments:',
446
- engine.block.isScopeEnabled(block1, 'appearance/adjustments')
447
- );
448
-
449
- // eslint-disable-next-line no-console
450
- console.log('\nBlock 2 - Fill Only:');
451
- // eslint-disable-next-line no-console
452
- console.log(
453
- ' Placeholder enabled:',
454
- engine.block.isPlaceholderEnabled(block2)
455
- );
456
- // eslint-disable-next-line no-console
457
- console.log(' Scopes enabled:');
458
- // eslint-disable-next-line no-console
459
- console.log(
460
- ' - layer/move:',
461
- engine.block.isScopeEnabled(block2, 'layer/move')
462
- );
463
- // eslint-disable-next-line no-console
464
- console.log(
465
- ' - fill/change:',
466
- engine.block.isScopeEnabled(block2, 'fill/change')
467
- );
468
- // eslint-disable-next-line no-console
469
- console.log(
470
- ' - fill/changeType:',
471
- engine.block.isScopeEnabled(block2, 'fill/changeType')
472
- );
473
- // eslint-disable-next-line no-console
474
- console.log(
475
- ' - layer/crop:',
476
- engine.block.isScopeEnabled(block2, 'layer/crop')
477
- );
478
-
479
- // eslint-disable-next-line no-console
480
- console.log('\nBlock 3 - Disabled:');
481
- // eslint-disable-next-line no-console
482
- console.log(
483
- ' Placeholder enabled:',
484
- engine.block.isPlaceholderEnabled(block3)
485
- );
486
- // eslint-disable-next-line no-console
487
- console.log(' Scopes enabled:');
488
- // eslint-disable-next-line no-console
489
- console.log(
490
- ' - layer/move:',
491
- engine.block.isScopeEnabled(block3, 'layer/move')
492
- );
493
- // eslint-disable-next-line no-console
494
- console.log(
495
- ' - fill/change:',
496
- engine.block.isScopeEnabled(block3, 'fill/change')
497
- );
498
-
499
- // eslint-disable-next-line no-console
500
- console.log('\nPlaceholder configurations initialized successfully');
214
+ // Block 3: No Placeholder Features (Default State)
215
+ const block3 = await engine.block.addImage(imageUri3, {
216
+ size: { width: blockWidth, height: blockHeight },
217
+ });
218
+ engine.block.appendChild(page, block3);
219
+ engine.block.setPositionX(block3, startX + (blockWidth + spacing) * 2);
220
+ engine.block.setPositionY(block3, blockY);
221
+
222
+ // Explicitly disable ALL scopes to ensure default state
223
+ allScopes.forEach((scope) => {
224
+ engine.block.setScopeEnabled(block3, scope, false);
225
+ });
226
+
227
+ // No placeholder behavior enabled - this block remains non-interactive
228
+
229
+ // Add descriptive labels above each block
230
+ const labelConfig = {
231
+ baseURL: process.env.IMGLY_LOCAL_ASSETS_URL,
232
+ height: 40,
233
+ fontSize: 34,
234
+ fontUri:
235
+ 'https://cdn.img.ly/packages/imgly/cesdk-js/latest/assets/extensions/ly.img.cesdk.fonts/fonts/Roboto/Roboto-Bold.ttf',
236
+ fontFamily: 'Roboto',
237
+ };
238
+
239
+ // Label for Block 1
240
+ const label1 = engine.block.create('text');
241
+ engine.block.appendChild(page, label1);
242
+ engine.block.setPositionX(label1, startX);
243
+ engine.block.setPositionY(label1, labelY);
244
+ engine.block.setWidth(label1, blockWidth);
245
+ engine.block.setHeight(label1, labelConfig.height);
246
+ engine.block.replaceText(label1, 'All Controls');
247
+ engine.block.setTextColor(label1, { r: 0.2, g: 0.2, b: 0.2, a: 1.0 });
248
+ engine.block.setFont(label1, labelConfig.fontUri, {
249
+ name: labelConfig.fontFamily,
250
+ fonts: [{ uri: labelConfig.fontUri, subFamily: 'Bold' }],
251
+ });
252
+ engine.block.setFloat(label1, 'text/fontSize', labelConfig.fontSize);
253
+ engine.block.setEnum(label1, 'text/horizontalAlignment', 'Center');
254
+
255
+ // Label for Block 2
256
+ const label2 = engine.block.create('text');
257
+ engine.block.appendChild(page, label2);
258
+ engine.block.setPositionX(label2, startX + blockWidth + spacing);
259
+ engine.block.setPositionY(label2, labelY);
260
+ engine.block.setWidth(label2, blockWidth);
261
+ engine.block.setHeight(label2, labelConfig.height);
262
+ engine.block.replaceText(label2, 'Fill Only');
263
+ engine.block.setTextColor(label2, { r: 0.2, g: 0.2, b: 0.2, a: 1.0 });
264
+ engine.block.setFont(label2, labelConfig.fontUri, {
265
+ name: labelConfig.fontFamily,
266
+ fonts: [{ uri: labelConfig.fontUri, subFamily: 'Bold' }],
267
+ });
268
+ engine.block.setFloat(label2, 'text/fontSize', labelConfig.fontSize);
269
+ engine.block.setEnum(label2, 'text/horizontalAlignment', 'Center');
270
+
271
+ // Label for Block 3
272
+ const label3 = engine.block.create('text');
273
+ engine.block.appendChild(page, label3);
274
+ engine.block.setPositionX(label3, startX + (blockWidth + spacing) * 2);
275
+ engine.block.setPositionY(label3, labelY);
276
+ engine.block.setWidth(label3, blockWidth);
277
+ engine.block.setHeight(label3, labelConfig.height);
278
+ engine.block.replaceText(label3, 'Disabled');
279
+ engine.block.setTextColor(label3, { r: 0.2, g: 0.2, b: 0.2, a: 1.0 });
280
+ engine.block.setFont(label3, labelConfig.fontUri, {
281
+ name: labelConfig.fontFamily,
282
+ fonts: [{ uri: labelConfig.fontUri, subFamily: 'Bold' }],
283
+ });
284
+ engine.block.setFloat(label3, 'text/fontSize', labelConfig.fontSize);
285
+ engine.block.setEnum(label3, 'text/horizontalAlignment', 'Center');
286
+
287
+ // Verify configurations
288
+ // eslint-disable-next-line no-console
289
+ console.log('Block 1 - All Controls:');
290
+ // eslint-disable-next-line no-console
291
+ console.log(
292
+ ' Placeholder enabled:',
293
+ engine.block.isPlaceholderEnabled(block1)
294
+ );
295
+ // eslint-disable-next-line no-console
296
+ console.log(' Scopes enabled:');
297
+ // eslint-disable-next-line no-console
298
+ console.log(
299
+ ' - layer/move:',
300
+ engine.block.isScopeEnabled(block1, 'layer/move')
301
+ );
302
+ // eslint-disable-next-line no-console
303
+ console.log(
304
+ ' - layer/resize:',
305
+ engine.block.isScopeEnabled(block1, 'layer/resize')
306
+ );
307
+ // eslint-disable-next-line no-console
308
+ console.log(
309
+ ' - fill/change:',
310
+ engine.block.isScopeEnabled(block1, 'fill/change')
311
+ );
312
+ // eslint-disable-next-line no-console
313
+ console.log(
314
+ ' - layer/crop:',
315
+ engine.block.isScopeEnabled(block1, 'layer/crop')
316
+ );
317
+ // eslint-disable-next-line no-console
318
+ console.log(
319
+ ' - appearance/adjustments:',
320
+ engine.block.isScopeEnabled(block1, 'appearance/adjustments')
321
+ );
322
+
323
+ // eslint-disable-next-line no-console
324
+ console.log('\nBlock 2 - Fill Only:');
325
+ // eslint-disable-next-line no-console
326
+ console.log(
327
+ ' Placeholder enabled:',
328
+ engine.block.isPlaceholderEnabled(block2)
329
+ );
330
+ // eslint-disable-next-line no-console
331
+ console.log(' Scopes enabled:');
332
+ // eslint-disable-next-line no-console
333
+ console.log(
334
+ ' - layer/move:',
335
+ engine.block.isScopeEnabled(block2, 'layer/move')
336
+ );
337
+ // eslint-disable-next-line no-console
338
+ console.log(
339
+ ' - fill/change:',
340
+ engine.block.isScopeEnabled(block2, 'fill/change')
341
+ );
342
+ // eslint-disable-next-line no-console
343
+ console.log(
344
+ ' - fill/changeType:',
345
+ engine.block.isScopeEnabled(block2, 'fill/changeType')
346
+ );
347
+ // eslint-disable-next-line no-console
348
+ console.log(
349
+ ' - layer/crop:',
350
+ engine.block.isScopeEnabled(block2, 'layer/crop')
351
+ );
352
+
353
+ // eslint-disable-next-line no-console
354
+ console.log('\nBlock 3 - Disabled:');
355
+ // eslint-disable-next-line no-console
356
+ console.log(
357
+ ' Placeholder enabled:',
358
+ engine.block.isPlaceholderEnabled(block3)
359
+ );
360
+ // eslint-disable-next-line no-console
361
+ console.log(' Scopes enabled:');
362
+ // eslint-disable-next-line no-console
363
+ console.log(
364
+ ' - layer/move:',
365
+ engine.block.isScopeEnabled(block3, 'layer/move')
366
+ );
367
+ // eslint-disable-next-line no-console
368
+ console.log(
369
+ ' - fill/change:',
370
+ engine.block.isScopeEnabled(block3, 'fill/change')
371
+ );
372
+
373
+ // Export the configured template
374
+ const outputDir = './output';
375
+ if (!existsSync(outputDir)) {
376
+ mkdirSync(outputDir, { recursive: true });
501
377
  }
502
- }
503
378
 
504
- export default Example;
379
+ // Export the template as a scene file for later use
380
+ const sceneBlob = await engine.scene.saveToArchive();
381
+ const sceneBuffer = Buffer.from(await sceneBlob.arrayBuffer());
382
+ writeFileSync(`${outputDir}/placeholders-template.scene`, sceneBuffer);
383
+
384
+ // Also export a visual preview
385
+ const blob = await engine.block.export(page, { mimeType: 'image/png' });
386
+ const buffer = Buffer.from(await blob.arrayBuffer());
387
+ writeFileSync(`${outputDir}/placeholders-result.png`, buffer);
388
+
389
+ // eslint-disable-next-line no-console
390
+ console.log('\n✓ Exported template to output/placeholders-template.scene');
391
+ // eslint-disable-next-line no-console
392
+ console.log('✓ Exported preview to output/placeholders-result.png');
393
+ // eslint-disable-next-line no-console
394
+ console.log('Placeholder configurations initialized successfully');
395
+ } finally {
396
+ // Always dispose the engine to free resources
397
+ engine.dispose();
398
+ }
505
399
  ```
506
400
 
507
- This guide covers placeholder fundamentals, checking support, enabling behavior, and configuring visual controls for graphic and text blocks.
401
+ This guide covers placeholder fundamentals, checking support, enabling behavior, and configuring placeholders for graphic and text blocks programmatically.
508
402
 
509
403
  ## Placeholder Fundamentals
510
404
 
511
- Placeholders convert design blocks into interactive drop-zones where users can swap content while maintaining layout and styling control.
512
-
513
- ### Two Distinct Features
514
-
515
- **Placeholder behavior** enables drag-and-drop replacement and exposes scope checks for content validation.
516
-
517
- **Placeholder controls** provide visual affordances: an overlay pattern and a "Replace" button for guided interaction.
405
+ Placeholders convert design blocks into interactive drop-zones where content can be programmatically replaced while maintaining layout and styling control.
518
406
 
519
407
  ### Block-Level vs Fill-Level Behavior
520
408
 
521
409
  The key distinction in placeholder implementation depends on block type:
522
410
 
523
- **For graphic blocks** (images/videos): Placeholder behavior is enabled on the **fill**, while controls are enabled on the **block**. This pattern reflects how graphic blocks contain fills that can be replaced.
411
+ **For graphic blocks** (images/videos): Placeholder behavior is enabled on the **fill**, not the block itself. This pattern reflects how graphic blocks contain fills that can be replaced.
524
412
 
525
- **For text blocks**: Placeholder behavior and controls are both enabled directly on the **block**.
413
+ **For text blocks**: Placeholder behavior is enabled directly on the **block**.
526
414
 
527
- We can check support with `supportsPlaceholderBehavior()` for both blocks and fills, and `supportsPlaceholderControls()` for blocks.
415
+ We can check support with `supportsPlaceholderBehavior()` for both blocks and fills.
528
416
 
529
417
  ## Checking Placeholder Support
530
418
 
@@ -534,10 +422,9 @@ Before enabling placeholder features, check if a block supports them:
534
422
  // Step 4: Check if block/fill supports placeholder features
535
423
  const fill1 = engine.block.getFill(block1);
536
424
  const supportsBehavior = engine.block.supportsPlaceholderBehavior(fill1);
537
- const supportsControls = engine.block.supportsPlaceholderControls(block1);
538
425
  ```
539
426
 
540
- The `supportsPlaceholderBehavior()` method indicates whether a block can become a drop-zone. The `supportsPlaceholderControls()` method shows if visual controls (overlay and button) are available.
427
+ The `supportsPlaceholderBehavior()` method indicates whether a block or fill can become a drop-zone. For graphic blocks, we check the fill rather than the block itself.
541
428
 
542
429
  ## Enabling Placeholder Behavior
543
430
 
@@ -558,7 +445,7 @@ This pattern is critical: `setPlaceholderBehaviorEnabled()` is called on the fil
558
445
 
559
446
  ### For Text Blocks
560
447
 
561
- For text blocks, placeholder behavior is enabled directly on the block, as text blocks don't use fills in the same way.
448
+ For text blocks, placeholder behavior is enabled directly on the block. Text blocks don't use fills in the same way as graphics, so placeholder behavior is configured on the block itself using the same methods (`supportsPlaceholderBehavior()` and `setPlaceholderBehaviorEnabled()`) but applied to the block rather than a fill.
562
449
 
563
450
  We can verify placeholder behavior state with `isPlaceholderBehaviorEnabled()` on the appropriate target (fill for graphics, block for text).
564
451
 
@@ -572,63 +459,15 @@ Placeholder behavior alone isn't enough - blocks must also be enabled for intera
572
459
  engine.block.setPlaceholderEnabled(block1, true);
573
460
  ```
574
461
 
575
- The `setPlaceholderEnabled()` method controls whether the placeholder is interactive for users in Adopter role. CE.SDK distinguishes Creator (full access) and Adopter (replace-only) roles.
462
+ The `setPlaceholderEnabled()` method controls whether the placeholder is interactive for programmatic content replacement. CE.SDK distinguishes Creator (full access) and Adopter (replace-only) roles, and this setting enables the Adopter mode functionality.
576
463
 
577
464
  ### Automatic Management
578
465
 
579
- In practice, `setPlaceholderEnabled()` is typically managed automatically by the editor: when you enable relevant scopes (like `fill/change` for graphics or `text/edit` for text), the placeholder interaction is automatically enabled. When all scopes are disabled, placeholder interaction is automatically disabled. This automatic behavior simplifies template creation workflows.
580
-
581
- ## Configuring Visual Feedback
582
-
583
- Placeholders can display visual indicators to guide users through the replacement workflow.
584
-
585
- ### Combined Setup: The "Act as Placeholder" Pattern
586
-
587
- In the CE.SDK UI, the "Act as Placeholder" checkbox enables placeholder behavior and both visual controls simultaneously. This combined pattern is the recommended approach:
588
-
589
- ```typescript highlight-full-configuration
590
- // Complete "Act as Placeholder" setup
591
- const fillForConfig = engine.block.getFill(block1);
592
- if (engine.block.supportsPlaceholderBehavior(fillForConfig)) {
593
- engine.block.setPlaceholderBehaviorEnabled(fillForConfig, true);
594
- }
595
- if (supportsControls) {
596
- engine.block.setPlaceholderControlsOverlayEnabled(block1, true);
597
- engine.block.setPlaceholderControlsButtonEnabled(block1, true);
598
- }
599
- ```
600
-
601
- This pattern ensures placeholder behavior is enabled on the appropriate target (fill for graphics, block for text) along with both visual controls on the block.
602
-
603
- ### Individual Control Options
604
-
605
- Visual controls can also be managed independently if needed:
606
-
607
- **Overlay Pattern** - The overlay shows a dotted surface indicating a drop-zone:
608
-
609
- ```typescript highlight-enable-overlay
610
- // Enable placeholder overlay pattern
611
- if (supportsControls) {
612
- engine.block.setPlaceholderControlsOverlayEnabled(block1, true);
613
- }
614
- ```
615
-
616
- **Replace Button** - The button provides a single-tap entry point for touch devices:
617
-
618
- ```typescript highlight-enable-button
619
- // Enable placeholder button
620
- if (supportsControls) {
621
- engine.block.setPlaceholderControlsButtonEnabled(block1, true);
622
- }
623
- ```
624
-
625
- Individual control is useful when you want specific visual feedback without the full placeholder workflow.
466
+ In practice, `setPlaceholderEnabled()` is typically managed automatically by the editor: when you enable relevant scopes (like `fill/change` for graphics or `text/edit` for text), the placeholder interaction is automatically enabled. When all scopes are disabled, placeholder interaction is automatically disabled.
626
467
 
627
468
  ## Scope Requirements and Dependencies
628
469
 
629
- Placeholders depend on specific scopes being enabled to function correctly. Understanding these dependencies prevents common configuration errors.
630
-
631
- For graphic blocks (images/videos), the `fill/change` scope must be enabled before placeholder behavior will work. When you disable `fill/change`, the editor automatically disables placeholder behavior and controls to maintain consistency.
470
+ Placeholders depend on specific scopes being enabled to function correctly. For graphic blocks (images/videos), the `fill/change` scope must be enabled before placeholder behavior will work. When you disable `fill/change`, placeholder behavior and interaction are automatically disabled to maintain consistency.
632
471
 
633
472
  For text blocks, the `text/edit` scope must be enabled before placeholder behavior can function.
634
473
 
@@ -643,46 +482,81 @@ For text blocks, the `text/edit` scope must be enabled before placeholder behavi
643
482
  When creating templates with multiple placeholders, apply settings systematically:
644
483
 
645
484
  ```typescript highlight-batch-operation
646
- // Batch operation: Apply settings to multiple blocks
647
- const graphicBlocks = [block1, block2];
648
- graphicBlocks.forEach((block) => {
649
- // Enable placeholder for each block
650
- engine.block.setPlaceholderEnabled(block, true);
651
-
652
- const fill = engine.block.getFill(block);
653
- if (engine.block.supportsPlaceholderBehavior(fill)) {
654
- engine.block.setPlaceholderBehaviorEnabled(fill, true);
655
- }
656
- });
485
+ // Batch operation: Apply settings to multiple blocks
486
+ const graphicBlocks = [block1, block2];
487
+ graphicBlocks.forEach((block) => {
488
+ // Enable placeholder for each block
489
+ engine.block.setPlaceholderEnabled(block, true);
490
+
491
+ const fill = engine.block.getFill(block);
492
+ if (engine.block.supportsPlaceholderBehavior(fill)) {
493
+ engine.block.setPlaceholderBehaviorEnabled(fill, true);
494
+ }
495
+ });
657
496
  ```
658
497
 
659
498
  This pattern works well for collage templates, product showcases, or any layout requiring multiple content slots.
660
499
 
500
+ ## Exporting Templates
501
+
502
+ After configuring placeholders, we export the template for later use:
503
+
504
+ ```typescript highlight-export
505
+ // Export the template as a scene file for later use
506
+ const sceneBlob = await engine.scene.saveToArchive();
507
+ const sceneBuffer = Buffer.from(await sceneBlob.arrayBuffer());
508
+ writeFileSync(`${outputDir}/placeholders-template.scene`, sceneBuffer);
509
+
510
+ // Also export a visual preview
511
+ const blob = await engine.block.export(page, { mimeType: 'image/png' });
512
+ const buffer = Buffer.from(await blob.arrayBuffer());
513
+ writeFileSync(`${outputDir}/placeholders-result.png`, buffer);
514
+ ```
515
+
516
+ We save both the template as a scene file and a visual preview as PNG. The scene file preserves all placeholder settings for later use.
517
+
518
+ ## Cleanup
519
+
520
+ We must dispose the engine to free system resources when processing is complete:
521
+
522
+ ```typescript highlight-cleanup
523
+ // Always dispose the engine to free resources
524
+ engine.dispose();
525
+ ```
526
+
527
+ Always use a try-finally block to ensure the engine is disposed even if errors occur during processing.
528
+
661
529
  ## API Reference
662
530
 
663
- | Method | Description |
664
- | ----------------------------------------------------- | ----------------------------------------------------------- |
665
- | `engine.block.supportsPlaceholderBehavior()` | Checks whether the block supports placeholder behavior |
666
- | `engine.block.setPlaceholderBehaviorEnabled()` | Enables or disables placeholder behavior for a block |
667
- | `engine.block.isPlaceholderBehaviorEnabled()` | Queries whether placeholder behavior is enabled |
668
- | `engine.block.setPlaceholderEnabled()` | Enables or disables placeholder interaction in Adopter mode |
669
- | `engine.block.isPlaceholderEnabled()` | Queries whether placeholder interaction is enabled |
670
- | `engine.block.supportsPlaceholderControls()` | Checks whether the block supports placeholder controls |
671
- | `engine.block.setPlaceholderControlsOverlayEnabled()` | Enables or disables the placeholder overlay pattern |
672
- | `engine.block.isPlaceholderControlsOverlayEnabled()` | Queries whether the overlay pattern is shown |
673
- | `engine.block.setPlaceholderControlsButtonEnabled()` | Enables or disables the placeholder button |
674
- | `engine.block.isPlaceholderControlsButtonEnabled()` | Queries whether the placeholder button is shown |
531
+ | Method | Description |
532
+ |--------|-------------|
533
+ | `CreativeEngine.init()` | Initializes the headless engine for programmatic creation |
534
+ | `engine.scene.create()` | Creates a new scene programmatically |
535
+ | `engine.block.supportsPlaceholderBehavior()` | Checks whether the block or fill supports placeholder behavior |
536
+ | `engine.block.setPlaceholderBehaviorEnabled()` | Enables or disables placeholder behavior for a block or fill |
537
+ | `engine.block.isPlaceholderBehaviorEnabled()` | Queries whether placeholder behavior is enabled |
538
+ | `engine.block.setPlaceholderEnabled()` | Enables or disables placeholder interaction in Adopter mode |
539
+ | `engine.block.isPlaceholderEnabled()` | Queries whether placeholder interaction is enabled |
540
+ | `engine.block.setScopeEnabled()` | Enables or disables editing scopes required for placeholder functionality |
541
+ | `engine.block.getFill()` | Gets the fill from a graphic block |
542
+ | `engine.block.addImage()` | Creates and adds an image block to the scene |
543
+ | `engine.block.findByType()` | Finds all blocks of a specific type in the scene |
544
+ | `engine.block.export()` | Exports a block to an image format |
545
+ | `engine.scene.saveToArchive()` | Saves the scene to a .scene archive file |
546
+ | `engine.dispose()` | Disposes the engine and frees resources |
675
547
 
676
548
  ## Next Steps
677
549
 
678
550
  - [Lock the Template](./create-templates/lock.md) - Restrict editing access to specific elements or properties to enforce design rules
679
551
  - [Text Variables](./create-templates/add-dynamic-content/text-variables.md) - Define dynamic text elements that can be populated with custom values
680
552
 
553
+
554
+
681
555
  ---
682
556
 
683
557
  ## More Resources
684
558
 
685
- - **[Vanilla JS/TS Documentation Index](https://img.ly/docs/cesdk/js.md)** - Browse all Vanilla JS/TS documentation
559
+ - **[Node.js Documentation Index](https://img.ly/docs/cesdk/node.md)** - Browse all Node.js documentation
686
560
  - **[Complete Documentation](./llms-full.txt.md)** - Full documentation in one file (for LLMs)
687
- - **[Web Documentation](./js.md)** - Interactive documentation with examples
688
- - **[Support](mailto:support@img.ly)** - Contact IMG.LY support
561
+ - **[Web Documentation](./node.md)** - Interactive documentation with examples
562
+ - **[Support](mailto:support@img.ly)** - Contact IMG.LY support