@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
|
@@ -1,16 +1,30 @@
|
|
|
1
1
|
import { BaseCellAnchorXform } from "./base-cell-anchor-xform.js";
|
|
2
2
|
import { CellPositionXform } from "./cell-position-xform.js";
|
|
3
|
+
import { GraphicFrameXform } from "./graphic-frame-xform.js";
|
|
3
4
|
import { PicXform } from "./pic-xform.js";
|
|
4
5
|
import { SpXform } from "./sp-xform.js";
|
|
5
6
|
import { StaticXform } from "../static-xform.js";
|
|
6
7
|
class TwoCellAnchorXform extends BaseCellAnchorXform {
|
|
7
8
|
constructor() {
|
|
8
9
|
super();
|
|
10
|
+
// Parse state for the inner `<mc:AlternateContent>` block that
|
|
11
|
+
// chartEx drawings place in the shape slot of a `<xdr:twoCellAnchor>`.
|
|
12
|
+
// See `render()` for the canonical layout. When `_inFallback`
|
|
13
|
+
// flips on we swallow every open/close/text until the matching
|
|
14
|
+
// `</mc:Fallback>` — the Fallback contents are a legacy-Excel
|
|
15
|
+
// placeholder shape that structured consumers don't need to
|
|
16
|
+
// surface; `alternateContent.requires` on the model is enough
|
|
17
|
+
// to re-emit it verbatim on save.
|
|
18
|
+
this._acDepth = 0;
|
|
19
|
+
this._inFallback = false;
|
|
20
|
+
this._fallbackDepth = 0;
|
|
21
|
+
this._choiceRequires = undefined;
|
|
9
22
|
this.map = {
|
|
10
23
|
"xdr:from": new CellPositionXform({ tag: "xdr:from" }),
|
|
11
24
|
"xdr:to": new CellPositionXform({ tag: "xdr:to" }),
|
|
12
25
|
"xdr:pic": new PicXform(),
|
|
13
26
|
"xdr:sp": new SpXform(),
|
|
27
|
+
"xdr:graphicFrame": new GraphicFrameXform(),
|
|
14
28
|
"xdr:clientData": new StaticXform({ tag: "xdr:clientData" })
|
|
15
29
|
};
|
|
16
30
|
}
|
|
@@ -21,40 +35,304 @@ class TwoCellAnchorXform extends BaseCellAnchorXform {
|
|
|
21
35
|
if (model.picture) {
|
|
22
36
|
this.map["xdr:pic"].prepare(model.picture, options);
|
|
23
37
|
}
|
|
38
|
+
else if (model.graphicFrame) {
|
|
39
|
+
this.map["xdr:graphicFrame"].prepare(model.graphicFrame, options);
|
|
40
|
+
}
|
|
24
41
|
}
|
|
25
42
|
render(xmlStream, model) {
|
|
26
|
-
|
|
27
|
-
|
|
43
|
+
// ChartEx anchors (sunburst, treemap, funnel, waterfall, boxplot,
|
|
44
|
+
// histogram, region map, …) MUST be wrapped in
|
|
45
|
+
// `<mc:AlternateContent>`. ChartEx is a Microsoft extension that
|
|
46
|
+
// was never in the base OOXML spec; Excel's strict loader
|
|
47
|
+
// rejects a bare `<xdr:graphicFrame><cx:chart/>` anchor with
|
|
48
|
+
// "Removed Part: /xl/drawings/drawingN.xml (Drawing shape)".
|
|
49
|
+
//
|
|
50
|
+
// CRITICAL: Excel emits `<mc:AlternateContent>` as the SHAPE slot
|
|
51
|
+
// INSIDE the `<xdr:twoCellAnchor>`, between `<xdr:to>` and
|
|
52
|
+
// `<xdr:clientData>` — NOT around the whole anchor. The Choice
|
|
53
|
+
// carries the `<xdr:graphicFrame>` and the Fallback carries the
|
|
54
|
+
// `<xdr:sp>`; they share the single `<xdr:from>`/`<xdr:to>` of
|
|
55
|
+
// the outer anchor. This is how Microsoft Excel itself writes
|
|
56
|
+
// chartEx drawings — see `tmp/ttttt.xlsx` (Excel 2021-authored)
|
|
57
|
+
// for the canonical byte layout. Earlier revisions of this file
|
|
58
|
+
// wrapped the ENTIRE anchor in `<mc:AlternateContent>` and
|
|
59
|
+
// duplicated `<xdr:from>`/`<xdr:to>` in both Choice and
|
|
60
|
+
// Fallback. Excel's strict loader rejected that nesting even
|
|
61
|
+
// though MC substitution rules permit it in theory — the
|
|
62
|
+
// "Removed Part: drawing1.xml" repair dialog users saw on open
|
|
63
|
+
// was caused by this exact mis-nesting.
|
|
64
|
+
//
|
|
65
|
+
// Canonical structure:
|
|
66
|
+
//
|
|
67
|
+
// <xdr:twoCellAnchor>
|
|
68
|
+
// <xdr:from>…</xdr:from>
|
|
69
|
+
// <xdr:to>…</xdr:to>
|
|
70
|
+
// <mc:AlternateContent>
|
|
71
|
+
// <mc:Choice Requires="cx1" xmlns:cx1="…/2015/9/8/chartex">
|
|
72
|
+
// <xdr:graphicFrame>…<cx:chart/>…</xdr:graphicFrame>
|
|
73
|
+
// </mc:Choice>
|
|
74
|
+
// <mc:Fallback>
|
|
75
|
+
// <xdr:sp>…placeholder…</xdr:sp>
|
|
76
|
+
// </mc:Fallback>
|
|
77
|
+
// </mc:AlternateContent>
|
|
78
|
+
// <xdr:clientData/>
|
|
79
|
+
// </xdr:twoCellAnchor>
|
|
80
|
+
//
|
|
81
|
+
// The Fallback MUST NOT be empty — an empty fallback is spec-legal
|
|
82
|
+
// but Excel's validator treats an empty-choice+empty-fallback
|
|
83
|
+
// pair as "collapses to nothing" and drops the drawing. The
|
|
84
|
+
// placeholder shape we emit mirrors the "This chart isn't
|
|
85
|
+
// available in your version of Excel" message Office uses.
|
|
86
|
+
//
|
|
87
|
+
// The `a14`-requires branch (form-control shapes) uses the LEGACY
|
|
88
|
+
// wrap-the-whole-anchor form with an empty Fallback. That form
|
|
89
|
+
// was fine for 2010-era form controls and round-tripping code
|
|
90
|
+
// still depends on it; it is NOT the chartEx shape.
|
|
91
|
+
const requires = model.alternateContent?.requires;
|
|
92
|
+
const isChartEx = requires === "cx1" || requires === "cx";
|
|
93
|
+
const wrapAnchorInAc = !!requires && !isChartEx;
|
|
94
|
+
if (wrapAnchorInAc) {
|
|
95
|
+
// Legacy wrap-the-whole-anchor path (form controls, etc.)
|
|
28
96
|
xmlStream.openNode("mc:AlternateContent", {
|
|
29
97
|
"xmlns:mc": "http://schemas.openxmlformats.org/markup-compatibility/2006"
|
|
30
98
|
});
|
|
31
99
|
xmlStream.openNode("mc:Choice", {
|
|
32
|
-
Requires:
|
|
33
|
-
...(
|
|
34
|
-
? {
|
|
35
|
-
"xmlns:a14": "http://schemas.microsoft.com/office/drawing/2010/main"
|
|
36
|
-
}
|
|
100
|
+
Requires: requires,
|
|
101
|
+
...(requires === "a14"
|
|
102
|
+
? { "xmlns:a14": "http://schemas.microsoft.com/office/drawing/2010/main" }
|
|
37
103
|
: {})
|
|
38
104
|
});
|
|
39
105
|
}
|
|
40
|
-
|
|
106
|
+
const editAs = model.range.editAs ?? (model.graphicFrame ? undefined : "oneCell");
|
|
107
|
+
// `editAs="twoCell"` is the default per the CT_TwoCellAnchor
|
|
108
|
+
// schema — Microsoft Excel omits the attribute in this case.
|
|
109
|
+
// Emitting it anyway is spec-valid but byte-diverges from
|
|
110
|
+
// Excel's own output for chartEx drawings, so suppress it when
|
|
111
|
+
// the effective value is the default.
|
|
112
|
+
const emitEditAs = editAs && editAs !== "twoCell" ? { editAs } : {};
|
|
113
|
+
xmlStream.openNode(this.tag, emitEditAs);
|
|
41
114
|
this.map["xdr:from"].render(xmlStream, model.range.tl);
|
|
42
115
|
this.map["xdr:to"].render(xmlStream, model.range.br);
|
|
43
|
-
if (
|
|
116
|
+
if (isChartEx) {
|
|
117
|
+
// ChartEx: wrap the graphicFrame/shape INSIDE the anchor in
|
|
118
|
+
// mc:AlternateContent, matching Excel's emitted layout.
|
|
119
|
+
this.renderChartExAlternateContent(xmlStream, model);
|
|
120
|
+
}
|
|
121
|
+
else if (model.picture) {
|
|
44
122
|
this.map["xdr:pic"].render(xmlStream, model.picture);
|
|
45
123
|
}
|
|
124
|
+
else if (model.graphicFrame) {
|
|
125
|
+
this.map["xdr:graphicFrame"].render(xmlStream, model.graphicFrame);
|
|
126
|
+
}
|
|
46
127
|
else if (model.shape) {
|
|
47
128
|
this.map["xdr:sp"].render(xmlStream, model.shape);
|
|
48
129
|
}
|
|
49
130
|
this.map["xdr:clientData"].render(xmlStream, {});
|
|
50
|
-
xmlStream.closeNode();
|
|
51
|
-
if (
|
|
131
|
+
xmlStream.closeNode(); // xdr:twoCellAnchor
|
|
132
|
+
if (wrapAnchorInAc) {
|
|
52
133
|
xmlStream.closeNode(); // mc:Choice
|
|
53
134
|
xmlStream.leafNode("mc:Fallback");
|
|
54
135
|
xmlStream.closeNode(); // mc:AlternateContent
|
|
55
136
|
}
|
|
56
137
|
}
|
|
138
|
+
/**
|
|
139
|
+
* Emit the ChartEx `<mc:AlternateContent>` block that occupies the
|
|
140
|
+
* shape slot inside a `<xdr:twoCellAnchor>` — between `<xdr:to>`
|
|
141
|
+
* and `<xdr:clientData>`.
|
|
142
|
+
*
|
|
143
|
+
* Structure mirrors Microsoft Excel's own output:
|
|
144
|
+
*
|
|
145
|
+
* <mc:AlternateContent>
|
|
146
|
+
* <mc:Choice Requires="cx1" xmlns:cx1="…/2015/9/8/chartex">
|
|
147
|
+
* <xdr:graphicFrame>…<cx:chart/>…</xdr:graphicFrame>
|
|
148
|
+
* </mc:Choice>
|
|
149
|
+
* <mc:Fallback>
|
|
150
|
+
* <xdr:sp>…placeholder shape…</xdr:sp>
|
|
151
|
+
* </mc:Fallback>
|
|
152
|
+
* </mc:AlternateContent>
|
|
153
|
+
*
|
|
154
|
+
* Both the Choice graphicFrame and the Fallback shape inherit
|
|
155
|
+
* sizing from the outer `<xdr:from>`/`<xdr:to>` cell range — they
|
|
156
|
+
* do NOT each re-declare the anchor; there is only one anchor.
|
|
157
|
+
*/
|
|
158
|
+
renderChartExAlternateContent(xmlStream, model) {
|
|
159
|
+
xmlStream.openNode("mc:AlternateContent", {
|
|
160
|
+
"xmlns:mc": "http://schemas.openxmlformats.org/markup-compatibility/2006"
|
|
161
|
+
});
|
|
162
|
+
xmlStream.openNode("mc:Choice", {
|
|
163
|
+
"xmlns:cx1": "http://schemas.microsoft.com/office/drawing/2015/9/8/chartex",
|
|
164
|
+
Requires: "cx1"
|
|
165
|
+
});
|
|
166
|
+
if (model.graphicFrame) {
|
|
167
|
+
this.map["xdr:graphicFrame"].render(xmlStream, model.graphicFrame);
|
|
168
|
+
}
|
|
169
|
+
xmlStream.closeNode(); // mc:Choice
|
|
170
|
+
xmlStream.openNode("mc:Fallback");
|
|
171
|
+
this.renderChartExFallbackShape(xmlStream, model);
|
|
172
|
+
xmlStream.closeNode(); // mc:Fallback
|
|
173
|
+
xmlStream.closeNode(); // mc:AlternateContent
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Emit the placeholder `<xdr:sp>` that lives inside the
|
|
177
|
+
* `<mc:Fallback>` of a ChartEx anchor. Legacy Excel (2010/2013)
|
|
178
|
+
* and non-Microsoft loaders that don't understand the `cx1`
|
|
179
|
+
* namespace render this in place of the `cx:chart`.
|
|
180
|
+
*
|
|
181
|
+
* Matches Microsoft Excel's convention: cNvPr id=0 / empty name
|
|
182
|
+
* (a deliberate placeholder, not a real drawing object), a white
|
|
183
|
+
* rectangle sized to the anchor's cell range, and the localizable
|
|
184
|
+
* "This chart isn't available" message. The shape's own xfrm
|
|
185
|
+
* carries concrete EMU values rather than zeros because the
|
|
186
|
+
* Fallback expansion is meant to be rendered standalone — a
|
|
187
|
+
* zero-size shape would collapse and Excel 2016+ flags that as
|
|
188
|
+
* "drawing shape" validation failure even though the outer
|
|
189
|
+
* twoCellAnchor provides sizing.
|
|
190
|
+
*/
|
|
191
|
+
renderChartExFallbackShape(xmlStream, model) {
|
|
192
|
+
xmlStream.openNode("xdr:sp", { macro: "", textlink: "" });
|
|
193
|
+
xmlStream.openNode("xdr:nvSpPr");
|
|
194
|
+
// `id=0`, empty name — Microsoft's convention for Fallback
|
|
195
|
+
// placeholders. Using a real numeric id here would conflict with
|
|
196
|
+
// the real graphicFrame id in Choice on loaders that scan both
|
|
197
|
+
// branches during validation.
|
|
198
|
+
xmlStream.leafNode("xdr:cNvPr", { id: 0, name: "" });
|
|
199
|
+
xmlStream.openNode("xdr:cNvSpPr");
|
|
200
|
+
xmlStream.leafNode("a:spLocks", { noTextEdit: 1 });
|
|
201
|
+
xmlStream.closeNode(); // xdr:cNvSpPr
|
|
202
|
+
xmlStream.closeNode(); // xdr:nvSpPr
|
|
203
|
+
xmlStream.openNode("xdr:spPr");
|
|
204
|
+
xmlStream.openNode("a:xfrm");
|
|
205
|
+
// Non-zero placeholder geometry. Excel expects the fallback
|
|
206
|
+
// shape to have a concrete size even though the outer
|
|
207
|
+
// twoCellAnchor already pins its bounds to from/to. Using
|
|
208
|
+
// 6"×4" (5486400 × 3657600 EMU) here — the dimensions Excel
|
|
209
|
+
// uses in its own fallback shapes. The position (3917950,
|
|
210
|
+
// 698500) roughly tracks Excel's offset for the same fallback
|
|
211
|
+
// shape (the exact values don't matter for validation; they
|
|
212
|
+
// only affect legacy-client rendering).
|
|
213
|
+
xmlStream.leafNode("a:off", { x: 3917950, y: 698500 });
|
|
214
|
+
xmlStream.leafNode("a:ext", { cx: 5486400, cy: 3657600 });
|
|
215
|
+
xmlStream.closeNode(); // a:xfrm
|
|
216
|
+
xmlStream.openNode("a:prstGeom", { prst: "rect" });
|
|
217
|
+
xmlStream.leafNode("a:avLst");
|
|
218
|
+
xmlStream.closeNode(); // a:prstGeom
|
|
219
|
+
xmlStream.openNode("a:solidFill");
|
|
220
|
+
xmlStream.leafNode("a:prstClr", { val: "white" });
|
|
221
|
+
xmlStream.closeNode(); // a:solidFill
|
|
222
|
+
xmlStream.openNode("a:ln", { w: 1 });
|
|
223
|
+
xmlStream.openNode("a:solidFill");
|
|
224
|
+
xmlStream.leafNode("a:prstClr", { val: "black" });
|
|
225
|
+
xmlStream.closeNode(); // a:solidFill
|
|
226
|
+
xmlStream.closeNode(); // a:ln
|
|
227
|
+
xmlStream.closeNode(); // xdr:spPr
|
|
228
|
+
xmlStream.openNode("xdr:txBody");
|
|
229
|
+
xmlStream.leafNode("a:bodyPr", { vertOverflow: "clip", horzOverflow: "clip" });
|
|
230
|
+
xmlStream.leafNode("a:lstStyle");
|
|
231
|
+
xmlStream.openNode("a:p");
|
|
232
|
+
xmlStream.openNode("a:r");
|
|
233
|
+
xmlStream.leafNode("a:rPr", { lang: "en-US", sz: 1100 });
|
|
234
|
+
xmlStream.openNode("a:t");
|
|
235
|
+
xmlStream.writeText("This chart isn't available in your version of Excel.\n\n" +
|
|
236
|
+
"Editing this shape or saving this workbook into a different file format will permanently break the chart.");
|
|
237
|
+
xmlStream.closeNode(); // a:t
|
|
238
|
+
xmlStream.closeNode(); // a:r
|
|
239
|
+
xmlStream.closeNode(); // a:p
|
|
240
|
+
xmlStream.closeNode(); // xdr:txBody
|
|
241
|
+
xmlStream.closeNode(); // xdr:sp
|
|
242
|
+
}
|
|
243
|
+
parseOpen(node) {
|
|
244
|
+
// Swallow everything inside `<mc:Fallback>` — it is a legacy
|
|
245
|
+
// placeholder shape the writer regenerates verbatim.
|
|
246
|
+
if (this._inFallback) {
|
|
247
|
+
this._fallbackDepth++;
|
|
248
|
+
return true;
|
|
249
|
+
}
|
|
250
|
+
// Intercept the MC substitution elements. The children of
|
|
251
|
+
// `<mc:Choice>` (a `<xdr:graphicFrame>`, typically) should be
|
|
252
|
+
// parsed by the existing xforms as if the wrapper weren't there.
|
|
253
|
+
switch (node.name) {
|
|
254
|
+
case "mc:AlternateContent":
|
|
255
|
+
this._acDepth++;
|
|
256
|
+
return true;
|
|
257
|
+
case "mc:Choice":
|
|
258
|
+
if (this._acDepth > 0) {
|
|
259
|
+
this._choiceRequires = node.attributes?.Requires;
|
|
260
|
+
}
|
|
261
|
+
return true;
|
|
262
|
+
case "mc:Fallback":
|
|
263
|
+
if (this._acDepth > 0) {
|
|
264
|
+
this._inFallback = true;
|
|
265
|
+
this._fallbackDepth = 1;
|
|
266
|
+
}
|
|
267
|
+
return true;
|
|
268
|
+
default:
|
|
269
|
+
break;
|
|
270
|
+
}
|
|
271
|
+
if (this.parser) {
|
|
272
|
+
this.parser.parseOpen(node);
|
|
273
|
+
return true;
|
|
274
|
+
}
|
|
275
|
+
switch (node.name) {
|
|
276
|
+
case this.tag:
|
|
277
|
+
this.reset();
|
|
278
|
+
this.model = {
|
|
279
|
+
range: {
|
|
280
|
+
editAs: node.attributes.editAs
|
|
281
|
+
}
|
|
282
|
+
};
|
|
283
|
+
this._acDepth = 0;
|
|
284
|
+
this._inFallback = false;
|
|
285
|
+
this._fallbackDepth = 0;
|
|
286
|
+
this._choiceRequires = undefined;
|
|
287
|
+
break;
|
|
288
|
+
default:
|
|
289
|
+
this.parser = this.map[node.name];
|
|
290
|
+
if (this.parser) {
|
|
291
|
+
this.parser.parseOpen(node);
|
|
292
|
+
}
|
|
293
|
+
break;
|
|
294
|
+
}
|
|
295
|
+
return true;
|
|
296
|
+
}
|
|
297
|
+
parseText(text) {
|
|
298
|
+
if (this._inFallback) {
|
|
299
|
+
return;
|
|
300
|
+
}
|
|
301
|
+
if (this.parser) {
|
|
302
|
+
this.parser.parseText(text);
|
|
303
|
+
}
|
|
304
|
+
}
|
|
57
305
|
parseClose(name) {
|
|
306
|
+
// Close matching against the inner `<mc:Fallback>` skip window
|
|
307
|
+
// first. `_fallbackDepth` tracks nested opens inside the
|
|
308
|
+
// fallback shape (xdr:sp → xdr:spPr → …); only when it drops
|
|
309
|
+
// back to zero do we exit skip mode.
|
|
310
|
+
if (this._inFallback) {
|
|
311
|
+
this._fallbackDepth--;
|
|
312
|
+
if (this._fallbackDepth === 0) {
|
|
313
|
+
this._inFallback = false;
|
|
314
|
+
}
|
|
315
|
+
return true;
|
|
316
|
+
}
|
|
317
|
+
switch (name) {
|
|
318
|
+
case "mc:AlternateContent":
|
|
319
|
+
this._acDepth--;
|
|
320
|
+
if (this._acDepth <= 0) {
|
|
321
|
+
this._acDepth = 0;
|
|
322
|
+
// Tag the anchor model with the Requires value so the
|
|
323
|
+
// writer re-emits the MC wrapper on save.
|
|
324
|
+
if (this._choiceRequires) {
|
|
325
|
+
this.model.alternateContent = { requires: this._choiceRequires };
|
|
326
|
+
}
|
|
327
|
+
this._choiceRequires = undefined;
|
|
328
|
+
}
|
|
329
|
+
return true;
|
|
330
|
+
case "mc:Choice":
|
|
331
|
+
case "mc:Fallback":
|
|
332
|
+
return true;
|
|
333
|
+
default:
|
|
334
|
+
break;
|
|
335
|
+
}
|
|
58
336
|
if (this.parser) {
|
|
59
337
|
if (!this.parser.parseClose(name)) {
|
|
60
338
|
this.parser = undefined;
|
|
@@ -66,6 +344,7 @@ class TwoCellAnchorXform extends BaseCellAnchorXform {
|
|
|
66
344
|
this.model.range.tl = this.map["xdr:from"].model;
|
|
67
345
|
this.model.range.br = this.map["xdr:to"].model;
|
|
68
346
|
this.model.picture = this.map["xdr:pic"].model;
|
|
347
|
+
this.model.graphicFrame = this.map["xdr:graphicFrame"].model;
|
|
69
348
|
return false;
|
|
70
349
|
default:
|
|
71
350
|
// could be some unrecognised tags
|
|
@@ -73,7 +352,10 @@ class TwoCellAnchorXform extends BaseCellAnchorXform {
|
|
|
73
352
|
}
|
|
74
353
|
}
|
|
75
354
|
reconcile(model, options) {
|
|
76
|
-
|
|
355
|
+
if (model.picture) {
|
|
356
|
+
model.medium = this.reconcilePicture(model.picture, options);
|
|
357
|
+
}
|
|
358
|
+
// graphicFrame reconciliation handled at DrawingXform level
|
|
77
359
|
}
|
|
78
360
|
}
|
|
79
361
|
export { TwoCellAnchorXform };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { CacheField, DataField, PivotTableSubtotal } from "../../../pivot-table.js";
|
|
1
|
+
import type { CacheField, DataField, PivotTableChartFormat, PivotTableSubtotal } from "../../../pivot-table.js";
|
|
2
2
|
import { BaseXform } from "../base-xform.js";
|
|
3
3
|
import type { XmlSink } from "../../../../xml/types.js";
|
|
4
4
|
/**
|
|
@@ -16,6 +16,17 @@ interface PivotTableRenderModel {
|
|
|
16
16
|
cacheId: string | number;
|
|
17
17
|
tableNumber: number;
|
|
18
18
|
applyWidthHeightFormats: "0" | "1";
|
|
19
|
+
/**
|
|
20
|
+
* Optional top-left anchor (e.g. `"A3"`) for the pivot's displayed block.
|
|
21
|
+
* When set, the rendered `<location>` ref is computed from this anchor
|
|
22
|
+
* instead of the default `A{3 + pageOffset}`. The anchor represents the
|
|
23
|
+
* pivot's display origin — page filters (if any) occupy rows downward from
|
|
24
|
+
* the anchor, followed by a blank separator row and then the pivot body.
|
|
25
|
+
*/
|
|
26
|
+
ref?: string;
|
|
27
|
+
name?: string;
|
|
28
|
+
chartFormat?: number;
|
|
29
|
+
chartFormats?: PivotTableChartFormat[];
|
|
19
30
|
}
|
|
20
31
|
/**
|
|
21
32
|
* A single <item> element inside a pivotField's <items> collection.
|
|
@@ -151,7 +162,7 @@ interface RowColItem {
|
|
|
151
162
|
/**
|
|
152
163
|
* Chart format item for pivot charts
|
|
153
164
|
*/
|
|
154
|
-
interface ChartFormatItem {
|
|
165
|
+
interface ChartFormatItem extends PivotTableChartFormat {
|
|
155
166
|
chart: number;
|
|
156
167
|
format: number;
|
|
157
168
|
series?: boolean;
|
|
@@ -110,17 +110,39 @@ class PivotTableXform extends BaseXform {
|
|
|
110
110
|
const pageOffset = pageCount > 0 ? pageCount + 1 : 0;
|
|
111
111
|
// Location ref: firstDataCol = number of row fields (row label columns),
|
|
112
112
|
// endCol = row fields + data columns.
|
|
113
|
+
// When the caller supplies `ref`, it anchors the pivot's displayed block
|
|
114
|
+
// (page filters → blank separator → pivot body). The body — which is what
|
|
115
|
+
// <location ref="..."/> actually addresses in OOXML — therefore sits
|
|
116
|
+
// pageOffset rows below the anchor and shares its column.
|
|
113
117
|
const firstDataCol = rows.length;
|
|
114
|
-
const startRow = 3 + pageOffset;
|
|
115
|
-
const endRow = startRow + 1; // header + 1 data row placeholder
|
|
116
118
|
const dataColCount = isMultiValueNoCol ? values.length : 1;
|
|
117
|
-
const
|
|
119
|
+
const totalPivotCols = firstDataCol + dataColCount;
|
|
120
|
+
let startRow;
|
|
121
|
+
let startCol;
|
|
122
|
+
if (model.ref) {
|
|
123
|
+
// `ref` is pre-normalised by makePivotTable to a canonical cell address,
|
|
124
|
+
// so decodeAddress cannot fail here. Guard anyway to surface any
|
|
125
|
+
// bypasses via `as any` with a clear error.
|
|
126
|
+
const addr = colCache.decodeAddress(model.ref);
|
|
127
|
+
if (!addr.col || !addr.row) {
|
|
128
|
+
throw new Error(`Pivot table ref "${model.ref}" must include both column and row (e.g. "A3").`);
|
|
129
|
+
}
|
|
130
|
+
startRow = addr.row + pageOffset;
|
|
131
|
+
startCol = addr.col;
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
startRow = 3 + pageOffset;
|
|
135
|
+
startCol = 1;
|
|
136
|
+
}
|
|
137
|
+
const endRow = startRow + 1; // header + 1 data row placeholder
|
|
138
|
+
const endCol = startCol + totalPivotCols - 1;
|
|
139
|
+
const startColLetter = colCache.n2l(startCol);
|
|
118
140
|
const endColLetter = colCache.n2l(endCol);
|
|
119
|
-
const locationRef =
|
|
141
|
+
const locationRef = `${startColLetter}${startRow}:${endColLetter}${endRow}`;
|
|
120
142
|
xmlStream.openXml(StdDocAttributes);
|
|
121
143
|
xmlStream.openNode(this.tag, {
|
|
122
144
|
...PivotTableXform.PIVOT_TABLE_ATTRIBUTES,
|
|
123
|
-
name: `PivotTable${tableNumber}`,
|
|
145
|
+
name: model.name ?? `PivotTable${tableNumber}`,
|
|
124
146
|
cacheId,
|
|
125
147
|
applyNumberFormats: "0",
|
|
126
148
|
applyBorderFormats: "0",
|
|
@@ -137,7 +159,8 @@ class PivotTableXform extends BaseXform {
|
|
|
137
159
|
indent: "0",
|
|
138
160
|
compact: "0",
|
|
139
161
|
compactData: "0",
|
|
140
|
-
multipleFieldFilters: "0"
|
|
162
|
+
multipleFieldFilters: "0",
|
|
163
|
+
chartFormat: model.chartFormat !== undefined ? String(model.chartFormat) : undefined
|
|
141
164
|
});
|
|
142
165
|
// Location
|
|
143
166
|
const locAttrs = {
|
|
@@ -219,6 +242,9 @@ class PivotTableXform extends BaseXform {
|
|
|
219
242
|
}
|
|
220
243
|
// Data fields
|
|
221
244
|
renderDataFields(xmlStream, cacheFields, values, model.valueMetrics);
|
|
245
|
+
if (model.chartFormats && model.chartFormats.length > 0) {
|
|
246
|
+
this.renderChartFormats(xmlStream, model.chartFormats);
|
|
247
|
+
}
|
|
222
248
|
// Pivot table style info
|
|
223
249
|
xmlStream.leafNode("pivotTableStyleInfo", {
|
|
224
250
|
name: DEFAULT_PIVOT_STYLE,
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ChartsheetXform — parse and render OOXML chartsheet XML.
|
|
3
|
+
*
|
|
4
|
+
* A chartsheet is a simple sheet type that contains only a chart.
|
|
5
|
+
* Structure (ECMA-376 `CT_Chartsheet`):
|
|
6
|
+
* ```xml
|
|
7
|
+
* <chartsheet xmlns="...">
|
|
8
|
+
* <sheetPr/>?
|
|
9
|
+
* <sheetViews><sheetView .../></sheetViews>
|
|
10
|
+
* <sheetProtection/>?
|
|
11
|
+
* <customSheetViews/>?
|
|
12
|
+
* <pageMargins .../>?
|
|
13
|
+
* <pageSetup .../>? CT_CsPageSetup — NOT CT_PageSetup
|
|
14
|
+
* <headerFooter/>?
|
|
15
|
+
* <drawing r:id="rId1"/>
|
|
16
|
+
* <legacyDrawing/>? legacyDrawingHF? drawingHF? picture? webPublishItems? extLst?
|
|
17
|
+
* </chartsheet>
|
|
18
|
+
* ```
|
|
19
|
+
*
|
|
20
|
+
* Note that chartsheets do NOT support `printOptions`, `pageBreaks`,
|
|
21
|
+
* `rowBreaks`, or `colBreaks` — those are worksheet-only elements
|
|
22
|
+
* per ECMA-376 `CT_Chartsheet`. Likewise `<c:pageSetup>` on a
|
|
23
|
+
* chartsheet is `CT_CsPageSetup`, which has a reduced attribute set
|
|
24
|
+
* compared to the worksheet's `CT_PageSetup` (no `scale`,
|
|
25
|
+
* `fitToWidth`, `fitToHeight`, `pageOrder`, `cellComments`, or
|
|
26
|
+
* `errors`).
|
|
27
|
+
*/
|
|
28
|
+
import { BaseXform } from "../base-xform.js";
|
|
29
|
+
import type { XmlSink } from "../../../../xml/types.js";
|
|
30
|
+
export interface ChartsheetModel {
|
|
31
|
+
/** Sheet number (positional index in the XLSX archive) */
|
|
32
|
+
sheetNo: number;
|
|
33
|
+
/** Sheet name (from workbook.xml) */
|
|
34
|
+
name: string;
|
|
35
|
+
/** Sheet ID (from workbook.xml) */
|
|
36
|
+
id: number;
|
|
37
|
+
/**
|
|
38
|
+
* Tab order index — the 0-based position in the workbook's
|
|
39
|
+
* `<sheets>` list, shared between worksheets and chartsheets so a
|
|
40
|
+
* combined sort preserves the author's interleaved layout. Assigned
|
|
41
|
+
* at add time (monotonic across both add paths) and at load time
|
|
42
|
+
* (from the workbook.xml `<sheet>` ordinal).
|
|
43
|
+
*/
|
|
44
|
+
orderNo?: number;
|
|
45
|
+
/** Relationship ID linking to this chartsheet from workbook.xml.rels */
|
|
46
|
+
rId?: string;
|
|
47
|
+
/** Sheet visibility state */
|
|
48
|
+
state?: "visible" | "hidden" | "veryHidden";
|
|
49
|
+
/** Tab selected */
|
|
50
|
+
tabSelected?: boolean;
|
|
51
|
+
/** Zoom scale */
|
|
52
|
+
zoomScale?: number;
|
|
53
|
+
/**
|
|
54
|
+
* `CT_ChartsheetViewBase/@workbookViewId` — 0-based index into the
|
|
55
|
+
* workbook's `<bookViews>` list that this chartsheet view is bound
|
|
56
|
+
* to. Defaults to 0 per OOXML schema; round-tripped verbatim so
|
|
57
|
+
* multi-view workbooks don't get their view hierarchy rewritten.
|
|
58
|
+
*/
|
|
59
|
+
workbookViewId?: number;
|
|
60
|
+
/**
|
|
61
|
+
* `CT_ChartsheetViewBase/@zoomToFit` — when true the chartsheet
|
|
62
|
+
* scales its content to fill the window. Schema default is false;
|
|
63
|
+
* captured/written only when explicitly set to preserve round-trip.
|
|
64
|
+
*/
|
|
65
|
+
zoomToFit?: boolean;
|
|
66
|
+
/** Page margins */
|
|
67
|
+
pageMargins?: {
|
|
68
|
+
l?: number;
|
|
69
|
+
r?: number;
|
|
70
|
+
t?: number;
|
|
71
|
+
b?: number;
|
|
72
|
+
left?: number;
|
|
73
|
+
right?: number;
|
|
74
|
+
top?: number;
|
|
75
|
+
bottom?: number;
|
|
76
|
+
header?: number;
|
|
77
|
+
footer?: number;
|
|
78
|
+
};
|
|
79
|
+
/**
|
|
80
|
+
* Chartsheet page setup — `CT_CsPageSetup`.
|
|
81
|
+
*
|
|
82
|
+
* Note the attribute set differs from the worksheet `CT_PageSetup`:
|
|
83
|
+
* - **Supported**: paperSize, firstPageNumber, orientation,
|
|
84
|
+
* usePrinterDefaults, blackAndWhite, draft, useFirstPageNumber,
|
|
85
|
+
* horizontalDpi, verticalDpi, copies, paperHeight, paperWidth
|
|
86
|
+
* - **Not supported on chartsheets** (worksheet-only, will be
|
|
87
|
+
* silently ignored on write): scale, fitToWidth, fitToHeight,
|
|
88
|
+
* pageOrder, cellComments, errors
|
|
89
|
+
*/
|
|
90
|
+
pageSetup?: {
|
|
91
|
+
paperSize?: number;
|
|
92
|
+
firstPageNumber?: number;
|
|
93
|
+
orientation?: "default" | "portrait" | "landscape";
|
|
94
|
+
usePrinterDefaults?: boolean;
|
|
95
|
+
blackAndWhite?: boolean;
|
|
96
|
+
draft?: boolean;
|
|
97
|
+
useFirstPageNumber?: boolean;
|
|
98
|
+
horizontalDpi?: number;
|
|
99
|
+
verticalDpi?: number;
|
|
100
|
+
copies?: number;
|
|
101
|
+
/** Paper height in a unit-of-measure string (e.g. "11in", "297mm"). */
|
|
102
|
+
paperHeight?: string;
|
|
103
|
+
/** Paper width in a unit-of-measure string (e.g. "8.5in", "210mm"). */
|
|
104
|
+
paperWidth?: string;
|
|
105
|
+
/**
|
|
106
|
+
* Relationship id referencing a `printerSettings` part. Preserved
|
|
107
|
+
* verbatim through round-trip so an already-authored
|
|
108
|
+
* `xl/printerSettings/…` rel target keeps its XML reference from
|
|
109
|
+
* the chartsheet. Previously this attribute was dropped by the
|
|
110
|
+
* parser and never emitted by the writer, leaving the printer-
|
|
111
|
+
* settings part accessible via the chartsheet's `.rels` but
|
|
112
|
+
* unreferenced from the chartsheet XML — a dangling-rel-reverse
|
|
113
|
+
* that strict validators flag.
|
|
114
|
+
*/
|
|
115
|
+
rId?: string;
|
|
116
|
+
};
|
|
117
|
+
/** Drawing relationship reference */
|
|
118
|
+
drawing?: {
|
|
119
|
+
rId: string;
|
|
120
|
+
};
|
|
121
|
+
/** Relationships parsed from the chartsheet .rels file */
|
|
122
|
+
relationships?: any[];
|
|
123
|
+
/** Drawing part name without extension (e.g. drawing2) */
|
|
124
|
+
drawingName?: string;
|
|
125
|
+
/** Classic chart number displayed by this chartsheet */
|
|
126
|
+
chartNumber?: number;
|
|
127
|
+
/** ChartEx number displayed by this chartsheet */
|
|
128
|
+
chartExNumber?: number;
|
|
129
|
+
/**
|
|
130
|
+
* Raw XML captured for elements the structured parser doesn't model
|
|
131
|
+
* (`sheetPr`, `sheetProtection`, `customSheetViews`, `headerFooter`,
|
|
132
|
+
* `legacyDrawing`, `legacyDrawingHF`, `drawingHF`, `picture`,
|
|
133
|
+
* `webPublishItems`, `extLst`). The writer emits these verbatim at
|
|
134
|
+
* the correct schema position so a round-trip through a workbook
|
|
135
|
+
* that uses chartsheet-specific features (e.g. password-protected
|
|
136
|
+
* chartsheets, printer-defined header/footer blocks) doesn't lose
|
|
137
|
+
* them.
|
|
138
|
+
*
|
|
139
|
+
* Keys are the element local name (e.g. `"sheetPr"`); values are the
|
|
140
|
+
* full `<tag …>…</tag>` serialised bytes.
|
|
141
|
+
*
|
|
142
|
+
* Note: `rowBreaks`, `colBreaks`, and `pageBreaks` are NOT captured —
|
|
143
|
+
* per ECMA-376 `CT_Chartsheet` they are worksheet-only elements.
|
|
144
|
+
* Similarly `printOptions` is worksheet-only. Legacy on-disk
|
|
145
|
+
* chartsheets that erroneously contained them are silently
|
|
146
|
+
* discarded on load to produce schema-valid output on save.
|
|
147
|
+
*/
|
|
148
|
+
rawChildren?: Record<string, string>;
|
|
149
|
+
}
|
|
150
|
+
declare class ChartsheetXform extends BaseXform<ChartsheetModel> {
|
|
151
|
+
private inSheetView;
|
|
152
|
+
/**
|
|
153
|
+
* Raw-capture state for elements the structured parser doesn't model.
|
|
154
|
+
* When `parseOpen` sees one of the names in {@link RAW_CAPTURE_TAGS}
|
|
155
|
+
* at depth-1 of `<chartsheet>`, it starts recording the full
|
|
156
|
+
* serialised XML (open tags, text, nested children, close tags) into
|
|
157
|
+
* `captureParts`. The recording ends when `parseClose` fires with
|
|
158
|
+
* the matching root name; the assembled string is stored under
|
|
159
|
+
* `model.rawChildren[rootName]` for verbatim re-emission by
|
|
160
|
+
* {@link render}.
|
|
161
|
+
*
|
|
162
|
+
* Without this, elements like `<sheetProtection>` (password-protected
|
|
163
|
+
* chartsheets) and `<headerFooter>` silently disappeared on
|
|
164
|
+
* round-trip, breaking the author's layout / security configuration.
|
|
165
|
+
*
|
|
166
|
+
* `sheetDepth` tracks nesting depth inside `<chartsheet>`: the root
|
|
167
|
+
* itself sits at depth 1, its direct children at depth 2. Capture
|
|
168
|
+
* only ever starts at depth 2 so a nested element whose local name
|
|
169
|
+
* happens to overlap with one in {@link RAW_CAPTURE_TAGS} (e.g. an
|
|
170
|
+
* `<extLst>` inside `<customSheetViews>` as a leaf of that subtree)
|
|
171
|
+
* stays part of the outer capture rather than being promoted to a
|
|
172
|
+
* sibling root child.
|
|
173
|
+
*/
|
|
174
|
+
private captureRoot;
|
|
175
|
+
private captureDepth;
|
|
176
|
+
private captureParts;
|
|
177
|
+
private skipNextCaptureClose;
|
|
178
|
+
private sheetDepth;
|
|
179
|
+
get tag(): string;
|
|
180
|
+
render(xmlStream: XmlSink, model?: ChartsheetModel): void;
|
|
181
|
+
parseOpen(node: any): boolean;
|
|
182
|
+
parseText(text: string): void;
|
|
183
|
+
parseClose(name: string): boolean;
|
|
184
|
+
}
|
|
185
|
+
export { ChartsheetXform };
|