@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,688 @@
1
+ > This is one page of the CE.SDK Vanilla JS/TS documentation. For a complete overview, see the [Vanilla JS/TS Documentation Index](https://img.ly/docs/cesdk/js.md). For all docs in one file, see [llms-full.txt](./llms-full.txt.md).
2
+
3
+ **Navigation:** [Guides](./guides.md) > [Create and Use Templates](./create-templates.md) > [Insert Dynamic Content](./create-templates/add-dynamic-content.md) > [Placeholders](./create-templates/add-dynamic-content/placeholders.md)
4
+
5
+ ---
6
+
7
+ Placeholders turn design blocks into drop-zones that users can swap content into while maintaining full control over layout and styling.
8
+
9
+ ![Placeholders example showing various configurations of placeholder behavior, controls, and interaction modes](https://img.ly/docs/cesdk/./assets/browser.hero.webp)
10
+
11
+ > **Reading time:** 10 minutes
12
+ >
13
+ > **Resources:**
14
+ >
15
+ > - [Download examples](https://github.com/imgly/cesdk-web-examples/archive/refs/tags/release-$UBQ_VERSION$.zip)
16
+ > - [View source on GitHub](https://github.com/imgly/cesdk-web-examples/tree/release-$UBQ_VERSION$/guides-create-templates-dynamic-content-placeholders-browser)
17
+ > - [Open in StackBlitz](https://stackblitz.com/github/imgly/cesdk-web-examples/tree/v$UBQ_VERSION$/guides-create-templates-dynamic-content-placeholders-browser)
18
+ > - [Live demo](https://img.ly/docs/cesdk/examples/guides-create-templates-dynamic-content-placeholders-browser/)
19
+
20
+ ```typescript file=@cesdk_web_examples/guides-create-templates-dynamic-content-placeholders-browser/browser.ts reference-only
21
+ import type { EditorPlugin, EditorPluginContext } from '@cesdk/cesdk-js';
22
+
23
+ import {
24
+ BlurAssetSource,
25
+ ColorPaletteAssetSource,
26
+ CropPresetsAssetSource,
27
+ DemoAssetSources,
28
+ EffectsAssetSource,
29
+ FiltersAssetSource,
30
+ PagePresetsAssetSource,
31
+ StickerAssetSource,
32
+ TextAssetSource,
33
+ TextComponentAssetSource,
34
+ TypefaceAssetSource,
35
+ UploadAssetSources,
36
+ VectorShapeAssetSource
37
+ } from '@cesdk/cesdk-js/plugins';
38
+ import { DesignEditorConfig } from './design-editor/plugin';
39
+ import packageJson from './package.json';
40
+
41
+ /**
42
+ * CE.SDK Plugin: Dynamic Content Placeholders
43
+ *
44
+ * This example demonstrates three different placeholder configurations:
45
+ * 1. All placeholder controls enabled (all scopes + behavior + controls)
46
+ * 2. Fill properties only (fill scopes + behavior + controls)
47
+ * 3. No placeholder features (default state)
48
+ */
49
+ class Example implements EditorPlugin {
50
+ name = packageJson.name;
51
+
52
+ version = packageJson.version;
53
+
54
+ async initialize({ cesdk }: EditorPluginContext): Promise<void> {
55
+ if (!cesdk) {
56
+ throw new Error('CE.SDK instance is required for this plugin');
57
+ }
58
+
59
+ await cesdk.addPlugin(new DesignEditorConfig());
60
+
61
+ // Add asset source plugins
62
+ await cesdk.addPlugin(new BlurAssetSource());
63
+ await cesdk.addPlugin(new ColorPaletteAssetSource());
64
+ await cesdk.addPlugin(new CropPresetsAssetSource());
65
+ await cesdk.addPlugin(
66
+ new UploadAssetSources({ include: ['ly.img.image.upload'] })
67
+ );
68
+ await cesdk.addPlugin(
69
+ new DemoAssetSources({
70
+ include: [
71
+ 'ly.img.templates.blank.*',
72
+ 'ly.img.templates.presentation.*',
73
+ 'ly.img.templates.print.*',
74
+ 'ly.img.templates.social.*',
75
+ 'ly.img.image.*'
76
+ ]
77
+ })
78
+ );
79
+ await cesdk.addPlugin(new EffectsAssetSource());
80
+ await cesdk.addPlugin(new FiltersAssetSource());
81
+ await cesdk.addPlugin(new PagePresetsAssetSource());
82
+ await cesdk.addPlugin(new StickerAssetSource());
83
+ await cesdk.addPlugin(new TextAssetSource());
84
+ await cesdk.addPlugin(new TextComponentAssetSource());
85
+ await cesdk.addPlugin(new TypefaceAssetSource());
86
+ await cesdk.addPlugin(new VectorShapeAssetSource());
87
+
88
+ await cesdk.actions.run('scene.create', {
89
+ page: { width: 1200, height: 800, unit: 'Pixel' }
90
+ });
91
+
92
+ const engine = cesdk.engine;
93
+ engine.editor.setRole('Adopter');
94
+
95
+ // Get the page
96
+ const pages = engine.block.findByType('page');
97
+ const page = pages[0];
98
+ if (!page) {
99
+ throw new Error('No page found');
100
+ }
101
+
102
+ // Set page dimensions for horizontal layout
103
+ const pageWidth = engine.block.getWidth(page);
104
+ const pageHeight = engine.block.getHeight(page);
105
+
106
+ // Set page background to light gray
107
+ const pageFill = engine.block.getFill(page);
108
+ engine.block.setColor(pageFill, 'fill/color/value', {
109
+ r: 0.95,
110
+ g: 0.95,
111
+ b: 0.95,
112
+ a: 1.0
113
+ });
114
+
115
+ // Layout configuration for 3 blocks horizontally
116
+ const blockWidth = 300;
117
+ const blockHeight = 300;
118
+ const spacing = 50;
119
+ const startX = (pageWidth - blockWidth * 3 - spacing * 2) / 2;
120
+ const blockY = (pageHeight - blockHeight) / 2 + 40; // Offset for labels
121
+ const labelY = blockY - 50;
122
+
123
+ // Sample images
124
+ const imageUri1 = 'https://img.ly/static/ubq_samples/sample_1.jpg';
125
+ const imageUri2 = 'https://img.ly/static/ubq_samples/sample_2.jpg';
126
+ const imageUri3 = 'https://img.ly/static/ubq_samples/sample_3.jpg';
127
+
128
+ // Define ALL available scopes for reference
129
+ const allScopes: Array<
130
+ | 'text/edit'
131
+ | 'text/character'
132
+ | 'fill/change'
133
+ | 'fill/changeType'
134
+ | 'stroke/change'
135
+ | 'shape/change'
136
+ | 'layer/move'
137
+ | 'layer/resize'
138
+ | 'layer/rotate'
139
+ | 'layer/flip'
140
+ | 'layer/crop'
141
+ | 'layer/opacity'
142
+ | 'layer/blendMode'
143
+ | 'layer/visibility'
144
+ | 'layer/clipping'
145
+ | 'appearance/adjustments'
146
+ | 'appearance/filter'
147
+ | 'appearance/effect'
148
+ | 'appearance/blur'
149
+ | 'appearance/shadow'
150
+ | 'appearance/animation'
151
+ | 'lifecycle/destroy'
152
+ | 'lifecycle/duplicate'
153
+ | 'editor/add'
154
+ | 'editor/select'
155
+ > = [
156
+ 'text/edit',
157
+ 'text/character',
158
+ 'fill/change',
159
+ 'fill/changeType',
160
+ 'stroke/change',
161
+ 'shape/change',
162
+ 'layer/move',
163
+ 'layer/resize',
164
+ 'layer/rotate',
165
+ 'layer/flip',
166
+ 'layer/crop',
167
+ 'layer/opacity',
168
+ 'layer/blendMode',
169
+ 'layer/visibility',
170
+ 'layer/clipping',
171
+ 'appearance/adjustments',
172
+ 'appearance/filter',
173
+ 'appearance/effect',
174
+ 'appearance/blur',
175
+ 'appearance/shadow',
176
+ 'appearance/animation',
177
+ 'lifecycle/destroy',
178
+ 'lifecycle/duplicate',
179
+ 'editor/add',
180
+ 'editor/select'
181
+ ];
182
+
183
+ // Block 1: All Placeholder Controls Enabled
184
+ const block1 = await engine.block.addImage(imageUri1, {
185
+ size: {
186
+ width: blockWidth,
187
+ height: blockHeight
188
+ }
189
+ });
190
+ engine.block.appendChild(page, block1);
191
+ engine.block.setPositionX(block1, startX);
192
+ engine.block.setPositionY(block1, blockY);
193
+
194
+ // Step 1: Explicitly disable ALL scopes first
195
+ allScopes.forEach((scope) => {
196
+ engine.block.setScopeEnabled(block1, scope, false);
197
+ });
198
+
199
+ // Step 2: Enable specific scopes for full placeholder functionality
200
+ // General/Layer options
201
+ engine.block.setScopeEnabled(block1, 'layer/opacity', true);
202
+ engine.block.setScopeEnabled(block1, 'layer/blendMode', true);
203
+ engine.block.setScopeEnabled(block1, 'lifecycle/duplicate', true);
204
+ engine.block.setScopeEnabled(block1, 'lifecycle/destroy', true);
205
+
206
+ // Arrange scopes
207
+ engine.block.setScopeEnabled(block1, 'layer/move', true);
208
+ engine.block.setScopeEnabled(block1, 'layer/resize', true);
209
+ engine.block.setScopeEnabled(block1, 'layer/rotate', true);
210
+ engine.block.setScopeEnabled(block1, 'layer/flip', true);
211
+
212
+ // Fill scopes (for image replacement and cropping)
213
+ engine.block.setScopeEnabled(block1, 'fill/change', true);
214
+ engine.block.setScopeEnabled(block1, 'fill/changeType', true);
215
+ engine.block.setScopeEnabled(block1, 'layer/crop', true);
216
+
217
+ // Appearance scopes
218
+ engine.block.setScopeEnabled(block1, 'appearance/adjustments', true);
219
+ engine.block.setScopeEnabled(block1, 'appearance/filter', true);
220
+ engine.block.setScopeEnabled(block1, 'appearance/effect', true);
221
+ engine.block.setScopeEnabled(block1, 'appearance/blur', true);
222
+ engine.block.setScopeEnabled(block1, 'appearance/shadow', true);
223
+ engine.block.setScopeEnabled(block1, 'appearance/animation', true);
224
+ engine.block.setScopeEnabled(block1, 'editor/select', true);
225
+
226
+ // Step 3: Enable placeholder behavior ("Act as a placeholder")
227
+ // This makes the block interactive in Adopter mode
228
+ engine.block.setPlaceholderEnabled(block1, true);
229
+
230
+ // Step 4: Check if block/fill supports placeholder features
231
+ const fill1 = engine.block.getFill(block1);
232
+ const supportsBehavior = engine.block.supportsPlaceholderBehavior(fill1);
233
+ const supportsControls = engine.block.supportsPlaceholderControls(block1);
234
+
235
+ // Enable placeholder behavior on the fill (for graphic blocks)
236
+ if (supportsBehavior) {
237
+ engine.block.setPlaceholderBehaviorEnabled(fill1, true);
238
+ }
239
+
240
+ // Enable placeholder overlay pattern
241
+ if (supportsControls) {
242
+ engine.block.setPlaceholderControlsOverlayEnabled(block1, true);
243
+ }
244
+
245
+ // Enable placeholder button
246
+ if (supportsControls) {
247
+ engine.block.setPlaceholderControlsButtonEnabled(block1, true);
248
+ }
249
+
250
+ // Complete "Act as Placeholder" setup
251
+ const fillForConfig = engine.block.getFill(block1);
252
+ if (engine.block.supportsPlaceholderBehavior(fillForConfig)) {
253
+ engine.block.setPlaceholderBehaviorEnabled(fillForConfig, true);
254
+ }
255
+ if (supportsControls) {
256
+ engine.block.setPlaceholderControlsOverlayEnabled(block1, true);
257
+ engine.block.setPlaceholderControlsButtonEnabled(block1, true);
258
+ }
259
+
260
+ // Block 2: Fill Properties Only
261
+ const block2 = await engine.block.addImage(imageUri2, {
262
+ size: {
263
+ width: blockWidth,
264
+ height: blockHeight
265
+ }
266
+ });
267
+ engine.block.appendChild(page, block2);
268
+ engine.block.setPositionX(block2, startX + blockWidth + spacing);
269
+ engine.block.setPositionY(block2, blockY);
270
+
271
+ // Batch operation: Apply settings to multiple blocks
272
+ const graphicBlocks = [block1, block2];
273
+ graphicBlocks.forEach((block) => {
274
+ // Enable placeholder for each block
275
+ engine.block.setPlaceholderEnabled(block, true);
276
+
277
+ const fill = engine.block.getFill(block);
278
+ if (engine.block.supportsPlaceholderBehavior(fill)) {
279
+ engine.block.setPlaceholderBehaviorEnabled(fill, true);
280
+ }
281
+ });
282
+
283
+ // Step 1: Explicitly disable ALL scopes first
284
+ allScopes.forEach((scope) => {
285
+ engine.block.setScopeEnabled(block2, scope, false);
286
+ });
287
+
288
+ // Step 2: Enable ONLY fill-related scopes
289
+ engine.block.setScopeEnabled(block2, 'fill/change', true);
290
+ engine.block.setScopeEnabled(block2, 'fill/changeType', true);
291
+ engine.block.setScopeEnabled(block2, 'layer/crop', true);
292
+ engine.block.setScopeEnabled(block2, 'editor/select', true);
293
+
294
+ // Step 3: Enable placeholder behavior ("Act as a placeholder")
295
+ engine.block.setPlaceholderEnabled(block2, true);
296
+
297
+ // Step 4: Enable fill-based placeholder behavior and visual controls
298
+ const fill2 = engine.block.getFill(block2);
299
+ if (engine.block.supportsPlaceholderBehavior(fill2)) {
300
+ engine.block.setPlaceholderBehaviorEnabled(fill2, true);
301
+ }
302
+
303
+ if (engine.block.supportsPlaceholderControls(block2)) {
304
+ engine.block.setPlaceholderControlsOverlayEnabled(block2, true);
305
+ engine.block.setPlaceholderControlsButtonEnabled(block2, true);
306
+ }
307
+
308
+ // Block 3: No Placeholder Features (Default State)
309
+ const block3 = await engine.block.addImage(imageUri3, {
310
+ size: {
311
+ width: blockWidth,
312
+ height: blockHeight
313
+ }
314
+ });
315
+ engine.block.appendChild(page, block3);
316
+ engine.block.setPositionX(block3, startX + (blockWidth + spacing) * 2);
317
+ engine.block.setPositionY(block3, blockY);
318
+
319
+ // Explicitly disable ALL scopes to ensure default state
320
+ allScopes.forEach((scope) => {
321
+ engine.block.setScopeEnabled(block3, scope, false);
322
+ });
323
+
324
+ // No placeholder behavior enabled - this block remains non-interactive
325
+
326
+ // Add descriptive labels above each block
327
+ const labelConfig = {
328
+ height: 40,
329
+ fontSize: 34,
330
+ fontUri:
331
+ 'https://cdn.img.ly/packages/imgly/cesdk-js/latest/assets/extensions/ly.img.cesdk.fonts/fonts/Roboto/Roboto-Bold.ttf',
332
+ fontFamily: 'Roboto'
333
+ };
334
+
335
+ // Label for Block 1
336
+ const label1 = engine.block.create('text');
337
+ engine.block.appendChild(page, label1);
338
+ engine.block.setPositionX(label1, startX);
339
+ engine.block.setPositionY(label1, labelY);
340
+ engine.block.setWidth(label1, blockWidth);
341
+ engine.block.setHeight(label1, labelConfig.height);
342
+ engine.block.replaceText(label1, 'All Controls');
343
+ engine.block.setTextColor(label1, {
344
+ r: 0.2,
345
+ g: 0.2,
346
+ b: 0.2,
347
+ a: 1.0
348
+ });
349
+ engine.block.setFont(label1, labelConfig.fontUri, {
350
+ name: labelConfig.fontFamily,
351
+ fonts: [
352
+ {
353
+ uri: labelConfig.fontUri,
354
+ subFamily: 'Bold'
355
+ }
356
+ ]
357
+ });
358
+ engine.block.setFloat(label1, 'text/fontSize', labelConfig.fontSize);
359
+ engine.block.setEnum(label1, 'text/horizontalAlignment', 'Center');
360
+
361
+ // Label for Block 2
362
+ const label2 = engine.block.create('text');
363
+ engine.block.appendChild(page, label2);
364
+ engine.block.setPositionX(label2, startX + blockWidth + spacing);
365
+ engine.block.setPositionY(label2, labelY);
366
+ engine.block.setWidth(label2, blockWidth);
367
+ engine.block.setHeight(label2, labelConfig.height);
368
+ engine.block.replaceText(label2, 'Fill Only');
369
+ engine.block.setTextColor(label2, {
370
+ r: 0.2,
371
+ g: 0.2,
372
+ b: 0.2,
373
+ a: 1.0
374
+ });
375
+ engine.block.setFont(label2, labelConfig.fontUri, {
376
+ name: labelConfig.fontFamily,
377
+ fonts: [
378
+ {
379
+ uri: labelConfig.fontUri,
380
+ subFamily: 'Bold'
381
+ }
382
+ ]
383
+ });
384
+ engine.block.setFloat(label2, 'text/fontSize', labelConfig.fontSize);
385
+ engine.block.setEnum(label2, 'text/horizontalAlignment', 'Center');
386
+
387
+ // Label for Block 3
388
+ const label3 = engine.block.create('text');
389
+ engine.block.appendChild(page, label3);
390
+ engine.block.setPositionX(label3, startX + (blockWidth + spacing) * 2);
391
+ engine.block.setPositionY(label3, labelY);
392
+ engine.block.setWidth(label3, blockWidth);
393
+ engine.block.setHeight(label3, labelConfig.height);
394
+ engine.block.replaceText(label3, 'Disabled');
395
+ engine.block.setTextColor(label3, {
396
+ r: 0.2,
397
+ g: 0.2,
398
+ b: 0.2,
399
+ a: 1.0
400
+ });
401
+ engine.block.setFont(label3, labelConfig.fontUri, {
402
+ name: labelConfig.fontFamily,
403
+ fonts: [
404
+ {
405
+ uri: labelConfig.fontUri,
406
+ subFamily: 'Bold'
407
+ }
408
+ ]
409
+ });
410
+ engine.block.setFloat(label3, 'text/fontSize', labelConfig.fontSize);
411
+ engine.block.setEnum(label3, 'text/horizontalAlignment', 'Center');
412
+
413
+ // Verify configurations
414
+ // eslint-disable-next-line no-console
415
+ console.log('Block 1 - All Controls:');
416
+ // eslint-disable-next-line no-console
417
+ console.log(
418
+ ' Placeholder enabled:',
419
+ engine.block.isPlaceholderEnabled(block1)
420
+ );
421
+ // eslint-disable-next-line no-console
422
+ console.log(' Scopes enabled:');
423
+ // eslint-disable-next-line no-console
424
+ console.log(
425
+ ' - layer/move:',
426
+ engine.block.isScopeEnabled(block1, 'layer/move')
427
+ );
428
+ // eslint-disable-next-line no-console
429
+ console.log(
430
+ ' - layer/resize:',
431
+ engine.block.isScopeEnabled(block1, 'layer/resize')
432
+ );
433
+ // eslint-disable-next-line no-console
434
+ console.log(
435
+ ' - fill/change:',
436
+ engine.block.isScopeEnabled(block1, 'fill/change')
437
+ );
438
+ // eslint-disable-next-line no-console
439
+ console.log(
440
+ ' - layer/crop:',
441
+ engine.block.isScopeEnabled(block1, 'layer/crop')
442
+ );
443
+ // eslint-disable-next-line no-console
444
+ console.log(
445
+ ' - appearance/adjustments:',
446
+ engine.block.isScopeEnabled(block1, 'appearance/adjustments')
447
+ );
448
+
449
+ // eslint-disable-next-line no-console
450
+ console.log('\nBlock 2 - Fill Only:');
451
+ // eslint-disable-next-line no-console
452
+ console.log(
453
+ ' Placeholder enabled:',
454
+ engine.block.isPlaceholderEnabled(block2)
455
+ );
456
+ // eslint-disable-next-line no-console
457
+ console.log(' Scopes enabled:');
458
+ // eslint-disable-next-line no-console
459
+ console.log(
460
+ ' - layer/move:',
461
+ engine.block.isScopeEnabled(block2, 'layer/move')
462
+ );
463
+ // eslint-disable-next-line no-console
464
+ console.log(
465
+ ' - fill/change:',
466
+ engine.block.isScopeEnabled(block2, 'fill/change')
467
+ );
468
+ // eslint-disable-next-line no-console
469
+ console.log(
470
+ ' - fill/changeType:',
471
+ engine.block.isScopeEnabled(block2, 'fill/changeType')
472
+ );
473
+ // eslint-disable-next-line no-console
474
+ console.log(
475
+ ' - layer/crop:',
476
+ engine.block.isScopeEnabled(block2, 'layer/crop')
477
+ );
478
+
479
+ // eslint-disable-next-line no-console
480
+ console.log('\nBlock 3 - Disabled:');
481
+ // eslint-disable-next-line no-console
482
+ console.log(
483
+ ' Placeholder enabled:',
484
+ engine.block.isPlaceholderEnabled(block3)
485
+ );
486
+ // eslint-disable-next-line no-console
487
+ console.log(' Scopes enabled:');
488
+ // eslint-disable-next-line no-console
489
+ console.log(
490
+ ' - layer/move:',
491
+ engine.block.isScopeEnabled(block3, 'layer/move')
492
+ );
493
+ // eslint-disable-next-line no-console
494
+ console.log(
495
+ ' - fill/change:',
496
+ engine.block.isScopeEnabled(block3, 'fill/change')
497
+ );
498
+
499
+ // eslint-disable-next-line no-console
500
+ console.log('\nPlaceholder configurations initialized successfully');
501
+ }
502
+ }
503
+
504
+ export default Example;
505
+ ```
506
+
507
+ This guide covers placeholder fundamentals, checking support, enabling behavior, and configuring visual controls for graphic and text blocks.
508
+
509
+ ## Placeholder Fundamentals
510
+
511
+ Placeholders convert design blocks into interactive drop-zones where users can swap content while maintaining layout and styling control.
512
+
513
+ ### Two Distinct Features
514
+
515
+ **Placeholder behavior** enables drag-and-drop replacement and exposes scope checks for content validation.
516
+
517
+ **Placeholder controls** provide visual affordances: an overlay pattern and a "Replace" button for guided interaction.
518
+
519
+ ### Block-Level vs Fill-Level Behavior
520
+
521
+ The key distinction in placeholder implementation depends on block type:
522
+
523
+ **For graphic blocks** (images/videos): Placeholder behavior is enabled on the **fill**, while controls are enabled on the **block**. This pattern reflects how graphic blocks contain fills that can be replaced.
524
+
525
+ **For text blocks**: Placeholder behavior and controls are both enabled directly on the **block**.
526
+
527
+ We can check support with `supportsPlaceholderBehavior()` for both blocks and fills, and `supportsPlaceholderControls()` for blocks.
528
+
529
+ ## Checking Placeholder Support
530
+
531
+ Before enabling placeholder features, check if a block supports them:
532
+
533
+ ```typescript highlight-check-support
534
+ // Step 4: Check if block/fill supports placeholder features
535
+ const fill1 = engine.block.getFill(block1);
536
+ const supportsBehavior = engine.block.supportsPlaceholderBehavior(fill1);
537
+ const supportsControls = engine.block.supportsPlaceholderControls(block1);
538
+ ```
539
+
540
+ The `supportsPlaceholderBehavior()` method indicates whether a block can become a drop-zone. The `supportsPlaceholderControls()` method shows if visual controls (overlay and button) are available.
541
+
542
+ ## Enabling Placeholder Behavior
543
+
544
+ To convert a block into a placeholder drop-zone, enable placeholder behavior. The approach differs based on block type.
545
+
546
+ ### For Graphic Blocks (Images/Videos)
547
+
548
+ For graphic blocks, placeholder behavior must be enabled on the **fill**, not the block itself:
549
+
550
+ ```typescript highlight-enable-behavior
551
+ // Enable placeholder behavior on the fill (for graphic blocks)
552
+ if (supportsBehavior) {
553
+ engine.block.setPlaceholderBehaviorEnabled(fill1, true);
554
+ }
555
+ ```
556
+
557
+ This pattern is critical: `setPlaceholderBehaviorEnabled()` is called on the fill obtained from `block.getFill()`. This reflects the underlying architecture where graphic blocks contain replaceable fills.
558
+
559
+ ### For Text Blocks
560
+
561
+ For text blocks, placeholder behavior is enabled directly on the block, as text blocks don't use fills in the same way.
562
+
563
+ We can verify placeholder behavior state with `isPlaceholderBehaviorEnabled()` on the appropriate target (fill for graphics, block for text).
564
+
565
+ ## Enabling Adopter Mode Interaction
566
+
567
+ Placeholder behavior alone isn't enough - blocks must also be enabled for interaction in Adopter mode:
568
+
569
+ ```typescript highlight-enable-adopter-mode
570
+ // Step 3: Enable placeholder behavior ("Act as a placeholder")
571
+ // This makes the block interactive in Adopter mode
572
+ engine.block.setPlaceholderEnabled(block1, true);
573
+ ```
574
+
575
+ The `setPlaceholderEnabled()` method controls whether the placeholder is interactive for users in Adopter role. CE.SDK distinguishes Creator (full access) and Adopter (replace-only) roles.
576
+
577
+ ### Automatic Management
578
+
579
+ In practice, `setPlaceholderEnabled()` is typically managed automatically by the editor: when you enable relevant scopes (like `fill/change` for graphics or `text/edit` for text), the placeholder interaction is automatically enabled. When all scopes are disabled, placeholder interaction is automatically disabled. This automatic behavior simplifies template creation workflows.
580
+
581
+ ## Configuring Visual Feedback
582
+
583
+ Placeholders can display visual indicators to guide users through the replacement workflow.
584
+
585
+ ### Combined Setup: The "Act as Placeholder" Pattern
586
+
587
+ In the CE.SDK UI, the "Act as Placeholder" checkbox enables placeholder behavior and both visual controls simultaneously. This combined pattern is the recommended approach:
588
+
589
+ ```typescript highlight-full-configuration
590
+ // Complete "Act as Placeholder" setup
591
+ const fillForConfig = engine.block.getFill(block1);
592
+ if (engine.block.supportsPlaceholderBehavior(fillForConfig)) {
593
+ engine.block.setPlaceholderBehaviorEnabled(fillForConfig, true);
594
+ }
595
+ if (supportsControls) {
596
+ engine.block.setPlaceholderControlsOverlayEnabled(block1, true);
597
+ engine.block.setPlaceholderControlsButtonEnabled(block1, true);
598
+ }
599
+ ```
600
+
601
+ This pattern ensures placeholder behavior is enabled on the appropriate target (fill for graphics, block for text) along with both visual controls on the block.
602
+
603
+ ### Individual Control Options
604
+
605
+ Visual controls can also be managed independently if needed:
606
+
607
+ **Overlay Pattern** - The overlay shows a dotted surface indicating a drop-zone:
608
+
609
+ ```typescript highlight-enable-overlay
610
+ // Enable placeholder overlay pattern
611
+ if (supportsControls) {
612
+ engine.block.setPlaceholderControlsOverlayEnabled(block1, true);
613
+ }
614
+ ```
615
+
616
+ **Replace Button** - The button provides a single-tap entry point for touch devices:
617
+
618
+ ```typescript highlight-enable-button
619
+ // Enable placeholder button
620
+ if (supportsControls) {
621
+ engine.block.setPlaceholderControlsButtonEnabled(block1, true);
622
+ }
623
+ ```
624
+
625
+ Individual control is useful when you want specific visual feedback without the full placeholder workflow.
626
+
627
+ ## Scope Requirements and Dependencies
628
+
629
+ Placeholders depend on specific scopes being enabled to function correctly. Understanding these dependencies prevents common configuration errors.
630
+
631
+ For graphic blocks (images/videos), the `fill/change` scope must be enabled before placeholder behavior will work. When you disable `fill/change`, the editor automatically disables placeholder behavior and controls to maintain consistency.
632
+
633
+ For text blocks, the `text/edit` scope must be enabled before placeholder behavior can function.
634
+
635
+ **Optional related scopes** that enhance placeholder functionality:
636
+
637
+ - `fill/changeType` - Allows changing between image, video, and solid color fills
638
+ - `layer/crop` - Enables cropping replacement images
639
+ - `text/character` - Allows font and character formatting for text placeholders
640
+
641
+ ## Working with Multiple Placeholders
642
+
643
+ When creating templates with multiple placeholders, apply settings systematically:
644
+
645
+ ```typescript highlight-batch-operation
646
+ // Batch operation: Apply settings to multiple blocks
647
+ const graphicBlocks = [block1, block2];
648
+ graphicBlocks.forEach((block) => {
649
+ // Enable placeholder for each block
650
+ engine.block.setPlaceholderEnabled(block, true);
651
+
652
+ const fill = engine.block.getFill(block);
653
+ if (engine.block.supportsPlaceholderBehavior(fill)) {
654
+ engine.block.setPlaceholderBehaviorEnabled(fill, true);
655
+ }
656
+ });
657
+ ```
658
+
659
+ This pattern works well for collage templates, product showcases, or any layout requiring multiple content slots.
660
+
661
+ ## API Reference
662
+
663
+ | Method | Description |
664
+ | ----------------------------------------------------- | ----------------------------------------------------------- |
665
+ | `engine.block.supportsPlaceholderBehavior()` | Checks whether the block supports placeholder behavior |
666
+ | `engine.block.setPlaceholderBehaviorEnabled()` | Enables or disables placeholder behavior for a block |
667
+ | `engine.block.isPlaceholderBehaviorEnabled()` | Queries whether placeholder behavior is enabled |
668
+ | `engine.block.setPlaceholderEnabled()` | Enables or disables placeholder interaction in Adopter mode |
669
+ | `engine.block.isPlaceholderEnabled()` | Queries whether placeholder interaction is enabled |
670
+ | `engine.block.supportsPlaceholderControls()` | Checks whether the block supports placeholder controls |
671
+ | `engine.block.setPlaceholderControlsOverlayEnabled()` | Enables or disables the placeholder overlay pattern |
672
+ | `engine.block.isPlaceholderControlsOverlayEnabled()` | Queries whether the overlay pattern is shown |
673
+ | `engine.block.setPlaceholderControlsButtonEnabled()` | Enables or disables the placeholder button |
674
+ | `engine.block.isPlaceholderControlsButtonEnabled()` | Queries whether the placeholder button is shown |
675
+
676
+ ## Next Steps
677
+
678
+ - [Lock the Template](./create-templates/lock.md) - Restrict editing access to specific elements or properties to enforce design rules
679
+ - [Text Variables](./create-templates/add-dynamic-content/text-variables.md) - Define dynamic text elements that can be populated with custom values
680
+
681
+ ---
682
+
683
+ ## More Resources
684
+
685
+ - **[Vanilla JS/TS Documentation Index](https://img.ly/docs/cesdk/js.md)** - Browse all Vanilla JS/TS documentation
686
+ - **[Complete Documentation](./llms-full.txt.md)** - Full documentation in one file (for LLMs)
687
+ - **[Web Documentation](./js.md)** - Interactive documentation with examples
688
+ - **[Support](mailto:support@img.ly)** - Contact IMG.LY support