@cj-tech-master/excelts 9.4.2 → 9.5.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/browser/index.browser.d.ts +8 -5
- package/dist/browser/index.browser.js +19 -1
- package/dist/browser/index.d.ts +4 -2
- package/dist/browser/index.js +9 -1
- package/dist/browser/modules/excel/chart/cache-populator.d.ts +49 -0
- package/dist/browser/modules/excel/chart/cache-populator.js +1171 -0
- package/dist/browser/modules/excel/chart/chart-api.d.ts +92 -0
- package/dist/browser/modules/excel/chart/chart-api.js +364 -0
- package/dist/browser/modules/excel/chart/chart-builder.d.ts +48 -0
- package/dist/browser/modules/excel/chart/chart-builder.js +2432 -0
- package/dist/browser/modules/excel/chart/chart-ex-builder.d.ts +36 -0
- package/dist/browser/modules/excel/chart/chart-ex-builder.js +903 -0
- package/dist/browser/modules/excel/chart/chart-ex-parser.d.ts +8 -0
- package/dist/browser/modules/excel/chart/chart-ex-parser.js +1205 -0
- package/dist/browser/modules/excel/chart/chart-ex-renderer.d.ts +187 -0
- package/dist/browser/modules/excel/chart/chart-ex-renderer.js +5352 -0
- package/dist/browser/modules/excel/chart/chart-ex-types.d.ts +531 -0
- package/dist/browser/modules/excel/chart/chart-ex-types.js +11 -0
- package/dist/browser/modules/excel/chart/chart-images.d.ts +78 -0
- package/dist/browser/modules/excel/chart/chart-images.js +363 -0
- package/dist/browser/modules/excel/chart/chart-presets.d.ts +392 -0
- package/dist/browser/modules/excel/chart/chart-presets.js +179 -0
- package/dist/browser/modules/excel/chart/chart-renderer.d.ts +550 -0
- package/dist/browser/modules/excel/chart/chart-renderer.js +6440 -0
- package/dist/browser/modules/excel/chart/chart-sidecar.d.ts +21 -0
- package/dist/browser/modules/excel/chart/chart-sidecar.js +427 -0
- package/dist/browser/modules/excel/chart/chart-utils.d.ts +306 -0
- package/dist/browser/modules/excel/chart/chart-utils.js +821 -0
- package/dist/browser/modules/excel/chart/chart.d.ts +504 -0
- package/dist/browser/modules/excel/chart/chart.js +1320 -0
- package/dist/browser/modules/excel/chart/glyph-rasterizer.d.ts +62 -0
- package/dist/browser/modules/excel/chart/glyph-rasterizer.js +658 -0
- package/dist/browser/modules/excel/chart/index.d.ts +54 -0
- package/dist/browser/modules/excel/chart/index.js +46 -0
- package/dist/browser/modules/excel/chart/install.d.ts +44 -0
- package/dist/browser/modules/excel/chart/install.js +91 -0
- package/dist/browser/modules/excel/chart/shape-properties.d.ts +156 -0
- package/dist/browser/modules/excel/chart/shape-properties.js +1557 -0
- package/dist/browser/modules/excel/chart/stroke-font.d.ts +36 -0
- package/dist/browser/modules/excel/chart/stroke-font.js +1556 -0
- package/dist/browser/modules/excel/chart/topojson.d.ts +98 -0
- package/dist/browser/modules/excel/chart/topojson.js +236 -0
- package/dist/browser/modules/excel/chart/types.d.ts +2559 -0
- package/dist/browser/modules/excel/chart/types.js +8 -0
- package/dist/browser/modules/excel/chart-host-registry.d.ts +157 -0
- package/dist/browser/modules/excel/chart-host-registry.js +90 -0
- package/dist/browser/modules/excel/chartsheet.d.ts +102 -0
- package/dist/browser/modules/excel/chartsheet.js +196 -0
- package/dist/browser/modules/excel/defined-names.d.ts +35 -0
- package/dist/browser/modules/excel/defined-names.js +44 -4
- package/dist/browser/modules/excel/errors.d.ts +6 -0
- package/dist/browser/modules/excel/errors.js +9 -0
- package/dist/browser/modules/excel/form-control.d.ts +6 -0
- package/dist/browser/modules/excel/form-control.js +17 -0
- package/dist/browser/modules/excel/image.js +12 -2
- package/dist/browser/modules/excel/pivot-chart.d.ts +7 -0
- package/dist/browser/modules/excel/pivot-chart.js +53 -0
- package/dist/browser/modules/excel/pivot-table.d.ts +55 -0
- package/dist/browser/modules/excel/pivot-table.js +35 -0
- package/dist/browser/modules/excel/range.js +5 -1
- package/dist/browser/modules/excel/sparkline/index.d.ts +7 -0
- package/dist/browser/modules/excel/sparkline/index.js +7 -0
- package/dist/browser/modules/excel/sparkline/sparkline.d.ts +206 -0
- package/dist/browser/modules/excel/sparkline/sparkline.js +750 -0
- package/dist/browser/modules/excel/stream/worksheet-writer.js +3 -2
- package/dist/browser/modules/excel/table.js +42 -6
- package/dist/browser/modules/excel/types.d.ts +72 -0
- package/dist/browser/modules/excel/utils/address.d.ts +18 -0
- package/dist/browser/modules/excel/utils/address.js +28 -0
- package/dist/browser/modules/excel/utils/drawing-utils.js +11 -6
- package/dist/browser/modules/excel/utils/guid.d.ts +15 -0
- package/dist/browser/modules/excel/utils/guid.js +35 -0
- package/dist/browser/modules/excel/utils/ooxml-paths.d.ts +74 -0
- package/dist/browser/modules/excel/utils/ooxml-paths.js +206 -9
- package/dist/browser/modules/excel/utils/ooxml-validator/check-chart-sidecar.d.ts +35 -0
- package/dist/browser/modules/excel/utils/ooxml-validator/check-chart-sidecar.js +101 -0
- package/dist/browser/modules/excel/utils/ooxml-validator/check-chart.d.ts +32 -0
- package/dist/browser/modules/excel/utils/ooxml-validator/check-chart.js +2125 -0
- package/dist/browser/modules/excel/utils/ooxml-validator/check-chartsheet.d.ts +9 -0
- package/dist/browser/modules/excel/utils/ooxml-validator/check-chartsheet.js +26 -0
- package/dist/browser/modules/excel/utils/ooxml-validator/check-content-types.d.ts +16 -0
- package/dist/browser/modules/excel/utils/ooxml-validator/check-content-types.js +181 -0
- package/dist/browser/modules/excel/utils/ooxml-validator/check-drawing.d.ts +34 -0
- package/dist/browser/modules/excel/utils/ooxml-validator/check-drawing.js +267 -0
- package/dist/browser/modules/excel/utils/ooxml-validator/check-pivot.d.ts +14 -0
- package/dist/browser/modules/excel/utils/ooxml-validator/check-pivot.js +104 -0
- package/dist/browser/modules/excel/utils/ooxml-validator/check-relationships.d.ts +18 -0
- package/dist/browser/modules/excel/utils/ooxml-validator/check-relationships.js +184 -0
- package/dist/browser/modules/excel/utils/ooxml-validator/check-structure.d.ts +21 -0
- package/dist/browser/modules/excel/utils/ooxml-validator/check-structure.js +56 -0
- package/dist/browser/modules/excel/utils/ooxml-validator/check-styles.d.ts +15 -0
- package/dist/browser/modules/excel/utils/ooxml-validator/check-styles.js +89 -0
- package/dist/browser/modules/excel/utils/ooxml-validator/check-table.d.ts +31 -0
- package/dist/browser/modules/excel/utils/ooxml-validator/check-table.js +177 -0
- package/dist/browser/modules/excel/utils/ooxml-validator/check-workbook.d.ts +19 -0
- package/dist/browser/modules/excel/utils/ooxml-validator/check-workbook.js +163 -0
- package/dist/browser/modules/excel/utils/ooxml-validator/check-worksheet.d.ts +25 -0
- package/dist/browser/modules/excel/utils/ooxml-validator/check-worksheet.js +569 -0
- package/dist/browser/modules/excel/utils/ooxml-validator/context.d.ts +85 -0
- package/dist/browser/modules/excel/utils/ooxml-validator/context.js +191 -0
- package/dist/browser/modules/excel/utils/ooxml-validator/index.d.ts +31 -0
- package/dist/browser/modules/excel/utils/ooxml-validator/index.js +102 -0
- package/dist/browser/modules/excel/utils/ooxml-validator/path-utils.d.ts +67 -0
- package/dist/browser/modules/excel/utils/ooxml-validator/path-utils.js +156 -0
- package/dist/browser/modules/excel/utils/ooxml-validator/reporter.d.ts +41 -0
- package/dist/browser/modules/excel/utils/ooxml-validator/reporter.js +61 -0
- package/dist/browser/modules/excel/utils/ooxml-validator/types.d.ts +109 -0
- package/dist/browser/modules/excel/utils/ooxml-validator/types.js +12 -0
- package/dist/browser/modules/excel/utils/ooxml-validator/xml-utils.d.ts +38 -0
- package/dist/browser/modules/excel/utils/ooxml-validator/xml-utils.js +100 -0
- package/dist/browser/modules/excel/workbook.browser.d.ts +248 -30
- package/dist/browser/modules/excel/workbook.browser.js +966 -31
- package/dist/browser/modules/excel/workbook.d.ts +43 -0
- package/dist/browser/modules/excel/workbook.js +48 -0
- package/dist/browser/modules/excel/worksheet.d.ts +157 -3
- package/dist/browser/modules/excel/worksheet.js +394 -35
- package/dist/browser/modules/excel/xlsx/rel-type.d.ts +40 -0
- package/dist/browser/modules/excel/xlsx/rel-type.js +41 -1
- package/dist/browser/modules/excel/xlsx/xform/book/defined-name-xform.d.ts +1 -0
- package/dist/browser/modules/excel/xlsx/xform/book/defined-name-xform.js +11 -2
- package/dist/browser/modules/excel/xlsx/xform/book/external-link-xform.js +12 -10
- package/dist/browser/modules/excel/xlsx/xform/book/workbook-xform.js +96 -22
- package/dist/browser/modules/excel/xlsx/xform/chart/chart-space-xform.d.ts +353 -0
- package/dist/browser/modules/excel/xlsx/xform/chart/chart-space-xform.js +6000 -0
- package/dist/browser/modules/excel/xlsx/xform/comment/threaded-comments-xform.d.ts +60 -0
- package/dist/browser/modules/excel/xlsx/xform/comment/threaded-comments-xform.js +213 -0
- package/dist/browser/modules/excel/xlsx/xform/core/content-types-xform.js +150 -11
- package/dist/browser/modules/excel/xlsx/xform/drawing/absolute-anchor-xform.js +20 -1
- package/dist/browser/modules/excel/xlsx/xform/drawing/base-cell-anchor-xform.js +1 -1
- package/dist/browser/modules/excel/xlsx/xform/drawing/drawing-xform.d.ts +30 -0
- package/dist/browser/modules/excel/xlsx/xform/drawing/drawing-xform.js +109 -5
- package/dist/browser/modules/excel/xlsx/xform/drawing/graphic-frame-xform.d.ts +54 -0
- package/dist/browser/modules/excel/xlsx/xform/drawing/graphic-frame-xform.js +225 -0
- package/dist/browser/modules/excel/xlsx/xform/drawing/one-cell-anchor-xform.d.ts +3 -1
- package/dist/browser/modules/excel/xlsx/xform/drawing/one-cell-anchor-xform.js +18 -3
- package/dist/browser/modules/excel/xlsx/xform/drawing/two-cell-anchor-xform.d.ts +46 -0
- package/dist/browser/modules/excel/xlsx/xform/drawing/two-cell-anchor-xform.js +294 -12
- package/dist/browser/modules/excel/xlsx/xform/pivot-table/pivot-table-xform.d.ts +13 -2
- package/dist/browser/modules/excel/xlsx/xform/pivot-table/pivot-table-xform.js +32 -6
- package/dist/browser/modules/excel/xlsx/xform/sheet/chartsheet-xform.d.ts +185 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/chartsheet-xform.js +441 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/ext-lst-xform.d.ts +1 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/ext-lst-xform.js +51 -2
- package/dist/browser/modules/excel/xlsx/xform/sheet/worksheet-xform.js +196 -20
- package/dist/browser/modules/excel/xlsx/xform/table/auto-filter-xform.js +16 -1
- package/dist/browser/modules/excel/xlsx/xform/table/table-column-xform.js +17 -2
- package/dist/browser/modules/excel/xlsx/xform/xsd-values.d.ts +63 -0
- package/dist/browser/modules/excel/xlsx/xform/xsd-values.js +101 -0
- package/dist/browser/modules/excel/xlsx/xlsx.browser.d.ts +115 -21
- package/dist/browser/modules/excel/xlsx/xlsx.browser.js +4422 -78
- package/dist/browser/modules/pdf/builder/document-builder.d.ts +74 -0
- package/dist/browser/modules/pdf/builder/document-builder.js +507 -2
- package/dist/browser/modules/pdf/builder/pdf-editor.js +48 -3
- package/dist/browser/modules/pdf/excel-bridge.d.ts +69 -0
- package/dist/browser/modules/pdf/excel-bridge.js +683 -12
- package/dist/browser/modules/pdf/font/font-manager.d.ts +25 -0
- package/dist/browser/modules/pdf/font/font-manager.js +39 -0
- package/dist/browser/modules/pdf/index.d.ts +5 -2
- package/dist/browser/modules/pdf/index.js +3 -1
- package/dist/browser/modules/pdf/render/chart-surface.d.ts +33 -0
- package/dist/browser/modules/pdf/render/chart-surface.js +200 -0
- package/dist/browser/modules/pdf/render/layout-engine.d.ts +22 -1
- package/dist/browser/modules/pdf/render/layout-engine.js +436 -56
- package/dist/browser/modules/pdf/render/page-renderer.js +169 -28
- package/dist/browser/modules/pdf/render/pdf-exporter.js +117 -7
- package/dist/browser/modules/pdf/types.d.ts +227 -23
- package/dist/browser/modules/pdf/types.js +4 -0
- package/dist/browser/modules/pdf/word-bridge.d.ts +47 -0
- package/dist/browser/modules/pdf/word-bridge.js +304 -0
- package/dist/browser/modules/word/constants.d.ts +179 -0
- package/dist/browser/modules/word/constants.js +231 -0
- package/dist/browser/modules/word/content-types.d.ts +27 -0
- package/dist/browser/modules/word/content-types.js +53 -0
- package/dist/browser/modules/word/digital-signatures.d.ts +87 -0
- package/dist/browser/modules/word/digital-signatures.js +134 -0
- package/dist/browser/modules/word/document.d.ts +728 -0
- package/dist/browser/modules/word/document.js +1795 -0
- package/dist/browser/modules/word/docx-packager.d.ts +14 -0
- package/dist/browser/modules/word/docx-packager.js +822 -0
- package/dist/browser/modules/word/docx-reader.d.ts +11 -0
- package/dist/browser/modules/word/docx-reader.js +4929 -0
- package/dist/browser/modules/word/encryption.d.ts +102 -0
- package/dist/browser/modules/word/encryption.js +274 -0
- package/dist/browser/modules/word/errors.d.ts +49 -0
- package/dist/browser/modules/word/errors.js +68 -0
- package/dist/browser/modules/word/font-obfuscation.d.ts +31 -0
- package/dist/browser/modules/word/font-obfuscation.js +83 -0
- package/dist/browser/modules/word/html-renderer.d.ts +38 -0
- package/dist/browser/modules/word/html-renderer.js +782 -0
- package/dist/browser/modules/word/index.base.d.ts +19 -0
- package/dist/browser/modules/word/index.base.js +51 -0
- package/dist/browser/modules/word/index.browser.d.ts +4 -0
- package/dist/browser/modules/word/index.browser.js +4 -0
- package/dist/browser/modules/word/index.d.ts +4 -0
- package/dist/browser/modules/word/index.js +4 -0
- package/dist/browser/modules/word/internal-utils.d.ts +23 -0
- package/dist/browser/modules/word/internal-utils.js +54 -0
- package/dist/browser/modules/word/relationships.d.ts +31 -0
- package/dist/browser/modules/word/relationships.js +56 -0
- package/dist/browser/modules/word/types.d.ts +2325 -0
- package/dist/browser/modules/word/types.js +10 -0
- package/dist/browser/modules/word/units.d.ts +49 -0
- package/dist/browser/modules/word/units.js +111 -0
- package/dist/browser/modules/word/writers/chart-writer.d.ts +10 -0
- package/dist/browser/modules/word/writers/chart-writer.js +385 -0
- package/dist/browser/modules/word/writers/checkbox-writer.d.ts +9 -0
- package/dist/browser/modules/word/writers/checkbox-writer.js +42 -0
- package/dist/browser/modules/word/writers/comment-writer.d.ts +15 -0
- package/dist/browser/modules/word/writers/comment-writer.js +70 -0
- package/dist/browser/modules/word/writers/document-writer.d.ts +16 -0
- package/dist/browser/modules/word/writers/document-writer.js +461 -0
- package/dist/browser/modules/word/writers/footnote-writer.d.ts +11 -0
- package/dist/browser/modules/word/writers/footnote-writer.js +72 -0
- package/dist/browser/modules/word/writers/header-footer-writer.d.ts +13 -0
- package/dist/browser/modules/word/writers/header-footer-writer.js +129 -0
- package/dist/browser/modules/word/writers/image-writer.d.ts +10 -0
- package/dist/browser/modules/word/writers/image-writer.js +185 -0
- package/dist/browser/modules/word/writers/math-writer.d.ts +9 -0
- package/dist/browser/modules/word/writers/math-writer.js +428 -0
- package/dist/browser/modules/word/writers/numbering-writer.d.ts +10 -0
- package/dist/browser/modules/word/writers/numbering-writer.js +125 -0
- package/dist/browser/modules/word/writers/paragraph-writer.d.ts +13 -0
- package/dist/browser/modules/word/writers/paragraph-writer.js +516 -0
- package/dist/browser/modules/word/writers/parts-writer.d.ts +26 -0
- package/dist/browser/modules/word/writers/parts-writer.js +660 -0
- package/dist/browser/modules/word/writers/run-writer.d.ts +15 -0
- package/dist/browser/modules/word/writers/run-writer.js +649 -0
- package/dist/browser/modules/word/writers/section-writer.d.ts +10 -0
- package/dist/browser/modules/word/writers/section-writer.js +238 -0
- package/dist/browser/modules/word/writers/styles-writer.d.ts +10 -0
- package/dist/browser/modules/word/writers/styles-writer.js +242 -0
- package/dist/browser/modules/word/writers/table-writer.d.ts +10 -0
- package/dist/browser/modules/word/writers/table-writer.js +503 -0
- package/dist/browser/modules/word/writers/textbox-writer.d.ts +9 -0
- package/dist/browser/modules/word/writers/textbox-writer.js +53 -0
- package/dist/browser/modules/word/writers/toc-writer.d.ts +9 -0
- package/dist/browser/modules/word/writers/toc-writer.js +79 -0
- package/dist/browser/modules/xml/encode.d.ts +56 -7
- package/dist/browser/modules/xml/encode.js +157 -11
- package/dist/cjs/index.js +13 -2
- package/dist/cjs/modules/excel/chart/cache-populator.js +1178 -0
- package/dist/cjs/modules/excel/chart/chart-api.js +371 -0
- package/dist/cjs/modules/excel/chart/chart-builder.js +2440 -0
- package/dist/cjs/modules/excel/chart/chart-ex-builder.js +907 -0
- package/dist/cjs/modules/excel/chart/chart-ex-parser.js +1208 -0
- package/dist/cjs/modules/excel/chart/chart-ex-renderer.js +5364 -0
- package/dist/cjs/modules/excel/chart/chart-ex-types.js +12 -0
- package/dist/cjs/modules/excel/chart/chart-images.js +366 -0
- package/dist/cjs/modules/excel/chart/chart-presets.js +184 -0
- package/dist/cjs/modules/excel/chart/chart-renderer.js +6450 -0
- package/dist/cjs/modules/excel/chart/chart-sidecar.js +433 -0
- package/dist/cjs/modules/excel/chart/chart-utils.js +845 -0
- package/dist/cjs/modules/excel/chart/chart.js +1324 -0
- package/dist/cjs/modules/excel/chart/glyph-rasterizer.js +664 -0
- package/dist/cjs/modules/excel/chart/index.js +101 -0
- package/dist/cjs/modules/excel/chart/install.js +95 -0
- package/dist/cjs/modules/excel/chart/shape-properties.js +1577 -0
- package/dist/cjs/modules/excel/chart/stroke-font.js +1559 -0
- package/dist/cjs/modules/excel/chart/topojson.js +239 -0
- package/dist/cjs/modules/excel/chart/types.js +9 -0
- package/dist/cjs/modules/excel/chart-host-registry.js +96 -0
- package/dist/cjs/modules/excel/chartsheet.js +199 -0
- package/dist/cjs/modules/excel/defined-names.js +44 -4
- package/dist/cjs/modules/excel/errors.js +11 -1
- package/dist/cjs/modules/excel/form-control.js +17 -0
- package/dist/cjs/modules/excel/image.js +12 -2
- package/dist/cjs/modules/excel/pivot-chart.js +56 -0
- package/dist/cjs/modules/excel/pivot-table.js +35 -0
- package/dist/cjs/modules/excel/range.js +5 -1
- package/dist/cjs/modules/excel/sparkline/index.js +23 -0
- package/dist/cjs/modules/excel/sparkline/sparkline.js +756 -0
- package/dist/cjs/modules/excel/stream/worksheet-writer.js +3 -2
- package/dist/cjs/modules/excel/table.js +42 -6
- package/dist/cjs/modules/excel/utils/address.js +29 -0
- package/dist/cjs/modules/excel/utils/drawing-utils.js +11 -6
- package/dist/cjs/modules/excel/utils/guid.js +38 -0
- package/dist/cjs/modules/excel/utils/ooxml-paths.js +246 -9
- package/dist/cjs/modules/excel/utils/ooxml-validator/check-chart-sidecar.js +103 -0
- package/dist/cjs/modules/excel/utils/ooxml-validator/check-chart.js +2128 -0
- package/dist/cjs/modules/excel/utils/ooxml-validator/check-chartsheet.js +29 -0
- package/dist/cjs/modules/excel/utils/ooxml-validator/check-content-types.js +184 -0
- package/dist/cjs/modules/excel/utils/ooxml-validator/check-drawing.js +270 -0
- package/dist/cjs/modules/excel/utils/ooxml-validator/check-pivot.js +107 -0
- package/dist/cjs/modules/excel/utils/ooxml-validator/check-relationships.js +188 -0
- package/dist/cjs/modules/excel/utils/ooxml-validator/check-structure.js +60 -0
- package/dist/cjs/modules/excel/utils/ooxml-validator/check-styles.js +92 -0
- package/dist/cjs/modules/excel/utils/ooxml-validator/check-table.js +180 -0
- package/dist/cjs/modules/excel/utils/ooxml-validator/check-workbook.js +166 -0
- package/dist/cjs/modules/excel/utils/ooxml-validator/check-worksheet.js +572 -0
- package/dist/cjs/modules/excel/utils/ooxml-validator/context.js +196 -0
- package/dist/cjs/modules/excel/utils/ooxml-validator/index.js +105 -0
- package/dist/cjs/modules/excel/utils/ooxml-validator/path-utils.js +168 -0
- package/dist/cjs/modules/excel/utils/ooxml-validator/reporter.js +66 -0
- package/dist/cjs/modules/excel/utils/ooxml-validator/types.js +13 -0
- package/dist/cjs/modules/excel/utils/ooxml-validator/xml-utils.js +110 -0
- package/dist/cjs/modules/excel/workbook.browser.js +973 -38
- package/dist/cjs/modules/excel/workbook.js +48 -0
- package/dist/cjs/modules/excel/worksheet.js +393 -34
- package/dist/cjs/modules/excel/xlsx/rel-type.js +41 -1
- package/dist/cjs/modules/excel/xlsx/xform/book/defined-name-xform.js +11 -2
- package/dist/cjs/modules/excel/xlsx/xform/book/external-link-xform.js +12 -10
- package/dist/cjs/modules/excel/xlsx/xform/book/workbook-xform.js +96 -22
- package/dist/cjs/modules/excel/xlsx/xform/chart/chart-space-xform.js +6003 -0
- package/dist/cjs/modules/excel/xlsx/xform/comment/threaded-comments-xform.js +219 -0
- package/dist/cjs/modules/excel/xlsx/xform/core/content-types-xform.js +149 -10
- package/dist/cjs/modules/excel/xlsx/xform/drawing/absolute-anchor-xform.js +20 -1
- package/dist/cjs/modules/excel/xlsx/xform/drawing/base-cell-anchor-xform.js +1 -1
- package/dist/cjs/modules/excel/xlsx/xform/drawing/drawing-xform.js +109 -5
- package/dist/cjs/modules/excel/xlsx/xform/drawing/graphic-frame-xform.js +228 -0
- package/dist/cjs/modules/excel/xlsx/xform/drawing/one-cell-anchor-xform.js +18 -3
- package/dist/cjs/modules/excel/xlsx/xform/drawing/two-cell-anchor-xform.js +294 -12
- package/dist/cjs/modules/excel/xlsx/xform/pivot-table/pivot-table-xform.js +32 -6
- package/dist/cjs/modules/excel/xlsx/xform/sheet/chartsheet-xform.js +444 -0
- package/dist/cjs/modules/excel/xlsx/xform/sheet/ext-lst-xform.js +51 -2
- package/dist/cjs/modules/excel/xlsx/xform/sheet/worksheet-xform.js +195 -19
- package/dist/cjs/modules/excel/xlsx/xform/table/auto-filter-xform.js +16 -1
- package/dist/cjs/modules/excel/xlsx/xform/table/table-column-xform.js +17 -2
- package/dist/cjs/modules/excel/xlsx/xform/xsd-values.js +106 -0
- package/dist/cjs/modules/excel/xlsx/xlsx.browser.js +4420 -76
- package/dist/cjs/modules/pdf/builder/document-builder.js +506 -1
- package/dist/cjs/modules/pdf/builder/pdf-editor.js +48 -3
- package/dist/cjs/modules/pdf/excel-bridge.js +684 -12
- package/dist/cjs/modules/pdf/font/font-manager.js +39 -0
- package/dist/cjs/modules/pdf/index.js +5 -1
- package/dist/cjs/modules/pdf/render/chart-surface.js +203 -0
- package/dist/cjs/modules/pdf/render/layout-engine.js +437 -56
- package/dist/cjs/modules/pdf/render/page-renderer.js +169 -28
- package/dist/cjs/modules/pdf/render/pdf-exporter.js +115 -5
- package/dist/cjs/modules/pdf/types.js +5 -0
- package/dist/cjs/modules/pdf/word-bridge.js +307 -0
- package/dist/cjs/modules/word/constants.js +234 -0
- package/dist/cjs/modules/word/content-types.js +57 -0
- package/dist/cjs/modules/word/digital-signatures.js +140 -0
- package/dist/cjs/modules/word/document.js +1909 -0
- package/dist/cjs/modules/word/docx-packager.js +825 -0
- package/dist/cjs/modules/word/docx-reader.js +4932 -0
- package/dist/cjs/modules/word/encryption.js +282 -0
- package/dist/cjs/modules/word/errors.js +88 -0
- package/dist/cjs/modules/word/font-obfuscation.js +88 -0
- package/dist/cjs/modules/word/html-renderer.js +785 -0
- package/dist/cjs/modules/word/index.base.js +199 -0
- package/dist/cjs/modules/word/index.browser.js +20 -0
- package/dist/cjs/modules/word/index.js +20 -0
- package/dist/cjs/modules/word/internal-utils.js +59 -0
- package/dist/cjs/modules/word/relationships.js +60 -0
- package/dist/cjs/modules/word/types.js +11 -0
- package/dist/cjs/modules/word/units.js +135 -0
- package/dist/cjs/modules/word/writers/chart-writer.js +388 -0
- package/dist/cjs/modules/word/writers/checkbox-writer.js +45 -0
- package/dist/cjs/modules/word/writers/comment-writer.js +74 -0
- package/dist/cjs/modules/word/writers/document-writer.js +465 -0
- package/dist/cjs/modules/word/writers/footnote-writer.js +76 -0
- package/dist/cjs/modules/word/writers/header-footer-writer.js +134 -0
- package/dist/cjs/modules/word/writers/image-writer.js +188 -0
- package/dist/cjs/modules/word/writers/math-writer.js +431 -0
- package/dist/cjs/modules/word/writers/numbering-writer.js +128 -0
- package/dist/cjs/modules/word/writers/paragraph-writer.js +521 -0
- package/dist/cjs/modules/word/writers/parts-writer.js +671 -0
- package/dist/cjs/modules/word/writers/run-writer.js +655 -0
- package/dist/cjs/modules/word/writers/section-writer.js +241 -0
- package/dist/cjs/modules/word/writers/styles-writer.js +245 -0
- package/dist/cjs/modules/word/writers/table-writer.js +506 -0
- package/dist/cjs/modules/word/writers/textbox-writer.js +56 -0
- package/dist/cjs/modules/word/writers/toc-writer.js +82 -0
- package/dist/cjs/modules/xml/encode.js +158 -11
- package/dist/esm/index.browser.js +20 -2
- package/dist/esm/index.js +9 -1
- package/dist/esm/modules/excel/chart/cache-populator.js +1171 -0
- package/dist/esm/modules/excel/chart/chart-api.js +364 -0
- package/dist/esm/modules/excel/chart/chart-builder.js +2432 -0
- package/dist/esm/modules/excel/chart/chart-ex-builder.js +903 -0
- package/dist/esm/modules/excel/chart/chart-ex-parser.js +1205 -0
- package/dist/esm/modules/excel/chart/chart-ex-renderer.js +5352 -0
- package/dist/esm/modules/excel/chart/chart-ex-types.js +11 -0
- package/dist/esm/modules/excel/chart/chart-images.js +363 -0
- package/dist/esm/modules/excel/chart/chart-presets.js +179 -0
- package/dist/esm/modules/excel/chart/chart-renderer.js +6440 -0
- package/dist/esm/modules/excel/chart/chart-sidecar.js +427 -0
- package/dist/esm/modules/excel/chart/chart-utils.js +821 -0
- package/dist/esm/modules/excel/chart/chart.js +1320 -0
- package/dist/esm/modules/excel/chart/glyph-rasterizer.js +658 -0
- package/dist/esm/modules/excel/chart/index.js +46 -0
- package/dist/esm/modules/excel/chart/install.js +91 -0
- package/dist/esm/modules/excel/chart/shape-properties.js +1557 -0
- package/dist/esm/modules/excel/chart/stroke-font.js +1556 -0
- package/dist/esm/modules/excel/chart/topojson.js +236 -0
- package/dist/esm/modules/excel/chart/types.js +8 -0
- package/dist/esm/modules/excel/chart-host-registry.js +90 -0
- package/dist/esm/modules/excel/chartsheet.js +196 -0
- package/dist/esm/modules/excel/defined-names.js +44 -4
- package/dist/esm/modules/excel/errors.js +9 -0
- package/dist/esm/modules/excel/form-control.js +17 -0
- package/dist/esm/modules/excel/image.js +12 -2
- package/dist/esm/modules/excel/pivot-chart.js +53 -0
- package/dist/esm/modules/excel/pivot-table.js +35 -0
- package/dist/esm/modules/excel/range.js +5 -1
- package/dist/esm/modules/excel/sparkline/index.js +7 -0
- package/dist/esm/modules/excel/sparkline/sparkline.js +750 -0
- package/dist/esm/modules/excel/stream/worksheet-writer.js +3 -2
- package/dist/esm/modules/excel/table.js +42 -6
- package/dist/esm/modules/excel/utils/address.js +28 -0
- package/dist/esm/modules/excel/utils/drawing-utils.js +11 -6
- package/dist/esm/modules/excel/utils/guid.js +35 -0
- package/dist/esm/modules/excel/utils/ooxml-paths.js +206 -9
- package/dist/esm/modules/excel/utils/ooxml-validator/check-chart-sidecar.js +101 -0
- package/dist/esm/modules/excel/utils/ooxml-validator/check-chart.js +2125 -0
- package/dist/esm/modules/excel/utils/ooxml-validator/check-chartsheet.js +26 -0
- package/dist/esm/modules/excel/utils/ooxml-validator/check-content-types.js +181 -0
- package/dist/esm/modules/excel/utils/ooxml-validator/check-drawing.js +267 -0
- package/dist/esm/modules/excel/utils/ooxml-validator/check-pivot.js +104 -0
- package/dist/esm/modules/excel/utils/ooxml-validator/check-relationships.js +184 -0
- package/dist/esm/modules/excel/utils/ooxml-validator/check-structure.js +56 -0
- package/dist/esm/modules/excel/utils/ooxml-validator/check-styles.js +89 -0
- package/dist/esm/modules/excel/utils/ooxml-validator/check-table.js +177 -0
- package/dist/esm/modules/excel/utils/ooxml-validator/check-workbook.js +163 -0
- package/dist/esm/modules/excel/utils/ooxml-validator/check-worksheet.js +569 -0
- package/dist/esm/modules/excel/utils/ooxml-validator/context.js +191 -0
- package/dist/esm/modules/excel/utils/ooxml-validator/index.js +102 -0
- package/dist/esm/modules/excel/utils/ooxml-validator/path-utils.js +156 -0
- package/dist/esm/modules/excel/utils/ooxml-validator/reporter.js +61 -0
- package/dist/esm/modules/excel/utils/ooxml-validator/types.js +12 -0
- package/dist/esm/modules/excel/utils/ooxml-validator/xml-utils.js +100 -0
- package/dist/esm/modules/excel/workbook.browser.js +969 -34
- package/dist/esm/modules/excel/workbook.js +48 -0
- package/dist/esm/modules/excel/worksheet.js +394 -35
- package/dist/esm/modules/excel/xlsx/rel-type.js +41 -1
- package/dist/esm/modules/excel/xlsx/xform/book/defined-name-xform.js +11 -2
- package/dist/esm/modules/excel/xlsx/xform/book/external-link-xform.js +12 -10
- package/dist/esm/modules/excel/xlsx/xform/book/workbook-xform.js +96 -22
- package/dist/esm/modules/excel/xlsx/xform/chart/chart-space-xform.js +6000 -0
- package/dist/esm/modules/excel/xlsx/xform/comment/threaded-comments-xform.js +213 -0
- package/dist/esm/modules/excel/xlsx/xform/core/content-types-xform.js +150 -11
- package/dist/esm/modules/excel/xlsx/xform/drawing/absolute-anchor-xform.js +20 -1
- package/dist/esm/modules/excel/xlsx/xform/drawing/base-cell-anchor-xform.js +1 -1
- package/dist/esm/modules/excel/xlsx/xform/drawing/drawing-xform.js +109 -5
- package/dist/esm/modules/excel/xlsx/xform/drawing/graphic-frame-xform.js +225 -0
- package/dist/esm/modules/excel/xlsx/xform/drawing/one-cell-anchor-xform.js +18 -3
- package/dist/esm/modules/excel/xlsx/xform/drawing/two-cell-anchor-xform.js +294 -12
- package/dist/esm/modules/excel/xlsx/xform/pivot-table/pivot-table-xform.js +32 -6
- package/dist/esm/modules/excel/xlsx/xform/sheet/chartsheet-xform.js +441 -0
- package/dist/esm/modules/excel/xlsx/xform/sheet/ext-lst-xform.js +51 -2
- package/dist/esm/modules/excel/xlsx/xform/sheet/worksheet-xform.js +196 -20
- package/dist/esm/modules/excel/xlsx/xform/table/auto-filter-xform.js +16 -1
- package/dist/esm/modules/excel/xlsx/xform/table/table-column-xform.js +17 -2
- package/dist/esm/modules/excel/xlsx/xform/xsd-values.js +101 -0
- package/dist/esm/modules/excel/xlsx/xlsx.browser.js +4422 -78
- package/dist/esm/modules/pdf/builder/document-builder.js +507 -2
- package/dist/esm/modules/pdf/builder/pdf-editor.js +48 -3
- package/dist/esm/modules/pdf/excel-bridge.js +683 -12
- package/dist/esm/modules/pdf/font/font-manager.js +39 -0
- package/dist/esm/modules/pdf/index.js +3 -1
- package/dist/esm/modules/pdf/render/chart-surface.js +200 -0
- package/dist/esm/modules/pdf/render/layout-engine.js +436 -56
- package/dist/esm/modules/pdf/render/page-renderer.js +169 -28
- package/dist/esm/modules/pdf/render/pdf-exporter.js +117 -7
- package/dist/esm/modules/pdf/types.js +4 -0
- package/dist/esm/modules/pdf/word-bridge.js +304 -0
- package/dist/esm/modules/word/constants.js +231 -0
- package/dist/esm/modules/word/content-types.js +53 -0
- package/dist/esm/modules/word/digital-signatures.js +134 -0
- package/dist/esm/modules/word/document.js +1795 -0
- package/dist/esm/modules/word/docx-packager.js +822 -0
- package/dist/esm/modules/word/docx-reader.js +4929 -0
- package/dist/esm/modules/word/encryption.js +274 -0
- package/dist/esm/modules/word/errors.js +68 -0
- package/dist/esm/modules/word/font-obfuscation.js +83 -0
- package/dist/esm/modules/word/html-renderer.js +782 -0
- package/dist/esm/modules/word/index.base.js +51 -0
- package/dist/esm/modules/word/index.browser.js +4 -0
- package/dist/esm/modules/word/index.js +4 -0
- package/dist/esm/modules/word/internal-utils.js +54 -0
- package/dist/esm/modules/word/relationships.js +56 -0
- package/dist/esm/modules/word/types.js +10 -0
- package/dist/esm/modules/word/units.js +111 -0
- package/dist/esm/modules/word/writers/chart-writer.js +385 -0
- package/dist/esm/modules/word/writers/checkbox-writer.js +42 -0
- package/dist/esm/modules/word/writers/comment-writer.js +70 -0
- package/dist/esm/modules/word/writers/document-writer.js +461 -0
- package/dist/esm/modules/word/writers/footnote-writer.js +72 -0
- package/dist/esm/modules/word/writers/header-footer-writer.js +129 -0
- package/dist/esm/modules/word/writers/image-writer.js +185 -0
- package/dist/esm/modules/word/writers/math-writer.js +428 -0
- package/dist/esm/modules/word/writers/numbering-writer.js +125 -0
- package/dist/esm/modules/word/writers/paragraph-writer.js +516 -0
- package/dist/esm/modules/word/writers/parts-writer.js +660 -0
- package/dist/esm/modules/word/writers/run-writer.js +649 -0
- package/dist/esm/modules/word/writers/section-writer.js +238 -0
- package/dist/esm/modules/word/writers/styles-writer.js +242 -0
- package/dist/esm/modules/word/writers/table-writer.js +503 -0
- package/dist/esm/modules/word/writers/textbox-writer.js +53 -0
- package/dist/esm/modules/word/writers/toc-writer.js +79 -0
- package/dist/esm/modules/xml/encode.js +157 -11
- package/dist/iife/excelts.iife.js +11789 -687
- package/dist/iife/excelts.iife.js.map +1 -1
- package/dist/iife/excelts.iife.min.js +52 -44
- package/dist/types/index.browser.d.ts +8 -5
- package/dist/types/index.d.ts +4 -2
- package/dist/types/modules/excel/chart/cache-populator.d.ts +49 -0
- package/dist/types/modules/excel/chart/chart-api.d.ts +92 -0
- package/dist/types/modules/excel/chart/chart-builder.d.ts +48 -0
- package/dist/types/modules/excel/chart/chart-ex-builder.d.ts +36 -0
- package/dist/types/modules/excel/chart/chart-ex-parser.d.ts +8 -0
- package/dist/types/modules/excel/chart/chart-ex-renderer.d.ts +187 -0
- package/dist/types/modules/excel/chart/chart-ex-types.d.ts +531 -0
- package/dist/types/modules/excel/chart/chart-images.d.ts +78 -0
- package/dist/types/modules/excel/chart/chart-presets.d.ts +392 -0
- package/dist/types/modules/excel/chart/chart-renderer.d.ts +550 -0
- package/dist/types/modules/excel/chart/chart-sidecar.d.ts +21 -0
- package/dist/types/modules/excel/chart/chart-utils.d.ts +306 -0
- package/dist/types/modules/excel/chart/chart.d.ts +504 -0
- package/dist/types/modules/excel/chart/glyph-rasterizer.d.ts +62 -0
- package/dist/types/modules/excel/chart/index.d.ts +54 -0
- package/dist/types/modules/excel/chart/install.d.ts +44 -0
- package/dist/types/modules/excel/chart/shape-properties.d.ts +156 -0
- package/dist/types/modules/excel/chart/stroke-font.d.ts +36 -0
- package/dist/types/modules/excel/chart/topojson.d.ts +98 -0
- package/dist/types/modules/excel/chart/types.d.ts +2559 -0
- package/dist/types/modules/excel/chart-host-registry.d.ts +157 -0
- package/dist/types/modules/excel/chartsheet.d.ts +102 -0
- package/dist/types/modules/excel/defined-names.d.ts +35 -0
- package/dist/types/modules/excel/errors.d.ts +6 -0
- package/dist/types/modules/excel/form-control.d.ts +6 -0
- package/dist/types/modules/excel/pivot-chart.d.ts +7 -0
- package/dist/types/modules/excel/pivot-table.d.ts +55 -0
- package/dist/types/modules/excel/sparkline/index.d.ts +7 -0
- package/dist/types/modules/excel/sparkline/sparkline.d.ts +206 -0
- package/dist/types/modules/excel/types.d.ts +72 -0
- package/dist/types/modules/excel/utils/address.d.ts +18 -0
- package/dist/types/modules/excel/utils/guid.d.ts +15 -0
- package/dist/types/modules/excel/utils/ooxml-paths.d.ts +74 -0
- package/dist/types/modules/excel/utils/ooxml-validator/check-chart-sidecar.d.ts +35 -0
- package/dist/types/modules/excel/utils/ooxml-validator/check-chart.d.ts +32 -0
- package/dist/types/modules/excel/utils/ooxml-validator/check-chartsheet.d.ts +9 -0
- package/dist/types/modules/excel/utils/ooxml-validator/check-content-types.d.ts +16 -0
- package/dist/types/modules/excel/utils/ooxml-validator/check-drawing.d.ts +34 -0
- package/dist/types/modules/excel/utils/ooxml-validator/check-pivot.d.ts +14 -0
- package/dist/types/modules/excel/utils/ooxml-validator/check-relationships.d.ts +18 -0
- package/dist/types/modules/excel/utils/ooxml-validator/check-structure.d.ts +21 -0
- package/dist/types/modules/excel/utils/ooxml-validator/check-styles.d.ts +15 -0
- package/dist/types/modules/excel/utils/ooxml-validator/check-table.d.ts +31 -0
- package/dist/types/modules/excel/utils/ooxml-validator/check-workbook.d.ts +19 -0
- package/dist/types/modules/excel/utils/ooxml-validator/check-worksheet.d.ts +25 -0
- package/dist/types/modules/excel/utils/ooxml-validator/context.d.ts +85 -0
- package/dist/types/modules/excel/utils/ooxml-validator/index.d.ts +31 -0
- package/dist/types/modules/excel/utils/ooxml-validator/path-utils.d.ts +67 -0
- package/dist/types/modules/excel/utils/ooxml-validator/reporter.d.ts +41 -0
- package/dist/types/modules/excel/utils/ooxml-validator/types.d.ts +109 -0
- package/dist/types/modules/excel/utils/ooxml-validator/xml-utils.d.ts +38 -0
- package/dist/types/modules/excel/workbook.browser.d.ts +248 -30
- package/dist/types/modules/excel/workbook.d.ts +43 -0
- package/dist/types/modules/excel/worksheet.d.ts +157 -3
- package/dist/types/modules/excel/xlsx/rel-type.d.ts +40 -0
- package/dist/types/modules/excel/xlsx/xform/book/defined-name-xform.d.ts +1 -0
- package/dist/types/modules/excel/xlsx/xform/chart/chart-space-xform.d.ts +353 -0
- package/dist/types/modules/excel/xlsx/xform/comment/threaded-comments-xform.d.ts +60 -0
- package/dist/types/modules/excel/xlsx/xform/drawing/drawing-xform.d.ts +30 -0
- package/dist/types/modules/excel/xlsx/xform/drawing/graphic-frame-xform.d.ts +54 -0
- package/dist/types/modules/excel/xlsx/xform/drawing/one-cell-anchor-xform.d.ts +3 -1
- package/dist/types/modules/excel/xlsx/xform/drawing/two-cell-anchor-xform.d.ts +46 -0
- package/dist/types/modules/excel/xlsx/xform/pivot-table/pivot-table-xform.d.ts +13 -2
- package/dist/types/modules/excel/xlsx/xform/sheet/chartsheet-xform.d.ts +185 -0
- package/dist/types/modules/excel/xlsx/xform/sheet/ext-lst-xform.d.ts +1 -0
- package/dist/types/modules/excel/xlsx/xform/xsd-values.d.ts +63 -0
- package/dist/types/modules/excel/xlsx/xlsx.browser.d.ts +115 -21
- package/dist/types/modules/pdf/builder/document-builder.d.ts +74 -0
- package/dist/types/modules/pdf/excel-bridge.d.ts +69 -0
- package/dist/types/modules/pdf/font/font-manager.d.ts +25 -0
- package/dist/types/modules/pdf/index.d.ts +5 -2
- package/dist/types/modules/pdf/render/chart-surface.d.ts +33 -0
- package/dist/types/modules/pdf/render/layout-engine.d.ts +22 -1
- package/dist/types/modules/pdf/types.d.ts +227 -23
- package/dist/types/modules/pdf/word-bridge.d.ts +47 -0
- package/dist/types/modules/word/constants.d.ts +179 -0
- package/dist/types/modules/word/content-types.d.ts +27 -0
- package/dist/types/modules/word/digital-signatures.d.ts +87 -0
- package/dist/types/modules/word/document.d.ts +728 -0
- package/dist/types/modules/word/docx-packager.d.ts +14 -0
- package/dist/types/modules/word/docx-reader.d.ts +11 -0
- package/dist/types/modules/word/encryption.d.ts +102 -0
- package/dist/types/modules/word/errors.d.ts +49 -0
- package/dist/types/modules/word/font-obfuscation.d.ts +31 -0
- package/dist/types/modules/word/html-renderer.d.ts +38 -0
- package/dist/types/modules/word/index.base.d.ts +19 -0
- package/dist/types/modules/word/index.browser.d.ts +4 -0
- package/dist/types/modules/word/index.d.ts +4 -0
- package/dist/types/modules/word/internal-utils.d.ts +23 -0
- package/dist/types/modules/word/relationships.d.ts +31 -0
- package/dist/types/modules/word/types.d.ts +2325 -0
- package/dist/types/modules/word/units.d.ts +49 -0
- package/dist/types/modules/word/writers/chart-writer.d.ts +10 -0
- package/dist/types/modules/word/writers/checkbox-writer.d.ts +9 -0
- package/dist/types/modules/word/writers/comment-writer.d.ts +15 -0
- package/dist/types/modules/word/writers/document-writer.d.ts +16 -0
- package/dist/types/modules/word/writers/footnote-writer.d.ts +11 -0
- package/dist/types/modules/word/writers/header-footer-writer.d.ts +13 -0
- package/dist/types/modules/word/writers/image-writer.d.ts +10 -0
- package/dist/types/modules/word/writers/math-writer.d.ts +9 -0
- package/dist/types/modules/word/writers/numbering-writer.d.ts +10 -0
- package/dist/types/modules/word/writers/paragraph-writer.d.ts +13 -0
- package/dist/types/modules/word/writers/parts-writer.d.ts +26 -0
- package/dist/types/modules/word/writers/run-writer.d.ts +15 -0
- package/dist/types/modules/word/writers/section-writer.d.ts +10 -0
- package/dist/types/modules/word/writers/styles-writer.d.ts +10 -0
- package/dist/types/modules/word/writers/table-writer.d.ts +10 -0
- package/dist/types/modules/word/writers/textbox-writer.d.ts +9 -0
- package/dist/types/modules/word/writers/toc-writer.d.ts +9 -0
- package/dist/types/modules/xml/encode.d.ts +56 -7
- package/package.json +29 -11
- package/dist/browser/modules/excel/utils/ooxml-validator.d.ts +0 -48
- package/dist/browser/modules/excel/utils/ooxml-validator.js +0 -493
- package/dist/browser/modules/excel/utils/passthrough-manager.d.ts +0 -77
- package/dist/browser/modules/excel/utils/passthrough-manager.js +0 -129
- package/dist/cjs/modules/excel/utils/ooxml-validator.js +0 -499
- package/dist/cjs/modules/excel/utils/passthrough-manager.js +0 -133
- package/dist/esm/modules/excel/utils/ooxml-validator.js +0 -493
- package/dist/esm/modules/excel/utils/passthrough-manager.js +0 -129
- package/dist/types/modules/excel/utils/ooxml-validator.d.ts +0 -48
- package/dist/types/modules/excel/utils/passthrough-manager.d.ts +0 -77
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reader/writer for Office 365 "threaded comments" (`<ThreadedComments>`
|
|
3
|
+
* XML root) and the workbook-level person directory (`<personList>`).
|
|
4
|
+
*
|
|
5
|
+
* Threaded comments live in a separate part tree from classic VML
|
|
6
|
+
* comments:
|
|
7
|
+
*
|
|
8
|
+
* - `xl/threadedComments/threadedComment{N}.xml` — one per sheet
|
|
9
|
+
* that has threaded comments; referenced from the sheet rels
|
|
10
|
+
* - `xl/persons/person.xml` — workbook-level person directory;
|
|
11
|
+
* referenced from the workbook rels
|
|
12
|
+
*
|
|
13
|
+
* The schema lives in Microsoft's extension namespace
|
|
14
|
+
* `http://schemas.microsoft.com/office/spreadsheetml/2018/threadedcomments`
|
|
15
|
+
* (for comments) and the older `…/2018/threadedcomments` for persons
|
|
16
|
+
* (identical URI tag-shared).
|
|
17
|
+
*
|
|
18
|
+
* This module is intentionally free of runtime xform plumbing —
|
|
19
|
+
* threaded comments are a discrete part with only text content, so
|
|
20
|
+
* two small render/parse functions suffice and plug directly into
|
|
21
|
+
* `xlsx.browser.ts` and `workbook.browser.ts`.
|
|
22
|
+
*/
|
|
23
|
+
import { synthGuid } from "../../../utils/guid.js";
|
|
24
|
+
import { findChild, findChildren, parseXml, textContent } from "../../../../xml/dom.js";
|
|
25
|
+
import { xmlEncode, xmlEncodeAttr } from "../../../../xml/encode.js";
|
|
26
|
+
const TC_NAMESPACE = "http://schemas.microsoft.com/office/spreadsheetml/2018/threadedcomments";
|
|
27
|
+
/**
|
|
28
|
+
* Render the threaded-comment part for a single worksheet.
|
|
29
|
+
*
|
|
30
|
+
* Input is a list of `(cellRef, comment)` pairs — the cell ref is
|
|
31
|
+
* stored as the `ref` attribute on each `<threadedComment>`, not on
|
|
32
|
+
* the public {@link ThreadedComment} type (which doesn't carry it so
|
|
33
|
+
* the same structure can be shared between the public API and the
|
|
34
|
+
* XForm).
|
|
35
|
+
*
|
|
36
|
+
* Input order is preserved — Excel relies on parent-child ordering
|
|
37
|
+
* when rendering conversation threads, so callers must keep replies
|
|
38
|
+
* after their parents.
|
|
39
|
+
*/
|
|
40
|
+
export function renderThreadedComments(entries) {
|
|
41
|
+
const parts = [];
|
|
42
|
+
parts.push('<?xml version="1.0" encoding="UTF-8" standalone="yes"?>');
|
|
43
|
+
parts.push(`<ThreadedComments xmlns="${TC_NAMESPACE}">`);
|
|
44
|
+
for (const { ref, comment: c } of entries) {
|
|
45
|
+
const id = c.id ?? `{${synthGuid()}}`;
|
|
46
|
+
const attrs = [`ref="${escapeAttr(ref)}"`];
|
|
47
|
+
if (c.date) {
|
|
48
|
+
attrs.push(`dT="${escapeAttr(c.date)}"`);
|
|
49
|
+
}
|
|
50
|
+
attrs.push(`personId="${escapeAttr(c.personId)}"`);
|
|
51
|
+
attrs.push(`id="${escapeAttr(id)}"`);
|
|
52
|
+
if (c.parentId) {
|
|
53
|
+
attrs.push(`parentId="${escapeAttr(c.parentId)}"`);
|
|
54
|
+
}
|
|
55
|
+
if (c.done !== undefined) {
|
|
56
|
+
attrs.push(`done="${c.done ? "1" : "0"}"`);
|
|
57
|
+
}
|
|
58
|
+
parts.push(`<threadedComment ${attrs.join(" ")}>`);
|
|
59
|
+
parts.push(`<text>${escapeXml(c.text)}</text>`);
|
|
60
|
+
if (c.mentions && c.mentions.length > 0) {
|
|
61
|
+
parts.push("<mentions>");
|
|
62
|
+
for (const m of c.mentions) {
|
|
63
|
+
// `startIndex` and `length` are `xsd:unsignedInt` per the
|
|
64
|
+
// threaded-comments schema — negative, non-integer, or
|
|
65
|
+
// non-finite values produce XML that strict validators (and
|
|
66
|
+
// Excel's own reader) reject. Fail loud with a descriptive
|
|
67
|
+
// error rather than ship a broken comment part.
|
|
68
|
+
if (!isNonNegativeInt(m.startIndex)) {
|
|
69
|
+
throw new Error(`Threaded comment mention.startIndex must be a non-negative integer; got ${m.startIndex}.`);
|
|
70
|
+
}
|
|
71
|
+
if (!isNonNegativeInt(m.length)) {
|
|
72
|
+
throw new Error(`Threaded comment mention.length must be a non-negative integer; got ${m.length}.`);
|
|
73
|
+
}
|
|
74
|
+
const mAttrs = [
|
|
75
|
+
`mentionpersonId="${escapeAttr(m.mentionPersonId)}"`,
|
|
76
|
+
`mentionId="${escapeAttr(m.mentionId ?? `{${synthGuid()}}`)}"`,
|
|
77
|
+
`startIndex="${m.startIndex}"`,
|
|
78
|
+
`length="${m.length}"`
|
|
79
|
+
];
|
|
80
|
+
parts.push(`<mention ${mAttrs.join(" ")}/>`);
|
|
81
|
+
}
|
|
82
|
+
parts.push("</mentions>");
|
|
83
|
+
}
|
|
84
|
+
parts.push(`</threadedComment>`);
|
|
85
|
+
}
|
|
86
|
+
parts.push(`</ThreadedComments>`);
|
|
87
|
+
return parts.join("");
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Parse a `xl/threadedComments/threadedComment{N}.xml` payload into
|
|
91
|
+
* structured per-cell entries. Returns an empty array on malformed
|
|
92
|
+
* input — the caller can silently drop threaded comments rather than
|
|
93
|
+
* failing the entire workbook load.
|
|
94
|
+
*/
|
|
95
|
+
export function parseThreadedComments(rawXml) {
|
|
96
|
+
let root;
|
|
97
|
+
try {
|
|
98
|
+
root = parseXml(rawXml).root;
|
|
99
|
+
}
|
|
100
|
+
catch {
|
|
101
|
+
return [];
|
|
102
|
+
}
|
|
103
|
+
const result = [];
|
|
104
|
+
for (const el of findChildren(root, "threadedComment")) {
|
|
105
|
+
const ref = el.attributes.ref;
|
|
106
|
+
if (!ref) {
|
|
107
|
+
continue;
|
|
108
|
+
}
|
|
109
|
+
const personId = el.attributes.personId;
|
|
110
|
+
if (!personId) {
|
|
111
|
+
continue;
|
|
112
|
+
}
|
|
113
|
+
const textEl = findChild(el, "text");
|
|
114
|
+
const mentionsEl = findChild(el, "mentions");
|
|
115
|
+
const mentions = mentionsEl
|
|
116
|
+
? findChildren(mentionsEl, "mention").map(m => ({
|
|
117
|
+
mentionId: m.attributes.mentionId,
|
|
118
|
+
mentionPersonId: m.attributes.mentionpersonId ?? "",
|
|
119
|
+
startIndex: parseInt(m.attributes.startIndex ?? "0", 10),
|
|
120
|
+
length: parseInt(m.attributes.length ?? "0", 10)
|
|
121
|
+
}))
|
|
122
|
+
: [];
|
|
123
|
+
const comment = {
|
|
124
|
+
personId,
|
|
125
|
+
text: textEl ? textContent(textEl) : "",
|
|
126
|
+
...(el.attributes.id ? { id: el.attributes.id } : {}),
|
|
127
|
+
...(el.attributes.parentId ? { parentId: el.attributes.parentId } : {}),
|
|
128
|
+
...(el.attributes.dT ? { date: el.attributes.dT } : {}),
|
|
129
|
+
...(el.attributes.done !== undefined ? { done: el.attributes.done === "1" } : {}),
|
|
130
|
+
...(mentions.length > 0 ? { mentions } : {})
|
|
131
|
+
};
|
|
132
|
+
result.push({ ref, comment });
|
|
133
|
+
}
|
|
134
|
+
return result;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Render the workbook-level `xl/persons/person.xml` part.
|
|
138
|
+
*/
|
|
139
|
+
export function renderPersonList(persons) {
|
|
140
|
+
const parts = [];
|
|
141
|
+
parts.push('<?xml version="1.0" encoding="UTF-8" standalone="yes"?>');
|
|
142
|
+
parts.push(`<personList xmlns="${TC_NAMESPACE}">`);
|
|
143
|
+
for (const p of persons) {
|
|
144
|
+
const attrs = [
|
|
145
|
+
`displayName="${escapeAttr(p.displayName)}"`,
|
|
146
|
+
`id="${escapeAttr(p.id)}"`
|
|
147
|
+
];
|
|
148
|
+
if (p.userId !== undefined) {
|
|
149
|
+
attrs.push(`userId="${escapeAttr(p.userId)}"`);
|
|
150
|
+
}
|
|
151
|
+
if (p.providerId !== undefined) {
|
|
152
|
+
attrs.push(`providerId="${escapeAttr(p.providerId)}"`);
|
|
153
|
+
}
|
|
154
|
+
parts.push(`<person ${attrs.join(" ")}/>`);
|
|
155
|
+
}
|
|
156
|
+
parts.push(`</personList>`);
|
|
157
|
+
return parts.join("");
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Parse `xl/persons/person.xml` into a {@link ThreadedCommentPerson}
|
|
161
|
+
* list. Missing ids are auto-generated so downstream parts that
|
|
162
|
+
* reference the list don't accidentally collide.
|
|
163
|
+
*/
|
|
164
|
+
export function parsePersonList(rawXml) {
|
|
165
|
+
let root;
|
|
166
|
+
try {
|
|
167
|
+
root = parseXml(rawXml).root;
|
|
168
|
+
}
|
|
169
|
+
catch {
|
|
170
|
+
return [];
|
|
171
|
+
}
|
|
172
|
+
return findChildren(root, "person")
|
|
173
|
+
.map(el => {
|
|
174
|
+
const id = el.attributes.id ?? `{${synthGuid()}}`;
|
|
175
|
+
const displayName = el.attributes.displayName ?? "";
|
|
176
|
+
if (!displayName) {
|
|
177
|
+
return undefined;
|
|
178
|
+
}
|
|
179
|
+
const entry = { id, displayName };
|
|
180
|
+
if (el.attributes.userId !== undefined) {
|
|
181
|
+
entry.userId = el.attributes.userId;
|
|
182
|
+
}
|
|
183
|
+
if (el.attributes.providerId !== undefined) {
|
|
184
|
+
entry.providerId = el.attributes.providerId;
|
|
185
|
+
}
|
|
186
|
+
return entry;
|
|
187
|
+
})
|
|
188
|
+
.filter((x) => x !== undefined);
|
|
189
|
+
}
|
|
190
|
+
function escapeXml(value) {
|
|
191
|
+
// Route through the canonical encoder so the writer strips
|
|
192
|
+
// XML-illegal control characters / lone surrogates in user-supplied
|
|
193
|
+
// comment text. The previous manual `.replace` chain only handled
|
|
194
|
+
// `& < >` and left every other hazard untouched — e.g. a pasted
|
|
195
|
+
// `\u0008` corrupted the whole `<ThreadedComments>` part on save.
|
|
196
|
+
return xmlEncode(value);
|
|
197
|
+
}
|
|
198
|
+
function escapeAttr(value) {
|
|
199
|
+
// Attribute values additionally need `\t \n \r` encoded as
|
|
200
|
+
// numeric character references so XML attribute-value normalisation
|
|
201
|
+
// doesn't collapse them to literal spaces; a threaded comment
|
|
202
|
+
// `personId` / `id` GUID shouldn't ever contain whitespace but the
|
|
203
|
+
// `ref` / `displayName` attributes can carry user input.
|
|
204
|
+
return xmlEncodeAttr(value);
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Whether `v` is a finite non-negative integer suitable for the
|
|
208
|
+
* `xsd:unsignedInt` attributes used by the threaded-comments schema.
|
|
209
|
+
* Rejects `NaN`, `±Infinity`, negative numbers, and fractional values.
|
|
210
|
+
*/
|
|
211
|
+
function isNonNegativeInt(v) {
|
|
212
|
+
return typeof v === "number" && Number.isFinite(v) && v >= 0 && Math.floor(v) === v;
|
|
213
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { OOXML_PATHS, commentsPathFromName, ctrlPropPath, drawingPath, externalLinkPath, pivotCacheDefinitionPath, pivotCacheRecordsPath, pivotTablePath, tablePath, toContentTypesPartName, worksheetPath } from "../../../utils/ooxml-paths.js";
|
|
1
|
+
import { OOXML_PATHS, chartsheetPath, commentsPathFromName, ctrlPropPath, drawingPath, externalLinkPath, chartPath, chartUserShapesPath, chartExPath, chartStylePath, chartColorsPath, chartExStylePath, chartExColorsPath, pivotCacheDefinitionPath, pivotCacheRecordsPath, pivotTablePath, tablePath, toContentTypesPartName, worksheetPath } from "../../../utils/ooxml-paths.js";
|
|
2
2
|
import { BaseXform } from "../base-xform.js";
|
|
3
3
|
import { StdDocAttributes } from "../../../../xml/writer.js";
|
|
4
4
|
// used for rendering the [Content_Types].xml file
|
|
@@ -35,6 +35,14 @@ class ContentTypesXform extends BaseXform {
|
|
|
35
35
|
ContentType: "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml"
|
|
36
36
|
});
|
|
37
37
|
});
|
|
38
|
+
if (model.chartsheets) {
|
|
39
|
+
model.chartsheets.forEach((cs) => {
|
|
40
|
+
xmlStream.leafNode("Override", {
|
|
41
|
+
PartName: toContentTypesPartName(chartsheetPath(cs.sheetNo)),
|
|
42
|
+
ContentType: "application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml"
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
}
|
|
38
46
|
if ((model.pivotTables ?? []).length) {
|
|
39
47
|
// R9-B6: Deduplicate cache content types by cacheId. When multiple pivot tables
|
|
40
48
|
// share the same cache, the cache definition/records files are written only once.
|
|
@@ -122,11 +130,105 @@ class ContentTypesXform extends BaseXform {
|
|
|
122
130
|
});
|
|
123
131
|
});
|
|
124
132
|
}
|
|
125
|
-
|
|
133
|
+
if (model.chartEntries) {
|
|
134
|
+
for (const [n, entry] of Object.entries(model.chartEntries)) {
|
|
135
|
+
xmlStream.leafNode("Override", {
|
|
136
|
+
PartName: toContentTypesPartName(chartPath(n)),
|
|
137
|
+
ContentType: "application/vnd.openxmlformats-officedocument.drawingml.chart+xml"
|
|
138
|
+
});
|
|
139
|
+
if (entry?.userShapesXml) {
|
|
140
|
+
// `c:userShapes` overlay drawings use the same DrawingML
|
|
141
|
+
// content type as worksheet drawings — Excel distinguishes
|
|
142
|
+
// them via the relationship type, not the content-type.
|
|
143
|
+
xmlStream.leafNode("Override", {
|
|
144
|
+
PartName: toContentTypesPartName(chartUserShapesPath(n)),
|
|
145
|
+
ContentType: "application/vnd.openxmlformats-officedocument.drawing+xml"
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
// Track every ChartEx PartName already emitted so the structured
|
|
151
|
+
// and raw entry loops can't duplicate an Override. Open Packaging
|
|
152
|
+
// mandates at most one `<Override>` per PartName — a duplicate
|
|
153
|
+
// surfaces as the "damaged workbook" dialog in Excel. Using an
|
|
154
|
+
// explicit Set also guards against any future drift in the key
|
|
155
|
+
// shape between `chartExEntries` and `chartExStructuredEntries`.
|
|
156
|
+
const chartExPartNamesEmitted = new Set();
|
|
157
|
+
if (model.chartExEntries) {
|
|
158
|
+
for (const n of Object.keys(model.chartExEntries)) {
|
|
159
|
+
const partName = toContentTypesPartName(chartExPath(n));
|
|
160
|
+
if (chartExPartNamesEmitted.has(partName)) {
|
|
161
|
+
continue;
|
|
162
|
+
}
|
|
163
|
+
chartExPartNamesEmitted.add(partName);
|
|
164
|
+
xmlStream.leafNode("Override", {
|
|
165
|
+
PartName: partName,
|
|
166
|
+
// Microsoft's canonical content type for ChartEx parts is
|
|
167
|
+
// `application/vnd.ms-office.chartex+xml` — ALL lowercase.
|
|
168
|
+
// Earlier versions of this library emitted the camel-cased
|
|
169
|
+
// `chartEx+xml` variant; Excel 2016+ is strict about this and
|
|
170
|
+
// drops any chartEx whose content-type doesn't match exactly,
|
|
171
|
+
// which cascades into "Removed Part: /xl/drawings/drawingN.xml
|
|
172
|
+
// (Drawing shape)" because the parent drawing's r:id pointer
|
|
173
|
+
// is left dangling.
|
|
174
|
+
ContentType: "application/vnd.ms-office.chartex+xml"
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
if (model.chartExStructuredEntries) {
|
|
179
|
+
for (const n of Object.keys(model.chartExStructuredEntries)) {
|
|
180
|
+
const partName = toContentTypesPartName(chartExPath(n));
|
|
181
|
+
if (chartExPartNamesEmitted.has(partName)) {
|
|
182
|
+
continue;
|
|
183
|
+
}
|
|
184
|
+
chartExPartNamesEmitted.add(partName);
|
|
185
|
+
xmlStream.leafNode("Override", {
|
|
186
|
+
PartName: partName,
|
|
187
|
+
ContentType: "application/vnd.ms-office.chartex+xml"
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
if (model.chartStyles) {
|
|
192
|
+
for (const n of Object.keys(model.chartStyles)) {
|
|
193
|
+
xmlStream.leafNode("Override", {
|
|
194
|
+
PartName: toContentTypesPartName(chartStylePath(n)),
|
|
195
|
+
ContentType: "application/vnd.ms-office.chartstyle+xml"
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
if (model.chartColors) {
|
|
200
|
+
for (const n of Object.keys(model.chartColors)) {
|
|
201
|
+
xmlStream.leafNode("Override", {
|
|
202
|
+
PartName: toContentTypesPartName(chartColorsPath(n)),
|
|
203
|
+
ContentType: "application/vnd.ms-office.chartcolorstyle+xml"
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
if (model.chartExStyles) {
|
|
208
|
+
for (const n of Object.keys(model.chartExStyles)) {
|
|
209
|
+
xmlStream.leafNode("Override", {
|
|
210
|
+
PartName: toContentTypesPartName(chartExStylePath(n)),
|
|
211
|
+
ContentType: "application/vnd.ms-office.chartstyle+xml"
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
if (model.chartExColors) {
|
|
216
|
+
for (const n of Object.keys(model.chartExColors)) {
|
|
217
|
+
xmlStream.leafNode("Override", {
|
|
218
|
+
PartName: toContentTypesPartName(chartExColorsPath(n)),
|
|
219
|
+
ContentType: "application/vnd.ms-office.chartcolorstyle+xml"
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
// VML extension is needed for comments, form controls, header
|
|
224
|
+
// watermarks, OR any chartsheet that carries a `<legacyDrawing>`
|
|
225
|
+
// reference — that last case pins a VML part body through the
|
|
226
|
+
// package without the worksheet loop declaring the extension.
|
|
126
227
|
const hasComments = model.commentRefs && model.commentRefs.length > 0;
|
|
127
228
|
const hasFormControls = model.formControlRefs && model.formControlRefs.length > 0;
|
|
128
229
|
const hasHeaderWatermark = model.hasHeaderWatermark === true;
|
|
129
|
-
|
|
230
|
+
const hasChartsheetVml = model.hasChartsheetVml === true;
|
|
231
|
+
if (hasComments || hasFormControls || hasHeaderWatermark || hasChartsheetVml) {
|
|
130
232
|
xmlStream.leafNode("Default", {
|
|
131
233
|
Extension: "vml",
|
|
132
234
|
ContentType: "application/vnd.openxmlformats-officedocument.vmlDrawing"
|
|
@@ -148,14 +250,51 @@ class ContentTypesXform extends BaseXform {
|
|
|
148
250
|
});
|
|
149
251
|
}
|
|
150
252
|
}
|
|
151
|
-
//
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
253
|
+
// Office 365 threaded comments: each worksheet that has them gets
|
|
254
|
+
// its own override, and the workbook-level person directory gets
|
|
255
|
+
// one more. Writers populate `model.threadedCommentSheetIds` with
|
|
256
|
+
// the worksheet ids that need parts; absent entry means no
|
|
257
|
+
// threaded comments on that sheet.
|
|
258
|
+
const threadedCommentSheetIds = model.threadedCommentSheetIds ?? [];
|
|
259
|
+
for (const sheetId of threadedCommentSheetIds) {
|
|
260
|
+
xmlStream.leafNode("Override", {
|
|
261
|
+
PartName: toContentTypesPartName(`xl/threadedComments/threadedComment${sheetId}.xml`),
|
|
262
|
+
ContentType: "application/vnd.ms-excel.threadedcomments+xml"
|
|
263
|
+
});
|
|
264
|
+
}
|
|
265
|
+
if (model.hasPersons) {
|
|
266
|
+
xmlStream.leafNode("Override", {
|
|
267
|
+
PartName: toContentTypesPartName("xl/persons/person.xml"),
|
|
268
|
+
ContentType: "application/vnd.ms-excel.person+xml"
|
|
269
|
+
});
|
|
270
|
+
}
|
|
271
|
+
// Raw-passthrough parts for slicers / timelines. The path lists
|
|
272
|
+
// were populated in `prepareModel` from the workbook's captured
|
|
273
|
+
// raw parts. Content type URIs come from MS-XLSX §2.1.32 and the
|
|
274
|
+
// 2011 timeline extension addendum.
|
|
275
|
+
for (const path of model.slicerPartPaths ?? []) {
|
|
276
|
+
xmlStream.leafNode("Override", {
|
|
277
|
+
PartName: toContentTypesPartName(path),
|
|
278
|
+
ContentType: "application/vnd.ms-excel.slicer+xml"
|
|
279
|
+
});
|
|
280
|
+
}
|
|
281
|
+
for (const path of model.slicerCachePartPaths ?? []) {
|
|
282
|
+
xmlStream.leafNode("Override", {
|
|
283
|
+
PartName: toContentTypesPartName(path),
|
|
284
|
+
ContentType: "application/vnd.ms-excel.slicerCache+xml"
|
|
285
|
+
});
|
|
286
|
+
}
|
|
287
|
+
for (const path of model.timelinePartPaths ?? []) {
|
|
288
|
+
xmlStream.leafNode("Override", {
|
|
289
|
+
PartName: toContentTypesPartName(path),
|
|
290
|
+
ContentType: "application/vnd.ms-excel.timeline+xml"
|
|
291
|
+
});
|
|
292
|
+
}
|
|
293
|
+
for (const path of model.timelineCachePartPaths ?? []) {
|
|
294
|
+
xmlStream.leafNode("Override", {
|
|
295
|
+
PartName: toContentTypesPartName(path),
|
|
296
|
+
ContentType: "application/vnd.ms-excel.timelineCache+xml"
|
|
297
|
+
});
|
|
159
298
|
}
|
|
160
299
|
xmlStream.leafNode("Override", {
|
|
161
300
|
PartName: toContentTypesPartName(OOXML_PATHS.docPropsCore),
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { BaseXform } from "../base-xform.js";
|
|
2
2
|
import { BaseCellAnchorXform } from "./base-cell-anchor-xform.js";
|
|
3
3
|
import { ExtXform } from "./ext-xform.js";
|
|
4
|
+
import { GraphicFrameXform } from "./graphic-frame-xform.js";
|
|
4
5
|
import { PicXform } from "./pic-xform.js";
|
|
5
6
|
import { StaticXform } from "../static-xform.js";
|
|
6
7
|
/** https://en.wikipedia.org/wiki/Office_Open_XML_file_formats#DrawingML */
|
|
@@ -60,6 +61,15 @@ class AbsoluteAnchorXform extends BaseCellAnchorXform {
|
|
|
60
61
|
"xdr:pos": new PosXform(),
|
|
61
62
|
"xdr:ext": new ExtXform({ tag: "xdr:ext" }),
|
|
62
63
|
"xdr:pic": new PicXform(),
|
|
64
|
+
// `xdr:graphicFrame` carries the chart / embedded object payload
|
|
65
|
+
// for absolute-anchor sheet drawings. The oneCell / twoCell
|
|
66
|
+
// counterparts already handled it; the absolute branch was
|
|
67
|
+
// pic-only, so a chart authored with an absolute anchor (or
|
|
68
|
+
// programmatically constructed via `{ pos, ext }`) silently
|
|
69
|
+
// dropped its graphicFrame on write — the drawing XML emitted
|
|
70
|
+
// `<xdr:absoluteAnchor><xdr:pos/><xdr:ext/><xdr:clientData/></xdr:absoluteAnchor>`
|
|
71
|
+
// with no chart reference, so the anchor was ignored on open.
|
|
72
|
+
"xdr:graphicFrame": new GraphicFrameXform(),
|
|
63
73
|
"xdr:clientData": new StaticXform({ tag: "xdr:clientData" })
|
|
64
74
|
};
|
|
65
75
|
}
|
|
@@ -70,6 +80,9 @@ class AbsoluteAnchorXform extends BaseCellAnchorXform {
|
|
|
70
80
|
if (model.picture) {
|
|
71
81
|
this.map["xdr:pic"].prepare(model.picture, options);
|
|
72
82
|
}
|
|
83
|
+
else if (model.graphicFrame) {
|
|
84
|
+
this.map["xdr:graphicFrame"].prepare(model.graphicFrame, options);
|
|
85
|
+
}
|
|
73
86
|
}
|
|
74
87
|
render(xmlStream, model) {
|
|
75
88
|
xmlStream.openNode(this.tag);
|
|
@@ -78,6 +91,9 @@ class AbsoluteAnchorXform extends BaseCellAnchorXform {
|
|
|
78
91
|
if (model.picture) {
|
|
79
92
|
this.map["xdr:pic"].render(xmlStream, model.picture);
|
|
80
93
|
}
|
|
94
|
+
else if (model.graphicFrame) {
|
|
95
|
+
this.map["xdr:graphicFrame"].render(xmlStream, model.graphicFrame);
|
|
96
|
+
}
|
|
81
97
|
this.map["xdr:clientData"].render(xmlStream, {});
|
|
82
98
|
xmlStream.closeNode();
|
|
83
99
|
}
|
|
@@ -93,13 +109,16 @@ class AbsoluteAnchorXform extends BaseCellAnchorXform {
|
|
|
93
109
|
this.model.range.pos = this.map["xdr:pos"].model;
|
|
94
110
|
this.model.range.ext = this.map["xdr:ext"].model;
|
|
95
111
|
this.model.picture = this.map["xdr:pic"].model;
|
|
112
|
+
this.model.graphicFrame = this.map["xdr:graphicFrame"].model;
|
|
96
113
|
return false;
|
|
97
114
|
default:
|
|
98
115
|
return true;
|
|
99
116
|
}
|
|
100
117
|
}
|
|
101
118
|
reconcile(model, options) {
|
|
102
|
-
|
|
119
|
+
if (model.picture) {
|
|
120
|
+
model.medium = this.reconcilePicture(model.picture, options);
|
|
121
|
+
}
|
|
103
122
|
}
|
|
104
123
|
}
|
|
105
124
|
export { AbsoluteAnchorXform };
|
|
@@ -14,6 +14,15 @@ function getAnchorType(model) {
|
|
|
14
14
|
class DrawingXform extends BaseXform {
|
|
15
15
|
constructor() {
|
|
16
16
|
super();
|
|
17
|
+
// mc:AlternateContent parse state
|
|
18
|
+
this._inAlternateContent = false;
|
|
19
|
+
this._acDepth = 0;
|
|
20
|
+
this._inChoice = false;
|
|
21
|
+
this._inFallback = false;
|
|
22
|
+
this._fallbackDepth = 0;
|
|
23
|
+
this._choiceRequires = undefined;
|
|
24
|
+
/** Number of anchors before entering mc:AlternateContent — used to tag new anchors */
|
|
25
|
+
this._anchorCountBeforeAC = 0;
|
|
17
26
|
this.map = {
|
|
18
27
|
"xdr:twoCellAnchor": new TwoCellAnchorXform(),
|
|
19
28
|
"xdr:oneCellAnchor": new OneCellAnchorXform(),
|
|
@@ -34,7 +43,27 @@ class DrawingXform extends BaseXform {
|
|
|
34
43
|
render(xmlStream, model) {
|
|
35
44
|
const renderModel = model || this.model;
|
|
36
45
|
xmlStream.openXml(StdDocAttributes);
|
|
37
|
-
|
|
46
|
+
// `<xdr:wsDr>` must declare every namespace prefix any descendant
|
|
47
|
+
// uses. Inline `xmlns:mc=…` declarations on a deeply nested
|
|
48
|
+
// `<mc:AlternateContent>` are legal XML and strictly sufficient for
|
|
49
|
+
// the parser, but Microsoft Excel's **drawing validator** walks the
|
|
50
|
+
// anchor tree ahead of the parser and rejects the whole drawing
|
|
51
|
+
// when it encounters an element whose prefix was not pre-declared
|
|
52
|
+
// on the wsDr root ("Removed Part: /xl/drawings/drawingN.xml
|
|
53
|
+
// part. (Drawing shape)"). Excel's own output for any drawing that
|
|
54
|
+
// hosts ChartEx content therefore declares all six prefixes —
|
|
55
|
+
// `xdr`, `a`, `r`, `c`, `mc`, `cx` — at the root.
|
|
56
|
+
//
|
|
57
|
+
// Switch to the extended namespace set whenever any anchor carries
|
|
58
|
+
// `alternateContent` metadata (form-control shapes, ChartEx
|
|
59
|
+
// charts, and their `cx1` variants all use the same wrapper). The
|
|
60
|
+
// bare `xdr` + `a` set is correct for "legacy only" drawings and
|
|
61
|
+
// round-trips byte-for-byte with Excel's output for those files.
|
|
62
|
+
const needsMcNamespaces = renderModel.anchors.some(a => !!a?.alternateContent);
|
|
63
|
+
const rootAttrs = needsMcNamespaces
|
|
64
|
+
? DrawingXform.DRAWING_ATTRIBUTES_WITH_MC
|
|
65
|
+
: DrawingXform.DRAWING_ATTRIBUTES;
|
|
66
|
+
xmlStream.openNode(this.tag, rootAttrs);
|
|
38
67
|
renderModel.anchors.forEach(item => {
|
|
39
68
|
const anchor = this.map[item.anchorType];
|
|
40
69
|
anchor.render(xmlStream, item);
|
|
@@ -42,6 +71,12 @@ class DrawingXform extends BaseXform {
|
|
|
42
71
|
xmlStream.closeNode();
|
|
43
72
|
}
|
|
44
73
|
parseOpen(node) {
|
|
74
|
+
// Inside mc:Fallback — skip everything
|
|
75
|
+
if (this._inFallback) {
|
|
76
|
+
this._fallbackDepth++;
|
|
77
|
+
return true;
|
|
78
|
+
}
|
|
79
|
+
// Delegate to active parser
|
|
45
80
|
if (this.parser) {
|
|
46
81
|
this.parser.parseOpen(node);
|
|
47
82
|
return true;
|
|
@@ -49,11 +84,29 @@ class DrawingXform extends BaseXform {
|
|
|
49
84
|
switch (node.name) {
|
|
50
85
|
case this.tag:
|
|
51
86
|
this.reset();
|
|
52
|
-
this.model = {
|
|
53
|
-
|
|
54
|
-
|
|
87
|
+
this.model = { anchors: [] };
|
|
88
|
+
break;
|
|
89
|
+
case "mc:AlternateContent":
|
|
90
|
+
this._acDepth = (this._acDepth ?? 0) + 1;
|
|
91
|
+
if (this._acDepth === 1) {
|
|
92
|
+
this._inAlternateContent = true;
|
|
93
|
+
this._anchorCountBeforeAC = this.model.anchors.length;
|
|
94
|
+
}
|
|
95
|
+
break;
|
|
96
|
+
case "mc:Choice":
|
|
97
|
+
if (this._inAlternateContent) {
|
|
98
|
+
this._inChoice = true;
|
|
99
|
+
this._choiceRequires = node.attributes?.Requires;
|
|
100
|
+
}
|
|
101
|
+
break;
|
|
102
|
+
case "mc:Fallback":
|
|
103
|
+
if (this._inAlternateContent) {
|
|
104
|
+
this._inFallback = true;
|
|
105
|
+
this._fallbackDepth = 1;
|
|
106
|
+
}
|
|
55
107
|
break;
|
|
56
108
|
default:
|
|
109
|
+
// Normal anchor dispatch (works both inside mc:Choice and at top level)
|
|
57
110
|
this.parser = this.map[node.name];
|
|
58
111
|
if (this.parser) {
|
|
59
112
|
this.parser.parseOpen(node);
|
|
@@ -63,11 +116,22 @@ class DrawingXform extends BaseXform {
|
|
|
63
116
|
return true;
|
|
64
117
|
}
|
|
65
118
|
parseText(text) {
|
|
119
|
+
if (this._inFallback) {
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
66
122
|
if (this.parser) {
|
|
67
123
|
this.parser.parseText(text);
|
|
68
124
|
}
|
|
69
125
|
}
|
|
70
126
|
parseClose(name) {
|
|
127
|
+
// Inside mc:Fallback — skip until closed
|
|
128
|
+
if (this._inFallback) {
|
|
129
|
+
this._fallbackDepth--;
|
|
130
|
+
if (this._fallbackDepth === 0) {
|
|
131
|
+
this._inFallback = false;
|
|
132
|
+
}
|
|
133
|
+
return true;
|
|
134
|
+
}
|
|
71
135
|
if (this.parser) {
|
|
72
136
|
if (!this.parser.parseClose(name)) {
|
|
73
137
|
this.model.anchors.push(this.parser.model);
|
|
@@ -78,8 +142,26 @@ class DrawingXform extends BaseXform {
|
|
|
78
142
|
switch (name) {
|
|
79
143
|
case this.tag:
|
|
80
144
|
return false;
|
|
145
|
+
case "mc:AlternateContent":
|
|
146
|
+
this._acDepth = (this._acDepth ?? 0) - 1;
|
|
147
|
+
if (this._acDepth <= 0) {
|
|
148
|
+
// Tag any anchors added during this mc:AlternateContent with alternateContent info
|
|
149
|
+
if (this._inAlternateContent && this._choiceRequires) {
|
|
150
|
+
const anchors = this.model.anchors;
|
|
151
|
+
for (let i = this._anchorCountBeforeAC; i < anchors.length; i++) {
|
|
152
|
+
anchors[i].alternateContent = { requires: this._choiceRequires };
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
this._inAlternateContent = false;
|
|
156
|
+
this._inChoice = false;
|
|
157
|
+
this._choiceRequires = undefined;
|
|
158
|
+
this._acDepth = 0;
|
|
159
|
+
}
|
|
160
|
+
return true;
|
|
161
|
+
case "mc:Choice":
|
|
162
|
+
this._inChoice = false;
|
|
163
|
+
return true;
|
|
81
164
|
default:
|
|
82
|
-
// could be some unrecognised tags
|
|
83
165
|
return true;
|
|
84
166
|
}
|
|
85
167
|
}
|
|
@@ -101,4 +183,26 @@ DrawingXform.DRAWING_ATTRIBUTES = {
|
|
|
101
183
|
"xmlns:xdr": "http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing",
|
|
102
184
|
"xmlns:a": "http://schemas.openxmlformats.org/drawingml/2006/main"
|
|
103
185
|
};
|
|
186
|
+
/**
|
|
187
|
+
* Extended namespace set used when the drawing contains anchors
|
|
188
|
+
* wrapped in `<mc:AlternateContent>` — the ChartEx case. Excel's
|
|
189
|
+
* strict loader requires the `mc`, `r`, `c`, and `cx` prefixes at
|
|
190
|
+
* the root of `<xdr:wsDr>` before it will parse `<mc:Choice>` /
|
|
191
|
+
* `<cx:chart>` descendants. Declaring them only inside the inner
|
|
192
|
+
* `<mc:AlternateContent>` element (as earlier versions did) made
|
|
193
|
+
* Excel reject the drawing and report "Removed Part:
|
|
194
|
+
* /xl/drawings/drawingN.xml (Drawing shape)".
|
|
195
|
+
*
|
|
196
|
+
* Mirrors what Excel itself emits when it writes a drawing that
|
|
197
|
+
* hosts a ChartEx chart — see `__tests__/data/workbook-roundtrip-
|
|
198
|
+
* chartex.xlsx` (fixtures authored by Excel 2016+).
|
|
199
|
+
*/
|
|
200
|
+
DrawingXform.DRAWING_ATTRIBUTES_WITH_MC = {
|
|
201
|
+
"xmlns:xdr": "http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing",
|
|
202
|
+
"xmlns:a": "http://schemas.openxmlformats.org/drawingml/2006/main",
|
|
203
|
+
"xmlns:r": "http://schemas.openxmlformats.org/officeDocument/2006/relationships",
|
|
204
|
+
"xmlns:c": "http://schemas.openxmlformats.org/drawingml/2006/chart",
|
|
205
|
+
"xmlns:mc": "http://schemas.openxmlformats.org/markup-compatibility/2006",
|
|
206
|
+
"xmlns:cx": "http://schemas.microsoft.com/office/drawing/2014/chartex"
|
|
207
|
+
};
|
|
104
208
|
export { DrawingXform };
|