ooxml-core 1.13.0 → 1.15.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 (644) hide show
  1. package/dist/PptxHandler-OGLITB3F.cjs +12 -0
  2. package/dist/{PptxHandler-FIN6XDTI.mjs → PptxHandler-R5BVKEBW.mjs} +3 -3
  3. package/dist/PptxHandler-UKAA5T5U.mjs +3 -0
  4. package/dist/PresentationBuilder-4AF3PZHG.cjs +20 -0
  5. package/dist/PresentationBuilder-54QGEZ2F.mjs +3 -0
  6. package/dist/PresentationBuilder-W67DIJBV.mjs +7 -0
  7. package/dist/automation/docx.d.ts +18 -0
  8. package/dist/automation/docx.d.ts.map +1 -1
  9. package/dist/automation/index.cjs +21297 -8338
  10. package/dist/automation/index.d.ts +1 -0
  11. package/dist/automation/index.d.ts.map +1 -1
  12. package/dist/automation/index.mjs +21294 -8339
  13. package/dist/automation/node.cjs +66 -6
  14. package/dist/automation/node.d.ts +10 -0
  15. package/dist/automation/node.d.ts.map +1 -1
  16. package/dist/automation/node.mjs +67 -7
  17. package/dist/automation/outline.d.ts +29 -0
  18. package/dist/automation/outline.d.ts.map +1 -0
  19. package/dist/automation/xlsx.d.ts +21 -0
  20. package/dist/automation/xlsx.d.ts.map +1 -1
  21. package/dist/chart/auto-title.d.ts +31 -0
  22. package/dist/chart/auto-title.d.ts.map +1 -0
  23. package/dist/chart/axis-format.d.ts +13 -0
  24. package/dist/chart/axis-format.d.ts.map +1 -0
  25. package/dist/chart/bubble-radius.d.ts +30 -0
  26. package/dist/chart/bubble-radius.d.ts.map +1 -0
  27. package/dist/chart/error-bar-amount.d.ts +22 -0
  28. package/dist/chart/error-bar-amount.d.ts.map +1 -0
  29. package/dist/chart/hierarchy.d.ts +69 -0
  30. package/dist/chart/hierarchy.d.ts.map +1 -0
  31. package/dist/chart/index.cjs +2377 -527
  32. package/dist/chart/index.d.ts +12 -0
  33. package/dist/chart/index.d.ts.map +1 -1
  34. package/dist/chart/index.mjs +2338 -528
  35. package/dist/chart/model-analysis.d.ts +66 -0
  36. package/dist/chart/model-analysis.d.ts.map +1 -0
  37. package/dist/chart/model-series.d.ts +5 -0
  38. package/dist/chart/model-series.d.ts.map +1 -1
  39. package/dist/chart/number-format-pattern.d.ts +35 -0
  40. package/dist/chart/number-format-pattern.d.ts.map +1 -0
  41. package/dist/chart/number-format.d.ts +21 -0
  42. package/dist/chart/number-format.d.ts.map +1 -0
  43. package/dist/chart/parse-analysis.d.ts +13 -0
  44. package/dist/chart/parse-analysis.d.ts.map +1 -0
  45. package/dist/chart/parse-series.d.ts +1 -1
  46. package/dist/chart/parse-series.d.ts.map +1 -1
  47. package/dist/chart/parse-util.d.ts +2 -0
  48. package/dist/chart/parse-util.d.ts.map +1 -1
  49. package/dist/chart/render/chart-svg-analysis.d.ts +7 -0
  50. package/dist/chart/render/chart-svg-analysis.d.ts.map +1 -0
  51. package/dist/chart/render/chart-svg-bars.d.ts +5 -0
  52. package/dist/chart/render/chart-svg-bars.d.ts.map +1 -1
  53. package/dist/chart/render/chart-svg-cartesian.d.ts +7 -2
  54. package/dist/chart/render/chart-svg-cartesian.d.ts.map +1 -1
  55. package/dist/chart/render/chart-svg-hierarchy.d.ts +5 -0
  56. package/dist/chart/render/chart-svg-hierarchy.d.ts.map +1 -0
  57. package/dist/chart/render/chart-svg-plots.d.ts +5 -0
  58. package/dist/chart/render/chart-svg-plots.d.ts.map +1 -0
  59. package/dist/chart/render/chart-svg-stock.d.ts +4 -0
  60. package/dist/chart/render/chart-svg-stock.d.ts.map +1 -0
  61. package/dist/chart/render/chart-svg-waterfall.d.ts +4 -0
  62. package/dist/chart/render/chart-svg-waterfall.d.ts.map +1 -0
  63. package/dist/chart/render/chart-svg-xy.d.ts +4 -0
  64. package/dist/chart/render/chart-svg-xy.d.ts.map +1 -0
  65. package/dist/chart/render/chart-svg.d.ts +1 -1
  66. package/dist/chart/render/chart-svg.d.ts.map +1 -1
  67. package/dist/chart/render/chart-value-axis.d.ts +6 -1
  68. package/dist/chart/render/chart-value-axis.d.ts.map +1 -1
  69. package/dist/chart/render/chart-view-analysis.d.ts +30 -0
  70. package/dist/chart/render/chart-view-analysis.d.ts.map +1 -0
  71. package/dist/chart/render/chart-view-ex.d.ts +24 -0
  72. package/dist/chart/render/chart-view-ex.d.ts.map +1 -0
  73. package/dist/chart/render/chart-view-families.d.ts +10 -0
  74. package/dist/chart/render/chart-view-families.d.ts.map +1 -0
  75. package/dist/chart/render/chart-view-series.d.ts +36 -0
  76. package/dist/chart/render/chart-view-series.d.ts.map +1 -0
  77. package/dist/chart/render/chart-view-stock.d.ts +23 -0
  78. package/dist/chart/render/chart-view-stock.d.ts.map +1 -0
  79. package/dist/chart/render/chart-view.d.ts +49 -18
  80. package/dist/chart/render/chart-view.d.ts.map +1 -1
  81. package/dist/chart/render/index.d.ts +2 -0
  82. package/dist/chart/render/index.d.ts.map +1 -1
  83. package/dist/chart/render/render-space.d.ts +6 -1
  84. package/dist/chart/render/render-space.d.ts.map +1 -1
  85. package/dist/chart/render/summary-analysis.d.ts +11 -0
  86. package/dist/chart/render/summary-analysis.d.ts.map +1 -0
  87. package/dist/chart/render/summary-from-chartex.d.ts +11 -0
  88. package/dist/chart/render/summary-from-chartex.d.ts.map +1 -0
  89. package/dist/chart/render/summary-from-space.d.ts.map +1 -1
  90. package/dist/chart/render/summary.d.ts +86 -3
  91. package/dist/chart/render/summary.d.ts.map +1 -1
  92. package/dist/chart/stock-candles.d.ts +72 -0
  93. package/dist/chart/stock-candles.d.ts.map +1 -0
  94. package/dist/chart/style-palette.d.ts +29 -0
  95. package/dist/chart/style-palette.d.ts.map +1 -0
  96. package/dist/chart/sunburst-arcs.d.ts +41 -0
  97. package/dist/chart/sunburst-arcs.d.ts.map +1 -0
  98. package/dist/chart/trendline-fit.d.ts +39 -0
  99. package/dist/chart/trendline-fit.d.ts.map +1 -0
  100. package/dist/chart/waterfall.d.ts +31 -0
  101. package/dist/chart/waterfall.d.ts.map +1 -0
  102. package/dist/chart/write-analysis.d.ts +12 -0
  103. package/dist/chart/write-analysis.d.ts.map +1 -0
  104. package/dist/chart/write-series.d.ts.map +1 -1
  105. package/dist/{chunk-UAY26XOI.mjs → chunk-2EBMHIGJ.mjs} +1303 -994
  106. package/dist/{chunk-O6NIA4NG.mjs → chunk-7ZIZFJXT.mjs} +7392 -6581
  107. package/dist/{chunk-6DELVMYB.mjs → chunk-EMZIHAOH.mjs} +20558 -19733
  108. package/dist/{chunk-TVE6UIJF.mjs → chunk-HU36GIYM.mjs} +691 -208
  109. package/dist/{chunk-H2FRDUNV.mjs → chunk-JFMIPOPV.mjs} +868 -585
  110. package/dist/chunk-M4XLF4R7.mjs +387 -0
  111. package/dist/{chunk-G5PQKHCG.mjs → chunk-NWAQEXBK.mjs} +1 -1
  112. package/dist/{chunk-B2JBBAEQ.mjs → chunk-OPBZBSJF.mjs} +1 -1
  113. package/dist/{chunk-7QZGRB3T.cjs → chunk-X7MGZQ6C.cjs} +1321 -995
  114. package/dist/{chunk-IT3U6QD6.cjs → chunk-ZWI7MTLF.cjs} +11275 -10461
  115. package/dist/crypto/decrypt.d.ts +17 -3
  116. package/dist/crypto/decrypt.d.ts.map +1 -1
  117. package/dist/crypto/encryption-info.d.ts.map +1 -1
  118. package/dist/crypto/index.cjs +252 -78
  119. package/dist/crypto/index.d.ts +19 -4
  120. package/dist/crypto/index.d.ts.map +1 -1
  121. package/dist/crypto/index.mjs +252 -79
  122. package/dist/crypto/key-derivation.d.ts +2 -3
  123. package/dist/crypto/key-derivation.d.ts.map +1 -1
  124. package/dist/crypto/validate.d.ts +22 -0
  125. package/dist/crypto/validate.d.ts.map +1 -0
  126. package/dist/diagram/engine/layout-def-parse.d.ts.map +1 -1
  127. package/dist/diagram/engine/pres-tree.d.ts.map +1 -1
  128. package/dist/diagram/index.cjs +102 -52
  129. package/dist/diagram/index.mjs +102 -52
  130. package/dist/digest/index.cjs +23 -11
  131. package/dist/digest/index.d.ts +2 -1
  132. package/dist/digest/index.d.ts.map +1 -1
  133. package/dist/digest/index.mjs +21 -12
  134. package/dist/digest/password-hash.d.ts +19 -5
  135. package/dist/digest/password-hash.d.ts.map +1 -1
  136. package/dist/digest/timing-safe.d.ts +7 -0
  137. package/dist/digest/timing-safe.d.ts.map +1 -0
  138. package/dist/docx/block-parser.d.ts.map +1 -1
  139. package/dist/docx/chart-paint.d.ts.map +1 -1
  140. package/dist/docx/chart.d.ts +10 -2
  141. package/dist/docx/chart.d.ts.map +1 -1
  142. package/dist/docx/content-control-edit.d.ts +26 -0
  143. package/dist/docx/content-control-edit.d.ts.map +1 -0
  144. package/dist/docx/content-control-model.d.ts +51 -0
  145. package/dist/docx/content-control-model.d.ts.map +1 -0
  146. package/dist/docx/content-control.d.ts +9 -0
  147. package/dist/docx/content-control.d.ts.map +1 -0
  148. package/dist/docx/default-styles.d.ts.map +1 -1
  149. package/dist/docx/drawing.d.ts.map +1 -1
  150. package/dist/docx/embedded.cjs +9932 -935
  151. package/dist/docx/embedded.mjs +9932 -935
  152. package/dist/docx/equation.d.ts +7 -3
  153. package/dist/docx/equation.d.ts.map +1 -1
  154. package/dist/docx/index.cjs +14117 -1513
  155. package/dist/docx/index.d.ts +6 -0
  156. package/dist/docx/index.d.ts.map +1 -1
  157. package/dist/docx/index.mjs +14093 -1514
  158. package/dist/docx/inline-model.d.ts +3 -0
  159. package/dist/docx/inline-model.d.ts.map +1 -1
  160. package/dist/docx/layout/adapt-floats.d.ts +3 -3
  161. package/dist/docx/layout/adapt-floats.d.ts.map +1 -1
  162. package/dist/docx/layout/adapter.d.ts.map +1 -1
  163. package/dist/docx/layout/equation-object.d.ts +7 -0
  164. package/dist/docx/layout/equation-object.d.ts.map +1 -0
  165. package/dist/docx/layout/floats.d.ts +8 -0
  166. package/dist/docx/layout/floats.d.ts.map +1 -1
  167. package/dist/docx/layout/incremental-layout.d.ts +39 -0
  168. package/dist/docx/layout/incremental-layout.d.ts.map +1 -0
  169. package/dist/docx/layout/index.cjs +14177 -1707
  170. package/dist/docx/layout/index.d.ts +2 -2
  171. package/dist/docx/layout/index.d.ts.map +1 -1
  172. package/dist/docx/layout/index.mjs +14176 -1708
  173. package/dist/docx/layout/input.d.ts +4 -0
  174. package/dist/docx/layout/input.d.ts.map +1 -1
  175. package/dist/docx/layout/layout-session.d.ts +13 -2
  176. package/dist/docx/layout/layout-session.d.ts.map +1 -1
  177. package/dist/docx/layout/layout.d.ts +1 -1
  178. package/dist/docx/layout/layout.d.ts.map +1 -1
  179. package/dist/docx/layout/line-metrics.d.ts.map +1 -1
  180. package/dist/docx/layout/page-cursor.d.ts +1 -1
  181. package/dist/docx/layout/page-cursor.d.ts.map +1 -1
  182. package/dist/docx/layout/page-fields.d.ts +3 -1
  183. package/dist/docx/layout/page-fields.d.ts.map +1 -1
  184. package/dist/docx/layout/result.d.ts +14 -1
  185. package/dist/docx/layout/result.d.ts.map +1 -1
  186. package/dist/docx/layout/section-flow.d.ts +11 -1
  187. package/dist/docx/layout/section-flow.d.ts.map +1 -1
  188. package/dist/docx/ligatures.d.ts +2 -0
  189. package/dist/docx/ligatures.d.ts.map +1 -1
  190. package/dist/docx/load/index.cjs +12709 -3590
  191. package/dist/docx/load/index.mjs +12709 -3590
  192. package/dist/docx/model-paragraph.d.ts +3 -0
  193. package/dist/docx/model-paragraph.d.ts.map +1 -1
  194. package/dist/docx/model-run.d.ts +3 -0
  195. package/dist/docx/model-run.d.ts.map +1 -1
  196. package/dist/docx/model.d.ts +3 -0
  197. package/dist/docx/model.d.ts.map +1 -1
  198. package/dist/docx/numbering-parse.d.ts.map +1 -1
  199. package/dist/docx/numbering-text.d.ts.map +1 -1
  200. package/dist/docx/package-limits.d.ts +6 -0
  201. package/dist/docx/package-limits.d.ts.map +1 -0
  202. package/dist/docx/parse-content-control.d.ts +28 -0
  203. package/dist/docx/parse-content-control.d.ts.map +1 -0
  204. package/dist/docx/parse-table.d.ts.map +1 -1
  205. package/dist/docx/parse.d.ts.map +1 -1
  206. package/dist/docx/save.d.ts.map +1 -1
  207. package/dist/docx/shape-model.d.ts +31 -0
  208. package/dist/docx/shape-model.d.ts.map +1 -0
  209. package/dist/docx/shape-palette.d.ts +19 -0
  210. package/dist/docx/shape-palette.d.ts.map +1 -0
  211. package/dist/docx/shape-parse.d.ts +16 -0
  212. package/dist/docx/shape-parse.d.ts.map +1 -0
  213. package/dist/docx/shape-svg.d.ts +20 -0
  214. package/dist/docx/shape-svg.d.ts.map +1 -0
  215. package/dist/docx/table-model.d.ts +4 -0
  216. package/dist/docx/table-model.d.ts.map +1 -1
  217. package/dist/docx/ui/content-control-commands.d.ts +37 -0
  218. package/dist/docx/ui/content-control-commands.d.ts.map +1 -0
  219. package/dist/docx/ui/content-control-guard.d.ts +8 -0
  220. package/dist/docx/ui/content-control-guard.d.ts.map +1 -0
  221. package/dist/docx/ui/content-control-spans.d.ts +19 -0
  222. package/dist/docx/ui/content-control-spans.d.ts.map +1 -0
  223. package/dist/docx/ui/index.cjs +3132 -506
  224. package/dist/docx/ui/index.d.ts +3 -0
  225. package/dist/docx/ui/index.d.ts.map +1 -1
  226. package/dist/docx/ui/index.mjs +3117 -507
  227. package/dist/docx/ui/inline-content-schema.d.ts.map +1 -1
  228. package/dist/docx/ui/paragraph-attributes.d.ts.map +1 -1
  229. package/dist/docx/ui/ribbon-action-ids.d.ts +1 -1
  230. package/dist/docx/ui/ribbon-action-ids.d.ts.map +1 -1
  231. package/dist/docx/ui/run-adapter.d.ts.map +1 -1
  232. package/dist/docx/ui/run-compare.d.ts.map +1 -1
  233. package/dist/docx/ui/run-mark-properties.d.ts.map +1 -1
  234. package/dist/docx/ui/run-marks.d.ts.map +1 -1
  235. package/dist/docx/ui/schema-marks.d.ts +16 -1
  236. package/dist/docx/ui/schema-marks.d.ts.map +1 -1
  237. package/dist/docx/ui/table-structure-guard.d.ts.map +1 -1
  238. package/dist/docx/write-block-placement.d.ts +9 -0
  239. package/dist/docx/write-block-placement.d.ts.map +1 -0
  240. package/dist/docx/write-content-control.d.ts +12 -0
  241. package/dist/docx/write-content-control.d.ts.map +1 -0
  242. package/dist/docx/write-drawing.d.ts +2 -0
  243. package/dist/docx/write-drawing.d.ts.map +1 -1
  244. package/dist/docx/write-inline.d.ts.map +1 -1
  245. package/dist/docx/write-paragraph.d.ts.map +1 -1
  246. package/dist/docx/write-shape.d.ts +16 -0
  247. package/dist/docx/write-shape.d.ts.map +1 -0
  248. package/dist/docx/write-table.d.ts.map +1 -1
  249. package/dist/docx/write.d.ts.map +1 -1
  250. package/dist/drawingml/index.cjs +24 -0
  251. package/dist/drawingml/index.mjs +24 -0
  252. package/dist/geometry/index.cjs +322 -48
  253. package/dist/geometry/index.d.ts +1 -0
  254. package/dist/geometry/index.d.ts.map +1 -1
  255. package/dist/geometry/index.mjs +318 -49
  256. package/dist/geometry/preset-shape-definitions-table.d.ts.map +1 -1
  257. package/dist/geometry/shape-gallery-catalog.d.ts +32 -0
  258. package/dist/geometry/shape-gallery-catalog.d.ts.map +1 -0
  259. package/dist/index.cjs +4603 -1631
  260. package/dist/index.mjs +4603 -1631
  261. package/dist/math/equation-gallery.d.ts +10 -0
  262. package/dist/math/equation-gallery.d.ts.map +1 -0
  263. package/dist/math/index.cjs +777 -139
  264. package/dist/math/index.d.ts +3 -0
  265. package/dist/math/index.d.ts.map +1 -1
  266. package/dist/math/index.mjs +772 -140
  267. package/dist/math/latex-omml-siblings.d.ts.map +1 -1
  268. package/dist/math/latex-to-omml.d.ts.map +1 -1
  269. package/dist/math/omml-box-grouped.d.ts +9 -0
  270. package/dist/math/omml-box-grouped.d.ts.map +1 -0
  271. package/dist/math/omml-box-layout.d.ts +15 -0
  272. package/dist/math/omml-box-layout.d.ts.map +1 -0
  273. package/dist/math/omml-box-structures.d.ts +7 -0
  274. package/dist/math/omml-box-structures.d.ts.map +1 -0
  275. package/dist/math/omml-box.d.ts +85 -0
  276. package/dist/math/omml-box.d.ts.map +1 -0
  277. package/dist/math/omml-dom.d.ts.map +1 -1
  278. package/dist/math/omml-mathml-converters.d.ts.map +1 -1
  279. package/dist/math/omml-svg.d.ts +14 -0
  280. package/dist/math/omml-svg.d.ts.map +1 -0
  281. package/dist/math/omml-to-xml.d.ts +10 -0
  282. package/dist/math/omml-to-xml.d.ts.map +1 -0
  283. package/dist/opc/embedded-packages.d.ts.map +1 -1
  284. package/dist/opc/index.cjs +257 -22
  285. package/dist/opc/index.d.ts +1 -0
  286. package/dist/opc/index.d.ts.map +1 -1
  287. package/dist/opc/index.mjs +251 -23
  288. package/dist/opc/package.d.ts.map +1 -1
  289. package/dist/opc/signature/detection.d.ts +22 -6
  290. package/dist/opc/signature/detection.d.ts.map +1 -1
  291. package/dist/opc/signature/index.d.ts +1 -1
  292. package/dist/opc/signature/index.d.ts.map +1 -1
  293. package/dist/opc/signature/xml-utils.d.ts.map +1 -1
  294. package/dist/opc/zip-limits.d.ts +52 -0
  295. package/dist/opc/zip-limits.d.ts.map +1 -0
  296. package/dist/pptx/automation/index.cjs +3232 -1916
  297. package/dist/pptx/automation/index.d.ts +4 -4
  298. package/dist/pptx/automation/index.mjs +6 -6
  299. package/dist/pptx/chunks/{elements-DmbzOhFu.d.ts → elements-Cadkqht8.d.ts} +162 -10
  300. package/dist/pptx/chunks/elements-Cadkqht8.d.ts.map +1 -0
  301. package/dist/pptx/chunks/{index-BmvOxbsh.d.ts → index-CJI2EugA.d.ts} +27 -9
  302. package/dist/pptx/chunks/index-CJI2EugA.d.ts.map +1 -0
  303. package/dist/pptx/chunks/{index-Cija6Dih.d.ts → index-CozqpSPL.d.ts} +137 -5
  304. package/dist/pptx/chunks/index-CozqpSPL.d.ts.map +1 -0
  305. package/dist/pptx/chunks/inspection-status-DjiWd_Aa.d.ts.map +1 -1
  306. package/dist/pptx/chunks/{text-operations-sXxhsKDd.d.ts → text-operations-C3L9xrqx.d.ts} +2 -2
  307. package/dist/pptx/chunks/{text-operations-sXxhsKDd.d.ts.map → text-operations-C3L9xrqx.d.ts.map} +1 -1
  308. package/dist/pptx/cli/index.cjs +3156 -1848
  309. package/dist/pptx/cli/index.d.ts +1 -1
  310. package/dist/pptx/cli/index.mjs +5 -5
  311. package/dist/pptx/converter/index.cjs +87 -54
  312. package/dist/pptx/converter/index.d.ts +1 -1
  313. package/dist/pptx/converter/index.mjs +3 -3
  314. package/dist/pptx/editor/render/find-replace.cjs +14 -14
  315. package/dist/pptx/editor/render/find-replace.d.ts +2 -2
  316. package/dist/pptx/editor/render/find-replace.mjs +1 -1
  317. package/dist/pptx/editor/render/slide-operations.cjs +8 -8
  318. package/dist/pptx/editor/render/slide-operations.mjs +2 -2
  319. package/dist/pptx/editor/render/text-runs-style-patch.d.ts +1 -1
  320. package/dist/pptx/editor/render/text-style-scope.d.ts +1 -1
  321. package/dist/pptx/index.cjs +4105 -2075
  322. package/dist/pptx/index.d.ts +5 -5
  323. package/dist/pptx/index.mjs +6 -6
  324. package/dist/pptx/signature-node/index.cjs +342 -65
  325. package/dist/pptx/signature-node/index.d.ts +12 -1
  326. package/dist/pptx/signature-node/index.d.ts.map +1 -1
  327. package/dist/pptx/signature-node/index.mjs +112 -52
  328. package/dist/teams/activity-feed.d.ts +19 -0
  329. package/dist/teams/activity-feed.d.ts.map +1 -0
  330. package/dist/teams/activity-state.d.ts +12 -0
  331. package/dist/teams/activity-state.d.ts.map +1 -0
  332. package/dist/teams/activity.d.ts +52 -0
  333. package/dist/teams/activity.d.ts.map +1 -0
  334. package/dist/teams/calendar.d.ts +57 -0
  335. package/dist/teams/calendar.d.ts.map +1 -0
  336. package/dist/teams/chat-actions.d.ts +20 -0
  337. package/dist/teams/chat-actions.d.ts.map +1 -0
  338. package/dist/teams/chat-rooms.d.ts +42 -0
  339. package/dist/teams/chat-rooms.d.ts.map +1 -0
  340. package/dist/teams/chat-view.d.ts +56 -0
  341. package/dist/teams/chat-view.d.ts.map +1 -0
  342. package/dist/teams/chat.d.ts +19 -3
  343. package/dist/teams/chat.d.ts.map +1 -1
  344. package/dist/teams/chats.d.ts +52 -0
  345. package/dist/teams/chats.d.ts.map +1 -0
  346. package/dist/teams/ics-timezone.d.ts +17 -0
  347. package/dist/teams/ics-timezone.d.ts.map +1 -0
  348. package/dist/teams/ics.d.ts +20 -0
  349. package/dist/teams/ics.d.ts.map +1 -0
  350. package/dist/teams/index.cjs +7442 -3211
  351. package/dist/teams/index.d.ts +23 -0
  352. package/dist/teams/index.d.ts.map +1 -1
  353. package/dist/teams/index.mjs +7336 -3212
  354. package/dist/teams/meeting-actions.d.ts +31 -0
  355. package/dist/teams/meeting-actions.d.ts.map +1 -0
  356. package/dist/teams/meeting-exceptions.d.ts +28 -0
  357. package/dist/teams/meeting-exceptions.d.ts.map +1 -0
  358. package/dist/teams/meeting-reminders.d.ts +13 -0
  359. package/dist/teams/meeting-reminders.d.ts.map +1 -0
  360. package/dist/teams/meetings.d.ts +81 -0
  361. package/dist/teams/meetings.d.ts.map +1 -0
  362. package/dist/teams/mention-text.d.ts +11 -0
  363. package/dist/teams/mention-text.d.ts.map +1 -0
  364. package/dist/teams/mentions.d.ts +68 -0
  365. package/dist/teams/mentions.d.ts.map +1 -0
  366. package/dist/teams/model.d.ts +7 -0
  367. package/dist/teams/model.d.ts.map +1 -1
  368. package/dist/teams/notifications.d.ts +21 -0
  369. package/dist/teams/notifications.d.ts.map +1 -0
  370. package/dist/teams/recurrence-calendar.d.ts +41 -0
  371. package/dist/teams/recurrence-calendar.d.ts.map +1 -0
  372. package/dist/teams/recurrence.d.ts +18 -0
  373. package/dist/teams/recurrence.d.ts.map +1 -0
  374. package/dist/teams/roster.d.ts +12 -0
  375. package/dist/teams/roster.d.ts.map +1 -0
  376. package/dist/teams/server-config.d.ts +23 -2
  377. package/dist/teams/server-config.d.ts.map +1 -1
  378. package/dist/teams/server-session.d.ts +38 -0
  379. package/dist/teams/server-session.d.ts.map +1 -0
  380. package/dist/teams/shared-chat.d.ts +83 -0
  381. package/dist/teams/shared-chat.d.ts.map +1 -0
  382. package/dist/teams/store.d.ts +58 -4
  383. package/dist/teams/store.d.ts.map +1 -1
  384. package/dist/teams/sync-transport.d.ts +12 -0
  385. package/dist/teams/sync-transport.d.ts.map +1 -0
  386. package/dist/teams/time-zone.d.ts +32 -0
  387. package/dist/teams/time-zone.d.ts.map +1 -0
  388. package/dist/teams/view.d.ts +3 -0
  389. package/dist/teams/view.d.ts.map +1 -1
  390. package/dist/teams/workspace.d.ts +13 -2
  391. package/dist/teams/workspace.d.ts.map +1 -1
  392. package/dist/visio/edit-connector-follow.d.ts +15 -0
  393. package/dist/visio/edit-connector-follow.d.ts.map +1 -0
  394. package/dist/visio/edit-connector-obstacles.d.ts +9 -3
  395. package/dist/visio/edit-connector-obstacles.d.ts.map +1 -1
  396. package/dist/visio/edit-connector-reroute.d.ts.map +1 -1
  397. package/dist/visio/edit-connector.d.ts.map +1 -1
  398. package/dist/visio/edit-master-add.d.ts +37 -0
  399. package/dist/visio/edit-master-add.d.ts.map +1 -0
  400. package/dist/visio/edit-master-drop.d.ts +6 -0
  401. package/dist/visio/edit-master-drop.d.ts.map +1 -1
  402. package/dist/visio/edit-recalculate-index.d.ts +5 -0
  403. package/dist/visio/edit-recalculate-index.d.ts.map +1 -1
  404. package/dist/visio/edit-recalculate-values.d.ts.map +1 -1
  405. package/dist/visio/edit-stencil-connector-layout.d.ts +2 -0
  406. package/dist/visio/edit-stencil-connector-layout.d.ts.map +1 -1
  407. package/dist/visio/edit-stencil-connector.d.ts +1 -0
  408. package/dist/visio/edit-stencil-connector.d.ts.map +1 -1
  409. package/dist/visio/edit-stencil-import.d.ts +10 -0
  410. package/dist/visio/edit-stencil-import.d.ts.map +1 -0
  411. package/dist/visio/edit-stencil-line.d.ts +29 -0
  412. package/dist/visio/edit-stencil-line.d.ts.map +1 -0
  413. package/dist/visio/edit-stencil-master.d.ts +3 -8
  414. package/dist/visio/edit-stencil-master.d.ts.map +1 -1
  415. package/dist/visio/edit.d.ts.map +1 -1
  416. package/dist/visio/formula-evaluate.d.ts.map +1 -1
  417. package/dist/visio/formula-math-functions.d.ts +11 -0
  418. package/dist/visio/formula-math-functions.d.ts.map +1 -0
  419. package/dist/visio/formula-text-functions.d.ts +23 -0
  420. package/dist/visio/formula-text-functions.d.ts.map +1 -0
  421. package/dist/visio/formula.d.ts.map +1 -1
  422. package/dist/visio/index.cjs +2552 -1833
  423. package/dist/visio/index.d.ts +1 -0
  424. package/dist/visio/index.d.ts.map +1 -1
  425. package/dist/visio/index.mjs +2552 -1834
  426. package/dist/visio/parser.d.ts +6 -0
  427. package/dist/visio/parser.d.ts.map +1 -1
  428. package/dist/visio/stencil-file.d.ts +14 -0
  429. package/dist/visio/stencil-file.d.ts.map +1 -0
  430. package/dist/visio/ui/index.cjs +2398 -1679
  431. package/dist/visio/ui/index.mjs +2398 -1680
  432. package/dist/visio/ui/master-drop.d.ts +10 -0
  433. package/dist/visio/ui/master-drop.d.ts.map +1 -1
  434. package/dist/xlsx/edit/cell-values.d.ts.map +1 -1
  435. package/dist/xlsx/edit/clipboard-html-parse.d.ts +4 -0
  436. package/dist/xlsx/edit/clipboard-html-parse.d.ts.map +1 -1
  437. package/dist/xlsx/edit/data-table.d.ts +38 -0
  438. package/dist/xlsx/edit/data-table.d.ts.map +1 -0
  439. package/dist/xlsx/edit/drawings.d.ts.map +1 -1
  440. package/dist/xlsx/edit/goal-seek.d.ts +30 -0
  441. package/dist/xlsx/edit/goal-seek.d.ts.map +1 -0
  442. package/dist/xlsx/edit/goal-solver.d.ts +20 -0
  443. package/dist/xlsx/edit/goal-solver.d.ts.map +1 -0
  444. package/dist/xlsx/edit/history.d.ts +1 -1
  445. package/dist/xlsx/edit/history.d.ts.map +1 -1
  446. package/dist/xlsx/edit/index.d.ts +5 -0
  447. package/dist/xlsx/edit/index.d.ts.map +1 -1
  448. package/dist/xlsx/edit/input-text.d.ts.map +1 -1
  449. package/dist/xlsx/edit/pivots.d.ts +2 -1
  450. package/dist/xlsx/edit/pivots.d.ts.map +1 -1
  451. package/dist/xlsx/edit/scenarios.d.ts +41 -0
  452. package/dist/xlsx/edit/scenarios.d.ts.map +1 -0
  453. package/dist/xlsx/edit/session.d.ts.map +1 -1
  454. package/dist/xlsx/edit/slicers.d.ts +34 -0
  455. package/dist/xlsx/edit/slicers.d.ts.map +1 -0
  456. package/dist/xlsx/edit/table-edits.d.ts.map +1 -1
  457. package/dist/xlsx/edit/timelines.d.ts +26 -0
  458. package/dist/xlsx/edit/timelines.d.ts.map +1 -0
  459. package/dist/xlsx/edit/types.d.ts +39 -0
  460. package/dist/xlsx/edit/types.d.ts.map +1 -1
  461. package/dist/xlsx/formula/context.d.ts +13 -0
  462. package/dist/xlsx/formula/context.d.ts.map +1 -1
  463. package/dist/xlsx/formula/engine.d.ts.map +1 -1
  464. package/dist/xlsx/formula/evaluator.d.ts.map +1 -1
  465. package/dist/xlsx/formula/functions/helpers.d.ts +3 -2
  466. package/dist/xlsx/formula/functions/helpers.d.ts.map +1 -1
  467. package/dist/xlsx/formula/functions/text-regex.d.ts +8 -0
  468. package/dist/xlsx/formula/functions/text-regex.d.ts.map +1 -1
  469. package/dist/xlsx/formula/functions/text.d.ts.map +1 -1
  470. package/dist/xlsx/formula/functions/wildcard.d.ts +8 -0
  471. package/dist/xlsx/formula/functions/wildcard.d.ts.map +1 -0
  472. package/dist/xlsx/formula/values.d.ts +9 -0
  473. package/dist/xlsx/formula/values.d.ts.map +1 -1
  474. package/dist/xlsx/index.cjs +9203 -3496
  475. package/dist/xlsx/index.d.ts +1 -0
  476. package/dist/xlsx/index.d.ts.map +1 -1
  477. package/dist/xlsx/index.mjs +9117 -3496
  478. package/dist/xlsx/layout/chart-view.d.ts.map +1 -1
  479. package/dist/xlsx/layout/header-footer-edit.d.ts +16 -0
  480. package/dist/xlsx/layout/header-footer-edit.d.ts.map +1 -0
  481. package/dist/xlsx/layout/index.d.ts +3 -0
  482. package/dist/xlsx/layout/index.d.ts.map +1 -1
  483. package/dist/xlsx/layout/page-break-view.d.ts +39 -0
  484. package/dist/xlsx/layout/page-break-view.d.ts.map +1 -0
  485. package/dist/xlsx/layout/page-view.d.ts +69 -0
  486. package/dist/xlsx/layout/page-view.d.ts.map +1 -0
  487. package/dist/xlsx/layout/ref-evaluator.d.ts.map +1 -1
  488. package/dist/xlsx/load/index.cjs +4486 -1970
  489. package/dist/xlsx/load/index.mjs +4485 -1969
  490. package/dist/xlsx/model-pivots.d.ts +105 -6
  491. package/dist/xlsx/model-pivots.d.ts.map +1 -1
  492. package/dist/xlsx/model-slicers.d.ts +146 -0
  493. package/dist/xlsx/model-slicers.d.ts.map +1 -0
  494. package/dist/xlsx/model-whatif.d.ts +51 -0
  495. package/dist/xlsx/model-whatif.d.ts.map +1 -0
  496. package/dist/xlsx/model.d.ts +26 -1
  497. package/dist/xlsx/model.d.ts.map +1 -1
  498. package/dist/xlsx/pivot/admission.d.ts.map +1 -1
  499. package/dist/xlsx/pivot/aggregate.d.ts +18 -6
  500. package/dist/xlsx/pivot/aggregate.d.ts.map +1 -1
  501. package/dist/xlsx/pivot/axes.d.ts +11 -0
  502. package/dist/xlsx/pivot/axes.d.ts.map +1 -0
  503. package/dist/xlsx/pivot/cache-xml.d.ts.map +1 -1
  504. package/dist/xlsx/pivot/columns.d.ts +54 -0
  505. package/dist/xlsx/pivot/columns.d.ts.map +1 -0
  506. package/dist/xlsx/pivot/data.d.ts +9 -3
  507. package/dist/xlsx/pivot/data.d.ts.map +1 -1
  508. package/dist/xlsx/pivot/date-axes.d.ts +12 -0
  509. package/dist/xlsx/pivot/date-axes.d.ts.map +1 -0
  510. package/dist/xlsx/pivot/date-group-read.d.ts +11 -0
  511. package/dist/xlsx/pivot/date-group-read.d.ts.map +1 -0
  512. package/dist/xlsx/pivot/date-groups.d.ts +65 -0
  513. package/dist/xlsx/pivot/date-groups.d.ts.map +1 -0
  514. package/dist/xlsx/pivot/date-read.d.ts +10 -0
  515. package/dist/xlsx/pivot/date-read.d.ts.map +1 -0
  516. package/dist/xlsx/pivot/dates.d.ts +17 -0
  517. package/dist/xlsx/pivot/dates.d.ts.map +1 -0
  518. package/dist/xlsx/pivot/group-read.d.ts +9 -0
  519. package/dist/xlsx/pivot/group-read.d.ts.map +1 -0
  520. package/dist/xlsx/pivot/groups.d.ts +31 -0
  521. package/dist/xlsx/pivot/groups.d.ts.map +1 -0
  522. package/dist/xlsx/pivot/index.d.ts +8 -0
  523. package/dist/xlsx/pivot/index.d.ts.map +1 -1
  524. package/dist/xlsx/pivot/item-filters-read.d.ts +7 -0
  525. package/dist/xlsx/pivot/item-filters-read.d.ts.map +1 -0
  526. package/dist/xlsx/pivot/item-filters.d.ts +23 -0
  527. package/dist/xlsx/pivot/item-filters.d.ts.map +1 -0
  528. package/dist/xlsx/pivot/measures.d.ts +3 -8
  529. package/dist/xlsx/pivot/measures.d.ts.map +1 -1
  530. package/dist/xlsx/pivot/nested.d.ts +10 -0
  531. package/dist/xlsx/pivot/nested.d.ts.map +1 -0
  532. package/dist/xlsx/pivot/page-filter-admission.d.ts.map +1 -1
  533. package/dist/xlsx/pivot/page-filter.d.ts.map +1 -1
  534. package/dist/xlsx/pivot/read.d.ts +2 -1
  535. package/dist/xlsx/pivot/read.d.ts.map +1 -1
  536. package/dist/xlsx/pivot/subtotal-read.d.ts +9 -0
  537. package/dist/xlsx/pivot/subtotal-read.d.ts.map +1 -0
  538. package/dist/xlsx/pivot/subtotals.d.ts +28 -0
  539. package/dist/xlsx/pivot/subtotals.d.ts.map +1 -0
  540. package/dist/xlsx/pivot/table-xml.d.ts +1 -1
  541. package/dist/xlsx/pivot/table-xml.d.ts.map +1 -1
  542. package/dist/xlsx/pivot/values-axis.d.ts +9 -6
  543. package/dist/xlsx/pivot/values-axis.d.ts.map +1 -1
  544. package/dist/xlsx/read/chart-ex.d.ts +9 -0
  545. package/dist/xlsx/read/chart-ex.d.ts.map +1 -0
  546. package/dist/xlsx/read/chart.d.ts.map +1 -1
  547. package/dist/xlsx/read/drawing.d.ts.map +1 -1
  548. package/dist/xlsx/read/load.d.ts.map +1 -1
  549. package/dist/xlsx/read/package.d.ts +2 -1
  550. package/dist/xlsx/read/package.d.ts.map +1 -1
  551. package/dist/xlsx/read/scenarios.d.ts +4 -0
  552. package/dist/xlsx/read/scenarios.d.ts.map +1 -0
  553. package/dist/xlsx/read/sheet-data.d.ts.map +1 -1
  554. package/dist/xlsx/read/sheet-props.d.ts.map +1 -1
  555. package/dist/xlsx/read/tables.d.ts +3 -0
  556. package/dist/xlsx/read/tables.d.ts.map +1 -1
  557. package/dist/xlsx/read/worksheet.d.ts.map +1 -1
  558. package/dist/xlsx/slicer/book.d.ts +16 -0
  559. package/dist/xlsx/slicer/book.d.ts.map +1 -0
  560. package/dist/xlsx/slicer/frame.d.ts +14 -0
  561. package/dist/xlsx/slicer/frame.d.ts.map +1 -0
  562. package/dist/xlsx/slicer/index.d.ts +10 -0
  563. package/dist/xlsx/slicer/index.d.ts.map +1 -0
  564. package/dist/xlsx/slicer/items.d.ts +30 -0
  565. package/dist/xlsx/slicer/items.d.ts.map +1 -0
  566. package/dist/xlsx/slicer/layout.d.ts +67 -0
  567. package/dist/xlsx/slicer/layout.d.ts.map +1 -0
  568. package/dist/xlsx/slicer/read-slicers.d.ts +11 -0
  569. package/dist/xlsx/slicer/read-slicers.d.ts.map +1 -0
  570. package/dist/xlsx/slicer/read-timelines.d.ts +5 -0
  571. package/dist/xlsx/slicer/read-timelines.d.ts.map +1 -0
  572. package/dist/xlsx/slicer/read.d.ts +26 -0
  573. package/dist/xlsx/slicer/read.d.ts.map +1 -0
  574. package/dist/xlsx/slicer/select.d.ts +10 -0
  575. package/dist/xlsx/slicer/select.d.ts.map +1 -0
  576. package/dist/xlsx/slicer/styles.d.ts +36 -0
  577. package/dist/xlsx/slicer/styles.d.ts.map +1 -0
  578. package/dist/xlsx/slicer/table-filter.d.ts +28 -0
  579. package/dist/xlsx/slicer/table-filter.d.ts.map +1 -0
  580. package/dist/xlsx/slicer/timeline-periods.d.ts +35 -0
  581. package/dist/xlsx/slicer/timeline-periods.d.ts.map +1 -0
  582. package/dist/xlsx/slicer/timeline-view.d.ts +60 -0
  583. package/dist/xlsx/slicer/timeline-view.d.ts.map +1 -0
  584. package/dist/xlsx/slicer/write-plan.d.ts +31 -0
  585. package/dist/xlsx/slicer/write-plan.d.ts.map +1 -0
  586. package/dist/xlsx/slicer/write-timeline.d.ts +7 -0
  587. package/dist/xlsx/slicer/write-timeline.d.ts.map +1 -0
  588. package/dist/xlsx/slicer/write-xml.d.ts +17 -0
  589. package/dist/xlsx/slicer/write-xml.d.ts.map +1 -0
  590. package/dist/xlsx/ui/commands/i18n/index.d.ts.map +1 -1
  591. package/dist/xlsx/ui/commands/i18n/pivots.d.ts.map +1 -1
  592. package/dist/xlsx/ui/commands/i18n/print-layout.d.ts.map +1 -1
  593. package/dist/xlsx/ui/commands/i18n/slicers.d.ts +3 -0
  594. package/dist/xlsx/ui/commands/i18n/slicers.d.ts.map +1 -0
  595. package/dist/xlsx/ui/commands/i18n/what-if.d.ts +3 -0
  596. package/dist/xlsx/ui/commands/i18n/what-if.d.ts.map +1 -0
  597. package/dist/xlsx/ui/commands/icons.d.ts.map +1 -1
  598. package/dist/xlsx/ui/commands/slicers.d.ts +37 -0
  599. package/dist/xlsx/ui/commands/slicers.d.ts.map +1 -0
  600. package/dist/xlsx/ui/commands/what-if.d.ts +4 -0
  601. package/dist/xlsx/ui/commands/what-if.d.ts.map +1 -0
  602. package/dist/xlsx/ui/commands.d.ts +2 -0
  603. package/dist/xlsx/ui/commands.d.ts.map +1 -1
  604. package/dist/xlsx/ui/index.cjs +4142 -1570
  605. package/dist/xlsx/ui/index.d.ts +2 -0
  606. package/dist/xlsx/ui/index.d.ts.map +1 -1
  607. package/dist/xlsx/ui/index.mjs +4137 -1571
  608. package/dist/xlsx/ui/locales/de/shell.d.ts.map +1 -1
  609. package/dist/xlsx/ui/locales/en/shell.d.ts.map +1 -1
  610. package/dist/xlsx/ui/locales/es/shell.d.ts.map +1 -1
  611. package/dist/xlsx/ui/locales/fr/shell.d.ts.map +1 -1
  612. package/dist/xlsx/ui/locales/zh-CN/shell.d.ts.map +1 -1
  613. package/dist/xlsx/ui/ribbon/tabs/review-view.d.ts.map +1 -1
  614. package/dist/xlsx/write/carried-refs.d.ts.map +1 -1
  615. package/dist/xlsx/write/drawing.d.ts.map +1 -1
  616. package/dist/xlsx/write/package-writer.d.ts +2 -0
  617. package/dist/xlsx/write/package-writer.d.ts.map +1 -1
  618. package/dist/xlsx/write/save.d.ts.map +1 -1
  619. package/dist/xlsx/write/scenarios.d.ts +4 -0
  620. package/dist/xlsx/write/scenarios.d.ts.map +1 -0
  621. package/dist/xlsx/write/sheet-data.d.ts.map +1 -1
  622. package/dist/xlsx/write/sheet-parts.d.ts +1 -0
  623. package/dist/xlsx/write/sheet-parts.d.ts.map +1 -1
  624. package/dist/xlsx/write/sheet-props.d.ts.map +1 -1
  625. package/dist/xlsx/write/table-patch.d.ts.map +1 -1
  626. package/dist/xlsx/write/tables.d.ts.map +1 -1
  627. package/dist/xlsx/write/worksheet.d.ts.map +1 -1
  628. package/dist/xml/index.cjs +28 -0
  629. package/dist/xml/index.mjs +27 -1
  630. package/dist/xml/namespaces.d.ts +2 -0
  631. package/dist/xml/namespaces.d.ts.map +1 -1
  632. package/dist/xml/xml.d.ts +15 -0
  633. package/dist/xml/xml.d.ts.map +1 -1
  634. package/package.json +1 -1
  635. package/dist/PptxHandler-RWTOUCLC.mjs +0 -3
  636. package/dist/PptxHandler-UU4ZCT6H.cjs +0 -12
  637. package/dist/chunk-KBIJI6P5.mjs +0 -166
  638. package/dist/pptx/chunks/elements-DmbzOhFu.d.ts.map +0 -1
  639. package/dist/pptx/chunks/index-BmvOxbsh.d.ts.map +0 -1
  640. package/dist/pptx/chunks/index-Cija6Dih.d.ts.map +0 -1
  641. package/dist/xlsx/pivot/hierarchy-first.d.ts +0 -21
  642. package/dist/xlsx/pivot/hierarchy-first.d.ts.map +0 -1
  643. package/dist/xlsx/pivot/hierarchy.d.ts +0 -5
  644. package/dist/xlsx/pivot/hierarchy.d.ts.map +0 -1
@@ -79,13 +79,13 @@ function mergeSiblings(nodes) {
79
79
  for (const [key] of entries) {
80
80
  counts.set(key, (counts.get(key) ?? 0) + 1);
81
81
  }
82
- const ordered = {};
82
+ const ordered = /* @__PURE__ */ Object.create(null);
83
83
  for (const [position, [key, value]] of entries.entries()) {
84
84
  ordered[(counts.get(key) ?? 0) > 1 ? orderedXmlKey(key, position) : key] = value;
85
85
  }
86
86
  return ordered;
87
87
  }
88
- const result = {};
88
+ const result = /* @__PURE__ */ Object.create(null);
89
89
  for (const [key, value] of entries) {
90
90
  if (result[key]) {
91
91
  const existing = result[key];
@@ -338,7 +338,7 @@ var REVERSE_ESCAPE = {
338
338
  // math/latex-to-omml-constructs.ts
339
339
  function parseScriptArgs(ctx) {
340
340
  const args = { sub: [], sup: [], hasSub: false, hasSup: false };
341
- for (let round = 0; round < 2; round++) {
341
+ for (let round2 = 0; round2 < 2; round2++) {
342
342
  while (ctx.peek()?.type === "whitespace") {
343
343
  ctx.next();
344
344
  }
@@ -540,7 +540,7 @@ function readEnvName(ctx) {
540
540
  }
541
541
  function parseEnvBody(ctx) {
542
542
  const rows = [];
543
- let row = [];
543
+ let row2 = [];
544
544
  let cell = [];
545
545
  while (ctx.peek()) {
546
546
  const tok = ctx.peek();
@@ -551,15 +551,15 @@ function parseEnvBody(ctx) {
551
551
  }
552
552
  if (tok.type === "command" && tok.value === "\\\\") {
553
553
  ctx.next();
554
- row.push(cell);
555
- rows.push(row);
556
- row = [];
554
+ row2.push(cell);
555
+ rows.push(row2);
556
+ row2 = [];
557
557
  cell = [];
558
558
  continue;
559
559
  }
560
560
  if (tok.type === "text" && tok.value === "&") {
561
561
  ctx.next();
562
- row.push(cell);
562
+ row2.push(cell);
563
563
  cell = [];
564
564
  continue;
565
565
  }
@@ -568,9 +568,9 @@ function parseEnvBody(ctx) {
568
568
  cell.push(atom);
569
569
  }
570
570
  }
571
- if (cell.length > 0 || row.length > 0) {
572
- row.push(cell);
573
- rows.push(row);
571
+ if (cell.length > 0 || row2.length > 0) {
572
+ row2.push(cell);
573
+ rows.push(row2);
574
574
  }
575
575
  return rows;
576
576
  }
@@ -604,9 +604,9 @@ function parseEnvironment(ctx) {
604
604
  const rows = parseEnvBody(ctx);
605
605
  const matrixDelims = MATRIX_ENVS[name];
606
606
  if (matrixDelims) {
607
- const matrix = buildMatrix(ctx, rows);
607
+ const matrix2 = buildMatrix(ctx, rows);
608
608
  const [open, close] = matrixDelims;
609
- return open || close ? wrapDelimited(ctx, matrix, open, close) : matrix;
609
+ return open || close ? wrapDelimited(ctx, matrix2, open, close) : matrix2;
610
610
  }
611
611
  if (name === "cases") {
612
612
  return wrapDelimited(ctx, buildEqArr(ctx, rows), "{", "");
@@ -998,11 +998,11 @@ function matrixEnvFor(open, close) {
998
998
  });
999
999
  }
1000
1000
  function rowsToLatex(emit, rows) {
1001
- return rows.map((row) => emit.children(row)).join(" \\\\ ");
1001
+ return rows.map((row2) => emit.children(row2)).join(" \\\\ ");
1002
1002
  }
1003
1003
  function matrixToLatex(emit, node, env) {
1004
1004
  const rows = ensureArr(node["m:mr"]).map(
1005
- (row) => ensureArr(row["m:e"]).map((cell) => emit.children(cell)).join(" & ")
1005
+ (row2) => ensureArr(row2["m:e"]).map((cell) => emit.children(cell)).join(" & ")
1006
1006
  );
1007
1007
  return `\\begin{${env}}${rows.join(" \\\\ ")}\\end{${env}}`;
1008
1008
  }
@@ -1092,7 +1092,7 @@ function radicalToLatex(node) {
1092
1092
  function funcNameToLatex(fName) {
1093
1093
  const sole = soleChild(fName);
1094
1094
  let nameNode = null;
1095
- let scripts = "";
1095
+ let scripts2 = "";
1096
1096
  if (sole?.tag === "m:r") {
1097
1097
  nameNode = sole.node;
1098
1098
  } else if (sole && ["m:sSub", "m:sSup", "m:sSubSup", "m:limLow", "m:limUpp"].includes(sole.tag)) {
@@ -1101,7 +1101,7 @@ function funcNameToLatex(fName) {
1101
1101
  nameNode = inner.node;
1102
1102
  const sub = arg(sole.node, sole.tag === "m:limLow" ? "m:lim" : "m:sub");
1103
1103
  const sup = arg(sole.node, sole.tag === "m:limUpp" ? "m:lim" : "m:sup");
1104
- scripts = `${sub ? `_{${sub}}` : ""}${sup ? `^{${sup}}` : ""}`;
1104
+ scripts2 = `${sub ? `_{${sub}}` : ""}${sup ? `^{${sup}}` : ""}`;
1105
1105
  }
1106
1106
  }
1107
1107
  if (!nameNode) {
@@ -1109,7 +1109,7 @@ function funcNameToLatex(fName) {
1109
1109
  }
1110
1110
  const name = readRunText(nameNode).trim();
1111
1111
  const spelled = FUNC_NAMES.has(name) ? `\\${name}` : `\\operatorname{${escapeTextArgument(name)}}`;
1112
- return `${spelled}${scripts}`;
1112
+ return `${spelled}${scripts2}`;
1113
1113
  }
1114
1114
  function accentToLatex(node) {
1115
1115
  const raw = attrVal(childNode(childNode(node, "m:accPr"), "m:chr")) || "\u0302";
@@ -1217,14 +1217,27 @@ function convertOmmlToLatex(omml) {
1217
1217
  }
1218
1218
 
1219
1219
  // math/latex-to-omml.ts
1220
+ var MAX_NESTING_DEPTH = 512;
1220
1221
  var LatexParser = class {
1221
1222
  tokens;
1222
1223
  pos = 0;
1223
1224
  /** Set for one `parseAtom` call: the atom is a bare script argument and takes no scripts of its own. */
1224
1225
  bare = false;
1226
+ /** Current group nesting; bounded so hostile input cannot exhaust the call stack. */
1227
+ depth = 0;
1225
1228
  constructor(tokens) {
1226
1229
  this.tokens = tokens;
1227
1230
  }
1231
+ nest(parse) {
1232
+ if (++this.depth > MAX_NESTING_DEPTH) {
1233
+ throw new Error(`LaTeX nesting exceeds ${MAX_NESTING_DEPTH} levels`);
1234
+ }
1235
+ try {
1236
+ return parse();
1237
+ } finally {
1238
+ this.depth--;
1239
+ }
1240
+ }
1228
1241
  peek() {
1229
1242
  return this.tokens[this.pos];
1230
1243
  }
@@ -1239,6 +1252,9 @@ var LatexParser = class {
1239
1252
  return tok;
1240
1253
  }
1241
1254
  parseGroup() {
1255
+ return this.nest(() => this.readGroup());
1256
+ }
1257
+ readGroup() {
1242
1258
  this.expect("group_start");
1243
1259
  const nodes = [];
1244
1260
  while (this.peek() && this.peek().type !== "group_end") {
@@ -1262,6 +1278,9 @@ var LatexParser = class {
1262
1278
  }
1263
1279
  /** Parse atoms up to and including the closing brace of the current group. */
1264
1280
  parseGroupRest() {
1281
+ return this.nest(() => this.readGroupRest());
1282
+ }
1283
+ readGroupRest() {
1265
1284
  const nodes = [];
1266
1285
  while (this.peek() && this.peek().type !== "group_end") {
1267
1286
  const node = this.parseAtom();
@@ -1280,10 +1299,12 @@ var LatexParser = class {
1280
1299
  if (this.peek()?.type === "group_start") {
1281
1300
  return this.parseGroup();
1282
1301
  }
1283
- this.bare = true;
1284
- const atom = this.parseAtom();
1285
- this.bare = false;
1286
- return atom ? [atom] : [];
1302
+ return this.nest(() => {
1303
+ this.bare = true;
1304
+ const atom = this.parseAtom();
1305
+ this.bare = false;
1306
+ return atom ? [atom] : [];
1307
+ });
1287
1308
  }
1288
1309
  wrapE(nodes) {
1289
1310
  if (nodes.length === 1) {
@@ -1304,7 +1325,7 @@ var LatexParser = class {
1304
1325
  return null;
1305
1326
  }
1306
1327
  if (tok.type === "whitespace") {
1307
- this.next();
1328
+ while (this.peek()?.type === "whitespace") this.next();
1308
1329
  return this.parseAtom();
1309
1330
  }
1310
1331
  const bare = this.bare;
@@ -1382,70 +1403,6 @@ function convertLatexToOmml(latex) {
1382
1403
  };
1383
1404
  }
1384
1405
 
1385
- // math/omml-color.ts
1386
- function getOmmlMathColor(node) {
1387
- if (!node || typeof node !== "object") {
1388
- return void 0;
1389
- }
1390
- const drawingRunProperties = node["a:rPr"];
1391
- if (drawingRunProperties && typeof drawingRunProperties === "object") {
1392
- const solidFill = drawingRunProperties["a:solidFill"];
1393
- const srgbColor = solidFill && typeof solidFill === "object" ? solidFill["a:srgbClr"] : void 0;
1394
- const value = srgbColor?.["@_val"];
1395
- if (typeof value === "string" && /^[0-9a-f]{6}$/iu.test(value)) {
1396
- return `#${value.toUpperCase()}`;
1397
- }
1398
- }
1399
- for (const value of Object.values(node)) {
1400
- if (Array.isArray(value)) {
1401
- for (const child2 of value) {
1402
- if (child2 && typeof child2 === "object") {
1403
- const color = getOmmlMathColor(child2);
1404
- if (color) {
1405
- return color;
1406
- }
1407
- }
1408
- }
1409
- } else if (value && typeof value === "object") {
1410
- const color = getOmmlMathColor(value);
1411
- if (color) {
1412
- return color;
1413
- }
1414
- }
1415
- }
1416
- return void 0;
1417
- }
1418
- function getOmmlMathFontSize(node) {
1419
- if (!node || typeof node !== "object") {
1420
- return void 0;
1421
- }
1422
- const drawingRunProperties = node["a:rPr"];
1423
- if (drawingRunProperties && typeof drawingRunProperties === "object") {
1424
- const size = Number(drawingRunProperties["@_sz"]);
1425
- if (Number.isFinite(size) && size > 0) {
1426
- return size / 100;
1427
- }
1428
- }
1429
- for (const value of Object.values(node)) {
1430
- if (Array.isArray(value)) {
1431
- for (const child2 of value) {
1432
- if (child2 && typeof child2 === "object") {
1433
- const size = getOmmlMathFontSize(child2);
1434
- if (size) {
1435
- return size;
1436
- }
1437
- }
1438
- }
1439
- } else if (value && typeof value === "object") {
1440
- const size = getOmmlMathFontSize(value);
1441
- if (size) {
1442
- return size;
1443
- }
1444
- }
1445
- }
1446
- return void 0;
1447
- }
1448
-
1449
1406
  // math/omml-mathml-helpers.ts
1450
1407
  function child(node, key) {
1451
1408
  if (!node) {
@@ -1631,13 +1588,722 @@ var DELIM_END_MAP = {
1631
1588
  "\u230B": "\u230B"
1632
1589
  };
1633
1590
 
1591
+ // math/omml-to-xml.ts
1592
+ var OMML_NAMESPACE = "http://schemas.openxmlformats.org/officeDocument/2006/math";
1593
+ var escapeAttribute = (value) => escapeXml(value).replace(/"/g, "&quot;");
1594
+ function element(tag, value) {
1595
+ if (value === void 0 || value === null) return "";
1596
+ if (Array.isArray(value)) return value.map((item) => element(tag, item)).join("");
1597
+ if (typeof value !== "object") {
1598
+ const text = String(value);
1599
+ const space = tag === "m:t" && /^\s|\s$/.test(text) ? ' xml:space="preserve"' : "";
1600
+ return `<${tag}${space}>${escapeXml(text)}</${tag}>`;
1601
+ }
1602
+ const node = value;
1603
+ let attributes = "";
1604
+ let content = "";
1605
+ for (const key of Object.keys(node)) {
1606
+ if (key.startsWith("@_")) {
1607
+ attributes += ` ${tag === "m:t" ? "" : "m:"}${key.slice(2)}="${escapeAttribute(String(node[key]))}"`;
1608
+ } else if (key === "#text") {
1609
+ content += escapeXml(String(node[key]));
1610
+ } else content += element(stripXmlOrderSuffix(key), node[key]);
1611
+ }
1612
+ if (tag === "m:t" && /^\s|\s$/.test(content) && !attributes) attributes = ' xml:space="preserve"';
1613
+ return content ? `<${tag}${attributes}>${content}</${tag}>` : `<${tag}${attributes}/>`;
1614
+ }
1615
+ function ommlToXml(tree) {
1616
+ const markup = Object.keys(tree).map((key) => element(stripXmlOrderSuffix(key), tree[key])).join("");
1617
+ return markup.replace(/^<([\w:]+)/, `<$1 xmlns:m="${OMML_NAMESPACE}"`);
1618
+ }
1619
+ function latexToOmmlXml(latex, display) {
1620
+ const tree = convertLatexToOmml(latex);
1621
+ const para = tree["m:oMathPara"];
1622
+ const math = para?.["m:oMath"];
1623
+ if (!math) return void 0;
1624
+ return ommlToXml(display ? tree : { "m:oMath": math });
1625
+ }
1626
+
1627
+ // math/omml-box.ts
1628
+ var AXIS = 0.25;
1629
+ var emptyBox = () => ({ width: 0, ascent: 0, descent: 0, prims: [] });
1630
+ function scriptStyle(style) {
1631
+ return {
1632
+ ...style,
1633
+ level: style.level + 1,
1634
+ size: style.level >= 2 ? style.size : style.size * 0.7
1635
+ };
1636
+ }
1637
+ function shifted(prims, dx, dy) {
1638
+ return prims.map((prim) => {
1639
+ switch (prim.kind) {
1640
+ case "text":
1641
+ return { ...prim, x: prim.x + dx, y: prim.y + dy };
1642
+ case "line":
1643
+ return { ...prim, x1: prim.x1 + dx, x2: prim.x2 + dx, y1: prim.y1 + dy, y2: prim.y2 + dy };
1644
+ case "rect":
1645
+ return { ...prim, x: prim.x + dx, y: prim.y + dy };
1646
+ default:
1647
+ return { ...prim, d: translatePath(prim.d, dx, dy) };
1648
+ }
1649
+ });
1650
+ }
1651
+ function translatePath(d, dx, dy) {
1652
+ return d.replace(
1653
+ /([ML])\s*(-?[\d.]+)[ ,]+(-?[\d.]+)/g,
1654
+ (_m, cmd, x, y) => `${cmd}${round(Number(x) + dx)} ${round(Number(y) + dy)}`
1655
+ );
1656
+ }
1657
+ var round = (value) => Math.round(value * 100) / 100;
1658
+ function row(boxes, gap = 0) {
1659
+ const result = emptyBox();
1660
+ let x = 0;
1661
+ for (const box of boxes) {
1662
+ if (result.prims.length || x > 0) x += gap;
1663
+ result.prims.push(...shifted(box.prims, x, 0));
1664
+ x += box.width;
1665
+ result.ascent = Math.max(result.ascent, box.ascent);
1666
+ result.descent = Math.max(result.descent, box.descent);
1667
+ }
1668
+ result.width = x;
1669
+ return result;
1670
+ }
1671
+ function placed(box, dx, dy) {
1672
+ return {
1673
+ width: box.width,
1674
+ ascent: box.ascent - dy,
1675
+ descent: box.descent + dy,
1676
+ prims: shifted(box.prims, dx, dy)
1677
+ };
1678
+ }
1679
+ function overlay(parts) {
1680
+ const result = emptyBox();
1681
+ for (const { box, x, y } of parts) {
1682
+ result.prims.push(...shifted(box.prims, x, y));
1683
+ result.width = Math.max(result.width, x + box.width);
1684
+ result.ascent = Math.max(result.ascent, box.ascent - y);
1685
+ result.descent = Math.max(result.descent, box.descent + y);
1686
+ }
1687
+ return result;
1688
+ }
1689
+ var RELATIONS = new Set("=\u2260<>\u2264\u2265\u2248\u2261\u226A\u226B\u2208\u2209\u2282\u2283\u2286\u2287\u2192\u2190\u2194\u21D2\u21D0\u21D4\u221D\u2245\u223C\u2243".split(""));
1690
+ var BINARY = new Set("+\u2212-\xD7\xF7\xB7\xB1\u2213\u222A\u2229\u2227\u2228\u2295\u2297\u2218\u2217".split(""));
1691
+ var isRelation = (ch) => RELATIONS.has(ch);
1692
+ var isBinary = (ch) => BINARY.has(ch);
1693
+ function glyphEm(ch, bold) {
1694
+ let em;
1695
+ if (/[iIjl|!.,;:'`]/.test(ch)) em = ch === "I" ? 0.36 : 0.3;
1696
+ else if (/[ftr]/.test(ch)) em = 0.38;
1697
+ else if (/[mwMW@]/.test(ch)) em = ch === "m" ? 0.82 : 0.86;
1698
+ else if (/[A-Z]/.test(ch)) em = 0.66;
1699
+ else if (/[a-z]/.test(ch)) em = 0.52;
1700
+ else if (/[0-9]/.test(ch)) em = 0.5;
1701
+ else if (/[()[\]{}]/.test(ch)) em = 0.34;
1702
+ else if (ch === " ") em = 0.25;
1703
+ else if (isRelation(ch) || isBinary(ch)) em = 0.7;
1704
+ else if (/[Ͱ-Ͽ]/.test(ch)) em = 0.58;
1705
+ else if (/[⺀-鿿＀-￯]/.test(ch)) em = 1;
1706
+ else em = 0.6;
1707
+ return bold ? em * 1.08 : em;
1708
+ }
1709
+ var isOn2 = (value) => value === "1" || value === "on" || value === "true";
1710
+ function glyph(text, size, stretch = 1) {
1711
+ const width = Array.from(text).reduce((sum, ch) => sum + glyphEm(ch, false), 0) * size;
1712
+ const box = emptyBox();
1713
+ box.width = width;
1714
+ box.ascent = size * 0.78 * stretch;
1715
+ box.descent = size * 0.22 * stretch;
1716
+ box.prims.push({
1717
+ kind: "text",
1718
+ x: 0,
1719
+ y: 0,
1720
+ text,
1721
+ size,
1722
+ italic: false,
1723
+ bold: false,
1724
+ fit: width,
1725
+ ...stretch > 1 ? { stretch } : {}
1726
+ });
1727
+ return box;
1728
+ }
1729
+ function scripts(base, sub, sup, style) {
1730
+ const raise = Math.max(style.size * 0.4, base.ascent - style.size * 0.3);
1731
+ const drop = Math.max(style.size * 0.2, base.descent + style.size * 0.12);
1732
+ const parts = [{ box: base, x: 0, y: 0 }];
1733
+ let width = base.width;
1734
+ if (sup) {
1735
+ const y = -Math.max(raise, sup.descent + style.size * 0.25);
1736
+ parts.push({ box: sup, x: base.width + 1, y });
1737
+ width = Math.max(width, base.width + 1 + sup.width);
1738
+ }
1739
+ if (sub) {
1740
+ const y = Math.max(drop, sub.ascent - style.size * 0.1);
1741
+ parts.push({ box: sub, x: base.width + 1, y });
1742
+ width = Math.max(width, base.width + 1 + sub.width);
1743
+ }
1744
+ const box = overlay(parts);
1745
+ box.width = width;
1746
+ return box;
1747
+ }
1748
+
1749
+ // math/omml-box-grouped.ts
1750
+ var NARY = /* @__PURE__ */ new Set(["\u2211", "\u220F", "\u2210", "\u22C0", "\u22C1", "\u22C2", "\u22C3"]);
1751
+ function nary(node, style, ctx) {
1752
+ const pr = child(node, "m:naryPr");
1753
+ const chr = val(child(pr, "m:chr")) || "\u222B";
1754
+ const big = NARY.has(chr) ? 1.4 : 1.6;
1755
+ const op = glyph(chr, style.size * big);
1756
+ op.ascent = style.size * 0.78 * (big > 1.5 ? 1.5 : 1.25);
1757
+ op.descent = style.size * (big > 1.5 ? 0.55 : 0.4);
1758
+ const limits = (val(child(pr, "m:limLoc")) || (NARY.has(chr) ? "undOvr" : "subSup")) === "undOvr";
1759
+ const sub = isOn2(val(child(pr, "m:subHide"))) ? void 0 : ctx.layout(child(node, "m:sub"), ctx.script(style));
1760
+ const sup = isOn2(val(child(pr, "m:supHide"))) ? void 0 : ctx.layout(child(node, "m:sup"), ctx.script(style));
1761
+ const hasSub = Boolean(sub?.width);
1762
+ const hasSup = Boolean(sup?.width);
1763
+ let head;
1764
+ if (limits && (hasSub || hasSup)) {
1765
+ const width = Math.max(op.width, sub?.width ?? 0, sup?.width ?? 0);
1766
+ const parts = [{ box: op, x: (width - op.width) / 2, y: 0 }];
1767
+ if (hasSup)
1768
+ parts.push({
1769
+ box: sup,
1770
+ x: (width - sup.width) / 2,
1771
+ y: -(op.ascent + sup.descent + style.size * 0.05)
1772
+ });
1773
+ if (hasSub)
1774
+ parts.push({
1775
+ box: sub,
1776
+ x: (width - sub.width) / 2,
1777
+ y: op.descent + sub.ascent + style.size * 0.05
1778
+ });
1779
+ head = overlay(parts);
1780
+ head.width = width;
1781
+ } else head = scripts(op, hasSub ? sub : void 0, hasSup ? sup : void 0, style);
1782
+ const body = ctx.layout(child(node, "m:e"), style);
1783
+ return row([head, body], style.size * 0.12);
1784
+ }
1785
+ var MATCHING_OPEN = {
1786
+ "(": "(",
1787
+ "[": "[",
1788
+ "{": "{",
1789
+ "|": "|",
1790
+ "\u2016": "\u2016",
1791
+ "\u27E8": "\u27E8",
1792
+ "\u2308": "\u2308",
1793
+ "\u230A": "\u230A"
1794
+ };
1795
+ function delimiter(node, style, ctx) {
1796
+ const pr = child(node, "m:dPr");
1797
+ const begin = child(pr, "m:begChr")["@_val"] === void 0 ? "(" : val(child(pr, "m:begChr"));
1798
+ const end = child(pr, "m:endChr")["@_val"] === void 0 ? ")" : val(child(pr, "m:endChr"));
1799
+ const separator = val(child(pr, "m:sepChr")) || "|";
1800
+ const cells = ensureArray(node["m:e"]).map((cell) => ctx.layout(cell, style));
1801
+ const parts = [];
1802
+ cells.forEach((cell, index) => {
1803
+ if (index > 0) parts.push(glyph(separator, style.size));
1804
+ parts.push(cell);
1805
+ });
1806
+ const content = row(parts, style.size * 0.05);
1807
+ const tall = (content.ascent + content.descent) / style.size;
1808
+ const stretch = Math.max(1, tall / 1);
1809
+ const open = begin ? glyph(MATCHING_OPEN[begin] ?? begin, style.size, stretch) : emptyBox();
1810
+ const close = end ? glyph(end, style.size, stretch) : emptyBox();
1811
+ return row([open, content, close], style.size * 0.04);
1812
+ }
1813
+ function matrix(node, style, ctx) {
1814
+ const rows = ensureArray(node["m:mr"]).map(
1815
+ (mr) => ensureArray(mr["m:e"]).map((cell) => ctx.layout(cell, style))
1816
+ );
1817
+ const columns = Math.max(0, ...rows.map((cells) => cells.length));
1818
+ const widths = Array.from(
1819
+ { length: columns },
1820
+ (_, c) => Math.max(0, ...rows.map((cells) => cells[c]?.width ?? 0))
1821
+ );
1822
+ const gapX = style.size * 0.8;
1823
+ const gapY = style.size * 0.3;
1824
+ const result = emptyBox();
1825
+ let y = 0;
1826
+ const heights = rows.map((cells) => ({
1827
+ a: Math.max(style.size * 0.78, ...cells.map((cell) => cell.ascent)),
1828
+ d: Math.max(style.size * 0.22, ...cells.map((cell) => cell.descent))
1829
+ }));
1830
+ const total = heights.reduce((sum, h) => sum + h.a + h.d, 0) + gapY * Math.max(0, rows.length - 1);
1831
+ y = -(total / 2) + style.size * AXIS;
1832
+ rows.forEach((cells, r) => {
1833
+ const h = heights[r];
1834
+ y += h.a;
1835
+ let x = 0;
1836
+ cells.forEach((cell, c) => {
1837
+ result.prims.push(...shifted(cell.prims, x + (widths[c] - cell.width) / 2, y));
1838
+ x += widths[c] + gapX;
1839
+ });
1840
+ y += h.d + gapY;
1841
+ });
1842
+ result.width = widths.reduce((sum, w) => sum + w, 0) + gapX * Math.max(0, columns - 1);
1843
+ result.ascent = total / 2 + style.size * AXIS;
1844
+ result.descent = total / 2 - style.size * AXIS;
1845
+ return result;
1846
+ }
1847
+ function above(base, mark, style) {
1848
+ const width = Math.max(base.width, mark.width);
1849
+ const box = overlay([
1850
+ { box: base, x: (width - base.width) / 2, y: 0 },
1851
+ {
1852
+ box: mark,
1853
+ x: (width - mark.width) / 2,
1854
+ y: -(base.ascent + mark.descent + style.size * 0.04)
1855
+ }
1856
+ ]);
1857
+ box.width = width;
1858
+ return box;
1859
+ }
1860
+ function below(base, mark, style) {
1861
+ const width = Math.max(base.width, mark.width);
1862
+ const box = overlay([
1863
+ { box: base, x: (width - base.width) / 2, y: 0 },
1864
+ { box: mark, x: (width - mark.width) / 2, y: base.descent + mark.ascent + style.size * 0.04 }
1865
+ ]);
1866
+ box.width = width;
1867
+ return box;
1868
+ }
1869
+
1870
+ // math/omml-box-structures.ts
1871
+ function fraction(node, style, ctx) {
1872
+ const type = val(child(child(node, "m:fPr"), "m:type"));
1873
+ const inner = ctx.script({ ...style, level: Math.min(style.level, 0) });
1874
+ const small = style.level === 0 ? { ...style, size: style.size * 0.9 } : inner;
1875
+ const num = ctx.layout(child(node, "m:num"), small);
1876
+ const den = ctx.layout(child(node, "m:den"), small);
1877
+ if (type === "lin") {
1878
+ const slash = glyph("/", style.size);
1879
+ return row([num, slash, den]);
1880
+ }
1881
+ const gap = style.size * 0.12;
1882
+ const axis = style.size * AXIS;
1883
+ const width = Math.max(num.width, den.width) + style.size * 0.2;
1884
+ const bar = type === "noBar" ? [] : [
1885
+ {
1886
+ kind: "line",
1887
+ x1: 0,
1888
+ x2: width,
1889
+ y1: -axis,
1890
+ y2: -axis,
1891
+ width: Math.max(0.8, style.size * 0.05)
1892
+ }
1893
+ ];
1894
+ const box = overlay([
1895
+ { box: num, x: (width - num.width) / 2, y: -(axis + gap + num.descent) },
1896
+ { box: den, x: (width - den.width) / 2, y: -axis + gap + den.ascent }
1897
+ ]);
1898
+ box.width = width;
1899
+ box.prims.push(...bar);
1900
+ return box;
1901
+ }
1902
+ function radical(node, style, ctx) {
1903
+ const content = ctx.layout(child(node, "m:e"), style);
1904
+ const hide = isOn2(val(child(child(node, "m:radPr"), "m:degHide")));
1905
+ const degree = hide ? void 0 : ctx.layout(child(node, "m:deg"), { ...ctx.script(ctx.script(style)) });
1906
+ const gap = style.size * 0.12;
1907
+ const top = -(content.ascent + gap);
1908
+ const bottom = content.descent + style.size * 0.05;
1909
+ const height = bottom - top;
1910
+ const sign = style.size * 0.55;
1911
+ const lead = degree && degree.width ? Math.max(0, degree.width - sign * 0.4) : 0;
1912
+ const x0 = lead;
1913
+ const d = `M${round(x0)} ${round(top + height * 0.58)} L${round(x0 + sign * 0.22)} ${round(top + height * 0.52)} L${round(x0 + sign * 0.5)} ${round(bottom)} L${round(x0 + sign)} ${round(top)} L${round(x0 + sign + content.width + style.size * 0.1)} ${round(top)}`;
1914
+ const parts = [{ box: content, x: x0 + sign + style.size * 0.05, y: 0 }];
1915
+ const box = overlay(parts);
1916
+ box.ascent = Math.max(box.ascent, -top);
1917
+ box.descent = Math.max(box.descent, bottom);
1918
+ box.width = x0 + sign + content.width + style.size * 0.15;
1919
+ box.prims.push({ kind: "path", d, width: Math.max(0.8, style.size * 0.06) });
1920
+ if (degree) box.prims.push(...shifted(degree.prims, 0, top + height * 0.35 - degree.descent));
1921
+ return box;
1922
+ }
1923
+ function layoutStructure(tag, node, style, ctx) {
1924
+ const arg2 = (name, next = style) => ctx.layout(child(node, name), next);
1925
+ const small = () => ctx.script(style);
1926
+ switch (tag) {
1927
+ case "m:f":
1928
+ return fraction(node, style, ctx);
1929
+ case "m:rad":
1930
+ return radical(node, style, ctx);
1931
+ case "m:sSup":
1932
+ return scripts(arg2("m:e"), void 0, arg2("m:sup", small()), style);
1933
+ case "m:sSub":
1934
+ return scripts(arg2("m:e"), arg2("m:sub", small()), void 0, style);
1935
+ case "m:sSubSup":
1936
+ return scripts(arg2("m:e"), arg2("m:sub", small()), arg2("m:sup", small()), style);
1937
+ case "m:sPre": {
1938
+ const pre = scripts(emptyBox(), arg2("m:sub", small()), arg2("m:sup", small()), style);
1939
+ return row([pre, arg2("m:e")], 1);
1940
+ }
1941
+ case "m:nary":
1942
+ return nary(node, style, ctx);
1943
+ case "m:d":
1944
+ return delimiter(node, style, ctx);
1945
+ case "m:m":
1946
+ return matrix(node, style, ctx);
1947
+ case "m:acc": {
1948
+ const chr = val(child(child(node, "m:accPr"), "m:chr")) || "\u0302";
1949
+ const mark = glyph(
1950
+ chr === "\u0302" ? "^" : chr === "\u0303" ? "~" : chr === "\u0304" ? "\xAF" : chr,
1951
+ style.size * 0.8
1952
+ );
1953
+ mark.ascent = style.size * 0.2;
1954
+ mark.descent = 0;
1955
+ return above(arg2("m:e"), mark, style);
1956
+ }
1957
+ case "m:bar": {
1958
+ const base = arg2("m:e");
1959
+ const under = val(child(child(node, "m:barPr"), "m:pos")) === "bot";
1960
+ const y = under ? base.descent + style.size * 0.08 : -(base.ascent + style.size * 0.08);
1961
+ const box = overlay([{ box: base, x: 0, y: 0 }]);
1962
+ box.prims.push({
1963
+ kind: "line",
1964
+ x1: 0,
1965
+ x2: base.width,
1966
+ y1: y,
1967
+ y2: y,
1968
+ width: Math.max(0.8, style.size * 0.05)
1969
+ });
1970
+ box.ascent = Math.max(box.ascent, under ? 0 : -y);
1971
+ box.descent = Math.max(box.descent, under ? y : 0);
1972
+ return box;
1973
+ }
1974
+ case "m:limLow":
1975
+ return below(arg2("m:e"), arg2("m:lim", small()), style);
1976
+ case "m:limUpp":
1977
+ return above(arg2("m:e"), arg2("m:lim", small()), style);
1978
+ case "m:groupChr": {
1979
+ const pr = child(node, "m:groupChrPr");
1980
+ const mark = glyph(val(child(pr, "m:chr")) || "\u23DF", style.size);
1981
+ mark.ascent = style.size * 0.2;
1982
+ mark.descent = style.size * 0.1;
1983
+ return val(child(pr, "m:pos")) === "top" ? above(arg2("m:e"), mark, style) : below(arg2("m:e"), mark, style);
1984
+ }
1985
+ case "m:eqArr": {
1986
+ const lines = ensureArray(node["m:e"]).map((line) => ctx.layout(line, style));
1987
+ const result = emptyBox();
1988
+ const gap = style.size * 0.25;
1989
+ const total = lines.reduce((sum, line) => sum + line.ascent + line.descent, 0) + gap * Math.max(0, lines.length - 1);
1990
+ let y = -(total / 2) + style.size * AXIS;
1991
+ for (const line of lines) {
1992
+ y += line.ascent;
1993
+ result.prims.push(...shifted(line.prims, 0, y));
1994
+ result.width = Math.max(result.width, line.width);
1995
+ y += line.descent + gap;
1996
+ }
1997
+ result.ascent = total / 2 + style.size * AXIS;
1998
+ result.descent = total / 2 - style.size * AXIS;
1999
+ return result;
2000
+ }
2001
+ case "m:func": {
2002
+ const name = arg2("m:fName", { ...style, plain: true });
2003
+ return row([name, arg2("m:e")], style.size * 0.17);
2004
+ }
2005
+ case "m:borderBox": {
2006
+ const inner = arg2("m:e");
2007
+ const pad = style.size * 0.15;
2008
+ const box = placed(inner, pad, 0);
2009
+ box.width = inner.width + pad * 2;
2010
+ box.ascent += pad;
2011
+ box.descent += pad;
2012
+ box.prims.push({
2013
+ kind: "rect",
2014
+ x: 0,
2015
+ y: -box.ascent,
2016
+ w: box.width,
2017
+ h: box.ascent + box.descent,
2018
+ width: 0.8
2019
+ });
2020
+ return box;
2021
+ }
2022
+ case "m:box":
2023
+ case "m:phant":
2024
+ return arg2("m:e");
2025
+ default:
2026
+ return ctx.layout(node, style);
2027
+ }
2028
+ }
2029
+
2030
+ // math/omml-box-layout.ts
2031
+ var isOn3 = (value) => value === "1" || value === "on" || value === "true";
2032
+ var isUnaryContext = (ch) => isRelation(ch) || isBinary(ch) || /[([{,;:]/.test(ch);
2033
+ function lastCharOf(node) {
2034
+ const text = readText(node);
2035
+ return text ? Array.from(text).at(-1) ?? "" : "";
2036
+ }
2037
+ function layoutRun(node, style, atStart) {
2038
+ const text = readText(node);
2039
+ if (!text) return emptyBox();
2040
+ const rPr = child(node, "m:rPr");
2041
+ const sty = val(child(rPr, "m:sty"));
2042
+ const plain = style.plain || isOn3(val(child(rPr, "m:nor"))) || sty === "p" || sty === "b";
2043
+ const bold = Boolean(style.bold) || sty === "b" || sty === "bi";
2044
+ const boxes = [];
2045
+ let index = 0;
2046
+ let previous = atStart ? "(" : "x";
2047
+ for (const raw of Array.from(text)) {
2048
+ const ch = raw === "-" ? "\u2212" : raw;
2049
+ const italic = !plain && /[A-Za-zα-ω]/.test(ch);
2050
+ const unary = index === 0 ? atStart : isUnaryContext(previous);
2051
+ const spaced = style.level > 0 ? 0 : isRelation(ch) ? 0.28 : isBinary(ch) && !unary ? 0.22 : 0;
2052
+ previous = ch;
2053
+ const width = glyphEm(ch, bold) * style.size;
2054
+ const pad = spaced * style.size;
2055
+ const box = emptyBox();
2056
+ box.width = width + pad * 2;
2057
+ box.ascent = style.size * 0.78;
2058
+ box.descent = style.size * 0.22;
2059
+ if (ch !== " " || width)
2060
+ box.prims.push({
2061
+ kind: "text",
2062
+ x: pad,
2063
+ y: 0,
2064
+ text: ch,
2065
+ size: style.size,
2066
+ italic,
2067
+ bold,
2068
+ fit: width
2069
+ });
2070
+ boxes.push(box);
2071
+ index++;
2072
+ }
2073
+ return mergeText(row(boxes));
2074
+ }
2075
+ function mergeText(box) {
2076
+ const merged = [];
2077
+ for (const prim of box.prims) {
2078
+ const last = merged.at(-1);
2079
+ if (prim.kind === "text" && last?.kind === "text" && last.italic === prim.italic && last.bold === prim.bold && last.size === prim.size && last.y === prim.y && Math.abs(last.x + last.fit - prim.x) < 0.01)
2080
+ merged[merged.length - 1] = {
2081
+ ...last,
2082
+ text: last.text + prim.text,
2083
+ fit: last.fit + prim.fit
2084
+ };
2085
+ else merged.push(prim);
2086
+ }
2087
+ return { ...box, prims: merged };
2088
+ }
2089
+ function layoutChildren(node, style) {
2090
+ const boxes = [];
2091
+ let last = "";
2092
+ for (const key of Object.keys(node)) {
2093
+ if (key.startsWith("@_") || key === "#text") continue;
2094
+ const tag = stripXmlOrderSuffix(key);
2095
+ for (const item of ensureArray(node[key])) {
2096
+ const atStart = boxes.length === 0 || last !== "" && isUnaryContext(last);
2097
+ boxes.push(layoutElement(tag, item, style, atStart));
2098
+ last = tag === "m:r" ? lastCharOf(item) : "";
2099
+ }
2100
+ }
2101
+ return row(boxes);
2102
+ }
2103
+ function layoutElement(tag, node, style, atStart) {
2104
+ if (tag === "m:r") return layoutRun(node, style, atStart);
2105
+ if (tag === "m:oMath" || tag === "m:oMathPara") return layoutChildren(node, style);
2106
+ if (/Pr$/.test(tag) || tag === "m:ctrlPr") return emptyBox();
2107
+ return layoutStructure(tag, node, style, { layout: layoutChildren, script: scriptStyle });
2108
+ }
2109
+ function layoutEquation(root, sizePx) {
2110
+ const box = layoutChildren(root, { level: 0, size: sizePx });
2111
+ const pad = 1;
2112
+ const ascent = Math.max(box.ascent, sizePx * 0.78) + pad;
2113
+ const descent = Math.max(box.descent, sizePx * 0.22) + pad;
2114
+ return {
2115
+ box: { ...box, prims: shifted(box.prims, pad, 0), ascent, descent },
2116
+ widthPx: round(Math.max(box.width, sizePx * 0.5) + pad * 2),
2117
+ heightPx: round(ascent + descent),
2118
+ descentPx: round(descent)
2119
+ };
2120
+ }
2121
+ var DEFAULT_XML_LIMITS = {
2122
+ maxDepth: 512,
2123
+ maxNodes: 5e6
2124
+ };
2125
+ var MARKUP_RE = /<!--[\s\S]*?-->|<!\[CDATA\[[\s\S]*?\]\]>|<\?[\s\S]*?\?>|<(\/?)([^\s\/>]+)(?:\s+[^\s=\/>]+\s*=\s*(?:"[^"]*"|'[^']*'))*\s*(\/?)>/g;
2126
+ function checkXmlLimits(xml, label, limits = {}) {
2127
+ const maxDepth = limits.maxDepth ?? DEFAULT_XML_LIMITS.maxDepth;
2128
+ const maxNodes = limits.maxNodes ?? DEFAULT_XML_LIMITS.maxNodes;
2129
+ let depth = 0;
2130
+ let nodes = 0;
2131
+ for (const match of xml.matchAll(MARKUP_RE)) {
2132
+ const [, closing, name, selfClosing] = match;
2133
+ if (name === void 0) continue;
2134
+ if (closing) {
2135
+ depth--;
2136
+ continue;
2137
+ }
2138
+ nodes++;
2139
+ if (nodes > maxNodes) throw new Error(`${label} XML exceeds the limit of ${maxNodes} elements`);
2140
+ if (!selfClosing && ++depth > maxDepth)
2141
+ throw new Error(`${label} XML exceeds the nesting depth limit of ${maxDepth}`);
2142
+ }
2143
+ }
2144
+ function parseXml(xml, options = {}) {
2145
+ const label = options.label ?? "OOXML";
2146
+ if (/<!DOCTYPE|<!ENTITY/i.test(xml))
2147
+ throw new Error(`${label} XML with DTD or entity declarations is not supported`);
2148
+ checkXmlLimits(xml, label, options.limits);
2149
+ let parseError = "";
2150
+ let parsed;
2151
+ try {
2152
+ parsed = new xmldom.DOMParser({
2153
+ onError: (level, message) => {
2154
+ if (level !== "warning") parseError = message;
2155
+ }
2156
+ }).parseFromString(xml, "application/xml");
2157
+ } catch (error) {
2158
+ throw new Error(
2159
+ `Invalid ${label} XML: ${error instanceof Error ? error.message : String(error)}`,
2160
+ { cause: error }
2161
+ );
2162
+ }
2163
+ if (parseError || !parsed.documentElement)
2164
+ throw new Error(`Invalid ${label} XML: ${parseError || "missing root element"}`);
2165
+ return parsed;
2166
+ }
2167
+ var isElement = (node) => node.nodeType === 1;
2168
+ var elements = (parent) => Array.from(parent.childNodes).filter(isElement);
2169
+
2170
+ // math/omml-dom.ts
2171
+ var PREFIXES = {
2172
+ "http://schemas.openxmlformats.org/officeDocument/2006/math": "m",
2173
+ "http://purl.oclc.org/ooxml/officeDocument/math": "m",
2174
+ "http://schemas.openxmlformats.org/drawingml/2006/main": "a",
2175
+ "http://schemas.openxmlformats.org/wordprocessingml/2006/main": "w"
2176
+ };
2177
+ var MAX_DEPTH = 512;
2178
+ function ommlFromElement(element2) {
2179
+ const visit = (node, depth) => {
2180
+ if (depth > MAX_DEPTH) throw new Error(`OMML nesting exceeds ${MAX_DEPTH} levels`);
2181
+ const prefix = PREFIXES[node.namespaceURI ?? ""];
2182
+ const name = prefix ? `${prefix}:${node.localName}` : node.tagName;
2183
+ const body = mergeSiblings(elements(node).map((child2) => visit(child2, depth + 1)));
2184
+ for (const attribute of Array.from(node.attributes)) {
2185
+ if (attribute.namespaceURI === "http://www.w3.org/2000/xmlns/") continue;
2186
+ body[`@_${attribute.localName}`] = attribute.value;
2187
+ }
2188
+ const text = Array.from(node.childNodes).filter((child2) => child2.nodeType === 3 || child2.nodeType === 4).map((child2) => child2.nodeValue ?? "").join("");
2189
+ if (text && (!elements(node).length || text.trim())) body["#text"] = text;
2190
+ return { [name]: body };
2191
+ };
2192
+ return visit(element2, 1);
2193
+ }
2194
+ function parseOmml(xml) {
2195
+ return ommlFromElement(parseXml(xml, { label: "OMML" }).documentElement);
2196
+ }
2197
+
2198
+ // math/omml-svg.ts
2199
+ var FONT_FAMILY = "'Cambria Math','STIX Two Math','Latin Modern Math','Times New Roman',serif";
2200
+ function primMarkup(prim) {
2201
+ switch (prim.kind) {
2202
+ case "text": {
2203
+ const attrs = [
2204
+ `font-size="${round(prim.size)}"`,
2205
+ prim.italic ? 'font-style="italic"' : "",
2206
+ prim.bold ? 'font-weight="bold"' : "",
2207
+ Array.from(prim.text).length > 1 ? `textLength="${round(prim.fit)}" lengthAdjust="spacing"` : ""
2208
+ ].filter(Boolean);
2209
+ const at = prim.stretch ? `transform="translate(${round(prim.x)} ${round(prim.y)}) scale(1 ${round(prim.stretch)})"` : `x="${round(prim.x)}" y="${round(prim.y)}"`;
2210
+ return `<text ${at} ${attrs.join(" ")}>${escapeXml(prim.text)}</text>`;
2211
+ }
2212
+ case "line":
2213
+ return `<line x1="${round(prim.x1)}" y1="${round(prim.y1)}" x2="${round(prim.x2)}" y2="${round(prim.y2)}" stroke="currentColor" stroke-width="${round(prim.width)}"/>`;
2214
+ case "rect":
2215
+ return `<rect x="${round(prim.x)}" y="${round(prim.y)}" width="${round(prim.w)}" height="${round(prim.h)}" fill="none" stroke="currentColor" stroke-width="${round(prim.width)}"/>`;
2216
+ default:
2217
+ return `<path d="${prim.d}" fill="none" stroke="currentColor" stroke-width="${round(prim.width)}" stroke-linejoin="round"/>`;
2218
+ }
2219
+ }
2220
+ function drawOmmlTree(root, sizePx, label = "") {
2221
+ const { box, widthPx, heightPx, descentPx } = layoutEquation(root, sizePx);
2222
+ if (!box.prims.length) return void 0;
2223
+ const body = box.prims.map(primMarkup).join("");
2224
+ const aria = label ? ` aria-label="${escapeXml(label).replace(/"/g, "&quot;")}"` : "";
2225
+ const svg = `<svg xmlns="http://www.w3.org/2000/svg" width="${widthPx}" height="${heightPx}" viewBox="0 0 ${widthPx} ${heightPx}" role="img"${aria}><g font-family="${FONT_FAMILY}" fill="currentColor" transform="translate(0 ${round(box.ascent)})">${body}</g></svg>`;
2226
+ return { svg, widthPx, heightPx, descentPx };
2227
+ }
2228
+ function drawEquation(omml, sizePx, label = "") {
2229
+ try {
2230
+ return drawOmmlTree(parseOmml(omml), sizePx, label);
2231
+ } catch {
2232
+ return void 0;
2233
+ }
2234
+ }
2235
+
2236
+ // math/omml-color.ts
2237
+ function getOmmlMathColor(node) {
2238
+ if (!node || typeof node !== "object") {
2239
+ return void 0;
2240
+ }
2241
+ const drawingRunProperties = node["a:rPr"];
2242
+ if (drawingRunProperties && typeof drawingRunProperties === "object") {
2243
+ const solidFill = drawingRunProperties["a:solidFill"];
2244
+ const srgbColor = solidFill && typeof solidFill === "object" ? solidFill["a:srgbClr"] : void 0;
2245
+ const value = srgbColor?.["@_val"];
2246
+ if (typeof value === "string" && /^[0-9a-f]{6}$/iu.test(value)) {
2247
+ return `#${value.toUpperCase()}`;
2248
+ }
2249
+ }
2250
+ for (const value of Object.values(node)) {
2251
+ if (Array.isArray(value)) {
2252
+ for (const child2 of value) {
2253
+ if (child2 && typeof child2 === "object") {
2254
+ const color = getOmmlMathColor(child2);
2255
+ if (color) {
2256
+ return color;
2257
+ }
2258
+ }
2259
+ }
2260
+ } else if (value && typeof value === "object") {
2261
+ const color = getOmmlMathColor(value);
2262
+ if (color) {
2263
+ return color;
2264
+ }
2265
+ }
2266
+ }
2267
+ return void 0;
2268
+ }
2269
+ function getOmmlMathFontSize(node) {
2270
+ if (!node || typeof node !== "object") {
2271
+ return void 0;
2272
+ }
2273
+ const drawingRunProperties = node["a:rPr"];
2274
+ if (drawingRunProperties && typeof drawingRunProperties === "object") {
2275
+ const size = Number(drawingRunProperties["@_sz"]);
2276
+ if (Number.isFinite(size) && size > 0) {
2277
+ return size / 100;
2278
+ }
2279
+ }
2280
+ for (const value of Object.values(node)) {
2281
+ if (Array.isArray(value)) {
2282
+ for (const child2 of value) {
2283
+ if (child2 && typeof child2 === "object") {
2284
+ const size = getOmmlMathFontSize(child2);
2285
+ if (size) {
2286
+ return size;
2287
+ }
2288
+ }
2289
+ }
2290
+ } else if (value && typeof value === "object") {
2291
+ const size = getOmmlMathFontSize(value);
2292
+ if (size) {
2293
+ return size;
2294
+ }
2295
+ }
2296
+ }
2297
+ return void 0;
2298
+ }
2299
+
1634
2300
  // math/omml-mathml-converters.ts
1635
2301
  function convertRun(node) {
1636
2302
  const text = readText(node);
1637
2303
  if (text.length === 0) {
1638
2304
  return "";
1639
2305
  }
1640
- const escaped = escapeXml(text);
2306
+ const escaped = escapeXml(text === "-" ? "\u2212" : text);
1641
2307
  const rPr = child(node, "m:rPr");
1642
2308
  const norVal = val(child(rPr, "m:nor"));
1643
2309
  const isNormal = norVal === "1" || norVal === "on" || norVal === "true";
@@ -1758,8 +2424,8 @@ function convertDelimiter(node, cc) {
1758
2424
  function convertMatrix(node, cc) {
1759
2425
  const rows = ensureArray(node["m:mr"]);
1760
2426
  const tableRows = [];
1761
- for (const row of rows) {
1762
- const cells = ensureArray(row["m:e"]);
2427
+ for (const row2 of rows) {
2428
+ const cells = ensureArray(row2["m:e"]);
1763
2429
  const tdParts = [];
1764
2430
  for (const cell of cells) {
1765
2431
  tdParts.push(`<mtd><mrow>${cc(cell)}</mrow></mtd>`);
@@ -1934,67 +2600,35 @@ function ommlToMathml(omml) {
1934
2600
  }
1935
2601
  return convertOmmlToMathMl(omml);
1936
2602
  }
1937
- function parseXml(xml, options = {}) {
1938
- const label = options.label ?? "OOXML";
1939
- if (/<!DOCTYPE|<!ENTITY/i.test(xml))
1940
- throw new Error(`${label} XML with DTD or entity declarations is not supported`);
1941
- let parseError = "";
1942
- let parsed;
1943
- try {
1944
- parsed = new xmldom.DOMParser({
1945
- onError: (level, message) => {
1946
- if (level !== "warning") parseError = message;
1947
- }
1948
- }).parseFromString(xml, "application/xml");
1949
- } catch (error) {
1950
- throw new Error(
1951
- `Invalid ${label} XML: ${error instanceof Error ? error.message : String(error)}`,
1952
- { cause: error }
1953
- );
1954
- }
1955
- if (parseError || !parsed.documentElement)
1956
- throw new Error(`Invalid ${label} XML: ${parseError || "missing root element"}`);
1957
- return parsed;
1958
- }
1959
- var isElement = (node) => node.nodeType === 1;
1960
- var elements = (parent) => Array.from(parent.childNodes).filter(isElement);
1961
2603
 
1962
- // math/omml-dom.ts
1963
- var PREFIXES = {
1964
- "http://schemas.openxmlformats.org/officeDocument/2006/math": "m",
1965
- "http://purl.oclc.org/ooxml/officeDocument/math": "m",
1966
- "http://schemas.openxmlformats.org/drawingml/2006/main": "a",
1967
- "http://schemas.openxmlformats.org/wordprocessingml/2006/main": "w"
1968
- };
1969
- function ommlFromElement(element) {
1970
- const visit = (node) => {
1971
- const prefix = PREFIXES[node.namespaceURI ?? ""];
1972
- const name = prefix ? `${prefix}:${node.localName}` : node.tagName;
1973
- const body = mergeSiblings(elements(node).map(visit));
1974
- for (const attribute of Array.from(node.attributes)) {
1975
- if (attribute.namespaceURI === "http://www.w3.org/2000/xmlns/") continue;
1976
- body[`@_${attribute.localName}`] = attribute.value;
1977
- }
1978
- const text = Array.from(node.childNodes).filter((child2) => child2.nodeType === 3 || child2.nodeType === 4).map((child2) => child2.nodeValue ?? "").join("");
1979
- if (text && (!elements(node).length || text.trim())) body["#text"] = text;
1980
- return { [name]: body };
1981
- };
1982
- return visit(element);
1983
- }
1984
- function parseOmml(xml) {
1985
- return ommlFromElement(parseXml(xml, { label: "OMML" }).documentElement);
1986
- }
2604
+ // math/equation-gallery.ts
2605
+ var EQUATION_GALLERY = [
2606
+ { id: "area", name: "Area of Circle", latex: "A = \\pi r^{2}" },
2607
+ {
2608
+ id: "quadratic",
2609
+ name: "Quadratic Formula",
2610
+ latex: "x = \\frac{-b \\pm \\sqrt{b^{2} - 4ac}}{2a}"
2611
+ },
2612
+ { id: "pythagorean", name: "Pythagorean Theorem", latex: "a^{2} + b^{2} = c^{2}" },
2613
+ {
2614
+ id: "binomial",
2615
+ name: "Binomial Theorem",
2616
+ latex: "(x + a)^{n} = \\sum_{k=0}^{n} \\binom{n}{k} x^{k} a^{n-k}"
2617
+ }
2618
+ ];
1987
2619
 
1988
2620
  exports.ACCENT_ALIASES = ACCENT_ALIASES;
1989
2621
  exports.ACCENT_MAP = ACCENT_MAP;
1990
2622
  exports.DELIM_MAP = DELIM_MAP;
1991
2623
  exports.EQARR_ENVS = EQARR_ENVS;
2624
+ exports.EQUATION_GALLERY = EQUATION_GALLERY;
1992
2625
  exports.ESCAPE_MAP = ESCAPE_MAP;
1993
2626
  exports.FUNC_NAMES = FUNC_NAMES;
1994
2627
  exports.GREEK_MAP = GREEK_MAP;
1995
2628
  exports.LIMIT_FUNC_NAMES = LIMIT_FUNC_NAMES;
1996
2629
  exports.MATRIX_ENVS = MATRIX_ENVS;
1997
2630
  exports.NARY_MAP = NARY_MAP;
2631
+ exports.OMML_NAMESPACE = OMML_NAMESPACE;
1998
2632
  exports.OPERATOR_MAP = OPERATOR_MAP;
1999
2633
  exports.REVERSE_ACCENT = REVERSE_ACCENT;
2000
2634
  exports.REVERSE_DELIM = REVERSE_DELIM;
@@ -2012,6 +2646,8 @@ exports.convertLatexToOmml = convertLatexToOmml;
2012
2646
  exports.convertOmmlToLatex = convertOmmlToLatex;
2013
2647
  exports.convertOmmlToMathMl = convertOmmlToMathMl;
2014
2648
  exports.delimiterToLatex = delimiterToLatex;
2649
+ exports.drawEquation = drawEquation;
2650
+ exports.drawOmmlTree = drawOmmlTree;
2015
2651
  exports.ensureArr = ensureArr;
2016
2652
  exports.eqArrToLatex = eqArrToLatex;
2017
2653
  exports.escapeChar = escapeChar;
@@ -2022,11 +2658,13 @@ exports.getOmmlMathFontSize = getOmmlMathFontSize;
2022
2658
  exports.hasAttr = hasAttr;
2023
2659
  exports.isOn = isOn;
2024
2660
  exports.isSingleAtom = isSingleAtom;
2661
+ exports.latexToOmmlXml = latexToOmmlXml;
2025
2662
  exports.matrixToLatex = matrixToLatex;
2026
2663
  exports.mergeSiblings = mergeSiblings;
2027
2664
  exports.naryToLatex = naryToLatex;
2028
2665
  exports.ommlFromElement = ommlFromElement;
2029
2666
  exports.ommlToMathml = ommlToMathml;
2667
+ exports.ommlToXml = ommlToXml;
2030
2668
  exports.parseAccent = parseAccent;
2031
2669
  exports.parseBar = parseBar;
2032
2670
  exports.parseBoxed = parseBoxed;