allyhub 0.3.0 → 0.4.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 (643) hide show
  1. package/dist/commands/add.js +2 -2
  2. package/dist/commands/auth.js +4 -4
  3. package/dist/commands/cloud-tools.js +9 -10
  4. package/dist/commands/dev.js +1 -1
  5. package/dist/commands/doctor.js +4 -4
  6. package/dist/commands/frames/piece.js +1 -1
  7. package/dist/commands/frames.js +6 -6
  8. package/dist/commands/index.js +1 -1
  9. package/dist/commands/inspect/contrast.js +1 -1
  10. package/dist/commands/inspect/layout.js +1 -1
  11. package/dist/commands/orgs.js +2 -2
  12. package/dist/commands/render.js +2 -2
  13. package/dist/commands/sheet.js +2 -2
  14. package/dist/commands/slides.js +3 -0
  15. package/dist/main.js +3 -3
  16. package/dist/text/facts-text.js +5 -5
  17. package/dist/text/format.js +2 -2
  18. package/dist/works.js +1 -1
  19. package/editor-web/assets/browser-B31cR_c2.js +105 -0
  20. package/editor-web/assets/dist-6TNEuNMX.js +4 -0
  21. package/editor-web/assets/dist-Cm2TIjW5.js +2 -0
  22. package/editor-web/assets/dist-Cpt0p8bX.js +6 -0
  23. package/editor-web/assets/dist-D2GccKEJ.js +1 -0
  24. package/editor-web/assets/dist-Z0zvYXmu.js +233 -0
  25. package/editor-web/assets/dist-fs4ONrUV.js +32 -0
  26. package/editor-web/assets/index-CAcsAZ9u.js +70 -0
  27. package/editor-web/assets/index-DlcJckhO.css +2 -0
  28. package/editor-web/assets/list-D2v7U8K8.js +1 -0
  29. package/editor-web/assets/react-D0RmGe2w.js +101 -0
  30. package/editor-web/assets/rolldown-runtime-XKyaHtl9.js +1 -0
  31. package/editor-web/assets/text-align-start-B3k2cx5f.js +1 -0
  32. package/editor-web/assets/undo-2-Ecr7-Obc.js +1 -0
  33. package/editor-web/index.html +4 -4
  34. package/node_modules/@allyhub-next/audio/package.json +1 -1
  35. package/node_modules/@allyhub-next/browser/package.json +1 -1
  36. package/node_modules/@allyhub-next/build/dist/data.js +1 -1
  37. package/node_modules/@allyhub-next/build/dist/meta-worker.d.ts +10 -0
  38. package/node_modules/@allyhub-next/build/dist/meta-worker.js +2 -2
  39. package/node_modules/@allyhub-next/build/dist/model-info.js +2 -1
  40. package/node_modules/@allyhub-next/build/dist/plugin.d.ts +2 -0
  41. package/node_modules/@allyhub-next/build/dist/plugin.js +9 -8
  42. package/node_modules/@allyhub-next/build/dist/prepare.d.ts +13 -1
  43. package/node_modules/@allyhub-next/build/dist/prepare.js +2 -2
  44. package/node_modules/@allyhub-next/build/dist/scan.d.ts +1 -1
  45. package/node_modules/@allyhub-next/build/dist/scan.js +1 -1
  46. package/node_modules/@allyhub-next/build/dist/types.js +3 -3
  47. package/node_modules/@allyhub-next/build/package.json +1 -1
  48. package/node_modules/@allyhub-next/check/dist/check.js +3 -3
  49. package/node_modules/@allyhub-next/check/dist/generated.d.ts +1 -1
  50. package/node_modules/@allyhub-next/check/package.json +1 -1
  51. package/node_modules/@allyhub-next/cloud/dist/index.js +1 -1
  52. package/node_modules/@allyhub-next/cloud/dist/signin.js +2 -2
  53. package/node_modules/@allyhub-next/cloud/dist/token.js +1 -1
  54. package/node_modules/@allyhub-next/cloud/package.json +1 -1
  55. package/node_modules/@allyhub-next/components/package.json +1 -1
  56. package/node_modules/@allyhub-next/dev-server/dist/card.d.ts +2 -11
  57. package/node_modules/@allyhub-next/dev-server/dist/card.js +1 -1
  58. package/node_modules/@allyhub-next/dev-server/dist/exports.d.ts +2 -2
  59. package/node_modules/@allyhub-next/dev-server/dist/exports.js +1 -1
  60. package/node_modules/@allyhub-next/dev-server/dist/index.d.ts +1 -1
  61. package/node_modules/@allyhub-next/dev-server/dist/index.js +1 -1
  62. package/node_modules/@allyhub-next/dev-server/dist/live.d.ts +3 -0
  63. package/node_modules/@allyhub-next/dev-server/dist/live.js +1 -1
  64. package/node_modules/@allyhub-next/dev-server/dist/project.d.ts +3 -0
  65. package/node_modules/@allyhub-next/dev-server/dist/project.js +1 -1
  66. package/node_modules/@allyhub-next/dev-server/dist/reveal.d.ts +6 -0
  67. package/node_modules/@allyhub-next/dev-server/dist/reveal.js +2 -0
  68. package/node_modules/@allyhub-next/dev-server/dist/server.js +1 -1
  69. package/node_modules/@allyhub-next/dev-server/dist/stage.d.ts +2 -0
  70. package/node_modules/@allyhub-next/dev-server/dist/stage.js +22 -2
  71. package/node_modules/@allyhub-next/dev-server/dist/tools.d.ts +2 -0
  72. package/node_modules/@allyhub-next/dev-server/dist/tools.js +1 -1
  73. package/node_modules/@allyhub-next/dev-server/package.json +1 -1
  74. package/node_modules/@allyhub-next/doc/dist/docx.d.ts +28 -0
  75. package/node_modules/@allyhub-next/doc/dist/docx.js +4 -0
  76. package/node_modules/@allyhub-next/doc/dist/html.d.ts +3 -0
  77. package/node_modules/@allyhub-next/doc/dist/html.js +1 -1
  78. package/node_modules/@allyhub-next/doc/package.json +5 -1
  79. package/node_modules/@allyhub-next/export/dist/deck-fonts.d.ts +24 -0
  80. package/node_modules/@allyhub-next/export/dist/deck-fonts.js +2 -0
  81. package/node_modules/@allyhub-next/export/dist/deck-pptx.d.ts +12 -0
  82. package/node_modules/@allyhub-next/export/dist/deck-pptx.js +2 -0
  83. package/node_modules/@allyhub-next/export/dist/export.d.ts +12 -3
  84. package/node_modules/@allyhub-next/export/dist/export.js +2 -2
  85. package/node_modules/@allyhub-next/export/dist/index.d.ts +1 -0
  86. package/node_modules/@allyhub-next/export/dist/index.js +1 -1
  87. package/node_modules/@allyhub-next/export/dist/names.d.ts +11 -6
  88. package/node_modules/@allyhub-next/export/dist/names.js +1 -1
  89. package/node_modules/@allyhub-next/export/package.json +1 -1
  90. package/node_modules/@allyhub-next/formats/dist/data/script.d.ts +22 -0
  91. package/node_modules/@allyhub-next/formats/dist/data/script.js +1 -1
  92. package/node_modules/@allyhub-next/formats/dist/data/slides.d.ts +1494 -0
  93. package/node_modules/@allyhub-next/formats/dist/data/slides.js +2 -0
  94. package/node_modules/@allyhub-next/formats/dist/index.d.ts +2 -0
  95. package/node_modules/@allyhub-next/formats/dist/index.js +1 -1
  96. package/node_modules/@allyhub-next/formats/dist/items.d.ts +21 -0
  97. package/node_modules/@allyhub-next/formats/dist/items.js +1 -1
  98. package/node_modules/@allyhub-next/formats/dist/note-shape.d.ts +39 -0
  99. package/node_modules/@allyhub-next/formats/dist/note-shape.js +2 -0
  100. package/node_modules/@allyhub-next/formats/dist/schemas.d.ts +418 -0
  101. package/node_modules/@allyhub-next/formats/dist/schemas.js +1 -1
  102. package/node_modules/@allyhub-next/formats/package.json +1 -1
  103. package/node_modules/@allyhub-next/measure/dist/index.d.ts +1 -1
  104. package/node_modules/@allyhub-next/measure/dist/index.js +1 -1
  105. package/node_modules/@allyhub-next/measure/dist/overlay.d.ts +14 -1
  106. package/node_modules/@allyhub-next/measure/dist/overlay.js +1 -1
  107. package/node_modules/@allyhub-next/measure/package.json +1 -1
  108. package/node_modules/@allyhub-next/media/dist/asr/parakeet.d.ts +1 -4
  109. package/node_modules/@allyhub-next/media/dist/asr/parakeet.js +4 -4
  110. package/node_modules/@allyhub-next/media/dist/asr/transcribe.d.ts +1 -1
  111. package/node_modules/@allyhub-next/media/dist/asr/transcribe.js +1 -1
  112. package/node_modules/@allyhub-next/media/dist/grid.d.ts +3 -3
  113. package/node_modules/@allyhub-next/media/dist/grid.js +5 -5
  114. package/node_modules/@allyhub-next/media/dist/local.d.ts +3 -0
  115. package/node_modules/@allyhub-next/media/dist/local.js +1 -1
  116. package/node_modules/@allyhub-next/media/dist/ocr/tesseract.d.ts +8 -2
  117. package/node_modules/@allyhub-next/media/dist/ocr/tesseract.js +1 -1
  118. package/node_modules/@allyhub-next/media/dist/ocr/text.js +3 -3
  119. package/node_modules/@allyhub-next/media/dist/ocr/worker.js +1 -1
  120. package/node_modules/@allyhub-next/media/dist/sheet.js +3 -3
  121. package/node_modules/@allyhub-next/media/dist/tools.d.ts +11 -1
  122. package/node_modules/@allyhub-next/media/dist/tools.js +1 -1
  123. package/node_modules/@allyhub-next/media/dist/vision/faces.js +1 -1
  124. package/node_modules/@allyhub-next/media/dist/vision/matte.js +1 -1
  125. package/node_modules/@allyhub-next/media/dist/vision/runtime.d.ts +1 -1
  126. package/node_modules/@allyhub-next/media/dist/vision/runtime.js +2 -2
  127. package/node_modules/@allyhub-next/media/dist/worker-process.d.ts +1 -1
  128. package/node_modules/@allyhub-next/media/dist/worker-process.js +1 -1
  129. package/node_modules/@allyhub-next/media/package.json +1 -1
  130. package/node_modules/@allyhub-next/model/dist/build-job.d.ts +2 -0
  131. package/node_modules/@allyhub-next/model/dist/build-worker.js +1 -1
  132. package/node_modules/@allyhub-next/model/dist/build.d.ts +10 -0
  133. package/node_modules/@allyhub-next/model/dist/build.js +2 -1
  134. package/node_modules/@allyhub-next/model/package.json +1 -1
  135. package/node_modules/@allyhub-next/project/dist/digest.d.ts +1 -3
  136. package/node_modules/@allyhub-next/project/dist/digest.js +1 -1
  137. package/node_modules/@allyhub-next/project/dist/page.d.ts +0 -5
  138. package/node_modules/@allyhub-next/project/dist/page.js +2 -2
  139. package/node_modules/@allyhub-next/project/dist/session.js +1 -1
  140. package/node_modules/@allyhub-next/project/package.json +1 -1
  141. package/node_modules/@allyhub-next/protocol/dist/app.d.ts +0 -64
  142. package/node_modules/@allyhub-next/protocol/dist/app.js +1 -1
  143. package/node_modules/@allyhub-next/protocol/dist/auth.d.ts +0 -17
  144. package/node_modules/@allyhub-next/protocol/dist/auth.js +1 -1
  145. package/node_modules/@allyhub-next/protocol/dist/cli.d.ts +0 -4
  146. package/node_modules/@allyhub-next/protocol/dist/cli.js +1 -1
  147. package/node_modules/@allyhub-next/protocol/dist/editor.d.ts +9 -26
  148. package/node_modules/@allyhub-next/protocol/dist/editor.js +1 -1
  149. package/node_modules/@allyhub-next/protocol/dist/index.d.ts +1 -0
  150. package/node_modules/@allyhub-next/protocol/dist/index.js +1 -1
  151. package/node_modules/@allyhub-next/protocol/dist/notes.d.ts +163 -0
  152. package/node_modules/@allyhub-next/protocol/dist/notes.js +2 -0
  153. package/node_modules/@allyhub-next/protocol/dist/registry.d.ts +1 -1
  154. package/node_modules/@allyhub-next/protocol/dist/runtimes.d.ts +3 -0
  155. package/node_modules/@allyhub-next/protocol/dist/runtimes.js +1 -1
  156. package/node_modules/@allyhub-next/protocol/dist/tools.d.ts +37 -0
  157. package/node_modules/@allyhub-next/protocol/dist/tools.js +1 -1
  158. package/node_modules/@allyhub-next/protocol/package.json +1 -1
  159. package/node_modules/@allyhub-next/registry/dist/registry.js +1 -1
  160. package/node_modules/@allyhub-next/registry/package.json +1 -1
  161. package/node_modules/@allyhub-next/render/dist/doc/index.d.ts +1 -1
  162. package/node_modules/@allyhub-next/render/dist/doc/index.js +1 -1
  163. package/node_modules/@allyhub-next/render/dist/doc/print.d.ts +11 -0
  164. package/node_modules/@allyhub-next/render/dist/doc/print.js +17 -1
  165. package/node_modules/@allyhub-next/render/dist/exports.d.ts +29 -4
  166. package/node_modules/@allyhub-next/render/dist/exports.js +2 -2
  167. package/node_modules/@allyhub-next/render/dist/page.d.ts +11 -1
  168. package/node_modules/@allyhub-next/render/dist/render.d.ts +2 -0
  169. package/node_modules/@allyhub-next/render/dist/render.js +2 -2
  170. package/node_modules/@allyhub-next/render/package.json +1 -1
  171. package/node_modules/@allyhub-next/runtime/LICENSE +241 -0
  172. package/node_modules/@allyhub-next/runtime/dist/bridge.d.ts +13 -3
  173. package/node_modules/@allyhub-next/runtime/dist/clock.js +1 -1
  174. package/node_modules/@allyhub-next/runtime/dist/env.js +1 -1
  175. package/node_modules/@allyhub-next/runtime/dist/facade.js +1 -1
  176. package/node_modules/@allyhub-next/runtime/dist/footage.js +1 -1
  177. package/node_modules/@allyhub-next/runtime/dist/frame.js +1 -1
  178. package/node_modules/@allyhub-next/runtime/dist/index.d.ts +2 -0
  179. package/node_modules/@allyhub-next/runtime/dist/index.js +1 -1
  180. package/node_modules/@allyhub-next/runtime/dist/locate.d.ts +11 -0
  181. package/node_modules/@allyhub-next/runtime/dist/locate.js +2 -0
  182. package/node_modules/@allyhub-next/runtime/dist/measure.d.ts +2 -1
  183. package/node_modules/@allyhub-next/runtime/dist/measure.js +1 -1
  184. package/node_modules/@allyhub-next/runtime/dist/music.js +1 -1
  185. package/node_modules/@allyhub-next/runtime/dist/output.js +1 -1
  186. package/node_modules/@allyhub-next/runtime/dist/piece.d.ts +5 -9
  187. package/node_modules/@allyhub-next/runtime/dist/piece.js +2 -2
  188. package/node_modules/@allyhub-next/runtime/dist/player/player.js +1 -1
  189. package/node_modules/@allyhub-next/runtime/dist/reads.d.ts +2 -0
  190. package/node_modules/@allyhub-next/runtime/dist/reads.js +1 -1
  191. package/node_modules/@allyhub-next/runtime/dist/sound.js +1 -1
  192. package/node_modules/@allyhub-next/runtime/dist/stage-kit.d.ts +12 -0
  193. package/node_modules/@allyhub-next/runtime/dist/stage-kit.js +2 -0
  194. package/node_modules/@allyhub-next/runtime/package.json +5 -6
  195. package/node_modules/@allyhub-next/runtimes/dist/errors.d.ts +5 -1
  196. package/node_modules/@allyhub-next/runtimes/dist/index.d.ts +1 -0
  197. package/node_modules/@allyhub-next/runtimes/dist/index.js +1 -1
  198. package/node_modules/@allyhub-next/runtimes/dist/node-program.d.ts +3 -0
  199. package/node_modules/@allyhub-next/runtimes/dist/node-program.js +2 -0
  200. package/node_modules/@allyhub-next/runtimes/dist/packages.d.ts +65 -0
  201. package/node_modules/@allyhub-next/runtimes/dist/packages.js +4 -0
  202. package/node_modules/@allyhub-next/runtimes/dist/runtimes.js +2 -2
  203. package/node_modules/@allyhub-next/runtimes/dist/unpack.d.ts +7 -0
  204. package/node_modules/@allyhub-next/runtimes/dist/unpack.js +1 -1
  205. package/node_modules/@allyhub-next/runtimes/package.json +5 -1
  206. package/node_modules/@allyhub-next/runtimes/pins/docx/package-lock.json +67 -0
  207. package/node_modules/@allyhub-next/runtimes/pins/docx/package.json +9 -0
  208. package/node_modules/@allyhub-next/runtimes/pins/exceljs/package-lock.json +2533 -0
  209. package/node_modules/@allyhub-next/runtimes/pins/exceljs/package.json +8 -0
  210. package/node_modules/@allyhub-next/runtimes/pins/gltf-tools/package-lock.json +753 -0
  211. package/node_modules/@allyhub-next/runtimes/pins/gltf-tools/package.json +14 -0
  212. package/node_modules/@allyhub-next/runtimes/pins/manifold-3d/package-lock.json +950 -0
  213. package/node_modules/@allyhub-next/runtimes/pins/manifold-3d/package.json +8 -0
  214. package/node_modules/@allyhub-next/runtimes/pins/onnxruntime-node/package-lock.json +227 -0
  215. package/node_modules/@allyhub-next/runtimes/pins/onnxruntime-node/package.json +8 -0
  216. package/node_modules/@allyhub-next/runtimes/pins/sherpa-onnx-node/package-lock.json +105 -0
  217. package/node_modules/@allyhub-next/runtimes/pins/sherpa-onnx-node/package.json +8 -0
  218. package/node_modules/@allyhub-next/runtimes/pins/tesseract.js/package-lock.json +128 -0
  219. package/node_modules/@allyhub-next/runtimes/pins/tesseract.js/package.json +9 -0
  220. package/node_modules/@allyhub-next/runtimes/schemas/runtimes.schema.json +5 -24
  221. package/node_modules/@allyhub-next/scaffold/dist/index.js +3 -3
  222. package/node_modules/@allyhub-next/scaffold/package.json +1 -1
  223. package/node_modules/@allyhub-next/scenery/package.json +1 -1
  224. package/node_modules/@allyhub-next/scenery-host/dist/bundle.d.ts +2 -2
  225. package/node_modules/@allyhub-next/scenery-host/dist/bundle.js +3 -3
  226. package/node_modules/@allyhub-next/scenery-host/dist/viewer.d.ts +11 -0
  227. package/node_modules/@allyhub-next/scenery-host/dist/viewer.js +1 -1
  228. package/node_modules/@allyhub-next/scenery-host/package.json +1 -1
  229. package/node_modules/@allyhub-next/sheet/package.json +1 -1
  230. package/node_modules/@allyhub-next/site/dist/media.js +2 -2
  231. package/node_modules/@allyhub-next/site/package.json +1 -1
  232. package/node_modules/@allyhub-next/slides-core/LICENSE +241 -0
  233. package/node_modules/@allyhub-next/slides-core/dist/animation.d.ts +129 -0
  234. package/node_modules/@allyhub-next/slides-core/dist/animation.js +2 -0
  235. package/node_modules/@allyhub-next/slides-core/dist/api.d.ts +649 -0
  236. package/node_modules/@allyhub-next/slides-core/dist/api.js +4 -0
  237. package/node_modules/@allyhub-next/slides-core/dist/capabilities.d.ts +18 -0
  238. package/node_modules/@allyhub-next/slides-core/dist/capabilities.js +2 -0
  239. package/node_modules/@allyhub-next/slides-core/dist/chart-api.d.ts +165 -0
  240. package/node_modules/@allyhub-next/slides-core/dist/chart-api.js +2 -0
  241. package/node_modules/@allyhub-next/slides-core/dist/chart-file.d.ts +11 -0
  242. package/node_modules/@allyhub-next/slides-core/dist/chart-file.js +2 -0
  243. package/node_modules/@allyhub-next/slides-core/dist/chart.d.ts +184 -0
  244. package/node_modules/@allyhub-next/slides-core/dist/chart.js +2 -0
  245. package/node_modules/@allyhub-next/slides-core/dist/check.d.ts +7 -0
  246. package/node_modules/@allyhub-next/slides-core/dist/check.js +2 -0
  247. package/node_modules/@allyhub-next/slides-core/dist/enums.d.ts +146 -0
  248. package/node_modules/@allyhub-next/slides-core/dist/enums.js +2 -0
  249. package/node_modules/@allyhub-next/slides-core/dist/file.d.ts +109 -0
  250. package/node_modules/@allyhub-next/slides-core/dist/file.js +4 -0
  251. package/node_modules/@allyhub-next/slides-core/dist/index.d.ts +21 -0
  252. package/node_modules/@allyhub-next/slides-core/dist/index.js +2 -0
  253. package/node_modules/@allyhub-next/slides-core/dist/measure.d.ts +34 -0
  254. package/node_modules/@allyhub-next/slides-core/dist/measure.js +2 -0
  255. package/node_modules/@allyhub-next/slides-core/dist/model.d.ts +278 -0
  256. package/node_modules/@allyhub-next/slides-core/dist/model.js +2 -0
  257. package/node_modules/@allyhub-next/slides-core/dist/office.d.ts +58 -0
  258. package/node_modules/@allyhub-next/slides-core/dist/office.js +2 -0
  259. package/node_modules/@allyhub-next/slides-core/dist/path.d.ts +6 -0
  260. package/node_modules/@allyhub-next/slides-core/dist/path.js +2 -0
  261. package/node_modules/@allyhub-next/slides-core/dist/placeholders.d.ts +7 -0
  262. package/node_modules/@allyhub-next/slides-core/dist/placeholders.js +2 -0
  263. package/node_modules/@allyhub-next/slides-core/dist/resolve.d.ts +181 -0
  264. package/node_modules/@allyhub-next/slides-core/dist/resolve.js +2 -0
  265. package/node_modules/@allyhub-next/slides-core/dist/script.d.ts +43 -0
  266. package/node_modules/@allyhub-next/slides-core/dist/script.js +3 -0
  267. package/node_modules/@allyhub-next/slides-core/dist/stage.d.ts +63 -0
  268. package/node_modules/@allyhub-next/slides-core/dist/stage.js +2 -0
  269. package/node_modules/@allyhub-next/slides-core/dist/strict.d.ts +23 -0
  270. package/node_modules/@allyhub-next/slides-core/dist/strict.js +2 -0
  271. package/node_modules/@allyhub-next/slides-core/dist/theme.d.ts +72 -0
  272. package/node_modules/@allyhub-next/slides-core/dist/theme.js +2 -0
  273. package/node_modules/@allyhub-next/slides-core/dist/units.d.ts +35 -0
  274. package/node_modules/@allyhub-next/slides-core/dist/units.js +2 -0
  275. package/node_modules/@allyhub-next/slides-core/package.json +14 -0
  276. package/node_modules/@allyhub-next/slides-pptx/LICENSE +241 -0
  277. package/node_modules/@allyhub-next/slides-pptx/dist/charts.d.ts +6 -0
  278. package/node_modules/@allyhub-next/slides-pptx/dist/charts.js +2 -0
  279. package/node_modules/@allyhub-next/slides-pptx/dist/fonts.d.ts +45 -0
  280. package/node_modules/@allyhub-next/slides-pptx/dist/fonts.js +2 -0
  281. package/node_modules/@allyhub-next/slides-pptx/dist/import.d.ts +18 -0
  282. package/node_modules/@allyhub-next/slides-pptx/dist/import.js +3 -0
  283. package/node_modules/@allyhub-next/slides-pptx/dist/index.d.ts +5 -0
  284. package/node_modules/@allyhub-next/slides-pptx/dist/index.js +2 -0
  285. package/node_modules/@allyhub-next/slides-pptx/dist/read.d.ts +55 -0
  286. package/node_modules/@allyhub-next/slides-pptx/dist/read.js +4 -0
  287. package/node_modules/@allyhub-next/slides-pptx/dist/shapes.d.ts +67 -0
  288. package/node_modules/@allyhub-next/slides-pptx/dist/shapes.js +2 -0
  289. package/node_modules/@allyhub-next/slides-pptx/dist/text.d.ts +21 -0
  290. package/node_modules/@allyhub-next/slides-pptx/dist/text.js +2 -0
  291. package/node_modules/@allyhub-next/slides-pptx/dist/theme.d.ts +4 -0
  292. package/node_modules/@allyhub-next/slides-pptx/dist/theme.js +2 -0
  293. package/node_modules/@allyhub-next/slides-pptx/dist/timing.d.ts +32 -0
  294. package/node_modules/@allyhub-next/slides-pptx/dist/timing.js +2 -0
  295. package/node_modules/@allyhub-next/slides-pptx/dist/write.d.ts +32 -0
  296. package/node_modules/@allyhub-next/slides-pptx/dist/write.js +3 -0
  297. package/node_modules/@allyhub-next/slides-pptx/dist/xml.d.ts +26 -0
  298. package/node_modules/@allyhub-next/slides-pptx/dist/xml.js +3 -0
  299. package/node_modules/@allyhub-next/slides-pptx/package.json +14 -0
  300. package/node_modules/@allyhub-next/slides-runtime/LICENSE +241 -0
  301. package/node_modules/@allyhub-next/slides-runtime/dist/draw.d.ts +40 -0
  302. package/node_modules/@allyhub-next/slides-runtime/dist/draw.js +3 -0
  303. package/node_modules/@allyhub-next/slides-runtime/dist/edit.d.ts +4 -0
  304. package/node_modules/@allyhub-next/slides-runtime/dist/edit.js +2 -0
  305. package/node_modules/@allyhub-next/slides-runtime/dist/index.d.ts +4 -0
  306. package/node_modules/@allyhub-next/slides-runtime/dist/index.js +2 -0
  307. package/node_modules/@allyhub-next/slides-runtime/dist/ink.d.ts +10 -0
  308. package/node_modules/@allyhub-next/slides-runtime/dist/ink.js +2 -0
  309. package/node_modules/@allyhub-next/slides-runtime/dist/load.d.ts +6 -0
  310. package/node_modules/@allyhub-next/slides-runtime/dist/load.js +6 -0
  311. package/node_modules/@allyhub-next/slides-runtime/package.json +14 -0
  312. package/node_modules/@allyhub-next/stage/dist/graphics.js +1 -1
  313. package/node_modules/@allyhub-next/stage/dist/identity.js +1 -1
  314. package/node_modules/@allyhub-next/stage/dist/page.d.ts +9 -0
  315. package/node_modules/@allyhub-next/stage/dist/page.js +12 -2
  316. package/node_modules/@allyhub-next/stage/dist/server.js +1 -1
  317. package/node_modules/@allyhub-next/stage/package.json +1 -1
  318. package/node_modules/@allyhub-next/stage-page/dist/fonts/arimo/400-italic.css +79 -0
  319. package/node_modules/@allyhub-next/stage-page/dist/fonts/arimo/400.css +79 -0
  320. package/node_modules/@allyhub-next/stage-page/dist/fonts/arimo/700-italic.css +79 -0
  321. package/node_modules/@allyhub-next/stage-page/dist/fonts/arimo/700.css +79 -0
  322. package/node_modules/@allyhub-next/stage-page/dist/fonts/arimo/LICENSE +93 -0
  323. package/node_modules/@allyhub-next/stage-page/dist/fonts/arimo/arial.css +316 -0
  324. package/node_modules/@allyhub-next/stage-page/dist/fonts/arimo/files/arimo-cyrillic-400-italic.woff2 +0 -0
  325. package/node_modules/@allyhub-next/stage-page/dist/fonts/arimo/files/arimo-cyrillic-400-normal.woff2 +0 -0
  326. package/node_modules/@allyhub-next/stage-page/dist/fonts/arimo/files/arimo-cyrillic-700-italic.woff2 +0 -0
  327. package/node_modules/@allyhub-next/stage-page/dist/fonts/arimo/files/arimo-cyrillic-700-normal.woff2 +0 -0
  328. package/node_modules/@allyhub-next/stage-page/dist/fonts/arimo/files/arimo-cyrillic-ext-400-italic.woff2 +0 -0
  329. package/node_modules/@allyhub-next/stage-page/dist/fonts/arimo/files/arimo-cyrillic-ext-400-normal.woff2 +0 -0
  330. package/node_modules/@allyhub-next/stage-page/dist/fonts/arimo/files/arimo-cyrillic-ext-700-italic.woff2 +0 -0
  331. package/node_modules/@allyhub-next/stage-page/dist/fonts/arimo/files/arimo-cyrillic-ext-700-normal.woff2 +0 -0
  332. package/node_modules/@allyhub-next/stage-page/dist/fonts/arimo/files/arimo-greek-400-italic.woff2 +0 -0
  333. package/node_modules/@allyhub-next/stage-page/dist/fonts/arimo/files/arimo-greek-400-normal.woff2 +0 -0
  334. package/node_modules/@allyhub-next/stage-page/dist/fonts/arimo/files/arimo-greek-700-italic.woff2 +0 -0
  335. package/node_modules/@allyhub-next/stage-page/dist/fonts/arimo/files/arimo-greek-700-normal.woff2 +0 -0
  336. package/node_modules/@allyhub-next/stage-page/dist/fonts/arimo/files/arimo-greek-ext-400-italic.woff2 +0 -0
  337. package/node_modules/@allyhub-next/stage-page/dist/fonts/arimo/files/arimo-greek-ext-400-normal.woff2 +0 -0
  338. package/node_modules/@allyhub-next/stage-page/dist/fonts/arimo/files/arimo-greek-ext-700-italic.woff2 +0 -0
  339. package/node_modules/@allyhub-next/stage-page/dist/fonts/arimo/files/arimo-greek-ext-700-normal.woff2 +0 -0
  340. package/node_modules/@allyhub-next/stage-page/dist/fonts/arimo/files/arimo-hebrew-400-italic.woff2 +0 -0
  341. package/node_modules/@allyhub-next/stage-page/dist/fonts/arimo/files/arimo-hebrew-400-normal.woff2 +0 -0
  342. package/node_modules/@allyhub-next/stage-page/dist/fonts/arimo/files/arimo-hebrew-700-italic.woff2 +0 -0
  343. package/node_modules/@allyhub-next/stage-page/dist/fonts/arimo/files/arimo-hebrew-700-normal.woff2 +0 -0
  344. package/node_modules/@allyhub-next/stage-page/dist/fonts/arimo/files/arimo-latin-400-italic.woff2 +0 -0
  345. package/node_modules/@allyhub-next/stage-page/dist/fonts/arimo/files/arimo-latin-400-normal.woff2 +0 -0
  346. package/node_modules/@allyhub-next/stage-page/dist/fonts/arimo/files/arimo-latin-700-italic.woff2 +0 -0
  347. package/node_modules/@allyhub-next/stage-page/dist/fonts/arimo/files/arimo-latin-700-normal.woff2 +0 -0
  348. package/node_modules/@allyhub-next/stage-page/dist/fonts/arimo/files/arimo-latin-ext-400-italic.woff2 +0 -0
  349. package/node_modules/@allyhub-next/stage-page/dist/fonts/arimo/files/arimo-latin-ext-400-normal.woff2 +0 -0
  350. package/node_modules/@allyhub-next/stage-page/dist/fonts/arimo/files/arimo-latin-ext-700-italic.woff2 +0 -0
  351. package/node_modules/@allyhub-next/stage-page/dist/fonts/arimo/files/arimo-latin-ext-700-normal.woff2 +0 -0
  352. package/node_modules/@allyhub-next/stage-page/dist/fonts/arimo/files/arimo-vietnamese-400-italic.woff2 +0 -0
  353. package/node_modules/@allyhub-next/stage-page/dist/fonts/arimo/files/arimo-vietnamese-400-normal.woff2 +0 -0
  354. package/node_modules/@allyhub-next/stage-page/dist/fonts/arimo/files/arimo-vietnamese-700-italic.woff2 +0 -0
  355. package/node_modules/@allyhub-next/stage-page/dist/fonts/arimo/files/arimo-vietnamese-700-normal.woff2 +0 -0
  356. package/node_modules/@allyhub-next/stage-page/dist/fonts/carlito/400-italic.css +69 -0
  357. package/node_modules/@allyhub-next/stage-page/dist/fonts/carlito/400.css +69 -0
  358. package/node_modules/@allyhub-next/stage-page/dist/fonts/carlito/700-italic.css +69 -0
  359. package/node_modules/@allyhub-next/stage-page/dist/fonts/carlito/700.css +69 -0
  360. package/node_modules/@allyhub-next/stage-page/dist/fonts/carlito/LICENSE +93 -0
  361. package/node_modules/@allyhub-next/stage-page/dist/fonts/carlito/calibri.css +276 -0
  362. package/node_modules/@allyhub-next/stage-page/dist/fonts/carlito/files/carlito-cyrillic-400-italic.woff2 +0 -0
  363. package/node_modules/@allyhub-next/stage-page/dist/fonts/carlito/files/carlito-cyrillic-400-normal.woff2 +0 -0
  364. package/node_modules/@allyhub-next/stage-page/dist/fonts/carlito/files/carlito-cyrillic-700-italic.woff2 +0 -0
  365. package/node_modules/@allyhub-next/stage-page/dist/fonts/carlito/files/carlito-cyrillic-700-normal.woff2 +0 -0
  366. package/node_modules/@allyhub-next/stage-page/dist/fonts/carlito/files/carlito-cyrillic-ext-400-italic.woff2 +0 -0
  367. package/node_modules/@allyhub-next/stage-page/dist/fonts/carlito/files/carlito-cyrillic-ext-400-normal.woff2 +0 -0
  368. package/node_modules/@allyhub-next/stage-page/dist/fonts/carlito/files/carlito-cyrillic-ext-700-italic.woff2 +0 -0
  369. package/node_modules/@allyhub-next/stage-page/dist/fonts/carlito/files/carlito-cyrillic-ext-700-normal.woff2 +0 -0
  370. package/node_modules/@allyhub-next/stage-page/dist/fonts/carlito/files/carlito-greek-400-italic.woff2 +0 -0
  371. package/node_modules/@allyhub-next/stage-page/dist/fonts/carlito/files/carlito-greek-400-normal.woff2 +0 -0
  372. package/node_modules/@allyhub-next/stage-page/dist/fonts/carlito/files/carlito-greek-700-italic.woff2 +0 -0
  373. package/node_modules/@allyhub-next/stage-page/dist/fonts/carlito/files/carlito-greek-700-normal.woff2 +0 -0
  374. package/node_modules/@allyhub-next/stage-page/dist/fonts/carlito/files/carlito-greek-ext-400-italic.woff2 +0 -0
  375. package/node_modules/@allyhub-next/stage-page/dist/fonts/carlito/files/carlito-greek-ext-400-normal.woff2 +0 -0
  376. package/node_modules/@allyhub-next/stage-page/dist/fonts/carlito/files/carlito-greek-ext-700-italic.woff2 +0 -0
  377. package/node_modules/@allyhub-next/stage-page/dist/fonts/carlito/files/carlito-greek-ext-700-normal.woff2 +0 -0
  378. package/node_modules/@allyhub-next/stage-page/dist/fonts/carlito/files/carlito-latin-400-italic.woff2 +0 -0
  379. package/node_modules/@allyhub-next/stage-page/dist/fonts/carlito/files/carlito-latin-400-normal.woff2 +0 -0
  380. package/node_modules/@allyhub-next/stage-page/dist/fonts/carlito/files/carlito-latin-700-italic.woff2 +0 -0
  381. package/node_modules/@allyhub-next/stage-page/dist/fonts/carlito/files/carlito-latin-700-normal.woff2 +0 -0
  382. package/node_modules/@allyhub-next/stage-page/dist/fonts/carlito/files/carlito-latin-ext-400-italic.woff2 +0 -0
  383. package/node_modules/@allyhub-next/stage-page/dist/fonts/carlito/files/carlito-latin-ext-400-normal.woff2 +0 -0
  384. package/node_modules/@allyhub-next/stage-page/dist/fonts/carlito/files/carlito-latin-ext-700-italic.woff2 +0 -0
  385. package/node_modules/@allyhub-next/stage-page/dist/fonts/carlito/files/carlito-latin-ext-700-normal.woff2 +0 -0
  386. package/node_modules/@allyhub-next/stage-page/dist/fonts/carlito/files/carlito-vietnamese-400-italic.woff2 +0 -0
  387. package/node_modules/@allyhub-next/stage-page/dist/fonts/carlito/files/carlito-vietnamese-400-normal.woff2 +0 -0
  388. package/node_modules/@allyhub-next/stage-page/dist/fonts/carlito/files/carlito-vietnamese-700-italic.woff2 +0 -0
  389. package/node_modules/@allyhub-next/stage-page/dist/fonts/carlito/files/carlito-vietnamese-700-normal.woff2 +0 -0
  390. package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/400.css +1 -1
  391. package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/700.css +1 -1
  392. package/node_modules/@allyhub-next/stage-page/dist/fonts/noto-sans-sc/microsoft-yahei.css +2018 -0
  393. package/node_modules/@allyhub-next/stage-page/dist/host.js +21 -0
  394. package/node_modules/@allyhub-next/stage-page/dist/page.js +79 -0
  395. package/node_modules/@allyhub-next/stage-page/package.json +14 -0
  396. package/node_modules/@allyhub-next/video-core/dist/export.d.ts +6 -5
  397. package/node_modules/@allyhub-next/video-core/dist/export.js +1 -1
  398. package/node_modules/@allyhub-next/video-core/dist/fact.d.ts +173 -4
  399. package/node_modules/@allyhub-next/video-core/dist/fact.js +1 -1
  400. package/node_modules/@allyhub-next/video-core/dist/formats.d.ts +6 -13
  401. package/node_modules/@allyhub-next/video-core/dist/formats.js +1 -1
  402. package/node_modules/@allyhub-next/video-core/dist/index.d.ts +0 -1
  403. package/node_modules/@allyhub-next/video-core/dist/index.js +1 -1
  404. package/node_modules/@allyhub-next/video-core/dist/measure.d.ts +83 -0
  405. package/node_modules/@allyhub-next/video-core/dist/piece.d.ts +8 -9
  406. package/node_modules/@allyhub-next/video-core/dist/piece.js +1 -1
  407. package/node_modules/@allyhub-next/video-core/dist/problem.d.ts +5 -1
  408. package/node_modules/@allyhub-next/video-core/dist/problem.js +1 -1
  409. package/node_modules/@allyhub-next/video-core/dist/schema.d.ts +0 -2
  410. package/node_modules/@allyhub-next/video-core/dist/script-edit.d.ts +4 -0
  411. package/node_modules/@allyhub-next/video-core/dist/script.d.ts +8 -0
  412. package/node_modules/@allyhub-next/video-core/dist/script.js +1 -1
  413. package/node_modules/@allyhub-next/video-core/dist/timeline.d.ts +34 -1
  414. package/node_modules/@allyhub-next/video-core/package.json +1 -1
  415. package/package.json +48 -41
  416. package/dist/commands/mcp-app.js +0 -3
  417. package/dist/commands/mcp-docs.js +0 -2
  418. package/dist/commands/mcp.js +0 -2
  419. package/editor-app/view.html +0 -128
  420. package/editor-web/assets/chevron-left-W6sP7nB1.js +0 -1
  421. package/editor-web/assets/chevron-up-566GQpAm.js +0 -1
  422. package/editor-web/assets/dist-BKDr73BR.js +0 -136
  423. package/editor-web/assets/dist-CPCNTYVu.js +0 -8
  424. package/editor-web/assets/dist-C_NajYp0.js +0 -1
  425. package/editor-web/assets/dist-mA6NrAKh.js +0 -232
  426. package/editor-web/assets/floating-ui.react-dom-BUxFRF6t.js +0 -1
  427. package/editor-web/assets/index-CFZhjTQW.js +0 -56
  428. package/editor-web/assets/index-DgU-lyX6.css +0 -2
  429. package/editor-web/assets/react-Ff_buMj8.js +0 -61
  430. package/editor-web/assets/undo-2-BKFItM3X.js +0 -1
  431. package/node_modules/@allyhub-next/runtime/dist/host.js +0 -21
  432. package/node_modules/@allyhub-next/runtime/dist/page.js +0 -72
  433. package/node_modules/@allyhub-next/runtime/dist/paged.d.ts +0 -16
  434. package/node_modules/@allyhub-next/runtime/dist/paged.js +0 -2
  435. package/node_modules/@allyhub-next/video-core/dist/slides.d.ts +0 -37
  436. package/node_modules/@allyhub-next/video-core/dist/slides.js +0 -2
  437. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-color-emoji/LICENSE +0 -0
  438. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-color-emoji/emoji.css +0 -0
  439. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-color-emoji/files/noto-color-emoji-emoji-400-normal.woff2 +0 -0
  440. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/LICENSE +0 -0
  441. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-100-400-normal.woff2 +0 -0
  442. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-100-700-normal.woff2 +0 -0
  443. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-101-400-normal.woff2 +0 -0
  444. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-101-700-normal.woff2 +0 -0
  445. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-102-400-normal.woff2 +0 -0
  446. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-102-700-normal.woff2 +0 -0
  447. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-103-400-normal.woff2 +0 -0
  448. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-103-700-normal.woff2 +0 -0
  449. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-104-400-normal.woff2 +0 -0
  450. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-104-700-normal.woff2 +0 -0
  451. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-105-400-normal.woff2 +0 -0
  452. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-105-700-normal.woff2 +0 -0
  453. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-106-400-normal.woff2 +0 -0
  454. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-106-700-normal.woff2 +0 -0
  455. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-107-400-normal.woff2 +0 -0
  456. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-107-700-normal.woff2 +0 -0
  457. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-108-400-normal.woff2 +0 -0
  458. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-108-700-normal.woff2 +0 -0
  459. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-109-400-normal.woff2 +0 -0
  460. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-109-700-normal.woff2 +0 -0
  461. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-110-400-normal.woff2 +0 -0
  462. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-110-700-normal.woff2 +0 -0
  463. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-111-400-normal.woff2 +0 -0
  464. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-111-700-normal.woff2 +0 -0
  465. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-112-400-normal.woff2 +0 -0
  466. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-112-700-normal.woff2 +0 -0
  467. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-113-400-normal.woff2 +0 -0
  468. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-113-700-normal.woff2 +0 -0
  469. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-114-400-normal.woff2 +0 -0
  470. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-114-700-normal.woff2 +0 -0
  471. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-115-400-normal.woff2 +0 -0
  472. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-115-700-normal.woff2 +0 -0
  473. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-116-400-normal.woff2 +0 -0
  474. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-116-700-normal.woff2 +0 -0
  475. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-117-400-normal.woff2 +0 -0
  476. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-117-700-normal.woff2 +0 -0
  477. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-118-400-normal.woff2 +0 -0
  478. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-118-700-normal.woff2 +0 -0
  479. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-119-400-normal.woff2 +0 -0
  480. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-119-700-normal.woff2 +0 -0
  481. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-21-400-normal.woff2 +0 -0
  482. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-21-700-normal.woff2 +0 -0
  483. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-22-400-normal.woff2 +0 -0
  484. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-22-700-normal.woff2 +0 -0
  485. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-23-400-normal.woff2 +0 -0
  486. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-23-700-normal.woff2 +0 -0
  487. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-24-400-normal.woff2 +0 -0
  488. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-24-700-normal.woff2 +0 -0
  489. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-25-400-normal.woff2 +0 -0
  490. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-25-700-normal.woff2 +0 -0
  491. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-26-400-normal.woff2 +0 -0
  492. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-26-700-normal.woff2 +0 -0
  493. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-27-400-normal.woff2 +0 -0
  494. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-27-700-normal.woff2 +0 -0
  495. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-28-400-normal.woff2 +0 -0
  496. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-28-700-normal.woff2 +0 -0
  497. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-29-400-normal.woff2 +0 -0
  498. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-29-700-normal.woff2 +0 -0
  499. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-30-400-normal.woff2 +0 -0
  500. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-30-700-normal.woff2 +0 -0
  501. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-31-400-normal.woff2 +0 -0
  502. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-31-700-normal.woff2 +0 -0
  503. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-32-400-normal.woff2 +0 -0
  504. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-32-700-normal.woff2 +0 -0
  505. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-33-400-normal.woff2 +0 -0
  506. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-33-700-normal.woff2 +0 -0
  507. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-34-400-normal.woff2 +0 -0
  508. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-34-700-normal.woff2 +0 -0
  509. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-35-400-normal.woff2 +0 -0
  510. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-35-700-normal.woff2 +0 -0
  511. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-36-400-normal.woff2 +0 -0
  512. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-36-700-normal.woff2 +0 -0
  513. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-37-400-normal.woff2 +0 -0
  514. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-37-700-normal.woff2 +0 -0
  515. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-38-400-normal.woff2 +0 -0
  516. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-38-700-normal.woff2 +0 -0
  517. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-39-400-normal.woff2 +0 -0
  518. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-39-700-normal.woff2 +0 -0
  519. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-4-400-normal.woff2 +0 -0
  520. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-4-700-normal.woff2 +0 -0
  521. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-40-400-normal.woff2 +0 -0
  522. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-40-700-normal.woff2 +0 -0
  523. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-41-400-normal.woff2 +0 -0
  524. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-41-700-normal.woff2 +0 -0
  525. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-42-400-normal.woff2 +0 -0
  526. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-42-700-normal.woff2 +0 -0
  527. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-43-400-normal.woff2 +0 -0
  528. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-43-700-normal.woff2 +0 -0
  529. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-44-400-normal.woff2 +0 -0
  530. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-44-700-normal.woff2 +0 -0
  531. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-45-400-normal.woff2 +0 -0
  532. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-45-700-normal.woff2 +0 -0
  533. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-46-400-normal.woff2 +0 -0
  534. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-46-700-normal.woff2 +0 -0
  535. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-47-400-normal.woff2 +0 -0
  536. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-47-700-normal.woff2 +0 -0
  537. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-48-400-normal.woff2 +0 -0
  538. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-48-700-normal.woff2 +0 -0
  539. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-49-400-normal.woff2 +0 -0
  540. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-49-700-normal.woff2 +0 -0
  541. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-5-400-normal.woff2 +0 -0
  542. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-5-700-normal.woff2 +0 -0
  543. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-50-400-normal.woff2 +0 -0
  544. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-50-700-normal.woff2 +0 -0
  545. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-51-400-normal.woff2 +0 -0
  546. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-51-700-normal.woff2 +0 -0
  547. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-52-400-normal.woff2 +0 -0
  548. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-52-700-normal.woff2 +0 -0
  549. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-53-400-normal.woff2 +0 -0
  550. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-53-700-normal.woff2 +0 -0
  551. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-54-400-normal.woff2 +0 -0
  552. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-54-700-normal.woff2 +0 -0
  553. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-55-400-normal.woff2 +0 -0
  554. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-55-700-normal.woff2 +0 -0
  555. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-56-400-normal.woff2 +0 -0
  556. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-56-700-normal.woff2 +0 -0
  557. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-57-400-normal.woff2 +0 -0
  558. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-57-700-normal.woff2 +0 -0
  559. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-58-400-normal.woff2 +0 -0
  560. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-58-700-normal.woff2 +0 -0
  561. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-59-400-normal.woff2 +0 -0
  562. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-59-700-normal.woff2 +0 -0
  563. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-6-400-normal.woff2 +0 -0
  564. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-6-700-normal.woff2 +0 -0
  565. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-60-400-normal.woff2 +0 -0
  566. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-60-700-normal.woff2 +0 -0
  567. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-61-400-normal.woff2 +0 -0
  568. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-61-700-normal.woff2 +0 -0
  569. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-62-400-normal.woff2 +0 -0
  570. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-62-700-normal.woff2 +0 -0
  571. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-63-400-normal.woff2 +0 -0
  572. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-63-700-normal.woff2 +0 -0
  573. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-64-400-normal.woff2 +0 -0
  574. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-64-700-normal.woff2 +0 -0
  575. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-65-400-normal.woff2 +0 -0
  576. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-65-700-normal.woff2 +0 -0
  577. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-66-400-normal.woff2 +0 -0
  578. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-66-700-normal.woff2 +0 -0
  579. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-67-400-normal.woff2 +0 -0
  580. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-67-700-normal.woff2 +0 -0
  581. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-68-400-normal.woff2 +0 -0
  582. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-68-700-normal.woff2 +0 -0
  583. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-69-400-normal.woff2 +0 -0
  584. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-69-700-normal.woff2 +0 -0
  585. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-70-400-normal.woff2 +0 -0
  586. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-70-700-normal.woff2 +0 -0
  587. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-71-400-normal.woff2 +0 -0
  588. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-71-700-normal.woff2 +0 -0
  589. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-72-400-normal.woff2 +0 -0
  590. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-72-700-normal.woff2 +0 -0
  591. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-73-400-normal.woff2 +0 -0
  592. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-73-700-normal.woff2 +0 -0
  593. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-74-400-normal.woff2 +0 -0
  594. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-74-700-normal.woff2 +0 -0
  595. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-75-400-normal.woff2 +0 -0
  596. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-75-700-normal.woff2 +0 -0
  597. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-76-400-normal.woff2 +0 -0
  598. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-76-700-normal.woff2 +0 -0
  599. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-77-400-normal.woff2 +0 -0
  600. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-77-700-normal.woff2 +0 -0
  601. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-78-400-normal.woff2 +0 -0
  602. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-78-700-normal.woff2 +0 -0
  603. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-79-400-normal.woff2 +0 -0
  604. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-79-700-normal.woff2 +0 -0
  605. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-80-400-normal.woff2 +0 -0
  606. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-80-700-normal.woff2 +0 -0
  607. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-81-400-normal.woff2 +0 -0
  608. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-81-700-normal.woff2 +0 -0
  609. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-82-400-normal.woff2 +0 -0
  610. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-82-700-normal.woff2 +0 -0
  611. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-83-400-normal.woff2 +0 -0
  612. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-83-700-normal.woff2 +0 -0
  613. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-84-400-normal.woff2 +0 -0
  614. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-84-700-normal.woff2 +0 -0
  615. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-85-400-normal.woff2 +0 -0
  616. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-85-700-normal.woff2 +0 -0
  617. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-86-400-normal.woff2 +0 -0
  618. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-86-700-normal.woff2 +0 -0
  619. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-87-400-normal.woff2 +0 -0
  620. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-87-700-normal.woff2 +0 -0
  621. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-88-400-normal.woff2 +0 -0
  622. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-88-700-normal.woff2 +0 -0
  623. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-89-400-normal.woff2 +0 -0
  624. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-89-700-normal.woff2 +0 -0
  625. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-90-400-normal.woff2 +0 -0
  626. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-90-700-normal.woff2 +0 -0
  627. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-91-400-normal.woff2 +0 -0
  628. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-91-700-normal.woff2 +0 -0
  629. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-97-400-normal.woff2 +0 -0
  630. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-97-700-normal.woff2 +0 -0
  631. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-98-400-normal.woff2 +0 -0
  632. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-98-700-normal.woff2 +0 -0
  633. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-99-400-normal.woff2 +0 -0
  634. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-99-700-normal.woff2 +0 -0
  635. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-cyrillic-400-normal.woff2 +0 -0
  636. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-cyrillic-700-normal.woff2 +0 -0
  637. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-latin-400-normal.woff2 +0 -0
  638. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-latin-700-normal.woff2 +0 -0
  639. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-latin-ext-400-normal.woff2 +0 -0
  640. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-latin-ext-700-normal.woff2 +0 -0
  641. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-vietnamese-400-normal.woff2 +0 -0
  642. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/fonts/noto-sans-sc/files/noto-sans-sc-vietnamese-700-normal.woff2 +0 -0
  643. /package/node_modules/@allyhub-next/{runtime → stage-page}/dist/host.d.ts +0 -0
@@ -0,0 +1,4 @@
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 M}from"./enums.js";import{Chart as R}from"./chart-api.js";import{AUTOSHAPE_STYLE as c,CONNECTOR_STYLE as O,FOOTER_IDX as L,OFFICE_TEXT_STYLES as N,TEXT_INSETS as _,TEXTBOX_FRAME as z}from"./office.js";import{masterPlaceholder as T}from"./placeholders.js";import{strict as a}from"./strict.js";import{EMU_PER_PT as v,SLIDE_SIZES as S}from"./units.js";class C extends Error{constructor(t){super(`${t} (allyhub slides capabilities lists what the API holds).`),this.name="Unsupported"}}const m=i=>{throw new C(i)},G=/^#?[0-9a-f]{6}$/iu,j=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=>j(i)});export class ColorFormat{read;write;constructor(t,e){return this.read=t,this.write=e,a(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:j(t)})}}export class Font{def;constructor(t){return this.def=t,a(this,"Font")}_set(t,e){e===void 0?Reflect.deleteProperty(this.def,t):this.def[t]=e}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 Run{def;constructor(t){return this.def=t,a(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)}}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>=v?{fixed:i}:{lines:i}},D=i=>i===void 0?void 0:"lines"in i?i.lines:i.fixed,A=i=>i.split(/\n|\v/u).flatMap((t,e)=>[...e>0?[{text:"\v"}]:[],...t===""?[]:[{text:t}]]);class P{_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 D(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 P{fmt;constructor(t){return super(),this.fmt=t,a(this,"_Paragraph")}get text(){return this.fmt.runs.map(t=>t.text).join("")}set text(t){this.fmt.runs=A(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 P{fmt;constructor(t){return super(),this.fmt=t,a(this,"ListLevel")}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))),B=()=>Array.from({length:9},()=>({})),x=()=>({paragraphs:[],levels:B()});export class TextFrame{def;constructor(t){return this.def=t,a(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
+ `)}set text(t){this.def.paragraphs=t.split(`
4
+ `).map(e=>({runs:A(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*v),...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;constructor(t,e,s="lt1"){return this.read=t,this.write=e,this.start=s,a(this,"FillFormat")}solid(){const t=this.read();t==null&&this.write(this.start)}background(){this.write(null)}get type(){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 LineFormat{def;constructor(t){return this.def=t,a(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,a(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,a(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 U={left:0,top:0,width:0,height:0};export class Shape{def;inherit;constructor(t,e=()=>{}){return this.def=t,this.inherit=e,a(this,"Shape")}get _def(){return this.def}_frame(){return this.def.frame??this.inherit()??U}_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 R(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})}get line(){return new LineFormat(this.def)}get adjustments(){return new Adjustments(this.def)}}const H=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(!H(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)}},X=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,a(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(o=>o.op==="close"?[]:o.op==="curve"?[[o.x1,o.y1],[o.x2,o.y2],[o.x,o.y]]:[[o.x,o.y]]),r=s.map(o=>o[0]),n=s.map(o=>o[1]),h=Math.min(...r),d=Math.min(...n),l=Math.max(...r)-h,f=Math.max(...n)-d,u=(o,g)=>({x:o-h,y:g-d});return this.make({w:l,h:f,steps:this.steps.map(o=>{if(o.op==="close")return o;if(o.op!=="curve")return{op:o.op,...u(o.x,o.y)};const g=u(o.x1,o.y1),b=u(o.x2,o.y2);return{op:"curve",x1:g.x,y1:g.y,x2:b.x,y2:b.y,...u(o.x,o.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,a(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,a(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,a(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,a(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,a(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 J(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,a(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:J(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(),...z}})}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: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){X.has(t)||m(`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)&&m("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&&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=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&&m(`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:O.line,line_width:O.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,a(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(M).includes(t)||m(`placeholders.add(): ${t} is not one of PP_PLACEHOLDER's ${Object.keys(M).join(", ")}`);const f=this.list.filter(w=>w.kind==="placeholder"),u=new Set(f.map(w=>w.placeholder?.idx));let o=t==="title"||t==="ctrTitle"?0:L[t]??1;for(;u.has(o)&&o!==0;)o++;if(u.has(o))throw new Error("A layout has one title placeholder (idx 0).");const g=d.name??NAME_OF_TYPE[t];if(this.list.some(w=>w.name===g))throw new Error(`Two shapes are ${g}: 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:g,kind:"placeholder",placeholder:{type:t,idx:o},...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,a(this,"SlideLayout")}get _def(){return this.def}inherit=t=>t.placeholder?T(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,a(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,a(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,a(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,a(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?T(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),a(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,a(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 Y{gen;constructor(t){return this.gen=t,a(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,a(this,"Generator")}data(t){return this.ctx.data(t)}get slides(){return new Y(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 Z=()=>JSON.parse(JSON.stringify(N));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},a(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:Z(),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 a({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 a({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}
@@ -0,0 +1,18 @@
1
+ export interface Capabilities {
2
+ reference: {
3
+ library: string;
4
+ version: string;
5
+ docs: string;
6
+ };
7
+ /** python-pptx's classes, each with the names of it the API holds. */
8
+ holds: Record<string, string[]>;
9
+ /** python-pptx's enumerations, each with the members held. */
10
+ enums: Record<string, string[]>;
11
+ units: string[];
12
+ /** Where a held name behaves differently from python-pptx's. */
13
+ differs: string[];
14
+ /** What the API adds, by class and name, and what each is. */
15
+ adds: Record<string, Record<string, string>>;
16
+ }
17
+ export declare const CAPABILITIES: Capabilities;
18
+ //# sourceMappingURL=capabilities.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{Animations as d,Background as l,Cell as p,ColorFormat as h,Column as m,FillFormat as y,Font as c,FreeformBuilder as _,GeneratedSlide as f,Generator as u,GroupShape as g,LineFormat as S,ListLevel as b,Paragraph as w,Placeholders as O,Presentation as L,Row as A,Run as P,Shape as E,ShapeCollection as x,SlideLayout as C,SlideLayouts as T,SlideMaster as M,SlideMasters as R,Table as v,TextFrame as k,TextStyles as I}from"./api.js";import{CategoryChartData as F,Chart as B,ChartAxis as G,ChartLegend as D,ChartPlot as H,ChartSeries as N,DataLabels as j}from"./chart-api.js";import{MSO_ANCHOR as W,MSO_ARROWHEAD as X,MSO_AUTO_SIZE as z,MSO_CONNECTOR as U,MSO_FILL as Y,MSO_LINE as Z,MSO_SHAPE as K,MSO_SHAPE_TYPE as q,MSO_THEME_COLOR as J,PP_ALIGN as Q,PP_PLACEHOLDER as V,THEME_FONT as $,XL_CHART_TYPE as ee,XL_LABEL_POSITION as te,XL_LEGEND_POSITION as ae}from"./enums.js";import{publicNames as o}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)."},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:{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, 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)."}},se={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."}},oe={Presentation:L.prototype,SlideMasters:R.prototype,SlideMaster:M.prototype,SlideLayouts:T.prototype,SlideLayout:C.prototype,Slide:f.prototype,placeholders:O.prototype,SlideShapes:x.prototype,Shape:E.prototype,TextFrame:k.prototype,_Paragraph:w.prototype,_Run:P.prototype,Font:c.prototype,ColorFormat:h.prototype,FillFormat:y.prototype,LineFormat:S.prototype,FreeformBuilder:_.prototype,GroupShape:g.prototype,Table:v.prototype,CategoryChartData:F.prototype,Chart:B.prototype,Plot:H.prototype,Series:N.prototype,DataLabels:j.prototype,Legend:D.prototype,Axis:G.prototype,_Cell:p.prototype,_Column:m.prototype,_Row:A.prototype,_Background:l.prototype},re={Animations:d.prototype,ListLevel:b.prototype,text_styles:I.prototype,Generator:u.prototype},ne=()=>{const e={};for(const[t,r]of Object.entries(oe)){const n=a[t]??{},i=se[t]??{};e[t]=o(r).filter(s=>!Object.hasOwn(n,s)&&!Object.hasOwn(i,s))}return e};export const CAPABILITIES={reference:{library:"python-pptx",version:"1.0.2",docs:"https://python-pptx.readthedocs.io/"},holds:ne(),enums:Object.fromEntries(Object.entries({MSO_THEME_COLOR:J,PP_ALIGN:Q,MSO_ANCHOR:W,MSO_AUTO_SIZE:z,PP_PLACEHOLDER:V,MSO_SHAPE:K,MSO_CONNECTOR:U,MSO_SHAPE_TYPE:q,MSO_FILL:Y,MSO_LINE:Z,XL_CHART_TYPE:ee,XL_LABEL_POSITION:te,XL_LEGEND_POSITION:ae,MSO_ARROWHEAD:X,THEME_FONT:$}).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 and doughnut types; it has no 3D, no scatter 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(re).map(([e,t])=>[e,{...a[e]??{},names:o(t).join(", ")}]))}};
@@ -0,0 +1,165 @@
1
+ import type { ChartLegendPosition, ChartType } from "@allyhub-next/formats";
2
+ import { ColorFormat, FillFormat } from "./api.js";
3
+ import type { ChartAxisDef, ChartDef, ChartLabelPosition, ChartLabelsDef, ChartSeriesDef } from "./chart.js";
4
+ import type { Color } from "./model.js";
5
+ import { type Length } from "./units.js";
6
+ /** The numbers a chart shows (python-pptx's `CategoryChartData`). */
7
+ export declare class CategoryChartData {
8
+ number_format: string;
9
+ private names;
10
+ private readonly list;
11
+ constructor(options?: {
12
+ number_format?: string;
13
+ });
14
+ get categories(): string[];
15
+ set categories(v: readonly (string | number)[]);
16
+ add_category(label: string | number): void;
17
+ add_series(name: string, values?: readonly (number | null | undefined)[], number_format?: string): void;
18
+ /** The series as a chart holds them. */
19
+ _series(): ChartSeriesDef[];
20
+ }
21
+ /** A chart's text, or its labels' (`font`). */
22
+ export declare class ChartFont {
23
+ private readonly read;
24
+ private readonly write;
25
+ constructor(read: () => {
26
+ size?: number;
27
+ color?: Color;
28
+ }, write: (v: {
29
+ size?: number;
30
+ color?: Color;
31
+ }) => void);
32
+ get size(): Length | undefined;
33
+ set size(v: Length | undefined);
34
+ get color(): ColorFormat;
35
+ }
36
+ /** A line's colour (`format.line`). */
37
+ export declare class ChartLine {
38
+ private readonly read;
39
+ private readonly write;
40
+ constructor(read: () => Color | undefined, write: (c: Color | undefined) => void);
41
+ get color(): ColorFormat;
42
+ }
43
+ /** A series (python-pptx's `BarSeries`, `LineSeries`…). */
44
+ export declare class ChartSeries {
45
+ private readonly def;
46
+ private readonly at;
47
+ constructor(def: ChartSeriesDef, at: number);
48
+ get name(): string;
49
+ get values(): readonly (number | null)[];
50
+ /** A marker's size in points (`marker.size`). */
51
+ get marker(): {
52
+ size: number | undefined;
53
+ };
54
+ get smooth(): boolean;
55
+ set smooth(v: boolean);
56
+ /** Its fill (`format.fill`), and its line's width (`format.line.width`); a line's or an area's colour is the fill's. */
57
+ get format(): {
58
+ fill: FillFormat;
59
+ line: {
60
+ width: Length | undefined;
61
+ };
62
+ };
63
+ }
64
+ /** Data labels (python-pptx's `DataLabels`). */
65
+ export declare class DataLabels {
66
+ private readonly def;
67
+ constructor(def: ChartLabelsDef);
68
+ get show_value(): boolean;
69
+ set show_value(v: boolean);
70
+ get show_percentage(): boolean;
71
+ set show_percentage(v: boolean);
72
+ get show_category_name(): boolean;
73
+ set show_category_name(v: boolean);
74
+ get show_series_name(): boolean;
75
+ set show_series_name(v: boolean);
76
+ get number_format(): string;
77
+ set number_format(v: string);
78
+ get position(): ChartLabelPosition | undefined;
79
+ set position(v: ChartLabelPosition | undefined);
80
+ get font(): ChartFont;
81
+ }
82
+ /** A chart's plot (python-pptx's `BarPlot`, `LinePlot`…). */
83
+ export declare class ChartPlot {
84
+ private readonly def;
85
+ constructor(def: ChartDef);
86
+ get categories(): readonly string[];
87
+ get series(): ChartSeries[];
88
+ get has_data_labels(): boolean;
89
+ set has_data_labels(v: boolean);
90
+ get data_labels(): DataLabels;
91
+ /** Between bars' groups, as a share of a bar's width, in %. */
92
+ get gap_width(): number;
93
+ set gap_width(v: number);
94
+ get overlap(): number;
95
+ set overlap(v: number);
96
+ get vary_by_categories(): boolean;
97
+ set vary_by_categories(v: boolean);
98
+ }
99
+ /** A chart's legend (python-pptx's `Legend`). */
100
+ export declare class ChartLegend {
101
+ private readonly def;
102
+ constructor(def: ChartDef);
103
+ get position(): ChartLegendPosition;
104
+ set position(v: ChartLegendPosition);
105
+ }
106
+ /** A chart's axis (python-pptx's `ValueAxis`, `CategoryAxis`). */
107
+ export declare class ChartAxis {
108
+ private readonly def;
109
+ constructor(def: ChartAxisDef);
110
+ get minimum_scale(): number | undefined;
111
+ set minimum_scale(v: number | undefined);
112
+ get maximum_scale(): number | undefined;
113
+ set maximum_scale(v: number | undefined);
114
+ get major_unit(): number | undefined;
115
+ set major_unit(v: number | undefined);
116
+ get has_major_gridlines(): boolean;
117
+ set has_major_gridlines(v: boolean);
118
+ get visible(): boolean;
119
+ set visible(v: boolean);
120
+ get reverse_order(): boolean;
121
+ set reverse_order(v: boolean);
122
+ /** Its tick labels' format (`tick_labels.number_format`). */
123
+ get tick_labels(): {
124
+ number_format: string;
125
+ };
126
+ /** Its gridlines' colour (`major_gridlines.format.line.color`). */
127
+ get major_gridlines(): {
128
+ format: {
129
+ line: ChartLine;
130
+ };
131
+ };
132
+ /** Its line's colour (`format.line.color`). */
133
+ get format(): {
134
+ line: ChartLine;
135
+ };
136
+ }
137
+ /** A chart (python-pptx's `Chart`), in its shape's `.chart`. */
138
+ export declare class Chart {
139
+ private readonly def;
140
+ constructor(def: ChartDef);
141
+ get chart_type(): ChartType;
142
+ get has_legend(): boolean;
143
+ set has_legend(v: boolean);
144
+ get legend(): ChartLegend;
145
+ get has_title(): boolean;
146
+ set has_title(v: boolean);
147
+ /** Its title (`chart_title.text_frame.text`, and `chart_title.font.size`). */
148
+ get chart_title(): {
149
+ text_frame: {
150
+ text: string;
151
+ };
152
+ font: {
153
+ size: Length | undefined;
154
+ };
155
+ };
156
+ /** Its text's size and colour. */
157
+ get font(): ChartFont;
158
+ get plots(): ChartPlot[];
159
+ get series(): ChartSeries[];
160
+ get value_axis(): ChartAxis;
161
+ get category_axis(): ChartAxis;
162
+ /** Other numbers, in its look. */
163
+ replace_data(chart_data: CategoryChartData): void;
164
+ }
165
+ //# sourceMappingURL=chart-api.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{ColorFormat as a,FillFormat as f}from"./api.js";import{accentOf as h,isRound as l}from"./chart.js";import{strict as i}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",i(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=[],r){this.list.push({name:e,values:t.map(d=>d??null),...r===void 0?{}:{number_format:r}})}_series(){return this.list.map(e=>({...e,values:[...e.values],number_format:e.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,i(this,"ChartFont")}get size(){const e=this.read().size;return e===void 0?void 0:n(e)}set size(e){const t=this.read(),r=u(e);this.write({...t.color===void 0?{}:{color:t.color},...r===void 0?{}:{size:r}})}get color(){return new a(()=>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,i(this,"ChartLine")}get color(){return new a(this.read,this.write)}}export class ChartSeries{def;at;constructor(e,t){return this.def=e,this.at=t,i(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 f(()=>this.def.color??h(this.at),t=>{t!==null&&(this.def.color=t)})}}}export class DataLabels{def;constructor(e){return this.def=e,i(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,i(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,i(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,i(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,i(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((r,d)=>{const o=t[d]?.color;return o===void 0?r:{...r,color:o}})}}
@@ -0,0 +1,11 @@
1
+ import type { ChartFile } from "@allyhub-next/formats";
2
+ import type { ChartDef } from "./chart.js";
3
+ export declare function chartOfFile(f: ChartFile, o: {
4
+ title: string | undefined;
5
+ /** The deck's folder. */
6
+ base: string;
7
+ /** A data file's content, from the deck's folder. */
8
+ rows: (path: string) => unknown;
9
+ problem: (message: string) => void;
10
+ }): ChartDef | undefined;
11
+ //# sourceMappingURL=chart-file.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{labelPositionsOf as y}from"./chart.js";import{colorOfFile as u,joinPath as z}from"./resolve.js";const v=e=>e&&{...e.min===void 0?{}:{minimum_scale:e.min},...e.max===void 0?{}:{maximum_scale:e.max},...e.major===void 0?{}:{major_unit:e.major},...e.gridlines===void 0?{}:{has_major_gridlines:e.gridlines},...e.visible===void 0?{}:{visible:e.visible},...e.format===void 0?{}:{number_format:e.format},...e.reverse===void 0?{}:{reverse_order:e.reverse},...e.gridline_color===void 0?{}:{gridline_color:u(e.gridline_color)},...e.line_color===void 0?{}:{line_color:u(e.line_color)}},x=e=>{if(!(e===void 0||e===!1))return e===!0?{show_value:!0}:{...e.value===void 0?{}:{show_value:e.value},...e.percentage===void 0?{}:{show_percentage:e.percentage},...e.category===void 0?{}:{show_category_name:e.category},...e.series===void 0?{}:{show_series_name:e.series},...e.format===void 0?{}:{number_format:e.format},...e.position===void 0?{}:{position:e.position},...e.size===void 0?{}:{size:e.size},...e.color===void 0?{}:{color:u(e.color)}}};function j(e){if(typeof e=="number")return Number.isFinite(e)?e:void 0;if(e==null)return null;if(typeof e!="string")return;const r=e.trim();if(r==="")return null;const s=Number(r);return Number.isFinite(s)?s:void 0}export function chartOfFile(e,r){const s=x(e.labels);let d,l;const c=n=>({...n.color===void 0?{}:{color:u(n.color)},...n.format===void 0?{}:{number_format:n.format},...n.smooth===void 0?{}:{smooth:n.smooth},...n.line_width===void 0?{}:{line_width:n.line_width},...n.marker_size===void 0?{}:{marker_size:n.marker_size}});if(e.data!==void 0){let n;try{n=r.rows(e.data)}catch(i){r.problem(`${e.data} cannot be read: ${i instanceof Error?i.message:String(i)}`);return}if(!Array.isArray(n)||n.length===0){r.problem(`${e.data} holds no rows.`);return}const t=n,a=e.categories;if(typeof a!="string"){r.problem("with data, categories names its column.");return}const p=Object.keys(t[0]??{}),_=[a,...e.series.map(i=>typeof i=="string"?i:i.name)].filter(i=>!p.includes(i));if(_.length>0){r.problem(`${e.data} has no column ${_.join(", ")} (it has ${p.join(", ")}).`);return}d=t.map(i=>{const o=i[a];return typeof o=="string"||typeof o=="number"?String(o):""}),l=e.series.map(i=>{const o=typeof i=="string"?i:i.name,w=t.map((h,$)=>{const b=j(h[o]);return b===void 0?(r.problem(`${String(e.data)} row ${String($+1)}: ${JSON.stringify(h[o])} in ${o} is not a number.`),null):b});return{name:o,values:w,...typeof i=="string"?{}:c(i)}})}else{if(typeof e.categories=="string"){r.problem("categories names a column, and there is no data to read.");return}d=e.categories;const n=[];for(const t of e.series){if(typeof t=="string"||!t.values){const a=typeof t=="string"?t:t.name;r.problem(`series ${a} has no values, and there is no data to read.`);return}t.values.length!==d.length&&r.problem(`series ${t.name} has ${String(t.values.length)} values for ${String(d.length)} categories.`),n.push({name:t.name,values:t.values,...c(t)})}l=n}const m=s?.position;m!==void 0&&!y(e.type).includes(m)&&r.problem(`a ${e.type} chart has no label position ${m}, which PowerPoint would repair (it has ${y(e.type).join(", ")||"none"}).`);const f=v(e.value_axis),g=v(e.category_axis);return{type:e.type,categories:d,series:l,...r.title===void 0?{}:{title:r.title},...e.legend===void 0?{}:{legend:e.legend},...s?{labels:s}:{},...e.gap_width===void 0?{}:{gap_width:e.gap_width},...e.overlap===void 0?{}:{overlap:e.overlap},...e.vary_by_categories===void 0?{}:{vary_by_categories:e.vary_by_categories},...e.hole_size===void 0?{}:{hole_size:e.hole_size},...f?{value_axis:f}:{},...g?{category_axis:g}:{},...e.size===void 0?{}:{font_size:e.size},...e.title_size===void 0?{}:{title_size:e.title_size},...e.color===void 0?{}:{font_color:u(e.color)},...e.data===void 0?{}:{source:z(r.base,e.data)}}}
@@ -0,0 +1,184 @@
1
+ import type { ChartLegendPosition, ChartType } from "@allyhub-next/formats";
2
+ import type { Color } from "./model.js";
3
+ /** Where a data label sits (`c:dLblPos`). */
4
+ export type ChartLabelPosition = "outEnd" | "inEnd" | "ctr" | "inBase" | "t" | "b" | "l" | "r" | "bestFit";
5
+ export interface ChartSeriesDef {
6
+ name: string;
7
+ /** One per category; null where there is none. */
8
+ values: (number | null)[];
9
+ /** Its values' format in the workbook (Excel's). */
10
+ number_format?: string;
11
+ /** Its colour; default the theme's accents, in turn. */
12
+ color?: Color;
13
+ /** A line's curve. */
14
+ smooth?: boolean;
15
+ /** A line's width in points. */
16
+ line_width?: number;
17
+ /** A marker's size in points. */
18
+ marker_size?: number;
19
+ }
20
+ export interface ChartAxisDef {
21
+ minimum_scale?: number;
22
+ maximum_scale?: number;
23
+ major_unit?: number;
24
+ has_major_gridlines?: boolean;
25
+ visible?: boolean;
26
+ /** Its tick labels' format (Excel's). */
27
+ number_format?: string;
28
+ /** Last category first. */
29
+ reverse_order?: boolean;
30
+ /** Its gridlines' colour. */
31
+ gridline_color?: Color;
32
+ /** Its line's colour. */
33
+ line_color?: Color;
34
+ }
35
+ export interface ChartLabelsDef {
36
+ show_value?: boolean;
37
+ show_percentage?: boolean;
38
+ show_category_name?: boolean;
39
+ show_series_name?: boolean;
40
+ number_format?: string;
41
+ position?: ChartLabelPosition;
42
+ /** Points. */
43
+ size?: number;
44
+ color?: Color;
45
+ }
46
+ /** A chart (`c:chartSpace`). */
47
+ export interface ChartDef {
48
+ type: ChartType;
49
+ categories: string[];
50
+ series: ChartSeriesDef[];
51
+ title?: string;
52
+ /** Where its legend is; absent: it has none. */
53
+ legend?: ChartLegendPosition;
54
+ /** Its data labels; absent: it has none. */
55
+ labels?: ChartLabelsDef;
56
+ /** Between bars' groups, as a share of a bar's width, in %. */
57
+ gap_width?: number;
58
+ /** Of one bar over the next, in %, from -100 to 100. */
59
+ overlap?: number;
60
+ /** A colour per category, as a pie has by default. */
61
+ vary_by_categories?: boolean;
62
+ /** A doughnut's hole, in % of its size. */
63
+ hole_size?: number;
64
+ value_axis?: ChartAxisDef;
65
+ category_axis?: ChartAxisDef;
66
+ /** Its text's size in points. */
67
+ font_size?: number;
68
+ /** Its title's size in points. */
69
+ title_size?: number;
70
+ font_color?: Color;
71
+ /** The project file its numbers came from. */
72
+ source?: string;
73
+ }
74
+ /** What a chart is drawn with unless it says otherwise. */
75
+ export declare const CHART_DEFAULTS: {
76
+ /** Points. */
77
+ readonly fontSize: 12;
78
+ /** A title's size over the chart's text. */
79
+ readonly titleScale: 1.2;
80
+ readonly gapWidth: 150;
81
+ readonly holeSize: 50;
82
+ /** Space round the chart, points. */
83
+ readonly margin: 6;
84
+ readonly gridline: "#D9D9D9";
85
+ readonly axisLine: "#BFBFBF";
86
+ /** A share of a letter's size: how wide a letter is taken to be. */
87
+ readonly letter: 0.55;
88
+ /** Line widths, points. */
89
+ readonly lineWidth: 2.25;
90
+ readonly gridWidth: 0.75;
91
+ /** A marker's size, points. */
92
+ readonly marker: 5;
93
+ };
94
+ export declare const accentOf: (i: number) => Color;
95
+ export declare const isBar: (t: ChartType) => boolean;
96
+ export declare const isHorizontal: (t: ChartType) => boolean;
97
+ export declare const isLine: (t: ChartType) => boolean;
98
+ export declare const isArea: (t: ChartType) => boolean;
99
+ export declare const isRound: (t: ChartType) => t is "pie" | "doughnut";
100
+ export declare const hasMarkers: (t: ChartType) => t is "line-markers";
101
+ export declare const groupingOf: (t: ChartType) => "clustered" | "stacked" | "percentStacked" | "standard";
102
+ /**
103
+ * Where each kind of chart can have its labels: PowerPoint repairs a file
104
+ * that names any other (a stacked bar's outside end), and an area or a
105
+ * doughnut names none.
106
+ */
107
+ export declare function labelPositionsOf(t: ChartType): readonly ChartLabelPosition[];
108
+ /** Where a chart's labels are: where it says if its kind can, else where this one draws them. */
109
+ export declare function labelPositionOf(c: Pick<ChartDef, "type" | "labels">): ChartLabelPosition | undefined;
110
+ /** Whether each category has its own colour. */
111
+ export declare const variesOf: (c: Pick<ChartDef, "type" | "vary_by_categories">) => boolean;
112
+ /**
113
+ * A number as an Excel format shows it, for the formats charts use: General,
114
+ * digits with or without thousands, percentages, and text before and after.
115
+ */
116
+ export declare function formatValue(value: number, code?: string): string;
117
+ export interface ChartScale {
118
+ min: number;
119
+ max: number;
120
+ major: number;
121
+ ticks: number[];
122
+ }
123
+ /**
124
+ * A value axis from the values it shows, as Excel's automatic one: zero is on
125
+ * it unless the values are close together, a step of 1, 2 or 5 of a power of
126
+ * ten that gives its length at least `room` per step, and 5 % of head room.
127
+ */
128
+ export declare function chartScale(low: number, high: number, length: number, room: number, axis?: ChartAxisDef): ChartScale;
129
+ export interface ChartBox {
130
+ x: number;
131
+ y: number;
132
+ width: number;
133
+ height: number;
134
+ color: Color;
135
+ series: number;
136
+ category: number;
137
+ }
138
+ export interface ChartStroke {
139
+ /** An SVG path. */
140
+ d: string;
141
+ color: Color;
142
+ width: number;
143
+ fill?: Color;
144
+ series?: number;
145
+ category?: number;
146
+ }
147
+ export interface ChartDot {
148
+ x: number;
149
+ y: number;
150
+ r: number;
151
+ color: Color;
152
+ }
153
+ export interface ChartWord {
154
+ /** Where it is anchored: its left, middle or right, at its vertical middle. */
155
+ x: number;
156
+ y: number;
157
+ text: string;
158
+ size: number;
159
+ anchor: "start" | "middle" | "end";
160
+ color: Color;
161
+ }
162
+ /** A chart as drawn, in points in its frame, back to front. */
163
+ export interface ChartDrawing {
164
+ grid: ChartStroke[];
165
+ /** Filled areas, bars and slices. */
166
+ shapes: ChartStroke[];
167
+ boxes: ChartBox[];
168
+ lines: ChartStroke[];
169
+ axes: ChartStroke[];
170
+ dots: ChartDot[];
171
+ /** Swatches of the legend. */
172
+ keys: ChartBox[];
173
+ words: ChartWord[];
174
+ /** Where the plot is. */
175
+ plot: {
176
+ x: number;
177
+ y: number;
178
+ width: number;
179
+ height: number;
180
+ };
181
+ }
182
+ /** A chart laid out in a frame of `width` × `height` points. */
183
+ export declare function chartDrawing(c: ChartDef, width: number, height: number): ChartDrawing;
184
+ //# sourceMappingURL=chart.d.ts.map
@@ -0,0 +1,2 @@
1
+ /*! AllyHub. Copyright (c) 2026 AllyHub, Inc. All rights reserved. Use is subject to LICENSE.md. */
2
+ export const CHART_DEFAULTS={fontSize:12,titleScale:1.2,gapWidth:150,holeSize:50,margin:6,gridline:"#D9D9D9",axisLine:"#BFBFBF",letter:.55,lineWidth:2.25,gridWidth:.75,marker:5};const xt=["accent1","accent2","accent3","accent4","accent5","accent6"];export const accentOf=t=>xt[t%xt.length]??"accent1",isBar=t=>t.startsWith("column")||t.startsWith("bar"),isHorizontal=t=>t.startsWith("bar"),isLine=t=>t.startsWith("line"),isArea=t=>t.startsWith("area"),isRound=t=>t==="pie"||t==="doughnut",hasMarkers=t=>t==="line-markers",groupingOf=t=>t.endsWith("-100")?"percentStacked":t.endsWith("-stacked")?"stacked":isBar(t)?"clustered":"standard";export function labelPositionsOf(t){return isArea(t)||t==="doughnut"?[]:t==="pie"?["bestFit","outEnd","inEnd","ctr"]:isLine(t)?["t","b","l","r","ctr"]:groupingOf(t)==="clustered"?["outEnd","inEnd","ctr","inBase"]:["inEnd","ctr","inBase"]}export function labelPositionOf(t){const f=labelPositionsOf(t.type),l=t.labels?.position;if(l!==void 0&&f.includes(l))return l;if(f.length!==0)return t.type==="pie"?"ctr":isLine(t.type)?"t":groupingOf(t.type)==="clustered"?"outEnd":"ctr"}export const variesOf=t=>t.vary_by_categories??isRound(t.type);export function formatValue(t,f="General"){const l=/^([^#0]*)(#,##)?([0#]*)(?:\.(0+))?(%?)(.*)$/u.exec(f.replaceAll('"',"").replaceAll("\\","")),a=l?.[3]??"";if(f==="General"||!l||a===""&&l[2]===void 0){const w=Number(t.toPrecision(10));return String(w)}const s=l[5]==="%",m=l[4]?.length??0,h=(s?t*100:t).toFixed(m),[o="",E]=h.replace("-","").split("."),M=l[2]===void 0?o:o.replace(/\B(?=(\d{3})+$)/gu,","),z=E===void 0?M:`${M}.${E}`;return`${t<0?"-":""}${l[1]??""}${z}${s?"%":""}${l[6]??""}`}const kt=[1,2,5,10];export function chartScale(t,f,l,a,s={}){const m=t>0&&(f-t)/f<.16666666666666666?t:Math.min(t,0),h=f<=0&&t<0?0:f,o=s.minimum_scale??m,E=s.maximum_scale??h,M=E>o?E-o:1,z=Math.max(1,Math.floor(l/a)),w=M/z,S=10**Math.floor(Math.log10(w)),O=s.major_unit??(kt.find(A=>A*S>=w)??10)*S,j=(A,R)=>Number((R(Number((A/O).toFixed(9)))*O).toPrecision(12)),K=h>0?h+M*.05:h===m?M:h,x=s.maximum_scale??j(K,Math.ceil),Z=m<0?m-M*.05:m,k=s.minimum_scale??j(Z,Math.floor),B=[],C=Math.round((x-k)/O);for(let A=0;A<=C;A++)B.push(Number((k+A*O).toPrecision(12)));return{min:k,max:x,major:O,ticks:B}}const rt=(t,f)=>{let l=0;for(const a of t)l+=(a.codePointAt(0)??0)>11903?1:CHART_DEFAULTS.letter;return l*f},u=t=>String(Number(t.toFixed(3)));function Et(t){const f=l=>t[Math.max(0,Math.min(t.length-1,l))]??[0,0];return t.map(([l,a],s)=>{if(s===0)return`M${u(l)} ${u(a)}`;const[m,h]=f(s-2),[o,E]=f(s-1),[M,z]=f(s+1),w=`${u(o+(l-m)/6)} ${u(E+(a-h)/6)}`,S=`${u(l-(M-o)/6)} ${u(a-(z-E)/6)}`;return`C${w} ${S} ${u(l)} ${u(a)}`}).join(" ")}const bt=t=>t.map(([f,l],a)=>`${a===0?"M":"L"}${u(f)} ${u(l)}`).join(" ");function Wt(t,f,l,a,s,m){const h=(z,w)=>`${u(t+z*Math.sin(w))} ${u(f-z*Math.cos(w))}`,o=m-s>=Math.PI*2?s+Math.PI*2-1e-4:m,E=o-s>Math.PI?1:0,M=`M${h(l,s)} A${u(l)} ${u(l)} 0 ${String(E)} 1 ${h(l,o)}`;return a<=0?`${M} L${u(t)} ${u(f)} Z`:`${M} L${h(a,o)} A${u(a)} ${u(a)} 0 ${String(E)} 0 ${h(a,s)} Z`}const it=(t,f,l,a,s)=>{const m=t.labels;if(!m)return"";const h=isRound(t.type),o=[];return m.show_series_name&&o.push(a.name),m.show_category_name&&o.push(s),(m.show_value??!(m.show_percentage??!1))&&o.push(formatValue(f,m.number_format??a.number_format)),m.show_percentage&&h&&o.push(formatValue(l,m.number_format??"0%")),o.join(", ")};export function chartDrawing(t,f,l){const a=CHART_DEFAULTS,s=t.font_size??a.fontSize,m=t.font_color??"dk1",h={grid:[],shapes:[],boxes:[],lines:[],axes:[],dots:[],keys:[],words:[],plot:{x:0,y:0,width:0,height:0}},o={left:a.margin,top:a.margin,right:f-a.margin,bottom:l-a.margin};if(t.title!==void 0&&t.title!==""){const e=t.title_size??s*a.titleScale;h.words.push({x:f/2,y:o.top+e*.7,text:t.title,size:e,anchor:"middle",color:m}),o.top+=e*1.6}const E=isRound(t.type),M=variesOf(t),z=(e,r)=>M?accentOf(r):t.series[e]?.color??accentOf(e);if(t.legend!==void 0){const e=M?t.categories:t.series.map(d=>d.name),r=s*.6,i=s*.4,n=s*1.5,p=e.map(d=>r+i+rt(d,s)),_=(d,g,b)=>{h.keys.push({x:g,y:b-r/2,width:r,height:r,color:M?accentOf(d):t.series[d]?.color??accentOf(d),series:M?0:d,category:M?d:0}),h.words.push({x:g+r+i,y:b,text:e[d]??"",size:s,anchor:"start",color:m})};if(t.legend==="top"||t.legend==="bottom"){const d=p.reduce((v,y)=>v+y,0)+s*(e.length-1),g=t.legend==="top"?o.top+n/2:o.bottom-n/2;let b=(f-d)/2;e.forEach((v,y)=>{_(y,b,g),b+=(p[y]??0)+s}),t.legend==="top"?o.top+=n:o.bottom-=n}else{const d=Math.max(0,...p),g=t.legend==="left"?o.left:o.right-d,b=(o.top+o.bottom-n*e.length)/2+n/2;e.forEach((v,y)=>{_(y,g,b+y*n)}),t.legend==="left"?o.left+=d+s:o.right-=d+s}}const w=t.labels,S=w?.size??s,O=w?.color??m,j=(e,r,i,n,p=O)=>{i!==""&&h.words.push({x:e,y:r,text:i,size:S,anchor:n,color:p})};if(E){const e=t.series[0],r=(e?.values??[]).map(b=>Math.max(0,b??0)),i=r.reduce((b,v)=>b+v,0),n=Math.max(0,Math.min(o.right-o.left,o.bottom-o.top)/2),p=(o.left+o.right)/2,_=(o.top+o.bottom)/2,d=t.type==="doughnut"?n*((t.hole_size??a.holeSize)/100):0;h.plot={x:p-n,y:_-n,width:n*2,height:n*2};let g=0;return r.forEach((b,v)=>{const y=i>0?b/i:0,N=g+y*Math.PI*2;if(y>0){h.shapes.push({d:Wt(p,_,n,d,g,N),color:"lt1",width:1,fill:z(0,v),series:0,category:v});const W=(g+N)/2,$=d>0?(n+d)/2:labelPositionOf(t)==="inEnd"?n*.85:n*.6;e&&j(p+$*Math.sin(W),_-$*Math.cos(W),it(t,b,y,e,t.categories[v]??""),"middle",w?.color??"lt1")}g=N}),h}const K=Math.max(1,t.categories.length),x=isHorizontal(t.type),Z=groupingOf(t.type),k=Z!=="clustered"&&Z!=="standard",B=Z==="percentStacked",C=t.series.map(e=>t.categories.map((r,i)=>e.values[i]??null)),A=t.categories.map((e,r)=>C.reduce((i,n)=>i+Math.abs(n[r]??0),0)),R=(e,r)=>{const i=C[e]?.[r];if(i==null)return null;const n=A[r]??0;return B?n>0?i/n:0:i};let I=0,U=0;if(t.categories.forEach((e,r)=>{let i=0,n=0;t.series.forEach((p,_)=>{const d=R(_,r)??0;k?d>=0?i+=d:n+=d:(i=Math.max(i,d),n=Math.min(n,d))}),U=Math.max(U,i),I=Math.min(I,n)}),!k){const e=C.flat().filter(r=>r!==null);e.length>0&&Math.min(...e)>0&&(I=Math.min(...e))}B&&(U=1,I=Math.min(I,0));const P=t.value_axis??{},et=t.category_axis??{},ot=P.number_format??(B?"0%":t.series[0]?.number_format??"General"),Mt=x?o.right-o.left:o.bottom-o.top,at=x?s*5:s*2.4,yt=chartScale(I,U,Mt,at,{...P,...B?{maximum_scale:P.maximum_scale??1}:{}}),$t=P.visible===!1?[]:yt.ticks.map(e=>formatValue(e,ot)),_t=Math.max(0,...$t.map(e=>rt(e,s))),Q=et.visible!==!1,ct=Q?Math.max(0,...t.categories.map(e=>rt(e,s))):0,F=s*.5,c=x?{x:o.left+(Q?ct+F:0),y:o.top,width:0,height:o.bottom-o.top-(P.visible===!1?0:s*1.2+F)}:{x:o.left+(P.visible===!1?0:_t+F),y:o.top,width:0,height:o.bottom-o.top-(Q?s*1.2+F:0)};c.width=o.right-c.x,h.plot=c;const L=chartScale(I,U,x?c.width:c.height,at,{...P,...B?{maximum_scale:P.maximum_scale??1}:{}}),lt=e=>(Math.min(L.max,Math.max(L.min,e))-L.min)/(L.max-L.min)*(x?c.width:c.height),D=e=>x?c.x+lt(e):c.y+c.height-lt(e),ht=isArea(t.type),dt=et.reverse_order===!0,ut=x?!dt:dt,nt=(x?c.height:c.width)/K,mt=ht?(x?c.height:c.width)/Math.max(1,K-1):nt,st=e=>{const r=ht?e*mt:(e+.5)*nt,i=x?c.height:c.width,n=ut?i-r:r;return(x?c.y:c.x)+n},ft=D(Math.max(L.min,Math.min(L.max,0)));for(const e of L.ticks){const r=D(e);(P.has_major_gridlines??!0)&&h.grid.push({d:x?`M${u(r)} ${u(c.y)} V${u(c.y+c.height)}`:`M${u(c.x)} ${u(r)} H${u(c.x+c.width)}`,color:P.gridline_color??{rgb:a.gridline},width:a.gridWidth}),P.visible!==!1&&h.words.push(x?{x:r,y:c.y+c.height+F+s*.6,text:formatValue(e,ot),size:s,anchor:"middle",color:m}:{x:c.x-F,y:r,text:formatValue(e,ot),size:s,anchor:"end",color:m})}if(h.axes.push({d:x?`M${u(ft)} ${u(c.y)} V${u(c.y+c.height)}`:`M${u(c.x)} ${u(ft)} H${u(c.x+c.width)}`,color:et.line_color??{rgb:a.axisLine},width:a.gridWidth}),Q){const e=x?s*1.3:ct+s,r=Math.max(1,Math.ceil(e/Math.max(1,mt)));t.categories.forEach((i,n)=>{if(n%r!==0)return;const p=st(n);h.words.push(x?{x:c.x-F,y:p,text:i,size:s,anchor:"end",color:m}:{x:p,y:c.y+c.height+F+s*.6,text:i,size:s,anchor:"middle",color:m})})}if(isBar(t.type)){const e=(t.gap_width??a.gapWidth)/100,r=k?1:t.series.length,i=k?1:(t.overlap??0)/100,n=nt/(Math.max(1,r-(r-1)*i)+e),p=n*(1-i),_=n+p*(r-1);t.categories.forEach((d,g)=>{const b=st(g);let v=0,y=0;t.series.forEach((N,W)=>{const $=R(W,g);if($===null)return;const X=k?$>=0?v:y:0,q=X+$;k&&($>=0?v=q:y=q);const H=D(X),G=D(q),Y=(k?b-n/2:b-_/2+W*p)+(x&&ut&&!k?_-n-2*W*p:0),wt=x?{x:Math.min(H,G),y:Y,width:Math.abs(G-H),height:n}:{x:Y,y:Math.min(H,G),width:n,height:Math.abs(G-H)};if(h.boxes.push({...wt,color:z(W,g),series:W,category:g}),!w)return;const pt=it(t,C[W]?.[g]??0,0,N,t.categories[g]??""),tt=labelPositionOf(t),T=S*.8,vt=$>=0?1:-1,gt=(J,V)=>tt==="ctr"?(J+V)/2:tt==="inBase"?J+(V>J?T:-T):tt==="inEnd"?V-(V>J?T:-T):V+(V>=J?T:-T);x?j(gt(H,G),Y+n/2,pt,tt==="outEnd"?vt>0?"start":"end":"middle"):j(Y+n/2,gt(H,G),pt,"middle")})})}else{const e=t.categories.map(()=>0),r=t.series.map((i,n)=>{const p=[],_=[];return t.categories.forEach((d,g)=>{const b=R(n,g);if(b===null)return;const v=k?e[g]??0:0,y=v+b;k&&(e[g]=y);const N=st(g),W=$=>x?[D($),N]:[N,D($)];if(p.push(W(y)),_.push(W(v)),isLine(t.type)&&w){const $=labelPositionOf(t),[X,q]=W(y);j(X+($==="r"?S:$==="l"?-S:0),q+($==="t"?-S:$==="b"?S:0),it(t,C[n]?.[g]??0,0,i,t.categories[g]??""),$==="r"?"start":$==="l"?"end":"middle")}}),{series:i,s:n,points:p,base:_}});for(const{series:i,s:n,points:p,base:_}of r){const d=i.color??accentOf(n);if(isArea(t.type)&&p.length>0)h.shapes.push({d:`${bt([...p,...[..._].reverse()])} Z`,color:d,width:0,fill:d,series:n});else if(p.length>0&&(h.lines.push({d:i.smooth===!0?Et(p):bt(p),color:d,width:i.line_width??a.lineWidth,series:n}),hasMarkers(t.type)))for(const[g,b]of p)h.dots.push({x:g,y:b,r:(i.marker_size??a.marker)/2,color:d})}h.shapes.reverse()}return h}
@@ -0,0 +1,7 @@
1
+ import type { DeckProblem, ResolvedDeck } from "./resolve.js";
2
+ export interface DeckProject {
3
+ /** A media file's kind (`image`, `video`, `audio`) by its project path; undefined when it is not in the project. */
4
+ mediaKind: (path: string) => string | undefined;
5
+ }
6
+ export declare function checkDeck(deck: ResolvedDeck, project: DeckProject): DeckProblem[];
7
+ //# sourceMappingURL=check.d.ts.map
@@ -0,0 +1,2 @@
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}