@imgly/codesign-mcp 0.1.0

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 (816) hide show
  1. package/LICENSE.md +16 -0
  2. package/README.md +158 -0
  3. package/assets/docs/api/SKILL.md +49 -0
  4. package/assets/docs/api/index.d.ts +10518 -0
  5. package/assets/docs/guide/SKILL.md +142 -0
  6. package/assets/docs/guide/actions.md +1038 -0
  7. package/assets/docs/guide/animation/create/base.md +467 -0
  8. package/assets/docs/guide/animation/create/text.md +453 -0
  9. package/assets/docs/guide/animation/create.md +558 -0
  10. package/assets/docs/guide/animation/edit.md +501 -0
  11. package/assets/docs/guide/animation/overview.md +22 -0
  12. package/assets/docs/guide/animation/types.md +430 -0
  13. package/assets/docs/guide/animation.md +23 -0
  14. package/assets/docs/guide/api/AssetAPI.md +602 -0
  15. package/assets/docs/guide/api/BlockAPI.md +6152 -0
  16. package/assets/docs/guide/api/CreativeEngine.md +180 -0
  17. package/assets/docs/guide/api/EditorAPI.md +1261 -0
  18. package/assets/docs/guide/api/EventAPI.md +25 -0
  19. package/assets/docs/guide/api/SceneAPI.md +729 -0
  20. package/assets/docs/guide/api/VariableAPI.md +59 -0
  21. package/assets/docs/guide/api/types.md +71 -0
  22. package/assets/docs/guide/api-reference/overview.md +20 -0
  23. package/assets/docs/guide/automation/auto-resize.md +412 -0
  24. package/assets/docs/guide/automation/batch-processing.md +474 -0
  25. package/assets/docs/guide/automation/data-merge.md +406 -0
  26. package/assets/docs/guide/automation/design-generation.md +107 -0
  27. package/assets/docs/guide/automation/overview.md +16 -0
  28. package/assets/docs/guide/automation.md +24 -0
  29. package/assets/docs/guide/browser-support.md +38 -0
  30. package/assets/docs/guide/capabilities.md +18 -0
  31. package/assets/docs/guide/colors/adjust.md +551 -0
  32. package/assets/docs/guide/colors/apply.md +349 -0
  33. package/assets/docs/guide/colors/basics.md +440 -0
  34. package/assets/docs/guide/colors/conversion.md +504 -0
  35. package/assets/docs/guide/colors/create-color-palette.md +426 -0
  36. package/assets/docs/guide/colors/for-print/cmyk.md +577 -0
  37. package/assets/docs/guide/colors/for-print/spot.md +751 -0
  38. package/assets/docs/guide/colors/for-print.md +21 -0
  39. package/assets/docs/guide/colors/for-screen/p3.md +60 -0
  40. package/assets/docs/guide/colors/for-screen/srgb.md +463 -0
  41. package/assets/docs/guide/colors/for-screen.md +21 -0
  42. package/assets/docs/guide/colors/overview.md +20 -0
  43. package/assets/docs/guide/colors/replace.md +535 -0
  44. package/assets/docs/guide/colors.md +28 -0
  45. package/assets/docs/guide/compatibility.md +27 -0
  46. package/assets/docs/guide/concepts/architecture.md +99 -0
  47. package/assets/docs/guide/concepts/assets.md +360 -0
  48. package/assets/docs/guide/concepts/blocks.md +750 -0
  49. package/assets/docs/guide/concepts/buffers.md +546 -0
  50. package/assets/docs/guide/concepts/design-units.md +333 -0
  51. package/assets/docs/guide/concepts/edit-modes.md +431 -0
  52. package/assets/docs/guide/concepts/editing-workflow.md +303 -0
  53. package/assets/docs/guide/concepts/events.md +466 -0
  54. package/assets/docs/guide/concepts/headless-mode/browser.md +291 -0
  55. package/assets/docs/guide/concepts/pages.md +396 -0
  56. package/assets/docs/guide/concepts/resources.md +496 -0
  57. package/assets/docs/guide/concepts/scenes.md +443 -0
  58. package/assets/docs/guide/concepts/templating.md +194 -0
  59. package/assets/docs/guide/concepts/terminology.md +296 -0
  60. package/assets/docs/guide/concepts/undo-and-history.md +461 -0
  61. package/assets/docs/guide/concepts.md +38 -0
  62. package/assets/docs/guide/configuration.md +469 -0
  63. package/assets/docs/guide/conversion/overview.md +22 -0
  64. package/assets/docs/guide/conversion/to-base64.md +234 -0
  65. package/assets/docs/guide/conversion/to-pdf.md +616 -0
  66. package/assets/docs/guide/conversion/to-png.md +290 -0
  67. package/assets/docs/guide/conversion.md +23 -0
  68. package/assets/docs/guide/create-audio/audio/add-music.md +430 -0
  69. package/assets/docs/guide/create-audio/audio/add-sound-effects.md +664 -0
  70. package/assets/docs/guide/create-audio/audio/loop.md +370 -0
  71. package/assets/docs/guide/create-audio/audio.md +336 -0
  72. package/assets/docs/guide/create-composition/add-background.md +395 -0
  73. package/assets/docs/guide/create-composition/blend-modes.md +372 -0
  74. package/assets/docs/guide/create-composition/collage.md +432 -0
  75. package/assets/docs/guide/create-composition/group-and-ungroup.md +388 -0
  76. package/assets/docs/guide/create-composition/layer-management.md +503 -0
  77. package/assets/docs/guide/create-composition/layout.md +396 -0
  78. package/assets/docs/guide/create-composition/lock-design.md +362 -0
  79. package/assets/docs/guide/create-composition/multi-page.md +204 -0
  80. package/assets/docs/guide/create-composition/overview.md +18 -0
  81. package/assets/docs/guide/create-composition/programmatic.md +593 -0
  82. package/assets/docs/guide/create-composition.md +30 -0
  83. package/assets/docs/guide/create-templates/add-dynamic-content/placeholders.md +688 -0
  84. package/assets/docs/guide/create-templates/add-dynamic-content/set-editing-constraints.md +600 -0
  85. package/assets/docs/guide/create-templates/add-dynamic-content/text-variables.md +647 -0
  86. package/assets/docs/guide/create-templates/add-dynamic-content.md +307 -0
  87. package/assets/docs/guide/create-templates/add-to-template-library.md +297 -0
  88. package/assets/docs/guide/create-templates/edit-or-remove.md +441 -0
  89. package/assets/docs/guide/create-templates/from-scratch.md +558 -0
  90. package/assets/docs/guide/create-templates/import/from-scene-file.md +440 -0
  91. package/assets/docs/guide/create-templates/import.md +244 -0
  92. package/assets/docs/guide/create-templates/lock.md +325 -0
  93. package/assets/docs/guide/create-templates/overview.md +16 -0
  94. package/assets/docs/guide/create-templates.md +32 -0
  95. package/assets/docs/guide/create-video/audio/adjust-speed.md +302 -0
  96. package/assets/docs/guide/create-video/audio/adjust-volume.md +346 -0
  97. package/assets/docs/guide/create-video/control.md +285 -0
  98. package/assets/docs/guide/create-video/limitations.md +396 -0
  99. package/assets/docs/guide/create-video/overview.md +224 -0
  100. package/assets/docs/guide/create-video/timeline-editor.md +622 -0
  101. package/assets/docs/guide/create-video/update-caption-presets.md +676 -0
  102. package/assets/docs/guide/create-video.md +32 -0
  103. package/assets/docs/guide/edit-image/add-watermark.md +497 -0
  104. package/assets/docs/guide/edit-image/overview.md +22 -0
  105. package/assets/docs/guide/edit-image/remove-bg.md +420 -0
  106. package/assets/docs/guide/edit-image/replace-colors.md +680 -0
  107. package/assets/docs/guide/edit-image/transform/crop.md +523 -0
  108. package/assets/docs/guide/edit-image/transform/move.md +279 -0
  109. package/assets/docs/guide/edit-image/transform/resize.md +301 -0
  110. package/assets/docs/guide/edit-image/transform/rotate.md +408 -0
  111. package/assets/docs/guide/edit-image/transform/scale.md +278 -0
  112. package/assets/docs/guide/edit-image/transform.md +24 -0
  113. package/assets/docs/guide/edit-image/vectorize.md +204 -0
  114. package/assets/docs/guide/edit-image.md +25 -0
  115. package/assets/docs/guide/edit-video/add-captions.md +589 -0
  116. package/assets/docs/guide/edit-video/add-watermark.md +429 -0
  117. package/assets/docs/guide/edit-video/join-and-arrange.md +540 -0
  118. package/assets/docs/guide/edit-video/redaction.md +544 -0
  119. package/assets/docs/guide/edit-video/split.md +634 -0
  120. package/assets/docs/guide/edit-video/transform/crop.md +380 -0
  121. package/assets/docs/guide/edit-video/transform/flip.md +182 -0
  122. package/assets/docs/guide/edit-video/transform/move.md +413 -0
  123. package/assets/docs/guide/edit-video/transform/resize.md +534 -0
  124. package/assets/docs/guide/edit-video/transform/rotate.md +312 -0
  125. package/assets/docs/guide/edit-video/transform/scale.md +603 -0
  126. package/assets/docs/guide/edit-video/transform.md +25 -0
  127. package/assets/docs/guide/edit-video/trim.md +773 -0
  128. package/assets/docs/guide/engine-interface.md +108 -0
  129. package/assets/docs/guide/export-save-publish/create-thumbnail.md +292 -0
  130. package/assets/docs/guide/export-save-publish/export/compress.md +639 -0
  131. package/assets/docs/guide/export-save-publish/export/overview.md +576 -0
  132. package/assets/docs/guide/export-save-publish/export/partial-export.md +694 -0
  133. package/assets/docs/guide/export-save-publish/export/size-limits.md +401 -0
  134. package/assets/docs/guide/export-save-publish/export/to-html5.md +474 -0
  135. package/assets/docs/guide/export-save-publish/export/to-jpeg.md +312 -0
  136. package/assets/docs/guide/export-save-publish/export/to-mp4.md +364 -0
  137. package/assets/docs/guide/export-save-publish/export/to-pdf.md +389 -0
  138. package/assets/docs/guide/export-save-publish/export/to-png.md +255 -0
  139. package/assets/docs/guide/export-save-publish/export/to-raw-data.md +303 -0
  140. package/assets/docs/guide/export-save-publish/export/to-webp.md +261 -0
  141. package/assets/docs/guide/export-save-publish/export/with-color-mask.md +278 -0
  142. package/assets/docs/guide/export-save-publish/export.md +36 -0
  143. package/assets/docs/guide/export-save-publish/for-printing.md +423 -0
  144. package/assets/docs/guide/export-save-publish/for-social-media.md +318 -0
  145. package/assets/docs/guide/export-save-publish/pre-export-validation.md +698 -0
  146. package/assets/docs/guide/export-save-publish/save.md +340 -0
  147. package/assets/docs/guide/export-save-publish/store-custom-metadata.md +367 -0
  148. package/assets/docs/guide/file-format-support.md +34 -0
  149. package/assets/docs/guide/fills/color.md +678 -0
  150. package/assets/docs/guide/fills/image.md +539 -0
  151. package/assets/docs/guide/fills/overview.md +144 -0
  152. package/assets/docs/guide/fills/video.md +641 -0
  153. package/assets/docs/guide/fills.md +24 -0
  154. package/assets/docs/guide/filters-and-effects/apply.md +1019 -0
  155. package/assets/docs/guide/filters-and-effects/blur.md +382 -0
  156. package/assets/docs/guide/filters-and-effects/chroma-key-green-screen.md +445 -0
  157. package/assets/docs/guide/filters-and-effects/create-custom-filters.md +614 -0
  158. package/assets/docs/guide/filters-and-effects/create-custom-lut-filter.md +426 -0
  159. package/assets/docs/guide/filters-and-effects/distortion.md +527 -0
  160. package/assets/docs/guide/filters-and-effects/duotone.md +602 -0
  161. package/assets/docs/guide/filters-and-effects/gradients.md +1311 -0
  162. package/assets/docs/guide/filters-and-effects/overview.md +22 -0
  163. package/assets/docs/guide/filters-and-effects/support.md +623 -0
  164. package/assets/docs/guide/filters-and-effects.md +28 -0
  165. package/assets/docs/guide/get-started/agent-skills.md +119 -0
  166. package/assets/docs/guide/get-started/build-with-ai.md +45 -0
  167. package/assets/docs/guide/get-started/mcp-server.md +119 -0
  168. package/assets/docs/guide/get-started/overview.md +28 -0
  169. package/assets/docs/guide/get-started/vanilla-js/quickstart.md +175 -0
  170. package/assets/docs/guide/grid-and-rulers.md +222 -0
  171. package/assets/docs/guide/guides/export-save-publish/export/audio.md +224 -0
  172. package/assets/docs/guide/guides/text/rendering-internals.md +796 -0
  173. package/assets/docs/guide/guides.md +49 -0
  174. package/assets/docs/guide/import-media/asset-library.md +23 -0
  175. package/assets/docs/guide/import-media/asset-panel/basics.md +324 -0
  176. package/assets/docs/guide/import-media/asset-panel/customize.md +478 -0
  177. package/assets/docs/guide/import-media/asset-panel/refresh-assets.md +415 -0
  178. package/assets/docs/guide/import-media/asset-panel/thumbnails.md +633 -0
  179. package/assets/docs/guide/import-media/capture-from-camera/record-video.md +137 -0
  180. package/assets/docs/guide/import-media/capture-from-camera.md +20 -0
  181. package/assets/docs/guide/import-media/concepts.md +173 -0
  182. package/assets/docs/guide/import-media/content-json-schema.md +615 -0
  183. package/assets/docs/guide/import-media/default-assets.md +381 -0
  184. package/assets/docs/guide/import-media/edit-or-remove-assets.md +489 -0
  185. package/assets/docs/guide/import-media/file-format-support.md +178 -0
  186. package/assets/docs/guide/import-media/from-local-source/user-upload.md +438 -0
  187. package/assets/docs/guide/import-media/from-local-source.md +20 -0
  188. package/assets/docs/guide/import-media/from-remote-source/asset-versioning.md +390 -0
  189. package/assets/docs/guide/import-media/from-remote-source/getty-images.md +627 -0
  190. package/assets/docs/guide/import-media/from-remote-source/imgly-premium-assets.md +625 -0
  191. package/assets/docs/guide/import-media/from-remote-source/pexels.md +692 -0
  192. package/assets/docs/guide/import-media/from-remote-source/remote-asset.md +473 -0
  193. package/assets/docs/guide/import-media/from-remote-source/soundstripe.md +497 -0
  194. package/assets/docs/guide/import-media/from-remote-source/third-party.md +51 -0
  195. package/assets/docs/guide/import-media/from-remote-source/unsplash.md +914 -0
  196. package/assets/docs/guide/import-media/from-remote-source/your-server.md +764 -0
  197. package/assets/docs/guide/import-media/from-remote-source.md +28 -0
  198. package/assets/docs/guide/import-media/overview.md +32 -0
  199. package/assets/docs/guide/import-media/retrieve-mimetype.md +274 -0
  200. package/assets/docs/guide/import-media/size-limits.md +20 -0
  201. package/assets/docs/guide/import-media/source-sets.md +476 -0
  202. package/assets/docs/guide/import-media.md +32 -0
  203. package/assets/docs/guide/insert-media/audio.md +291 -0
  204. package/assets/docs/guide/insert-media/images.md +380 -0
  205. package/assets/docs/guide/insert-media/position-and-align.md +734 -0
  206. package/assets/docs/guide/insert-media/shapes-or-stickers.md +799 -0
  207. package/assets/docs/guide/insert-media/videos.md +308 -0
  208. package/assets/docs/guide/insert-media.md +24 -0
  209. package/assets/docs/guide/key-capabilities.md +24 -0
  210. package/assets/docs/guide/key-concepts.md +83 -0
  211. package/assets/docs/guide/licensing.md +45 -0
  212. package/assets/docs/guide/llms-txt.md +53 -0
  213. package/assets/docs/guide/open-the-editor/blank-canvas.md +124 -0
  214. package/assets/docs/guide/open-the-editor/from-htmlcanvas.md +228 -0
  215. package/assets/docs/guide/open-the-editor/from-image.md +205 -0
  216. package/assets/docs/guide/open-the-editor/from-template.md +189 -0
  217. package/assets/docs/guide/open-the-editor/from-video.md +274 -0
  218. package/assets/docs/guide/open-the-editor/import-design/from-archive.md +504 -0
  219. package/assets/docs/guide/open-the-editor/import-design/from-indesign.md +680 -0
  220. package/assets/docs/guide/open-the-editor/import-design/from-photoshop.md +865 -0
  221. package/assets/docs/guide/open-the-editor/import-design.md +481 -0
  222. package/assets/docs/guide/open-the-editor/load-scene.md +178 -0
  223. package/assets/docs/guide/open-the-editor/overview.md +20 -0
  224. package/assets/docs/guide/open-the-editor/set-zoom-level.md +303 -0
  225. package/assets/docs/guide/open-the-editor/uri-resolver.md +347 -0
  226. package/assets/docs/guide/open-the-editor.md +29 -0
  227. package/assets/docs/guide/outlines/overview.md +14 -0
  228. package/assets/docs/guide/outlines/shadows-and-glows.md +515 -0
  229. package/assets/docs/guide/outlines/strokes.md +292 -0
  230. package/assets/docs/guide/outlines.md +22 -0
  231. package/assets/docs/guide/overview.md +22 -0
  232. package/assets/docs/guide/performance.md +217 -0
  233. package/assets/docs/guide/plugins/asset-sources.md +553 -0
  234. package/assets/docs/guide/plugins/print-ready-pdf.md +549 -0
  235. package/assets/docs/guide/plugins.md +36 -0
  236. package/assets/docs/guide/rules/asset-handling.md +180 -0
  237. package/assets/docs/guide/rules/common-pitfalls.md +272 -0
  238. package/assets/docs/guide/rules/content-fill-mode.md +29 -0
  239. package/assets/docs/guide/rules/enforce-brand-guidelines.md +672 -0
  240. package/assets/docs/guide/rules/lock-content.md +478 -0
  241. package/assets/docs/guide/rules/moderate-content.md +761 -0
  242. package/assets/docs/guide/rules/overview.md +514 -0
  243. package/assets/docs/guide/rules/silent-init-errors.md +137 -0
  244. package/assets/docs/guide/rules/verify-properties-before-use.md +78 -0
  245. package/assets/docs/guide/rules.md +23 -0
  246. package/assets/docs/guide/security.md +199 -0
  247. package/assets/docs/guide/serve-assets.md +332 -0
  248. package/assets/docs/guide/settings.md +199 -0
  249. package/assets/docs/guide/shapes.md +23 -0
  250. package/assets/docs/guide/starterkits/3d-mockup-editor.md +748 -0
  251. package/assets/docs/guide/starterkits/advanced-editor.md +698 -0
  252. package/assets/docs/guide/starterkits/advanced-video-editor.md +696 -0
  253. package/assets/docs/guide/starterkits/ai-editor.md +749 -0
  254. package/assets/docs/guide/starterkits/airtable-image-editor.md +672 -0
  255. package/assets/docs/guide/starterkits/apparel-ui.md +188 -0
  256. package/assets/docs/guide/starterkits/assets.md +27 -0
  257. package/assets/docs/guide/starterkits/auto-resize.md +586 -0
  258. package/assets/docs/guide/starterkits/automated-video-generation.md +692 -0
  259. package/assets/docs/guide/starterkits/background-removal-editor.md +480 -0
  260. package/assets/docs/guide/starterkits/content-moderation.md +863 -0
  261. package/assets/docs/guide/starterkits/creative-automation.md +28 -0
  262. package/assets/docs/guide/starterkits/custom-built-uis.md +26 -0
  263. package/assets/docs/guide/starterkits/customization.md +29 -0
  264. package/assets/docs/guide/starterkits/cutout-lines-editor.md +470 -0
  265. package/assets/docs/guide/starterkits/data-merge.md +850 -0
  266. package/assets/docs/guide/starterkits/design-editor.md +698 -0
  267. package/assets/docs/guide/starterkits/design-generation.md +719 -0
  268. package/assets/docs/guide/starterkits/design-validation.md +808 -0
  269. package/assets/docs/guide/starterkits/editor-ui-configurations.md +14 -0
  270. package/assets/docs/guide/starterkits/export-options.md +724 -0
  271. package/assets/docs/guide/starterkits/export-using-renderer.md +708 -0
  272. package/assets/docs/guide/starterkits/extensibility.md +28 -0
  273. package/assets/docs/guide/starterkits/force-crop-editor.md +675 -0
  274. package/assets/docs/guide/starterkits/form-based-template-adoption.md +522 -0
  275. package/assets/docs/guide/starterkits/getty-images-editor.md +700 -0
  276. package/assets/docs/guide/starterkits/html5-ads-exporter.md +719 -0
  277. package/assets/docs/guide/starterkits/indesign-template-import.md +580 -0
  278. package/assets/docs/guide/starterkits/layouts-editor.md +724 -0
  279. package/assets/docs/guide/starterkits/mobile-ui.md +185 -0
  280. package/assets/docs/guide/starterkits/mockup-editor.md +745 -0
  281. package/assets/docs/guide/starterkits/multi-image-generation.md +542 -0
  282. package/assets/docs/guide/starterkits/page-sizes-editor.md +657 -0
  283. package/assets/docs/guide/starterkits/pexels-image-editor.md +665 -0
  284. package/assets/docs/guide/starterkits/photo-editor.md +755 -0
  285. package/assets/docs/guide/starterkits/photo-ui.md +186 -0
  286. package/assets/docs/guide/starterkits/photobook-ui.md +188 -0
  287. package/assets/docs/guide/starterkits/placeholders.md +678 -0
  288. package/assets/docs/guide/starterkits/player.md +405 -0
  289. package/assets/docs/guide/starterkits/plugins.md +25 -0
  290. package/assets/docs/guide/starterkits/postcard-editor.md +202 -0
  291. package/assets/docs/guide/starterkits/pptx-template-import.md +581 -0
  292. package/assets/docs/guide/starterkits/print-ready-pdf-editor.md +746 -0
  293. package/assets/docs/guide/starterkits/product-editor.md +773 -0
  294. package/assets/docs/guide/starterkits/psd-template-import.md +580 -0
  295. package/assets/docs/guide/starterkits/qr-code-editor.md +470 -0
  296. package/assets/docs/guide/starterkits/single-page-editor.md +661 -0
  297. package/assets/docs/guide/starterkits/start-with-image.md +684 -0
  298. package/assets/docs/guide/starterkits/start-with-video.md +651 -0
  299. package/assets/docs/guide/starterkits/t-shirt-designer.md +742 -0
  300. package/assets/docs/guide/starterkits/templating.md +23 -0
  301. package/assets/docs/guide/starterkits/theming.md +662 -0
  302. package/assets/docs/guide/starterkits/translation-internationalization.md +662 -0
  303. package/assets/docs/guide/starterkits/unsplash-editor.md +839 -0
  304. package/assets/docs/guide/starterkits/vectorizer-editor.md +466 -0
  305. package/assets/docs/guide/starterkits/version-history.md +745 -0
  306. package/assets/docs/guide/starterkits/video-animations.md +853 -0
  307. package/assets/docs/guide/starterkits/video-captions.md +884 -0
  308. package/assets/docs/guide/starterkits/video-editing.md +25 -0
  309. package/assets/docs/guide/starterkits/video-editor.md +696 -0
  310. package/assets/docs/guide/starterkits/video-export-options.md +676 -0
  311. package/assets/docs/guide/starterkits/viewer.md +400 -0
  312. package/assets/docs/guide/starterkits.md +41 -0
  313. package/assets/docs/guide/stickers-and-shapes/combine.md +743 -0
  314. package/assets/docs/guide/stickers-and-shapes/create-cutout.md +425 -0
  315. package/assets/docs/guide/stickers-and-shapes/create-edit/create-shapes.md +794 -0
  316. package/assets/docs/guide/stickers-and-shapes/create-edit/create-stickers.md +290 -0
  317. package/assets/docs/guide/stickers-and-shapes/create-edit/edit-shapes.md +211 -0
  318. package/assets/docs/guide/stickers-and-shapes/create-edit/vector-edit.md +362 -0
  319. package/assets/docs/guide/stickers-and-shapes/insert-qr-code.md +208 -0
  320. package/assets/docs/guide/stickers.md +21 -0
  321. package/assets/docs/guide/text/add.md +641 -0
  322. package/assets/docs/guide/text/adjust-spacing.md +288 -0
  323. package/assets/docs/guide/text/auto-size.md +404 -0
  324. package/assets/docs/guide/text/custom-fonts.md +401 -0
  325. package/assets/docs/guide/text/decorations.md +330 -0
  326. package/assets/docs/guide/text/edit.md +458 -0
  327. package/assets/docs/guide/text/effects.md +244 -0
  328. package/assets/docs/guide/text/emojis.md +310 -0
  329. package/assets/docs/guide/text/enumerations.md +258 -0
  330. package/assets/docs/guide/text/language-support.md +604 -0
  331. package/assets/docs/guide/text/overview.md +14 -0
  332. package/assets/docs/guide/text/styling.md +390 -0
  333. package/assets/docs/guide/text/text-designs.md +834 -0
  334. package/assets/docs/guide/text.md +33 -0
  335. package/assets/docs/guide/to-v1-10.md +131 -0
  336. package/assets/docs/guide/to-v1-13.md +165 -0
  337. package/assets/docs/guide/to-v1-19.md +315 -0
  338. package/assets/docs/guide/to-v1-32.md +110 -0
  339. package/assets/docs/guide/to-v1-69.md +468 -0
  340. package/assets/docs/guide/to-v1-72.md +193 -0
  341. package/assets/docs/guide/upgrade.md +25 -0
  342. package/assets/docs/guide/use-templates/apply-template.md +279 -0
  343. package/assets/docs/guide/use-templates/generate.md +405 -0
  344. package/assets/docs/guide/use-templates/library.md +450 -0
  345. package/assets/docs/guide/use-templates/overview.md +20 -0
  346. package/assets/docs/guide/use-templates/programmatic.md +482 -0
  347. package/assets/docs/guide/use-templates/replace-content.md +399 -0
  348. package/assets/docs/guide/user-interface/ai-integration/audio-generation.md +428 -0
  349. package/assets/docs/guide/user-interface/ai-integration/auto-captions.md +337 -0
  350. package/assets/docs/guide/user-interface/ai-integration/custom-provider.md +853 -0
  351. package/assets/docs/guide/user-interface/ai-integration/gateway-provider.md +1045 -0
  352. package/assets/docs/guide/user-interface/ai-integration/image-generation.md +641 -0
  353. package/assets/docs/guide/user-interface/ai-integration/integrate.md +966 -0
  354. package/assets/docs/guide/user-interface/ai-integration/proxy-server.md +99 -0
  355. package/assets/docs/guide/user-interface/ai-integration/text-generation.md +498 -0
  356. package/assets/docs/guide/user-interface/ai-integration/video-generation.md +493 -0
  357. package/assets/docs/guide/user-interface/ai-integration.md +30 -0
  358. package/assets/docs/guide/user-interface/appearance/change-ui-font.md +316 -0
  359. package/assets/docs/guide/user-interface/appearance/custom-labels.md +509 -0
  360. package/assets/docs/guide/user-interface/appearance/icons.md +373 -0
  361. package/assets/docs/guide/user-interface/appearance/theming.md +665 -0
  362. package/assets/docs/guide/user-interface/appearance.md +23 -0
  363. package/assets/docs/guide/user-interface/build-your-own-ui.md +620 -0
  364. package/assets/docs/guide/user-interface/customization/canvas-menu.md +412 -0
  365. package/assets/docs/guide/user-interface/customization/canvas.md +281 -0
  366. package/assets/docs/guide/user-interface/customization/color-palette.md +413 -0
  367. package/assets/docs/guide/user-interface/customization/crop-presets.md +384 -0
  368. package/assets/docs/guide/user-interface/customization/disable-or-enable.md +676 -0
  369. package/assets/docs/guide/user-interface/customization/dock.md +399 -0
  370. package/assets/docs/guide/user-interface/customization/force-crop.md +289 -0
  371. package/assets/docs/guide/user-interface/customization/inspector-bar.md +371 -0
  372. package/assets/docs/guide/user-interface/customization/navigation-bar.md +516 -0
  373. package/assets/docs/guide/user-interface/customization/page-format.md +436 -0
  374. package/assets/docs/guide/user-interface/customization/panel.md +605 -0
  375. package/assets/docs/guide/user-interface/customization/quick-start/add-action-buttons.md +531 -0
  376. package/assets/docs/guide/user-interface/customization/quick-start/add-dock-buttons.md +358 -0
  377. package/assets/docs/guide/user-interface/customization/quick-start/create-custom-components.md +374 -0
  378. package/assets/docs/guide/user-interface/customization/quick-start/reorder-components.md +323 -0
  379. package/assets/docs/guide/user-interface/customization/quick-start/show-hide-components.md +294 -0
  380. package/assets/docs/guide/user-interface/customization/quick-start.md +12 -0
  381. package/assets/docs/guide/user-interface/customization/reference/component-order-api.md +519 -0
  382. package/assets/docs/guide/user-interface/customization/reference/component-reference.md +333 -0
  383. package/assets/docs/guide/user-interface/customization/reference.md +12 -0
  384. package/assets/docs/guide/user-interface/customization.md +39 -0
  385. package/assets/docs/guide/user-interface/localization.md +633 -0
  386. package/assets/docs/guide/user-interface/overview.md +167 -0
  387. package/assets/docs/guide/user-interface/ui-extensions/add-custom-feature.md +411 -0
  388. package/assets/docs/guide/user-interface/ui-extensions/asset-library.md +721 -0
  389. package/assets/docs/guide/user-interface/ui-extensions/create-custom-panel.md +331 -0
  390. package/assets/docs/guide/user-interface/ui-extensions/customize-behaviour.md +553 -0
  391. package/assets/docs/guide/user-interface/ui-extensions/notifications-and-dialogs.md +672 -0
  392. package/assets/docs/guide/user-interface/ui-extensions/quick-actions.md +415 -0
  393. package/assets/docs/guide/user-interface/ui-extensions/register-new-component.md +521 -0
  394. package/assets/docs/guide/user-interface/ui-extensions.md +26 -0
  395. package/assets/docs/guide/user-interface.md +25 -0
  396. package/assets/docs/guide/what-is-cesdk.md +319 -0
  397. package/assets/docs/handbook/SKILL.md +521 -0
  398. package/assets/prompts/evals-assetGenerate.md +12 -0
  399. package/assets/prompts/evals-brutalistCore.md +34 -0
  400. package/assets/prompts/evals-danskCatalogue.md +31 -0
  401. package/assets/prompts/evals-exportRoundTrip.md +12 -0
  402. package/assets/prompts/evals-inspectPriorCode.md +16 -0
  403. package/assets/prompts/evals-listProjectFiles.md +6 -0
  404. package/assets/prompts/evals-readAndExplainScript.md +6 -0
  405. package/assets/prompts/evals-resumeAcrossRestart.md +15 -0
  406. package/assets/prompts/evals-rewindRecovery.md +10 -0
  407. package/assets/prompts/evals-searchAcrossFiles.md +6 -0
  408. package/assets/prompts/evals-weddingCard.md +20 -0
  409. package/assets/prompts/explain.md +6 -0
  410. package/assets/prompts/review.md +6 -0
  411. package/dist/assets/inline.generated.d.ts +2 -0
  412. package/dist/assets/inline.generated.d.ts.map +1 -0
  413. package/dist/assets/inline.generated.js +413 -0
  414. package/dist/assets/inline.generated.js.map +1 -0
  415. package/dist/assets/load-browser.d.ts +8 -0
  416. package/dist/assets/load-browser.d.ts.map +1 -0
  417. package/dist/assets/load-browser.js +11 -0
  418. package/dist/assets/load-browser.js.map +1 -0
  419. package/dist/assets/load-node.d.ts +8 -0
  420. package/dist/assets/load-node.d.ts.map +1 -0
  421. package/dist/assets/load-node.js +11 -0
  422. package/dist/assets/load-node.js.map +1 -0
  423. package/dist/cli/http.d.ts +2 -0
  424. package/dist/cli/http.d.ts.map +1 -0
  425. package/dist/cli/http.js +231 -0
  426. package/dist/cli/http.js.map +1 -0
  427. package/dist/cli/redirect-console.d.ts +10 -0
  428. package/dist/cli/redirect-console.d.ts.map +1 -0
  429. package/dist/cli/redirect-console.js +18 -0
  430. package/dist/cli/redirect-console.js.map +1 -0
  431. package/dist/cli/resolve-license.d.ts +2 -0
  432. package/dist/cli/resolve-license.d.ts.map +1 -0
  433. package/dist/cli/resolve-license.js +13 -0
  434. package/dist/cli/resolve-license.js.map +1 -0
  435. package/dist/cli/stdio.d.ts +2 -0
  436. package/dist/cli/stdio.d.ts.map +1 -0
  437. package/dist/cli/stdio.js +124 -0
  438. package/dist/cli/stdio.js.map +1 -0
  439. package/dist/cli/trial-license.generated.d.ts +2 -0
  440. package/dist/cli/trial-license.generated.d.ts.map +1 -0
  441. package/dist/cli/trial-license.generated.js +4 -0
  442. package/dist/cli/trial-license.generated.js.map +1 -0
  443. package/dist/cli.d.ts +3 -0
  444. package/dist/cli.d.ts.map +1 -0
  445. package/dist/cli.js +64 -0
  446. package/dist/cli.js.map +1 -0
  447. package/dist/config.d.ts +61 -0
  448. package/dist/config.d.ts.map +1 -0
  449. package/dist/config.js +102 -0
  450. package/dist/config.js.map +1 -0
  451. package/dist/cross-ref.d.ts +2 -0
  452. package/dist/cross-ref.d.ts.map +1 -0
  453. package/dist/cross-ref.js +31 -0
  454. package/dist/cross-ref.js.map +1 -0
  455. package/dist/dashboard/router.d.ts +3 -0
  456. package/dist/dashboard/router.d.ts.map +1 -0
  457. package/dist/dashboard/router.js +19 -0
  458. package/dist/dashboard/router.js.map +1 -0
  459. package/dist/dashboard/spa-assets.generated.d.ts +2 -0
  460. package/dist/dashboard/spa-assets.generated.d.ts.map +1 -0
  461. package/dist/dashboard/spa-assets.generated.js +220 -0
  462. package/dist/dashboard/spa-assets.generated.js.map +1 -0
  463. package/dist/engine/asset-sources.d.ts +17 -0
  464. package/dist/engine/asset-sources.d.ts.map +1 -0
  465. package/dist/engine/asset-sources.js +75 -0
  466. package/dist/engine/asset-sources.js.map +1 -0
  467. package/dist/engine/cesdk-adapter.d.ts +10 -0
  468. package/dist/engine/cesdk-adapter.d.ts.map +1 -0
  469. package/dist/engine/cesdk-adapter.js +19 -0
  470. package/dist/engine/cesdk-adapter.js.map +1 -0
  471. package/dist/engine/index.d.ts +3 -0
  472. package/dist/engine/index.d.ts.map +1 -0
  473. package/dist/engine/index.js +3 -0
  474. package/dist/engine/index.js.map +1 -0
  475. package/dist/engine/mutex.d.ts +5 -0
  476. package/dist/engine/mutex.d.ts.map +1 -0
  477. package/dist/engine/mutex.js +42 -0
  478. package/dist/engine/mutex.js.map +1 -0
  479. package/dist/engine/session.d.ts +50 -0
  480. package/dist/engine/session.d.ts.map +1 -0
  481. package/dist/engine/session.js +95 -0
  482. package/dist/engine/session.js.map +1 -0
  483. package/dist/engine/uri-resolver.d.ts +14 -0
  484. package/dist/engine/uri-resolver.d.ts.map +1 -0
  485. package/dist/engine/uri-resolver.js +12 -0
  486. package/dist/engine/uri-resolver.js.map +1 -0
  487. package/dist/frontmatter.d.ts +15 -0
  488. package/dist/frontmatter.d.ts.map +1 -0
  489. package/dist/frontmatter.js +46 -0
  490. package/dist/frontmatter.js.map +1 -0
  491. package/dist/gateway/hosted-stub.d.ts +6 -0
  492. package/dist/gateway/hosted-stub.d.ts.map +1 -0
  493. package/dist/gateway/hosted-stub.js +11 -0
  494. package/dist/gateway/hosted-stub.js.map +1 -0
  495. package/dist/gateway/index.d.ts +4 -0
  496. package/dist/gateway/index.d.ts.map +1 -0
  497. package/dist/gateway/index.js +4 -0
  498. package/dist/gateway/index.js.map +1 -0
  499. package/dist/gateway/local.d.ts +14 -0
  500. package/dist/gateway/local.d.ts.map +1 -0
  501. package/dist/gateway/local.js +41 -0
  502. package/dist/gateway/local.js.map +1 -0
  503. package/dist/gateway/types.d.ts +24 -0
  504. package/dist/gateway/types.d.ts.map +1 -0
  505. package/dist/gateway/types.js +7 -0
  506. package/dist/gateway/types.js.map +1 -0
  507. package/dist/http/server.d.ts +80 -0
  508. package/dist/http/server.d.ts.map +1 -0
  509. package/dist/http/server.js +183 -0
  510. package/dist/http/server.js.map +1 -0
  511. package/dist/http/session-manager.d.ts +42 -0
  512. package/dist/http/session-manager.d.ts.map +1 -0
  513. package/dist/http/session-manager.js +82 -0
  514. package/dist/http/session-manager.js.map +1 -0
  515. package/dist/http/workspace-auth.d.ts +9 -0
  516. package/dist/http/workspace-auth.d.ts.map +1 -0
  517. package/dist/http/workspace-auth.js +29 -0
  518. package/dist/http/workspace-auth.js.map +1 -0
  519. package/dist/index.d.ts +10 -0
  520. package/dist/index.d.ts.map +1 -0
  521. package/dist/index.js +10 -0
  522. package/dist/index.js.map +1 -0
  523. package/dist/metrics/mount.d.ts +11 -0
  524. package/dist/metrics/mount.d.ts.map +1 -0
  525. package/dist/metrics/mount.js +13 -0
  526. package/dist/metrics/mount.js.map +1 -0
  527. package/dist/metrics/recorder.d.ts +55 -0
  528. package/dist/metrics/recorder.d.ts.map +1 -0
  529. package/dist/metrics/recorder.js +97 -0
  530. package/dist/metrics/recorder.js.map +1 -0
  531. package/dist/revisions/hash.d.ts +7 -0
  532. package/dist/revisions/hash.d.ts.map +1 -0
  533. package/dist/revisions/hash.js +24 -0
  534. package/dist/revisions/hash.js.map +1 -0
  535. package/dist/revisions/index.d.ts +4 -0
  536. package/dist/revisions/index.d.ts.map +1 -0
  537. package/dist/revisions/index.js +4 -0
  538. package/dist/revisions/index.js.map +1 -0
  539. package/dist/revisions/store.d.ts +69 -0
  540. package/dist/revisions/store.d.ts.map +1 -0
  541. package/dist/revisions/store.js +196 -0
  542. package/dist/revisions/store.js.map +1 -0
  543. package/dist/revisions/types.d.ts +39 -0
  544. package/dist/revisions/types.d.ts.map +1 -0
  545. package/dist/revisions/types.js +2 -0
  546. package/dist/revisions/types.js.map +1 -0
  547. package/dist/server.d.ts +51 -0
  548. package/dist/server.d.ts.map +1 -0
  549. package/dist/server.js +175 -0
  550. package/dist/server.js.map +1 -0
  551. package/dist/skill-tools.d.ts +3 -0
  552. package/dist/skill-tools.d.ts.map +1 -0
  553. package/dist/skill-tools.js +105 -0
  554. package/dist/skill-tools.js.map +1 -0
  555. package/dist/test/test/cli/dispatcher.test.d.ts +2 -0
  556. package/dist/test/test/cli/dispatcher.test.d.ts.map +1 -0
  557. package/dist/test/test/cli/dispatcher.test.js +47 -0
  558. package/dist/test/test/cli/dispatcher.test.js.map +1 -0
  559. package/dist/test/test/cross-ref.test.d.ts +2 -0
  560. package/dist/test/test/cross-ref.test.d.ts.map +1 -0
  561. package/dist/test/test/cross-ref.test.js +39 -0
  562. package/dist/test/test/cross-ref.test.js.map +1 -0
  563. package/dist/test/test/engine/session.test.d.ts +2 -0
  564. package/dist/test/test/engine/session.test.d.ts.map +1 -0
  565. package/dist/test/test/engine/session.test.js +144 -0
  566. package/dist/test/test/engine/session.test.js.map +1 -0
  567. package/dist/test/test/engine/uri-resolver.test.d.ts +2 -0
  568. package/dist/test/test/engine/uri-resolver.test.d.ts.map +1 -0
  569. package/dist/test/test/engine/uri-resolver.test.js +38 -0
  570. package/dist/test/test/engine/uri-resolver.test.js.map +1 -0
  571. package/dist/test/test/frontmatter.test.d.ts +2 -0
  572. package/dist/test/test/frontmatter.test.d.ts.map +1 -0
  573. package/dist/test/test/frontmatter.test.js +55 -0
  574. package/dist/test/test/frontmatter.test.js.map +1 -0
  575. package/dist/test/test/gateway/hosted-stub.test.d.ts +2 -0
  576. package/dist/test/test/gateway/hosted-stub.test.d.ts.map +1 -0
  577. package/dist/test/test/gateway/hosted-stub.test.js +11 -0
  578. package/dist/test/test/gateway/hosted-stub.test.js.map +1 -0
  579. package/dist/test/test/gateway/local.test.d.ts +2 -0
  580. package/dist/test/test/gateway/local.test.d.ts.map +1 -0
  581. package/dist/test/test/gateway/local.test.js +29 -0
  582. package/dist/test/test/gateway/local.test.js.map +1 -0
  583. package/dist/test/test/handbook-contract.test.d.ts +2 -0
  584. package/dist/test/test/handbook-contract.test.d.ts.map +1 -0
  585. package/dist/test/test/handbook-contract.test.js +71 -0
  586. package/dist/test/test/handbook-contract.test.js.map +1 -0
  587. package/dist/test/test/http/server.test.d.ts +2 -0
  588. package/dist/test/test/http/server.test.d.ts.map +1 -0
  589. package/dist/test/test/http/server.test.js +245 -0
  590. package/dist/test/test/http/server.test.js.map +1 -0
  591. package/dist/test/test/http/session-manager.test.d.ts +2 -0
  592. package/dist/test/test/http/session-manager.test.d.ts.map +1 -0
  593. package/dist/test/test/http/session-manager.test.js +83 -0
  594. package/dist/test/test/http/session-manager.test.js.map +1 -0
  595. package/dist/test/test/revisions/hash.test.d.ts +2 -0
  596. package/dist/test/test/revisions/hash.test.d.ts.map +1 -0
  597. package/dist/test/test/revisions/hash.test.js +33 -0
  598. package/dist/test/test/revisions/hash.test.js.map +1 -0
  599. package/dist/test/test/revisions/store.test.d.ts +2 -0
  600. package/dist/test/test/revisions/store.test.d.ts.map +1 -0
  601. package/dist/test/test/revisions/store.test.js +245 -0
  602. package/dist/test/test/revisions/store.test.js.map +1 -0
  603. package/dist/test/test/server.test.d.ts +2 -0
  604. package/dist/test/test/server.test.d.ts.map +1 -0
  605. package/dist/test/test/server.test.js +157 -0
  606. package/dist/test/test/server.test.js.map +1 -0
  607. package/dist/test/test/skill-tools.test.d.ts +2 -0
  608. package/dist/test/test/skill-tools.test.d.ts.map +1 -0
  609. package/dist/test/test/skill-tools.test.js +84 -0
  610. package/dist/test/test/skill-tools.test.js.map +1 -0
  611. package/dist/test/test/smoke.test.d.ts +2 -0
  612. package/dist/test/test/smoke.test.d.ts.map +1 -0
  613. package/dist/test/test/smoke.test.js +8 -0
  614. package/dist/test/test/smoke.test.js.map +1 -0
  615. package/dist/test/test/tools/asset-generate.test.d.ts +2 -0
  616. package/dist/test/test/tools/asset-generate.test.d.ts.map +1 -0
  617. package/dist/test/test/tools/asset-generate.test.js +66 -0
  618. package/dist/test/test/tools/asset-generate.test.js.map +1 -0
  619. package/dist/test/test/tools/edit.test.d.ts +2 -0
  620. package/dist/test/test/tools/edit.test.d.ts.map +1 -0
  621. package/dist/test/test/tools/edit.test.js +205 -0
  622. package/dist/test/test/tools/edit.test.js.map +1 -0
  623. package/dist/test/test/tools/export.test.d.ts +2 -0
  624. package/dist/test/test/tools/export.test.d.ts.map +1 -0
  625. package/dist/test/test/tools/export.test.js +144 -0
  626. package/dist/test/test/tools/export.test.js.map +1 -0
  627. package/dist/test/test/tools/history.test.d.ts +2 -0
  628. package/dist/test/test/tools/history.test.d.ts.map +1 -0
  629. package/dist/test/test/tools/history.test.js +29 -0
  630. package/dist/test/test/tools/history.test.js.map +1 -0
  631. package/dist/test/test/tools/inspect.test.d.ts +2 -0
  632. package/dist/test/test/tools/inspect.test.d.ts.map +1 -0
  633. package/dist/test/test/tools/inspect.test.js +62 -0
  634. package/dist/test/test/tools/inspect.test.js.map +1 -0
  635. package/dist/test/test/tools/list.test.d.ts +2 -0
  636. package/dist/test/test/tools/list.test.d.ts.map +1 -0
  637. package/dist/test/test/tools/list.test.js +23 -0
  638. package/dist/test/test/tools/list.test.js.map +1 -0
  639. package/dist/test/test/tools/open-editor.test.d.ts +2 -0
  640. package/dist/test/test/tools/open-editor.test.d.ts.map +1 -0
  641. package/dist/test/test/tools/open-editor.test.js +53 -0
  642. package/dist/test/test/tools/open-editor.test.js.map +1 -0
  643. package/dist/test/test/tools/preview.test.d.ts +2 -0
  644. package/dist/test/test/tools/preview.test.d.ts.map +1 -0
  645. package/dist/test/test/tools/preview.test.js +73 -0
  646. package/dist/test/test/tools/preview.test.js.map +1 -0
  647. package/dist/test/test/tools/rename.test.d.ts +2 -0
  648. package/dist/test/test/tools/rename.test.d.ts.map +1 -0
  649. package/dist/test/test/tools/rename.test.js +17 -0
  650. package/dist/test/test/tools/rename.test.js.map +1 -0
  651. package/dist/test/test/viewer/broadcaster.test.d.ts +2 -0
  652. package/dist/test/test/viewer/broadcaster.test.d.ts.map +1 -0
  653. package/dist/test/test/viewer/broadcaster.test.js +53 -0
  654. package/dist/test/test/viewer/broadcaster.test.js.map +1 -0
  655. package/dist/test/test/viewer/resource-route.test.d.ts +2 -0
  656. package/dist/test/test/viewer/resource-route.test.d.ts.map +1 -0
  657. package/dist/test/test/viewer/resource-route.test.js +70 -0
  658. package/dist/test/test/viewer/resource-route.test.js.map +1 -0
  659. package/dist/test/test/viewer/router.test.d.ts +2 -0
  660. package/dist/test/test/viewer/router.test.d.ts.map +1 -0
  661. package/dist/test/test/viewer/router.test.js +171 -0
  662. package/dist/test/test/viewer/router.test.js.map +1 -0
  663. package/dist/test/test/viewer/url-builder.test.d.ts +2 -0
  664. package/dist/test/test/viewer/url-builder.test.d.ts.map +1 -0
  665. package/dist/test/test/viewer/url-builder.test.js +31 -0
  666. package/dist/test/test/viewer/url-builder.test.js.map +1 -0
  667. package/dist/test/test/workspace/hosted-stub.test.d.ts +2 -0
  668. package/dist/test/test/workspace/hosted-stub.test.d.ts.map +1 -0
  669. package/dist/test/test/workspace/hosted-stub.test.js +30 -0
  670. package/dist/test/test/workspace/hosted-stub.test.js.map +1 -0
  671. package/dist/test/test/workspace/in-memory.test.d.ts +2 -0
  672. package/dist/test/test/workspace/in-memory.test.d.ts.map +1 -0
  673. package/dist/test/test/workspace/in-memory.test.js +4 -0
  674. package/dist/test/test/workspace/in-memory.test.js.map +1 -0
  675. package/dist/test/test/workspace/node-fs.test.d.ts +2 -0
  676. package/dist/test/test/workspace/node-fs.test.d.ts.map +1 -0
  677. package/dist/test/test/workspace/node-fs.test.js +20 -0
  678. package/dist/test/test/workspace/node-fs.test.js.map +1 -0
  679. package/dist/test/test/workspace/shared-contract.d.ts +3 -0
  680. package/dist/test/test/workspace/shared-contract.d.ts.map +1 -0
  681. package/dist/test/test/workspace/shared-contract.js +92 -0
  682. package/dist/test/test/workspace/shared-contract.js.map +1 -0
  683. package/dist/test/tsconfig.test.tsbuildinfo +1 -0
  684. package/dist/test/vitest.config.d.ts +3 -0
  685. package/dist/test/vitest.config.d.ts.map +1 -0
  686. package/dist/test/vitest.config.js +8 -0
  687. package/dist/test/vitest.config.js.map +1 -0
  688. package/dist/tools/asset-generate.d.ts +12 -0
  689. package/dist/tools/asset-generate.d.ts.map +1 -0
  690. package/dist/tools/asset-generate.js +112 -0
  691. package/dist/tools/asset-generate.js.map +1 -0
  692. package/dist/tools/asset-search.d.ts +10 -0
  693. package/dist/tools/asset-search.d.ts.map +1 -0
  694. package/dist/tools/asset-search.js +120 -0
  695. package/dist/tools/asset-search.js.map +1 -0
  696. package/dist/tools/content-types.d.ts +11 -0
  697. package/dist/tools/content-types.d.ts.map +1 -0
  698. package/dist/tools/content-types.js +2 -0
  699. package/dist/tools/content-types.js.map +1 -0
  700. package/dist/tools/edit.d.ts +29 -0
  701. package/dist/tools/edit.d.ts.map +1 -0
  702. package/dist/tools/edit.js +165 -0
  703. package/dist/tools/edit.js.map +1 -0
  704. package/dist/tools/engine.d.ts +31 -0
  705. package/dist/tools/engine.d.ts.map +1 -0
  706. package/dist/tools/engine.js +59 -0
  707. package/dist/tools/engine.js.map +1 -0
  708. package/dist/tools/export.d.ts +19 -0
  709. package/dist/tools/export.d.ts.map +1 -0
  710. package/dist/tools/export.js +179 -0
  711. package/dist/tools/export.js.map +1 -0
  712. package/dist/tools/history.d.ts +7 -0
  713. package/dist/tools/history.d.ts.map +1 -0
  714. package/dist/tools/history.js +54 -0
  715. package/dist/tools/history.js.map +1 -0
  716. package/dist/tools/index.d.ts +35 -0
  717. package/dist/tools/index.d.ts.map +1 -0
  718. package/dist/tools/index.js +72 -0
  719. package/dist/tools/index.js.map +1 -0
  720. package/dist/tools/inspect.d.ts +7 -0
  721. package/dist/tools/inspect.d.ts.map +1 -0
  722. package/dist/tools/inspect.js +80 -0
  723. package/dist/tools/inspect.js.map +1 -0
  724. package/dist/tools/list.d.ts +7 -0
  725. package/dist/tools/list.d.ts.map +1 -0
  726. package/dist/tools/list.js +18 -0
  727. package/dist/tools/list.js.map +1 -0
  728. package/dist/tools/metrics.d.ts +11 -0
  729. package/dist/tools/metrics.d.ts.map +1 -0
  730. package/dist/tools/metrics.js +28 -0
  731. package/dist/tools/metrics.js.map +1 -0
  732. package/dist/tools/open-editor.d.ts +10 -0
  733. package/dist/tools/open-editor.d.ts.map +1 -0
  734. package/dist/tools/open-editor.js +62 -0
  735. package/dist/tools/open-editor.js.map +1 -0
  736. package/dist/tools/preview.d.ts +12 -0
  737. package/dist/tools/preview.d.ts.map +1 -0
  738. package/dist/tools/preview.js +104 -0
  739. package/dist/tools/preview.js.map +1 -0
  740. package/dist/tools/rename.d.ts +7 -0
  741. package/dist/tools/rename.d.ts.map +1 -0
  742. package/dist/tools/rename.js +39 -0
  743. package/dist/tools/rename.js.map +1 -0
  744. package/dist/tools/result.d.ts +12 -0
  745. package/dist/tools/result.d.ts.map +1 -0
  746. package/dist/tools/result.js +55 -0
  747. package/dist/tools/result.js.map +1 -0
  748. package/dist/tools/save.d.ts +19 -0
  749. package/dist/tools/save.d.ts.map +1 -0
  750. package/dist/tools/save.js +117 -0
  751. package/dist/tools/save.js.map +1 -0
  752. package/dist/viewer/broadcaster.d.ts +13 -0
  753. package/dist/viewer/broadcaster.d.ts.map +1 -0
  754. package/dist/viewer/broadcaster.js +44 -0
  755. package/dist/viewer/broadcaster.js.map +1 -0
  756. package/dist/viewer/index.d.ts +7 -0
  757. package/dist/viewer/index.d.ts.map +1 -0
  758. package/dist/viewer/index.js +7 -0
  759. package/dist/viewer/index.js.map +1 -0
  760. package/dist/viewer/listener.d.ts +16 -0
  761. package/dist/viewer/listener.d.ts.map +1 -0
  762. package/dist/viewer/listener.js +30 -0
  763. package/dist/viewer/listener.js.map +1 -0
  764. package/dist/viewer/presigned-r2-url-builder.d.ts +30 -0
  765. package/dist/viewer/presigned-r2-url-builder.d.ts.map +1 -0
  766. package/dist/viewer/presigned-r2-url-builder.js +40 -0
  767. package/dist/viewer/presigned-r2-url-builder.js.map +1 -0
  768. package/dist/viewer/resource-route.d.ts +9 -0
  769. package/dist/viewer/resource-route.d.ts.map +1 -0
  770. package/dist/viewer/resource-route.js +59 -0
  771. package/dist/viewer/resource-route.js.map +1 -0
  772. package/dist/viewer/router.d.ts +20 -0
  773. package/dist/viewer/router.d.ts.map +1 -0
  774. package/dist/viewer/router.js +142 -0
  775. package/dist/viewer/router.js.map +1 -0
  776. package/dist/viewer/session-mount.d.ts +10 -0
  777. package/dist/viewer/session-mount.d.ts.map +1 -0
  778. package/dist/viewer/session-mount.js +24 -0
  779. package/dist/viewer/session-mount.js.map +1 -0
  780. package/dist/viewer/spa-assets.generated.d.ts +2 -0
  781. package/dist/viewer/spa-assets.generated.d.ts.map +1 -0
  782. package/dist/viewer/spa-assets.generated.js +989 -0
  783. package/dist/viewer/spa-assets.generated.js.map +1 -0
  784. package/dist/viewer/url-builder.d.ts +48 -0
  785. package/dist/viewer/url-builder.d.ts.map +1 -0
  786. package/dist/viewer/url-builder.js +38 -0
  787. package/dist/viewer/url-builder.js.map +1 -0
  788. package/dist/workspace/hosted-stub.d.ts +28 -0
  789. package/dist/workspace/hosted-stub.d.ts.map +1 -0
  790. package/dist/workspace/hosted-stub.js +44 -0
  791. package/dist/workspace/hosted-stub.js.map +1 -0
  792. package/dist/workspace/in-memory.d.ts +23 -0
  793. package/dist/workspace/in-memory.d.ts.map +1 -0
  794. package/dist/workspace/in-memory.js +161 -0
  795. package/dist/workspace/in-memory.js.map +1 -0
  796. package/dist/workspace/index.d.ts +6 -0
  797. package/dist/workspace/index.d.ts.map +1 -0
  798. package/dist/workspace/index.js +6 -0
  799. package/dist/workspace/index.js.map +1 -0
  800. package/dist/workspace/node-fs.d.ts +23 -0
  801. package/dist/workspace/node-fs.d.ts.map +1 -0
  802. package/dist/workspace/node-fs.js +90 -0
  803. package/dist/workspace/node-fs.js.map +1 -0
  804. package/dist/workspace/s3.d.ts +32 -0
  805. package/dist/workspace/s3.d.ts.map +1 -0
  806. package/dist/workspace/s3.js +191 -0
  807. package/dist/workspace/s3.js.map +1 -0
  808. package/dist/workspace/scoped.d.ts +32 -0
  809. package/dist/workspace/scoped.d.ts.map +1 -0
  810. package/dist/workspace/scoped.js +76 -0
  811. package/dist/workspace/scoped.js.map +1 -0
  812. package/dist/workspace/types.d.ts +75 -0
  813. package/dist/workspace/types.d.ts.map +1 -0
  814. package/dist/workspace/types.js +18 -0
  815. package/dist/workspace/types.js.map +1 -0
  816. package/package.json +80 -0
@@ -0,0 +1,408 @@
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).
2
+
3
+ **Navigation:** [Guides](./guides.md) > [Create and Edit Images](./edit-image.md) > [Transform](./edit-image/transform.md) > [Rotate](./edit-image/transform/rotate.md)
4
+
5
+ ---
6
+
7
+ Rotate images to adjust orientation, correct crooked photos, or create creative effects using CE.SDK's rotation APIs.
8
+
9
+ ![Rotate images example showing images at different rotation angles](https://img.ly/docs/cesdk/./assets/browser.hero.webp)
10
+
11
+ > **Reading time:** 8 minutes
12
+ >
13
+ > **Resources:**
14
+ >
15
+ > - [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-edit-image-transform-rotate-browser)
17
+ > - [Open in StackBlitz](https://stackblitz.com/github/imgly/cesdk-web-examples/tree/v$UBQ_VERSION$/guides-edit-image-transform-rotate-browser)
18
+ > - [Live demo](https://img.ly/docs/cesdk/examples/guides-edit-image-transform-rotate-browser/)
19
+
20
+ Rotation uses radians where `Math.PI / 2` equals 90°, `Math.PI` equals 180°, and negative values rotate clockwise. Values are relative to the block's center point.
21
+
22
+ ```typescript file=@cesdk_web_examples/guides-edit-image-transform-rotate-browser/browser.ts reference-only
23
+ import CreativeEditorSDK, {
24
+ type EditorPlugin,
25
+ type EditorPluginContext
26
+ } from '@cesdk/cesdk-js';
27
+
28
+ import {
29
+ BlurAssetSource,
30
+ ColorPaletteAssetSource,
31
+ CropPresetsAssetSource,
32
+ DemoAssetSources,
33
+ EffectsAssetSource,
34
+ FiltersAssetSource,
35
+ PagePresetsAssetSource,
36
+ StickerAssetSource,
37
+ TextAssetSource,
38
+ TextComponentAssetSource,
39
+ TypefaceAssetSource,
40
+ UploadAssetSources,
41
+ VectorShapeAssetSource
42
+ } from '@cesdk/cesdk-js/plugins';
43
+ import { DesignEditorConfig } from './design-editor/plugin';
44
+
45
+ class Example implements EditorPlugin {
46
+ name = 'guides-edit-image-transform-rotate-browser';
47
+
48
+ version = CreativeEditorSDK.version;
49
+
50
+ async initialize({ cesdk }: EditorPluginContext): Promise<void> {
51
+ if (!cesdk) {
52
+ throw new Error('CE.SDK instance is required for this plugin');
53
+ }
54
+
55
+ await cesdk.addPlugin(new DesignEditorConfig());
56
+
57
+ // Add asset source plugins
58
+ await cesdk.addPlugin(new BlurAssetSource());
59
+ await cesdk.addPlugin(new ColorPaletteAssetSource());
60
+ await cesdk.addPlugin(new CropPresetsAssetSource());
61
+ await cesdk.addPlugin(
62
+ new UploadAssetSources({ include: ['ly.img.image.upload'] })
63
+ );
64
+ await cesdk.addPlugin(
65
+ new DemoAssetSources({
66
+ include: [
67
+ 'ly.img.templates.blank.*',
68
+ 'ly.img.templates.presentation.*',
69
+ 'ly.img.templates.print.*',
70
+ 'ly.img.templates.social.*',
71
+ 'ly.img.image.*'
72
+ ]
73
+ })
74
+ );
75
+ await cesdk.addPlugin(new EffectsAssetSource());
76
+ await cesdk.addPlugin(new FiltersAssetSource());
77
+ await cesdk.addPlugin(new PagePresetsAssetSource());
78
+ await cesdk.addPlugin(new StickerAssetSource());
79
+ await cesdk.addPlugin(new TextAssetSource());
80
+ await cesdk.addPlugin(new TextComponentAssetSource());
81
+ await cesdk.addPlugin(new TypefaceAssetSource());
82
+ await cesdk.addPlugin(new VectorShapeAssetSource());
83
+
84
+ await cesdk.actions.run('scene.create', {
85
+ page: { width: 800, height: 500, unit: 'Pixel' }
86
+ });
87
+
88
+ const engine = cesdk.engine;
89
+ const page = engine.block.findByType('page')[0];
90
+
91
+ // Demo 1: Original image (no rotation)
92
+ const originalImage = await engine.block.addImage(
93
+ 'https://img.ly/static/ubq_samples/sample_3.jpg',
94
+ {
95
+ size: { width: 150, height: 150 }
96
+ }
97
+ );
98
+ engine.block.appendChild(page, originalImage);
99
+ engine.block.setPositionX(originalImage, 50);
100
+ engine.block.setPositionY(originalImage, 50);
101
+
102
+ const text1 = engine.block.create('text');
103
+ engine.block.setString(text1, 'text/text', 'Original');
104
+ engine.block.setFloat(text1, 'text/fontSize', 24);
105
+ engine.block.setEnum(text1, 'text/horizontalAlignment', 'Center');
106
+ engine.block.setWidth(text1, 150);
107
+ engine.block.setPositionX(text1, 50);
108
+ engine.block.setPositionY(text1, 210);
109
+ engine.block.appendChild(page, text1);
110
+
111
+ // Demo 2: Rotate 45 degrees
112
+ const rotated45Image = await engine.block.addImage(
113
+ 'https://img.ly/static/ubq_samples/sample_3.jpg',
114
+ {
115
+ size: { width: 150, height: 150 }
116
+ }
117
+ );
118
+ engine.block.appendChild(page, rotated45Image);
119
+ engine.block.setPositionX(rotated45Image, 225);
120
+ engine.block.setPositionY(rotated45Image, 50);
121
+
122
+ // Rotate the block by 45 degrees (π/4 radians)
123
+ engine.block.setRotation(rotated45Image, Math.PI / 4);
124
+
125
+ const text2 = engine.block.create('text');
126
+ engine.block.setString(text2, 'text/text', '45°');
127
+ engine.block.setFloat(text2, 'text/fontSize', 24);
128
+ engine.block.setEnum(text2, 'text/horizontalAlignment', 'Center');
129
+ engine.block.setWidth(text2, 150);
130
+ engine.block.setPositionX(text2, 225);
131
+ engine.block.setPositionY(text2, 210);
132
+ engine.block.appendChild(page, text2);
133
+
134
+ // Demo 3: Rotate 90 degrees
135
+ const rotated90Image = await engine.block.addImage(
136
+ 'https://img.ly/static/ubq_samples/sample_3.jpg',
137
+ {
138
+ size: { width: 150, height: 150 }
139
+ }
140
+ );
141
+ engine.block.appendChild(page, rotated90Image);
142
+ engine.block.setPositionX(rotated90Image, 400);
143
+ engine.block.setPositionY(rotated90Image, 50);
144
+
145
+ // Rotate the block by 90 degrees (π/2 radians)
146
+ engine.block.setRotation(rotated90Image, Math.PI / 2);
147
+
148
+ const text3 = engine.block.create('text');
149
+ engine.block.setString(text3, 'text/text', '90°');
150
+ engine.block.setFloat(text3, 'text/fontSize', 24);
151
+ engine.block.setEnum(text3, 'text/horizontalAlignment', 'Center');
152
+ engine.block.setWidth(text3, 150);
153
+ engine.block.setPositionX(text3, 400);
154
+ engine.block.setPositionY(text3, 210);
155
+ engine.block.appendChild(page, text3);
156
+
157
+ // Demo 4: Rotate 180 degrees
158
+ const rotated180Image = await engine.block.addImage(
159
+ 'https://img.ly/static/ubq_samples/sample_3.jpg',
160
+ {
161
+ size: { width: 150, height: 150 }
162
+ }
163
+ );
164
+ engine.block.appendChild(page, rotated180Image);
165
+ engine.block.setPositionX(rotated180Image, 575);
166
+ engine.block.setPositionY(rotated180Image, 50);
167
+
168
+ // Rotate the block by 180 degrees (π radians)
169
+ engine.block.setRotation(rotated180Image, Math.PI);
170
+
171
+ const text4 = engine.block.create('text');
172
+ engine.block.setString(text4, 'text/text', '180°');
173
+ engine.block.setFloat(text4, 'text/fontSize', 24);
174
+ engine.block.setEnum(text4, 'text/horizontalAlignment', 'Center');
175
+ engine.block.setWidth(text4, 150);
176
+ engine.block.setPositionX(text4, 575);
177
+ engine.block.setPositionY(text4, 210);
178
+ engine.block.appendChild(page, text4);
179
+
180
+ // Demo 5: Grouped rotation
181
+ const groupedImage1 = await engine.block.addImage(
182
+ 'https://img.ly/static/ubq_samples/sample_5.jpg',
183
+ {
184
+ size: { width: 100, height: 100 }
185
+ }
186
+ );
187
+ engine.block.appendChild(page, groupedImage1);
188
+ engine.block.setPositionX(groupedImage1, 150);
189
+ engine.block.setPositionY(groupedImage1, 300);
190
+
191
+ const groupedImage2 = await engine.block.addImage(
192
+ 'https://img.ly/static/ubq_samples/sample_6.jpg',
193
+ {
194
+ size: { width: 100, height: 100 }
195
+ }
196
+ );
197
+ engine.block.appendChild(page, groupedImage2);
198
+ engine.block.setPositionX(groupedImage2, 260);
199
+ engine.block.setPositionY(groupedImage2, 300);
200
+
201
+ // Group blocks and rotate them together
202
+ const groupId = engine.block.group([groupedImage1, groupedImage2]);
203
+ engine.block.setRotation(groupId, Math.PI / 8);
204
+
205
+ const text5 = engine.block.create('text');
206
+ engine.block.setString(text5, 'text/text', 'Grouped');
207
+ engine.block.setFloat(text5, 'text/fontSize', 24);
208
+ engine.block.setEnum(text5, 'text/horizontalAlignment', 'Center');
209
+ engine.block.setWidth(text5, 200);
210
+ engine.block.setPositionX(text5, 150);
211
+ engine.block.setPositionY(text5, 440);
212
+ engine.block.appendChild(page, text5);
213
+
214
+ // Demo 6: Locked rotation
215
+ const lockedImage = await engine.block.addImage(
216
+ 'https://img.ly/static/ubq_samples/sample_3.jpg',
217
+ {
218
+ size: { width: 150, height: 150 }
219
+ }
220
+ );
221
+ engine.block.appendChild(page, lockedImage);
222
+ engine.block.setPositionX(lockedImage, 500);
223
+ engine.block.setPositionY(lockedImage, 300);
224
+ engine.block.setRotation(lockedImage, Math.PI / 6);
225
+
226
+ // Lock rotation for a single block
227
+ engine.block.setScopeEnabled(lockedImage, 'layer/rotate', false);
228
+
229
+ const text6 = engine.block.create('text');
230
+ engine.block.setString(text6, 'text/text', 'Locked');
231
+ engine.block.setFloat(text6, 'text/fontSize', 24);
232
+ engine.block.setEnum(text6, 'text/horizontalAlignment', 'Center');
233
+ engine.block.setWidth(text6, 150);
234
+ engine.block.setPositionX(text6, 500);
235
+ engine.block.setPositionY(text6, 460);
236
+ engine.block.appendChild(page, text6);
237
+
238
+ // Get current rotation value
239
+ const currentRotation = engine.block.getRotation(rotated45Image);
240
+ console.log('Current rotation (radians):', currentRotation);
241
+ console.log(
242
+ 'Current rotation (degrees):',
243
+ (currentRotation * 180) / Math.PI
244
+ );
245
+
246
+ // Helpers for degree/radian conversion
247
+ const toRadians = (degrees: number) => (degrees * Math.PI) / 180;
248
+ const toDegrees = (radians: number) => (radians * 180) / Math.PI;
249
+
250
+ // Example: rotate by 30 degrees using helper
251
+ const targetRadians = toRadians(30);
252
+ console.log('30 degrees in radians:', targetRadians);
253
+ console.log('Converted back to degrees:', toDegrees(targetRadians));
254
+ }
255
+ }
256
+
257
+ export default Example;
258
+ ```
259
+
260
+ This guide covers rotating images by specific angles, reading rotation values, converting between degrees and radians, rotating grouped elements together, and locking rotation on blocks.
261
+
262
+ ## Initialize the Editor
263
+
264
+ Set up the editor with default assets and create a design scene:
265
+
266
+ ```typescript highlight=highlight-setup
267
+ await cesdk.addPlugin(new DesignEditorConfig());
268
+
269
+ // Add asset source plugins
270
+ await cesdk.addPlugin(new BlurAssetSource());
271
+ await cesdk.addPlugin(new ColorPaletteAssetSource());
272
+ await cesdk.addPlugin(new CropPresetsAssetSource());
273
+ await cesdk.addPlugin(
274
+ new UploadAssetSources({ include: ['ly.img.image.upload'] })
275
+ );
276
+ await cesdk.addPlugin(
277
+ new DemoAssetSources({
278
+ include: [
279
+ 'ly.img.templates.blank.*',
280
+ 'ly.img.templates.presentation.*',
281
+ 'ly.img.templates.print.*',
282
+ 'ly.img.templates.social.*',
283
+ 'ly.img.image.*'
284
+ ]
285
+ })
286
+ );
287
+ await cesdk.addPlugin(new EffectsAssetSource());
288
+ await cesdk.addPlugin(new FiltersAssetSource());
289
+ await cesdk.addPlugin(new PagePresetsAssetSource());
290
+ await cesdk.addPlugin(new StickerAssetSource());
291
+ await cesdk.addPlugin(new TextAssetSource());
292
+ await cesdk.addPlugin(new TextComponentAssetSource());
293
+ await cesdk.addPlugin(new TypefaceAssetSource());
294
+ await cesdk.addPlugin(new VectorShapeAssetSource());
295
+
296
+ await cesdk.actions.run('scene.create', {
297
+ page: { width: 800, height: 500, unit: 'Pixel' }
298
+ });
299
+ ```
300
+
301
+ ## Rotate an Image
302
+
303
+ Rotate blocks using `engine.block.setRotation()` with angle values in radians. Use `Math.PI` for 180° or divide for smaller increments:
304
+
305
+ ```typescript highlight=highlight-rotate-45
306
+ // Rotate the block by 45 degrees (π/4 radians)
307
+ engine.block.setRotation(rotated45Image, Math.PI / 4);
308
+ ```
309
+
310
+ ## Rotate by 90 Degrees
311
+
312
+ Rotate a block by 90 degrees using `Math.PI / 2`:
313
+
314
+ ```typescript highlight=highlight-rotate-90
315
+ // Rotate the block by 90 degrees (π/2 radians)
316
+ engine.block.setRotation(rotated90Image, Math.PI / 2);
317
+ ```
318
+
319
+ ## Rotate by 180 Degrees
320
+
321
+ Flip a block upside down by rotating 180 degrees using `Math.PI`:
322
+
323
+ ```typescript highlight=highlight-rotate-180
324
+ // Rotate the block by 180 degrees (π radians)
325
+ engine.block.setRotation(rotated180Image, Math.PI);
326
+ ```
327
+
328
+ ## Get Current Rotation
329
+
330
+ Read the current rotation value using `engine.block.getRotation()`. The returned value is in radians:
331
+
332
+ ```typescript highlight=highlight-get-rotation
333
+ // Get current rotation value
334
+ const currentRotation = engine.block.getRotation(rotated45Image);
335
+ console.log('Current rotation (radians):', currentRotation);
336
+ console.log('Current rotation (degrees):', (currentRotation * 180) / Math.PI);
337
+ ```
338
+
339
+ ## Convert Between Degrees and Radians
340
+
341
+ Create helper functions to convert between degrees and radians for more intuitive angle values:
342
+
343
+ ```typescript highlight=highlight-convert-radians
344
+ // Helpers for degree/radian conversion
345
+ const toRadians = (degrees: number) => (degrees * Math.PI) / 180;
346
+ const toDegrees = (radians: number) => (radians * 180) / Math.PI;
347
+
348
+ // Example: rotate by 30 degrees using helper
349
+ const targetRadians = toRadians(30);
350
+ console.log('30 degrees in radians:', targetRadians);
351
+ console.log('Converted back to degrees:', toDegrees(targetRadians));
352
+ ```
353
+
354
+ ## Rotate Groups Together
355
+
356
+ Group multiple blocks and rotate them as a unit to maintain their relative positions:
357
+
358
+ ```typescript highlight=highlight-rotate-group
359
+ // Group blocks and rotate them together
360
+ const groupId = engine.block.group([groupedImage1, groupedImage2]);
361
+ engine.block.setRotation(groupId, Math.PI / 8);
362
+ ```
363
+
364
+ ## Lock Rotation
365
+
366
+ Disable rotation for a specific block using `engine.block.setScopeEnabled()` with the `layer/rotate` scope:
367
+
368
+ ```typescript highlight=highlight-lock-rotation
369
+ // Lock rotation for a single block
370
+ engine.block.setScopeEnabled(lockedImage, 'layer/rotate', false);
371
+ ```
372
+
373
+ ## Troubleshooting
374
+
375
+ ### Rotation Has No Effect
376
+
377
+ Ensure the block exists and is appended to a page before calling `setRotation()`. Verify the block ID is valid using `engine.block.isValid()`.
378
+
379
+ ### Unexpected Rotation Direction
380
+
381
+ Positive values rotate counterclockwise, negative values rotate clockwise. Double-check your angle calculation if the rotation appears inverted.
382
+
383
+ ### Block Appears Skewed After Rotation
384
+
385
+ Rotation uses the block's center as the pivot point. If the block appears off-center, check that no unexpected scaling or positioning was applied.
386
+
387
+ ### Locked Block Won't Rotate
388
+
389
+ Check if the block's `layer/rotate` scope is disabled using `engine.block.isScopeEnabled()`. Re-enable with `engine.block.setScopeEnabled(block, 'layer/rotate', true)`.
390
+
391
+ ## API Reference
392
+
393
+ | Method | Description |
394
+ | -------------------------------- | --------------------------------------- |
395
+ | `engine.block.setRotation()` | Set rotation angle in radians |
396
+ | `engine.block.getRotation()` | Get current rotation angle in radians |
397
+ | `engine.block.group()` | Group blocks for collective transforms |
398
+ | `engine.block.setScopeEnabled()` | Enable or disable specific block scopes |
399
+ | `engine.block.isScopeEnabled()` | Check if a scope is enabled for a block |
400
+
401
+ ---
402
+
403
+ ## More Resources
404
+
405
+ - **[Vanilla JS/TS Documentation Index](https://img.ly/docs/cesdk/js.md)** - Browse all Vanilla JS/TS documentation
406
+ - **[Complete Documentation](./llms-full.txt.md)** - Full documentation in one file (for LLMs)
407
+ - **[Web Documentation](./js.md)** - Interactive documentation with examples
408
+ - **[Support](mailto:support@img.ly)** - Contact IMG.LY support
@@ -0,0 +1,278 @@
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).
2
+
3
+ **Navigation:** [Guides](./guides.md) > [Create and Edit Images](./edit-image.md) > [Transform](./edit-image/transform.md) > [Scale](./edit-image/transform/scale.md)
4
+
5
+ ---
6
+
7
+ Scale images proportionally with `engine.block.scale()` using configurable anchor points, or stretch individual axes with direct width/height manipulation.
8
+
9
+ ![Scale images example showing uniform and non-uniform scaling](https://img.ly/docs/cesdk/./assets/browser.hero.webp)
10
+
11
+ > **Reading time:** 8 minutes
12
+ >
13
+ > **Resources:**
14
+ >
15
+ > - [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-edit-image-transform-scale-browser)
17
+ > - [Open in StackBlitz](https://stackblitz.com/github/imgly/cesdk-web-examples/tree/v$UBQ_VERSION$/guides-edit-image-transform-scale-browser)
18
+ > - [Live demo](https://img.ly/docs/cesdk/examples/guides-edit-image-transform-scale-browser/)
19
+
20
+ Scaling transforms a block proportionally using a factor, while resizing changes dimensions directly. Use scaling to maintain aspect ratio or apply consistent size changes across multiple elements.
21
+
22
+ ```typescript file=@cesdk_web_examples/guides-edit-image-transform-scale-browser/browser.ts reference-only
23
+ import CreativeEditorSDK, {
24
+ type EditorPlugin,
25
+ type EditorPluginContext
26
+ } from '@cesdk/cesdk-js';
27
+
28
+ import {
29
+ BlurAssetSource,
30
+ ColorPaletteAssetSource,
31
+ CropPresetsAssetSource,
32
+ DemoAssetSources,
33
+ EffectsAssetSource,
34
+ FiltersAssetSource,
35
+ PagePresetsAssetSource,
36
+ StickerAssetSource,
37
+ TextAssetSource,
38
+ TextComponentAssetSource,
39
+ TypefaceAssetSource,
40
+ UploadAssetSources,
41
+ VectorShapeAssetSource
42
+ } from '@cesdk/cesdk-js/plugins';
43
+ import { DesignEditorConfig } from './design-editor/plugin';
44
+
45
+ class Example implements EditorPlugin {
46
+ name = 'guides-edit-image-transform-scale-browser';
47
+
48
+ version = CreativeEditorSDK.version;
49
+
50
+ async initialize({ cesdk }: EditorPluginContext): Promise<void> {
51
+ if (!cesdk) {
52
+ throw new Error('CE.SDK instance is required for this plugin');
53
+ }
54
+
55
+ await cesdk.addPlugin(new DesignEditorConfig());
56
+
57
+ // Add asset source plugins
58
+ await cesdk.addPlugin(new BlurAssetSource());
59
+ await cesdk.addPlugin(new ColorPaletteAssetSource());
60
+ await cesdk.addPlugin(new CropPresetsAssetSource());
61
+ await cesdk.addPlugin(
62
+ new UploadAssetSources({ include: ['ly.img.image.upload'] })
63
+ );
64
+ await cesdk.addPlugin(
65
+ new DemoAssetSources({
66
+ include: [
67
+ 'ly.img.templates.blank.*',
68
+ 'ly.img.templates.presentation.*',
69
+ 'ly.img.templates.print.*',
70
+ 'ly.img.templates.social.*',
71
+ 'ly.img.image.*'
72
+ ]
73
+ })
74
+ );
75
+ await cesdk.addPlugin(new EffectsAssetSource());
76
+ await cesdk.addPlugin(new FiltersAssetSource());
77
+ await cesdk.addPlugin(new PagePresetsAssetSource());
78
+ await cesdk.addPlugin(new StickerAssetSource());
79
+ await cesdk.addPlugin(new TextAssetSource());
80
+ await cesdk.addPlugin(new TextComponentAssetSource());
81
+ await cesdk.addPlugin(new TypefaceAssetSource());
82
+ await cesdk.addPlugin(new VectorShapeAssetSource());
83
+
84
+ await cesdk.actions.run('scene.create', {
85
+ page: { width: 800, height: 600, unit: 'Pixel' }
86
+ });
87
+
88
+ const engine = cesdk.engine;
89
+ const page = engine.block.findByType('page')[0];
90
+
91
+ // Demo 1: Uniform Scaling - Scale from center anchor
92
+ const scaledImage = await engine.block.addImage(
93
+ 'https://img.ly/static/ubq_samples/sample_1.jpg',
94
+ {
95
+ size: { width: 150, height: 150 }
96
+ }
97
+ );
98
+ engine.block.appendChild(page, scaledImage);
99
+ engine.block.setPositionX(scaledImage, 50);
100
+ engine.block.setPositionY(scaledImage, 100);
101
+
102
+ // Scale uniformly to 150% from center anchor
103
+ engine.block.scale(scaledImage, 1.5, 0.5, 0.5);
104
+
105
+ const text1 = engine.block.create('text');
106
+ engine.block.setString(text1, 'text/text', 'Uniform Scale');
107
+ engine.block.setFloat(text1, 'text/fontSize', 28);
108
+ engine.block.setEnum(text1, 'text/horizontalAlignment', 'Center');
109
+ engine.block.setWidth(text1, 225);
110
+ engine.block.setPositionX(text1, 50);
111
+ engine.block.setPositionY(text1, 360);
112
+ engine.block.appendChild(page, text1);
113
+
114
+ // Demo 2: Non-Uniform Scaling - Stretch width only
115
+ const stretchedImage = await engine.block.addImage(
116
+ 'https://img.ly/static/ubq_samples/sample_3.jpg',
117
+ {
118
+ size: { width: 150, height: 150 }
119
+ }
120
+ );
121
+ engine.block.appendChild(page, stretchedImage);
122
+ engine.block.setPositionX(stretchedImage, 300);
123
+ engine.block.setPositionY(stretchedImage, 150);
124
+
125
+ // Stretch width by 50% while keeping height
126
+ engine.block.setWidthMode(stretchedImage, 'Absolute');
127
+ const currentWidth = engine.block.getWidth(stretchedImage);
128
+ engine.block.setWidth(stretchedImage, currentWidth * 1.5, true);
129
+
130
+ const text2 = engine.block.create('text');
131
+ engine.block.setString(text2, 'text/text', 'Non-Uniform');
132
+ engine.block.setFloat(text2, 'text/fontSize', 28);
133
+ engine.block.setEnum(text2, 'text/horizontalAlignment', 'Center');
134
+ engine.block.setWidth(text2, 225);
135
+ engine.block.setPositionX(text2, 300);
136
+ engine.block.setPositionY(text2, 360);
137
+ engine.block.appendChild(page, text2);
138
+
139
+ // Demo 3: Locked Image - Cannot be scaled
140
+ const lockedImage = await engine.block.addImage(
141
+ 'https://img.ly/static/ubq_samples/sample_5.jpg',
142
+ {
143
+ size: { width: 150, height: 150 }
144
+ }
145
+ );
146
+ engine.block.appendChild(page, lockedImage);
147
+ engine.block.setPositionX(lockedImage, 575);
148
+ engine.block.setPositionY(lockedImage, 150);
149
+
150
+ // Lock transforms to prevent scaling
151
+ engine.block.setTransformLocked(lockedImage, true);
152
+
153
+ const text3 = engine.block.create('text');
154
+ engine.block.setString(text3, 'text/text', 'Locked');
155
+ engine.block.setFloat(text3, 'text/fontSize', 28);
156
+ engine.block.setEnum(text3, 'text/horizontalAlignment', 'Center');
157
+ engine.block.setWidth(text3, 150);
158
+ engine.block.setPositionX(text3, 575);
159
+ engine.block.setPositionY(text3, 360);
160
+ engine.block.appendChild(page, text3);
161
+
162
+ // Scale with different anchor points
163
+ // Top-left anchor (0, 0) - default
164
+ // Center anchor (0.5, 0.5) - scales from center
165
+ // Bottom-right anchor (1, 1) - scales from bottom-right corner
166
+ const anchorX = 0.5;
167
+ const anchorY = 0.5;
168
+ const scaleFactor = 1.2;
169
+ engine.block.scale(scaledImage, scaleFactor, anchorX, anchorY);
170
+
171
+ // Restrict scaling through scopes
172
+ engine.block.setScopeEnabled(lockedImage, 'layer/resize', false);
173
+
174
+ // Select the scaled image to show the result
175
+ engine.block.select(scaledImage);
176
+ }
177
+ }
178
+
179
+ export default Example;
180
+ ```
181
+
182
+ This guide covers uniform scaling with anchor points, non-uniform axis stretching, and locking transforms to prevent scaling in templates.
183
+
184
+ ## Uniform Scaling
185
+
186
+ Apply a scale factor with `engine.block.scale()` where 1.0 keeps the original size, values greater than 1 enlarge, and values less than 1 shrink. The third and fourth parameters control the anchor point (0 to 1 range):
187
+
188
+ ```typescript highlight-uniform-scale
189
+ // Scale uniformly to 150% from center anchor
190
+ engine.block.scale(scaledImage, 1.5, 0.5, 0.5);
191
+ ```
192
+
193
+ ## Anchor Point Control
194
+
195
+ Control the scaling origin with `anchorX` and `anchorY` parameters. Use (0, 0) for top-left, (0.5, 0.5) for center, or (1, 1) for bottom-right. Center anchor expands equally in all directions:
196
+
197
+ ```typescript highlight-anchor-points
198
+ // Scale with different anchor points
199
+ // Top-left anchor (0, 0) - default
200
+ // Center anchor (0.5, 0.5) - scales from center
201
+ // Bottom-right anchor (1, 1) - scales from bottom-right corner
202
+ const anchorX = 0.5;
203
+ const anchorY = 0.5;
204
+ const scaleFactor = 1.2;
205
+ engine.block.scale(scaledImage, scaleFactor, anchorX, anchorY);
206
+ ```
207
+
208
+ ## Non-Uniform Scaling
209
+
210
+ Stretch a single axis by setting absolute mode and modifying width or height independently. This changes the aspect ratio:
211
+
212
+ ```typescript highlight-non-uniform-scale
213
+ // Stretch width by 50% while keeping height
214
+ engine.block.setWidthMode(stretchedImage, 'Absolute');
215
+ const currentWidth = engine.block.getWidth(stretchedImage);
216
+ engine.block.setWidth(stretchedImage, currentWidth * 1.5, true);
217
+ ```
218
+
219
+ ## Locking Transforms
220
+
221
+ Lock transforms to prevent scaling, rotation, and repositioning using `setTransformLocked`:
222
+
223
+ ```typescript highlight-lock-scaling
224
+ // Lock transforms to prevent scaling
225
+ engine.block.setTransformLocked(lockedImage, true);
226
+ ```
227
+
228
+ ## Scope Restrictions
229
+
230
+ Disable specific capabilities using scopes. Use `'layer/resize'` to prevent resizing while allowing other operations:
231
+
232
+ ```typescript highlight-scope-restriction
233
+ // Restrict scaling through scopes
234
+ engine.block.setScopeEnabled(lockedImage, 'layer/resize', false);
235
+ ```
236
+
237
+ ## Troubleshooting
238
+
239
+ ### Image Scales Unevenly
240
+
241
+ Use the same anchor values for both X and Y (e.g., 0.5, 0.5 for center). Use `scale()` instead of separate width/height changes to maintain proportions.
242
+
243
+ ### Scaling Doesn't Apply
244
+
245
+ Verify the block is valid using `engine.block.isValid(blockId)`. Ensure the block is appended to the scene hierarchy with `engine.block.appendChild()`.
246
+
247
+ ### Users Can Still Scale Locked Blocks
248
+
249
+ Check that the `'layer/resize'` scope is disabled using `engine.block.isScopeEnabled()`. Transform locks prevent UI manipulation but not API calls.
250
+
251
+ ### Export Shows Original Size
252
+
253
+ Confirm scaling was applied before export. Use `engine.block.getWidth()` and `engine.block.getHeight()` to verify dimensions after scaling.
254
+
255
+ ## API Reference
256
+
257
+ | Method | Description |
258
+ | ----------------------------------- | ----------------------------------------- |
259
+ | `engine.block.scale()` | Scale block and children proportionally |
260
+ | `engine.block.getWidth()` | Get current width |
261
+ | `engine.block.setWidth()` | Set width with optional crop maintenance |
262
+ | `engine.block.getHeight()` | Get current height |
263
+ | `engine.block.setHeight()` | Set height with optional crop maintenance |
264
+ | `engine.block.setWidthMode()` | Set width mode (Absolute, Percent, Auto) |
265
+ | `engine.block.setHeightMode()` | Set height mode (Absolute, Percent, Auto) |
266
+ | `engine.block.setTransformLocked()` | Lock all transformations |
267
+ | `engine.block.isTransformLocked()` | Check if transforms are locked |
268
+ | `engine.block.setScopeEnabled()` | Enable or disable a scope |
269
+ | `engine.block.isScopeEnabled()` | Check if scope is enabled |
270
+
271
+ ---
272
+
273
+ ## More Resources
274
+
275
+ - **[Vanilla JS/TS Documentation Index](https://img.ly/docs/cesdk/js.md)** - Browse all Vanilla JS/TS documentation
276
+ - **[Complete Documentation](./llms-full.txt.md)** - Full documentation in one file (for LLMs)
277
+ - **[Web Documentation](./js.md)** - Interactive documentation with examples
278
+ - **[Support](mailto:support@img.ly)** - Contact IMG.LY support