@cj-tech-master/excelts 5.0.6 → 5.1.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 +1 -1
- package/dist/browser/index.d.ts +1 -1
- package/dist/browser/modules/archive/unzip/stream.base.js +19 -19
- package/dist/browser/modules/archive/unzip/stream.browser.js +3 -3
- package/dist/browser/modules/csv/csv-core.js +6 -3
- package/dist/browser/modules/csv/csv.browser.js +2 -2
- package/dist/browser/modules/csv/csv.js +1 -1
- package/dist/browser/modules/excel/anchor.js +4 -4
- package/dist/browser/modules/excel/cell.js +5 -5
- package/dist/browser/modules/excel/column.js +4 -4
- package/dist/browser/modules/excel/defined-names.js +1 -1
- package/dist/browser/modules/excel/form-control.js +1 -1
- package/dist/browser/modules/excel/pivot-table.d.ts +168 -17
- package/dist/browser/modules/excel/pivot-table.js +278 -70
- package/dist/browser/modules/excel/row.js +4 -4
- package/dist/browser/modules/excel/stream/workbook-reader.browser.js +4 -4
- package/dist/browser/modules/excel/stream/workbook-writer.browser.js +4 -4
- package/dist/browser/modules/excel/stream/worksheet-reader.js +1 -1
- package/dist/browser/modules/excel/stream/worksheet-writer.js +4 -4
- package/dist/browser/modules/excel/table.js +2 -2
- package/dist/browser/modules/excel/types.d.ts +0 -4
- package/dist/browser/modules/excel/utils/cell-format.js +3 -3
- package/dist/browser/modules/excel/utils/shared-formula.js +1 -1
- package/dist/browser/modules/excel/utils/stream-buf.js +2 -2
- package/dist/browser/modules/excel/utils/string-buf.js +1 -1
- package/dist/browser/modules/excel/workbook.d.ts +0 -2
- package/dist/browser/modules/excel/workbook.js +4 -5
- package/dist/browser/modules/excel/worksheet.js +9 -9
- package/dist/browser/modules/excel/xlsx/xform/base-xform.d.ts +5 -5
- package/dist/browser/modules/excel/xlsx/xform/base-xform.js +1 -1
- package/dist/browser/modules/excel/xlsx/xform/book/defined-name-xform.js +2 -2
- package/dist/browser/modules/excel/xlsx/xform/book/workbook-view-xform.js +4 -4
- package/dist/browser/modules/excel/xlsx/xform/book/workbook-xform.js +16 -4
- package/dist/browser/modules/excel/xlsx/xform/comment/comment-xform.d.ts +1 -2
- package/dist/browser/modules/excel/xlsx/xform/comment/comments-xform.d.ts +1 -2
- package/dist/browser/modules/excel/xlsx/xform/comment/style/vml-position-xform.d.ts +3 -4
- package/dist/browser/modules/excel/xlsx/xform/comment/style/vml-position-xform.js +1 -1
- package/dist/browser/modules/excel/xlsx/xform/comment/style/vml-protection-xform.js +1 -1
- package/dist/browser/modules/excel/xlsx/xform/comment/vml-client-data-xform.d.ts +1 -2
- package/dist/browser/modules/excel/xlsx/xform/comment/vml-notes-xform.d.ts +1 -2
- package/dist/browser/modules/excel/xlsx/xform/comment/vml-shape-xform.js +1 -1
- package/dist/browser/modules/excel/xlsx/xform/comment/vml-textbox-xform.d.ts +1 -2
- package/dist/browser/modules/excel/xlsx/xform/comment/vml-textbox-xform.js +1 -1
- package/dist/browser/modules/excel/xlsx/xform/composite-xform.d.ts +1 -1
- package/dist/browser/modules/excel/xlsx/xform/core/app-xform.js +1 -1
- package/dist/browser/modules/excel/xlsx/xform/core/content-types-xform.js +24 -11
- package/dist/browser/modules/excel/xlsx/xform/drawing/base-cell-anchor-xform.js +1 -1
- package/dist/browser/modules/excel/xlsx/xform/drawing/blip-xform.d.ts +1 -2
- package/dist/browser/modules/excel/xlsx/xform/drawing/cell-position-xform.d.ts +1 -2
- package/dist/browser/modules/excel/xlsx/xform/drawing/ctrl-prop-xform.d.ts +1 -2
- package/dist/browser/modules/excel/xlsx/xform/drawing/drawing-xform.d.ts +1 -2
- package/dist/browser/modules/excel/xlsx/xform/drawing/ext-xform.d.ts +1 -2
- package/dist/browser/modules/excel/xlsx/xform/drawing/ext-xform.js +2 -2
- package/dist/browser/modules/excel/xlsx/xform/drawing/one-cell-anchor-xform.js +1 -1
- package/dist/browser/modules/excel/xlsx/xform/drawing/two-cell-anchor-xform.js +1 -1
- package/dist/browser/modules/excel/xlsx/xform/drawing/vml-drawing-xform.d.ts +1 -2
- package/dist/browser/modules/excel/xlsx/xform/list-xform.d.ts +1 -2
- package/dist/browser/modules/excel/xlsx/xform/list-xform.js +3 -3
- package/dist/browser/modules/excel/xlsx/xform/pivot-table/cache-field-xform.d.ts +5 -15
- package/dist/browser/modules/excel/xlsx/xform/pivot-table/cache-field-xform.js +134 -52
- package/dist/browser/modules/excel/xlsx/xform/pivot-table/cache-field.d.ts +14 -15
- package/dist/browser/modules/excel/xlsx/xform/pivot-table/cache-field.js +244 -70
- package/dist/browser/modules/excel/xlsx/xform/pivot-table/pivot-cache-definition-xform.d.ts +13 -29
- package/dist/browser/modules/excel/xlsx/xform/pivot-table/pivot-cache-definition-xform.js +213 -37
- package/dist/browser/modules/excel/xlsx/xform/pivot-table/pivot-cache-records-xform.d.ts +7 -34
- package/dist/browser/modules/excel/xlsx/xform/pivot-table/pivot-cache-records-xform.js +143 -41
- package/dist/browser/modules/excel/xlsx/xform/pivot-table/pivot-table-xform.d.ts +101 -27
- package/dist/browser/modules/excel/xlsx/xform/pivot-table/pivot-table-xform.js +793 -408
- package/dist/browser/modules/excel/xlsx/xform/pivot-table/raw-xml-collector.d.ts +78 -0
- package/dist/browser/modules/excel/xlsx/xform/pivot-table/raw-xml-collector.js +149 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/cell-xform.js +1 -1
- package/dist/browser/modules/excel/xlsx/xform/sheet/cf/cf-rule-xform.js +1 -1
- package/dist/browser/modules/excel/xlsx/xform/sheet/cf/conditional-formattings-xform.js +1 -1
- package/dist/browser/modules/excel/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js +1 -1
- package/dist/browser/modules/excel/xlsx/xform/sheet/col-xform.js +3 -3
- package/dist/browser/modules/excel/xlsx/xform/sheet/data-validations-xform.js +3 -3
- package/dist/browser/modules/excel/xlsx/xform/sheet/header-footer-xform.js +6 -6
- package/dist/browser/modules/excel/xlsx/xform/sheet/page-setup-xform.js +11 -11
- package/dist/browser/modules/excel/xlsx/xform/sheet/row-xform.d.ts +1 -2
- package/dist/browser/modules/excel/xlsx/xform/sheet/sheet-format-properties-xform.js +3 -3
- package/dist/browser/modules/excel/xlsx/xform/sheet/sheet-view-xform.d.ts +1 -2
- package/dist/browser/modules/excel/xlsx/xform/sheet/sheet-view-xform.js +10 -10
- package/dist/browser/modules/excel/xlsx/xform/sheet/worksheet-xform.js +12 -12
- package/dist/browser/modules/excel/xlsx/xform/strings/phonetic-text-xform.js +2 -2
- package/dist/browser/modules/excel/xlsx/xform/style/color-xform.js +1 -1
- package/dist/browser/modules/excel/xlsx/xform/style/style-xform.js +5 -5
- package/dist/browser/modules/excel/xlsx/xform/table/auto-filter-xform.d.ts +1 -2
- package/dist/browser/modules/excel/xlsx/xform/table/custom-filter-xform.d.ts +1 -2
- package/dist/browser/modules/excel/xlsx/xform/table/filter-column-xform.d.ts +1 -2
- package/dist/browser/modules/excel/xlsx/xform/table/filter-xform.d.ts +1 -2
- package/dist/browser/modules/excel/xlsx/xform/table/table-column-xform.d.ts +1 -2
- package/dist/browser/modules/excel/xlsx/xform/table/table-style-info-xform.d.ts +1 -2
- package/dist/browser/modules/excel/xlsx/xform/table/table-xform.d.ts +1 -2
- package/dist/browser/modules/excel/xlsx/xlsx.browser.d.ts +5 -2
- package/dist/browser/modules/excel/xlsx/xlsx.browser.js +88 -54
- package/dist/browser/utils/env.d.ts +0 -5
- package/dist/browser/utils/env.js +0 -7
- package/dist/browser/utils/utils.base.d.ts +8 -13
- package/dist/browser/utils/utils.base.js +40 -47
- package/dist/browser/utils/utils.browser.d.ts +1 -1
- package/dist/browser/utils/utils.browser.js +1 -1
- package/dist/browser/utils/utils.d.ts +1 -1
- package/dist/browser/utils/utils.js +1 -1
- package/dist/cjs/modules/archive/unzip/stream.base.js +19 -19
- package/dist/cjs/modules/archive/unzip/stream.browser.js +3 -3
- package/dist/cjs/modules/csv/csv-core.js +6 -3
- package/dist/cjs/modules/csv/csv.browser.js +2 -2
- package/dist/cjs/modules/csv/csv.js +1 -1
- package/dist/cjs/modules/excel/anchor.js +4 -4
- package/dist/cjs/modules/excel/cell.js +5 -5
- package/dist/cjs/modules/excel/column.js +4 -4
- package/dist/cjs/modules/excel/defined-names.js +1 -1
- package/dist/cjs/modules/excel/form-control.js +1 -1
- package/dist/cjs/modules/excel/pivot-table.js +280 -70
- package/dist/cjs/modules/excel/row.js +4 -4
- package/dist/cjs/modules/excel/stream/workbook-reader.browser.js +4 -4
- package/dist/cjs/modules/excel/stream/workbook-writer.browser.js +4 -4
- package/dist/cjs/modules/excel/stream/worksheet-reader.js +1 -1
- package/dist/cjs/modules/excel/stream/worksheet-writer.js +4 -4
- package/dist/cjs/modules/excel/table.js +2 -2
- package/dist/cjs/modules/excel/utils/cell-format.js +3 -3
- package/dist/cjs/modules/excel/utils/shared-formula.js +1 -1
- package/dist/cjs/modules/excel/utils/stream-buf.js +2 -2
- package/dist/cjs/modules/excel/utils/string-buf.js +1 -1
- package/dist/cjs/modules/excel/workbook.js +4 -5
- package/dist/cjs/modules/excel/worksheet.js +9 -9
- package/dist/cjs/modules/excel/xlsx/xform/base-xform.js +1 -1
- package/dist/cjs/modules/excel/xlsx/xform/book/defined-name-xform.js +2 -2
- package/dist/cjs/modules/excel/xlsx/xform/book/workbook-view-xform.js +4 -4
- package/dist/cjs/modules/excel/xlsx/xform/book/workbook-xform.js +16 -4
- package/dist/cjs/modules/excel/xlsx/xform/comment/style/vml-position-xform.js +1 -1
- package/dist/cjs/modules/excel/xlsx/xform/comment/style/vml-protection-xform.js +1 -1
- package/dist/cjs/modules/excel/xlsx/xform/comment/vml-shape-xform.js +1 -1
- package/dist/cjs/modules/excel/xlsx/xform/comment/vml-textbox-xform.js +1 -1
- package/dist/cjs/modules/excel/xlsx/xform/core/app-xform.js +1 -1
- package/dist/cjs/modules/excel/xlsx/xform/core/content-types-xform.js +24 -11
- package/dist/cjs/modules/excel/xlsx/xform/drawing/base-cell-anchor-xform.js +1 -1
- package/dist/cjs/modules/excel/xlsx/xform/drawing/ext-xform.js +2 -2
- package/dist/cjs/modules/excel/xlsx/xform/drawing/one-cell-anchor-xform.js +1 -1
- package/dist/cjs/modules/excel/xlsx/xform/drawing/two-cell-anchor-xform.js +1 -1
- package/dist/cjs/modules/excel/xlsx/xform/list-xform.js +3 -3
- package/dist/cjs/modules/excel/xlsx/xform/pivot-table/cache-field-xform.js +133 -51
- package/dist/cjs/modules/excel/xlsx/xform/pivot-table/cache-field.js +245 -71
- package/dist/cjs/modules/excel/xlsx/xform/pivot-table/pivot-cache-definition-xform.js +212 -36
- package/dist/cjs/modules/excel/xlsx/xform/pivot-table/pivot-cache-records-xform.js +142 -40
- package/dist/cjs/modules/excel/xlsx/xform/pivot-table/pivot-table-xform.js +793 -408
- package/dist/cjs/modules/excel/xlsx/xform/pivot-table/raw-xml-collector.js +153 -0
- package/dist/cjs/modules/excel/xlsx/xform/sheet/cell-xform.js +1 -1
- package/dist/cjs/modules/excel/xlsx/xform/sheet/cf/cf-rule-xform.js +1 -1
- package/dist/cjs/modules/excel/xlsx/xform/sheet/cf/conditional-formattings-xform.js +1 -1
- package/dist/cjs/modules/excel/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js +1 -1
- package/dist/cjs/modules/excel/xlsx/xform/sheet/col-xform.js +3 -3
- package/dist/cjs/modules/excel/xlsx/xform/sheet/data-validations-xform.js +3 -3
- package/dist/cjs/modules/excel/xlsx/xform/sheet/header-footer-xform.js +6 -6
- package/dist/cjs/modules/excel/xlsx/xform/sheet/page-setup-xform.js +11 -11
- package/dist/cjs/modules/excel/xlsx/xform/sheet/sheet-format-properties-xform.js +3 -3
- package/dist/cjs/modules/excel/xlsx/xform/sheet/sheet-view-xform.js +10 -10
- package/dist/cjs/modules/excel/xlsx/xform/sheet/worksheet-xform.js +12 -12
- package/dist/cjs/modules/excel/xlsx/xform/strings/phonetic-text-xform.js +2 -2
- package/dist/cjs/modules/excel/xlsx/xform/style/color-xform.js +1 -1
- package/dist/cjs/modules/excel/xlsx/xform/style/style-xform.js +5 -5
- package/dist/cjs/modules/excel/xlsx/xlsx.browser.js +88 -54
- package/dist/cjs/utils/env.js +0 -8
- package/dist/cjs/utils/utils.base.js +41 -54
- package/dist/cjs/utils/utils.browser.js +2 -7
- package/dist/cjs/utils/utils.js +2 -7
- package/dist/esm/modules/archive/unzip/stream.base.js +19 -19
- package/dist/esm/modules/archive/unzip/stream.browser.js +3 -3
- package/dist/esm/modules/csv/csv-core.js +6 -3
- package/dist/esm/modules/csv/csv.browser.js +2 -2
- package/dist/esm/modules/csv/csv.js +1 -1
- package/dist/esm/modules/excel/anchor.js +4 -4
- package/dist/esm/modules/excel/cell.js +5 -5
- package/dist/esm/modules/excel/column.js +4 -4
- package/dist/esm/modules/excel/defined-names.js +1 -1
- package/dist/esm/modules/excel/form-control.js +1 -1
- package/dist/esm/modules/excel/pivot-table.js +278 -70
- package/dist/esm/modules/excel/row.js +4 -4
- package/dist/esm/modules/excel/stream/workbook-reader.browser.js +4 -4
- package/dist/esm/modules/excel/stream/workbook-writer.browser.js +4 -4
- package/dist/esm/modules/excel/stream/worksheet-reader.js +1 -1
- package/dist/esm/modules/excel/stream/worksheet-writer.js +4 -4
- package/dist/esm/modules/excel/table.js +2 -2
- package/dist/esm/modules/excel/utils/cell-format.js +3 -3
- package/dist/esm/modules/excel/utils/shared-formula.js +1 -1
- package/dist/esm/modules/excel/utils/stream-buf.js +2 -2
- package/dist/esm/modules/excel/utils/string-buf.js +1 -1
- package/dist/esm/modules/excel/workbook.js +4 -5
- package/dist/esm/modules/excel/worksheet.js +9 -9
- package/dist/esm/modules/excel/xlsx/xform/base-xform.js +1 -1
- package/dist/esm/modules/excel/xlsx/xform/book/defined-name-xform.js +2 -2
- package/dist/esm/modules/excel/xlsx/xform/book/workbook-view-xform.js +4 -4
- package/dist/esm/modules/excel/xlsx/xform/book/workbook-xform.js +16 -4
- package/dist/esm/modules/excel/xlsx/xform/comment/style/vml-position-xform.js +1 -1
- package/dist/esm/modules/excel/xlsx/xform/comment/style/vml-protection-xform.js +1 -1
- package/dist/esm/modules/excel/xlsx/xform/comment/vml-shape-xform.js +1 -1
- package/dist/esm/modules/excel/xlsx/xform/comment/vml-textbox-xform.js +1 -1
- package/dist/esm/modules/excel/xlsx/xform/core/app-xform.js +1 -1
- package/dist/esm/modules/excel/xlsx/xform/core/content-types-xform.js +24 -11
- package/dist/esm/modules/excel/xlsx/xform/drawing/base-cell-anchor-xform.js +1 -1
- package/dist/esm/modules/excel/xlsx/xform/drawing/ext-xform.js +2 -2
- package/dist/esm/modules/excel/xlsx/xform/drawing/one-cell-anchor-xform.js +1 -1
- package/dist/esm/modules/excel/xlsx/xform/drawing/two-cell-anchor-xform.js +1 -1
- package/dist/esm/modules/excel/xlsx/xform/list-xform.js +3 -3
- package/dist/esm/modules/excel/xlsx/xform/pivot-table/cache-field-xform.js +134 -52
- package/dist/esm/modules/excel/xlsx/xform/pivot-table/cache-field.js +244 -70
- package/dist/esm/modules/excel/xlsx/xform/pivot-table/pivot-cache-definition-xform.js +213 -37
- package/dist/esm/modules/excel/xlsx/xform/pivot-table/pivot-cache-records-xform.js +143 -41
- package/dist/esm/modules/excel/xlsx/xform/pivot-table/pivot-table-xform.js +793 -408
- package/dist/esm/modules/excel/xlsx/xform/pivot-table/raw-xml-collector.js +149 -0
- package/dist/esm/modules/excel/xlsx/xform/sheet/cell-xform.js +1 -1
- package/dist/esm/modules/excel/xlsx/xform/sheet/cf/cf-rule-xform.js +1 -1
- package/dist/esm/modules/excel/xlsx/xform/sheet/cf/conditional-formattings-xform.js +1 -1
- package/dist/esm/modules/excel/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js +1 -1
- package/dist/esm/modules/excel/xlsx/xform/sheet/col-xform.js +3 -3
- package/dist/esm/modules/excel/xlsx/xform/sheet/data-validations-xform.js +3 -3
- package/dist/esm/modules/excel/xlsx/xform/sheet/header-footer-xform.js +6 -6
- package/dist/esm/modules/excel/xlsx/xform/sheet/page-setup-xform.js +11 -11
- package/dist/esm/modules/excel/xlsx/xform/sheet/sheet-format-properties-xform.js +3 -3
- package/dist/esm/modules/excel/xlsx/xform/sheet/sheet-view-xform.js +10 -10
- package/dist/esm/modules/excel/xlsx/xform/sheet/worksheet-xform.js +12 -12
- package/dist/esm/modules/excel/xlsx/xform/strings/phonetic-text-xform.js +2 -2
- package/dist/esm/modules/excel/xlsx/xform/style/color-xform.js +1 -1
- package/dist/esm/modules/excel/xlsx/xform/style/style-xform.js +5 -5
- package/dist/esm/modules/excel/xlsx/xlsx.browser.js +88 -54
- package/dist/esm/utils/env.js +0 -7
- package/dist/esm/utils/utils.base.js +40 -47
- package/dist/esm/utils/utils.browser.js +1 -1
- package/dist/esm/utils/utils.js +1 -1
- package/dist/iife/excelts.iife.js +1553 -718
- package/dist/iife/excelts.iife.js.map +1 -1
- package/dist/iife/excelts.iife.min.js +36 -105
- package/dist/types/index.browser.d.ts +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/modules/excel/pivot-table.d.ts +168 -17
- package/dist/types/modules/excel/types.d.ts +0 -4
- package/dist/types/modules/excel/workbook.d.ts +0 -2
- package/dist/types/modules/excel/xlsx/xform/base-xform.d.ts +5 -5
- package/dist/types/modules/excel/xlsx/xform/comment/comment-xform.d.ts +1 -2
- package/dist/types/modules/excel/xlsx/xform/comment/comments-xform.d.ts +1 -2
- package/dist/types/modules/excel/xlsx/xform/comment/style/vml-position-xform.d.ts +3 -4
- package/dist/types/modules/excel/xlsx/xform/comment/vml-client-data-xform.d.ts +1 -2
- package/dist/types/modules/excel/xlsx/xform/comment/vml-notes-xform.d.ts +1 -2
- package/dist/types/modules/excel/xlsx/xform/comment/vml-textbox-xform.d.ts +1 -2
- package/dist/types/modules/excel/xlsx/xform/composite-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/drawing/blip-xform.d.ts +1 -2
- package/dist/types/modules/excel/xlsx/xform/drawing/cell-position-xform.d.ts +1 -2
- package/dist/types/modules/excel/xlsx/xform/drawing/ctrl-prop-xform.d.ts +1 -2
- package/dist/types/modules/excel/xlsx/xform/drawing/drawing-xform.d.ts +1 -2
- package/dist/types/modules/excel/xlsx/xform/drawing/ext-xform.d.ts +1 -2
- package/dist/types/modules/excel/xlsx/xform/drawing/vml-drawing-xform.d.ts +1 -2
- package/dist/types/modules/excel/xlsx/xform/list-xform.d.ts +1 -2
- package/dist/types/modules/excel/xlsx/xform/pivot-table/cache-field-xform.d.ts +5 -15
- package/dist/types/modules/excel/xlsx/xform/pivot-table/cache-field.d.ts +14 -15
- package/dist/types/modules/excel/xlsx/xform/pivot-table/pivot-cache-definition-xform.d.ts +13 -29
- package/dist/types/modules/excel/xlsx/xform/pivot-table/pivot-cache-records-xform.d.ts +7 -34
- package/dist/types/modules/excel/xlsx/xform/pivot-table/pivot-table-xform.d.ts +101 -27
- package/dist/types/modules/excel/xlsx/xform/pivot-table/raw-xml-collector.d.ts +78 -0
- package/dist/types/modules/excel/xlsx/xform/sheet/row-xform.d.ts +1 -2
- package/dist/types/modules/excel/xlsx/xform/sheet/sheet-view-xform.d.ts +1 -2
- package/dist/types/modules/excel/xlsx/xform/table/auto-filter-xform.d.ts +1 -2
- package/dist/types/modules/excel/xlsx/xform/table/custom-filter-xform.d.ts +1 -2
- package/dist/types/modules/excel/xlsx/xform/table/filter-column-xform.d.ts +1 -2
- package/dist/types/modules/excel/xlsx/xform/table/filter-xform.d.ts +1 -2
- package/dist/types/modules/excel/xlsx/xform/table/table-column-xform.d.ts +1 -2
- package/dist/types/modules/excel/xlsx/xform/table/table-style-info-xform.d.ts +1 -2
- package/dist/types/modules/excel/xlsx/xform/table/table-xform.d.ts +1 -2
- package/dist/types/modules/excel/xlsx/xlsx.browser.d.ts +5 -2
- package/dist/types/utils/env.d.ts +0 -5
- package/dist/types/utils/utils.base.d.ts +8 -13
- package/dist/types/utils/utils.browser.d.ts +1 -1
- package/dist/types/utils/utils.d.ts +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RawXmlCollector = void 0;
|
|
4
|
+
exports.serializeAttributes = serializeAttributes;
|
|
5
|
+
const utils_1 = require("../../../../../utils/utils.js");
|
|
6
|
+
/**
|
|
7
|
+
* Reusable utility for collecting raw XML fragments during SAX parsing.
|
|
8
|
+
*
|
|
9
|
+
* Many pivot-table xforms need to capture entire sub-trees (extLst, formats,
|
|
10
|
+
* conditionalFormats, filters, fieldGroup, unknown elements, …) as raw strings
|
|
11
|
+
* for roundtrip preservation. The pattern — `active` flag, `depth` counter,
|
|
12
|
+
* `buffer` of string fragments, plus identical `feedOpen` / `feedClose` /
|
|
13
|
+
* `feedText` logic — was previously copy-pasted across multiple files.
|
|
14
|
+
*
|
|
15
|
+
* Usage:
|
|
16
|
+
* ```ts
|
|
17
|
+
* const collector = new RawXmlCollector("extLst");
|
|
18
|
+
* // In parseOpen, when you see <extLst>:
|
|
19
|
+
* collector.start(); // opens with <extLst>
|
|
20
|
+
* // For every child open tag while active:
|
|
21
|
+
* collector.feedOpen(name, attributes);
|
|
22
|
+
* // For every text node while active:
|
|
23
|
+
* collector.feedText(text);
|
|
24
|
+
* // For every close tag while active:
|
|
25
|
+
* if (collector.feedClose(name)) { ... } // returns true when root tag closed
|
|
26
|
+
* // Retrieve result:
|
|
27
|
+
* collector.result; // joined XML string
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
class RawXmlCollector {
|
|
31
|
+
constructor(rootTag) {
|
|
32
|
+
/** Whether the collector is currently capturing. */
|
|
33
|
+
this.active = false;
|
|
34
|
+
/** Nesting depth *within* the root element (0 = direct children). */
|
|
35
|
+
this.depth = 0;
|
|
36
|
+
/** String fragments being accumulated. */
|
|
37
|
+
this.buffer = [];
|
|
38
|
+
/** Index of the last open-tag entry in the buffer (for self-closing collapse). */
|
|
39
|
+
this.lastOpenIndex = -1;
|
|
40
|
+
this.rootTag = rootTag;
|
|
41
|
+
}
|
|
42
|
+
// ---------------------------------------------------------------------------
|
|
43
|
+
// Lifecycle
|
|
44
|
+
// ---------------------------------------------------------------------------
|
|
45
|
+
/**
|
|
46
|
+
* Begin collecting. Pushes the opening root tag (with optional attributes)
|
|
47
|
+
* and resets depth.
|
|
48
|
+
*
|
|
49
|
+
* @param attributes - Attributes on the root element (may be undefined/null).
|
|
50
|
+
*/
|
|
51
|
+
start(attributes) {
|
|
52
|
+
this.active = true;
|
|
53
|
+
this.depth = 0;
|
|
54
|
+
const attrsStr = serializeAttributes(attributes);
|
|
55
|
+
this.buffer = [`<${this.rootTag}${attrsStr ? " " + attrsStr : ""}>`];
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Begin collecting with a dynamically determined root tag.
|
|
59
|
+
* Used for catch-all unknown element collectors where the tag name
|
|
60
|
+
* is not known at construction time.
|
|
61
|
+
*/
|
|
62
|
+
startAs(rootTag, attributes) {
|
|
63
|
+
this.rootTag = rootTag;
|
|
64
|
+
this.start(attributes);
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Reset the collector to its initial idle state.
|
|
68
|
+
*/
|
|
69
|
+
reset() {
|
|
70
|
+
this.active = false;
|
|
71
|
+
this.depth = 0;
|
|
72
|
+
this.buffer.length = 0;
|
|
73
|
+
this.lastOpenIndex = -1;
|
|
74
|
+
}
|
|
75
|
+
// ---------------------------------------------------------------------------
|
|
76
|
+
// Feed methods — call these from parseOpen / parseText / parseClose
|
|
77
|
+
// ---------------------------------------------------------------------------
|
|
78
|
+
/**
|
|
79
|
+
* Feed an open-tag event. Must only be called while `active` is true.
|
|
80
|
+
*/
|
|
81
|
+
feedOpen(name, attributes) {
|
|
82
|
+
const attrsStr = serializeAttributes(attributes);
|
|
83
|
+
this.buffer.push(`<${name}${attrsStr ? " " + attrsStr : ""}>`);
|
|
84
|
+
this.depth++;
|
|
85
|
+
this.lastOpenIndex = this.buffer.length - 1;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Feed a text-node event. Must only be called while `active` is true.
|
|
89
|
+
*/
|
|
90
|
+
feedText(text) {
|
|
91
|
+
this.buffer.push((0, utils_1.xmlEncode)(text));
|
|
92
|
+
this.lastOpenIndex = -1;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Feed a close-tag event.
|
|
96
|
+
*
|
|
97
|
+
* @returns `true` when the **root** close tag has been received (collector
|
|
98
|
+
* deactivates itself and the result is ready). `false` for any
|
|
99
|
+
* nested close tag.
|
|
100
|
+
*/
|
|
101
|
+
feedClose(name) {
|
|
102
|
+
if (name === this.rootTag && this.depth === 0) {
|
|
103
|
+
this.buffer.push(`</${name}>`);
|
|
104
|
+
this.active = false;
|
|
105
|
+
this.lastOpenIndex = -1;
|
|
106
|
+
return true;
|
|
107
|
+
}
|
|
108
|
+
// Guard against depth going negative (e.g. mismatched close tags)
|
|
109
|
+
if (this.depth > 0) {
|
|
110
|
+
this.depth--;
|
|
111
|
+
}
|
|
112
|
+
// Collapse self-closing: if the close tag matches the last open tag and
|
|
113
|
+
// nothing was written between them, rewrite `<tag ...>` → `<tag ... />`
|
|
114
|
+
if (this.lastOpenIndex >= 0 && this.lastOpenIndex === this.buffer.length - 1) {
|
|
115
|
+
const openTag = this.buffer[this.lastOpenIndex];
|
|
116
|
+
// openTag ends with ">" — replace with " />"
|
|
117
|
+
this.buffer[this.lastOpenIndex] = openTag.slice(0, -1) + " />";
|
|
118
|
+
this.lastOpenIndex = -1;
|
|
119
|
+
return false;
|
|
120
|
+
}
|
|
121
|
+
this.lastOpenIndex = -1;
|
|
122
|
+
this.buffer.push(`</${name}>`);
|
|
123
|
+
return false;
|
|
124
|
+
}
|
|
125
|
+
// ---------------------------------------------------------------------------
|
|
126
|
+
// Result
|
|
127
|
+
// ---------------------------------------------------------------------------
|
|
128
|
+
/** The collected XML string. Only meaningful after `feedClose` returns true. */
|
|
129
|
+
get result() {
|
|
130
|
+
return this.buffer.join("");
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
exports.RawXmlCollector = RawXmlCollector;
|
|
134
|
+
// ---------------------------------------------------------------------------
|
|
135
|
+
// Helpers
|
|
136
|
+
// ---------------------------------------------------------------------------
|
|
137
|
+
/**
|
|
138
|
+
* Serialize an attributes object to an XML attribute string.
|
|
139
|
+
* `null`, `undefined`, and empty objects produce an empty string.
|
|
140
|
+
*/
|
|
141
|
+
function serializeAttributes(attributes) {
|
|
142
|
+
if (!attributes) {
|
|
143
|
+
return "";
|
|
144
|
+
}
|
|
145
|
+
const entries = Object.entries(attributes);
|
|
146
|
+
if (entries.length === 0) {
|
|
147
|
+
return "";
|
|
148
|
+
}
|
|
149
|
+
return entries
|
|
150
|
+
.filter(([, v]) => v != null)
|
|
151
|
+
.map(([k, v]) => `${k}="${(0, utils_1.xmlEncode)(String(v))}"`)
|
|
152
|
+
.join(" ");
|
|
153
|
+
}
|
|
@@ -382,7 +382,7 @@ class CellXform extends base_xform_1.BaseXform {
|
|
|
382
382
|
return true;
|
|
383
383
|
case "r":
|
|
384
384
|
this.model.value = this.model.value || {};
|
|
385
|
-
this.model.value.richText = this.model.value.richText
|
|
385
|
+
this.model.value.richText = this.model.value.richText ?? [];
|
|
386
386
|
this.model.value.richText.push(this.parser.model);
|
|
387
387
|
this.parser = undefined;
|
|
388
388
|
this.currentNode = undefined;
|
|
@@ -253,7 +253,7 @@ class CfRuleXform extends composite_xform_1.CompositeXform {
|
|
|
253
253
|
break;
|
|
254
254
|
case "formula":
|
|
255
255
|
// except - formula is a string and appends to formulae
|
|
256
|
-
this.model.formulae = this.model.formulae
|
|
256
|
+
this.model.formulae = this.model.formulae ?? [];
|
|
257
257
|
this.model.formulae.push(parser.model);
|
|
258
258
|
break;
|
|
259
259
|
}
|
|
@@ -16,7 +16,7 @@ class ConditionalFormattingsXform extends base_xform_1.BaseXform {
|
|
|
16
16
|
}
|
|
17
17
|
prepare(model, options) {
|
|
18
18
|
// ensure each rule has a priority value
|
|
19
|
-
let nextPriority = model.reduce((p, cf) => Math.max(p, ...cf.rules.map((rule) => rule.priority
|
|
19
|
+
let nextPriority = model.reduce((p, cf) => Math.max(p, ...cf.rules.map((rule) => rule.priority ?? 0)), 1);
|
|
20
20
|
model.forEach((cf) => {
|
|
21
21
|
cf.rules.forEach((rule) => {
|
|
22
22
|
if (!rule.priority) {
|
|
@@ -64,7 +64,7 @@ class CfRuleExtXform extends composite_xform_1.CompositeXform {
|
|
|
64
64
|
xmlStream.openNode(this.tag, {
|
|
65
65
|
type: "iconSet",
|
|
66
66
|
priority: model.priority,
|
|
67
|
-
id: model.x14Id
|
|
67
|
+
id: model.x14Id ?? `{${(0, uuid_1.uuidV4)()}}`
|
|
68
68
|
});
|
|
69
69
|
this.iconSetXform.render(xmlStream, model);
|
|
70
70
|
xmlStream.closeNode();
|
|
@@ -41,9 +41,9 @@ class ColXform extends base_xform_1.BaseXform {
|
|
|
41
41
|
parseOpen(node) {
|
|
42
42
|
if (node.name === "col") {
|
|
43
43
|
const model = (this.model = {
|
|
44
|
-
min: parseInt(node.attributes.min
|
|
45
|
-
max: parseInt(node.attributes.max
|
|
46
|
-
width: node.attributes.width === undefined ? undefined : parseFloat(node.attributes.width
|
|
44
|
+
min: parseInt(node.attributes.min ?? "0", 10),
|
|
45
|
+
max: parseInt(node.attributes.max ?? "0", 10),
|
|
46
|
+
width: node.attributes.width === undefined ? undefined : parseFloat(node.attributes.width ?? "0")
|
|
47
47
|
});
|
|
48
48
|
if (node.attributes.style) {
|
|
49
49
|
model.styleId = parseInt(node.attributes.style, 10);
|
|
@@ -162,7 +162,7 @@ class DataValidationsXform extends base_xform_1.BaseXform {
|
|
|
162
162
|
xmlStream.addAttribute("error", value.error);
|
|
163
163
|
}
|
|
164
164
|
xmlStream.addAttribute("sqref", value.sqref);
|
|
165
|
-
(value.formulae
|
|
165
|
+
(value.formulae ?? []).forEach((formula, index) => {
|
|
166
166
|
xmlStream.openNode(`formula${index + 1}`);
|
|
167
167
|
if (value.type === "date") {
|
|
168
168
|
xmlStream.writeText((0, utils_1.dateToExcel)(new Date(formula)));
|
|
@@ -184,7 +184,7 @@ class DataValidationsXform extends base_xform_1.BaseXform {
|
|
|
184
184
|
return true;
|
|
185
185
|
case "dataValidation": {
|
|
186
186
|
this._address = node.attributes.sqref;
|
|
187
|
-
const dataValidation = { type: node.attributes.type
|
|
187
|
+
const dataValidation = { type: node.attributes.type ?? "any", formulae: [] };
|
|
188
188
|
if (node.attributes.type) {
|
|
189
189
|
assignBool(dataValidation, node.attributes, "allowBlank");
|
|
190
190
|
}
|
|
@@ -230,7 +230,7 @@ class DataValidationsXform extends base_xform_1.BaseXform {
|
|
|
230
230
|
delete this._dataValidation.operator;
|
|
231
231
|
}
|
|
232
232
|
// The four known cases: 1. E4:L9 N4:U9 2.E4 L9 3. N4:U9 4. E4
|
|
233
|
-
const list = this._address.split(/\s+/g)
|
|
233
|
+
const list = this._address.split(/\s+/g);
|
|
234
234
|
list.forEach((addr) => {
|
|
235
235
|
if (addr.includes(":")) {
|
|
236
236
|
// Store ranges directly to avoid expanding large (or many) validations.
|
|
@@ -88,22 +88,22 @@ class HeaderFooterXform extends base_xform_1.BaseXform {
|
|
|
88
88
|
parseText(text) {
|
|
89
89
|
switch (this.currentNode) {
|
|
90
90
|
case "oddHeader":
|
|
91
|
-
this.model.oddHeader = (this.model.oddHeader
|
|
91
|
+
this.model.oddHeader = (this.model.oddHeader ?? "") + text;
|
|
92
92
|
break;
|
|
93
93
|
case "oddFooter":
|
|
94
|
-
this.model.oddFooter = (this.model.oddFooter
|
|
94
|
+
this.model.oddFooter = (this.model.oddFooter ?? "") + text;
|
|
95
95
|
break;
|
|
96
96
|
case "evenHeader":
|
|
97
|
-
this.model.evenHeader = (this.model.evenHeader
|
|
97
|
+
this.model.evenHeader = (this.model.evenHeader ?? "") + text;
|
|
98
98
|
break;
|
|
99
99
|
case "evenFooter":
|
|
100
|
-
this.model.evenFooter = (this.model.evenFooter
|
|
100
|
+
this.model.evenFooter = (this.model.evenFooter ?? "") + text;
|
|
101
101
|
break;
|
|
102
102
|
case "firstHeader":
|
|
103
|
-
this.model.firstHeader = (this.model.firstHeader
|
|
103
|
+
this.model.firstHeader = (this.model.firstHeader ?? "") + text;
|
|
104
104
|
break;
|
|
105
105
|
case "firstFooter":
|
|
106
|
-
this.model.firstFooter = (this.model.firstFooter
|
|
106
|
+
this.model.firstFooter = (this.model.firstFooter ?? "") + text;
|
|
107
107
|
break;
|
|
108
108
|
default:
|
|
109
109
|
break;
|
|
@@ -84,21 +84,21 @@ class PageSetupXform extends base_xform_1.BaseXform {
|
|
|
84
84
|
case this.tag:
|
|
85
85
|
this.model = {
|
|
86
86
|
paperSize: pageSizeToModel(node.attributes.paperSize),
|
|
87
|
-
orientation: node.attributes.orientation
|
|
88
|
-
horizontalDpi: parseInt(node.attributes.horizontalDpi
|
|
89
|
-
verticalDpi: parseInt(node.attributes.verticalDpi
|
|
90
|
-
pageOrder: node.attributes.pageOrder
|
|
87
|
+
orientation: node.attributes.orientation ?? "portrait",
|
|
88
|
+
horizontalDpi: parseInt(node.attributes.horizontalDpi ?? "4294967295", 10),
|
|
89
|
+
verticalDpi: parseInt(node.attributes.verticalDpi ?? "4294967295", 10),
|
|
90
|
+
pageOrder: node.attributes.pageOrder ?? "downThenOver",
|
|
91
91
|
blackAndWhite: node.attributes.blackAndWhite === "1",
|
|
92
92
|
draft: node.attributes.draft === "1",
|
|
93
|
-
cellComments: node.attributes.cellComments
|
|
94
|
-
errors: node.attributes.errors
|
|
95
|
-
scale: parseInt(node.attributes.scale
|
|
96
|
-
fitToWidth: parseInt(node.attributes.fitToWidth
|
|
97
|
-
fitToHeight: parseInt(node.attributes.fitToHeight
|
|
98
|
-
firstPageNumber: parseInt(node.attributes.firstPageNumber
|
|
93
|
+
cellComments: node.attributes.cellComments ?? "None",
|
|
94
|
+
errors: node.attributes.errors ?? "displayed",
|
|
95
|
+
scale: parseInt(node.attributes.scale ?? "100", 10),
|
|
96
|
+
fitToWidth: parseInt(node.attributes.fitToWidth ?? "1", 10),
|
|
97
|
+
fitToHeight: parseInt(node.attributes.fitToHeight ?? "1", 10),
|
|
98
|
+
firstPageNumber: parseInt(node.attributes.firstPageNumber ?? "1", 10),
|
|
99
99
|
useFirstPageNumber: node.attributes.useFirstPageNumber === "1",
|
|
100
100
|
usePrinterDefaults: node.attributes.usePrinterDefaults === "1",
|
|
101
|
-
copies: parseInt(node.attributes.copies
|
|
101
|
+
copies: parseInt(node.attributes.copies ?? "1", 10)
|
|
102
102
|
};
|
|
103
103
|
return true;
|
|
104
104
|
default:
|
|
@@ -32,12 +32,12 @@ class SheetFormatPropertiesXform extends base_xform_1.BaseXform {
|
|
|
32
32
|
parseOpen(node) {
|
|
33
33
|
if (node.name === "sheetFormatPr") {
|
|
34
34
|
this.model = {
|
|
35
|
-
defaultRowHeight: parseFloat(node.attributes.defaultRowHeight
|
|
35
|
+
defaultRowHeight: parseFloat(node.attributes.defaultRowHeight ?? "0"),
|
|
36
36
|
dyDescent: node.attributes["x14ac:dyDescent"] !== undefined
|
|
37
37
|
? parseFloat(node.attributes["x14ac:dyDescent"])
|
|
38
38
|
: undefined,
|
|
39
|
-
outlineLevelRow: parseInt(node.attributes.outlineLevelRow
|
|
40
|
-
outlineLevelCol: parseInt(node.attributes.outlineLevelCol
|
|
39
|
+
outlineLevelRow: parseInt(node.attributes.outlineLevelRow ?? "0", 10),
|
|
40
|
+
outlineLevelCol: parseInt(node.attributes.outlineLevelCol ?? "0", 10)
|
|
41
41
|
};
|
|
42
42
|
if (node.attributes.defaultColWidth) {
|
|
43
43
|
this.model.defaultColWidth = parseFloat(node.attributes.defaultColWidth);
|
|
@@ -28,7 +28,7 @@ class SheetViewXform extends base_xform_1.BaseXform {
|
|
|
28
28
|
if (model.tabSelected) {
|
|
29
29
|
initialAttrs.tabSelected = "1";
|
|
30
30
|
}
|
|
31
|
-
initialAttrs.workbookViewId = model.workbookViewId
|
|
31
|
+
initialAttrs.workbookViewId = model.workbookViewId ?? 0;
|
|
32
32
|
xmlStream.openNode("sheetView", initialAttrs);
|
|
33
33
|
const add = function (name, value, included) {
|
|
34
34
|
if (included) {
|
|
@@ -49,8 +49,8 @@ class SheetViewXform extends base_xform_1.BaseXform {
|
|
|
49
49
|
let activePane;
|
|
50
50
|
switch (model.state) {
|
|
51
51
|
case "frozen":
|
|
52
|
-
xSplit = model.xSplit
|
|
53
|
-
ySplit = model.ySplit
|
|
52
|
+
xSplit = model.xSplit ?? 0;
|
|
53
|
+
ySplit = model.ySplit ?? 0;
|
|
54
54
|
topLeftCell = model.topLeftCell || col_cache_1.colCache.getAddress(ySplit + 1, xSplit + 1).address;
|
|
55
55
|
activePane =
|
|
56
56
|
(model.xSplit && model.ySplit && "bottomRight") ||
|
|
@@ -108,8 +108,8 @@ class SheetViewXform extends base_xform_1.BaseXform {
|
|
|
108
108
|
showRuler: !(node.attributes.showRuler === "0"),
|
|
109
109
|
showRowColHeaders: !(node.attributes.showRowColHeaders === "0"),
|
|
110
110
|
showGridLines: !(node.attributes.showGridLines === "0"),
|
|
111
|
-
zoomScale: parseInt(node.attributes.zoomScale
|
|
112
|
-
zoomScaleNormal: parseInt(node.attributes.zoomScaleNormal
|
|
111
|
+
zoomScale: parseInt(node.attributes.zoomScale ?? "100", 10),
|
|
112
|
+
zoomScaleNormal: parseInt(node.attributes.zoomScaleNormal ?? "100", 10),
|
|
113
113
|
style: node.attributes.view
|
|
114
114
|
};
|
|
115
115
|
this.pane = undefined;
|
|
@@ -117,15 +117,15 @@ class SheetViewXform extends base_xform_1.BaseXform {
|
|
|
117
117
|
return true;
|
|
118
118
|
case "pane":
|
|
119
119
|
this.pane = {
|
|
120
|
-
xSplit: parseInt(node.attributes.xSplit
|
|
121
|
-
ySplit: parseInt(node.attributes.ySplit
|
|
120
|
+
xSplit: parseInt(node.attributes.xSplit ?? "0", 10),
|
|
121
|
+
ySplit: parseInt(node.attributes.ySplit ?? "0", 10),
|
|
122
122
|
topLeftCell: node.attributes.topLeftCell,
|
|
123
|
-
activePane: node.attributes.activePane
|
|
123
|
+
activePane: node.attributes.activePane ?? "topLeft",
|
|
124
124
|
state: node.attributes.state
|
|
125
125
|
};
|
|
126
126
|
return true;
|
|
127
127
|
case "selection": {
|
|
128
|
-
const name = node.attributes.pane
|
|
128
|
+
const name = node.attributes.pane ?? "topLeft";
|
|
129
129
|
this.selections[name] = {
|
|
130
130
|
pane: name,
|
|
131
131
|
activeCell: node.attributes.activeCell
|
|
@@ -147,7 +147,7 @@ class SheetViewXform extends base_xform_1.BaseXform {
|
|
|
147
147
|
workbookViewId: this.sheetView.workbookViewId,
|
|
148
148
|
rightToLeft: this.sheetView.rightToLeft,
|
|
149
149
|
tabSelected: this.sheetView.tabSelected,
|
|
150
|
-
state: VIEW_STATES[this.pane.state]
|
|
150
|
+
state: VIEW_STATES[this.pane.state] ?? "split", // split is default
|
|
151
151
|
xSplit: this.pane.xSplit,
|
|
152
152
|
ySplit: this.pane.ySplit,
|
|
153
153
|
topLeftCell: this.pane.topLeftCell,
|
|
@@ -88,7 +88,7 @@ class WorkSheetXform extends base_xform_1.BaseXform {
|
|
|
88
88
|
constructor(options) {
|
|
89
89
|
super();
|
|
90
90
|
const { maxRows, maxCols, ignoreNodes } = options || {};
|
|
91
|
-
this.ignoreNodes = ignoreNodes
|
|
91
|
+
this.ignoreNodes = ignoreNodes ?? [];
|
|
92
92
|
this.map = {
|
|
93
93
|
sheetPr: new sheet_properties_xform_1.SheetPropertiesXform(),
|
|
94
94
|
dimension: new dimension_xform_1.DimensionXform(),
|
|
@@ -296,7 +296,7 @@ class WorkSheetXform extends base_xform_1.BaseXform {
|
|
|
296
296
|
});
|
|
297
297
|
});
|
|
298
298
|
// prepare pivot tables
|
|
299
|
-
(model.pivotTables
|
|
299
|
+
(model.pivotTables ?? []).forEach((pivotTable) => {
|
|
300
300
|
rels.push({
|
|
301
301
|
Id: nextRid(rels),
|
|
302
302
|
Type: rel_type_1.RelType.PivotTable,
|
|
@@ -560,8 +560,8 @@ class WorkSheetXform extends base_xform_1.BaseXform {
|
|
|
560
560
|
drawing: this.map.drawing.model,
|
|
561
561
|
tables: this.map.tableParts.model,
|
|
562
562
|
conditionalFormattings,
|
|
563
|
-
rowBreaks: this.map.rowBreaks.model
|
|
564
|
-
colBreaks: this.map.colBreaks.model
|
|
563
|
+
rowBreaks: this.map.rowBreaks.model ?? [],
|
|
564
|
+
colBreaks: this.map.colBreaks.model ?? []
|
|
565
565
|
};
|
|
566
566
|
if (this.map.autoFilter.model) {
|
|
567
567
|
this.model.autoFilter = this.map.autoFilter.model;
|
|
@@ -579,7 +579,7 @@ class WorkSheetXform extends base_xform_1.BaseXform {
|
|
|
579
579
|
reconcile(model, options) {
|
|
580
580
|
// options.merges = new Merges();
|
|
581
581
|
// options.merges.reconcile(model.mergeCells, model.rows);
|
|
582
|
-
const rels = (model.relationships
|
|
582
|
+
const rels = (model.relationships ?? []).reduce((h, rel) => {
|
|
583
583
|
h[rel.Id] = rel;
|
|
584
584
|
if (rel.Type === rel_type_1.RelType.Comments) {
|
|
585
585
|
model.comments = options.comments[rel.Target].comments;
|
|
@@ -592,13 +592,13 @@ class WorkSheetXform extends base_xform_1.BaseXform {
|
|
|
592
592
|
}
|
|
593
593
|
return h;
|
|
594
594
|
}, {});
|
|
595
|
-
options.commentsMap = (model.comments
|
|
595
|
+
options.commentsMap = (model.comments ?? []).reduce((h, comment) => {
|
|
596
596
|
if (comment.ref) {
|
|
597
597
|
h[comment.ref] = comment;
|
|
598
598
|
}
|
|
599
599
|
return h;
|
|
600
600
|
}, {});
|
|
601
|
-
options.hyperlinkMap = (model.hyperlinks
|
|
601
|
+
options.hyperlinkMap = (model.hyperlinks ?? []).reduce((h, hyperlink) => {
|
|
602
602
|
if (hyperlink.rId) {
|
|
603
603
|
h[hyperlink.address] = rels[hyperlink.rId].Target;
|
|
604
604
|
}
|
|
@@ -606,9 +606,9 @@ class WorkSheetXform extends base_xform_1.BaseXform {
|
|
|
606
606
|
}, {});
|
|
607
607
|
options.formulae = {};
|
|
608
608
|
// compact the rows and cells
|
|
609
|
-
model.rows =
|
|
609
|
+
model.rows = model.rows?.filter(Boolean) ?? [];
|
|
610
610
|
model.rows.forEach(row => {
|
|
611
|
-
row.cells =
|
|
611
|
+
row.cells = row.cells?.filter(Boolean) ?? [];
|
|
612
612
|
});
|
|
613
613
|
this.map.cols.reconcile(model.cols, options);
|
|
614
614
|
this.map.sheetData.reconcile(model.rows, options);
|
|
@@ -626,7 +626,7 @@ class WorkSheetXform extends base_xform_1.BaseXform {
|
|
|
626
626
|
model.drawing = {
|
|
627
627
|
...drawing,
|
|
628
628
|
name: drawingName,
|
|
629
|
-
rels: options.drawingRels?.[drawingName]
|
|
629
|
+
rels: options.drawingRels?.[drawingName] ?? drawing.rels ?? []
|
|
630
630
|
};
|
|
631
631
|
// Also extract images to model.media for backward compatibility
|
|
632
632
|
drawing.anchors.forEach(anchor => {
|
|
@@ -654,14 +654,14 @@ class WorkSheetXform extends base_xform_1.BaseXform {
|
|
|
654
654
|
});
|
|
655
655
|
}
|
|
656
656
|
}
|
|
657
|
-
model.tables = (model.tables
|
|
657
|
+
model.tables = (model.tables ?? []).map(tablePart => {
|
|
658
658
|
const rel = rels[tablePart.rId];
|
|
659
659
|
return options.tables[rel.Target];
|
|
660
660
|
});
|
|
661
661
|
// Link pivot tables from relationships to worksheet
|
|
662
662
|
// This is needed so that when writing, the worksheet knows which pivot tables it contains
|
|
663
663
|
model.pivotTables = [];
|
|
664
|
-
(model.relationships
|
|
664
|
+
(model.relationships ?? []).forEach(rel => {
|
|
665
665
|
if (rel.Type === rel_type_1.RelType.PivotTable && options.pivotTables) {
|
|
666
666
|
const pivotTable = options.pivotTables[rel.Target];
|
|
667
667
|
if (pivotTable) {
|
|
@@ -17,8 +17,8 @@ class PhoneticTextXform extends base_xform_1.BaseXform {
|
|
|
17
17
|
}
|
|
18
18
|
render(xmlStream, model) {
|
|
19
19
|
xmlStream.openNode(this.tag, {
|
|
20
|
-
sb: model.sb
|
|
21
|
-
eb: model.eb
|
|
20
|
+
sb: model.sb ?? 0,
|
|
21
|
+
eb: model.eb ?? 0
|
|
22
22
|
});
|
|
23
23
|
if (model && Object.prototype.hasOwnProperty.call(model, "richText") && model.richText) {
|
|
24
24
|
const { r } = this.map;
|
|
@@ -19,13 +19,13 @@ class StyleXform extends base_xform_1.BaseXform {
|
|
|
19
19
|
}
|
|
20
20
|
render(xmlStream, model) {
|
|
21
21
|
xmlStream.openNode("xf", {
|
|
22
|
-
numFmtId: model.numFmtId
|
|
23
|
-
fontId: model.fontId
|
|
24
|
-
fillId: model.fillId
|
|
25
|
-
borderId: model.borderId
|
|
22
|
+
numFmtId: model.numFmtId ?? 0,
|
|
23
|
+
fontId: model.fontId ?? 0,
|
|
24
|
+
fillId: model.fillId ?? 0,
|
|
25
|
+
borderId: model.borderId ?? 0
|
|
26
26
|
});
|
|
27
27
|
if (this.xfId) {
|
|
28
|
-
xmlStream.addAttribute("xfId", model.xfId
|
|
28
|
+
xmlStream.addAttribute("xfId", model.xfId ?? 0);
|
|
29
29
|
}
|
|
30
30
|
if (model.applyNumberFormat || model.numFmtId) {
|
|
31
31
|
xmlStream.addAttribute("applyNumberFormat", "1");
|