@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,676 @@
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) > [User Interface](./user-interface.md) > [Customization](./user-interface/customization.md) > [Disable or Enable Features](./user-interface/customization/disable-or-enable.md)
4
+
5
+ ---
6
+
7
+ Control which editor features are available to users using the Feature API.
8
+
9
+ ![Disable or Enable Features example showing the CE.SDK editor with feature controls](https://img.ly/docs/cesdk/./assets/browser.hero.webp)
10
+
11
+ > **Reading time:** 10 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-user-interface-customization-disable-or-enable-browser)
17
+ > - [Open in StackBlitz](https://stackblitz.com/github/imgly/cesdk-web-examples/tree/v$UBQ_VERSION$/guides-user-interface-customization-disable-or-enable-browser)
18
+ > - [Live demo](https://img.ly/docs/cesdk/examples/guides-user-interface-customization-disable-or-enable-browser/)
19
+
20
+ The Feature API provides global control over feature visibility throughout the editor. Use it to hide delete buttons from certain users, disable crop controls based on context, or conditionally enable features based on user roles or selection state. Unlike the Component Order API which targets specific components in specific areas, the Feature API affects features everywhere in the editor at once.
21
+
22
+ ```typescript file=@cesdk_web_examples/guides-user-interface-customization-disable-or-enable-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
+
43
+ /**
44
+ * Disable or Enable Features Example
45
+ *
46
+ * This example demonstrates how to use CE.SDK's Feature API to:
47
+ * - Enable and disable features with simple toggles
48
+ * - Use glob patterns for bulk operations
49
+ * - Create custom predicates based on selection
50
+ * - Extend default predicates with additional conditions
51
+ * - Check feature status and discover available features
52
+ */
53
+ class Example implements EditorPlugin {
54
+ name = packageJson.name;
55
+ version = packageJson.version;
56
+
57
+ async initialize({ cesdk }: EditorPluginContext): Promise<void> {
58
+ if (!cesdk) {
59
+ throw new Error('CE.SDK instance is required for this plugin');
60
+ }
61
+ await cesdk.addPlugin(new DesignEditorConfig());
62
+
63
+ // Add asset source plugins
64
+ await cesdk.addPlugin(new BlurAssetSource());
65
+ await cesdk.addPlugin(new ColorPaletteAssetSource());
66
+ await cesdk.addPlugin(new CropPresetsAssetSource());
67
+ await cesdk.addPlugin(
68
+ new UploadAssetSources({ include: ['ly.img.image.upload'] })
69
+ );
70
+ await cesdk.addPlugin(
71
+ new DemoAssetSources({
72
+ include: [
73
+ 'ly.img.templates.blank.*',
74
+ 'ly.img.templates.presentation.*',
75
+ 'ly.img.templates.print.*',
76
+ 'ly.img.templates.social.*',
77
+ 'ly.img.image.*'
78
+ ]
79
+ })
80
+ );
81
+ await cesdk.addPlugin(new EffectsAssetSource());
82
+ await cesdk.addPlugin(new FiltersAssetSource());
83
+ await cesdk.addPlugin(new PagePresetsAssetSource());
84
+ await cesdk.addPlugin(new StickerAssetSource());
85
+ await cesdk.addPlugin(new TextAssetSource());
86
+ await cesdk.addPlugin(new TextComponentAssetSource());
87
+ await cesdk.addPlugin(new TypefaceAssetSource());
88
+ await cesdk.addPlugin(new VectorShapeAssetSource());
89
+
90
+ await cesdk.actions.run('scene.create', {
91
+ page: {
92
+ sourceId: 'ly.img.page.presets',
93
+ assetId: 'ly.img.page.presets.print.iso.a6.landscape'
94
+ }
95
+ });
96
+
97
+ const engine = cesdk.engine;
98
+
99
+ // Enable delete feature with default predicate
100
+ cesdk.feature.enable('ly.img.delete');
101
+
102
+ // Enable multiple features at once
103
+ cesdk.feature.enable(['ly.img.duplicate', 'ly.img.group']);
104
+
105
+ // Disable crop feature
106
+ cesdk.feature.disable('ly.img.crop');
107
+
108
+ // Disable multiple features at once
109
+ cesdk.feature.disable(['ly.img.notifications', 'ly.img.preview']);
110
+
111
+ // Disable all transform features using glob pattern
112
+ cesdk.feature.disable('ly.img.transform*');
113
+
114
+ // Enable all video features using glob pattern
115
+ cesdk.feature.enable('ly.img.video*');
116
+
117
+ // Set feature with boolean (terminal predicate)
118
+ cesdk.feature.set('ly.img.fill', true);
119
+
120
+ // Set feature with custom predicate based on selection
121
+ cesdk.feature.set('ly.img.duplicate', ({ engine }) => {
122
+ return engine.block.findAllSelected().length > 0;
123
+ });
124
+
125
+ // Extend default predicate with additional condition
126
+ cesdk.feature.set('ly.img.delete', ({ defaultPredicate, engine }) => {
127
+ // Only allow delete when a block is selected
128
+ return defaultPredicate() && engine.block.findAllSelected().length > 0;
129
+ });
130
+
131
+ // Chain multiple predicates using isPreviousEnable
132
+ cesdk.feature.set('ly.img.replace', ({ isPreviousEnable, engine }) => {
133
+ const previousResult = isPreviousEnable();
134
+ const hasSelection = engine.block.findAllSelected().length > 0;
135
+ return previousResult && hasSelection;
136
+ });
137
+
138
+ // Check if a feature is enabled
139
+ const isDeleteEnabled = cesdk.feature.isEnabled('ly.img.delete');
140
+ console.log('Delete feature enabled:', isDeleteEnabled);
141
+
142
+ // Check if all video features are enabled (returns true only if ALL match)
143
+ const allVideoEnabled = cesdk.feature.isEnabled('ly.img.video*');
144
+ console.log('All video features enabled:', allVideoEnabled);
145
+
146
+ // List all registered feature IDs
147
+ const allFeatures = cesdk.feature.list();
148
+ console.log('All features:', allFeatures.slice(0, 10), '...');
149
+
150
+ // List features matching a pattern
151
+ const navigationFeatures = cesdk.feature.list({
152
+ matcher: 'ly.img.navigation*'
153
+ });
154
+ console.log('Navigation features:', navigationFeatures);
155
+
156
+ cesdk.ui.insertOrderComponent(
157
+ { in: 'ly.img.navigation.bar', position: 'end' },
158
+ {
159
+ id: 'ly.img.actions.navigationBar',
160
+ children: [
161
+ {
162
+ id: 'ly.img.action.navigationBar',
163
+ key: 'toggle-dock',
164
+ label: 'Toggle Dock',
165
+ onClick: () => {
166
+ const enabled = cesdk.feature.isEnabled('ly.img.dock');
167
+ if (enabled) {
168
+ cesdk.feature.disable('ly.img.dock');
169
+ console.log('Dock feature disabled');
170
+ } else {
171
+ cesdk.feature.enable('ly.img.dock');
172
+ console.log('Dock feature enabled');
173
+ }
174
+ }
175
+ },
176
+ {
177
+ id: 'ly.img.action.navigationBar',
178
+ key: 'toggle-crop',
179
+ label: 'Toggle Crop Features',
180
+ icon: '@imgly/Crop',
181
+ onClick: () => {
182
+ const enabled = cesdk.feature.isEnabled('ly.img.crop');
183
+ if (enabled) {
184
+ cesdk.feature.disable('ly.img.crop*');
185
+ console.log('All crop features disabled');
186
+ } else {
187
+ cesdk.feature.enable('ly.img.crop*');
188
+ console.log('All crop features enabled');
189
+ }
190
+ }
191
+ },
192
+ {
193
+ id: 'ly.img.action.navigationBar',
194
+ key: 'log-status',
195
+ label: 'Log Feature Status',
196
+ icon: '@imgly/Info',
197
+ onClick: () => {
198
+ console.log('=== Feature Status ===');
199
+ console.log('Dock:', cesdk.feature.isEnabled('ly.img.dock'));
200
+ console.log(
201
+ 'Duplicate:',
202
+ cesdk.feature.isEnabled('ly.img.duplicate')
203
+ );
204
+ console.log('Crop:', cesdk.feature.isEnabled('ly.img.crop'));
205
+ console.log('Fill:', cesdk.feature.isEnabled('ly.img.fill'));
206
+ console.log(
207
+ 'Navigation features:',
208
+ cesdk.feature.list({ matcher: 'ly.img.navigation*' })
209
+ );
210
+ }
211
+ }
212
+ ]
213
+ }
214
+ );
215
+
216
+ const page = engine.block.findByType('page')[0];
217
+ const pageWidth = engine.block.getWidth(page);
218
+ const pageHeight = engine.block.getHeight(page);
219
+
220
+ const gradientFill = engine.block.createFill('gradient/linear');
221
+ engine.block.setFill(page, gradientFill);
222
+ engine.block.setGradientColorStops(gradientFill, 'fill/gradient/colors', [
223
+ { color: { r: 0.99, g: 0.98, b: 0.97, a: 1 }, stop: 0 },
224
+ { color: { r: 0.97, g: 0.96, b: 0.94, a: 1 }, stop: 1 }
225
+ ]);
226
+ engine.block.setFloat(gradientFill, 'fill/gradient/linear/startPointX', 0);
227
+ engine.block.setFloat(gradientFill, 'fill/gradient/linear/startPointY', 0);
228
+ engine.block.setFloat(gradientFill, 'fill/gradient/linear/endPointX', 1);
229
+ engine.block.setFloat(gradientFill, 'fill/gradient/linear/endPointY', 1);
230
+
231
+ const titleBlock = engine.block.create('text');
232
+ engine.block.appendChild(page, titleBlock);
233
+ engine.block.replaceText(titleBlock, 'Disable or Enable Features');
234
+ engine.block.setTextFontSize(titleBlock, 24);
235
+ engine.block.setTextColor(titleBlock, { r: 0.25, g: 0.22, b: 0.2, a: 1 });
236
+ engine.block.setEnum(titleBlock, 'text/horizontalAlignment', 'Center');
237
+ engine.block.setWidth(titleBlock, pageWidth * 0.8);
238
+ engine.block.setHeightMode(titleBlock, 'Auto');
239
+ engine.block.setPositionX(titleBlock, pageWidth * 0.1);
240
+ engine.block.setPositionY(titleBlock, pageHeight * 0.4);
241
+
242
+ const subtitleBlock = engine.block.create('text');
243
+ engine.block.appendChild(page, subtitleBlock);
244
+ engine.block.replaceText(subtitleBlock, 'IMG.LY');
245
+ engine.block.setTextFontSize(subtitleBlock, 12);
246
+ engine.block.setTextColor(subtitleBlock, {
247
+ r: 0.65,
248
+ g: 0.45,
249
+ b: 0.4,
250
+ a: 1
251
+ });
252
+ engine.block.setEnum(subtitleBlock, 'text/horizontalAlignment', 'Center');
253
+ engine.block.setWidth(subtitleBlock, pageWidth * 0.8);
254
+ engine.block.setHeightMode(subtitleBlock, 'Auto');
255
+ engine.block.setPositionX(subtitleBlock, pageWidth * 0.1);
256
+ engine.block.setPositionY(subtitleBlock, pageHeight * 0.52);
257
+
258
+ engine.block.setSelected(titleBlock, true);
259
+
260
+ console.log('Disable or Enable Features example loaded successfully!');
261
+ }
262
+ }
263
+
264
+ export default Example;
265
+ ```
266
+
267
+ This guide covers how to enable and disable features with simple toggles, create custom predicates for conditional feature access, use glob patterns for bulk operations, and debug feature configurations.
268
+
269
+ ## Feature API Methods
270
+
271
+ The following table summarizes the main Feature API methods and when to use each:
272
+
273
+ | Method | Use Case |
274
+ | --------------------------- | ----------------------------------------------------- |
275
+ | `cesdk.feature.enable()` | Enable features with their default predicates |
276
+ | `cesdk.feature.disable()` | Disable features (hide from UI) |
277
+ | `cesdk.feature.set()` | Set features with custom predicates or boolean values |
278
+ | `cesdk.feature.isEnabled()` | Check if a feature is currently enabled |
279
+ | `cesdk.feature.list()` | Discover registered feature IDs |
280
+ | `cesdk.feature.get()` | Get predicate chain for debugging |
281
+
282
+ ## Enable Features
283
+
284
+ Use `cesdk.feature.enable()` to activate a feature with its default predicate behavior. The method accepts a single feature ID, an array of IDs, or a glob pattern.
285
+
286
+ ```typescript highlight-enable-feature
287
+ // Enable delete feature with default predicate
288
+ cesdk.feature.enable('ly.img.delete');
289
+ ```
290
+
291
+ You can enable multiple features at once by passing an array:
292
+
293
+ ```typescript highlight-enable-multiple
294
+ // Enable multiple features at once
295
+ cesdk.feature.enable(['ly.img.duplicate', 'ly.img.group']);
296
+ ```
297
+
298
+ Glob patterns allow you to enable all features matching a pattern. The `*` wildcard matches any sequence of characters:
299
+
300
+ ```typescript highlight-glob-enable
301
+ // Enable all video features using glob pattern
302
+ cesdk.feature.enable('ly.img.video*');
303
+ ```
304
+
305
+ ## Disable Features
306
+
307
+ Use `cesdk.feature.disable()` to hide features from the UI. Like `enable()`, it accepts single IDs, arrays, or glob patterns.
308
+
309
+ ```typescript highlight-disable-feature
310
+ // Disable crop feature
311
+ cesdk.feature.disable('ly.img.crop');
312
+ ```
313
+
314
+ Disable multiple features at once by passing an array:
315
+
316
+ ```typescript highlight-disable-multiple
317
+ // Disable multiple features at once
318
+ cesdk.feature.disable(['ly.img.notifications', 'ly.img.preview']);
319
+ ```
320
+
321
+ Use glob patterns to disable all features matching a pattern:
322
+
323
+ ```typescript highlight-glob-disable
324
+ // Disable all transform features using glob pattern
325
+ cesdk.feature.disable('ly.img.transform*');
326
+ ```
327
+
328
+ ## Custom Predicates
329
+
330
+ The `cesdk.feature.set()` method allows you to configure features with custom logic. You can pass a boolean value or a function predicate.
331
+
332
+ ### Boolean Predicates
333
+
334
+ Passing `true` or `false` creates a terminal predicate that overrides any `enable()` or `disable()` calls:
335
+
336
+ ```typescript highlight-set-boolean
337
+ // Set feature with boolean (terminal predicate)
338
+ cesdk.feature.set('ly.img.fill', true);
339
+ ```
340
+
341
+ > **Note:** Boolean predicates are terminal. Once you use `set()` with a boolean, subsequent `enable()` or `disable()` calls won't affect that feature because the boolean predicate evaluates first.
342
+
343
+ ### Function Predicates
344
+
345
+ Function predicates receive a context object with `engine`, `isPreviousEnable()`, and `defaultPredicate()`. Use them for dynamic conditions based on selection or other state:
346
+
347
+ ```typescript highlight-set-predicate
348
+ // Set feature with custom predicate based on selection
349
+ cesdk.feature.set('ly.img.duplicate', ({ engine }) => {
350
+ return engine.block.findAllSelected().length > 0;
351
+ });
352
+ ```
353
+
354
+ This predicate enables the duplicate feature only when at least one block is selected.
355
+
356
+ ### Extending Default Behavior
357
+
358
+ You can build on a feature's default predicate using `defaultPredicate()`. This lets you add conditions while preserving the built-in logic:
359
+
360
+ ```typescript highlight-extend-default
361
+ // Extend default predicate with additional condition
362
+ cesdk.feature.set('ly.img.delete', ({ defaultPredicate, engine }) => {
363
+ // Only allow delete when a block is selected
364
+ return defaultPredicate() && engine.block.findAllSelected().length > 0;
365
+ });
366
+ ```
367
+
368
+ ### Layering Conditions
369
+
370
+ Use `isPreviousEnable()` to chain with previously registered predicates. This enables layered conditions from multiple `set()` calls:
371
+
372
+ ```typescript highlight-chain-predicates
373
+ // Chain multiple predicates using isPreviousEnable
374
+ cesdk.feature.set('ly.img.replace', ({ isPreviousEnable, engine }) => {
375
+ const previousResult = isPreviousEnable();
376
+ const hasSelection = engine.block.findAllSelected().length > 0;
377
+ return previousResult && hasSelection;
378
+ });
379
+ ```
380
+
381
+ ## Evaluation Order
382
+
383
+ When multiple predicates are registered for a feature, they evaluate in this order:
384
+
385
+ 1. Most recent `set()` predicates run first
386
+ 2. Older `set()` predicates in reverse chronological order
387
+ 3. `enable()`/`disable()` state runs last
388
+
389
+ Boolean predicates are terminal and immediately return their value without continuing the chain. Function predicates control whether to continue by calling `isPreviousEnable()` or returning directly.
390
+
391
+ ## Glob Patterns
392
+
393
+ All main Feature API methods support glob pattern matching for bulk operations. The `*` wildcard matches any sequence of characters within a segment.
394
+
395
+ Supported methods:
396
+
397
+ - `cesdk.feature.enable('ly.img.video.*')` - Enable all video features
398
+ - `cesdk.feature.disable('ly.img.crop.*')` - Disable all crop features
399
+ - `cesdk.feature.set('ly.img.navigation.*', predicate)` - Set all navigation features
400
+ - `cesdk.feature.isEnabled('ly.img.video.*')` - Check if ALL matching features are enabled
401
+ - `cesdk.feature.list({ matcher: 'ly.img.video.*' })` - List matching features
402
+
403
+ ## Check Feature Status
404
+
405
+ Use `cesdk.feature.isEnabled()` to query if a feature is currently enabled:
406
+
407
+ ```typescript highlight-check-enabled
408
+ // Check if a feature is enabled
409
+ const isDeleteEnabled = cesdk.feature.isEnabled('ly.img.delete');
410
+ console.log('Delete feature enabled:', isDeleteEnabled);
411
+ ```
412
+
413
+ When using a glob pattern with `isEnabled()`, it returns `true` only if all matching features are enabled:
414
+
415
+ ```typescript highlight-check-glob
416
+ // Check if all video features are enabled (returns true only if ALL match)
417
+ const allVideoEnabled = cesdk.feature.isEnabled('ly.img.video*');
418
+ console.log('All video features enabled:', allVideoEnabled);
419
+ ```
420
+
421
+ ## Discover Features
422
+
423
+ Use `cesdk.feature.list()` to get all registered feature IDs. You can filter with the optional `matcher` parameter:
424
+
425
+ ```typescript highlight-list-features
426
+ // List all registered feature IDs
427
+ const allFeatures = cesdk.feature.list();
428
+ console.log('All features:', allFeatures.slice(0, 10), '...');
429
+ ```
430
+
431
+ Filter the list with a glob pattern:
432
+
433
+ ```typescript highlight-list-filtered
434
+ // List features matching a pattern
435
+ const navigationFeatures = cesdk.feature.list({
436
+ matcher: 'ly.img.navigation*'
437
+ });
438
+ console.log('Navigation features:', navigationFeatures);
439
+ ```
440
+
441
+ ## Built-in Features
442
+
443
+ CE.SDK includes many built-in features organized by category:
444
+
445
+ ### Navigation Features
446
+
447
+ | Feature ID | Description |
448
+ | ------------------------------------ | --------------------------------------------------- |
449
+ | `ly.img.navigation` | Parent key: enables all navigation child features |
450
+ | `ly.img.navigation.bar` | Controls visibility of the Navigation Bar |
451
+ | `ly.img.navigation.back` | Controls visibility of the "Back" button |
452
+ | `ly.img.navigation.close` | Controls visibility of the "Close" button |
453
+ | `ly.img.navigation.undoRedo` | Controls visibility of "Undo" and "Redo" buttons |
454
+ | `ly.img.navigation.zoom` | Controls visibility of zoom controls |
455
+ | `ly.img.navigation.actions` | Controls visibility of navigation actions |
456
+ | `ly.img.navigation.documentSettings` | Controls visibility of the document settings button |
457
+
458
+ ### Inspector Features
459
+
460
+ | Feature ID | Description |
461
+ | ------------------------- | ------------------------------------------------ |
462
+ | `ly.img.inspector.bar` | Controls visibility of the Inspector Bar |
463
+ | `ly.img.inspector.panel` | Controls visibility of the Advanced Inspector |
464
+ | `ly.img.inspector.toggle` | Controls presence of the Inspector Toggle button |
465
+
466
+ ### Canvas Features
467
+
468
+ | Feature ID | Description |
469
+ | -------------------- | --------------------------------------------- |
470
+ | `ly.img.canvas` | Parent key: enables all canvas child features |
471
+ | `ly.img.canvas.bar` | Controls visibility of the Canvas Bar |
472
+ | `ly.img.canvas.menu` | Controls visibility of the Canvas Menu |
473
+
474
+ ### Editing Features
475
+
476
+ | Feature ID | Description |
477
+ | ---------------------------- | ---------------------------------------------------------------------------------- |
478
+ | `ly.img.delete` | Controls ability to delete blocks |
479
+ | `ly.img.duplicate` | Controls ability to duplicate blocks |
480
+ | `ly.img.replace` | Controls presence of the Replace button (parent flag for all replace sub-features) |
481
+ | `ly.img.replace.fill` | Controls replacing image/video fill content |
482
+ | `ly.img.replace.shape` | Controls replacing block shape |
483
+ | `ly.img.replace.audio` | Controls replacing audio block content |
484
+ | `ly.img.group` | Controls grouping functionality |
485
+ | `ly.img.group.create` | Controls grouping multiple selected blocks |
486
+ | `ly.img.group.ungroup` | Controls dissolving a group |
487
+ | `ly.img.group.enter` | Controls entering a group for editing |
488
+ | `ly.img.group.select` | Controls selecting the parent group |
489
+ | `ly.img.combine` | Controls boolean/combine operations |
490
+ | `ly.img.combine.union` | Controls the Union boolean operation |
491
+ | `ly.img.combine.subtract` | Controls the Subtract boolean operation |
492
+ | `ly.img.combine.intersect` | Controls the Intersect boolean operation |
493
+ | `ly.img.combine.exclude` | Controls the Exclude (XOR) boolean operation |
494
+ | `ly.img.position` | Controls the position/arrange/align panel |
495
+ | `ly.img.position.arrange` | Controls bring forward/backward/front/back and pin |
496
+ | `ly.img.position.align` | Controls alignment (left, right, center, top, bottom) |
497
+ | `ly.img.position.distribute` | Controls distribute vertically/horizontally |
498
+ | `ly.img.placeholder` | Controls Placeholder toggle visibility in Inspector |
499
+
500
+ ### Video Features
501
+
502
+ | Feature ID | Description |
503
+ | --------------------------------------------- | -------------------------------------------- |
504
+ | `ly.img.video` | Parent key: enables all video child features |
505
+ | `ly.img.video.timeline` | Controls visibility of the Video Timeline |
506
+ | `ly.img.video.timeline.clips` | Controls visibility of video clips track |
507
+ | `ly.img.video.timeline.overlays` | Controls visibility of overlays track |
508
+ | `ly.img.video.timeline.audio` | Controls visibility of audio track |
509
+ | `ly.img.video.timeline.addClip` | Controls ability to add clips |
510
+ | `ly.img.video.timeline.controls` | Controls base video control UI |
511
+ | `ly.img.video.timeline.controls.toggle` | Controls timeline collapse/expand toggle |
512
+ | `ly.img.video.timeline.controls.background` | Controls background color controls |
513
+ | `ly.img.video.timeline.controls.playback` | Controls play/pause and timestamp |
514
+ | `ly.img.video.timeline.controls.loop` | Controls loop toggle |
515
+ | `ly.img.video.timeline.controls.split` | Controls split clip control |
516
+ | `ly.img.video.timeline.controls.timelineZoom` | Controls timeline zoom controls |
517
+ | `ly.img.video.caption` | Controls video captions |
518
+
519
+ ### Text Features
520
+
521
+ | Feature ID | Description |
522
+ | ---------------------------- | ------------------------------------------------- |
523
+ | `ly.img.text` | Parent key: enables all text child features |
524
+ | `ly.img.text.edit` | Controls presence of the Edit button |
525
+ | `ly.img.text.typeface` | Controls typeface dropdown |
526
+ | `ly.img.text.fontSize` | Controls font size input |
527
+ | `ly.img.text.fontStyle` | Controls bold/italic toggles |
528
+ | `ly.img.text.decoration` | Controls underline/strikethrough toggles |
529
+ | `ly.img.text.alignment` | Controls text alignment |
530
+ | `ly.img.text.list` | Parent key: enables all list style child features |
531
+ | `ly.img.text.list.unordered` | Controls bulleted list |
532
+ | `ly.img.text.list.ordered` | Controls numbered list |
533
+ | `ly.img.text.advanced` | Controls advanced text options |
534
+ | `ly.img.text.background` | Controls text background |
535
+
536
+ ### Effects Features
537
+
538
+ | Feature ID | Description |
539
+ | ------------------------------ | --------------------------------------------- |
540
+ | `ly.img.fill` | Controls Fill button and Fill Panel |
541
+ | `ly.img.fill.color` | Controls solid and gradient fill controls |
542
+ | `ly.img.fill.image` | Controls image fill controls and crop |
543
+ | `ly.img.fill.video` | Controls video fill, trim, volume, speed |
544
+ | `ly.img.stroke` | Controls Stroke controls |
545
+ | `ly.img.stroke.color` | Controls stroke color picker |
546
+ | `ly.img.stroke.width` | Controls stroke width input |
547
+ | `ly.img.stroke.style` | Controls stroke style (dash) selector |
548
+ | `ly.img.stroke.position` | Controls stroke position (inner/center/outer) |
549
+ | `ly.img.stroke.cornerGeometry` | Controls stroke corner join geometry |
550
+ | `ly.img.adjustment` | Controls Adjustments button |
551
+ | `ly.img.filter` | Controls Filter button |
552
+ | `ly.img.effect` | Controls Effect button |
553
+ | `ly.img.blur` | Controls Blur button |
554
+ | `ly.img.shadow` | Controls Shadow button |
555
+ | `ly.img.shadow.color` | Controls shadow color picker |
556
+ | `ly.img.shadow.offset` | Controls shadow angle and distance |
557
+ | `ly.img.shadow.blur` | Controls shadow blur radius |
558
+ | `ly.img.crop` | Controls Crop button |
559
+
560
+ ### Shape Options Features
561
+
562
+ | Feature ID | Description |
563
+ | ------------------------------------ | ----------------------------------------------------- |
564
+ | `ly.img.shape.options` | Controls the shape-specific options panel |
565
+ | `ly.img.shape.edit` | Controls the Edit Path button for vector path editing |
566
+ | `ly.img.shape.options.cornerRadius` | Controls corner radius (rect/polygon shapes) |
567
+ | `ly.img.shape.options.points` | Controls star point count |
568
+ | `ly.img.shape.options.innerDiameter` | Controls star inner diameter |
569
+ | `ly.img.shape.options.sides` | Controls polygon side count |
570
+ | `ly.img.shape.options.lineWidth` | Controls line stroke width |
571
+
572
+ ### Vector Edit Features
573
+
574
+ | Feature ID | Description |
575
+ | ------------------------------ | -------------------------------------------------- |
576
+ | `ly.img.vectorEdit` | Parent key: enables all vector edit child features |
577
+ | `ly.img.vectorEdit.moveMode` | Controls the move/select mode toggle |
578
+ | `ly.img.vectorEdit.addMode` | Controls the add node mode toggle |
579
+ | `ly.img.vectorEdit.deleteMode` | Controls the delete node mode toggle |
580
+ | `ly.img.vectorEdit.bendMode` | Controls the bend mode toggle |
581
+ | `ly.img.vectorEdit.mirrorMode` | Controls the handle mirror mode dropdown |
582
+ | `ly.img.vectorEdit.done` | Controls the exit vector edit button |
583
+
584
+ ### Transform Features
585
+
586
+ | Feature ID | Description |
587
+ | --------------------------- | ------------------------------------------------ |
588
+ | `ly.img.transform` | Parent key: enables all transform child features |
589
+ | `ly.img.transform.position` | Controls X/Y position controls |
590
+ | `ly.img.transform.size` | Controls width/height controls |
591
+ | `ly.img.transform.rotation` | Controls rotation controls |
592
+ | `ly.img.transform.flip` | Controls flip controls |
593
+
594
+ ### Page Features
595
+
596
+ | Feature ID | Description |
597
+ | ------------------------- | --------------------------------------------------------------- |
598
+ | `ly.img.page` | Parent key: enables all page child features |
599
+ | `ly.img.page.add` | Controls Add Page button |
600
+ | `ly.img.page.move` | Controls page move buttons |
601
+ | `ly.img.page.resize` | Controls Resize button |
602
+ | `ly.img.page.settings` | Controls read-only page dimensions, unit and resolution display |
603
+ | `ly.img.page.bleedMargin` | Controls bleed margin settings |
604
+ | `ly.img.page.clipContent` | Controls clip content on/off toggle |
605
+
606
+ ### Scene Features
607
+
608
+ | Feature ID | Description |
609
+ | -------------------------------- | --------------------------------------------------- |
610
+ | `ly.img.scene.layout` | Parent key: enables all scene layout child features |
611
+ | `ly.img.scene.layout.horizontal` | Controls horizontal layout toggle |
612
+ | `ly.img.scene.layout.vertical` | Controls vertical layout toggle |
613
+ | `ly.img.scene.layout.free` | Controls free layout toggle |
614
+
615
+ ### Other Features
616
+
617
+ | Feature ID | Description |
618
+ | --------------------------- | ------------------------------- |
619
+ | `ly.img.dock` | Controls visibility of the Dock |
620
+ | `ly.img.library.panel` | Controls Asset Library panel |
621
+ | `ly.img.preview` | Controls Preview button |
622
+ | `ly.img.notifications` | Controls notification toasts |
623
+ | `ly.img.notifications.undo` | Controls undo notifications |
624
+ | `ly.img.notifications.redo` | Controls redo notifications |
625
+
626
+ ## Troubleshooting
627
+
628
+ ### Feature Not Visible
629
+
630
+ If a feature doesn't appear in the UI after calling `enable()`:
631
+
632
+ 1. Check if a `set()` call with a boolean is overriding it. Boolean predicates are terminal and take precedence.
633
+ 2. Verify the feature ID spelling matches exactly.
634
+ 3. Confirm the feature is relevant for the current context.
635
+
636
+ ### `disable()` Not Working
637
+
638
+ If `disable()` doesn't hide a feature:
639
+
640
+ 1. Check if a `set()` predicate exists for that feature. The `set()` predicates evaluate before `disable()`.
641
+ 2. Use `cesdk.feature.get()` to inspect the predicate chain.
642
+
643
+ ### Glob Pattern Not Matching
644
+
645
+ If a glob pattern doesn't affect expected features:
646
+
647
+ 1. Verify the pattern syntax is correct.
648
+ 2. Use `cesdk.feature.list({ matcher: 'your.pattern.*' })` to see which features match.
649
+ 3. Check that features are registered before applying the pattern.
650
+
651
+ ## API Reference
652
+
653
+ | Method | Signature | Purpose |
654
+ | --------------------------- | ----------------------------------------------------------------------- | ---------------------------------------- |
655
+ | `cesdk.feature.enable()` | `enable(featureId: FeatureId \| FeatureId[]): void` | Enable features with default predicates |
656
+ | `cesdk.feature.disable()` | `disable(featureId: FeatureId \| FeatureId[]): void` | Disable features |
657
+ | `cesdk.feature.set()` | `set(featureId: FeatureId, enabled: boolean \| FeaturePredicate): void` | Set feature state with custom predicates |
658
+ | `cesdk.feature.isEnabled()` | `isEnabled(featureId: FeatureId, context?: FeatureContext): boolean` | Check if feature is enabled |
659
+ | `cesdk.feature.list()` | `list(options?: { matcher?: string }): FeatureId[]` | List registered feature IDs |
660
+ | `cesdk.feature.get()` | `get(featureId: FeatureId): FeaturePredicate[] \| undefined` | Get predicate chain for debugging |
661
+
662
+ ## Next Steps
663
+
664
+ - [Show/Hide Components](./user-interface/customization/quick-start/show-hide-components.md) - Hide UI elements without disabling functionality
665
+ - [Navigation Bar](./user-interface/customization/navigation-bar.md) - Customize navigation bar buttons
666
+ - [Canvas Menu](./user-interface/customization/canvas-menu.md) - Customize the canvas context menu
667
+ - [Inspector Bar](./user-interface/customization/inspector-bar.md) - Customize the inspector bar
668
+
669
+ ---
670
+
671
+ ## More Resources
672
+
673
+ - **[Vanilla JS/TS Documentation Index](https://img.ly/docs/cesdk/js.md)** - Browse all Vanilla JS/TS documentation
674
+ - **[Complete Documentation](./llms-full.txt.md)** - Full documentation in one file (for LLMs)
675
+ - **[Web Documentation](./js.md)** - Interactive documentation with examples
676
+ - **[Support](mailto:support@img.ly)** - Contact IMG.LY support