@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,393 +1,355 @@
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) > [Set Editing Constraints](./create-templates/add-dynamic-content/set-editing-constraints.md)
4
4
 
5
5
  ---
6
6
 
7
- Control what users can edit in templates by setting fine-grained permissions on individual blocks or globally across your scene using CE.SDK's Scope system.
8
-
9
- ![Set Editing Constraints example showing constraint patterns](https://img.ly/docs/cesdk/./assets/browser.hero.webp)
7
+ Control what users can edit in templates by setting fine-grained permissions on individual blocks or globally across your scene using CE.SDK's Scope system in headless Node.js environments.
10
8
 
11
9
  > **Reading time:** 15 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-set-editing-constraints-browser)
17
- > - [Open in StackBlitz](https://stackblitz.com/github/imgly/cesdk-web-examples/tree/v$UBQ_VERSION$/guides-create-templates-dynamic-content-set-editing-constraints-browser)
18
- > - [Live demo](https://img.ly/docs/cesdk/examples/guides-create-templates-dynamic-content-set-editing-constraints-browser/)
19
-
20
- Editing constraints in CE.SDK allow you to lock specific properties of design elements while keeping others editable. The Scope system provides granular control over 20+ editing capabilities including movement, resizing, rotation, fill changes, text editing, and lifecycle operations.
21
-
22
- ```typescript file=@cesdk_web_examples/guides-create-templates-dynamic-content-set-editing-constraints-browser/browser.ts reference-only
23
- import type { EditorPlugin, EditorPluginContext } from '@cesdk/cesdk-js';
24
- import {
25
- BlurAssetSource,
26
- ColorPaletteAssetSource,
27
- CropPresetsAssetSource,
28
- DemoAssetSources,
29
- EffectsAssetSource,
30
- FiltersAssetSource,
31
- PagePresetsAssetSource,
32
- StickerAssetSource,
33
- TextAssetSource,
34
- TextComponentAssetSource,
35
- TypefaceAssetSource,
36
- UploadAssetSources,
37
- VectorShapeAssetSource
38
- } from '@cesdk/cesdk-js/plugins';
39
- import { DesignEditorConfig } from './design-editor/plugin';
40
- import packageJson from './package.json';
14
+ >
15
+ > - [View source on GitHub](https://github.com/imgly/cesdk-web-examples)
16
+ >
17
+ > - [Open in StackBlitz](https://stackblitz.com/github/imgly/cesdk-web-examples)
18
+
19
+ Editing constraints in CE.SDK allow you to lock specific properties of design elements programmatically from your server or Node.js application. The Scope system provides granular control over 20+ editing capabilities including movement, resizing, rotation, fill changes, text editing, and lifecycle operations.
20
+
21
+ ```typescript file=@cesdk_web_examples/guides-create-templates-dynamic-content-set-editing-constraints-server-js/server-js.ts reference-only
22
+ import CreativeEngine from '@cesdk/node';
23
+ import { config } from 'dotenv';
24
+ import { writeFileSync, mkdirSync, existsSync } from 'fs';
25
+
26
+ // Load environment variables
27
+ config();
41
28
 
42
29
  /**
43
- * CE.SDK Plugin: Set Editing Constraints Guide
30
+ * CE.SDK Server Guide: Set Editing Constraints
44
31
  *
45
- * This example demonstrates:
32
+ * Demonstrates how to use CE.SDK's Scope system to control editing capabilities:
46
33
  * - Setting global scopes to respect block-level settings
47
34
  * - Disabling move scope to lock position
48
35
  * - Disabling lifecycle scopes to prevent deletion
36
+ * - Checking scope states
37
+ * - Saving constrained scenes
49
38
  */
50
- class Example implements EditorPlugin {
51
- name = packageJson.name;
52
39
 
53
- version = packageJson.version;
40
+ // Initialize CE.SDK engine in headless mode
41
+ const engine = await CreativeEngine.init({
42
+ baseURL: process.env.IMGLY_LOCAL_ASSETS_URL,
43
+ });
54
44
 
55
- async initialize({ cesdk }: EditorPluginContext): Promise<void> {
56
- if (!cesdk) {
57
- throw new Error('CE.SDK instance is required for this plugin');
58
- }
45
+ try {
46
+ // Create a design scene with specific page dimensions
47
+ engine.scene.create('VerticalStack', {
48
+ page: { size: { width: 1920, height: 1080 } },
49
+ });
59
50
 
60
- await cesdk.addPlugin(new DesignEditorConfig());
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
- // Create a design scene
89
- await cesdk.actions.run('scene.create', {
90
- page: { width: 1200, height: 600, unit: 'Pixel' }
91
- });
92
-
93
- const engine = cesdk.engine;
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 background color
103
- const pageFill = engine.block.getFill(page);
104
- engine.block.setColor(pageFill, 'fill/color/value', {
105
- r: 0.95,
106
- g: 0.95,
107
- b: 0.95,
108
- a: 1.0
109
- });
110
-
111
- // ===== Configure Global Scopes =====
112
- // Set global scopes to 'Defer' to respect block-level scope settings
113
- // Without this, global 'Allow' settings might override block-level restrictions
114
- engine.editor.setGlobalScope('layer/move', 'Defer');
115
- engine.editor.setGlobalScope('layer/resize', 'Defer');
116
- engine.editor.setGlobalScope('lifecycle/destroy', 'Defer');
117
- engine.editor.setGlobalScope('lifecycle/duplicate', 'Defer');
118
-
119
- // Global scope modes:
120
- // - 'Allow': Always allow (overrides block-level settings)
121
- // - 'Deny': Always deny (overrides block-level settings)
122
- // - 'Defer': Use block-level settings (respects setScopeEnabled)
123
-
124
- // Calculate layout for 4 examples (2x2 grid)
125
- const pageWidth = engine.block.getWidth(page);
126
- const pageHeight = engine.block.getHeight(page);
127
- const margin = 40;
128
- const spacing = 20;
129
- const blockWidth = (pageWidth - margin * 2 - spacing) / 2;
130
- const blockHeight = (pageHeight - margin * 2 - spacing) / 2;
131
-
132
- const getPosition = (index: number) => {
133
- const col = index % 2;
134
- const row = Math.floor(index / 2);
135
- return {
136
- x: margin + col * (blockWidth + spacing),
137
- y: margin + row * (blockHeight + spacing)
138
- };
139
- };
51
+ const page = engine.block.findByType('page')[0];
52
+ if (!page) {
53
+ throw new Error('No page found');
54
+ }
140
55
 
141
- // Helper function to create a labeled example block
142
- const createExampleBlock = (
143
- labelText: string,
144
- backgroundColor: { r: number; g: number; b: number },
145
- applyScopesCallback?: (blockId: number) => void
146
- ): number => {
147
- // Create container block
148
- const block = engine.block.create('graphic');
149
- const shape = engine.block.createShape('rect');
150
- engine.block.setShape(block, shape);
151
- engine.block.setWidth(block, blockWidth);
152
- engine.block.setHeight(block, blockHeight);
153
-
154
- // Set background color
155
- const fill = engine.block.createFill('color');
156
- engine.block.setFill(block, fill);
157
- engine.block.setColor(fill, 'fill/color/value', {
158
- ...backgroundColor,
159
- a: 1.0
160
- });
161
-
162
- // Add label text
163
- const textBlock = engine.block.create('text');
164
- engine.block.setWidth(textBlock, blockWidth * 0.85);
165
- engine.block.setHeightMode(textBlock, 'Auto');
166
- engine.block.setString(textBlock, 'text/text', labelText);
167
- engine.block.setEnum(textBlock, 'text/horizontalAlignment', 'Center');
168
- engine.block.setFloat(textBlock, 'text/fontSize', 36);
169
-
170
- // Append text to get dimensions
171
- engine.block.appendChild(block, textBlock);
172
-
173
- // Center text in container
174
- const textWidth = engine.block.getWidth(textBlock);
175
- const textHeight = engine.block.getHeight(textBlock);
176
- engine.block.setPositionX(textBlock, (blockWidth - textWidth) / 2);
177
- engine.block.setPositionY(textBlock, (blockHeight - textHeight) / 2);
178
-
179
- // Set text color to white
180
- const textFill = engine.block.createFill('color');
181
- engine.block.setFill(textBlock, textFill);
182
- engine.block.setColor(textFill, 'fill/color/value', {
183
- r: 1.0,
184
- g: 1.0,
185
- b: 1.0,
186
- a: 1.0
187
- });
188
-
189
- // Apply scope configuration to both blocks
190
- if (applyScopesCallback) {
191
- applyScopesCallback(block);
192
- applyScopesCallback(textBlock);
193
- }
194
-
195
- // Append container to page
196
- engine.block.appendChild(page, block);
197
-
198
- return block;
56
+ // Set page background color
57
+ const pageFill = engine.block.getFill(page);
58
+ engine.block.setColor(pageFill, 'fill/color/value', {
59
+ r: 0.95,
60
+ g: 0.95,
61
+ b: 0.95,
62
+ a: 1.0,
63
+ });
64
+
65
+ // Set global scopes to 'Defer' to respect block-level scope settings
66
+ // Without this, global 'Allow' settings might override block-level restrictions
67
+ engine.editor.setGlobalScope('layer/move', 'Defer');
68
+ engine.editor.setGlobalScope('layer/resize', 'Defer');
69
+ engine.editor.setGlobalScope('lifecycle/destroy', 'Defer');
70
+ engine.editor.setGlobalScope('lifecycle/duplicate', 'Defer');
71
+
72
+ // Global scope modes:
73
+ // - 'Allow': Always allow (overrides block-level settings)
74
+ // - 'Deny': Always deny (overrides block-level settings)
75
+ // - 'Defer': Use block-level settings (respects setScopeEnabled)
76
+
77
+ // Calculate layout for 4 examples (2x2 grid)
78
+ const pageWidth = engine.block.getWidth(page);
79
+ const pageHeight = engine.block.getHeight(page);
80
+ const margin = 40;
81
+ const spacing = 20;
82
+ const blockWidth = (pageWidth - margin * 2 - spacing) / 2;
83
+ const blockHeight = (pageHeight - margin * 2 - spacing) / 2;
84
+
85
+ const getPosition = (index: number) => {
86
+ const col = index % 2;
87
+ const row = Math.floor(index / 2);
88
+ return {
89
+ x: margin + col * (blockWidth + spacing),
90
+ y: margin + row * (blockHeight + spacing),
199
91
  };
92
+ };
93
+
94
+ // Helper function to create a labeled example block
95
+ const createExampleBlock = (
96
+ labelText: string,
97
+ backgroundColor: { r: number; g: number; b: number },
98
+ applyScopesCallback?: (blockId: number) => void
99
+ ): number => {
100
+ // Create container block
101
+ const block = engine.block.create('graphic');
102
+ const shape = engine.block.createShape('rect');
103
+ engine.block.setShape(block, shape);
104
+ engine.block.setWidth(block, blockWidth);
105
+ engine.block.setHeight(block, blockHeight);
106
+
107
+ // Set background color
108
+ const fill = engine.block.createFill('color');
109
+ engine.block.setFill(block, fill);
110
+ engine.block.setColor(fill, 'fill/color/value', {
111
+ ...backgroundColor,
112
+ a: 1.0,
113
+ });
200
114
 
201
- // ===== Example 1: Lock Position (Disable Move Scope) =====
202
- const disableMoveScope = (block: number) => {
203
- // Disable move scope
204
- engine.block.setScopeEnabled(block, 'layer/move', false);
205
-
206
- // Explicitly enable other transform scopes
207
- engine.block.setScopeEnabled(block, 'layer/resize', true);
208
- engine.block.setScopeEnabled(block, 'layer/rotate', true);
209
- engine.block.setScopeEnabled(block, 'layer/flip', true);
210
-
211
- // Explicitly enable lifecycle scopes
212
- engine.block.setScopeEnabled(block, 'lifecycle/destroy', true);
213
- engine.block.setScopeEnabled(block, 'lifecycle/duplicate', true);
214
- };
115
+ // Add label text
116
+ const textBlock = engine.block.create('text');
117
+ engine.block.setWidth(textBlock, blockWidth * 0.85);
118
+ engine.block.setHeightMode(textBlock, 'Auto');
119
+ engine.block.setString(textBlock, 'text/text', labelText);
120
+ engine.block.setEnum(textBlock, 'text/horizontalAlignment', 'Center');
121
+ engine.block.setFloat(textBlock, 'text/fontSize', 16);
122
+
123
+ // Append text to get dimensions
124
+ engine.block.appendChild(block, textBlock);
125
+
126
+ // Center text in container
127
+ const textWidth = engine.block.getWidth(textBlock);
128
+ const textHeight = engine.block.getHeight(textBlock);
129
+ engine.block.setPositionX(textBlock, (blockWidth - textWidth) / 2);
130
+ engine.block.setPositionY(textBlock, (blockHeight - textHeight) / 2);
131
+
132
+ // Set text color to white
133
+ const textFill = engine.block.createFill('color');
134
+ engine.block.setFill(textBlock, textFill);
135
+ engine.block.setColor(textFill, 'fill/color/value', {
136
+ r: 1.0,
137
+ g: 1.0,
138
+ b: 1.0,
139
+ a: 1.0,
140
+ });
215
141
 
216
- const moveLockedBlock = createExampleBlock(
217
- 'Locked\nposition',
218
- {
219
- r: 0.5,
220
- g: 0.75,
221
- b: 0.9
222
- },
223
- disableMoveScope
224
- );
225
- // Block position is locked - users cannot move or reposition it
226
- // Other scopes are explicitly enabled: resizing, rotation, flipping, deletion, duplication
227
-
228
- // ===== Example 2: Prevent Deletion (Disable Lifecycle Scopes) =====
229
- const disableLifecycleScopes = (block: number) => {
230
- // Disable lifecycle scopes
231
- engine.block.setScopeEnabled(block, 'lifecycle/destroy', false);
232
- engine.block.setScopeEnabled(block, 'lifecycle/duplicate', false);
233
-
234
- // Explicitly enable transform scopes
235
- engine.block.setScopeEnabled(block, 'layer/move', true);
236
- engine.block.setScopeEnabled(block, 'layer/resize', true);
237
- engine.block.setScopeEnabled(block, 'layer/rotate', true);
238
- engine.block.setScopeEnabled(block, 'layer/flip', true);
239
- };
142
+ // Apply scope configuration to both blocks
143
+ if (applyScopesCallback) {
144
+ applyScopesCallback(block);
145
+ applyScopesCallback(textBlock);
146
+ }
240
147
 
241
- const lifecycleLockedBlock = createExampleBlock(
242
- 'Cannot\ndelete',
243
- {
244
- r: 0.75,
245
- g: 0.75,
246
- b: 0.75
247
- },
248
- disableLifecycleScopes
249
- );
250
- // Block cannot be deleted or duplicated
251
- // Other scopes are explicitly enabled: moving, resizing, rotation, flipping
252
-
253
- // ===== Example 3: All Scopes Enabled =====
254
- const enableAllScopes = (block: number) => {
255
- // Explicitly enable all transform scopes
256
- engine.block.setScopeEnabled(block, 'layer/move', true);
257
- engine.block.setScopeEnabled(block, 'layer/resize', true);
258
- engine.block.setScopeEnabled(block, 'layer/rotate', true);
259
- engine.block.setScopeEnabled(block, 'layer/flip', true);
260
-
261
- // Explicitly enable lifecycle scopes
262
- engine.block.setScopeEnabled(block, 'lifecycle/destroy', true);
263
- engine.block.setScopeEnabled(block, 'lifecycle/duplicate', true);
264
-
265
- // Explicitly enable fill scopes
266
- engine.block.setScopeEnabled(block, 'fill/change', true);
267
- engine.block.setScopeEnabled(block, 'fill/changeType', true);
268
-
269
- // Explicitly enable text scopes
270
- engine.block.setScopeEnabled(block, 'text/edit', true);
271
- engine.block.setScopeEnabled(block, 'text/character', true);
272
- };
148
+ // Append container to page
149
+ engine.block.appendChild(page, block);
150
+
151
+ return block;
152
+ };
153
+
154
+ // ===== Example 1: All Scopes Enabled =====
155
+ const enableAllScopes = (block: number) => {
156
+ // Explicitly enable all transform scopes
157
+ engine.block.setScopeEnabled(block, 'layer/move', true);
158
+ engine.block.setScopeEnabled(block, 'layer/resize', true);
159
+ engine.block.setScopeEnabled(block, 'layer/rotate', true);
160
+ engine.block.setScopeEnabled(block, 'layer/flip', true);
161
+
162
+ // Explicitly enable lifecycle scopes
163
+ engine.block.setScopeEnabled(block, 'lifecycle/destroy', true);
164
+ engine.block.setScopeEnabled(block, 'lifecycle/duplicate', true);
165
+
166
+ // Explicitly enable fill scopes
167
+ engine.block.setScopeEnabled(block, 'fill/change', true);
168
+ engine.block.setScopeEnabled(block, 'fill/changeType', true);
169
+
170
+ // Explicitly enable text scopes
171
+ engine.block.setScopeEnabled(block, 'text/edit', true);
172
+ engine.block.setScopeEnabled(block, 'text/character', true);
173
+ };
174
+
175
+ const fullyEditableBlock = createExampleBlock(
176
+ 'Fully\neditable',
177
+ {
178
+ r: 0.5,
179
+ g: 0.85,
180
+ b: 0.5,
181
+ },
182
+ enableAllScopes
183
+ );
184
+ // All scopes are explicitly enabled - users have full editing capabilities
185
+ // This is the default behavior, but explicitly enabling shows clear intent
186
+
187
+ // ===== Example 2: Lock Position (Disable Move Scope) =====
188
+ const disableMoveScope = (block: number) => {
189
+ // Disable move scope
190
+ engine.block.setScopeEnabled(block, 'layer/move', false);
191
+
192
+ // Explicitly enable other transform scopes
193
+ engine.block.setScopeEnabled(block, 'layer/resize', true);
194
+ engine.block.setScopeEnabled(block, 'layer/rotate', true);
195
+ engine.block.setScopeEnabled(block, 'layer/flip', true);
196
+
197
+ // Explicitly enable lifecycle scopes
198
+ engine.block.setScopeEnabled(block, 'lifecycle/destroy', true);
199
+ engine.block.setScopeEnabled(block, 'lifecycle/duplicate', true);
200
+ };
201
+
202
+ const moveLockedBlock = createExampleBlock(
203
+ 'Locked\nposition',
204
+ {
205
+ r: 0.5,
206
+ g: 0.75,
207
+ b: 0.9,
208
+ },
209
+ disableMoveScope
210
+ );
211
+ // Block position is locked - users cannot move or reposition it
212
+ // Other scopes are explicitly enabled: resizing, rotation, flipping, deletion, duplication
213
+
214
+ // ===== Example 3: Prevent Deletion (Disable Lifecycle Scopes) =====
215
+ const disableLifecycleScopes = (block: number) => {
216
+ // Disable lifecycle scopes
217
+ engine.block.setScopeEnabled(block, 'lifecycle/destroy', false);
218
+ engine.block.setScopeEnabled(block, 'lifecycle/duplicate', false);
219
+
220
+ // Explicitly enable transform scopes
221
+ engine.block.setScopeEnabled(block, 'layer/move', true);
222
+ engine.block.setScopeEnabled(block, 'layer/resize', true);
223
+ engine.block.setScopeEnabled(block, 'layer/rotate', true);
224
+ engine.block.setScopeEnabled(block, 'layer/flip', true);
225
+ };
226
+
227
+ const lifecycleLockedBlock = createExampleBlock(
228
+ 'Cannot\ndelete',
229
+ {
230
+ r: 0.75,
231
+ g: 0.75,
232
+ b: 0.75,
233
+ },
234
+ disableLifecycleScopes
235
+ );
236
+ // Block cannot be deleted or duplicated
237
+ // Other scopes are explicitly enabled: moving, resizing, rotation, flipping
238
+
239
+ // ===== Example 4: All Scopes Disabled =====
240
+ const disableAllScopes = (block: number) => {
241
+ // Disable all transform scopes
242
+ engine.block.setScopeEnabled(block, 'layer/move', false);
243
+ engine.block.setScopeEnabled(block, 'layer/resize', false);
244
+ engine.block.setScopeEnabled(block, 'layer/rotate', false);
245
+ engine.block.setScopeEnabled(block, 'layer/flip', false);
246
+ engine.block.setScopeEnabled(block, 'layer/crop', false);
247
+
248
+ // Disable lifecycle scopes
249
+ engine.block.setScopeEnabled(block, 'lifecycle/destroy', false);
250
+ engine.block.setScopeEnabled(block, 'lifecycle/duplicate', false);
251
+
252
+ // Disable fill scopes
253
+ engine.block.setScopeEnabled(block, 'fill/change', false);
254
+ engine.block.setScopeEnabled(block, 'fill/changeType', false);
255
+ engine.block.setScopeEnabled(block, 'stroke/change', false);
256
+
257
+ // Disable text scopes
258
+ engine.block.setScopeEnabled(block, 'text/edit', false);
259
+ engine.block.setScopeEnabled(block, 'text/character', false);
260
+
261
+ // Disable shape scopes
262
+ engine.block.setScopeEnabled(block, 'shape/change', false);
263
+
264
+ // Disable editor scopes
265
+ engine.block.setScopeEnabled(block, 'editor/select', false);
266
+
267
+ // Disable appearance scopes
268
+ engine.block.setScopeEnabled(block, 'layer/opacity', false);
269
+ engine.block.setScopeEnabled(block, 'layer/blendMode', false);
270
+ engine.block.setScopeEnabled(block, 'layer/visibility', false);
271
+ };
272
+
273
+ const fullyLockedBlock = createExampleBlock(
274
+ 'Fully\nlocked',
275
+ {
276
+ r: 0.9,
277
+ g: 0.5,
278
+ b: 0.5,
279
+ },
280
+ disableAllScopes
281
+ );
282
+ // All scopes are disabled - block is completely locked and cannot be edited
283
+ // Useful for watermarks, logos, or legal disclaimers
284
+
285
+ // ===== Block-Level Scope Setting Example =====
286
+ // Check if a scope is enabled for a specific block
287
+ const canMove = engine.block.isScopeEnabled(moveLockedBlock, 'layer/move');
288
+ const canDelete = engine.block.isScopeEnabled(
289
+ lifecycleLockedBlock,
290
+ 'lifecycle/destroy'
291
+ );
292
+ const canEditFully = engine.block.isScopeEnabled(
293
+ fullyEditableBlock,
294
+ 'layer/move'
295
+ );
296
+ const canEditLocked = engine.block.isScopeEnabled(
297
+ fullyLockedBlock,
298
+ 'layer/move'
299
+ );
300
+
301
+ // eslint-disable-next-line no-console
302
+ console.log('Move-locked block - layer/move enabled:', canMove); // false
303
+ // eslint-disable-next-line no-console
304
+ console.log('Lifecycle-locked block - lifecycle/destroy enabled:', canDelete); // false
305
+ // eslint-disable-next-line no-console
306
+ console.log('Fully editable block - layer/move enabled:', canEditFully); // true
307
+ // eslint-disable-next-line no-console
308
+ console.log('Fully locked block - layer/move enabled:', canEditLocked); // false
309
+
310
+ // Position blocks in 2x2 grid
311
+ const blocks = [
312
+ fullyEditableBlock,
313
+ moveLockedBlock,
314
+ lifecycleLockedBlock,
315
+ fullyLockedBlock,
316
+ ];
317
+
318
+ blocks.forEach((block, index) => {
319
+ const pos = getPosition(index);
320
+ engine.block.setPositionX(block, pos.x);
321
+ engine.block.setPositionY(block, pos.y);
322
+ });
323
+
324
+ // Save the scene with all scope constraints preserved
325
+ const outputDir = './output';
326
+ if (!existsSync(outputDir)) {
327
+ mkdirSync(outputDir, { recursive: true });
328
+ }
273
329
 
274
- const fullyEditableBlock = createExampleBlock(
275
- 'Fully\neditable',
276
- {
277
- r: 0.5,
278
- g: 0.85,
279
- b: 0.5
280
- },
281
- enableAllScopes
282
- );
283
- // All scopes are explicitly enabled - users have full editing capabilities
284
- // This is the default behavior, but explicitly enabling shows clear intent
285
-
286
- // ===== Example 4: All Scopes Disabled =====
287
- const disableAllScopes = (block: number) => {
288
- // Disable all transform scopes
289
- engine.block.setScopeEnabled(block, 'layer/move', false);
290
- engine.block.setScopeEnabled(block, 'layer/resize', false);
291
- engine.block.setScopeEnabled(block, 'layer/rotate', false);
292
- engine.block.setScopeEnabled(block, 'layer/flip', false);
293
- engine.block.setScopeEnabled(block, 'layer/crop', false);
294
-
295
- // Disable lifecycle scopes
296
- engine.block.setScopeEnabled(block, 'lifecycle/destroy', false);
297
- engine.block.setScopeEnabled(block, 'lifecycle/duplicate', false);
298
-
299
- // Disable fill scopes
300
- engine.block.setScopeEnabled(block, 'fill/change', false);
301
- engine.block.setScopeEnabled(block, 'fill/changeType', false);
302
- engine.block.setScopeEnabled(block, 'stroke/change', false);
303
-
304
- // Disable text scopes
305
- engine.block.setScopeEnabled(block, 'text/edit', false);
306
- engine.block.setScopeEnabled(block, 'text/character', false);
307
-
308
- // Disable shape scopes
309
- engine.block.setScopeEnabled(block, 'shape/change', false);
310
-
311
- // Disable editor scopes
312
- engine.block.setScopeEnabled(block, 'editor/select', false);
313
-
314
- // Disable appearance scopes
315
- engine.block.setScopeEnabled(block, 'layer/opacity', false);
316
- engine.block.setScopeEnabled(block, 'layer/blendMode', false);
317
- engine.block.setScopeEnabled(block, 'layer/visibility', false);
318
- };
330
+ // Save scene to file
331
+ const sceneData = await engine.scene.saveToString();
332
+ writeFileSync(`${outputDir}/constrained-scene.scene`, sceneData);
319
333
 
320
- const fullyLockedBlock = createExampleBlock(
321
- 'Fully\nlocked',
322
- {
323
- r: 0.9,
324
- g: 0.5,
325
- b: 0.5
326
- },
327
- disableAllScopes
328
- );
329
- // All scopes are disabled - block is completely locked and cannot be edited
330
- // Useful for watermarks, logos, or legal disclaimers
331
-
332
- // ===== Block-Level Scope Setting Example =====
333
- // Check if a scope is enabled for a specific block
334
- const canMove = engine.block.isScopeEnabled(moveLockedBlock, 'layer/move');
335
- const canDelete = engine.block.isScopeEnabled(
336
- lifecycleLockedBlock,
337
- 'lifecycle/destroy'
338
- );
339
- const canEditFully = engine.block.isScopeEnabled(
340
- fullyEditableBlock,
341
- 'layer/move'
342
- );
343
- const canEditLocked = engine.block.isScopeEnabled(
344
- fullyLockedBlock,
345
- 'layer/move'
346
- );
347
-
348
- // eslint-disable-next-line no-console
349
- console.log('Move-locked block - layer/move enabled:', canMove); // false
350
- // eslint-disable-next-line no-console
351
- console.log(
352
- 'Lifecycle-locked block - lifecycle/destroy enabled:',
353
- canDelete
354
- ); // false
355
- // eslint-disable-next-line no-console
356
- console.log('Fully editable block - layer/move enabled:', canEditFully); // true
357
- // eslint-disable-next-line no-console
358
- console.log('Fully locked block - layer/move enabled:', canEditLocked); // false
359
-
360
- // Position blocks in 2x2 grid
361
- const blocks = [
362
- fullyEditableBlock,
363
- moveLockedBlock,
364
- lifecycleLockedBlock,
365
- fullyLockedBlock
366
- ];
367
-
368
- blocks.forEach((block, index) => {
369
- const pos = getPosition(index);
370
- engine.block.setPositionX(block, pos.x);
371
- engine.block.setPositionY(block, pos.y);
372
- });
334
+ // eslint-disable-next-line no-console
335
+ console.log('✓ Scene saved to output/constrained-scene.scene');
336
+ // eslint-disable-next-line no-console
337
+ console.log(' All scope constraints are preserved in the scene file');
373
338
 
374
- // Deselect all blocks
375
- engine.block.findAllSelected().forEach((block) => {
376
- engine.block.setSelected(block, false);
377
- });
339
+ // Export the result to PNG
340
+ const blob = await engine.block.export(page, { mimeType: 'image/png' });
341
+ const buffer = Buffer.from(await blob.arrayBuffer());
342
+ writeFileSync(`${outputDir}/editing-constraints-result.png`, buffer);
378
343
 
379
- // Zoom to fit content
380
- await engine.scene.zoomToBlock(page, {
381
- padding: 50,
382
- animate: false
383
- });
344
+ // eslint-disable-next-line no-console
345
+ console.log('✓ Exported result to output/editing-constraints-result.png');
384
346
 
385
- // Log instructions
386
- // eslint-disable-next-line no-console
387
- console.log(`
347
+ // Log instructions
348
+ // eslint-disable-next-line no-console
349
+ console.log(`
388
350
  === Editing Constraints Demo ===
389
351
 
390
- Try interacting with the 4 examples (arranged in 2x2 grid):
352
+ Created 4 examples demonstrating scope constraints (arranged in 2x2 grid):
391
353
 
392
354
  Top row:
393
355
  1. "Fully editable" (green): All scopes enabled - complete editing freedom
@@ -398,14 +360,18 @@ Bottom row:
398
360
  4. "Fully locked" (red): All scopes disabled - completely locked
399
361
 
400
362
  Note: Global scopes are set to 'Defer' to respect block-level settings.
401
- `);
402
- }
403
- }
404
363
 
405
- export default Example;
364
+ Files created:
365
+ - output/constrained-scene.scene (scene with constraints)
366
+ - output/editing-constraints-result.png (visual result)
367
+ `);
368
+ } finally {
369
+ // Always dispose the engine to free resources
370
+ engine.dispose();
371
+ }
406
372
  ```
407
373
 
408
- This guide demonstrates how to apply editing constraints to create brand templates, guided editing experiences, and form-based workflows.
374
+ This guide demonstrates how to apply editing constraints in a headless environment to create templates that can be adopted and used with predefined limitations, ensuring brand consistency and design integrity.
409
375
 
410
376
  ## Understanding Scopes
411
377
 
@@ -422,16 +388,16 @@ Scopes exist at two levels:
422
388
 
423
389
  CE.SDK provides scopes organized into logical categories:
424
390
 
425
- | Category | Purpose | Example Scopes |
426
- | --------------------- | ----------------------------------- | ---------------------------------------------------------------------------------------------------------- |
427
- | **Text Editing** | Control text content and formatting | `text/edit`, `text/character` |
428
- | **Fill & Stroke** | Manage colors and gradients | `fill/change`, `fill/changeType`, `stroke/change` |
429
- | **Shape** | Modify shape properties | `shape/change` |
430
- | **Layer Transform** | Control position and dimensions | `layer/move`, `layer/resize`, `layer/rotate`, `layer/flip`, `layer/crop` |
431
- | **Layer Appearance** | Manage visual properties | `layer/opacity`, `layer/blendMode`, `layer/visibility` |
432
- | **Effects & Filters** | Apply visual effects | `appearance/adjustments`, `appearance/filter`, `appearance/effect`, `appearance/blur`, `appearance/shadow` |
433
- | **Lifecycle** | Control creation and deletion | `lifecycle/destroy`, `lifecycle/duplicate` |
434
- | **Editor** | Manage scene-level actions | `editor/add`, `editor/select` |
391
+ | Category | Purpose | Example Scopes |
392
+ | --- | --- | --- |
393
+ | **Text Editing** | Control text content and formatting | `text/edit`, `text/character` |
394
+ | **Fill & Stroke** | Manage colors and gradients | `fill/change`, `fill/changeType`, `stroke/change` |
395
+ | **Shape** | Modify shape properties | `shape/change` |
396
+ | **Layer Transform** | Control position and dimensions | `layer/move`, `layer/resize`, `layer/rotate`, `layer/flip`, `layer/crop` |
397
+ | **Layer Appearance** | Manage visual properties | `layer/opacity`, `layer/blendMode`, `layer/visibility` |
398
+ | **Effects & Filters** | Apply visual effects | `appearance/adjustments`, `appearance/filter`, `appearance/effect`, `appearance/blur`, `appearance/shadow` |
399
+ | **Lifecycle** | Control creation and deletion | `lifecycle/destroy`, `lifecycle/duplicate` |
400
+ | **Editor** | Manage scene-level actions | `editor/add`, `editor/select` |
435
401
 
436
402
  ## Scope Configuration
437
403
 
@@ -443,23 +409,7 @@ Global scopes set the default behavior for all blocks in the scene. They have th
443
409
  - **Deny**: Always deny the action, overriding block-level settings
444
410
  - **Defer**: Use block-level settings (default mode)
445
411
 
446
- To ensure block-level scope settings are respected, set relevant global scopes to 'Defer':
447
-
448
- ```typescript highlight=highlight-global-scopes
449
- // Set global scopes to 'Defer' to respect block-level scope settings
450
- // Without this, global 'Allow' settings might override block-level restrictions
451
- engine.editor.setGlobalScope('layer/move', 'Defer');
452
- engine.editor.setGlobalScope('layer/resize', 'Defer');
453
- engine.editor.setGlobalScope('lifecycle/destroy', 'Defer');
454
- engine.editor.setGlobalScope('lifecycle/duplicate', 'Defer');
455
-
456
- // Global scope modes:
457
- // - 'Allow': Always allow (overrides block-level settings)
458
- // - 'Deny': Always deny (overrides block-level settings)
459
- // - 'Defer': Use block-level settings (respects setScopeEnabled)
460
- ```
461
-
462
- Without setting global scopes to 'Defer', default 'Allow' settings might override your block-level restrictions. This is essential when applying fine-grained constraints.
412
+ To ensure block-level scope settings are respected, set relevant global scopes to 'Defer'. Without setting global scopes to 'Defer', default 'Allow' settings might override your block-level restrictions. This is essential when applying fine-grained constraints.
463
413
 
464
414
  ### Scope Resolution Priority
465
415
 
@@ -476,31 +426,31 @@ When both global and block-level scopes are set, they resolve in this order:
476
426
  Prevent users from moving or repositioning a block while allowing other edits:
477
427
 
478
428
  ```typescript highlight=highlight-disable-move-scope
479
- const disableMoveScope = (block: number) => {
480
- // Disable move scope
481
- engine.block.setScopeEnabled(block, 'layer/move', false);
482
-
483
- // Explicitly enable other transform scopes
484
- engine.block.setScopeEnabled(block, 'layer/resize', true);
485
- engine.block.setScopeEnabled(block, 'layer/rotate', true);
486
- engine.block.setScopeEnabled(block, 'layer/flip', true);
487
-
488
- // Explicitly enable lifecycle scopes
489
- engine.block.setScopeEnabled(block, 'lifecycle/destroy', true);
490
- engine.block.setScopeEnabled(block, 'lifecycle/duplicate', true);
491
- };
492
-
493
- const moveLockedBlock = createExampleBlock(
494
- 'Locked\nposition',
495
- {
496
- r: 0.5,
497
- g: 0.75,
498
- b: 0.9
499
- },
500
- disableMoveScope
501
- );
502
- // Block position is locked - users cannot move or reposition it
503
- // Other scopes are explicitly enabled: resizing, rotation, flipping, deletion, duplication
429
+ const disableMoveScope = (block: number) => {
430
+ // Disable move scope
431
+ engine.block.setScopeEnabled(block, 'layer/move', false);
432
+
433
+ // Explicitly enable other transform scopes
434
+ engine.block.setScopeEnabled(block, 'layer/resize', true);
435
+ engine.block.setScopeEnabled(block, 'layer/rotate', true);
436
+ engine.block.setScopeEnabled(block, 'layer/flip', true);
437
+
438
+ // Explicitly enable lifecycle scopes
439
+ engine.block.setScopeEnabled(block, 'lifecycle/destroy', true);
440
+ engine.block.setScopeEnabled(block, 'lifecycle/duplicate', true);
441
+ };
442
+
443
+ const moveLockedBlock = createExampleBlock(
444
+ 'Locked\nposition',
445
+ {
446
+ r: 0.5,
447
+ g: 0.75,
448
+ b: 0.9,
449
+ },
450
+ disableMoveScope
451
+ );
452
+ // Block position is locked - users cannot move or reposition it
453
+ // Other scopes are explicitly enabled: resizing, rotation, flipping, deletion, duplication
504
454
  ```
505
455
 
506
456
  The block position is locked—users cannot move or reposition it. Other scopes remain enabled, allowing resizing, editing, and deletion. This pattern maintains layout integrity while allowing content updates.
@@ -510,61 +460,178 @@ The block position is locked—users cannot move or reposition it. Other scopes
510
460
  Protect blocks from being deleted or duplicated:
511
461
 
512
462
  ```typescript highlight=highlight-disable-lifecycle-scopes
513
- const disableLifecycleScopes = (block: number) => {
514
- // Disable lifecycle scopes
515
- engine.block.setScopeEnabled(block, 'lifecycle/destroy', false);
516
- engine.block.setScopeEnabled(block, 'lifecycle/duplicate', false);
517
-
518
- // Explicitly enable transform scopes
519
- engine.block.setScopeEnabled(block, 'layer/move', true);
520
- engine.block.setScopeEnabled(block, 'layer/resize', true);
521
- engine.block.setScopeEnabled(block, 'layer/rotate', true);
522
- engine.block.setScopeEnabled(block, 'layer/flip', true);
523
- };
524
-
525
- const lifecycleLockedBlock = createExampleBlock(
526
- 'Cannot\ndelete',
527
- {
528
- r: 0.75,
529
- g: 0.75,
530
- b: 0.75
531
- },
532
- disableLifecycleScopes
533
- );
534
- // Block cannot be deleted or duplicated
535
- // Other scopes are explicitly enabled: moving, resizing, rotation, flipping
463
+ const disableLifecycleScopes = (block: number) => {
464
+ // Disable lifecycle scopes
465
+ engine.block.setScopeEnabled(block, 'lifecycle/destroy', false);
466
+ engine.block.setScopeEnabled(block, 'lifecycle/duplicate', false);
467
+
468
+ // Explicitly enable transform scopes
469
+ engine.block.setScopeEnabled(block, 'layer/move', true);
470
+ engine.block.setScopeEnabled(block, 'layer/resize', true);
471
+ engine.block.setScopeEnabled(block, 'layer/rotate', true);
472
+ engine.block.setScopeEnabled(block, 'layer/flip', true);
473
+ };
474
+
475
+ const lifecycleLockedBlock = createExampleBlock(
476
+ 'Cannot\ndelete',
477
+ {
478
+ r: 0.75,
479
+ g: 0.75,
480
+ b: 0.75,
481
+ },
482
+ disableLifecycleScopes
483
+ );
484
+ // Block cannot be deleted or duplicated
485
+ // Other scopes are explicitly enabled: moving, resizing, rotation, flipping
536
486
  ```
537
487
 
538
488
  Users cannot delete or duplicate the block but can still move, resize, and edit it. Use this for essential template elements that must remain present.
539
489
 
540
- ### Checking Scope State
490
+ ### Enabling All Scopes
491
+
492
+ Allow complete editing freedom by explicitly enabling all scopes:
493
+
494
+ ```typescript highlight=highlight-enable-all-scopes
495
+ const enableAllScopes = (block: number) => {
496
+ // Explicitly enable all transform scopes
497
+ engine.block.setScopeEnabled(block, 'layer/move', true);
498
+ engine.block.setScopeEnabled(block, 'layer/resize', true);
499
+ engine.block.setScopeEnabled(block, 'layer/rotate', true);
500
+ engine.block.setScopeEnabled(block, 'layer/flip', true);
501
+
502
+ // Explicitly enable lifecycle scopes
503
+ engine.block.setScopeEnabled(block, 'lifecycle/destroy', true);
504
+ engine.block.setScopeEnabled(block, 'lifecycle/duplicate', true);
505
+
506
+ // Explicitly enable fill scopes
507
+ engine.block.setScopeEnabled(block, 'fill/change', true);
508
+ engine.block.setScopeEnabled(block, 'fill/changeType', true);
509
+
510
+ // Explicitly enable text scopes
511
+ engine.block.setScopeEnabled(block, 'text/edit', true);
512
+ engine.block.setScopeEnabled(block, 'text/character', true);
513
+ };
514
+
515
+ const fullyEditableBlock = createExampleBlock(
516
+ 'Fully\neditable',
517
+ {
518
+ r: 0.5,
519
+ g: 0.85,
520
+ b: 0.5,
521
+ },
522
+ enableAllScopes
523
+ );
524
+ // All scopes are explicitly enabled - users have full editing capabilities
525
+ // This is the default behavior, but explicitly enabling shows clear intent
526
+ ```
527
+
528
+ All scopes are explicitly enabled, providing users with full editing capabilities. While this is the default behavior, explicitly enabling shows clear intent.
529
+
530
+ ### Disabling All Scopes
531
+
532
+ Create completely locked blocks by disabling all editing capabilities:
533
+
534
+ ```typescript highlight=highlight-disable-all-scopes
535
+ const disableAllScopes = (block: number) => {
536
+ // Disable all transform scopes
537
+ engine.block.setScopeEnabled(block, 'layer/move', false);
538
+ engine.block.setScopeEnabled(block, 'layer/resize', false);
539
+ engine.block.setScopeEnabled(block, 'layer/rotate', false);
540
+ engine.block.setScopeEnabled(block, 'layer/flip', false);
541
+ engine.block.setScopeEnabled(block, 'layer/crop', false);
542
+
543
+ // Disable lifecycle scopes
544
+ engine.block.setScopeEnabled(block, 'lifecycle/destroy', false);
545
+ engine.block.setScopeEnabled(block, 'lifecycle/duplicate', false);
546
+
547
+ // Disable fill scopes
548
+ engine.block.setScopeEnabled(block, 'fill/change', false);
549
+ engine.block.setScopeEnabled(block, 'fill/changeType', false);
550
+ engine.block.setScopeEnabled(block, 'stroke/change', false);
551
+
552
+ // Disable text scopes
553
+ engine.block.setScopeEnabled(block, 'text/edit', false);
554
+ engine.block.setScopeEnabled(block, 'text/character', false);
555
+
556
+ // Disable shape scopes
557
+ engine.block.setScopeEnabled(block, 'shape/change', false);
558
+
559
+ // Disable editor scopes
560
+ engine.block.setScopeEnabled(block, 'editor/select', false);
561
+
562
+ // Disable appearance scopes
563
+ engine.block.setScopeEnabled(block, 'layer/opacity', false);
564
+ engine.block.setScopeEnabled(block, 'layer/blendMode', false);
565
+ engine.block.setScopeEnabled(block, 'layer/visibility', false);
566
+ };
567
+
568
+ const fullyLockedBlock = createExampleBlock(
569
+ 'Fully\nlocked',
570
+ {
571
+ r: 0.9,
572
+ g: 0.5,
573
+ b: 0.5,
574
+ },
575
+ disableAllScopes
576
+ );
577
+ // All scopes are disabled - block is completely locked and cannot be edited
578
+ // Useful for watermarks, logos, or legal disclaimers
579
+ ```
580
+
581
+ All scopes are disabled, making the block completely locked and uneditable. Useful for watermarks, logos, or legal disclaimers that must remain unchanged.
582
+
583
+ ## Configuring Global Scopes
584
+
585
+ ### Setting Global Scope Modes
586
+
587
+ Configure global scopes to control default behavior across all blocks:
588
+
589
+ ```typescript highlight=highlight-global-scopes
590
+ // Set global scopes to 'Defer' to respect block-level scope settings
591
+ // Without this, global 'Allow' settings might override block-level restrictions
592
+ engine.editor.setGlobalScope('layer/move', 'Defer');
593
+ engine.editor.setGlobalScope('layer/resize', 'Defer');
594
+ engine.editor.setGlobalScope('lifecycle/destroy', 'Defer');
595
+ engine.editor.setGlobalScope('lifecycle/duplicate', 'Defer');
596
+
597
+ // Global scope modes:
598
+ // - 'Allow': Always allow (overrides block-level settings)
599
+ // - 'Deny': Always deny (overrides block-level settings)
600
+ // - 'Defer': Use block-level settings (respects setScopeEnabled)
601
+ ```
602
+
603
+ Setting global scopes to 'Defer' ensures block-level scope settings are respected. Without this, default 'Allow' settings might override your block-level restrictions.
604
+
605
+ ## Checking Scope State
606
+
607
+ ### Checking Block-Level Scopes
541
608
 
542
609
  Query the current state of any scope for a block:
543
610
 
544
611
  ```typescript highlight=highlight-block-level-scope-check
545
- // Check if a scope is enabled for a specific block
546
- const canMove = engine.block.isScopeEnabled(moveLockedBlock, 'layer/move');
547
- const canDelete = engine.block.isScopeEnabled(
548
- lifecycleLockedBlock,
549
- 'lifecycle/destroy'
550
- );
551
- const canEditFully = engine.block.isScopeEnabled(
552
- fullyEditableBlock,
553
- 'layer/move'
554
- );
555
- const canEditLocked = engine.block.isScopeEnabled(
556
- fullyLockedBlock,
557
- 'layer/move'
558
- );
559
-
560
- // eslint-disable-next-line no-console
561
- console.log('Move-locked block - layer/move enabled:', canMove); // false
562
- // eslint-disable-next-line no-console
563
- console.log('Lifecycle-locked block - lifecycle/destroy enabled:', canDelete); // false
564
- // eslint-disable-next-line no-console
565
- console.log('Fully editable block - layer/move enabled:', canEditFully); // true
566
- // eslint-disable-next-line no-console
567
- console.log('Fully locked block - layer/move enabled:', canEditLocked); // false
612
+ // Check if a scope is enabled for a specific block
613
+ const canMove = engine.block.isScopeEnabled(moveLockedBlock, 'layer/move');
614
+ const canDelete = engine.block.isScopeEnabled(
615
+ lifecycleLockedBlock,
616
+ 'lifecycle/destroy'
617
+ );
618
+ const canEditFully = engine.block.isScopeEnabled(
619
+ fullyEditableBlock,
620
+ 'layer/move'
621
+ );
622
+ const canEditLocked = engine.block.isScopeEnabled(
623
+ fullyLockedBlock,
624
+ 'layer/move'
625
+ );
626
+
627
+ // eslint-disable-next-line no-console
628
+ console.log('Move-locked block - layer/move enabled:', canMove); // false
629
+ // eslint-disable-next-line no-console
630
+ console.log('Lifecycle-locked block - lifecycle/destroy enabled:', canDelete); // false
631
+ // eslint-disable-next-line no-console
632
+ console.log('Fully editable block - layer/move enabled:', canEditFully); // true
633
+ // eslint-disable-next-line no-console
634
+ console.log('Fully locked block - layer/move enabled:', canEditLocked); // false
568
635
  ```
569
636
 
570
637
  Use `isScopeEnabled()` to check the block-level setting. This returns whether the scope is enabled at the block level, but doesn't consider global scope settings.
@@ -580,21 +647,51 @@ const moveAllowed = engine.block.isAllowedByScope(block, 'layer/move');
580
647
 
581
648
  `isAllowedByScope()` returns the final permission after resolving block-level and global scope settings. Use this when you need to know if an action is actually permitted.
582
649
 
650
+ ## Saving Constrained Scenes
651
+
652
+ Scope constraints are preserved when saving scenes:
653
+
654
+ ```typescript highlight=highlight-save-constrained-scene
655
+ // Save the scene with all scope constraints preserved
656
+ const outputDir = './output';
657
+ if (!existsSync(outputDir)) {
658
+ mkdirSync(outputDir, { recursive: true });
659
+ }
660
+
661
+ // Save scene to file
662
+ const sceneData = await engine.scene.saveToString();
663
+ writeFileSync(`${outputDir}/constrained-scene.scene`, sceneData);
664
+
665
+ // eslint-disable-next-line no-console
666
+ console.log('✓ Scene saved to output/constrained-scene.scene');
667
+ // eslint-disable-next-line no-console
668
+ console.log(' All scope constraints are preserved in the scene file');
669
+ ```
670
+
671
+ When this scene is loaded in a browser or client application, all scope constraints will be maintained. This allows you to:
672
+
673
+ 1. Create templates server-side with predefined constraints
674
+ 2. Save them to your storage/database
675
+ 3. Load them client-side with constraints already applied
676
+ 4. Ensure users can only edit allowed properties
677
+
583
678
  ## API Reference
584
679
 
585
- | Method | Description |
586
- | --------------------------------- | ---------------------------------------------------------------------- |
587
- | `engine.block.setScopeEnabled()` | Enable or disable a scope for a specific block |
588
- | `engine.block.isScopeEnabled()` | Check if a scope is enabled at the block level |
680
+ | Method | Description |
681
+ | --- | --- |
682
+ | `engine.block.setScopeEnabled()` | Enable or disable a scope for a specific block |
683
+ | `engine.block.isScopeEnabled()` | Check if a scope is enabled at the block level |
589
684
  | `engine.block.isAllowedByScope()` | Check if a scope is allowed considering both block and global settings |
590
- | `engine.editor.setGlobalScope()` | Set global scope policy (`'Allow'`, `'Deny'`, or `'Defer'`) |
591
- | `engine.editor.findAllScopes()` | List all available scope keys |
685
+ | `engine.editor.setGlobalScope()` | Set global scope policy (`'Allow'`, `'Deny'`, or `'Defer'`) |
686
+ | `engine.editor.findAllScopes()` | List all available scope keys |
687
+
688
+
592
689
 
593
690
  ---
594
691
 
595
692
  ## More Resources
596
693
 
597
- - **[Vanilla JS/TS Documentation Index](https://img.ly/docs/cesdk/js.md)** - Browse all Vanilla JS/TS documentation
694
+ - **[Node.js Documentation Index](https://img.ly/docs/cesdk/node.md)** - Browse all Node.js documentation
598
695
  - **[Complete Documentation](./llms-full.txt.md)** - Full documentation in one file (for LLMs)
599
- - **[Web Documentation](./js.md)** - Interactive documentation with examples
600
- - **[Support](mailto:support@img.ly)** - Contact IMG.LY support
696
+ - **[Web Documentation](./node.md)** - Interactive documentation with examples
697
+ - **[Support](mailto:support@img.ly)** - Contact IMG.LY support