allyhub 0.6.0 → 0.7.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 (621) hide show
  1. package/dist/audio-text.js +1 -1
  2. package/dist/commands/add.js +2 -2
  3. package/dist/commands/cloud-tools.js +5 -5
  4. package/dist/commands/dev.js +1 -1
  5. package/dist/commands/frames/piece.js +1 -1
  6. package/dist/commands/frames/sheet.js +1 -1
  7. package/dist/commands/frames.js +8 -8
  8. package/dist/commands/index.js +1 -1
  9. package/dist/commands/inspect/common.js +1 -1
  10. package/dist/commands/inspect/layout.js +1 -1
  11. package/dist/commands/render.js +1 -1
  12. package/dist/commands/sheet.js +5 -5
  13. package/dist/commands/site.js +3 -2
  14. package/dist/commands/skills.js +3 -3
  15. package/dist/commands/slides.js +2 -2
  16. package/dist/node_modules/@allyhub-next/audio/dist/node/index.js +1 -1
  17. package/dist/node_modules/@allyhub-next/audio/dist/node/master.js +1 -1
  18. package/dist/node_modules/@allyhub-next/audio/package.json +1 -1
  19. package/dist/node_modules/@allyhub-next/browser/dist/html.js +1 -1
  20. package/dist/node_modules/@allyhub-next/browser/package.json +1 -1
  21. package/dist/node_modules/@allyhub-next/build/dist/content.d.ts +4 -0
  22. package/dist/node_modules/@allyhub-next/build/dist/content.js +1 -1
  23. package/dist/node_modules/@allyhub-next/build/dist/index.d.ts +2 -2
  24. package/dist/node_modules/@allyhub-next/build/dist/index.js +1 -1
  25. package/dist/node_modules/@allyhub-next/build/dist/meta-worker.d.ts +2 -2
  26. package/dist/node_modules/@allyhub-next/build/dist/meta-worker.js +3 -3
  27. package/dist/node_modules/@allyhub-next/build/dist/move-refs.d.ts +1 -1
  28. package/dist/node_modules/@allyhub-next/build/dist/move-refs.js +1 -1
  29. package/dist/node_modules/@allyhub-next/build/dist/plugin.d.ts +12 -3
  30. package/dist/node_modules/@allyhub-next/build/dist/plugin.js +7 -6
  31. package/dist/node_modules/@allyhub-next/build/dist/prepare.d.ts +9 -5
  32. package/dist/node_modules/@allyhub-next/build/dist/prepare.js +2 -2
  33. package/dist/node_modules/@allyhub-next/build/dist/vite.d.ts +10 -0
  34. package/dist/node_modules/@allyhub-next/build/dist/vite.js +2 -2
  35. package/dist/node_modules/@allyhub-next/build/package.json +1 -1
  36. package/dist/node_modules/@allyhub-next/chart/dist/chart-xml.js +2 -2
  37. package/dist/node_modules/@allyhub-next/chart/dist/chart.d.ts +14 -5
  38. package/dist/node_modules/@allyhub-next/chart/dist/chart.js +1 -1
  39. package/dist/node_modules/@allyhub-next/chart/package.json +1 -1
  40. package/dist/node_modules/@allyhub-next/check/dist/check.js +3 -3
  41. package/dist/node_modules/@allyhub-next/check/package.json +1 -1
  42. package/dist/node_modules/@allyhub-next/cloud/dist/blobs.js +2 -0
  43. package/dist/node_modules/@allyhub-next/cloud/dist/call.js +4 -2
  44. package/dist/node_modules/@allyhub-next/cloud/dist/client.js +1 -1
  45. package/dist/node_modules/@allyhub-next/cloud/dist/errors.js +1 -1
  46. package/dist/node_modules/@allyhub-next/cloud/dist/hashes.js +2 -0
  47. package/dist/node_modules/@allyhub-next/cloud/dist/index.js +1 -1
  48. package/dist/node_modules/@allyhub-next/cloud/dist/sites.js +2 -0
  49. package/dist/node_modules/@allyhub-next/cloud/dist/voice.js +1 -1
  50. package/dist/node_modules/@allyhub-next/cloud/package.json +1 -1
  51. package/dist/node_modules/@allyhub-next/components/package.json +1 -1
  52. package/dist/node_modules/@allyhub-next/components/r/caption-subtitle.json +1 -1
  53. package/dist/node_modules/@allyhub-next/components/src/caption-subtitle.ts +54 -16
  54. package/dist/node_modules/@allyhub-next/dev-server/dist/background.js +1 -1
  55. package/dist/node_modules/@allyhub-next/dev-server/dist/fonts.js +2 -0
  56. package/dist/node_modules/@allyhub-next/dev-server/dist/index.js +1 -1
  57. package/dist/node_modules/@allyhub-next/dev-server/dist/live.js +1 -1
  58. package/dist/node_modules/@allyhub-next/dev-server/dist/project.js +1 -1
  59. package/dist/node_modules/@allyhub-next/dev-server/dist/reach.js +2 -0
  60. package/dist/node_modules/@allyhub-next/dev-server/dist/record.js +2 -0
  61. package/dist/node_modules/@allyhub-next/dev-server/dist/server.js +2 -2
  62. package/dist/node_modules/@allyhub-next/dev-server/dist/tools.js +1 -1
  63. package/dist/node_modules/@allyhub-next/dev-server/dist/tree.js +2 -0
  64. package/dist/node_modules/@allyhub-next/dev-server/package.json +1 -1
  65. package/dist/node_modules/@allyhub-next/doc/package.json +1 -1
  66. package/dist/node_modules/@allyhub-next/export/dist/deck-pptx.js +1 -1
  67. package/dist/node_modules/@allyhub-next/export/dist/export.js +5 -5
  68. package/dist/node_modules/@allyhub-next/export/dist/index.js +1 -1
  69. package/dist/node_modules/@allyhub-next/export/package.json +1 -1
  70. package/dist/node_modules/@allyhub-next/formats/dist/data/deck-code.d.ts +205 -0
  71. package/dist/node_modules/@allyhub-next/formats/dist/data/deck-code.js +2 -0
  72. package/dist/node_modules/@allyhub-next/formats/dist/data/script.d.ts +4 -1
  73. package/dist/node_modules/@allyhub-next/formats/dist/data/script.js +1 -1
  74. package/dist/node_modules/@allyhub-next/formats/dist/data/sheet.d.ts +69 -18
  75. package/dist/node_modules/@allyhub-next/formats/dist/data/sheet.js +1 -1
  76. package/dist/node_modules/@allyhub-next/formats/dist/data/slides.d.ts +847 -116
  77. package/dist/node_modules/@allyhub-next/formats/dist/data/slides.js +1 -1
  78. package/dist/node_modules/@allyhub-next/formats/dist/data/website.d.ts +20 -0
  79. package/dist/node_modules/@allyhub-next/formats/dist/data/website.js +2 -0
  80. package/dist/node_modules/@allyhub-next/formats/dist/index.d.ts +3 -0
  81. package/dist/node_modules/@allyhub-next/formats/dist/index.js +1 -1
  82. package/dist/node_modules/@allyhub-next/formats/dist/items.d.ts +1 -1
  83. package/dist/node_modules/@allyhub-next/formats/dist/items.js +1 -1
  84. package/dist/node_modules/@allyhub-next/formats/dist/media-type.d.ts +3 -0
  85. package/dist/node_modules/@allyhub-next/formats/dist/media-type.js +2 -0
  86. package/dist/node_modules/@allyhub-next/formats/dist/schemas.d.ts +501 -38
  87. package/dist/node_modules/@allyhub-next/formats/dist/schemas.js +1 -1
  88. package/dist/node_modules/@allyhub-next/formats/dist/strict.d.ts +2 -0
  89. package/dist/node_modules/@allyhub-next/formats/dist/strict.js +1 -1
  90. package/dist/node_modules/@allyhub-next/formats/package.json +2 -1
  91. package/dist/node_modules/@allyhub-next/measure/package.json +1 -1
  92. package/dist/node_modules/@allyhub-next/media/dist/index.d.ts +1 -1
  93. package/dist/node_modules/@allyhub-next/media/dist/index.js +1 -1
  94. package/dist/node_modules/@allyhub-next/media/dist/sheet.d.ts +2 -0
  95. package/dist/node_modules/@allyhub-next/media/dist/sheet.js +7 -7
  96. package/dist/node_modules/@allyhub-next/media/package.json +1 -1
  97. package/dist/node_modules/@allyhub-next/model/package.json +1 -1
  98. package/dist/node_modules/@allyhub-next/ooxml/dist/brightness.d.ts +31 -0
  99. package/dist/node_modules/@allyhub-next/ooxml/dist/brightness.js +2 -0
  100. package/dist/node_modules/@allyhub-next/ooxml/dist/color.d.ts +33 -0
  101. package/dist/node_modules/@allyhub-next/ooxml/dist/color.js +2 -0
  102. package/dist/node_modules/@allyhub-next/ooxml/dist/enums.d.ts +13 -0
  103. package/dist/node_modules/@allyhub-next/ooxml/dist/enums.js +2 -0
  104. package/dist/node_modules/@allyhub-next/ooxml/dist/ext.d.ts +79 -0
  105. package/dist/node_modules/@allyhub-next/ooxml/dist/ext.js +2 -0
  106. package/dist/node_modules/@allyhub-next/ooxml/dist/generated/enums.d.ts +132 -0
  107. package/dist/node_modules/@allyhub-next/ooxml/dist/generated/enums.js +2 -0
  108. package/dist/node_modules/@allyhub-next/ooxml/dist/generated/presets.d.ts +28 -0
  109. package/dist/node_modules/@allyhub-next/ooxml/dist/generated/presets.js +2 -0
  110. package/dist/node_modules/@allyhub-next/ooxml/dist/generated/spec.d.ts +4708 -0
  111. package/dist/node_modules/@allyhub-next/ooxml/dist/generated/spec.js +2 -0
  112. package/dist/node_modules/@allyhub-next/ooxml/dist/geometry/index.d.ts +57 -0
  113. package/dist/node_modules/@allyhub-next/ooxml/dist/geometry/index.js +2 -0
  114. package/dist/node_modules/@allyhub-next/ooxml/dist/index.d.ts +10 -0
  115. package/dist/node_modules/@allyhub-next/ooxml/dist/index.js +2 -0
  116. package/dist/node_modules/@allyhub-next/ooxml/dist/mce.d.ts +12 -0
  117. package/dist/node_modules/@allyhub-next/ooxml/dist/mce.js +2 -0
  118. package/dist/node_modules/@allyhub-next/ooxml/dist/node.d.ts +111 -0
  119. package/dist/node_modules/@allyhub-next/ooxml/dist/node.js +2 -0
  120. package/dist/node_modules/@allyhub-next/ooxml/dist/ns.d.ts +45 -0
  121. package/dist/node_modules/@allyhub-next/ooxml/dist/ns.js +2 -0
  122. package/dist/node_modules/@allyhub-next/ooxml/dist/opc.d.ts +48 -0
  123. package/dist/node_modules/@allyhub-next/ooxml/dist/opc.js +2 -0
  124. package/dist/node_modules/@allyhub-next/ooxml/dist/report.d.ts +45 -0
  125. package/dist/node_modules/@allyhub-next/ooxml/dist/report.js +2 -0
  126. package/dist/node_modules/@allyhub-next/ooxml/dist/xml.d.ts +28 -0
  127. package/dist/node_modules/@allyhub-next/ooxml/dist/xml.js +2 -0
  128. package/dist/node_modules/@allyhub-next/ooxml/package.json +26 -0
  129. package/dist/node_modules/@allyhub-next/project/dist/deck-keys.js +2 -0
  130. package/dist/node_modules/@allyhub-next/project/dist/deck-measure.js +2 -0
  131. package/dist/node_modules/@allyhub-next/project/dist/deck-pool.js +2 -0
  132. package/dist/node_modules/@allyhub-next/project/dist/index.js +1 -1
  133. package/dist/node_modules/@allyhub-next/project/dist/session.js +1 -1
  134. package/dist/node_modules/@allyhub-next/project/dist/stills.js +2 -0
  135. package/dist/node_modules/@allyhub-next/project/package.json +1 -1
  136. package/dist/node_modules/@allyhub-next/protocol/dist/account.d.ts +338 -0
  137. package/dist/node_modules/@allyhub-next/protocol/dist/account.js +2 -0
  138. package/dist/node_modules/@allyhub-next/protocol/dist/auth.d.ts +12 -13
  139. package/dist/node_modules/@allyhub-next/protocol/dist/auth.js +1 -1
  140. package/dist/node_modules/@allyhub-next/protocol/dist/blobs.d.ts +35 -0
  141. package/dist/node_modules/@allyhub-next/protocol/dist/blobs.js +2 -0
  142. package/dist/node_modules/@allyhub-next/protocol/dist/cloud.d.ts +101 -32
  143. package/dist/node_modules/@allyhub-next/protocol/dist/cloud.js +1 -1
  144. package/dist/node_modules/@allyhub-next/protocol/dist/editor.d.ts +79 -5
  145. package/dist/node_modules/@allyhub-next/protocol/dist/editor.js +1 -1
  146. package/dist/node_modules/@allyhub-next/protocol/dist/files.d.ts +2 -2
  147. package/dist/node_modules/@allyhub-next/protocol/dist/index.d.ts +6 -0
  148. package/dist/node_modules/@allyhub-next/protocol/dist/index.js +1 -1
  149. package/dist/node_modules/@allyhub-next/protocol/dist/notes.d.ts +21 -0
  150. package/dist/node_modules/@allyhub-next/protocol/dist/notes.js +1 -1
  151. package/dist/node_modules/@allyhub-next/protocol/dist/open.d.ts +13 -0
  152. package/dist/node_modules/@allyhub-next/protocol/dist/open.js +2 -0
  153. package/dist/node_modules/@allyhub-next/protocol/dist/registry.d.ts +73 -59
  154. package/dist/node_modules/@allyhub-next/protocol/dist/registry.js +1 -1
  155. package/dist/node_modules/@allyhub-next/protocol/dist/routes.d.ts +1 -1
  156. package/dist/node_modules/@allyhub-next/protocol/dist/routes.js +1 -1
  157. package/dist/node_modules/@allyhub-next/protocol/dist/shares.d.ts +115 -0
  158. package/dist/node_modules/@allyhub-next/protocol/dist/shares.js +2 -0
  159. package/dist/node_modules/@allyhub-next/protocol/dist/sites.d.ts +293 -0
  160. package/dist/node_modules/@allyhub-next/protocol/dist/sites.js +2 -0
  161. package/dist/node_modules/@allyhub-next/protocol/dist/snapshots.d.ts +377 -0
  162. package/dist/node_modules/@allyhub-next/protocol/dist/snapshots.js +2 -0
  163. package/dist/node_modules/@allyhub-next/protocol/dist/teams.d.ts +27 -9
  164. package/dist/node_modules/@allyhub-next/protocol/dist/teams.js +1 -1
  165. package/dist/node_modules/@allyhub-next/protocol/dist/tools.d.ts +53 -14
  166. package/dist/node_modules/@allyhub-next/protocol/dist/tools.js +1 -1
  167. package/dist/node_modules/@allyhub-next/protocol/package.json +2 -1
  168. package/dist/node_modules/@allyhub-next/registry/package.json +1 -1
  169. package/dist/node_modules/@allyhub-next/render/dist/doc/fonts.js +3 -2
  170. package/dist/node_modules/@allyhub-next/render/dist/doc/index.js +1 -1
  171. package/dist/node_modules/@allyhub-next/render/dist/doc/pdf.js +34 -0
  172. package/dist/node_modules/@allyhub-next/render/dist/doc/print.js +4 -4
  173. package/dist/node_modules/@allyhub-next/render/dist/exports.js +2 -2
  174. package/dist/node_modules/@allyhub-next/render/dist/pdf.js +2 -0
  175. package/dist/node_modules/@allyhub-next/render/package.json +1 -1
  176. package/dist/node_modules/@allyhub-next/runtime/dist/fonts.js +1 -1
  177. package/dist/node_modules/@allyhub-next/runtime/dist/music.js +1 -1
  178. package/dist/node_modules/@allyhub-next/runtime/package.json +1 -1
  179. package/dist/node_modules/@allyhub-next/runtimes/package.json +1 -1
  180. package/dist/node_modules/@allyhub-next/runtimes/schemas/runtimes.schema.json +25 -5
  181. package/dist/node_modules/@allyhub-next/scaffold/dist/index.js +4 -4
  182. package/dist/node_modules/@allyhub-next/scaffold/package.json +1 -1
  183. package/dist/node_modules/@allyhub-next/scenery/package.json +1 -1
  184. package/dist/node_modules/@allyhub-next/scenery-host/dist/bundle.d.ts +10 -0
  185. package/dist/node_modules/@allyhub-next/scenery-host/dist/bundle.js +3 -3
  186. package/dist/node_modules/@allyhub-next/scenery-host/package.json +1 -1
  187. package/dist/node_modules/@allyhub-next/sheet/dist/calc/analyse.d.ts +9 -3
  188. package/dist/node_modules/@allyhub-next/sheet/dist/calc/analyse.js +1 -1
  189. package/dist/node_modules/@allyhub-next/sheet/dist/calc/coerce.d.ts +5 -1
  190. package/dist/node_modules/@allyhub-next/sheet/dist/calc/coerce.js +1 -1
  191. package/dist/node_modules/@allyhub-next/sheet/dist/calc/engine.d.ts +60 -13
  192. package/dist/node_modules/@allyhub-next/sheet/dist/calc/engine.js +1 -1
  193. package/dist/node_modules/@allyhub-next/sheet/dist/calc/functions/aggregate.js +1 -1
  194. package/dist/node_modules/@allyhub-next/sheet/dist/calc/functions/convert.d.ts +4 -0
  195. package/dist/node_modules/@allyhub-next/sheet/dist/calc/functions/convert.js +2 -0
  196. package/dist/node_modules/@allyhub-next/sheet/dist/calc/functions/criteria.js +1 -1
  197. package/dist/node_modules/@allyhub-next/sheet/dist/calc/functions/database.js +1 -1
  198. package/dist/node_modules/@allyhub-next/sheet/dist/calc/functions/date.js +1 -1
  199. package/dist/node_modules/@allyhub-next/sheet/dist/calc/functions/define.d.ts +27 -1
  200. package/dist/node_modules/@allyhub-next/sheet/dist/calc/functions/define.js +1 -1
  201. package/dist/node_modules/@allyhub-next/sheet/dist/calc/functions/delimiters.d.ts +16 -0
  202. package/dist/node_modules/@allyhub-next/sheet/dist/calc/functions/delimiters.js +2 -0
  203. package/dist/node_modules/@allyhub-next/sheet/dist/calc/functions/dynamic.d.ts +18 -1
  204. package/dist/node_modules/@allyhub-next/sheet/dist/calc/functions/dynamic.js +1 -1
  205. package/dist/node_modules/@allyhub-next/sheet/dist/calc/functions/finance.js +1 -1
  206. package/dist/node_modules/@allyhub-next/sheet/dist/calc/functions/index.d.ts +2 -0
  207. package/dist/node_modules/@allyhub-next/sheet/dist/calc/functions/index.js +1 -1
  208. package/dist/node_modules/@allyhub-next/sheet/dist/calc/functions/info.js +1 -1
  209. package/dist/node_modules/@allyhub-next/sheet/dist/calc/functions/kernels.js +1 -1
  210. package/dist/node_modules/@allyhub-next/sheet/dist/calc/functions/logical.js +1 -1
  211. package/dist/node_modules/@allyhub-next/sheet/dist/calc/functions/lookup.js +1 -1
  212. package/dist/node_modules/@allyhub-next/sheet/dist/calc/functions/maths.js +1 -1
  213. package/dist/node_modules/@allyhub-next/sheet/dist/calc/functions/modern.d.ts +2 -0
  214. package/dist/node_modules/@allyhub-next/sheet/dist/calc/functions/modern.js +2 -0
  215. package/dist/node_modules/@allyhub-next/sheet/dist/calc/functions/text.js +1 -1
  216. package/dist/node_modules/@allyhub-next/sheet/dist/calc/graph.d.ts +38 -0
  217. package/dist/node_modules/@allyhub-next/sheet/dist/calc/graph.js +2 -0
  218. package/dist/node_modules/@allyhub-next/sheet/dist/calc/indexes.d.ts +19 -0
  219. package/dist/node_modules/@allyhub-next/sheet/dist/calc/indexes.js +2 -0
  220. package/dist/node_modules/@allyhub-next/sheet/dist/calc/remote.d.ts +49 -0
  221. package/dist/node_modules/@allyhub-next/sheet/dist/calc/remote.js +2 -0
  222. package/dist/node_modules/@allyhub-next/sheet/dist/calc/server.d.ts +82 -0
  223. package/dist/node_modules/@allyhub-next/sheet/dist/calc/server.js +2 -0
  224. package/dist/node_modules/@allyhub-next/sheet/dist/calc/types.d.ts +6 -1
  225. package/dist/node_modules/@allyhub-next/sheet/dist/calc/types.js +1 -1
  226. package/dist/node_modules/@allyhub-next/sheet/dist/chart.js +1 -1
  227. package/dist/node_modules/@allyhub-next/sheet/dist/check.js +1 -1
  228. package/dist/node_modules/@allyhub-next/sheet/dist/diff.d.ts +15 -0
  229. package/dist/node_modules/@allyhub-next/sheet/dist/diff.js +1 -1
  230. package/dist/node_modules/@allyhub-next/sheet/dist/export.d.ts +29 -8
  231. package/dist/node_modules/@allyhub-next/sheet/dist/export.js +3 -4
  232. package/dist/node_modules/@allyhub-next/sheet/dist/file.js +2 -2
  233. package/dist/node_modules/@allyhub-next/sheet/dist/format.d.ts +8 -2
  234. package/dist/node_modules/@allyhub-next/sheet/dist/format.js +1 -1
  235. package/dist/node_modules/@allyhub-next/sheet/dist/html.d.ts +52 -4
  236. package/dist/node_modules/@allyhub-next/sheet/dist/html.js +43 -11
  237. package/dist/node_modules/@allyhub-next/sheet/dist/index.d.ts +7 -3
  238. package/dist/node_modules/@allyhub-next/sheet/dist/index.js +1 -1
  239. package/dist/node_modules/@allyhub-next/sheet/dist/inspect.js +1 -1
  240. package/dist/node_modules/@allyhub-next/sheet/dist/paginate.d.ts +98 -0
  241. package/dist/node_modules/@allyhub-next/sheet/dist/paginate.js +2 -0
  242. package/dist/node_modules/@allyhub-next/sheet/dist/structure.js +1 -1
  243. package/dist/node_modules/@allyhub-next/sheet/dist/table-style.d.ts +32 -0
  244. package/dist/node_modules/@allyhub-next/sheet/dist/table-style.js +2 -0
  245. package/dist/node_modules/@allyhub-next/sheet/dist/table-styles.d.ts +3 -0
  246. package/dist/node_modules/@allyhub-next/sheet/dist/table-styles.js +2 -0
  247. package/dist/node_modules/@allyhub-next/sheet/dist/values.js +1 -1
  248. package/dist/node_modules/@allyhub-next/sheet/dist/workbook.d.ts +10 -1
  249. package/dist/node_modules/@allyhub-next/sheet/dist/workbook.js +1 -1
  250. package/dist/node_modules/@allyhub-next/sheet/dist/xlsx/charts.d.ts +10 -1
  251. package/dist/node_modules/@allyhub-next/sheet/dist/xlsx/charts.js +1 -1
  252. package/dist/node_modules/@allyhub-next/sheet/dist/xlsx/formula.d.ts +14 -4
  253. package/dist/node_modules/@allyhub-next/sheet/dist/xlsx/formula.js +2 -2
  254. package/dist/node_modules/@allyhub-next/sheet/dist/xlsx/functions.d.ts +11 -1
  255. package/dist/node_modules/@allyhub-next/sheet/dist/xlsx/functions.js +36 -16
  256. package/dist/node_modules/@allyhub-next/sheet/dist/xlsx/import.d.ts +3 -1
  257. package/dist/node_modules/@allyhub-next/sheet/dist/xlsx/import.js +1 -1
  258. package/dist/node_modules/@allyhub-next/sheet/dist/xlsx/read.d.ts +42 -1
  259. package/dist/node_modules/@allyhub-next/sheet/dist/xlsx/read.js +2 -1
  260. package/dist/node_modules/@allyhub-next/sheet/dist/xlsx/sax.d.ts +23 -0
  261. package/dist/node_modules/@allyhub-next/sheet/dist/xlsx/sax.js +2 -0
  262. package/dist/node_modules/@allyhub-next/sheet/dist/xlsx/styles.d.ts +2 -0
  263. package/dist/node_modules/@allyhub-next/sheet/dist/xlsx/styles.js +1 -1
  264. package/dist/node_modules/@allyhub-next/sheet/dist/xlsx/write.d.ts +6 -0
  265. package/dist/node_modules/@allyhub-next/sheet/dist/xlsx/write.js +1 -1
  266. package/dist/node_modules/@allyhub-next/sheet/dist/xlsx/zip.d.ts +40 -0
  267. package/dist/node_modules/@allyhub-next/sheet/dist/xlsx/zip.js +2 -0
  268. package/dist/node_modules/@allyhub-next/sheet/package.json +1 -1
  269. package/dist/node_modules/@allyhub-next/slides-core/dist/animation.js +1 -1
  270. package/dist/node_modules/@allyhub-next/slides-core/dist/api.d.ts +59 -39
  271. package/dist/node_modules/@allyhub-next/slides-core/dist/api.js +2 -2
  272. package/dist/node_modules/@allyhub-next/slides-core/dist/capabilities.js +1 -1
  273. package/dist/node_modules/@allyhub-next/slides-core/dist/chart-api.d.ts +27 -13
  274. package/dist/node_modules/@allyhub-next/slides-core/dist/chart-api.js +1 -1
  275. package/dist/node_modules/@allyhub-next/slides-core/dist/check.js +1 -1
  276. package/dist/node_modules/@allyhub-next/slides-core/dist/code.d.ts +33 -0
  277. package/dist/node_modules/@allyhub-next/slides-core/dist/code.js +2 -0
  278. package/dist/node_modules/@allyhub-next/slides-core/dist/components.d.ts +31 -0
  279. package/dist/node_modules/@allyhub-next/slides-core/dist/components.js +2 -0
  280. package/dist/node_modules/@allyhub-next/slides-core/dist/enums.d.ts +179 -16
  281. package/dist/node_modules/@allyhub-next/slides-core/dist/enums.js +1 -1
  282. package/dist/node_modules/@allyhub-next/slides-core/dist/file.d.ts +43 -21
  283. package/dist/node_modules/@allyhub-next/slides-core/dist/file.js +3 -3
  284. package/dist/node_modules/@allyhub-next/slides-core/dist/identity.d.ts +17 -0
  285. package/dist/node_modules/@allyhub-next/slides-core/dist/identity.js +2 -0
  286. package/dist/node_modules/@allyhub-next/slides-core/dist/index.d.ts +5 -1
  287. package/dist/node_modules/@allyhub-next/slides-core/dist/index.js +1 -1
  288. package/dist/node_modules/@allyhub-next/slides-core/dist/lang.d.ts +6 -0
  289. package/dist/node_modules/@allyhub-next/slides-core/dist/lang.js +2 -0
  290. package/dist/node_modules/@allyhub-next/slides-core/dist/measure.js +1 -1
  291. package/dist/node_modules/@allyhub-next/slides-core/dist/merge.d.ts +58 -0
  292. package/dist/node_modules/@allyhub-next/slides-core/dist/merge.js +2 -0
  293. package/dist/node_modules/@allyhub-next/slides-core/dist/model.d.ts +2 -4
  294. package/dist/node_modules/@allyhub-next/slides-core/dist/office.d.ts +17 -1
  295. package/dist/node_modules/@allyhub-next/slides-core/dist/office.js +1 -1
  296. package/dist/node_modules/@allyhub-next/slides-core/dist/resolve.d.ts +21 -5
  297. package/dist/node_modules/@allyhub-next/slides-core/dist/resolve.js +1 -1
  298. package/dist/node_modules/@allyhub-next/slides-core/dist/script.d.ts +18 -16
  299. package/dist/node_modules/@allyhub-next/slides-core/dist/script.js +2 -2
  300. package/dist/node_modules/@allyhub-next/slides-core/dist/stage.d.ts +51 -53
  301. package/dist/node_modules/@allyhub-next/slides-core/dist/strict.js +1 -1
  302. package/dist/node_modules/@allyhub-next/slides-core/dist/units.d.ts +27 -0
  303. package/dist/node_modules/@allyhub-next/slides-core/dist/units.js +1 -1
  304. package/dist/node_modules/@allyhub-next/slides-core/dist/values.d.ts +7 -0
  305. package/dist/node_modules/@allyhub-next/slides-core/dist/values.js +2 -0
  306. package/dist/node_modules/@allyhub-next/slides-core/package.json +1 -1
  307. package/dist/node_modules/@allyhub-next/slides-pptx/dist/import/code.js +4 -0
  308. package/dist/node_modules/@allyhub-next/slides-pptx/dist/import/index.js +3 -0
  309. package/dist/node_modules/@allyhub-next/slides-pptx/dist/import/names.js +2 -0
  310. package/dist/node_modules/@allyhub-next/slides-pptx/dist/import/script.js +2 -0
  311. package/dist/node_modules/@allyhub-next/slides-pptx/dist/index.js +1 -1
  312. package/dist/node_modules/@allyhub-next/slides-pptx/dist/read/chart.js +2 -0
  313. package/dist/node_modules/@allyhub-next/slides-pptx/dist/read/common.js +2 -0
  314. package/dist/node_modules/@allyhub-next/slides-pptx/dist/read/index.js +4 -0
  315. package/dist/{site.js → node_modules/@allyhub-next/slides-pptx/dist/read/model.js} +1 -1
  316. package/dist/node_modules/@allyhub-next/slides-pptx/dist/read/shapes.js +2 -0
  317. package/dist/node_modules/@allyhub-next/slides-pptx/dist/read/table.js +2 -0
  318. package/dist/node_modules/@allyhub-next/slides-pptx/dist/read/text.js +2 -0
  319. package/dist/node_modules/@allyhub-next/slides-pptx/dist/read/timing.js +2 -0
  320. package/dist/node_modules/@allyhub-next/slides-pptx/dist/shapes.js +1 -1
  321. package/dist/node_modules/@allyhub-next/slides-pptx/dist/text.js +1 -1
  322. package/dist/node_modules/@allyhub-next/slides-pptx/dist/theme.js +1 -1
  323. package/dist/node_modules/@allyhub-next/slides-pptx/dist/timing.js +1 -1
  324. package/dist/node_modules/@allyhub-next/slides-pptx/dist/write.js +2 -2
  325. package/dist/node_modules/@allyhub-next/slides-pptx/dist/xml.js +2 -2
  326. package/dist/node_modules/@allyhub-next/slides-pptx/package.json +1 -1
  327. package/dist/node_modules/@allyhub-next/slides-runtime/dist/component.js +2 -0
  328. package/dist/node_modules/@allyhub-next/slides-runtime/dist/draw.js +2 -2
  329. package/dist/node_modules/@allyhub-next/slides-runtime/dist/index.js +1 -1
  330. package/dist/node_modules/@allyhub-next/slides-runtime/dist/load.js +5 -5
  331. package/dist/node_modules/@allyhub-next/slides-runtime/package.json +5 -1
  332. package/dist/node_modules/@allyhub-next/stage/dist/index.js +1 -1
  333. package/dist/node_modules/@allyhub-next/stage/dist/page.js +22 -12
  334. package/dist/node_modules/@allyhub-next/stage/dist/scenery-page.js +5 -5
  335. package/dist/node_modules/@allyhub-next/stage/dist/server.js +1 -1
  336. package/dist/node_modules/@allyhub-next/stage/package.json +1 -1
  337. package/dist/node_modules/@allyhub-next/stage-page/dist/host.js +1 -20
  338. package/dist/node_modules/@allyhub-next/stage-page/dist/runtime/probe.html +8 -0
  339. package/dist/{astro.js → node_modules/@allyhub-next/stage-page/dist/runtime/probe.js} +1 -1
  340. package/dist/node_modules/@allyhub-next/stage-page/dist/runtime/runtime.js +79 -0
  341. package/dist/node_modules/@allyhub-next/stage-page/dist/runtime/stage.html +21 -0
  342. package/dist/node_modules/@allyhub-next/stage-page/dist/runtime/stage.js +3 -0
  343. package/dist/node_modules/@allyhub-next/stage-page/dist/runtime/viewer.html +9 -0
  344. package/dist/node_modules/@allyhub-next/stage-page/dist/runtime/viewer.js +3 -0
  345. package/dist/node_modules/@allyhub-next/stage-page/package.json +2 -3
  346. package/dist/node_modules/@allyhub-next/video-core/dist/captions.js +6 -6
  347. package/dist/node_modules/@allyhub-next/video-core/dist/fact.d.ts +47 -8
  348. package/dist/node_modules/@allyhub-next/video-core/dist/fact.js +1 -1
  349. package/dist/node_modules/@allyhub-next/video-core/dist/index.d.ts +1 -0
  350. package/dist/node_modules/@allyhub-next/video-core/dist/index.js +1 -1
  351. package/dist/node_modules/@allyhub-next/video-core/dist/marks.d.ts +14 -0
  352. package/dist/node_modules/@allyhub-next/video-core/dist/marks.js +1 -1
  353. package/dist/node_modules/@allyhub-next/video-core/dist/music.d.ts +2 -1
  354. package/dist/node_modules/@allyhub-next/video-core/dist/piece.d.ts +11 -2
  355. package/dist/node_modules/@allyhub-next/video-core/dist/problem.d.ts +4 -0
  356. package/dist/node_modules/@allyhub-next/video-core/dist/problem.js +1 -1
  357. package/dist/node_modules/@allyhub-next/video-core/dist/schema.d.ts +2 -2
  358. package/dist/node_modules/@allyhub-next/video-core/dist/schema.js +1 -1
  359. package/dist/node_modules/@allyhub-next/video-core/dist/script.d.ts +2 -1
  360. package/dist/node_modules/@allyhub-next/video-core/dist/script.js +1 -1
  361. package/dist/node_modules/@allyhub-next/video-core/dist/source.d.ts +7 -0
  362. package/dist/node_modules/@allyhub-next/video-core/dist/source.js +2 -0
  363. package/dist/node_modules/@allyhub-next/video-core/dist/timeline.d.ts +10 -33
  364. package/dist/node_modules/@allyhub-next/video-core/package.json +1 -1
  365. package/dist/node_modules/@allyhub-next/website/LICENSE +241 -0
  366. package/dist/node_modules/@allyhub-next/website/dist/index.js +2 -0
  367. package/dist/node_modules/@allyhub-next/website/dist/publish.js +3 -0
  368. package/dist/node_modules/@allyhub-next/website/dist/rules.js +2 -0
  369. package/dist/node_modules/@allyhub-next/website/dist/website.js +4 -0
  370. package/dist/node_modules/@allyhub-next/website/package.json +13 -0
  371. package/dist/text/facts-text.js +4 -4
  372. package/dist/works.js +1 -1
  373. package/editor-web/assets/calc-worker-Bz9r26p1.js +158 -0
  374. package/editor-web/assets/dist-0emakyZE.js +36 -0
  375. package/editor-web/assets/dist-B3UoDUa5.js +37 -0
  376. package/editor-web/assets/dist-B6KzR3pN.js +10 -0
  377. package/editor-web/assets/dist-Bc5iA5k1.js +1 -0
  378. package/editor-web/assets/dist-CTQIm8Im.js +10 -0
  379. package/editor-web/assets/dist-CiHNHwyq.js +2 -0
  380. package/editor-web/assets/dist-DNZ8PQ-E.js +224 -0
  381. package/editor-web/assets/index-CFt3ovRY.js +69 -0
  382. package/editor-web/assets/index-ujKjdu_s.css +2 -0
  383. package/editor-web/assets/minus-BhoPZC5P.js +1 -0
  384. package/editor-web/assets/react-C_-rEEBU.js +101 -0
  385. package/editor-web/assets/tabs-Den4gHrU.js +105 -0
  386. package/editor-web/assets/text-align-start-CsW4nqqL.js +1 -0
  387. package/editor-web/index.html +5 -5
  388. package/package.json +8 -14
  389. package/dist/astro.d.ts +0 -2
  390. package/dist/node_modules/@allyhub-next/audio/dist/at-cut.d.ts +0 -52
  391. package/dist/node_modules/@allyhub-next/audio/dist/decode.d.ts +0 -33
  392. package/dist/node_modules/@allyhub-next/audio/dist/envelope.d.ts +0 -37
  393. package/dist/node_modules/@allyhub-next/audio/dist/index.d.ts +0 -17
  394. package/dist/node_modules/@allyhub-next/audio/dist/levels.d.ts +0 -97
  395. package/dist/node_modules/@allyhub-next/audio/dist/master.d.ts +0 -29
  396. package/dist/node_modules/@allyhub-next/audio/dist/music.d.ts +0 -11
  397. package/dist/node_modules/@allyhub-next/audio/dist/node/decode.d.ts +0 -39
  398. package/dist/node_modules/@allyhub-next/audio/dist/node/ebur128.d.ts +0 -25
  399. package/dist/node_modules/@allyhub-next/audio/dist/node/ffmpeg.d.ts +0 -31
  400. package/dist/node_modules/@allyhub-next/audio/dist/node/index.d.ts +0 -8
  401. package/dist/node_modules/@allyhub-next/audio/dist/node/loudness.d.ts +0 -18
  402. package/dist/node_modules/@allyhub-next/audio/dist/node/master.d.ts +0 -42
  403. package/dist/node_modules/@allyhub-next/audio/dist/node/measure.d.ts +0 -60
  404. package/dist/node_modules/@allyhub-next/audio/dist/node/mix.d.ts +0 -31
  405. package/dist/node_modules/@allyhub-next/audio/dist/plan.d.ts +0 -143
  406. package/dist/node_modules/@allyhub-next/audio/dist/recorded.d.ts +0 -26
  407. package/dist/node_modules/@allyhub-next/audio/dist/recording/bandwidth.d.ts +0 -47
  408. package/dist/node_modules/@allyhub-next/audio/dist/recording/chain.d.ts +0 -89
  409. package/dist/node_modules/@allyhub-next/audio/dist/recording/dynamics.d.ts +0 -64
  410. package/dist/node_modules/@allyhub-next/audio/dist/recording/fft.d.ts +0 -26
  411. package/dist/node_modules/@allyhub-next/audio/dist/recording/filters.d.ts +0 -42
  412. package/dist/node_modules/@allyhub-next/audio/dist/recording/fit.d.ts +0 -56
  413. package/dist/node_modules/@allyhub-next/audio/dist/recording/index.d.ts +0 -10
  414. package/dist/node_modules/@allyhub-next/audio/dist/recording/loudness.d.ts +0 -12
  415. package/dist/node_modules/@allyhub-next/audio/dist/recording/measure.d.ts +0 -67
  416. package/dist/node_modules/@allyhub-next/audio/dist/recording/mic.d.ts +0 -32
  417. package/dist/node_modules/@allyhub-next/audio/dist/recording/noise.d.ts +0 -27
  418. package/dist/node_modules/@allyhub-next/audio/dist/recording/presets.d.ts +0 -64
  419. package/dist/node_modules/@allyhub-next/audio/dist/recording/room.d.ts +0 -78
  420. package/dist/node_modules/@allyhub-next/audio/dist/recording/setup.d.ts +0 -111
  421. package/dist/node_modules/@allyhub-next/audio/dist/recording/vec.d.ts +0 -3
  422. package/dist/node_modules/@allyhub-next/audio/dist/render.d.ts +0 -26
  423. package/dist/node_modules/@allyhub-next/audio/dist/sfx.d.ts +0 -10
  424. package/dist/node_modules/@allyhub-next/audio/dist/shape.d.ts +0 -118
  425. package/dist/node_modules/@allyhub-next/audio/dist/voice.d.ts +0 -45
  426. package/dist/node_modules/@allyhub-next/browser/dist/browser.d.ts +0 -24
  427. package/dist/node_modules/@allyhub-next/browser/dist/capture.d.ts +0 -61
  428. package/dist/node_modules/@allyhub-next/browser/dist/cdp.d.ts +0 -51
  429. package/dist/node_modules/@allyhub-next/browser/dist/flags.d.ts +0 -13
  430. package/dist/node_modules/@allyhub-next/browser/dist/frames.d.ts +0 -35
  431. package/dist/node_modules/@allyhub-next/browser/dist/html.d.ts +0 -19
  432. package/dist/node_modules/@allyhub-next/browser/dist/index.d.ts +0 -10
  433. package/dist/node_modules/@allyhub-next/browser/dist/launch.d.ts +0 -35
  434. package/dist/node_modules/@allyhub-next/browser/dist/page.d.ts +0 -67
  435. package/dist/node_modules/@allyhub-next/browser/dist/server.d.ts +0 -26
  436. package/dist/node_modules/@allyhub-next/check/dist/cache.d.ts +0 -46
  437. package/dist/node_modules/@allyhub-next/check/dist/check.d.ts +0 -142
  438. package/dist/node_modules/@allyhub-next/check/dist/generated.d.ts +0 -22
  439. package/dist/node_modules/@allyhub-next/check/dist/index.d.ts +0 -7
  440. package/dist/node_modules/@allyhub-next/check/dist/plans.d.ts +0 -111
  441. package/dist/node_modules/@allyhub-next/check/dist/result.d.ts +0 -12
  442. package/dist/node_modules/@allyhub-next/check/dist/scenery.d.ts +0 -23
  443. package/dist/node_modules/@allyhub-next/dev-server/dist/background.d.ts +0 -50
  444. package/dist/node_modules/@allyhub-next/dev-server/dist/card.d.ts +0 -17
  445. package/dist/node_modules/@allyhub-next/dev-server/dist/exports.d.ts +0 -18
  446. package/dist/node_modules/@allyhub-next/dev-server/dist/index.d.ts +0 -11
  447. package/dist/node_modules/@allyhub-next/dev-server/dist/live.d.ts +0 -77
  448. package/dist/node_modules/@allyhub-next/dev-server/dist/mime.d.ts +0 -2
  449. package/dist/node_modules/@allyhub-next/dev-server/dist/mime.js +0 -2
  450. package/dist/node_modules/@allyhub-next/dev-server/dist/paths.d.ts +0 -27
  451. package/dist/node_modules/@allyhub-next/dev-server/dist/project.d.ts +0 -153
  452. package/dist/node_modules/@allyhub-next/dev-server/dist/reveal.d.ts +0 -6
  453. package/dist/node_modules/@allyhub-next/dev-server/dist/server.d.ts +0 -47
  454. package/dist/node_modules/@allyhub-next/dev-server/dist/sound.d.ts +0 -21
  455. package/dist/node_modules/@allyhub-next/dev-server/dist/stage.d.ts +0 -82
  456. package/dist/node_modules/@allyhub-next/dev-server/dist/stage.js +0 -121
  457. package/dist/node_modules/@allyhub-next/dev-server/dist/tools.d.ts +0 -24
  458. package/dist/node_modules/@allyhub-next/dev-server/dist/validate.d.ts +0 -6
  459. package/dist/node_modules/@allyhub-next/dev-server/dist/watcher.d.ts +0 -47
  460. package/dist/node_modules/@allyhub-next/dev-server/dist/writer.d.ts +0 -51
  461. package/dist/node_modules/@allyhub-next/export/dist/batch.d.ts +0 -70
  462. package/dist/node_modules/@allyhub-next/export/dist/deck-fonts.d.ts +0 -24
  463. package/dist/node_modules/@allyhub-next/export/dist/deck-pptx.d.ts +0 -12
  464. package/dist/node_modules/@allyhub-next/export/dist/export.d.ts +0 -123
  465. package/dist/node_modules/@allyhub-next/export/dist/index.d.ts +0 -5
  466. package/dist/node_modules/@allyhub-next/export/dist/names.d.ts +0 -36
  467. package/dist/node_modules/@allyhub-next/measure/dist/compare.d.ts +0 -195
  468. package/dist/node_modules/@allyhub-next/measure/dist/contrast.d.ts +0 -14
  469. package/dist/node_modules/@allyhub-next/measure/dist/cut-sheet.d.ts +0 -90
  470. package/dist/node_modules/@allyhub-next/measure/dist/cuts.d.ts +0 -108
  471. package/dist/node_modules/@allyhub-next/measure/dist/facts.d.ts +0 -60
  472. package/dist/node_modules/@allyhub-next/measure/dist/fidelity.d.ts +0 -40
  473. package/dist/node_modules/@allyhub-next/measure/dist/flat.d.ts +0 -42
  474. package/dist/node_modules/@allyhub-next/measure/dist/index.d.ts +0 -24
  475. package/dist/node_modules/@allyhub-next/measure/dist/loop.d.ts +0 -22
  476. package/dist/node_modules/@allyhub-next/measure/dist/overlay.d.ts +0 -57
  477. package/dist/node_modules/@allyhub-next/measure/dist/recording-report.d.ts +0 -66
  478. package/dist/node_modules/@allyhub-next/measure/dist/reference/compare.d.ts +0 -118
  479. package/dist/node_modules/@allyhub-next/measure/dist/reference/folder.d.ts +0 -75
  480. package/dist/node_modules/@allyhub-next/measure/dist/reference/interpret.d.ts +0 -39
  481. package/dist/node_modules/@allyhub-next/measure/dist/reference/piece.d.ts +0 -53
  482. package/dist/node_modules/@allyhub-next/measure/dist/reference/sections.d.ts +0 -53
  483. package/dist/node_modules/@allyhub-next/measure/dist/reference/sets.d.ts +0 -84
  484. package/dist/node_modules/@allyhub-next/measure/dist/reference/text.d.ts +0 -27
  485. package/dist/node_modules/@allyhub-next/measure/dist/reference/video.d.ts +0 -55
  486. package/dist/node_modules/@allyhub-next/measure/dist/seams.d.ts +0 -46
  487. package/dist/node_modules/@allyhub-next/measure/dist/sound-measures.d.ts +0 -74
  488. package/dist/node_modules/@allyhub-next/measure/dist/sound-report.d.ts +0 -156
  489. package/dist/node_modules/@allyhub-next/measure/dist/still.d.ts +0 -58
  490. package/dist/node_modules/@allyhub-next/measure/dist/version-voice.d.ts +0 -12
  491. package/dist/node_modules/@allyhub-next/project/dist/console.d.ts +0 -34
  492. package/dist/node_modules/@allyhub-next/project/dist/digest.d.ts +0 -9
  493. package/dist/node_modules/@allyhub-next/project/dist/index.d.ts +0 -11
  494. package/dist/node_modules/@allyhub-next/project/dist/ledger.d.ts +0 -17
  495. package/dist/node_modules/@allyhub-next/project/dist/media-index.d.ts +0 -27
  496. package/dist/node_modules/@allyhub-next/project/dist/page.d.ts +0 -119
  497. package/dist/node_modules/@allyhub-next/project/dist/says.d.ts +0 -15
  498. package/dist/node_modules/@allyhub-next/project/dist/scenery.d.ts +0 -35
  499. package/dist/node_modules/@allyhub-next/project/dist/session.d.ts +0 -37
  500. package/dist/node_modules/@allyhub-next/project/dist/stretch.d.ts +0 -38
  501. package/dist/node_modules/@allyhub-next/project/dist/version.d.ts +0 -114
  502. package/dist/node_modules/@allyhub-next/render/dist/cap.d.ts +0 -41
  503. package/dist/node_modules/@allyhub-next/render/dist/capture.d.ts +0 -78
  504. package/dist/node_modules/@allyhub-next/render/dist/clip.d.ts +0 -27
  505. package/dist/node_modules/@allyhub-next/render/dist/composite.d.ts +0 -106
  506. package/dist/node_modules/@allyhub-next/render/dist/delivery.d.ts +0 -18
  507. package/dist/node_modules/@allyhub-next/render/dist/doc/fonts.d.ts +0 -3
  508. package/dist/node_modules/@allyhub-next/render/dist/doc/index.d.ts +0 -3
  509. package/dist/node_modules/@allyhub-next/render/dist/doc/print.d.ts +0 -51
  510. package/dist/node_modules/@allyhub-next/render/dist/encode.d.ts +0 -111
  511. package/dist/node_modules/@allyhub-next/render/dist/errors.d.ts +0 -15
  512. package/dist/node_modules/@allyhub-next/render/dist/exports.d.ts +0 -67
  513. package/dist/node_modules/@allyhub-next/render/dist/ffmpeg.d.ts +0 -75
  514. package/dist/node_modules/@allyhub-next/render/dist/footage.d.ts +0 -169
  515. package/dist/node_modules/@allyhub-next/render/dist/image.d.ts +0 -16
  516. package/dist/node_modules/@allyhub-next/render/dist/index.d.ts +0 -26
  517. package/dist/node_modules/@allyhub-next/render/dist/junction.d.ts +0 -70
  518. package/dist/node_modules/@allyhub-next/render/dist/look.d.ts +0 -21
  519. package/dist/node_modules/@allyhub-next/render/dist/page.d.ts +0 -178
  520. package/dist/node_modules/@allyhub-next/render/dist/parts.d.ts +0 -140
  521. package/dist/node_modules/@allyhub-next/render/dist/png.d.ts +0 -37
  522. package/dist/node_modules/@allyhub-next/render/dist/pool.d.ts +0 -54
  523. package/dist/node_modules/@allyhub-next/render/dist/post-probe.d.ts +0 -27
  524. package/dist/node_modules/@allyhub-next/render/dist/post.d.ts +0 -27
  525. package/dist/node_modules/@allyhub-next/render/dist/render.d.ts +0 -151
  526. package/dist/node_modules/@allyhub-next/render/dist/segments.d.ts +0 -40
  527. package/dist/node_modules/@allyhub-next/render/dist/sound.d.ts +0 -24
  528. package/dist/node_modules/@allyhub-next/render/dist/stills.d.ts +0 -41
  529. package/dist/node_modules/@allyhub-next/render/dist/tools.d.ts +0 -25
  530. package/dist/node_modules/@allyhub-next/render/dist/webp.d.ts +0 -17
  531. package/dist/node_modules/@allyhub-next/runtime/dist/bridge.d.ts +0 -211
  532. package/dist/node_modules/@allyhub-next/runtime/dist/captions.d.ts +0 -24
  533. package/dist/node_modules/@allyhub-next/runtime/dist/clock.d.ts +0 -32
  534. package/dist/node_modules/@allyhub-next/runtime/dist/compose.d.ts +0 -149
  535. package/dist/node_modules/@allyhub-next/runtime/dist/console.d.ts +0 -21
  536. package/dist/node_modules/@allyhub-next/runtime/dist/contrast.d.ts +0 -13
  537. package/dist/node_modules/@allyhub-next/runtime/dist/embed.d.ts +0 -50
  538. package/dist/node_modules/@allyhub-next/runtime/dist/env.d.ts +0 -101
  539. package/dist/node_modules/@allyhub-next/runtime/dist/errors.d.ts +0 -21
  540. package/dist/node_modules/@allyhub-next/runtime/dist/facade.d.ts +0 -42
  541. package/dist/node_modules/@allyhub-next/runtime/dist/fonts.d.ts +0 -110
  542. package/dist/node_modules/@allyhub-next/runtime/dist/footage.d.ts +0 -52
  543. package/dist/node_modules/@allyhub-next/runtime/dist/frame.d.ts +0 -61
  544. package/dist/node_modules/@allyhub-next/runtime/dist/guards.d.ts +0 -32
  545. package/dist/node_modules/@allyhub-next/runtime/dist/index.d.ts +0 -14
  546. package/dist/node_modules/@allyhub-next/runtime/dist/inspect.d.ts +0 -112
  547. package/dist/node_modules/@allyhub-next/runtime/dist/locate.d.ts +0 -11
  548. package/dist/node_modules/@allyhub-next/runtime/dist/measure.d.ts +0 -41
  549. package/dist/node_modules/@allyhub-next/runtime/dist/mix-plan.d.ts +0 -42
  550. package/dist/node_modules/@allyhub-next/runtime/dist/music.d.ts +0 -29
  551. package/dist/node_modules/@allyhub-next/runtime/dist/output.d.ts +0 -5
  552. package/dist/node_modules/@allyhub-next/runtime/dist/pictures.d.ts +0 -39
  553. package/dist/node_modules/@allyhub-next/runtime/dist/piece.d.ts +0 -34
  554. package/dist/node_modules/@allyhub-next/runtime/dist/player/clips.d.ts +0 -41
  555. package/dist/node_modules/@allyhub-next/runtime/dist/player/cutout.d.ts +0 -57
  556. package/dist/node_modules/@allyhub-next/runtime/dist/player/player.d.ts +0 -78
  557. package/dist/node_modules/@allyhub-next/runtime/dist/reads.d.ts +0 -132
  558. package/dist/node_modules/@allyhub-next/runtime/dist/sound.d.ts +0 -22
  559. package/dist/node_modules/@allyhub-next/runtime/dist/speech.d.ts +0 -107
  560. package/dist/node_modules/@allyhub-next/runtime/dist/stage-kit.d.ts +0 -12
  561. package/dist/node_modules/@allyhub-next/runtime/dist/stage.d.ts +0 -34
  562. package/dist/node_modules/@allyhub-next/runtime/dist/styles.d.ts +0 -35
  563. package/dist/node_modules/@allyhub-next/runtime/dist/takes.d.ts +0 -72
  564. package/dist/node_modules/@allyhub-next/runtime/dist/titles.d.ts +0 -10
  565. package/dist/node_modules/@allyhub-next/runtime/dist/transitions.d.ts +0 -26
  566. package/dist/node_modules/@allyhub-next/site/dist/assets.d.ts +0 -59
  567. package/dist/node_modules/@allyhub-next/site/dist/assets.js +0 -2
  568. package/dist/node_modules/@allyhub-next/site/dist/astro.d.ts +0 -22
  569. package/dist/node_modules/@allyhub-next/site/dist/astro.js +0 -3
  570. package/dist/node_modules/@allyhub-next/site/dist/lockfile.d.ts +0 -40
  571. package/dist/node_modules/@allyhub-next/site/dist/lockfile.js +0 -3
  572. package/dist/node_modules/@allyhub-next/site/dist/media.d.ts +0 -24
  573. package/dist/node_modules/@allyhub-next/site/dist/media.js +0 -4
  574. package/dist/node_modules/@allyhub-next/site/package.json +0 -25
  575. package/dist/node_modules/@allyhub-next/slides-core/dist/preset.d.ts +0 -5
  576. package/dist/node_modules/@allyhub-next/slides-core/dist/preset.js +0 -2
  577. package/dist/node_modules/@allyhub-next/slides-pptx/dist/charts.d.ts +0 -6
  578. package/dist/node_modules/@allyhub-next/slides-pptx/dist/fonts.d.ts +0 -45
  579. package/dist/node_modules/@allyhub-next/slides-pptx/dist/import.d.ts +0 -18
  580. package/dist/node_modules/@allyhub-next/slides-pptx/dist/import.js +0 -3
  581. package/dist/node_modules/@allyhub-next/slides-pptx/dist/index.d.ts +0 -5
  582. package/dist/node_modules/@allyhub-next/slides-pptx/dist/read.d.ts +0 -56
  583. package/dist/node_modules/@allyhub-next/slides-pptx/dist/read.js +0 -4
  584. package/dist/node_modules/@allyhub-next/slides-pptx/dist/shapes.d.ts +0 -72
  585. package/dist/node_modules/@allyhub-next/slides-pptx/dist/text.d.ts +0 -32
  586. package/dist/node_modules/@allyhub-next/slides-pptx/dist/theme.d.ts +0 -4
  587. package/dist/node_modules/@allyhub-next/slides-pptx/dist/timing.d.ts +0 -32
  588. package/dist/node_modules/@allyhub-next/slides-pptx/dist/write.d.ts +0 -32
  589. package/dist/node_modules/@allyhub-next/slides-pptx/dist/xml.d.ts +0 -32
  590. package/dist/node_modules/@allyhub-next/slides-runtime/dist/draw.d.ts +0 -43
  591. package/dist/node_modules/@allyhub-next/slides-runtime/dist/edit.d.ts +0 -4
  592. package/dist/node_modules/@allyhub-next/slides-runtime/dist/edit.js +0 -2
  593. package/dist/node_modules/@allyhub-next/slides-runtime/dist/index.d.ts +0 -4
  594. package/dist/node_modules/@allyhub-next/slides-runtime/dist/ink.d.ts +0 -10
  595. package/dist/node_modules/@allyhub-next/slides-runtime/dist/load.d.ts +0 -6
  596. package/dist/node_modules/@allyhub-next/stage/dist/bakes.d.ts +0 -42
  597. package/dist/node_modules/@allyhub-next/stage/dist/graphics.d.ts +0 -7
  598. package/dist/node_modules/@allyhub-next/stage/dist/identity.d.ts +0 -2
  599. package/dist/node_modules/@allyhub-next/stage/dist/index.d.ts +0 -9
  600. package/dist/node_modules/@allyhub-next/stage/dist/page.d.ts +0 -87
  601. package/dist/node_modules/@allyhub-next/stage/dist/scenery-page.d.ts +0 -69
  602. package/dist/node_modules/@allyhub-next/stage/dist/scenery-solve.d.ts +0 -49
  603. package/dist/node_modules/@allyhub-next/stage/dist/scenery.d.ts +0 -8
  604. package/dist/node_modules/@allyhub-next/stage/dist/server.d.ts +0 -21
  605. package/dist/node_modules/@allyhub-next/stage-page/dist/host.d.ts +0 -22
  606. package/dist/node_modules/@allyhub-next/stage-page/dist/page.js +0 -79
  607. package/dist/site.d.ts +0 -2
  608. package/editor-web/assets/dist-BW2s9FMO.js +0 -4
  609. package/editor-web/assets/dist-C-6JmebI.js +0 -233
  610. package/editor-web/assets/dist-CCYMLMKN.js +0 -6
  611. package/editor-web/assets/dist-CHzurjMx.js +0 -33
  612. package/editor-web/assets/dist-DF7H1dxw.js +0 -1
  613. package/editor-web/assets/dist-Da5AUSKX.js +0 -2
  614. package/editor-web/assets/index-B7S9RZhL.css +0 -2
  615. package/editor-web/assets/index-CovQYWvD.js +0 -69
  616. package/editor-web/assets/minus-BrvjaJyO.js +0 -1
  617. package/editor-web/assets/react-DV5fPdiH.js +0 -101
  618. package/editor-web/assets/textarea-B0vCGdZI.js +0 -105
  619. package/editor-web/assets/trash-2-B0dvc1cZ.js +0 -1
  620. package/editor-web/assets/undo-2-A1EPubPO.js +0 -1
  621. /package/dist/node_modules/@allyhub-next/{site → ooxml}/LICENSE +0 -0
@@ -4,18 +4,34 @@ import type { Color, ComponentContext, DeckDef, FontDef, Frame, GradientDef, Fre
4
4
  import type { SheetChartType } from "@allyhub-next/formats";
5
5
  import { Chart, type CategoryChartData, type XyChartData } from "./chart-api.js";
6
6
  import type { ThemeInput } from "./theme.js";
7
- import { type Length, type SlideSizeName } from "./units.js";
8
- /** python-pptx's `RGBColor(r, g, b)` and `RGBColor.from_string("3C2F80")`: a colour as `#RRGGBB`. */
9
- export declare const RGBColor: ((r: number, g: number, b: number) => string) & {
10
- from_string: (s: string) => string;
11
- };
12
- /** A colour (python-pptx's `ColorFormat`): the theme's, or RGB. */
7
+ import { type Length, type LengthValue, type SlideSizeName } from "./units.js";
8
+ /** python-pptx's `RGBColor`: called or made with `new`, a colour as `#RRGGBB`. */
9
+ export interface RGBColorMaker {
10
+ (r: number, g: number, b: number): string;
11
+ new (r: number, g: number, b: number): string;
12
+ from_string(s: string): string;
13
+ }
14
+ /**
15
+ * python-pptx's `RGBColor(r, g, b)` and `RGBColor.from_string("3C2F80")`:
16
+ * a colour as `#RRGGBB`; `new RGBColor(r, g, b)` makes the same (a String
17
+ * object, which the API takes as its text).
18
+ */
19
+ export declare const RGBColor: RGBColorMaker;
20
+ /** A colour (python-pptx's `ColorFormat`): the theme's, lighter or darker by its brightness, or RGB. */
13
21
  export declare class ColorFormat {
14
22
  private readonly read;
15
23
  private readonly write;
16
24
  constructor(read: () => Color | undefined, write: (c: Color | undefined) => void);
17
25
  get theme_color(): ThemeColor | undefined;
26
+ /** As python-pptx's: a theme colour changed to another keeps its brightness. */
18
27
  set theme_color(c: ThemeColor | undefined);
28
+ /**
29
+ * Lighter (up to 1, white) or darker (down to -1, black), 0 for neither:
30
+ * PowerPoint's "Lighter 40%" is 0.4, "Darker 25%" -0.25 (`a:lumMod` and
31
+ * `a:lumOff`). A theme colour's; setting `rgb` takes it away.
32
+ */
33
+ get brightness(): number;
34
+ set brightness(v: number);
19
35
  /** `#RRGGBB`; python-pptx's `RGBColor`, here a string (RGBColor(…) makes one). */
20
36
  get rgb(): string | undefined;
21
37
  set rgb(v: string | undefined);
@@ -36,7 +52,7 @@ export declare class Font {
36
52
  set highlight(v: string | undefined);
37
53
  get name(): string | undefined;
38
54
  set name(v: string | undefined);
39
- get size(): Length | undefined;
55
+ get size(): LengthValue | undefined;
40
56
  set size(v: Length | undefined);
41
57
  get bold(): boolean | undefined;
42
58
  set bold(v: boolean | undefined);
@@ -46,7 +62,7 @@ export declare class Font {
46
62
  get underline(): boolean | undefined;
47
63
  set underline(v: boolean | undefined);
48
64
  /** Space added between letters, a Length (negative tightens): PowerPoint's Character Spacing, which python-pptx has no name for. */
49
- get spacing(): Length | undefined;
65
+ get spacing(): LengthValue | undefined;
50
66
  set spacing(v: Length | undefined);
51
67
  get color(): ColorFormat;
52
68
  }
@@ -73,11 +89,11 @@ declare abstract class Format {
73
89
  get alignment(): TextAlign | undefined;
74
90
  set alignment(v: TextAlign | undefined);
75
91
  /** A number of lines (1.5), or a Length (Pt(18)) for a fixed height. */
76
- get line_spacing(): number | undefined;
92
+ get line_spacing(): number | LengthValue | undefined;
77
93
  set line_spacing(v: number | undefined);
78
- get space_before(): Length | undefined;
94
+ get space_before(): LengthValue | undefined;
79
95
  set space_before(v: Length | undefined);
80
- get space_after(): Length | undefined;
96
+ get space_after(): LengthValue | undefined;
81
97
  set space_after(v: Length | undefined);
82
98
  /** Its runs' default character properties (`a:defRPr`). */
83
99
  get font(): Font;
@@ -115,10 +131,10 @@ export declare class ListLevel extends Format {
115
131
  get bullet_font(): string | undefined;
116
132
  set bullet_font(v: string | undefined);
117
133
  /** Where its lines start (`@marL`). */
118
- get margin_left(): Length | undefined;
134
+ get margin_left(): LengthValue | undefined;
119
135
  set margin_left(v: Length | undefined);
120
136
  /** Its first line from margin_left (`@indent`; negative hangs it, for a bullet). */
121
- get indent(): Length | undefined;
137
+ get indent(): LengthValue | undefined;
122
138
  set indent(v: Length | undefined);
123
139
  }
124
140
  /** A list style's nine levels, level 0 first. */
@@ -160,13 +176,13 @@ export declare class TextFrame {
160
176
  set auto_size(v: AutoSize | undefined);
161
177
  get word_wrap(): boolean | undefined;
162
178
  set word_wrap(v: boolean | undefined);
163
- get margin_left(): Length;
179
+ get margin_left(): LengthValue;
164
180
  set margin_left(v: Length);
165
- get margin_top(): Length;
181
+ get margin_top(): LengthValue;
166
182
  set margin_top(v: Length);
167
- get margin_right(): Length;
183
+ get margin_right(): LengthValue;
168
184
  set margin_right(v: Length);
169
- get margin_bottom(): Length;
185
+ get margin_bottom(): LengthValue;
170
186
  set margin_bottom(v: Length);
171
187
  }
172
188
  /** python-pptx's `FillFormat`, for a solid fill and none. */
@@ -210,9 +226,9 @@ export declare class ShadowFormat {
210
226
  /** Whether it has none of its own; false gives it SHADOW_DEFAULTS. */
211
227
  get inherit(): boolean;
212
228
  set inherit(v: boolean);
213
- get blur_radius(): Length;
229
+ get blur_radius(): LengthValue;
214
230
  set blur_radius(v: Length);
215
- get distance(): Length;
231
+ get distance(): LengthValue;
216
232
  set distance(v: Length);
217
233
  get angle(): number;
218
234
  set angle(v: number);
@@ -227,7 +243,7 @@ export declare class LineFormat {
227
243
  /** Its colour; setting one makes the line solid. */
228
244
  get color(): ColorFormat;
229
245
  get fill(): FillFormat;
230
- get width(): Length;
246
+ get width(): LengthValue;
231
247
  set width(v: Length);
232
248
  /** Its dashes (MSO_LINE), or null for its theme's. */
233
249
  get dash_style(): LineDash | null;
@@ -247,8 +263,8 @@ export declare class Background {
247
263
  });
248
264
  get fill(): FillFormat;
249
265
  }
250
- /** A geometry's adjustments and what each is when not set (PresentationML's presets). */
251
- export declare const ADJUSTMENT_DEFAULTS: Partial<Record<ShapeGeometry, number[]>>;
266
+ /** A geometry's adjustments when none is set: its preset's own (ECMA-376's definitions), python-pptx's shares. */
267
+ export declare const adjustmentDefaults: (geometry: string) => number[];
252
268
  /** python-pptx's `Adjustments`: `shape.adjustments[0] = 0.1`. */
253
269
  export declare class Adjustments {
254
270
  [i: number]: number;
@@ -283,13 +299,13 @@ export declare class Shape {
283
299
  type: PlaceholderType;
284
300
  idx: number;
285
301
  };
286
- get left(): Length;
302
+ get left(): LengthValue;
287
303
  set left(v: Length);
288
- get top(): Length;
304
+ get top(): LengthValue;
289
305
  set top(v: Length);
290
- get width(): Length;
306
+ get width(): LengthValue;
291
307
  set width(v: Length);
292
- get height(): Length;
308
+ get height(): LengthValue;
293
309
  set height(v: Length);
294
310
  /** Degrees clockwise about its centre; python-pptx's, kept from 0 up to 360. */
295
311
  get rotation(): number;
@@ -343,14 +359,14 @@ export declare class GroupShape {
343
359
  get shape_type(): ShapeType;
344
360
  get name(): string;
345
361
  set name(v: string);
346
- get left(): Length;
362
+ get left(): LengthValue;
347
363
  /** Moves its shapes with it. */
348
364
  set left(v: Length);
349
- get top(): Length;
365
+ get top(): LengthValue;
350
366
  /** Moves its shapes with it. */
351
367
  set top(v: Length);
352
- get width(): Length;
353
- get height(): Length;
368
+ get width(): LengthValue;
369
+ get height(): LengthValue;
354
370
  }
355
371
  /** python-pptx's `_Cell`. */
356
372
  export declare class Cell {
@@ -366,13 +382,13 @@ export declare class Cell {
366
382
  /** Its edges, each a colour and a width; python-pptx has none (`a:lnL`…). */
367
383
  get borders(): NonNullable<TableCellDef["borders"]>;
368
384
  set borders(v: NonNullable<TableCellDef["borders"]>);
369
- get margin_left(): Length;
385
+ get margin_left(): LengthValue;
370
386
  set margin_left(v: Length);
371
- get margin_right(): Length;
387
+ get margin_right(): LengthValue;
372
388
  set margin_right(v: Length);
373
- get margin_top(): Length;
389
+ get margin_top(): LengthValue;
374
390
  set margin_top(v: Length);
375
- get margin_bottom(): Length;
391
+ get margin_bottom(): LengthValue;
376
392
  set margin_bottom(v: Length);
377
393
  get vertical_anchor(): Anchor | undefined;
378
394
  set vertical_anchor(v: Anchor | undefined);
@@ -390,7 +406,7 @@ export declare class Column {
390
406
  private readonly def;
391
407
  private readonly at;
392
408
  constructor(def: TableDef, at: number);
393
- get width(): Length;
409
+ get width(): LengthValue;
394
410
  set width(v: Length);
395
411
  }
396
412
  /** python-pptx's `_Row`. */
@@ -399,7 +415,7 @@ export declare class Row {
399
415
  private readonly at;
400
416
  constructor(def: TableDef, at: number);
401
417
  private get row();
402
- get height(): Length;
418
+ get height(): LengthValue;
403
419
  set height(v: Length);
404
420
  }
405
421
  /** python-pptx's `Table`. */
@@ -468,7 +484,11 @@ export declare class ShapeCollection implements Iterable<Shape> {
468
484
  add_group_shape(): GroupShape;
469
485
  /** A freeform's builder (python-pptx's build_freeform): filled and outlined as an autoshape. */
470
486
  build_freeform(start_x?: number, start_y?: number, scale?: number | readonly [number, number]): FreeformBuilder;
471
- /** A straight line from one point to another (MSO_CONNECTOR.STRAIGHT). */
487
+ /**
488
+ * A connector from one point to another: MSO_CONNECTOR's straight line,
489
+ * elbow or curve, or a connector's preset by name where python-pptx has
490
+ * none (`straightConnector1`, `bentConnector2`…`5`, `curvedConnector2`…`5`).
491
+ */
472
492
  add_connector(connector_type: ShapeGeometry, begin_x: Length, begin_y: Length, end_x: Length, end_y: Length): Shape;
473
493
  /** A component of the presentation (`prs.components.add`), drawn by its code in the frame (an extension). */
474
494
  add_component(component: string, left: Length, top: Length, width: Length, height: Length, props?: Record<string, unknown>): Shape;
@@ -644,9 +664,9 @@ export declare class Presentation {
644
664
  readonly _ctx: Context;
645
665
  constructor(size: readonly [Length, Length], base: string);
646
666
  get _def(): DeckDef;
647
- get slide_width(): Length;
667
+ get slide_width(): LengthValue;
648
668
  set slide_width(v: Length);
649
- get slide_height(): Length;
669
+ get slide_height(): LengthValue;
650
670
  set slide_height(v: Length);
651
671
  get slide_masters(): SlideMasters;
652
672
  /** The first master (python-pptx's `slide_master`). */
@@ -1,4 +1,4 @@
1
1
  /*! AllyHub. Copyright (c) 2026 AllyHub, Inc. All rights reserved. Use is subject to LICENSE.md. */
2
- import{MSO_CONNECTOR as k,MSO_SHAPE as $,MSO_SHAPE_TYPE as F,PP_PLACEHOLDER as T}from"./enums.js";import{Chart as L}from"./chart-api.js";import{AUTOSHAPE_STYLE as c,SHADOW_DEFAULTS as O,CONNECTOR_STYLE as M,FOOTER_IDX as N,OFFICE_TEXT_STYLES as z,TEXT_INSETS as _,TEXTBOX_FRAME as C}from"./office.js";import{masterPlaceholder as v}from"./placeholders.js";import{strict as o}from"./strict.js";import{EMU_PER_PT as j,SLIDE_SIZES as S}from"./units.js";class D extends Error{constructor(t){super(`${t} (allyhub slides capabilities lists what the API holds).`),this.name="Unsupported"}}const g=i=>{throw new D(i)},G=/^#?[0-9a-f]{6}$/iu,A=i=>{if(!G.test(i))throw new Error(`rgb ${i} is not RRGGBB.`);return`#${i.replace("#","").toUpperCase()}`};export const RGBColor=Object.assign((i,t,e)=>{for(const s of[i,t,e])if(!Number.isInteger(s)||s<0||s>255)throw new Error(`RGBColor(${String(i)}, ${String(t)}, ${String(e)}): each is 0 to 255.`);return`#${[i,t,e].map(s=>s.toString(16).padStart(2,"0")).join("").toUpperCase()}`},{from_string:i=>A(i)});export class ColorFormat{read;write;constructor(t,e){return this.read=t,this.write=e,o(this,"ColorFormat")}get theme_color(){const t=this.read();return typeof t=="string"?t:void 0}set theme_color(t){this.write(t)}get rgb(){const t=this.read();return typeof t=="object"?t.rgb:void 0}set rgb(t){this.write(t===void 0?void 0:{rgb:A(t)})}}export class Font{def;constructor(t){return this.def=t,o(this,"Font")}_set(t,e){e===void 0?Reflect.deleteProperty(this.def,t):this.def[t]=e}get strike(){return this.def.strike}set strike(t){this._set("strike",t)}get baseline(){return this.def.baseline}set baseline(t){this._set("baseline",t)}get highlight(){return this.def.highlight}set highlight(t){this._set("highlight",t)}get name(){return this.def.name}set name(t){this._set("name",t)}get size(){return this.def.size}set size(t){this._set("size",t)}get bold(){return this.def.bold}set bold(t){this._set("bold",t)}get italic(){return this.def.italic}set italic(t){this._set("italic",t)}get underline(){return this.def.underline}set underline(t){this._set("underline",t)}get spacing(){return this.def.spacing}set spacing(t){this._set("spacing",t)}get color(){return new ColorFormat(()=>this.def.rgb!==void 0?{rgb:this.def.rgb}:this.def.color,t=>{delete this.def.color,delete this.def.rgb,typeof t=="string"?this.def.color=t:t&&(this.def.rgb=t.rgb)})}}export class Hyperlink{def;constructor(t){return this.def=t,o(this,"_Hyperlink")}get address(){return this.def.font?.link}set address(t){this.def.font??={},t===void 0?Reflect.deleteProperty(this.def.font,"link"):this.def.font.link=t}}export class Run{def;constructor(t){return this.def=t,o(this,"_Run")}get text(){return this.def.text}set text(t){this.def.text=t}get font(){return this.def.font??={},new Font(this.def.font)}get hyperlink(){return new Hyperlink(this.def)}}const I=i=>{if(!Number.isFinite(i)||i<=0)throw new Error(`line_spacing ${String(i)} is not over 0.`);return Number.isInteger(i)&&i>=j?{fixed:i}:{lines:i}},B=i=>i===void 0?void 0:"lines"in i?i.lines:i.fixed,P=i=>i.split(/\n|\v/u).flatMap((t,e)=>[...e>0?[{text:"\v"}]:[],...t===""?[]:[{text:t}]]);class R{_set(t,e){e===void 0?Reflect.deleteProperty(this.fmt,t):this.fmt[t]=e}get alignment(){return this.fmt.alignment}set alignment(t){this._set("alignment",t)}get line_spacing(){return B(this.fmt.line_spacing)}set line_spacing(t){this._set("line_spacing",t===void 0?void 0:I(t))}get space_before(){return this.fmt.space_before}set space_before(t){this._set("space_before",t)}get space_after(){return this.fmt.space_after}set space_after(t){this._set("space_after",t)}get font(){return this.fmt.font??={},new Font(this.fmt.font)}}export class Paragraph extends R{fmt;constructor(t){return super(),this.fmt=t,o(this,"_Paragraph")}get text(){return this.fmt.runs.map(t=>t.text).join("")}set text(t){this.fmt.runs=P(t)}get runs(){return this.fmt.runs.filter(t=>t.text!=="\v").map(t=>new Run(t))}add_run(){const t={text:""};return this.fmt.runs.push(t),new Run(t)}add_line_break(){this.fmt.runs.push({text:"\v"})}clear(){return this.fmt.runs=[],this}get level(){return this.fmt.level}set level(t){if(!Number.isInteger(t)||t<0||t>8)throw new Error(`level ${String(t)} is not 0 to 8.`);this.fmt.level=t}}export class ListLevel extends R{fmt;constructor(t){return super(),this.fmt=t,o(this,"ListLevel")}get numbered(){return this.fmt.numbered}set numbered(t){this._set("numbered",t)}get bullet(){return this.fmt.bullet}set bullet(t){this._set("bullet",t)}get bullet_font(){return this.fmt.bullet_font}set bullet_font(t){this._set("bullet_font",t)}get margin_left(){return this.fmt.margin_left}set margin_left(t){this._set("margin_left",t)}get indent(){return this.fmt.indent}set indent(t){this._set("indent",t)}}const y=i=>Object.freeze(i.map(t=>new ListLevel(t))),U=()=>Array.from({length:9},()=>({})),x=()=>({paragraphs:[],levels:U()});export class TextFrame{def;constructor(t){return this.def=t,o(this,"TextFrame")}_set(t,e){e===void 0?Reflect.deleteProperty(this.def,t):this.def[t]=e}get text(){return this.def.paragraphs.map(t=>t.runs.map(e=>e.text).join("")).join(`
2
+ import{themeColor as O,themeColorOf as T}from"@allyhub-next/chart";import{presetAdjustments as z}from"@allyhub-next/ooxml/geometry";import{MSO_CONNECTOR as G,MSO_SHAPE as M,MSO_SHAPE_TYPE as I,PP_PLACEHOLDER as j}from"./enums.js";import{Chart as B}from"./chart-api.js";import{AUTOSHAPE_STYLE as p,SHADOW_DEFAULTS as v,CONNECTOR_GEOMETRIES as D,CONNECTOR_STYLE as P,FOOTER_IDX as H,isConnectorGeometry as R,OFFICE_TEXT_STYLES as U,placeholderLevels as X,TEXT_INSETS as w,TEXTBOX_FRAME as Y}from"./office.js";import{masterPlaceholder as A}from"./placeholders.js";import{strict as o}from"./strict.js";import{EMU_PER_PT as F,SLIDE_SIZES as k,length as d,lengthOr as y}from"./units.js";class J extends Error{constructor(t){super(`${t} (allyhub slides capabilities lists what the API holds).`),this.name="Unsupported"}}const m=i=>{throw new J(i)},Z=/^#?[0-9a-f]{6}$/iu,C=i=>{if(!Z.test(i))throw new Error(`rgb ${i} is not RRGGBB.`);return`#${i.replace("#","").toUpperCase()}`};export const RGBColor=Object.assign(function(t,e,s){for(const h of[t,e,s])if(!Number.isInteger(h)||h<0||h>255)throw new Error(`RGBColor(${String(t)}, ${String(e)}, ${String(s)}): each is 0 to 255.`);const r=`#${[t,e,s].map(h=>h.toString(16).padStart(2,"0")).join("").toUpperCase()}`;return new.target===void 0?r:new String(r)},{from_string:i=>C(i)});export class ColorFormat{read;write;constructor(t,e){return this.read=t,this.write=e,o(this,"ColorFormat")}get theme_color(){const t=this.read();return t===void 0?void 0:T(t)}set theme_color(t){this.write(t===void 0?void 0:O(t,this.brightness))}get brightness(){const t=this.read();return typeof t=="object"&&"brightness"in t?t.brightness:0}set brightness(t){if(!(t>=-1&&t<=1))throw new RangeError(`brightness ${String(t)} is not a number from -1.0 to 1.0.`);const e=this.read();if(e===void 0)throw new TypeError("There is no colour to set the brightness of: set theme_color first.");const s=T(e);if(s!==void 0)this.write(O(s,t));else if(t!==0)throw new TypeError("Only a theme colour has a brightness here, so an RGB colour does not: set theme_color first, or rgb to the colour it makes.")}get rgb(){const t=this.read();return typeof t=="object"&&"rgb"in t?t.rgb:void 0}set rgb(t){this.write(t===void 0?void 0:{rgb:C(t)})}}export class Font{def;constructor(t){return this.def=t,o(this,"Font")}_set(t,e){e===void 0?Reflect.deleteProperty(this.def,t):this.def[t]=e}get strike(){return this.def.strike}set strike(t){this._set("strike",t)}get baseline(){return this.def.baseline}set baseline(t){this._set("baseline",t)}get highlight(){return this.def.highlight}set highlight(t){this._set("highlight",t)}get name(){return this.def.name}set name(t){this._set("name",t)}get size(){return y(this.def.size)}set size(t){this._set("size",t)}get bold(){return this.def.bold}set bold(t){this._set("bold",t)}get italic(){return this.def.italic}set italic(t){this._set("italic",t)}get underline(){return this.def.underline}set underline(t){this._set("underline",t)}get spacing(){return y(this.def.spacing)}set spacing(t){this._set("spacing",t)}get color(){return new ColorFormat(()=>this.def.color,t=>{this._set("color",t)})}}export class Hyperlink{def;constructor(t){return this.def=t,o(this,"_Hyperlink")}get address(){return this.def.font?.link}set address(t){this.def.font??={},t===void 0?Reflect.deleteProperty(this.def.font,"link"):this.def.font.link=t}}export class Run{def;constructor(t){return this.def=t,o(this,"_Run")}get text(){return this.def.text}set text(t){this.def.text=t}get font(){return this.def.font??={},new Font(this.def.font)}get hyperlink(){return new Hyperlink(this.def)}}const q=i=>{if(!Number.isFinite(i)||i<=0)throw new Error(`line_spacing ${String(i)} is not over 0.`);return Number.isInteger(i)&&i>=F?{fixed:i}:{lines:i}},K=i=>i===void 0?void 0:"lines"in i?i.lines:d(i.fixed),N=i=>i.split(/\n|\v/u).flatMap((t,e)=>[...e>0?[{text:"\v"}]:[],...t===""?[]:[{text:t}]]);class L{_set(t,e){e===void 0?Reflect.deleteProperty(this.fmt,t):this.fmt[t]=e}get alignment(){return this.fmt.alignment}set alignment(t){this._set("alignment",t)}get line_spacing(){return K(this.fmt.line_spacing)}set line_spacing(t){this._set("line_spacing",t===void 0?void 0:q(t))}get space_before(){return y(this.fmt.space_before)}set space_before(t){this._set("space_before",t)}get space_after(){return y(this.fmt.space_after)}set space_after(t){this._set("space_after",t)}get font(){return this.fmt.font??={},new Font(this.fmt.font)}}export class Paragraph extends L{fmt;constructor(t){return super(),this.fmt=t,o(this,"_Paragraph")}get text(){return this.fmt.runs.map(t=>t.text).join("")}set text(t){this.fmt.runs=N(t)}get runs(){return this.fmt.runs.filter(t=>t.text!=="\v").map(t=>new Run(t))}add_run(){const t={text:""};return this.fmt.runs.push(t),new Run(t)}add_line_break(){this.fmt.runs.push({text:"\v"})}clear(){return this.fmt.runs=[],this}get level(){return this.fmt.level}set level(t){if(!Number.isInteger(t)||t<0||t>8)throw new Error(`level ${String(t)} is not 0 to 8.`);this.fmt.level=t}}export class ListLevel extends L{fmt;constructor(t){return super(),this.fmt=t,o(this,"ListLevel")}get numbered(){return this.fmt.numbered}set numbered(t){this._set("numbered",t)}get bullet(){return this.fmt.bullet}set bullet(t){this._set("bullet",t)}get bullet_font(){return this.fmt.bullet_font}set bullet_font(t){this._set("bullet_font",t)}get margin_left(){return y(this.fmt.margin_left)}set margin_left(t){this._set("margin_left",t)}get indent(){return y(this.fmt.indent)}set indent(t){this._set("indent",t)}}const S=i=>Object.freeze(i.map(t=>new ListLevel(t))),W=()=>Array.from({length:9},()=>({})),E=()=>({paragraphs:[],levels:W()});export class TextFrame{def;constructor(t){return this.def=t,o(this,"TextFrame")}_set(t,e){e===void 0?Reflect.deleteProperty(this.def,t):this.def[t]=e}get text(){return this.def.paragraphs.map(t=>t.runs.map(e=>e.text).join("")).join(`
3
3
  `)}set text(t){this.def.paragraphs=t.split(`
4
- `).map(e=>({runs:P(e),level:0}))}get paragraphs(){return this.def.paragraphs.length===0&&this.def.paragraphs.push({runs:[],level:0}),this.def.paragraphs.map(t=>new Paragraph(t))}add_paragraph(){this.def.paragraphs.length===0&&this.def.paragraphs.push({runs:[],level:0});const t={runs:[],level:0};return this.def.paragraphs.push(t),new Paragraph(t)}clear(){const t=this.def.paragraphs[0];this.def.paragraphs=t?[{...t,runs:[]}]:[]}fit_text(t,e=18,s,r){this.def.auto_size="text",this.def.word_wrap=!0;for(const n of this.def.paragraphs)for(const h of n.runs)h.font={...h.font,size:Math.trunc(e*j),...t===void 0?{}:{name:t},...s===void 0?{}:{bold:s},...r===void 0?{}:{italic:r}}}get list_style(){return y(this.def.levels)}get vertical_anchor(){return this.def.vertical_anchor}set vertical_anchor(t){this._set("vertical_anchor",t)}get auto_size(){return this.def.auto_size}set auto_size(t){this._set("auto_size",t)}get word_wrap(){return this.def.word_wrap}set word_wrap(t){this._set("word_wrap",t)}get margin_left(){return this.def.margin_left??_.left}set margin_left(t){this.def.margin_left=t}get margin_top(){return this.def.margin_top??_.top}set margin_top(t){this.def.margin_top=t}get margin_right(){return this.def.margin_right??_.right}set margin_right(t){this.def.margin_right=t}get margin_bottom(){return this.def.margin_bottom??_.bottom}set margin_bottom(t){this.def.margin_bottom=t}}export class FillFormat{read;write;start;shape;constructor(t,e,s="lt1",r){return this.read=t,this.write=e,this.start=s,this.shape=r,o(this,"FillFormat")}solid(){const t=this.read();this.shape&&Reflect.deleteProperty(this.shape,"gradient"),t==null&&this.write(this.start)}background(){this.shape&&Reflect.deleteProperty(this.shape,"gradient"),this.write(null)}_shape(t){if(!this.shape)throw new TypeError(`Only a shape's fill has ${t}.`);return this.shape}gradient(){this._shape("a gradient").gradient??={angle:90,stops:[{at:0,color:"accent1"},{at:1,color:"accent2"}]}}get gradient_angle(){return this._gradient().angle}set gradient_angle(t){this._gradient().angle=t}get gradient_stops(){return this._gradient().stops}set gradient_stops(t){if(t.length<2)throw new Error("A gradient has two stops at least.");this._gradient().stops=t.map(e=>({...e}))}_gradient(){const{gradient:t}=this._shape("a gradient");if(!t)throw new TypeError("This fill is no gradient: call fill.gradient() first.");return t}get transparency(){return this._shape("a transparency").fill_transparency??0}set transparency(t){if(!(t>=0&&t<=1))throw new Error(`A transparency is a share, 0 to 1, not ${String(t)}.`);this._shape("a transparency").fill_transparency=t}get type(){if(this.shape?.gradient)return"gradient";const t=this.read();return t===void 0?void 0:t===null?"background":"solid"}get fore_color(){const t=this.read();if(t==null)throw new TypeError("This fill is not solid, so it has no fore_color: call fill.solid() first.");return new ColorFormat(()=>this.read()??void 0,e=>{this.write(e??this.start)})}}export class ShadowFormat{def;constructor(t){return this.def=t,o(this,"ShadowFormat")}_shadow(){return this.def.shadow??={...O},this.def.shadow}get inherit(){return this.def.shadow===void 0}set inherit(t){t?Reflect.deleteProperty(this.def,"shadow"):this._shadow()}get blur_radius(){return this._shadow().blur}set blur_radius(t){this._shadow().blur=t}get distance(){return this._shadow().distance}set distance(t){this._shadow().distance=t}get angle(){return this._shadow().angle}set angle(t){this._shadow().angle=t}get transparency(){return this._shadow().transparency}set transparency(t){this._shadow().transparency=t}get color(){const t=this._shadow();return new ColorFormat(()=>t.color,e=>{t.color=e??O.color})}}export class LineFormat{def;constructor(t){return this.def=t,o(this,"LineFormat")}get color(){return new ColorFormat(()=>this.def.line??void 0,t=>{this.def.line=t??null})}get fill(){return new FillFormat(()=>this.def.line,t=>{this.def.line=t},"dk1")}get width(){return this.def.line_width??0}set width(t){this.def.line_width=t}get dash_style(){return this.def.line_dash??null}set dash_style(t){t===null?delete this.def.line_dash:this.def.line_dash=t}get begin_arrow(){return this.def.line_begin??"none"}set begin_arrow(t){this.def.line_begin=t}get end_arrow(){return this.def.line_end??"none"}set end_arrow(t){this.def.line_end=t}}export class Background{holder;constructor(t){return this.holder=t,o(this,"_Background")}get fill(){return new FillFormat(()=>this.holder.background,t=>{this.holder.background=t??"lt1"})}}export const ADJUSTMENT_DEFAULTS={roundRect:[.16667]};export class Adjustments{def;constructor(t){return this.def=t,o(this,"Adjustments",{index:e=>this._values()[e],setIndex:(e,s)=>{this._set(e,Number(s))}})}_values(){return this.def.adjustments??[...ADJUSTMENT_DEFAULTS[this.def.geometry??"rect"]??[]]}get length(){return this._values().length}_set(t,e){const s=this._values();if(t<0||t>=s.length)throw new RangeError(`adjustments[${String(t)}]: ${this.def.geometry??"this shape"} has ${String(s.length)}.`);if(!Number.isFinite(e))throw new Error(`adjustments[${String(t)}] = ${String(e)} is not a number.`);s[t]=e,this.def.adjustments=s}}const H={left:0,top:0,width:0,height:0};export class Shape{def;inherit;constructor(t,e=()=>{}){return this.def=t,this.inherit=e,o(this,"Shape")}get _def(){return this.def}_frame(){return this.def.frame??this.inherit()??H}_own(){return this.def.frame??={...this._frame()},this.def.frame}get name(){return this.def.name}set name(t){this.def.name=t}get shape_type(){return this.def.path?"freeform":this.def.geometry==="line"?"line":this.def.kind}get is_placeholder(){return this.def.kind==="placeholder"}get has_table(){return this.def.table!==void 0}get has_chart(){return this.def.chart!==void 0}get chart(){if(!this.def.chart)throw new Error(`${this.def.name} is not a chart.`);return new L(this.def.chart)}get table(){if(!this.def.table)throw new Error(`${this.def.name} is not a table.`);return new Table(this.def.table)}get placeholder_format(){if(!this.def.placeholder)throw new Error(`${this.def.name} is not a placeholder.`);return{...this.def.placeholder}}get left(){return this._frame().left}set left(t){this._own().left=t}get top(){return this._frame().top}set top(t){this._own().top=t}get width(){return this._frame().width}set width(t){this._own().width=t}get height(){return this._frame().height}set height(t){this._own().height=t}get rotation(){return this.def.rotation??0}set rotation(t){if(!Number.isFinite(t))throw new Error(`${this.def.name}: rotation is a number of degrees.`);const e=(Math.trunc(t*6e4)%216e5+216e5)%216e5/6e4;e===0?Reflect.deleteProperty(this.def,"rotation"):this.def.rotation=e}get has_text_frame(){return this.def.text!==void 0}get text_frame(){if(!this.def.text)throw new Error(`${this.def.name} (a ${this.shape_type}) has no text frame: has_text_frame is false.`);return new TextFrame(this.def.text)}get text(){return this.text_frame.text}set text(t){this.text_frame.text=t}get fill(){return new FillFormat(()=>this.def.fill,t=>{this.def.fill=t},"lt1",this.def)}get line(){return new LineFormat(this.def)}get shadow(){return new ShadowFormat(this.def)}get adjustments(){return new Adjustments(this.def)}}const X=i=>typeof i=="number"&&Number.isFinite(i),p=(i,t,e,s,{line:r=!1}={})=>{for(const[n,h]of Object.entries({left:i,top:t,width:e,height:s}))if(!X(h))throw new Error(`${n} ${String(h)} is not a length (Emu, Inches, Pt, Cm, Mm).`);if(r?e<0||s<0:e<=0||s<=0)throw new Error("A shape's width and height are over 0.");return{left:Math.trunc(i),top:Math.trunc(t),width:Math.trunc(e),height:Math.trunc(s)}},J=new Set(Object.values($));export class FreeformBuilder{steps;sx;sy;make;constructor(t,e,s){return this.steps=[{op:"move",x:t[0],y:t[1]}],[this.sx,this.sy]=typeof e=="number"?[e,e]:e,this.make=s,o(this,"FreeformBuilder")}add_line_segments(t,e=!0){for(const[s,r]of t)this.steps.push({op:"line",x:s,y:r});return e&&this.steps.push({op:"close"}),this}add_curve_segment(t,e,s,r,n,h){return this.steps.push({op:"curve",x1:t,y1:e,x2:s,y2:r,x:n,y:h}),this}move_to(t,e){return this.steps.push({op:"move",x:t,y:e}),this}convert_to_shape(t=0,e=0){this.steps.length<2&&g("convert_to_shape(): a freeform needs a segment.");const s=this.steps.flatMap(a=>a.op==="close"?[]:a.op==="curve"?[[a.x1,a.y1],[a.x2,a.y2],[a.x,a.y]]:[[a.x,a.y]]),r=s.map(a=>a[0]),n=s.map(a=>a[1]),h=Math.min(...r),d=Math.min(...n),l=Math.max(...r)-h,f=Math.max(...n)-d,u=(a,m)=>({x:a-h,y:m-d});return this.make({w:l,h:f,steps:this.steps.map(a=>{if(a.op==="close")return a;if(a.op!=="curve")return{op:a.op,...u(a.x,a.y)};const m=u(a.x1,a.y1),b=u(a.x2,a.y2);return{op:"curve",x1:m.x,y1:m.y,x2:b.x,y2:b.y,...u(a.x,a.y)}})},p(Math.round(h*this.sx)+t,Math.round(d*this.sy)+e,Math.round(l*this.sx),Math.round(f*this.sy)))}}export class GroupShape{list;_name;make;constructor(t,e,s){return this.list=t,this._name=e,this.make=s,o(this,"GroupShape")}members(){return this.list.filter(t=>t.group===this._name)}box(){const t=this.members().flatMap(r=>r.frame?[r.frame]:[]),e=Math.min(...t.map(r=>r.left)),s=Math.min(...t.map(r=>r.top));return{left:t.length>0?e:0,top:t.length>0?s:0,right:Math.max(0,...t.map(r=>r.left+r.width)),bottom:Math.max(0,...t.map(r=>r.top+r.height))}}get shapes(){return this.make(this._name)}get shape_type(){return F.GROUP}get name(){return this._name}set name(t){for(const e of this.members())e.group=t;this._name=t}get left(){return this.box().left}set left(t){const e=t-this.box().left;for(const s of this.members())s.frame&&(s.frame.left+=e)}get top(){return this.box().top}set top(t){const e=t-this.box().top;for(const s of this.members())s.frame&&(s.frame.top+=e)}get width(){const t=this.box();return t.right-t.left}get height(){const t=this.box();return t.bottom-t.top}}export class Cell{def;table;row;col;constructor(t,e,s,r){return this.def=t,this.table=e,this.row=s,this.col=r,o(this,"_Cell")}get text_frame(){return new TextFrame(this.def.text)}get text(){return this.text_frame.text}set text(t){this.text_frame.text=t}get fill(){return new FillFormat(()=>this.def.fill,t=>{this.def.fill=t})}get borders(){return this.def.borders??{}}set borders(t){this.def.borders=t}get margin_left(){return this.def.text.margin_left??_.left}set margin_left(t){this.def.text.margin_left=t}get margin_right(){return this.def.text.margin_right??_.right}set margin_right(t){this.def.text.margin_right=t}get margin_top(){return this.def.text.margin_top??_.top}set margin_top(t){this.def.text.margin_top=t}get margin_bottom(){return this.def.text.margin_bottom??_.bottom}set margin_bottom(t){this.def.text.margin_bottom=t}get vertical_anchor(){return this.def.text.vertical_anchor}set vertical_anchor(t){t===void 0?delete this.def.text.vertical_anchor:this.def.text.vertical_anchor=t}get is_merge_origin(){return(this.def.span_width??1)>1||(this.def.span_height??1)>1}get is_spanned(){return this.def.spanned===!0}get span_width(){return this.def.span_width??1}get span_height(){return this.def.span_height??1}merge(t){const e=[this.row,t.row].sort((l,f)=>l-f),s=[this.col,t.col].sort((l,f)=>l-f),[r=0,n=0]=e,[h=0,d=0]=s;for(let l=r;l<=n;l++)for(let f=h;f<=d;f++){const u=this.table.rows[l]?.cells[f];u&&(l===r&&f===h?(d>h&&(u.span_width=d-h+1),n>r&&(u.span_height=n-r+1)):u.spanned=!0)}}split(){const t=this.span_width,e=this.span_height;delete this.def.span_width,delete this.def.span_height;for(let s=this.row;s<this.row+e;s++)for(let r=this.col;r<this.col+t;r++){const n=this.table.rows[s]?.cells[r];n&&delete n.spanned}}}export class Column{def;at;constructor(t,e){return this.def=t,this.at=e,o(this,"_Column")}get width(){return this.def.columns[this.at]??0}set width(t){this.def.columns[this.at]=t}}export class Row{def;at;constructor(t,e){return this.def=t,this.at=e,o(this,"_Row")}get row(){const t=this.def.rows[this.at];if(!t)throw new Error(`The table has no row ${String(this.at)}.`);return t}get height(){return this.row.height}set height(t){this.row.height=t}}export class Table{def;constructor(t){return this.def=t,o(this,"Table")}cell(t,e){const s=this.def.rows[t]?.cells[e];if(!s)throw new Error(`cell(): the table has ${String(this.def.rows.length)} rows and ${String(this.def.columns.length)} columns.`);return new Cell(s,this.def,t,e)}*iter_cells(){for(let t=0;t<this.def.rows.length;t++)for(let e=0;e<this.def.columns.length;e++)yield this.cell(t,e)}get columns(){return this.def.columns.map((t,e)=>new Column(this.def,e))}get rows(){return this.def.rows.map((t,e)=>new Row(this.def,e))}flag(t){return this.def[t]===!0}get first_row(){return this.flag("first_row")}set first_row(t){this.def.first_row=t}get first_col(){return this.flag("first_col")}set first_col(t){this.def.first_col=t}get last_row(){return this.flag("last_row")}set last_row(t){this.def.last_row=t}get last_col(){return this.flag("last_col")}set last_col(t){this.def.last_col=t}get horz_banding(){return this.flag("horz_banding")}set horz_banding(t){this.def.horz_banding=t}get vert_banding(){return this.flag("vert_banding")}set vert_banding(t){this.def.vert_banding=t}}function Y(i,t,e=[]){const s=new Set([...i,...e].map(n=>n.name));let r=1;for(;s.has(`${t}-${String(r)}`);)r++;return`${t}-${String(r)}`}export class ShapeCollection{list;base;components;inherit;group;under;constructor(t,e,s,r=()=>{},n=()=>[],h){return this.list=t,this.base=e,this.components=s,this.inherit=r,this.under=n,this.group=h,o(this,"SlideShapes",{index:d=>this._at(d)})}_wrap(t){return new Shape(t,()=>this.inherit(t))}_at(t){const e=this.list[t];return e?this._wrap(e):void 0}*[Symbol.iterator](){for(const t of this.list)yield this._wrap(t)}get length(){return this.list.length}get(t){const e=this.list.find(s=>s.name===t);return e?this._wrap(e):void 0}get title(){const t=this.list.find(e=>e.placeholder?.type==="title"||e.placeholder?.type==="ctrTitle");return t?this._wrap(t):void 0}get placeholders(){return new Placeholders(this.list,this.inherit)}_add(t,e){const s={name:Y(this.list,t,this.under()),...e,...this.group===void 0?{}:{group:this.group}};return this.list.push(s),this._wrap(s)}add_textbox(t,e,s,r){return this._add("textbox",{kind:"textbox",frame:p(t,e,s,r),text:{...x(),...C}})}add_picture(t,e,s,r,n){return(r===void 0||n===void 0)&&g("add_picture() takes a width and a height here: a picture's own size is not read while a deck's code runs"),this._add("picture",{kind:"picture",frame:p(e,s,r??0,n??0),media:{path:t,base:this.base}})}add_movie(t,e,s,r,n,h={}){return this._add("movie",{kind:"movie",frame:p(e,s,r,n),media:{path:t,base:this.base,...h.poster_frame_time===void 0?{}:{poster:h.poster_frame_time}}})}add_shape(t,e,s,r,n){J.has(t)||g(`add_shape(): ${t} is not one of MSO_SHAPE's ${Object.keys($).join(", ")}`);const h=x();return h.vertical_anchor=c.vertical_anchor,h.paragraphs=[{runs:[],level:0,alignment:c.alignment}],this._add("shape",{kind:"autoshape",frame:p(e,s,r,n),geometry:t,fill:c.fill,line:c.line,line_width:c.line_width,text:h})}add_table(t,e,s,r,n,h){(t<1||e<1)&&g("add_table(): a table has at least a row and a column.");const d=Math.floor(n/e),l=Math.floor(h/t);return this._add("table",{kind:"table",frame:p(s,r,n,h),table:{columns:Array.from({length:e},()=>d),rows:Array.from({length:t},()=>({height:l,cells:Array.from({length:e},()=>({text:x()}))}))}})}add_chart(t,e,s,r,n,h){return this._add("chart",{kind:"chart",frame:p(e,s,r,n),chart:{type:t,categories:[...h.categories],series:h._series()}})}add_group_shape(){this.group!==void 0&&g("add_group_shape(): a group here holds shapes, not another group.");let t=1;for(;this.list.some(e=>e.group===`group-${String(t)}`);)t++;return new GroupShape(this.list,`group-${String(t)}`,e=>new ShapeCollection(this.list,this.base,this.components,this.inherit,this.under,e))}build_freeform(t=0,e=0,s=1){return new FreeformBuilder([t,e],s,(r,n)=>{const h=x();return h.vertical_anchor=c.vertical_anchor,h.paragraphs=[{runs:[],level:0,alignment:c.alignment}],this._add("freeform",{kind:"autoshape",frame:n,path:r,fill:c.fill,line:c.line,line_width:c.line_width,text:h})})}add_connector(t,e,s,r,n){t!==k.STRAIGHT&&g(`add_connector(): ${t} is not one of MSO_CONNECTOR's ${Object.keys(k).join(", ")}`);const h=p(Math.min(e,r),Math.min(s,n),Math.abs(r-e),Math.abs(n-s),{line:!0}),d=r<e,l=n<s;return this._add("connector",{kind:"autoshape",frame:h,geometry:"line",...d||l?{flip:{...d?{h:d}:{},...l?{v:l}:{}}}:{},line:M.line,line_width:M.line_width})}add_component(t,e,s,r,n,h={}){if(!Object.hasOwn(this.components(),t))throw new Error(`add_component(): the presentation has no component ${t}; add it with prs.components.add("${t}", { … }) first.`);return this._add(t,{kind:"component",frame:p(e,s,r,n),component:{name:t,props:h}})}}export const NAME_OF_TYPE={title:"title",ctrTitle:"title",subTitle:"subtitle",body:"body",pic:"picture",media:"media",obj:"content",dt:"date",ftr:"footer",sldNum:"slide-number"};export class Placeholders{list;inherit;constructor(t,e=()=>{}){return this.list=t,this.inherit=e,o(this,"placeholders",{index:s=>this.get(s)})}_wrap(t){return new Shape(t,()=>this.inherit(t))}*[Symbol.iterator](){for(const t of this.list)t.kind==="placeholder"&&(yield this._wrap(t))}get length(){return this.list.filter(t=>t.kind==="placeholder").length}get(t){const e=this.list.find(s=>s.kind==="placeholder"&&(typeof t=="number"?s.placeholder?.idx===t:s.name===t||s.placeholder?.type===t));return e?this._wrap(e):void 0}add(t,e,s,r,n,h={}){const d=typeof e=="object"?e:h,l=typeof e=="object"?void 0:e;Object.values(T).includes(t)||g(`placeholders.add(): ${t} is not one of PP_PLACEHOLDER's ${Object.keys(T).join(", ")}`);const f=this.list.filter(w=>w.kind==="placeholder"),u=new Set(f.map(w=>w.placeholder?.idx));let a=t==="title"||t==="ctrTitle"?0:N[t]??1;for(;u.has(a)&&a!==0;)a++;if(u.has(a))throw new Error("A layout has one title placeholder (idx 0).");const m=d.name??NAME_OF_TYPE[t];if(this.list.some(w=>w.name===m))throw new Error(`Two shapes are ${m}: give the placeholder a name ({ name }).`);const b=[l,s,r,n].filter(w=>w!==void 0);if(b.length!==0&&b.length!==4)throw new Error("placeholders.add(type, left, top, width, height): give all four, or none to take the master's frame.");const E={name:m,kind:"placeholder",placeholder:{type:t,idx:a},...b.length===4?{frame:p(l??0,s??0,r??0,n??0)}:{},text:x()};return this.list.push(E),this._wrap(E)}}export class SlideLayout{def;master;ctx;constructor(t,e,s){return this.def=t,this.master=e,this.ctx=s,o(this,"SlideLayout")}get _def(){return this.def}inherit=t=>t.placeholder?v(this.master._def,t.placeholder.type)?.frame:void 0;get name(){return this.def.name}get slide_master(){return this.master}get display_master_shapes(){return this.def.display_master_shapes??!0}set display_master_shapes(t){t?delete this.def.display_master_shapes:this.def.display_master_shapes=!1}get background(){return new Background(this.def)}get placeholders(){return new Placeholders(this.def.shapes,this.inherit)}get shapes(){return new ShapeCollection(this.def.shapes,this.ctx.base,this.ctx.components,this.inherit,()=>this.master._def.shapes)}}export class SlideLayouts{list;make;constructor(t,e){return this.list=t,this.make=e,o(this,"SlideLayouts",{index:s=>this.list[s]})}*[Symbol.iterator](){yield*this.list}get length(){return this.list.length}get_by_name(t,e){return this.list.find(s=>s.name===t)??e}index(t){const e=this.list.indexOf(t);if(e<0)throw new Error(`${t.name} is not among these layouts.`);return e}add(t,e){if(!this.make)throw new Error("A layout is added to a master: master.slide_layouts.add(name).");const s=this.make(t);return e?.(s),s}}export class TextStyles{def;constructor(t){return this.def=t,o(this,"text_styles")}get title_style(){return y(this.def.title)}get body_style(){return y(this.def.body)}get other_style(){return y(this.def.other)}}export class SlideMaster{def;layouts=[];ctx;allLayouts;constructor(t,e,s){return this.def=t,this.ctx=e,this.allLayouts=s,o(this,"SlideMaster")}get _def(){return this.def}get name(){return this.def.name}get background(){return new Background(this.def)}get placeholders(){return new Placeholders(this.def.shapes)}get shapes(){return new ShapeCollection(this.def.shapes,this.ctx.base,this.ctx.components)}get text_styles(){return new TextStyles(this.def.text_styles)}get slide_layouts(){return new SlideLayouts(this.layouts,t=>{if(this.allLayouts.some(r=>r.name===t))throw new Error(`Two layouts are "${t}": a layout's name is unique in the deck, as slides.yaml names it.`);const e={name:t,master:this.def.name,shapes:[]};this.def.layouts.push(e);const s=new SlideLayout(e,this,this.ctx);return this.layouts.push(s),this.allLayouts.push(s),s})}}export class SlideMasters{list;make;constructor(t,e){return this.list=t,this.make=e,o(this,"SlideMasters",{index:s=>this.list[s]})}*[Symbol.iterator](){yield*this.list}get length(){return this.list.length}index(t){return this.list.indexOf(t)}add(t,e){const s=this.make(t);return e?.(s),s}}export class GeneratedSlide{own;def;layout;constructor(t,e,s){this.def=t,this.layout=e,this.own=e._def.shapes.filter(n=>n.kind==="placeholder").map(n=>({name:n.name,kind:"placeholder",...n.placeholder?{placeholder:{...n.placeholder}}:{},text:x()}));const r=n=>{const h=e._def.shapes.find(d=>d.kind==="placeholder"&&d.placeholder?.idx===n.placeholder?.idx);return h?h.frame??(h.placeholder?v(e.slide_master._def,h.placeholder.type)?.frame:void 0):void 0};return this._shapes=new ShapeCollection(this.own,s.base,s.components,r,()=>[...e.slide_master._def.shapes,...e._def.shapes]),this._placeholders=new Placeholders(this.own,r),o(this,"Slide")}_shapes;_placeholders;get shapes(){return this._shapes}get placeholders(){return this._placeholders}get slide_id(){return this.def.id}get slide_layout(){return this.layout}get has_notes_slide(){return this.def.notes!==void 0}get notes_slide(){const t=this.def;return{notes_text_frame:{get text(){return t.notes??""},set text(e){t.notes=e}}}}get transition(){return this.def.transition}set transition(t){t===void 0?delete this.def.transition:this.def.transition=t}get animations(){return new Animations(this.def.animations??=[])}_done(){const t={},e=[];for(const s of this.own)s.kind==="placeholder"&&s.placeholder?(s.text?.paragraphs.some(r=>r.runs.length>0)&&(t[s.placeholder.idx]=s.text.paragraphs),s.frame&&e.push({...s,text:x()})):e.push(s);return{...this.def,shapes:e,text:t}}}export class Animations{list;constructor(t){return this.list=t,o(this,"Animations")}add(t,e,s={}){this.list.push({shape:typeof t=="string"?t:t.name,effect:e,...s})}get length(){return this.list.length}}class Z{gen;constructor(t){return this.gen=t,o(this,"slides")}add_slide(t,e){return this.gen._add(t,e)}}export class Generator{list=[];prs;ctx;constructor(t,e){return this.prs=t,this.ctx=e,o(this,"Generator")}data(t){return this.ctx.data(t)}get slides(){return new Z(this)}_add(t,e){const s=typeof t=="string"?this.prs._layout(t):t;if(!s)throw new Error(`add_slide(): the presentation has no layout ${typeof t=="string"?t:t.name}.`);if(!/^[A-Za-z0-9_-]+$/u.test(e))throw new Error(`add_slide(): ${e} is not an id of letters, digits, _ and -.`);if(this.list.some(n=>n.slide_id===e))throw new Error(`add_slide(): two slides are ${e}.`);const r=new GeneratedSlide({id:e,layout:s.name,shapes:[],text:{}},s,this.prs._ctx);return this.list.push(r),r}_made(){return this.list.map(t=>t._done())}}const q=()=>JSON.parse(JSON.stringify(z));export class Presentation{masters=[];layouts=[];def;_ctx;constructor(t,e){return this.def={slide_width:t[0],slide_height:t[1],masters:[],components:{},generators:{}},this._ctx={base:e,components:()=>this.def.components},o(this,"Presentation")}get _def(){return this.def}get slide_width(){return this.def.slide_width}set slide_width(t){this.def.slide_width=t}get slide_height(){return this.def.slide_height}set slide_height(t){this.def.slide_height=t}get slide_masters(){return new SlideMasters(this.masters,t=>{if(this.masters.some(r=>r.name===t))throw new Error(`Two masters are "${t}".`);const e={name:t,background:"lt1",text_styles:q(),shapes:[],layouts:[]};this.def.masters.push(e);const s=new SlideMaster(e,this._ctx,this.layouts);return this.masters.push(s),s})}get slide_master(){const t=this.masters[0];if(!t)throw new Error("The presentation has no master yet: prs.slide_masters.add(name) makes one.");return t}get slide_layouts(){const t=this.masters[0];return t?t.slide_layouts:new SlideLayouts([])}get slides(){return g("A deck's slides are slides.yaml's, in order, each on a layout, and their words the script's; slides made from data are a generator's (prs.generators.add)")}save(){return g("A deck is not saved by its code: allyhub render writes its PDF, pictures and PPTX")}get theme(){return this.def.theme??={},this.def.theme}set theme(t){this.def.theme=t}get components(){return o({add:(t,e)=>{if(Object.hasOwn(this.def.components,t))throw new Error(`Two components are "${t}".`);if(typeof e.layers!="function")throw new Error(`Component ${t} draws with its layers function.`);this.def.components[t]={name:t,props:e.props??{},layers:e.layers}}},"components")}get generators(){return o({add:(t,e)=>{if(Object.hasOwn(this.def.generators,t))throw new Error(`Two generators are "${t}".`);this.def.generators[t]={name:t,make:s=>{const r=new Generator(this,s);return e(r),r._made()}}}},"generators")}_layout(t){return this.layouts.find(e=>e.name===t)}}export const DECK_BRAND="__allyhubDeck";export function isDeck(i){return typeof i=="object"&&i!==null&&DECK_BRAND in i}export const presentationFor=i=>(t,e)=>{const[s,r]=typeof t=="function"?[{},t]:[t,e];if(typeof r!="function")throw new Error("An item's slides.ts exports one deck: export default presentation({ size }, (prs) => { … masters, layouts, components … }); its slides are slides.yaml.");if(typeof s.size=="string"&&!Object.hasOwn(S,s.size))throw new Error(`presentation(): size ${s.size} is not one of ${Object.keys(S).join(", ")}, or { width, height } in EMU.`);return{[DECK_BRAND]:!0,kind:"slides",options:s,build:r,written:{file:i}}};export function evaluateDeck(i){const t=i.options.size??"16:9",e=typeof t=="string"?S[t]:[t.width,t.height],s=i.written.file.split("/").slice(0,-1).join("/"),r=new Presentation(e,s);return i.options.theme&&(r.theme=JSON.parse(JSON.stringify(i.options.theme))),i.build(r),r._def}
4
+ `).map(e=>({runs:N(e),level:0}))}get paragraphs(){return this.def.paragraphs.length===0&&this.def.paragraphs.push({runs:[],level:0}),this.def.paragraphs.map(t=>new Paragraph(t))}add_paragraph(){this.def.paragraphs.length===0&&this.def.paragraphs.push({runs:[],level:0});const t={runs:[],level:0};return this.def.paragraphs.push(t),new Paragraph(t)}clear(){const t=this.def.paragraphs[0];this.def.paragraphs=t?[{...t,runs:[]}]:[]}fit_text(t,e=18,s,r){this.def.auto_size="text",this.def.word_wrap=!0;for(const n of this.def.paragraphs)for(const h of n.runs)h.font={...h.font,size:Math.trunc(e*F),...t===void 0?{}:{name:t},...s===void 0?{}:{bold:s},...r===void 0?{}:{italic:r}}}get list_style(){return S(this.def.levels)}get vertical_anchor(){return this.def.vertical_anchor}set vertical_anchor(t){this._set("vertical_anchor",t)}get auto_size(){return this.def.auto_size}set auto_size(t){this._set("auto_size",t)}get word_wrap(){return this.def.word_wrap}set word_wrap(t){this._set("word_wrap",t)}get margin_left(){return d(this.def.margin_left??w.left)}set margin_left(t){this.def.margin_left=t}get margin_top(){return d(this.def.margin_top??w.top)}set margin_top(t){this.def.margin_top=t}get margin_right(){return d(this.def.margin_right??w.right)}set margin_right(t){this.def.margin_right=t}get margin_bottom(){return d(this.def.margin_bottom??w.bottom)}set margin_bottom(t){this.def.margin_bottom=t}}export class FillFormat{read;write;start;shape;constructor(t,e,s="lt1",r){return this.read=t,this.write=e,this.start=s,this.shape=r,o(this,"FillFormat")}solid(){const t=this.read();this.shape&&Reflect.deleteProperty(this.shape,"gradient"),t==null&&this.write(this.start)}background(){this.shape&&Reflect.deleteProperty(this.shape,"gradient"),this.write(null)}_shape(t){if(!this.shape)throw new TypeError(`Only a shape's fill has ${t}.`);return this.shape}gradient(){this._shape("a gradient").gradient??={angle:90,stops:[{at:0,color:"accent1"},{at:1,color:"accent2"}]}}get gradient_angle(){return this._gradient().angle}set gradient_angle(t){this._gradient().angle=t}get gradient_stops(){return this._gradient().stops}set gradient_stops(t){if(t.length<2)throw new Error("A gradient has two stops at least.");this._gradient().stops=t.map(e=>({...e}))}_gradient(){const{gradient:t}=this._shape("a gradient");if(!t)throw new TypeError("This fill is no gradient: call fill.gradient() first.");return t}get transparency(){return this._shape("a transparency").fill_transparency??0}set transparency(t){if(!(t>=0&&t<=1))throw new Error(`A transparency is a share, 0 to 1, not ${String(t)}.`);this._shape("a transparency").fill_transparency=t}get type(){if(this.shape?.gradient)return"gradient";const t=this.read();return t===void 0?void 0:t===null?"background":"solid"}get fore_color(){const t=this.read();if(t==null)throw new TypeError("This fill is not solid, so it has no fore_color: call fill.solid() first.");return new ColorFormat(()=>this.read()??void 0,e=>{this.write(e??this.start)})}}export class ShadowFormat{def;constructor(t){return this.def=t,o(this,"ShadowFormat")}_shadow(){return this.def.shadow??={...v},this.def.shadow}get inherit(){return this.def.shadow===void 0}set inherit(t){t?Reflect.deleteProperty(this.def,"shadow"):this._shadow()}get blur_radius(){return d(this._shadow().blur)}set blur_radius(t){this._shadow().blur=t}get distance(){return d(this._shadow().distance)}set distance(t){this._shadow().distance=t}get angle(){return this._shadow().angle}set angle(t){this._shadow().angle=t}get transparency(){return this._shadow().transparency}set transparency(t){this._shadow().transparency=t}get color(){const t=this._shadow();return new ColorFormat(()=>t.color,e=>{t.color=e??v.color})}}export class LineFormat{def;constructor(t){return this.def=t,o(this,"LineFormat")}get color(){return new ColorFormat(()=>this.def.line??void 0,t=>{this.def.line=t??null})}get fill(){return new FillFormat(()=>this.def.line,t=>{this.def.line=t},"dk1")}get width(){return d(this.def.line_width??0)}set width(t){this.def.line_width=t}get dash_style(){return this.def.line_dash??null}set dash_style(t){t===null?delete this.def.line_dash:this.def.line_dash=t}get begin_arrow(){return this.def.line_begin??"none"}set begin_arrow(t){this.def.line_begin=t}get end_arrow(){return this.def.line_end??"none"}set end_arrow(t){this.def.line_end=t}}export class Background{holder;constructor(t){return this.holder=t,o(this,"_Background")}get fill(){return new FillFormat(()=>this.holder.background,t=>{this.holder.background=t??"lt1"})}}export const adjustmentDefaults=i=>z(i).map(t=>t.value/1e5);export class Adjustments{def;constructor(t){return this.def=t,o(this,"Adjustments",{index:e=>this._values()[e],setIndex:(e,s)=>{this._set(e,Number(s))}})}_values(){return this.def.adjustments??adjustmentDefaults(this.def.geometry??"rect")}get length(){return this._values().length}_set(t,e){const s=this._values();if(t<0||t>=s.length)throw new RangeError(`adjustments[${String(t)}]: ${this.def.geometry??"this shape"} has ${String(s.length)}.`);if(!Number.isFinite(e))throw new Error(`adjustments[${String(t)}] = ${String(e)} is not a number.`);s[t]=e,this.def.adjustments=s}}const Q={left:0,top:0,width:0,height:0};export class Shape{def;inherit;constructor(t,e=()=>{}){return this.def=t,this.inherit=e,o(this,"Shape")}get _def(){return this.def}_frame(){return this.def.frame??this.inherit()??Q}_own(){return this.def.frame??={...this._frame()},this.def.frame}get name(){return this.def.name}set name(t){this.def.name=t}get shape_type(){return this.def.path?"freeform":R(this.def.geometry)?"line":this.def.kind}get is_placeholder(){return this.def.kind==="placeholder"}get has_table(){return this.def.table!==void 0}get has_chart(){return this.def.chart!==void 0}get chart(){if(!this.def.chart)throw new Error(`${this.def.name} is not a chart.`);return new B(this.def.chart)}get table(){if(!this.def.table)throw new Error(`${this.def.name} is not a table.`);return new Table(this.def.table)}get placeholder_format(){if(!this.def.placeholder)throw new Error(`${this.def.name} is not a placeholder.`);return o({...this.def.placeholder},"_PlaceholderFormat")}get left(){return d(this._frame().left)}set left(t){this._own().left=t}get top(){return d(this._frame().top)}set top(t){this._own().top=t}get width(){return d(this._frame().width)}set width(t){this._own().width=t}get height(){return d(this._frame().height)}set height(t){this._own().height=t}get rotation(){return this.def.rotation??0}set rotation(t){if(!Number.isFinite(t))throw new Error(`${this.def.name}: rotation is a number of degrees.`);const e=(Math.trunc(t*6e4)%216e5+216e5)%216e5/6e4;e===0?Reflect.deleteProperty(this.def,"rotation"):this.def.rotation=e}get has_text_frame(){return this.def.text!==void 0}get text_frame(){if(!this.def.text)throw new Error(`${this.def.name} (a ${this.shape_type}) has no text frame: has_text_frame is false.`);return new TextFrame(this.def.text)}get text(){return this.text_frame.text}set text(t){this.text_frame.text=t}get fill(){return new FillFormat(()=>this.def.fill,t=>{this.def.fill=t},"lt1",this.def)}get line(){return new LineFormat(this.def)}get shadow(){return new ShadowFormat(this.def)}get adjustments(){return new Adjustments(this.def)}}const V=i=>typeof i=="number"&&Number.isFinite(i),g=(i,t,e,s,{line:r=!1}={})=>{for(const[n,h]of Object.entries({left:i,top:t,width:e,height:s}))if(!V(h))throw new Error(`${n} ${String(h)} is not a length (Emu, Inches, Pt, Cm, Mm).`);if(r?e<0||s<0:e<=0||s<=0)throw new Error("A shape's width and height are over 0.");return{left:Math.trunc(i),top:Math.trunc(t),width:Math.trunc(e),height:Math.trunc(s)}},tt=new Set(Object.values(M));export class FreeformBuilder{steps;sx;sy;make;constructor(t,e,s){return this.steps=[{op:"move",x:t[0],y:t[1]}],[this.sx,this.sy]=typeof e=="number"?[e,e]:e,this.make=s,o(this,"FreeformBuilder")}add_line_segments(t,e=!0){for(const[s,r]of t)this.steps.push({op:"line",x:s,y:r});return e&&this.steps.push({op:"close"}),this}add_curve_segment(t,e,s,r,n,h){return this.steps.push({op:"curve",x1:t,y1:e,x2:s,y2:r,x:n,y:h}),this}move_to(t,e){return this.steps.push({op:"move",x:t,y:e}),this}convert_to_shape(t=0,e=0){this.steps.length<2&&m("convert_to_shape(): a freeform needs a segment.");const s=this.steps.flatMap(a=>a.op==="close"?[]:a.op==="curve"?[[a.x1,a.y1],[a.x2,a.y2],[a.x,a.y]]:[[a.x,a.y]]),r=s.map(a=>a[0]),n=s.map(a=>a[1]),h=Math.min(...r),l=Math.min(...n),f=Math.max(...r)-h,u=Math.max(...n)-l,c=(a,_)=>({x:a-h,y:_-l});return this.make({w:f,h:u,steps:this.steps.map(a=>{if(a.op==="close")return a;if(a.op!=="curve")return{op:a.op,...c(a.x,a.y)};const _=c(a.x1,a.y1),x=c(a.x2,a.y2);return{op:"curve",x1:_.x,y1:_.y,x2:x.x,y2:x.y,...c(a.x,a.y)}})},g(Math.round(h*this.sx)+t,Math.round(l*this.sy)+e,Math.round(f*this.sx),Math.round(u*this.sy)))}}export class GroupShape{list;_name;make;constructor(t,e,s){return this.list=t,this._name=e,this.make=s,o(this,"GroupShape")}members(){return this.list.filter(t=>t.group===this._name)}box(){const t=this.members().flatMap(r=>r.frame?[r.frame]:[]),e=Math.min(...t.map(r=>r.left)),s=Math.min(...t.map(r=>r.top));return{left:t.length>0?e:0,top:t.length>0?s:0,right:Math.max(0,...t.map(r=>r.left+r.width)),bottom:Math.max(0,...t.map(r=>r.top+r.height))}}get shapes(){return this.make(this._name)}get shape_type(){return I.GROUP}get name(){return this._name}set name(t){for(const e of this.members())e.group=t;this._name=t}get left(){return d(this.box().left)}set left(t){const e=t-this.box().left;for(const s of this.members())s.frame&&(s.frame.left+=e)}get top(){return d(this.box().top)}set top(t){const e=t-this.box().top;for(const s of this.members())s.frame&&(s.frame.top+=e)}get width(){const t=this.box();return d(t.right-t.left)}get height(){const t=this.box();return d(t.bottom-t.top)}}export class Cell{def;table;row;col;constructor(t,e,s,r){return this.def=t,this.table=e,this.row=s,this.col=r,o(this,"_Cell")}get text_frame(){return new TextFrame(this.def.text)}get text(){return this.text_frame.text}set text(t){this.text_frame.text=t}get fill(){return new FillFormat(()=>this.def.fill,t=>{this.def.fill=t})}get borders(){return this.def.borders??{}}set borders(t){this.def.borders=t}get margin_left(){return d(this.def.text.margin_left??w.left)}set margin_left(t){this.def.text.margin_left=t}get margin_right(){return d(this.def.text.margin_right??w.right)}set margin_right(t){this.def.text.margin_right=t}get margin_top(){return d(this.def.text.margin_top??w.top)}set margin_top(t){this.def.text.margin_top=t}get margin_bottom(){return d(this.def.text.margin_bottom??w.bottom)}set margin_bottom(t){this.def.text.margin_bottom=t}get vertical_anchor(){return this.def.text.vertical_anchor}set vertical_anchor(t){t===void 0?delete this.def.text.vertical_anchor:this.def.text.vertical_anchor=t}get is_merge_origin(){return(this.def.span_width??1)>1||(this.def.span_height??1)>1}get is_spanned(){return this.def.spanned===!0}get span_width(){return this.def.span_width??1}get span_height(){return this.def.span_height??1}merge(t){const e=[this.row,t.row].sort((f,u)=>f-u),s=[this.col,t.col].sort((f,u)=>f-u),[r=0,n=0]=e,[h=0,l=0]=s;for(let f=r;f<=n;f++)for(let u=h;u<=l;u++){const c=this.table.rows[f]?.cells[u];c&&(f===r&&u===h?(l>h&&(c.span_width=l-h+1),n>r&&(c.span_height=n-r+1)):c.spanned=!0)}}split(){const t=this.span_width,e=this.span_height;delete this.def.span_width,delete this.def.span_height;for(let s=this.row;s<this.row+e;s++)for(let r=this.col;r<this.col+t;r++){const n=this.table.rows[s]?.cells[r];n&&delete n.spanned}}}export class Column{def;at;constructor(t,e){return this.def=t,this.at=e,o(this,"_Column")}get width(){return d(this.def.columns[this.at]??0)}set width(t){this.def.columns[this.at]=t}}export class Row{def;at;constructor(t,e){return this.def=t,this.at=e,o(this,"_Row")}get row(){const t=this.def.rows[this.at];if(!t)throw new Error(`The table has no row ${String(this.at)}.`);return t}get height(){return d(this.row.height)}set height(t){this.row.height=t}}export class Table{def;constructor(t){return this.def=t,o(this,"Table")}cell(t,e){const s=this.def.rows[t]?.cells[e];if(!s)throw new Error(`cell(): the table has ${String(this.def.rows.length)} rows and ${String(this.def.columns.length)} columns.`);return new Cell(s,this.def,t,e)}*iter_cells(){for(let t=0;t<this.def.rows.length;t++)for(let e=0;e<this.def.columns.length;e++)yield this.cell(t,e)}get columns(){return this.def.columns.map((t,e)=>new Column(this.def,e))}get rows(){return this.def.rows.map((t,e)=>new Row(this.def,e))}flag(t){return this.def[t]===!0}get first_row(){return this.flag("first_row")}set first_row(t){this.def.first_row=t}get first_col(){return this.flag("first_col")}set first_col(t){this.def.first_col=t}get last_row(){return this.flag("last_row")}set last_row(t){this.def.last_row=t}get last_col(){return this.flag("last_col")}set last_col(t){this.def.last_col=t}get horz_banding(){return this.flag("horz_banding")}set horz_banding(t){this.def.horz_banding=t}get vert_banding(){return this.flag("vert_banding")}set vert_banding(t){this.def.vert_banding=t}}function et(i,t,e=[]){const s=new Set([...i,...e].map(n=>n.name));let r=1;for(;s.has(`${t}-${String(r)}`);)r++;return`${t}-${String(r)}`}export class ShapeCollection{list;base;components;inherit;group;under;constructor(t,e,s,r=()=>{},n=()=>[],h){return this.list=t,this.base=e,this.components=s,this.inherit=r,this.under=n,this.group=h,o(this,"SlideShapes",{index:l=>this._at(l)})}_wrap(t){return new Shape(t,()=>this.inherit(t))}_at(t){const e=this.list[t];return e?this._wrap(e):void 0}*[Symbol.iterator](){for(const t of this.list)yield this._wrap(t)}get length(){return this.list.length}get(t){const e=this.list.find(s=>s.name===t);return e?this._wrap(e):void 0}get title(){const t=this.list.find(e=>e.placeholder?.type==="title"||e.placeholder?.type==="ctrTitle");return t?this._wrap(t):void 0}get placeholders(){return new Placeholders(this.list,this.inherit)}_add(t,e){const s={name:et(this.list,t,this.under()),...e,...this.group===void 0?{}:{group:this.group}};return this.list.push(s),this._wrap(s)}add_textbox(t,e,s,r){return this._add("textbox",{kind:"textbox",frame:g(t,e,s,r),text:{...E(),...Y}})}add_picture(t,e,s,r,n){return(r===void 0||n===void 0)&&m("add_picture() takes a width and a height here: a picture's own size is not read while a deck's code runs"),this._add("picture",{kind:"picture",frame:g(e,s,r??0,n??0),media:{path:t,base:this.base}})}add_movie(t,e,s,r,n,h={}){return this._add("movie",{kind:"movie",frame:g(e,s,r,n),media:{path:t,base:this.base,...h.poster_frame_time===void 0?{}:{poster:h.poster_frame_time}}})}add_shape(t,e,s,r,n){tt.has(t)||m(`add_shape(): ${t} is not one of MSO_SHAPE's ${Object.keys(M).join(", ")}`);const h=E();return h.vertical_anchor=p.vertical_anchor,h.paragraphs=[{runs:[],level:0,alignment:p.alignment}],this._add("shape",{kind:"autoshape",frame:g(e,s,r,n),geometry:t,fill:p.fill,line:p.line,line_width:p.line_width,text:h})}add_table(t,e,s,r,n,h){(t<1||e<1)&&m("add_table(): a table has at least a row and a column.");const l=Math.floor(n/e),f=Math.floor(h/t);return this._add("table",{kind:"table",frame:g(s,r,n,h),table:{columns:Array.from({length:e},()=>l),rows:Array.from({length:t},()=>({height:f,cells:Array.from({length:e},()=>({text:E()}))}))}})}add_chart(t,e,s,r,n,h){return this._add("chart",{kind:"chart",frame:g(e,s,r,n),chart:{type:t,categories:[...h.categories],series:h._series()}})}add_group_shape(){this.group!==void 0&&m("add_group_shape(): a group here holds shapes, not another group.");let t=1;for(;this.list.some(e=>e.group===`group-${String(t)}`);)t++;return new GroupShape(this.list,`group-${String(t)}`,e=>new ShapeCollection(this.list,this.base,this.components,this.inherit,this.under,e))}build_freeform(t=0,e=0,s=1){return new FreeformBuilder([t,e],s,(r,n)=>{const h=E();return h.vertical_anchor=p.vertical_anchor,h.paragraphs=[{runs:[],level:0,alignment:p.alignment}],this._add("freeform",{kind:"autoshape",frame:n,path:r,fill:p.fill,line:p.line,line_width:p.line_width,text:h})})}add_connector(t,e,s,r,n){R(t)||m(`add_connector(): ${t} is not one of MSO_CONNECTOR's ${Object.keys(G).join(", ")}, nor a connector's preset (${D.join(", ")})`);const h=g(Math.min(e,r),Math.min(s,n),Math.abs(r-e),Math.abs(n-s),{line:!0}),l=r<e,f=n<s;return this._add("connector",{kind:"autoshape",frame:h,geometry:t,...l||f?{flip:{...l?{h:l}:{},...f?{v:f}:{}}}:{},line:P.line,line_width:P.line_width})}add_component(t,e,s,r,n,h={}){if(!Object.hasOwn(this.components(),t))throw new Error(`add_component(): the presentation has no component ${t}; add it with prs.components.add("${t}", { … }) first.`);return this._add(t,{kind:"component",frame:g(e,s,r,n),component:{name:t,props:h}})}}export const NAME_OF_TYPE={title:"title",ctrTitle:"title",subTitle:"subtitle",body:"body",pic:"picture",media:"media",obj:"content",dt:"date",ftr:"footer",sldNum:"slide-number"};export class Placeholders{list;inherit;constructor(t,e=()=>{}){return this.list=t,this.inherit=e,o(this,"placeholders",{index:s=>this.get(s)})}_wrap(t){return new Shape(t,()=>this.inherit(t))}*[Symbol.iterator](){for(const t of this.list)t.kind==="placeholder"&&(yield this._wrap(t))}get length(){return this.list.filter(t=>t.kind==="placeholder").length}get(t){const e=this.list.find(s=>s.kind==="placeholder"&&(typeof t=="number"?s.placeholder?.idx===t:s.name===t||s.placeholder?.type===t));return e?this._wrap(e):void 0}add(t,e,s,r,n,h={}){const l=typeof e=="object"?e:h,f=typeof e=="object"?void 0:e;Object.values(j).includes(t)||m(`placeholders.add(): ${t} is not one of PP_PLACEHOLDER's ${Object.keys(j).join(", ")}`);const u=this.list.filter(b=>b.kind==="placeholder"),c=new Set(u.map(b=>b.placeholder?.idx));let a=t==="title"||t==="ctrTitle"?0:H[t]??1;for(;c.has(a)&&a!==0;)a++;if(c.has(a))throw new Error("A layout has one title placeholder (idx 0).");const _=l.name??NAME_OF_TYPE[t];if(this.list.some(b=>b.name===_))throw new Error(`Two shapes are ${_}: give the placeholder a name ({ name }).`);const x=[f,s,r,n].filter(b=>b!==void 0);if(x.length!==0&&x.length!==4)throw new Error("placeholders.add(type, left, top, width, height): give all four, or none to take the master's frame.");const $={name:_,kind:"placeholder",placeholder:{type:t,idx:a},...x.length===4?{frame:g(f??0,s??0,r??0,n??0)}:{},text:{paragraphs:[],levels:X(t)}};return this.list.push($),this._wrap($)}}export class SlideLayout{def;master;ctx;constructor(t,e,s){return this.def=t,this.master=e,this.ctx=s,o(this,"SlideLayout")}get _def(){return this.def}inherit=t=>t.placeholder?A(this.master._def,t.placeholder.type)?.frame:void 0;get name(){return this.def.name}get slide_master(){return this.master}get display_master_shapes(){return this.def.display_master_shapes??!0}set display_master_shapes(t){t?delete this.def.display_master_shapes:this.def.display_master_shapes=!1}get background(){return new Background(this.def)}get placeholders(){return new Placeholders(this.def.shapes,this.inherit)}get shapes(){return new ShapeCollection(this.def.shapes,this.ctx.base,this.ctx.components,this.inherit,()=>this.master._def.shapes)}}export class SlideLayouts{list;make;constructor(t,e){return this.list=t,this.make=e,o(this,"SlideLayouts",{index:s=>this.list[s]})}*[Symbol.iterator](){yield*this.list}get length(){return this.list.length}get_by_name(t,e){return this.list.find(s=>s.name===t)??e}index(t){const e=this.list.indexOf(t);if(e<0)throw new Error(`${t.name} is not among these layouts.`);return e}add(t,e){if(!this.make)throw new Error("A layout is added to a master: master.slide_layouts.add(name).");const s=this.make(t);return e?.(s),s}}export class TextStyles{def;constructor(t){return this.def=t,o(this,"text_styles")}get title_style(){return S(this.def.title)}get body_style(){return S(this.def.body)}get other_style(){return S(this.def.other)}}export class SlideMaster{def;layouts=[];ctx;allLayouts;constructor(t,e,s){return this.def=t,this.ctx=e,this.allLayouts=s,o(this,"SlideMaster")}get _def(){return this.def}get name(){return this.def.name}get background(){return new Background(this.def)}get placeholders(){return new Placeholders(this.def.shapes)}get shapes(){return new ShapeCollection(this.def.shapes,this.ctx.base,this.ctx.components)}get text_styles(){return new TextStyles(this.def.text_styles)}get slide_layouts(){return new SlideLayouts(this.layouts,t=>{if(this.allLayouts.some(r=>r.name===t))throw new Error(`Two layouts are "${t}": a layout's name is unique in the deck, as slides.yaml names it.`);const e={name:t,master:this.def.name,shapes:[]};this.def.layouts.push(e);const s=new SlideLayout(e,this,this.ctx);return this.layouts.push(s),this.allLayouts.push(s),s})}}export class SlideMasters{list;make;constructor(t,e){return this.list=t,this.make=e,o(this,"SlideMasters",{index:s=>this.list[s]})}*[Symbol.iterator](){yield*this.list}get length(){return this.list.length}index(t){return this.list.indexOf(t)}add(t,e){const s=this.make(t);return e?.(s),s}}export class GeneratedSlide{own;def;layout;constructor(t,e,s){this.def=t,this.layout=e,this.own=e._def.shapes.filter(n=>n.kind==="placeholder").map(n=>({name:n.name,kind:"placeholder",...n.placeholder?{placeholder:{...n.placeholder}}:{},text:E()}));const r=n=>{const h=e._def.shapes.find(l=>l.kind==="placeholder"&&l.placeholder?.idx===n.placeholder?.idx);return h?h.frame??(h.placeholder?A(e.slide_master._def,h.placeholder.type)?.frame:void 0):void 0};return this._shapes=new ShapeCollection(this.own,s.base,s.components,r,()=>[...e.slide_master._def.shapes,...e._def.shapes]),this._placeholders=new Placeholders(this.own,r),o(this,"Slide")}_shapes;_placeholders;get shapes(){return this._shapes}get placeholders(){return this._placeholders}get slide_id(){return this.def.id}get slide_layout(){return this.layout}get has_notes_slide(){return this.def.notes!==void 0}get notes_slide(){const t=this.def;return o({notes_text_frame:o({get text(){return t.notes??""},set text(e){t.notes=e}},"TextFrame")},"NotesSlide")}get transition(){return this.def.transition}set transition(t){t===void 0?delete this.def.transition:this.def.transition=t}get animations(){return new Animations(this.def.animations??=[])}_done(){const t={},e=[];for(const s of this.own)s.kind==="placeholder"&&s.placeholder?(s.text?.paragraphs.some(r=>r.runs.length>0)&&(t[s.placeholder.idx]=s.text.paragraphs),s.frame&&e.push({...s,text:E()})):e.push(s);return{...this.def,shapes:e,text:t}}}export class Animations{list;constructor(t){return this.list=t,o(this,"Animations")}add(t,e,s={}){this.list.push({shape:typeof t=="string"?t:t.name,effect:e,...s})}get length(){return this.list.length}}class st{gen;constructor(t){return this.gen=t,o(this,"slides")}add_slide(t,e){return this.gen._add(t,e)}}export class Generator{list=[];prs;ctx;constructor(t,e){return this.prs=t,this.ctx=e,o(this,"Generator")}data(t){return this.ctx.data(t)}get slides(){return new st(this)}_add(t,e){const s=typeof t=="string"?this.prs._layout(t):t;if(!s)throw new Error(`add_slide(): the presentation has no layout ${typeof t=="string"?t:t.name}.`);if(!/^[A-Za-z0-9_-]+$/u.test(e))throw new Error(`add_slide(): ${e} is not an id of letters, digits, _ and -.`);if(this.list.some(n=>n.slide_id===e))throw new Error(`add_slide(): two slides are ${e}.`);const r=new GeneratedSlide({id:e,layout:s.name,shapes:[],text:{}},s,this.prs._ctx);return this.list.push(r),r}_made(){return this.list.map(t=>t._done())}}const rt=()=>JSON.parse(JSON.stringify(U));export class Presentation{masters=[];layouts=[];def;_ctx;constructor(t,e){return this.def={slide_width:t[0],slide_height:t[1],masters:[],components:{},generators:{}},this._ctx={base:e,components:()=>this.def.components},o(this,"Presentation")}get _def(){return this.def}get slide_width(){return d(this.def.slide_width)}set slide_width(t){this.def.slide_width=t}get slide_height(){return d(this.def.slide_height)}set slide_height(t){this.def.slide_height=t}get slide_masters(){return new SlideMasters(this.masters,t=>{if(this.masters.some(r=>r.name===t))throw new Error(`Two masters are "${t}".`);const e={name:t,background:"lt1",text_styles:rt(),shapes:[],layouts:[]};this.def.masters.push(e);const s=new SlideMaster(e,this._ctx,this.layouts);return this.masters.push(s),s})}get slide_master(){const t=this.masters[0];if(!t)throw new Error("The presentation has no master yet: prs.slide_masters.add(name) makes one.");return t}get slide_layouts(){const t=this.masters[0];return t?t.slide_layouts:new SlideLayouts([])}get slides(){return m("A deck's slides are slides.yaml's, in order, each on a layout, and their words the script's; slides made from data are a generator's (prs.generators.add)")}save(){return m("A deck is not saved by its code: allyhub render writes its PDF, pictures and PPTX")}get theme(){return this.def.theme??={},this.def.theme}set theme(t){this.def.theme=t}get components(){return o({add:(t,e)=>{if(Object.hasOwn(this.def.components,t))throw new Error(`Two components are "${t}".`);if(typeof e.layers!="function")throw new Error(`Component ${t} draws with its layers function.`);this.def.components[t]={name:t,props:e.props??{},layers:e.layers}}},"components")}get generators(){return o({add:(t,e)=>{if(Object.hasOwn(this.def.generators,t))throw new Error(`Two generators are "${t}".`);this.def.generators[t]={name:t,make:s=>{const r=new Generator(this,s);return e(r),r._made()}}}},"generators")}_layout(t){return this.layouts.find(e=>e.name===t)}}export const DECK_BRAND="__allyhubDeck";export function isDeck(i){return typeof i=="object"&&i!==null&&DECK_BRAND in i}export const presentationFor=i=>(t,e)=>{const[s,r]=typeof t=="function"?[{},t]:[t,e];if(typeof r!="function")throw new Error("An item's slides.ts exports one deck: export default presentation({ size }, (prs) => { … masters, layouts, components … }); its slides are slides.yaml.");if(typeof s.size=="string"&&!Object.hasOwn(k,s.size))throw new Error(`presentation(): size ${s.size} is not one of ${Object.keys(k).join(", ")}, or { width, height } in EMU.`);return{[DECK_BRAND]:!0,kind:"slides",options:s,build:r,written:{file:i}}};export function evaluateDeck(i){const t=i.options.size??"16:9",e=typeof t=="string"?k[t]:[t.width,t.height],s=i.written.file.split("/").slice(0,-1).join("/"),r=new Presentation(e,s);return i.options.theme&&(r.theme=JSON.parse(JSON.stringify(i.options.theme))),i.build(r),r._def}
@@ -1,2 +1,2 @@
1
1
  /*! AllyHub. Copyright (c) 2026 AllyHub, Inc. All rights reserved. Use is subject to LICENSE.md. */
2
- import{Animations as l,Background as d,Cell as p,ColorFormat as h,Column as m,FillFormat as y,Font as c,FreeformBuilder as u,GeneratedSlide as _,Generator as f,GroupShape as g,Hyperlink as b,LineFormat as w,ListLevel as S,ShadowFormat as L,Paragraph as O,Placeholders as P,Presentation as A,Row as E,Run as C,Shape as x,ShapeCollection as T,SlideLayout as R,SlideLayouts as k,SlideMaster as M,SlideMasters as F,Table as v,TextFrame as I,TextStyles as H}from"./api.js";import{CategoryChartData as B,Chart as D,XyChartData as G,XySeriesData as N,ChartAxis as j,ChartLegend as X,ChartPlot as W,ChartSeries as z,DataLabels as U}from"./chart-api.js";import{MSO_ANCHOR as Y,MSO_ARROWHEAD as Z,MSO_AUTO_SIZE as K,MSO_CONNECTOR as q,MSO_FILL as J,MSO_LINE as Q,MSO_SHAPE as V,MSO_SHAPE_TYPE as $,MSO_THEME_COLOR as ee,PP_ALIGN as te,PP_PLACEHOLDER as ae,THEME_FONT as oe,XL_CHART_TYPE as se,XL_LABEL_POSITION as re,XL_LEGEND_POSITION as ie}from"./enums.js";import{publicNames as s}from"./strict.js";const a={Presentation:{theme:"The theme's colours (dk1…folHlink) and fonts (major, minor), over the project's look.",components:"components.add(name, { props, layers }): a shape drawn by code, by the layer contract.",generators:"generators.add(name, (g) => { g.data(path); g.slides.add_slide(layout, id) … }): slides made from data, placed in slides.yaml as one block."},SlideMasters:{add:"add(name): a master, with Office's text styles and no placeholders yet."},_Cell:{borders:"Its edges: { left, right, top, bottom }, each { color, width } (a:lnL…)."},LineFormat:{begin_arrow:"What the end of the line where it starts has (MSO_ARROWHEAD): PowerPoint's Begin Arrow type (a:headEnd).",end_arrow:"What the end of the line where it ends has (MSO_ARROWHEAD): PowerPoint's End Arrow type (a:tailEnd)."},FillFormat:{transparency:"How much of the fill shows through, a share: PowerPoint's Transparency (a:alpha).",gradient_stops:"Its stops, [{ at, color, transparency }], `at` and `transparency` shares; python-pptx's stops can only be read and changed in place."},ShadowFormat:{blur_radius:"How far the shadow blurs, a Length (a:outerShdw blurRad).",distance:"How far it falls from the shape, a Length (dist).",angle:"The way it falls, degrees clockwise from the right (dir).",transparency:"How much shows through it, a share (a:alpha).",color:"Its colour, a ColorFormat."},FreeformBuilder:{add_curve_segment:"add_curve_segment(x1, y1, x2, y2, x, y): a cubic Bézier segment by its two control points (a:cubicBezTo)."},Font:{strike:"A line through it (@strike).",baseline:"Raised or lowered, a share of its size: superscript 0.3, subscript -0.25 (@baseline).",highlight:"The colour behind it, #RRGGBB as RGBColor gives one (a:highlight).",spacing:"Space added between letters, a Length, negative to tighten (PowerPoint's Character Spacing, a:rPr spc)."},SlideMaster:{text_styles:"Its text styles (p:txStyles): title_style, body_style, other_style, nine ListLevels each, Office's to start with."},SlideLayouts:{add:"add(name): a layout on this master."},SlideLayout:{display_master_shapes:"Whether its master's shapes are drawn on its slides, true unless set: PowerPoint's Hide Background Graphics (@showMasterSp)."},placeholders:{add:"add(PP_PLACEHOLDER.X, left?, top?, width?, height?, { name }): a placeholder on a master or a layout; a layout's without a frame takes its master's of its base type."},SlideShapes:{add_component:"add_component(name, left, top, width, height, props): a component of the presentation in a frame.",get:"get(name): a shape by its name."},TextFrame:{list_style:"Its list style (a:lstStyle): nine ListLevels, level 0 first, what its paragraphs take where they set nothing."},ListLevel:{"*":"A level of a list style: alignment, line_spacing, space_before, space_after, font, bullet (a character, or null for none), bullet_font, numbered (a:buAutoNum: arabicPeriod, alphaLcPeriod…), margin_left, indent."},text_styles:{"*":"title_style, body_style, other_style: a master's text styles, nine ListLevels each."},Animations:{"*":"A generated slide's Animation Pane: add(shape, effect, { start, direction, duration, delay, paragraph, path }), in order."},Slide:{animations:"Its Animation Pane, which python-pptx has no API for.",transition:"How it comes on from the slide before: { type, direction, duration }, which python-pptx has no API for."},Generator:{"*":"What a generator's function is given: data(path), and slides.add_slide(layout, id)."}},ne={Presentation:{slides:"A deck's slides are slides.yaml's, their words the script's; slides from data are a generator's.",save:"A deck is not saved by its code: allyhub render writes its files."}},le={Presentation:A.prototype,SlideMasters:F.prototype,SlideMaster:M.prototype,SlideLayouts:k.prototype,SlideLayout:R.prototype,Slide:_.prototype,placeholders:P.prototype,SlideShapes:T.prototype,Shape:x.prototype,TextFrame:I.prototype,_Paragraph:O.prototype,_Run:C.prototype,_Hyperlink:b.prototype,Font:c.prototype,ColorFormat:h.prototype,FillFormat:y.prototype,LineFormat:w.prototype,ShadowFormat:L.prototype,FreeformBuilder:u.prototype,GroupShape:g.prototype,Table:v.prototype,CategoryChartData:B.prototype,XyChartData:G.prototype,XySeriesData:N.prototype,Chart:D.prototype,Plot:W.prototype,Series:z.prototype,DataLabels:U.prototype,Legend:X.prototype,Axis:j.prototype,_Cell:p.prototype,_Column:m.prototype,_Row:E.prototype,_Background:d.prototype},de={Animations:l.prototype,ListLevel:S.prototype,text_styles:H.prototype,Generator:f.prototype},pe=()=>{const e={};for(const[t,r]of Object.entries(le)){const i=a[t]??{},n=ne[t]??{};e[t]=s(r).filter(o=>!Object.hasOwn(i,o)&&!Object.hasOwn(n,o))}return e};export const CAPABILITIES={reference:{library:"python-pptx",version:"1.0.2",docs:"https://python-pptx.readthedocs.io/"},holds:pe(),enums:Object.fromEntries(Object.entries({MSO_THEME_COLOR:ee,PP_ALIGN:te,MSO_ANCHOR:Y,MSO_AUTO_SIZE:K,PP_PLACEHOLDER:ae,MSO_SHAPE:V,MSO_CONNECTOR:q,MSO_SHAPE_TYPE:$,MSO_FILL:J,MSO_LINE:Q,XL_CHART_TYPE:se,XL_LABEL_POSITION:re,XL_LEGEND_POSITION:ie,MSO_ARROWHEAD:Z,THEME_FONT:oe}).map(([e,t])=>[e,Object.keys(t)])),units:["Emu","Inches","Pt","Cm","Mm","Centipoints","RGBColor"],differs:["The entry is export default presentation({ size, theme }, (prs) => { … }), not Presentation(path): a deck is made by its code, never opened from a template. Its masters and layouts are made with the additions below; its slides are slides.yaml's.","A name python-pptx has that is not held throws where it is used, naming what the class holds; python-pptx's x[i] is held where it indexes (slide_masters[0], slide_layouts[0], placeholders[idx], shapes[0]), and len(x) is x.length.","Lengths are numbers of EMU, made by python-pptx's functions (Inches(1), Pt(12)): no .inches or .pt on them; divide by 914400 or 12700.",`An enumeration's members are PresentationML's values (MSO_THEME_COLOR.ACCENT_1 is "accent1", PP_ALIGN.CENTER "ctr"), not integers; TEXT_1 and BACKGROUND_1 are dk1 and lt1, a master's standard colour map. MSO_SHAPE_TYPE.COMPONENT is a component's.`,`A colour's rgb is "#RRGGBB": RGBColor(r, g, b) and RGBColor.from_string("RRGGBB") make one.`,"line_spacing is a number of lines, or a Length of Pt(1) and over for a fixed height (python-pptx tells them apart by type).","add_picture() takes both width and height: a picture's own size is not read while a deck's code runs.","add_movie(movie_file, left, top, width, height, { poster_frame_time }) takes a video file, its poster a moment of it in seconds, not poster_frame_image.","A shape's name is its kind and a number (textbox-1, shape-2), and a placeholder's its type's (title, body, subtitle): slides.yaml and the script name shapes by name.","fit_text() sets the frame to shrink its text when it is drawn (MSO_AUTO_SIZE.TEXT_TO_FIT_SHAPE) from max_size: it reads no font file.","Font.underline is a single underline or none.","A chart holds column, bar, line, area, pie, doughnut and XY scatter types; it has no 3D, no bubble, no radar and no second axis. slides.yaml's chart can read its numbers from a project file: data, categories and series name it and its columns.","A table has no style, where python-pptx's starts with Medium Style 2: its look is its cells' (fill, borders, text), and first_row and the like say what its rows are and paint nothing. add_table returns its shape, whose .table is the table.","A group is its shapes: they are listed with the shapes the group is among, drawn as they are, and a group holds no group; its box is theirs, so left and top move them and width and height only read.","A presentation is 16:9 (12192000 × 6858000) and its theme Office 2013–2022's over the project's look; python-pptx's template is 4:3 with Office 2007's.","prs.slide_layouts and prs.slide_master are the first master's, as python-pptx's; a generator's add_slide also takes a layout of any master by name."],adds:{...a,...Object.fromEntries(Object.entries(de).map(([e,t])=>[e,{...a[e]??{},names:s(t).join(", ")}]))}};
2
+ import{Animations as l,Background as d,Cell as p,ColorFormat as h,Column as m,FillFormat as c,Font as y,FreeformBuilder as u,GeneratedSlide as _,Generator as f,GroupShape as g,Hyperlink as b,LineFormat as w,ListLevel as S,ShadowFormat as L,Paragraph as O,Placeholders as A,Presentation as C,Row as P,Run as E,Shape as x,ShapeCollection as T,SlideLayout as R,SlideLayouts as k,SlideMaster as M,SlideMasters as v,Table as F,TextFrame as I,TextStyles as G}from"./api.js";import{CategoryChartData as B,Chart as H,XyChartData as D,XySeriesData as N,ChartAxis as j,ChartFormat as X,ChartLegend as W,MajorGridlines as z,TickLabels as U,ChartPlot as Y,ChartSeries as Z,DataLabels as K}from"./chart-api.js";import{MSO_ANCHOR as V,MSO_ARROWHEAD as q,MSO_AUTO_SIZE as J,MSO_CONNECTOR as Q,MSO_FILL as $,MSO_LINE as ee,MSO_SHAPE as te,MSO_SHAPE_TYPE as ae,MSO_THEME_COLOR as oe,PP_ALIGN as se,PP_PLACEHOLDER as re,THEME_FONT as ne,XL_CHART_TYPE as ie,XL_LABEL_POSITION as le,XL_LEGEND_POSITION as de}from"./enums.js";import{publicNames as s}from"./strict.js";const a={Presentation:{theme:"The theme's colours (dk1…folHlink) and fonts (major, minor), over the project's look.",components:"components.add(name, { props, layers }): a shape drawn by code, by the layer contract.",generators:"generators.add(name, (g) => { g.data(path); g.slides.add_slide(layout, id) … }): slides made from data, placed in slides.yaml as one block."},SlideMasters:{add:"add(name): a master, with Office's text styles and no placeholders yet."},_Cell:{borders:"Its edges: { left, right, top, bottom }, each { color, width } (a:lnL…)."},LineFormat:{begin_arrow:"What the end of the line where it starts has (MSO_ARROWHEAD): PowerPoint's Begin Arrow type (a:headEnd).",end_arrow:"What the end of the line where it ends has (MSO_ARROWHEAD): PowerPoint's End Arrow type (a:tailEnd)."},FillFormat:{transparency:"How much of the fill shows through, a share: PowerPoint's Transparency (a:alpha).",gradient_stops:"Its stops, [{ at, color, transparency }], `at` and `transparency` shares; python-pptx's stops can only be read and changed in place."},ShadowFormat:{blur_radius:"How far the shadow blurs, a Length (a:outerShdw blurRad).",distance:"How far it falls from the shape, a Length (dist).",angle:"The way it falls, degrees clockwise from the right (dir).",transparency:"How much shows through it, a share (a:alpha).",color:"Its colour, a ColorFormat."},FreeformBuilder:{add_curve_segment:"add_curve_segment(x1, y1, x2, y2, x, y): a cubic Bézier segment by its two control points (a:cubicBezTo)."},Font:{strike:"A line through it (@strike).",baseline:"Raised or lowered, a share of its size: superscript 0.3, subscript -0.25 (@baseline).",highlight:"The colour behind it, #RRGGBB as RGBColor gives one (a:highlight).",spacing:"Space added between letters, a Length, negative to tighten (PowerPoint's Character Spacing, a:rPr spc)."},SlideMaster:{text_styles:"Its text styles (p:txStyles): title_style, body_style, other_style, nine ListLevels each, Office's to start with."},SlideLayouts:{add:"add(name): a layout on this master."},SlideLayout:{display_master_shapes:"Whether its master's shapes are drawn on its slides, true unless set: PowerPoint's Hide Background Graphics (@showMasterSp)."},placeholders:{add:"add(PP_PLACEHOLDER.X, left?, top?, width?, height?, { name }): a placeholder on a master or a layout; a layout's without a frame takes its master's of its base type."},SlideShapes:{add_component:"add_component(name, left, top, width, height, props): a component of the presentation in a frame.",get:"get(name): a shape by its name."},TextFrame:{list_style:"Its list style (a:lstStyle): nine ListLevels, level 0 first, what its paragraphs take where they set nothing."},ListLevel:{"*":"A level of a list style: alignment, line_spacing, space_before, space_after, font, bullet (a character, or null for none), bullet_font, numbered (a:buAutoNum: arabicPeriod, alphaLcPeriod…), margin_left, indent."},text_styles:{"*":"title_style, body_style, other_style: a master's text styles, nine ListLevels each."},Animations:{"*":"A generated slide's Animation Pane: add(shape, effect, { start, direction, duration, delay, paragraph, path }), in order."},Slide:{animations:"Its Animation Pane, which python-pptx has no API for.",transition:"How it comes on from the slide before: { type, direction, duration }, which python-pptx has no API for."},Generator:{"*":"What a generator's function is given: data(path), and slides.add_slide(layout, id)."}},pe={Presentation:{slides:"A deck's slides are slides.yaml's, their words the script's; slides from data are a generator's.",save:"A deck is not saved by its code: allyhub render writes its files."}},he={Presentation:C.prototype,SlideMasters:v.prototype,SlideMaster:M.prototype,SlideLayouts:k.prototype,SlideLayout:R.prototype,Slide:_.prototype,placeholders:A.prototype,SlideShapes:T.prototype,Shape:x.prototype,TextFrame:I.prototype,_Paragraph:O.prototype,_Run:E.prototype,_Hyperlink:b.prototype,Font:y.prototype,ColorFormat:h.prototype,FillFormat:c.prototype,LineFormat:w.prototype,ShadowFormat:L.prototype,FreeformBuilder:u.prototype,GroupShape:g.prototype,Table:F.prototype,CategoryChartData:B.prototype,XyChartData:D.prototype,XySeriesData:N.prototype,Chart:H.prototype,Plot:Y.prototype,Series:Z.prototype,DataLabels:K.prototype,Legend:W.prototype,Axis:j.prototype,TickLabels:U.prototype,MajorGridlines:z.prototype,ChartFormat:X.prototype,_Cell:p.prototype,_Column:m.prototype,_Row:P.prototype,_Background:d.prototype},me={Animations:l.prototype,ListLevel:S.prototype,text_styles:G.prototype,Generator:f.prototype},ce=()=>{const e={};for(const[t,r]of Object.entries(he)){const n=a[t]??{},i=pe[t]??{};e[t]=s(r).filter(o=>!Object.hasOwn(n,o)&&!Object.hasOwn(i,o))}return e};export const CAPABILITIES={reference:{library:"python-pptx",version:"1.0.2",docs:"https://python-pptx.readthedocs.io/"},holds:ce(),enums:Object.fromEntries(Object.entries({MSO_THEME_COLOR:oe,PP_ALIGN:se,MSO_ANCHOR:V,MSO_AUTO_SIZE:J,PP_PLACEHOLDER:re,MSO_SHAPE:te,MSO_CONNECTOR:Q,MSO_SHAPE_TYPE:ae,MSO_FILL:$,MSO_LINE:ee,XL_CHART_TYPE:ie,XL_LABEL_POSITION:le,XL_LEGEND_POSITION:de,MSO_ARROWHEAD:q,THEME_FONT:ne}).map(([e,t])=>[e,Object.keys(t)])),units:["Emu","Inches","Pt","Cm","Mm","Centipoints","RGBColor"],differs:["The entry is export default presentation({ size, theme }, (prs) => { … }), not Presentation(path): a deck is made by its code, never opened from a template. Its masters and layouts are made with the additions below; its slides are slides.yaml's.","A name python-pptx has that is not held throws where it is used, naming what the class holds; python-pptx's x[i] is held where it indexes (slide_masters[0], slide_layouts[0], placeholders[idx], shapes[0]), and len(x) is x.length.","A Length (what Inches(1) and Pt(12) give, and what a length reads, shape.width) is a Number of EMU with python-pptx's emu, inches, cm, mm, pt, centipoints and twips. Arithmetic on Lengths gives a plain number, as python's int does; two Lengths of one value are ===, and one is compared with a plain number by its .emu.",`An enumeration's members are PresentationML's values (MSO_THEME_COLOR.ACCENT_1 is "accent1", PP_ALIGN.CENTER "ctr"), not integers; TEXT_1 and BACKGROUND_1 are dk1 and lt1, a master's standard colour map. MSO_SHAPE_TYPE.COMPONENT is a component's.`,`A colour's rgb is "#RRGGBB": RGBColor(r, g, b), new RGBColor(r, g, b) and RGBColor.from_string("RRGGBB") make one.`,"A colour's brightness is a theme colour's: python-pptx also gives an RGB colour one, which is refused here (set rgb to the colour it makes).","line_spacing is a number of lines, or a Length of Pt(1) and over for a fixed height (python-pptx tells them apart by type).","add_picture() takes both width and height: a picture's own size is not read while a deck's code runs.","add_connector() takes MSO_CONNECTOR's STRAIGHT, ELBOW and CURVE, and also a connector's preset by name where python-pptx has none (straightConnector1, bentConnector2 to 5, curvedConnector2 to 5); a connector's adjustments (an elbow's middle) are its shape.adjustments.","add_movie(movie_file, left, top, width, height, { poster_frame_time }) takes a video file, its poster a moment of it in seconds, not poster_frame_image.","A shape's name is its kind and a number (textbox-1, shape-2), and a placeholder's its type's (title, body, subtitle): slides.yaml and the script name shapes by name.","fit_text() sets the frame to shrink its text when it is drawn (MSO_AUTO_SIZE.TEXT_TO_FIT_SHAPE) from max_size: it reads no font file.","Font.underline is a single underline or none.","A chart holds column, bar, line, area, pie, doughnut and XY scatter types; it has no 3D, no bubble, no radar and no second axis. slides.yaml's chart can read its numbers from a project file: data, categories and series name it and its columns.","A table has no style, where python-pptx's starts with Medium Style 2: its look is its cells' (fill, borders, text), and first_row and the like say what its rows are and paint nothing. add_table returns its shape, whose .table is the table.","A group is its shapes: they are listed with the shapes the group is among, drawn as they are, and a group holds no group; its box is theirs, so left and top move them and width and height only read.","A presentation is 16:9 (12192000 × 6858000) and its theme Office 2013–2022's over the project's look; python-pptx's template is 4:3 with Office 2007's.","prs.slide_layouts and prs.slide_master are the first master's, as python-pptx's; a generator's add_slide also takes a layout of any master by name."],adds:{...a,...Object.fromEntries(Object.entries(me).map(([e,t])=>[e,{...a[e]??{},names:s(t).join(", ")}]))}};
@@ -2,7 +2,7 @@ import type { ChartLegendPosition, ChartType } from "@allyhub-next/formats";
2
2
  import { ColorFormat, FillFormat } from "./api.js";
3
3
  import type { ChartAxisDef, ChartDef, ChartLabelPosition, ChartLabelsDef, ChartSeriesDef } from "@allyhub-next/chart";
4
4
  import type { Color } from "./model.js";
5
- import { type Length } from "./units.js";
5
+ import { type Length, type LengthValue } from "./units.js";
6
6
  /** The numbers a chart shows (python-pptx's `CategoryChartData`). */
7
7
  export declare class CategoryChartData {
8
8
  number_format: string;
@@ -52,7 +52,7 @@ export declare class ChartFont {
52
52
  size?: number;
53
53
  color?: Color;
54
54
  }) => void);
55
- get size(): Length | undefined;
55
+ get size(): LengthValue | undefined;
56
56
  set size(v: Length | undefined);
57
57
  get color(): ColorFormat;
58
58
  }
@@ -125,6 +125,28 @@ export declare class ChartLegend {
125
125
  constructor(def: ChartDef);
126
126
  get position(): ChartLegendPosition;
127
127
  set position(v: ChartLegendPosition);
128
+ /** Whether the plot is made smaller for it (true, as python-pptx's default), or it is drawn over the plot. */
129
+ get include_in_layout(): boolean;
130
+ set include_in_layout(v: boolean);
131
+ }
132
+ /** An axis's tick labels (python-pptx's `TickLabels`): their number format. */
133
+ export declare class TickLabels {
134
+ private readonly def;
135
+ constructor(def: ChartAxisDef);
136
+ get number_format(): string;
137
+ set number_format(v: string);
138
+ }
139
+ /** A chart's gridlines (python-pptx's `MajorGridlines`): their line. */
140
+ export declare class MajorGridlines {
141
+ private readonly line;
142
+ constructor(line: ChartLine);
143
+ get format(): ChartFormat;
144
+ }
145
+ /** What a chart's part is drawn with (python-pptx's `ChartFormat`): its line. */
146
+ export declare class ChartFormat {
147
+ private readonly held;
148
+ constructor(line: ChartLine);
149
+ get line(): ChartLine;
128
150
  }
129
151
  /** A chart's axis (python-pptx's `ValueAxis`, `CategoryAxis`). */
130
152
  export declare class ChartAxis {
@@ -143,19 +165,11 @@ export declare class ChartAxis {
143
165
  get reverse_order(): boolean;
144
166
  set reverse_order(v: boolean);
145
167
  /** Its tick labels' format (`tick_labels.number_format`). */
146
- get tick_labels(): {
147
- number_format: string;
148
- };
168
+ get tick_labels(): TickLabels;
149
169
  /** Its gridlines' colour (`major_gridlines.format.line.color`). */
150
- get major_gridlines(): {
151
- format: {
152
- line: ChartLine;
153
- };
154
- };
170
+ get major_gridlines(): MajorGridlines;
155
171
  /** Its line's colour (`format.line.color`). */
156
- get format(): {
157
- line: ChartLine;
158
- };
172
+ get format(): ChartFormat;
159
173
  }
160
174
  /** A chart (python-pptx's `Chart`), in its shape's `.chart`. */
161
175
  export declare class Chart {
@@ -1,2 +1,2 @@
1
1
  /*! AllyHub. Copyright (c) 2026 AllyHub, Inc. All rights reserved. Use is subject to LICENSE.md. */
2
- import{ColorFormat as o,FillFormat as h}from"./api.js";import{accentOf as f,isRound as l}from"@allyhub-next/chart";import{strict as r}from"./strict.js";import{Pt as n}from"./units.js";export class CategoryChartData{number_format;names=[];list=[];constructor(e={}){return this.number_format=e.number_format??"General",r(this,"CategoryChartData")}get categories(){return this.names}set categories(e){this.names=e.map(String)}add_category(e){this.names.push(String(e))}add_series(e,t=[],i){this.list.push({name:e,values:t.map(a=>a??null),...i===void 0?{}:{number_format:i}})}_series(){return this.list.map(e=>({...e,values:[...e.values],number_format:e.number_format??this.number_format}))}}export class XySeriesData{points=[];name;constructor(e){return this.name=e,r(this,"XySeriesData")}add_data_point(e,t){this.points.push({x:e,y:t})}}export class XyChartData{number_format;list=[];constructor(e={}){return this.number_format=e.number_format??"General",r(this,"XyChartData")}add_series(e){const t=new XySeriesData(e);return this.list.push(t),t}get categories(){return[]}_series(){return this.list.map(e=>({name:e.name,values:e.points.map(t=>t.y),x:e.points.map(t=>t.x),number_format:this.number_format}))}}const u=s=>s===void 0?void 0:s/n(1);export class ChartFont{read;write;constructor(e,t){return this.read=e,this.write=t,r(this,"ChartFont")}get size(){const e=this.read().size;return e===void 0?void 0:n(e)}set size(e){const t=this.read(),i=u(e);this.write({...t.color===void 0?{}:{color:t.color},...i===void 0?{}:{size:i}})}get color(){return new o(()=>this.read().color,e=>{const{size:t}=this.read();this.write({...t===void 0?{}:{size:t},...e===void 0?{}:{color:e}})})}}export class ChartLine{read;write;constructor(e,t){return this.read=e,this.write=t,r(this,"ChartLine")}get color(){return new o(this.read,this.write)}}export class ChartSeries{def;at;constructor(e,t){return this.def=e,this.at=t,r(this,"ChartSeries")}get name(){return this.def.name}get values(){return this.def.values}get marker(){const e=this.def;return{get size(){return e.marker_size},set size(t){t===void 0?delete e.marker_size:e.marker_size=t}}}get smooth(){return this.def.smooth===!0}set smooth(e){this.def.smooth=e}get format(){const e=this.def;return{line:{get width(){return e.line_width===void 0?void 0:n(e.line_width)},set width(t){t===void 0?delete e.line_width:e.line_width=t/n(1)}},fill:new h(()=>this.def.color??f(this.at),t=>{t!==null&&(this.def.color=t)})}}}export class DataLabels{def;constructor(e){return this.def=e,r(this,"DataLabels")}get show_value(){return this.def.show_value??!1}set show_value(e){this.def.show_value=e}get show_percentage(){return this.def.show_percentage??!1}set show_percentage(e){this.def.show_percentage=e}get show_category_name(){return this.def.show_category_name??!1}set show_category_name(e){this.def.show_category_name=e}get show_series_name(){return this.def.show_series_name??!1}set show_series_name(e){this.def.show_series_name=e}get number_format(){return this.def.number_format??"General"}set number_format(e){this.def.number_format=e}get position(){return this.def.position}set position(e){e===void 0?delete this.def.position:this.def.position=e}get font(){return new ChartFont(()=>({...this.def.size===void 0?{}:{size:this.def.size},...this.def.color===void 0?{}:{color:this.def.color}}),e=>{delete this.def.size,delete this.def.color,Object.assign(this.def,e)})}}export class ChartPlot{def;constructor(e){return this.def=e,r(this,"ChartPlot")}get categories(){return this.def.categories}get series(){return this.def.series.map((e,t)=>new ChartSeries(e,t))}get has_data_labels(){return this.def.labels!==void 0}set has_data_labels(e){e?this.def.labels??={show_value:!0}:delete this.def.labels}get data_labels(){return this.def.labels??={show_value:!0},new DataLabels(this.def.labels)}get gap_width(){return this.def.gap_width??150}set gap_width(e){this.def.gap_width=e}get overlap(){return this.def.overlap??0}set overlap(e){this.def.overlap=e}get vary_by_categories(){return this.def.vary_by_categories??l(this.def.type)}set vary_by_categories(e){this.def.vary_by_categories=e}}export class ChartLegend{def;constructor(e){return this.def=e,r(this,"ChartLegend")}get position(){return this.def.legend??"right"}set position(e){this.def.legend=e}}export class ChartAxis{def;constructor(e){return this.def=e,r(this,"ChartAxis")}get minimum_scale(){return this.def.minimum_scale}set minimum_scale(e){e===void 0?delete this.def.minimum_scale:this.def.minimum_scale=e}get maximum_scale(){return this.def.maximum_scale}set maximum_scale(e){e===void 0?delete this.def.maximum_scale:this.def.maximum_scale=e}get major_unit(){return this.def.major_unit}set major_unit(e){e===void 0?delete this.def.major_unit:this.def.major_unit=e}get has_major_gridlines(){return this.def.has_major_gridlines??!0}set has_major_gridlines(e){this.def.has_major_gridlines=e}get visible(){return this.def.visible??!0}set visible(e){this.def.visible=e}get reverse_order(){return this.def.reverse_order??!1}set reverse_order(e){this.def.reverse_order=e}get tick_labels(){const e=this.def;return{get number_format(){return e.number_format??"General"},set number_format(t){e.number_format=t}}}get major_gridlines(){return{format:{line:new ChartLine(()=>this.def.gridline_color,e=>{e===void 0?delete this.def.gridline_color:this.def.gridline_color=e})}}}get format(){return{line:new ChartLine(()=>this.def.line_color,e=>{e===void 0?delete this.def.line_color:this.def.line_color=e})}}}export class Chart{def;constructor(e){return this.def=e,r(this,"Chart")}get chart_type(){return this.def.type}get has_legend(){return this.def.legend!==void 0}set has_legend(e){e?this.def.legend??="right":delete this.def.legend}get legend(){return new ChartLegend(this.def)}get has_title(){return this.def.title!==void 0}set has_title(e){e?this.def.title??="":delete this.def.title}get chart_title(){const e=this.def;return{font:{get size(){return e.title_size===void 0?void 0:n(e.title_size)},set size(t){t===void 0?delete e.title_size:e.title_size=t/n(1)}},text_frame:{get text(){return e.title??""},set text(t){e.title=t}}}}get font(){return new ChartFont(()=>({...this.def.font_size===void 0?{}:{size:this.def.font_size},...this.def.font_color===void 0?{}:{color:this.def.font_color}}),e=>{delete this.def.font_size,delete this.def.font_color,e.size!==void 0&&(this.def.font_size=e.size),e.color!==void 0&&(this.def.font_color=e.color)})}get plots(){return[new ChartPlot(this.def)]}get series(){return this.def.series.map((e,t)=>new ChartSeries(e,t))}get value_axis(){return this.def.value_axis??={},new ChartAxis(this.def.value_axis)}get category_axis(){return this.def.category_axis??={},new ChartAxis(this.def.category_axis)}replace_data(e){const t=this.def.series;this.def.categories=[...e.categories],this.def.series=e._series().map((i,a)=>{const d=t[a]?.color;return d===void 0?i:{...i,color:d}})}}
2
+ import{ColorFormat as h,FillFormat as l}from"./api.js";import{accentOf as f,isRound as u}from"@allyhub-next/chart";import{strict as s}from"./strict.js";import{Pt as n,length as d}from"./units.js";export class CategoryChartData{number_format;names=[];list=[];constructor(e={}){return this.number_format=e.number_format??"General",s(this,"CategoryChartData")}get categories(){return this.names}set categories(e){this.names=e.map(String)}add_category(e){this.names.push(String(e))}add_series(e,t=[],i){this.list.push({name:e,values:t.map(a=>a??null),...i===void 0?{}:{number_format:i}})}_series(){return this.list.map(e=>({...e,values:[...e.values],number_format:e.number_format??this.number_format}))}}export class XySeriesData{points=[];name;constructor(e){return this.name=e,s(this,"XySeriesData")}add_data_point(e,t){this.points.push({x:e,y:t})}}export class XyChartData{number_format;list=[];constructor(e={}){return this.number_format=e.number_format??"General",s(this,"XyChartData")}add_series(e){const t=new XySeriesData(e);return this.list.push(t),t}get categories(){return[]}_series(){return this.list.map(e=>({name:e.name,values:e.points.map(t=>t.y),x:e.points.map(t=>t.x),number_format:this.number_format}))}}const _=r=>r===void 0?void 0:r/n(1);export class ChartFont{read;write;constructor(e,t){return this.read=e,this.write=t,s(this,"ChartFont")}get size(){const e=this.read().size;return e===void 0?void 0:d(n(e))}set size(e){const t=this.read(),i=_(e);this.write({...t.color===void 0?{}:{color:t.color},...i===void 0?{}:{size:i}})}get color(){return new h(()=>this.read().color,e=>{const{size:t}=this.read();this.write({...t===void 0?{}:{size:t},...e===void 0?{}:{color:e}})})}}export class ChartLine{read;write;constructor(e,t){return this.read=e,this.write=t,s(this,"ChartLine")}get color(){return new h(this.read,this.write)}}export class ChartSeries{def;at;constructor(e,t){return this.def=e,this.at=t,s(this,"ChartSeries")}get name(){return this.def.name}get values(){return this.def.values}get marker(){const e=this.def;return s({get size(){return e.marker_size},set size(t){t===void 0?delete e.marker_size:e.marker_size=t}},"Marker")}get smooth(){return this.def.smooth===!0}set smooth(e){this.def.smooth=e}get format(){const e=this.def;return s({line:s({get width(){return e.line_width===void 0?void 0:d(n(e.line_width))},set width(t){t===void 0?delete e.line_width:e.line_width=t/n(1)}},"LineFormat"),fill:new l(()=>this.def.color??f(this.at),t=>{t!==null&&(this.def.color=t)})},"ChartFormat")}}export class DataLabels{def;constructor(e){return this.def=e,s(this,"DataLabels")}get show_value(){return this.def.show_value??!1}set show_value(e){this.def.show_value=e}get show_percentage(){return this.def.show_percentage??!1}set show_percentage(e){this.def.show_percentage=e}get show_category_name(){return this.def.show_category_name??!1}set show_category_name(e){this.def.show_category_name=e}get show_series_name(){return this.def.show_series_name??!1}set show_series_name(e){this.def.show_series_name=e}get number_format(){return this.def.number_format??"General"}set number_format(e){this.def.number_format=e}get position(){return this.def.position}set position(e){e===void 0?delete this.def.position:this.def.position=e}get font(){return new ChartFont(()=>({...this.def.size===void 0?{}:{size:this.def.size},...this.def.color===void 0?{}:{color:this.def.color}}),e=>{delete this.def.size,delete this.def.color,Object.assign(this.def,e)})}}export class ChartPlot{def;constructor(e){return this.def=e,s(this,"ChartPlot")}get categories(){return this.def.categories}get series(){return this.def.series.map((e,t)=>new ChartSeries(e,t))}get has_data_labels(){return this.def.labels!==void 0}set has_data_labels(e){e?this.def.labels??={show_value:!0}:delete this.def.labels}get data_labels(){return this.def.labels??={show_value:!0},new DataLabels(this.def.labels)}get gap_width(){return this.def.gap_width??150}set gap_width(e){this.def.gap_width=e}get overlap(){return this.def.overlap??0}set overlap(e){this.def.overlap=e}get vary_by_categories(){return this.def.vary_by_categories??u(this.def.type)}set vary_by_categories(e){this.def.vary_by_categories=e}}export class ChartLegend{def;constructor(e){return this.def=e,s(this,"ChartLegend")}get position(){return this.def.legend??"right"}set position(e){this.def.legend=e}get include_in_layout(){return this.def.legend_overlay!==!0}set include_in_layout(e){e?delete this.def.legend_overlay:this.def.legend_overlay=!0}}export class TickLabels{def;constructor(e){return this.def=e,s(this,"TickLabels")}get number_format(){return this.def.number_format??"General"}set number_format(e){this.def.number_format=e}}export class MajorGridlines{line;constructor(e){return this.line=e,s(this,"MajorGridlines")}get format(){return new ChartFormat(this.line)}}export class ChartFormat{held;constructor(e){return this.held=e,s(this,"ChartFormat")}get line(){return this.held}}export class ChartAxis{def;constructor(e){return this.def=e,s(this,"ChartAxis")}get minimum_scale(){return this.def.minimum_scale}set minimum_scale(e){e===void 0?delete this.def.minimum_scale:this.def.minimum_scale=e}get maximum_scale(){return this.def.maximum_scale}set maximum_scale(e){e===void 0?delete this.def.maximum_scale:this.def.maximum_scale=e}get major_unit(){return this.def.major_unit}set major_unit(e){e===void 0?delete this.def.major_unit:this.def.major_unit=e}get has_major_gridlines(){return this.def.has_major_gridlines??!0}set has_major_gridlines(e){this.def.has_major_gridlines=e}get visible(){return this.def.visible??!0}set visible(e){this.def.visible=e}get reverse_order(){return this.def.reverse_order??!1}set reverse_order(e){this.def.reverse_order=e}get tick_labels(){return new TickLabels(this.def)}get major_gridlines(){return new MajorGridlines(new ChartLine(()=>this.def.gridline_color,e=>{e===void 0?delete this.def.gridline_color:this.def.gridline_color=e}))}get format(){return new ChartFormat(new ChartLine(()=>this.def.line_color,e=>{e===void 0?delete this.def.line_color:this.def.line_color=e}))}}export class Chart{def;constructor(e){return this.def=e,s(this,"Chart")}get chart_type(){return this.def.type}get has_legend(){return this.def.legend!==void 0}set has_legend(e){e?this.def.legend??="right":delete this.def.legend}get legend(){return new ChartLegend(this.def)}get has_title(){return this.def.title!==void 0}set has_title(e){e?this.def.title??="":delete this.def.title}get chart_title(){const e=this.def;return s({font:s({get size(){return e.title_size===void 0?void 0:d(n(e.title_size))},set size(t){t===void 0?delete e.title_size:e.title_size=t/n(1)}},"Font"),text_frame:s({get text(){return e.title??""},set text(t){e.title=t}},"TextFrame")},"ChartTitle")}get font(){return new ChartFont(()=>({...this.def.font_size===void 0?{}:{size:this.def.font_size},...this.def.font_color===void 0?{}:{color:this.def.font_color}}),e=>{delete this.def.font_size,delete this.def.font_color,e.size!==void 0&&(this.def.font_size=e.size),e.color!==void 0&&(this.def.font_color=e.color)})}get plots(){return[new ChartPlot(this.def)]}get series(){return this.def.series.map((e,t)=>new ChartSeries(e,t))}get value_axis(){return this.def.value_axis??={},new ChartAxis(this.def.value_axis)}get category_axis(){return this.def.category_axis??={},new ChartAxis(this.def.category_axis)}replace_data(e){const t=this.def.series;this.def.categories=[...e.categories],this.def.series=e._series().map((i,a)=>{const o=t[a]?.color;return o===void 0?i:{...i,color:o}})}}
@@ -1,2 +1,2 @@
1
1
  /*! AllyHub. Copyright (c) 2026 AllyHub, Inc. All rights reserved. Use is subject to LICENSE.md. */
2
- export function checkDeck(m,h){const i=[];for(const s of m.slides){const d=new Set;for(const e of s.shapes){e.level==="slide"&&(d.has(e.name)&&i.push({slide:s.id,shape:e.name,message:`Slide ${s.id} has two shapes named ${e.name}.`}),d.add(e.name));const a=e.media;if(!a)continue;const o=e.kind==="movie"?"video":"image",n=h.mediaKind(a.path),t={slide:s.id,shape:e.name};n===void 0?i.push({...t,message:`${a.path} (shape ${e.name} of slide ${s.id}) is not in the project.`}):n!==o&&i.push({...t,message:`${a.path} (shape ${e.name} of slide ${s.id}) is ${n==="image"?"an image":`a ${n}`}, not ${o==="image"?"an image":"a video"}.`})}}return i}
2
+ export function checkDeck(h,c){const s=[];for(const a of h.slides){const d=new Set;for(const e of a.shapes){if(e.level==="slide"){if(d.has(e.name)){const m=e.sources.frame.path?.replace(/\.frame$/u,"");s.push({slide:a.id,shape:e.name,...m===void 0?{}:{path:m},message:`Slide ${a.id} has two shapes named ${e.name}${e.sources.frame.from==="code"?` (its generator ${a.file.generate??""} makes them)`:""}.`})}d.add(e.name)}const i=e.media;if(!i)continue;const o=e.kind==="movie"?"video":"image",n=c.mediaKind(i.path),t={slide:a.id,shape:e.name,...e.sources.media?.path===void 0?{}:{path:e.sources.media.path}};n===void 0?s.push({...t,message:`${i.path} (shape ${e.name} of slide ${a.id}) is not in the project.`}):n!==o&&s.push({...t,message:`${i.path} (shape ${e.name} of slide ${a.id}) is ${n==="image"?"an image":`a ${n}`}, not ${o==="image"?"an image":"a video"}.`})}}return s}
@@ -0,0 +1,33 @@
1
+ import type { DeckDef, GeneratedSlideDef, MasterDef, PropSpec } from "./model.js";
2
+ import type { ThemeInput } from "./theme.js";
3
+ import type { Length } from "./units.js";
4
+ /** A component as data: the props it exposes to a person. Its layers stay code, drawn in the stage. */
5
+ export interface ComponentSpec {
6
+ props: Readonly<Record<string, PropSpec>>;
7
+ }
8
+ /** What a generator made: its slides, or why it failed. */
9
+ export type GeneratorOutput = GeneratedSlideDef[]
10
+ /** Why it failed, and where in slides.ts it threw (its stack). */
11
+ | {
12
+ error: string;
13
+ stack?: string;
14
+ };
15
+ export interface DeckCode {
16
+ slide_width: Length;
17
+ slide_height: Length;
18
+ theme?: ThemeInput;
19
+ masters: MasterDef[];
20
+ components: Record<string, ComponentSpec>;
21
+ generators: Record<string, GeneratorOutput>;
22
+ }
23
+ /**
24
+ * A deck's code as data: its definition, each generator run once on `data`
25
+ * (a data file of the deck's folder; a generator fails as it reads one
26
+ * without it). Plain JSON, nothing of the code's own objects kept.
27
+ */
28
+ export declare function deckCode(def: DeckDef, data?: (path: string) => unknown): DeckCode;
29
+ /** Whether a value (from another frame, a file, a worker) is a deck's code, by its schema. */
30
+ export declare function isDeckCode(value: unknown): value is DeckCode;
31
+ /** What is wrong with a value that should be a deck's code, each at its path; empty when it is one. */
32
+ export declare function deckCodeProblems(value: unknown): string[];
33
+ //# sourceMappingURL=code.d.ts.map
@@ -0,0 +1,2 @@
1
+ /*! AllyHub. Copyright (c) 2026 AllyHub, Inc. All rights reserved. Use is subject to LICENSE.md. */
2
+ import{DeckCodeSchema as a}from"@allyhub-next/formats";export function deckCode(e,r){const t={};for(const[o,n]of Object.entries(e.generators))try{t[o]=n.make({data:r??(()=>{throw new Error("No data here.")})})}catch(s){t[o]={error:s instanceof Error?s.message:String(s),...s instanceof Error&&s.stack!==void 0?{stack:s.stack}:{}}}const c={slide_width:e.slide_width,slide_height:e.slide_height,...e.theme===void 0?{}:{theme:e.theme},masters:e.masters,components:Object.fromEntries(Object.entries(e.components).map(([o,n])=>[o,{props:n.props}])),generators:t};return i(c)}function i(e){const r=JSON.stringify(e),t=JSON.parse(r);if(!isDeckCode(t))throw new Error("The deck's code made something that is not data.");return t}export function isDeckCode(e){return a.safeParse(e).success}export function deckCodeProblems(e){const r=a.safeParse(e);return r.success?[]:r.error.issues.map(t=>`${t.path.map(String).join(".")||"(top)"}: ${t.message}`)}