@imgly/codesign-mcp 0.1.5 → 0.1.7

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 (1085) hide show
  1. package/README.md +56 -11
  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 +16 -30
  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 +136 -24
  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 +22 -4
  572. package/dist/config.d.ts.map +1 -1
  573. package/dist/config.js +32 -2
  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 +40 -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 +10 -2
  600. package/dist/engine/cesdk-adapter.d.ts.map +1 -1
  601. package/dist/engine/cesdk-adapter.js +17 -3
  602. package/dist/engine/cesdk-adapter.js.map +1 -1
  603. package/dist/engine/engine-capacity.d.ts +16 -0
  604. package/dist/engine/engine-capacity.d.ts.map +1 -0
  605. package/dist/engine/engine-capacity.js +48 -0
  606. package/dist/engine/engine-capacity.js.map +1 -0
  607. package/dist/engine/engine-slots.d.ts +48 -0
  608. package/dist/engine/engine-slots.d.ts.map +1 -0
  609. package/dist/engine/engine-slots.js +182 -0
  610. package/dist/engine/engine-slots.js.map +1 -0
  611. package/dist/engine/index.d.ts +1 -0
  612. package/dist/engine/index.d.ts.map +1 -1
  613. package/dist/engine/index.js +4 -0
  614. package/dist/engine/index.js.map +1 -1
  615. package/dist/engine/scene-resource-schemes.d.ts +2 -0
  616. package/dist/engine/scene-resource-schemes.d.ts.map +1 -0
  617. package/dist/engine/scene-resource-schemes.js +20 -0
  618. package/dist/engine/scene-resource-schemes.js.map +1 -0
  619. package/dist/http/server.d.ts +0 -6
  620. package/dist/http/server.d.ts.map +1 -1
  621. package/dist/http/server.js +1 -2
  622. package/dist/http/server.js.map +1 -1
  623. package/dist/server.d.ts +0 -4
  624. package/dist/server.d.ts.map +1 -1
  625. package/dist/server.js +4 -60
  626. package/dist/server.js.map +1 -1
  627. package/dist/tools/asset-generate.d.ts.map +1 -1
  628. package/dist/tools/asset-generate.js +1 -8
  629. package/dist/tools/asset-generate.js.map +1 -1
  630. package/dist/tools/edit.d.ts +3 -0
  631. package/dist/tools/edit.d.ts.map +1 -1
  632. package/dist/tools/edit.js +145 -96
  633. package/dist/tools/edit.js.map +1 -1
  634. package/dist/tools/engine.d.ts +13 -0
  635. package/dist/tools/engine.d.ts.map +1 -1
  636. package/dist/tools/engine.js +28 -0
  637. package/dist/tools/engine.js.map +1 -1
  638. package/dist/tools/export.d.ts +3 -0
  639. package/dist/tools/export.d.ts.map +1 -1
  640. package/dist/tools/export.js +146 -108
  641. package/dist/tools/export.js.map +1 -1
  642. package/dist/tools/import.d.ts +12 -0
  643. package/dist/tools/import.d.ts.map +1 -0
  644. package/dist/tools/import.js +144 -0
  645. package/dist/tools/import.js.map +1 -0
  646. package/dist/tools/index.d.ts +3 -0
  647. package/dist/tools/index.d.ts.map +1 -1
  648. package/dist/tools/index.js +44 -4
  649. package/dist/tools/index.js.map +1 -1
  650. package/dist/tools/load.d.ts +26 -0
  651. package/dist/tools/load.d.ts.map +1 -0
  652. package/dist/tools/load.js +400 -0
  653. package/dist/tools/load.js.map +1 -0
  654. package/dist/tools/preview.d.ts +3 -0
  655. package/dist/tools/preview.d.ts.map +1 -1
  656. package/dist/tools/preview.js +79 -44
  657. package/dist/tools/preview.js.map +1 -1
  658. package/dist/tools/result.d.ts +1 -1
  659. package/dist/tools/result.js +2 -2
  660. package/dist/tools/result.js.map +1 -1
  661. package/dist/tools/spans.d.ts +45 -0
  662. package/dist/tools/spans.d.ts.map +1 -0
  663. package/dist/tools/spans.js +77 -0
  664. package/dist/tools/spans.js.map +1 -0
  665. package/dist/tools/telemetry-wrapper.d.ts +4 -0
  666. package/dist/tools/telemetry-wrapper.d.ts.map +1 -0
  667. package/dist/tools/telemetry-wrapper.js +43 -0
  668. package/dist/tools/telemetry-wrapper.js.map +1 -0
  669. package/dist/viewer/cesdk-cdn.d.ts +16 -0
  670. package/dist/viewer/cesdk-cdn.d.ts.map +1 -0
  671. package/dist/viewer/cesdk-cdn.js +30 -0
  672. package/dist/viewer/cesdk-cdn.js.map +1 -0
  673. package/dist/viewer/router.d.ts +6 -0
  674. package/dist/viewer/router.d.ts.map +1 -1
  675. package/dist/viewer/router.js +4 -1
  676. package/dist/viewer/router.js.map +1 -1
  677. package/dist/viewer/spa-assets.generated.d.ts.map +1 -1
  678. package/dist/viewer/spa-assets.generated.js +2 -3
  679. package/dist/viewer/spa-assets.generated.js.map +1 -1
  680. package/dist/workspace/content-hash.d.ts +2 -0
  681. package/dist/workspace/content-hash.d.ts.map +1 -0
  682. package/dist/workspace/content-hash.js +15 -0
  683. package/dist/workspace/content-hash.js.map +1 -0
  684. package/package.json +19 -10
  685. package/assets/docs/guide/actions.md +0 -1038
  686. package/assets/docs/guide/animation/overview.md +0 -22
  687. package/assets/docs/guide/automation/batch-processing.md +0 -474
  688. package/assets/docs/guide/browser-support.md +0 -38
  689. package/assets/docs/guide/concepts/edit-modes.md +0 -431
  690. package/assets/docs/guide/concepts/headless-mode/browser.md +0 -291
  691. package/assets/docs/guide/create-audio/audio.md +0 -336
  692. package/assets/docs/guide/create-video/overview.md +0 -224
  693. package/assets/docs/guide/create-video/timeline-editor.md +0 -622
  694. package/assets/docs/guide/create-video/update-caption-presets.md +0 -676
  695. package/assets/docs/guide/edit-image/vectorize.md +0 -204
  696. package/assets/docs/guide/export-save-publish/export/to-html5.md +0 -474
  697. package/assets/docs/guide/export-save-publish/export/to-mp4.md +0 -364
  698. package/assets/docs/guide/get-started/vanilla-js/quickstart.md +0 -175
  699. package/assets/docs/guide/grid-and-rulers.md +0 -222
  700. package/assets/docs/guide/guides/text/rendering-internals.md +0 -796
  701. package/assets/docs/guide/import-media/asset-library.md +0 -23
  702. package/assets/docs/guide/import-media/asset-panel/basics.md +0 -324
  703. package/assets/docs/guide/import-media/asset-panel/customize.md +0 -478
  704. package/assets/docs/guide/import-media/asset-panel/thumbnails.md +0 -633
  705. package/assets/docs/guide/import-media/capture-from-camera/record-video.md +0 -137
  706. package/assets/docs/guide/import-media/capture-from-camera.md +0 -20
  707. package/assets/docs/guide/import-media/from-local-source/user-upload.md +0 -438
  708. package/assets/docs/guide/import-media/from-local-source.md +0 -20
  709. package/assets/docs/guide/import-media/from-remote-source/getty-images.md +0 -627
  710. package/assets/docs/guide/import-media/from-remote-source/imgly-premium-assets.md +0 -625
  711. package/assets/docs/guide/import-media/from-remote-source/pexels.md +0 -692
  712. package/assets/docs/guide/import-media/from-remote-source/soundstripe.md +0 -497
  713. package/assets/docs/guide/import-media/from-remote-source/third-party.md +0 -51
  714. package/assets/docs/guide/import-media/from-remote-source/unsplash.md +0 -914
  715. package/assets/docs/guide/import-media/from-remote-source/your-server.md +0 -764
  716. package/assets/docs/guide/open-the-editor/from-htmlcanvas.md +0 -228
  717. package/assets/docs/guide/open-the-editor/set-zoom-level.md +0 -303
  718. package/assets/docs/guide/plugins/asset-sources.md +0 -553
  719. package/assets/docs/guide/starterkits/3d-mockup-editor.md +0 -748
  720. package/assets/docs/guide/starterkits/advanced-editor.md +0 -698
  721. package/assets/docs/guide/starterkits/advanced-video-editor.md +0 -696
  722. package/assets/docs/guide/starterkits/ai-editor.md +0 -749
  723. package/assets/docs/guide/starterkits/airtable-image-editor.md +0 -672
  724. package/assets/docs/guide/starterkits/apparel-ui.md +0 -188
  725. package/assets/docs/guide/starterkits/assets.md +0 -27
  726. package/assets/docs/guide/starterkits/auto-resize.md +0 -586
  727. package/assets/docs/guide/starterkits/automated-video-generation.md +0 -692
  728. package/assets/docs/guide/starterkits/background-removal-editor.md +0 -480
  729. package/assets/docs/guide/starterkits/content-moderation.md +0 -863
  730. package/assets/docs/guide/starterkits/creative-automation.md +0 -28
  731. package/assets/docs/guide/starterkits/custom-built-uis.md +0 -26
  732. package/assets/docs/guide/starterkits/customization.md +0 -29
  733. package/assets/docs/guide/starterkits/cutout-lines-editor.md +0 -470
  734. package/assets/docs/guide/starterkits/data-merge.md +0 -850
  735. package/assets/docs/guide/starterkits/design-editor.md +0 -698
  736. package/assets/docs/guide/starterkits/design-generation.md +0 -719
  737. package/assets/docs/guide/starterkits/design-validation.md +0 -808
  738. package/assets/docs/guide/starterkits/editor-ui-configurations.md +0 -14
  739. package/assets/docs/guide/starterkits/export-options.md +0 -724
  740. package/assets/docs/guide/starterkits/export-using-renderer.md +0 -708
  741. package/assets/docs/guide/starterkits/extensibility.md +0 -28
  742. package/assets/docs/guide/starterkits/force-crop-editor.md +0 -675
  743. package/assets/docs/guide/starterkits/form-based-template-adoption.md +0 -522
  744. package/assets/docs/guide/starterkits/getty-images-editor.md +0 -700
  745. package/assets/docs/guide/starterkits/html5-ads-exporter.md +0 -719
  746. package/assets/docs/guide/starterkits/indesign-template-import.md +0 -580
  747. package/assets/docs/guide/starterkits/layouts-editor.md +0 -724
  748. package/assets/docs/guide/starterkits/mobile-ui.md +0 -185
  749. package/assets/docs/guide/starterkits/mockup-editor.md +0 -745
  750. package/assets/docs/guide/starterkits/multi-image-generation.md +0 -542
  751. package/assets/docs/guide/starterkits/page-sizes-editor.md +0 -657
  752. package/assets/docs/guide/starterkits/pexels-image-editor.md +0 -665
  753. package/assets/docs/guide/starterkits/photo-editor.md +0 -755
  754. package/assets/docs/guide/starterkits/photo-ui.md +0 -186
  755. package/assets/docs/guide/starterkits/photobook-ui.md +0 -188
  756. package/assets/docs/guide/starterkits/placeholders.md +0 -678
  757. package/assets/docs/guide/starterkits/player.md +0 -405
  758. package/assets/docs/guide/starterkits/plugins.md +0 -25
  759. package/assets/docs/guide/starterkits/postcard-editor.md +0 -202
  760. package/assets/docs/guide/starterkits/pptx-template-import.md +0 -581
  761. package/assets/docs/guide/starterkits/print-ready-pdf-editor.md +0 -746
  762. package/assets/docs/guide/starterkits/product-editor.md +0 -773
  763. package/assets/docs/guide/starterkits/psd-template-import.md +0 -580
  764. package/assets/docs/guide/starterkits/qr-code-editor.md +0 -470
  765. package/assets/docs/guide/starterkits/single-page-editor.md +0 -661
  766. package/assets/docs/guide/starterkits/start-with-image.md +0 -684
  767. package/assets/docs/guide/starterkits/start-with-video.md +0 -651
  768. package/assets/docs/guide/starterkits/t-shirt-designer.md +0 -742
  769. package/assets/docs/guide/starterkits/templating.md +0 -23
  770. package/assets/docs/guide/starterkits/theming.md +0 -662
  771. package/assets/docs/guide/starterkits/translation-internationalization.md +0 -662
  772. package/assets/docs/guide/starterkits/unsplash-editor.md +0 -839
  773. package/assets/docs/guide/starterkits/vectorizer-editor.md +0 -466
  774. package/assets/docs/guide/starterkits/version-history.md +0 -745
  775. package/assets/docs/guide/starterkits/video-animations.md +0 -853
  776. package/assets/docs/guide/starterkits/video-captions.md +0 -884
  777. package/assets/docs/guide/starterkits/video-editing.md +0 -25
  778. package/assets/docs/guide/starterkits/video-editor.md +0 -696
  779. package/assets/docs/guide/starterkits/video-export-options.md +0 -676
  780. package/assets/docs/guide/starterkits/viewer.md +0 -400
  781. package/assets/docs/guide/starterkits.md +0 -41
  782. package/assets/docs/guide/stickers-and-shapes/create-edit/vector-edit.md +0 -362
  783. package/assets/docs/guide/text/custom-fonts.md +0 -401
  784. package/assets/docs/guide/text/decorations.md +0 -330
  785. package/assets/docs/guide/text/enumerations.md +0 -258
  786. package/assets/docs/guide/to-v1-10.md +0 -131
  787. package/assets/docs/guide/to-v1-13.md +0 -165
  788. package/assets/docs/guide/to-v1-32.md +0 -110
  789. package/assets/docs/guide/to-v1-69.md +0 -468
  790. package/assets/docs/guide/to-v1-72.md +0 -193
  791. package/assets/docs/guide/use-templates/library.md +0 -450
  792. package/assets/docs/guide/user-interface/ai-integration/audio-generation.md +0 -428
  793. package/assets/docs/guide/user-interface/ai-integration/auto-captions.md +0 -337
  794. package/assets/docs/guide/user-interface/ai-integration/custom-provider.md +0 -853
  795. package/assets/docs/guide/user-interface/ai-integration/gateway-provider.md +0 -1045
  796. package/assets/docs/guide/user-interface/ai-integration/image-generation.md +0 -641
  797. package/assets/docs/guide/user-interface/ai-integration/integrate.md +0 -966
  798. package/assets/docs/guide/user-interface/ai-integration/proxy-server.md +0 -99
  799. package/assets/docs/guide/user-interface/ai-integration/text-generation.md +0 -498
  800. package/assets/docs/guide/user-interface/ai-integration/video-generation.md +0 -493
  801. package/assets/docs/guide/user-interface/ai-integration.md +0 -30
  802. package/assets/docs/guide/user-interface/appearance/change-ui-font.md +0 -316
  803. package/assets/docs/guide/user-interface/appearance/custom-labels.md +0 -509
  804. package/assets/docs/guide/user-interface/appearance/icons.md +0 -373
  805. package/assets/docs/guide/user-interface/appearance/theming.md +0 -665
  806. package/assets/docs/guide/user-interface/appearance.md +0 -23
  807. package/assets/docs/guide/user-interface/build-your-own-ui.md +0 -620
  808. package/assets/docs/guide/user-interface/customization/canvas-menu.md +0 -412
  809. package/assets/docs/guide/user-interface/customization/canvas.md +0 -281
  810. package/assets/docs/guide/user-interface/customization/color-palette.md +0 -413
  811. package/assets/docs/guide/user-interface/customization/crop-presets.md +0 -384
  812. package/assets/docs/guide/user-interface/customization/disable-or-enable.md +0 -676
  813. package/assets/docs/guide/user-interface/customization/dock.md +0 -399
  814. package/assets/docs/guide/user-interface/customization/force-crop.md +0 -289
  815. package/assets/docs/guide/user-interface/customization/inspector-bar.md +0 -371
  816. package/assets/docs/guide/user-interface/customization/navigation-bar.md +0 -516
  817. package/assets/docs/guide/user-interface/customization/page-format.md +0 -436
  818. package/assets/docs/guide/user-interface/customization/panel.md +0 -605
  819. package/assets/docs/guide/user-interface/customization/quick-start/add-action-buttons.md +0 -531
  820. package/assets/docs/guide/user-interface/customization/quick-start/add-dock-buttons.md +0 -358
  821. package/assets/docs/guide/user-interface/customization/quick-start/create-custom-components.md +0 -374
  822. package/assets/docs/guide/user-interface/customization/quick-start/reorder-components.md +0 -323
  823. package/assets/docs/guide/user-interface/customization/quick-start/show-hide-components.md +0 -294
  824. package/assets/docs/guide/user-interface/customization/quick-start.md +0 -12
  825. package/assets/docs/guide/user-interface/customization/reference/component-order-api.md +0 -519
  826. package/assets/docs/guide/user-interface/customization/reference/component-reference.md +0 -333
  827. package/assets/docs/guide/user-interface/customization/reference.md +0 -12
  828. package/assets/docs/guide/user-interface/customization.md +0 -39
  829. package/assets/docs/guide/user-interface/localization.md +0 -633
  830. package/assets/docs/guide/user-interface/overview.md +0 -167
  831. package/assets/docs/guide/user-interface/ui-extensions/add-custom-feature.md +0 -411
  832. package/assets/docs/guide/user-interface/ui-extensions/asset-library.md +0 -721
  833. package/assets/docs/guide/user-interface/ui-extensions/create-custom-panel.md +0 -331
  834. package/assets/docs/guide/user-interface/ui-extensions/customize-behaviour.md +0 -553
  835. package/assets/docs/guide/user-interface/ui-extensions/notifications-and-dialogs.md +0 -672
  836. package/assets/docs/guide/user-interface/ui-extensions/quick-actions.md +0 -415
  837. package/assets/docs/guide/user-interface/ui-extensions/register-new-component.md +0 -521
  838. package/assets/docs/guide/user-interface/ui-extensions.md +0 -26
  839. package/assets/docs/guide/user-interface.md +0 -25
  840. package/assets/prompts/evals-assetGenerate.md +0 -12
  841. package/assets/prompts/evals-brutalistCore.md +0 -34
  842. package/assets/prompts/evals-danskCatalogue.md +0 -31
  843. package/assets/prompts/evals-exportRoundTrip.md +0 -12
  844. package/assets/prompts/evals-inspectPriorCode.md +0 -16
  845. package/assets/prompts/evals-listProjectFiles.md +0 -6
  846. package/assets/prompts/evals-readAndExplainScript.md +0 -6
  847. package/assets/prompts/evals-resumeAcrossRestart.md +0 -15
  848. package/assets/prompts/evals-rewindRecovery.md +0 -10
  849. package/assets/prompts/evals-searchAcrossFiles.md +0 -6
  850. package/assets/prompts/evals-weddingCard.md +0 -20
  851. package/assets/prompts/explain.md +0 -6
  852. package/assets/prompts/review.md +0 -6
  853. package/dist/dashboard/router.d.ts +0 -3
  854. package/dist/dashboard/router.d.ts.map +0 -1
  855. package/dist/dashboard/router.js +0 -19
  856. package/dist/dashboard/router.js.map +0 -1
  857. package/dist/dashboard/spa-assets.generated.d.ts +0 -2
  858. package/dist/dashboard/spa-assets.generated.d.ts.map +0 -1
  859. package/dist/dashboard/spa-assets.generated.js +0 -220
  860. package/dist/dashboard/spa-assets.generated.js.map +0 -1
  861. package/dist/frontmatter.d.ts +0 -15
  862. package/dist/frontmatter.d.ts.map +0 -1
  863. package/dist/frontmatter.js +0 -46
  864. package/dist/frontmatter.js.map +0 -1
  865. package/dist/metrics/mount.d.ts +0 -11
  866. package/dist/metrics/mount.d.ts.map +0 -1
  867. package/dist/metrics/mount.js +0 -13
  868. package/dist/metrics/mount.js.map +0 -1
  869. package/dist/metrics/recorder.d.ts +0 -55
  870. package/dist/metrics/recorder.d.ts.map +0 -1
  871. package/dist/metrics/recorder.js +0 -97
  872. package/dist/metrics/recorder.js.map +0 -1
  873. package/dist/test/test/cli/dispatcher.test.d.ts +0 -2
  874. package/dist/test/test/cli/dispatcher.test.d.ts.map +0 -1
  875. package/dist/test/test/cli/dispatcher.test.js +0 -47
  876. package/dist/test/test/cli/dispatcher.test.js.map +0 -1
  877. package/dist/test/test/cli/redirect-console.test.d.ts +0 -2
  878. package/dist/test/test/cli/redirect-console.test.d.ts.map +0 -1
  879. package/dist/test/test/cli/redirect-console.test.js +0 -47
  880. package/dist/test/test/cli/redirect-console.test.js.map +0 -1
  881. package/dist/test/test/cli/resolve-license.test.d.ts +0 -2
  882. package/dist/test/test/cli/resolve-license.test.d.ts.map +0 -1
  883. package/dist/test/test/cli/resolve-license.test.js +0 -20
  884. package/dist/test/test/cli/resolve-license.test.js.map +0 -1
  885. package/dist/test/test/cli/stdio-license.test.d.ts +0 -2
  886. package/dist/test/test/cli/stdio-license.test.d.ts.map +0 -1
  887. package/dist/test/test/cli/stdio-license.test.js +0 -19
  888. package/dist/test/test/cli/stdio-license.test.js.map +0 -1
  889. package/dist/test/test/config.test.d.ts +0 -2
  890. package/dist/test/test/config.test.d.ts.map +0 -1
  891. package/dist/test/test/config.test.js +0 -91
  892. package/dist/test/test/config.test.js.map +0 -1
  893. package/dist/test/test/cross-ref.test.d.ts +0 -2
  894. package/dist/test/test/cross-ref.test.d.ts.map +0 -1
  895. package/dist/test/test/cross-ref.test.js +0 -39
  896. package/dist/test/test/cross-ref.test.js.map +0 -1
  897. package/dist/test/test/engine/asset-sources.test.d.ts +0 -2
  898. package/dist/test/test/engine/asset-sources.test.d.ts.map +0 -1
  899. package/dist/test/test/engine/asset-sources.test.js +0 -100
  900. package/dist/test/test/engine/asset-sources.test.js.map +0 -1
  901. package/dist/test/test/engine/mutex.test.d.ts +0 -2
  902. package/dist/test/test/engine/mutex.test.d.ts.map +0 -1
  903. package/dist/test/test/engine/mutex.test.js +0 -63
  904. package/dist/test/test/engine/mutex.test.js.map +0 -1
  905. package/dist/test/test/engine/session.test.d.ts +0 -2
  906. package/dist/test/test/engine/session.test.d.ts.map +0 -1
  907. package/dist/test/test/engine/session.test.js +0 -159
  908. package/dist/test/test/engine/session.test.js.map +0 -1
  909. package/dist/test/test/engine/unsplash-source.test.d.ts +0 -2
  910. package/dist/test/test/engine/unsplash-source.test.d.ts.map +0 -1
  911. package/dist/test/test/engine/unsplash-source.test.js +0 -129
  912. package/dist/test/test/engine/unsplash-source.test.js.map +0 -1
  913. package/dist/test/test/engine/uri-resolver.test.d.ts +0 -2
  914. package/dist/test/test/engine/uri-resolver.test.d.ts.map +0 -1
  915. package/dist/test/test/engine/uri-resolver.test.js +0 -38
  916. package/dist/test/test/engine/uri-resolver.test.js.map +0 -1
  917. package/dist/test/test/frontmatter.test.d.ts +0 -2
  918. package/dist/test/test/frontmatter.test.d.ts.map +0 -1
  919. package/dist/test/test/frontmatter.test.js +0 -55
  920. package/dist/test/test/frontmatter.test.js.map +0 -1
  921. package/dist/test/test/gateway/hosted-stub.test.d.ts +0 -2
  922. package/dist/test/test/gateway/hosted-stub.test.d.ts.map +0 -1
  923. package/dist/test/test/gateway/hosted-stub.test.js +0 -11
  924. package/dist/test/test/gateway/hosted-stub.test.js.map +0 -1
  925. package/dist/test/test/gateway/local.test.d.ts +0 -2
  926. package/dist/test/test/gateway/local.test.d.ts.map +0 -1
  927. package/dist/test/test/gateway/local.test.js +0 -29
  928. package/dist/test/test/gateway/local.test.js.map +0 -1
  929. package/dist/test/test/handbook-contract.test.d.ts +0 -2
  930. package/dist/test/test/handbook-contract.test.d.ts.map +0 -1
  931. package/dist/test/test/handbook-contract.test.js +0 -75
  932. package/dist/test/test/handbook-contract.test.js.map +0 -1
  933. package/dist/test/test/http/server.test.d.ts +0 -2
  934. package/dist/test/test/http/server.test.d.ts.map +0 -1
  935. package/dist/test/test/http/server.test.js +0 -374
  936. package/dist/test/test/http/server.test.js.map +0 -1
  937. package/dist/test/test/http/session-id-header.test.d.ts +0 -2
  938. package/dist/test/test/http/session-id-header.test.d.ts.map +0 -1
  939. package/dist/test/test/http/session-id-header.test.js +0 -76
  940. package/dist/test/test/http/session-id-header.test.js.map +0 -1
  941. package/dist/test/test/http/session-manager.test.d.ts +0 -2
  942. package/dist/test/test/http/session-manager.test.d.ts.map +0 -1
  943. package/dist/test/test/http/session-manager.test.js +0 -97
  944. package/dist/test/test/http/session-manager.test.js.map +0 -1
  945. package/dist/test/test/http/workspace-auth.test.d.ts +0 -2
  946. package/dist/test/test/http/workspace-auth.test.d.ts.map +0 -1
  947. package/dist/test/test/http/workspace-auth.test.js +0 -41
  948. package/dist/test/test/http/workspace-auth.test.js.map +0 -1
  949. package/dist/test/test/metrics/mount.test.d.ts +0 -2
  950. package/dist/test/test/metrics/mount.test.d.ts.map +0 -1
  951. package/dist/test/test/metrics/mount.test.js +0 -59
  952. package/dist/test/test/metrics/mount.test.js.map +0 -1
  953. package/dist/test/test/metrics/recorder.test.d.ts +0 -2
  954. package/dist/test/test/metrics/recorder.test.d.ts.map +0 -1
  955. package/dist/test/test/metrics/recorder.test.js +0 -118
  956. package/dist/test/test/metrics/recorder.test.js.map +0 -1
  957. package/dist/test/test/revisions/hash.test.d.ts +0 -2
  958. package/dist/test/test/revisions/hash.test.d.ts.map +0 -1
  959. package/dist/test/test/revisions/hash.test.js +0 -33
  960. package/dist/test/test/revisions/hash.test.js.map +0 -1
  961. package/dist/test/test/revisions/store.test.d.ts +0 -2
  962. package/dist/test/test/revisions/store.test.d.ts.map +0 -1
  963. package/dist/test/test/revisions/store.test.js +0 -315
  964. package/dist/test/test/revisions/store.test.js.map +0 -1
  965. package/dist/test/test/server.metrics.test.d.ts +0 -2
  966. package/dist/test/test/server.metrics.test.d.ts.map +0 -1
  967. package/dist/test/test/server.metrics.test.js +0 -87
  968. package/dist/test/test/server.metrics.test.js.map +0 -1
  969. package/dist/test/test/server.test.d.ts +0 -2
  970. package/dist/test/test/server.test.d.ts.map +0 -1
  971. package/dist/test/test/server.test.js +0 -186
  972. package/dist/test/test/server.test.js.map +0 -1
  973. package/dist/test/test/skill-tools.test.d.ts +0 -2
  974. package/dist/test/test/skill-tools.test.d.ts.map +0 -1
  975. package/dist/test/test/skill-tools.test.js +0 -84
  976. package/dist/test/test/skill-tools.test.js.map +0 -1
  977. package/dist/test/test/smoke.test.d.ts +0 -2
  978. package/dist/test/test/smoke.test.d.ts.map +0 -1
  979. package/dist/test/test/smoke.test.js +0 -8
  980. package/dist/test/test/smoke.test.js.map +0 -1
  981. package/dist/test/test/tools/asset-generate.test.d.ts +0 -2
  982. package/dist/test/test/tools/asset-generate.test.d.ts.map +0 -1
  983. package/dist/test/test/tools/asset-generate.test.js +0 -66
  984. package/dist/test/test/tools/asset-generate.test.js.map +0 -1
  985. package/dist/test/test/tools/asset-search.test.d.ts +0 -2
  986. package/dist/test/test/tools/asset-search.test.d.ts.map +0 -1
  987. package/dist/test/test/tools/asset-search.test.js +0 -121
  988. package/dist/test/test/tools/asset-search.test.js.map +0 -1
  989. package/dist/test/test/tools/edit.test.d.ts +0 -2
  990. package/dist/test/test/tools/edit.test.d.ts.map +0 -1
  991. package/dist/test/test/tools/edit.test.js +0 -267
  992. package/dist/test/test/tools/edit.test.js.map +0 -1
  993. package/dist/test/test/tools/export.test.d.ts +0 -2
  994. package/dist/test/test/tools/export.test.d.ts.map +0 -1
  995. package/dist/test/test/tools/export.test.js +0 -174
  996. package/dist/test/test/tools/export.test.js.map +0 -1
  997. package/dist/test/test/tools/history.test.d.ts +0 -2
  998. package/dist/test/test/tools/history.test.d.ts.map +0 -1
  999. package/dist/test/test/tools/history.test.js +0 -29
  1000. package/dist/test/test/tools/history.test.js.map +0 -1
  1001. package/dist/test/test/tools/index.test.d.ts +0 -2
  1002. package/dist/test/test/tools/index.test.d.ts.map +0 -1
  1003. package/dist/test/test/tools/index.test.js +0 -55
  1004. package/dist/test/test/tools/index.test.js.map +0 -1
  1005. package/dist/test/test/tools/inspect.test.d.ts +0 -2
  1006. package/dist/test/test/tools/inspect.test.d.ts.map +0 -1
  1007. package/dist/test/test/tools/inspect.test.js +0 -62
  1008. package/dist/test/test/tools/inspect.test.js.map +0 -1
  1009. package/dist/test/test/tools/list.test.d.ts +0 -2
  1010. package/dist/test/test/tools/list.test.d.ts.map +0 -1
  1011. package/dist/test/test/tools/list.test.js +0 -23
  1012. package/dist/test/test/tools/list.test.js.map +0 -1
  1013. package/dist/test/test/tools/metrics.test.d.ts +0 -2
  1014. package/dist/test/test/tools/metrics.test.d.ts.map +0 -1
  1015. package/dist/test/test/tools/metrics.test.js +0 -29
  1016. package/dist/test/test/tools/metrics.test.js.map +0 -1
  1017. package/dist/test/test/tools/open-editor.test.d.ts +0 -2
  1018. package/dist/test/test/tools/open-editor.test.d.ts.map +0 -1
  1019. package/dist/test/test/tools/open-editor.test.js +0 -53
  1020. package/dist/test/test/tools/open-editor.test.js.map +0 -1
  1021. package/dist/test/test/tools/preview.test.d.ts +0 -2
  1022. package/dist/test/test/tools/preview.test.d.ts.map +0 -1
  1023. package/dist/test/test/tools/preview.test.js +0 -75
  1024. package/dist/test/test/tools/preview.test.js.map +0 -1
  1025. package/dist/test/test/tools/rename.test.d.ts +0 -2
  1026. package/dist/test/test/tools/rename.test.d.ts.map +0 -1
  1027. package/dist/test/test/tools/rename.test.js +0 -16
  1028. package/dist/test/test/tools/rename.test.js.map +0 -1
  1029. package/dist/test/test/tools/save.test.d.ts +0 -2
  1030. package/dist/test/test/tools/save.test.d.ts.map +0 -1
  1031. package/dist/test/test/tools/save.test.js +0 -137
  1032. package/dist/test/test/tools/save.test.js.map +0 -1
  1033. package/dist/test/test/viewer/broadcaster.test.d.ts +0 -2
  1034. package/dist/test/test/viewer/broadcaster.test.d.ts.map +0 -1
  1035. package/dist/test/test/viewer/broadcaster.test.js +0 -53
  1036. package/dist/test/test/viewer/broadcaster.test.js.map +0 -1
  1037. package/dist/test/test/viewer/resource-route.test.d.ts +0 -2
  1038. package/dist/test/test/viewer/resource-route.test.d.ts.map +0 -1
  1039. package/dist/test/test/viewer/resource-route.test.js +0 -70
  1040. package/dist/test/test/viewer/resource-route.test.js.map +0 -1
  1041. package/dist/test/test/viewer/router.test.d.ts +0 -2
  1042. package/dist/test/test/viewer/router.test.d.ts.map +0 -1
  1043. package/dist/test/test/viewer/router.test.js +0 -227
  1044. package/dist/test/test/viewer/router.test.js.map +0 -1
  1045. package/dist/test/test/viewer/session-mount.test.d.ts +0 -2
  1046. package/dist/test/test/viewer/session-mount.test.d.ts.map +0 -1
  1047. package/dist/test/test/viewer/session-mount.test.js +0 -52
  1048. package/dist/test/test/viewer/session-mount.test.js.map +0 -1
  1049. package/dist/test/test/viewer/url-builder.test.d.ts +0 -2
  1050. package/dist/test/test/viewer/url-builder.test.d.ts.map +0 -1
  1051. package/dist/test/test/viewer/url-builder.test.js +0 -98
  1052. package/dist/test/test/viewer/url-builder.test.js.map +0 -1
  1053. package/dist/test/test/workspace/hosted-stub.test.d.ts +0 -2
  1054. package/dist/test/test/workspace/hosted-stub.test.d.ts.map +0 -1
  1055. package/dist/test/test/workspace/hosted-stub.test.js +0 -30
  1056. package/dist/test/test/workspace/hosted-stub.test.js.map +0 -1
  1057. package/dist/test/test/workspace/in-memory.test.d.ts +0 -2
  1058. package/dist/test/test/workspace/in-memory.test.d.ts.map +0 -1
  1059. package/dist/test/test/workspace/in-memory.test.js +0 -4
  1060. package/dist/test/test/workspace/in-memory.test.js.map +0 -1
  1061. package/dist/test/test/workspace/node-fs.test.d.ts +0 -2
  1062. package/dist/test/test/workspace/node-fs.test.d.ts.map +0 -1
  1063. package/dist/test/test/workspace/node-fs.test.js +0 -20
  1064. package/dist/test/test/workspace/node-fs.test.js.map +0 -1
  1065. package/dist/test/test/workspace/s3.test.d.ts +0 -2
  1066. package/dist/test/test/workspace/s3.test.d.ts.map +0 -1
  1067. package/dist/test/test/workspace/s3.test.js +0 -153
  1068. package/dist/test/test/workspace/s3.test.js.map +0 -1
  1069. package/dist/test/test/workspace/scoped.test.d.ts +0 -2
  1070. package/dist/test/test/workspace/scoped.test.d.ts.map +0 -1
  1071. package/dist/test/test/workspace/scoped.test.js +0 -59
  1072. package/dist/test/test/workspace/scoped.test.js.map +0 -1
  1073. package/dist/test/test/workspace/shared-contract.d.ts +0 -3
  1074. package/dist/test/test/workspace/shared-contract.d.ts.map +0 -1
  1075. package/dist/test/test/workspace/shared-contract.js +0 -92
  1076. package/dist/test/test/workspace/shared-contract.js.map +0 -1
  1077. package/dist/test/tsconfig.test.tsbuildinfo +0 -1
  1078. package/dist/test/vitest.config.d.ts +0 -3
  1079. package/dist/test/vitest.config.d.ts.map +0 -1
  1080. package/dist/test/vitest.config.js +0 -8
  1081. package/dist/test/vitest.config.js.map +0 -1
  1082. package/dist/tools/metrics.d.ts +0 -11
  1083. package/dist/tools/metrics.d.ts.map +0 -1
  1084. package/dist/tools/metrics.js +0 -28
  1085. package/dist/tools/metrics.js.map +0 -1
@@ -1,4 +1,4 @@
1
- > This is one page of the CE.SDK Vanilla JS/TS documentation. For a complete overview, see the [Vanilla JS/TS Documentation Index](https://img.ly/docs/cesdk/js.md). For all docs in one file, see [llms-full.txt](./llms-full.txt.md).
1
+ > This is one page of the CE.SDK Node.js documentation. For a complete overview, see the [Node.js Documentation Index](https://img.ly/docs/cesdk/node.md). For all docs in one file, see [llms-full.txt](./llms-full.txt.md).
2
2
 
3
3
  **Navigation:** [Guides](./guides.md) > [Create and Edit Shapes](./shapes.md) > [Combine](./stickers-and-shapes/combine.md)
4
4
 
@@ -6,379 +6,311 @@
6
6
 
7
7
  Combine multiple shapes using boolean operations to create custom compound designs programmatically.
8
8
 
9
- ![Boolean operations demonstration showing Union, Difference, Intersection, and XOR](https://img.ly/docs/cesdk/./assets/browser.hero.webp)
10
-
11
9
  > **Reading time:** 8 minutes
12
10
  >
13
11
  > **Resources:**
14
12
  >
15
13
  > - [Download examples](https://github.com/imgly/cesdk-web-examples/archive/refs/tags/release-$UBQ_VERSION$.zip)
16
- > - [View source on GitHub](https://github.com/imgly/cesdk-web-examples/tree/release-$UBQ_VERSION$/guides-stickers-and-shapes-combine-browser)
17
- > - [Open in StackBlitz](https://stackblitz.com/github/imgly/cesdk-web-examples/tree/v$UBQ_VERSION$/guides-stickers-and-shapes-combine-browser)
18
- > - [Live demo](https://img.ly/docs/cesdk/examples/guides-stickers-and-shapes-combine-browser/)
19
-
20
- CE.SDK provides four boolean operations for combining shapes: _Union_, _Difference_, _Intersection_, and _XOR_. These operations work with graphic blocks and text blocks, allowing you to build complex designs from simple primitives.
21
-
22
- ```typescript file=@cesdk_web_examples/guides-stickers-and-shapes-combine-browser/browser.ts reference-only
23
- import type { EditorPlugin, EditorPluginContext } from '@cesdk/cesdk-js';
24
-
25
- import {
26
- BlurAssetSource,
27
- ColorPaletteAssetSource,
28
- CropPresetsAssetSource,
29
- DemoAssetSources,
30
- EffectsAssetSource,
31
- FiltersAssetSource,
32
- PagePresetsAssetSource,
33
- StickerAssetSource,
34
- TextAssetSource,
35
- TextComponentAssetSource,
36
- TypefaceAssetSource,
37
- UploadAssetSources,
38
- VectorShapeAssetSource
39
- } from '@cesdk/cesdk-js/plugins';
40
- import { DesignEditorConfig } from './design-editor/plugin';
41
- import { calculateGridLayout } from './utils';
42
- import packageJson from './package.json';
43
-
44
- class Example implements EditorPlugin {
45
- name = packageJson.name;
46
- version = packageJson.version;
47
-
48
- async initialize({ cesdk }: EditorPluginContext): Promise<void> {
49
- if (!cesdk) {
50
- throw new Error('CE.SDK instance is required for this plugin');
51
- }
52
-
53
- await cesdk.addPlugin(new DesignEditorConfig());
54
-
55
- // Add asset source plugins
56
- await cesdk.addPlugin(new BlurAssetSource());
57
- await cesdk.addPlugin(new ColorPaletteAssetSource());
58
- await cesdk.addPlugin(new CropPresetsAssetSource());
59
- await cesdk.addPlugin(
60
- new UploadAssetSources({ include: ['ly.img.image.upload'] })
61
- );
62
- await cesdk.addPlugin(
63
- new DemoAssetSources({
64
- include: [
65
- 'ly.img.templates.blank.*',
66
- 'ly.img.templates.presentation.*',
67
- 'ly.img.templates.print.*',
68
- 'ly.img.templates.social.*',
69
- 'ly.img.image.*'
70
- ]
71
- })
72
- );
73
- await cesdk.addPlugin(new EffectsAssetSource());
74
- await cesdk.addPlugin(new FiltersAssetSource());
75
- await cesdk.addPlugin(new PagePresetsAssetSource());
76
- await cesdk.addPlugin(new StickerAssetSource());
77
- await cesdk.addPlugin(new TextAssetSource());
78
- await cesdk.addPlugin(new TextComponentAssetSource());
79
- await cesdk.addPlugin(new TypefaceAssetSource());
80
- await cesdk.addPlugin(new VectorShapeAssetSource());
81
-
82
- await cesdk.actions.run('scene.create', {
83
- page: { width: 800, height: 600, unit: 'Pixel' }
84
- });
85
-
86
- const engine = cesdk.engine;
87
- const page = engine.block.findByType('page')[0];
88
-
89
- // Calculate responsive grid layout for demonstrations
90
- const pageWidth = engine.block.getWidth(page);
91
- const pageHeight = engine.block.getHeight(page);
92
- const layout = calculateGridLayout(pageWidth, pageHeight, {
93
- cols: 2,
94
- rows: 2,
95
- spacing: 20,
96
- margin: 20
97
- });
98
- const { blockWidth, blockHeight, getPosition } = layout;
99
-
100
- // ===== Demonstration 1: Union Operation =====
101
- // Create three equal circles for union demonstration
102
- const circleSize = 120;
103
- const unionCircle1 = engine.block.create('graphic');
104
- engine.block.setShape(
105
- unionCircle1,
106
- engine.block.createShape('//ly.img.ubq/shape/ellipse')
107
- );
108
- const unionFill1 = engine.block.createFill('color');
109
- engine.block.setColor(unionFill1, 'fill/color/value', {
110
- r: 1.0,
111
- g: 0.4,
112
- b: 0.4,
113
- a: 1.0
114
- });
115
- engine.block.setFill(unionCircle1, unionFill1);
116
- engine.block.setWidth(unionCircle1, circleSize);
117
- engine.block.setHeight(unionCircle1, circleSize);
118
- engine.block.appendChild(page, unionCircle1);
119
-
120
- const unionCircle2 = engine.block.create('graphic');
121
- engine.block.setShape(
122
- unionCircle2,
123
- engine.block.createShape('//ly.img.ubq/shape/ellipse')
124
- );
125
- const unionFill2 = engine.block.createFill('color');
126
- engine.block.setColor(unionFill2, 'fill/color/value', {
127
- r: 0.4,
128
- g: 1.0,
129
- b: 0.4,
130
- a: 1.0
131
- });
132
- engine.block.setFill(unionCircle2, unionFill2);
133
- engine.block.setWidth(unionCircle2, circleSize);
134
- engine.block.setHeight(unionCircle2, circleSize);
135
- engine.block.appendChild(page, unionCircle2);
136
-
137
- const unionCircle3 = engine.block.create('graphic');
138
- engine.block.setShape(
139
- unionCircle3,
140
- engine.block.createShape('//ly.img.ubq/shape/ellipse')
141
- );
142
- const unionFill3 = engine.block.createFill('color');
143
- engine.block.setColor(unionFill3, 'fill/color/value', {
144
- r: 0.4,
145
- g: 0.4,
146
- b: 1.0,
147
- a: 1.0
148
- });
149
- engine.block.setFill(unionCircle3, unionFill3);
150
- engine.block.setWidth(unionCircle3, circleSize);
151
- engine.block.setHeight(unionCircle3, circleSize);
152
- engine.block.appendChild(page, unionCircle3);
153
-
154
- // ===== Demonstration 2: Difference Operation =====
155
- // Create image block for punch-out effect
156
- const imageBlock = engine.block.create('graphic');
157
- engine.block.setShape(
158
- imageBlock,
159
- engine.block.createShape('//ly.img.ubq/shape/rect')
160
- );
161
- const imageFill = engine.block.createFill('image');
162
- engine.block.setString(
163
- imageFill,
164
- 'fill/image/imageFileURI',
165
- 'https://img.ly/static/ubq_samples/sample_1.jpg'
166
- );
167
- engine.block.setFill(imageBlock, imageFill);
168
- engine.block.setWidth(imageBlock, blockWidth * 0.9);
169
- engine.block.setHeight(imageBlock, blockHeight * 0.9);
170
- engine.block.appendChild(page, imageBlock);
171
-
172
- // Create text block for punch-out
173
- const textBlock = engine.block.create('text');
174
- engine.block.replaceText(textBlock, 'CUTOUT');
175
- engine.block.setFloat(textBlock, 'text/fontSize', 120);
176
- engine.block.setWidth(textBlock, blockWidth * 0.9);
177
- engine.block.appendChild(page, textBlock);
178
-
179
- // ===== Demonstration 3: Intersection Operation =====
180
- // Create two overlapping circles for intersection (20% larger)
181
- const intersectCircleSize = circleSize * 1.2;
182
- const intersectCircle1 = engine.block.create('graphic');
183
- engine.block.setShape(
184
- intersectCircle1,
185
- engine.block.createShape('//ly.img.ubq/shape/ellipse')
186
- );
187
- const intersectFill1 = engine.block.createFill('color');
188
- engine.block.setColor(intersectFill1, 'fill/color/value', {
189
- r: 1.0,
190
- g: 0.6,
191
- b: 0.2,
192
- a: 1.0
193
- });
194
- engine.block.setFill(intersectCircle1, intersectFill1);
195
- engine.block.setWidth(intersectCircle1, intersectCircleSize);
196
- engine.block.setHeight(intersectCircle1, intersectCircleSize);
197
- engine.block.appendChild(page, intersectCircle1);
198
-
199
- const intersectCircle2 = engine.block.create('graphic');
200
- engine.block.setShape(
201
- intersectCircle2,
202
- engine.block.createShape('//ly.img.ubq/shape/ellipse')
203
- );
204
- const intersectFill2 = engine.block.createFill('color');
205
- engine.block.setColor(intersectFill2, 'fill/color/value', {
206
- r: 1.0,
207
- g: 0.6,
208
- b: 0.2,
209
- a: 1.0
210
- });
211
- engine.block.setFill(intersectCircle2, intersectFill2);
212
- engine.block.setWidth(intersectCircle2, intersectCircleSize);
213
- engine.block.setHeight(intersectCircle2, intersectCircleSize);
214
- engine.block.appendChild(page, intersectCircle2);
215
-
216
- // ===== Demonstration 4: XOR Operation =====
217
- // Create two overlapping circles for XOR
218
- const xorCircle1 = engine.block.create('graphic');
219
- engine.block.setShape(
220
- xorCircle1,
221
- engine.block.createShape('//ly.img.ubq/shape/ellipse')
222
- );
223
- const xorFill1 = engine.block.createFill('color');
224
- engine.block.setColor(xorFill1, 'fill/color/value', {
225
- r: 1.0,
226
- g: 0.8,
227
- b: 0.2,
228
- a: 1.0
229
- });
230
- engine.block.setFill(xorCircle1, xorFill1);
231
- engine.block.setWidth(xorCircle1, 140);
232
- engine.block.setHeight(xorCircle1, 140);
233
- engine.block.appendChild(page, xorCircle1);
234
-
235
- const xorCircle2 = engine.block.create('graphic');
236
- engine.block.setShape(
237
- xorCircle2,
238
- engine.block.createShape('//ly.img.ubq/shape/ellipse')
239
- );
240
- const xorFill2 = engine.block.createFill('color');
241
- engine.block.setColor(xorFill2, 'fill/color/value', {
242
- r: 0.2,
243
- g: 0.8,
244
- b: 1.0,
245
- a: 1.0
246
- });
247
- engine.block.setFill(xorCircle2, xorFill2);
248
- engine.block.setWidth(xorCircle2, 140);
249
- engine.block.setHeight(xorCircle2, 140);
250
- engine.block.appendChild(page, xorCircle2);
251
-
252
- // Position all blocks in grid layout before combining
253
- // Position union circles at vertices of equilateral triangle in top-left quadrant
254
- const unionPos = getPosition(0);
255
- const unionCenterX = unionPos.x + blockWidth / 2;
256
- const unionCenterY = unionPos.y + blockHeight / 2;
257
- const triangleRadius = 55; // Distance from center to each vertex
258
- const halfCircle = circleSize / 2;
259
- // Top vertex
260
- engine.block.setPositionX(unionCircle1, unionCenterX - halfCircle);
261
- engine.block.setPositionY(
262
- unionCircle1,
263
- unionCenterY - triangleRadius - halfCircle
264
- );
265
- // Bottom-right vertex (angle -30°)
266
- engine.block.setPositionX(
267
- unionCircle2,
268
- unionCenterX + triangleRadius * 0.866 - halfCircle
269
- );
270
- engine.block.setPositionY(
271
- unionCircle2,
272
- unionCenterY + triangleRadius * 0.5 - halfCircle
273
- );
274
- // Bottom-left vertex (angle 210°)
275
- engine.block.setPositionX(
276
- unionCircle3,
277
- unionCenterX - triangleRadius * 0.866 - halfCircle
278
- );
279
- engine.block.setPositionY(
280
- unionCircle3,
281
- unionCenterY + triangleRadius * 0.5 - halfCircle
282
- );
283
-
284
- // Center image in top-right quadrant, then center text on image
285
- const diffPos = getPosition(1);
286
- const imageX =
287
- diffPos.x + (blockWidth - engine.block.getWidth(imageBlock)) / 2;
288
- const imageY =
289
- diffPos.y + (blockHeight - engine.block.getHeight(imageBlock)) / 2;
290
- engine.block.setPositionX(imageBlock, imageX);
291
- engine.block.setPositionY(imageBlock, imageY);
292
-
293
- // Center text on the image block (not the quadrant)
294
- const textX =
295
- imageX +
296
- (engine.block.getWidth(imageBlock) - engine.block.getWidth(textBlock)) /
297
- 2;
298
- const textY =
299
- imageY +
300
- (engine.block.getHeight(imageBlock) - engine.block.getHeight(textBlock)) /
301
- 2;
302
- engine.block.setPositionX(textBlock, textX);
303
- engine.block.setPositionY(textBlock, textY);
304
-
305
- // Center intersection circles in bottom-left quadrant with vertical overlap
306
- const intersectPos = getPosition(2);
307
- const intersectCenterX = intersectPos.x + blockWidth / 2;
308
- const intersectCenterY = intersectPos.y + blockHeight / 2;
309
- const halfIntersectCircle = intersectCircleSize / 2;
310
- // Position circles to overlap vertically by about 50% (72px offset for 144px circles)
311
- engine.block.setPositionX(
312
- intersectCircle1,
313
- intersectCenterX - halfIntersectCircle
314
- );
315
- engine.block.setPositionY(
316
- intersectCircle1,
317
- intersectCenterY - halfIntersectCircle - 36
318
- );
319
- engine.block.setPositionX(
320
- intersectCircle2,
321
- intersectCenterX - halfIntersectCircle
322
- );
323
- engine.block.setPositionY(
324
- intersectCircle2,
325
- intersectCenterY - halfIntersectCircle + 36
326
- );
327
-
328
- // Center XOR circles in bottom-right quadrant
329
- const xorPos = getPosition(3);
330
- const xorCenterX = xorPos.x + blockWidth / 2;
331
- const xorCenterY = xorPos.y + blockHeight / 2;
332
- engine.block.setPositionX(xorCircle1, xorCenterX - 70);
333
- engine.block.setPositionY(xorCircle1, xorCenterY - 70);
334
- engine.block.setPositionX(xorCircle2, xorCenterX - 14);
335
- engine.block.setPositionY(xorCircle2, xorCenterY - 42);
336
-
337
- // Perform boolean operations
338
- // Check if blocks can be combined before attempting operations
339
- const canCombineUnion = engine.block.isCombinable([
340
- unionCircle1,
341
- unionCircle2,
342
- unionCircle3
343
- ]);
344
- const canCombineDiff = engine.block.isCombinable([imageBlock, textBlock]);
345
- const canCombineIntersect = engine.block.isCombinable([
346
- intersectCircle1,
347
- intersectCircle2
348
- ]);
349
- const canCombineXor = engine.block.isCombinable([xorCircle1, xorCircle2]);
350
-
351
- // Combine three circles using Union operation
352
- if (canCombineUnion) {
353
- engine.block.combine([unionCircle1, unionCircle2, unionCircle3], 'Union');
354
- }
355
-
356
- // Create punch-out effect using Difference operation
357
- // Ensure image is at the bottom (will be the base block)
358
- if (canCombineDiff) {
359
- engine.block.sendToBack(imageBlock);
360
- engine.block.combine([imageBlock, textBlock], 'Difference');
361
- }
362
-
363
- // Extract overlapping area using Intersection operation
364
- if (canCombineIntersect) {
365
- engine.block.combine(
366
- [intersectCircle1, intersectCircle2],
367
- 'Intersection'
368
- );
369
- }
370
-
371
- // Create exclusion pattern using XOR operation
372
- if (canCombineXor) {
373
- engine.block.combine([xorCircle1, xorCircle2], 'XOR');
374
- }
375
-
376
- // Zoom to fit all demonstrations
377
- await engine.scene.zoomToBlock(page, { padding: 40 });
14
+ >
15
+ > - [View source on GitHub](https://github.com/imgly/cesdk-web-examples/tree/release-$UBQ_VERSION$/guides-stickers-and-shapes-combine-server-js)
16
+ >
17
+ > - [Open in StackBlitz](https://stackblitz.com/github/imgly/cesdk-web-examples/tree/v$UBQ_VERSION$/guides-stickers-and-shapes-combine-server-js)
18
+
19
+ CE.SDK provides four boolean operations for combining shapes: *Union*, *Difference*, *Intersection*, and *XOR*. These operations work with graphic blocks and text blocks, allowing you to build complex designs from simple primitives.
20
+
21
+ ```typescript file=@cesdk_web_examples/guides-stickers-and-shapes-combine-server-js/server-js.ts reference-only
22
+ import CreativeEngine from '@cesdk/node';
23
+ import { config } from 'dotenv';
24
+ import { writeFileSync, mkdirSync, existsSync } from 'fs';
25
+
26
+ // Load environment variables
27
+ config();
28
+
29
+ /**
30
+ * CE.SDK Server Guide: Combine Shapes
31
+ *
32
+ * Demonstrates combining shapes using boolean operations in Node.js:
33
+ * - Checking combinability before operations
34
+ * - Union: Merging shapes together
35
+ * - Difference: Creating punch-out effects
36
+ * - Intersection: Extracting overlapping areas
37
+ * - XOR: Creating exclusion patterns
38
+ * - Understanding fill inheritance
39
+ */
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
+ const outputDir = './output';
49
+ if (!existsSync(outputDir)) {
50
+ mkdirSync(outputDir, { recursive: true });
378
51
  }
379
- }
380
52
 
381
- export default Example;
53
+ // ===== Demonstration 1: Union Operation =====
54
+ engine.scene.create('VerticalStack', {
55
+ page: { size: { width: 400, height: 300 } }
56
+ });
57
+ let page = engine.block.findByType('page')[0];
58
+
59
+ // Create three circles for union demonstration
60
+ const unionCircle1 = engine.block.create('graphic');
61
+ engine.block.setShape(
62
+ unionCircle1,
63
+ engine.block.createShape('//ly.img.ubq/shape/ellipse')
64
+ );
65
+ const unionFill1 = engine.block.createFill('color');
66
+ engine.block.setColor(unionFill1, 'fill/color/value', {
67
+ r: 1.0,
68
+ g: 0.4,
69
+ b: 0.4,
70
+ a: 1.0
71
+ });
72
+ engine.block.setFill(unionCircle1, unionFill1);
73
+ engine.block.setWidth(unionCircle1, 120);
74
+ engine.block.setHeight(unionCircle1, 120);
75
+ engine.block.setPositionX(unionCircle1, 100);
76
+ engine.block.setPositionY(unionCircle1, 80);
77
+ engine.block.appendChild(page, unionCircle1);
78
+
79
+ const unionCircle2 = engine.block.create('graphic');
80
+ engine.block.setShape(
81
+ unionCircle2,
82
+ engine.block.createShape('//ly.img.ubq/shape/ellipse')
83
+ );
84
+ const unionFill2 = engine.block.createFill('color');
85
+ engine.block.setColor(unionFill2, 'fill/color/value', {
86
+ r: 0.4,
87
+ g: 1.0,
88
+ b: 0.4,
89
+ a: 1.0
90
+ });
91
+ engine.block.setFill(unionCircle2, unionFill2);
92
+ engine.block.setWidth(unionCircle2, 120);
93
+ engine.block.setHeight(unionCircle2, 120);
94
+ engine.block.setPositionX(unionCircle2, 180);
95
+ engine.block.setPositionY(unionCircle2, 100);
96
+ engine.block.appendChild(page, unionCircle2);
97
+
98
+ const unionCircle3 = engine.block.create('graphic');
99
+ engine.block.setShape(
100
+ unionCircle3,
101
+ engine.block.createShape('//ly.img.ubq/shape/ellipse')
102
+ );
103
+ const unionFill3 = engine.block.createFill('color');
104
+ engine.block.setColor(unionFill3, 'fill/color/value', {
105
+ r: 0.4,
106
+ g: 0.4,
107
+ b: 1.0,
108
+ a: 1.0
109
+ });
110
+ engine.block.setFill(unionCircle3, unionFill3);
111
+ engine.block.setWidth(unionCircle3, 120);
112
+ engine.block.setHeight(unionCircle3, 120);
113
+ engine.block.setPositionX(unionCircle3, 140);
114
+ engine.block.setPositionY(unionCircle3, 140);
115
+ engine.block.appendChild(page, unionCircle3);
116
+
117
+ // Check if blocks can be combined before attempting operations
118
+ const canCombineUnion = engine.block.isCombinable([
119
+ unionCircle1,
120
+ unionCircle2,
121
+ unionCircle3
122
+ ]);
123
+
124
+ // Merge three circles using Union operation
125
+ if (canCombineUnion) {
126
+ engine.block.combine([unionCircle1, unionCircle2, unionCircle3], 'Union');
127
+ }
128
+
129
+ // Export Union result
130
+ let blob = await engine.block.export(page, { mimeType: 'image/png' });
131
+ let buffer = Buffer.from(await blob.arrayBuffer());
132
+ writeFileSync(`${outputDir}/combine-union-result.png`, buffer);
133
+ // eslint-disable-next-line no-console
134
+ console.log('✓ Exported Union result to output/combine-union-result.png');
135
+
136
+ // ===== Demonstration 2: Difference Operation =====
137
+ engine.scene.create('VerticalStack', {
138
+ page: { size: { width: 400, height: 300 } }
139
+ });
140
+ page = engine.block.findByType('page')[0];
141
+
142
+ // Create image block for base
143
+ const imageBlock = engine.block.create('graphic');
144
+ engine.block.setShape(
145
+ imageBlock,
146
+ engine.block.createShape('//ly.img.ubq/shape/rect')
147
+ );
148
+ const imageFill = engine.block.createFill('image');
149
+ engine.block.setString(
150
+ imageFill,
151
+ 'fill/image/imageFileURI',
152
+ 'https://img.ly/static/ubq_samples/sample_1.jpg'
153
+ );
154
+ engine.block.setFill(imageBlock, imageFill);
155
+ engine.block.setWidth(imageBlock, 360);
156
+ engine.block.setHeight(imageBlock, 240);
157
+ engine.block.setPositionX(imageBlock, 20);
158
+ engine.block.setPositionY(imageBlock, 30);
159
+ engine.block.appendChild(page, imageBlock);
160
+
161
+ // Create text block for punch-out
162
+ const textBlock = engine.block.create('text');
163
+ engine.block.replaceText(textBlock, 'CUTOUT');
164
+ engine.block.setFloat(textBlock, 'text/fontSize', 120);
165
+ engine.block.setPositionX(textBlock, 60);
166
+ engine.block.setPositionY(textBlock, 90);
167
+ engine.block.appendChild(page, textBlock);
168
+
169
+ // Ensure image is at bottom for Difference operation
170
+ engine.block.sendToBack(imageBlock);
171
+
172
+ const canCombineDiff = engine.block.isCombinable([imageBlock, textBlock]);
173
+
174
+ // Create punch-out text effect using Difference operation
175
+ if (canCombineDiff) {
176
+ engine.block.combine([imageBlock, textBlock], 'Difference');
177
+ }
178
+
179
+ blob = await engine.block.export(page, { mimeType: 'image/png' });
180
+ buffer = Buffer.from(await blob.arrayBuffer());
181
+ writeFileSync(`${outputDir}/combine-difference-result.png`, buffer);
182
+ // eslint-disable-next-line no-console
183
+ console.log(
184
+ '✓ Exported Difference result to output/combine-difference-result.png'
185
+ );
186
+
187
+ // ===== Demonstration 3: Intersection Operation =====
188
+ engine.scene.create('VerticalStack', {
189
+ page: { size: { width: 400, height: 300 } }
190
+ });
191
+ page = engine.block.findByType('page')[0];
192
+
193
+ // Create two overlapping circles for intersection
194
+ const intersectCircle1 = engine.block.create('graphic');
195
+ engine.block.setShape(
196
+ intersectCircle1,
197
+ engine.block.createShape('//ly.img.ubq/shape/ellipse')
198
+ );
199
+ const intersectFill1 = engine.block.createFill('color');
200
+ engine.block.setColor(intersectFill1, 'fill/color/value', {
201
+ r: 1.0,
202
+ g: 0.6,
203
+ b: 0.2,
204
+ a: 1.0
205
+ });
206
+ engine.block.setFill(intersectCircle1, intersectFill1);
207
+ engine.block.setWidth(intersectCircle1, 144);
208
+ engine.block.setHeight(intersectCircle1, 144);
209
+ engine.block.setPositionX(intersectCircle1, 128);
210
+ engine.block.setPositionY(intersectCircle1, 90);
211
+ engine.block.appendChild(page, intersectCircle1);
212
+
213
+ const intersectCircle2 = engine.block.create('graphic');
214
+ engine.block.setShape(
215
+ intersectCircle2,
216
+ engine.block.createShape('//ly.img.ubq/shape/ellipse')
217
+ );
218
+ const intersectFill2 = engine.block.createFill('color');
219
+ engine.block.setColor(intersectFill2, 'fill/color/value', {
220
+ r: 1.0,
221
+ g: 0.6,
222
+ b: 0.2,
223
+ a: 1.0
224
+ });
225
+ engine.block.setFill(intersectCircle2, intersectFill2);
226
+ engine.block.setWidth(intersectCircle2, 144);
227
+ engine.block.setHeight(intersectCircle2, 144);
228
+ engine.block.setPositionX(intersectCircle2, 128);
229
+ engine.block.setPositionY(intersectCircle2, 162);
230
+ engine.block.appendChild(page, intersectCircle2);
231
+
232
+ const canCombineIntersect = engine.block.isCombinable([
233
+ intersectCircle1,
234
+ intersectCircle2
235
+ ]);
236
+
237
+ // Extract overlapping area using Intersection operation
238
+ if (canCombineIntersect) {
239
+ engine.block.combine([intersectCircle1, intersectCircle2], 'Intersection');
240
+ }
241
+
242
+ blob = await engine.block.export(page, { mimeType: 'image/png' });
243
+ buffer = Buffer.from(await blob.arrayBuffer());
244
+ writeFileSync(`${outputDir}/combine-intersection-result.png`, buffer);
245
+ // eslint-disable-next-line no-console
246
+ console.log(
247
+ '✓ Exported Intersection result to output/combine-intersection-result.png'
248
+ );
249
+
250
+ // ===== Demonstration 4: XOR Operation =====
251
+ engine.scene.create('VerticalStack', {
252
+ page: { size: { width: 400, height: 300 } }
253
+ });
254
+ page = engine.block.findByType('page')[0];
255
+
256
+ // Create two overlapping circles for XOR
257
+ const xorCircle1 = engine.block.create('graphic');
258
+ engine.block.setShape(
259
+ xorCircle1,
260
+ engine.block.createShape('//ly.img.ubq/shape/ellipse')
261
+ );
262
+ const xorFill1 = engine.block.createFill('color');
263
+ engine.block.setColor(xorFill1, 'fill/color/value', {
264
+ r: 1.0,
265
+ g: 0.8,
266
+ b: 0.2,
267
+ a: 1.0
268
+ });
269
+ engine.block.setFill(xorCircle1, xorFill1);
270
+ engine.block.setWidth(xorCircle1, 140);
271
+ engine.block.setHeight(xorCircle1, 140);
272
+ engine.block.setPositionX(xorCircle1, 110);
273
+ engine.block.setPositionY(xorCircle1, 80);
274
+ engine.block.appendChild(page, xorCircle1);
275
+
276
+ const xorCircle2 = engine.block.create('graphic');
277
+ engine.block.setShape(
278
+ xorCircle2,
279
+ engine.block.createShape('//ly.img.ubq/shape/ellipse')
280
+ );
281
+ const xorFill2 = engine.block.createFill('color');
282
+ engine.block.setColor(xorFill2, 'fill/color/value', {
283
+ r: 0.6,
284
+ g: 0.4,
285
+ b: 1.0,
286
+ a: 1.0
287
+ });
288
+ engine.block.setFill(xorCircle2, xorFill2);
289
+ engine.block.setWidth(xorCircle2, 140);
290
+ engine.block.setHeight(xorCircle2, 140);
291
+ engine.block.setPositionX(xorCircle2, 166);
292
+ engine.block.setPositionY(xorCircle2, 108);
293
+ engine.block.appendChild(page, xorCircle2);
294
+
295
+ const canCombineXor = engine.block.isCombinable([xorCircle1, xorCircle2]);
296
+
297
+ // Create exclusion shape using XOR operation
298
+ if (canCombineXor) {
299
+ engine.block.combine([xorCircle1, xorCircle2], 'XOR');
300
+ }
301
+
302
+ blob = await engine.block.export(page, { mimeType: 'image/png' });
303
+ buffer = Buffer.from(await blob.arrayBuffer());
304
+ writeFileSync(`${outputDir}/combine-xor-result.png`, buffer);
305
+ // eslint-disable-next-line no-console
306
+ console.log('✓ Exported XOR result to output/combine-xor-result.png');
307
+
308
+ // eslint-disable-next-line no-console
309
+ console.log('\n✓ All boolean operations completed successfully!');
310
+ } finally {
311
+ // Always dispose the engine to free resources
312
+ engine.dispose();
313
+ }
382
314
  ```
383
315
 
384
316
  This guide covers checking combinability, applying the four boolean operations, understanding fill inheritance, and troubleshooting common combination issues.
@@ -397,9 +329,8 @@ Combining blocks with the `'Difference'` operation results in a new block whose
397
329
 
398
330
  The combined blocks will be destroyed if the `'lifecycle/destroy'` scope is enabled.
399
331
 
400
- > **Note:** **Only the following blocks can be combined\*** A graphics block
401
- >
402
- > - A text block
332
+ > **Note:** **Only the following blocks can be combined*** A graphics block
333
+ > * A text block
403
334
 
404
335
  ## Checking Combinability
405
336
 
@@ -412,12 +343,6 @@ const canCombineUnion = engine.block.isCombinable([
412
343
  unionCircle2,
413
344
  unionCircle3
414
345
  ]);
415
- const canCombineDiff = engine.block.isCombinable([imageBlock, textBlock]);
416
- const canCombineIntersect = engine.block.isCombinable([
417
- intersectCircle1,
418
- intersectCircle2
419
- ]);
420
- const canCombineXor = engine.block.isCombinable([xorCircle1, xorCircle2]);
421
346
  ```
422
347
 
423
348
  The check returns `true` if all blocks meet the requirements. Attempting to combine incompatible blocks will fail.
@@ -427,7 +352,7 @@ The check returns `true` if all blocks meet the requirements. Attempting to comb
427
352
  Union merges multiple shapes into one compound outline. The result inherits the fill from the top-most block in the z-order.
428
353
 
429
354
  ```typescript highlight-combine-union
430
- // Combine three circles using Union operation
355
+ // Merge three circles using Union operation
431
356
  if (canCombineUnion) {
432
357
  engine.block.combine([unionCircle1, unionCircle2, unionCircle3], 'Union');
433
358
  }
@@ -442,10 +367,8 @@ Use Union for merging logos, creating compound icons, and building complex shape
442
367
  Difference subtracts overlapping shapes from a base block, creating cutout effects. The result inherits the fill from the bottom-most block.
443
368
 
444
369
  ```typescript highlight-combine-difference
445
- // Create punch-out effect using Difference operation
446
- // Ensure image is at the bottom (will be the base block)
370
+ // Create punch-out text effect using Difference operation
447
371
  if (canCombineDiff) {
448
- engine.block.sendToBack(imageBlock);
449
372
  engine.block.combine([imageBlock, textBlock], 'Difference');
450
373
  }
451
374
  ```
@@ -474,7 +397,7 @@ Use Intersection for lens effects, overlapping patterns, and extracting geometri
474
397
  XOR (exclusive OR) keeps non-overlapping parts while removing intersections, creating an exclusion or donut effect. The result inherits the fill from the top-most block.
475
398
 
476
399
  ```typescript highlight-combine-xor
477
- // Create exclusion pattern using XOR operation
400
+ // Create exclusion shape using XOR operation
478
401
  if (canCombineXor) {
479
402
  engine.block.combine([xorCircle1, xorCircle2], 'XOR');
480
403
  }
@@ -524,220 +447,111 @@ Boolean operations are applied pair-wise in specific order. Union/Intersection/X
524
447
 
525
448
  ## Full Code
526
449
 
527
- Here's the complete implementation showing all four boolean operations:
450
+ Here's the complete implementation showing all four boolean operations in a headless Node.js environment:
528
451
 
529
452
  ```typescript
530
- import CreativeEditorSDK from '@cesdk/cesdk-js';
531
- import {
532
- BlurAssetSource,
533
- ColorPaletteAssetSource,
534
- CropPresetsAssetSource,
535
- DemoAssetSources,
536
- EffectsAssetSource,
537
- FiltersAssetSource,
538
- PagePresetsAssetSource,
539
- StickerAssetSource,
540
- TextAssetSource,
541
- TextComponentAssetSource,
542
- TypefaceAssetSource,
543
- UploadAssetSources,
544
- VectorShapeAssetSource
545
- } from '@cesdk/cesdk-js/plugins';
546
-
547
- const config = {
548
- license: 'YOUR_CESDK_LICENSE_KEY',
549
- callbacks: {
550
- onUpload: 'local'
551
- }
552
- };
553
-
554
- const cesdk = await CreativeEditorSDK.create('#cesdk_container', config);
555
-
556
- // Add default asset source plugins
557
- await cesdk.addPlugin(new BlurAssetSource());
558
- await cesdk.addPlugin(new ColorPaletteAssetSource());
559
- await cesdk.addPlugin(new CropPresetsAssetSource());
560
- await cesdk.addPlugin(new EffectsAssetSource());
561
- await cesdk.addPlugin(new FiltersAssetSource());
562
- await cesdk.addPlugin(new PagePresetsAssetSource());
563
- await cesdk.addPlugin(new StickerAssetSource());
564
- await cesdk.addPlugin(new TextAssetSource());
565
- await cesdk.addPlugin(new TextComponentAssetSource());
566
- await cesdk.addPlugin(new TypefaceAssetSource());
567
- await cesdk.addPlugin(new VectorShapeAssetSource());
568
-
569
- // Add demo and upload sources
570
- await cesdk.addPlugin(
571
- new UploadAssetSources({ include: ['ly.img.image.upload'] })
572
- );
573
- await cesdk.addPlugin(
574
- new DemoAssetSources({
575
- include: [
576
- 'ly.img.templates.blank.*',
577
- 'ly.img.templates.presentation.*',
578
- 'ly.img.templates.print.*',
579
- 'ly.img.templates.social.*',
580
- 'ly.img.image.*'
581
- ]
582
- })
583
- );
584
- await cesdk.actions.run('scene.create');
585
-
586
- const engine = cesdk.engine;
587
- const page = engine.block.findByType('page')[0];
588
-
589
- engine.block.setWidth(page, 800);
590
- engine.block.setHeight(page, 600);
591
-
592
- const pageWidth = engine.block.getWidth(page);
593
- const pageHeight = engine.block.getHeight(page);
594
- const quadrantWidth = pageWidth / 2;
595
- const quadrantHeight = pageHeight / 2;
596
-
597
- // Union: Combine three circles in top-left quadrant (20% larger, centered)
598
- const circle1 = engine.block.create('graphic');
599
- engine.block.setShape(
600
- circle1,
601
- engine.block.createShape('//ly.img.ubq/shape/ellipse')
602
- );
603
- const fill1 = engine.block.createFill('color');
604
- engine.block.setColor(fill1, 'fill/color/value', {
605
- r: 1.0,
606
- g: 0.4,
607
- b: 0.4,
608
- a: 1.0
609
- });
610
- engine.block.setFill(circle1, fill1);
611
- engine.block.setWidth(circle1, 96); // 80 * 1.2 = 96
612
- engine.block.setHeight(circle1, 96);
613
- engine.block.setPositionX(circle1, quadrantWidth / 2 - 48);
614
- engine.block.setPositionY(circle1, quadrantHeight / 2 - 48);
615
- engine.block.appendChild(page, circle1);
616
-
617
- const circle2 = engine.block.create('graphic');
618
- engine.block.setShape(
619
- circle2,
620
- engine.block.createShape('//ly.img.ubq/shape/ellipse')
621
- );
622
- const fill2 = engine.block.createFill('color');
623
- engine.block.setColor(fill2, 'fill/color/value', {
624
- r: 0.4,
625
- g: 1.0,
626
- b: 0.4,
627
- a: 1.0
628
- });
629
- engine.block.setFill(circle2, fill2);
630
- engine.block.setWidth(circle2, 96); // 80 * 1.2 = 96
631
- engine.block.setHeight(circle2, 96);
632
- engine.block.setPositionX(circle2, quadrantWidth / 2 + 24);
633
- engine.block.setPositionY(circle2, quadrantHeight / 2 - 48);
634
- engine.block.appendChild(page, circle2);
635
-
636
- const circle3 = engine.block.create('graphic');
637
- engine.block.setShape(
638
- circle3,
639
- engine.block.createShape('//ly.img.ubq/shape/ellipse')
640
- );
641
- const fill3 = engine.block.createFill('color');
642
- engine.block.setColor(fill3, 'fill/color/value', {
643
- r: 0.4,
644
- g: 0.4,
645
- b: 1.0,
646
- a: 1.0
453
+ import CreativeEngine from '@cesdk/node';
454
+ import { config } from 'dotenv';
455
+ import { writeFileSync, mkdirSync, existsSync } from 'fs';
456
+
457
+ // Load environment variables
458
+ config();
459
+
460
+ // Initialize CE.SDK engine in headless mode
461
+ const engine = await CreativeEngine.init({
462
+ // license: process.env.CESDK_LICENSE, // Optional (trial mode available)
647
463
  });
648
- engine.block.setFill(circle3, fill3);
649
- engine.block.setWidth(circle3, 120); // 100 * 1.2 = 120
650
- engine.block.setHeight(circle3, 120);
651
- engine.block.setPositionX(circle3, quadrantWidth / 2 - 12);
652
- engine.block.setPositionY(circle3, quadrantHeight / 2 - 12);
653
- engine.block.appendChild(page, circle3);
654
-
655
- // Check combinability and perform Union
656
- if (engine.block.isCombinable([circle1, circle2, circle3])) {
657
- const unionResult = engine.block.combine(
658
- [circle1, circle2, circle3],
659
- 'Union'
660
- );
661
- }
662
464
 
663
- // Difference: Create punch-out text effect in top-right quadrant
664
- const imageWidth = 360; // 300 * 1.2 = 360
665
- const imageHeight = 240; // 200 * 1.2 = 240
666
- const imageBlock = engine.block.create('graphic');
667
- engine.block.setShape(
668
- imageBlock,
669
- engine.block.createShape('//ly.img.ubq/shape/rect')
670
- );
671
- const imageFill = engine.block.createFill('image');
672
- engine.block.setString(
673
- imageFill,
674
- 'fill/image/imageFileURI',
675
- 'https://img.ly/static/ubq_samples/sample_1.jpg'
676
- );
677
- engine.block.setFill(imageBlock, imageFill);
678
- engine.block.setWidth(imageBlock, imageWidth);
679
- engine.block.setHeight(imageBlock, imageHeight);
680
- engine.block.setPositionX(
681
- imageBlock,
682
- quadrantWidth + (quadrantWidth - imageWidth) / 2
683
- );
684
- engine.block.setPositionY(imageBlock, (quadrantHeight - imageHeight) / 2);
685
- engine.block.appendChild(page, imageBlock);
686
-
687
- const textBlock = engine.block.create('text');
688
- engine.block.replaceText(textBlock, 'CUTOUT');
689
- engine.block.setFloat(textBlock, 'text/fontSize', 170);
690
- const textWidth = 300;
691
- const textHeight = 120;
692
- engine.block.setWidth(textBlock, textWidth);
693
- engine.block.setHeight(textBlock, textHeight);
694
- // Center text on the image
695
- engine.block.setPositionX(
696
- textBlock,
697
- quadrantWidth + (quadrantWidth - textWidth) / 2
698
- );
699
- engine.block.setPositionY(textBlock, (quadrantHeight - textHeight) / 2);
700
- engine.block.appendChild(page, textBlock);
701
-
702
- // Ensure image is at bottom for Difference operation
703
- engine.block.sendToBack(imageBlock);
704
-
705
- if (engine.block.isCombinable([imageBlock, textBlock])) {
706
- const differenceResult = engine.block.combine(
707
- [imageBlock, textBlock],
708
- 'Difference'
709
- );
710
- }
465
+ try {
466
+ const outputDir = './output';
467
+ if (!existsSync(outputDir)) {
468
+ mkdirSync(outputDir, { recursive: true });
469
+ }
711
470
 
712
- // Zoom to see all results
713
- await engine.scene.zoomToBlock(page, { padding: 40 });
471
+ // Create a design scene
472
+ engine.scene.create('VerticalStack', {
473
+ page: { size: { width: 400, height: 300 } },
474
+ });
475
+ const page = engine.block.findByType('page')[0];
476
+
477
+ // Create three circles for union demonstration
478
+ const circle1 = engine.block.create('graphic');
479
+ engine.block.setShape(circle1, engine.block.createShape('//ly.img.ubq/shape/ellipse'));
480
+ const fill1 = engine.block.createFill('color');
481
+ engine.block.setColor(fill1, 'fill/color/value', { r: 1.0, g: 0.4, b: 0.4, a: 1.0 });
482
+ engine.block.setFill(circle1, fill1);
483
+ engine.block.setWidth(circle1, 120);
484
+ engine.block.setHeight(circle1, 120);
485
+ engine.block.setPositionX(circle1, 100);
486
+ engine.block.setPositionY(circle1, 80);
487
+ engine.block.appendChild(page, circle1);
488
+
489
+ const circle2 = engine.block.create('graphic');
490
+ engine.block.setShape(circle2, engine.block.createShape('//ly.img.ubq/shape/ellipse'));
491
+ const fill2 = engine.block.createFill('color');
492
+ engine.block.setColor(fill2, 'fill/color/value', { r: 0.4, g: 1.0, b: 0.4, a: 1.0 });
493
+ engine.block.setFill(circle2, fill2);
494
+ engine.block.setWidth(circle2, 120);
495
+ engine.block.setHeight(circle2, 120);
496
+ engine.block.setPositionX(circle2, 180);
497
+ engine.block.setPositionY(circle2, 100);
498
+ engine.block.appendChild(page, circle2);
499
+
500
+ const circle3 = engine.block.create('graphic');
501
+ engine.block.setShape(circle3, engine.block.createShape('//ly.img.ubq/shape/ellipse'));
502
+ const fill3 = engine.block.createFill('color');
503
+ engine.block.setColor(fill3, 'fill/color/value', { r: 0.4, g: 0.4, b: 1.0, a: 1.0 });
504
+ engine.block.setFill(circle3, fill3);
505
+ engine.block.setWidth(circle3, 120);
506
+ engine.block.setHeight(circle3, 120);
507
+ engine.block.setPositionX(circle3, 140);
508
+ engine.block.setPositionY(circle3, 140);
509
+ engine.block.appendChild(page, circle3);
510
+
511
+ // Check combinability and perform Union
512
+ if (engine.block.isCombinable([circle1, circle2, circle3])) {
513
+ engine.block.combine([circle1, circle2, circle3], 'Union');
514
+ }
515
+
516
+ // Export the result
517
+ const blob = await engine.block.export(page, { mimeType: 'image/png' });
518
+ const buffer = Buffer.from(await blob.arrayBuffer());
519
+ writeFileSync(`${outputDir}/combine-union-result.png`, buffer);
520
+
521
+ console.log('✓ Exported Union result to output/combine-union-result.png');
522
+ } finally {
523
+ // Always dispose the engine to free resources
524
+ engine.dispose();
525
+ }
714
526
  ```
715
527
 
716
528
  ## API Reference
717
529
 
718
- | Method | Category | Purpose |
719
- | -------------------------------------------------- | ----------- | ----------------------------------- |
720
- | `engine.block.isCombinable(ids)` | Validation | Check if blocks can be combined |
721
- | `engine.block.combine(ids, op)` | Combination | Perform boolean operation on blocks |
722
- | `engine.block.create('graphic')` | Creation | Create graphic block for shapes |
723
- | `engine.block.create('text')` | Creation | Create text block |
724
- | `engine.block.createShape(type)` | Shapes | Create shape (ellipse, rect, etc.) |
725
- | `engine.block.setShape(id, shape)` | Shapes | Apply shape to graphic block |
726
- | `engine.block.createFill(type)` | Fills | Create fill (color, image, etc.) |
727
- | `engine.block.setFill(id, fill)` | Fills | Apply fill to block |
728
- | `engine.block.setPositionX/Y(id, val)` | Transform | Position blocks before combining |
729
- | `engine.block.setWidth/Height(id, val)` | Transform | Size blocks before combining |
730
- | `engine.block.appendChild(parent, child)` | Hierarchy | Add blocks to scene |
731
- | `engine.block.isScopeEnabled(id, scope)` | Scope | Check if scope is enabled |
732
- | `engine.block.setScopeEnabled(id, scope, enabled)` | Scope | Enable/disable scope |
733
- | `engine.block.bringToFront(id)` | Order | Control stacking order |
734
- | `engine.block.sendToBack(id)` | Order | Control stacking order |
530
+ | Method | Category | Purpose |
531
+ | --- | --- | --- |
532
+ | `engine.block.isCombinable(ids)` | Validation | Check if blocks can be combined |
533
+ | `engine.block.combine(ids, op)` | Combination | Perform boolean operation on blocks |
534
+ | `engine.block.create('graphic')` | Creation | Create graphic block for shapes |
535
+ | `engine.block.create('text')` | Creation | Create text block |
536
+ | `engine.block.createShape(type)` | Shapes | Create shape (ellipse, rect, etc.) |
537
+ | `engine.block.setShape(id, shape)` | Shapes | Apply shape to graphic block |
538
+ | `engine.block.createFill(type)` | Fills | Create fill (color, image, etc.) |
539
+ | `engine.block.setFill(id, fill)` | Fills | Apply fill to block |
540
+ | `engine.block.setPositionX/Y(id, val)` | Transform | Position blocks before combining |
541
+ | `engine.block.setWidth/Height(id, val)` | Transform | Size blocks before combining |
542
+ | `engine.block.appendChild(parent, child)` | Hierarchy | Add blocks to scene |
543
+ | `engine.block.isScopeEnabled(id, scope)` | Scope | Check if scope is enabled |
544
+ | `engine.block.setScopeEnabled(id, scope, enabled)` | Scope | Enable/disable scope |
545
+ | `engine.block.bringToFront(id)` | Order | Control stacking order |
546
+ | `engine.block.sendToBack(id)` | Order | Control stacking order |
547
+
548
+
735
549
 
736
550
  ---
737
551
 
738
552
  ## More Resources
739
553
 
740
- - **[Vanilla JS/TS Documentation Index](https://img.ly/docs/cesdk/js.md)** - Browse all Vanilla JS/TS documentation
554
+ - **[Node.js Documentation Index](https://img.ly/docs/cesdk/node.md)** - Browse all Node.js documentation
741
555
  - **[Complete Documentation](./llms-full.txt.md)** - Full documentation in one file (for LLMs)
742
- - **[Web Documentation](./js.md)** - Interactive documentation with examples
743
- - **[Support](mailto:support@img.ly)** - Contact IMG.LY support
556
+ - **[Web Documentation](./node.md)** - Interactive documentation with examples
557
+ - **[Support](mailto:support@img.ly)** - Contact IMG.LY support