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.
- package/dist/PptxHandler-OGLITB3F.cjs +12 -0
- package/dist/{PptxHandler-FIN6XDTI.mjs → PptxHandler-R5BVKEBW.mjs} +3 -3
- package/dist/PptxHandler-UKAA5T5U.mjs +3 -0
- package/dist/PresentationBuilder-4AF3PZHG.cjs +20 -0
- package/dist/PresentationBuilder-54QGEZ2F.mjs +3 -0
- package/dist/PresentationBuilder-W67DIJBV.mjs +7 -0
- package/dist/automation/docx.d.ts +18 -0
- package/dist/automation/docx.d.ts.map +1 -1
- package/dist/automation/index.cjs +21297 -8338
- package/dist/automation/index.d.ts +1 -0
- package/dist/automation/index.d.ts.map +1 -1
- package/dist/automation/index.mjs +21294 -8339
- package/dist/automation/node.cjs +66 -6
- package/dist/automation/node.d.ts +10 -0
- package/dist/automation/node.d.ts.map +1 -1
- package/dist/automation/node.mjs +67 -7
- package/dist/automation/outline.d.ts +29 -0
- package/dist/automation/outline.d.ts.map +1 -0
- package/dist/automation/xlsx.d.ts +21 -0
- package/dist/automation/xlsx.d.ts.map +1 -1
- package/dist/chart/auto-title.d.ts +31 -0
- package/dist/chart/auto-title.d.ts.map +1 -0
- package/dist/chart/axis-format.d.ts +13 -0
- package/dist/chart/axis-format.d.ts.map +1 -0
- package/dist/chart/bubble-radius.d.ts +30 -0
- package/dist/chart/bubble-radius.d.ts.map +1 -0
- package/dist/chart/error-bar-amount.d.ts +22 -0
- package/dist/chart/error-bar-amount.d.ts.map +1 -0
- package/dist/chart/hierarchy.d.ts +69 -0
- package/dist/chart/hierarchy.d.ts.map +1 -0
- package/dist/chart/index.cjs +2377 -527
- package/dist/chart/index.d.ts +12 -0
- package/dist/chart/index.d.ts.map +1 -1
- package/dist/chart/index.mjs +2338 -528
- package/dist/chart/model-analysis.d.ts +66 -0
- package/dist/chart/model-analysis.d.ts.map +1 -0
- package/dist/chart/model-series.d.ts +5 -0
- package/dist/chart/model-series.d.ts.map +1 -1
- package/dist/chart/number-format-pattern.d.ts +35 -0
- package/dist/chart/number-format-pattern.d.ts.map +1 -0
- package/dist/chart/number-format.d.ts +21 -0
- package/dist/chart/number-format.d.ts.map +1 -0
- package/dist/chart/parse-analysis.d.ts +13 -0
- package/dist/chart/parse-analysis.d.ts.map +1 -0
- package/dist/chart/parse-series.d.ts +1 -1
- package/dist/chart/parse-series.d.ts.map +1 -1
- package/dist/chart/parse-util.d.ts +2 -0
- package/dist/chart/parse-util.d.ts.map +1 -1
- package/dist/chart/render/chart-svg-analysis.d.ts +7 -0
- package/dist/chart/render/chart-svg-analysis.d.ts.map +1 -0
- package/dist/chart/render/chart-svg-bars.d.ts +5 -0
- package/dist/chart/render/chart-svg-bars.d.ts.map +1 -1
- package/dist/chart/render/chart-svg-cartesian.d.ts +7 -2
- package/dist/chart/render/chart-svg-cartesian.d.ts.map +1 -1
- package/dist/chart/render/chart-svg-hierarchy.d.ts +5 -0
- package/dist/chart/render/chart-svg-hierarchy.d.ts.map +1 -0
- package/dist/chart/render/chart-svg-plots.d.ts +5 -0
- package/dist/chart/render/chart-svg-plots.d.ts.map +1 -0
- package/dist/chart/render/chart-svg-stock.d.ts +4 -0
- package/dist/chart/render/chart-svg-stock.d.ts.map +1 -0
- package/dist/chart/render/chart-svg-waterfall.d.ts +4 -0
- package/dist/chart/render/chart-svg-waterfall.d.ts.map +1 -0
- package/dist/chart/render/chart-svg-xy.d.ts +4 -0
- package/dist/chart/render/chart-svg-xy.d.ts.map +1 -0
- package/dist/chart/render/chart-svg.d.ts +1 -1
- package/dist/chart/render/chart-svg.d.ts.map +1 -1
- package/dist/chart/render/chart-value-axis.d.ts +6 -1
- package/dist/chart/render/chart-value-axis.d.ts.map +1 -1
- package/dist/chart/render/chart-view-analysis.d.ts +30 -0
- package/dist/chart/render/chart-view-analysis.d.ts.map +1 -0
- package/dist/chart/render/chart-view-ex.d.ts +24 -0
- package/dist/chart/render/chart-view-ex.d.ts.map +1 -0
- package/dist/chart/render/chart-view-families.d.ts +10 -0
- package/dist/chart/render/chart-view-families.d.ts.map +1 -0
- package/dist/chart/render/chart-view-series.d.ts +36 -0
- package/dist/chart/render/chart-view-series.d.ts.map +1 -0
- package/dist/chart/render/chart-view-stock.d.ts +23 -0
- package/dist/chart/render/chart-view-stock.d.ts.map +1 -0
- package/dist/chart/render/chart-view.d.ts +49 -18
- package/dist/chart/render/chart-view.d.ts.map +1 -1
- package/dist/chart/render/index.d.ts +2 -0
- package/dist/chart/render/index.d.ts.map +1 -1
- package/dist/chart/render/render-space.d.ts +6 -1
- package/dist/chart/render/render-space.d.ts.map +1 -1
- package/dist/chart/render/summary-analysis.d.ts +11 -0
- package/dist/chart/render/summary-analysis.d.ts.map +1 -0
- package/dist/chart/render/summary-from-chartex.d.ts +11 -0
- package/dist/chart/render/summary-from-chartex.d.ts.map +1 -0
- package/dist/chart/render/summary-from-space.d.ts.map +1 -1
- package/dist/chart/render/summary.d.ts +86 -3
- package/dist/chart/render/summary.d.ts.map +1 -1
- package/dist/chart/stock-candles.d.ts +72 -0
- package/dist/chart/stock-candles.d.ts.map +1 -0
- package/dist/chart/style-palette.d.ts +29 -0
- package/dist/chart/style-palette.d.ts.map +1 -0
- package/dist/chart/sunburst-arcs.d.ts +41 -0
- package/dist/chart/sunburst-arcs.d.ts.map +1 -0
- package/dist/chart/trendline-fit.d.ts +39 -0
- package/dist/chart/trendline-fit.d.ts.map +1 -0
- package/dist/chart/waterfall.d.ts +31 -0
- package/dist/chart/waterfall.d.ts.map +1 -0
- package/dist/chart/write-analysis.d.ts +12 -0
- package/dist/chart/write-analysis.d.ts.map +1 -0
- package/dist/chart/write-series.d.ts.map +1 -1
- package/dist/{chunk-UAY26XOI.mjs → chunk-2EBMHIGJ.mjs} +1303 -994
- package/dist/{chunk-O6NIA4NG.mjs → chunk-7ZIZFJXT.mjs} +7392 -6581
- package/dist/{chunk-6DELVMYB.mjs → chunk-EMZIHAOH.mjs} +20558 -19733
- package/dist/{chunk-TVE6UIJF.mjs → chunk-HU36GIYM.mjs} +691 -208
- package/dist/{chunk-H2FRDUNV.mjs → chunk-JFMIPOPV.mjs} +868 -585
- package/dist/chunk-M4XLF4R7.mjs +387 -0
- package/dist/{chunk-G5PQKHCG.mjs → chunk-NWAQEXBK.mjs} +1 -1
- package/dist/{chunk-B2JBBAEQ.mjs → chunk-OPBZBSJF.mjs} +1 -1
- package/dist/{chunk-7QZGRB3T.cjs → chunk-X7MGZQ6C.cjs} +1321 -995
- package/dist/{chunk-IT3U6QD6.cjs → chunk-ZWI7MTLF.cjs} +11275 -10461
- package/dist/crypto/decrypt.d.ts +17 -3
- package/dist/crypto/decrypt.d.ts.map +1 -1
- package/dist/crypto/encryption-info.d.ts.map +1 -1
- package/dist/crypto/index.cjs +252 -78
- package/dist/crypto/index.d.ts +19 -4
- package/dist/crypto/index.d.ts.map +1 -1
- package/dist/crypto/index.mjs +252 -79
- package/dist/crypto/key-derivation.d.ts +2 -3
- package/dist/crypto/key-derivation.d.ts.map +1 -1
- package/dist/crypto/validate.d.ts +22 -0
- package/dist/crypto/validate.d.ts.map +1 -0
- package/dist/diagram/engine/layout-def-parse.d.ts.map +1 -1
- package/dist/diagram/engine/pres-tree.d.ts.map +1 -1
- package/dist/diagram/index.cjs +102 -52
- package/dist/diagram/index.mjs +102 -52
- package/dist/digest/index.cjs +23 -11
- package/dist/digest/index.d.ts +2 -1
- package/dist/digest/index.d.ts.map +1 -1
- package/dist/digest/index.mjs +21 -12
- package/dist/digest/password-hash.d.ts +19 -5
- package/dist/digest/password-hash.d.ts.map +1 -1
- package/dist/digest/timing-safe.d.ts +7 -0
- package/dist/digest/timing-safe.d.ts.map +1 -0
- package/dist/docx/block-parser.d.ts.map +1 -1
- package/dist/docx/chart-paint.d.ts.map +1 -1
- package/dist/docx/chart.d.ts +10 -2
- package/dist/docx/chart.d.ts.map +1 -1
- package/dist/docx/content-control-edit.d.ts +26 -0
- package/dist/docx/content-control-edit.d.ts.map +1 -0
- package/dist/docx/content-control-model.d.ts +51 -0
- package/dist/docx/content-control-model.d.ts.map +1 -0
- package/dist/docx/content-control.d.ts +9 -0
- package/dist/docx/content-control.d.ts.map +1 -0
- package/dist/docx/default-styles.d.ts.map +1 -1
- package/dist/docx/drawing.d.ts.map +1 -1
- package/dist/docx/embedded.cjs +9932 -935
- package/dist/docx/embedded.mjs +9932 -935
- package/dist/docx/equation.d.ts +7 -3
- package/dist/docx/equation.d.ts.map +1 -1
- package/dist/docx/index.cjs +14117 -1513
- package/dist/docx/index.d.ts +6 -0
- package/dist/docx/index.d.ts.map +1 -1
- package/dist/docx/index.mjs +14093 -1514
- package/dist/docx/inline-model.d.ts +3 -0
- package/dist/docx/inline-model.d.ts.map +1 -1
- package/dist/docx/layout/adapt-floats.d.ts +3 -3
- package/dist/docx/layout/adapt-floats.d.ts.map +1 -1
- package/dist/docx/layout/adapter.d.ts.map +1 -1
- package/dist/docx/layout/equation-object.d.ts +7 -0
- package/dist/docx/layout/equation-object.d.ts.map +1 -0
- package/dist/docx/layout/floats.d.ts +8 -0
- package/dist/docx/layout/floats.d.ts.map +1 -1
- package/dist/docx/layout/incremental-layout.d.ts +39 -0
- package/dist/docx/layout/incremental-layout.d.ts.map +1 -0
- package/dist/docx/layout/index.cjs +14177 -1707
- package/dist/docx/layout/index.d.ts +2 -2
- package/dist/docx/layout/index.d.ts.map +1 -1
- package/dist/docx/layout/index.mjs +14176 -1708
- package/dist/docx/layout/input.d.ts +4 -0
- package/dist/docx/layout/input.d.ts.map +1 -1
- package/dist/docx/layout/layout-session.d.ts +13 -2
- package/dist/docx/layout/layout-session.d.ts.map +1 -1
- package/dist/docx/layout/layout.d.ts +1 -1
- package/dist/docx/layout/layout.d.ts.map +1 -1
- package/dist/docx/layout/line-metrics.d.ts.map +1 -1
- package/dist/docx/layout/page-cursor.d.ts +1 -1
- package/dist/docx/layout/page-cursor.d.ts.map +1 -1
- package/dist/docx/layout/page-fields.d.ts +3 -1
- package/dist/docx/layout/page-fields.d.ts.map +1 -1
- package/dist/docx/layout/result.d.ts +14 -1
- package/dist/docx/layout/result.d.ts.map +1 -1
- package/dist/docx/layout/section-flow.d.ts +11 -1
- package/dist/docx/layout/section-flow.d.ts.map +1 -1
- package/dist/docx/ligatures.d.ts +2 -0
- package/dist/docx/ligatures.d.ts.map +1 -1
- package/dist/docx/load/index.cjs +12709 -3590
- package/dist/docx/load/index.mjs +12709 -3590
- package/dist/docx/model-paragraph.d.ts +3 -0
- package/dist/docx/model-paragraph.d.ts.map +1 -1
- package/dist/docx/model-run.d.ts +3 -0
- package/dist/docx/model-run.d.ts.map +1 -1
- package/dist/docx/model.d.ts +3 -0
- package/dist/docx/model.d.ts.map +1 -1
- package/dist/docx/numbering-parse.d.ts.map +1 -1
- package/dist/docx/numbering-text.d.ts.map +1 -1
- package/dist/docx/package-limits.d.ts +6 -0
- package/dist/docx/package-limits.d.ts.map +1 -0
- package/dist/docx/parse-content-control.d.ts +28 -0
- package/dist/docx/parse-content-control.d.ts.map +1 -0
- package/dist/docx/parse-table.d.ts.map +1 -1
- package/dist/docx/parse.d.ts.map +1 -1
- package/dist/docx/save.d.ts.map +1 -1
- package/dist/docx/shape-model.d.ts +31 -0
- package/dist/docx/shape-model.d.ts.map +1 -0
- package/dist/docx/shape-palette.d.ts +19 -0
- package/dist/docx/shape-palette.d.ts.map +1 -0
- package/dist/docx/shape-parse.d.ts +16 -0
- package/dist/docx/shape-parse.d.ts.map +1 -0
- package/dist/docx/shape-svg.d.ts +20 -0
- package/dist/docx/shape-svg.d.ts.map +1 -0
- package/dist/docx/table-model.d.ts +4 -0
- package/dist/docx/table-model.d.ts.map +1 -1
- package/dist/docx/ui/content-control-commands.d.ts +37 -0
- package/dist/docx/ui/content-control-commands.d.ts.map +1 -0
- package/dist/docx/ui/content-control-guard.d.ts +8 -0
- package/dist/docx/ui/content-control-guard.d.ts.map +1 -0
- package/dist/docx/ui/content-control-spans.d.ts +19 -0
- package/dist/docx/ui/content-control-spans.d.ts.map +1 -0
- package/dist/docx/ui/index.cjs +3132 -506
- package/dist/docx/ui/index.d.ts +3 -0
- package/dist/docx/ui/index.d.ts.map +1 -1
- package/dist/docx/ui/index.mjs +3117 -507
- package/dist/docx/ui/inline-content-schema.d.ts.map +1 -1
- package/dist/docx/ui/paragraph-attributes.d.ts.map +1 -1
- package/dist/docx/ui/ribbon-action-ids.d.ts +1 -1
- package/dist/docx/ui/ribbon-action-ids.d.ts.map +1 -1
- package/dist/docx/ui/run-adapter.d.ts.map +1 -1
- package/dist/docx/ui/run-compare.d.ts.map +1 -1
- package/dist/docx/ui/run-mark-properties.d.ts.map +1 -1
- package/dist/docx/ui/run-marks.d.ts.map +1 -1
- package/dist/docx/ui/schema-marks.d.ts +16 -1
- package/dist/docx/ui/schema-marks.d.ts.map +1 -1
- package/dist/docx/ui/table-structure-guard.d.ts.map +1 -1
- package/dist/docx/write-block-placement.d.ts +9 -0
- package/dist/docx/write-block-placement.d.ts.map +1 -0
- package/dist/docx/write-content-control.d.ts +12 -0
- package/dist/docx/write-content-control.d.ts.map +1 -0
- package/dist/docx/write-drawing.d.ts +2 -0
- package/dist/docx/write-drawing.d.ts.map +1 -1
- package/dist/docx/write-inline.d.ts.map +1 -1
- package/dist/docx/write-paragraph.d.ts.map +1 -1
- package/dist/docx/write-shape.d.ts +16 -0
- package/dist/docx/write-shape.d.ts.map +1 -0
- package/dist/docx/write-table.d.ts.map +1 -1
- package/dist/docx/write.d.ts.map +1 -1
- package/dist/drawingml/index.cjs +24 -0
- package/dist/drawingml/index.mjs +24 -0
- package/dist/geometry/index.cjs +322 -48
- package/dist/geometry/index.d.ts +1 -0
- package/dist/geometry/index.d.ts.map +1 -1
- package/dist/geometry/index.mjs +318 -49
- package/dist/geometry/preset-shape-definitions-table.d.ts.map +1 -1
- package/dist/geometry/shape-gallery-catalog.d.ts +32 -0
- package/dist/geometry/shape-gallery-catalog.d.ts.map +1 -0
- package/dist/index.cjs +4603 -1631
- package/dist/index.mjs +4603 -1631
- package/dist/math/equation-gallery.d.ts +10 -0
- package/dist/math/equation-gallery.d.ts.map +1 -0
- package/dist/math/index.cjs +777 -139
- package/dist/math/index.d.ts +3 -0
- package/dist/math/index.d.ts.map +1 -1
- package/dist/math/index.mjs +772 -140
- package/dist/math/latex-omml-siblings.d.ts.map +1 -1
- package/dist/math/latex-to-omml.d.ts.map +1 -1
- package/dist/math/omml-box-grouped.d.ts +9 -0
- package/dist/math/omml-box-grouped.d.ts.map +1 -0
- package/dist/math/omml-box-layout.d.ts +15 -0
- package/dist/math/omml-box-layout.d.ts.map +1 -0
- package/dist/math/omml-box-structures.d.ts +7 -0
- package/dist/math/omml-box-structures.d.ts.map +1 -0
- package/dist/math/omml-box.d.ts +85 -0
- package/dist/math/omml-box.d.ts.map +1 -0
- package/dist/math/omml-dom.d.ts.map +1 -1
- package/dist/math/omml-mathml-converters.d.ts.map +1 -1
- package/dist/math/omml-svg.d.ts +14 -0
- package/dist/math/omml-svg.d.ts.map +1 -0
- package/dist/math/omml-to-xml.d.ts +10 -0
- package/dist/math/omml-to-xml.d.ts.map +1 -0
- package/dist/opc/embedded-packages.d.ts.map +1 -1
- package/dist/opc/index.cjs +257 -22
- package/dist/opc/index.d.ts +1 -0
- package/dist/opc/index.d.ts.map +1 -1
- package/dist/opc/index.mjs +251 -23
- package/dist/opc/package.d.ts.map +1 -1
- package/dist/opc/signature/detection.d.ts +22 -6
- package/dist/opc/signature/detection.d.ts.map +1 -1
- package/dist/opc/signature/index.d.ts +1 -1
- package/dist/opc/signature/index.d.ts.map +1 -1
- package/dist/opc/signature/xml-utils.d.ts.map +1 -1
- package/dist/opc/zip-limits.d.ts +52 -0
- package/dist/opc/zip-limits.d.ts.map +1 -0
- package/dist/pptx/automation/index.cjs +3232 -1916
- package/dist/pptx/automation/index.d.ts +4 -4
- package/dist/pptx/automation/index.mjs +6 -6
- package/dist/pptx/chunks/{elements-DmbzOhFu.d.ts → elements-Cadkqht8.d.ts} +162 -10
- package/dist/pptx/chunks/elements-Cadkqht8.d.ts.map +1 -0
- package/dist/pptx/chunks/{index-BmvOxbsh.d.ts → index-CJI2EugA.d.ts} +27 -9
- package/dist/pptx/chunks/index-CJI2EugA.d.ts.map +1 -0
- package/dist/pptx/chunks/{index-Cija6Dih.d.ts → index-CozqpSPL.d.ts} +137 -5
- package/dist/pptx/chunks/index-CozqpSPL.d.ts.map +1 -0
- package/dist/pptx/chunks/inspection-status-DjiWd_Aa.d.ts.map +1 -1
- package/dist/pptx/chunks/{text-operations-sXxhsKDd.d.ts → text-operations-C3L9xrqx.d.ts} +2 -2
- package/dist/pptx/chunks/{text-operations-sXxhsKDd.d.ts.map → text-operations-C3L9xrqx.d.ts.map} +1 -1
- package/dist/pptx/cli/index.cjs +3156 -1848
- package/dist/pptx/cli/index.d.ts +1 -1
- package/dist/pptx/cli/index.mjs +5 -5
- package/dist/pptx/converter/index.cjs +87 -54
- package/dist/pptx/converter/index.d.ts +1 -1
- package/dist/pptx/converter/index.mjs +3 -3
- package/dist/pptx/editor/render/find-replace.cjs +14 -14
- package/dist/pptx/editor/render/find-replace.d.ts +2 -2
- package/dist/pptx/editor/render/find-replace.mjs +1 -1
- package/dist/pptx/editor/render/slide-operations.cjs +8 -8
- package/dist/pptx/editor/render/slide-operations.mjs +2 -2
- package/dist/pptx/editor/render/text-runs-style-patch.d.ts +1 -1
- package/dist/pptx/editor/render/text-style-scope.d.ts +1 -1
- package/dist/pptx/index.cjs +4105 -2075
- package/dist/pptx/index.d.ts +5 -5
- package/dist/pptx/index.mjs +6 -6
- package/dist/pptx/signature-node/index.cjs +342 -65
- package/dist/pptx/signature-node/index.d.ts +12 -1
- package/dist/pptx/signature-node/index.d.ts.map +1 -1
- package/dist/pptx/signature-node/index.mjs +112 -52
- package/dist/teams/activity-feed.d.ts +19 -0
- package/dist/teams/activity-feed.d.ts.map +1 -0
- package/dist/teams/activity-state.d.ts +12 -0
- package/dist/teams/activity-state.d.ts.map +1 -0
- package/dist/teams/activity.d.ts +52 -0
- package/dist/teams/activity.d.ts.map +1 -0
- package/dist/teams/calendar.d.ts +57 -0
- package/dist/teams/calendar.d.ts.map +1 -0
- package/dist/teams/chat-actions.d.ts +20 -0
- package/dist/teams/chat-actions.d.ts.map +1 -0
- package/dist/teams/chat-rooms.d.ts +42 -0
- package/dist/teams/chat-rooms.d.ts.map +1 -0
- package/dist/teams/chat-view.d.ts +56 -0
- package/dist/teams/chat-view.d.ts.map +1 -0
- package/dist/teams/chat.d.ts +19 -3
- package/dist/teams/chat.d.ts.map +1 -1
- package/dist/teams/chats.d.ts +52 -0
- package/dist/teams/chats.d.ts.map +1 -0
- package/dist/teams/ics-timezone.d.ts +17 -0
- package/dist/teams/ics-timezone.d.ts.map +1 -0
- package/dist/teams/ics.d.ts +20 -0
- package/dist/teams/ics.d.ts.map +1 -0
- package/dist/teams/index.cjs +7442 -3211
- package/dist/teams/index.d.ts +23 -0
- package/dist/teams/index.d.ts.map +1 -1
- package/dist/teams/index.mjs +7336 -3212
- package/dist/teams/meeting-actions.d.ts +31 -0
- package/dist/teams/meeting-actions.d.ts.map +1 -0
- package/dist/teams/meeting-exceptions.d.ts +28 -0
- package/dist/teams/meeting-exceptions.d.ts.map +1 -0
- package/dist/teams/meeting-reminders.d.ts +13 -0
- package/dist/teams/meeting-reminders.d.ts.map +1 -0
- package/dist/teams/meetings.d.ts +81 -0
- package/dist/teams/meetings.d.ts.map +1 -0
- package/dist/teams/mention-text.d.ts +11 -0
- package/dist/teams/mention-text.d.ts.map +1 -0
- package/dist/teams/mentions.d.ts +68 -0
- package/dist/teams/mentions.d.ts.map +1 -0
- package/dist/teams/model.d.ts +7 -0
- package/dist/teams/model.d.ts.map +1 -1
- package/dist/teams/notifications.d.ts +21 -0
- package/dist/teams/notifications.d.ts.map +1 -0
- package/dist/teams/recurrence-calendar.d.ts +41 -0
- package/dist/teams/recurrence-calendar.d.ts.map +1 -0
- package/dist/teams/recurrence.d.ts +18 -0
- package/dist/teams/recurrence.d.ts.map +1 -0
- package/dist/teams/roster.d.ts +12 -0
- package/dist/teams/roster.d.ts.map +1 -0
- package/dist/teams/server-config.d.ts +23 -2
- package/dist/teams/server-config.d.ts.map +1 -1
- package/dist/teams/server-session.d.ts +38 -0
- package/dist/teams/server-session.d.ts.map +1 -0
- package/dist/teams/shared-chat.d.ts +83 -0
- package/dist/teams/shared-chat.d.ts.map +1 -0
- package/dist/teams/store.d.ts +58 -4
- package/dist/teams/store.d.ts.map +1 -1
- package/dist/teams/sync-transport.d.ts +12 -0
- package/dist/teams/sync-transport.d.ts.map +1 -0
- package/dist/teams/time-zone.d.ts +32 -0
- package/dist/teams/time-zone.d.ts.map +1 -0
- package/dist/teams/view.d.ts +3 -0
- package/dist/teams/view.d.ts.map +1 -1
- package/dist/teams/workspace.d.ts +13 -2
- package/dist/teams/workspace.d.ts.map +1 -1
- package/dist/visio/edit-connector-follow.d.ts +15 -0
- package/dist/visio/edit-connector-follow.d.ts.map +1 -0
- package/dist/visio/edit-connector-obstacles.d.ts +9 -3
- package/dist/visio/edit-connector-obstacles.d.ts.map +1 -1
- package/dist/visio/edit-connector-reroute.d.ts.map +1 -1
- package/dist/visio/edit-connector.d.ts.map +1 -1
- package/dist/visio/edit-master-add.d.ts +37 -0
- package/dist/visio/edit-master-add.d.ts.map +1 -0
- package/dist/visio/edit-master-drop.d.ts +6 -0
- package/dist/visio/edit-master-drop.d.ts.map +1 -1
- package/dist/visio/edit-recalculate-index.d.ts +5 -0
- package/dist/visio/edit-recalculate-index.d.ts.map +1 -1
- package/dist/visio/edit-recalculate-values.d.ts.map +1 -1
- package/dist/visio/edit-stencil-connector-layout.d.ts +2 -0
- package/dist/visio/edit-stencil-connector-layout.d.ts.map +1 -1
- package/dist/visio/edit-stencil-connector.d.ts +1 -0
- package/dist/visio/edit-stencil-connector.d.ts.map +1 -1
- package/dist/visio/edit-stencil-import.d.ts +10 -0
- package/dist/visio/edit-stencil-import.d.ts.map +1 -0
- package/dist/visio/edit-stencil-line.d.ts +29 -0
- package/dist/visio/edit-stencil-line.d.ts.map +1 -0
- package/dist/visio/edit-stencil-master.d.ts +3 -8
- package/dist/visio/edit-stencil-master.d.ts.map +1 -1
- package/dist/visio/edit.d.ts.map +1 -1
- package/dist/visio/formula-evaluate.d.ts.map +1 -1
- package/dist/visio/formula-math-functions.d.ts +11 -0
- package/dist/visio/formula-math-functions.d.ts.map +1 -0
- package/dist/visio/formula-text-functions.d.ts +23 -0
- package/dist/visio/formula-text-functions.d.ts.map +1 -0
- package/dist/visio/formula.d.ts.map +1 -1
- package/dist/visio/index.cjs +2552 -1833
- package/dist/visio/index.d.ts +1 -0
- package/dist/visio/index.d.ts.map +1 -1
- package/dist/visio/index.mjs +2552 -1834
- package/dist/visio/parser.d.ts +6 -0
- package/dist/visio/parser.d.ts.map +1 -1
- package/dist/visio/stencil-file.d.ts +14 -0
- package/dist/visio/stencil-file.d.ts.map +1 -0
- package/dist/visio/ui/index.cjs +2398 -1679
- package/dist/visio/ui/index.mjs +2398 -1680
- package/dist/visio/ui/master-drop.d.ts +10 -0
- package/dist/visio/ui/master-drop.d.ts.map +1 -1
- package/dist/xlsx/edit/cell-values.d.ts.map +1 -1
- package/dist/xlsx/edit/clipboard-html-parse.d.ts +4 -0
- package/dist/xlsx/edit/clipboard-html-parse.d.ts.map +1 -1
- package/dist/xlsx/edit/data-table.d.ts +38 -0
- package/dist/xlsx/edit/data-table.d.ts.map +1 -0
- package/dist/xlsx/edit/drawings.d.ts.map +1 -1
- package/dist/xlsx/edit/goal-seek.d.ts +30 -0
- package/dist/xlsx/edit/goal-seek.d.ts.map +1 -0
- package/dist/xlsx/edit/goal-solver.d.ts +20 -0
- package/dist/xlsx/edit/goal-solver.d.ts.map +1 -0
- package/dist/xlsx/edit/history.d.ts +1 -1
- package/dist/xlsx/edit/history.d.ts.map +1 -1
- package/dist/xlsx/edit/index.d.ts +5 -0
- package/dist/xlsx/edit/index.d.ts.map +1 -1
- package/dist/xlsx/edit/input-text.d.ts.map +1 -1
- package/dist/xlsx/edit/pivots.d.ts +2 -1
- package/dist/xlsx/edit/pivots.d.ts.map +1 -1
- package/dist/xlsx/edit/scenarios.d.ts +41 -0
- package/dist/xlsx/edit/scenarios.d.ts.map +1 -0
- package/dist/xlsx/edit/session.d.ts.map +1 -1
- package/dist/xlsx/edit/slicers.d.ts +34 -0
- package/dist/xlsx/edit/slicers.d.ts.map +1 -0
- package/dist/xlsx/edit/table-edits.d.ts.map +1 -1
- package/dist/xlsx/edit/timelines.d.ts +26 -0
- package/dist/xlsx/edit/timelines.d.ts.map +1 -0
- package/dist/xlsx/edit/types.d.ts +39 -0
- package/dist/xlsx/edit/types.d.ts.map +1 -1
- package/dist/xlsx/formula/context.d.ts +13 -0
- package/dist/xlsx/formula/context.d.ts.map +1 -1
- package/dist/xlsx/formula/engine.d.ts.map +1 -1
- package/dist/xlsx/formula/evaluator.d.ts.map +1 -1
- package/dist/xlsx/formula/functions/helpers.d.ts +3 -2
- package/dist/xlsx/formula/functions/helpers.d.ts.map +1 -1
- package/dist/xlsx/formula/functions/text-regex.d.ts +8 -0
- package/dist/xlsx/formula/functions/text-regex.d.ts.map +1 -1
- package/dist/xlsx/formula/functions/text.d.ts.map +1 -1
- package/dist/xlsx/formula/functions/wildcard.d.ts +8 -0
- package/dist/xlsx/formula/functions/wildcard.d.ts.map +1 -0
- package/dist/xlsx/formula/values.d.ts +9 -0
- package/dist/xlsx/formula/values.d.ts.map +1 -1
- package/dist/xlsx/index.cjs +9203 -3496
- package/dist/xlsx/index.d.ts +1 -0
- package/dist/xlsx/index.d.ts.map +1 -1
- package/dist/xlsx/index.mjs +9117 -3496
- package/dist/xlsx/layout/chart-view.d.ts.map +1 -1
- package/dist/xlsx/layout/header-footer-edit.d.ts +16 -0
- package/dist/xlsx/layout/header-footer-edit.d.ts.map +1 -0
- package/dist/xlsx/layout/index.d.ts +3 -0
- package/dist/xlsx/layout/index.d.ts.map +1 -1
- package/dist/xlsx/layout/page-break-view.d.ts +39 -0
- package/dist/xlsx/layout/page-break-view.d.ts.map +1 -0
- package/dist/xlsx/layout/page-view.d.ts +69 -0
- package/dist/xlsx/layout/page-view.d.ts.map +1 -0
- package/dist/xlsx/layout/ref-evaluator.d.ts.map +1 -1
- package/dist/xlsx/load/index.cjs +4486 -1970
- package/dist/xlsx/load/index.mjs +4485 -1969
- package/dist/xlsx/model-pivots.d.ts +105 -6
- package/dist/xlsx/model-pivots.d.ts.map +1 -1
- package/dist/xlsx/model-slicers.d.ts +146 -0
- package/dist/xlsx/model-slicers.d.ts.map +1 -0
- package/dist/xlsx/model-whatif.d.ts +51 -0
- package/dist/xlsx/model-whatif.d.ts.map +1 -0
- package/dist/xlsx/model.d.ts +26 -1
- package/dist/xlsx/model.d.ts.map +1 -1
- package/dist/xlsx/pivot/admission.d.ts.map +1 -1
- package/dist/xlsx/pivot/aggregate.d.ts +18 -6
- package/dist/xlsx/pivot/aggregate.d.ts.map +1 -1
- package/dist/xlsx/pivot/axes.d.ts +11 -0
- package/dist/xlsx/pivot/axes.d.ts.map +1 -0
- package/dist/xlsx/pivot/cache-xml.d.ts.map +1 -1
- package/dist/xlsx/pivot/columns.d.ts +54 -0
- package/dist/xlsx/pivot/columns.d.ts.map +1 -0
- package/dist/xlsx/pivot/data.d.ts +9 -3
- package/dist/xlsx/pivot/data.d.ts.map +1 -1
- package/dist/xlsx/pivot/date-axes.d.ts +12 -0
- package/dist/xlsx/pivot/date-axes.d.ts.map +1 -0
- package/dist/xlsx/pivot/date-group-read.d.ts +11 -0
- package/dist/xlsx/pivot/date-group-read.d.ts.map +1 -0
- package/dist/xlsx/pivot/date-groups.d.ts +65 -0
- package/dist/xlsx/pivot/date-groups.d.ts.map +1 -0
- package/dist/xlsx/pivot/date-read.d.ts +10 -0
- package/dist/xlsx/pivot/date-read.d.ts.map +1 -0
- package/dist/xlsx/pivot/dates.d.ts +17 -0
- package/dist/xlsx/pivot/dates.d.ts.map +1 -0
- package/dist/xlsx/pivot/group-read.d.ts +9 -0
- package/dist/xlsx/pivot/group-read.d.ts.map +1 -0
- package/dist/xlsx/pivot/groups.d.ts +31 -0
- package/dist/xlsx/pivot/groups.d.ts.map +1 -0
- package/dist/xlsx/pivot/index.d.ts +8 -0
- package/dist/xlsx/pivot/index.d.ts.map +1 -1
- package/dist/xlsx/pivot/item-filters-read.d.ts +7 -0
- package/dist/xlsx/pivot/item-filters-read.d.ts.map +1 -0
- package/dist/xlsx/pivot/item-filters.d.ts +23 -0
- package/dist/xlsx/pivot/item-filters.d.ts.map +1 -0
- package/dist/xlsx/pivot/measures.d.ts +3 -8
- package/dist/xlsx/pivot/measures.d.ts.map +1 -1
- package/dist/xlsx/pivot/nested.d.ts +10 -0
- package/dist/xlsx/pivot/nested.d.ts.map +1 -0
- package/dist/xlsx/pivot/page-filter-admission.d.ts.map +1 -1
- package/dist/xlsx/pivot/page-filter.d.ts.map +1 -1
- package/dist/xlsx/pivot/read.d.ts +2 -1
- package/dist/xlsx/pivot/read.d.ts.map +1 -1
- package/dist/xlsx/pivot/subtotal-read.d.ts +9 -0
- package/dist/xlsx/pivot/subtotal-read.d.ts.map +1 -0
- package/dist/xlsx/pivot/subtotals.d.ts +28 -0
- package/dist/xlsx/pivot/subtotals.d.ts.map +1 -0
- package/dist/xlsx/pivot/table-xml.d.ts +1 -1
- package/dist/xlsx/pivot/table-xml.d.ts.map +1 -1
- package/dist/xlsx/pivot/values-axis.d.ts +9 -6
- package/dist/xlsx/pivot/values-axis.d.ts.map +1 -1
- package/dist/xlsx/read/chart-ex.d.ts +9 -0
- package/dist/xlsx/read/chart-ex.d.ts.map +1 -0
- package/dist/xlsx/read/chart.d.ts.map +1 -1
- package/dist/xlsx/read/drawing.d.ts.map +1 -1
- package/dist/xlsx/read/load.d.ts.map +1 -1
- package/dist/xlsx/read/package.d.ts +2 -1
- package/dist/xlsx/read/package.d.ts.map +1 -1
- package/dist/xlsx/read/scenarios.d.ts +4 -0
- package/dist/xlsx/read/scenarios.d.ts.map +1 -0
- package/dist/xlsx/read/sheet-data.d.ts.map +1 -1
- package/dist/xlsx/read/sheet-props.d.ts.map +1 -1
- package/dist/xlsx/read/tables.d.ts +3 -0
- package/dist/xlsx/read/tables.d.ts.map +1 -1
- package/dist/xlsx/read/worksheet.d.ts.map +1 -1
- package/dist/xlsx/slicer/book.d.ts +16 -0
- package/dist/xlsx/slicer/book.d.ts.map +1 -0
- package/dist/xlsx/slicer/frame.d.ts +14 -0
- package/dist/xlsx/slicer/frame.d.ts.map +1 -0
- package/dist/xlsx/slicer/index.d.ts +10 -0
- package/dist/xlsx/slicer/index.d.ts.map +1 -0
- package/dist/xlsx/slicer/items.d.ts +30 -0
- package/dist/xlsx/slicer/items.d.ts.map +1 -0
- package/dist/xlsx/slicer/layout.d.ts +67 -0
- package/dist/xlsx/slicer/layout.d.ts.map +1 -0
- package/dist/xlsx/slicer/read-slicers.d.ts +11 -0
- package/dist/xlsx/slicer/read-slicers.d.ts.map +1 -0
- package/dist/xlsx/slicer/read-timelines.d.ts +5 -0
- package/dist/xlsx/slicer/read-timelines.d.ts.map +1 -0
- package/dist/xlsx/slicer/read.d.ts +26 -0
- package/dist/xlsx/slicer/read.d.ts.map +1 -0
- package/dist/xlsx/slicer/select.d.ts +10 -0
- package/dist/xlsx/slicer/select.d.ts.map +1 -0
- package/dist/xlsx/slicer/styles.d.ts +36 -0
- package/dist/xlsx/slicer/styles.d.ts.map +1 -0
- package/dist/xlsx/slicer/table-filter.d.ts +28 -0
- package/dist/xlsx/slicer/table-filter.d.ts.map +1 -0
- package/dist/xlsx/slicer/timeline-periods.d.ts +35 -0
- package/dist/xlsx/slicer/timeline-periods.d.ts.map +1 -0
- package/dist/xlsx/slicer/timeline-view.d.ts +60 -0
- package/dist/xlsx/slicer/timeline-view.d.ts.map +1 -0
- package/dist/xlsx/slicer/write-plan.d.ts +31 -0
- package/dist/xlsx/slicer/write-plan.d.ts.map +1 -0
- package/dist/xlsx/slicer/write-timeline.d.ts +7 -0
- package/dist/xlsx/slicer/write-timeline.d.ts.map +1 -0
- package/dist/xlsx/slicer/write-xml.d.ts +17 -0
- package/dist/xlsx/slicer/write-xml.d.ts.map +1 -0
- package/dist/xlsx/ui/commands/i18n/index.d.ts.map +1 -1
- package/dist/xlsx/ui/commands/i18n/pivots.d.ts.map +1 -1
- package/dist/xlsx/ui/commands/i18n/print-layout.d.ts.map +1 -1
- package/dist/xlsx/ui/commands/i18n/slicers.d.ts +3 -0
- package/dist/xlsx/ui/commands/i18n/slicers.d.ts.map +1 -0
- package/dist/xlsx/ui/commands/i18n/what-if.d.ts +3 -0
- package/dist/xlsx/ui/commands/i18n/what-if.d.ts.map +1 -0
- package/dist/xlsx/ui/commands/icons.d.ts.map +1 -1
- package/dist/xlsx/ui/commands/slicers.d.ts +37 -0
- package/dist/xlsx/ui/commands/slicers.d.ts.map +1 -0
- package/dist/xlsx/ui/commands/what-if.d.ts +4 -0
- package/dist/xlsx/ui/commands/what-if.d.ts.map +1 -0
- package/dist/xlsx/ui/commands.d.ts +2 -0
- package/dist/xlsx/ui/commands.d.ts.map +1 -1
- package/dist/xlsx/ui/index.cjs +4142 -1570
- package/dist/xlsx/ui/index.d.ts +2 -0
- package/dist/xlsx/ui/index.d.ts.map +1 -1
- package/dist/xlsx/ui/index.mjs +4137 -1571
- package/dist/xlsx/ui/locales/de/shell.d.ts.map +1 -1
- package/dist/xlsx/ui/locales/en/shell.d.ts.map +1 -1
- package/dist/xlsx/ui/locales/es/shell.d.ts.map +1 -1
- package/dist/xlsx/ui/locales/fr/shell.d.ts.map +1 -1
- package/dist/xlsx/ui/locales/zh-CN/shell.d.ts.map +1 -1
- package/dist/xlsx/ui/ribbon/tabs/review-view.d.ts.map +1 -1
- package/dist/xlsx/write/carried-refs.d.ts.map +1 -1
- package/dist/xlsx/write/drawing.d.ts.map +1 -1
- package/dist/xlsx/write/package-writer.d.ts +2 -0
- package/dist/xlsx/write/package-writer.d.ts.map +1 -1
- package/dist/xlsx/write/save.d.ts.map +1 -1
- package/dist/xlsx/write/scenarios.d.ts +4 -0
- package/dist/xlsx/write/scenarios.d.ts.map +1 -0
- package/dist/xlsx/write/sheet-data.d.ts.map +1 -1
- package/dist/xlsx/write/sheet-parts.d.ts +1 -0
- package/dist/xlsx/write/sheet-parts.d.ts.map +1 -1
- package/dist/xlsx/write/sheet-props.d.ts.map +1 -1
- package/dist/xlsx/write/table-patch.d.ts.map +1 -1
- package/dist/xlsx/write/tables.d.ts.map +1 -1
- package/dist/xlsx/write/worksheet.d.ts.map +1 -1
- package/dist/xml/index.cjs +28 -0
- package/dist/xml/index.mjs +27 -1
- package/dist/xml/namespaces.d.ts +2 -0
- package/dist/xml/namespaces.d.ts.map +1 -1
- package/dist/xml/xml.d.ts +15 -0
- package/dist/xml/xml.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/PptxHandler-RWTOUCLC.mjs +0 -3
- package/dist/PptxHandler-UU4ZCT6H.cjs +0 -12
- package/dist/chunk-KBIJI6P5.mjs +0 -166
- package/dist/pptx/chunks/elements-DmbzOhFu.d.ts.map +0 -1
- package/dist/pptx/chunks/index-BmvOxbsh.d.ts.map +0 -1
- package/dist/pptx/chunks/index-Cija6Dih.d.ts.map +0 -1
- package/dist/xlsx/pivot/hierarchy-first.d.ts +0 -21
- package/dist/xlsx/pivot/hierarchy-first.d.ts.map +0 -1
- package/dist/xlsx/pivot/hierarchy.d.ts +0 -5
- package/dist/xlsx/pivot/hierarchy.d.ts.map +0 -1
package/dist/math/index.cjs
CHANGED
|
@@ -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
|
|
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
|
|
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
|
-
|
|
555
|
-
rows.push(
|
|
556
|
-
|
|
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
|
-
|
|
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 ||
|
|
572
|
-
|
|
573
|
-
rows.push(
|
|
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
|
|
607
|
+
const matrix2 = buildMatrix(ctx, rows);
|
|
608
608
|
const [open, close] = matrixDelims;
|
|
609
|
-
return open || close ? wrapDelimited(ctx,
|
|
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((
|
|
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
|
-
(
|
|
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
|
|
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
|
-
|
|
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}${
|
|
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.
|
|
1284
|
-
|
|
1285
|
-
|
|
1286
|
-
|
|
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, """);
|
|
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, """)}"` : "";
|
|
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
|
|
1762
|
-
const cells = ensureArray(
|
|
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/
|
|
1963
|
-
var
|
|
1964
|
-
"
|
|
1965
|
-
|
|
1966
|
-
|
|
1967
|
-
|
|
1968
|
-
}
|
|
1969
|
-
|
|
1970
|
-
|
|
1971
|
-
|
|
1972
|
-
|
|
1973
|
-
|
|
1974
|
-
|
|
1975
|
-
|
|
1976
|
-
|
|
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;
|