@cj-tech-master/excelts 9.4.2 → 9.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/index.browser.d.ts +8 -5
- package/dist/browser/index.browser.js +19 -1
- package/dist/browser/index.d.ts +4 -2
- package/dist/browser/index.js +9 -1
- package/dist/browser/modules/excel/chart/cache-populator.d.ts +49 -0
- package/dist/browser/modules/excel/chart/cache-populator.js +1171 -0
- package/dist/browser/modules/excel/chart/chart-api.d.ts +92 -0
- package/dist/browser/modules/excel/chart/chart-api.js +364 -0
- package/dist/browser/modules/excel/chart/chart-builder.d.ts +48 -0
- package/dist/browser/modules/excel/chart/chart-builder.js +2432 -0
- package/dist/browser/modules/excel/chart/chart-ex-builder.d.ts +36 -0
- package/dist/browser/modules/excel/chart/chart-ex-builder.js +903 -0
- package/dist/browser/modules/excel/chart/chart-ex-parser.d.ts +8 -0
- package/dist/browser/modules/excel/chart/chart-ex-parser.js +1205 -0
- package/dist/browser/modules/excel/chart/chart-ex-renderer.d.ts +187 -0
- package/dist/browser/modules/excel/chart/chart-ex-renderer.js +5352 -0
- package/dist/browser/modules/excel/chart/chart-ex-types.d.ts +531 -0
- package/dist/browser/modules/excel/chart/chart-ex-types.js +11 -0
- package/dist/browser/modules/excel/chart/chart-images.d.ts +78 -0
- package/dist/browser/modules/excel/chart/chart-images.js +363 -0
- package/dist/browser/modules/excel/chart/chart-presets.d.ts +392 -0
- package/dist/browser/modules/excel/chart/chart-presets.js +179 -0
- package/dist/browser/modules/excel/chart/chart-renderer.d.ts +550 -0
- package/dist/browser/modules/excel/chart/chart-renderer.js +6440 -0
- package/dist/browser/modules/excel/chart/chart-sidecar.d.ts +21 -0
- package/dist/browser/modules/excel/chart/chart-sidecar.js +427 -0
- package/dist/browser/modules/excel/chart/chart-utils.d.ts +306 -0
- package/dist/browser/modules/excel/chart/chart-utils.js +821 -0
- package/dist/browser/modules/excel/chart/chart.d.ts +504 -0
- package/dist/browser/modules/excel/chart/chart.js +1320 -0
- package/dist/browser/modules/excel/chart/glyph-rasterizer.d.ts +62 -0
- package/dist/browser/modules/excel/chart/glyph-rasterizer.js +658 -0
- package/dist/browser/modules/excel/chart/index.d.ts +54 -0
- package/dist/browser/modules/excel/chart/index.js +46 -0
- package/dist/browser/modules/excel/chart/install.d.ts +44 -0
- package/dist/browser/modules/excel/chart/install.js +91 -0
- package/dist/browser/modules/excel/chart/shape-properties.d.ts +156 -0
- package/dist/browser/modules/excel/chart/shape-properties.js +1557 -0
- package/dist/browser/modules/excel/chart/stroke-font.d.ts +36 -0
- package/dist/browser/modules/excel/chart/stroke-font.js +1556 -0
- package/dist/browser/modules/excel/chart/topojson.d.ts +98 -0
- package/dist/browser/modules/excel/chart/topojson.js +236 -0
- package/dist/browser/modules/excel/chart/types.d.ts +2559 -0
- package/dist/browser/modules/excel/chart/types.js +8 -0
- package/dist/browser/modules/excel/chart-host-registry.d.ts +157 -0
- package/dist/browser/modules/excel/chart-host-registry.js +90 -0
- package/dist/browser/modules/excel/chartsheet.d.ts +102 -0
- package/dist/browser/modules/excel/chartsheet.js +196 -0
- package/dist/browser/modules/excel/defined-names.d.ts +35 -0
- package/dist/browser/modules/excel/defined-names.js +44 -4
- package/dist/browser/modules/excel/errors.d.ts +6 -0
- package/dist/browser/modules/excel/errors.js +9 -0
- package/dist/browser/modules/excel/form-control.d.ts +6 -0
- package/dist/browser/modules/excel/form-control.js +17 -0
- package/dist/browser/modules/excel/image.js +12 -2
- package/dist/browser/modules/excel/pivot-chart.d.ts +7 -0
- package/dist/browser/modules/excel/pivot-chart.js +53 -0
- package/dist/browser/modules/excel/pivot-table.d.ts +55 -0
- package/dist/browser/modules/excel/pivot-table.js +35 -0
- package/dist/browser/modules/excel/range.js +5 -1
- package/dist/browser/modules/excel/sparkline/index.d.ts +7 -0
- package/dist/browser/modules/excel/sparkline/index.js +7 -0
- package/dist/browser/modules/excel/sparkline/sparkline.d.ts +206 -0
- package/dist/browser/modules/excel/sparkline/sparkline.js +750 -0
- package/dist/browser/modules/excel/stream/worksheet-writer.js +3 -2
- package/dist/browser/modules/excel/table.js +42 -6
- package/dist/browser/modules/excel/types.d.ts +72 -0
- package/dist/browser/modules/excel/utils/address.d.ts +18 -0
- package/dist/browser/modules/excel/utils/address.js +28 -0
- package/dist/browser/modules/excel/utils/drawing-utils.js +11 -6
- package/dist/browser/modules/excel/utils/guid.d.ts +15 -0
- package/dist/browser/modules/excel/utils/guid.js +35 -0
- package/dist/browser/modules/excel/utils/ooxml-paths.d.ts +74 -0
- package/dist/browser/modules/excel/utils/ooxml-paths.js +206 -9
- package/dist/browser/modules/excel/utils/ooxml-validator/check-chart-sidecar.d.ts +35 -0
- package/dist/browser/modules/excel/utils/ooxml-validator/check-chart-sidecar.js +101 -0
- package/dist/browser/modules/excel/utils/ooxml-validator/check-chart.d.ts +32 -0
- package/dist/browser/modules/excel/utils/ooxml-validator/check-chart.js +2125 -0
- package/dist/browser/modules/excel/utils/ooxml-validator/check-chartsheet.d.ts +9 -0
- package/dist/browser/modules/excel/utils/ooxml-validator/check-chartsheet.js +26 -0
- package/dist/browser/modules/excel/utils/ooxml-validator/check-content-types.d.ts +16 -0
- package/dist/browser/modules/excel/utils/ooxml-validator/check-content-types.js +181 -0
- package/dist/browser/modules/excel/utils/ooxml-validator/check-drawing.d.ts +34 -0
- package/dist/browser/modules/excel/utils/ooxml-validator/check-drawing.js +267 -0
- package/dist/browser/modules/excel/utils/ooxml-validator/check-pivot.d.ts +14 -0
- package/dist/browser/modules/excel/utils/ooxml-validator/check-pivot.js +104 -0
- package/dist/browser/modules/excel/utils/ooxml-validator/check-relationships.d.ts +18 -0
- package/dist/browser/modules/excel/utils/ooxml-validator/check-relationships.js +184 -0
- package/dist/browser/modules/excel/utils/ooxml-validator/check-structure.d.ts +21 -0
- package/dist/browser/modules/excel/utils/ooxml-validator/check-structure.js +56 -0
- package/dist/browser/modules/excel/utils/ooxml-validator/check-styles.d.ts +15 -0
- package/dist/browser/modules/excel/utils/ooxml-validator/check-styles.js +89 -0
- package/dist/browser/modules/excel/utils/ooxml-validator/check-table.d.ts +31 -0
- package/dist/browser/modules/excel/utils/ooxml-validator/check-table.js +177 -0
- package/dist/browser/modules/excel/utils/ooxml-validator/check-workbook.d.ts +19 -0
- package/dist/browser/modules/excel/utils/ooxml-validator/check-workbook.js +163 -0
- package/dist/browser/modules/excel/utils/ooxml-validator/check-worksheet.d.ts +25 -0
- package/dist/browser/modules/excel/utils/ooxml-validator/check-worksheet.js +569 -0
- package/dist/browser/modules/excel/utils/ooxml-validator/context.d.ts +85 -0
- package/dist/browser/modules/excel/utils/ooxml-validator/context.js +191 -0
- package/dist/browser/modules/excel/utils/ooxml-validator/index.d.ts +31 -0
- package/dist/browser/modules/excel/utils/ooxml-validator/index.js +102 -0
- package/dist/browser/modules/excel/utils/ooxml-validator/path-utils.d.ts +67 -0
- package/dist/browser/modules/excel/utils/ooxml-validator/path-utils.js +156 -0
- package/dist/browser/modules/excel/utils/ooxml-validator/reporter.d.ts +41 -0
- package/dist/browser/modules/excel/utils/ooxml-validator/reporter.js +61 -0
- package/dist/browser/modules/excel/utils/ooxml-validator/types.d.ts +109 -0
- package/dist/browser/modules/excel/utils/ooxml-validator/types.js +12 -0
- package/dist/browser/modules/excel/utils/ooxml-validator/xml-utils.d.ts +38 -0
- package/dist/browser/modules/excel/utils/ooxml-validator/xml-utils.js +100 -0
- package/dist/browser/modules/excel/workbook.browser.d.ts +248 -30
- package/dist/browser/modules/excel/workbook.browser.js +966 -31
- package/dist/browser/modules/excel/workbook.d.ts +43 -0
- package/dist/browser/modules/excel/workbook.js +48 -0
- package/dist/browser/modules/excel/worksheet.d.ts +157 -3
- package/dist/browser/modules/excel/worksheet.js +394 -35
- package/dist/browser/modules/excel/xlsx/rel-type.d.ts +40 -0
- package/dist/browser/modules/excel/xlsx/rel-type.js +41 -1
- package/dist/browser/modules/excel/xlsx/xform/book/defined-name-xform.d.ts +1 -0
- package/dist/browser/modules/excel/xlsx/xform/book/defined-name-xform.js +11 -2
- package/dist/browser/modules/excel/xlsx/xform/book/external-link-xform.js +12 -10
- package/dist/browser/modules/excel/xlsx/xform/book/workbook-xform.js +96 -22
- package/dist/browser/modules/excel/xlsx/xform/chart/chart-space-xform.d.ts +353 -0
- package/dist/browser/modules/excel/xlsx/xform/chart/chart-space-xform.js +6000 -0
- package/dist/browser/modules/excel/xlsx/xform/comment/threaded-comments-xform.d.ts +60 -0
- package/dist/browser/modules/excel/xlsx/xform/comment/threaded-comments-xform.js +213 -0
- package/dist/browser/modules/excel/xlsx/xform/core/content-types-xform.js +150 -11
- package/dist/browser/modules/excel/xlsx/xform/drawing/absolute-anchor-xform.js +20 -1
- package/dist/browser/modules/excel/xlsx/xform/drawing/base-cell-anchor-xform.js +1 -1
- package/dist/browser/modules/excel/xlsx/xform/drawing/drawing-xform.d.ts +30 -0
- package/dist/browser/modules/excel/xlsx/xform/drawing/drawing-xform.js +109 -5
- package/dist/browser/modules/excel/xlsx/xform/drawing/graphic-frame-xform.d.ts +54 -0
- package/dist/browser/modules/excel/xlsx/xform/drawing/graphic-frame-xform.js +225 -0
- package/dist/browser/modules/excel/xlsx/xform/drawing/one-cell-anchor-xform.d.ts +3 -1
- package/dist/browser/modules/excel/xlsx/xform/drawing/one-cell-anchor-xform.js +18 -3
- package/dist/browser/modules/excel/xlsx/xform/drawing/two-cell-anchor-xform.d.ts +46 -0
- package/dist/browser/modules/excel/xlsx/xform/drawing/two-cell-anchor-xform.js +294 -12
- package/dist/browser/modules/excel/xlsx/xform/pivot-table/pivot-table-xform.d.ts +13 -2
- package/dist/browser/modules/excel/xlsx/xform/pivot-table/pivot-table-xform.js +32 -6
- package/dist/browser/modules/excel/xlsx/xform/sheet/chartsheet-xform.d.ts +185 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/chartsheet-xform.js +441 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/ext-lst-xform.d.ts +1 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/ext-lst-xform.js +51 -2
- package/dist/browser/modules/excel/xlsx/xform/sheet/worksheet-xform.js +196 -20
- package/dist/browser/modules/excel/xlsx/xform/table/auto-filter-xform.js +16 -1
- package/dist/browser/modules/excel/xlsx/xform/table/table-column-xform.js +17 -2
- package/dist/browser/modules/excel/xlsx/xform/xsd-values.d.ts +63 -0
- package/dist/browser/modules/excel/xlsx/xform/xsd-values.js +101 -0
- package/dist/browser/modules/excel/xlsx/xlsx.browser.d.ts +115 -21
- package/dist/browser/modules/excel/xlsx/xlsx.browser.js +4422 -78
- package/dist/browser/modules/pdf/builder/document-builder.d.ts +74 -0
- package/dist/browser/modules/pdf/builder/document-builder.js +507 -2
- package/dist/browser/modules/pdf/builder/pdf-editor.js +48 -3
- package/dist/browser/modules/pdf/excel-bridge.d.ts +69 -0
- package/dist/browser/modules/pdf/excel-bridge.js +683 -12
- package/dist/browser/modules/pdf/font/font-manager.d.ts +25 -0
- package/dist/browser/modules/pdf/font/font-manager.js +39 -0
- package/dist/browser/modules/pdf/index.d.ts +5 -2
- package/dist/browser/modules/pdf/index.js +3 -1
- package/dist/browser/modules/pdf/render/chart-surface.d.ts +33 -0
- package/dist/browser/modules/pdf/render/chart-surface.js +200 -0
- package/dist/browser/modules/pdf/render/layout-engine.d.ts +22 -1
- package/dist/browser/modules/pdf/render/layout-engine.js +436 -56
- package/dist/browser/modules/pdf/render/page-renderer.js +169 -28
- package/dist/browser/modules/pdf/render/pdf-exporter.js +117 -7
- package/dist/browser/modules/pdf/types.d.ts +227 -23
- package/dist/browser/modules/pdf/types.js +4 -0
- package/dist/browser/modules/pdf/word-bridge.d.ts +47 -0
- package/dist/browser/modules/pdf/word-bridge.js +304 -0
- package/dist/browser/modules/word/constants.d.ts +179 -0
- package/dist/browser/modules/word/constants.js +231 -0
- package/dist/browser/modules/word/content-types.d.ts +27 -0
- package/dist/browser/modules/word/content-types.js +53 -0
- package/dist/browser/modules/word/digital-signatures.d.ts +87 -0
- package/dist/browser/modules/word/digital-signatures.js +134 -0
- package/dist/browser/modules/word/document.d.ts +728 -0
- package/dist/browser/modules/word/document.js +1795 -0
- package/dist/browser/modules/word/docx-packager.d.ts +14 -0
- package/dist/browser/modules/word/docx-packager.js +822 -0
- package/dist/browser/modules/word/docx-reader.d.ts +11 -0
- package/dist/browser/modules/word/docx-reader.js +4929 -0
- package/dist/browser/modules/word/encryption.d.ts +102 -0
- package/dist/browser/modules/word/encryption.js +274 -0
- package/dist/browser/modules/word/errors.d.ts +49 -0
- package/dist/browser/modules/word/errors.js +68 -0
- package/dist/browser/modules/word/font-obfuscation.d.ts +31 -0
- package/dist/browser/modules/word/font-obfuscation.js +83 -0
- package/dist/browser/modules/word/html-renderer.d.ts +38 -0
- package/dist/browser/modules/word/html-renderer.js +782 -0
- package/dist/browser/modules/word/index.base.d.ts +19 -0
- package/dist/browser/modules/word/index.base.js +51 -0
- package/dist/browser/modules/word/index.browser.d.ts +4 -0
- package/dist/browser/modules/word/index.browser.js +4 -0
- package/dist/browser/modules/word/index.d.ts +4 -0
- package/dist/browser/modules/word/index.js +4 -0
- package/dist/browser/modules/word/internal-utils.d.ts +23 -0
- package/dist/browser/modules/word/internal-utils.js +54 -0
- package/dist/browser/modules/word/relationships.d.ts +31 -0
- package/dist/browser/modules/word/relationships.js +56 -0
- package/dist/browser/modules/word/types.d.ts +2325 -0
- package/dist/browser/modules/word/types.js +10 -0
- package/dist/browser/modules/word/units.d.ts +49 -0
- package/dist/browser/modules/word/units.js +111 -0
- package/dist/browser/modules/word/writers/chart-writer.d.ts +10 -0
- package/dist/browser/modules/word/writers/chart-writer.js +385 -0
- package/dist/browser/modules/word/writers/checkbox-writer.d.ts +9 -0
- package/dist/browser/modules/word/writers/checkbox-writer.js +42 -0
- package/dist/browser/modules/word/writers/comment-writer.d.ts +15 -0
- package/dist/browser/modules/word/writers/comment-writer.js +70 -0
- package/dist/browser/modules/word/writers/document-writer.d.ts +16 -0
- package/dist/browser/modules/word/writers/document-writer.js +461 -0
- package/dist/browser/modules/word/writers/footnote-writer.d.ts +11 -0
- package/dist/browser/modules/word/writers/footnote-writer.js +72 -0
- package/dist/browser/modules/word/writers/header-footer-writer.d.ts +13 -0
- package/dist/browser/modules/word/writers/header-footer-writer.js +129 -0
- package/dist/browser/modules/word/writers/image-writer.d.ts +10 -0
- package/dist/browser/modules/word/writers/image-writer.js +185 -0
- package/dist/browser/modules/word/writers/math-writer.d.ts +9 -0
- package/dist/browser/modules/word/writers/math-writer.js +428 -0
- package/dist/browser/modules/word/writers/numbering-writer.d.ts +10 -0
- package/dist/browser/modules/word/writers/numbering-writer.js +125 -0
- package/dist/browser/modules/word/writers/paragraph-writer.d.ts +13 -0
- package/dist/browser/modules/word/writers/paragraph-writer.js +516 -0
- package/dist/browser/modules/word/writers/parts-writer.d.ts +26 -0
- package/dist/browser/modules/word/writers/parts-writer.js +660 -0
- package/dist/browser/modules/word/writers/run-writer.d.ts +15 -0
- package/dist/browser/modules/word/writers/run-writer.js +649 -0
- package/dist/browser/modules/word/writers/section-writer.d.ts +10 -0
- package/dist/browser/modules/word/writers/section-writer.js +238 -0
- package/dist/browser/modules/word/writers/styles-writer.d.ts +10 -0
- package/dist/browser/modules/word/writers/styles-writer.js +242 -0
- package/dist/browser/modules/word/writers/table-writer.d.ts +10 -0
- package/dist/browser/modules/word/writers/table-writer.js +503 -0
- package/dist/browser/modules/word/writers/textbox-writer.d.ts +9 -0
- package/dist/browser/modules/word/writers/textbox-writer.js +53 -0
- package/dist/browser/modules/word/writers/toc-writer.d.ts +9 -0
- package/dist/browser/modules/word/writers/toc-writer.js +79 -0
- package/dist/browser/modules/xml/encode.d.ts +56 -7
- package/dist/browser/modules/xml/encode.js +157 -11
- package/dist/cjs/index.js +13 -2
- package/dist/cjs/modules/excel/chart/cache-populator.js +1178 -0
- package/dist/cjs/modules/excel/chart/chart-api.js +371 -0
- package/dist/cjs/modules/excel/chart/chart-builder.js +2440 -0
- package/dist/cjs/modules/excel/chart/chart-ex-builder.js +907 -0
- package/dist/cjs/modules/excel/chart/chart-ex-parser.js +1208 -0
- package/dist/cjs/modules/excel/chart/chart-ex-renderer.js +5364 -0
- package/dist/cjs/modules/excel/chart/chart-ex-types.js +12 -0
- package/dist/cjs/modules/excel/chart/chart-images.js +366 -0
- package/dist/cjs/modules/excel/chart/chart-presets.js +184 -0
- package/dist/cjs/modules/excel/chart/chart-renderer.js +6450 -0
- package/dist/cjs/modules/excel/chart/chart-sidecar.js +433 -0
- package/dist/cjs/modules/excel/chart/chart-utils.js +845 -0
- package/dist/cjs/modules/excel/chart/chart.js +1324 -0
- package/dist/cjs/modules/excel/chart/glyph-rasterizer.js +664 -0
- package/dist/cjs/modules/excel/chart/index.js +101 -0
- package/dist/cjs/modules/excel/chart/install.js +95 -0
- package/dist/cjs/modules/excel/chart/shape-properties.js +1577 -0
- package/dist/cjs/modules/excel/chart/stroke-font.js +1559 -0
- package/dist/cjs/modules/excel/chart/topojson.js +239 -0
- package/dist/cjs/modules/excel/chart/types.js +9 -0
- package/dist/cjs/modules/excel/chart-host-registry.js +96 -0
- package/dist/cjs/modules/excel/chartsheet.js +199 -0
- package/dist/cjs/modules/excel/defined-names.js +44 -4
- package/dist/cjs/modules/excel/errors.js +11 -1
- package/dist/cjs/modules/excel/form-control.js +17 -0
- package/dist/cjs/modules/excel/image.js +12 -2
- package/dist/cjs/modules/excel/pivot-chart.js +56 -0
- package/dist/cjs/modules/excel/pivot-table.js +35 -0
- package/dist/cjs/modules/excel/range.js +5 -1
- package/dist/cjs/modules/excel/sparkline/index.js +23 -0
- package/dist/cjs/modules/excel/sparkline/sparkline.js +756 -0
- package/dist/cjs/modules/excel/stream/worksheet-writer.js +3 -2
- package/dist/cjs/modules/excel/table.js +42 -6
- package/dist/cjs/modules/excel/utils/address.js +29 -0
- package/dist/cjs/modules/excel/utils/drawing-utils.js +11 -6
- package/dist/cjs/modules/excel/utils/guid.js +38 -0
- package/dist/cjs/modules/excel/utils/ooxml-paths.js +246 -9
- package/dist/cjs/modules/excel/utils/ooxml-validator/check-chart-sidecar.js +103 -0
- package/dist/cjs/modules/excel/utils/ooxml-validator/check-chart.js +2128 -0
- package/dist/cjs/modules/excel/utils/ooxml-validator/check-chartsheet.js +29 -0
- package/dist/cjs/modules/excel/utils/ooxml-validator/check-content-types.js +184 -0
- package/dist/cjs/modules/excel/utils/ooxml-validator/check-drawing.js +270 -0
- package/dist/cjs/modules/excel/utils/ooxml-validator/check-pivot.js +107 -0
- package/dist/cjs/modules/excel/utils/ooxml-validator/check-relationships.js +188 -0
- package/dist/cjs/modules/excel/utils/ooxml-validator/check-structure.js +60 -0
- package/dist/cjs/modules/excel/utils/ooxml-validator/check-styles.js +92 -0
- package/dist/cjs/modules/excel/utils/ooxml-validator/check-table.js +180 -0
- package/dist/cjs/modules/excel/utils/ooxml-validator/check-workbook.js +166 -0
- package/dist/cjs/modules/excel/utils/ooxml-validator/check-worksheet.js +572 -0
- package/dist/cjs/modules/excel/utils/ooxml-validator/context.js +196 -0
- package/dist/cjs/modules/excel/utils/ooxml-validator/index.js +105 -0
- package/dist/cjs/modules/excel/utils/ooxml-validator/path-utils.js +168 -0
- package/dist/cjs/modules/excel/utils/ooxml-validator/reporter.js +66 -0
- package/dist/cjs/modules/excel/utils/ooxml-validator/types.js +13 -0
- package/dist/cjs/modules/excel/utils/ooxml-validator/xml-utils.js +110 -0
- package/dist/cjs/modules/excel/workbook.browser.js +973 -38
- package/dist/cjs/modules/excel/workbook.js +48 -0
- package/dist/cjs/modules/excel/worksheet.js +393 -34
- package/dist/cjs/modules/excel/xlsx/rel-type.js +41 -1
- package/dist/cjs/modules/excel/xlsx/xform/book/defined-name-xform.js +11 -2
- package/dist/cjs/modules/excel/xlsx/xform/book/external-link-xform.js +12 -10
- package/dist/cjs/modules/excel/xlsx/xform/book/workbook-xform.js +96 -22
- package/dist/cjs/modules/excel/xlsx/xform/chart/chart-space-xform.js +6003 -0
- package/dist/cjs/modules/excel/xlsx/xform/comment/threaded-comments-xform.js +219 -0
- package/dist/cjs/modules/excel/xlsx/xform/core/content-types-xform.js +149 -10
- package/dist/cjs/modules/excel/xlsx/xform/drawing/absolute-anchor-xform.js +20 -1
- package/dist/cjs/modules/excel/xlsx/xform/drawing/base-cell-anchor-xform.js +1 -1
- package/dist/cjs/modules/excel/xlsx/xform/drawing/drawing-xform.js +109 -5
- package/dist/cjs/modules/excel/xlsx/xform/drawing/graphic-frame-xform.js +228 -0
- package/dist/cjs/modules/excel/xlsx/xform/drawing/one-cell-anchor-xform.js +18 -3
- package/dist/cjs/modules/excel/xlsx/xform/drawing/two-cell-anchor-xform.js +294 -12
- package/dist/cjs/modules/excel/xlsx/xform/pivot-table/pivot-table-xform.js +32 -6
- package/dist/cjs/modules/excel/xlsx/xform/sheet/chartsheet-xform.js +444 -0
- package/dist/cjs/modules/excel/xlsx/xform/sheet/ext-lst-xform.js +51 -2
- package/dist/cjs/modules/excel/xlsx/xform/sheet/worksheet-xform.js +195 -19
- package/dist/cjs/modules/excel/xlsx/xform/table/auto-filter-xform.js +16 -1
- package/dist/cjs/modules/excel/xlsx/xform/table/table-column-xform.js +17 -2
- package/dist/cjs/modules/excel/xlsx/xform/xsd-values.js +106 -0
- package/dist/cjs/modules/excel/xlsx/xlsx.browser.js +4420 -76
- package/dist/cjs/modules/pdf/builder/document-builder.js +506 -1
- package/dist/cjs/modules/pdf/builder/pdf-editor.js +48 -3
- package/dist/cjs/modules/pdf/excel-bridge.js +684 -12
- package/dist/cjs/modules/pdf/font/font-manager.js +39 -0
- package/dist/cjs/modules/pdf/index.js +5 -1
- package/dist/cjs/modules/pdf/render/chart-surface.js +203 -0
- package/dist/cjs/modules/pdf/render/layout-engine.js +437 -56
- package/dist/cjs/modules/pdf/render/page-renderer.js +169 -28
- package/dist/cjs/modules/pdf/render/pdf-exporter.js +115 -5
- package/dist/cjs/modules/pdf/types.js +5 -0
- package/dist/cjs/modules/pdf/word-bridge.js +307 -0
- package/dist/cjs/modules/word/constants.js +234 -0
- package/dist/cjs/modules/word/content-types.js +57 -0
- package/dist/cjs/modules/word/digital-signatures.js +140 -0
- package/dist/cjs/modules/word/document.js +1909 -0
- package/dist/cjs/modules/word/docx-packager.js +825 -0
- package/dist/cjs/modules/word/docx-reader.js +4932 -0
- package/dist/cjs/modules/word/encryption.js +282 -0
- package/dist/cjs/modules/word/errors.js +88 -0
- package/dist/cjs/modules/word/font-obfuscation.js +88 -0
- package/dist/cjs/modules/word/html-renderer.js +785 -0
- package/dist/cjs/modules/word/index.base.js +199 -0
- package/dist/cjs/modules/word/index.browser.js +20 -0
- package/dist/cjs/modules/word/index.js +20 -0
- package/dist/cjs/modules/word/internal-utils.js +59 -0
- package/dist/cjs/modules/word/relationships.js +60 -0
- package/dist/cjs/modules/word/types.js +11 -0
- package/dist/cjs/modules/word/units.js +135 -0
- package/dist/cjs/modules/word/writers/chart-writer.js +388 -0
- package/dist/cjs/modules/word/writers/checkbox-writer.js +45 -0
- package/dist/cjs/modules/word/writers/comment-writer.js +74 -0
- package/dist/cjs/modules/word/writers/document-writer.js +465 -0
- package/dist/cjs/modules/word/writers/footnote-writer.js +76 -0
- package/dist/cjs/modules/word/writers/header-footer-writer.js +134 -0
- package/dist/cjs/modules/word/writers/image-writer.js +188 -0
- package/dist/cjs/modules/word/writers/math-writer.js +431 -0
- package/dist/cjs/modules/word/writers/numbering-writer.js +128 -0
- package/dist/cjs/modules/word/writers/paragraph-writer.js +521 -0
- package/dist/cjs/modules/word/writers/parts-writer.js +671 -0
- package/dist/cjs/modules/word/writers/run-writer.js +655 -0
- package/dist/cjs/modules/word/writers/section-writer.js +241 -0
- package/dist/cjs/modules/word/writers/styles-writer.js +245 -0
- package/dist/cjs/modules/word/writers/table-writer.js +506 -0
- package/dist/cjs/modules/word/writers/textbox-writer.js +56 -0
- package/dist/cjs/modules/word/writers/toc-writer.js +82 -0
- package/dist/cjs/modules/xml/encode.js +158 -11
- package/dist/esm/index.browser.js +20 -2
- package/dist/esm/index.js +9 -1
- package/dist/esm/modules/excel/chart/cache-populator.js +1171 -0
- package/dist/esm/modules/excel/chart/chart-api.js +364 -0
- package/dist/esm/modules/excel/chart/chart-builder.js +2432 -0
- package/dist/esm/modules/excel/chart/chart-ex-builder.js +903 -0
- package/dist/esm/modules/excel/chart/chart-ex-parser.js +1205 -0
- package/dist/esm/modules/excel/chart/chart-ex-renderer.js +5352 -0
- package/dist/esm/modules/excel/chart/chart-ex-types.js +11 -0
- package/dist/esm/modules/excel/chart/chart-images.js +363 -0
- package/dist/esm/modules/excel/chart/chart-presets.js +179 -0
- package/dist/esm/modules/excel/chart/chart-renderer.js +6440 -0
- package/dist/esm/modules/excel/chart/chart-sidecar.js +427 -0
- package/dist/esm/modules/excel/chart/chart-utils.js +821 -0
- package/dist/esm/modules/excel/chart/chart.js +1320 -0
- package/dist/esm/modules/excel/chart/glyph-rasterizer.js +658 -0
- package/dist/esm/modules/excel/chart/index.js +46 -0
- package/dist/esm/modules/excel/chart/install.js +91 -0
- package/dist/esm/modules/excel/chart/shape-properties.js +1557 -0
- package/dist/esm/modules/excel/chart/stroke-font.js +1556 -0
- package/dist/esm/modules/excel/chart/topojson.js +236 -0
- package/dist/esm/modules/excel/chart/types.js +8 -0
- package/dist/esm/modules/excel/chart-host-registry.js +90 -0
- package/dist/esm/modules/excel/chartsheet.js +196 -0
- package/dist/esm/modules/excel/defined-names.js +44 -4
- package/dist/esm/modules/excel/errors.js +9 -0
- package/dist/esm/modules/excel/form-control.js +17 -0
- package/dist/esm/modules/excel/image.js +12 -2
- package/dist/esm/modules/excel/pivot-chart.js +53 -0
- package/dist/esm/modules/excel/pivot-table.js +35 -0
- package/dist/esm/modules/excel/range.js +5 -1
- package/dist/esm/modules/excel/sparkline/index.js +7 -0
- package/dist/esm/modules/excel/sparkline/sparkline.js +750 -0
- package/dist/esm/modules/excel/stream/worksheet-writer.js +3 -2
- package/dist/esm/modules/excel/table.js +42 -6
- package/dist/esm/modules/excel/utils/address.js +28 -0
- package/dist/esm/modules/excel/utils/drawing-utils.js +11 -6
- package/dist/esm/modules/excel/utils/guid.js +35 -0
- package/dist/esm/modules/excel/utils/ooxml-paths.js +206 -9
- package/dist/esm/modules/excel/utils/ooxml-validator/check-chart-sidecar.js +101 -0
- package/dist/esm/modules/excel/utils/ooxml-validator/check-chart.js +2125 -0
- package/dist/esm/modules/excel/utils/ooxml-validator/check-chartsheet.js +26 -0
- package/dist/esm/modules/excel/utils/ooxml-validator/check-content-types.js +181 -0
- package/dist/esm/modules/excel/utils/ooxml-validator/check-drawing.js +267 -0
- package/dist/esm/modules/excel/utils/ooxml-validator/check-pivot.js +104 -0
- package/dist/esm/modules/excel/utils/ooxml-validator/check-relationships.js +184 -0
- package/dist/esm/modules/excel/utils/ooxml-validator/check-structure.js +56 -0
- package/dist/esm/modules/excel/utils/ooxml-validator/check-styles.js +89 -0
- package/dist/esm/modules/excel/utils/ooxml-validator/check-table.js +177 -0
- package/dist/esm/modules/excel/utils/ooxml-validator/check-workbook.js +163 -0
- package/dist/esm/modules/excel/utils/ooxml-validator/check-worksheet.js +569 -0
- package/dist/esm/modules/excel/utils/ooxml-validator/context.js +191 -0
- package/dist/esm/modules/excel/utils/ooxml-validator/index.js +102 -0
- package/dist/esm/modules/excel/utils/ooxml-validator/path-utils.js +156 -0
- package/dist/esm/modules/excel/utils/ooxml-validator/reporter.js +61 -0
- package/dist/esm/modules/excel/utils/ooxml-validator/types.js +12 -0
- package/dist/esm/modules/excel/utils/ooxml-validator/xml-utils.js +100 -0
- package/dist/esm/modules/excel/workbook.browser.js +969 -34
- package/dist/esm/modules/excel/workbook.js +48 -0
- package/dist/esm/modules/excel/worksheet.js +394 -35
- package/dist/esm/modules/excel/xlsx/rel-type.js +41 -1
- package/dist/esm/modules/excel/xlsx/xform/book/defined-name-xform.js +11 -2
- package/dist/esm/modules/excel/xlsx/xform/book/external-link-xform.js +12 -10
- package/dist/esm/modules/excel/xlsx/xform/book/workbook-xform.js +96 -22
- package/dist/esm/modules/excel/xlsx/xform/chart/chart-space-xform.js +6000 -0
- package/dist/esm/modules/excel/xlsx/xform/comment/threaded-comments-xform.js +213 -0
- package/dist/esm/modules/excel/xlsx/xform/core/content-types-xform.js +150 -11
- package/dist/esm/modules/excel/xlsx/xform/drawing/absolute-anchor-xform.js +20 -1
- package/dist/esm/modules/excel/xlsx/xform/drawing/base-cell-anchor-xform.js +1 -1
- package/dist/esm/modules/excel/xlsx/xform/drawing/drawing-xform.js +109 -5
- package/dist/esm/modules/excel/xlsx/xform/drawing/graphic-frame-xform.js +225 -0
- package/dist/esm/modules/excel/xlsx/xform/drawing/one-cell-anchor-xform.js +18 -3
- package/dist/esm/modules/excel/xlsx/xform/drawing/two-cell-anchor-xform.js +294 -12
- package/dist/esm/modules/excel/xlsx/xform/pivot-table/pivot-table-xform.js +32 -6
- package/dist/esm/modules/excel/xlsx/xform/sheet/chartsheet-xform.js +441 -0
- package/dist/esm/modules/excel/xlsx/xform/sheet/ext-lst-xform.js +51 -2
- package/dist/esm/modules/excel/xlsx/xform/sheet/worksheet-xform.js +196 -20
- package/dist/esm/modules/excel/xlsx/xform/table/auto-filter-xform.js +16 -1
- package/dist/esm/modules/excel/xlsx/xform/table/table-column-xform.js +17 -2
- package/dist/esm/modules/excel/xlsx/xform/xsd-values.js +101 -0
- package/dist/esm/modules/excel/xlsx/xlsx.browser.js +4422 -78
- package/dist/esm/modules/pdf/builder/document-builder.js +507 -2
- package/dist/esm/modules/pdf/builder/pdf-editor.js +48 -3
- package/dist/esm/modules/pdf/excel-bridge.js +683 -12
- package/dist/esm/modules/pdf/font/font-manager.js +39 -0
- package/dist/esm/modules/pdf/index.js +3 -1
- package/dist/esm/modules/pdf/render/chart-surface.js +200 -0
- package/dist/esm/modules/pdf/render/layout-engine.js +436 -56
- package/dist/esm/modules/pdf/render/page-renderer.js +169 -28
- package/dist/esm/modules/pdf/render/pdf-exporter.js +117 -7
- package/dist/esm/modules/pdf/types.js +4 -0
- package/dist/esm/modules/pdf/word-bridge.js +304 -0
- package/dist/esm/modules/word/constants.js +231 -0
- package/dist/esm/modules/word/content-types.js +53 -0
- package/dist/esm/modules/word/digital-signatures.js +134 -0
- package/dist/esm/modules/word/document.js +1795 -0
- package/dist/esm/modules/word/docx-packager.js +822 -0
- package/dist/esm/modules/word/docx-reader.js +4929 -0
- package/dist/esm/modules/word/encryption.js +274 -0
- package/dist/esm/modules/word/errors.js +68 -0
- package/dist/esm/modules/word/font-obfuscation.js +83 -0
- package/dist/esm/modules/word/html-renderer.js +782 -0
- package/dist/esm/modules/word/index.base.js +51 -0
- package/dist/esm/modules/word/index.browser.js +4 -0
- package/dist/esm/modules/word/index.js +4 -0
- package/dist/esm/modules/word/internal-utils.js +54 -0
- package/dist/esm/modules/word/relationships.js +56 -0
- package/dist/esm/modules/word/types.js +10 -0
- package/dist/esm/modules/word/units.js +111 -0
- package/dist/esm/modules/word/writers/chart-writer.js +385 -0
- package/dist/esm/modules/word/writers/checkbox-writer.js +42 -0
- package/dist/esm/modules/word/writers/comment-writer.js +70 -0
- package/dist/esm/modules/word/writers/document-writer.js +461 -0
- package/dist/esm/modules/word/writers/footnote-writer.js +72 -0
- package/dist/esm/modules/word/writers/header-footer-writer.js +129 -0
- package/dist/esm/modules/word/writers/image-writer.js +185 -0
- package/dist/esm/modules/word/writers/math-writer.js +428 -0
- package/dist/esm/modules/word/writers/numbering-writer.js +125 -0
- package/dist/esm/modules/word/writers/paragraph-writer.js +516 -0
- package/dist/esm/modules/word/writers/parts-writer.js +660 -0
- package/dist/esm/modules/word/writers/run-writer.js +649 -0
- package/dist/esm/modules/word/writers/section-writer.js +238 -0
- package/dist/esm/modules/word/writers/styles-writer.js +242 -0
- package/dist/esm/modules/word/writers/table-writer.js +503 -0
- package/dist/esm/modules/word/writers/textbox-writer.js +53 -0
- package/dist/esm/modules/word/writers/toc-writer.js +79 -0
- package/dist/esm/modules/xml/encode.js +157 -11
- package/dist/iife/excelts.iife.js +11789 -687
- package/dist/iife/excelts.iife.js.map +1 -1
- package/dist/iife/excelts.iife.min.js +52 -44
- package/dist/types/index.browser.d.ts +8 -5
- package/dist/types/index.d.ts +4 -2
- package/dist/types/modules/excel/chart/cache-populator.d.ts +49 -0
- package/dist/types/modules/excel/chart/chart-api.d.ts +92 -0
- package/dist/types/modules/excel/chart/chart-builder.d.ts +48 -0
- package/dist/types/modules/excel/chart/chart-ex-builder.d.ts +36 -0
- package/dist/types/modules/excel/chart/chart-ex-parser.d.ts +8 -0
- package/dist/types/modules/excel/chart/chart-ex-renderer.d.ts +187 -0
- package/dist/types/modules/excel/chart/chart-ex-types.d.ts +531 -0
- package/dist/types/modules/excel/chart/chart-images.d.ts +78 -0
- package/dist/types/modules/excel/chart/chart-presets.d.ts +392 -0
- package/dist/types/modules/excel/chart/chart-renderer.d.ts +550 -0
- package/dist/types/modules/excel/chart/chart-sidecar.d.ts +21 -0
- package/dist/types/modules/excel/chart/chart-utils.d.ts +306 -0
- package/dist/types/modules/excel/chart/chart.d.ts +504 -0
- package/dist/types/modules/excel/chart/glyph-rasterizer.d.ts +62 -0
- package/dist/types/modules/excel/chart/index.d.ts +54 -0
- package/dist/types/modules/excel/chart/install.d.ts +44 -0
- package/dist/types/modules/excel/chart/shape-properties.d.ts +156 -0
- package/dist/types/modules/excel/chart/stroke-font.d.ts +36 -0
- package/dist/types/modules/excel/chart/topojson.d.ts +98 -0
- package/dist/types/modules/excel/chart/types.d.ts +2559 -0
- package/dist/types/modules/excel/chart-host-registry.d.ts +157 -0
- package/dist/types/modules/excel/chartsheet.d.ts +102 -0
- package/dist/types/modules/excel/defined-names.d.ts +35 -0
- package/dist/types/modules/excel/errors.d.ts +6 -0
- package/dist/types/modules/excel/form-control.d.ts +6 -0
- package/dist/types/modules/excel/pivot-chart.d.ts +7 -0
- package/dist/types/modules/excel/pivot-table.d.ts +55 -0
- package/dist/types/modules/excel/sparkline/index.d.ts +7 -0
- package/dist/types/modules/excel/sparkline/sparkline.d.ts +206 -0
- package/dist/types/modules/excel/types.d.ts +72 -0
- package/dist/types/modules/excel/utils/address.d.ts +18 -0
- package/dist/types/modules/excel/utils/guid.d.ts +15 -0
- package/dist/types/modules/excel/utils/ooxml-paths.d.ts +74 -0
- package/dist/types/modules/excel/utils/ooxml-validator/check-chart-sidecar.d.ts +35 -0
- package/dist/types/modules/excel/utils/ooxml-validator/check-chart.d.ts +32 -0
- package/dist/types/modules/excel/utils/ooxml-validator/check-chartsheet.d.ts +9 -0
- package/dist/types/modules/excel/utils/ooxml-validator/check-content-types.d.ts +16 -0
- package/dist/types/modules/excel/utils/ooxml-validator/check-drawing.d.ts +34 -0
- package/dist/types/modules/excel/utils/ooxml-validator/check-pivot.d.ts +14 -0
- package/dist/types/modules/excel/utils/ooxml-validator/check-relationships.d.ts +18 -0
- package/dist/types/modules/excel/utils/ooxml-validator/check-structure.d.ts +21 -0
- package/dist/types/modules/excel/utils/ooxml-validator/check-styles.d.ts +15 -0
- package/dist/types/modules/excel/utils/ooxml-validator/check-table.d.ts +31 -0
- package/dist/types/modules/excel/utils/ooxml-validator/check-workbook.d.ts +19 -0
- package/dist/types/modules/excel/utils/ooxml-validator/check-worksheet.d.ts +25 -0
- package/dist/types/modules/excel/utils/ooxml-validator/context.d.ts +85 -0
- package/dist/types/modules/excel/utils/ooxml-validator/index.d.ts +31 -0
- package/dist/types/modules/excel/utils/ooxml-validator/path-utils.d.ts +67 -0
- package/dist/types/modules/excel/utils/ooxml-validator/reporter.d.ts +41 -0
- package/dist/types/modules/excel/utils/ooxml-validator/types.d.ts +109 -0
- package/dist/types/modules/excel/utils/ooxml-validator/xml-utils.d.ts +38 -0
- package/dist/types/modules/excel/workbook.browser.d.ts +248 -30
- package/dist/types/modules/excel/workbook.d.ts +43 -0
- package/dist/types/modules/excel/worksheet.d.ts +157 -3
- package/dist/types/modules/excel/xlsx/rel-type.d.ts +40 -0
- package/dist/types/modules/excel/xlsx/xform/book/defined-name-xform.d.ts +1 -0
- package/dist/types/modules/excel/xlsx/xform/chart/chart-space-xform.d.ts +353 -0
- package/dist/types/modules/excel/xlsx/xform/comment/threaded-comments-xform.d.ts +60 -0
- package/dist/types/modules/excel/xlsx/xform/drawing/drawing-xform.d.ts +30 -0
- package/dist/types/modules/excel/xlsx/xform/drawing/graphic-frame-xform.d.ts +54 -0
- package/dist/types/modules/excel/xlsx/xform/drawing/one-cell-anchor-xform.d.ts +3 -1
- package/dist/types/modules/excel/xlsx/xform/drawing/two-cell-anchor-xform.d.ts +46 -0
- package/dist/types/modules/excel/xlsx/xform/pivot-table/pivot-table-xform.d.ts +13 -2
- package/dist/types/modules/excel/xlsx/xform/sheet/chartsheet-xform.d.ts +185 -0
- package/dist/types/modules/excel/xlsx/xform/sheet/ext-lst-xform.d.ts +1 -0
- package/dist/types/modules/excel/xlsx/xform/xsd-values.d.ts +63 -0
- package/dist/types/modules/excel/xlsx/xlsx.browser.d.ts +115 -21
- package/dist/types/modules/pdf/builder/document-builder.d.ts +74 -0
- package/dist/types/modules/pdf/excel-bridge.d.ts +69 -0
- package/dist/types/modules/pdf/font/font-manager.d.ts +25 -0
- package/dist/types/modules/pdf/index.d.ts +5 -2
- package/dist/types/modules/pdf/render/chart-surface.d.ts +33 -0
- package/dist/types/modules/pdf/render/layout-engine.d.ts +22 -1
- package/dist/types/modules/pdf/types.d.ts +227 -23
- package/dist/types/modules/pdf/word-bridge.d.ts +47 -0
- package/dist/types/modules/word/constants.d.ts +179 -0
- package/dist/types/modules/word/content-types.d.ts +27 -0
- package/dist/types/modules/word/digital-signatures.d.ts +87 -0
- package/dist/types/modules/word/document.d.ts +728 -0
- package/dist/types/modules/word/docx-packager.d.ts +14 -0
- package/dist/types/modules/word/docx-reader.d.ts +11 -0
- package/dist/types/modules/word/encryption.d.ts +102 -0
- package/dist/types/modules/word/errors.d.ts +49 -0
- package/dist/types/modules/word/font-obfuscation.d.ts +31 -0
- package/dist/types/modules/word/html-renderer.d.ts +38 -0
- package/dist/types/modules/word/index.base.d.ts +19 -0
- package/dist/types/modules/word/index.browser.d.ts +4 -0
- package/dist/types/modules/word/index.d.ts +4 -0
- package/dist/types/modules/word/internal-utils.d.ts +23 -0
- package/dist/types/modules/word/relationships.d.ts +31 -0
- package/dist/types/modules/word/types.d.ts +2325 -0
- package/dist/types/modules/word/units.d.ts +49 -0
- package/dist/types/modules/word/writers/chart-writer.d.ts +10 -0
- package/dist/types/modules/word/writers/checkbox-writer.d.ts +9 -0
- package/dist/types/modules/word/writers/comment-writer.d.ts +15 -0
- package/dist/types/modules/word/writers/document-writer.d.ts +16 -0
- package/dist/types/modules/word/writers/footnote-writer.d.ts +11 -0
- package/dist/types/modules/word/writers/header-footer-writer.d.ts +13 -0
- package/dist/types/modules/word/writers/image-writer.d.ts +10 -0
- package/dist/types/modules/word/writers/math-writer.d.ts +9 -0
- package/dist/types/modules/word/writers/numbering-writer.d.ts +10 -0
- package/dist/types/modules/word/writers/paragraph-writer.d.ts +13 -0
- package/dist/types/modules/word/writers/parts-writer.d.ts +26 -0
- package/dist/types/modules/word/writers/run-writer.d.ts +15 -0
- package/dist/types/modules/word/writers/section-writer.d.ts +10 -0
- package/dist/types/modules/word/writers/styles-writer.d.ts +10 -0
- package/dist/types/modules/word/writers/table-writer.d.ts +10 -0
- package/dist/types/modules/word/writers/textbox-writer.d.ts +9 -0
- package/dist/types/modules/word/writers/toc-writer.d.ts +9 -0
- package/dist/types/modules/xml/encode.d.ts +56 -7
- package/package.json +29 -11
- package/dist/browser/modules/excel/utils/ooxml-validator.d.ts +0 -48
- package/dist/browser/modules/excel/utils/ooxml-validator.js +0 -493
- package/dist/browser/modules/excel/utils/passthrough-manager.d.ts +0 -77
- package/dist/browser/modules/excel/utils/passthrough-manager.js +0 -129
- package/dist/cjs/modules/excel/utils/ooxml-validator.js +0 -499
- package/dist/cjs/modules/excel/utils/passthrough-manager.js +0 -133
- package/dist/esm/modules/excel/utils/ooxml-validator.js +0 -493
- package/dist/esm/modules/excel/utils/passthrough-manager.js +0 -129
- package/dist/types/modules/excel/utils/ooxml-validator.d.ts +0 -48
- package/dist/types/modules/excel/utils/passthrough-manager.d.ts +0 -77
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { ChartColorsModel, ChartStyleModel } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Parse a `colors{N}.xml` raw XML string into a structured model.
|
|
4
|
+
* Returns a best-effort representation — unknown children are preserved in rawXml.
|
|
5
|
+
*/
|
|
6
|
+
export declare function parseChartColors(rawXml: string): ChartColorsModel;
|
|
7
|
+
/**
|
|
8
|
+
* Build a `colors{N}.xml` string from a structured ChartColorsModel.
|
|
9
|
+
*
|
|
10
|
+
* Structured data (`colors` / `variations`) takes precedence over `rawXml`.
|
|
11
|
+
* If neither `colors` nor `variations` is present we fall back to `rawXml`
|
|
12
|
+
* (round-trip) or the built-in default palette. Mutations to `variations`
|
|
13
|
+
* alone therefore still take effect without requiring the caller to also
|
|
14
|
+
* populate `colors`.
|
|
15
|
+
*/
|
|
16
|
+
export declare function buildChartColors(model: ChartColorsModel): string;
|
|
17
|
+
export declare function buildChartStyle(model: ChartStyleModel): string;
|
|
18
|
+
/**
|
|
19
|
+
* Parse a `styles{N}.xml` file to extract the style ID.
|
|
20
|
+
*/
|
|
21
|
+
export declare function parseChartStyle(rawXml: string): ChartStyleModel;
|
|
@@ -0,0 +1,427 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parser and builder for chart sidecar files:
|
|
3
|
+
* - `styles{N}.xml` (cs:chartStyle) — chart-wide style id
|
|
4
|
+
* - `colors{N}.xml` (cs:colorStyle) — chart color palette
|
|
5
|
+
*
|
|
6
|
+
* These files are normally written and read as opaque XML; this module offers
|
|
7
|
+
* structured access for users who want to inspect or rewrite the palette.
|
|
8
|
+
*/
|
|
9
|
+
import { escapeXmlAttr } from "./chart-utils.js";
|
|
10
|
+
/** indexOf-based attribute extraction — no backtracking risk. */
|
|
11
|
+
function extractAttr(xml, tagName, attrName) {
|
|
12
|
+
const tagStart = xml.indexOf(`<${tagName}`);
|
|
13
|
+
if (tagStart < 0) {
|
|
14
|
+
return undefined;
|
|
15
|
+
}
|
|
16
|
+
const tagEnd = xml.indexOf(">", tagStart);
|
|
17
|
+
if (tagEnd < 0) {
|
|
18
|
+
return undefined;
|
|
19
|
+
}
|
|
20
|
+
const tag = xml.slice(tagStart, tagEnd + 1);
|
|
21
|
+
const attrStart = tag.indexOf(`${attrName}="`);
|
|
22
|
+
if (attrStart < 0) {
|
|
23
|
+
return undefined;
|
|
24
|
+
}
|
|
25
|
+
const valStart = attrStart + attrName.length + 2;
|
|
26
|
+
const valEnd = tag.indexOf('"', valStart);
|
|
27
|
+
return valEnd >= 0 ? tag.slice(valStart, valEnd) : undefined;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Parse a `colors{N}.xml` raw XML string into a structured model.
|
|
31
|
+
* Returns a best-effort representation — unknown children are preserved in rawXml.
|
|
32
|
+
*/
|
|
33
|
+
export function parseChartColors(rawXml) {
|
|
34
|
+
const result = { rawXml };
|
|
35
|
+
const methodMatch = extractAttr(rawXml, "cs:colorStyle", "meth");
|
|
36
|
+
if (methodMatch) {
|
|
37
|
+
result.method = methodMatch;
|
|
38
|
+
}
|
|
39
|
+
const idVal = extractAttr(rawXml, "cs:colorStyle", "id");
|
|
40
|
+
if (idVal) {
|
|
41
|
+
result.id = parseInt(idVal, 10);
|
|
42
|
+
}
|
|
43
|
+
// Colors come as a sequence of <a:schemeClr> and <a:srgbClr> at the top
|
|
44
|
+
// level of <cs:colorStyle>, each optionally wrapped with children.
|
|
45
|
+
//
|
|
46
|
+
// We locate every `<cs:variation>...</cs:variation>` span first so colour
|
|
47
|
+
// blocks sitting *inside* a variation can be excluded in O(1) per match,
|
|
48
|
+
// independent of document order (the previous `lastIndexOf` strategy was
|
|
49
|
+
// order-sensitive — colours declared after a `variation` close tag were
|
|
50
|
+
// classified based on the last variation in the file, not the enclosing
|
|
51
|
+
// element).
|
|
52
|
+
const variationRanges = [];
|
|
53
|
+
const varRangeRe = /<cs:variation\b[^>]*(?:\/>|>[\s\S]*?<\/cs:variation>)/g;
|
|
54
|
+
let vrm;
|
|
55
|
+
while ((vrm = varRangeRe.exec(rawXml)) !== null) {
|
|
56
|
+
variationRanges.push({ start: vrm.index, end: vrm.index + vrm[0].length });
|
|
57
|
+
}
|
|
58
|
+
const inVariation = (index) => variationRanges.some(r => index >= r.start && index < r.end);
|
|
59
|
+
const colors = [];
|
|
60
|
+
// Match a group starting with schemeClr or srgbClr — may self-close or have nested modifiers.
|
|
61
|
+
const colorBlockRe = /<a:(schemeClr|srgbClr)\b[^>]*(?:\/>|>([\s\S]*?)<\/a:\1>)/g;
|
|
62
|
+
let m;
|
|
63
|
+
while ((m = colorBlockRe.exec(rawXml)) !== null) {
|
|
64
|
+
if (inVariation(m.index)) {
|
|
65
|
+
continue;
|
|
66
|
+
}
|
|
67
|
+
const entry = {};
|
|
68
|
+
const fullMatch = m[0];
|
|
69
|
+
const valMatch = /\bval="([^"]+)"/.exec(fullMatch);
|
|
70
|
+
if (m[1] === "schemeClr" && valMatch) {
|
|
71
|
+
entry.theme = valMatch[1];
|
|
72
|
+
}
|
|
73
|
+
else if (m[1] === "srgbClr" && valMatch) {
|
|
74
|
+
entry.srgb = valMatch[1];
|
|
75
|
+
}
|
|
76
|
+
// Extract optional child modifiers. Accept fractional / negative
|
|
77
|
+
// values per `shape-properties.ts:parseColorModifiers` — third-party
|
|
78
|
+
// exporters (e.g. LibreOffice, custom palettes) emit `val="-5000"`
|
|
79
|
+
// or `val="12345.67"`; the previous `\d+`-only regex silently
|
|
80
|
+
// dropped them. Round after parsing so wire values stay integers.
|
|
81
|
+
const parseModAttr = (xml, tag) => {
|
|
82
|
+
const m = new RegExp(`<a:${tag}\\s+val="(-?\\d+(?:\\.\\d+)?)"`).exec(xml);
|
|
83
|
+
return m ? Math.round(parseFloat(m[1])) : undefined;
|
|
84
|
+
};
|
|
85
|
+
const inner = m[2] ?? "";
|
|
86
|
+
const lumModV = parseModAttr(inner, "lumMod");
|
|
87
|
+
if (lumModV !== undefined) {
|
|
88
|
+
entry.lumMod = lumModV;
|
|
89
|
+
}
|
|
90
|
+
const lumOffV = parseModAttr(inner, "lumOff");
|
|
91
|
+
if (lumOffV !== undefined) {
|
|
92
|
+
entry.lumOff = lumOffV;
|
|
93
|
+
}
|
|
94
|
+
const tintV = parseModAttr(inner, "tint");
|
|
95
|
+
if (tintV !== undefined) {
|
|
96
|
+
entry.tint = tintV;
|
|
97
|
+
}
|
|
98
|
+
const shadeV = parseModAttr(inner, "shade");
|
|
99
|
+
if (shadeV !== undefined) {
|
|
100
|
+
entry.shade = shadeV;
|
|
101
|
+
}
|
|
102
|
+
const satModV = parseModAttr(inner, "satMod");
|
|
103
|
+
if (satModV !== undefined) {
|
|
104
|
+
entry.satMod = satModV;
|
|
105
|
+
}
|
|
106
|
+
const alphaV = parseModAttr(inner, "alpha");
|
|
107
|
+
if (alphaV !== undefined) {
|
|
108
|
+
entry.alpha = alphaV;
|
|
109
|
+
}
|
|
110
|
+
if (entry.theme || entry.srgb) {
|
|
111
|
+
colors.push(entry);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
if (colors.length > 0) {
|
|
115
|
+
result.colors = colors;
|
|
116
|
+
}
|
|
117
|
+
// `<cs:variation>` blocks — each block's body is a list of
|
|
118
|
+
// DrawingML colour modifiers. We parse them into structured
|
|
119
|
+
// `ChartColorVariation` entries so editors can mutate the gradient
|
|
120
|
+
// palette without string surgery.
|
|
121
|
+
const variations = [];
|
|
122
|
+
const variationRe = /<cs:variation\b[^>]*>([\s\S]*?)<\/cs:variation>|<cs:variation\b[^>]*\/>/g;
|
|
123
|
+
let vm;
|
|
124
|
+
// Reuse the sibling `parseModAttr` semantics from the colour parser
|
|
125
|
+
// above: accept signed / fractional values. Third-party exports
|
|
126
|
+
// (LibreOffice palette packs, custom theme builders) emit these
|
|
127
|
+
// forms for colour variations; the previous `\d+`-only regex
|
|
128
|
+
// silently dropped them.
|
|
129
|
+
const parseModAttr = (xml, tag) => {
|
|
130
|
+
const m = new RegExp(`<a:${tag}\\b[^>]*\\bval="(-?\\d+(?:\\.\\d+)?)"`).exec(xml);
|
|
131
|
+
return m ? Math.round(parseFloat(m[1])) : undefined;
|
|
132
|
+
};
|
|
133
|
+
while ((vm = variationRe.exec(rawXml)) !== null) {
|
|
134
|
+
const body = vm[1] ?? "";
|
|
135
|
+
const entry = {};
|
|
136
|
+
const lumModV = parseModAttr(body, "lumMod");
|
|
137
|
+
if (lumModV !== undefined) {
|
|
138
|
+
entry.lumMod = lumModV;
|
|
139
|
+
}
|
|
140
|
+
const lumOffV = parseModAttr(body, "lumOff");
|
|
141
|
+
if (lumOffV !== undefined) {
|
|
142
|
+
entry.lumOff = lumOffV;
|
|
143
|
+
}
|
|
144
|
+
const tintV = parseModAttr(body, "tint");
|
|
145
|
+
if (tintV !== undefined) {
|
|
146
|
+
entry.tint = tintV;
|
|
147
|
+
}
|
|
148
|
+
const shadeV = parseModAttr(body, "shade");
|
|
149
|
+
if (shadeV !== undefined) {
|
|
150
|
+
entry.shade = shadeV;
|
|
151
|
+
}
|
|
152
|
+
const satModV = parseModAttr(body, "satMod");
|
|
153
|
+
if (satModV !== undefined) {
|
|
154
|
+
entry.satMod = satModV;
|
|
155
|
+
}
|
|
156
|
+
const alphaV = parseModAttr(body, "alpha");
|
|
157
|
+
if (alphaV !== undefined) {
|
|
158
|
+
entry.alpha = alphaV;
|
|
159
|
+
}
|
|
160
|
+
// Push even empty variations so the count survives round-trip —
|
|
161
|
+
// Excel uses the presence of a `<cs:variation/>` self-closing tag
|
|
162
|
+
// as a gradient-index placeholder.
|
|
163
|
+
variations.push(entry);
|
|
164
|
+
}
|
|
165
|
+
if (variations.length > 0) {
|
|
166
|
+
result.variations = variations;
|
|
167
|
+
}
|
|
168
|
+
return result;
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Build a `colors{N}.xml` string from a structured ChartColorsModel.
|
|
172
|
+
*
|
|
173
|
+
* Structured data (`colors` / `variations`) takes precedence over `rawXml`.
|
|
174
|
+
* If neither `colors` nor `variations` is present we fall back to `rawXml`
|
|
175
|
+
* (round-trip) or the built-in default palette. Mutations to `variations`
|
|
176
|
+
* alone therefore still take effect without requiring the caller to also
|
|
177
|
+
* populate `colors`.
|
|
178
|
+
*/
|
|
179
|
+
export function buildChartColors(model) {
|
|
180
|
+
const hasColors = !!model.colors && model.colors.length > 0;
|
|
181
|
+
const hasVariations = !!model.variations && model.variations.length > 0;
|
|
182
|
+
if (!hasColors && !hasVariations) {
|
|
183
|
+
return model.rawXml ?? buildDefaultChartColors();
|
|
184
|
+
}
|
|
185
|
+
const parts = [];
|
|
186
|
+
parts.push('<?xml version="1.0" encoding="UTF-8" standalone="yes"?>');
|
|
187
|
+
const attrs = [
|
|
188
|
+
'xmlns:cs="http://schemas.microsoft.com/office/drawing/2012/chartStyle"',
|
|
189
|
+
'xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main"'
|
|
190
|
+
];
|
|
191
|
+
if (model.method !== undefined) {
|
|
192
|
+
attrs.push(`meth="${escapeXmlAttr(model.method)}"`);
|
|
193
|
+
}
|
|
194
|
+
if (model.id !== undefined) {
|
|
195
|
+
attrs.push(`id="${model.id}"`);
|
|
196
|
+
}
|
|
197
|
+
parts.push(`<cs:colorStyle ${attrs.join(" ")}>`);
|
|
198
|
+
if (hasColors) {
|
|
199
|
+
for (const c of model.colors) {
|
|
200
|
+
parts.push(colorEntryToXml(c));
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
if (hasVariations) {
|
|
204
|
+
for (const v of model.variations) {
|
|
205
|
+
parts.push(variationEntryToXml(v));
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
parts.push("</cs:colorStyle>");
|
|
209
|
+
return parts.join("\n");
|
|
210
|
+
}
|
|
211
|
+
// `escapeXmlAttr` is imported from `chart-utils`; it delegates to the
|
|
212
|
+
// canonical `xmlEncodeAttr` from `@xml/encode`. Sidecar output now
|
|
213
|
+
// shares byte-for-byte escaping semantics with the rest of the chart
|
|
214
|
+
// pipeline — previously this module carried a local copy that omitted
|
|
215
|
+
// the CR/LF/Tab → numeric-ref encoding, letting whitespace-laden
|
|
216
|
+
// attribute values lose data on round-trip.
|
|
217
|
+
function variationEntryToXml(v) {
|
|
218
|
+
// Modifier values must be valid `xsd:int` on the wire. Interpolating
|
|
219
|
+
// raw model numbers directly let `NaN` / `Infinity` / unrounded
|
|
220
|
+
// floats through to the attribute, which Excel's strict reader
|
|
221
|
+
// rejects as "invalid xs:int". Guard each slot with
|
|
222
|
+
// `Number.isFinite` + `Math.round` so the sidecar consistently
|
|
223
|
+
// produces well-formed XML even when a public API consumer hands in
|
|
224
|
+
// an out-of-range number.
|
|
225
|
+
const children = [];
|
|
226
|
+
const emitInt = (tag, value) => {
|
|
227
|
+
if (value === undefined || !Number.isFinite(value)) {
|
|
228
|
+
return;
|
|
229
|
+
}
|
|
230
|
+
children.push(`<a:${tag} val="${Math.round(value)}"/>`);
|
|
231
|
+
};
|
|
232
|
+
emitInt("lumMod", v.lumMod);
|
|
233
|
+
emitInt("lumOff", v.lumOff);
|
|
234
|
+
emitInt("tint", v.tint);
|
|
235
|
+
emitInt("shade", v.shade);
|
|
236
|
+
emitInt("satMod", v.satMod);
|
|
237
|
+
emitInt("alpha", v.alpha);
|
|
238
|
+
if (children.length === 0) {
|
|
239
|
+
return " <cs:variation/>";
|
|
240
|
+
}
|
|
241
|
+
return ` <cs:variation>${children.join("")}</cs:variation>`;
|
|
242
|
+
}
|
|
243
|
+
// =============================================================================
|
|
244
|
+
// Default chartStyle / chartColors XML — mirrored byte-for-byte from Microsoft
|
|
245
|
+
// Excel 2021's own `style1.xml` / `colors1.xml` output for a freshly-inserted
|
|
246
|
+
// waterfall chart. See the rationale on `buildChartStyle` /
|
|
247
|
+
// `buildChartColors` for why we embed the full content rather than emitting
|
|
248
|
+
// an id-only stub (Excel 2016+ rejects the stub form and drops the chartEx
|
|
249
|
+
// part + parent drawing with "Removed Part: drawing${N}.xml (Drawing shape)").
|
|
250
|
+
// These constants are the single source of truth for the Office built-in
|
|
251
|
+
// style id=395 + colors id=10 defaults.
|
|
252
|
+
// =============================================================================
|
|
253
|
+
const DEFAULT_CHART_STYLE_XML = '<cs:chartStyle xmlns:cs="http://schemas.microsoft.com/office/drawing/2012/chartStyle" xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" id="395"><cs:axisTitle><cs:lnRef idx="0"/><cs:fillRef idx="0"/><cs:effectRef idx="0"/><cs:fontRef idx="minor"><a:schemeClr val="tx1"><a:lumMod val="65000"/><a:lumOff val="35000"/></a:schemeClr></cs:fontRef><cs:defRPr sz="900"/></cs:axisTitle><cs:categoryAxis><cs:lnRef idx="0"/><cs:fillRef idx="0"/><cs:effectRef idx="0"/><cs:fontRef idx="minor"><a:schemeClr val="tx1"><a:lumMod val="65000"/><a:lumOff val="35000"/></a:schemeClr></cs:fontRef><cs:spPr><a:ln w="9525" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val="tx1"><a:lumMod val="15000"/><a:lumOff val="85000"/></a:schemeClr></a:solidFill><a:round/></a:ln></cs:spPr><cs:defRPr sz="900"/></cs:categoryAxis><cs:chartArea mods="allowNoFillOverride allowNoLineOverride"><cs:lnRef idx="0"/><cs:fillRef idx="0"/><cs:effectRef idx="0"/><cs:fontRef idx="minor"><a:schemeClr val="tx1"/></cs:fontRef><cs:spPr><a:solidFill><a:schemeClr val="bg1"/></a:solidFill><a:ln w="9525" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val="tx1"><a:lumMod val="15000"/><a:lumOff val="85000"/></a:schemeClr></a:solidFill><a:round/></a:ln></cs:spPr><cs:defRPr sz="1000"/></cs:chartArea><cs:dataLabel><cs:lnRef idx="0"/><cs:fillRef idx="0"/><cs:effectRef idx="0"/><cs:fontRef idx="minor"><a:schemeClr val="tx1"><a:lumMod val="65000"/><a:lumOff val="35000"/></a:schemeClr></cs:fontRef><cs:defRPr sz="900"/></cs:dataLabel><cs:dataLabelCallout><cs:lnRef idx="0"/><cs:fillRef idx="0"/><cs:effectRef idx="0"/><cs:fontRef idx="minor"><a:schemeClr val="dk1"><a:lumMod val="65000"/><a:lumOff val="35000"/></a:schemeClr></cs:fontRef><cs:spPr><a:solidFill><a:schemeClr val="lt1"/></a:solidFill><a:ln><a:solidFill><a:schemeClr val="dk1"><a:lumMod val="25000"/><a:lumOff val="75000"/></a:schemeClr></a:solidFill></a:ln></cs:spPr><cs:defRPr sz="900"/><cs:bodyPr rot="0" spcFirstLastPara="1" vertOverflow="clip" horzOverflow="clip" vert="horz" wrap="square" lIns="36576" tIns="18288" rIns="36576" bIns="18288" anchor="ctr" anchorCtr="1"><a:spAutoFit/></cs:bodyPr></cs:dataLabelCallout><cs:dataPoint><cs:lnRef idx="0"/><cs:fillRef idx="0"><cs:styleClr val="auto"/></cs:fillRef><cs:effectRef idx="0"/><cs:fontRef idx="minor"><a:schemeClr val="tx1"/></cs:fontRef><cs:spPr><a:solidFill><a:schemeClr val="phClr"/></a:solidFill></cs:spPr></cs:dataPoint><cs:dataPoint3D><cs:lnRef idx="0"/><cs:fillRef idx="0"><cs:styleClr val="auto"/></cs:fillRef><cs:effectRef idx="0"/><cs:fontRef idx="minor"><a:schemeClr val="tx1"/></cs:fontRef><cs:spPr><a:solidFill><a:schemeClr val="phClr"/></a:solidFill></cs:spPr></cs:dataPoint3D><cs:dataPointLine><cs:lnRef idx="0"><cs:styleClr val="auto"/></cs:lnRef><cs:fillRef idx="0"/><cs:effectRef idx="0"/><cs:fontRef idx="minor"><a:schemeClr val="tx1"/></cs:fontRef><cs:spPr><a:ln w="28575" cap="rnd"><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:round/></a:ln></cs:spPr></cs:dataPointLine><cs:dataPointMarker><cs:lnRef idx="0"/><cs:fillRef idx="0"><cs:styleClr val="auto"/></cs:fillRef><cs:effectRef idx="0"/><cs:fontRef idx="minor"><a:schemeClr val="tx1"/></cs:fontRef><cs:spPr><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:ln w="9525"><a:solidFill><a:schemeClr val="lt1"/></a:solidFill></a:ln></cs:spPr></cs:dataPointMarker><cs:dataPointMarkerLayout symbol="circle" size="5"/><cs:dataPointWireframe><cs:lnRef idx="0"><cs:styleClr val="auto"/></cs:lnRef><cs:fillRef idx="0"/><cs:effectRef idx="0"/><cs:fontRef idx="minor"><a:schemeClr val="tx1"/></cs:fontRef><cs:spPr><a:ln w="28575" cap="rnd"><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:round/></a:ln></cs:spPr></cs:dataPointWireframe><cs:dataTable><cs:lnRef idx="0"/><cs:fillRef idx="0"/><cs:effectRef idx="0"/><cs:fontRef idx="minor"><a:schemeClr val="tx1"><a:lumMod val="65000"/><a:lumOff val="35000"/></a:schemeClr></cs:fontRef><cs:spPr><a:ln w="9525"><a:solidFill><a:schemeClr val="tx1"><a:lumMod val="15000"/><a:lumOff val="85000"/></a:schemeClr></a:solidFill></a:ln></cs:spPr><cs:defRPr sz="900"/></cs:dataTable><cs:downBar><cs:lnRef idx="0"/><cs:fillRef idx="0"/><cs:effectRef idx="0"/><cs:fontRef idx="minor"><a:schemeClr val="dk1"/></cs:fontRef><cs:spPr><a:solidFill><a:schemeClr val="dk1"><a:lumMod val="65000"/><a:lumOff val="35000"/></a:schemeClr></a:solidFill><a:ln w="9525"><a:solidFill><a:schemeClr val="tx1"><a:lumMod val="65000"/><a:lumOff val="35000"/></a:schemeClr></a:solidFill></a:ln></cs:spPr></cs:downBar><cs:dropLine><cs:lnRef idx="0"/><cs:fillRef idx="0"/><cs:effectRef idx="0"/><cs:fontRef idx="minor"><a:schemeClr val="tx1"/></cs:fontRef><cs:spPr><a:ln w="9525" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val="tx1"><a:lumMod val="35000"/><a:lumOff val="65000"/></a:schemeClr></a:solidFill><a:round/></a:ln></cs:spPr></cs:dropLine><cs:errorBar><cs:lnRef idx="0"/><cs:fillRef idx="0"/><cs:effectRef idx="0"/><cs:fontRef idx="minor"><a:schemeClr val="tx1"/></cs:fontRef><cs:spPr><a:ln w="9525" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val="tx1"><a:lumMod val="65000"/><a:lumOff val="35000"/></a:schemeClr></a:solidFill><a:round/></a:ln></cs:spPr></cs:errorBar><cs:floor><cs:lnRef idx="0"/><cs:fillRef idx="0"/><cs:effectRef idx="0"/><cs:fontRef idx="minor"><a:schemeClr val="tx1"/></cs:fontRef></cs:floor><cs:gridlineMajor><cs:lnRef idx="0"/><cs:fillRef idx="0"/><cs:effectRef idx="0"/><cs:fontRef idx="minor"><a:schemeClr val="tx1"/></cs:fontRef><cs:spPr><a:ln w="9525" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val="tx1"><a:lumMod val="15000"/><a:lumOff val="85000"/></a:schemeClr></a:solidFill><a:round/></a:ln></cs:spPr></cs:gridlineMajor><cs:gridlineMinor><cs:lnRef idx="0"/><cs:fillRef idx="0"/><cs:effectRef idx="0"/><cs:fontRef idx="minor"><a:schemeClr val="tx1"/></cs:fontRef><cs:spPr><a:ln w="9525" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val="tx1"><a:lumMod val="15000"/><a:lumOff val="85000"/></a:schemeClr></a:solidFill><a:round/></a:ln></cs:spPr></cs:gridlineMinor><cs:hiLoLine><cs:lnRef idx="0"/><cs:fillRef idx="0"/><cs:effectRef idx="0"/><cs:fontRef idx="minor"><a:schemeClr val="tx1"/></cs:fontRef><cs:spPr><a:ln w="9525" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val="tx1"><a:lumMod val="75000"/><a:lumOff val="25000"/></a:schemeClr></a:solidFill><a:round/></a:ln></cs:spPr></cs:hiLoLine><cs:leaderLine><cs:lnRef idx="0"/><cs:fillRef idx="0"/><cs:effectRef idx="0"/><cs:fontRef idx="minor"><a:schemeClr val="tx1"/></cs:fontRef><cs:spPr><a:ln w="9525" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val="tx1"><a:lumMod val="35000"/><a:lumOff val="65000"/></a:schemeClr></a:solidFill><a:round/></a:ln></cs:spPr></cs:leaderLine><cs:legend><cs:lnRef idx="0"/><cs:fillRef idx="0"/><cs:effectRef idx="0"/><cs:fontRef idx="minor"><a:schemeClr val="tx1"><a:lumMod val="65000"/><a:lumOff val="35000"/></a:schemeClr></cs:fontRef><cs:defRPr sz="900"/></cs:legend><cs:plotArea mods="allowNoFillOverride allowNoLineOverride"><cs:lnRef idx="0"/><cs:fillRef idx="0"/><cs:effectRef idx="0"/><cs:fontRef idx="minor"><a:schemeClr val="tx1"/></cs:fontRef></cs:plotArea><cs:plotArea3D mods="allowNoFillOverride allowNoLineOverride"><cs:lnRef idx="0"/><cs:fillRef idx="0"/><cs:effectRef idx="0"/><cs:fontRef idx="minor"><a:schemeClr val="tx1"/></cs:fontRef></cs:plotArea3D><cs:seriesAxis><cs:lnRef idx="0"/><cs:fillRef idx="0"/><cs:effectRef idx="0"/><cs:fontRef idx="minor"><a:schemeClr val="tx1"><a:lumMod val="65000"/><a:lumOff val="35000"/></a:schemeClr></cs:fontRef><cs:spPr><a:ln w="9525" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val="tx1"><a:lumMod val="15000"/><a:lumOff val="85000"/></a:schemeClr></a:solidFill><a:round/></a:ln></cs:spPr><cs:defRPr sz="900"/></cs:seriesAxis><cs:seriesLine><cs:lnRef idx="0"/><cs:fillRef idx="0"/><cs:effectRef idx="0"/><cs:fontRef idx="minor"><a:schemeClr val="tx1"/></cs:fontRef><cs:spPr><a:ln w="9525" cap="flat"><a:solidFill><a:srgbClr val="D9D9D9"/></a:solidFill><a:round/></a:ln></cs:spPr></cs:seriesLine><cs:title><cs:lnRef idx="0"/><cs:fillRef idx="0"/><cs:effectRef idx="0"/><cs:fontRef idx="minor"><a:schemeClr val="tx1"><a:lumMod val="65000"/><a:lumOff val="35000"/></a:schemeClr></cs:fontRef><cs:defRPr sz="1400"/></cs:title><cs:trendline><cs:lnRef idx="0"><cs:styleClr val="auto"/></cs:lnRef><cs:fillRef idx="0"/><cs:effectRef idx="0"/><cs:fontRef idx="minor"><a:schemeClr val="tx1"/></cs:fontRef><cs:spPr><a:ln w="19050" cap="rnd"><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:prstDash val="sysDash"/></a:ln></cs:spPr></cs:trendline><cs:trendlineLabel><cs:lnRef idx="0"/><cs:fillRef idx="0"/><cs:effectRef idx="0"/><cs:fontRef idx="minor"><a:schemeClr val="tx1"><a:lumMod val="65000"/><a:lumOff val="35000"/></a:schemeClr></cs:fontRef><cs:defRPr sz="900"/></cs:trendlineLabel><cs:upBar><cs:lnRef idx="0"/><cs:fillRef idx="0"/><cs:effectRef idx="0"/><cs:fontRef idx="minor"><a:schemeClr val="dk1"/></cs:fontRef><cs:spPr><a:solidFill><a:schemeClr val="lt1"/></a:solidFill><a:ln w="9525"><a:solidFill><a:schemeClr val="tx1"><a:lumMod val="15000"/><a:lumOff val="85000"/></a:schemeClr></a:solidFill></a:ln></cs:spPr></cs:upBar><cs:valueAxis><cs:lnRef idx="0"/><cs:fillRef idx="0"/><cs:effectRef idx="0"/><cs:fontRef idx="minor"><a:schemeClr val="tx1"><a:lumMod val="65000"/><a:lumOff val="35000"/></a:schemeClr></cs:fontRef><cs:defRPr sz="900"/></cs:valueAxis><cs:wall><cs:lnRef idx="0"/><cs:fillRef idx="0"/><cs:effectRef idx="0"/><cs:fontRef idx="minor"><a:schemeClr val="tx1"/></cs:fontRef></cs:wall></cs:chartStyle>';
|
|
254
|
+
const DEFAULT_CHART_COLORS_XML = '<cs:colorStyle xmlns:cs="http://schemas.microsoft.com/office/drawing/2012/chartStyle" xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" meth="cycle" id="10"><a:schemeClr val="accent1"/><a:schemeClr val="accent2"/><a:schemeClr val="accent3"/><a:schemeClr val="accent4"/><a:schemeClr val="accent5"/><a:schemeClr val="accent6"/><cs:variation/><cs:variation><a:lumMod val="60000"/></cs:variation><cs:variation><a:lumMod val="80000"/><a:lumOff val="20000"/></cs:variation><cs:variation><a:lumMod val="80000"/></cs:variation><cs:variation><a:lumMod val="60000"/><a:lumOff val="40000"/></cs:variation><cs:variation><a:lumMod val="50000"/></cs:variation><cs:variation><a:lumMod val="70000"/><a:lumOff val="30000"/></cs:variation><cs:variation><a:lumMod val="70000"/></cs:variation><cs:variation><a:lumMod val="50000"/><a:lumOff val="50000"/></cs:variation></cs:colorStyle>';
|
|
255
|
+
export function buildChartStyle(model) {
|
|
256
|
+
// Prefer raw XML for byte-preserving round-trip of files that
|
|
257
|
+
// haven't been mutated. Callers who want their `elements`
|
|
258
|
+
// modifications to take effect drop `rawXml` first (the same
|
|
259
|
+
// convention as `renderChartEx`).
|
|
260
|
+
if (model.rawXml) {
|
|
261
|
+
return model.rawXml;
|
|
262
|
+
}
|
|
263
|
+
const id = model.id ?? 395;
|
|
264
|
+
// Always emit the full Microsoft Excel default `<cs:chartStyle>`
|
|
265
|
+
// template with the caller's requested `id`. Partial element
|
|
266
|
+
// overrides declared via `ChartStyleModel.elements` are NOT safe
|
|
267
|
+
// to splice onto the template: the public `ChartStyleElement` type
|
|
268
|
+
// only exposes the four `*RefIdx` slots + a handful of raw-string
|
|
269
|
+
// escape hatches, so a merged element inevitably misses the
|
|
270
|
+
// `<cs:spPr>`, `<cs:defRPr>`, and fully-specified `<cs:fontRef>`
|
|
271
|
+
// children that Excel's `CT_StyleEntry` treats as required. The
|
|
272
|
+
// result (verified against Excel 2021 via
|
|
273
|
+
// `tmp/reference-styled.xlsx` vs the library's previous output)
|
|
274
|
+
// is a schema-shaped sidecar that Excel's strict loader still
|
|
275
|
+
// drops with "Removed Part: /xl/drawings/drawingN.xml part.
|
|
276
|
+
// (Drawing shape)".
|
|
277
|
+
//
|
|
278
|
+
// Authors who need genuine style customisation should:
|
|
279
|
+
// 1. Pre-build the sidecar XML themselves and pass it via
|
|
280
|
+
// `rawXml` (honoured by the early return above), OR
|
|
281
|
+
// 2. Call `setBuiltInStyle(N)` on the chart instead — the
|
|
282
|
+
// classic `<c:style val="N"/>` element is schema-legal
|
|
283
|
+
// standalone and doesn't require a sidecar.
|
|
284
|
+
//
|
|
285
|
+
// Dropping `elements` silently would be a bigger regression, so
|
|
286
|
+
// log a one-time warning in non-production builds when an author
|
|
287
|
+
// passes partial elements we're about to discard.
|
|
288
|
+
if (model.elements &&
|
|
289
|
+
Object.keys(model.elements).length > 0 &&
|
|
290
|
+
typeof process !== "undefined" &&
|
|
291
|
+
process.env?.NODE_ENV !== "production") {
|
|
292
|
+
console.warn("[excelts] buildChartStyle: `model.elements` overrides are not yet supported — " +
|
|
293
|
+
"the default Excel style template will be emitted (customisation ignored). " +
|
|
294
|
+
"Pass a pre-built sidecar via `rawXml` if you need genuine overrides.");
|
|
295
|
+
}
|
|
296
|
+
return `<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n${DEFAULT_CHART_STYLE_XML.replace(/id="\d+"/, `id="${id}"`)}`;
|
|
297
|
+
}
|
|
298
|
+
function colorEntryToXml(c) {
|
|
299
|
+
// Same guard rationale as `variationEntryToXml` — reject non-finite
|
|
300
|
+
// modifier values so the serialiser can never produce
|
|
301
|
+
// `<a:tint val="NaN"/>` etc.
|
|
302
|
+
const mods = [];
|
|
303
|
+
const emitInt = (tag, value) => {
|
|
304
|
+
if (value === undefined || !Number.isFinite(value)) {
|
|
305
|
+
return;
|
|
306
|
+
}
|
|
307
|
+
mods.push(`<a:${tag} val="${Math.round(value)}"/>`);
|
|
308
|
+
};
|
|
309
|
+
emitInt("lumMod", c.lumMod);
|
|
310
|
+
emitInt("lumOff", c.lumOff);
|
|
311
|
+
emitInt("tint", c.tint);
|
|
312
|
+
emitInt("shade", c.shade);
|
|
313
|
+
emitInt("satMod", c.satMod);
|
|
314
|
+
emitInt("alpha", c.alpha);
|
|
315
|
+
let tag;
|
|
316
|
+
let val;
|
|
317
|
+
if (c.theme) {
|
|
318
|
+
tag = "a:schemeClr";
|
|
319
|
+
// Theme / srgb tokens live in attribute context — escape in case
|
|
320
|
+
// a consumer passes an unvalidated string. `escapeXmlAttr`
|
|
321
|
+
// strips illegal XML chars and encodes reserved entities.
|
|
322
|
+
val = escapeXmlAttr(c.theme);
|
|
323
|
+
}
|
|
324
|
+
else if (c.srgb) {
|
|
325
|
+
tag = "a:srgbClr";
|
|
326
|
+
val = escapeXmlAttr(c.srgb);
|
|
327
|
+
}
|
|
328
|
+
else {
|
|
329
|
+
return "";
|
|
330
|
+
}
|
|
331
|
+
if (mods.length === 0) {
|
|
332
|
+
return ` <${tag} val="${val}"/>`;
|
|
333
|
+
}
|
|
334
|
+
return ` <${tag} val="${val}">${mods.join("")}</${tag}>`;
|
|
335
|
+
}
|
|
336
|
+
function buildDefaultChartColors() {
|
|
337
|
+
// Excel 2016+ REJECTS stub `colorStyle` files that list only the
|
|
338
|
+
// 6 accent `schemeClr` entries without the 9 follow-on `variation`
|
|
339
|
+
// siblings — the chartEx is silently dropped along with its parent
|
|
340
|
+
// drawing ("Removed Part: drawingN.xml (Drawing shape)"). Emit the
|
|
341
|
+
// full Microsoft-authored default (id=10, 6 accents + 9 variations)
|
|
342
|
+
// byte-for-byte; the template is mirrored from Excel 2021's own
|
|
343
|
+
// `colors1.xml` output for a freshly-inserted chartEx. See the
|
|
344
|
+
// matching rationale on `DEFAULT_CHART_STYLE_XML`.
|
|
345
|
+
return `<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n${DEFAULT_CHART_COLORS_XML}`;
|
|
346
|
+
}
|
|
347
|
+
/**
|
|
348
|
+
* Parse a `styles{N}.xml` file to extract the style ID.
|
|
349
|
+
*/
|
|
350
|
+
export function parseChartStyle(rawXml) {
|
|
351
|
+
const result = { rawXml };
|
|
352
|
+
const idVal = extractAttr(rawXml, "cs:chartStyle", "id");
|
|
353
|
+
if (idVal) {
|
|
354
|
+
result.id = parseInt(idVal, 10);
|
|
355
|
+
}
|
|
356
|
+
// Walk every top-level `<cs:…>` child of `<cs:chartStyle>` and
|
|
357
|
+
// capture it as a {@link ChartStyleElement}. The structured slots
|
|
358
|
+
// (`lnRefIdx`, `fillRefIdx`, `effectRefIdx`, `fontRefIdx`) are
|
|
359
|
+
// extracted directly; `spPr`, `defRPr`, `bodyPr`, `fontRef` inner
|
|
360
|
+
// XML are held verbatim so the DrawingML sub-tree round-trips
|
|
361
|
+
// without this module enumerating every child type.
|
|
362
|
+
const elements = {};
|
|
363
|
+
// Strip the outer <cs:chartStyle> wrapper so the outer regex doesn't
|
|
364
|
+
// match itself.
|
|
365
|
+
const outerOpen = /<cs:chartStyle\b[^>]*>/.exec(rawXml);
|
|
366
|
+
const outerClose = rawXml.lastIndexOf("</cs:chartStyle>");
|
|
367
|
+
if (outerOpen && outerClose >= 0) {
|
|
368
|
+
const body = rawXml.slice(outerOpen.index + outerOpen[0].length, outerClose);
|
|
369
|
+
// Match either <cs:name …/> self-closing or <cs:name …>…</cs:name>.
|
|
370
|
+
const childRe = /<cs:([A-Za-z][A-Za-z0-9]*)\b([^>]*?)(?:\/>|>([\s\S]*?)<\/cs:\1>)/g;
|
|
371
|
+
let m;
|
|
372
|
+
while ((m = childRe.exec(body)) !== null) {
|
|
373
|
+
const name = m[1];
|
|
374
|
+
const attrStr = m[2];
|
|
375
|
+
const inner = m[3] ?? "";
|
|
376
|
+
const entry = {};
|
|
377
|
+
const lnRef = /<cs:lnRef\b[^>]*\bidx="(\d+)"/.exec(inner);
|
|
378
|
+
if (lnRef) {
|
|
379
|
+
entry.lnRefIdx = parseInt(lnRef[1], 10);
|
|
380
|
+
}
|
|
381
|
+
const fillRef = /<cs:fillRef\b[^>]*\bidx="(\d+)"/.exec(inner);
|
|
382
|
+
if (fillRef) {
|
|
383
|
+
entry.fillRefIdx = parseInt(fillRef[1], 10);
|
|
384
|
+
}
|
|
385
|
+
const effectRef = /<cs:effectRef\b[^>]*\bidx="(\d+)"/.exec(inner);
|
|
386
|
+
if (effectRef) {
|
|
387
|
+
entry.effectRefIdx = parseInt(effectRef[1], 10);
|
|
388
|
+
}
|
|
389
|
+
const fontRefMatch = /<cs:fontRef\b[^>]*\bidx="([^"]+)"[^>]*(?:\/>|>([\s\S]*?)<\/cs:fontRef>)/.exec(inner);
|
|
390
|
+
if (fontRefMatch) {
|
|
391
|
+
const idxVal = fontRefMatch[1];
|
|
392
|
+
if (idxVal === "minor" || idxVal === "major" || idxVal === "none") {
|
|
393
|
+
entry.fontRefIdx = idxVal;
|
|
394
|
+
}
|
|
395
|
+
if (fontRefMatch[2] !== undefined) {
|
|
396
|
+
entry.fontRefBody = fontRefMatch[2];
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
const spPr = /<cs:spPr\b[^>]*>[\s\S]*?<\/cs:spPr>|<cs:spPr\b[^>]*\/>/.exec(inner);
|
|
400
|
+
if (spPr) {
|
|
401
|
+
entry.spPrXml = spPr[0];
|
|
402
|
+
}
|
|
403
|
+
const defRPr = /<cs:defRPr\b[^>]*(?:\/>|>[\s\S]*?<\/cs:defRPr>)/.exec(inner);
|
|
404
|
+
if (defRPr) {
|
|
405
|
+
entry.defRPrXml = defRPr[0];
|
|
406
|
+
}
|
|
407
|
+
const bodyPr = /<cs:bodyPr\b[^>]*(?:\/>|>[\s\S]*?<\/cs:bodyPr>)/.exec(inner);
|
|
408
|
+
if (bodyPr) {
|
|
409
|
+
entry.bodyPrXml = bodyPr[0];
|
|
410
|
+
}
|
|
411
|
+
const attrs = {};
|
|
412
|
+
const attrRe = /\b([A-Za-z][A-Za-z0-9:_-]*)\s*=\s*"([^"]*)"/g;
|
|
413
|
+
let am;
|
|
414
|
+
while ((am = attrRe.exec(attrStr)) !== null) {
|
|
415
|
+
attrs[am[1]] = am[2];
|
|
416
|
+
}
|
|
417
|
+
if (Object.keys(attrs).length > 0) {
|
|
418
|
+
entry.attributes = attrs;
|
|
419
|
+
}
|
|
420
|
+
elements[name] = entry;
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
if (Object.keys(elements).length > 0) {
|
|
424
|
+
result.elements = elements;
|
|
425
|
+
}
|
|
426
|
+
return result;
|
|
427
|
+
}
|