@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,464 +1,229 @@
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 Edit Compositions](./create-composition.md) > [Position and Align](./insert-media/position-and-align.md)
4
4
 
5
5
  ---
6
6
 
7
7
  Position, align, and distribute design elements precisely using CE.SDK's
8
- layout APIs and snapping system.
8
+ layout APIs in headless server environments.
9
9
 
10
- ![Positioning and Alignment example showing blocks arranged in a grid layout](https://img.ly/docs/cesdk/./assets/browser.hero.webp)
11
-
12
- > **Reading time:** 8 minutes
10
+ > **Reading time:** 6 minutes
13
11
  >
14
12
  > **Resources:**
15
13
  >
16
14
  > - [Download examples](https://github.com/imgly/cesdk-web-examples/archive/refs/tags/release-$UBQ_VERSION$.zip)
17
- > - [View source on GitHub](https://github.com/imgly/cesdk-web-examples/tree/release-$UBQ_VERSION$/guides-create-composition-position-and-align-browser)
18
- > - [Open in StackBlitz](https://stackblitz.com/github/imgly/cesdk-web-examples/tree/v$UBQ_VERSION$/guides-create-composition-position-and-align-browser)
19
- > - [Live demo](https://img.ly/docs/cesdk/examples/guides-create-composition-position-and-align-browser/)
20
-
21
- CE.SDK positions blocks relative to their parent container with the origin at the top left. You can set positions using absolute values (design units) or as percentages of the parent's dimensions. For multi-element layouts, alignment and distribution APIs arrange blocks precisely without manual calculations. In the browser, snapping guides provide visual feedback when dragging elements.
22
-
23
- ```typescript file=@cesdk_web_examples/guides-create-composition-position-and-align-browser/browser.ts reference-only
24
- import type { EditorPlugin, EditorPluginContext } from '@cesdk/cesdk-js';
25
-
26
- import {
27
- BlurAssetSource,
28
- ColorPaletteAssetSource,
29
- CropPresetsAssetSource,
30
- DemoAssetSources,
31
- EffectsAssetSource,
32
- FiltersAssetSource,
33
- PagePresetsAssetSource,
34
- StickerAssetSource,
35
- TextAssetSource,
36
- TextComponentAssetSource,
37
- TypefaceAssetSource,
38
- UploadAssetSources,
39
- VectorShapeAssetSource
40
- } from '@cesdk/cesdk-js/plugins';
41
- import { DesignEditorConfig } from './design-editor/plugin';
42
- import packageJson from './package.json';
15
+ >
16
+ > - [View source on GitHub](https://github.com/imgly/cesdk-web-examples/tree/release-$UBQ_VERSION$/guides-create-composition-position-and-align-server-js)
17
+ >
18
+ > - [Open in StackBlitz](https://stackblitz.com/github/imgly/cesdk-web-examples/tree/v$UBQ_VERSION$/guides-create-composition-position-and-align-server-js)
19
+
20
+ CE.SDK positions blocks relative to their parent container with the origin at the top left. You can set positions using absolute values (design units) or as percentages of the parent's dimensions. For multi-element layouts, alignment and distribution APIs arrange blocks precisely without manual calculations.
21
+
22
+ ```typescript file=@cesdk_web_examples/guides-create-composition-position-and-align-server-js/server-js.ts reference-only
23
+ import CreativeEngine from '@cesdk/node';
24
+ import { config } from 'dotenv';
25
+ import { writeFileSync, mkdirSync, existsSync } from 'fs';
26
+
27
+ // Load environment variables
28
+ config();
43
29
 
44
30
  /**
45
- * CE.SDK Plugin: Positioning and Alignment Guide
31
+ * CE.SDK Server Guide: Positioning and Alignment
46
32
  *
47
33
  * Demonstrates positioning, aligning, and distributing design elements:
48
34
  * - Setting block positions with absolute and percentage modes
49
35
  * - Aligning multiple blocks horizontally and vertically
50
36
  * - Aligning a single block within its parent
51
37
  * - Distributing blocks with even spacing
52
- * - Configuring snapping thresholds and guide colors
38
+ * - Exporting results
53
39
  */
54
- class Example implements EditorPlugin {
55
- name = packageJson.name;
56
-
57
- version = packageJson.version;
58
-
59
- private currentDemo = 'position';
60
-
61
- async initialize({ cesdk }: EditorPluginContext): Promise<void> {
62
- if (!cesdk) {
63
- throw new Error('CE.SDK instance is required for this plugin');
64
- }
65
-
66
- await cesdk.addPlugin(new DesignEditorConfig());
67
-
68
- // Add asset source plugins
69
- await cesdk.addPlugin(new BlurAssetSource());
70
- await cesdk.addPlugin(new ColorPaletteAssetSource());
71
- await cesdk.addPlugin(new CropPresetsAssetSource());
72
- await cesdk.addPlugin(
73
- new UploadAssetSources({ include: ['ly.img.image.upload'] })
74
- );
75
- await cesdk.addPlugin(
76
- new DemoAssetSources({
77
- include: [
78
- 'ly.img.templates.blank.*',
79
- 'ly.img.templates.presentation.*',
80
- 'ly.img.templates.print.*',
81
- 'ly.img.templates.social.*',
82
- 'ly.img.image.*'
83
- ]
84
- })
85
- );
86
- await cesdk.addPlugin(new EffectsAssetSource());
87
- await cesdk.addPlugin(new FiltersAssetSource());
88
- await cesdk.addPlugin(new PagePresetsAssetSource());
89
- await cesdk.addPlugin(new StickerAssetSource());
90
- await cesdk.addPlugin(new TextAssetSource());
91
- await cesdk.addPlugin(new TextComponentAssetSource());
92
- await cesdk.addPlugin(new TypefaceAssetSource());
93
- await cesdk.addPlugin(new VectorShapeAssetSource());
94
-
95
- await cesdk.actions.run('scene.create', {
96
- page: { width: 800, height: 600, unit: 'Pixel' }
40
+
41
+ // Initialize CE.SDK engine in headless mode
42
+ const engine = await CreativeEngine.init({
43
+ baseURL: process.env.IMGLY_LOCAL_ASSETS_URL
44
+ // license: process.env.CESDK_LICENSE, // Optional (trial mode available)
45
+ });
46
+
47
+ try {
48
+ // Create a design scene with specific page dimensions
49
+ engine.scene.create('VerticalStack', {
50
+ page: { size: { width: 800, height: 600 } }
51
+ });
52
+ const page = engine.block.findByType('page')[0];
53
+
54
+ // Sample image URL for demonstrations
55
+ const imageUri = 'https://img.ly/static/ubq_samples/sample_1.jpg';
56
+ const blockSize = { width: 150, height: 100 };
57
+
58
+ // Create an image block and position it using absolute coordinates
59
+ const block1 = await engine.block.addImage(imageUri, { size: blockSize });
60
+ engine.block.appendChild(page, block1);
61
+
62
+ // Set position using absolute coordinates (in design units)
63
+ engine.block.setPositionX(block1, 50);
64
+ engine.block.setPositionY(block1, 50);
65
+
66
+ // Query the current position
67
+ const x1 = engine.block.getPositionX(block1);
68
+ const y1 = engine.block.getPositionY(block1);
69
+ console.log(`Block 1 absolute position: (${x1}, ${y1})`);
70
+
71
+ // Create another block and position it using percentage mode
72
+ const block2 = await engine.block.addImage(imageUri, { size: blockSize });
73
+ engine.block.appendChild(page, block2);
74
+
75
+ // Set position mode to Percent and use percentage values
76
+ engine.block.setPositionXMode(block2, 'Percent');
77
+ engine.block.setPositionYMode(block2, 'Percent');
78
+ engine.block.setPositionX(block2, 0.5); // 50% from left
79
+ engine.block.setPositionY(block2, 0.1); // 10% from top
80
+
81
+ // Query the position mode
82
+ const xMode = engine.block.getPositionXMode(block2);
83
+ const yMode = engine.block.getPositionYMode(block2);
84
+ console.log(`Block 2 position modes: X=${xMode}, Y=${yMode}`);
85
+
86
+ // Create a third block and use the convenience method
87
+ const block3 = await engine.block.addImage(imageUri, { size: blockSize });
88
+ engine.block.appendChild(page, block3);
89
+
90
+ // Set both X and Y at once with a specific position mode
91
+ engine.block.setPosition(block3, 0.75, 0.1, { positionMode: 'Percent' });
92
+ console.log(
93
+ 'Block 3 set to 75% horizontal, 10% vertical using setPosition()'
94
+ );
95
+
96
+ // ===== ALIGNMENT DEMONSTRATION =====
97
+ console.log('\n--- Alignment Demo ---');
98
+
99
+ // Create multiple blocks for alignment demonstration
100
+ const alignBlocks: number[] = [];
101
+ const alignPositions = [
102
+ { x: 100, y: 200 },
103
+ { x: 250, y: 250 },
104
+ { x: 180, y: 300 },
105
+ { x: 350, y: 275 }
106
+ ];
107
+
108
+ for (const pos of alignPositions) {
109
+ const block = await engine.block.addImage(imageUri, {
110
+ size: { width: 100, height: 80 }
97
111
  });
112
+ engine.block.appendChild(page, block);
113
+ engine.block.setPositionX(block, pos.x);
114
+ engine.block.setPositionY(block, pos.y);
115
+ alignBlocks.push(block);
116
+ }
98
117
 
99
- // Create navigation buttons for different demos
100
- this.addNavigationButtons(cesdk);
118
+ // Check if blocks can be aligned
119
+ const canAlign = engine.block.isAlignable(alignBlocks);
120
+ console.log('Can align blocks:', canAlign);
101
121
 
102
- // Run the initial demo
103
- await this.runPositionDemo(cesdk);
122
+ if (canAlign) {
123
+ // Align blocks horizontally to the left edge of their bounding box
124
+ engine.block.alignHorizontally(alignBlocks, 'Left');
125
+ console.log('Blocks aligned to left edge');
104
126
  }
105
127
 
106
- private addNavigationButtons(
107
- cesdk: NonNullable<EditorPluginContext['cesdk']>
108
- ) {
109
- // Register position demo button component
110
- cesdk.ui.registerComponent('position-demo-btn', ({ builder }) => {
111
- builder.Button('position-demo', {
112
- label: 'Position',
113
- variant: 'regular',
114
- isActive: this.currentDemo === 'position',
115
- onClick: async () => {
116
- this.currentDemo = 'position';
117
- await this.clearAndRun(cesdk, () => this.runPositionDemo(cesdk));
118
- }
119
- });
120
- });
128
+ // Create a single block to demonstrate aligning within parent
129
+ const singleBlock = await engine.block.addImage(imageUri, {
130
+ size: { width: 120, height: 80 }
131
+ });
132
+ engine.block.appendChild(page, singleBlock);
133
+
134
+ // Position initially off-center
135
+ engine.block.setPositionX(singleBlock, 500);
136
+ engine.block.setPositionY(singleBlock, 450);
137
+
138
+ // Align single block to center of parent (page)
139
+ if (engine.block.isAlignable([singleBlock])) {
140
+ engine.block.alignHorizontally([singleBlock], 'Center');
141
+ engine.block.alignVertically([singleBlock], 'Bottom');
142
+ console.log('Single block centered horizontally and aligned to bottom');
143
+ }
121
144
 
122
- // Register align demo button component
123
- cesdk.ui.registerComponent('align-demo-btn', ({ builder }) => {
124
- builder.Button('align-demo', {
125
- label: 'Align',
126
- variant: 'regular',
127
- isActive: this.currentDemo === 'align',
128
- onClick: async () => {
129
- this.currentDemo = 'align';
130
- await this.clearAndRun(cesdk, () => this.runAlignDemo(cesdk));
131
- }
132
- });
133
- });
145
+ // ===== DISTRIBUTION DEMONSTRATION =====
146
+ console.log('\n--- Distribution Demo ---');
134
147
 
135
- // Register distribute demo button component
136
- cesdk.ui.registerComponent('distribute-demo-btn', ({ builder }) => {
137
- builder.Button('distribute-demo', {
138
- label: 'Distribute',
139
- variant: 'regular',
140
- isActive: this.currentDemo === 'distribute',
141
- onClick: async () => {
142
- this.currentDemo = 'distribute';
143
- await this.clearAndRun(cesdk, () => this.runDistributeDemo(cesdk));
144
- }
145
- });
146
- });
148
+ // Create blocks for distribution demonstration
149
+ const distributeBlocks: number[] = [];
150
+ const xPositions = [480, 530, 650, 750];
147
151
 
148
- // Register snapping demo button component
149
- cesdk.ui.registerComponent('snapping-demo-btn', ({ builder }) => {
150
- builder.Button('snapping-demo', {
151
- label: 'Snapping',
152
- variant: 'regular',
153
- isActive: this.currentDemo === 'snapping',
154
- onClick: async () => {
155
- this.currentDemo = 'snapping';
156
- await this.clearAndRun(cesdk, () => this.runSnappingDemo(cesdk));
157
- }
158
- });
152
+ for (let i = 0; i < xPositions.length; i++) {
153
+ const block = await engine.block.addImage(imageUri, {
154
+ size: { width: 60, height: 50 }
159
155
  });
160
-
161
- // Add buttons to navigation bar
162
- cesdk.ui.insertOrderComponent(
163
- { in: 'ly.img.navigation.bar', position: 'end' },
164
- 'position-demo-btn'
165
- );
166
- cesdk.ui.insertOrderComponent(
167
- { in: 'ly.img.navigation.bar', position: 'end' },
168
- 'align-demo-btn'
169
- );
170
- cesdk.ui.insertOrderComponent(
171
- { in: 'ly.img.navigation.bar', position: 'end' },
172
- 'distribute-demo-btn'
173
- );
174
- cesdk.ui.insertOrderComponent(
175
- { in: 'ly.img.navigation.bar', position: 'end' },
176
- 'snapping-demo-btn'
177
- );
156
+ engine.block.appendChild(page, block);
157
+ engine.block.setPositionX(block, xPositions[i]);
158
+ engine.block.setPositionY(block, 200); // Same Y for horizontal distribution
159
+ distributeBlocks.push(block);
178
160
  }
179
161
 
180
- private async clearAndRun(
181
- cesdk: NonNullable<EditorPluginContext['cesdk']>,
182
- runDemo: () => Promise<void>
183
- ) {
184
- const engine = cesdk.engine;
185
- const page = engine.block.findByType('page')[0];
186
-
187
- // Remove all children from the page
188
- const children = engine.block.getChildren(page);
189
- children.forEach((child) => {
190
- engine.block.destroy(child);
191
- });
162
+ // Check if blocks can be distributed
163
+ const canDistribute = engine.block.isDistributable(distributeBlocks);
164
+ console.log('Can distribute blocks:', canDistribute);
192
165
 
193
- // Run the new demo
194
- await runDemo();
166
+ if (canDistribute) {
167
+ // Distribute blocks horizontally with even spacing
168
+ engine.block.distributeHorizontally(distributeBlocks);
169
+ console.log('Blocks distributed horizontally with even spacing');
195
170
  }
196
171
 
197
- private async runPositionDemo(
198
- cesdk: NonNullable<EditorPluginContext['cesdk']>
199
- ) {
200
- const engine = cesdk.engine;
201
- const page = engine.block.findByType('page')[0];
202
- const pageWidth = engine.block.getWidth(page);
203
- const pageHeight = engine.block.getHeight(page);
204
-
205
- // Create image blocks to demonstrate positioning
206
- const imageUri = 'https://img.ly/static/ubq_samples/sample_1.jpg';
207
- const blockSize = { width: 150, height: 100 };
208
-
209
- // Block 1: Absolute positioning at specific coordinates
210
- const block1 = await engine.block.addImage(imageUri, { size: blockSize });
211
- engine.block.appendChild(page, block1);
212
-
213
- // Set position using absolute coordinates (in design units)
214
- engine.block.setPositionX(block1, 50);
215
- engine.block.setPositionY(block1, 50);
216
-
217
- // Query the current position
218
- const x1 = engine.block.getPositionX(block1);
219
- const y1 = engine.block.getPositionY(block1);
220
- // eslint-disable-next-line no-console
221
- console.log(`Block 1 position: (${x1}, ${y1})`);
222
-
223
- // Block 2: Percentage-based positioning (relative to parent)
224
- const block2 = await engine.block.addImage(imageUri, { size: blockSize });
225
- engine.block.appendChild(page, block2);
226
-
227
- // Set position mode to Percent and use percentage values
228
- engine.block.setPositionXMode(block2, 'Percent');
229
- engine.block.setPositionYMode(block2, 'Percent');
230
- engine.block.setPositionX(block2, 0.5); // 50% from left
231
- engine.block.setPositionY(block2, 0.5); // 50% from top
232
-
233
- // Query the position mode
234
- const xMode = engine.block.getPositionXMode(block2);
235
- const yMode = engine.block.getPositionYMode(block2);
236
- // eslint-disable-next-line no-console
237
- console.log(`Block 2 position modes: X=${xMode}, Y=${yMode}`);
238
-
239
- // Block 3: Using the convenience method setPosition()
240
- const block3 = await engine.block.addImage(imageUri, { size: blockSize });
241
- engine.block.appendChild(page, block3);
242
-
243
- // Set both X and Y at once with a specific position mode
244
- engine.block.setPosition(block3, 0.75, 0.25, { positionMode: 'Percent' });
245
-
246
- // eslint-disable-next-line no-console
247
- console.log(
248
- `Block 3 set to 75% horizontal, 25% vertical using setPosition()`
249
- );
250
-
251
- // Block 4: Bottom right corner using absolute positioning
252
- const block4 = await engine.block.addImage(imageUri, { size: blockSize });
253
- engine.block.appendChild(page, block4);
254
- engine.block.setPositionX(block4, pageWidth - blockSize.width - 50);
255
- engine.block.setPositionY(block4, pageHeight - blockSize.height - 50);
256
-
257
- // eslint-disable-next-line no-console
258
- console.log(
259
- 'Position demo initialized. Blocks placed at various positions.'
260
- );
261
- }
172
+ // Create another set of blocks for vertical distribution
173
+ const verticalBlocks: number[] = [];
174
+ const yPositions = [280, 350, 420, 520];
262
175
 
263
- private async runAlignDemo(cesdk: NonNullable<EditorPluginContext['cesdk']>) {
264
- const engine = cesdk.engine;
265
- const page = engine.block.findByType('page')[0];
266
-
267
- // Create multiple blocks for alignment demonstration
268
- const imageUri = 'https://img.ly/static/ubq_samples/sample_1.jpg';
269
- const blockSize = { width: 100, height: 80 };
270
-
271
- // Create 4 blocks at random-ish positions
272
- const blocks: number[] = [];
273
- const positions = [
274
- { x: 100, y: 100 },
275
- { x: 250, y: 150 },
276
- { x: 180, y: 250 },
277
- { x: 350, y: 200 }
278
- ];
279
-
280
- for (const pos of positions) {
281
- const block = await engine.block.addImage(imageUri, { size: blockSize });
282
- engine.block.appendChild(page, block);
283
- engine.block.setPositionX(block, pos.x);
284
- engine.block.setPositionY(block, pos.y);
285
- blocks.push(block);
286
- }
287
-
288
- // Check if blocks can be aligned
289
- const canAlign = engine.block.isAlignable(blocks);
290
- // eslint-disable-next-line no-console
291
- console.log('Can align blocks:', canAlign);
292
-
293
- if (canAlign) {
294
- // Align blocks horizontally to the left edge of their bounding box
295
- engine.block.alignHorizontally(blocks, 'Left');
296
- // eslint-disable-next-line no-console
297
- console.log('Blocks aligned to left edge');
298
- }
299
-
300
- // Create a single block to demonstrate aligning within parent
301
- const singleBlock = await engine.block.addImage(imageUri, {
302
- size: { width: 150, height: 100 }
176
+ for (let i = 0; i < yPositions.length; i++) {
177
+ const block = await engine.block.addImage(imageUri, {
178
+ size: { width: 60, height: 50 }
303
179
  });
304
- engine.block.appendChild(page, singleBlock);
305
-
306
- // Position initially off-center
307
- engine.block.setPositionX(singleBlock, 500);
308
- engine.block.setPositionY(singleBlock, 300);
309
-
310
- // Align single block to center of parent (page)
311
- if (engine.block.isAlignable([singleBlock])) {
312
- engine.block.alignHorizontally([singleBlock], 'Center');
313
- engine.block.alignVertically([singleBlock], 'Center');
314
- // eslint-disable-next-line no-console
315
- console.log('Single block centered within parent');
316
- }
317
-
318
- // eslint-disable-next-line no-console
319
- console.log(
320
- 'Align demo initialized. Left group aligned left, single block centered.'
321
- );
180
+ engine.block.appendChild(page, block);
181
+ engine.block.setPositionX(block, 700);
182
+ engine.block.setPositionY(block, yPositions[i]);
183
+ verticalBlocks.push(block);
322
184
  }
323
185
 
324
- private async runDistributeDemo(
325
- cesdk: NonNullable<EditorPluginContext['cesdk']>
326
- ) {
327
- const engine = cesdk.engine;
328
- const page = engine.block.findByType('page')[0];
329
-
330
- // Create multiple blocks for distribution demonstration
331
- const imageUri = 'https://img.ly/static/ubq_samples/sample_1.jpg';
332
- const blockSize = { width: 100, height: 80 };
333
-
334
- // Create 4 blocks at uneven horizontal positions
335
- const blocks: number[] = [];
336
- const xPositions = [50, 180, 400, 650];
337
-
338
- for (let i = 0; i < xPositions.length; i++) {
339
- const block = await engine.block.addImage(imageUri, { size: blockSize });
340
- engine.block.appendChild(page, block);
341
- engine.block.setPositionX(block, xPositions[i]);
342
- engine.block.setPositionY(block, 200); // Same Y for horizontal distribution
343
- blocks.push(block);
344
- }
345
-
346
- // Check if blocks can be distributed
347
- const canDistribute = engine.block.isDistributable(blocks);
348
- // eslint-disable-next-line no-console
349
- console.log('Can distribute blocks:', canDistribute);
350
-
351
- if (canDistribute) {
352
- // Distribute blocks horizontally with even spacing
353
- engine.block.distributeHorizontally(blocks);
354
- // eslint-disable-next-line no-console
355
- console.log('Blocks distributed horizontally with even spacing');
356
- }
357
-
358
- // Create another set of blocks for vertical distribution
359
- const verticalBlocks: number[] = [];
360
- const yPositions = [50, 150, 350, 500];
361
-
362
- for (let i = 0; i < yPositions.length; i++) {
363
- const block = await engine.block.addImage(imageUri, { size: blockSize });
364
- engine.block.appendChild(page, block);
365
- engine.block.setPositionX(block, 600); // Same X for vertical distribution
366
- engine.block.setPositionY(block, yPositions[i]);
367
- verticalBlocks.push(block);
368
- }
369
-
370
- if (engine.block.isDistributable(verticalBlocks)) {
371
- engine.block.distributeVertically(verticalBlocks);
372
- // eslint-disable-next-line no-console
373
- console.log('Vertical blocks distributed with even spacing');
374
- }
375
-
376
- // eslint-disable-next-line no-console
377
- console.log(
378
- 'Distribute demo initialized. Left group horizontal, right group vertical.'
379
- );
186
+ if (engine.block.isDistributable(verticalBlocks)) {
187
+ engine.block.distributeVertically(verticalBlocks);
188
+ console.log('Vertical blocks distributed with even spacing');
380
189
  }
381
190
 
382
- private async runSnappingDemo(
383
- cesdk: NonNullable<EditorPluginContext['cesdk']>
384
- ) {
385
- const engine = cesdk.engine;
386
- const page = engine.block.findByType('page')[0];
387
-
388
- // Create some blocks to demonstrate snapping
389
- const imageUri = 'https://img.ly/static/ubq_samples/sample_1.jpg';
191
+ // ===== SUMMARY =====
192
+ console.log('\n--- Summary ---');
193
+ const allGraphics = engine.block.findByType('graphic');
194
+ console.log(`Total blocks created: ${allGraphics.length}`);
390
195
 
391
- // Create reference blocks (these will act as snap targets)
392
- const refBlock1 = await engine.block.addImage(imageUri, {
393
- size: { width: 150, height: 100 }
394
- });
395
- engine.block.appendChild(page, refBlock1);
396
- engine.block.setPositionX(refBlock1, 100);
397
- engine.block.setPositionY(refBlock1, 100);
398
-
399
- const refBlock2 = await engine.block.addImage(imageUri, {
400
- size: { width: 150, height: 100 }
401
- });
402
- engine.block.appendChild(page, refBlock2);
403
- engine.block.setPositionX(refBlock2, 100);
404
- engine.block.setPositionY(refBlock2, 350);
196
+ // Export the scene to PNG
197
+ const blob = await engine.block.export(page, { mimeType: 'image/png' });
198
+ const buffer = Buffer.from(await blob.arrayBuffer());
405
199
 
406
- // Create a draggable block
407
- const dragBlock = await engine.block.addImage(imageUri, {
408
- size: { width: 120, height: 80 }
409
- });
410
- engine.block.appendChild(page, dragBlock);
411
- engine.block.setPositionX(dragBlock, 400);
412
- engine.block.setPositionY(dragBlock, 225);
413
-
414
- // Configure position snapping threshold (pixels)
415
- // Higher values = snapping activates from further away
416
- engine.editor.setSettingFloat('positionSnappingThreshold', 10);
417
-
418
- // Configure rotation snapping threshold (degrees)
419
- engine.editor.setSettingFloat('rotationSnappingThreshold', 5);
420
- // eslint-disable-next-line no-console
421
- console.log('Snapping thresholds configured: position=10px, rotation=5deg');
422
-
423
- // Customize snapping guide colors
424
- engine.editor.setSettingColor('snappingGuideColor', {
425
- r: 0.2,
426
- g: 0.6,
427
- b: 1.0,
428
- a: 1.0
429
- });
200
+ // Ensure output directory exists
201
+ if (!existsSync('output')) {
202
+ mkdirSync('output');
203
+ }
430
204
 
431
- engine.editor.setSettingColor('rotationSnappingGuideColor', {
432
- r: 1.0,
433
- g: 0.4,
434
- b: 0.2,
435
- a: 1.0
436
- });
205
+ // Save to file
206
+ writeFileSync('output/position-and-align.png', buffer);
207
+ console.log('\nExported to output/position-and-align.png');
208
+ } finally {
209
+ engine.dispose();
210
+ }
211
+ ```
437
212
 
438
- engine.editor.setSettingColor('ruleOfThirdsLineColor', {
439
- r: 0.5,
440
- g: 0.5,
441
- b: 0.5,
442
- a: 0.5
443
- });
444
- // eslint-disable-next-line no-console
445
- console.log('Snapping guide colors configured');
213
+ This guide covers how to set block positions using different modes, align blocks horizontally and vertically, and distribute blocks with even spacing in a headless Node.js environment.
446
214
 
447
- // Select the draggable block so user can interact with it
448
- engine.block.setSelected(dragBlock, true);
215
+ ## Setup
449
216
 
450
- // eslint-disable-next-line no-console
451
- console.log(
452
- 'Snapping demo initialized. Drag the selected block to see snapping guides.'
453
- );
454
- }
455
- }
217
+ Initialize the CE.SDK engine in headless mode for server-side processing.
456
218
 
457
- export default Example;
219
+ ```typescript highlight-setup
220
+ // Initialize CE.SDK engine in headless mode
221
+ const engine = await CreativeEngine.init({
222
+ baseURL: process.env.IMGLY_LOCAL_ASSETS_URL
223
+ // license: process.env.CESDK_LICENSE, // Optional (trial mode available)
224
+ });
458
225
  ```
459
226
 
460
- This guide covers how to set block positions using different modes, align blocks horizontally and vertically, distribute blocks with even spacing, and configure snapping for interactive editing.
461
-
462
227
  ## Coordinate System
463
228
 
464
229
  CE.SDK uses a coordinate system where the origin (0, 0) is at the top-left corner of the parent container. The X axis extends to the right and the Y axis extends downward. All positions are relative to the block's parent.
@@ -470,15 +235,18 @@ CE.SDK uses a coordinate system where the origin (0, 0) is at the top-left corne
470
235
  We can position blocks using absolute coordinates in design units. This is useful when you need precise control over element placement.
471
236
 
472
237
  ```typescript highlight-absolute-position
473
- // Set position using absolute coordinates (in design units)
474
- engine.block.setPositionX(block1, 50);
475
- engine.block.setPositionY(block1, 50);
476
-
477
- // Query the current position
478
- const x1 = engine.block.getPositionX(block1);
479
- const y1 = engine.block.getPositionY(block1);
480
- // eslint-disable-next-line no-console
481
- console.log(`Block 1 position: (${x1}, ${y1})`);
238
+ // Create an image block and position it using absolute coordinates
239
+ const block1 = await engine.block.addImage(imageUri, { size: blockSize });
240
+ engine.block.appendChild(page, block1);
241
+
242
+ // Set position using absolute coordinates (in design units)
243
+ engine.block.setPositionX(block1, 50);
244
+ engine.block.setPositionY(block1, 50);
245
+
246
+ // Query the current position
247
+ const x1 = engine.block.getPositionX(block1);
248
+ const y1 = engine.block.getPositionY(block1);
249
+ console.log(`Block 1 absolute position: (${x1}, ${y1})`);
482
250
  ```
483
251
 
484
252
  The `engine.block.setPositionX()` and `engine.block.setPositionY()` methods set the block's position relative to its parent. Use `engine.block.getPositionX()` and `engine.block.getPositionY()` to query the current position.
@@ -488,21 +256,20 @@ The `engine.block.setPositionX()` and `engine.block.setPositionY()` methods set
488
256
  Positions can also be set as percentages of the parent's dimensions. This approach is useful for responsive layouts that adapt to different container sizes.
489
257
 
490
258
  ```typescript highlight-percent-position
491
- // Block 2: Percentage-based positioning (relative to parent)
492
- const block2 = await engine.block.addImage(imageUri, { size: blockSize });
493
- engine.block.appendChild(page, block2);
494
-
495
- // Set position mode to Percent and use percentage values
496
- engine.block.setPositionXMode(block2, 'Percent');
497
- engine.block.setPositionYMode(block2, 'Percent');
498
- engine.block.setPositionX(block2, 0.5); // 50% from left
499
- engine.block.setPositionY(block2, 0.5); // 50% from top
500
-
501
- // Query the position mode
502
- const xMode = engine.block.getPositionXMode(block2);
503
- const yMode = engine.block.getPositionYMode(block2);
504
- // eslint-disable-next-line no-console
505
- console.log(`Block 2 position modes: X=${xMode}, Y=${yMode}`);
259
+ // Create another block and position it using percentage mode
260
+ const block2 = await engine.block.addImage(imageUri, { size: blockSize });
261
+ engine.block.appendChild(page, block2);
262
+
263
+ // Set position mode to Percent and use percentage values
264
+ engine.block.setPositionXMode(block2, 'Percent');
265
+ engine.block.setPositionYMode(block2, 'Percent');
266
+ engine.block.setPositionX(block2, 0.5); // 50% from left
267
+ engine.block.setPositionY(block2, 0.1); // 10% from top
268
+
269
+ // Query the position mode
270
+ const xMode = engine.block.getPositionXMode(block2);
271
+ const yMode = engine.block.getPositionYMode(block2);
272
+ console.log(`Block 2 position modes: X=${xMode}, Y=${yMode}`);
506
273
  ```
507
274
 
508
275
  Position modes are set using `engine.block.setPositionXMode()` and `engine.block.setPositionYMode()`. When set to `'Percent'`, position values represent a fraction of the parent's size (0.5 = 50%). Query the current mode with `engine.block.getPositionXMode()` and `engine.block.getPositionYMode()`.
@@ -512,15 +279,15 @@ Position modes are set using `engine.block.setPositionXMode()` and `engine.block
512
279
  CE.SDK provides a convenience method that sets both coordinates at once, optionally with a position mode.
513
280
 
514
281
  ```typescript highlight-setPosition-convenience
515
- // Block 3: Using the convenience method setPosition()
516
- const block3 = await engine.block.addImage(imageUri, { size: blockSize });
517
- engine.block.appendChild(page, block3);
518
-
519
- // Set both X and Y at once with a specific position mode
520
- engine.block.setPosition(block3, 0.75, 0.25, { positionMode: 'Percent' });
521
-
522
- // eslint-disable-next-line no-console
523
- console.log(`Block 3 set to 75% horizontal, 25% vertical using setPosition()`);
282
+ // Create a third block and use the convenience method
283
+ const block3 = await engine.block.addImage(imageUri, { size: blockSize });
284
+ engine.block.appendChild(page, block3);
285
+
286
+ // Set both X and Y at once with a specific position mode
287
+ engine.block.setPosition(block3, 0.75, 0.1, { positionMode: 'Percent' });
288
+ console.log(
289
+ 'Block 3 set to 75% horizontal, 10% vertical using setPosition()'
290
+ );
524
291
  ```
525
292
 
526
293
  The `engine.block.setPosition()` method accepts X and Y values along with an optional `positionMode` parameter. This simplifies code when setting both coordinates simultaneously.
@@ -533,8 +300,7 @@ Multiple blocks can be aligned within their combined bounding box. This is usefu
533
300
 
534
301
  ```typescript highlight-check-alignable
535
302
  // Check if blocks can be aligned
536
- const canAlign = engine.block.isAlignable(blocks);
537
- // eslint-disable-next-line no-console
303
+ const canAlign = engine.block.isAlignable(alignBlocks);
538
304
  console.log('Can align blocks:', canAlign);
539
305
  ```
540
306
 
@@ -542,8 +308,7 @@ Before aligning, we check if the blocks can be aligned using `engine.block.isAli
542
308
 
543
309
  ```typescript highlight-align-horizontal
544
310
  // Align blocks horizontally to the left edge of their bounding box
545
- engine.block.alignHorizontally(blocks, 'Left');
546
- // eslint-disable-next-line no-console
311
+ engine.block.alignHorizontally(alignBlocks, 'Left');
547
312
  console.log('Blocks aligned to left edge');
548
313
  ```
549
314
 
@@ -554,23 +319,22 @@ The `engine.block.alignHorizontally()` method accepts an array of block IDs and
554
319
  When you pass a single block to the alignment methods, it aligns within its parent container rather than a group bounding box.
555
320
 
556
321
  ```typescript highlight-align-single-block
557
- // Create a single block to demonstrate aligning within parent
558
- const singleBlock = await engine.block.addImage(imageUri, {
559
- size: { width: 150, height: 100 }
560
- });
561
- engine.block.appendChild(page, singleBlock);
562
-
563
- // Position initially off-center
564
- engine.block.setPositionX(singleBlock, 500);
565
- engine.block.setPositionY(singleBlock, 300);
566
-
567
- // Align single block to center of parent (page)
568
- if (engine.block.isAlignable([singleBlock])) {
569
- engine.block.alignHorizontally([singleBlock], 'Center');
570
- engine.block.alignVertically([singleBlock], 'Center');
571
- // eslint-disable-next-line no-console
572
- console.log('Single block centered within parent');
573
- }
322
+ // Create a single block to demonstrate aligning within parent
323
+ const singleBlock = await engine.block.addImage(imageUri, {
324
+ size: { width: 120, height: 80 }
325
+ });
326
+ engine.block.appendChild(page, singleBlock);
327
+
328
+ // Position initially off-center
329
+ engine.block.setPositionX(singleBlock, 500);
330
+ engine.block.setPositionY(singleBlock, 450);
331
+
332
+ // Align single block to center of parent (page)
333
+ if (engine.block.isAlignable([singleBlock])) {
334
+ engine.block.alignHorizontally([singleBlock], 'Center');
335
+ engine.block.alignVertically([singleBlock], 'Bottom');
336
+ console.log('Single block centered horizontally and aligned to bottom');
337
+ }
574
338
  ```
575
339
 
576
340
  This approach is useful for centering elements on a page or positioning them at specific edges of the container.
@@ -581,8 +345,7 @@ Distribution spaces blocks evenly within their bounding box. This is ideal for c
581
345
 
582
346
  ```typescript highlight-check-distributable
583
347
  // Check if blocks can be distributed
584
- const canDistribute = engine.block.isDistributable(blocks);
585
- // eslint-disable-next-line no-console
348
+ const canDistribute = engine.block.isDistributable(distributeBlocks);
586
349
  console.log('Can distribute blocks:', canDistribute);
587
350
  ```
588
351
 
@@ -590,84 +353,54 @@ The `engine.block.isDistributable()` method verifies that the blocks can be dist
590
353
 
591
354
  ```typescript highlight-distribute-horizontal
592
355
  // Distribute blocks horizontally with even spacing
593
- engine.block.distributeHorizontally(blocks);
594
- // eslint-disable-next-line no-console
356
+ engine.block.distributeHorizontally(distributeBlocks);
595
357
  console.log('Blocks distributed horizontally with even spacing');
596
358
  ```
597
359
 
598
360
  The `engine.block.distributeHorizontally()` method arranges blocks so the horizontal space between them is equal. The first and last blocks remain in place while the middle blocks are repositioned.
599
361
 
600
362
  ```typescript highlight-distribute-vertical
601
- // Create another set of blocks for vertical distribution
602
- const verticalBlocks: number[] = [];
603
- const yPositions = [50, 150, 350, 500];
604
-
605
- for (let i = 0; i < yPositions.length; i++) {
606
- const block = await engine.block.addImage(imageUri, { size: blockSize });
607
- engine.block.appendChild(page, block);
608
- engine.block.setPositionX(block, 600); // Same X for vertical distribution
609
- engine.block.setPositionY(block, yPositions[i]);
610
- verticalBlocks.push(block);
611
- }
363
+ // Create another set of blocks for vertical distribution
364
+ const verticalBlocks: number[] = [];
365
+ const yPositions = [280, 350, 420, 520];
612
366
 
613
- if (engine.block.isDistributable(verticalBlocks)) {
614
- engine.block.distributeVertically(verticalBlocks);
615
- // eslint-disable-next-line no-console
616
- console.log('Vertical blocks distributed with even spacing');
617
- }
367
+ for (let i = 0; i < yPositions.length; i++) {
368
+ const block = await engine.block.addImage(imageUri, {
369
+ size: { width: 60, height: 50 }
370
+ });
371
+ engine.block.appendChild(page, block);
372
+ engine.block.setPositionX(block, 700);
373
+ engine.block.setPositionY(block, yPositions[i]);
374
+ verticalBlocks.push(block);
375
+ }
376
+
377
+ if (engine.block.isDistributable(verticalBlocks)) {
378
+ engine.block.distributeVertically(verticalBlocks);
379
+ console.log('Vertical blocks distributed with even spacing');
380
+ }
618
381
  ```
619
382
 
620
383
  Similarly, `engine.block.distributeVertically()` distributes blocks with equal vertical spacing.
621
384
 
622
- ## Configuring Snapping
623
-
624
- Snapping provides visual guides when dragging elements in the editor, helping users align blocks precisely. Configure the snapping sensitivity and appearance using editor settings.
625
-
626
- ### Setting Snapping Thresholds
627
-
628
- ```typescript highlight-configure-snapping-threshold
629
- // Configure position snapping threshold (pixels)
630
- // Higher values = snapping activates from further away
631
- engine.editor.setSettingFloat('positionSnappingThreshold', 10);
632
-
633
- // Configure rotation snapping threshold (degrees)
634
- engine.editor.setSettingFloat('rotationSnappingThreshold', 5);
635
- // eslint-disable-next-line no-console
636
- console.log('Snapping thresholds configured: position=10px, rotation=5deg');
637
- ```
638
-
639
- The `positionSnappingThreshold` setting controls how close (in pixels) a block must be to a snap target before snapping activates. Higher values make snapping more "sticky". The `rotationSnappingThreshold` setting controls rotation snapping sensitivity in radians.
385
+ ## Exporting Results
640
386
 
641
- ### Customizing Snapping Guide Colors
387
+ After positioning and aligning your blocks, export the result to a file.
642
388
 
643
- ```typescript highlight-configure-snapping-colors
644
- // Customize snapping guide colors
645
- engine.editor.setSettingColor('snappingGuideColor', {
646
- r: 0.2,
647
- g: 0.6,
648
- b: 1.0,
649
- a: 1.0
650
- });
389
+ ```typescript highlight-export
390
+ // Export the scene to PNG
391
+ const blob = await engine.block.export(page, { mimeType: 'image/png' });
392
+ const buffer = Buffer.from(await blob.arrayBuffer());
651
393
 
652
- engine.editor.setSettingColor('rotationSnappingGuideColor', {
653
- r: 1.0,
654
- g: 0.4,
655
- b: 0.2,
656
- a: 1.0
657
- });
394
+ // Ensure output directory exists
395
+ if (!existsSync('output')) {
396
+ mkdirSync('output');
397
+ }
658
398
 
659
- engine.editor.setSettingColor('ruleOfThirdsLineColor', {
660
- r: 0.5,
661
- g: 0.5,
662
- b: 0.5,
663
- a: 0.5
664
- });
665
- // eslint-disable-next-line no-console
666
- console.log('Snapping guide colors configured');
399
+ // Save to file
400
+ writeFileSync('output/position-and-align.png', buffer);
401
+ console.log('\nExported to output/position-and-align.png');
667
402
  ```
668
403
 
669
- Customize the appearance of snapping guides using color settings. The `snappingGuideColor` controls position snapping lines, `rotationSnappingGuideColor` controls rotation guides, and `ruleOfThirdsLineColor` controls composition guide lines.
670
-
671
404
  ## Troubleshooting
672
405
 
673
406
  ### Position Not Updating
@@ -696,25 +429,23 @@ If `engine.block.distributeHorizontally()` or `engine.block.distributeVertically
696
429
 
697
430
  ## API Reference
698
431
 
699
- | Method | Description |
700
- | ------------------------------------------------ | ------------------------------------------------ |
701
- | `engine.block.getPositionX(id)` | Get block's X position |
702
- | `engine.block.getPositionY(id)` | Get block's Y position |
703
- | `engine.block.setPositionX(id, value)` | Set block's X position |
704
- | `engine.block.setPositionY(id, value)` | Set block's Y position |
705
- | `engine.block.getPositionXMode(id)` | Get X position mode (Absolute/Percent) |
706
- | `engine.block.getPositionYMode(id)` | Get Y position mode (Absolute/Percent) |
707
- | `engine.block.setPositionXMode(id, mode)` | Set X position mode |
708
- | `engine.block.setPositionYMode(id, mode)` | Set Y position mode |
709
- | `engine.block.setPosition(id, x, y, options)` | Set both coordinates with optional mode |
710
- | `engine.block.isAlignable(ids)` | Check if blocks can be aligned |
711
- | `engine.block.alignHorizontally(ids, alignment)` | Align blocks horizontally (Left/Right/Center) |
712
- | `engine.block.alignVertically(ids, alignment)` | Align blocks vertically (Top/Bottom/Center) |
713
- | `engine.block.isDistributable(ids)` | Check if blocks can be distributed |
714
- | `engine.block.distributeHorizontally(ids)` | Distribute blocks horizontally with even spacing |
715
- | `engine.block.distributeVertically(ids)` | Distribute blocks vertically with even spacing |
716
- | `engine.editor.setSettingFloat(keypath, value)` | Set float settings (snapping thresholds) |
717
- | `engine.editor.setSettingColor(keypath, color)` | Set color settings (snapping guide colors) |
432
+ | Method | Description |
433
+ | --------------------------------------------------- | ---------------------------------------------- |
434
+ | `engine.block.getPositionX(id)` | Get block's X position |
435
+ | `engine.block.getPositionY(id)` | Get block's Y position |
436
+ | `engine.block.setPositionX(id, value)` | Set block's X position |
437
+ | `engine.block.setPositionY(id, value)` | Set block's Y position |
438
+ | `engine.block.getPositionXMode(id)` | Get X position mode (Absolute/Percent) |
439
+ | `engine.block.getPositionYMode(id)` | Get Y position mode (Absolute/Percent) |
440
+ | `engine.block.setPositionXMode(id, mode)` | Set X position mode |
441
+ | `engine.block.setPositionYMode(id, mode)` | Set Y position mode |
442
+ | `engine.block.setPosition(id, x, y, options)` | Set both coordinates with optional mode |
443
+ | `engine.block.isAlignable(ids)` | Check if blocks can be aligned |
444
+ | `engine.block.alignHorizontally(ids, alignment)` | Align blocks horizontally (Left/Right/Center) |
445
+ | `engine.block.alignVertically(ids, alignment)` | Align blocks vertically (Top/Bottom/Center) |
446
+ | `engine.block.isDistributable(ids)` | Check if blocks can be distributed |
447
+ | `engine.block.distributeHorizontally(ids)` | Distribute blocks horizontally with even spacing |
448
+ | `engine.block.distributeVertically(ids)` | Distribute blocks vertically with even spacing |
718
449
 
719
450
  ## Next Steps
720
451
 
@@ -724,11 +455,13 @@ Now that you understand positioning and alignment, explore related layout featur
724
455
  - [Grouping](./create-composition/group-and-ungroup.md) - Group related elements together
725
456
  - [Multi-Page Layouts](./create-composition/multi-page.md) - Create multi-page designs with multiple pages in a single scene
726
457
 
458
+
459
+
727
460
  ---
728
461
 
729
462
  ## More Resources
730
463
 
731
- - **[Vanilla JS/TS Documentation Index](https://img.ly/docs/cesdk/js.md)** - Browse all Vanilla JS/TS documentation
464
+ - **[Node.js Documentation Index](https://img.ly/docs/cesdk/node.md)** - Browse all Node.js documentation
732
465
  - **[Complete Documentation](./llms-full.txt.md)** - Full documentation in one file (for LLMs)
733
- - **[Web Documentation](./js.md)** - Interactive documentation with examples
734
- - **[Support](mailto:support@img.ly)** - Contact IMG.LY support
466
+ - **[Web Documentation](./node.md)** - Interactive documentation with examples
467
+ - **[Support](mailto:support@img.ly)** - Contact IMG.LY support