@js-ak/excel-toolbox 1.8.2 → 1.9.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/build/cjs/lib/template/template-fs.js +2 -1
- package/build/cjs/lib/template/template-memory.js +2 -1
- package/build/cjs/lib/template/utils/column-letter-to-index.js +15 -0
- package/build/cjs/lib/template/utils/index.js +1 -1
- package/build/cjs/lib/template/utils/prepare-row-to-cells.js +2 -2
- package/build/cjs/lib/template/utils/validate-worksheet-xml.js +19 -9
- package/build/cjs/lib/utils/index.js +2 -0
- package/build/cjs/lib/utils/trim-and-join-multiline.js +32 -0
- package/build/cjs/lib/workbook-builder/default/border.js +18 -0
- package/build/cjs/lib/workbook-builder/default/cell-xf.js +15 -0
- package/build/cjs/lib/workbook-builder/default/fill.js +18 -0
- package/build/cjs/lib/workbook-builder/default/font.js +19 -0
- package/build/cjs/lib/workbook-builder/default/index.js +21 -0
- package/build/cjs/lib/workbook-builder/default/sheet-name.js +10 -0
- package/build/cjs/lib/workbook-builder/index.js +18 -0
- package/build/cjs/lib/workbook-builder/merge-cells/add.js +72 -0
- package/build/cjs/lib/workbook-builder/merge-cells/helpers/index.js +18 -0
- package/build/cjs/lib/workbook-builder/merge-cells/helpers/ranges-equal.js +17 -0
- package/build/cjs/lib/workbook-builder/merge-cells/helpers/ranges-intersect.js +17 -0
- package/build/cjs/lib/workbook-builder/merge-cells/index.js +18 -0
- package/build/cjs/lib/workbook-builder/merge-cells/remove.js +60 -0
- package/build/cjs/lib/workbook-builder/shared-string-ref/add.js +24 -0
- package/build/cjs/lib/workbook-builder/shared-string-ref/index.js +19 -0
- package/build/cjs/lib/workbook-builder/shared-string-ref/remove-all-from-sheet.js +66 -0
- package/build/cjs/lib/workbook-builder/shared-string-ref/remove.js +66 -0
- package/build/cjs/lib/workbook-builder/style-ref/add-or-get.js +94 -0
- package/build/cjs/lib/workbook-builder/style-ref/helpers/add-num-fmt.js +25 -0
- package/build/cjs/lib/workbook-builder/style-ref/helpers/border-to-xml.js +49 -0
- package/build/cjs/lib/workbook-builder/style-ref/helpers/fill-to-xml.js +51 -0
- package/build/cjs/lib/workbook-builder/style-ref/helpers/font-to-xml.js +112 -0
- package/build/cjs/lib/workbook-builder/style-ref/helpers/index.js +21 -0
- package/build/cjs/lib/workbook-builder/style-ref/helpers/reindex-style-map-after-removal.js +30 -0
- package/build/cjs/lib/workbook-builder/style-ref/index.js +19 -0
- package/build/cjs/lib/workbook-builder/style-ref/remove-all-from-sheet.js +26 -0
- package/build/cjs/lib/workbook-builder/style-ref/remove.js +52 -0
- package/build/cjs/lib/workbook-builder/types/app-xml-options.js +2 -0
- package/build/cjs/lib/workbook-builder/types/border-style.js +2 -0
- package/build/cjs/lib/workbook-builder/types/cell-data.js +2 -0
- package/build/cjs/lib/workbook-builder/types/cell-style.js +2 -0
- package/build/cjs/lib/workbook-builder/types/cell-type.js +2 -0
- package/build/cjs/lib/workbook-builder/types/cell-value.js +2 -0
- package/build/cjs/lib/workbook-builder/types/cell-xf.js +2 -0
- package/build/cjs/lib/workbook-builder/types/index.js +27 -0
- package/build/cjs/lib/workbook-builder/types/merge-cell.js +2 -0
- package/build/cjs/lib/workbook-builder/types/row-data.js +2 -0
- package/build/cjs/lib/workbook-builder/types/sheet-data.js +2 -0
- package/build/cjs/lib/workbook-builder/types/xml-node.js +2 -0
- package/build/cjs/lib/workbook-builder/utils/build-app-xml.js +51 -0
- package/build/cjs/lib/workbook-builder/utils/build-cell-children.js +59 -0
- package/build/cjs/lib/workbook-builder/utils/build-content-types-xml.js +42 -0
- package/build/cjs/lib/workbook-builder/utils/build-core-xml.js +27 -0
- package/build/cjs/lib/workbook-builder/utils/build-rels-xml.js +19 -0
- package/build/cjs/lib/workbook-builder/utils/build-shared-strings-xml.js +39 -0
- package/build/cjs/lib/workbook-builder/utils/build-styles-xml.js +178 -0
- package/build/cjs/lib/workbook-builder/utils/build-theme-xml.js +609 -0
- package/build/cjs/lib/workbook-builder/utils/build-workbook-rels-xml.js +58 -0
- package/build/cjs/lib/workbook-builder/utils/build-workbook-xml.js +26 -0
- package/build/cjs/lib/workbook-builder/utils/build-worksheet-xml.js +66 -0
- package/build/cjs/lib/workbook-builder/utils/build-xml.js +72 -0
- package/build/cjs/lib/workbook-builder/utils/constants.js +55 -0
- package/build/cjs/lib/workbook-builder/utils/date-to-excel-serial.js +16 -0
- package/build/cjs/lib/workbook-builder/utils/index.js +34 -0
- package/build/cjs/lib/workbook-builder/utils/initialize-files.js +40 -0
- package/build/cjs/lib/workbook-builder/utils/sheet.js +144 -0
- package/build/cjs/lib/workbook-builder/utils/write-shared-strings-xml.js +49 -0
- package/build/cjs/lib/workbook-builder/utils/write-styles-xml.js +196 -0
- package/build/cjs/lib/workbook-builder/utils/write-worksheet-xml.js +209 -0
- package/build/cjs/lib/workbook-builder/utils/write-xml.js +37 -0
- package/build/cjs/lib/workbook-builder/workbook-builder.js +414 -0
- package/build/cjs/lib/zip/utils/to-bytes.js +19 -11
- package/build/esm/lib/template/template-fs.js +2 -1
- package/build/esm/lib/template/template-memory.js +2 -1
- package/build/esm/lib/template/utils/column-letter-to-index.js +12 -0
- package/build/esm/lib/template/utils/index.js +1 -1
- package/build/esm/lib/template/utils/prepare-row-to-cells.js +1 -1
- package/build/esm/lib/template/utils/validate-worksheet-xml.js +19 -9
- package/build/esm/lib/utils/index.js +2 -0
- package/build/esm/lib/utils/trim-and-join-multiline.js +29 -0
- package/build/esm/lib/workbook-builder/default/border.js +14 -0
- package/build/esm/lib/workbook-builder/default/cell-xf.js +11 -0
- package/build/esm/lib/workbook-builder/default/fill.js +14 -0
- package/build/esm/lib/workbook-builder/default/font.js +15 -0
- package/build/esm/lib/workbook-builder/default/index.js +5 -0
- package/build/esm/lib/workbook-builder/default/sheet-name.js +6 -0
- package/build/esm/lib/workbook-builder/index.js +2 -0
- package/build/esm/lib/workbook-builder/merge-cells/add.js +36 -0
- package/build/esm/lib/workbook-builder/merge-cells/helpers/index.js +2 -0
- package/build/esm/lib/workbook-builder/merge-cells/helpers/ranges-equal.js +14 -0
- package/build/esm/lib/workbook-builder/merge-cells/helpers/ranges-intersect.js +14 -0
- package/build/esm/lib/workbook-builder/merge-cells/index.js +2 -0
- package/build/esm/lib/workbook-builder/merge-cells/remove.js +24 -0
- package/build/esm/lib/workbook-builder/shared-string-ref/add.js +21 -0
- package/build/esm/lib/workbook-builder/shared-string-ref/index.js +3 -0
- package/build/esm/lib/workbook-builder/shared-string-ref/remove-all-from-sheet.js +63 -0
- package/build/esm/lib/workbook-builder/shared-string-ref/remove.js +63 -0
- package/build/esm/lib/workbook-builder/style-ref/add-or-get.js +58 -0
- package/build/esm/lib/workbook-builder/style-ref/helpers/add-num-fmt.js +21 -0
- package/build/esm/lib/workbook-builder/style-ref/helpers/border-to-xml.js +45 -0
- package/build/esm/lib/workbook-builder/style-ref/helpers/fill-to-xml.js +47 -0
- package/build/esm/lib/workbook-builder/style-ref/helpers/font-to-xml.js +75 -0
- package/build/esm/lib/workbook-builder/style-ref/helpers/index.js +5 -0
- package/build/esm/lib/workbook-builder/style-ref/helpers/reindex-style-map-after-removal.js +26 -0
- package/build/esm/lib/workbook-builder/style-ref/index.js +3 -0
- package/build/esm/lib/workbook-builder/style-ref/remove-all-from-sheet.js +23 -0
- package/build/esm/lib/workbook-builder/style-ref/remove.js +49 -0
- package/build/esm/lib/workbook-builder/types/app-xml-options.js +1 -0
- package/build/esm/lib/workbook-builder/types/border-style.js +1 -0
- package/build/esm/lib/workbook-builder/types/cell-data.js +1 -0
- package/build/esm/lib/workbook-builder/types/cell-style.js +1 -0
- package/build/esm/lib/workbook-builder/types/cell-type.js +1 -0
- package/build/esm/lib/workbook-builder/types/cell-value.js +1 -0
- package/build/esm/lib/workbook-builder/types/cell-xf.js +1 -0
- package/build/esm/lib/workbook-builder/types/index.js +11 -0
- package/build/esm/lib/workbook-builder/types/merge-cell.js +1 -0
- package/build/esm/lib/workbook-builder/types/row-data.js +1 -0
- package/build/esm/lib/workbook-builder/types/sheet-data.js +1 -0
- package/build/esm/lib/workbook-builder/types/xml-node.js +1 -0
- package/build/esm/lib/workbook-builder/utils/build-app-xml.js +48 -0
- package/build/esm/lib/workbook-builder/utils/build-cell-children.js +56 -0
- package/build/esm/lib/workbook-builder/utils/build-content-types-xml.js +39 -0
- package/build/esm/lib/workbook-builder/utils/build-core-xml.js +24 -0
- package/build/esm/lib/workbook-builder/utils/build-rels-xml.js +16 -0
- package/build/esm/lib/workbook-builder/utils/build-shared-strings-xml.js +36 -0
- package/build/esm/lib/workbook-builder/utils/build-styles-xml.js +142 -0
- package/build/esm/lib/workbook-builder/utils/build-theme-xml.js +606 -0
- package/build/esm/lib/workbook-builder/utils/build-workbook-rels-xml.js +55 -0
- package/build/esm/lib/workbook-builder/utils/build-workbook-xml.js +23 -0
- package/build/esm/lib/workbook-builder/utils/build-worksheet-xml.js +63 -0
- package/build/esm/lib/workbook-builder/utils/build-xml.js +69 -0
- package/build/esm/lib/workbook-builder/utils/constants.js +52 -0
- package/build/esm/lib/workbook-builder/utils/date-to-excel-serial.js +13 -0
- package/build/esm/lib/workbook-builder/utils/index.js +18 -0
- package/build/esm/lib/workbook-builder/utils/initialize-files.js +36 -0
- package/build/esm/lib/workbook-builder/utils/sheet.js +141 -0
- package/build/esm/lib/workbook-builder/utils/write-shared-strings-xml.js +43 -0
- package/build/esm/lib/workbook-builder/utils/write-styles-xml.js +157 -0
- package/build/esm/lib/workbook-builder/utils/write-worksheet-xml.js +203 -0
- package/build/esm/lib/workbook-builder/utils/write-xml.js +34 -0
- package/build/esm/lib/workbook-builder/workbook-builder.js +374 -0
- package/build/esm/lib/zip/utils/to-bytes.js +19 -11
- package/build/types/lib/template/utils/column-letter-to-index.d.ts +1 -0
- package/build/types/lib/template/utils/index.d.ts +1 -1
- package/build/types/lib/utils/index.d.ts +2 -0
- package/build/types/lib/utils/trim-and-join-multiline.d.ts +23 -0
- package/build/types/lib/workbook-builder/default/border.d.ts +7 -0
- package/build/types/lib/workbook-builder/default/cell-xf.d.ts +7 -0
- package/build/types/lib/workbook-builder/default/fill.d.ts +7 -0
- package/build/types/lib/workbook-builder/default/font.d.ts +21 -0
- package/build/types/lib/workbook-builder/default/index.d.ts +5 -0
- package/build/types/lib/workbook-builder/default/sheet-name.d.ts +6 -0
- package/build/types/lib/workbook-builder/index.d.ts +2 -0
- package/build/types/lib/workbook-builder/merge-cells/add.d.ts +15 -0
- package/build/types/lib/workbook-builder/merge-cells/helpers/index.d.ts +2 -0
- package/build/types/lib/workbook-builder/merge-cells/helpers/ranges-equal.d.ts +10 -0
- package/build/types/lib/workbook-builder/merge-cells/helpers/ranges-intersect.d.ts +10 -0
- package/build/types/lib/workbook-builder/merge-cells/index.d.ts +2 -0
- package/build/types/lib/workbook-builder/merge-cells/remove.d.ts +15 -0
- package/build/types/lib/workbook-builder/shared-string-ref/add.d.ts +13 -0
- package/build/types/lib/workbook-builder/shared-string-ref/index.d.ts +3 -0
- package/build/types/lib/workbook-builder/shared-string-ref/remove-all-from-sheet.d.ts +10 -0
- package/build/types/lib/workbook-builder/shared-string-ref/remove.d.ts +13 -0
- package/build/types/lib/workbook-builder/style-ref/add-or-get.d.ts +16 -0
- package/build/types/lib/workbook-builder/style-ref/helpers/add-num-fmt.d.ts +17 -0
- package/build/types/lib/workbook-builder/style-ref/helpers/border-to-xml.d.ts +16 -0
- package/build/types/lib/workbook-builder/style-ref/helpers/fill-to-xml.d.ts +17 -0
- package/build/types/lib/workbook-builder/style-ref/helpers/font-to-xml.d.ts +18 -0
- package/build/types/lib/workbook-builder/style-ref/helpers/index.d.ts +5 -0
- package/build/types/lib/workbook-builder/style-ref/helpers/reindex-style-map-after-removal.d.ts +15 -0
- package/build/types/lib/workbook-builder/style-ref/index.d.ts +3 -0
- package/build/types/lib/workbook-builder/style-ref/remove-all-from-sheet.d.ts +4 -0
- package/build/types/lib/workbook-builder/style-ref/remove.d.ts +18 -0
- package/build/types/lib/workbook-builder/types/app-xml-options.d.ts +9 -0
- package/build/types/lib/workbook-builder/types/border-style.d.ts +5 -0
- package/build/types/lib/workbook-builder/types/cell-data.d.ts +10 -0
- package/build/types/lib/workbook-builder/types/cell-style.d.ts +32 -0
- package/build/types/lib/workbook-builder/types/cell-type.d.ts +11 -0
- package/build/types/lib/workbook-builder/types/cell-value.d.ts +2 -0
- package/build/types/lib/workbook-builder/types/cell-xf.d.ts +13 -0
- package/build/types/lib/workbook-builder/types/index.d.ts +11 -0
- package/build/types/lib/workbook-builder/types/merge-cell.d.ts +6 -0
- package/build/types/lib/workbook-builder/types/row-data.d.ts +5 -0
- package/build/types/lib/workbook-builder/types/sheet-data.d.ts +13 -0
- package/build/types/lib/workbook-builder/types/xml-node.d.ts +11 -0
- package/build/types/lib/workbook-builder/utils/build-app-xml.d.ts +2 -0
- package/build/types/lib/workbook-builder/utils/build-cell-children.d.ts +9 -0
- package/build/types/lib/workbook-builder/utils/build-content-types-xml.d.ts +1 -0
- package/build/types/lib/workbook-builder/utils/build-core-xml.d.ts +1 -0
- package/build/types/lib/workbook-builder/utils/build-rels-xml.d.ts +1 -0
- package/build/types/lib/workbook-builder/utils/build-shared-strings-xml.d.ts +10 -0
- package/build/types/lib/workbook-builder/utils/build-styles-xml.d.ts +23 -0
- package/build/types/lib/workbook-builder/utils/build-theme-xml.d.ts +1 -0
- package/build/types/lib/workbook-builder/utils/build-workbook-rels-xml.d.ts +9 -0
- package/build/types/lib/workbook-builder/utils/build-workbook-xml.d.ts +3 -0
- package/build/types/lib/workbook-builder/utils/build-worksheet-xml.d.ts +2 -0
- package/build/types/lib/workbook-builder/utils/build-xml.d.ts +50 -0
- package/build/types/lib/workbook-builder/utils/constants.d.ts +47 -0
- package/build/types/lib/workbook-builder/utils/date-to-excel-serial.d.ts +9 -0
- package/build/types/lib/workbook-builder/utils/index.d.ts +18 -0
- package/build/types/lib/workbook-builder/utils/initialize-files.d.ts +13 -0
- package/build/types/lib/workbook-builder/utils/sheet.d.ts +21 -0
- package/build/types/lib/workbook-builder/utils/write-shared-strings-xml.d.ts +11 -0
- package/build/types/lib/workbook-builder/utils/write-styles-xml.d.ts +24 -0
- package/build/types/lib/workbook-builder/utils/write-worksheet-xml.d.ts +14 -0
- package/build/types/lib/workbook-builder/utils/write-xml.d.ts +3 -0
- package/build/types/lib/workbook-builder/workbook-builder.d.ts +110 -0
- package/build/types/lib/zip/utils/to-bytes.d.ts +2 -2
- package/package.json +4 -2
- /package/build/cjs/lib/{template/utils → utils}/escape-xml.js +0 -0
- /package/build/esm/lib/{template/utils → utils}/escape-xml.js +0 -0
- /package/build/types/lib/{template/utils → utils}/escape-xml.d.ts +0 -0
@@ -42,6 +42,7 @@ const fsSync = __importStar(require("node:fs"));
|
|
42
42
|
const path = __importStar(require("node:path"));
|
43
43
|
const readline = __importStar(require("node:readline"));
|
44
44
|
const node_crypto_1 = __importDefault(require("node:crypto"));
|
45
|
+
const SharedUtils = __importStar(require("../utils/index.js"));
|
45
46
|
const Xml = __importStar(require("../xml/index.js"));
|
46
47
|
const Zip = __importStar(require("../zip/index.js"));
|
47
48
|
const Utils = __importStar(require("./utils/index.js"));
|
@@ -484,7 +485,7 @@ class TemplateFs {
|
|
484
485
|
const cellTags = Object.entries(cells).map(([col, value]) => {
|
485
486
|
const colUpper = col.toUpperCase();
|
486
487
|
const ref = `${colUpper}${rowNumber}`;
|
487
|
-
return `<c r="${ref}" t="inlineStr"><is><t>${
|
488
|
+
return `<c r="${ref}" t="inlineStr"><is><t>${SharedUtils.escapeXml(value)}</t></is></c>`;
|
488
489
|
}).join("");
|
489
490
|
return `<row r="${rowNumber}">${cellTags}</row>`;
|
490
491
|
}).join("");
|
@@ -35,6 +35,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
36
36
|
exports.TemplateMemory = void 0;
|
37
37
|
const fs = __importStar(require("node:fs/promises"));
|
38
|
+
const SharedUtils = __importStar(require("../utils/index.js"));
|
38
39
|
const Xml = __importStar(require("../xml/index.js"));
|
39
40
|
const Zip = __importStar(require("../zip/index.js"));
|
40
41
|
const Utils = __importStar(require("./utils/index.js"));
|
@@ -533,7 +534,7 @@ class TemplateMemory {
|
|
533
534
|
const cellTags = Object.entries(cells).map(([col, value]) => {
|
534
535
|
const colUpper = col.toUpperCase();
|
535
536
|
const ref = `${colUpper}${rowNumber}`;
|
536
|
-
return `<c r="${ref}" t="inlineStr"><is><t>${
|
537
|
+
return `<c r="${ref}" t="inlineStr"><is><t>${SharedUtils.escapeXml(value)}</t></is></c>`;
|
537
538
|
}).join("");
|
538
539
|
return `<row r="${rowNumber}">${cellTags}</row>`;
|
539
540
|
}).join("");
|
@@ -0,0 +1,15 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.columnLetterToIndex = columnLetterToIndex;
|
4
|
+
function columnLetterToIndex(col) {
|
5
|
+
if (!col)
|
6
|
+
return -1;
|
7
|
+
let index = 0;
|
8
|
+
for (let i = 0; i < col.length; i++) {
|
9
|
+
const charCode = col.charCodeAt(i);
|
10
|
+
if (charCode < 65 || charCode > 90)
|
11
|
+
return -1; // не A-Z
|
12
|
+
index = index * 26 + (charCode - 64); // 'A' -> 1
|
13
|
+
}
|
14
|
+
return index;
|
15
|
+
}
|
@@ -43,8 +43,8 @@ __exportStar(require("./check-row.js"), exports);
|
|
43
43
|
__exportStar(require("./check-rows.js"), exports);
|
44
44
|
__exportStar(require("./check-start-row.js"), exports);
|
45
45
|
__exportStar(require("./column-index-to-letter.js"), exports);
|
46
|
+
__exportStar(require("./column-letter-to-index.js"), exports);
|
46
47
|
__exportStar(require("./compare-columns.js"), exports);
|
47
|
-
__exportStar(require("./escape-xml.js"), exports);
|
48
48
|
__exportStar(require("./extract-xml-declaration.js"), exports);
|
49
49
|
__exportStar(require("./found-arrays-in-replacements.js"), exports);
|
50
50
|
__exportStar(require("./get-by-path.js"), exports);
|
@@ -1,13 +1,13 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.prepareRowToCells = prepareRowToCells;
|
4
|
+
const index_js_1 = require("../../utils/index.js");
|
4
5
|
const column_index_to_letter_js_1 = require("./column-index-to-letter.js");
|
5
|
-
const escape_xml_js_1 = require("./escape-xml.js");
|
6
6
|
function prepareRowToCells(row, rowNumber) {
|
7
7
|
return row.map((value, colIndex) => {
|
8
8
|
const colLetter = (0, column_index_to_letter_js_1.columnIndexToLetter)(colIndex);
|
9
9
|
const cellRef = `${colLetter}${rowNumber}`;
|
10
|
-
const cellValue = (0,
|
10
|
+
const cellValue = (0, index_js_1.escapeXml)(String(value ?? ""));
|
11
11
|
return {
|
12
12
|
cellRef,
|
13
13
|
cellValue,
|
@@ -33,7 +33,7 @@ function validateWorksheetXml(xml) {
|
|
33
33
|
const requiredElements = [
|
34
34
|
{ name: "sheetViews", tag: "<sheetViews>" },
|
35
35
|
{ name: "sheetFormatPr", tag: "<sheetFormatPr" },
|
36
|
-
{ name: "sheetData", tag: "<sheetData
|
36
|
+
{ name: "sheetData", tag: "<sheetData" },
|
37
37
|
];
|
38
38
|
for (const { name, tag } of requiredElements) {
|
39
39
|
if (!xml.includes(tag)) {
|
@@ -41,16 +41,26 @@ function validateWorksheetXml(xml) {
|
|
41
41
|
}
|
42
42
|
}
|
43
43
|
// 3. Extract and validate sheetData
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
44
|
+
// 3. Extract and validate sheetData
|
45
|
+
// Поддержка пустого <sheetData/> или обычного открывающего-закрывающего тега
|
46
|
+
const sheetDataMatch = xml.match(/<sheetData([^>]*)>/);
|
47
|
+
if (!sheetDataMatch) {
|
48
|
+
return createError("Missing sheetData element");
|
48
49
|
}
|
49
|
-
const
|
50
|
-
|
51
|
-
if (
|
52
|
-
|
50
|
+
const isSelfClosing = sheetDataMatch[1]?.includes("/"); // <sheetData/> самозакрывающийся
|
51
|
+
let sheetDataContent = "";
|
52
|
+
if (!isSelfClosing) {
|
53
|
+
const sheetDataStart = sheetDataMatch.index + sheetDataMatch[0].length;
|
54
|
+
const sheetDataEnd = xml.indexOf("</sheetData>", sheetDataStart);
|
55
|
+
if (sheetDataEnd === -1) {
|
56
|
+
return createError("Invalid sheetData structure: missing closing tag");
|
57
|
+
}
|
58
|
+
sheetDataContent = xml.substring(sheetDataStart, sheetDataEnd);
|
53
59
|
}
|
60
|
+
// Разбиваем на строки, если есть содержимое
|
61
|
+
const rows = sheetDataContent
|
62
|
+
? sheetDataContent.split("</row>").map(r => r.trim()).filter(r => r.length)
|
63
|
+
: [];
|
54
64
|
// Collect information about all rows and cells
|
55
65
|
const allRows = [];
|
56
66
|
const allCells = [];
|
@@ -14,6 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
15
15
|
};
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
17
|
+
__exportStar(require("./escape-xml.js"), exports);
|
17
18
|
__exportStar(require("./get-max-row-number.js"), exports);
|
18
19
|
__exportStar(require("./is-same-buffer.js"), exports);
|
19
20
|
__exportStar(require("./remove-sheet-by-name.js"), exports);
|
@@ -21,3 +22,4 @@ __exportStar(require("./remove-sheet-from-content-types.js"), exports);
|
|
21
22
|
__exportStar(require("./remove-sheet-from-rels.js"), exports);
|
22
23
|
__exportStar(require("./remove-sheet-from-workbook.js"), exports);
|
23
24
|
__exportStar(require("./shift-cell-ref.js"), exports);
|
25
|
+
__exportStar(require("./trim-and-join-multiline.js"), exports);
|
@@ -0,0 +1,32 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.trimAndJoinMultiline = trimAndJoinMultiline;
|
4
|
+
/**
|
5
|
+
* Trims whitespace from multiline strings and joins them with a specified separator.
|
6
|
+
*
|
7
|
+
* This function processes multiline text by:
|
8
|
+
* - Splitting the input string by line breaks (handles both \n and \r\n)
|
9
|
+
* - Trimming whitespace from each line
|
10
|
+
* - Optionally normalizing multiple spaces to single spaces
|
11
|
+
* - Optionally filtering out empty lines
|
12
|
+
* - Joining the processed lines with a custom separator
|
13
|
+
*
|
14
|
+
* @param options - Configuration object for processing the multiline string
|
15
|
+
* @param options.inputString - The multiline string to process
|
16
|
+
* @param options.keepEmptyLines - Whether to preserve empty lines in the output (default: false)
|
17
|
+
* @param options.normalizeSpaces - Whether to normalize multiple consecutive spaces to single spaces (default: true)
|
18
|
+
* @param options.separator - The string to use when joining lines (default: " ")
|
19
|
+
* @returns The processed string with lines joined by the separator
|
20
|
+
*/
|
21
|
+
function trimAndJoinMultiline(options) {
|
22
|
+
const { inputString, keepEmptyLines = false, normalizeSpaces = true, separator = " ", } = options;
|
23
|
+
const lines = inputString.split(/\r?\n/);
|
24
|
+
let trimmedLines = lines.map(line => line.trim());
|
25
|
+
if (normalizeSpaces) {
|
26
|
+
trimmedLines = trimmedLines.map(line => line.replace(/\s+/g, " "));
|
27
|
+
}
|
28
|
+
const filteredLines = keepEmptyLines
|
29
|
+
? trimmedLines
|
30
|
+
: trimmedLines.filter(line => line.length > 0);
|
31
|
+
return filteredLines.join(separator);
|
32
|
+
}
|
@@ -0,0 +1,18 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.border = void 0;
|
4
|
+
/**
|
5
|
+
* Creates a basic empty border XML node.
|
6
|
+
*
|
7
|
+
* @returns XML node representing an empty border with left, right, top, and bottom elements
|
8
|
+
*/
|
9
|
+
const border = () => ({
|
10
|
+
children: [
|
11
|
+
{ tag: "left" },
|
12
|
+
{ tag: "right" },
|
13
|
+
{ tag: "top" },
|
14
|
+
{ tag: "bottom" },
|
15
|
+
],
|
16
|
+
tag: "border",
|
17
|
+
});
|
18
|
+
exports.border = border;
|
@@ -0,0 +1,15 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.cellXf = void 0;
|
4
|
+
/**
|
5
|
+
* Creates a default cell formatting object.
|
6
|
+
*
|
7
|
+
* @returns Cell formatting object with default IDs
|
8
|
+
*/
|
9
|
+
const cellXf = () => ({
|
10
|
+
borderId: 0,
|
11
|
+
fillId: 0,
|
12
|
+
fontId: 0,
|
13
|
+
numFmtId: 0,
|
14
|
+
});
|
15
|
+
exports.cellXf = cellXf;
|
@@ -0,0 +1,18 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.fill = void 0;
|
4
|
+
/**
|
5
|
+
* Creates a basic fill XML node with no pattern.
|
6
|
+
*
|
7
|
+
* @returns XML node representing an empty pattern fill
|
8
|
+
*/
|
9
|
+
const fill = () => ({
|
10
|
+
children: [
|
11
|
+
{
|
12
|
+
attrs: { patternType: "none" },
|
13
|
+
tag: "patternFill",
|
14
|
+
},
|
15
|
+
],
|
16
|
+
tag: "fill",
|
17
|
+
});
|
18
|
+
exports.fill = fill;
|
@@ -0,0 +1,19 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.font = void 0;
|
4
|
+
/**
|
5
|
+
* Creates a default font XML node with Calibri font.
|
6
|
+
*
|
7
|
+
* @returns XML node representing a default font configuration
|
8
|
+
*/
|
9
|
+
const font = () => ({
|
10
|
+
children: [
|
11
|
+
{ attrs: { val: "11" }, tag: "sz" },
|
12
|
+
{ attrs: { theme: "1" }, tag: "color" },
|
13
|
+
{ attrs: { val: "Calibri" }, tag: "name" },
|
14
|
+
{ attrs: { val: "2" }, tag: "family" },
|
15
|
+
{ attrs: { val: "minor" }, tag: "scheme" },
|
16
|
+
],
|
17
|
+
tag: "font",
|
18
|
+
});
|
19
|
+
exports.font = font;
|
@@ -0,0 +1,21 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
3
|
+
if (k2 === undefined) k2 = k;
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
7
|
+
}
|
8
|
+
Object.defineProperty(o, k2, desc);
|
9
|
+
}) : (function(o, m, k, k2) {
|
10
|
+
if (k2 === undefined) k2 = k;
|
11
|
+
o[k2] = m[k];
|
12
|
+
}));
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
15
|
+
};
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
17
|
+
__exportStar(require("./border.js"), exports);
|
18
|
+
__exportStar(require("./cell-xf.js"), exports);
|
19
|
+
__exportStar(require("./fill.js"), exports);
|
20
|
+
__exportStar(require("./font.js"), exports);
|
21
|
+
__exportStar(require("./sheet-name.js"), exports);
|
@@ -0,0 +1,10 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.sheetName = void 0;
|
4
|
+
/**
|
5
|
+
* Returns the default sheet name.
|
6
|
+
*
|
7
|
+
* @returns Default sheet name string
|
8
|
+
*/
|
9
|
+
const sheetName = () => "Sheet1";
|
10
|
+
exports.sheetName = sheetName;
|
@@ -0,0 +1,18 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
3
|
+
if (k2 === undefined) k2 = k;
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
7
|
+
}
|
8
|
+
Object.defineProperty(o, k2, desc);
|
9
|
+
}) : (function(o, m, k, k2) {
|
10
|
+
if (k2 === undefined) k2 = k;
|
11
|
+
o[k2] = m[k];
|
12
|
+
}));
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
15
|
+
};
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
17
|
+
__exportStar(require("./utils/constants.js"), exports);
|
18
|
+
__exportStar(require("./workbook-builder.js"), exports);
|
@@ -0,0 +1,72 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
3
|
+
if (k2 === undefined) k2 = k;
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
7
|
+
}
|
8
|
+
Object.defineProperty(o, k2, desc);
|
9
|
+
}) : (function(o, m, k, k2) {
|
10
|
+
if (k2 === undefined) k2 = k;
|
11
|
+
o[k2] = m[k];
|
12
|
+
}));
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
15
|
+
}) : function(o, v) {
|
16
|
+
o["default"] = v;
|
17
|
+
});
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
19
|
+
var ownKeys = function(o) {
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
21
|
+
var ar = [];
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
23
|
+
return ar;
|
24
|
+
};
|
25
|
+
return ownKeys(o);
|
26
|
+
};
|
27
|
+
return function (mod) {
|
28
|
+
if (mod && mod.__esModule) return mod;
|
29
|
+
var result = {};
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
31
|
+
__setModuleDefault(result, mod);
|
32
|
+
return result;
|
33
|
+
};
|
34
|
+
})();
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
36
|
+
exports.add = add;
|
37
|
+
const Helpers = __importStar(require("./helpers/index.js"));
|
38
|
+
/**
|
39
|
+
* Adds a merge cell range to the specified sheet.
|
40
|
+
*
|
41
|
+
* @param this - WorkbookBuilder instance
|
42
|
+
* @param payload - Merge cell data with sheet name
|
43
|
+
*
|
44
|
+
* @returns The added merge cell object
|
45
|
+
*
|
46
|
+
* @throws Error if sheet is not found or merge intersects with existing merged cells
|
47
|
+
*/
|
48
|
+
function add(payload) {
|
49
|
+
const { endCol, endRow, sheetName, startCol, startRow } = payload;
|
50
|
+
if (!this.getSheet(sheetName)) {
|
51
|
+
throw new Error("Sheet not found");
|
52
|
+
}
|
53
|
+
const merges = this.mergeCells.get(sheetName) ?? [];
|
54
|
+
// Check for intersection with existing merge cells
|
55
|
+
for (const m of merges) {
|
56
|
+
if (Helpers.rangesEqual(m, payload)) {
|
57
|
+
return m; // Already exists
|
58
|
+
}
|
59
|
+
if (Helpers.rangesIntersect(m, payload)) {
|
60
|
+
throw new Error("Merge intersects existing merged cell");
|
61
|
+
}
|
62
|
+
}
|
63
|
+
const merge = {
|
64
|
+
endCol,
|
65
|
+
endRow,
|
66
|
+
startCol,
|
67
|
+
startRow,
|
68
|
+
};
|
69
|
+
merges.push(merge);
|
70
|
+
this.mergeCells.set(sheetName, merges);
|
71
|
+
return merge;
|
72
|
+
}
|
@@ -0,0 +1,18 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
3
|
+
if (k2 === undefined) k2 = k;
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
7
|
+
}
|
8
|
+
Object.defineProperty(o, k2, desc);
|
9
|
+
}) : (function(o, m, k, k2) {
|
10
|
+
if (k2 === undefined) k2 = k;
|
11
|
+
o[k2] = m[k];
|
12
|
+
}));
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
15
|
+
};
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
17
|
+
__exportStar(require("./ranges-equal.js"), exports);
|
18
|
+
__exportStar(require("./ranges-intersect.js"), exports);
|
@@ -0,0 +1,17 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.rangesEqual = rangesEqual;
|
4
|
+
/**
|
5
|
+
* Compares two merge cell ranges for equality.
|
6
|
+
*
|
7
|
+
* @param a - First merge cell range to compare
|
8
|
+
* @param b - Second merge cell range to compare
|
9
|
+
*
|
10
|
+
* @returns True if both ranges have identical start and end coordinates
|
11
|
+
*/
|
12
|
+
function rangesEqual(a, b) {
|
13
|
+
return a.startRow === b.startRow &&
|
14
|
+
a.endRow === b.endRow &&
|
15
|
+
a.startCol === b.startCol &&
|
16
|
+
a.endCol === b.endCol;
|
17
|
+
}
|
@@ -0,0 +1,17 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.rangesIntersect = rangesIntersect;
|
4
|
+
/**
|
5
|
+
* Checks if two merge cell ranges intersect with each other.
|
6
|
+
*
|
7
|
+
* @param a - First merge cell range to check
|
8
|
+
* @param b - Second merge cell range to check
|
9
|
+
*
|
10
|
+
* @returns True if the ranges intersect (overlap), false otherwise
|
11
|
+
*/
|
12
|
+
function rangesIntersect(a, b) {
|
13
|
+
return !(a.endRow < b.startRow ||
|
14
|
+
a.startRow > b.endRow ||
|
15
|
+
a.endCol < b.startCol ||
|
16
|
+
a.startCol > b.endCol);
|
17
|
+
}
|
@@ -0,0 +1,18 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
3
|
+
if (k2 === undefined) k2 = k;
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
7
|
+
}
|
8
|
+
Object.defineProperty(o, k2, desc);
|
9
|
+
}) : (function(o, m, k, k2) {
|
10
|
+
if (k2 === undefined) k2 = k;
|
11
|
+
o[k2] = m[k];
|
12
|
+
}));
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
15
|
+
};
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
17
|
+
__exportStar(require("./add.js"), exports);
|
18
|
+
__exportStar(require("./remove.js"), exports);
|
@@ -0,0 +1,60 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
3
|
+
if (k2 === undefined) k2 = k;
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
7
|
+
}
|
8
|
+
Object.defineProperty(o, k2, desc);
|
9
|
+
}) : (function(o, m, k, k2) {
|
10
|
+
if (k2 === undefined) k2 = k;
|
11
|
+
o[k2] = m[k];
|
12
|
+
}));
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
15
|
+
}) : function(o, v) {
|
16
|
+
o["default"] = v;
|
17
|
+
});
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
19
|
+
var ownKeys = function(o) {
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
21
|
+
var ar = [];
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
23
|
+
return ar;
|
24
|
+
};
|
25
|
+
return ownKeys(o);
|
26
|
+
};
|
27
|
+
return function (mod) {
|
28
|
+
if (mod && mod.__esModule) return mod;
|
29
|
+
var result = {};
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
31
|
+
__setModuleDefault(result, mod);
|
32
|
+
return result;
|
33
|
+
};
|
34
|
+
})();
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
36
|
+
exports.remove = remove;
|
37
|
+
const Helpers = __importStar(require("./helpers/index.js"));
|
38
|
+
/**
|
39
|
+
* Removes a merge cell range from the specified sheet.
|
40
|
+
*
|
41
|
+
* @param this - WorkbookBuilder instance
|
42
|
+
* @param payload - Merge cell data with sheet name
|
43
|
+
*
|
44
|
+
* @returns True if the merge cell was successfully removed
|
45
|
+
*
|
46
|
+
* @throws Error if sheet is not found or merge cell does not exist
|
47
|
+
*/
|
48
|
+
function remove(payload) {
|
49
|
+
const { endCol, endRow, sheetName, startCol, startRow } = payload;
|
50
|
+
if (!this.getSheet(sheetName)) {
|
51
|
+
throw new Error("Sheet not found: " + sheetName);
|
52
|
+
}
|
53
|
+
const merges = this.mergeCells.get(sheetName) ?? [];
|
54
|
+
const i = merges.findIndex(m => Helpers.rangesEqual(m, { endCol, endRow, startCol, startRow }));
|
55
|
+
if (i === -1) {
|
56
|
+
throw new Error("Sheet: " + sheetName + " Invalid merge cell: " + JSON.stringify(payload));
|
57
|
+
}
|
58
|
+
merges.splice(i, 1);
|
59
|
+
return true;
|
60
|
+
}
|
@@ -0,0 +1,24 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.add = add;
|
4
|
+
/**
|
5
|
+
* Adds a shared string to the workbook and returns its index.
|
6
|
+
*
|
7
|
+
* @param this - WorkbookBuilder instance
|
8
|
+
* @param payload - Object containing sheet name and string value
|
9
|
+
*
|
10
|
+
* @returns The index of the shared string in the shared strings array
|
11
|
+
*/
|
12
|
+
function add(payload) {
|
13
|
+
const { sheetName, str } = payload;
|
14
|
+
if (!this.getSheet(sheetName)) {
|
15
|
+
throw new Error("SheetName was not found");
|
16
|
+
}
|
17
|
+
let idx = this.sharedStringMap.get(str);
|
18
|
+
if (idx === undefined) {
|
19
|
+
idx = this.sharedStrings.length;
|
20
|
+
this.sharedStrings.push(str);
|
21
|
+
this.sharedStringMap.set(str, idx);
|
22
|
+
}
|
23
|
+
return idx;
|
24
|
+
}
|
@@ -0,0 +1,19 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
3
|
+
if (k2 === undefined) k2 = k;
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
7
|
+
}
|
8
|
+
Object.defineProperty(o, k2, desc);
|
9
|
+
}) : (function(o, m, k, k2) {
|
10
|
+
if (k2 === undefined) k2 = k;
|
11
|
+
o[k2] = m[k];
|
12
|
+
}));
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
15
|
+
};
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
17
|
+
__exportStar(require("./add.js"), exports);
|
18
|
+
__exportStar(require("./remove-all-from-sheet.js"), exports);
|
19
|
+
__exportStar(require("./remove.js"), exports);
|
@@ -0,0 +1,66 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.removeAllFromSheet = removeAllFromSheet;
|
4
|
+
/**
|
5
|
+
* Removes all shared string references for a specific sheet and cleans up unused strings.
|
6
|
+
*
|
7
|
+
* @param this - WorkbookBuilder instance
|
8
|
+
* @param payload - Object containing the sheet name to remove references from
|
9
|
+
*/
|
10
|
+
function removeAllFromSheet(payload) {
|
11
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
12
|
+
const { sheetName } = payload;
|
13
|
+
return;
|
14
|
+
// // 1. Collect strings that need to be removed
|
15
|
+
// const stringsToRemove: string[] = [];
|
16
|
+
// for (const [str, sheetsSet] of this.sharedStringRefs) {
|
17
|
+
// sheetsSet.delete(sheetName);
|
18
|
+
// if (sheetsSet.size === 0) {
|
19
|
+
// stringsToRemove.push(str);
|
20
|
+
// }
|
21
|
+
// }
|
22
|
+
// if (stringsToRemove.length === 0) {
|
23
|
+
// return;
|
24
|
+
// }
|
25
|
+
// // 2. Build map of old indices → new indices
|
26
|
+
// const oldToNew = new Map<number, number>();
|
27
|
+
// let newIdx = 0;
|
28
|
+
// for (let oldIdx = 0; oldIdx < this.sharedStrings.length; oldIdx++) {
|
29
|
+
// const str = this.sharedStrings[oldIdx];
|
30
|
+
// if (!str) {
|
31
|
+
// continue; // Skip if undefined
|
32
|
+
// }
|
33
|
+
// if (stringsToRemove.includes(str)) {
|
34
|
+
// // Remove string from refs
|
35
|
+
// this.sharedStringRefs.delete(str);
|
36
|
+
// continue; // Index is not accounted for
|
37
|
+
// }
|
38
|
+
// oldToNew.set(oldIdx, newIdx++);
|
39
|
+
// }
|
40
|
+
// // 3. Update sharedStrings array
|
41
|
+
// this.sharedStrings = this.sharedStrings.filter(s => !stringsToRemove.includes(s));
|
42
|
+
// // 4. Update sharedStringMap with new indices
|
43
|
+
// this.sharedStringMap.clear();
|
44
|
+
// for (let i = 0; i < this.sharedStrings.length; i++) {
|
45
|
+
// const str = this.sharedStrings[i];
|
46
|
+
// if (str) {
|
47
|
+
// this.sharedStringMap.set(str, i);
|
48
|
+
// }
|
49
|
+
// }
|
50
|
+
// // 5. Update indices in cells across all sheets
|
51
|
+
// for (const sheet of this.sheets.values()) {
|
52
|
+
// for (const row of sheet.rows.values()) {
|
53
|
+
// for (const cell of row.cells.values()) {
|
54
|
+
// if (cell.type === "s" && typeof cell.value === "number") {
|
55
|
+
// const newIdx = oldToNew.get(cell.value);
|
56
|
+
// if (newIdx !== undefined) {
|
57
|
+
// cell.value = newIdx;
|
58
|
+
// } else {
|
59
|
+
// // If cell.value was a removed string, set to 0 or null
|
60
|
+
// cell.value = 0;
|
61
|
+
// }
|
62
|
+
// }
|
63
|
+
// }
|
64
|
+
// }
|
65
|
+
// }
|
66
|
+
}
|