@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,514 @@
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) > [Rules](./rules.md) > [Overview](./rules/overview.md)
4
+
5
+ ---
6
+
7
+ Learn how CE.SDK's rules system enforces design constraints and controls editing permissions through the scopes mechanism.
8
+
9
+ ![Rules overview showing locked and editable blocks with scope-controlled editing](https://img.ly/docs/cesdk/./assets/browser.hero.webp)
10
+
11
+ > **Reading time:** 5 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-rules-overview-browser)
17
+ > - [Open in StackBlitz](https://stackblitz.com/github/imgly/cesdk-web-examples/tree/v$UBQ_VERSION$/guides-rules-overview-browser)
18
+ > - [Live demo](https://img.ly/docs/cesdk/examples/guides-rules-overview-browser/)
19
+
20
+ In CE.SDK, "rules" refer to design constraints and guardrails that control what editing operations are permitted. The primary mechanism for enforcing rules is the **scopes system**—permission flags that enable you to create guided editing experiences maintaining brand consistency, ensuring design quality, and preventing unauthorized modifications.
21
+
22
+ ```typescript file=@cesdk_web_examples/guides-rules-overview-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 packageJson from './package.json';
42
+ import { calculatePyramidLayout } from './utils';
43
+
44
+ /**
45
+ * CE.SDK Plugin: Rules Overview Guide
46
+ *
47
+ * Demonstrates the scopes system for enforcing editing rules and constraints.
48
+ * Shows global scopes, block-level scopes, and how they control editing operations
49
+ * across different scope categories including layer, appearance, content, and lifecycle scopes.
50
+ */
51
+ class Example implements EditorPlugin {
52
+ name = packageJson.name;
53
+ version = packageJson.version;
54
+
55
+ async initialize({ cesdk }: EditorPluginContext): Promise<void> {
56
+ if (!cesdk) {
57
+ throw new Error('CE.SDK instance is required for this plugin');
58
+ }
59
+ await cesdk.addPlugin(new DesignEditorConfig());
60
+
61
+ // Add asset source plugins
62
+ await cesdk.addPlugin(new BlurAssetSource());
63
+ await cesdk.addPlugin(new ColorPaletteAssetSource());
64
+ await cesdk.addPlugin(new CropPresetsAssetSource());
65
+ await cesdk.addPlugin(
66
+ new UploadAssetSources({ include: ['ly.img.image.upload'] })
67
+ );
68
+ await cesdk.addPlugin(
69
+ new DemoAssetSources({
70
+ include: [
71
+ 'ly.img.templates.blank.*',
72
+ 'ly.img.templates.presentation.*',
73
+ 'ly.img.templates.print.*',
74
+ 'ly.img.templates.social.*',
75
+ 'ly.img.image.*'
76
+ ]
77
+ })
78
+ );
79
+ await cesdk.addPlugin(new EffectsAssetSource());
80
+ await cesdk.addPlugin(new FiltersAssetSource());
81
+ await cesdk.addPlugin(new PagePresetsAssetSource());
82
+ await cesdk.addPlugin(new StickerAssetSource());
83
+ await cesdk.addPlugin(new TextAssetSource());
84
+ await cesdk.addPlugin(new TextComponentAssetSource());
85
+ await cesdk.addPlugin(new TypefaceAssetSource());
86
+ await cesdk.addPlugin(new VectorShapeAssetSource());
87
+
88
+ await cesdk.actions.run('scene.create', {
89
+ page: { width: 1600, height: 1000, unit: 'Pixel' }
90
+ });
91
+
92
+ const engine = cesdk.engine;
93
+ const page = engine.block.findByType('page')[0];
94
+
95
+ const pageWidth = engine.block.getWidth(page);
96
+ const pageHeight = engine.block.getHeight(page);
97
+
98
+ // Calculate grid layout using utility function
99
+ const layout = calculatePyramidLayout(pageWidth, pageHeight);
100
+
101
+ // Different sample images for each block
102
+ const imageUris = [
103
+ 'https://img.ly/static/ubq_samples/sample_1.jpg',
104
+ 'https://img.ly/static/ubq_samples/sample_2.jpg',
105
+ 'https://img.ly/static/ubq_samples/sample_3.jpg',
106
+ 'https://img.ly/static/ubq_samples/sample_4.jpg',
107
+ 'https://img.ly/static/ubq_samples/sample_5.jpg'
108
+ ];
109
+
110
+ // Set global scopes to Defer - this allows block-level control
111
+ // Layer operations
112
+ engine.editor.setGlobalScope('layer/move', 'Defer');
113
+ engine.editor.setGlobalScope('layer/resize', 'Defer');
114
+ engine.editor.setGlobalScope('layer/rotate', 'Defer');
115
+ engine.editor.setGlobalScope('layer/flip', 'Defer');
116
+ engine.editor.setGlobalScope('layer/crop', 'Defer');
117
+ engine.editor.setGlobalScope('layer/opacity', 'Defer');
118
+ engine.editor.setGlobalScope('layer/blendMode', 'Defer');
119
+ engine.editor.setGlobalScope('layer/visibility', 'Defer');
120
+ engine.editor.setGlobalScope('layer/clipping', 'Defer');
121
+
122
+ // Appearance
123
+ engine.editor.setGlobalScope('appearance/adjustments', 'Defer');
124
+ engine.editor.setGlobalScope('appearance/filter', 'Defer');
125
+ engine.editor.setGlobalScope('appearance/effect', 'Defer');
126
+ engine.editor.setGlobalScope('appearance/blur', 'Defer');
127
+ engine.editor.setGlobalScope('appearance/shadow', 'Defer');
128
+
129
+ // Content editing
130
+ engine.editor.setGlobalScope('fill/change', 'Defer');
131
+ engine.editor.setGlobalScope('fill/changeType', 'Defer');
132
+ engine.editor.setGlobalScope('stroke/change', 'Defer');
133
+
134
+ // Lifecycle
135
+ engine.editor.setGlobalScope('lifecycle/destroy', 'Defer');
136
+ engine.editor.setGlobalScope('lifecycle/duplicate', 'Defer');
137
+ engine.editor.setGlobalScope('editor/add', 'Defer');
138
+ engine.editor.setGlobalScope('editor/select', 'Defer');
139
+
140
+ // Create 5 image blocks - one for each scope category plus fully enabled
141
+ // Block 1: Layer Operations Disabled (top row)
142
+ const layerBlock = await engine.block.addImage(imageUris[0], {
143
+ size: { width: layout.blockWidth, height: layout.blockHeight }
144
+ });
145
+ const pos1 = layout.getBlockPosition(0);
146
+ engine.block.setPositionX(layerBlock, pos1.x);
147
+ engine.block.setPositionY(layerBlock, pos1.y);
148
+ engine.block.appendChild(page, layerBlock);
149
+ engine.block.setName(layerBlock, 'Layer Operations Disabled');
150
+
151
+ // Block 2: Appearance Disabled (top row)
152
+ const appearanceBlock = await engine.block.addImage(imageUris[1], {
153
+ size: { width: layout.blockWidth, height: layout.blockHeight }
154
+ });
155
+ const pos2 = layout.getBlockPosition(1);
156
+ engine.block.setPositionX(appearanceBlock, pos2.x);
157
+ engine.block.setPositionY(appearanceBlock, pos2.y);
158
+ engine.block.appendChild(page, appearanceBlock);
159
+ engine.block.setName(appearanceBlock, 'Appearance Disabled');
160
+
161
+ // Block 3: Content Editing Disabled (top row)
162
+ const contentBlock = await engine.block.addImage(imageUris[2], {
163
+ size: { width: layout.blockWidth, height: layout.blockHeight }
164
+ });
165
+ const pos3 = layout.getBlockPosition(2);
166
+ engine.block.setPositionX(contentBlock, pos3.x);
167
+ engine.block.setPositionY(contentBlock, pos3.y);
168
+ engine.block.appendChild(page, contentBlock);
169
+ engine.block.setName(contentBlock, 'Content Editing Disabled');
170
+
171
+ // Block 4: All Scopes Disabled (bottom row) - fully locked
172
+ const lockedBlock = await engine.block.addImage(imageUris[3], {
173
+ size: { width: layout.blockWidth, height: layout.blockHeight }
174
+ });
175
+ const pos4 = layout.getBlockPosition(3);
176
+ engine.block.setPositionX(lockedBlock, pos4.x);
177
+ engine.block.setPositionY(lockedBlock, pos4.y);
178
+ engine.block.appendChild(page, lockedBlock);
179
+ engine.block.setName(lockedBlock, 'All Scopes Disabled');
180
+
181
+ // Block 5: Fully Enabled - all scopes enabled (bottom row)
182
+ const enabledBlock = await engine.block.addImage(imageUris[4], {
183
+ size: { width: layout.blockWidth, height: layout.blockHeight }
184
+ });
185
+ const pos5 = layout.getBlockPosition(4);
186
+ engine.block.setPositionX(enabledBlock, pos5.x);
187
+ engine.block.setPositionY(enabledBlock, pos5.y);
188
+ engine.block.appendChild(page, enabledBlock);
189
+ engine.block.setName(enabledBlock, 'All Scopes Enabled');
190
+
191
+ // Block 1: Disable all layer operations
192
+ engine.block.setScopeEnabled(layerBlock, 'layer/move', false);
193
+ engine.block.setScopeEnabled(layerBlock, 'layer/resize', false);
194
+ engine.block.setScopeEnabled(layerBlock, 'layer/rotate', false);
195
+ engine.block.setScopeEnabled(layerBlock, 'layer/flip', false);
196
+ engine.block.setScopeEnabled(layerBlock, 'layer/crop', false);
197
+ engine.block.setScopeEnabled(layerBlock, 'layer/opacity', false);
198
+ engine.block.setScopeEnabled(layerBlock, 'layer/blendMode', false);
199
+ engine.block.setScopeEnabled(layerBlock, 'layer/visibility', false);
200
+ engine.block.setScopeEnabled(layerBlock, 'layer/clipping', false);
201
+ // Keep other scopes enabled
202
+ engine.block.setScopeEnabled(layerBlock, 'appearance/adjustments', true);
203
+ engine.block.setScopeEnabled(layerBlock, 'appearance/filter', true);
204
+ engine.block.setScopeEnabled(layerBlock, 'fill/change', true);
205
+ engine.block.setScopeEnabled(layerBlock, 'lifecycle/destroy', true);
206
+ engine.block.setScopeEnabled(layerBlock, 'lifecycle/duplicate', true);
207
+ engine.block.setScopeEnabled(layerBlock, 'editor/select', true);
208
+
209
+ // Block 2: Disable all appearance scopes
210
+ engine.block.setScopeEnabled(
211
+ appearanceBlock,
212
+ 'appearance/adjustments',
213
+ false
214
+ );
215
+ engine.block.setScopeEnabled(appearanceBlock, 'appearance/filter', false);
216
+ engine.block.setScopeEnabled(appearanceBlock, 'appearance/effect', false);
217
+ engine.block.setScopeEnabled(appearanceBlock, 'appearance/blur', false);
218
+ engine.block.setScopeEnabled(appearanceBlock, 'appearance/shadow', false);
219
+ // Keep other scopes enabled
220
+ engine.block.setScopeEnabled(appearanceBlock, 'layer/move', true);
221
+ engine.block.setScopeEnabled(appearanceBlock, 'layer/resize', true);
222
+ engine.block.setScopeEnabled(appearanceBlock, 'layer/rotate', true);
223
+ engine.block.setScopeEnabled(appearanceBlock, 'fill/change', true);
224
+ engine.block.setScopeEnabled(appearanceBlock, 'lifecycle/destroy', true);
225
+ engine.block.setScopeEnabled(appearanceBlock, 'lifecycle/duplicate', true);
226
+ engine.block.setScopeEnabled(appearanceBlock, 'editor/select', true);
227
+
228
+ // Block 3: Disable all content editing scopes
229
+ engine.block.setScopeEnabled(contentBlock, 'fill/change', false);
230
+ engine.block.setScopeEnabled(contentBlock, 'fill/changeType', false);
231
+ engine.block.setScopeEnabled(contentBlock, 'stroke/change', false);
232
+ // Keep other scopes enabled
233
+ engine.block.setScopeEnabled(contentBlock, 'layer/move', true);
234
+ engine.block.setScopeEnabled(contentBlock, 'layer/resize', true);
235
+ engine.block.setScopeEnabled(contentBlock, 'layer/rotate', true);
236
+ engine.block.setScopeEnabled(contentBlock, 'appearance/adjustments', true);
237
+ engine.block.setScopeEnabled(contentBlock, 'appearance/filter', true);
238
+ engine.block.setScopeEnabled(contentBlock, 'lifecycle/destroy', true);
239
+ engine.block.setScopeEnabled(contentBlock, 'lifecycle/duplicate', true);
240
+ engine.block.setScopeEnabled(contentBlock, 'editor/select', true);
241
+
242
+ // Block 4: Disable all scopes (fully locked)
243
+ engine.block.setScopeEnabled(lockedBlock, 'layer/move', false);
244
+ engine.block.setScopeEnabled(lockedBlock, 'layer/resize', false);
245
+ engine.block.setScopeEnabled(lockedBlock, 'layer/rotate', false);
246
+ engine.block.setScopeEnabled(lockedBlock, 'layer/flip', false);
247
+ engine.block.setScopeEnabled(lockedBlock, 'layer/crop', false);
248
+ engine.block.setScopeEnabled(lockedBlock, 'layer/opacity', false);
249
+ engine.block.setScopeEnabled(lockedBlock, 'layer/blendMode', false);
250
+ engine.block.setScopeEnabled(lockedBlock, 'layer/visibility', false);
251
+ engine.block.setScopeEnabled(lockedBlock, 'layer/clipping', false);
252
+ engine.block.setScopeEnabled(lockedBlock, 'appearance/adjustments', false);
253
+ engine.block.setScopeEnabled(lockedBlock, 'appearance/filter', false);
254
+ engine.block.setScopeEnabled(lockedBlock, 'appearance/effect', false);
255
+ engine.block.setScopeEnabled(lockedBlock, 'appearance/blur', false);
256
+ engine.block.setScopeEnabled(lockedBlock, 'appearance/shadow', false);
257
+ engine.block.setScopeEnabled(lockedBlock, 'fill/change', false);
258
+ engine.block.setScopeEnabled(lockedBlock, 'fill/changeType', false);
259
+ engine.block.setScopeEnabled(lockedBlock, 'stroke/change', false);
260
+ engine.block.setScopeEnabled(lockedBlock, 'lifecycle/destroy', false);
261
+ engine.block.setScopeEnabled(lockedBlock, 'lifecycle/duplicate', false);
262
+ engine.block.setScopeEnabled(lockedBlock, 'editor/add', false);
263
+ engine.block.setScopeEnabled(lockedBlock, 'editor/select', false);
264
+
265
+ // Block 5: Enable all scopes (fully editable)
266
+ engine.block.setScopeEnabled(enabledBlock, 'layer/move', true);
267
+ engine.block.setScopeEnabled(enabledBlock, 'layer/resize', true);
268
+ engine.block.setScopeEnabled(enabledBlock, 'layer/rotate', true);
269
+ engine.block.setScopeEnabled(enabledBlock, 'layer/flip', true);
270
+ engine.block.setScopeEnabled(enabledBlock, 'layer/crop', true);
271
+ engine.block.setScopeEnabled(enabledBlock, 'layer/opacity', true);
272
+ engine.block.setScopeEnabled(enabledBlock, 'layer/blendMode', true);
273
+ engine.block.setScopeEnabled(enabledBlock, 'layer/visibility', true);
274
+ engine.block.setScopeEnabled(enabledBlock, 'layer/clipping', true);
275
+ engine.block.setScopeEnabled(enabledBlock, 'appearance/adjustments', true);
276
+ engine.block.setScopeEnabled(enabledBlock, 'appearance/filter', true);
277
+ engine.block.setScopeEnabled(enabledBlock, 'appearance/effect', true);
278
+ engine.block.setScopeEnabled(enabledBlock, 'appearance/blur', true);
279
+ engine.block.setScopeEnabled(enabledBlock, 'appearance/shadow', true);
280
+ engine.block.setScopeEnabled(enabledBlock, 'fill/change', true);
281
+ engine.block.setScopeEnabled(enabledBlock, 'fill/changeType', true);
282
+ engine.block.setScopeEnabled(enabledBlock, 'stroke/change', true);
283
+ engine.block.setScopeEnabled(enabledBlock, 'lifecycle/destroy', true);
284
+ engine.block.setScopeEnabled(enabledBlock, 'lifecycle/duplicate', true);
285
+ engine.block.setScopeEnabled(enabledBlock, 'editor/add', true);
286
+ engine.block.setScopeEnabled(enabledBlock, 'editor/select', true);
287
+
288
+ // Create text labels below each block
289
+ const labels = [
290
+ { text: 'Layer Operations', constraint: 'Disabled' },
291
+ { text: 'Appearance', constraint: 'Disabled' },
292
+ { text: 'Content Editing', constraint: 'Disabled' },
293
+ { text: 'All Scopes', constraint: 'Disabled' },
294
+ { text: 'All Scopes', constraint: 'Enabled' }
295
+ ];
296
+
297
+ for (let i = 0; i < labels.length; i++) {
298
+ const labelPos = layout.getLabelPosition(i);
299
+ const label = engine.block.create('text');
300
+ engine.block.setWidth(label, layout.blockWidth);
301
+ engine.block.setHeight(label, layout.labelHeight);
302
+ engine.block.setPositionX(label, labelPos.x);
303
+ engine.block.setPositionY(label, labelPos.y);
304
+ engine.block.appendChild(page, label);
305
+ engine.block.replaceText(
306
+ label,
307
+ `${labels[i].text}\n${labels[i].constraint}`
308
+ );
309
+ engine.block.setFloat(label, 'text/fontSize', 48);
310
+ engine.block.setEnum(label, 'text/horizontalAlignment', 'Center');
311
+ engine.block.setEnum(label, 'text/verticalAlignment', 'Top');
312
+
313
+ // Lock the label so it can't be edited
314
+ engine.block.setScopeEnabled(label, 'layer/move', false);
315
+ engine.block.setScopeEnabled(label, 'layer/resize', false);
316
+ engine.block.setScopeEnabled(label, 'lifecycle/destroy', false);
317
+ engine.block.setScopeEnabled(label, 'editor/select', false);
318
+ }
319
+
320
+ // Check if operations are allowed for each block
321
+ const canMoveLayer = engine.block.isAllowedByScope(
322
+ layerBlock,
323
+ 'layer/move'
324
+ );
325
+ const canMoveEnabled = engine.block.isAllowedByScope(
326
+ enabledBlock,
327
+ 'layer/move'
328
+ );
329
+ const canMoveLocked = engine.block.isAllowedByScope(
330
+ lockedBlock,
331
+ 'layer/move'
332
+ );
333
+
334
+ console.log(`Layer block - can move: ${canMoveLayer}`); // false
335
+ console.log(`Enabled block - can move: ${canMoveEnabled}`); // true
336
+ console.log(`Locked block - can move: ${canMoveLocked}`); // false
337
+
338
+ // Demonstrate global Deny - would block all operations regardless of block settings
339
+ // Example: engine.editor.setGlobalScope('layer/flip', 'Deny');
340
+ // This would prevent flipping on ALL blocks, even the fully enabled one
341
+
342
+ // Zoom to fit the page in the viewport
343
+ await engine.scene.zoomToBlock(page, {
344
+ padding: {
345
+ left: 40,
346
+ top: 40,
347
+ right: 40,
348
+ bottom: 40
349
+ }
350
+ });
351
+ }
352
+ }
353
+
354
+ export default Example;
355
+ ```
356
+
357
+ This guide covers the scopes system conceptually, including global vs block-level scopes, available scope categories, and how scopes integrate with the UI. For detailed implementation of specific use cases, see the Next Steps section.
358
+
359
+ ## What Are Scopes
360
+
361
+ Scopes are permission flags that control specific editing capabilities. Each scope maps to a particular operation category. When a scope is denied for a block, the corresponding editing controls become unavailable in the UI.
362
+
363
+ CE.SDK organizes scopes into four main categories:
364
+
365
+ **Layer operations** — Control positioning and transformation:
366
+
367
+ - `layer/move`, `layer/resize`, `layer/rotate`, `layer/flip`
368
+ - `layer/crop`, `layer/opacity`, `layer/blendMode`
369
+ - `layer/visibility`, `layer/clipping`
370
+
371
+ **Appearance** — Control visual effects and adjustments:
372
+
373
+ - `appearance/adjustments`, `appearance/filter`, `appearance/effect`
374
+ - `appearance/blur`, `appearance/shadow`, `appearance/animation`
375
+
376
+ **Content editing** — Control content modifications:
377
+
378
+ - `text/edit`, `text/character`
379
+ - `fill/change`, `fill/changeType`
380
+ - `stroke/change`, `shape/change`
381
+
382
+ **Lifecycle** — Control block management:
383
+
384
+ - `lifecycle/destroy`, `lifecycle/duplicate`
385
+ - `editor/add`, `editor/select`
386
+
387
+ ## Setting Global Scopes
388
+
389
+ Global scopes set editor-wide defaults that apply to all blocks. Use `engine.editor.setGlobalScope()` to configure them with three permission levels:
390
+
391
+ - `'Allow'` — Operation always permitted for all blocks
392
+ - `'Deny'` — Operation always blocked for all blocks
393
+ - `'Defer'` — Defer to each block's individual scope setting
394
+
395
+ ```typescript highlight-global-scope
396
+ // Set global scopes to Defer - this allows block-level control
397
+ // Layer operations
398
+ engine.editor.setGlobalScope('layer/move', 'Defer');
399
+ engine.editor.setGlobalScope('layer/resize', 'Defer');
400
+ engine.editor.setGlobalScope('layer/rotate', 'Defer');
401
+ engine.editor.setGlobalScope('layer/flip', 'Defer');
402
+ engine.editor.setGlobalScope('layer/crop', 'Defer');
403
+ engine.editor.setGlobalScope('layer/opacity', 'Defer');
404
+ engine.editor.setGlobalScope('layer/blendMode', 'Defer');
405
+ engine.editor.setGlobalScope('layer/visibility', 'Defer');
406
+ engine.editor.setGlobalScope('layer/clipping', 'Defer');
407
+
408
+ // Appearance
409
+ engine.editor.setGlobalScope('appearance/adjustments', 'Defer');
410
+ engine.editor.setGlobalScope('appearance/filter', 'Defer');
411
+ engine.editor.setGlobalScope('appearance/effect', 'Defer');
412
+ engine.editor.setGlobalScope('appearance/blur', 'Defer');
413
+ engine.editor.setGlobalScope('appearance/shadow', 'Defer');
414
+
415
+ // Content editing
416
+ engine.editor.setGlobalScope('fill/change', 'Defer');
417
+ engine.editor.setGlobalScope('fill/changeType', 'Defer');
418
+ engine.editor.setGlobalScope('stroke/change', 'Defer');
419
+
420
+ // Lifecycle
421
+ engine.editor.setGlobalScope('lifecycle/destroy', 'Defer');
422
+ engine.editor.setGlobalScope('lifecycle/duplicate', 'Defer');
423
+ engine.editor.setGlobalScope('editor/add', 'Defer');
424
+ engine.editor.setGlobalScope('editor/select', 'Defer');
425
+ ```
426
+
427
+ When set to `'Defer'`, the global scope defers control to block-level settings, enabling fine-grained permissions per element.
428
+
429
+ ## Setting Block-Level Scopes
430
+
431
+ Block-level scopes override deferred global settings for specific elements. Use `engine.block.setScopeEnabled()` to enable or disable operations on individual blocks:
432
+
433
+ ```typescript highlight-block-scope
434
+ // Block 1: Disable all layer operations
435
+ engine.block.setScopeEnabled(layerBlock, 'layer/move', false);
436
+ engine.block.setScopeEnabled(layerBlock, 'layer/resize', false);
437
+ engine.block.setScopeEnabled(layerBlock, 'layer/rotate', false);
438
+ engine.block.setScopeEnabled(layerBlock, 'layer/flip', false);
439
+ engine.block.setScopeEnabled(layerBlock, 'layer/crop', false);
440
+ engine.block.setScopeEnabled(layerBlock, 'layer/opacity', false);
441
+ engine.block.setScopeEnabled(layerBlock, 'layer/blendMode', false);
442
+ engine.block.setScopeEnabled(layerBlock, 'layer/visibility', false);
443
+ engine.block.setScopeEnabled(layerBlock, 'layer/clipping', false);
444
+ // Keep other scopes enabled
445
+ engine.block.setScopeEnabled(layerBlock, 'appearance/adjustments', true);
446
+ engine.block.setScopeEnabled(layerBlock, 'appearance/filter', true);
447
+ engine.block.setScopeEnabled(layerBlock, 'fill/change', true);
448
+ engine.block.setScopeEnabled(layerBlock, 'lifecycle/destroy', true);
449
+ engine.block.setScopeEnabled(layerBlock, 'lifecycle/duplicate', true);
450
+ engine.block.setScopeEnabled(layerBlock, 'editor/select', true);
451
+ ```
452
+
453
+ This creates differentiated editing experiences — some elements remain fully editable while others have specific categories locked. In the example above, we configure five blocks with different scope categories:
454
+
455
+ - **Layer Operations Disabled** — Cannot move, resize, rotate, flip, crop, or adjust opacity/blend mode
456
+ - **Appearance Disabled** — Cannot apply adjustments, filters, effects, blur, or shadows
457
+ - **Content Editing Disabled** — Cannot change fills, fill types, or strokes
458
+ - **All Scopes Disabled** — Completely locked with no editing capabilities, including selection
459
+ - **All Scopes Enabled** — Full editing capabilities across all categories
460
+
461
+ ## Checking Scope Permissions
462
+
463
+ Before performing operations, verify if they're allowed using `engine.block.isAllowedByScope()`. This method considers both global and block-level settings:
464
+
465
+ ```typescript highlight-check-scope
466
+ // Check if operations are allowed for each block
467
+ const canMoveLayer = engine.block.isAllowedByScope(layerBlock, 'layer/move');
468
+ const canMoveEnabled = engine.block.isAllowedByScope(
469
+ enabledBlock,
470
+ 'layer/move'
471
+ );
472
+ const canMoveLocked = engine.block.isAllowedByScope(lockedBlock, 'layer/move');
473
+
474
+ console.log(`Layer block - can move: ${canMoveLayer}`); // false
475
+ console.log(`Enabled block - can move: ${canMoveEnabled}`); // true
476
+ console.log(`Locked block - can move: ${canMoveLocked}`); // false
477
+ ```
478
+
479
+ When the global scope is set to `'Deny'`, operations are blocked regardless of block-level settings:
480
+
481
+ ```typescript highlight-deny-global
482
+ // Demonstrate global Deny - would block all operations regardless of block settings
483
+ // Example: engine.editor.setGlobalScope('layer/flip', 'Deny');
484
+ // This would prevent flipping on ALL blocks, even the fully enabled one
485
+ ```
486
+
487
+ ## Common Use Cases
488
+
489
+ The scopes system supports various rule enforcement scenarios:
490
+
491
+ - **Lock content** — Prevent modifications to specific elements like logos or legal text
492
+ - **Define safe zones** — Mark areas where content must remain for proper trimming
493
+ - **Enforce brand guidelines** — Restrict fonts, colors, and styles to approved options
494
+
495
+ For content appropriateness checking, see the [Moderate Content](./rules/moderate-content.md) guide which covers integrating external moderation services.
496
+
497
+ ## API Reference
498
+
499
+ | Method | Category | Purpose |
500
+ | -------------------------------------------------- | -------- | --------------------------------------- |
501
+ | `engine.editor.setGlobalScope(scope, value)` | Global | Set editor-wide scope permission |
502
+ | `engine.editor.getGlobalScope(scope)` | Global | Get current global scope value |
503
+ | `engine.block.setScopeEnabled(id, scope, enabled)` | Block | Enable/disable scope for specific block |
504
+ | `engine.block.isScopeEnabled(id, scope)` | Block | Check if scope is enabled for block |
505
+ | `engine.block.isAllowedByScope(id, scope)` | Block | Check if operation is allowed |
506
+
507
+ ---
508
+
509
+ ## More Resources
510
+
511
+ - **[Vanilla JS/TS Documentation Index](https://img.ly/docs/cesdk/js.md)** - Browse all Vanilla JS/TS documentation
512
+ - **[Complete Documentation](./llms-full.txt.md)** - Full documentation in one file (for LLMs)
513
+ - **[Web Documentation](./js.md)** - Interactive documentation with examples
514
+ - **[Support](mailto:support@img.ly)** - Contact IMG.LY support
@@ -0,0 +1,137 @@
1
+ # CreativeEditor Init Callback Fails Silently
2
+
3
+ The `init` callback passed to `<CreativeEditor>` swallows thrown errors. If any line in `init` throws, all subsequent lines are skipped with **no console error or warning**. This results in a partially-built scene that appears "broken" with no obvious cause.
4
+
5
+ ## Rule
6
+
7
+ During development, wrap sections of the `init` callback in `try/catch` with `console.error` logging. For production, wrap the entire `init` body in a `try/catch` to surface failures.
8
+
9
+ ```tsx
10
+ import { DesignEditorConfig } from './config/plugin';
11
+ import {
12
+ BlurAssetSource,
13
+ ColorPaletteAssetSource,
14
+ CropPresetsAssetSource,
15
+ DemoAssetSources,
16
+ EffectsAssetSource,
17
+ FiltersAssetSource,
18
+ PagePresetsAssetSource,
19
+ StickerAssetSource,
20
+ TextAssetSource,
21
+ TextComponentAssetSource,
22
+ TypefaceAssetSource,
23
+ UploadAssetSources,
24
+ VectorShapeAssetSource
25
+ } from '@cesdk/cesdk-js/plugins';
26
+
27
+ <CreativeEditor
28
+ init={async (cesdk) => {
29
+ try {
30
+ // Add configuration plugin
31
+ await cesdk.addPlugin(new DesignEditorConfig());
32
+
33
+ // Add default asset source plugins
34
+ await cesdk.addPlugin(new BlurAssetSource());
35
+ await cesdk.addPlugin(new ColorPaletteAssetSource());
36
+ await cesdk.addPlugin(new CropPresetsAssetSource());
37
+ await cesdk.addPlugin(new EffectsAssetSource());
38
+ await cesdk.addPlugin(new FiltersAssetSource());
39
+ await cesdk.addPlugin(new PagePresetsAssetSource());
40
+ await cesdk.addPlugin(new StickerAssetSource());
41
+ await cesdk.addPlugin(new TextAssetSource());
42
+ await cesdk.addPlugin(new TextComponentAssetSource());
43
+ await cesdk.addPlugin(new TypefaceAssetSource());
44
+ await cesdk.addPlugin(new VectorShapeAssetSource());
45
+
46
+ // Add demo and upload asset sources
47
+ await cesdk.addPlugin(
48
+ new UploadAssetSources({ include: ['ly.img.image.upload'] })
49
+ );
50
+ await cesdk.addPlugin(
51
+ new DemoAssetSources({
52
+ include: [
53
+ 'ly.img.image.*',
54
+ 'ly.img.templates.blank.*',
55
+ 'ly.img.templates.social.*'
56
+ ]
57
+ })
58
+ );
59
+
60
+ // Create scene
61
+ await cesdk.actions.run('scene.create', {
62
+ page: {
63
+ sourceId: 'ly.img.page.presets',
64
+ assetId: 'ly.img.page.presets.print.iso.a6.landscape'
65
+ }
66
+ });
67
+
68
+ const engine = cesdk.engine;
69
+ const page = engine.block.findByType('page')[0];
70
+
71
+ // ... scene setup ...
72
+ } catch (error) {
73
+ console.error('[CE.SDK init] Failed:', error);
74
+ }
75
+ }}
76
+ />;
77
+ ```
78
+
79
+ ## Symptoms of Silent Init Failure
80
+
81
+ - The editor loads but the scene is empty or partially built
82
+ - Some blocks are missing that should have been created
83
+ - No errors in the browser console
84
+ - The issue is intermittent (depends on which line throws)
85
+
86
+ ## Debugging Strategy
87
+
88
+ Add section markers to isolate which part of `init` is failing:
89
+
90
+ ```ts
91
+ init={async (cesdk) => {
92
+ console.log('[init] Starting');
93
+ try {
94
+ await cesdk.addPlugin(new DesignEditorConfig());
95
+ console.log('[init] Config loaded');
96
+
97
+ // Default asset source plugins
98
+ await cesdk.addPlugin(new BlurAssetSource());
99
+ await cesdk.addPlugin(new ColorPaletteAssetSource());
100
+ await cesdk.addPlugin(new CropPresetsAssetSource());
101
+ await cesdk.addPlugin(new EffectsAssetSource());
102
+ await cesdk.addPlugin(new FiltersAssetSource());
103
+ await cesdk.addPlugin(new PagePresetsAssetSource());
104
+ await cesdk.addPlugin(new StickerAssetSource());
105
+ await cesdk.addPlugin(new TextAssetSource());
106
+ await cesdk.addPlugin(new TextComponentAssetSource());
107
+ await cesdk.addPlugin(new TypefaceAssetSource());
108
+ await cesdk.addPlugin(new VectorShapeAssetSource());
109
+ console.log('[init] Default assets loaded');
110
+
111
+ // Demo and upload sources
112
+ await cesdk.addPlugin(
113
+ new UploadAssetSources({ include: ['ly.img.image.upload'] })
114
+ );
115
+ await cesdk.addPlugin(
116
+ new DemoAssetSources({ include: ['ly.img.image.*'] })
117
+ );
118
+ console.log('[init] Demo assets loaded');
119
+
120
+ // Create scene
121
+ await cesdk.actions.run('scene.create', {
122
+ page: {
123
+ sourceId: 'ly.img.page.presets',
124
+ assetId: 'ly.img.page.presets.print.iso.a6.landscape'
125
+ }
126
+ });
127
+ console.log('[init] Scene created');
128
+
129
+ // ... more setup ...
130
+ console.log('[init] Complete');
131
+ } catch (error) {
132
+ console.error('[init] Failed:', error);
133
+ }
134
+ }}
135
+ ```
136
+
137
+ If `[init] Complete` never appears but no error is logged, the error is being swallowed by the `<CreativeEditor>` component itself. Adding the `try/catch` makes the error visible.