@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
|
@@ -35,10 +35,10 @@ export class WorkbookWriterBase {
|
|
|
35
35
|
this.WorksheetWriterClass = WorksheetWriterClass;
|
|
36
36
|
this.created = options.created || new Date();
|
|
37
37
|
this.modified = options.modified || this.created;
|
|
38
|
-
this.creator = options.creator
|
|
39
|
-
this.lastModifiedBy = options.lastModifiedBy
|
|
38
|
+
this.creator = options.creator ?? "ExcelTS";
|
|
39
|
+
this.lastModifiedBy = options.lastModifiedBy ?? "ExcelTS";
|
|
40
40
|
this.lastPrinted = options.lastPrinted;
|
|
41
|
-
this.useSharedStrings = options.useSharedStrings
|
|
41
|
+
this.useSharedStrings = options.useSharedStrings ?? false;
|
|
42
42
|
this.sharedStrings = new SharedStrings();
|
|
43
43
|
this.styles = options.useStyles ? new StylesXform(true) : new StylesXform.Mock(true);
|
|
44
44
|
this._definedNames = new DefinedNames();
|
|
@@ -170,7 +170,7 @@ export class WorkbookWriterBase {
|
|
|
170
170
|
opts.properties = { tabColor: opts.tabColor, ...opts.properties };
|
|
171
171
|
}
|
|
172
172
|
const id = this.nextId;
|
|
173
|
-
name = name
|
|
173
|
+
name = name ?? `sheet${id}`;
|
|
174
174
|
const worksheet = new this.WorksheetWriterClass({
|
|
175
175
|
id,
|
|
176
176
|
name,
|
|
@@ -165,7 +165,7 @@ class WorksheetReader extends EventEmitter {
|
|
|
165
165
|
min: parseInt(node.attributes.min, 10),
|
|
166
166
|
max: parseInt(node.attributes.max, 10),
|
|
167
167
|
width: parseFloat(node.attributes.width),
|
|
168
|
-
styleId: parseInt(node.attributes.style
|
|
168
|
+
styleId: parseInt(node.attributes.style ?? "0", 10)
|
|
169
169
|
});
|
|
170
170
|
}
|
|
171
171
|
break;
|
|
@@ -64,7 +64,7 @@ class WorksheetWriter {
|
|
|
64
64
|
// and a name
|
|
65
65
|
this.name = options.name || `Sheet${this.id}`;
|
|
66
66
|
// add a state
|
|
67
|
-
this.state = options.state
|
|
67
|
+
this.state = options.state ?? "visible";
|
|
68
68
|
// rows are stored here while they need to be worked on.
|
|
69
69
|
// when they are committed, they will be deleted.
|
|
70
70
|
this._rows = [];
|
|
@@ -138,13 +138,13 @@ class WorksheetWriter {
|
|
|
138
138
|
colBreaks: null
|
|
139
139
|
}, options.pageSetup);
|
|
140
140
|
// using shared strings creates a smaller xlsx file but may use more memory
|
|
141
|
-
this.useSharedStrings = options.useSharedStrings
|
|
141
|
+
this.useSharedStrings = options.useSharedStrings ?? false;
|
|
142
142
|
this._workbook = options.workbook;
|
|
143
143
|
this.hasComments = false;
|
|
144
144
|
// views
|
|
145
|
-
this._views = options.views
|
|
145
|
+
this._views = options.views ?? [];
|
|
146
146
|
// auto filter
|
|
147
|
-
this.autoFilter = options.autoFilter
|
|
147
|
+
this.autoFilter = options.autoFilter ?? null;
|
|
148
148
|
this._media = [];
|
|
149
149
|
// worksheet protection
|
|
150
150
|
this.sheetProtection = null;
|
|
@@ -104,7 +104,7 @@ class Table {
|
|
|
104
104
|
case "sum":
|
|
105
105
|
return `SUBTOTAL(109,${this.table.name}[${column.name}])`;
|
|
106
106
|
case "custom":
|
|
107
|
-
return column.totalsRowFormula
|
|
107
|
+
return column.totalsRowFormula ?? null;
|
|
108
108
|
default:
|
|
109
109
|
throw new Error(`Invalid Totals Row Function: ${column.totalsRowFunction}`);
|
|
110
110
|
}
|
|
@@ -166,7 +166,7 @@ class Table {
|
|
|
166
166
|
}
|
|
167
167
|
else {
|
|
168
168
|
assign(column, "totalsRowFunction", "none");
|
|
169
|
-
column.totalsRowFormula = this.getFormula(column)
|
|
169
|
+
column.totalsRowFormula = this.getFormula(column) ?? undefined;
|
|
170
170
|
}
|
|
171
171
|
});
|
|
172
172
|
}
|
|
@@ -107,7 +107,7 @@ export function getFormat(numFmtId) {
|
|
|
107
107
|
}
|
|
108
108
|
// Check default map
|
|
109
109
|
if (DEFAULT_MAP[numFmtId] !== undefined) {
|
|
110
|
-
return TABLE_FMT[DEFAULT_MAP[numFmtId]]
|
|
110
|
+
return TABLE_FMT[DEFAULT_MAP[numFmtId]] ?? "General";
|
|
111
111
|
}
|
|
112
112
|
return "General";
|
|
113
113
|
}
|
|
@@ -339,7 +339,7 @@ function formatGeneral(val) {
|
|
|
339
339
|
*/
|
|
340
340
|
function formatPercentage(val, fmt) {
|
|
341
341
|
// Count % signs
|
|
342
|
-
const percentCount = (fmt.match(/%/g)
|
|
342
|
+
const percentCount = (fmt.match(/%/g) ?? []).length;
|
|
343
343
|
// Multiply value by 100 for each %
|
|
344
344
|
const scaledVal = val * Math.pow(100, percentCount);
|
|
345
345
|
// Remove % from format to process the number part
|
|
@@ -553,7 +553,7 @@ function formatNumberPattern(val, fmt) {
|
|
|
553
553
|
formattedInt = commaify(intPart);
|
|
554
554
|
}
|
|
555
555
|
// Pad integer with leading zeros if needed
|
|
556
|
-
const minIntDigits = (intFmt.match(/0/g)
|
|
556
|
+
const minIntDigits = (intFmt.match(/0/g) ?? []).length;
|
|
557
557
|
if (formattedInt.length < minIntDigits) {
|
|
558
558
|
formattedInt = "0".repeat(minIntDigits - formattedInt.length) + formattedInt;
|
|
559
559
|
}
|
|
@@ -27,7 +27,7 @@ function slideFormula(formula, fromCell, toCell) {
|
|
|
27
27
|
if (!rowDollar) {
|
|
28
28
|
row += to.row - offset.row;
|
|
29
29
|
}
|
|
30
|
-
const res = (sheet
|
|
30
|
+
const res = (sheet ?? "") + (colDollar ?? "") + colCache.n2l(col) + (rowDollar ?? "") + row;
|
|
31
31
|
return res;
|
|
32
32
|
}
|
|
33
33
|
return refMatch;
|
|
@@ -132,7 +132,7 @@ class StreamBuf extends EventEmitter {
|
|
|
132
132
|
this._asyncWriteQueue = Promise.resolve();
|
|
133
133
|
this.bufSize = options?.bufSize || 1024 * 1024;
|
|
134
134
|
this.buffers = [];
|
|
135
|
-
this.batch = options?.batch
|
|
135
|
+
this.batch = options?.batch ?? false;
|
|
136
136
|
this.corked = false;
|
|
137
137
|
this.paused = false;
|
|
138
138
|
this.encoding = null;
|
|
@@ -345,7 +345,7 @@ class StreamBuf extends EventEmitter {
|
|
|
345
345
|
* Cross-platform compatible - works identically in Node.js and Browser.
|
|
346
346
|
*/
|
|
347
347
|
readString(encoding) {
|
|
348
|
-
const enc = encoding
|
|
348
|
+
const enc = encoding ?? this.encoding ?? "utf-8";
|
|
349
349
|
const buf = this.read();
|
|
350
350
|
if (typeof Buffer !== "undefined" && buf instanceof Buffer) {
|
|
351
351
|
return buf.toString(enc);
|
|
@@ -230,8 +230,8 @@ class Workbook {
|
|
|
230
230
|
// ===========================================================================
|
|
231
231
|
get model() {
|
|
232
232
|
return {
|
|
233
|
-
creator: this.creator
|
|
234
|
-
lastModifiedBy: this.lastModifiedBy
|
|
233
|
+
creator: this.creator ?? "Unknown",
|
|
234
|
+
lastModifiedBy: this.lastModifiedBy ?? "Unknown",
|
|
235
235
|
lastPrinted: this.lastPrinted,
|
|
236
236
|
created: this.created,
|
|
237
237
|
modified: this.modified,
|
|
@@ -293,10 +293,9 @@ class Workbook {
|
|
|
293
293
|
this._definedNames.model = value.definedNames;
|
|
294
294
|
this.views = value.views;
|
|
295
295
|
this._themes = value.themes;
|
|
296
|
-
this.media = value.media
|
|
296
|
+
this.media = value.media ?? [];
|
|
297
297
|
// Handle pivot tables - either newly created or loaded from file
|
|
298
|
-
|
|
299
|
-
this.pivotTables = value.pivotTables || value.loadedPivotTables || [];
|
|
298
|
+
this.pivotTables = value.pivotTables ?? [];
|
|
300
299
|
// Preserve passthrough files (charts, etc.) for round-trip preservation
|
|
301
300
|
this._passthrough = value.passthrough || {};
|
|
302
301
|
// Preserve raw drawing data for drawings with chart references
|
|
@@ -21,12 +21,12 @@ class Worksheet {
|
|
|
21
21
|
options = options || {};
|
|
22
22
|
this._workbook = options.workbook;
|
|
23
23
|
// in a workbook, each sheet will have a number
|
|
24
|
-
this.id = options.id
|
|
25
|
-
this.orderNo = options.orderNo
|
|
24
|
+
this.id = options.id ?? 0;
|
|
25
|
+
this.orderNo = options.orderNo ?? 0;
|
|
26
26
|
// and a name - use the setter to ensure validation and truncation
|
|
27
27
|
this.name = options.name || `sheet${this.id}`;
|
|
28
28
|
// add a state
|
|
29
|
-
this.state = options.state
|
|
29
|
+
this.state = options.state ?? "visible";
|
|
30
30
|
// rows allows access organised by row. Sparse array of arrays indexed by row-1, col
|
|
31
31
|
// Note: _rows is zero based. Must subtract 1 to go from cell.row to index
|
|
32
32
|
this._rows = [];
|
|
@@ -86,8 +86,8 @@ class Worksheet {
|
|
|
86
86
|
}, options.headerFooter);
|
|
87
87
|
this.dataValidations = new DataValidations();
|
|
88
88
|
// for freezepanes, split, zoom, gridlines, etc
|
|
89
|
-
this.views = options.views
|
|
90
|
-
this.autoFilter = options.autoFilter
|
|
89
|
+
this.views = options.views ?? [];
|
|
90
|
+
this.autoFilter = options.autoFilter ?? null;
|
|
91
91
|
// for images, etc
|
|
92
92
|
this._media = [];
|
|
93
93
|
// worksheet protection
|
|
@@ -250,7 +250,7 @@ class Worksheet {
|
|
|
250
250
|
if (inserts.length > 0) {
|
|
251
251
|
// must iterate over all rows whether they exist yet or not
|
|
252
252
|
for (let i = 0; i < nRows; i++) {
|
|
253
|
-
const insertValues = inserts.map(insert => insert[i]
|
|
253
|
+
const insertValues = inserts.map(insert => insert[i] ?? null);
|
|
254
254
|
const row = this.getRow(i + 1);
|
|
255
255
|
row.splice(start, count, ...insertValues);
|
|
256
256
|
}
|
|
@@ -930,7 +930,7 @@ class Worksheet {
|
|
|
930
930
|
};
|
|
931
931
|
// =================================================
|
|
932
932
|
// columns
|
|
933
|
-
model.cols = Column.toModel(this.columns
|
|
933
|
+
model.cols = Column.toModel(this.columns ?? []);
|
|
934
934
|
// ==========================================================
|
|
935
935
|
// Rows
|
|
936
936
|
const rows = (model.rows = []);
|
|
@@ -978,8 +978,8 @@ class Worksheet {
|
|
|
978
978
|
this.properties = value.properties;
|
|
979
979
|
this.pageSetup = value.pageSetup;
|
|
980
980
|
this.headerFooter = value.headerFooter;
|
|
981
|
-
this.rowBreaks = value.rowBreaks
|
|
982
|
-
this.colBreaks = value.colBreaks
|
|
981
|
+
this.rowBreaks = value.rowBreaks ?? [];
|
|
982
|
+
this.colBreaks = value.colBreaks ?? [];
|
|
983
983
|
this.views = value.views;
|
|
984
984
|
this.autoFilter = value.autoFilter;
|
|
985
985
|
this._media = value.media.map(medium => new Image(this, medium));
|
|
@@ -62,7 +62,7 @@ class BaseXform {
|
|
|
62
62
|
// ============================================================
|
|
63
63
|
reset() {
|
|
64
64
|
// to make sure parses don't bleed to next iteration
|
|
65
|
-
this.model =
|
|
65
|
+
this.model = undefined;
|
|
66
66
|
// if we have a map - reset them too
|
|
67
67
|
if (this.map) {
|
|
68
68
|
Object.values(this.map).forEach(xform => {
|
|
@@ -57,7 +57,7 @@ function isValidRange(range) {
|
|
|
57
57
|
return false;
|
|
58
58
|
}
|
|
59
59
|
// Extract the cell reference part (after the sheet name if present)
|
|
60
|
-
const cellRef = range.split("!").pop()
|
|
60
|
+
const cellRef = range.split("!").pop() ?? "";
|
|
61
61
|
// Must match one of the valid patterns
|
|
62
62
|
if (!cellRangeRegexp.test(cellRef) &&
|
|
63
63
|
!rowRangeRegexp.test(cellRef) &&
|
|
@@ -93,7 +93,7 @@ function extractRanges(parsedText) {
|
|
|
93
93
|
if (!item) {
|
|
94
94
|
return;
|
|
95
95
|
}
|
|
96
|
-
const quotes = (item.match(/'/g)
|
|
96
|
+
const quotes = (item.match(/'/g) ?? []).length;
|
|
97
97
|
if (!quotes) {
|
|
98
98
|
if (quotesOpened) {
|
|
99
99
|
last += `${item},`;
|
|
@@ -2,10 +2,10 @@ import { BaseXform } from "../base-xform.js";
|
|
|
2
2
|
class WorkbookViewXform extends BaseXform {
|
|
3
3
|
render(xmlStream, model) {
|
|
4
4
|
const attributes = {
|
|
5
|
-
xWindow: model.x
|
|
6
|
-
yWindow: model.y
|
|
7
|
-
windowWidth: model.width
|
|
8
|
-
windowHeight: model.height
|
|
5
|
+
xWindow: model.x ?? 0,
|
|
6
|
+
yWindow: model.y ?? 0,
|
|
7
|
+
windowWidth: model.width ?? 12000,
|
|
8
|
+
windowHeight: model.height ?? 24000,
|
|
9
9
|
firstSheet: model.firstSheet,
|
|
10
10
|
activeTab: model.activeTab
|
|
11
11
|
};
|
|
@@ -74,7 +74,7 @@ class WorkbookXform extends BaseXform {
|
|
|
74
74
|
if (printAreas.length) {
|
|
75
75
|
model.definedNames = model.definedNames.concat(printAreas);
|
|
76
76
|
}
|
|
77
|
-
(model.media
|
|
77
|
+
(model.media ?? []).forEach((medium, i) => {
|
|
78
78
|
// assign name
|
|
79
79
|
medium.name = medium.type + (i + 1);
|
|
80
80
|
});
|
|
@@ -88,7 +88,19 @@ class WorkbookXform extends BaseXform {
|
|
|
88
88
|
this.map.sheets.render(xmlStream, model.sheets);
|
|
89
89
|
this.map.definedNames.render(xmlStream, model.definedNames);
|
|
90
90
|
this.map.calcPr.render(xmlStream, model.calcProperties);
|
|
91
|
-
|
|
91
|
+
// R9-B6: Deduplicate pivot caches by cacheId before rendering.
|
|
92
|
+
// Multiple pivot tables may share the same cache, but workbook.xml should
|
|
93
|
+
// only list each cache once in <pivotCaches>.
|
|
94
|
+
const pivotTables = model.pivotTables ?? [];
|
|
95
|
+
const seenCacheIds = new Set();
|
|
96
|
+
const uniquePivotCaches = pivotTables.filter((pt) => {
|
|
97
|
+
if (seenCacheIds.has(pt.cacheId)) {
|
|
98
|
+
return false;
|
|
99
|
+
}
|
|
100
|
+
seenCacheIds.add(pt.cacheId);
|
|
101
|
+
return true;
|
|
102
|
+
});
|
|
103
|
+
this.map.pivotCaches.render(xmlStream, uniquePivotCaches);
|
|
92
104
|
xmlStream.closeNode();
|
|
93
105
|
}
|
|
94
106
|
parseOpen(node) {
|
|
@@ -140,7 +152,7 @@ class WorkbookXform extends BaseXform {
|
|
|
140
152
|
}
|
|
141
153
|
}
|
|
142
154
|
reconcile(model) {
|
|
143
|
-
const rels = (model.workbookRels
|
|
155
|
+
const rels = (model.workbookRels ?? []).reduce((map, rel) => {
|
|
144
156
|
map[rel.Id] = rel;
|
|
145
157
|
return map;
|
|
146
158
|
}, {});
|
|
@@ -148,7 +160,7 @@ class WorkbookXform extends BaseXform {
|
|
|
148
160
|
const worksheets = [];
|
|
149
161
|
let worksheet;
|
|
150
162
|
let index = 0;
|
|
151
|
-
(model.sheets
|
|
163
|
+
(model.sheets ?? []).forEach((sheet) => {
|
|
152
164
|
const rel = rels[sheet.rId];
|
|
153
165
|
if (!rel) {
|
|
154
166
|
return;
|
|
@@ -13,7 +13,7 @@ class VmlShapeXform extends BaseXform {
|
|
|
13
13
|
return "v:shape";
|
|
14
14
|
}
|
|
15
15
|
render(xmlStream, model, index) {
|
|
16
|
-
xmlStream.openNode("v:shape", VmlShapeXform.V_SHAPE_ATTRIBUTES(model, index
|
|
16
|
+
xmlStream.openNode("v:shape", VmlShapeXform.V_SHAPE_ATTRIBUTES(model, index ?? 0));
|
|
17
17
|
xmlStream.leafNode("v:fill", { color2: "infoBackground [80]" });
|
|
18
18
|
xmlStream.leafNode("v:shadow", { color: "none [81]", obscured: "t" });
|
|
19
19
|
xmlStream.leafNode("v:path", { "o:connecttype": "none" });
|
|
@@ -11,7 +11,7 @@ class VmlTextboxXform extends BaseXform {
|
|
|
11
11
|
return `${(parseFloat(value.toString()) * multiple).toFixed(2)}${unit}`;
|
|
12
12
|
}
|
|
13
13
|
reverseConversionUnit(inset) {
|
|
14
|
-
return (inset
|
|
14
|
+
return (inset ?? "").split(",").map(margin => {
|
|
15
15
|
return Number(parseFloat(this.conversionUnit(parseFloat(margin), 0.1, "")).toFixed(2));
|
|
16
16
|
});
|
|
17
17
|
}
|
|
@@ -21,7 +21,7 @@ class AppXform extends BaseXform {
|
|
|
21
21
|
xmlStream.leafNode("ScaleCrop", undefined, "false");
|
|
22
22
|
this.map.HeadingPairs.render(xmlStream, model.worksheets);
|
|
23
23
|
this.map.TitlesOfParts.render(xmlStream, model.worksheets);
|
|
24
|
-
this.map.Company.render(xmlStream, model.company
|
|
24
|
+
this.map.Company.render(xmlStream, model.company ?? "");
|
|
25
25
|
this.map.Manager.render(xmlStream, model.manager);
|
|
26
26
|
xmlStream.leafNode("LinksUpToDate", undefined, "false");
|
|
27
27
|
xmlStream.leafNode("SharedDoc", undefined, "false");
|
|
@@ -8,7 +8,7 @@ class ContentTypesXform extends BaseXform {
|
|
|
8
8
|
xmlStream.openXml(XmlStream.StdDocAttributes);
|
|
9
9
|
xmlStream.openNode("Types", ContentTypesXform.PROPERTY_ATTRIBUTES);
|
|
10
10
|
const mediaHash = {};
|
|
11
|
-
(model.media
|
|
11
|
+
(model.media ?? []).forEach((medium) => {
|
|
12
12
|
if (medium.type === "image") {
|
|
13
13
|
const imageType = medium.extension;
|
|
14
14
|
if (!mediaHash[imageType]) {
|
|
@@ -37,18 +37,31 @@ class ContentTypesXform extends BaseXform {
|
|
|
37
37
|
ContentType: "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml"
|
|
38
38
|
});
|
|
39
39
|
});
|
|
40
|
-
if ((model.pivotTables
|
|
40
|
+
if ((model.pivotTables ?? []).length) {
|
|
41
|
+
// R9-B6: Deduplicate cache content types by cacheId. When multiple pivot tables
|
|
42
|
+
// share the same cache, the cache definition/records files are written only once.
|
|
43
|
+
const writtenCacheIds = new Set();
|
|
41
44
|
// Add content types for each pivot table
|
|
42
|
-
(model.pivotTables
|
|
45
|
+
(model.pivotTables ?? []).forEach((pivotTable) => {
|
|
43
46
|
const n = pivotTable.tableNumber;
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
47
|
+
const cacheId = pivotTable.cacheId;
|
|
48
|
+
if (!writtenCacheIds.has(cacheId)) {
|
|
49
|
+
writtenCacheIds.add(cacheId);
|
|
50
|
+
xmlStream.leafNode("Override", {
|
|
51
|
+
PartName: toContentTypesPartName(pivotCacheDefinitionPath(n)),
|
|
52
|
+
ContentType: "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheDefinition+xml"
|
|
53
|
+
});
|
|
54
|
+
// R9-B5: Only register cacheRecords content type when the file actually exists.
|
|
55
|
+
// Loaded pivot tables may lack cacheRecords (e.g. OLAP sources).
|
|
56
|
+
const hasCacheRecords = pivotTable.isLoaded ? !!pivotTable.cacheRecords : true;
|
|
57
|
+
if (hasCacheRecords) {
|
|
58
|
+
xmlStream.leafNode("Override", {
|
|
59
|
+
PartName: toContentTypesPartName(pivotCacheRecordsPath(n)),
|
|
60
|
+
ContentType: "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheRecords+xml"
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
// Each pivot table always has its own file
|
|
52
65
|
xmlStream.leafNode("Override", {
|
|
53
66
|
PartName: toContentTypesPartName(pivotTablePath(n)),
|
|
54
67
|
ContentType: "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotTable+xml"
|
|
@@ -19,8 +19,8 @@ class ExtXform extends BaseXform {
|
|
|
19
19
|
parseOpen(node) {
|
|
20
20
|
if (node.name === this.tag) {
|
|
21
21
|
this.model = {
|
|
22
|
-
width: parseInt(node.attributes.cx
|
|
23
|
-
height: parseInt(node.attributes.cy
|
|
22
|
+
width: parseInt(node.attributes.cx ?? "0", 10) / EMU_PER_PIXEL_AT_96_DPI,
|
|
23
|
+
height: parseInt(node.attributes.cy ?? "0", 10) / EMU_PER_PIXEL_AT_96_DPI
|
|
24
24
|
};
|
|
25
25
|
return true;
|
|
26
26
|
}
|
|
@@ -20,7 +20,7 @@ class OneCellAnchorXform extends BaseCellAnchorXform {
|
|
|
20
20
|
this.map["xdr:pic"].prepare(model.picture, options);
|
|
21
21
|
}
|
|
22
22
|
render(xmlStream, model) {
|
|
23
|
-
xmlStream.openNode(this.tag, { editAs: model.range.editAs
|
|
23
|
+
xmlStream.openNode(this.tag, { editAs: model.range.editAs ?? "oneCell" });
|
|
24
24
|
this.map["xdr:from"].render(xmlStream, model.range.tl);
|
|
25
25
|
this.map["xdr:ext"].render(xmlStream, model.range.ext);
|
|
26
26
|
this.map["xdr:pic"].render(xmlStream, model.picture);
|
|
@@ -37,7 +37,7 @@ class TwoCellAnchorXform extends BaseCellAnchorXform {
|
|
|
37
37
|
: {})
|
|
38
38
|
});
|
|
39
39
|
}
|
|
40
|
-
xmlStream.openNode(this.tag, { editAs: model.range.editAs
|
|
40
|
+
xmlStream.openNode(this.tag, { editAs: model.range.editAs ?? "oneCell" });
|
|
41
41
|
this.map["xdr:from"].render(xmlStream, model.range.tl);
|
|
42
42
|
this.map["xdr:to"].render(xmlStream, model.range.br);
|
|
43
43
|
if (model.picture) {
|
|
@@ -6,7 +6,7 @@ class ListXform extends BaseXform {
|
|
|
6
6
|
this.always = !!options.always;
|
|
7
7
|
this.count = options.count;
|
|
8
8
|
this.empty = options.empty;
|
|
9
|
-
this.$count = options.$count
|
|
9
|
+
this.$count = options.$count ?? "count";
|
|
10
10
|
this.$ = options.$;
|
|
11
11
|
this.childXform = options.childXform;
|
|
12
12
|
this.maxItems = options.maxItems;
|
|
@@ -24,10 +24,10 @@ class ListXform extends BaseXform {
|
|
|
24
24
|
if (this.always || (model && model.length)) {
|
|
25
25
|
xmlStream.openNode(this.tag, this.$);
|
|
26
26
|
if (this.count) {
|
|
27
|
-
xmlStream.addAttribute(this.$count,
|
|
27
|
+
xmlStream.addAttribute(this.$count, model?.length ?? 0);
|
|
28
28
|
}
|
|
29
29
|
const { childXform } = this;
|
|
30
|
-
(model
|
|
30
|
+
(model ?? []).forEach((childModel, index) => {
|
|
31
31
|
childXform.render(xmlStream, childModel, index);
|
|
32
32
|
});
|
|
33
33
|
xmlStream.closeNode();
|