@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
|
@@ -92,8 +92,77 @@ export async function layoutSheet(sheet, options, fontManager) {
|
|
|
92
92
|
if (layoutPages.length > 0 && sheet.images) {
|
|
93
93
|
assignImagesToPages(sheet.images, layoutPages, ctx.scaleFactor);
|
|
94
94
|
}
|
|
95
|
+
if (layoutPages.length > 0 && sheet.charts) {
|
|
96
|
+
assignChartsToPages(sheet.charts, layoutPages, ctx.scaleFactor);
|
|
97
|
+
}
|
|
95
98
|
return layoutPages;
|
|
96
99
|
}
|
|
100
|
+
/**
|
|
101
|
+
* Produce the layout for a chartsheet — a single PDF page whose entire
|
|
102
|
+
* content area is covered by one chart.
|
|
103
|
+
*
|
|
104
|
+
* Chartsheets have no row/column grid, so we bypass the cell-layout
|
|
105
|
+
* pipeline entirely. Page dimensions come from `options.pageSize`, with
|
|
106
|
+
* orientation overridden by the chartsheet's own `orientation` field
|
|
107
|
+
* (Excel's chartsheet convention defaults to landscape; see the
|
|
108
|
+
* `CHARTSHEET_EMU_CX/CY` constants that define the drawing canvas in
|
|
109
|
+
* `xlsx.browser.ts`).
|
|
110
|
+
*
|
|
111
|
+
* The returned LayoutPage has:
|
|
112
|
+
* - `cells = []` (no grid to render)
|
|
113
|
+
* - `charts` containing one full-content-area chart
|
|
114
|
+
* - all other cell-grid arrays empty
|
|
115
|
+
*
|
|
116
|
+
* The existing `renderSinglePage` in `pdf-exporter.ts` already handles
|
|
117
|
+
* pages with zero cells and a non-empty `charts` array via the shared
|
|
118
|
+
* chart-rendering path, so no exporter changes are needed here.
|
|
119
|
+
*/
|
|
120
|
+
export function layoutChartsheet(sheet, documentOptions) {
|
|
121
|
+
// Chartsheet orientation override — independent of the document
|
|
122
|
+
// default. We clone the options so neighbouring worksheets aren't
|
|
123
|
+
// affected when a single chartsheet flips to portrait.
|
|
124
|
+
const orientation = sheet.orientation ?? documentOptions.orientation;
|
|
125
|
+
const options = { ...documentOptions, orientation };
|
|
126
|
+
let pageWidth = options.pageSize.width;
|
|
127
|
+
let pageHeight = options.pageSize.height;
|
|
128
|
+
if (options.orientation === "landscape") {
|
|
129
|
+
[pageWidth, pageHeight] = [pageHeight, pageWidth];
|
|
130
|
+
}
|
|
131
|
+
const margins = options.margins;
|
|
132
|
+
const headerHeight = options.showSheetNames ? 20 : 0;
|
|
133
|
+
const contentX = margins.left;
|
|
134
|
+
const contentY = margins.bottom;
|
|
135
|
+
const contentWidth = pageWidth - margins.left - margins.right;
|
|
136
|
+
const contentHeight = pageHeight - margins.top - margins.bottom - headerHeight;
|
|
137
|
+
const chart = {
|
|
138
|
+
rect: {
|
|
139
|
+
x: contentX,
|
|
140
|
+
y: contentY,
|
|
141
|
+
width: Math.max(0, contentWidth),
|
|
142
|
+
height: Math.max(0, contentHeight)
|
|
143
|
+
},
|
|
144
|
+
drawVector: sheet.chart.drawVector,
|
|
145
|
+
raster: sheet.chart.raster
|
|
146
|
+
};
|
|
147
|
+
const page = {
|
|
148
|
+
pageNumber: 1,
|
|
149
|
+
options,
|
|
150
|
+
cells: [],
|
|
151
|
+
width: pageWidth,
|
|
152
|
+
height: pageHeight,
|
|
153
|
+
sheetName: sheet.name,
|
|
154
|
+
sheetCols: [],
|
|
155
|
+
columnOffsets: [],
|
|
156
|
+
columnWidths: [],
|
|
157
|
+
sheetRows: [],
|
|
158
|
+
rowYPositions: [],
|
|
159
|
+
rowHeights: [],
|
|
160
|
+
images: [],
|
|
161
|
+
charts: [chart],
|
|
162
|
+
scaleFactor: 1
|
|
163
|
+
};
|
|
164
|
+
return [page];
|
|
165
|
+
}
|
|
97
166
|
/**
|
|
98
167
|
* Steps 1–5: compute columns, scale, rows, merges, pagination.
|
|
99
168
|
* Returns null if the sheet has no visible columns (→ caller should emit an empty page).
|
|
@@ -259,6 +328,7 @@ function buildPageLayout(ctx, rowPage, colGroup, currentPageCount, sheet, option
|
|
|
259
328
|
rowYPositions,
|
|
260
329
|
rowHeights: pageRowHeights,
|
|
261
330
|
images: [],
|
|
331
|
+
charts: [],
|
|
262
332
|
scaleFactor
|
|
263
333
|
};
|
|
264
334
|
}
|
|
@@ -282,6 +352,7 @@ function createEmptyPage(sheet, options) {
|
|
|
282
352
|
rowYPositions: [],
|
|
283
353
|
rowHeights: [],
|
|
284
354
|
images: [],
|
|
355
|
+
charts: [],
|
|
285
356
|
scaleFactor: 1
|
|
286
357
|
};
|
|
287
358
|
}
|
|
@@ -474,6 +545,17 @@ function countWrapLines(cell, fontSize, scaleFactor, sheet, fontManager, options
|
|
|
474
545
|
: 0;
|
|
475
546
|
const padding = CELL_PADDING_H + borderLeft + (CELL_PADDING_H + borderRight) + indent * INDENT_WIDTH;
|
|
476
547
|
const effectiveWidth = Math.max(scaledColPts - padding, 1);
|
|
548
|
+
// For rich text cells, use per-run font size measurement to match rendering
|
|
549
|
+
if (cell.type === PdfCellType.RichText) {
|
|
550
|
+
const value = cell.value;
|
|
551
|
+
if (value && typeof value === "object" && "richText" in value) {
|
|
552
|
+
const runs = value.richText;
|
|
553
|
+
if (runs.length > 0) {
|
|
554
|
+
const wrappedCount = countRichTextWrapLines(text, runs, scaleFactor, effectiveWidth, fontManager, options);
|
|
555
|
+
return Math.max(lineCount, wrappedCount);
|
|
556
|
+
}
|
|
557
|
+
}
|
|
558
|
+
}
|
|
477
559
|
const scaledFontSize = fontSize * scaleFactor;
|
|
478
560
|
const fontProps = extractFontProperties(cell.style.font, options.defaultFontFamily, options.defaultFontSize);
|
|
479
561
|
const pdfFontName = resolvePdfFontName(fontProps.fontFamily, fontProps.bold, fontProps.italic);
|
|
@@ -484,6 +566,119 @@ function countWrapLines(cell, fontSize, scaleFactor, sheet, fontManager, options
|
|
|
484
566
|
const wrappedLines = wrapTextLines(text, measure, effectiveWidth);
|
|
485
567
|
return Math.max(lineCount, wrappedLines.length);
|
|
486
568
|
}
|
|
569
|
+
/**
|
|
570
|
+
* Count wrap lines for a rich text cell using per-run font sizes.
|
|
571
|
+
* This mirrors the logic in wrapRichTextLines (page-renderer) so that
|
|
572
|
+
* the row height calculation matches the actual rendering.
|
|
573
|
+
*/
|
|
574
|
+
function countRichTextWrapLines(text, runs, scaleFactor, effectiveWidth, fontManager, options) {
|
|
575
|
+
// Build character-to-run mapping
|
|
576
|
+
const runForChar = [];
|
|
577
|
+
for (let ri = 0; ri < runs.length; ri++) {
|
|
578
|
+
for (let ci = 0; ci < runs[ri].text.length; ci++) {
|
|
579
|
+
runForChar.push(ri);
|
|
580
|
+
}
|
|
581
|
+
}
|
|
582
|
+
// Resolve font resources for each run
|
|
583
|
+
const runResources = runs.map(run => {
|
|
584
|
+
const fontProps = extractFontProperties(run.font, options.defaultFontFamily, options.defaultFontSize);
|
|
585
|
+
const pdfFontName = resolvePdfFontName(fontProps.fontFamily, fontProps.bold, fontProps.italic);
|
|
586
|
+
return fontManager.hasEmbeddedFont()
|
|
587
|
+
? fontManager.getEmbeddedResourceName()
|
|
588
|
+
: fontManager.ensureFont(pdfFontName);
|
|
589
|
+
});
|
|
590
|
+
// Resolve scaled font sizes for each run
|
|
591
|
+
const runFontSizes = runs.map(run => {
|
|
592
|
+
const fontProps = extractFontProperties(run.font, options.defaultFontFamily, options.defaultFontSize);
|
|
593
|
+
return fontProps.fontSize * scaleFactor;
|
|
594
|
+
});
|
|
595
|
+
// Measure a range of fullText using per-character run font sizes
|
|
596
|
+
const measureRange = (start, end) => {
|
|
597
|
+
let width = 0;
|
|
598
|
+
let segStart = start;
|
|
599
|
+
let currentRi = runForChar[start] ?? 0;
|
|
600
|
+
for (let i = start + 1; i <= end; i++) {
|
|
601
|
+
const ri = i < end ? (runForChar[i] ?? currentRi) : -1;
|
|
602
|
+
if (ri !== currentRi) {
|
|
603
|
+
const seg = text.slice(segStart, i);
|
|
604
|
+
width += fontManager.measureText(seg, runResources[currentRi], runFontSizes[currentRi]);
|
|
605
|
+
segStart = i;
|
|
606
|
+
currentRi = ri;
|
|
607
|
+
}
|
|
608
|
+
}
|
|
609
|
+
return width;
|
|
610
|
+
};
|
|
611
|
+
// Word-wrap using per-run measurements — mirrors wrapRichTextLines in
|
|
612
|
+
// page-renderer exactly (paragraph split on \n, word boundaries by
|
|
613
|
+
// scanning space/tab characters) to ensure line count matches rendering.
|
|
614
|
+
let totalLines = 0;
|
|
615
|
+
let globalOffset = 0;
|
|
616
|
+
const len = text.length;
|
|
617
|
+
while (globalOffset <= len) {
|
|
618
|
+
// Find end of current paragraph (handles both \n and \r\n)
|
|
619
|
+
let paraEnd = text.indexOf("\n", globalOffset);
|
|
620
|
+
if (paraEnd === -1) {
|
|
621
|
+
paraEnd = len;
|
|
622
|
+
}
|
|
623
|
+
// Skip \r before \n
|
|
624
|
+
const paraContentEnd = paraEnd > globalOffset && text[paraEnd - 1] === "\r" ? paraEnd - 1 : paraEnd;
|
|
625
|
+
if (paraContentEnd === globalOffset) {
|
|
626
|
+
// Empty paragraph
|
|
627
|
+
totalLines++;
|
|
628
|
+
globalOffset = paraEnd + 1;
|
|
629
|
+
if (paraEnd === len) {
|
|
630
|
+
break;
|
|
631
|
+
}
|
|
632
|
+
continue;
|
|
633
|
+
}
|
|
634
|
+
// Find word boundaries within this paragraph (space/tab are separators)
|
|
635
|
+
const paraText = text.slice(globalOffset, paraContentEnd);
|
|
636
|
+
const wordStarts = [];
|
|
637
|
+
const wordEnds = [];
|
|
638
|
+
let inWord = false;
|
|
639
|
+
for (let i = 0; i < paraText.length; i++) {
|
|
640
|
+
const isSpace = paraText[i] === " " || paraText[i] === "\t";
|
|
641
|
+
if (!isSpace && !inWord) {
|
|
642
|
+
wordStarts.push(i);
|
|
643
|
+
inWord = true;
|
|
644
|
+
}
|
|
645
|
+
else if (isSpace && inWord) {
|
|
646
|
+
wordEnds.push(i);
|
|
647
|
+
inWord = false;
|
|
648
|
+
}
|
|
649
|
+
}
|
|
650
|
+
if (inWord) {
|
|
651
|
+
wordEnds.push(paraText.length);
|
|
652
|
+
}
|
|
653
|
+
let lineStart = globalOffset;
|
|
654
|
+
let lineEnd = globalOffset;
|
|
655
|
+
let linesInParagraph = 0;
|
|
656
|
+
for (let wi = 0; wi < wordStarts.length; wi++) {
|
|
657
|
+
const wordEnd = globalOffset + wordEnds[wi];
|
|
658
|
+
if (lineEnd === lineStart) {
|
|
659
|
+
lineEnd = wordEnd;
|
|
660
|
+
continue;
|
|
661
|
+
}
|
|
662
|
+
if (measureRange(lineStart, wordEnd) <= effectiveWidth) {
|
|
663
|
+
lineEnd = wordEnd;
|
|
664
|
+
}
|
|
665
|
+
else {
|
|
666
|
+
linesInParagraph++;
|
|
667
|
+
lineStart = globalOffset + wordStarts[wi];
|
|
668
|
+
lineEnd = wordEnd;
|
|
669
|
+
}
|
|
670
|
+
}
|
|
671
|
+
if (lineEnd > lineStart || wordStarts.length === 0) {
|
|
672
|
+
linesInParagraph++;
|
|
673
|
+
}
|
|
674
|
+
totalLines += linesInParagraph;
|
|
675
|
+
globalOffset = paraEnd + 1;
|
|
676
|
+
if (paraEnd === len) {
|
|
677
|
+
break;
|
|
678
|
+
}
|
|
679
|
+
}
|
|
680
|
+
return Math.max(1, totalLines);
|
|
681
|
+
}
|
|
487
682
|
// =============================================================================
|
|
488
683
|
// Row Breaks
|
|
489
684
|
// =============================================================================
|
|
@@ -778,70 +973,242 @@ export function resolveSharedBorders(cellGrid, rowCount, colCount) {
|
|
|
778
973
|
}
|
|
779
974
|
}
|
|
780
975
|
// =============================================================================
|
|
781
|
-
// Image Placement
|
|
976
|
+
// Image & Chart Placement
|
|
782
977
|
// =============================================================================
|
|
978
|
+
/**
|
|
979
|
+
* Resolve an anchor's page-space rectangle by combining the `tl` / `br` /
|
|
980
|
+
* `ext` fields of a {@link PdfSheetImage.range} or {@link PdfSheetChart.range}.
|
|
981
|
+
*
|
|
982
|
+
* The convention is identical for both object types:
|
|
983
|
+
* - `tl` locates the upper-left corner in sheet coordinates (`nativeCol`,
|
|
984
|
+
* `nativeRow`, + sub-cell offsets in EMU).
|
|
985
|
+
* - `br` — when present — locates the opposite corner, so the rect size is
|
|
986
|
+
* the difference.
|
|
987
|
+
* - `ext` — when present — overrides the size directly. Images use pixels
|
|
988
|
+
* (px × 0.75 = pt); charts use EMU (EMU / 9525 = pt). The `extUnit`
|
|
989
|
+
* field disambiguates. Historical callers that omit `extUnit` keep
|
|
990
|
+
* the legacy px behaviour.
|
|
991
|
+
*
|
|
992
|
+
* Returns `null` if the anchor does not land on any of the supplied
|
|
993
|
+
* pages (e.g. the object is anchored below the printed area).
|
|
994
|
+
*/
|
|
995
|
+
function resolveAnchorRect(range, layoutPages, scaleFactor) {
|
|
996
|
+
const tl = range.tl;
|
|
997
|
+
const tlCol = (tl.nativeCol ?? tl.col ?? 0) + 1; // 0-indexed → 1-indexed
|
|
998
|
+
const tlRow = (tl.nativeRow ?? tl.row ?? 0) + 1;
|
|
999
|
+
const targetPage = layoutPages.find(page => page.sheetCols.includes(tlCol) && page.sheetRows.includes(tlRow));
|
|
1000
|
+
if (!targetPage) {
|
|
1001
|
+
return null;
|
|
1002
|
+
}
|
|
1003
|
+
const pageColIndex = targetPage.sheetCols.indexOf(tlCol);
|
|
1004
|
+
const pageRowIndex = targetPage.sheetRows.indexOf(tlRow);
|
|
1005
|
+
const baseX = targetPage.columnOffsets[pageColIndex] ?? targetPage.options.margins.left;
|
|
1006
|
+
const baseY = targetPage.rowYPositions[pageRowIndex] ??
|
|
1007
|
+
targetPage.height -
|
|
1008
|
+
targetPage.options.margins.top -
|
|
1009
|
+
(targetPage.options.showSheetNames ? 20 : 0);
|
|
1010
|
+
// Apply sub-cell offsets (EMU: 1pt = 12700 EMU), scaled to match page layout
|
|
1011
|
+
const tlColOff = ((tl.nativeColOff ?? 0) / 12700 || 0) * scaleFactor;
|
|
1012
|
+
const tlRowOff = ((tl.nativeRowOff ?? 0) / 12700 || 0) * scaleFactor;
|
|
1013
|
+
const x = baseX + tlColOff;
|
|
1014
|
+
const yTop = baseY - tlRowOff;
|
|
1015
|
+
// Determine width / height
|
|
1016
|
+
let width = 100;
|
|
1017
|
+
let height = 100;
|
|
1018
|
+
const extUnit = range.extUnit ?? "px";
|
|
1019
|
+
if (range.ext) {
|
|
1020
|
+
if (extUnit === "emu") {
|
|
1021
|
+
// EMU → pt (1 pt = 9525 EMU, same as the Excel drawing ext.cx/cy).
|
|
1022
|
+
width = (range.ext.width / 9525) * scaleFactor;
|
|
1023
|
+
height = (range.ext.height / 9525) * scaleFactor;
|
|
1024
|
+
}
|
|
1025
|
+
else {
|
|
1026
|
+
// Legacy pixel → pt (0.75 factor = 72/96 dpi)
|
|
1027
|
+
width = range.ext.width * 0.75 * scaleFactor;
|
|
1028
|
+
height = range.ext.height * 0.75 * scaleFactor;
|
|
1029
|
+
}
|
|
1030
|
+
}
|
|
1031
|
+
else if (range.br) {
|
|
1032
|
+
const br = range.br;
|
|
1033
|
+
const brCol = (br.nativeCol ?? br.col ?? 0) + 1;
|
|
1034
|
+
const brRow = (br.nativeRow ?? br.row ?? 0) + 1;
|
|
1035
|
+
const brPageColIndex = targetPage.sheetCols.indexOf(brCol);
|
|
1036
|
+
const brPageRowIndex = targetPage.sheetRows.indexOf(brRow);
|
|
1037
|
+
let brBaseX;
|
|
1038
|
+
let brBaseY;
|
|
1039
|
+
if (brPageColIndex >= 0) {
|
|
1040
|
+
brBaseX = targetPage.columnOffsets[brPageColIndex];
|
|
1041
|
+
}
|
|
1042
|
+
else {
|
|
1043
|
+
// br column is beyond this page — sum column widths from tl
|
|
1044
|
+
// through the last page column, then extrapolate remaining cols
|
|
1045
|
+
// at the average page column width so the chart stretches to its
|
|
1046
|
+
// intended width even when the page doesn't extend far enough.
|
|
1047
|
+
const lastCI = targetPage.sheetCols.length - 1;
|
|
1048
|
+
const lastPageCol = targetPage.sheetCols[lastCI] ?? tlCol;
|
|
1049
|
+
// End of the last column on this page:
|
|
1050
|
+
const lastColEnd = lastCI >= 0
|
|
1051
|
+
? targetPage.columnOffsets[lastCI] + (targetPage.columnWidths[lastCI] ?? 0)
|
|
1052
|
+
: baseX;
|
|
1053
|
+
if (brCol <= lastPageCol) {
|
|
1054
|
+
// brCol should be on this page but indexOf missed — use end of
|
|
1055
|
+
// the closest column as a fallback.
|
|
1056
|
+
brBaseX = lastColEnd;
|
|
1057
|
+
}
|
|
1058
|
+
else {
|
|
1059
|
+
const avgColWidth = targetPage.columnWidths.length > 0
|
|
1060
|
+
? targetPage.columnWidths.reduce((s, w) => s + w, 0) / targetPage.columnWidths.length
|
|
1061
|
+
: 48;
|
|
1062
|
+
const extraCols = brCol - lastPageCol;
|
|
1063
|
+
brBaseX = lastColEnd + extraCols * avgColWidth;
|
|
1064
|
+
}
|
|
1065
|
+
}
|
|
1066
|
+
if (brPageRowIndex >= 0) {
|
|
1067
|
+
brBaseY = targetPage.rowYPositions[brPageRowIndex];
|
|
1068
|
+
}
|
|
1069
|
+
else {
|
|
1070
|
+
// br row is beyond this page — accumulate row heights from tl
|
|
1071
|
+
// downward to compute the real chart height. In PDF coords,
|
|
1072
|
+
// rows stack downward (decreasing y). `baseY` (= yTop before
|
|
1073
|
+
// offsets) is the PDF y of the top of `tlRow`. Each subsequent
|
|
1074
|
+
// row's top y = previous row's top y - that row's height.
|
|
1075
|
+
const lastRI = targetPage.sheetRows.length - 1;
|
|
1076
|
+
const lastPageRow = targetPage.sheetRows[lastRI] ?? tlRow;
|
|
1077
|
+
if (brRow <= lastPageRow) {
|
|
1078
|
+
// brRow is on this page — sum heights from tl up to br.
|
|
1079
|
+
let accH = 0;
|
|
1080
|
+
for (let ri = pageRowIndex; ri <= lastRI; ri++) {
|
|
1081
|
+
if (targetPage.sheetRows[ri] >= brRow) {
|
|
1082
|
+
break;
|
|
1083
|
+
}
|
|
1084
|
+
accH += targetPage.rowHeights[ri] ?? 0;
|
|
1085
|
+
}
|
|
1086
|
+
brBaseY = baseY - accH;
|
|
1087
|
+
}
|
|
1088
|
+
else {
|
|
1089
|
+
// brRow exceeds the page — sum all rows from tl to end of page,
|
|
1090
|
+
// then extrapolate remaining rows at default height.
|
|
1091
|
+
let accH = 0;
|
|
1092
|
+
for (let ri = pageRowIndex; ri <= lastRI; ri++) {
|
|
1093
|
+
accH += targetPage.rowHeights[ri] ?? 0;
|
|
1094
|
+
}
|
|
1095
|
+
const remainingRows = brRow - lastPageRow - 1;
|
|
1096
|
+
accH += remainingRows * (15 * scaleFactor);
|
|
1097
|
+
brBaseY = baseY - accH;
|
|
1098
|
+
}
|
|
1099
|
+
}
|
|
1100
|
+
const brColOff = ((br.nativeColOff ?? 0) / 12700 || 0) * scaleFactor;
|
|
1101
|
+
const brRowOff = ((br.nativeRowOff ?? 0) / 12700 || 0) * scaleFactor;
|
|
1102
|
+
const brX = brBaseX + brColOff;
|
|
1103
|
+
const brYTop = brBaseY - brRowOff;
|
|
1104
|
+
width = brX - x;
|
|
1105
|
+
height = yTop - brYTop;
|
|
1106
|
+
}
|
|
1107
|
+
// Normalise to bottom-left y (PDF origin is bottom-left).
|
|
1108
|
+
// Clamp width to the page's content area; for height, if the chart's
|
|
1109
|
+
// anchor extends well below the page boundary (less than 50% of the
|
|
1110
|
+
// chart fits on this page), skip it entirely — drawing a severely
|
|
1111
|
+
// clipped chart is worse than omitting it. Otherwise keep the full
|
|
1112
|
+
// computed height so the chart renders at the correct aspect ratio
|
|
1113
|
+
// even if it slightly overflows the page bottom.
|
|
1114
|
+
const contentRight = targetPage.width - targetPage.options.margins.right;
|
|
1115
|
+
const contentBottom = targetPage.options.margins.bottom;
|
|
1116
|
+
const absWidth = Math.min(Math.abs(width), Math.max(0, contentRight - x));
|
|
1117
|
+
const absHeight = Math.abs(height);
|
|
1118
|
+
const availableHeight = Math.max(0, yTop - contentBottom);
|
|
1119
|
+
if (absHeight > 0 && availableHeight < absHeight * 0.5) {
|
|
1120
|
+
// Less than half the chart fits on this page — skip it.
|
|
1121
|
+
return null;
|
|
1122
|
+
}
|
|
1123
|
+
return {
|
|
1124
|
+
page: targetPage,
|
|
1125
|
+
x,
|
|
1126
|
+
y: yTop - absHeight,
|
|
1127
|
+
width: absWidth,
|
|
1128
|
+
height: absHeight
|
|
1129
|
+
};
|
|
1130
|
+
}
|
|
783
1131
|
/**
|
|
784
1132
|
* Assign pre-collected images to the pages that contain their top-left anchor.
|
|
785
1133
|
*/
|
|
786
1134
|
function assignImagesToPages(images, layoutPages, scaleFactor) {
|
|
787
1135
|
for (const img of images) {
|
|
788
|
-
const
|
|
789
|
-
|
|
790
|
-
const tlRow = (tl.nativeRow ?? tl.row ?? 0) + 1;
|
|
791
|
-
const targetPage = layoutPages.find(page => page.sheetCols.includes(tlCol) && page.sheetRows.includes(tlRow));
|
|
792
|
-
if (!targetPage) {
|
|
1136
|
+
const placement = resolveAnchorRect(img.range, layoutPages, scaleFactor);
|
|
1137
|
+
if (!placement) {
|
|
793
1138
|
continue;
|
|
794
1139
|
}
|
|
795
|
-
|
|
796
|
-
const pageRowIndex = targetPage.sheetRows.indexOf(tlRow);
|
|
797
|
-
const baseX = targetPage.columnOffsets[pageColIndex] ?? targetPage.options.margins.left;
|
|
798
|
-
const baseY = targetPage.rowYPositions[pageRowIndex] ??
|
|
799
|
-
targetPage.height -
|
|
800
|
-
targetPage.options.margins.top -
|
|
801
|
-
(targetPage.options.showSheetNames ? 20 : 0);
|
|
802
|
-
// Apply sub-cell offsets (EMU: 1pt = 12700 EMU), scaled to match page layout
|
|
803
|
-
const tlColOff = ((tl.nativeColOff ?? 0) / 12700 || 0) * scaleFactor;
|
|
804
|
-
const tlRowOff = ((tl.nativeRowOff ?? 0) / 12700 || 0) * scaleFactor;
|
|
805
|
-
const imgX = baseX + tlColOff;
|
|
806
|
-
const imgY = baseY - tlRowOff;
|
|
807
|
-
// Determine image size
|
|
808
|
-
let imgWidth = 100;
|
|
809
|
-
let imgHeight = 100;
|
|
810
|
-
if (img.range.ext) {
|
|
811
|
-
imgWidth = (img.range.ext.width ?? 100) * 0.75 * scaleFactor;
|
|
812
|
-
imgHeight = (img.range.ext.height ?? 100) * 0.75 * scaleFactor;
|
|
813
|
-
}
|
|
814
|
-
else if (img.range.br) {
|
|
815
|
-
const br = img.range.br;
|
|
816
|
-
const brCol = (br.nativeCol ?? br.col ?? 0) + 1;
|
|
817
|
-
const brRow = (br.nativeRow ?? br.row ?? 0) + 1;
|
|
818
|
-
const brPageColIndex = targetPage.sheetCols.indexOf(brCol);
|
|
819
|
-
const brPageRowIndex = targetPage.sheetRows.indexOf(brRow);
|
|
820
|
-
const brBaseX = brPageColIndex >= 0
|
|
821
|
-
? targetPage.columnOffsets[brPageColIndex]
|
|
822
|
-
: imgX + (targetPage.columnWidths[pageColIndex] ?? 100);
|
|
823
|
-
const brBaseY = brPageRowIndex >= 0
|
|
824
|
-
? targetPage.rowYPositions[brPageRowIndex]
|
|
825
|
-
: imgY - (targetPage.rowHeights[pageRowIndex] ?? 100);
|
|
826
|
-
const brColOff = ((br.nativeColOff ?? 0) / 12700 || 0) * scaleFactor;
|
|
827
|
-
const brRowOff = ((br.nativeRowOff ?? 0) / 12700 || 0) * scaleFactor;
|
|
828
|
-
const brX = brBaseX + brColOff;
|
|
829
|
-
const brY = brBaseY - brRowOff;
|
|
830
|
-
imgWidth = brX - imgX;
|
|
831
|
-
imgHeight = imgY - brY;
|
|
832
|
-
}
|
|
833
|
-
targetPage.images.push({
|
|
1140
|
+
placement.page.images.push({
|
|
834
1141
|
data: img.data,
|
|
835
1142
|
format: img.format,
|
|
836
1143
|
rect: {
|
|
837
|
-
x:
|
|
838
|
-
y:
|
|
839
|
-
width:
|
|
840
|
-
height:
|
|
1144
|
+
x: placement.x,
|
|
1145
|
+
y: placement.y,
|
|
1146
|
+
width: placement.width,
|
|
1147
|
+
height: placement.height
|
|
841
1148
|
}
|
|
842
1149
|
});
|
|
843
1150
|
}
|
|
844
1151
|
}
|
|
1152
|
+
/**
|
|
1153
|
+
* Assign pre-collected charts to the pages that contain their top-left
|
|
1154
|
+
* anchor. When a chart's anchor doesn't fit on any page (e.g. it spans
|
|
1155
|
+
* most of its height below the page boundary), place it full-page on
|
|
1156
|
+
* the next available page so it's not lost entirely.
|
|
1157
|
+
*/
|
|
1158
|
+
function assignChartsToPages(charts, layoutPages, scaleFactor) {
|
|
1159
|
+
for (const chart of charts) {
|
|
1160
|
+
const placement = resolveAnchorRect(chart.range, layoutPages, scaleFactor);
|
|
1161
|
+
if (placement) {
|
|
1162
|
+
placement.page.charts.push({
|
|
1163
|
+
rect: {
|
|
1164
|
+
x: placement.x,
|
|
1165
|
+
y: placement.y,
|
|
1166
|
+
width: placement.width,
|
|
1167
|
+
height: placement.height
|
|
1168
|
+
},
|
|
1169
|
+
drawVector: chart.drawVector,
|
|
1170
|
+
raster: chart.raster
|
|
1171
|
+
});
|
|
1172
|
+
continue;
|
|
1173
|
+
}
|
|
1174
|
+
// Chart didn't fit — find the page whose rows are closest to the
|
|
1175
|
+
// chart's tl row and place it full-content-area on that page (or
|
|
1176
|
+
// the next one if it exists). This handles charts whose tl anchor
|
|
1177
|
+
// is near a page break: rather than clipping them to a sliver, we
|
|
1178
|
+
// push them onto the following page at full size.
|
|
1179
|
+
const tl = chart.range.tl;
|
|
1180
|
+
const tlRow = (tl.nativeRow ?? tl.row ?? 0) + 1;
|
|
1181
|
+
let targetPage;
|
|
1182
|
+
for (let pi = 0; pi < layoutPages.length; pi++) {
|
|
1183
|
+
const page = layoutPages[pi];
|
|
1184
|
+
const lastPageRow = page.sheetRows[page.sheetRows.length - 1] ?? 0;
|
|
1185
|
+
if (lastPageRow >= tlRow - 1 && pi + 1 < layoutPages.length) {
|
|
1186
|
+
targetPage = layoutPages[pi + 1];
|
|
1187
|
+
break;
|
|
1188
|
+
}
|
|
1189
|
+
if (lastPageRow >= tlRow) {
|
|
1190
|
+
targetPage = page;
|
|
1191
|
+
break;
|
|
1192
|
+
}
|
|
1193
|
+
}
|
|
1194
|
+
if (!targetPage) {
|
|
1195
|
+
targetPage = layoutPages[layoutPages.length - 1];
|
|
1196
|
+
}
|
|
1197
|
+
if (targetPage) {
|
|
1198
|
+
const margins = targetPage.options.margins;
|
|
1199
|
+
const headerH = targetPage.options.showSheetNames ? 20 : 0;
|
|
1200
|
+
const contentX = margins.left;
|
|
1201
|
+
const contentY = margins.bottom;
|
|
1202
|
+
const contentW = targetPage.width - margins.left - margins.right;
|
|
1203
|
+
const contentH = targetPage.height - margins.top - margins.bottom - headerH;
|
|
1204
|
+
targetPage.charts.push({
|
|
1205
|
+
rect: { x: contentX, y: contentY, width: contentW, height: contentH },
|
|
1206
|
+
drawVector: chart.drawVector,
|
|
1207
|
+
raster: chart.raster
|
|
1208
|
+
});
|
|
1209
|
+
}
|
|
1210
|
+
}
|
|
1211
|
+
}
|
|
845
1212
|
// =============================================================================
|
|
846
1213
|
// Merge Border Propagation
|
|
847
1214
|
// =============================================================================
|
|
@@ -889,16 +1256,29 @@ function computeTextOverflows(cellGrid, rowPage, colGroup, visibleRows, visibleC
|
|
|
889
1256
|
if (!cell ||
|
|
890
1257
|
cell.wrapText ||
|
|
891
1258
|
cell.colSpan > 1 ||
|
|
892
|
-
!cell.text ||
|
|
893
|
-
cell.richText ||
|
|
1259
|
+
(!cell.text && !cell.richText) ||
|
|
894
1260
|
(typeof cell.textRotation === "number" && cell.textRotation !== 0) ||
|
|
895
1261
|
cell.textRotation === "vertical") {
|
|
896
1262
|
continue;
|
|
897
1263
|
}
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
1264
|
+
// Measure the total text width (plain text or rich text runs)
|
|
1265
|
+
let textWidth;
|
|
1266
|
+
if (cell.richText) {
|
|
1267
|
+
textWidth = 0;
|
|
1268
|
+
const isEmbedded = fontManager.hasEmbeddedFont();
|
|
1269
|
+
for (const run of cell.richText) {
|
|
1270
|
+
const resourceName = isEmbedded
|
|
1271
|
+
? fontManager.getEmbeddedResourceName()
|
|
1272
|
+
: fontManager.ensureFont(resolvePdfFontName(run.fontFamily, run.bold, run.italic));
|
|
1273
|
+
textWidth += fontManager.measureText(run.text, resourceName, run.fontSize);
|
|
1274
|
+
}
|
|
1275
|
+
}
|
|
1276
|
+
else {
|
|
1277
|
+
const resourceName = fontManager.hasEmbeddedFont()
|
|
1278
|
+
? fontManager.getEmbeddedResourceName()
|
|
1279
|
+
: fontManager.ensureFont(resolvePdfFontName(cell.fontFamily, cell.bold, cell.italic));
|
|
1280
|
+
textWidth = fontManager.measureText(cell.text, resourceName, cell.fontSize);
|
|
1281
|
+
}
|
|
902
1282
|
const cellContentWidth = cell.rect.width -
|
|
903
1283
|
(CELL_PADDING_H + cell.borderInsets.left) -
|
|
904
1284
|
(CELL_PADDING_H + cell.borderInsets.right);
|
|
@@ -915,7 +1295,7 @@ function computeTextOverflows(cellGrid, rowPage, colGroup, visibleRows, visibleC
|
|
|
915
1295
|
break;
|
|
916
1296
|
}
|
|
917
1297
|
const neighborCell = cellGrid.get(`${ri}:${j}`);
|
|
918
|
-
if (neighborCell?.text) {
|
|
1298
|
+
if (neighborCell?.text || neighborCell?.richText) {
|
|
919
1299
|
break;
|
|
920
1300
|
}
|
|
921
1301
|
overflowAvailable += groupColWidths[j];
|