@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,680 @@
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) > [Open the Editor](./open-the-editor.md) > [Import a Design](./open-the-editor/import-design.md) > [From InDesign](./open-the-editor/import-design/from-indesign.md)
4
+
5
+ ---
6
+
7
+ Import Adobe InDesign (IDML) files into CE.SDK, converting them into editable scenes while preserving text, shapes, images, and positioning.
8
+
9
+ > **Reading time:** 10 minutes
10
+ >
11
+ > **Resources:**
12
+ >
13
+ > - [Download examples](https://github.com/imgly/cesdk-web-examples/archive/refs/tags/release-$UBQ_VERSION$.zip)
14
+ > - [View source on GitHub](https://github.com/imgly/cesdk-web-examples/tree/release-$UBQ_VERSION$/guides-open-the-editor-import-design-from-indesign-browser)
15
+ > - [Open in StackBlitz](https://stackblitz.com/github/imgly/cesdk-web-examples/tree/v$UBQ_VERSION$/guides-open-the-editor-import-design-from-indesign-browser)
16
+ > - [Live demo](https://img.ly/docs/cesdk/examples/guides-open-the-editor-import-design-from-indesign-browser/)
17
+
18
+ ![Import from InDesign](https://img.ly/docs/cesdk/./assets/browser.hero.webp)
19
+
20
+ The `@imgly/idml-importer` package converts InDesign IDML files into CE.SDK scene format, preserving design structure for editing or export. This guide focuses on enabling end-users to upload their own IDML files directly in the browser and load them into the CE.SDK editor. For batch conversion of template libraries at build-time, see the [server guide](./open-the-editor/import-design/from-indesign.md).
21
+
22
+ ```typescript file=@cesdk_web_examples/guides-open-the-editor-import-design-from-indesign-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 type {
42
+ AssetQueryData,
43
+ AssetResult,
44
+ AssetsQueryResult
45
+ } from '@cesdk/engine';
46
+ import type { TypefaceResolver } from '@imgly/idml-importer';
47
+ import { IDMLParser, addGfontsAssetLibrary } from '@imgly/idml-importer';
48
+ import packageJson from './package.json';
49
+
50
+ /**
51
+ * CE.SDK Plugin: Import from InDesign Guide
52
+ *
53
+ * Demonstrates how to import Adobe InDesign IDML files into CE.SDK:
54
+ * - Creating a custom asset source for IDML templates
55
+ * - Adding a custom nav bar button to upload IDML files
56
+ * - Parsing IDML files with the IDML importer
57
+ * - Displaying import warnings to users
58
+ *
59
+ * Note: In-library file uploads for custom asset sources will be supported
60
+ * in a future CE.SDK release. This guide demonstrates using a custom nav bar
61
+ * button as an alternative approach for user file uploads.
62
+ */
63
+
64
+ // Asset source ID for IDML library
65
+ const IDML_SOURCE_ID = 'idml-files';
66
+
67
+ // Base URL for IDML template files
68
+ const IDML_BASE_URL =
69
+ 'https://staticimgly.com/imgly/docs-reference-files-temp/indesign-template-import';
70
+
71
+ // Sample IDML files for the asset library
72
+ // These files are hosted on the IMG.LY CDN from the showcases-app public folder
73
+ const SAMPLE_IDML_FILES: AssetResult[] = [
74
+ {
75
+ id: 'idml-socialmedia',
76
+ label: 'Social Media',
77
+ tags: ['sample', 'idml', 'social', 'marketing'],
78
+ meta: {
79
+ uri: `${IDML_BASE_URL}/socialmedia.idml`,
80
+ thumbUri: `${IDML_BASE_URL}/socialmedia-thumb@2x.png`,
81
+ mimeType: 'application/vnd.adobe.indesign-idml-package',
82
+ width: 1080,
83
+ height: 1080
84
+ }
85
+ },
86
+ {
87
+ id: 'idml-poster',
88
+ label: 'Poster',
89
+ tags: ['sample', 'idml', 'poster', 'print'],
90
+ meta: {
91
+ uri: `${IDML_BASE_URL}/poster.idml`,
92
+ thumbUri: `${IDML_BASE_URL}/poster-thumb@2x.png`,
93
+ mimeType: 'application/vnd.adobe.indesign-idml-package',
94
+ width: 1240,
95
+ height: 1754
96
+ }
97
+ },
98
+ {
99
+ id: 'idml-postcard',
100
+ label: 'Postcard',
101
+ tags: ['sample', 'idml', 'postcard', 'print'],
102
+ meta: {
103
+ uri: `${IDML_BASE_URL}/postcard.idml`,
104
+ thumbUri: `${IDML_BASE_URL}/postcard-thumb@2x.png`,
105
+ mimeType: 'application/vnd.adobe.indesign-idml-package',
106
+ width: 1050,
107
+ height: 600
108
+ }
109
+ }
110
+ ];
111
+
112
+ class Example implements EditorPlugin {
113
+ name = packageJson.name;
114
+
115
+ version = packageJson.version;
116
+
117
+ async initialize({ cesdk }: EditorPluginContext): Promise<void> {
118
+ if (!cesdk) {
119
+ throw new Error('CE.SDK instance is required for this plugin');
120
+ }
121
+
122
+ const engine = cesdk.engine;
123
+
124
+ // Initialize CE.SDK with Google Fonts support for IDML text matching
125
+ await cesdk.addPlugin(new DesignEditorConfig());
126
+
127
+ // Add asset source plugins
128
+ await cesdk.addPlugin(new BlurAssetSource());
129
+ await cesdk.addPlugin(new ColorPaletteAssetSource());
130
+ await cesdk.addPlugin(new CropPresetsAssetSource());
131
+ await cesdk.addPlugin(
132
+ new UploadAssetSources({ include: ['ly.img.image.upload'] })
133
+ );
134
+ await cesdk.addPlugin(
135
+ new DemoAssetSources({
136
+ include: [
137
+ 'ly.img.templates.blank.*',
138
+ 'ly.img.templates.presentation.*',
139
+ 'ly.img.templates.print.*',
140
+ 'ly.img.templates.social.*',
141
+ 'ly.img.image.*'
142
+ ]
143
+ })
144
+ );
145
+ await cesdk.addPlugin(new EffectsAssetSource());
146
+ await cesdk.addPlugin(new FiltersAssetSource());
147
+ await cesdk.addPlugin(new PagePresetsAssetSource());
148
+ await cesdk.addPlugin(new StickerAssetSource());
149
+ await cesdk.addPlugin(new TextAssetSource());
150
+ await cesdk.addPlugin(new TextComponentAssetSource());
151
+ await cesdk.addPlugin(new TypefaceAssetSource());
152
+ await cesdk.addPlugin(new VectorShapeAssetSource());
153
+
154
+ // Register Google Fonts before parsing IDML files for best font matching
155
+ await addGfontsAssetLibrary(engine);
156
+
157
+ // Optional: Create a custom font resolver for advanced font mapping
158
+ // Use this when you need to map InDesign fonts to specific alternatives,
159
+ // use enterprise fonts, or implement custom fallback logic
160
+ const customFontResolver: TypefaceResolver = async (fontParams, eng) => {
161
+ const { family, style, weight } = fontParams;
162
+
163
+ // Define font mappings from InDesign fonts to available alternatives
164
+ const fontMappings: Record<string, string> = {
165
+ Arial: 'Open Sans',
166
+ Helvetica: 'Inter',
167
+ 'Helvetica Neue': 'Inter',
168
+ 'Times New Roman': 'Lora',
169
+ Georgia: 'Merriweather'
170
+ };
171
+
172
+ // Use mapped font or original family name
173
+ const targetFamily = fontMappings[family] || family;
174
+
175
+ // Search for the font in available typefaces
176
+ const result = await eng.asset.findAssets('ly.img.typeface', {
177
+ query: targetFamily,
178
+ page: 0,
179
+ perPage: 10
180
+ });
181
+
182
+ if (result.assets.length === 0) {
183
+ console.warn(`Font "${family}" not found, using default fallback`);
184
+ return null; // Let the parser use its default fallback
185
+ }
186
+
187
+ // Get the typeface from the asset payload
188
+ const asset = result.assets[0];
189
+ const typeface = asset.payload?.typeface;
190
+ if (!typeface) return null;
191
+
192
+ // Find the best matching font variant (weight and style)
193
+ const matchingFont =
194
+ typeface.fonts.find(
195
+ (f: { weight?: string; style?: string }) =>
196
+ f.weight === weight && f.style === style
197
+ ) ||
198
+ typeface.fonts.find((f: { weight?: string }) => f.weight === weight) ||
199
+ typeface.fonts[0];
200
+
201
+ return { typeface, font: matchingFont };
202
+ };
203
+
204
+ // Create an initial design scene
205
+ await cesdk.actions.run('scene.create', {
206
+ page: {
207
+ sourceId: 'ly.img.page.presets',
208
+ assetId: 'ly.img.page.presets.print.iso.a6.landscape'
209
+ }
210
+ });
211
+
212
+ // Helper function to import IDML from URL or buffer
213
+ const importIdml = async (
214
+ source: string | ArrayBuffer,
215
+ sourceName: string
216
+ ) => {
217
+ console.log(`Processing IDML: ${sourceName}`);
218
+
219
+ // Get buffer from URL or use directly
220
+ let buffer: ArrayBuffer;
221
+ if (typeof source === 'string') {
222
+ const response = await fetch(source);
223
+ buffer = await response.arrayBuffer();
224
+ } else {
225
+ buffer = source;
226
+ }
227
+
228
+ // Parse the IDML file using the IDML importer
229
+ // The addGfontsAssetLibrary() call above enables automatic font matching
230
+ // For custom font mapping, pass fontResolver as 4th parameter (see customFontResolver example)
231
+ const parser = await IDMLParser.fromFile(
232
+ engine,
233
+ buffer,
234
+ (content: string) =>
235
+ new DOMParser().parseFromString(content, 'text/xml'),
236
+ customFontResolver
237
+ );
238
+ await parser.parse();
239
+
240
+ // Verify pages were imported successfully
241
+ const pages = engine.scene.getPages();
242
+ if (pages.length === 0) {
243
+ console.error('No pages imported from IDML');
244
+ throw new Error('No pages could be imported from the IDML file');
245
+ }
246
+ console.log(`Successfully imported ${pages.length} page(s)`);
247
+
248
+ // Save the imported scene as an archive for editor loading
249
+ const sceneArchive = await engine.scene.saveToArchive();
250
+ const archiveUrl = URL.createObjectURL(sceneArchive);
251
+
252
+ // Optional: Save scene as JSON string with stable URLs instead of archive
253
+ // This is useful when storing scenes in a database or referencing CDN-hosted assets
254
+ // By default, IDML images use transient buffer:// URLs that only work with saveToArchive()
255
+ // To use saveToString(), relocate transient resources to permanent URLs first:
256
+
257
+ // Mock upload function - replace with your actual backend upload logic
258
+ const uploadToBackend = async (data: Uint8Array): Promise<string> => {
259
+ // In production, upload the data to your CDN/storage and return the permanent URL
260
+ // For this example, we create a blob URL to demonstrate the workflow
261
+ const blob = new Blob([new Uint8Array(data)], { type: 'image/png' });
262
+ return URL.createObjectURL(blob);
263
+ };
264
+
265
+ const transientResources = engine.editor.findAllTransientResources();
266
+ for (const resource of transientResources) {
267
+ const { URL: bufferUri, size } = resource;
268
+ const data = engine.editor.getBufferData(bufferUri, 0, size);
269
+ const permanentUrl = await uploadToBackend(data);
270
+ engine.editor.relocateResource(bufferUri, permanentUrl);
271
+ }
272
+ const sceneString = await engine.scene.saveToString();
273
+ console.log(
274
+ `Scene persisted with stable URLs (${sceneString.length} bytes)`
275
+ );
276
+
277
+ // Load the archived scene into the editor
278
+ await cesdk.engine.scene.loadFromArchiveURL(archiveUrl);
279
+
280
+ // Verify scene loaded correctly
281
+ const loadedPages = engine.scene.getPages();
282
+ console.log(
283
+ `IDML imported successfully with ${loadedPages.length} page(s)`
284
+ );
285
+
286
+ // Zoom to fit the imported page
287
+ await cesdk.actions.run('zoom.toPage', { page: 'first', autoFit: true });
288
+
289
+ // Clean up object URL
290
+ URL.revokeObjectURL(archiveUrl);
291
+ };
292
+
293
+ // Add custom asset source for IDML templates
294
+ engine.asset.addSource({
295
+ id: IDML_SOURCE_ID,
296
+
297
+ async findAssets(
298
+ queryData: AssetQueryData
299
+ ): Promise<AssetsQueryResult<AssetResult>> {
300
+ let assets = SAMPLE_IDML_FILES;
301
+
302
+ // Filter by query if provided
303
+ if (queryData.query) {
304
+ const query = queryData.query.toLowerCase();
305
+ assets = assets.filter(
306
+ (a) =>
307
+ a.label?.toLowerCase().includes(query) ||
308
+ a.tags?.some((t) => t.toLowerCase().includes(query))
309
+ );
310
+ }
311
+
312
+ return {
313
+ assets,
314
+ total: assets.length,
315
+ currentPage: queryData.page,
316
+ nextPage: undefined
317
+ };
318
+ },
319
+
320
+ async applyAsset(asset: AssetResult): Promise<number | undefined> {
321
+ if (!asset.meta?.uri) {
322
+ console.error('Asset has no URI');
323
+ return undefined;
324
+ }
325
+
326
+ await importIdml(asset.meta.uri as string, asset.label || asset.id);
327
+ return undefined; // Scene replaced, no new block created
328
+ }
329
+ });
330
+
331
+ // Set labels for the asset source and library entry
332
+ cesdk.i18n.setTranslations({
333
+ en: {
334
+ [`libraries.${IDML_SOURCE_ID}.label`]: 'IDML Files',
335
+ 'libraries.idml-library-entry.label': 'InDesign Templates'
336
+ }
337
+ });
338
+
339
+ // Configure the asset library UI to show the IDML source
340
+ cesdk.ui.addAssetLibraryEntry({
341
+ id: 'idml-library-entry',
342
+ sourceIds: [IDML_SOURCE_ID],
343
+ previewLength: 3,
344
+ previewBackgroundType: 'contain',
345
+ gridBackgroundType: 'contain',
346
+ gridColumns: 2
347
+ });
348
+
349
+ // Add IDML library to the dock and remove the default Templates entry
350
+ const existingDockOrder = cesdk.ui.getComponentOrder({ in: 'ly.img.dock' });
351
+ const filteredDockOrder = existingDockOrder.filter(
352
+ (entry) => entry.key !== 'ly.img.templates'
353
+ );
354
+ cesdk.ui.setComponentOrder({ in: 'ly.img.dock' }, [
355
+ {
356
+ id: 'ly.img.assetLibrary.dock',
357
+ key: 'idml-library-dock',
358
+ label: 'InDesign Templates',
359
+ icon: '@imgly/Template',
360
+ entries: ['idml-library-entry']
361
+ },
362
+ ...filteredDockOrder
363
+ ]);
364
+
365
+ // Add a custom nav bar button for uploading and importing IDML files
366
+ // Uses cesdk.utils.loadFile() to open the browser's file picker
367
+ cesdk.ui.registerComponent('idml.uploadButton', ({ builder }) => {
368
+ builder.Button('idml.uploadButton', {
369
+ label: 'Load IDML File',
370
+ icon: '@imgly/Upload',
371
+ variant: 'regular',
372
+ color: 'accent',
373
+ onClick: async () => {
374
+ const buffer = await cesdk.utils.loadFile({
375
+ accept: '.idml,application/vnd.adobe.indesign-idml-package',
376
+ returnType: 'arrayBuffer'
377
+ });
378
+ await importIdml(buffer, 'uploaded.idml');
379
+ }
380
+ });
381
+ });
382
+
383
+ // Add the upload button to the right side of the navigation bar
384
+ cesdk.ui.setComponentOrder({ in: 'ly.img.navigation.bar' }, [
385
+ ...cesdk.ui.getComponentOrder({ in: 'ly.img.navigation.bar' }),
386
+ 'idml.uploadButton'
387
+ ]);
388
+
389
+ // Open the IDML Templates library by default
390
+ cesdk.ui.openPanel('//ly.img.panel/assetLibrary', {
391
+ payload: {
392
+ entries: ['idml-library-entry'],
393
+ title: 'InDesign Templates'
394
+ }
395
+ });
396
+
397
+ // Override the importScene action to support IDML files alongside standard formats
398
+ // This integrates IDML import with the default import workflow
399
+ cesdk.actions.register(
400
+ 'importScene',
401
+ async ({
402
+ format = 'scene'
403
+ }: {
404
+ format?: 'scene' | 'archive' | 'idml';
405
+ }) => {
406
+ if (format === 'idml') {
407
+ // Handle IDML import using cesdk.utils.loadFile
408
+ const buffer = await cesdk.utils.loadFile({
409
+ accept: '.idml,application/vnd.adobe.indesign-idml-package',
410
+ returnType: 'arrayBuffer'
411
+ });
412
+ await importIdml(buffer, 'imported.idml');
413
+ } else if (format === 'scene') {
414
+ // Handle standard .scene files
415
+ const scene = await cesdk.utils.loadFile({
416
+ accept: '.scene',
417
+ returnType: 'text'
418
+ });
419
+ await cesdk.engine.scene.loadFromString(scene);
420
+ await cesdk.actions.run('zoom.toPage', { page: 'first' });
421
+ } else {
422
+ // Handle archive files (.zip)
423
+ const blobURL = await cesdk.utils.loadFile({
424
+ accept: '.zip',
425
+ returnType: 'objectURL'
426
+ });
427
+ try {
428
+ await cesdk.engine.scene.loadFromArchiveURL(blobURL);
429
+ } finally {
430
+ URL.revokeObjectURL(blobURL);
431
+ }
432
+ await cesdk.actions.run('zoom.toPage', { page: 'first' });
433
+ }
434
+ }
435
+ );
436
+ }
437
+ }
438
+
439
+ export default Example;
440
+ ```
441
+
442
+ ## Installation
443
+
444
+ Install the `@imgly/idml-importer` package alongside CE.SDK:
445
+
446
+ ```bash
447
+ npm install @imgly/idml-importer @cesdk/cesdk-js@$UBQ_VERSION$
448
+ ```
449
+
450
+ The browser environment uses the native `DOMParser` API for XML parsing, which requires no additional dependencies.
451
+
452
+ ## Supported Elements
453
+
454
+ The IDML importer preserves the following InDesign elements:
455
+
456
+ - **Layer structure** - Element grouping and hierarchy
457
+ - **Positioning** - X/Y coordinates, rotation, and transparency
458
+ - **Text elements** - Font family, bold/italic styles
459
+ - **Shapes** - Rectangles, ovals, polygons, lines
460
+ - **Fills** - Solid color fills and gradients
461
+ - **Strokes** - Color, weight, and alignment
462
+ - **Images** - Embedded images only (linked images require embedding before export)
463
+
464
+ ## Setting Up Font Matching
465
+
466
+ Text elements in IDML files reference fonts that may not be available in CE.SDK. Use `addGfontsAssetLibrary()` to register Google Fonts as a font source before parsing:
467
+
468
+ ```typescript highlight=highlight-setup
469
+ // Initialize CE.SDK with Google Fonts support for IDML text matching
470
+ await cesdk.addPlugin(new DesignEditorConfig());
471
+
472
+ // Add asset source plugins
473
+ await cesdk.addPlugin(new BlurAssetSource());
474
+ await cesdk.addPlugin(new ColorPaletteAssetSource());
475
+ await cesdk.addPlugin(new CropPresetsAssetSource());
476
+ await cesdk.addPlugin(
477
+ new UploadAssetSources({ include: ['ly.img.image.upload'] })
478
+ );
479
+ await cesdk.addPlugin(
480
+ new DemoAssetSources({
481
+ include: [
482
+ 'ly.img.templates.blank.*',
483
+ 'ly.img.templates.presentation.*',
484
+ 'ly.img.templates.print.*',
485
+ 'ly.img.templates.social.*',
486
+ 'ly.img.image.*'
487
+ ]
488
+ })
489
+ );
490
+ await cesdk.addPlugin(new EffectsAssetSource());
491
+ await cesdk.addPlugin(new FiltersAssetSource());
492
+ await cesdk.addPlugin(new PagePresetsAssetSource());
493
+ await cesdk.addPlugin(new StickerAssetSource());
494
+ await cesdk.addPlugin(new TextAssetSource());
495
+ await cesdk.addPlugin(new TextComponentAssetSource());
496
+ await cesdk.addPlugin(new TypefaceAssetSource());
497
+ await cesdk.addPlugin(new VectorShapeAssetSource());
498
+
499
+ // Register Google Fonts before parsing IDML files for best font matching
500
+ await addGfontsAssetLibrary(engine);
501
+ ```
502
+
503
+ Call this function on the engine before parsing IDML files. The importer attempts to match fonts from the IDML with available Google Fonts. For fonts not found, the importer uses a fallback font.
504
+
505
+ ## Parsing the IDML File
506
+
507
+ Use `IDMLParser.fromFile()` with the browser's native `DOMParser` for XML parsing. After parsing, the scene is immediately available in the engine:
508
+
509
+ ```typescript highlight=highlight-parse-idml
510
+ // Get buffer from URL or use directly
511
+ let buffer: ArrayBuffer;
512
+ if (typeof source === 'string') {
513
+ const response = await fetch(source);
514
+ buffer = await response.arrayBuffer();
515
+ } else {
516
+ buffer = source;
517
+ }
518
+
519
+ // Parse the IDML file using the IDML importer
520
+ // The addGfontsAssetLibrary() call above enables automatic font matching
521
+ // For custom font mapping, pass fontResolver as 4th parameter (see customFontResolver example)
522
+ const parser = await IDMLParser.fromFile(
523
+ engine,
524
+ buffer,
525
+ (content: string) => new DOMParser().parseFromString(content, 'text/xml'),
526
+ customFontResolver
527
+ );
528
+ await parser.parse();
529
+ ```
530
+
531
+ The parser creates a new scene in the engine with all supported IDML elements converted to CE.SDK blocks.
532
+
533
+ ## Checking Import Results
534
+
535
+ Verify the import succeeded by checking the page count. If no pages were imported, the IDML file may have contained only unsupported elements:
536
+
537
+ ```typescript highlight=highlight-check-warnings
538
+ // Verify pages were imported successfully
539
+ const pages = engine.scene.getPages();
540
+ if (pages.length === 0) {
541
+ console.error('No pages imported from IDML');
542
+ throw new Error('No pages could be imported from the IDML file');
543
+ }
544
+ console.log(`Successfully imported ${pages.length} page(s)`);
545
+ ```
546
+
547
+ Log warnings about any unsupported features to help users understand what couldn't be converted.
548
+
549
+ ## Saving as Archive
550
+
551
+ After parsing, save the imported scene as an archive. This creates a portable bundle containing the scene and all its assets:
552
+
553
+ ```typescript highlight=highlight-save-archive
554
+ // Save the imported scene as an archive for editor loading
555
+ const sceneArchive = await engine.scene.saveToArchive();
556
+ const archiveUrl = URL.createObjectURL(sceneArchive);
557
+ ```
558
+
559
+ Archives can be stored, shared, or loaded later using `loadFromArchiveURL()`.
560
+
561
+ ## Saving Scenes with Stable URLs
562
+
563
+ By default, the IDML importer creates internal `buffer://` URLs for imported images. These are transient resources that work well when saving to an archive (`engine.scene.saveToArchive()`), which bundles all assets together.
564
+
565
+ However, if you want to save scenes as JSON strings (`engine.scene.saveToString()`) with stable, permanent URLs (e.g., for storing in a database or referencing CDN-hosted assets), you need to relocate the transient resources first.
566
+
567
+ ### Why Relocate?
568
+
569
+ - **Scene Archives** (`saveToArchive`): Include all assets in a single ZIP file. Transient `buffer://` URLs work fine.
570
+ - **Scene Strings** (`saveToString`): Only contain references to assets. Transient URLs won't work when reloading the scene later. You need permanent URLs (e.g., `https://`).
571
+
572
+ ### How to Relocate Transient Resources
573
+
574
+ After parsing the IDML file, use CE.SDK's native APIs to find and relocate all transient resources:
575
+
576
+ ```typescript highlight=highlight-stable-urls
577
+ // Optional: Save scene as JSON string with stable URLs instead of archive
578
+ // This is useful when storing scenes in a database or referencing CDN-hosted assets
579
+ // By default, IDML images use transient buffer:// URLs that only work with saveToArchive()
580
+ // To use saveToString(), relocate transient resources to permanent URLs first:
581
+
582
+ // Mock upload function - replace with your actual backend upload logic
583
+ const uploadToBackend = async (data: Uint8Array): Promise<string> => {
584
+ // In production, upload the data to your CDN/storage and return the permanent URL
585
+ // For this example, we create a blob URL to demonstrate the workflow
586
+ const blob = new Blob([new Uint8Array(data)], { type: 'image/png' });
587
+ return URL.createObjectURL(blob);
588
+ };
589
+
590
+ const transientResources = engine.editor.findAllTransientResources();
591
+ for (const resource of transientResources) {
592
+ const { URL: bufferUri, size } = resource;
593
+ const data = engine.editor.getBufferData(bufferUri, 0, size);
594
+ const permanentUrl = await uploadToBackend(data);
595
+ engine.editor.relocateResource(bufferUri, permanentUrl);
596
+ }
597
+ const sceneString = await engine.scene.saveToString();
598
+ console.log(`Scene persisted with stable URLs (${sceneString.length} bytes)`);
599
+ ```
600
+
601
+ The relocation workflow:
602
+
603
+ 1. Find all transient resources using `engine.editor.findAllTransientResources()`
604
+ 2. Extract binary data for each resource using `engine.editor.getBufferData()`
605
+ 3. Upload the data to your backend or CDN
606
+ 4. Relocate the resource URL using `engine.editor.relocateResource()`
607
+ 5. Save to string with `engine.scene.saveToString()` - all URLs will now be permanent
608
+
609
+ ### Note on Font URLs
610
+
611
+ When using the default font resolver with Google Fonts, the resulting scene string will contain Google CDN URLs for fonts. If you need fonts hosted on your own infrastructure, configure a custom font resolver instead of using the default Google Fonts integration.
612
+
613
+ ## Loading into the Editor
614
+
615
+ Load the archived scene into the CE.SDK editor for user editing:
616
+
617
+ ```typescript highlight=highlight-load-editor
618
+ // Load the archived scene into the editor
619
+ await cesdk.engine.scene.loadFromArchiveURL(archiveUrl);
620
+
621
+ // Verify scene loaded correctly
622
+ const loadedPages = engine.scene.getPages();
623
+ console.log(`IDML imported successfully with ${loadedPages.length} page(s)`);
624
+
625
+ // Zoom to fit the imported page
626
+ await cesdk.actions.run('zoom.toPage', { page: 'first', autoFit: true });
627
+ ```
628
+
629
+ After loading, verify the scene contains at least one page. The imported design is now ready for editing in the CE.SDK editor.
630
+
631
+ ## API Reference
632
+
633
+ The `@imgly/idml-importer` package exports the following key APIs:
634
+
635
+ | API | Description |
636
+ | ------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------- |
637
+ | `IDMLParser.fromFile(engine, buffer, xmlParser)` | Creates a parser instance from an IDML file buffer. The `xmlParser` function converts XML strings to DOM documents. |
638
+ | `parser.parse()` | Parses the IDML file and creates a CE.SDK scene. Returns when parsing is complete. |
639
+ | `addGfontsAssetLibrary(engine)` | Registers Google Fonts as a font source for text element matching. Call before parsing. |
640
+
641
+ ## Limitations
642
+
643
+ The IDML importer has the following limitations:
644
+
645
+ - **Linked images** - Only embedded images are supported. Linked images become placeholders. Embed all images in InDesign before exporting to IDML.
646
+ - **Text flow** - Text that flows between multiple text frames is not supported and may appear duplicated.
647
+ - **Image fitting** - Images shrunk inside their frames may not render as expected.
648
+ - **PDF content** - Embedded PDF content is replaced with placeholders.
649
+ - **Page sizes** - Different page sizes within the same document are not supported. All pages use the first page's dimensions.
650
+ - **Advanced text** - Complex text formatting beyond bold/italic may not be preserved.
651
+
652
+ ## Pre-Import Checklist
653
+
654
+ Before exporting from InDesign:
655
+
656
+ 1. **Embed all images** - File > Links, select linked images, and choose "Embed Link" from the panel menu
657
+ 2. **Flatten complex effects** - Some effects may not translate to CE.SDK
658
+ 3. **Use standard fonts** - Consider using Google Fonts for better compatibility
659
+ 4. **Export as IDML** - File > Export > InDesign Markup (IDML)
660
+
661
+ ## Troubleshooting
662
+
663
+ **Import fails silently:** Check the console for error messages. Verify the file is a valid IDML file exported correctly from InDesign.
664
+
665
+ **Missing images:** Ensure images were embedded in InDesign before exporting. Linked images are replaced with placeholders.
666
+
667
+ **Text appears with wrong font:** Ensure `addGfontsAssetLibrary()` is called before parsing. If the original font isn't available in Google Fonts, a fallback is used.
668
+
669
+ **Text is duplicated:** This can happen when text flows between multiple frames. The IDML importer doesn't support linked text frames.
670
+
671
+ **Pages have wrong size:** All pages use the first page's dimensions. Ensure consistent page sizes in the InDesign document.
672
+
673
+ ---
674
+
675
+ ## More Resources
676
+
677
+ - **[Vanilla JS/TS Documentation Index](https://img.ly/docs/cesdk/js.md)** - Browse all Vanilla JS/TS documentation
678
+ - **[Complete Documentation](./llms-full.txt.md)** - Full documentation in one file (for LLMs)
679
+ - **[Web Documentation](./js.md)** - Interactive documentation with examples
680
+ - **[Support](mailto:support@img.ly)** - Contact IMG.LY support