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