@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,81 +1,255 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.renderCacheField = renderCacheField;
|
|
4
|
+
exports.formatDateForExcel = formatDateForExcel;
|
|
4
5
|
const utils_1 = require("../../../../../utils/utils.js");
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
const escapedName = (0, utils_1.xmlEncode)(this.name);
|
|
43
|
-
// No shared items - field not used for rows/columns
|
|
44
|
-
if (this.sharedItems === null) {
|
|
45
|
-
// If no minValue/maxValue, this is an unused field - use empty sharedItems like Excel does
|
|
46
|
-
if (this.minValue === undefined || this.maxValue === undefined) {
|
|
47
|
-
return `<cacheField name="${escapedName}" numFmtId="0">
|
|
48
|
-
<sharedItems />
|
|
49
|
-
</cacheField>`;
|
|
6
|
+
const pivot_table_1 = require("../../../pivot-table.js");
|
|
7
|
+
/**
|
|
8
|
+
* Format a Date for OOXML pivot cache output.
|
|
9
|
+
* Excel expects `"2024-01-15T00:00:00"` — no milliseconds, no trailing "Z".
|
|
10
|
+
*/
|
|
11
|
+
function formatDateForExcel(date) {
|
|
12
|
+
// Guard against Invalid Date — toISOString() throws RangeError for invalid dates
|
|
13
|
+
if (isNaN(date.getTime())) {
|
|
14
|
+
return "";
|
|
15
|
+
}
|
|
16
|
+
return date.toISOString().replace(/\.\d{3}Z$/, "");
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Render a single `<cacheField>` element as an XML string.
|
|
20
|
+
*
|
|
21
|
+
* This is a pure data-in → string-out transformation with no state or lifecycle,
|
|
22
|
+
* so it is a plain function rather than a class.
|
|
23
|
+
*/
|
|
24
|
+
function renderCacheField(cf) {
|
|
25
|
+
// PivotCache Field: http://www.datypic.com/sc/ooxml/e-ssml_cacheField-1.html
|
|
26
|
+
// Shared Items: http://www.datypic.com/sc/ooxml/e-ssml_sharedItems-1.html
|
|
27
|
+
// Escape XML special characters in name attribute
|
|
28
|
+
const escapedName = (0, utils_1.xmlEncode)(cf.name);
|
|
29
|
+
const fmtId = cf.numFmtId ?? "0";
|
|
30
|
+
// Extra unknown attributes for roundtrip preservation (e.g. caption, formula)
|
|
31
|
+
const extraStr = buildExtraAttrsStr(cf.extraAttrs);
|
|
32
|
+
// fieldGroup raw XML for roundtrip (rendered after sharedItems per OOXML schema)
|
|
33
|
+
const fgXml = cf.fieldGroupXml ? `\n ${cf.fieldGroupXml}` : "";
|
|
34
|
+
// --- Branch A: no shared-item children ---
|
|
35
|
+
// For loaded fields, only render <sharedItems> if it was present in the original (sharedItems !== null).
|
|
36
|
+
// For new fields, sharedItems === null means a value-only field that still needs <sharedItems />.
|
|
37
|
+
if (cf.sharedItems === null) {
|
|
38
|
+
if (cf.isLoaded) {
|
|
39
|
+
// Loaded field with no <sharedItems> element — don't add one on roundtrip
|
|
40
|
+
if (fgXml) {
|
|
41
|
+
// Has fieldGroup — need open/close tags to wrap it
|
|
42
|
+
return `<cacheField name="${escapedName}" numFmtId="${fmtId}"${extraStr}>${fgXml}\n </cacheField>`;
|
|
50
43
|
}
|
|
51
|
-
//
|
|
52
|
-
return `<cacheField name="${escapedName}" numFmtId="
|
|
53
|
-
|
|
54
|
-
|
|
44
|
+
// R8-B6: No children at all — use self-closing tag to avoid whitespace content
|
|
45
|
+
return `<cacheField name="${escapedName}" numFmtId="${fmtId}"${extraStr} />`;
|
|
46
|
+
}
|
|
47
|
+
// New field — render bare empty <sharedItems />
|
|
48
|
+
let attrStr;
|
|
49
|
+
if (cf.minValue !== undefined && cf.maxValue !== undefined) {
|
|
50
|
+
// New numeric-only field (no row/column usage) – compute type attributes
|
|
51
|
+
const integerAttr = cf.containsInteger ? ' containsInteger="1"' : "";
|
|
52
|
+
attrStr = ` containsSemiMixedTypes="0" containsString="0" containsNumber="1"${integerAttr} minValue="${cf.minValue}" maxValue="${cf.maxValue}"`;
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
attrStr = "";
|
|
55
56
|
}
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
const allNumeric = this.sharedItems.length > 0 &&
|
|
59
|
-
this.sharedItems.every(item => typeof item === "number" && Number.isFinite(item));
|
|
60
|
-
const allInteger = allNumeric && this.sharedItems.every(item => Number.isInteger(item));
|
|
61
|
-
if (allNumeric) {
|
|
62
|
-
// Numeric shared items - used when field is both a row/column field AND a value field
|
|
63
|
-
// This allows Excel to both group by unique values AND perform aggregation
|
|
64
|
-
const minValue = Math.min(...this.sharedItems);
|
|
65
|
-
const maxValue = Math.max(...this.sharedItems);
|
|
66
|
-
const integerAttr = allInteger ? ' containsInteger="1"' : "";
|
|
67
|
-
return `<cacheField name="${escapedName}" numFmtId="0">
|
|
68
|
-
<sharedItems containsSemiMixedTypes="0" containsString="0" containsNumber="1"${integerAttr} minValue="${minValue}" maxValue="${maxValue}" count="${this.sharedItems.length}">
|
|
69
|
-
${this.sharedItems.map(item => `<n v="${item}" />`).join("")}
|
|
70
|
-
</sharedItems>
|
|
57
|
+
return `<cacheField name="${escapedName}" numFmtId="${fmtId}"${extraStr}>
|
|
58
|
+
<sharedItems${attrStr} />${fgXml}
|
|
71
59
|
</cacheField>`;
|
|
60
|
+
}
|
|
61
|
+
if (cf.isLoaded && cf.sharedItems.length === 0) {
|
|
62
|
+
// Roundtrip: use preserved attributes exactly as parsed
|
|
63
|
+
const attrStr = buildLoadedSharedItemsAttrs(cf);
|
|
64
|
+
return `<cacheField name="${escapedName}" numFmtId="${fmtId}"${extraStr}>
|
|
65
|
+
<sharedItems${attrStr} />${fgXml}
|
|
66
|
+
</cacheField>`;
|
|
67
|
+
}
|
|
68
|
+
// --- Branch B: shared items present – render each child element ---
|
|
69
|
+
// For loaded fields, skip recomputation – use preserved attributes directly
|
|
70
|
+
if (cf.isLoaded) {
|
|
71
|
+
const itemXmls = renderSharedItemElements(cf.sharedItems);
|
|
72
|
+
const finalAttrStr = buildLoadedSharedItemsAttrs(cf);
|
|
73
|
+
return `<cacheField name="${escapedName}" numFmtId="${fmtId}"${extraStr}>
|
|
74
|
+
<sharedItems${finalAttrStr} count="${cf.sharedItems.length}">
|
|
75
|
+
${itemXmls}
|
|
76
|
+
</sharedItems>${fgXml}
|
|
77
|
+
</cacheField>`;
|
|
78
|
+
}
|
|
79
|
+
// New field – analyze content types in a single pass (avoids stack overflow from spread on large arrays)
|
|
80
|
+
let hasString = false;
|
|
81
|
+
let hasNumber = false;
|
|
82
|
+
let hasBoolean = false;
|
|
83
|
+
let hasDate = false;
|
|
84
|
+
let hasNull = false;
|
|
85
|
+
let hasError = false;
|
|
86
|
+
let allInteger = true;
|
|
87
|
+
let minValue = Infinity;
|
|
88
|
+
let maxValue = -Infinity;
|
|
89
|
+
for (const item of cf.sharedItems) {
|
|
90
|
+
if (item === null) {
|
|
91
|
+
hasNull = true;
|
|
92
|
+
}
|
|
93
|
+
else if (item instanceof pivot_table_1.PivotErrorValue) {
|
|
94
|
+
hasError = true;
|
|
72
95
|
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
96
|
+
else if (typeof item === "string") {
|
|
97
|
+
hasString = true;
|
|
98
|
+
}
|
|
99
|
+
else if (typeof item === "number") {
|
|
100
|
+
if (Number.isFinite(item)) {
|
|
101
|
+
hasNumber = true;
|
|
102
|
+
if (item < minValue) {
|
|
103
|
+
minValue = item;
|
|
104
|
+
}
|
|
105
|
+
if (item > maxValue) {
|
|
106
|
+
maxValue = item;
|
|
107
|
+
}
|
|
108
|
+
if (!Number.isInteger(item)) {
|
|
109
|
+
allInteger = false;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
// NaN, Infinity, -Infinity are not valid OOXML numeric values — treat as missing
|
|
114
|
+
hasNull = true;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
else if (typeof item === "boolean") {
|
|
118
|
+
hasBoolean = true;
|
|
119
|
+
}
|
|
120
|
+
else if (item instanceof Date) {
|
|
121
|
+
hasDate = true;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
// Build sharedItems attributes per OOXML spec:
|
|
125
|
+
// - containsSemiMixedTypes: "0" if no strings at all (default "1")
|
|
126
|
+
// - containsString: "0" if no string items (default "1")
|
|
127
|
+
// - containsNumber: "1" if any numeric items (default "0")
|
|
128
|
+
// - containsInteger: "1" if all numbers are integers (only when containsNumber="1")
|
|
129
|
+
// - containsBlank: "1" if any null/missing items
|
|
130
|
+
// - containsMixedTypes: "1" if multiple non-string types present
|
|
131
|
+
// - containsDate: "1" if any date items (default "0")
|
|
132
|
+
const attrs = [];
|
|
133
|
+
if (!hasString) {
|
|
134
|
+
// No string items at all (errors, numbers, booleans, dates, nulls are all non-string)
|
|
135
|
+
attrs.push('containsSemiMixedTypes="0"');
|
|
136
|
+
attrs.push('containsString="0"');
|
|
137
|
+
}
|
|
138
|
+
// containsMixedTypes: set when multiple distinct non-string type families are present
|
|
139
|
+
// e.g., number+date, string+number, error+number, etc.
|
|
140
|
+
const typeCount = (hasString ? 1 : 0) +
|
|
141
|
+
(hasNumber ? 1 : 0) +
|
|
142
|
+
(hasBoolean ? 1 : 0) +
|
|
143
|
+
(hasDate ? 1 : 0) +
|
|
144
|
+
(hasError ? 1 : 0);
|
|
145
|
+
if (typeCount > 1) {
|
|
146
|
+
attrs.push('containsMixedTypes="1"');
|
|
147
|
+
}
|
|
148
|
+
if (hasNumber) {
|
|
149
|
+
attrs.push('containsNumber="1"');
|
|
150
|
+
if (allInteger) {
|
|
151
|
+
attrs.push('containsInteger="1"');
|
|
152
|
+
}
|
|
153
|
+
attrs.push(`minValue="${minValue}"`);
|
|
154
|
+
attrs.push(`maxValue="${maxValue}"`);
|
|
155
|
+
}
|
|
156
|
+
if (hasDate) {
|
|
157
|
+
attrs.push('containsDate="1"');
|
|
158
|
+
}
|
|
159
|
+
if (hasNull) {
|
|
160
|
+
attrs.push('containsBlank="1"');
|
|
161
|
+
}
|
|
162
|
+
const itemXmls = renderSharedItemElements(cf.sharedItems);
|
|
163
|
+
const attrStr = attrs.length > 0 ? ` ${attrs.join(" ")}` : "";
|
|
164
|
+
return `<cacheField name="${escapedName}" numFmtId="${fmtId}"${extraStr}>
|
|
165
|
+
<sharedItems${attrStr} count="${cf.sharedItems.length}">
|
|
166
|
+
${itemXmls}
|
|
167
|
+
</sharedItems>${fgXml}
|
|
78
168
|
</cacheField>`;
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Render shared item elements as an XML string.
|
|
172
|
+
*/
|
|
173
|
+
function renderSharedItemElements(sharedItems) {
|
|
174
|
+
const itemXmls = [];
|
|
175
|
+
for (const item of sharedItems) {
|
|
176
|
+
if (item === null) {
|
|
177
|
+
itemXmls.push("<m />");
|
|
178
|
+
}
|
|
179
|
+
else if (item instanceof pivot_table_1.PivotErrorValue) {
|
|
180
|
+
itemXmls.push(`<e v="${(0, utils_1.xmlEncode)(item.code)}" />`);
|
|
181
|
+
}
|
|
182
|
+
else if (typeof item === "number") {
|
|
183
|
+
if (Number.isFinite(item)) {
|
|
184
|
+
itemXmls.push(`<n v="${item}" />`);
|
|
185
|
+
}
|
|
186
|
+
else {
|
|
187
|
+
// NaN, Infinity, -Infinity — not valid in OOXML, render as missing
|
|
188
|
+
itemXmls.push("<m />");
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
else if (typeof item === "boolean") {
|
|
192
|
+
itemXmls.push(`<b v="${item ? "1" : "0"}" />`);
|
|
193
|
+
}
|
|
194
|
+
else if (item instanceof Date) {
|
|
195
|
+
itemXmls.push(`<d v="${formatDateForExcel(item)}" />`);
|
|
196
|
+
}
|
|
197
|
+
else {
|
|
198
|
+
// string
|
|
199
|
+
itemXmls.push(`<s v="${(0, utils_1.xmlEncode)(item)}" />`);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
return itemXmls.join("");
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Build extra attributes string for cacheField element (roundtrip preservation).
|
|
206
|
+
*/
|
|
207
|
+
function buildExtraAttrsStr(extraAttrs) {
|
|
208
|
+
if (!extraAttrs) {
|
|
209
|
+
return "";
|
|
210
|
+
}
|
|
211
|
+
return Object.entries(extraAttrs)
|
|
212
|
+
.map(([k, v]) => ` ${k}="${(0, utils_1.xmlEncode)(v)}"`)
|
|
213
|
+
.join("");
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Build sharedItems attribute string from preserved loaded attributes.
|
|
217
|
+
* Reconstructs the original attribute order for roundtrip fidelity.
|
|
218
|
+
*/
|
|
219
|
+
function buildLoadedSharedItemsAttrs(cf) {
|
|
220
|
+
const parts = [];
|
|
221
|
+
if (cf.containsSemiMixedTypes !== undefined) {
|
|
222
|
+
parts.push(`containsSemiMixedTypes="${cf.containsSemiMixedTypes}"`);
|
|
223
|
+
}
|
|
224
|
+
if (cf.containsNonDate !== undefined) {
|
|
225
|
+
parts.push(`containsNonDate="${cf.containsNonDate}"`);
|
|
226
|
+
}
|
|
227
|
+
if (cf.containsString !== undefined) {
|
|
228
|
+
parts.push(`containsString="${cf.containsString}"`);
|
|
229
|
+
}
|
|
230
|
+
if (cf.containsBlank !== undefined) {
|
|
231
|
+
parts.push(`containsBlank="${cf.containsBlank}"`);
|
|
232
|
+
}
|
|
233
|
+
if (cf.containsMixedTypes !== undefined) {
|
|
234
|
+
parts.push(`containsMixedTypes="${cf.containsMixedTypes}"`);
|
|
235
|
+
}
|
|
236
|
+
// R8-B4: containsNumber/containsInteger are now raw strings ("0"/"1") for roundtrip fidelity
|
|
237
|
+
if (cf.containsNumber !== undefined) {
|
|
238
|
+
parts.push(`containsNumber="${cf.containsNumber}"`);
|
|
239
|
+
}
|
|
240
|
+
if (cf.containsInteger !== undefined) {
|
|
241
|
+
parts.push(`containsInteger="${cf.containsInteger}"`);
|
|
242
|
+
}
|
|
243
|
+
// R8-B5: Emit minValue/maxValue independently of containsNumber — the original XML
|
|
244
|
+
// may have these attributes even without containsNumber="1"
|
|
245
|
+
if (cf.minValue !== undefined) {
|
|
246
|
+
parts.push(`minValue="${cf.minValue}"`);
|
|
247
|
+
}
|
|
248
|
+
if (cf.maxValue !== undefined) {
|
|
249
|
+
parts.push(`maxValue="${cf.maxValue}"`);
|
|
250
|
+
}
|
|
251
|
+
if (cf.containsDate !== undefined) {
|
|
252
|
+
parts.push(`containsDate="${cf.containsDate}"`);
|
|
79
253
|
}
|
|
254
|
+
return parts.length > 0 ? ` ${parts.join(" ")}` : "";
|
|
80
255
|
}
|
|
81
|
-
exports.CacheField = CacheField;
|