@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,399 @@
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) > [Dock](./user-interface/customization/dock.md)
4
+
5
+ ---
6
+
7
+ The dock is a sidebar containing buttons that open asset library panels. You
8
+ can position it on the left, right, or bottom of the editor. By default it
9
+ appears on the left side. This guide covers dock positioning, appearance
10
+ settings, edit mode contexts, and the asset source relationship.
11
+
12
+ ![Dock customization example showing large icons, hidden labels, and a custom settings button](https://img.ly/docs/cesdk/./assets/browser.hero.webp)
13
+
14
+ > **Reading time:** 10 minutes
15
+ >
16
+ > **Resources:**
17
+ >
18
+ > - [Download examples](https://github.com/imgly/cesdk-web-examples/archive/refs/tags/release-$UBQ_VERSION$.zip)
19
+ > - [View source on GitHub](https://github.com/imgly/cesdk-web-examples)
20
+ > - [Open in StackBlitz](https://stackblitz.com/github/imgly/cesdk-web-examples)
21
+ > - [Live demo](https://img.ly/docs/cesdk/examples/guides-user-interface-customization-dock-browser/)
22
+
23
+ For adding and configuring dock buttons, see [Add Dock Buttons](./user-interface/customization/quick-start/add-dock-buttons.md). For general component manipulation (reordering, inserting, removing), see the [Component Order API Reference](./user-interface/customization/reference/component-order-api.md).
24
+
25
+ ```typescript file=@cesdk_web_examples/guides-user-interface-customization-dock-browser/browser.ts reference-only
26
+ import type { EditorPlugin, EditorPluginContext } from '@cesdk/cesdk-js';
27
+
28
+ import {
29
+ BlurAssetSource,
30
+ ColorPaletteAssetSource,
31
+ CropPresetsAssetSource,
32
+ DemoAssetSources,
33
+ EffectsAssetSource,
34
+ FiltersAssetSource,
35
+ PagePresetsAssetSource,
36
+ StickerAssetSource,
37
+ TextAssetSource,
38
+ TextComponentAssetSource,
39
+ TypefaceAssetSource,
40
+ UploadAssetSources,
41
+ VectorShapeAssetSource
42
+ } from '@cesdk/cesdk-js/plugins';
43
+ import { DesignEditorConfig } from './design-editor/plugin';
44
+ import packageJson from './package.json';
45
+
46
+ class Example implements EditorPlugin {
47
+ name = packageJson.name;
48
+ version = packageJson.version;
49
+
50
+ async initialize({ cesdk }: EditorPluginContext): Promise<void> {
51
+ if (!cesdk) {
52
+ throw new Error('CE.SDK instance is required for this plugin');
53
+ }
54
+ await cesdk.addPlugin(new DesignEditorConfig());
55
+
56
+ // Add asset source plugins
57
+ await cesdk.addPlugin(new BlurAssetSource());
58
+ await cesdk.addPlugin(new ColorPaletteAssetSource());
59
+ await cesdk.addPlugin(new CropPresetsAssetSource());
60
+ await cesdk.addPlugin(
61
+ new UploadAssetSources({ include: ['ly.img.image.upload'] })
62
+ );
63
+ await cesdk.addPlugin(
64
+ new DemoAssetSources({
65
+ include: [
66
+ 'ly.img.templates.blank.*',
67
+ 'ly.img.templates.presentation.*',
68
+ 'ly.img.templates.print.*',
69
+ 'ly.img.templates.social.*',
70
+ 'ly.img.image.*'
71
+ ]
72
+ })
73
+ );
74
+ await cesdk.addPlugin(new EffectsAssetSource());
75
+ await cesdk.addPlugin(new FiltersAssetSource());
76
+ await cesdk.addPlugin(new PagePresetsAssetSource());
77
+ await cesdk.addPlugin(new StickerAssetSource());
78
+ await cesdk.addPlugin(new TextAssetSource());
79
+ await cesdk.addPlugin(new TextComponentAssetSource());
80
+ await cesdk.addPlugin(new TypefaceAssetSource());
81
+ await cesdk.addPlugin(new VectorShapeAssetSource());
82
+
83
+ await cesdk.actions.run('scene.create', {
84
+ page: {
85
+ sourceId: 'ly.img.page.presets',
86
+ assetId: 'ly.img.page.presets.print.iso.a6.landscape'
87
+ }
88
+ });
89
+
90
+ const engine = cesdk.engine;
91
+ const page = engine.block.findByType('page')[0];
92
+ const pageWidth = engine.block.getWidth(page);
93
+ const pageHeight = engine.block.getHeight(page);
94
+
95
+ // Create gradient background
96
+ const gradientFill = engine.block.createFill('gradient/linear');
97
+ engine.block.setGradientColorStops(gradientFill, 'fill/gradient/colors', [
98
+ { color: { r: 0.18, g: 0.42, b: 0.71, a: 1 }, stop: 0 },
99
+ { color: { r: 0.31, g: 0.58, b: 0.8, a: 1 }, stop: 0.5 },
100
+ { color: { r: 0.13, g: 0.7, b: 0.67, a: 1 }, stop: 1 }
101
+ ]);
102
+ engine.block.setFloat(gradientFill, 'fill/gradient/linear/startPointX', 0);
103
+ engine.block.setFloat(gradientFill, 'fill/gradient/linear/startPointY', 0);
104
+ engine.block.setFloat(gradientFill, 'fill/gradient/linear/endPointX', 1);
105
+ engine.block.setFloat(gradientFill, 'fill/gradient/linear/endPointY', 1);
106
+ engine.block.setFill(page, gradientFill);
107
+
108
+ // Create centered text
109
+ const titleText = engine.block.create('text');
110
+ engine.block.appendChild(page, titleText);
111
+ engine.block.replaceText(titleText, 'Dock\n\nimg.ly');
112
+ engine.block.setWidth(titleText, pageWidth);
113
+ engine.block.setHeightMode(titleText, 'Auto');
114
+ engine.block.setPositionX(titleText, 0);
115
+ engine.block.setPositionY(titleText, pageHeight * 0.35);
116
+ engine.block.setEnum(titleText, 'text/horizontalAlignment', 'Center');
117
+ engine.block.setFloat(titleText, 'text/fontSize', 24);
118
+ engine.block.setTextColor(titleText, { r: 1, g: 1, b: 1, a: 1 });
119
+
120
+ // Deselect all blocks for clean hero image
121
+ engine.block
122
+ .findAllSelected()
123
+ .forEach((block) => engine.block.setSelected(block, false));
124
+ engine.block.select(page);
125
+
126
+ // Configure dock to use large icons and hide text labels
127
+ cesdk.engine.editor.setSetting('dock/iconSize', 'large');
128
+ cesdk.engine.editor.setSetting('dock/hideLabels', true);
129
+
130
+ // Set a simplified dock for Text edit mode
131
+ cesdk.ui.setComponentOrder(
132
+ { in: 'ly.img.dock', when: { editMode: 'Text' } },
133
+ [
134
+ {
135
+ id: 'ly.img.assetLibrary.dock',
136
+ key: 'ly.img.text',
137
+ icon: '@imgly/Text',
138
+ label: 'libraries.ly.img.text.label',
139
+ entries: ['ly.img.text']
140
+ }
141
+ ]
142
+ );
143
+
144
+ // Add a custom asset source, create an entry for it, and add a dock button
145
+ // Step 1: Create the asset source (stores/provides assets)
146
+ cesdk.engine.asset.addLocalSource('my.brand.assets');
147
+
148
+ // Step 2: Create an asset library entry (UI representation of the source)
149
+ cesdk.ui.addAssetLibraryEntry({
150
+ id: 'my.brand.entry',
151
+ sourceIds: ['my.brand.assets'],
152
+ previewLength: 3,
153
+ gridColumns: 3,
154
+ gridItemHeight: 'square'
155
+ });
156
+
157
+ // Step 3: Add a dock button that opens the entry
158
+ cesdk.ui.insertOrderComponent(
159
+ { in: 'ly.img.dock', position: 'end' },
160
+ {
161
+ id: 'ly.img.assetLibrary.dock',
162
+ key: 'brand',
163
+ entries: ['my.brand.entry'],
164
+ label: 'Brand',
165
+ icon: '@imgly/Favorite'
166
+ }
167
+ );
168
+
169
+ // Register a custom component and add it to the dock bottom
170
+ cesdk.ui.registerComponent('my.settings.button', ({ builder }) => {
171
+ builder.Button('settings', {
172
+ label: 'Settings',
173
+ icon: '@imgly/Settings',
174
+ onClick: () => {
175
+ cesdk.ui.showNotification({
176
+ message: 'Settings panel would open here',
177
+ type: 'info',
178
+ duration: 'short'
179
+ });
180
+ }
181
+ });
182
+ });
183
+
184
+ cesdk.ui.insertOrderComponent({ in: 'ly.img.dock', position: 'end' }, [
185
+ 'ly.img.spacer',
186
+ 'my.settings.button'
187
+ ]);
188
+
189
+ // Retrieve and log the current dock order for reference
190
+ const currentOrder = cesdk.ui.getComponentOrder({
191
+ in: 'ly.img.dock'
192
+ });
193
+ console.log('Current dock order:', currentOrder);
194
+ }
195
+ }
196
+
197
+ export default Example;
198
+ ```
199
+
200
+ This guide covers dock positioning, configuring dock appearance settings, setting up edit mode-specific layouts, understanding the relationship between dock entries and asset sources, adding custom registered components, and viewing the default component order.
201
+
202
+ ## Dock Position
203
+
204
+ Use the `at` option in `setComponentOrder` to place the dock on the left, right, or bottom of the editor. When `at` is omitted, `setComponentOrder` targets the `'left'` position.
205
+
206
+ ```typescript
207
+ // Place dock on the right side
208
+ cesdk.ui.setComponentOrder({ in: 'ly.img.dock', at: 'right' }, [
209
+ 'ly.img.assetLibrary.dock'
210
+ ]);
211
+
212
+ // Place dock at the bottom (renders horizontally)
213
+ cesdk.ui.setComponentOrder({ in: 'ly.img.dock', at: 'bottom' }, [
214
+ 'ly.img.assetLibrary.dock'
215
+ ]);
216
+ ```
217
+
218
+ You can place dock components at multiple positions simultaneously. Each position renders independently:
219
+
220
+ ```typescript
221
+ // Main dock on the left
222
+ cesdk.ui.setComponentOrder({ in: 'ly.img.dock', at: 'left' }, [
223
+ 'ly.img.assetLibrary.dock'
224
+ ]);
225
+
226
+ // Secondary tools on the right
227
+ cesdk.ui.setComponentOrder({ in: 'ly.img.dock', at: 'right' }, [
228
+ 'my.custom.tool'
229
+ ]);
230
+ ```
231
+
232
+ On small viewports, all dock positions automatically collapse into a single horizontal dock at the bottom.
233
+
234
+ ## Show or Hide the Dock
235
+
236
+ Use the Feature API to control dock visibility:
237
+
238
+ ```typescript
239
+ // Hide the dock
240
+ cesdk.feature.disable('ly.img.dock');
241
+
242
+ // Show the dock (default)
243
+ cesdk.feature.enable('ly.img.dock');
244
+ ```
245
+
246
+ For more on the Feature API, see [Show/Hide Components](./user-interface/customization/quick-start/show-hide-components.md).
247
+
248
+ ## Dock Appearance Settings
249
+
250
+ Two editor settings control how dock buttons look. Set `dock/iconSize` to `'large'` for 24px icons or `'normal'` for the default 16px. Set `dock/hideLabels` to `true` to show icons only.. When hidden, labels appear as tooltips on hover.
251
+
252
+ ```typescript highlight=highlight-appearance-settings
253
+ // Configure dock to use large icons and hide text labels
254
+ cesdk.engine.editor.setSetting('dock/iconSize', 'large');
255
+ cesdk.engine.editor.setSetting('dock/hideLabels', true);
256
+ ```
257
+
258
+ | Setting | Values | Description |
259
+ | ----------------- | ---------- | --------------------------------- | ------------------------------- |
260
+ | `dock/iconSize` | `'normal'` | `'large'` | Button icon size (16px or 24px) |
261
+ | `dock/hideLabels` | `boolean` | Hide text labels, show icons only |
262
+
263
+ ## Edit Mode Context
264
+
265
+ The dock supports different component orders for different edit modes. Use the `when` option in `setComponentOrder` to define a layout that activates only in a specific mode. The following example sets a simplified dock that appears only when the user enters Text edit mode.
266
+
267
+ ```typescript highlight=highlight-edit-mode-context
268
+ // Set a simplified dock for Text edit mode
269
+ cesdk.ui.setComponentOrder({ in: 'ly.img.dock', when: { editMode: 'Text' } }, [
270
+ {
271
+ id: 'ly.img.assetLibrary.dock',
272
+ key: 'ly.img.text',
273
+ icon: '@imgly/Text',
274
+ label: 'libraries.ly.img.text.label',
275
+ entries: ['ly.img.text']
276
+ }
277
+ ]);
278
+ ```
279
+
280
+ Available edit modes: `'Transform'` (default), `'Text'`, `'Crop'`, `'Trim'`, or any custom value. All Component Order API methods accept an optional `when` context. See the [Component Order API Reference](./user-interface/customization/reference/component-order-api.md) for details.
281
+
282
+ ## Relationship with Asset Sources
283
+
284
+ Asset sources, asset library entries, and dock buttons work together in three steps:
285
+
286
+ 1. **Create an asset source** — Register a source with the engine that stores and provides assets
287
+ 2. **Create an asset library entry** — Define a UI entry that references the source via `sourceIds`
288
+ 3. **Add a dock button** — Insert a button that opens the entry via the `entries` array
289
+
290
+ ```typescript highlight=highlight-asset-source-relationship
291
+ // Add a custom asset source, create an entry for it, and add a dock button
292
+ // Step 1: Create the asset source (stores/provides assets)
293
+ cesdk.engine.asset.addLocalSource('my.brand.assets');
294
+
295
+ // Step 2: Create an asset library entry (UI representation of the source)
296
+ cesdk.ui.addAssetLibraryEntry({
297
+ id: 'my.brand.entry',
298
+ sourceIds: ['my.brand.assets'],
299
+ previewLength: 3,
300
+ gridColumns: 3,
301
+ gridItemHeight: 'square'
302
+ });
303
+
304
+ // Step 3: Add a dock button that opens the entry
305
+ cesdk.ui.insertOrderComponent(
306
+ { in: 'ly.img.dock', position: 'end' },
307
+ {
308
+ id: 'ly.img.assetLibrary.dock',
309
+ key: 'brand',
310
+ entries: ['my.brand.entry'],
311
+ label: 'Brand',
312
+ icon: '@imgly/Favorite'
313
+ }
314
+ );
315
+ ```
316
+
317
+ The `entries` array on the dock button takes **entry IDs**, not source IDs. If the entry ID doesn't exist, the button won't appear.
318
+
319
+ ## Adding Custom Registered Components
320
+
321
+ Register fully custom components and add them to the dock. Use `cesdk.ui.registerComponent()` to define a component with the builder pattern, then insert it into the dock order. A spacer pushes the custom button to the bottom of the dock.
322
+
323
+ ```typescript highlight=highlight-custom-component
324
+ // Register a custom component and add it to the dock bottom
325
+ cesdk.ui.registerComponent('my.settings.button', ({ builder }) => {
326
+ builder.Button('settings', {
327
+ label: 'Settings',
328
+ icon: '@imgly/Settings',
329
+ onClick: () => {
330
+ cesdk.ui.showNotification({
331
+ message: 'Settings panel would open here',
332
+ type: 'info',
333
+ duration: 'short'
334
+ });
335
+ }
336
+ });
337
+ });
338
+
339
+ cesdk.ui.insertOrderComponent({ in: 'ly.img.dock', position: 'end' }, [
340
+ 'ly.img.spacer',
341
+ 'my.settings.button'
342
+ ]);
343
+ ```
344
+
345
+ For the complete builder API documentation, see [Register a New Component](./user-interface/ui-extensions/register-new-component.md).
346
+
347
+ ## Default Component Order
348
+
349
+ Retrieve the current dock order with `getComponentOrder` to inspect the default layout. For detailed descriptions of each component ID, see the [Component Reference](./user-interface/customization/reference/component-reference.md).
350
+
351
+ ```typescript highlight=highlight-default-order
352
+ // Retrieve and log the current dock order for reference
353
+ const currentOrder = cesdk.ui.getComponentOrder({
354
+ in: 'ly.img.dock'
355
+ });
356
+ console.log('Current dock order:', currentOrder);
357
+ ```
358
+
359
+ ### Asset Library Buttons
360
+
361
+ | Component ID | Description |
362
+ | -------------------------- | -------------------------------------------------------------------------- |
363
+ | `ly.img.assetLibrary.dock` | Asset library button (configurable with `key`, `label`, `icon`, `entries`) |
364
+
365
+ ### Layout
366
+
367
+ | Key | Type | Description |
368
+ | ------------ | ---------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
369
+ | `key` | `string` | Unique identifier within the dock. |
370
+ | `label` | `string` | Button label. If a matching I18N key is found, it is localized. |
371
+ | `icon` | `CustomIcon` | A URL string pointing to an SVG, a built-in icon ID (see [Icons](./user-interface/appearance/icons.md)), or a callback returning a URL. |
372
+ | `entries` | `string[]` | Asset entries shown when the button is pressed. A single entry opens directly; multiple entries show a group overview. |
373
+ | `onClick` | `() => void` | Custom click handler. If provided, overrides the default asset library toggle behavior. |
374
+ | `isSelected` | `boolean \| (() => boolean)` | Controls the selected state of the button. |
375
+ | `isDisabled` | `boolean \| (() => boolean)` | Controls the disabled state of the button. |
376
+ | `size` | `'normal' \| 'large'` | Size of the button. Defaults to `'normal'`. |
377
+ | `variant` | `'regular' \| 'plain'` | Visual variant of the button. Defaults to `'regular'`. |
378
+ | `color` | `'accent' \| 'danger'` | Color scheme of the button. |
379
+
380
+ ## API Reference
381
+
382
+ | Method | Purpose |
383
+ | --------------------------------------------------------------- | --------------------------------------- |
384
+ | `cesdk.ui.getComponentOrder({ in: 'ly.img.dock', at? })` | Get dock component order at a position |
385
+ | `cesdk.ui.setComponentOrder({ in: 'ly.img.dock', at? }, order)` | Set dock component order at a position |
386
+ | `cesdk.ui.insertOrderComponent({ in: 'ly.img.dock', at? }, c)` | Insert components into the dock |
387
+ | `cesdk.ui.updateOrderComponent({ in: 'ly.img.dock', at? }, u)` | Update dock components |
388
+ | `cesdk.ui.removeOrderComponent({ in: 'ly.img.dock', at? })` | Remove dock components |
389
+ | `cesdk.ui.registerComponent()` | Register custom components for dock use |
390
+ | `cesdk.engine.editor.setSetting()` | Configure dock appearance settings |
391
+
392
+ ---
393
+
394
+ ## More Resources
395
+
396
+ - **[Vanilla JS/TS Documentation Index](https://img.ly/docs/cesdk/js.md)** - Browse all Vanilla JS/TS documentation
397
+ - **[Complete Documentation](./llms-full.txt.md)** - Full documentation in one file (for LLMs)
398
+ - **[Web Documentation](./js.md)** - Interactive documentation with examples
399
+ - **[Support](mailto:support@img.ly)** - Contact IMG.LY support
@@ -0,0 +1,289 @@
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) > [Force Crop](./user-interface/customization/force-crop.md)
4
+
5
+ ---
6
+
7
+ Programmatically apply crop presets to enforce specific aspect ratios or dimensions on design blocks using the `applyForceCrop` API.
8
+
9
+ ![Force Crop example showing CE.SDK with crop mode active](https://img.ly/docs/cesdk/./assets/browser.hero.webp)
10
+
11
+ > **Reading time:** 8 minutes
12
+ >
13
+ > **Resources:**
14
+ >
15
+ > - [Download examples](https://github.com/imgly/cesdk-web-examples/archive/refs/tags/release-$UBQ_VERSION$.zip)
16
+ > - [View source on GitHub](https://github.com/imgly/cesdk-web-examples)
17
+ > - [Open in StackBlitz](https://stackblitz.com/github/imgly/cesdk-web-examples)
18
+ > - [Live demo](https://img.ly/docs/cesdk/examples/guides-user-interface-customization-force-crop-browser/)
19
+
20
+ The `applyForceCrop` API lets you enforce specific dimensions or aspect ratios on blocks that support cropping. This is useful when building integrations that require content to match specific formats, such as Instagram portrait posts, LinkedIn profile photos, or Facebook shared images. You can control whether the crop UI appears after applying a preset through three different modes.
21
+
22
+ ```typescript file=@cesdk_web_examples/guides-user-interface-customization-force-crop-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
+ class Example implements EditorPlugin {
44
+ name = packageJson.name;
45
+ version = packageJson.version;
46
+
47
+ async initialize({ cesdk }: EditorPluginContext): Promise<void> {
48
+ if (!cesdk) {
49
+ throw new Error('CE.SDK instance is required for this plugin');
50
+ }
51
+
52
+ const engine = cesdk.engine;
53
+ await cesdk.addPlugin(new DesignEditorConfig());
54
+
55
+ // Add asset source plugins
56
+ await cesdk.addPlugin(new BlurAssetSource());
57
+ await cesdk.addPlugin(new ColorPaletteAssetSource());
58
+ await cesdk.addPlugin(new CropPresetsAssetSource());
59
+ await cesdk.addPlugin(
60
+ new UploadAssetSources({ include: ['ly.img.image.upload'] })
61
+ );
62
+ await cesdk.addPlugin(
63
+ new DemoAssetSources({
64
+ include: [
65
+ 'ly.img.templates.blank.*',
66
+ 'ly.img.templates.presentation.*',
67
+ 'ly.img.templates.print.*',
68
+ 'ly.img.templates.social.*',
69
+ 'ly.img.image.*'
70
+ ]
71
+ })
72
+ );
73
+ await cesdk.addPlugin(new EffectsAssetSource());
74
+ await cesdk.addPlugin(new FiltersAssetSource());
75
+ await cesdk.addPlugin(new PagePresetsAssetSource());
76
+ await cesdk.addPlugin(new StickerAssetSource());
77
+ await cesdk.addPlugin(new TextAssetSource());
78
+ await cesdk.addPlugin(new TextComponentAssetSource());
79
+ await cesdk.addPlugin(new TypefaceAssetSource());
80
+ await cesdk.addPlugin(new VectorShapeAssetSource());
81
+
82
+ await cesdk.actions.run('scene.create', {
83
+ page: { width: 800, height: 600, unit: 'Pixel' }
84
+ });
85
+
86
+ const page = engine.block.findByType('page')[0];
87
+
88
+ // Add an image to demonstrate force crop
89
+ const imageUri = 'https://img.ly/static/ubq_samples/sample_1.jpg';
90
+ const imageBlock = await engine.block.addImage(imageUri);
91
+ engine.block.appendChild(page, imageBlock);
92
+
93
+ // Position and size the image to fill the page
94
+ engine.block.setWidth(imageBlock, 800);
95
+ engine.block.setHeight(imageBlock, 600);
96
+ engine.block.setPositionX(imageBlock, 0);
97
+ engine.block.setPositionY(imageBlock, 0);
98
+
99
+ // Create a custom crop preset with a fixed aspect ratio (4:5 for portrait)
100
+ engine.asset.addAssetToSource('ly.img.crop.presets', {
101
+ id: 'instagram-portrait',
102
+ label: { en: 'Portrait Post (4:5)' },
103
+ payload: {
104
+ transformPreset: {
105
+ type: 'FixedAspectRatio',
106
+ width: 4,
107
+ height: 5
108
+ }
109
+ }
110
+ });
111
+
112
+ // Create a custom crop preset with fixed dimensions
113
+ engine.asset.addAssetToSource('ly.img.crop.presets', {
114
+ id: 'profile-photo',
115
+ label: { en: 'Profile Photo (400x400)' },
116
+ payload: {
117
+ transformPreset: {
118
+ type: 'FixedSize',
119
+ width: 400,
120
+ height: 400,
121
+ designUnit: 'Pixel'
122
+ }
123
+ }
124
+ });
125
+
126
+ // Select the image block to demonstrate force crop
127
+ engine.block.select(imageBlock);
128
+
129
+ // Apply force crop with 'ifNeeded' mode
130
+ // This will only enter crop mode if dimensions differ from target
131
+ await cesdk.ui.applyForceCrop(imageBlock, {
132
+ sourceId: 'ly.img.crop.presets',
133
+ presetId: 'instagram-portrait',
134
+ mode: 'ifNeeded'
135
+ });
136
+
137
+ // If Needed mode - only enters crop mode when dimensions differ
138
+ // await cesdk.ui.applyForceCrop(imageBlock, {
139
+ // sourceId: 'ly.img.crop.presets',
140
+ // presetId: 'instagram-portrait',
141
+ // mode: 'ifNeeded'
142
+ // });
143
+
144
+ // Example of silent mode - applies crop without showing UI
145
+ // await cesdk.ui.applyForceCrop(imageBlock, {
146
+ // sourceId: 'ly.img.crop.presets',
147
+ // presetId: 'profile-photo',
148
+ // mode: 'silent'
149
+ // });
150
+
151
+ // Example of always mode - always enters crop mode
152
+ // await cesdk.ui.applyForceCrop(imageBlock, {
153
+ // sourceId: 'ly.img.crop.presets',
154
+ // presetId: 'instagram-portrait',
155
+ // mode: 'always'
156
+ // });
157
+
158
+ console.log('Force crop example loaded successfully!');
159
+ }
160
+ }
161
+
162
+ export default Example;
163
+ ```
164
+
165
+ This guide covers how to apply crop presets programmatically, create custom presets with fixed aspect ratios or dimensions, and control the crop mode behavior.
166
+
167
+ ## Applying a Crop Preset
168
+
169
+ The `cesdk.ui.applyForceCrop()` method takes a block ID and an options object containing `sourceId`, `presetId`, and `mode`. The `sourceId` identifies the asset source containing crop presets, `presetId` specifies which preset to apply, and `mode` determines whether the crop UI appears.
170
+
171
+ ```typescript highlight=highlight-apply-force-crop
172
+ // Apply force crop with 'ifNeeded' mode
173
+ // This will only enter crop mode if dimensions differ from target
174
+ await cesdk.ui.applyForceCrop(imageBlock, {
175
+ sourceId: 'ly.img.crop.presets',
176
+ presetId: 'instagram-portrait',
177
+ mode: 'ifNeeded'
178
+ });
179
+ ```
180
+
181
+ CE.SDK ships with default crop presets in the `ly.img.crop.presets` source. Common ratios like 1:1, 4:3, and 16:9 are available without additional configuration.
182
+
183
+ ## Creating Custom Crop Presets
184
+
185
+ You can create custom crop presets by adding assets to the `ly.img.crop.presets` source using `engine.asset.addAssetToSource()`. Two preset types are available: fixed aspect ratio and fixed size.
186
+
187
+ ### Fixed Aspect Ratio Presets
188
+
189
+ Fixed aspect ratio presets maintain a ratio but allow flexible dimensions. Set `type: 'FixedAspectRatio'` with width and height values representing the ratio.
190
+
191
+ ```typescript highlight=highlight-custom-preset
192
+ // Create a custom crop preset with a fixed aspect ratio (4:5 for portrait)
193
+ engine.asset.addAssetToSource('ly.img.crop.presets', {
194
+ id: 'instagram-portrait',
195
+ label: { en: 'Portrait Post (4:5)' },
196
+ payload: {
197
+ transformPreset: {
198
+ type: 'FixedAspectRatio',
199
+ width: 4,
200
+ height: 5
201
+ }
202
+ }
203
+ });
204
+ ```
205
+
206
+ ### Fixed Size Presets
207
+
208
+ Fixed size presets enforce exact pixel dimensions. Set `type: 'FixedSize'` with specific width and height values.
209
+
210
+ ```typescript highlight=highlight-fixed-size-preset
211
+ // Create a custom crop preset with fixed dimensions
212
+ engine.asset.addAssetToSource('ly.img.crop.presets', {
213
+ id: 'profile-photo',
214
+ label: { en: 'Profile Photo (400x400)' },
215
+ payload: {
216
+ transformPreset: {
217
+ type: 'FixedSize',
218
+ width: 400,
219
+ height: 400,
220
+ designUnit: 'Pixel'
221
+ }
222
+ }
223
+ });
224
+ ```
225
+
226
+ ## Understanding Crop Modes
227
+
228
+ The `mode` parameter controls how the editor responds after applying a crop preset.
229
+
230
+ ### Silent Mode
231
+
232
+ Silent mode applies the crop without any UI feedback. The editor remains in its current mode. Use this for batch operations or when cropping should be invisible to the user.
233
+
234
+ ```typescript highlight=highlight-silent-mode
235
+ // Example of silent mode - applies crop without showing UI
236
+ // await cesdk.ui.applyForceCrop(imageBlock, {
237
+ // sourceId: 'ly.img.crop.presets',
238
+ // presetId: 'profile-photo',
239
+ // mode: 'silent'
240
+ // });
241
+ ```
242
+
243
+ ### Always Mode
244
+
245
+ Always mode applies the crop and opens crop mode for user adjustment. Dimension inputs are hidden to prevent changing the preset.
246
+
247
+ ```typescript highlight=highlight-always-mode
248
+ // Example of always mode - always enters crop mode
249
+ // await cesdk.ui.applyForceCrop(imageBlock, {
250
+ // sourceId: 'ly.img.crop.presets',
251
+ // presetId: 'instagram-portrait',
252
+ // mode: 'always'
253
+ // });
254
+ ```
255
+
256
+ ### If Needed Mode
257
+
258
+ If needed mode applies the crop only if dimensions differ from the target. The crop mode opens only when changes occur. This prevents unnecessary user interaction when content already fits the required dimensions.
259
+
260
+ ```typescript highlight=highlight-if-needed-mode
261
+ // If Needed mode - only enters crop mode when dimensions differ
262
+ // await cesdk.ui.applyForceCrop(imageBlock, {
263
+ // sourceId: 'ly.img.crop.presets',
264
+ // presetId: 'instagram-portrait',
265
+ // mode: 'ifNeeded'
266
+ // });
267
+ ```
268
+
269
+ ## Applying Force Crop to Pages
270
+
271
+ When applying force crop to page blocks, the API automatically enables page resize interaction during the operation. In `silent` mode, resize interaction is disabled after completion. In `always` and `ifNeeded` modes, it remains enabled while crop mode is open.
272
+
273
+ ## API Reference
274
+
275
+ | Method | Description |
276
+ | ------------------------------------------------ | -------------------------------- |
277
+ | `cesdk.ui.applyForceCrop(blockId, options)` | Apply a crop preset to a block |
278
+ | `engine.asset.addAssetToSource(sourceId, asset)` | Add an asset to a source |
279
+ | `engine.asset.findAllSources()` | List available asset sources |
280
+ | `engine.block.supportsCrop(blockId)` | Check if block supports cropping |
281
+
282
+ ---
283
+
284
+ ## More Resources
285
+
286
+ - **[Vanilla JS/TS Documentation Index](https://img.ly/docs/cesdk/js.md)** - Browse all Vanilla JS/TS documentation
287
+ - **[Complete Documentation](./llms-full.txt.md)** - Full documentation in one file (for LLMs)
288
+ - **[Web Documentation](./js.md)** - Interactive documentation with examples
289
+ - **[Support](mailto:support@img.ly)** - Contact IMG.LY support