@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,225 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GraphicFrameXform — handles `xdr:graphicFrame` elements in drawing XML.
|
|
3
|
+
*
|
|
4
|
+
* A graphicFrame is the container for embedded objects such as charts.
|
|
5
|
+
* The OOXML structure:
|
|
6
|
+
*
|
|
7
|
+
* <xdr:graphicFrame macro="">
|
|
8
|
+
* <xdr:nvGraphicFramePr>
|
|
9
|
+
* <xdr:cNvPr id="2" name="Chart 1"/>
|
|
10
|
+
* <xdr:cNvGraphicFramePr/>
|
|
11
|
+
* </xdr:nvGraphicFramePr>
|
|
12
|
+
* <xdr:xfrm>
|
|
13
|
+
* <a:off x="0" y="0"/>
|
|
14
|
+
* <a:ext cx="0" cy="0"/>
|
|
15
|
+
* </xdr:xfrm>
|
|
16
|
+
* <a:graphic>
|
|
17
|
+
* <a:graphicData uri="http://schemas.openxmlformats.org/drawingml/2006/chart">
|
|
18
|
+
* <c:chart xmlns:c="..." xmlns:r="..." r:id="rId1"/>
|
|
19
|
+
* </a:graphicData>
|
|
20
|
+
* </a:graphic>
|
|
21
|
+
* </xdr:graphicFrame>
|
|
22
|
+
*/
|
|
23
|
+
import { BaseXform } from "../base-xform.js";
|
|
24
|
+
import { uuidV4 } from "../../../../../utils/uuid.js";
|
|
25
|
+
const CHART_URI = "http://schemas.openxmlformats.org/drawingml/2006/chart";
|
|
26
|
+
const CHART_EX_URI = "http://schemas.microsoft.com/office/drawing/2014/chartex";
|
|
27
|
+
// URI identifying the Office `creationId` extension registered on
|
|
28
|
+
// `xdr:cNvPr`. This GUID is the Microsoft-assigned registry value
|
|
29
|
+
// for the extension — every Office-authored drawing carries the
|
|
30
|
+
// same uri on this element.
|
|
31
|
+
const CREATION_ID_EXT_URI = "{FF2B5EF4-FFF2-40B4-BE49-F238E27FC236}";
|
|
32
|
+
class GraphicFrameXform extends BaseXform {
|
|
33
|
+
constructor() {
|
|
34
|
+
super(...arguments);
|
|
35
|
+
// SAX parse state
|
|
36
|
+
this._inNvPr = false;
|
|
37
|
+
this._inGraphicData = false;
|
|
38
|
+
/** Raw XML capture for a:extLst inside xdr:cNvPr */
|
|
39
|
+
this._extLstCapture = null;
|
|
40
|
+
}
|
|
41
|
+
get tag() {
|
|
42
|
+
return "xdr:graphicFrame";
|
|
43
|
+
}
|
|
44
|
+
prepare(model, options) {
|
|
45
|
+
if (model.index === undefined) {
|
|
46
|
+
model.index = options.index + 1;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
render(xmlStream, model) {
|
|
50
|
+
xmlStream.openNode(this.tag, { macro: "" });
|
|
51
|
+
// Non-visual properties
|
|
52
|
+
xmlStream.openNode("xdr:nvGraphicFramePr");
|
|
53
|
+
// Microsoft Excel starts `xdr:cNvPr/@id` at 2 (id 1 is
|
|
54
|
+
// reserved for the anchor's own non-visual drawing id slot
|
|
55
|
+
// internal to Office's drawing engine). Mirror the convention
|
|
56
|
+
// here so freshly-authored drawings round-trip byte-for-byte
|
|
57
|
+
// against Excel's output. Loaded files retain whatever id they
|
|
58
|
+
// carried at parse time via `model.index`.
|
|
59
|
+
const cNvPrId = model.index ?? 2;
|
|
60
|
+
const cNvPrName = model.name ?? `Chart ${cNvPrId}`;
|
|
61
|
+
if (model.cNvPrExtLst) {
|
|
62
|
+
xmlStream.openNode("xdr:cNvPr", {
|
|
63
|
+
id: cNvPrId,
|
|
64
|
+
name: cNvPrName
|
|
65
|
+
});
|
|
66
|
+
xmlStream.writeRaw(model.cNvPrExtLst);
|
|
67
|
+
xmlStream.closeNode(); // xdr:cNvPr
|
|
68
|
+
}
|
|
69
|
+
else if (model.isChartEx) {
|
|
70
|
+
// ChartEx drawings — auto-generate Microsoft's standard
|
|
71
|
+
// `<a:extLst>` with an `<a16:creationId>` extension so
|
|
72
|
+
// Excel 2019+ can track the drawing across sessions.
|
|
73
|
+
// Without this extension, strict Excel builds have been
|
|
74
|
+
// observed to reject the drawing part on load with
|
|
75
|
+
// "Removed Part: /xl/drawings/drawingN.xml (Drawing shape)"
|
|
76
|
+
// even when the chartEx reference inside is otherwise
|
|
77
|
+
// valid. A random UUID suffices — the id only has to be
|
|
78
|
+
// stable within a given saved file; it isn't a content
|
|
79
|
+
// address.
|
|
80
|
+
xmlStream.openNode("xdr:cNvPr", {
|
|
81
|
+
id: cNvPrId,
|
|
82
|
+
name: cNvPrName
|
|
83
|
+
});
|
|
84
|
+
xmlStream.openNode("a:extLst");
|
|
85
|
+
xmlStream.openNode("a:ext", { uri: CREATION_ID_EXT_URI });
|
|
86
|
+
xmlStream.leafNode("a16:creationId", {
|
|
87
|
+
"xmlns:a16": "http://schemas.microsoft.com/office/drawing/2014/main",
|
|
88
|
+
id: `{${uuidV4().toUpperCase()}}`
|
|
89
|
+
});
|
|
90
|
+
xmlStream.closeNode(); // a:ext
|
|
91
|
+
xmlStream.closeNode(); // a:extLst
|
|
92
|
+
xmlStream.closeNode(); // xdr:cNvPr
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
xmlStream.leafNode("xdr:cNvPr", {
|
|
96
|
+
id: cNvPrId,
|
|
97
|
+
name: cNvPrName
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
xmlStream.leafNode("xdr:cNvGraphicFramePr");
|
|
101
|
+
xmlStream.closeNode(); // xdr:nvGraphicFramePr
|
|
102
|
+
// Transform (position/size handled by anchor, so use zeros)
|
|
103
|
+
xmlStream.openNode("xdr:xfrm");
|
|
104
|
+
xmlStream.leafNode("a:off", { x: 0, y: 0 });
|
|
105
|
+
xmlStream.leafNode("a:ext", { cx: 0, cy: 0 });
|
|
106
|
+
xmlStream.closeNode(); // xdr:xfrm
|
|
107
|
+
// Graphic
|
|
108
|
+
xmlStream.openNode("a:graphic");
|
|
109
|
+
if (model.isChartEx) {
|
|
110
|
+
xmlStream.openNode("a:graphicData", { uri: CHART_EX_URI });
|
|
111
|
+
xmlStream.leafNode("cx:chart", {
|
|
112
|
+
"xmlns:cx": CHART_EX_URI,
|
|
113
|
+
"xmlns:r": "http://schemas.openxmlformats.org/officeDocument/2006/relationships",
|
|
114
|
+
"r:id": model.rId
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
xmlStream.openNode("a:graphicData", {
|
|
119
|
+
uri: model.graphicDataUri ?? CHART_URI
|
|
120
|
+
});
|
|
121
|
+
xmlStream.leafNode("c:chart", {
|
|
122
|
+
"xmlns:c": "http://schemas.openxmlformats.org/drawingml/2006/chart",
|
|
123
|
+
"xmlns:r": "http://schemas.openxmlformats.org/officeDocument/2006/relationships",
|
|
124
|
+
"r:id": model.rId
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
xmlStream.closeNode(); // a:graphicData
|
|
128
|
+
xmlStream.closeNode(); // a:graphic
|
|
129
|
+
xmlStream.closeNode(); // xdr:graphicFrame
|
|
130
|
+
}
|
|
131
|
+
parseOpen(node) {
|
|
132
|
+
// Raw XML capture mode for extLst
|
|
133
|
+
if (this._extLstCapture) {
|
|
134
|
+
const attrs = Object.entries(node.attributes || {})
|
|
135
|
+
.map(([k, v]) => ` ${k}="${v}"`)
|
|
136
|
+
.join("");
|
|
137
|
+
if (node.isSelfClosing) {
|
|
138
|
+
this._extLstCapture.parts.push(`<${node.name}${attrs}/>`);
|
|
139
|
+
this._extLstCapture.skipNextClose = true;
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
this._extLstCapture.parts.push(`<${node.name}${attrs}>`);
|
|
143
|
+
this._extLstCapture.depth++;
|
|
144
|
+
}
|
|
145
|
+
return true;
|
|
146
|
+
}
|
|
147
|
+
switch (node.name) {
|
|
148
|
+
case this.tag:
|
|
149
|
+
this.reset();
|
|
150
|
+
this.model = {};
|
|
151
|
+
this._extLstCapture = null;
|
|
152
|
+
break;
|
|
153
|
+
case "xdr:cNvPr":
|
|
154
|
+
this._inNvPr = true;
|
|
155
|
+
this.model.index = parseInt(node.attributes.id, 10) || undefined;
|
|
156
|
+
this.model.name = node.attributes.name;
|
|
157
|
+
break;
|
|
158
|
+
case "a:extLst":
|
|
159
|
+
if (this._inNvPr) {
|
|
160
|
+
// Start capturing raw XML
|
|
161
|
+
const attrs = Object.entries(node.attributes || {})
|
|
162
|
+
.map(([k, v]) => ` ${k}="${v}"`)
|
|
163
|
+
.join("");
|
|
164
|
+
this._extLstCapture = {
|
|
165
|
+
depth: 1,
|
|
166
|
+
parts: [`<a:extLst${attrs}>`],
|
|
167
|
+
skipNextClose: false
|
|
168
|
+
};
|
|
169
|
+
return true;
|
|
170
|
+
}
|
|
171
|
+
break;
|
|
172
|
+
case "a:graphicData":
|
|
173
|
+
this._inGraphicData = true;
|
|
174
|
+
this.model.graphicDataUri = node.attributes.uri;
|
|
175
|
+
break;
|
|
176
|
+
case "c:chart":
|
|
177
|
+
if (this._inGraphicData) {
|
|
178
|
+
this.model.rId = node.attributes["r:id"];
|
|
179
|
+
}
|
|
180
|
+
break;
|
|
181
|
+
case "cx:chart":
|
|
182
|
+
if (this._inGraphicData) {
|
|
183
|
+
this.model.rId = node.attributes["r:id"];
|
|
184
|
+
this.model.isChartEx = true;
|
|
185
|
+
}
|
|
186
|
+
break;
|
|
187
|
+
default:
|
|
188
|
+
break;
|
|
189
|
+
}
|
|
190
|
+
return true;
|
|
191
|
+
}
|
|
192
|
+
parseText(text) {
|
|
193
|
+
if (this._extLstCapture && text) {
|
|
194
|
+
this._extLstCapture.parts.push(text);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
parseClose(name) {
|
|
198
|
+
if (this._extLstCapture) {
|
|
199
|
+
if (this._extLstCapture.skipNextClose) {
|
|
200
|
+
this._extLstCapture.skipNextClose = false;
|
|
201
|
+
return true;
|
|
202
|
+
}
|
|
203
|
+
this._extLstCapture.parts.push(`</${name}>`);
|
|
204
|
+
this._extLstCapture.depth--;
|
|
205
|
+
if (this._extLstCapture.depth === 0) {
|
|
206
|
+
this.model.cNvPrExtLst = this._extLstCapture.parts.join("");
|
|
207
|
+
this._extLstCapture = null;
|
|
208
|
+
}
|
|
209
|
+
return true;
|
|
210
|
+
}
|
|
211
|
+
switch (name) {
|
|
212
|
+
case this.tag:
|
|
213
|
+
return false;
|
|
214
|
+
case "xdr:cNvPr":
|
|
215
|
+
this._inNvPr = false;
|
|
216
|
+
return true;
|
|
217
|
+
case "a:graphicData":
|
|
218
|
+
this._inGraphicData = false;
|
|
219
|
+
return true;
|
|
220
|
+
default:
|
|
221
|
+
return true;
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
export { GraphicFrameXform };
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { BaseCellAnchorXform } from "./base-cell-anchor-xform.js";
|
|
2
2
|
import { CellPositionXform } from "./cell-position-xform.js";
|
|
3
3
|
import { ExtXform } from "./ext-xform.js";
|
|
4
|
+
import { GraphicFrameXform } from "./graphic-frame-xform.js";
|
|
4
5
|
import { PicXform } from "./pic-xform.js";
|
|
5
6
|
import { StaticXform } from "../static-xform.js";
|
|
6
7
|
class OneCellAnchorXform extends BaseCellAnchorXform {
|
|
@@ -10,6 +11,7 @@ class OneCellAnchorXform extends BaseCellAnchorXform {
|
|
|
10
11
|
"xdr:from": new CellPositionXform({ tag: "xdr:from" }),
|
|
11
12
|
"xdr:ext": new ExtXform({ tag: "xdr:ext" }),
|
|
12
13
|
"xdr:pic": new PicXform(),
|
|
14
|
+
"xdr:graphicFrame": new GraphicFrameXform(),
|
|
13
15
|
"xdr:clientData": new StaticXform({ tag: "xdr:clientData" })
|
|
14
16
|
};
|
|
15
17
|
}
|
|
@@ -17,13 +19,23 @@ class OneCellAnchorXform extends BaseCellAnchorXform {
|
|
|
17
19
|
return "xdr:oneCellAnchor";
|
|
18
20
|
}
|
|
19
21
|
prepare(model, options) {
|
|
20
|
-
|
|
22
|
+
if (model.picture) {
|
|
23
|
+
this.map["xdr:pic"].prepare(model.picture, options);
|
|
24
|
+
}
|
|
25
|
+
else if (model.graphicFrame) {
|
|
26
|
+
this.map["xdr:graphicFrame"].prepare(model.graphicFrame, options);
|
|
27
|
+
}
|
|
21
28
|
}
|
|
22
29
|
render(xmlStream, model) {
|
|
23
30
|
xmlStream.openNode(this.tag, { editAs: model.range.editAs ?? "oneCell" });
|
|
24
31
|
this.map["xdr:from"].render(xmlStream, model.range.tl);
|
|
25
32
|
this.map["xdr:ext"].render(xmlStream, model.range.ext);
|
|
26
|
-
|
|
33
|
+
if (model.picture) {
|
|
34
|
+
this.map["xdr:pic"].render(xmlStream, model.picture);
|
|
35
|
+
}
|
|
36
|
+
else if (model.graphicFrame) {
|
|
37
|
+
this.map["xdr:graphicFrame"].render(xmlStream, model.graphicFrame);
|
|
38
|
+
}
|
|
27
39
|
this.map["xdr:clientData"].render(xmlStream, {});
|
|
28
40
|
xmlStream.closeNode();
|
|
29
41
|
}
|
|
@@ -39,6 +51,7 @@ class OneCellAnchorXform extends BaseCellAnchorXform {
|
|
|
39
51
|
this.model.range.tl = this.map["xdr:from"].model;
|
|
40
52
|
this.model.range.ext = this.map["xdr:ext"].model;
|
|
41
53
|
this.model.picture = this.map["xdr:pic"].model;
|
|
54
|
+
this.model.graphicFrame = this.map["xdr:graphicFrame"].model;
|
|
42
55
|
return false;
|
|
43
56
|
default:
|
|
44
57
|
// could be some unrecognised tags
|
|
@@ -46,7 +59,9 @@ class OneCellAnchorXform extends BaseCellAnchorXform {
|
|
|
46
59
|
}
|
|
47
60
|
}
|
|
48
61
|
reconcile(model, options) {
|
|
49
|
-
|
|
62
|
+
if (model.picture) {
|
|
63
|
+
model.medium = this.reconcilePicture(model.picture, options);
|
|
64
|
+
}
|
|
50
65
|
}
|
|
51
66
|
}
|
|
52
67
|
export { OneCellAnchorXform };
|
|
@@ -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 };
|