@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
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { XmlStream } from "../../../utils/xml-stream.js";
|
|
2
|
-
import { xmlEncode,
|
|
2
|
+
import { xmlEncode, parseOoxmlDate } from "../../../../../utils/utils.js";
|
|
3
3
|
import { BaseXform } from "../base-xform.js";
|
|
4
|
+
import { formatDateForExcel } from "./cache-field.js";
|
|
5
|
+
import { PivotErrorValue } from "../../../pivot-table.js";
|
|
6
|
+
/** Attribute keys on <pivotCacheRecords> that are individually parsed (not collected into extraRootAttrs). */
|
|
7
|
+
const KNOWN_CACHE_RECORDS_ROOT_KEYS = new Set(["xmlns", "xmlns:r", "count"]);
|
|
4
8
|
class PivotCacheRecordsXform extends BaseXform {
|
|
5
9
|
constructor() {
|
|
6
10
|
super();
|
|
7
|
-
this.map = {};
|
|
8
11
|
this.model = null;
|
|
9
12
|
this.currentRecord = null;
|
|
10
13
|
}
|
|
11
|
-
prepare(_model) {
|
|
12
|
-
// No preparation needed
|
|
13
|
-
}
|
|
14
14
|
get tag() {
|
|
15
15
|
// http://www.datypic.com/sc/ooxml/e-ssml_pivotCacheRecords.html
|
|
16
16
|
return "pivotCacheRecords";
|
|
@@ -25,7 +25,7 @@ class PivotCacheRecordsXform extends BaseXform {
|
|
|
25
25
|
*/
|
|
26
26
|
render(xmlStream, model) {
|
|
27
27
|
// Check if this is a loaded model
|
|
28
|
-
const isLoaded = model.isLoaded || !("source" in model);
|
|
28
|
+
const isLoaded = ("isLoaded" in model && model.isLoaded) || !("source" in model);
|
|
29
29
|
if (isLoaded) {
|
|
30
30
|
this.renderLoaded(xmlStream, model);
|
|
31
31
|
}
|
|
@@ -38,7 +38,8 @@ class PivotCacheRecordsXform extends BaseXform {
|
|
|
38
38
|
*/
|
|
39
39
|
renderNew(xmlStream, model) {
|
|
40
40
|
const { source, cacheFields } = model;
|
|
41
|
-
|
|
41
|
+
// R8-O2: Use Array.isArray for type safety — getSheetValues() returns a sparse array of row arrays
|
|
42
|
+
const sourceBodyRows = source.getSheetValues().slice(2).filter(Array.isArray);
|
|
42
43
|
xmlStream.openXml(XmlStream.StdDocAttributes);
|
|
43
44
|
xmlStream.openNode(this.tag, {
|
|
44
45
|
...PivotCacheRecordsXform.PIVOT_CACHE_RECORDS_ATTRIBUTES,
|
|
@@ -52,10 +53,27 @@ class PivotCacheRecordsXform extends BaseXform {
|
|
|
52
53
|
*/
|
|
53
54
|
renderLoaded(xmlStream, model) {
|
|
54
55
|
xmlStream.openXml(XmlStream.StdDocAttributes);
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
56
|
+
// R8-B11: Use preserved root attributes instead of hardcoded MS namespaces.
|
|
57
|
+
// The base xmlns/xmlns:r are always needed; extra attributes (xmlns:mc, mc:Ignorable, etc.)
|
|
58
|
+
// come from the parsed original if available, otherwise fall back to the hardcoded defaults.
|
|
59
|
+
const rootAttrs = {
|
|
60
|
+
xmlns: PivotCacheRecordsXform.PIVOT_CACHE_RECORDS_ATTRIBUTES.xmlns,
|
|
61
|
+
"xmlns:r": PivotCacheRecordsXform.PIVOT_CACHE_RECORDS_ATTRIBUTES["xmlns:r"]
|
|
62
|
+
};
|
|
63
|
+
if (model.extraRootAttrs) {
|
|
64
|
+
for (const [k, v] of Object.entries(model.extraRootAttrs)) {
|
|
65
|
+
rootAttrs[k] = v;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
// No preserved attributes — use defaults for new-style rendering
|
|
70
|
+
rootAttrs["xmlns:mc"] = PivotCacheRecordsXform.PIVOT_CACHE_RECORDS_ATTRIBUTES["xmlns:mc"];
|
|
71
|
+
rootAttrs["mc:Ignorable"] =
|
|
72
|
+
PivotCacheRecordsXform.PIVOT_CACHE_RECORDS_ATTRIBUTES["mc:Ignorable"];
|
|
73
|
+
rootAttrs["xmlns:xr"] = PivotCacheRecordsXform.PIVOT_CACHE_RECORDS_ATTRIBUTES["xmlns:xr"];
|
|
74
|
+
}
|
|
75
|
+
rootAttrs.count = model.records.length;
|
|
76
|
+
xmlStream.openNode(this.tag, rootAttrs);
|
|
59
77
|
// Render each record
|
|
60
78
|
for (const record of model.records) {
|
|
61
79
|
xmlStream.writeXml("\n <r>");
|
|
@@ -75,19 +93,25 @@ class PivotCacheRecordsXform extends BaseXform {
|
|
|
75
93
|
case "x":
|
|
76
94
|
return `<x v="${value.value}" />`;
|
|
77
95
|
case "n":
|
|
96
|
+
// Guard against NaN/Infinity — not valid in OOXML, render as missing
|
|
97
|
+
if (!Number.isFinite(value.value)) {
|
|
98
|
+
return "<m />";
|
|
99
|
+
}
|
|
78
100
|
return `<n v="${value.value}" />`;
|
|
79
101
|
case "s":
|
|
80
|
-
return `<s v="${xmlEncode(
|
|
102
|
+
return `<s v="${xmlEncode(value.value)}" />`;
|
|
81
103
|
case "b":
|
|
82
104
|
return `<b v="${value.value ? "1" : "0"}" />`;
|
|
83
105
|
case "m":
|
|
84
106
|
return "<m />";
|
|
85
107
|
case "d":
|
|
86
|
-
return `<d v="${value.value
|
|
108
|
+
return `<d v="${formatDateForExcel(value.value)}" />`;
|
|
87
109
|
case "e":
|
|
88
|
-
return `<e v="${value.value}" />`;
|
|
89
|
-
default:
|
|
90
|
-
|
|
110
|
+
return `<e v="${xmlEncode(value.value)}" />`;
|
|
111
|
+
default: {
|
|
112
|
+
const _exhaustive = value;
|
|
113
|
+
throw new Error(`Unhandled record value type: ${_exhaustive.type}`);
|
|
114
|
+
}
|
|
91
115
|
}
|
|
92
116
|
}
|
|
93
117
|
// Helper methods for rendering new records
|
|
@@ -96,28 +120,54 @@ class PivotCacheRecordsXform extends BaseXform {
|
|
|
96
120
|
for (const row of sourceBodyRows) {
|
|
97
121
|
const realRow = row.slice(1);
|
|
98
122
|
parts.push("\n <r>");
|
|
99
|
-
|
|
123
|
+
const fieldCount = Math.min(realRow.length, cacheFields.length);
|
|
124
|
+
for (let i = 0; i < fieldCount; i++) {
|
|
100
125
|
parts.push("\n ");
|
|
101
126
|
parts.push(this.renderCellNew(realRow[i], cacheFields[i].sharedItems));
|
|
102
127
|
}
|
|
128
|
+
// Pad missing columns with <m /> so every record has exactly one value per cacheField (OOXML requirement)
|
|
129
|
+
for (let i = fieldCount; i < cacheFields.length; i++) {
|
|
130
|
+
parts.push("\n <m />");
|
|
131
|
+
}
|
|
103
132
|
parts.push("\n </r>");
|
|
104
133
|
}
|
|
105
134
|
return parts.join("");
|
|
106
135
|
}
|
|
107
136
|
renderCellNew(value, sharedItems) {
|
|
108
|
-
// Handle null/undefined values first
|
|
109
|
-
if (value === null ||
|
|
137
|
+
// Handle null/undefined/NaN values first — all treated as missing
|
|
138
|
+
if (value === null ||
|
|
139
|
+
value === undefined ||
|
|
140
|
+
(typeof value === "number" && !Number.isFinite(value))) {
|
|
141
|
+
// If no shared items, render as missing value directly
|
|
142
|
+
if (sharedItems === null) {
|
|
143
|
+
return "<m />";
|
|
144
|
+
}
|
|
145
|
+
// With shared items, look up null (undefined is treated as null)
|
|
146
|
+
const idx = sharedItems.indexOf(null);
|
|
147
|
+
if (idx >= 0) {
|
|
148
|
+
return `<x v="${idx}" />`;
|
|
149
|
+
}
|
|
150
|
+
// null not in sharedItems — render as missing
|
|
110
151
|
return "<m />";
|
|
111
152
|
}
|
|
112
|
-
// no shared items
|
|
153
|
+
// no shared items — render inline by type
|
|
113
154
|
if (sharedItems === null) {
|
|
155
|
+
if (value instanceof PivotErrorValue) {
|
|
156
|
+
return `<e v="${xmlEncode(value.code)}" />`;
|
|
157
|
+
}
|
|
158
|
+
if (typeof value === "boolean") {
|
|
159
|
+
return `<b v="${value ? "1" : "0"}" />`;
|
|
160
|
+
}
|
|
161
|
+
if (value instanceof Date) {
|
|
162
|
+
return `<d v="${formatDateForExcel(value)}" />`;
|
|
163
|
+
}
|
|
114
164
|
if (Number.isFinite(value)) {
|
|
115
165
|
return `<n v="${value}" />`;
|
|
116
166
|
}
|
|
117
167
|
return `<s v="${xmlEncode(String(value))}" />`;
|
|
118
168
|
}
|
|
119
|
-
// shared items
|
|
120
|
-
const sharedItemsIndex = sharedItems
|
|
169
|
+
// shared items — look up index (type-aware for Date)
|
|
170
|
+
const sharedItemsIndex = findSharedItemIndex(sharedItems, value);
|
|
121
171
|
if (sharedItemsIndex < 0) {
|
|
122
172
|
throw new Error(`${JSON.stringify(value)} not in sharedItems ${JSON.stringify(sharedItems)}`);
|
|
123
173
|
}
|
|
@@ -126,15 +176,24 @@ class PivotCacheRecordsXform extends BaseXform {
|
|
|
126
176
|
parseOpen(node) {
|
|
127
177
|
const { name, attributes } = node;
|
|
128
178
|
switch (name) {
|
|
129
|
-
case this.tag:
|
|
179
|
+
case this.tag: {
|
|
130
180
|
// pivotCacheRecords root element
|
|
131
181
|
this.reset();
|
|
182
|
+
// R8-B11: Collect unknown root attributes for roundtrip preservation
|
|
183
|
+
const extraRootAttrs = {};
|
|
184
|
+
for (const [k, v] of Object.entries(attributes)) {
|
|
185
|
+
if (!KNOWN_CACHE_RECORDS_ROOT_KEYS.has(k)) {
|
|
186
|
+
extraRootAttrs[k] = String(v);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
132
189
|
this.model = {
|
|
133
190
|
records: [],
|
|
134
|
-
count: parseInt(attributes.count
|
|
135
|
-
isLoaded: true
|
|
191
|
+
count: parseInt(attributes.count ?? "0", 10),
|
|
192
|
+
isLoaded: true,
|
|
193
|
+
extraRootAttrs: Object.keys(extraRootAttrs).length > 0 ? extraRootAttrs : undefined
|
|
136
194
|
};
|
|
137
195
|
break;
|
|
196
|
+
}
|
|
138
197
|
case "r":
|
|
139
198
|
// Start of a new record
|
|
140
199
|
this.currentRecord = [];
|
|
@@ -144,17 +203,22 @@ class PivotCacheRecordsXform extends BaseXform {
|
|
|
144
203
|
if (this.currentRecord) {
|
|
145
204
|
this.currentRecord.push({
|
|
146
205
|
type: "x",
|
|
147
|
-
value: parseInt(attributes.v
|
|
206
|
+
value: parseInt(attributes.v ?? "0", 10)
|
|
148
207
|
});
|
|
149
208
|
}
|
|
150
209
|
break;
|
|
151
210
|
case "n":
|
|
152
|
-
// Numeric value
|
|
211
|
+
// Numeric value — missing v → treat as missing to avoid fabricating 0
|
|
153
212
|
if (this.currentRecord) {
|
|
154
|
-
|
|
155
|
-
type: "
|
|
156
|
-
|
|
157
|
-
|
|
213
|
+
if (attributes.v === undefined || attributes.v === "") {
|
|
214
|
+
this.currentRecord.push({ type: "m" });
|
|
215
|
+
}
|
|
216
|
+
else {
|
|
217
|
+
this.currentRecord.push({
|
|
218
|
+
type: "n",
|
|
219
|
+
value: parseFloat(attributes.v)
|
|
220
|
+
});
|
|
221
|
+
}
|
|
158
222
|
}
|
|
159
223
|
break;
|
|
160
224
|
case "s":
|
|
@@ -162,7 +226,7 @@ class PivotCacheRecordsXform extends BaseXform {
|
|
|
162
226
|
if (this.currentRecord) {
|
|
163
227
|
this.currentRecord.push({
|
|
164
228
|
type: "s",
|
|
165
|
-
value:
|
|
229
|
+
value: attributes.v ?? ""
|
|
166
230
|
});
|
|
167
231
|
}
|
|
168
232
|
break;
|
|
@@ -182,12 +246,25 @@ class PivotCacheRecordsXform extends BaseXform {
|
|
|
182
246
|
}
|
|
183
247
|
break;
|
|
184
248
|
case "d":
|
|
185
|
-
// Date value
|
|
249
|
+
// Date value — force UTC parsing (OOXML dates lack "Z" suffix)
|
|
250
|
+
// Missing/empty v → treat as missing value to avoid Invalid Date
|
|
186
251
|
if (this.currentRecord) {
|
|
187
|
-
|
|
188
|
-
type: "
|
|
189
|
-
|
|
190
|
-
|
|
252
|
+
if (!attributes.v) {
|
|
253
|
+
this.currentRecord.push({ type: "m" });
|
|
254
|
+
}
|
|
255
|
+
else {
|
|
256
|
+
// R8-B13: Guard against Invalid Date from malformed date strings
|
|
257
|
+
const date = parseOoxmlDate(attributes.v);
|
|
258
|
+
if (isNaN(date.getTime())) {
|
|
259
|
+
this.currentRecord.push({ type: "m" });
|
|
260
|
+
}
|
|
261
|
+
else {
|
|
262
|
+
this.currentRecord.push({
|
|
263
|
+
type: "d",
|
|
264
|
+
value: date
|
|
265
|
+
});
|
|
266
|
+
}
|
|
267
|
+
}
|
|
191
268
|
}
|
|
192
269
|
break;
|
|
193
270
|
case "e":
|
|
@@ -195,7 +272,7 @@ class PivotCacheRecordsXform extends BaseXform {
|
|
|
195
272
|
if (this.currentRecord) {
|
|
196
273
|
this.currentRecord.push({
|
|
197
274
|
type: "e",
|
|
198
|
-
value: attributes.v
|
|
275
|
+
value: attributes.v ?? ""
|
|
199
276
|
});
|
|
200
277
|
}
|
|
201
278
|
break;
|
|
@@ -220,9 +297,6 @@ class PivotCacheRecordsXform extends BaseXform {
|
|
|
220
297
|
}
|
|
221
298
|
return true;
|
|
222
299
|
}
|
|
223
|
-
reconcile(_model, _options) {
|
|
224
|
-
// No reconciliation needed
|
|
225
|
-
}
|
|
226
300
|
}
|
|
227
301
|
PivotCacheRecordsXform.PIVOT_CACHE_RECORDS_ATTRIBUTES = {
|
|
228
302
|
xmlns: "http://schemas.openxmlformats.org/spreadsheetml/2006/main",
|
|
@@ -232,3 +306,31 @@ PivotCacheRecordsXform.PIVOT_CACHE_RECORDS_ATTRIBUTES = {
|
|
|
232
306
|
"xmlns:xr": "http://schemas.microsoft.com/office/spreadsheetml/2014/revision"
|
|
233
307
|
};
|
|
234
308
|
export { PivotCacheRecordsXform };
|
|
309
|
+
/**
|
|
310
|
+
* Find the index of `value` in `sharedItems`, using type-aware comparison.
|
|
311
|
+
* - Date objects are compared by timestamp (getTime()) since === uses reference equality.
|
|
312
|
+
* - PivotErrorValue objects are compared by their code string.
|
|
313
|
+
* - All other types use strict equality (===) via indexOf.
|
|
314
|
+
*/
|
|
315
|
+
function findSharedItemIndex(sharedItems, value) {
|
|
316
|
+
if (value instanceof Date) {
|
|
317
|
+
const ts = value.getTime();
|
|
318
|
+
for (let i = 0; i < sharedItems.length; i++) {
|
|
319
|
+
const item = sharedItems[i];
|
|
320
|
+
if (item instanceof Date && item.getTime() === ts) {
|
|
321
|
+
return i;
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
return -1;
|
|
325
|
+
}
|
|
326
|
+
if (value instanceof PivotErrorValue) {
|
|
327
|
+
for (let i = 0; i < sharedItems.length; i++) {
|
|
328
|
+
const item = sharedItems[i];
|
|
329
|
+
if (item instanceof PivotErrorValue && item.code === value.code) {
|
|
330
|
+
return i;
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
return -1;
|
|
334
|
+
}
|
|
335
|
+
return sharedItems.indexOf(value);
|
|
336
|
+
}
|