ooxml-core 1.19.2 → 1.21.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/README.md +47 -1
- package/dist/{PptxHandler-6TNIQ7S5.cjs → PptxHandler-DNSXWTQV.cjs} +3 -3
- package/dist/{PptxHandler-2V4PQL6O.mjs → PptxHandler-FSKKPZZC.mjs} +3 -3
- package/dist/PptxHandler-H7MEWJJJ.mjs +4 -0
- package/dist/{PresentationBuilder-G7MPEGXJ.mjs → PresentationBuilder-7TSENZTX.mjs} +2 -2
- package/dist/{PresentationBuilder-RM52LCVN.cjs → PresentationBuilder-A5NI35VN.cjs} +5 -5
- package/dist/{PresentationBuilder-HQ6C7L4V.mjs → PresentationBuilder-RIJWQSEU.mjs} +3 -3
- package/dist/automation/docx-forms.d.ts +26 -0
- package/dist/automation/docx-forms.d.ts.map +1 -0
- package/dist/automation/index.cjs +6280 -2506
- package/dist/automation/index.d.ts +1 -0
- package/dist/automation/index.d.ts.map +1 -1
- package/dist/automation/index.mjs +6277 -2507
- package/dist/automation/xlsx-read.d.ts +56 -0
- package/dist/automation/xlsx-read.d.ts.map +1 -0
- package/dist/automation/xlsx.d.ts +105 -4
- package/dist/automation/xlsx.d.ts.map +1 -1
- package/dist/chart/axis-range.d.ts.map +1 -1
- package/dist/chart/bubble-radius.d.ts +0 -5
- package/dist/chart/bubble-radius.d.ts.map +1 -1
- package/dist/chart/extent.d.ts +9 -0
- package/dist/chart/extent.d.ts.map +1 -0
- package/dist/chart/histogram-binning.d.ts.map +1 -1
- package/dist/chart/index.cjs +56 -18
- package/dist/chart/index.mjs +56 -18
- package/dist/chart/render/chart-svg-cartesian.d.ts.map +1 -1
- package/dist/chart/render/chart-svg-legend.d.ts.map +1 -1
- package/dist/chart/render/chart-view-ex.d.ts.map +1 -1
- package/dist/chart/render/chart-view.d.ts.map +1 -1
- package/dist/chart/trendline-fit.d.ts.map +1 -1
- package/dist/{chunk-NYTR4UZ5.cjs → chunk-4LZIUJI3.cjs} +52 -12
- package/dist/{chunk-SLNQNVQM.mjs → chunk-4QPOJCJG.mjs} +45 -8
- package/dist/{chunk-XTSHZGSM.mjs → chunk-6IIMI5RS.mjs} +52 -12
- package/dist/{chunk-TJPUAUWL.mjs → chunk-BA7Z6ATM.mjs} +9 -195
- package/dist/{chunk-JUABSM7C.mjs → chunk-DLFMCZZT.mjs} +1 -1
- package/dist/{chunk-M4XLF4R7.mjs → chunk-GBKBR4CX.mjs} +20 -8
- package/dist/{chunk-R5FIHHGB.cjs → chunk-HL3FBJ6X.cjs} +1648 -1205
- package/dist/{chunk-ZJ2OKIJN.mjs → chunk-LF5E5ZOH.mjs} +642 -199
- package/dist/{chunk-4FTUAD2B.mjs → chunk-Q5PKBQXH.mjs} +766 -202
- package/dist/{chunk-M6GDBVQ7.mjs → chunk-VQF6HQEE.mjs} +1 -1
- package/dist/collab/embedding.d.ts +103 -0
- package/dist/collab/embedding.d.ts.map +1 -0
- package/dist/collab/index.cjs +450 -342
- package/dist/collab/index.d.ts +1 -0
- package/dist/collab/index.d.ts.map +1 -1
- package/dist/collab/index.mjs +443 -343
- package/dist/color/theme-palette.d.ts +5 -1
- package/dist/color/theme-palette.d.ts.map +1 -1
- package/dist/crypto/index.cjs +27 -2
- package/dist/crypto/index.mjs +27 -2
- package/dist/diagram/index.cjs +31 -3
- package/dist/diagram/index.mjs +31 -3
- package/dist/docx/block-parser.d.ts.map +1 -1
- package/dist/docx/cell-blocks.d.ts +7 -1
- package/dist/docx/cell-blocks.d.ts.map +1 -1
- package/dist/docx/content-control-edit.d.ts +14 -0
- package/dist/docx/content-control-edit.d.ts.map +1 -1
- package/dist/docx/content-control-model.d.ts +8 -0
- package/dist/docx/content-control-model.d.ts.map +1 -1
- package/dist/docx/content-control-values.d.ts +20 -0
- package/dist/docx/content-control-values.d.ts.map +1 -0
- package/dist/docx/content-control.d.ts +7 -1
- package/dist/docx/content-control.d.ts.map +1 -1
- package/dist/docx/element-order.d.ts +10 -5
- package/dist/docx/element-order.d.ts.map +1 -1
- package/dist/docx/embedded.cjs +3861 -1379
- package/dist/docx/embedded.mjs +3861 -1379
- package/dist/docx/field-instruction.d.ts +22 -0
- package/dist/docx/field-instruction.d.ts.map +1 -0
- package/dist/docx/form-field-model.d.ts +48 -0
- package/dist/docx/form-field-model.d.ts.map +1 -0
- package/dist/docx/form-fields.d.ts +31 -0
- package/dist/docx/form-fields.d.ts.map +1 -0
- package/dist/docx/form-fill-fields.d.ts +61 -0
- package/dist/docx/form-fill-fields.d.ts.map +1 -0
- package/dist/docx/form-fill-labels.d.ts +8 -0
- package/dist/docx/form-fill-labels.d.ts.map +1 -0
- package/dist/docx/form-fill-sites.d.ts +59 -0
- package/dist/docx/form-fill-sites.d.ts.map +1 -0
- package/dist/docx/form-fill-values.d.ts +28 -0
- package/dist/docx/form-fill-values.d.ts.map +1 -0
- package/dist/docx/form-fill-write.d.ts +26 -0
- package/dist/docx/form-fill-write.d.ts.map +1 -0
- package/dist/docx/glossary.d.ts +15 -0
- package/dist/docx/glossary.d.ts.map +1 -0
- package/dist/docx/index.cjs +5929 -3153
- package/dist/docx/index.d.ts +7 -0
- package/dist/docx/index.d.ts.map +1 -1
- package/dist/docx/index.mjs +5913 -3154
- package/dist/docx/inline-annotations.d.ts +21 -0
- package/dist/docx/inline-annotations.d.ts.map +1 -0
- package/dist/docx/inline-container-markers.d.ts +14 -0
- package/dist/docx/inline-container-markers.d.ts.map +1 -0
- package/dist/docx/inline-containers.d.ts +54 -0
- package/dist/docx/inline-containers.d.ts.map +1 -0
- package/dist/docx/inline-form-field-bookmarks.d.ts +15 -0
- package/dist/docx/inline-form-field-bookmarks.d.ts.map +1 -0
- package/dist/docx/inline-marker-positions.d.ts +15 -0
- package/dist/docx/inline-marker-positions.d.ts.map +1 -0
- package/dist/docx/inline-markers.d.ts +63 -0
- package/dist/docx/inline-markers.d.ts.map +1 -0
- package/dist/docx/inline-slots.d.ts +24 -0
- package/dist/docx/inline-slots.d.ts.map +1 -0
- package/dist/docx/layout/adapter.d.ts.map +1 -1
- package/dist/docx/layout/index.cjs +1176 -563
- package/dist/docx/layout/index.d.ts +2 -1
- package/dist/docx/layout/index.d.ts.map +1 -1
- package/dist/docx/layout/index.mjs +1175 -564
- package/dist/docx/layout/input.d.ts +5 -1
- package/dist/docx/layout/input.d.ts.map +1 -1
- package/dist/docx/layout/page-style-refs.d.ts +21 -0
- package/dist/docx/layout/page-style-refs.d.ts.map +1 -0
- package/dist/docx/layout/paragraph-fragments.d.ts.map +1 -1
- package/dist/docx/layout/result.d.ts +1 -0
- package/dist/docx/layout/result.d.ts.map +1 -1
- package/dist/docx/layout/tab-stops.d.ts +8 -1
- package/dist/docx/layout/tab-stops.d.ts.map +1 -1
- package/dist/docx/load/index.cjs +3969 -1487
- package/dist/docx/load/index.mjs +3969 -1487
- package/dist/docx/model-run.d.ts +24 -2
- package/dist/docx/model-run.d.ts.map +1 -1
- package/dist/docx/model.d.ts +5 -0
- package/dist/docx/model.d.ts.map +1 -1
- package/dist/docx/numbering-format.d.ts.map +1 -1
- package/dist/docx/parse-warnings.d.ts.map +1 -1
- package/dist/docx/parse.d.ts.map +1 -1
- package/dist/docx/run-segmentation.d.ts +11 -0
- package/dist/docx/run-segmentation.d.ts.map +1 -0
- package/dist/docx/save.d.ts.map +1 -1
- package/dist/docx/section-model.d.ts +5 -0
- package/dist/docx/section-model.d.ts.map +1 -1
- package/dist/docx/sections.d.ts +4 -2
- package/dist/docx/sections.d.ts.map +1 -1
- package/dist/docx/settings.d.ts +9 -0
- package/dist/docx/settings.d.ts.map +1 -1
- package/dist/docx/special-characters.d.ts +34 -0
- package/dist/docx/special-characters.d.ts.map +1 -0
- package/dist/docx/style-ref-fields.d.ts +40 -0
- package/dist/docx/style-ref-fields.d.ts.map +1 -0
- package/dist/docx/style-ref.d.ts +85 -0
- package/dist/docx/style-ref.d.ts.map +1 -0
- package/dist/docx/table-model.d.ts +2 -2
- package/dist/docx/table-model.d.ts.map +1 -1
- package/dist/docx/ui/break-note-schema.d.ts.map +1 -1
- package/dist/docx/ui/content-control-commands.d.ts +20 -8
- package/dist/docx/ui/content-control-commands.d.ts.map +1 -1
- package/dist/docx/ui/content-control-guard.d.ts +4 -1
- package/dist/docx/ui/content-control-guard.d.ts.map +1 -1
- package/dist/docx/ui/content-control-paste.d.ts +23 -0
- package/dist/docx/ui/content-control-paste.d.ts.map +1 -0
- package/dist/docx/ui/content-control-rows.d.ts +15 -0
- package/dist/docx/ui/content-control-rows.d.ts.map +1 -0
- package/dist/docx/ui/content-control-sources.d.ts +12 -0
- package/dist/docx/ui/content-control-sources.d.ts.map +1 -0
- package/dist/docx/ui/content-control-spans.d.ts +29 -6
- package/dist/docx/ui/content-control-spans.d.ts.map +1 -1
- package/dist/docx/ui/content-control-temporary.d.ts +10 -0
- package/dist/docx/ui/content-control-temporary.d.ts.map +1 -0
- package/dist/docx/ui/form-field-commands.d.ts +41 -0
- package/dist/docx/ui/form-field-commands.d.ts.map +1 -0
- package/dist/docx/ui/form-field-guard.d.ts +24 -0
- package/dist/docx/ui/form-field-guard.d.ts.map +1 -0
- package/dist/docx/ui/form-text-blank.d.ts +18 -0
- package/dist/docx/ui/form-text-blank.d.ts.map +1 -0
- package/dist/docx/ui/index.cjs +9276 -7132
- package/dist/docx/ui/index.d.ts +5 -0
- package/dist/docx/ui/index.d.ts.map +1 -1
- package/dist/docx/ui/index.mjs +9259 -7137
- package/dist/docx/ui/positional-tab-input.d.ts +7 -0
- package/dist/docx/ui/positional-tab-input.d.ts.map +1 -0
- package/dist/docx/ui/run-compare.d.ts.map +1 -1
- package/dist/docx/ui/run-extra-mark.d.ts +1 -1
- package/dist/docx/ui/run-extra-mark.d.ts.map +1 -1
- package/dist/docx/ui/schema-marks.d.ts +1 -1
- package/dist/docx/ui/schema-marks.d.ts.map +1 -1
- package/dist/docx/ui/symbol-font.d.ts +4 -0
- package/dist/docx/ui/symbol-font.d.ts.map +1 -0
- package/dist/docx/ui/yjs-collaboration.d.ts +12 -1
- package/dist/docx/ui/yjs-collaboration.d.ts.map +1 -1
- package/dist/docx/write-block-placement.d.ts +7 -0
- package/dist/docx/write-block-placement.d.ts.map +1 -1
- package/dist/docx/write-content-control.d.ts +6 -0
- package/dist/docx/write-content-control.d.ts.map +1 -1
- package/dist/docx/write-header-footer.d.ts +6 -2
- package/dist/docx/write-header-footer.d.ts.map +1 -1
- package/dist/docx/write-inline.d.ts +12 -16
- package/dist/docx/write-inline.d.ts.map +1 -1
- package/dist/docx/write-paragraph.d.ts.map +1 -1
- package/dist/docx/write-revisions.d.ts.map +1 -1
- package/dist/docx/write-run.d.ts.map +1 -1
- package/dist/docx/write-section-properties.d.ts +5 -0
- package/dist/docx/write-section-properties.d.ts.map +1 -0
- package/dist/docx/write-sections.d.ts.map +1 -1
- package/dist/docx/write-table-controls.d.ts +15 -0
- package/dist/docx/write-table-controls.d.ts.map +1 -0
- package/dist/docx/write-table-properties.d.ts.map +1 -1
- package/dist/docx/write-table.d.ts.map +1 -1
- package/dist/docx/write.d.ts.map +1 -1
- package/dist/docx/xml.d.ts +6 -0
- package/dist/docx/xml.d.ts.map +1 -1
- package/dist/drawingml/index.cjs +31 -3
- package/dist/drawingml/index.mjs +31 -3
- package/dist/index.cjs +102 -26
- package/dist/index.mjs +102 -26
- package/dist/math/index.cjs +27 -2
- package/dist/math/index.mjs +27 -2
- package/dist/opc/index.cjs +51 -11
- package/dist/opc/index.mjs +51 -11
- package/dist/opc/zip-folders.d.ts +11 -0
- package/dist/opc/zip-folders.d.ts.map +1 -0
- package/dist/opc/zip-limits.d.ts +9 -0
- package/dist/opc/zip-limits.d.ts.map +1 -1
- package/dist/pptx/automation/index.cjs +995 -462
- package/dist/pptx/automation/index.d.ts +2 -2
- package/dist/pptx/automation/index.mjs +6 -6
- package/dist/pptx/chunks/{index-Bqm-jFG-.d.ts → index-CPhsd7Df.d.ts} +7580 -7507
- package/dist/pptx/chunks/index-CPhsd7Df.d.ts.map +1 -0
- package/dist/pptx/chunks/{index-B9x557hr.d.ts → index-Q5mM8kIR.d.ts} +2 -2
- package/dist/pptx/chunks/{index-B9x557hr.d.ts.map → index-Q5mM8kIR.d.ts.map} +1 -1
- package/dist/pptx/cli/index.cjs +770 -238
- package/dist/pptx/cli/index.mjs +5 -5
- package/dist/pptx/converter/index.cjs +12 -3
- 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 +1 -1
- 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/index.cjs +1099 -628
- package/dist/pptx/index.d.ts +3 -3
- package/dist/pptx/index.mjs +6 -6
- package/dist/pptx/signature-node/index.cjs +20 -8
- package/dist/pptx/signature-node/index.mjs +2 -2
- package/dist/teams/index.cjs +105 -70
- package/dist/teams/index.mjs +105 -70
- package/dist/text/text-diff.d.ts +15 -0
- package/dist/text/text-diff.d.ts.map +1 -0
- package/dist/visio/index.cjs +220 -46
- package/dist/visio/index.mjs +220 -46
- package/dist/visio/ui/contract.d.ts +8 -2
- package/dist/visio/ui/contract.d.ts.map +1 -1
- package/dist/visio/ui/index.cjs +227 -50
- package/dist/visio/ui/index.mjs +227 -50
- package/dist/xlsx/collab/index.cjs +8 -3
- package/dist/xlsx/collab/index.mjs +8 -3
- package/dist/xlsx/compare/cells.d.ts +22 -0
- package/dist/xlsx/compare/cells.d.ts.map +1 -0
- package/dist/xlsx/compare/compare.d.ts +12 -0
- package/dist/xlsx/compare/compare.d.ts.map +1 -0
- package/dist/xlsx/compare/conditional.d.ts +7 -0
- package/dist/xlsx/compare/conditional.d.ts.map +1 -0
- package/dist/xlsx/compare/format-key.d.ts +34 -0
- package/dist/xlsx/compare/format-key.d.ts.map +1 -0
- package/dist/xlsx/compare/group.d.ts +8 -0
- package/dist/xlsx/compare/group.d.ts.map +1 -0
- package/dist/xlsx/compare/index.d.ts +5 -0
- package/dist/xlsx/compare/index.d.ts.map +1 -0
- package/dist/xlsx/compare/rich-text.d.ts +7 -0
- package/dist/xlsx/compare/rich-text.d.ts.map +1 -0
- package/dist/xlsx/compare/sheets.d.ts +22 -0
- package/dist/xlsx/compare/sheets.d.ts.map +1 -0
- package/dist/xlsx/compare/structure.d.ts +11 -0
- package/dist/xlsx/compare/structure.d.ts.map +1 -0
- package/dist/xlsx/compare/text.d.ts +8 -0
- package/dist/xlsx/compare/text.d.ts.map +1 -0
- package/dist/xlsx/compare/types.d.ts +173 -0
- package/dist/xlsx/compare/types.d.ts.map +1 -0
- package/dist/xlsx/edit/cell-values.d.ts.map +1 -1
- package/dist/xlsx/edit/clipboard-html.d.ts.map +1 -1
- package/dist/xlsx/edit/clipboard-text.d.ts.map +1 -1
- package/dist/xlsx/edit/clipboard.d.ts.map +1 -1
- package/dist/xlsx/edit/clone-cell.d.ts +9 -0
- package/dist/xlsx/edit/clone-cell.d.ts.map +1 -0
- package/dist/xlsx/edit/dimensions.d.ts.map +1 -1
- package/dist/xlsx/edit/history-rows.d.ts +7 -0
- package/dist/xlsx/edit/history-rows.d.ts.map +1 -0
- package/dist/xlsx/edit/history.d.ts +19 -4
- package/dist/xlsx/edit/history.d.ts.map +1 -1
- package/dist/xlsx/edit/outline.d.ts.map +1 -1
- package/dist/xlsx/edit/row-autofit.d.ts.map +1 -1
- package/dist/xlsx/edit/timelines.d.ts.map +1 -1
- package/dist/xlsx/formula/change-areas.d.ts +9 -0
- package/dist/xlsx/formula/change-areas.d.ts.map +1 -0
- package/dist/xlsx/formula/engine-prepare.d.ts +8 -0
- package/dist/xlsx/formula/engine-prepare.d.ts.map +1 -1
- package/dist/xlsx/formula/engine.d.ts.map +1 -1
- package/dist/xlsx/formula/spill.d.ts +5 -1
- package/dist/xlsx/formula/spill.d.ts.map +1 -1
- package/dist/xlsx/index.cjs +2551 -1208
- package/dist/xlsx/index.d.ts +1 -0
- package/dist/xlsx/index.d.ts.map +1 -1
- package/dist/xlsx/index.mjs +2544 -1209
- package/dist/xlsx/layout/cell-view.d.ts.map +1 -1
- package/dist/xlsx/layout/navigate.d.ts.map +1 -1
- package/dist/xlsx/layout/style-view.d.ts +5 -0
- package/dist/xlsx/layout/style-view.d.ts.map +1 -1
- package/dist/xlsx/load/csv-dates.d.ts +22 -0
- package/dist/xlsx/load/csv-dates.d.ts.map +1 -0
- package/dist/xlsx/load/csv-import.d.ts +64 -0
- package/dist/xlsx/load/csv-import.d.ts.map +1 -0
- package/dist/xlsx/load/csv-separators.d.ts +13 -0
- package/dist/xlsx/load/csv-separators.d.ts.map +1 -0
- package/dist/xlsx/load/csv-traits.d.ts +20 -0
- package/dist/xlsx/load/csv-traits.d.ts.map +1 -0
- package/dist/xlsx/load/csv.d.ts +8 -4
- package/dist/xlsx/load/csv.d.ts.map +1 -1
- package/dist/xlsx/load/detect.d.ts +13 -0
- package/dist/xlsx/load/detect.d.ts.map +1 -1
- package/dist/xlsx/load/errors.d.ts +1 -0
- package/dist/xlsx/load/errors.d.ts.map +1 -1
- package/dist/xlsx/load/index.cjs +598 -98
- package/dist/xlsx/load/index.d.ts +3 -1
- package/dist/xlsx/load/index.d.ts.map +1 -1
- package/dist/xlsx/load/index.mjs +597 -99
- package/dist/xlsx/numfmt/format.d.ts +8 -0
- package/dist/xlsx/numfmt/format.d.ts.map +1 -1
- package/dist/xlsx/numfmt/input-date.d.ts +2 -0
- package/dist/xlsx/numfmt/input-date.d.ts.map +1 -1
- package/dist/xlsx/pivot/cache-xml.d.ts.map +1 -1
- package/dist/xlsx/pivot/groups.d.ts.map +1 -1
- package/dist/xlsx/read/index.d.ts +2 -1
- package/dist/xlsx/read/index.d.ts.map +1 -1
- package/dist/xlsx/read/limits.d.ts +50 -0
- package/dist/xlsx/read/limits.d.ts.map +1 -0
- package/dist/xlsx/read/load.d.ts +11 -1
- package/dist/xlsx/read/load.d.ts.map +1 -1
- package/dist/xlsx/read/package.d.ts +5 -23
- package/dist/xlsx/read/package.d.ts.map +1 -1
- package/dist/xlsx/read/shared-strings.d.ts +2 -2
- package/dist/xlsx/read/shared-strings.d.ts.map +1 -1
- package/dist/xlsx/read/sheet-data-source.d.ts.map +1 -1
- package/dist/xlsx/read/worksheet.d.ts +2 -0
- package/dist/xlsx/read/worksheet.d.ts.map +1 -1
- package/dist/xlsx/stable-key.d.ts +3 -0
- package/dist/xlsx/stable-key.d.ts.map +1 -0
- package/dist/xlsx/styles.d.ts.map +1 -1
- package/dist/xlsx/ui/index.cjs +795 -388
- package/dist/xlsx/ui/index.d.ts +1 -0
- package/dist/xlsx/ui/index.d.ts.map +1 -1
- package/dist/xlsx/ui/index.mjs +795 -389
- package/dist/xlsx/ui/selection-format.d.ts +13 -0
- package/dist/xlsx/ui/selection-format.d.ts.map +1 -0
- package/dist/xlsx/write/sheet-props.d.ts.map +1 -1
- package/dist/xml/index.cjs +57 -3
- package/dist/xml/index.mjs +57 -4
- package/dist/xml/lite.d.ts.map +1 -1
- package/dist/xml/xml.d.ts +11 -1
- package/dist/xml/xml.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/PptxHandler-HSPKEP5E.mjs +0 -4
- package/dist/pptx/chunks/index-Bqm-jFG-.d.ts.map +0 -1
package/dist/visio/index.mjs
CHANGED
|
@@ -74,6 +74,19 @@ var DEFAULT_XML_LIMITS = {
|
|
|
74
74
|
maxDepth: 512,
|
|
75
75
|
maxNodes: 5e6
|
|
76
76
|
};
|
|
77
|
+
var XmlLimitError = class extends Error {
|
|
78
|
+
code = "xml-limit";
|
|
79
|
+
/** The limit that was exceeded. */
|
|
80
|
+
limit;
|
|
81
|
+
/** Its value: the largest depth or element count allowed. */
|
|
82
|
+
maximum;
|
|
83
|
+
constructor(message, limit3, maximum) {
|
|
84
|
+
super(message);
|
|
85
|
+
this.name = "XmlLimitError";
|
|
86
|
+
this.limit = limit3;
|
|
87
|
+
this.maximum = maximum;
|
|
88
|
+
}
|
|
89
|
+
};
|
|
77
90
|
var TAG_RE = /<(\/?)([^\s\/><]+)(?:\s+[^\s=\/><]+\s*=\s*(?:"[^"<]*"|'[^'<]*'))*\s*(\/?)>/y;
|
|
78
91
|
var MARKUP_SKIPS = [
|
|
79
92
|
["<!--", "-->"],
|
|
@@ -107,11 +120,22 @@ function checkXmlLimits(xml, label, limits = {}) {
|
|
|
107
120
|
continue;
|
|
108
121
|
}
|
|
109
122
|
nodes++;
|
|
110
|
-
if (nodes > maxNodes)
|
|
123
|
+
if (nodes > maxNodes)
|
|
124
|
+
throw new XmlLimitError(
|
|
125
|
+
`${label} XML exceeds the limit of ${maxNodes} elements`,
|
|
126
|
+
"maxNodes",
|
|
127
|
+
maxNodes
|
|
128
|
+
);
|
|
111
129
|
if (!selfClosing && ++depth > maxDepth)
|
|
112
|
-
throw new
|
|
130
|
+
throw new XmlLimitError(
|
|
131
|
+
`${label} XML exceeds the nesting depth limit of ${maxDepth}`,
|
|
132
|
+
"maxDepth",
|
|
133
|
+
maxDepth
|
|
134
|
+
);
|
|
113
135
|
}
|
|
114
136
|
}
|
|
137
|
+
var CRLF_DECLARATION = /^<\?xml[^>]*\?>\r\n/;
|
|
138
|
+
var crlfDeclarations = /* @__PURE__ */ new WeakSet();
|
|
115
139
|
function parseXml(xml, options2 = {}) {
|
|
116
140
|
const label = options2.label ?? "OOXML";
|
|
117
141
|
if (/<!DOCTYPE|<!ENTITY/i.test(xml))
|
|
@@ -133,9 +157,13 @@ function parseXml(xml, options2 = {}) {
|
|
|
133
157
|
}
|
|
134
158
|
if (parseError || !parsed.documentElement)
|
|
135
159
|
throw new Error(`Invalid ${label} XML: ${parseError || "missing root element"}`);
|
|
160
|
+
if (CRLF_DECLARATION.test(xml)) crlfDeclarations.add(parsed);
|
|
136
161
|
return parsed;
|
|
137
162
|
}
|
|
138
|
-
var buildXml = (node3) =>
|
|
163
|
+
var buildXml = (node3) => {
|
|
164
|
+
const xml = new XMLSerializer().serializeToString(node3);
|
|
165
|
+
return crlfDeclarations.has(node3) ? xml.replace(/^(<\?xml[^>]*\?>)\n/, "$1\r\n") : xml;
|
|
166
|
+
};
|
|
139
167
|
var isElement = (node3) => node3.nodeType === 1;
|
|
140
168
|
var elements = (parent) => Array.from(parent.childNodes).filter(isElement);
|
|
141
169
|
function named(element2, local, ns, lenient = true) {
|
|
@@ -234,6 +262,12 @@ function parseLiteFragment(xml, container, namespaces) {
|
|
|
234
262
|
}
|
|
235
263
|
if (lt < 0) break;
|
|
236
264
|
const next = source.charCodeAt(lt + 1);
|
|
265
|
+
if (next === 33) {
|
|
266
|
+
const after = skipCommentOrCdata(source, lt, top);
|
|
267
|
+
if (after < 0) return void 0;
|
|
268
|
+
pos = after;
|
|
269
|
+
continue;
|
|
270
|
+
}
|
|
237
271
|
if (next === 47) {
|
|
238
272
|
const gt = source.indexOf(">", lt);
|
|
239
273
|
if (gt < 0 || stack.length < 2 || source.slice(lt + 2, gt).trimEnd() !== top.tagName)
|
|
@@ -254,6 +288,25 @@ function parseLiteFragment(xml, container, namespaces) {
|
|
|
254
288
|
}
|
|
255
289
|
return stack.length === 1 ? root2 : void 0;
|
|
256
290
|
}
|
|
291
|
+
var DECLARATIONS = /<!DOCTYPE|<!ENTITY/i;
|
|
292
|
+
function skipCommentOrCdata(source, lt, parent) {
|
|
293
|
+
if (source.startsWith("<!--", lt)) {
|
|
294
|
+
const end = source.indexOf("-->", lt + 4);
|
|
295
|
+
if (end < 0) return -1;
|
|
296
|
+
const body = source.slice(lt + 4, end);
|
|
297
|
+
if (body.includes("--") || body.endsWith("-") || DECLARATIONS.test(body)) return -1;
|
|
298
|
+
return end + 3;
|
|
299
|
+
}
|
|
300
|
+
if (source.startsWith("<![CDATA[", lt)) {
|
|
301
|
+
const end = source.indexOf("]]>", lt + 9);
|
|
302
|
+
if (end < 0) return -1;
|
|
303
|
+
const text6 = source.slice(lt + 9, end);
|
|
304
|
+
if (DECLARATIONS.test(text6)) return -1;
|
|
305
|
+
parent.childNodes.push(text6);
|
|
306
|
+
return end + 3;
|
|
307
|
+
}
|
|
308
|
+
return -1;
|
|
309
|
+
}
|
|
257
310
|
function startTag(source, from, namespaces) {
|
|
258
311
|
const n = source.length;
|
|
259
312
|
let i = from;
|
|
@@ -7659,9 +7712,9 @@ function createWorksheet(name3, sheetId5) {
|
|
|
7659
7712
|
};
|
|
7660
7713
|
}
|
|
7661
7714
|
|
|
7662
|
-
// xlsx/
|
|
7663
|
-
function
|
|
7664
|
-
return JSON.stringify(sortKeys(
|
|
7715
|
+
// xlsx/stable-key.ts
|
|
7716
|
+
function stableKey(value3) {
|
|
7717
|
+
return JSON.stringify(sortKeys(value3));
|
|
7665
7718
|
}
|
|
7666
7719
|
function sortKeys(value3) {
|
|
7667
7720
|
if (Array.isArray(value3)) return value3.map(sortKeys);
|
|
@@ -7675,6 +7728,11 @@ function sortKeys(value3) {
|
|
|
7675
7728
|
}
|
|
7676
7729
|
return value3;
|
|
7677
7730
|
}
|
|
7731
|
+
|
|
7732
|
+
// xlsx/styles.ts
|
|
7733
|
+
function styleKey(style2) {
|
|
7734
|
+
return stableKey(style2);
|
|
7735
|
+
}
|
|
7678
7736
|
function styleAt(workbook, styleId) {
|
|
7679
7737
|
const style2 = workbook.styles[styleId ?? 0] ?? workbook.styles[0];
|
|
7680
7738
|
if (!style2) throw new Error("Workbook has no default cell style");
|
|
@@ -10281,10 +10339,13 @@ var DEFAULT_ZIP_LIMITS = {
|
|
|
10281
10339
|
var ZipLimitError = class extends Error {
|
|
10282
10340
|
code = "ZIP_BOMB";
|
|
10283
10341
|
limit;
|
|
10342
|
+
/** The check that failed (absent when the error was built without one). */
|
|
10343
|
+
kind;
|
|
10284
10344
|
constructor(message, details) {
|
|
10285
10345
|
super(message);
|
|
10286
10346
|
this.name = "ZipLimitError";
|
|
10287
10347
|
this.limit = details.limit;
|
|
10348
|
+
this.kind = details.kind;
|
|
10288
10349
|
}
|
|
10289
10350
|
};
|
|
10290
10351
|
var mib = (bytes) => Math.round(bytes / 1048576);
|
|
@@ -10307,7 +10368,7 @@ function resolveLimits(limits) {
|
|
|
10307
10368
|
maxEntryBytes: limits.maxEntryBytes ?? DEFAULT_ZIP_LIMITS.maxEntryBytes,
|
|
10308
10369
|
maxTotalBytes: limits.maxTotalBytes ?? DEFAULT_ZIP_LIMITS.maxTotalBytes,
|
|
10309
10370
|
label: limits.label ?? "ZIP",
|
|
10310
|
-
fail: (message, limit3) => create2 ? create2(message, { limit: limit3 }) : new ZipLimitError(message, { limit: limit3 })
|
|
10371
|
+
fail: (message, limit3, kind) => create2 ? create2(message, { limit: limit3, kind }) : new ZipLimitError(message, { limit: limit3, kind })
|
|
10311
10372
|
};
|
|
10312
10373
|
}
|
|
10313
10374
|
function inflateEntryGuarded(entry3, alreadyRead, limits) {
|
|
@@ -10330,13 +10391,18 @@ function inflateEntryGuarded(entry3, alreadyRead, limits) {
|
|
|
10330
10391
|
size3 += chunk.byteLength;
|
|
10331
10392
|
if (size3 > declared || size3 > r.maxEntryBytes)
|
|
10332
10393
|
return abort(
|
|
10333
|
-
r.fail(
|
|
10394
|
+
r.fail(
|
|
10395
|
+
`${r.label} part ${entry3.name} inflates past its declared size`,
|
|
10396
|
+
r.maxEntryBytes,
|
|
10397
|
+
size3 > declared ? "declaredSize" : "maxEntryBytes"
|
|
10398
|
+
)
|
|
10334
10399
|
);
|
|
10335
10400
|
if (alreadyRead + size3 > r.maxTotalBytes)
|
|
10336
10401
|
return abort(
|
|
10337
10402
|
r.fail(
|
|
10338
10403
|
`${r.label} package exceeds the ${mib(r.maxTotalBytes)} MiB uncompressed content limit`,
|
|
10339
|
-
r.maxTotalBytes
|
|
10404
|
+
r.maxTotalBytes,
|
|
10405
|
+
"maxTotalBytes"
|
|
10340
10406
|
)
|
|
10341
10407
|
);
|
|
10342
10408
|
chunks.push(chunk);
|
|
@@ -10369,26 +10435,29 @@ function guardZip(zip, limits = {}) {
|
|
|
10369
10435
|
if (entries.length > r.maxEntries)
|
|
10370
10436
|
throw r.fail(
|
|
10371
10437
|
`${r.label} package exceeds the ${r.maxEntries.toLocaleString("en-US")} part limit`,
|
|
10372
|
-
r.maxEntries
|
|
10438
|
+
r.maxEntries,
|
|
10439
|
+
"maxEntries"
|
|
10373
10440
|
);
|
|
10374
10441
|
let declared = 0;
|
|
10375
10442
|
for (const entry3 of entries) {
|
|
10376
10443
|
const original = entry3.unsafeOriginalName;
|
|
10377
10444
|
if (!isSafePartName(entry3.name) || original !== void 0 && !isSafePartName(original))
|
|
10378
|
-
throw r.fail(`${r.label} package has an unsafe part name`, r.maxEntries);
|
|
10445
|
+
throw r.fail(`${r.label} package has an unsafe part name`, r.maxEntries, "partName");
|
|
10379
10446
|
if (entry3.dir) continue;
|
|
10380
10447
|
const size3 = declaredEntrySize(entry3);
|
|
10381
10448
|
if (size3 > r.maxEntryBytes)
|
|
10382
10449
|
throw r.fail(
|
|
10383
10450
|
`${r.label} part ${entry3.name} exceeds the uncompressed part size limit`,
|
|
10384
|
-
r.maxEntryBytes
|
|
10451
|
+
r.maxEntryBytes,
|
|
10452
|
+
"maxEntryBytes"
|
|
10385
10453
|
);
|
|
10386
10454
|
declared += size3;
|
|
10387
10455
|
}
|
|
10388
10456
|
if (declared > r.maxTotalBytes)
|
|
10389
10457
|
throw r.fail(
|
|
10390
10458
|
`${r.label} package exceeds the ${mib(r.maxTotalBytes)} MiB uncompressed content limit`,
|
|
10391
|
-
r.maxTotalBytes
|
|
10459
|
+
r.maxTotalBytes,
|
|
10460
|
+
"maxTotalBytes"
|
|
10392
10461
|
);
|
|
10393
10462
|
const produced = /* @__PURE__ */ new Map();
|
|
10394
10463
|
let total = 0;
|
|
@@ -12257,10 +12326,69 @@ function mergeComments(legacy, threaded) {
|
|
|
12257
12326
|
(a2, b) => a2.address.row - b.address.row || a2.address.col - b.address.col
|
|
12258
12327
|
);
|
|
12259
12328
|
}
|
|
12260
|
-
|
|
12261
|
-
|
|
12262
|
-
var
|
|
12263
|
-
|
|
12329
|
+
|
|
12330
|
+
// xlsx/read/limits.ts
|
|
12331
|
+
var DEFAULT_XLSX_LOAD_LIMITS = {
|
|
12332
|
+
maxInputBytes: 50 * 1024 * 1024,
|
|
12333
|
+
maxParts: 1e4,
|
|
12334
|
+
maxPartBytes: 200 * 1024 * 1024,
|
|
12335
|
+
maxTotalBytes: 300 * 1024 * 1024,
|
|
12336
|
+
maxXmlElements: 5e6
|
|
12337
|
+
};
|
|
12338
|
+
var WorkbookTooLargeError = class extends Error {
|
|
12339
|
+
code = "workbook-too-large";
|
|
12340
|
+
/** The limit that was exceeded, as named in {@link XlsxLoadLimits}. */
|
|
12341
|
+
limit;
|
|
12342
|
+
/** The value of that limit when the load failed. */
|
|
12343
|
+
maximum;
|
|
12344
|
+
constructor(message, limit3, maximum, options2) {
|
|
12345
|
+
super(message, options2);
|
|
12346
|
+
this.name = "WorkbookTooLargeError";
|
|
12347
|
+
this.limit = limit3;
|
|
12348
|
+
this.maximum = maximum;
|
|
12349
|
+
}
|
|
12350
|
+
};
|
|
12351
|
+
function resolveLoadLimits(limits = {}) {
|
|
12352
|
+
const resolved = { ...DEFAULT_XLSX_LOAD_LIMITS };
|
|
12353
|
+
for (const name3 of Object.keys(resolved)) {
|
|
12354
|
+
const value3 = limits[name3];
|
|
12355
|
+
if (value3 === void 0) continue;
|
|
12356
|
+
if (!Number.isFinite(value3) || value3 <= 0)
|
|
12357
|
+
throw new RangeError(`limits.${name3} must be a positive finite number`);
|
|
12358
|
+
resolved[name3] = value3;
|
|
12359
|
+
}
|
|
12360
|
+
return resolved;
|
|
12361
|
+
}
|
|
12362
|
+
var ZIP_LIMIT_NAMES = {
|
|
12363
|
+
maxInputBytes: "maxInputBytes",
|
|
12364
|
+
maxEntries: "maxParts",
|
|
12365
|
+
maxEntryBytes: "maxPartBytes",
|
|
12366
|
+
maxTotalBytes: "maxTotalBytes"
|
|
12367
|
+
};
|
|
12368
|
+
function zipLimitsFor(limits) {
|
|
12369
|
+
return {
|
|
12370
|
+
maxInputBytes: limits.maxInputBytes,
|
|
12371
|
+
maxEntries: limits.maxParts,
|
|
12372
|
+
maxEntryBytes: limits.maxPartBytes,
|
|
12373
|
+
maxTotalBytes: limits.maxTotalBytes,
|
|
12374
|
+
label: "XLSX",
|
|
12375
|
+
createError: (message, { limit: limit3, kind }) => {
|
|
12376
|
+
const name3 = ZIP_LIMIT_NAMES[kind];
|
|
12377
|
+
return name3 ? new WorkbookTooLargeError(message, name3, limit3) : new ZipLimitError(message, { limit: limit3, kind });
|
|
12378
|
+
}
|
|
12379
|
+
};
|
|
12380
|
+
}
|
|
12381
|
+
function parseDataXml(xml, label, maxXmlElements = DEFAULT_XLSX_LOAD_LIMITS.maxXmlElements) {
|
|
12382
|
+
try {
|
|
12383
|
+
return parseXml(xml, { label, limits: { maxNodes: maxXmlElements } });
|
|
12384
|
+
} catch (error) {
|
|
12385
|
+
if (error instanceof XmlLimitError && error.limit === "maxNodes")
|
|
12386
|
+
throw new WorkbookTooLargeError(error.message, "maxXmlElements", error.maximum, {
|
|
12387
|
+
cause: error
|
|
12388
|
+
});
|
|
12389
|
+
throw error;
|
|
12390
|
+
}
|
|
12391
|
+
}
|
|
12264
12392
|
var CONTENT_TYPES = {
|
|
12265
12393
|
workbook: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml",
|
|
12266
12394
|
workbookMacro: "application/vnd.ms-excel.sheet.macroEnabled.main+xml",
|
|
@@ -12331,16 +12459,15 @@ var SourceIndex = class {
|
|
|
12331
12459
|
};
|
|
12332
12460
|
var mib2 = (bytes) => Math.round(bytes / 1048576);
|
|
12333
12461
|
async function readZipParts(input, limits = {}) {
|
|
12334
|
-
const
|
|
12335
|
-
const
|
|
12336
|
-
maxEntries: limits.maxParts ?? MAX_PARTS,
|
|
12337
|
-
maxEntryBytes: limits.maxPartBytes ?? MAX_PART_BYTES,
|
|
12338
|
-
maxTotalBytes: limits.maxTotalBytes ?? MAX_UNCOMPRESSED_BYTES,
|
|
12339
|
-
label: "XLSX"
|
|
12340
|
-
};
|
|
12462
|
+
const resolved = resolveLoadLimits(limits);
|
|
12463
|
+
const maxInput = resolved.maxInputBytes;
|
|
12341
12464
|
const bytes = input instanceof Uint8Array ? input : new Uint8Array(input);
|
|
12342
12465
|
if (bytes.byteLength > maxInput)
|
|
12343
|
-
throw new
|
|
12466
|
+
throw new WorkbookTooLargeError(
|
|
12467
|
+
`XLSX package exceeds the ${mib2(maxInput)} MiB compressed input limit`,
|
|
12468
|
+
"maxInputBytes",
|
|
12469
|
+
maxInput
|
|
12470
|
+
);
|
|
12344
12471
|
let loaded;
|
|
12345
12472
|
try {
|
|
12346
12473
|
loaded = await JSZip.loadAsync(bytes);
|
|
@@ -12350,7 +12477,7 @@ async function readZipParts(input, limits = {}) {
|
|
|
12350
12477
|
{ cause: error }
|
|
12351
12478
|
);
|
|
12352
12479
|
}
|
|
12353
|
-
const zip = guardZip(loaded,
|
|
12480
|
+
const zip = guardZip(loaded, zipLimitsFor(resolved));
|
|
12354
12481
|
const parts = /* @__PURE__ */ new Map();
|
|
12355
12482
|
for (const entry3 of Object.values(zip.files)) {
|
|
12356
12483
|
if (entry3.dir) continue;
|
|
@@ -12557,9 +12684,9 @@ function parseRichString(element2, palette) {
|
|
|
12557
12684
|
const text6 = parsed.map((run) => run.text).join("");
|
|
12558
12685
|
return { text: text6, runs: parsed };
|
|
12559
12686
|
}
|
|
12560
|
-
function parseSharedStrings(xml, palette) {
|
|
12687
|
+
function parseSharedStrings(xml, palette, maxXmlElements) {
|
|
12561
12688
|
if (!xml) return [];
|
|
12562
|
-
const root2 =
|
|
12689
|
+
const root2 = parseDataXml(xml, "XLSX shared strings", maxXmlElements).documentElement;
|
|
12563
12690
|
return xChildren(root2, "si").map((si) => parseRichString(si, palette));
|
|
12564
12691
|
}
|
|
12565
12692
|
|
|
@@ -17150,21 +17277,50 @@ function rootNamespaces(xml) {
|
|
|
17150
17277
|
for (const match of (root2[2] ?? "").matchAll(DECLARATION2)) out[match[1] ?? ""] = match[3] ?? "";
|
|
17151
17278
|
return out;
|
|
17152
17279
|
}
|
|
17280
|
+
var SPECIAL = /<[!?]/g;
|
|
17281
|
+
var SECTIONS = [
|
|
17282
|
+
["<!--", "-->"],
|
|
17283
|
+
["<![CDATA[", "]]>"],
|
|
17284
|
+
["<?", "?>"]
|
|
17285
|
+
];
|
|
17286
|
+
function blankComments(xml) {
|
|
17287
|
+
if (!xml.includes("<!--") && !xml.includes("<![CDATA[")) return xml;
|
|
17288
|
+
const pieces = [];
|
|
17289
|
+
let copied = 0;
|
|
17290
|
+
SPECIAL.lastIndex = 0;
|
|
17291
|
+
for (let match = SPECIAL.exec(xml); match; match = SPECIAL.exec(xml)) {
|
|
17292
|
+
const at2 = match.index;
|
|
17293
|
+
const section3 = SECTIONS.find(([open2]) => xml.startsWith(open2, at2));
|
|
17294
|
+
if (!section3) return void 0;
|
|
17295
|
+
const [open, close4] = section3;
|
|
17296
|
+
const end = xml.indexOf(close4, at2 + open.length);
|
|
17297
|
+
if (end < 0) return void 0;
|
|
17298
|
+
const after = end + close4.length;
|
|
17299
|
+
if (open !== "<?") {
|
|
17300
|
+
pieces.push(xml.slice(copied, at2), " ".repeat(after - at2));
|
|
17301
|
+
copied = after;
|
|
17302
|
+
}
|
|
17303
|
+
SPECIAL.lastIndex = after;
|
|
17304
|
+
}
|
|
17305
|
+
pieces.push(xml.slice(copied));
|
|
17306
|
+
return pieces.join("");
|
|
17307
|
+
}
|
|
17153
17308
|
function splitSheetData(xml) {
|
|
17154
|
-
|
|
17155
|
-
|
|
17156
|
-
const
|
|
17309
|
+
const plain4 = blankComments(xml);
|
|
17310
|
+
if (plain4 === void 0) return void 0;
|
|
17311
|
+
const namespaces = rootNamespaces(plain4);
|
|
17312
|
+
const open = OPEN.exec(plain4);
|
|
17157
17313
|
if (!namespaces || !open) return void 0;
|
|
17158
17314
|
const prefix2 = (open[1] ?? "").slice(0, -1);
|
|
17159
17315
|
const ns = namespaces[prefix2];
|
|
17160
17316
|
if (prefix2 && ns === void 0) return void 0;
|
|
17161
17317
|
const tagName2 = `${open[1] ?? ""}sheetData`;
|
|
17162
|
-
const openEnd =
|
|
17318
|
+
const openEnd = plain4.indexOf(">", open.index);
|
|
17163
17319
|
if (openEnd < 0) return void 0;
|
|
17164
|
-
const attributes =
|
|
17320
|
+
const attributes = plain4.slice(open.index + tagName2.length + 1, openEnd);
|
|
17165
17321
|
if (attributes.trimEnd().endsWith("/") || attributes.includes("xmlns")) return void 0;
|
|
17166
|
-
const close4 =
|
|
17167
|
-
if (close4 < 0 || OPEN.test(
|
|
17322
|
+
const close4 = plain4.indexOf(`</${tagName2}`, openEnd);
|
|
17323
|
+
if (close4 < 0 || OPEN.test(plain4.slice(openEnd))) return void 0;
|
|
17168
17324
|
const container = new LiteElement(tagName2, "sheetData", ns || null);
|
|
17169
17325
|
const data = parseLiteFragment(xml.slice(openEnd + 1, close4), container, namespaces);
|
|
17170
17326
|
if (!data) return void 0;
|
|
@@ -17364,7 +17520,11 @@ function parseWorksheet(ctx, partName, name3, sheetId5) {
|
|
|
17364
17520
|
return sheet;
|
|
17365
17521
|
}
|
|
17366
17522
|
const split = splitSheetData(xml);
|
|
17367
|
-
const root2 =
|
|
17523
|
+
const root2 = parseDataXml(
|
|
17524
|
+
split?.xml ?? xml,
|
|
17525
|
+
"XLSX worksheet",
|
|
17526
|
+
ctx.maxXmlElements
|
|
17527
|
+
).documentElement;
|
|
17368
17528
|
const byName = /* @__PURE__ */ new Map();
|
|
17369
17529
|
const cfBlocks = [];
|
|
17370
17530
|
for (const node3 of elements(root2)) {
|
|
@@ -17438,8 +17598,9 @@ function liftPrintAreas(workbook) {
|
|
|
17438
17598
|
return false;
|
|
17439
17599
|
});
|
|
17440
17600
|
}
|
|
17441
|
-
async function loadXlsx(input) {
|
|
17442
|
-
const
|
|
17601
|
+
async function loadXlsx(input, options2 = {}) {
|
|
17602
|
+
const limits = resolveLoadLimits(options2.limits);
|
|
17603
|
+
const parts = await readZipParts(input, limits);
|
|
17443
17604
|
const source = new SourceIndex(parts);
|
|
17444
17605
|
const workbookPart = source.workbookPart();
|
|
17445
17606
|
if (!workbookPart) throw new Error("XLSX package has no workbook part (xl/workbook.xml)");
|
|
@@ -17460,7 +17621,8 @@ async function loadXlsx(input) {
|
|
|
17460
17621
|
source,
|
|
17461
17622
|
sharedStrings: parseSharedStrings(
|
|
17462
17623
|
stringsPart ? source.text(stringsPart) : void 0,
|
|
17463
|
-
styles.palette
|
|
17624
|
+
styles.palette,
|
|
17625
|
+
limits.maxXmlElements
|
|
17464
17626
|
),
|
|
17465
17627
|
xfMap: styles.xfMap,
|
|
17466
17628
|
date1904: book.date1904,
|
|
@@ -17468,7 +17630,8 @@ async function loadXlsx(input) {
|
|
|
17468
17630
|
dxfs: styles.dxfs,
|
|
17469
17631
|
persons: parsePersons(personsPart ? source.text(personsPart) : void 0),
|
|
17470
17632
|
dynamicCells: parseDynamicArrayMetadata(metadataPart ? source.text(metadataPart) : void 0),
|
|
17471
|
-
warn
|
|
17633
|
+
warn,
|
|
17634
|
+
maxXmlElements: limits.maxXmlElements
|
|
17472
17635
|
};
|
|
17473
17636
|
const rels = source.rels(workbookPart);
|
|
17474
17637
|
const sheets = book.sheets.map((entry3) => {
|
|
@@ -17951,14 +18114,24 @@ function formatAxisValue(value3, percent = false) {
|
|
|
17951
18114
|
return `${v < 0 ? "-" : ""}${grouped}${frac ? `.${frac}` : ""}`;
|
|
17952
18115
|
}
|
|
17953
18116
|
|
|
18117
|
+
// chart/extent.ts
|
|
18118
|
+
function extentOf(values) {
|
|
18119
|
+
let min = Infinity;
|
|
18120
|
+
let max = -Infinity;
|
|
18121
|
+
for (const value3 of values) {
|
|
18122
|
+
min = Math.min(min, value3);
|
|
18123
|
+
max = Math.max(max, value3);
|
|
18124
|
+
}
|
|
18125
|
+
return { min, max };
|
|
18126
|
+
}
|
|
18127
|
+
|
|
17954
18128
|
// chart/axis-range.ts
|
|
17955
18129
|
function computeLogValueRange(series, logBase) {
|
|
17956
18130
|
const allValues = series.flatMap((item) => item.values).filter((value3) => value3 !== null && Number.isFinite(value3) && value3 > 0);
|
|
17957
18131
|
if (allValues.length === 0) {
|
|
17958
18132
|
return { min: 1, max: logBase, span: 1, logScale: true, logBase };
|
|
17959
18133
|
}
|
|
17960
|
-
const dataMin =
|
|
17961
|
-
const dataMax = Math.max(...allValues);
|
|
18134
|
+
const { min: dataMin, max: dataMax } = extentOf(allValues);
|
|
17962
18135
|
const logMin = Math.floor(Math.log(dataMin) / Math.log(logBase));
|
|
17963
18136
|
const logMax = Math.ceil(Math.log(dataMax) / Math.log(logBase));
|
|
17964
18137
|
const min = logBase ** logMin;
|
|
@@ -18686,8 +18859,7 @@ function computeHistogramBins(values, options2, format5 = String) {
|
|
|
18686
18859
|
});
|
|
18687
18860
|
}
|
|
18688
18861
|
if (regular.length > 0) {
|
|
18689
|
-
const min =
|
|
18690
|
-
const max = Math.max(...regular.map((item) => item.value));
|
|
18862
|
+
const { min, max } = extentOf(regular.map((item) => item.value));
|
|
18691
18863
|
const requestedSize = options2.binSize && options2.binSize > 0 ? options2.binSize : void 0;
|
|
18692
18864
|
const requestedCount = options2.binCount && options2.binCount > 0 ? options2.binCount : void 0;
|
|
18693
18865
|
const start = requestedSize ? Math.floor(min / requestedSize) * requestedSize : min;
|
|
@@ -18815,8 +18987,9 @@ function waterfallView(chart, model2, ctx) {
|
|
|
18815
18987
|
colors: { increase: role(0), decrease: role(1), total: role(2) }
|
|
18816
18988
|
};
|
|
18817
18989
|
const ends = steps.flatMap((step2) => [step2.startValue, step2.endValue]);
|
|
18990
|
+
const range2 = extentOf(ends);
|
|
18818
18991
|
model2.valueAxis = {
|
|
18819
|
-
...ends.length ? niceScale(
|
|
18992
|
+
...ends.length ? niceScale(range2.min, range2.max) : niceScale(0, 1),
|
|
18820
18993
|
percent: false
|
|
18821
18994
|
};
|
|
18822
18995
|
const labels = model2.categories;
|
|
@@ -18932,7 +19105,8 @@ function chartSummaryView(chart, theme2, options2 = {}) {
|
|
|
18932
19105
|
s.xValues = s.values.map((_, k) => numeric5 ? toNumber(cats[k] ?? null) : k + 1);
|
|
18933
19106
|
});
|
|
18934
19107
|
const xs = series.flatMap((s) => s.xValues ?? []).filter((x) => x !== null);
|
|
18935
|
-
|
|
19108
|
+
const range2 = extentOf(xs);
|
|
19109
|
+
model2.xAxis = xs.length ? niceScale(range2.min, range2.max) : niceScale(0, 1);
|
|
18936
19110
|
}
|
|
18937
19111
|
if (type === "stock") model2.stock = stockView(chart.stock, ctx);
|
|
18938
19112
|
if (type === "bubble") bubbleView(chart, model2, ctx.evaluateRef);
|
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
import type { RibbonAddInCommandDetail, RibbonAddInTab } from '../../ribbon/index.js';
|
|
2
|
+
import type { CollaborationOptions, CollaborationState } from '../../collab/index.js';
|
|
2
3
|
import type { VisioDocument } from '../index.js';
|
|
3
4
|
export interface ViewerProperties {
|
|
5
|
+
canEdit?: boolean;
|
|
4
6
|
document: VisioDocument | null;
|
|
5
7
|
pageIndex: number;
|
|
6
8
|
zoom: number;
|
|
7
9
|
showToolbar: boolean;
|
|
8
10
|
/** Tabs the host adds after Help, as an Office add-in does. */
|
|
9
11
|
ribbonAddIns: readonly RibbonAddInTab[];
|
|
12
|
+
/** Shares the open drawing in a room while set; null leaves it (the shared embedding contract). */
|
|
13
|
+
collaboration: CollaborationOptions | null;
|
|
10
14
|
}
|
|
11
15
|
/** A page-scoped shape identity. Omitted pageId means the currently displayed page. */
|
|
12
16
|
export interface VisioShapeSelection {
|
|
@@ -29,12 +33,14 @@ export interface ViewerEvents {
|
|
|
29
33
|
'selection-change': readonly VisioShapeSelection[];
|
|
30
34
|
/** A command of a host tab (`ribbonAddIns`) was chosen. */
|
|
31
35
|
'office-ribbon-add-in': RibbonAddInCommandDetail;
|
|
36
|
+
/** Sharing started, stopped or its status, sync or people changed. */
|
|
37
|
+
'collaboration-change': CollaborationState;
|
|
32
38
|
}
|
|
33
39
|
export type ViewerCallbacks = {
|
|
34
40
|
[K in keyof ViewerEvents]?: (detail: ViewerEvents[K]) => void;
|
|
35
41
|
};
|
|
36
|
-
export declare const propertyKeys: readonly ["document", "pageIndex", "zoom", "showToolbar", "ribbonAddIns"];
|
|
37
|
-
export declare const eventKeys: readonly ["document-load", "document-change", "document-error", "page-change", "zoom-change", "shape-select", "selection-change", "office-ribbon-add-in"];
|
|
42
|
+
export declare const propertyKeys: readonly ["canEdit", "document", "pageIndex", "zoom", "showToolbar", "ribbonAddIns", "collaboration"];
|
|
43
|
+
export declare const eventKeys: readonly ["document-load", "document-change", "document-error", "page-change", "zoom-change", "shape-select", "selection-change", "office-ribbon-add-in", "collaboration-change"];
|
|
38
44
|
export type VsdxSource = ArrayBuffer | Uint8Array | Blob;
|
|
39
45
|
export interface ViewerOptions extends Partial<ViewerProperties> {
|
|
40
46
|
events?: ViewerCallbacks;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../../../visio/ui/contract.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACnF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE9C,MAAM,WAAW,gBAAgB;IAChC,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,OAAO,CAAC;IACrB,+DAA+D;IAC/D,YAAY,EAAE,SAAS,cAAc,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../../../visio/ui/contract.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACnF,OAAO,KAAK,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACnF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE9C,MAAM,WAAW,gBAAgB;IAChC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,OAAO,CAAC;IACrB,+DAA+D;IAC/D,YAAY,EAAE,SAAS,cAAc,EAAE,CAAC;IACxC,mGAAmG;IACnG,aAAa,EAAE,oBAAoB,GAAG,IAAI,CAAC;CAC3C;AACD,uFAAuF;AACvF,MAAM,WAAW,mBAAmB;IACnC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CACzB;AACD,MAAM,WAAW,YAAY;IAC5B,eAAe,EAAE,aAAa,CAAC;IAC/B,iBAAiB,EAAE;QAClB,QAAQ,EAAE,aAAa,CAAC;QACxB,KAAK,EAAE,OAAO,CAAC;QACf,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;KAC1C,CAAC;IACF,gBAAgB,EAAE,KAAK,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAC3C,iFAAiF;IACjF,kBAAkB,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACnD,2DAA2D;IAC3D,sBAAsB,EAAE,wBAAwB,CAAC;IACjD,sEAAsE;IACtE,sBAAsB,EAAE,kBAAkB,CAAC;CAC3C;AACD,MAAM,MAAM,eAAe,GAAG;KAC5B,CAAC,IAAI,MAAM,YAAY,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,IAAI;CAC7D,CAAC;AACF,eAAO,MAAM,YAAY,uGAQ+B,CAAC;AACzD,eAAO,MAAM,SAAS,mLAU8B,CAAC;AASrD,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,UAAU,GAAG,IAAI,CAAC;AACzD,MAAM,WAAW,aAAc,SAAQ,OAAO,CAAC,gBAAgB,CAAC;IAC/D,MAAM,CAAC,EAAE,eAAe,CAAC;CACzB"}
|