@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
|
@@ -433,8 +433,9 @@ class WorksheetWriter {
|
|
|
433
433
|
if (typeof filter === "number") {
|
|
434
434
|
this.conditionalFormatting.splice(filter, 1);
|
|
435
435
|
}
|
|
436
|
-
else if (filter
|
|
437
|
-
|
|
436
|
+
else if (typeof filter === "function") {
|
|
437
|
+
// Predicate selects rules to drop, not rules to keep.
|
|
438
|
+
this.conditionalFormatting = this.conditionalFormatting.filter(cf => !filter(cf));
|
|
438
439
|
}
|
|
439
440
|
else {
|
|
440
441
|
this.conditionalFormatting = [];
|
|
@@ -115,7 +115,10 @@ class Column {
|
|
|
115
115
|
return this.column.style;
|
|
116
116
|
}
|
|
117
117
|
set style(value) {
|
|
118
|
-
|
|
118
|
+
// Use _set so commit() will replay store() and propagate the new style
|
|
119
|
+
// to the on-sheet cells; a bare assignment leaves _cache empty and
|
|
120
|
+
// commit() returns early.
|
|
121
|
+
this._set("style", value);
|
|
119
122
|
}
|
|
120
123
|
get totalsRowLabel() {
|
|
121
124
|
return this.column.totalsRowLabel;
|
|
@@ -241,10 +244,18 @@ class Table {
|
|
|
241
244
|
const { row, col } = table.tl;
|
|
242
245
|
assert(row > 0, "Table must be on valid row");
|
|
243
246
|
assert(col > 0, "Table must be on valid col");
|
|
244
|
-
const { width, tableHeight } = this;
|
|
245
|
-
// autoFilterRef
|
|
246
|
-
//
|
|
247
|
-
table
|
|
247
|
+
const { width, filterHeight, tableHeight } = this;
|
|
248
|
+
// autoFilterRef spans the header + all data rows (excludes the
|
|
249
|
+
// optional totals row). Matches what Excel itself emits: a real
|
|
250
|
+
// `<table ref="A1:C7"><autoFilter ref="A1:C7"/>` uses the same
|
|
251
|
+
// range for both when there's no totals row, and shrinks the
|
|
252
|
+
// autoFilter by one row when a totals row is present. Emitting a
|
|
253
|
+
// single-row range (`A1:C1`) — which the library did previously —
|
|
254
|
+
// made Excel reject the entire table on open with "Removed
|
|
255
|
+
// Records: Table from /xl/tables/tableN.xml part (Table)" because
|
|
256
|
+
// the spec requires the autoFilter range to cover the filterable
|
|
257
|
+
// data.
|
|
258
|
+
table.autoFilterRef = col_cache_1.colCache.encode(row, col, row + filterHeight - 1, col + width - 1);
|
|
248
259
|
// tableRef is a range that includes optional headers and totals
|
|
249
260
|
table.tableRef = col_cache_1.colCache.encode(row, col, row + tableHeight - 1, col + width - 1);
|
|
250
261
|
table.columns.forEach((column, i) => {
|
|
@@ -481,7 +492,32 @@ class Table {
|
|
|
481
492
|
}
|
|
482
493
|
set name(value) {
|
|
483
494
|
this.cacheState();
|
|
484
|
-
|
|
495
|
+
const newName = sanitizeTableName(value);
|
|
496
|
+
const oldName = this.table.name;
|
|
497
|
+
if (newName === oldName) {
|
|
498
|
+
return;
|
|
499
|
+
}
|
|
500
|
+
// Synchronise the worksheet's table map and the workbook-wide name set
|
|
501
|
+
// so subsequent getTable(newName)/duplicate-name checks remain correct.
|
|
502
|
+
// Falls back to a bare assignment if the worksheet hasn't registered
|
|
503
|
+
// this table (e.g. transient instances built by Worksheet.set model).
|
|
504
|
+
const ws = this.worksheet;
|
|
505
|
+
const tables = ws?.tables;
|
|
506
|
+
const tableNames = ws?.workbook?._tableNames;
|
|
507
|
+
if (tables && tables[oldName] === this) {
|
|
508
|
+
const newKey = newName.toLowerCase();
|
|
509
|
+
const oldKey = oldName.toLowerCase();
|
|
510
|
+
if (newKey !== oldKey && tableNames?.has(newKey)) {
|
|
511
|
+
throw new errors_1.TableError(`Table name "${newName}" already exists in the workbook (case-insensitive).`);
|
|
512
|
+
}
|
|
513
|
+
delete tables[oldName];
|
|
514
|
+
tables[newName] = this;
|
|
515
|
+
if (tableNames) {
|
|
516
|
+
tableNames.delete(oldKey);
|
|
517
|
+
tableNames.add(newKey);
|
|
518
|
+
}
|
|
519
|
+
}
|
|
520
|
+
this.table.name = newName;
|
|
485
521
|
}
|
|
486
522
|
get displayName() {
|
|
487
523
|
return this.table.displayName || this.table.name;
|
|
@@ -16,6 +16,7 @@ exports.decodeCell = decodeCell;
|
|
|
16
16
|
exports.encodeCell = encodeCell;
|
|
17
17
|
exports.decodeRange = decodeRange;
|
|
18
18
|
exports.encodeRange = encodeRange;
|
|
19
|
+
exports.quoteSheetName = quoteSheetName;
|
|
19
20
|
const col_cache_1 = require("./col-cache.js");
|
|
20
21
|
// =============================================================================
|
|
21
22
|
// Column Encoding/Decoding
|
|
@@ -105,3 +106,31 @@ function encodeRange(startOrRange, end) {
|
|
|
105
106
|
const endStr = encodeCell(end);
|
|
106
107
|
return startStr === endStr ? startStr : `${startStr}:${endStr}`;
|
|
107
108
|
}
|
|
109
|
+
// =============================================================================
|
|
110
|
+
// Sheet name quoting (Excel formula references)
|
|
111
|
+
// =============================================================================
|
|
112
|
+
/**
|
|
113
|
+
* Excel allows unquoted sheet names only when they consist entirely of
|
|
114
|
+
* ASCII letters, digits, and underscores *and* do not start with a digit.
|
|
115
|
+
* Any sheet name with a space, dot, comma, bracket, `&`, CJK character,
|
|
116
|
+
* or any other non-trivial symbol must be wrapped in single quotes, with
|
|
117
|
+
* existing single quotes doubled.
|
|
118
|
+
*
|
|
119
|
+
* Shared helper so chart-api, pivot-chart, cache-populator, and the XForm
|
|
120
|
+
* layer all agree on the rule — before this was unified, three callers
|
|
121
|
+
* in the chart module used three different regexes, producing divergent
|
|
122
|
+
* formula strings for sheet names with punctuation.
|
|
123
|
+
*
|
|
124
|
+
* @example quoteSheetName("Sheet1") // "Sheet1"
|
|
125
|
+
* @example quoteSheetName("My Sheet") // "'My Sheet'"
|
|
126
|
+
* @example quoteSheetName("It's Fine") // "'It''s Fine'"
|
|
127
|
+
* @example quoteSheetName("2023 Data") // "'2023 Data'" (leading digit → quoted)
|
|
128
|
+
*/
|
|
129
|
+
function quoteSheetName(sheetName) {
|
|
130
|
+
// Leading digit forces quoting even with an otherwise clean name —
|
|
131
|
+
// Excel would otherwise parse `2023Data!A1` as a numeric literal.
|
|
132
|
+
if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(sheetName)) {
|
|
133
|
+
return `'${sheetName.replace(/'/g, "''")}'`;
|
|
134
|
+
}
|
|
135
|
+
return sheetName;
|
|
136
|
+
}
|
|
@@ -106,20 +106,25 @@ function filterDrawingAnchors(anchors) {
|
|
|
106
106
|
if (a == null) {
|
|
107
107
|
return false;
|
|
108
108
|
}
|
|
109
|
-
// Absolute anchors need a
|
|
109
|
+
// Absolute anchors need either a picture (image with pos+ext) or a
|
|
110
|
+
// graphicFrame (chart placed via `{ pos, ext }`). The previous
|
|
111
|
+
// filter returned `!!a.picture` for every absolute anchor,
|
|
112
|
+
// silently dropping every chart anchored via `{ pos: { x, y },
|
|
113
|
+
// ext: { cx, cy } }` on write — the drawing XML came out empty
|
|
114
|
+
// and the chart disappeared from the saved file.
|
|
110
115
|
if (a.range?.pos !== undefined) {
|
|
111
|
-
return !!a.picture;
|
|
116
|
+
return !!a.picture || !!a.graphicFrame || !!a.shape;
|
|
112
117
|
}
|
|
113
118
|
// Form controls have range.br and shape properties
|
|
114
119
|
if (a.range?.br && a.shape) {
|
|
115
120
|
return true;
|
|
116
121
|
}
|
|
117
|
-
// One-cell anchors need a valid picture
|
|
118
|
-
if (!a.range?.br && !a.picture) {
|
|
122
|
+
// One-cell anchors need a valid picture or graphicFrame (charts)
|
|
123
|
+
if (!a.range?.br && !a.picture && !a.graphicFrame) {
|
|
119
124
|
return false;
|
|
120
125
|
}
|
|
121
|
-
// Two-cell anchors need either picture or
|
|
122
|
-
if (a.range?.br && !a.picture && !a.shape) {
|
|
126
|
+
// Two-cell anchors need either picture, shape, or graphicFrame (charts)
|
|
127
|
+
if (a.range?.br && !a.picture && !a.shape && !a.graphicFrame) {
|
|
123
128
|
return false;
|
|
124
129
|
}
|
|
125
130
|
return true;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.synthGuid = synthGuid;
|
|
4
|
+
/**
|
|
5
|
+
* GUID helpers for OOXML.
|
|
6
|
+
*
|
|
7
|
+
* Office parts that need stable cross-reference ids (threaded comments,
|
|
8
|
+
* chart uniqueIds, slicer caches, …) use the canonical Microsoft
|
|
9
|
+
* `{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}` format — 32 uppercase hex
|
|
10
|
+
* characters split into 8-4-4-4-12 groups, surrounded by braces.
|
|
11
|
+
*
|
|
12
|
+
* `synthGuid()` returns an RFC-4122 version-4-compatible value suitable
|
|
13
|
+
* for those callers. We don't use `crypto.randomUUID()` directly because
|
|
14
|
+
* it isn't available in every supported runtime (older Node without
|
|
15
|
+
* `node:crypto` globals); `Math.random` is good enough for uniqueness
|
|
16
|
+
* within a single workbook, which is the only thing Office cares about.
|
|
17
|
+
*/
|
|
18
|
+
function synthGuid() {
|
|
19
|
+
const hex = "0123456789ABCDEF";
|
|
20
|
+
let out = "";
|
|
21
|
+
for (let i = 0; i < 32; i++) {
|
|
22
|
+
// Version 4: bit 48 (13th hex digit) is always '4'.
|
|
23
|
+
// Variant 10xx: bit 64 (17th hex digit) is one of 8, 9, A, B.
|
|
24
|
+
if (i === 12) {
|
|
25
|
+
out += "4";
|
|
26
|
+
}
|
|
27
|
+
else if (i === 16) {
|
|
28
|
+
out += hex[8 + Math.floor(Math.random() * 4)];
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
out += hex[Math.floor(Math.random() * 16)];
|
|
32
|
+
}
|
|
33
|
+
if (i === 7 || i === 11 || i === 15 || i === 19) {
|
|
34
|
+
out += "-";
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return out;
|
|
38
|
+
}
|
|
@@ -11,6 +11,7 @@ exports.getThemeNameFromPath = getThemeNameFromPath;
|
|
|
11
11
|
exports.isBinaryEntryPath = isBinaryEntryPath;
|
|
12
12
|
exports.getDrawingNameFromPath = getDrawingNameFromPath;
|
|
13
13
|
exports.getDrawingNameFromRelsPath = getDrawingNameFromRelsPath;
|
|
14
|
+
exports.getChartUserShapesNameFromPath = getChartUserShapesNameFromPath;
|
|
14
15
|
exports.getVmlDrawingNameFromPath = getVmlDrawingNameFromPath;
|
|
15
16
|
exports.getVmlDrawingHFNameFromPath = getVmlDrawingHFNameFromPath;
|
|
16
17
|
exports.isCommentsPath = isCommentsPath;
|
|
@@ -30,6 +31,9 @@ exports.worksheetRelsPath = worksheetRelsPath;
|
|
|
30
31
|
exports.worksheetRelTarget = worksheetRelTarget;
|
|
31
32
|
exports.commentsPath = commentsPath;
|
|
32
33
|
exports.commentsPathFromName = commentsPathFromName;
|
|
34
|
+
exports.threadedCommentsPath = threadedCommentsPath;
|
|
35
|
+
exports.threadedCommentsPathFromName = threadedCommentsPathFromName;
|
|
36
|
+
exports.personsPath = personsPath;
|
|
33
37
|
exports.vmlDrawingPath = vmlDrawingPath;
|
|
34
38
|
exports.vmlDrawingHFPath = vmlDrawingHFPath;
|
|
35
39
|
exports.vmlDrawingHFRelsPath = vmlDrawingHFRelsPath;
|
|
@@ -56,8 +60,44 @@ exports.pivotTableRelTargetFromWorksheet = pivotTableRelTargetFromWorksheet;
|
|
|
56
60
|
exports.tableRelTargetFromWorksheet = tableRelTargetFromWorksheet;
|
|
57
61
|
exports.mediaRelTargetFromRels = mediaRelTargetFromRels;
|
|
58
62
|
exports.ctrlPropPath = ctrlPropPath;
|
|
63
|
+
exports.getChartNumberFromPath = getChartNumberFromPath;
|
|
64
|
+
exports.getChartNumberFromRelsPath = getChartNumberFromRelsPath;
|
|
65
|
+
exports.getChartStyleNumberFromPath = getChartStyleNumberFromPath;
|
|
66
|
+
exports.getChartColorsNumberFromPath = getChartColorsNumberFromPath;
|
|
67
|
+
exports.getChartExStyleNumberFromPath = getChartExStyleNumberFromPath;
|
|
68
|
+
exports.getChartExColorsNumberFromPath = getChartExColorsNumberFromPath;
|
|
69
|
+
exports.chartPath = chartPath;
|
|
70
|
+
exports.chartRelsPath = chartRelsPath;
|
|
71
|
+
exports.chartStylePath = chartStylePath;
|
|
72
|
+
exports.chartColorsPath = chartColorsPath;
|
|
73
|
+
exports.chartExStylePath = chartExStylePath;
|
|
74
|
+
exports.chartExColorsPath = chartExColorsPath;
|
|
75
|
+
exports.chartRelTargetFromDrawing = chartRelTargetFromDrawing;
|
|
76
|
+
exports.chartUserShapesPath = chartUserShapesPath;
|
|
77
|
+
exports.chartUserShapesRelTarget = chartUserShapesRelTarget;
|
|
78
|
+
exports.chartStyleRelTarget = chartStyleRelTarget;
|
|
79
|
+
exports.chartColorsRelTarget = chartColorsRelTarget;
|
|
80
|
+
exports.chartExStyleRelTarget = chartExStyleRelTarget;
|
|
81
|
+
exports.chartExColorsRelTarget = chartExColorsRelTarget;
|
|
82
|
+
exports.isChartPath = isChartPath;
|
|
83
|
+
exports.isChartStylePath = isChartStylePath;
|
|
84
|
+
exports.isChartColorsPath = isChartColorsPath;
|
|
85
|
+
exports.isChartRelsPath = isChartRelsPath;
|
|
86
|
+
exports.getChartExNumberFromPath = getChartExNumberFromPath;
|
|
87
|
+
exports.getChartExNumberFromRelsPath = getChartExNumberFromRelsPath;
|
|
88
|
+
exports.chartExPath = chartExPath;
|
|
89
|
+
exports.chartExRelsPath = chartExRelsPath;
|
|
90
|
+
exports.chartExRelTargetFromDrawing = chartExRelTargetFromDrawing;
|
|
91
|
+
exports.isChartExPath = isChartExPath;
|
|
92
|
+
exports.isChartExRelsPath = isChartExRelsPath;
|
|
59
93
|
exports.ctrlPropRelTargetFromWorksheet = ctrlPropRelTargetFromWorksheet;
|
|
60
94
|
exports.resolveRelTarget = resolveRelTarget;
|
|
95
|
+
exports.getChartsheetNoFromPath = getChartsheetNoFromPath;
|
|
96
|
+
exports.getChartsheetNoFromRelsPath = getChartsheetNoFromRelsPath;
|
|
97
|
+
exports.chartsheetPath = chartsheetPath;
|
|
98
|
+
exports.chartsheetRelsPath = chartsheetRelsPath;
|
|
99
|
+
exports.isChartsheetPath = isChartsheetPath;
|
|
100
|
+
exports.isChartsheetRelsPath = isChartsheetRelsPath;
|
|
61
101
|
exports.OOXML_PATHS = {
|
|
62
102
|
contentTypes: "[Content_Types].xml",
|
|
63
103
|
rootRels: "_rels/.rels",
|
|
@@ -77,6 +117,16 @@ const themeXmlRegex = /^xl\/theme\/[a-zA-Z0-9]+[.]xml$/;
|
|
|
77
117
|
const mediaFilenameRegex = /^xl\/media\/([a-zA-Z0-9]+[.][a-zA-Z0-9]{3,4})$/;
|
|
78
118
|
const drawingXmlRegex = /^xl\/drawings\/(drawing\d+)[.]xml$/;
|
|
79
119
|
const drawingRelsXmlRegex = /^xl\/drawings\/_rels\/(drawing\d+)[.]xml[.]rels$/;
|
|
120
|
+
// `chartUserShape` is the canonical stem Excel and this library emit,
|
|
121
|
+
// but OOXML does not mandate any particular filename — the chart part
|
|
122
|
+
// discovers its user-shape drawing via the `.rels` relationship type,
|
|
123
|
+
// not by path. Widen the regex to also accept the plural form and
|
|
124
|
+
// a common third-party variant so foreign packages round-trip without
|
|
125
|
+
// silently dropping the overlay drawing. Packages that name the part
|
|
126
|
+
// entirely differently (e.g. `drawing5.xml` referenced via the
|
|
127
|
+
// `chartUserShapes` rel type) still require the relationship-based
|
|
128
|
+
// discovery path; that's a separate fix tracked against the reader.
|
|
129
|
+
const chartUserShapesXmlRegex = /^xl\/drawings\/((?:chartUserShape|chartUserShapes|userDrawing)\d+)[.]xml$/;
|
|
80
130
|
const vmlDrawingRegex = /^xl\/drawings\/(vmlDrawing\d+)[.]vml$/;
|
|
81
131
|
const vmlDrawingHFRegex = /^xl\/drawings\/(vmlDrawingHF\d+)[.]vml$/;
|
|
82
132
|
// Matches both flat layout (xl/comments1.xml) and subdirectory layout (xl/comments/comment1.xml).
|
|
@@ -135,6 +185,17 @@ function getDrawingNameFromRelsPath(path) {
|
|
|
135
185
|
const match = drawingRelsXmlRegex.exec(path);
|
|
136
186
|
return match ? match[1] : undefined;
|
|
137
187
|
}
|
|
188
|
+
/**
|
|
189
|
+
* Canonical filename stem for a chart-overlay drawing part — used by
|
|
190
|
+
* the reader to recognise `xl/drawings/chartUserShapeN.xml` entries
|
|
191
|
+
* and stash their bytes for post-load reconciliation onto the owning
|
|
192
|
+
* chart. Returns `undefined` for any other path, including regular
|
|
193
|
+
* worksheet drawings (those go through {@link getDrawingNameFromPath}).
|
|
194
|
+
*/
|
|
195
|
+
function getChartUserShapesNameFromPath(path) {
|
|
196
|
+
const match = chartUserShapesXmlRegex.exec(path);
|
|
197
|
+
return match ? match[1] : undefined;
|
|
198
|
+
}
|
|
138
199
|
function getVmlDrawingNameFromPath(path) {
|
|
139
200
|
const match = vmlDrawingRegex.exec(path);
|
|
140
201
|
return match ? match[1] : undefined;
|
|
@@ -216,6 +277,28 @@ function commentsPathFromName(commentName) {
|
|
|
216
277
|
// For comments when the caller already has the logical name (e.g. "comments1").
|
|
217
278
|
return `xl/${commentName}.xml`;
|
|
218
279
|
}
|
|
280
|
+
/**
|
|
281
|
+
* Modern Office 365 "threaded comments" — separate from classic VML
|
|
282
|
+
* comments. Each worksheet that uses threaded comments has its own
|
|
283
|
+
* `xl/threadedComments/threadedComment{N}.xml` part alongside the
|
|
284
|
+
* legacy `xl/comments{N}.xml` (classic comments carry a fallback text
|
|
285
|
+
* representation, threaded comments carry the conversation tree).
|
|
286
|
+
*/
|
|
287
|
+
function threadedCommentsPath(sheetId) {
|
|
288
|
+
return `xl/threadedComments/threadedComment${sheetId}.xml`;
|
|
289
|
+
}
|
|
290
|
+
function threadedCommentsPathFromName(name) {
|
|
291
|
+
return `xl/threadedComments/${name}.xml`;
|
|
292
|
+
}
|
|
293
|
+
/**
|
|
294
|
+
* Modern Office 365 "persons" list — the directory of commenters
|
|
295
|
+
* referenced by `threadedComment/@personId`. Workbook-level single
|
|
296
|
+
* part (`xl/persons/person.xml` is the conventional filename for the
|
|
297
|
+
* primary, rarely-duplicated list).
|
|
298
|
+
*/
|
|
299
|
+
function personsPath() {
|
|
300
|
+
return "xl/persons/person.xml";
|
|
301
|
+
}
|
|
219
302
|
function vmlDrawingPath(sheetId) {
|
|
220
303
|
return `xl/drawings/vmlDrawing${sheetId}.vml`;
|
|
221
304
|
}
|
|
@@ -316,6 +399,133 @@ function mediaRelTargetFromRels(filename) {
|
|
|
316
399
|
function ctrlPropPath(id) {
|
|
317
400
|
return `xl/ctrlProps/ctrlProp${id}.xml`;
|
|
318
401
|
}
|
|
402
|
+
// -------- Charts --------
|
|
403
|
+
const chartXmlRegex = /^xl\/charts\/chart(\d+)[.]xml$/;
|
|
404
|
+
const chartRelsXmlRegex = /^xl\/charts\/_rels\/chart(\d+)[.]xml[.]rels$/;
|
|
405
|
+
const chartStyleXmlRegex = /^xl\/charts\/style(\d+)[.]xml$/;
|
|
406
|
+
const chartColorsXmlRegex = /^xl\/charts\/colors(\d+)[.]xml$/;
|
|
407
|
+
const chartExStyleXmlRegex = /^xl\/charts\/styleEx(\d+)[.]xml$/;
|
|
408
|
+
const chartExColorsXmlRegex = /^xl\/charts\/colorsEx(\d+)[.]xml$/;
|
|
409
|
+
function getChartNumberFromPath(path) {
|
|
410
|
+
const match = chartXmlRegex.exec(path);
|
|
411
|
+
return match ? parseInt(match[1], 10) : undefined;
|
|
412
|
+
}
|
|
413
|
+
function getChartNumberFromRelsPath(path) {
|
|
414
|
+
const match = chartRelsXmlRegex.exec(path);
|
|
415
|
+
return match ? parseInt(match[1], 10) : undefined;
|
|
416
|
+
}
|
|
417
|
+
function getChartStyleNumberFromPath(path) {
|
|
418
|
+
const match = chartStyleXmlRegex.exec(path);
|
|
419
|
+
return match ? parseInt(match[1], 10) : undefined;
|
|
420
|
+
}
|
|
421
|
+
function getChartColorsNumberFromPath(path) {
|
|
422
|
+
const match = chartColorsXmlRegex.exec(path);
|
|
423
|
+
return match ? parseInt(match[1], 10) : undefined;
|
|
424
|
+
}
|
|
425
|
+
function getChartExStyleNumberFromPath(path) {
|
|
426
|
+
const match = chartExStyleXmlRegex.exec(path);
|
|
427
|
+
return match ? parseInt(match[1], 10) : undefined;
|
|
428
|
+
}
|
|
429
|
+
function getChartExColorsNumberFromPath(path) {
|
|
430
|
+
const match = chartExColorsXmlRegex.exec(path);
|
|
431
|
+
return match ? parseInt(match[1], 10) : undefined;
|
|
432
|
+
}
|
|
433
|
+
function chartPath(n) {
|
|
434
|
+
return `xl/charts/chart${n}.xml`;
|
|
435
|
+
}
|
|
436
|
+
function chartRelsPath(n) {
|
|
437
|
+
return `xl/charts/_rels/chart${n}.xml.rels`;
|
|
438
|
+
}
|
|
439
|
+
function chartStylePath(n) {
|
|
440
|
+
return `xl/charts/style${n}.xml`;
|
|
441
|
+
}
|
|
442
|
+
function chartColorsPath(n) {
|
|
443
|
+
return `xl/charts/colors${n}.xml`;
|
|
444
|
+
}
|
|
445
|
+
function chartExStylePath(n) {
|
|
446
|
+
return `xl/charts/styleEx${n}.xml`;
|
|
447
|
+
}
|
|
448
|
+
function chartExColorsPath(n) {
|
|
449
|
+
return `xl/charts/colorsEx${n}.xml`;
|
|
450
|
+
}
|
|
451
|
+
function chartRelTargetFromDrawing(n) {
|
|
452
|
+
// Target inside xl/drawings/_rels/drawingN.xml.rels (base: xl/drawings/)
|
|
453
|
+
return `../charts/chart${n}.xml`;
|
|
454
|
+
}
|
|
455
|
+
/**
|
|
456
|
+
* Path of the DrawingML overlay part backing a chart's `c:userShapes`
|
|
457
|
+
* reference. Placed under `xl/drawings/` with a `chartUserShape` prefix
|
|
458
|
+
* (rather than sharing the regular `drawingN` pool) so the writer can
|
|
459
|
+
* allocate it by chart number without colliding with worksheet
|
|
460
|
+
* drawings. Excel itself is indifferent to the part path — only the
|
|
461
|
+
* rel target matters — so files loaded with a different original
|
|
462
|
+
* path are renamed on write.
|
|
463
|
+
*/
|
|
464
|
+
function chartUserShapesPath(n) {
|
|
465
|
+
return `xl/drawings/chartUserShape${n}.xml`;
|
|
466
|
+
}
|
|
467
|
+
/**
|
|
468
|
+
* Target path emitted inside `xl/charts/_rels/chartN.xml.rels` for the
|
|
469
|
+
* user-shapes drawing part. Resolved relative to the rels file's
|
|
470
|
+
* base directory (`xl/charts/`).
|
|
471
|
+
*/
|
|
472
|
+
function chartUserShapesRelTarget(n) {
|
|
473
|
+
return `../drawings/chartUserShape${n}.xml`;
|
|
474
|
+
}
|
|
475
|
+
function chartStyleRelTarget(n) {
|
|
476
|
+
// Target inside xl/charts/_rels/chartN.xml.rels (base: xl/charts/)
|
|
477
|
+
return `style${n}.xml`;
|
|
478
|
+
}
|
|
479
|
+
function chartColorsRelTarget(n) {
|
|
480
|
+
// Target inside xl/charts/_rels/chartN.xml.rels (base: xl/charts/)
|
|
481
|
+
return `colors${n}.xml`;
|
|
482
|
+
}
|
|
483
|
+
function chartExStyleRelTarget(n) {
|
|
484
|
+
return `styleEx${n}.xml`;
|
|
485
|
+
}
|
|
486
|
+
function chartExColorsRelTarget(n) {
|
|
487
|
+
return `colorsEx${n}.xml`;
|
|
488
|
+
}
|
|
489
|
+
function isChartPath(path) {
|
|
490
|
+
return chartXmlRegex.test(path);
|
|
491
|
+
}
|
|
492
|
+
function isChartStylePath(path) {
|
|
493
|
+
return chartStyleXmlRegex.test(path);
|
|
494
|
+
}
|
|
495
|
+
function isChartColorsPath(path) {
|
|
496
|
+
return chartColorsXmlRegex.test(path);
|
|
497
|
+
}
|
|
498
|
+
function isChartRelsPath(path) {
|
|
499
|
+
return chartRelsXmlRegex.test(path);
|
|
500
|
+
}
|
|
501
|
+
// ============================================================================
|
|
502
|
+
// Chart Ex (Office 2016+ extended charts: treemap, sunburst, waterfall, etc.)
|
|
503
|
+
// ============================================================================
|
|
504
|
+
const chartExXmlRegex = /^xl\/charts\/chartEx(\d+)[.]xml$/;
|
|
505
|
+
const chartExRelsXmlRegex = /^xl\/charts\/_rels\/chartEx(\d+)[.]xml[.]rels$/;
|
|
506
|
+
function getChartExNumberFromPath(path) {
|
|
507
|
+
const match = chartExXmlRegex.exec(path);
|
|
508
|
+
return match ? parseInt(match[1], 10) : undefined;
|
|
509
|
+
}
|
|
510
|
+
function getChartExNumberFromRelsPath(path) {
|
|
511
|
+
const match = chartExRelsXmlRegex.exec(path);
|
|
512
|
+
return match ? parseInt(match[1], 10) : undefined;
|
|
513
|
+
}
|
|
514
|
+
function chartExPath(n) {
|
|
515
|
+
return `xl/charts/chartEx${n}.xml`;
|
|
516
|
+
}
|
|
517
|
+
function chartExRelsPath(n) {
|
|
518
|
+
return `xl/charts/_rels/chartEx${n}.xml.rels`;
|
|
519
|
+
}
|
|
520
|
+
function chartExRelTargetFromDrawing(n) {
|
|
521
|
+
return `../charts/chartEx${n}.xml`;
|
|
522
|
+
}
|
|
523
|
+
function isChartExPath(path) {
|
|
524
|
+
return chartExXmlRegex.test(path);
|
|
525
|
+
}
|
|
526
|
+
function isChartExRelsPath(path) {
|
|
527
|
+
return chartExRelsXmlRegex.test(path);
|
|
528
|
+
}
|
|
319
529
|
function ctrlPropRelTargetFromWorksheet(id) {
|
|
320
530
|
// Target inside xl/worksheets/_rels/sheetN.xml.rels (base: xl/worksheets/)
|
|
321
531
|
return `../ctrlProps/ctrlProp${id}.xml`;
|
|
@@ -331,15 +541,17 @@ function ctrlPropRelTargetFromWorksheet(id) {
|
|
|
331
541
|
* @param target The raw Target value from the .rels file
|
|
332
542
|
*/
|
|
333
543
|
function resolveRelTarget(baseDir, target) {
|
|
334
|
-
//
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
//
|
|
339
|
-
|
|
340
|
-
//
|
|
341
|
-
|
|
342
|
-
|
|
544
|
+
// Normalise every path through the same split / `.` / `..` collapse
|
|
545
|
+
// so absolute targets with `..` segments (legal per OPC, emitted by
|
|
546
|
+
// some third-party producers like LibreOffice for cross-folder rels
|
|
547
|
+
// such as `/xl/worksheets/../charts/chart1.xml`) resolve to a
|
|
548
|
+
// canonical zip path. Previously the absolute branch returned
|
|
549
|
+
// `target.slice(1)` verbatim — every downstream `_chartRels[path]`
|
|
550
|
+
// lookup then missed because the stored keys are canonical.
|
|
551
|
+
const rawPath = target.startsWith("/")
|
|
552
|
+
? target.slice(1)
|
|
553
|
+
: `${baseDir.endsWith("/") ? baseDir : baseDir + "/"}${target}`;
|
|
554
|
+
const parts = rawPath.split("/");
|
|
343
555
|
const resolved = [];
|
|
344
556
|
for (const part of parts) {
|
|
345
557
|
if (part === "." || part === "") {
|
|
@@ -354,3 +566,28 @@ function resolveRelTarget(baseDir, target) {
|
|
|
354
566
|
}
|
|
355
567
|
return resolved.join("/");
|
|
356
568
|
}
|
|
569
|
+
// ============================================================================
|
|
570
|
+
// Chartsheet paths
|
|
571
|
+
// ============================================================================
|
|
572
|
+
const chartsheetXmlRegex = /^xl\/chartsheets\/sheet(\d+)[.]xml$/;
|
|
573
|
+
const chartsheetRelsXmlRegex = /^xl\/chartsheets\/_rels\/sheet(\d+)[.]xml[.]rels$/;
|
|
574
|
+
function getChartsheetNoFromPath(path) {
|
|
575
|
+
const match = chartsheetXmlRegex.exec(path);
|
|
576
|
+
return match ? parseInt(match[1], 10) : undefined;
|
|
577
|
+
}
|
|
578
|
+
function getChartsheetNoFromRelsPath(path) {
|
|
579
|
+
const match = chartsheetRelsXmlRegex.exec(path);
|
|
580
|
+
return match ? parseInt(match[1], 10) : undefined;
|
|
581
|
+
}
|
|
582
|
+
function chartsheetPath(n) {
|
|
583
|
+
return `xl/chartsheets/sheet${n}.xml`;
|
|
584
|
+
}
|
|
585
|
+
function chartsheetRelsPath(n) {
|
|
586
|
+
return `xl/chartsheets/_rels/sheet${n}.xml.rels`;
|
|
587
|
+
}
|
|
588
|
+
function isChartsheetPath(path) {
|
|
589
|
+
return chartsheetXmlRegex.test(path);
|
|
590
|
+
}
|
|
591
|
+
function isChartsheetRelsPath(path) {
|
|
592
|
+
return chartsheetRelsXmlRegex.test(path);
|
|
593
|
+
}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* ChartEx sidecar completeness check.
|
|
4
|
+
*
|
|
5
|
+
* Every ChartEx `xl/charts/chartExN.xml` MUST ship with a chartStyle
|
|
6
|
+
* sidecar (`xl/charts/styleN.xml` or `xl/charts/styleExN.xml`) and a
|
|
7
|
+
* chartColorStyle sidecar (`xl/charts/colorsN.xml` or
|
|
8
|
+
* `xl/charts/colorsExN.xml`), linked from `chartExN.xml.rels`. Without
|
|
9
|
+
* them Excel 2016+ discards the chartEx on load ("Removed Part:
|
|
10
|
+
* /xl/drawings/drawingN.xml (Drawing shape)").
|
|
11
|
+
*
|
|
12
|
+
* Both sidecars are STUB-REJECTED **for chartEx** — an id-only
|
|
13
|
+
* skeleton such as `<cs:chartStyle id="395"/>` (no child elements)
|
|
14
|
+
* makes Excel treat the sidecar as malformed and drop the parent
|
|
15
|
+
* chartEx + drawing. Excel authoring tools emit the FULL content: ~40
|
|
16
|
+
* child elements for chartStyle (axisTitle, dataPoint, dataLabel, …)
|
|
17
|
+
* and 6 `schemeClr` entries each with 9 `variation` siblings for
|
|
18
|
+
* chartColorStyle.
|
|
19
|
+
*
|
|
20
|
+
* CLASSIC charts (`xl/charts/chartN.xml`) can share the chartStyle
|
|
21
|
+
* namespace but Excel is lenient there — classic chart style stubs
|
|
22
|
+
* are accepted. We therefore only enforce the no-stub rule on
|
|
23
|
+
* sidecars **referenced by a `chartExN.xml` part** via its rels.
|
|
24
|
+
*
|
|
25
|
+
* The precise content is too intricate to validate without baking
|
|
26
|
+
* ~1500 lines of template XML into this module. Instead we detect the
|
|
27
|
+
* two high-signal stub patterns:
|
|
28
|
+
*
|
|
29
|
+
* - chartStyle root element has zero element children (pure stub).
|
|
30
|
+
* - chartColorStyle root element has zero element children (pure stub).
|
|
31
|
+
*
|
|
32
|
+
* A rich sidecar trivially has dozens of children so the zero-child
|
|
33
|
+
* case is a strong writer-bug signature.
|
|
34
|
+
*/
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.checkChartSidecars = checkChartSidecars;
|
|
37
|
+
const path_utils_1 = require("./path-utils");
|
|
38
|
+
const CHARTEX_PART_RE = /^xl\/charts\/chartEx\d+\.xml$/;
|
|
39
|
+
const CHARTSTYLE_REL_TYPE = "http://schemas.microsoft.com/office/2011/relationships/chartStyle";
|
|
40
|
+
const CHARTCOLORS_REL_TYPE = "http://schemas.microsoft.com/office/2011/relationships/chartColorStyle";
|
|
41
|
+
function checkChartSidecars(ctx) {
|
|
42
|
+
// Phase 1: collect all sidecar paths that are referenced from a
|
|
43
|
+
// chartEx part. Only these warrant the "stub is rejection" rule.
|
|
44
|
+
const chartExStylePaths = new Set();
|
|
45
|
+
const chartExColorsPaths = new Set();
|
|
46
|
+
for (const [path, entry] of ctx.files()) {
|
|
47
|
+
if (entry.type === "directory" || !CHARTEX_PART_RE.test(path)) {
|
|
48
|
+
continue;
|
|
49
|
+
}
|
|
50
|
+
const relsPath = chartRelsPath(path);
|
|
51
|
+
if (!ctx.has(relsPath)) {
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
const rels = ctx.readRels(relsPath);
|
|
55
|
+
for (const rel of rels.rels) {
|
|
56
|
+
if (rel.targetMode === "External") {
|
|
57
|
+
continue;
|
|
58
|
+
}
|
|
59
|
+
const resolved = (0, path_utils_1.resolveRelTarget)(relsPath, rel.target);
|
|
60
|
+
if (rel.type === CHARTSTYLE_REL_TYPE) {
|
|
61
|
+
chartExStylePaths.add(resolved);
|
|
62
|
+
}
|
|
63
|
+
else if (rel.type === CHARTCOLORS_REL_TYPE) {
|
|
64
|
+
chartExColorsPaths.add(resolved);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
// Phase 2: for every sidecar referenced by a chartEx, flag stub form.
|
|
69
|
+
for (const path of chartExStylePaths) {
|
|
70
|
+
if (ctx.reporter.capped) {
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
checkStubRoot(ctx, path, "chartEx-chartStyle-stub-form", "chartStyle");
|
|
74
|
+
}
|
|
75
|
+
for (const path of chartExColorsPaths) {
|
|
76
|
+
if (ctx.reporter.capped) {
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
checkStubRoot(ctx, path, "chartEx-chartColorStyle-stub-form", "chartColorStyle");
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
function chartRelsPath(chartPath) {
|
|
83
|
+
const slash = chartPath.lastIndexOf("/");
|
|
84
|
+
const dir = slash >= 0 ? chartPath.slice(0, slash) : "";
|
|
85
|
+
const name = slash >= 0 ? chartPath.slice(slash + 1) : chartPath;
|
|
86
|
+
return dir ? `${dir}/_rels/${name}.rels` : `_rels/${name}.rels`;
|
|
87
|
+
}
|
|
88
|
+
function checkStubRoot(ctx, path, kind, label) {
|
|
89
|
+
if (!ctx.has(path)) {
|
|
90
|
+
return; // missing-target already reported by the rels checker.
|
|
91
|
+
}
|
|
92
|
+
const dom = ctx.readDom(path);
|
|
93
|
+
if (!dom) {
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
const root = dom.root;
|
|
97
|
+
const hasElementChildren = root.children.some(c => c.type === "element");
|
|
98
|
+
if (!hasElementChildren) {
|
|
99
|
+
ctx.reporter.error(kind, `${path}: ${label} sidecar referenced by a chartEx part is an id-only stub ` +
|
|
100
|
+
`(root element has no children). Excel 2016+ rejects chartEx stub sidecars and ` +
|
|
101
|
+
`drops the parent chartEx + drawing. Emit the full Microsoft-authored default content.`, path);
|
|
102
|
+
}
|
|
103
|
+
}
|