read-excel-file 9.3.3 → 9.3.5
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/CHANGELOG.md +9 -0
- package/README.md +32 -2
- package/browser/index.cjs +3 -0
- package/browser/index.d.ts +16 -0
- package/browser/index.js +4 -1
- package/bundle/read-excel-file.min.js +1 -1
- package/bundle/read-excel-file.min.js.map +1 -1
- package/commonjs/export/convertInputToNodeStream.js +0 -12
- package/commonjs/export/convertInputToNodeStream.js.map +1 -1
- package/commonjs/export/parseSheet.js +14 -7
- package/commonjs/export/parseSheet.js.map +1 -1
- package/commonjs/export/readSheetBrowser.js +3 -6
- package/commonjs/export/readSheetBrowser.js.map +1 -1
- package/commonjs/export/readSheetNode.js +3 -6
- package/commonjs/export/readSheetNode.js.map +1 -1
- package/commonjs/export/readSheetUniversal.js +2 -2
- package/commonjs/export/readSheetUniversal.js.map +1 -1
- package/commonjs/export/readSheetWebWorker.js +5 -5
- package/commonjs/export/readSheetWebWorker.js.map +1 -1
- package/commonjs/export/readXlsxFileBrowser.js +3 -6
- package/commonjs/export/readXlsxFileBrowser.js.map +1 -1
- package/commonjs/export/readXlsxFileNode.js +3 -6
- package/commonjs/export/readXlsxFileNode.js.map +1 -1
- package/commonjs/export/readXlsxFileUniversal.js +2 -2
- package/commonjs/export/readXlsxFileUniversal.js.map +1 -1
- package/commonjs/export/readXlsxFileWebWorker.js +5 -5
- package/commonjs/export/readXlsxFileWebWorker.js.map +1 -1
- package/commonjs/export/unpackXlsxFileBrowser.js +15 -4
- package/commonjs/export/unpackXlsxFileBrowser.js.map +1 -1
- package/commonjs/export/unpackXlsxFileBrowser.test.js.map +1 -0
- package/commonjs/export/unpackXlsxFileNode.js +32 -5
- package/commonjs/export/unpackXlsxFileNode.js.map +1 -1
- package/commonjs/export/unpackXlsxFileNode.test.js.map +1 -0
- package/commonjs/export/unpackXlsxFileUniversal.js +14 -3
- package/commonjs/export/unpackXlsxFileUniversal.js.map +1 -1
- package/commonjs/export/unpackXlsxFileUniversal.test.js.map +1 -0
- package/commonjs/parseSheetData/parseSheetData.js +9 -6
- package/commonjs/parseSheetData/parseSheetData.js.map +1 -1
- package/commonjs/saxen/parser.js +1 -1
- package/commonjs/saxen/parser.js.map +1 -1
- package/commonjs/utility/convertValuesFromUint8ArraysToStrings.js +100 -0
- package/commonjs/utility/convertValuesFromUint8ArraysToStrings.js.map +1 -0
- package/commonjs/xlsx/InvalidSpreadsheetError.js +55 -0
- package/commonjs/xlsx/InvalidSpreadsheetError.js.map +1 -0
- package/commonjs/xlsx/SheetNotFoundError.js +55 -0
- package/commonjs/xlsx/SheetNotFoundError.js.map +1 -0
- package/commonjs/xlsx/file/InputValidationStream.js +101 -0
- package/commonjs/xlsx/file/InputValidationStream.js.map +1 -0
- package/commonjs/xlsx/file/InputValidationStream.test.js.map +1 -0
- package/commonjs/xlsx/file/InvalidInputError.js +105 -0
- package/commonjs/xlsx/file/InvalidInputError.js.map +1 -0
- package/commonjs/xlsx/file/createFileTypeDetector.js +70 -0
- package/commonjs/xlsx/file/createFileTypeDetector.js.map +1 -0
- package/commonjs/xlsx/file/createFileTypeDetector.test.js.map +1 -0
- package/commonjs/xlsx/file/validateLeadingBytes.js +47 -0
- package/commonjs/xlsx/file/validateLeadingBytes.js.map +1 -0
- package/commonjs/xlsx/file/validateLeadingBytes.test.js.map +1 -0
- package/commonjs/xlsx/isDateFormat.js +32 -27
- package/commonjs/xlsx/isDateFormat.js.map +1 -1
- package/commonjs/xlsx/isDateFormatStyle.js +19 -21
- package/commonjs/xlsx/isDateFormatStyle.js.map +1 -1
- package/commonjs/xlsx/parseCell.js +252 -115
- package/commonjs/xlsx/parseCell.js.map +1 -1
- package/commonjs/xlsx/parseCellAddress.js +22 -18
- package/commonjs/xlsx/parseCellAddress.js.map +1 -1
- package/commonjs/xlsx/parseExcelDate.js +4 -124
- package/commonjs/xlsx/parseExcelDate.js.map +1 -1
- package/commonjs/xlsx/parseExcelDate.test.js.map +1 -1
- package/commonjs/xlsx/parseExcelTimestamp.js +139 -0
- package/commonjs/xlsx/parseExcelTimestamp.js.map +1 -0
- package/commonjs/xlsx/parseFilePaths.js +48 -47
- package/commonjs/xlsx/parseFilePaths.js.map +1 -1
- package/commonjs/xlsx/parseSharedStrings.js +91 -36
- package/commonjs/xlsx/parseSharedStrings.js.map +1 -1
- package/commonjs/xlsx/parseSheet.js +527 -69
- package/commonjs/xlsx/parseSheet.js.map +1 -1
- package/commonjs/xlsx/parseSpreadsheetContents.js +154 -83
- package/commonjs/xlsx/parseSpreadsheetContents.js.map +1 -1
- package/commonjs/xlsx/parseSpreadsheetInfo.js +60 -59
- package/commonjs/xlsx/parseSpreadsheetInfo.js.map +1 -1
- package/commonjs/xlsx/parseStyles.js +75 -75
- package/commonjs/xlsx/parseStyles.js.map +1 -1
- package/commonjs/xml/parseXml.js +112 -0
- package/commonjs/xml/parseXml.js.map +1 -0
- package/commonjs/xml/parseXml.test.js.map +1 -0
- package/commonjs/xml/parseXmlStream.js.map +1 -1
- package/commonjs/xml/parseXmlStream.sax.js +69 -28
- package/commonjs/xml/parseXmlStream.sax.js.map +1 -1
- package/commonjs/xml/parseXmlStream.saxen.js +66 -40
- package/commonjs/xml/parseXmlStream.saxen.js.map +1 -1
- package/commonjs/zip/UnzipError.js +55 -0
- package/commonjs/zip/UnzipError.js.map +1 -0
- package/commonjs/zip/unzipFromArrayBuffer.js +21 -1
- package/commonjs/zip/unzipFromArrayBuffer.js.map +1 -1
- package/commonjs/zip/unzipFromArrayBuffer.test.js.map +1 -0
- package/commonjs/zip/unzipFromStream.fflate.js +43 -35
- package/commonjs/zip/unzipFromStream.fflate.js.map +1 -1
- package/commonjs/zip/unzipFromStream.js +188 -6
- package/commonjs/zip/unzipFromStream.js.map +1 -1
- package/commonjs/zip/unzipFromStream.unzipper.js +19 -34
- package/commonjs/zip/unzipFromStream.unzipper.js.map +1 -1
- package/modules/export/convertInputToNodeStream.js +0 -12
- package/modules/export/convertInputToNodeStream.js.map +1 -1
- package/modules/export/parseSheet.js +13 -6
- package/modules/export/parseSheet.js.map +1 -1
- package/modules/export/readSheetBrowser.js +3 -5
- package/modules/export/readSheetBrowser.js.map +1 -1
- package/modules/export/readSheetNode.js +3 -5
- package/modules/export/readSheetNode.js.map +1 -1
- package/modules/export/readSheetUniversal.js +2 -2
- package/modules/export/readSheetUniversal.js.map +1 -1
- package/modules/export/readSheetWebWorker.js +7 -8
- package/modules/export/readSheetWebWorker.js.map +1 -1
- package/modules/export/readXlsxFileBrowser.js +3 -5
- package/modules/export/readXlsxFileBrowser.js.map +1 -1
- package/modules/export/readXlsxFileNode.js +3 -5
- package/modules/export/readXlsxFileNode.js.map +1 -1
- package/modules/export/readXlsxFileUniversal.js +2 -2
- package/modules/export/readXlsxFileUniversal.js.map +1 -1
- package/modules/export/readXlsxFileWebWorker.js +7 -8
- package/modules/export/readXlsxFileWebWorker.js.map +1 -1
- package/modules/export/unpackXlsxFileBrowser.js +15 -4
- package/modules/export/unpackXlsxFileBrowser.js.map +1 -1
- package/modules/export/unpackXlsxFileBrowser.test.js.map +1 -0
- package/modules/export/unpackXlsxFileNode.js +32 -5
- package/modules/export/unpackXlsxFileNode.js.map +1 -1
- package/modules/export/unpackXlsxFileNode.test.js.map +1 -0
- package/modules/export/unpackXlsxFileUniversal.js +14 -3
- package/modules/export/unpackXlsxFileUniversal.js.map +1 -1
- package/modules/export/unpackXlsxFileUniversal.test.js.map +1 -0
- package/modules/parseSheetData/parseSheetData.js +9 -6
- package/modules/parseSheetData/parseSheetData.js.map +1 -1
- package/modules/saxen/parser.js +1 -1
- package/modules/saxen/parser.js.map +1 -1
- package/modules/utility/convertValuesFromUint8ArraysToStrings.js +92 -0
- package/modules/utility/convertValuesFromUint8ArraysToStrings.js.map +1 -0
- package/modules/xlsx/InvalidSpreadsheetError.js +50 -0
- package/modules/xlsx/InvalidSpreadsheetError.js.map +1 -0
- package/modules/xlsx/SheetNotFoundError.js +50 -0
- package/modules/xlsx/SheetNotFoundError.js.map +1 -0
- package/modules/xlsx/file/InputValidationStream.js +96 -0
- package/modules/xlsx/file/InputValidationStream.js.map +1 -0
- package/modules/xlsx/file/InputValidationStream.test.js.map +1 -0
- package/modules/xlsx/file/InvalidInputError.js +100 -0
- package/modules/xlsx/file/InvalidInputError.js.map +1 -0
- package/modules/xlsx/file/createFileTypeDetector.js +63 -0
- package/modules/xlsx/file/createFileTypeDetector.js.map +1 -0
- package/modules/xlsx/file/createFileTypeDetector.test.js.map +1 -0
- package/modules/xlsx/file/validateLeadingBytes.js +37 -0
- package/modules/xlsx/file/validateLeadingBytes.js.map +1 -0
- package/modules/xlsx/file/validateLeadingBytes.test.js.map +1 -0
- package/modules/xlsx/isDateFormat.js +31 -27
- package/modules/xlsx/isDateFormat.js.map +1 -1
- package/modules/xlsx/isDateFormatStyle.js +18 -21
- package/modules/xlsx/isDateFormatStyle.js.map +1 -1
- package/modules/xlsx/parseCell.js +251 -111
- package/modules/xlsx/parseCell.js.map +1 -1
- package/modules/xlsx/parseCellAddress.js +21 -18
- package/modules/xlsx/parseCellAddress.js.map +1 -1
- package/modules/xlsx/parseExcelDate.js +4 -124
- package/modules/xlsx/parseExcelDate.js.map +1 -1
- package/modules/xlsx/parseExcelDate.test.js.map +1 -1
- package/modules/xlsx/parseExcelTimestamp.js +133 -0
- package/modules/xlsx/parseExcelTimestamp.js.map +1 -0
- package/modules/xlsx/parseFilePaths.js +48 -47
- package/modules/xlsx/parseFilePaths.js.map +1 -1
- package/modules/xlsx/parseSharedStrings.js +91 -37
- package/modules/xlsx/parseSharedStrings.js.map +1 -1
- package/modules/xlsx/parseSheet.js +526 -68
- package/modules/xlsx/parseSheet.js.map +1 -1
- package/modules/xlsx/parseSpreadsheetContents.js +153 -81
- package/modules/xlsx/parseSpreadsheetContents.js.map +1 -1
- package/modules/xlsx/parseSpreadsheetInfo.js +60 -59
- package/modules/xlsx/parseSpreadsheetInfo.js.map +1 -1
- package/modules/xlsx/parseStyles.js +75 -75
- package/modules/xlsx/parseStyles.js.map +1 -1
- package/modules/xml/parseXml.js +106 -0
- package/modules/xml/parseXml.js.map +1 -0
- package/modules/xml/parseXml.test.js.map +1 -0
- package/modules/xml/parseXmlStream.js +2 -0
- package/modules/xml/parseXmlStream.js.map +1 -1
- package/modules/xml/parseXmlStream.sax.js +69 -28
- package/modules/xml/parseXmlStream.sax.js.map +1 -1
- package/modules/xml/parseXmlStream.saxen.js +67 -40
- package/modules/xml/parseXmlStream.saxen.js.map +1 -1
- package/modules/zip/UnzipError.js +49 -0
- package/modules/zip/UnzipError.js.map +1 -0
- package/modules/zip/unzipFromArrayBuffer.js +21 -1
- package/modules/zip/unzipFromArrayBuffer.js.map +1 -1
- package/modules/zip/unzipFromArrayBuffer.test.js.map +1 -0
- package/modules/zip/unzipFromStream.fflate.js +41 -35
- package/modules/zip/unzipFromStream.fflate.js.map +1 -1
- package/modules/zip/unzipFromStream.js +124 -1
- package/modules/zip/unzipFromStream.js.map +1 -1
- package/modules/zip/unzipFromStream.unzipper.js +19 -35
- package/modules/zip/unzipFromStream.unzipper.js.map +1 -1
- package/node/index.cjs +3 -0
- package/node/index.d.ts +16 -0
- package/node/index.js +3 -0
- package/package.json +5 -3
- package/types/InvalidInputError.d.ts +16 -0
- package/types/InvalidSpreadsheetError.d.ts +4 -0
- package/types/SheetNotFoundError.d.ts +4 -0
- package/universal/index.cjs +3 -0
- package/universal/index.d.ts +16 -0
- package/universal/index.js +3 -0
- package/web-worker/index.cjs +3 -0
- package/web-worker/index.d.ts +16 -0
- package/web-worker/index.js +3 -0
- package/commonjs/export/convertValuesFromUint8ArraysToStrings.js +0 -23
- package/commonjs/export/convertValuesFromUint8ArraysToStrings.js.map +0 -1
- package/commonjs/xlsx/convertCellsToData2dArray.js +0 -84
- package/commonjs/xlsx/convertCellsToData2dArray.js.map +0 -1
- package/commonjs/xlsx/dropEmptyColumns.js +0 -40
- package/commonjs/xlsx/dropEmptyColumns.js.map +0 -1
- package/commonjs/xlsx/dropEmptyColumns.test.js.map +0 -1
- package/commonjs/xlsx/dropEmptyRows.js +0 -43
- package/commonjs/xlsx/dropEmptyRows.js.map +0 -1
- package/commonjs/xlsx/dropEmptyRows.test.js.map +0 -1
- package/commonjs/xlsx/parseCellValue.js +0 -186
- package/commonjs/xlsx/parseCellValue.js.map +0 -1
- package/commonjs/xlsx/parseNumber.js +0 -20
- package/commonjs/xlsx/parseNumber.js.map +0 -1
- package/commonjs/xlsx/parseSharedString.js +0 -64
- package/commonjs/xlsx/parseSharedString.js.map +0 -1
- package/commonjs/xlsx/parseSheetData.js +0 -68
- package/commonjs/xlsx/parseSheetData.js.map +0 -1
- package/commonjs/xlsx/reconstructSheetDimensionsFromSheetCells.js +0 -29
- package/commonjs/xlsx/reconstructSheetDimensionsFromSheetCells.js.map +0 -1
- package/commonjs/xml/parseXmlStream.saxen.code.js +0 -953
- package/commonjs/xml/parseXmlStream.saxen.code.js.map +0 -1
- package/commonjs/xml/parseXmlStream.test.js.map +0 -1
- package/modules/export/convertValuesFromUint8ArraysToStrings.js +0 -17
- package/modules/export/convertValuesFromUint8ArraysToStrings.js.map +0 -1
- package/modules/xlsx/convertCellsToData2dArray.js +0 -77
- package/modules/xlsx/convertCellsToData2dArray.js.map +0 -1
- package/modules/xlsx/dropEmptyColumns.js +0 -34
- package/modules/xlsx/dropEmptyColumns.js.map +0 -1
- package/modules/xlsx/dropEmptyColumns.test.js.map +0 -1
- package/modules/xlsx/dropEmptyRows.js +0 -37
- package/modules/xlsx/dropEmptyRows.js.map +0 -1
- package/modules/xlsx/dropEmptyRows.test.js.map +0 -1
- package/modules/xlsx/parseCellValue.js +0 -180
- package/modules/xlsx/parseCellValue.js.map +0 -1
- package/modules/xlsx/parseNumber.js +0 -14
- package/modules/xlsx/parseNumber.js.map +0 -1
- package/modules/xlsx/parseSharedString.js +0 -55
- package/modules/xlsx/parseSharedString.js.map +0 -1
- package/modules/xlsx/parseSheetData.js +0 -55
- package/modules/xlsx/parseSheetData.js.map +0 -1
- package/modules/xlsx/reconstructSheetDimensionsFromSheetCells.js +0 -23
- package/modules/xlsx/reconstructSheetDimensionsFromSheetCells.js.map +0 -1
- package/modules/xml/parseXmlStream.saxen.code.js +0 -947
- package/modules/xml/parseXmlStream.saxen.code.js.map +0 -1
- package/modules/xml/parseXmlStream.test.js.map +0 -1
|
@@ -4,51 +4,106 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports["default"] = parseSharedStrings;
|
|
7
|
-
var _parseSharedString = require("./parseSharedString.js");
|
|
8
7
|
/**
|
|
9
8
|
* Parses `sharedStrings.xml` file.
|
|
10
9
|
* @param {string} content
|
|
11
|
-
* @param {function}
|
|
10
|
+
* @param {function} parseXml — SAX XML parser.
|
|
12
11
|
* @returns {Promise<string[]>}
|
|
13
12
|
*/
|
|
14
|
-
function parseSharedStrings(content,
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
onCloseTag: onCloseTagInSharedStrings,
|
|
19
|
-
onText: onTextInSharedStrings
|
|
20
|
-
}).then(function (state) {
|
|
21
|
-
return state.strings;
|
|
13
|
+
function parseSharedStrings(content, parseXml) {
|
|
14
|
+
var state = createInitialState();
|
|
15
|
+
return parseXml(content, state, onOpenTag, onCloseTag, onText).then(function () {
|
|
16
|
+
return getResultFromState(state);
|
|
22
17
|
});
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
}
|
|
29
|
-
|
|
18
|
+
function createInitialState() {
|
|
19
|
+
return {
|
|
20
|
+
si: undefined,
|
|
21
|
+
strings: []
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
function getResultFromState(state) {
|
|
25
|
+
return state.strings;
|
|
26
|
+
}
|
|
30
27
|
|
|
31
|
-
// In an XLSX `sharedStrings.xml` file, a <si/> (string item) element can have
|
|
32
|
-
// either a single child <t/> element (meaning that "rich formatting" is not used)
|
|
33
|
-
// or multiple child <r/> elements (meaning that "rich formatting" is used).
|
|
34
|
-
function
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
28
|
+
// In an XLSX `sharedStrings.xml` file, a <si/> (string item) element can have
|
|
29
|
+
// either a single child <t/> element (meaning that "rich formatting" is not used)
|
|
30
|
+
// or multiple child <r/> elements (meaning that "rich formatting" is used).
|
|
31
|
+
function onOpenTag(tagName, attributes, state) {
|
|
32
|
+
if (tagName === 'si') {
|
|
33
|
+
state.si = createInitialStateInSharedString();
|
|
34
|
+
} else if (state.si) {
|
|
35
|
+
onOpenTagInSharedString(tagName, attributes, state.si);
|
|
36
|
+
}
|
|
39
37
|
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
state.si
|
|
45
|
-
|
|
46
|
-
|
|
38
|
+
function onCloseTag(tagName, state) {
|
|
39
|
+
if (tagName === 'si') {
|
|
40
|
+
state.strings.push(state.si.string);
|
|
41
|
+
state.si = undefined;
|
|
42
|
+
} else if (state.si) {
|
|
43
|
+
onCloseTagInSharedString(tagName, state.si);
|
|
44
|
+
}
|
|
47
45
|
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
46
|
+
function onText(text, state) {
|
|
47
|
+
if (state.si) {
|
|
48
|
+
onTextInSharedString(text, state.si);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// Shared String
|
|
53
|
+
|
|
54
|
+
function createInitialStateInSharedString() {
|
|
55
|
+
return {
|
|
56
|
+
t: false,
|
|
57
|
+
r: false,
|
|
58
|
+
rPh: false,
|
|
59
|
+
string: ''
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
// In an XLSX `sharedStrings.xml` file, a <si/> (string item) element can have
|
|
64
|
+
// either a single child <t/> element (meaning that "rich formatting" is not used)
|
|
65
|
+
// or multiple child <r/> elements (meaning that "rich formatting" is used).
|
|
66
|
+
function onOpenTagInSharedString(tagName, attributes, state) {
|
|
67
|
+
// The possible children of <si> are:
|
|
68
|
+
// * <t>: Represents a simple text string. For plain text, this is the only child.
|
|
69
|
+
// * <r>: Represents a rich text run. When a cell contains text where only some words are bolded, colored, or styled differently, multiple <r> elements are used to break the text into formatted segments.
|
|
70
|
+
// * <rPh> (Phonetic Run): Used primarily for East Asian languages to provide phonetic reading/pronunciation data (e.g., furigana in Japanese). It associates a phonetic pronunciation run right alongside the base string text tag <t>.
|
|
71
|
+
// * <phoneticPr>: Defines the phonetic properties used for East Asian languages, specifically mapping how strings should be read for sorting and pronunciation.
|
|
72
|
+
if (tagName === 't') {
|
|
73
|
+
state.t = true;
|
|
74
|
+
} else if (tagName === 'r') {
|
|
75
|
+
// The possible children of <r/> are:
|
|
76
|
+
// * <rPr> (Run Properties): The formatting properties for the text (font, size, color, bold, italic, etc.).
|
|
77
|
+
// * <t> (Text): The actual text payload.
|
|
78
|
+
// * <rPh> (Phonetic Run): Phonetic pronunciation guidance (used for East Asian languages like Japanese). It associates a phonetic pronunciation run right alongside the base string text tag <t>.
|
|
79
|
+
state.r = true;
|
|
80
|
+
} else if (tagName === 'rPh') {
|
|
81
|
+
// The possible children of <rPh/> are:
|
|
82
|
+
// * <t> (Text): Contains the actual phonetic text or reading (usually in Katakana for Japanese) that corresponds to the associated character string.
|
|
83
|
+
state.rPh = true;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
function onCloseTagInSharedString(tagName, state) {
|
|
87
|
+
if (tagName === 't') {
|
|
88
|
+
state.t = false;
|
|
89
|
+
} else if (tagName === 'r') {
|
|
90
|
+
state.r = false;
|
|
91
|
+
} else if (tagName === 'rPh') {
|
|
92
|
+
state.rPh = false;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
function onTextInSharedString(text, state) {
|
|
96
|
+
if (state.rPh) {
|
|
97
|
+
// Ignore anything inside `<rPh/>` tags
|
|
98
|
+
} else if (state.t) {
|
|
99
|
+
if (state.r) {
|
|
100
|
+
// An `<r/>` element could contain multiple `<t/>` elements,
|
|
101
|
+
// the text content from all of which should be concatenated.
|
|
102
|
+
state.string += text;
|
|
103
|
+
} else {
|
|
104
|
+
state.string = text;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
52
107
|
}
|
|
53
108
|
}
|
|
54
109
|
//# sourceMappingURL=parseSharedStrings.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parseSharedStrings.js","names":["
|
|
1
|
+
{"version":3,"file":"parseSharedStrings.js","names":["parseSharedStrings","content","parseXml","state","createInitialState","onOpenTag","onCloseTag","onText","then","getResultFromState","si","undefined","strings","tagName","attributes","createInitialStateInSharedString","onOpenTagInSharedString","push","string","onCloseTagInSharedString","text","onTextInSharedString","t","r","rPh"],"sources":["../../source/xlsx/parseSharedStrings.js"],"sourcesContent":["/**\r\n * Parses `sharedStrings.xml` file.\r\n * @param {string} content\r\n * @param {function} parseXml — SAX XML parser.\r\n * @returns {Promise<string[]>}\r\n */\r\nexport default function parseSharedStrings(content, parseXml) {\r\n const state = createInitialState()\r\n return parseXml(\r\n content,\r\n state,\r\n onOpenTag,\r\n onCloseTag,\r\n onText\r\n ).then(() => getResultFromState(state))\r\n\r\n function createInitialState() {\r\n return {\r\n si: undefined,\r\n strings: []\r\n }\r\n }\r\n\r\n function getResultFromState(state) {\r\n return state.strings\r\n }\r\n\r\n // In an XLSX `sharedStrings.xml` file, a <si/> (string item) element can have\r\n // either a single child <t/> element (meaning that \"rich formatting\" is not used)\r\n // or multiple child <r/> elements (meaning that \"rich formatting\" is used).\r\n function onOpenTag(tagName, attributes, state) {\r\n if (tagName === 'si') {\r\n state.si = createInitialStateInSharedString()\r\n } else if (state.si) {\r\n onOpenTagInSharedString(tagName, attributes, state.si)\r\n }\r\n }\r\n\r\n function onCloseTag(tagName, state) {\r\n if (tagName === 'si') {\r\n state.strings.push(state.si.string)\r\n state.si = undefined\r\n } else if (state.si) {\r\n onCloseTagInSharedString(tagName, state.si)\r\n }\r\n }\r\n\r\n function onText(text, state) {\r\n if (state.si) {\r\n onTextInSharedString(text, state.si)\r\n }\r\n }\r\n\r\n // Shared String\r\n\r\n function createInitialStateInSharedString() {\r\n return {\r\n t: false,\r\n r: false,\r\n rPh: false,\r\n string: ''\r\n }\r\n }\r\n\r\n // In an XLSX `sharedStrings.xml` file, a <si/> (string item) element can have\r\n // either a single child <t/> element (meaning that \"rich formatting\" is not used)\r\n // or multiple child <r/> elements (meaning that \"rich formatting\" is used).\r\n function onOpenTagInSharedString(tagName, attributes, state) {\r\n // The possible children of <si> are:\r\n // * <t>: Represents a simple text string. For plain text, this is the only child.\r\n // * <r>: Represents a rich text run. When a cell contains text where only some words are bolded, colored, or styled differently, multiple <r> elements are used to break the text into formatted segments.\r\n // * <rPh> (Phonetic Run): Used primarily for East Asian languages to provide phonetic reading/pronunciation data (e.g., furigana in Japanese). It associates a phonetic pronunciation run right alongside the base string text tag <t>.\r\n // * <phoneticPr>: Defines the phonetic properties used for East Asian languages, specifically mapping how strings should be read for sorting and pronunciation.\r\n if (tagName === 't') {\r\n state.t = true\r\n } else if (tagName === 'r') {\r\n // The possible children of <r/> are:\r\n // * <rPr> (Run Properties): The formatting properties for the text (font, size, color, bold, italic, etc.).\r\n // * <t> (Text): The actual text payload.\r\n // * <rPh> (Phonetic Run): Phonetic pronunciation guidance (used for East Asian languages like Japanese). It associates a phonetic pronunciation run right alongside the base string text tag <t>.\r\n state.r = true\r\n } else if (tagName === 'rPh') {\r\n // The possible children of <rPh/> are:\r\n // * <t> (Text): Contains the actual phonetic text or reading (usually in Katakana for Japanese) that corresponds to the associated character string.\r\n state.rPh = true\r\n }\r\n }\r\n\r\n function onCloseTagInSharedString(tagName, state) {\r\n if (tagName === 't') {\r\n state.t = false\r\n } else if (tagName === 'r') {\r\n state.r = false\r\n } else if (tagName === 'rPh') {\r\n state.rPh = false\r\n }\r\n }\r\n\r\n function onTextInSharedString(text, state) {\r\n if (state.rPh) {\r\n // Ignore anything inside `<rPh/>` tags\r\n } else if (state.t) {\r\n if (state.r) {\r\n // An `<r/>` element could contain multiple `<t/>` elements,\r\n // the text content from all of which should be concatenated.\r\n state.string += text\r\n } else {\r\n state.string = text\r\n }\r\n }\r\n }\r\n}"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACe,SAASA,kBAAkBA,CAACC,OAAO,EAAEC,QAAQ,EAAE;EAC5D,IAAMC,KAAK,GAAGC,kBAAkB,CAAC,CAAC;EAClC,OAAOF,QAAQ,CACbD,OAAO,EACPE,KAAK,EACLE,SAAS,EACTC,UAAU,EACVC,MACF,CAAC,CAACC,IAAI,CAAC;IAAA,OAAMC,kBAAkB,CAACN,KAAK,CAAC;EAAA,EAAC;EAEvC,SAASC,kBAAkBA,CAAA,EAAG;IAC5B,OAAO;MACLM,EAAE,EAAEC,SAAS;MACbC,OAAO,EAAE;IACX,CAAC;EACH;EAEA,SAASH,kBAAkBA,CAACN,KAAK,EAAE;IACjC,OAAOA,KAAK,CAACS,OAAO;EACtB;;EAEA;EACA;EACA;EACA,SAASP,SAASA,CAACQ,OAAO,EAAEC,UAAU,EAAEX,KAAK,EAAE;IAC7C,IAAIU,OAAO,KAAK,IAAI,EAAE;MACpBV,KAAK,CAACO,EAAE,GAAGK,gCAAgC,CAAC,CAAC;IAC/C,CAAC,MAAM,IAAIZ,KAAK,CAACO,EAAE,EAAE;MACnBM,uBAAuB,CAACH,OAAO,EAAEC,UAAU,EAAEX,KAAK,CAACO,EAAE,CAAC;IACxD;EACF;EAEA,SAASJ,UAAUA,CAACO,OAAO,EAAEV,KAAK,EAAE;IAClC,IAAIU,OAAO,KAAK,IAAI,EAAE;MACpBV,KAAK,CAACS,OAAO,CAACK,IAAI,CAACd,KAAK,CAACO,EAAE,CAACQ,MAAM,CAAC;MACnCf,KAAK,CAACO,EAAE,GAAGC,SAAS;IACtB,CAAC,MAAM,IAAIR,KAAK,CAACO,EAAE,EAAE;MACnBS,wBAAwB,CAACN,OAAO,EAAEV,KAAK,CAACO,EAAE,CAAC;IAC7C;EACF;EAEA,SAASH,MAAMA,CAACa,IAAI,EAAEjB,KAAK,EAAE;IAC3B,IAAIA,KAAK,CAACO,EAAE,EAAE;MACZW,oBAAoB,CAACD,IAAI,EAAEjB,KAAK,CAACO,EAAE,CAAC;IACtC;EACF;;EAEA;;EAEA,SAASK,gCAAgCA,CAAA,EAAG;IAC1C,OAAO;MACLO,CAAC,EAAE,KAAK;MACRC,CAAC,EAAE,KAAK;MACRC,GAAG,EAAE,KAAK;MACVN,MAAM,EAAE;IACV,CAAC;EACH;;EAEA;EACA;EACA;EACA,SAASF,uBAAuBA,CAACH,OAAO,EAAEC,UAAU,EAAEX,KAAK,EAAE;IAC3D;IACA;IACA;IACA;IACA;IACA,IAAIU,OAAO,KAAK,GAAG,EAAE;MACnBV,KAAK,CAACmB,CAAC,GAAG,IAAI;IAChB,CAAC,MAAM,IAAIT,OAAO,KAAK,GAAG,EAAE;MAC1B;MACA;MACA;MACA;MACAV,KAAK,CAACoB,CAAC,GAAG,IAAI;IAChB,CAAC,MAAM,IAAIV,OAAO,KAAK,KAAK,EAAE;MAC5B;MACA;MACAV,KAAK,CAACqB,GAAG,GAAG,IAAI;IAClB;EACF;EAEA,SAASL,wBAAwBA,CAACN,OAAO,EAAEV,KAAK,EAAE;IAChD,IAAIU,OAAO,KAAK,GAAG,EAAE;MACnBV,KAAK,CAACmB,CAAC,GAAG,KAAK;IACjB,CAAC,MAAM,IAAIT,OAAO,KAAK,GAAG,EAAE;MAC1BV,KAAK,CAACoB,CAAC,GAAG,KAAK;IACjB,CAAC,MAAM,IAAIV,OAAO,KAAK,KAAK,EAAE;MAC5BV,KAAK,CAACqB,GAAG,GAAG,KAAK;IACnB;EACF;EAEA,SAASH,oBAAoBA,CAACD,IAAI,EAAEjB,KAAK,EAAE;IACzC,IAAIA,KAAK,CAACqB,GAAG,EAAE;MACb;IAAA,CACD,MAAM,IAAIrB,KAAK,CAACmB,CAAC,EAAE;MAClB,IAAInB,KAAK,CAACoB,CAAC,EAAE;QACX;QACA;QACApB,KAAK,CAACe,MAAM,IAAIE,IAAI;MACtB,CAAC,MAAM;QACLjB,KAAK,CAACe,MAAM,GAAGE,IAAI;MACrB;IACF;EACF;AACF"}
|