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.
Files changed (255) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/README.md +32 -2
  3. package/browser/index.cjs +3 -0
  4. package/browser/index.d.ts +16 -0
  5. package/browser/index.js +4 -1
  6. package/bundle/read-excel-file.min.js +1 -1
  7. package/bundle/read-excel-file.min.js.map +1 -1
  8. package/commonjs/export/convertInputToNodeStream.js +0 -12
  9. package/commonjs/export/convertInputToNodeStream.js.map +1 -1
  10. package/commonjs/export/parseSheet.js +14 -7
  11. package/commonjs/export/parseSheet.js.map +1 -1
  12. package/commonjs/export/readSheetBrowser.js +3 -6
  13. package/commonjs/export/readSheetBrowser.js.map +1 -1
  14. package/commonjs/export/readSheetNode.js +3 -6
  15. package/commonjs/export/readSheetNode.js.map +1 -1
  16. package/commonjs/export/readSheetUniversal.js +2 -2
  17. package/commonjs/export/readSheetUniversal.js.map +1 -1
  18. package/commonjs/export/readSheetWebWorker.js +5 -5
  19. package/commonjs/export/readSheetWebWorker.js.map +1 -1
  20. package/commonjs/export/readXlsxFileBrowser.js +3 -6
  21. package/commonjs/export/readXlsxFileBrowser.js.map +1 -1
  22. package/commonjs/export/readXlsxFileNode.js +3 -6
  23. package/commonjs/export/readXlsxFileNode.js.map +1 -1
  24. package/commonjs/export/readXlsxFileUniversal.js +2 -2
  25. package/commonjs/export/readXlsxFileUniversal.js.map +1 -1
  26. package/commonjs/export/readXlsxFileWebWorker.js +5 -5
  27. package/commonjs/export/readXlsxFileWebWorker.js.map +1 -1
  28. package/commonjs/export/unpackXlsxFileBrowser.js +15 -4
  29. package/commonjs/export/unpackXlsxFileBrowser.js.map +1 -1
  30. package/commonjs/export/unpackXlsxFileBrowser.test.js.map +1 -0
  31. package/commonjs/export/unpackXlsxFileNode.js +32 -5
  32. package/commonjs/export/unpackXlsxFileNode.js.map +1 -1
  33. package/commonjs/export/unpackXlsxFileNode.test.js.map +1 -0
  34. package/commonjs/export/unpackXlsxFileUniversal.js +14 -3
  35. package/commonjs/export/unpackXlsxFileUniversal.js.map +1 -1
  36. package/commonjs/export/unpackXlsxFileUniversal.test.js.map +1 -0
  37. package/commonjs/parseSheetData/parseSheetData.js +9 -6
  38. package/commonjs/parseSheetData/parseSheetData.js.map +1 -1
  39. package/commonjs/saxen/parser.js +1 -1
  40. package/commonjs/saxen/parser.js.map +1 -1
  41. package/commonjs/utility/convertValuesFromUint8ArraysToStrings.js +100 -0
  42. package/commonjs/utility/convertValuesFromUint8ArraysToStrings.js.map +1 -0
  43. package/commonjs/xlsx/InvalidSpreadsheetError.js +55 -0
  44. package/commonjs/xlsx/InvalidSpreadsheetError.js.map +1 -0
  45. package/commonjs/xlsx/SheetNotFoundError.js +55 -0
  46. package/commonjs/xlsx/SheetNotFoundError.js.map +1 -0
  47. package/commonjs/xlsx/file/InputValidationStream.js +101 -0
  48. package/commonjs/xlsx/file/InputValidationStream.js.map +1 -0
  49. package/commonjs/xlsx/file/InputValidationStream.test.js.map +1 -0
  50. package/commonjs/xlsx/file/InvalidInputError.js +105 -0
  51. package/commonjs/xlsx/file/InvalidInputError.js.map +1 -0
  52. package/commonjs/xlsx/file/createFileTypeDetector.js +70 -0
  53. package/commonjs/xlsx/file/createFileTypeDetector.js.map +1 -0
  54. package/commonjs/xlsx/file/createFileTypeDetector.test.js.map +1 -0
  55. package/commonjs/xlsx/file/validateLeadingBytes.js +47 -0
  56. package/commonjs/xlsx/file/validateLeadingBytes.js.map +1 -0
  57. package/commonjs/xlsx/file/validateLeadingBytes.test.js.map +1 -0
  58. package/commonjs/xlsx/isDateFormat.js +32 -27
  59. package/commonjs/xlsx/isDateFormat.js.map +1 -1
  60. package/commonjs/xlsx/isDateFormatStyle.js +19 -21
  61. package/commonjs/xlsx/isDateFormatStyle.js.map +1 -1
  62. package/commonjs/xlsx/parseCell.js +252 -115
  63. package/commonjs/xlsx/parseCell.js.map +1 -1
  64. package/commonjs/xlsx/parseCellAddress.js +22 -18
  65. package/commonjs/xlsx/parseCellAddress.js.map +1 -1
  66. package/commonjs/xlsx/parseExcelDate.js +4 -124
  67. package/commonjs/xlsx/parseExcelDate.js.map +1 -1
  68. package/commonjs/xlsx/parseExcelDate.test.js.map +1 -1
  69. package/commonjs/xlsx/parseExcelTimestamp.js +139 -0
  70. package/commonjs/xlsx/parseExcelTimestamp.js.map +1 -0
  71. package/commonjs/xlsx/parseFilePaths.js +48 -47
  72. package/commonjs/xlsx/parseFilePaths.js.map +1 -1
  73. package/commonjs/xlsx/parseSharedStrings.js +91 -36
  74. package/commonjs/xlsx/parseSharedStrings.js.map +1 -1
  75. package/commonjs/xlsx/parseSheet.js +527 -69
  76. package/commonjs/xlsx/parseSheet.js.map +1 -1
  77. package/commonjs/xlsx/parseSpreadsheetContents.js +154 -83
  78. package/commonjs/xlsx/parseSpreadsheetContents.js.map +1 -1
  79. package/commonjs/xlsx/parseSpreadsheetInfo.js +60 -59
  80. package/commonjs/xlsx/parseSpreadsheetInfo.js.map +1 -1
  81. package/commonjs/xlsx/parseStyles.js +75 -75
  82. package/commonjs/xlsx/parseStyles.js.map +1 -1
  83. package/commonjs/xml/parseXml.js +112 -0
  84. package/commonjs/xml/parseXml.js.map +1 -0
  85. package/commonjs/xml/parseXml.test.js.map +1 -0
  86. package/commonjs/xml/parseXmlStream.js.map +1 -1
  87. package/commonjs/xml/parseXmlStream.sax.js +69 -28
  88. package/commonjs/xml/parseXmlStream.sax.js.map +1 -1
  89. package/commonjs/xml/parseXmlStream.saxen.js +66 -40
  90. package/commonjs/xml/parseXmlStream.saxen.js.map +1 -1
  91. package/commonjs/zip/UnzipError.js +55 -0
  92. package/commonjs/zip/UnzipError.js.map +1 -0
  93. package/commonjs/zip/unzipFromArrayBuffer.js +21 -1
  94. package/commonjs/zip/unzipFromArrayBuffer.js.map +1 -1
  95. package/commonjs/zip/unzipFromArrayBuffer.test.js.map +1 -0
  96. package/commonjs/zip/unzipFromStream.fflate.js +43 -35
  97. package/commonjs/zip/unzipFromStream.fflate.js.map +1 -1
  98. package/commonjs/zip/unzipFromStream.js +188 -6
  99. package/commonjs/zip/unzipFromStream.js.map +1 -1
  100. package/commonjs/zip/unzipFromStream.unzipper.js +19 -34
  101. package/commonjs/zip/unzipFromStream.unzipper.js.map +1 -1
  102. package/modules/export/convertInputToNodeStream.js +0 -12
  103. package/modules/export/convertInputToNodeStream.js.map +1 -1
  104. package/modules/export/parseSheet.js +13 -6
  105. package/modules/export/parseSheet.js.map +1 -1
  106. package/modules/export/readSheetBrowser.js +3 -5
  107. package/modules/export/readSheetBrowser.js.map +1 -1
  108. package/modules/export/readSheetNode.js +3 -5
  109. package/modules/export/readSheetNode.js.map +1 -1
  110. package/modules/export/readSheetUniversal.js +2 -2
  111. package/modules/export/readSheetUniversal.js.map +1 -1
  112. package/modules/export/readSheetWebWorker.js +7 -8
  113. package/modules/export/readSheetWebWorker.js.map +1 -1
  114. package/modules/export/readXlsxFileBrowser.js +3 -5
  115. package/modules/export/readXlsxFileBrowser.js.map +1 -1
  116. package/modules/export/readXlsxFileNode.js +3 -5
  117. package/modules/export/readXlsxFileNode.js.map +1 -1
  118. package/modules/export/readXlsxFileUniversal.js +2 -2
  119. package/modules/export/readXlsxFileUniversal.js.map +1 -1
  120. package/modules/export/readXlsxFileWebWorker.js +7 -8
  121. package/modules/export/readXlsxFileWebWorker.js.map +1 -1
  122. package/modules/export/unpackXlsxFileBrowser.js +15 -4
  123. package/modules/export/unpackXlsxFileBrowser.js.map +1 -1
  124. package/modules/export/unpackXlsxFileBrowser.test.js.map +1 -0
  125. package/modules/export/unpackXlsxFileNode.js +32 -5
  126. package/modules/export/unpackXlsxFileNode.js.map +1 -1
  127. package/modules/export/unpackXlsxFileNode.test.js.map +1 -0
  128. package/modules/export/unpackXlsxFileUniversal.js +14 -3
  129. package/modules/export/unpackXlsxFileUniversal.js.map +1 -1
  130. package/modules/export/unpackXlsxFileUniversal.test.js.map +1 -0
  131. package/modules/parseSheetData/parseSheetData.js +9 -6
  132. package/modules/parseSheetData/parseSheetData.js.map +1 -1
  133. package/modules/saxen/parser.js +1 -1
  134. package/modules/saxen/parser.js.map +1 -1
  135. package/modules/utility/convertValuesFromUint8ArraysToStrings.js +92 -0
  136. package/modules/utility/convertValuesFromUint8ArraysToStrings.js.map +1 -0
  137. package/modules/xlsx/InvalidSpreadsheetError.js +50 -0
  138. package/modules/xlsx/InvalidSpreadsheetError.js.map +1 -0
  139. package/modules/xlsx/SheetNotFoundError.js +50 -0
  140. package/modules/xlsx/SheetNotFoundError.js.map +1 -0
  141. package/modules/xlsx/file/InputValidationStream.js +96 -0
  142. package/modules/xlsx/file/InputValidationStream.js.map +1 -0
  143. package/modules/xlsx/file/InputValidationStream.test.js.map +1 -0
  144. package/modules/xlsx/file/InvalidInputError.js +100 -0
  145. package/modules/xlsx/file/InvalidInputError.js.map +1 -0
  146. package/modules/xlsx/file/createFileTypeDetector.js +63 -0
  147. package/modules/xlsx/file/createFileTypeDetector.js.map +1 -0
  148. package/modules/xlsx/file/createFileTypeDetector.test.js.map +1 -0
  149. package/modules/xlsx/file/validateLeadingBytes.js +37 -0
  150. package/modules/xlsx/file/validateLeadingBytes.js.map +1 -0
  151. package/modules/xlsx/file/validateLeadingBytes.test.js.map +1 -0
  152. package/modules/xlsx/isDateFormat.js +31 -27
  153. package/modules/xlsx/isDateFormat.js.map +1 -1
  154. package/modules/xlsx/isDateFormatStyle.js +18 -21
  155. package/modules/xlsx/isDateFormatStyle.js.map +1 -1
  156. package/modules/xlsx/parseCell.js +251 -111
  157. package/modules/xlsx/parseCell.js.map +1 -1
  158. package/modules/xlsx/parseCellAddress.js +21 -18
  159. package/modules/xlsx/parseCellAddress.js.map +1 -1
  160. package/modules/xlsx/parseExcelDate.js +4 -124
  161. package/modules/xlsx/parseExcelDate.js.map +1 -1
  162. package/modules/xlsx/parseExcelDate.test.js.map +1 -1
  163. package/modules/xlsx/parseExcelTimestamp.js +133 -0
  164. package/modules/xlsx/parseExcelTimestamp.js.map +1 -0
  165. package/modules/xlsx/parseFilePaths.js +48 -47
  166. package/modules/xlsx/parseFilePaths.js.map +1 -1
  167. package/modules/xlsx/parseSharedStrings.js +91 -37
  168. package/modules/xlsx/parseSharedStrings.js.map +1 -1
  169. package/modules/xlsx/parseSheet.js +526 -68
  170. package/modules/xlsx/parseSheet.js.map +1 -1
  171. package/modules/xlsx/parseSpreadsheetContents.js +153 -81
  172. package/modules/xlsx/parseSpreadsheetContents.js.map +1 -1
  173. package/modules/xlsx/parseSpreadsheetInfo.js +60 -59
  174. package/modules/xlsx/parseSpreadsheetInfo.js.map +1 -1
  175. package/modules/xlsx/parseStyles.js +75 -75
  176. package/modules/xlsx/parseStyles.js.map +1 -1
  177. package/modules/xml/parseXml.js +106 -0
  178. package/modules/xml/parseXml.js.map +1 -0
  179. package/modules/xml/parseXml.test.js.map +1 -0
  180. package/modules/xml/parseXmlStream.js +2 -0
  181. package/modules/xml/parseXmlStream.js.map +1 -1
  182. package/modules/xml/parseXmlStream.sax.js +69 -28
  183. package/modules/xml/parseXmlStream.sax.js.map +1 -1
  184. package/modules/xml/parseXmlStream.saxen.js +67 -40
  185. package/modules/xml/parseXmlStream.saxen.js.map +1 -1
  186. package/modules/zip/UnzipError.js +49 -0
  187. package/modules/zip/UnzipError.js.map +1 -0
  188. package/modules/zip/unzipFromArrayBuffer.js +21 -1
  189. package/modules/zip/unzipFromArrayBuffer.js.map +1 -1
  190. package/modules/zip/unzipFromArrayBuffer.test.js.map +1 -0
  191. package/modules/zip/unzipFromStream.fflate.js +41 -35
  192. package/modules/zip/unzipFromStream.fflate.js.map +1 -1
  193. package/modules/zip/unzipFromStream.js +124 -1
  194. package/modules/zip/unzipFromStream.js.map +1 -1
  195. package/modules/zip/unzipFromStream.unzipper.js +19 -35
  196. package/modules/zip/unzipFromStream.unzipper.js.map +1 -1
  197. package/node/index.cjs +3 -0
  198. package/node/index.d.ts +16 -0
  199. package/node/index.js +3 -0
  200. package/package.json +5 -3
  201. package/types/InvalidInputError.d.ts +16 -0
  202. package/types/InvalidSpreadsheetError.d.ts +4 -0
  203. package/types/SheetNotFoundError.d.ts +4 -0
  204. package/universal/index.cjs +3 -0
  205. package/universal/index.d.ts +16 -0
  206. package/universal/index.js +3 -0
  207. package/web-worker/index.cjs +3 -0
  208. package/web-worker/index.d.ts +16 -0
  209. package/web-worker/index.js +3 -0
  210. package/commonjs/export/convertValuesFromUint8ArraysToStrings.js +0 -23
  211. package/commonjs/export/convertValuesFromUint8ArraysToStrings.js.map +0 -1
  212. package/commonjs/xlsx/convertCellsToData2dArray.js +0 -84
  213. package/commonjs/xlsx/convertCellsToData2dArray.js.map +0 -1
  214. package/commonjs/xlsx/dropEmptyColumns.js +0 -40
  215. package/commonjs/xlsx/dropEmptyColumns.js.map +0 -1
  216. package/commonjs/xlsx/dropEmptyColumns.test.js.map +0 -1
  217. package/commonjs/xlsx/dropEmptyRows.js +0 -43
  218. package/commonjs/xlsx/dropEmptyRows.js.map +0 -1
  219. package/commonjs/xlsx/dropEmptyRows.test.js.map +0 -1
  220. package/commonjs/xlsx/parseCellValue.js +0 -186
  221. package/commonjs/xlsx/parseCellValue.js.map +0 -1
  222. package/commonjs/xlsx/parseNumber.js +0 -20
  223. package/commonjs/xlsx/parseNumber.js.map +0 -1
  224. package/commonjs/xlsx/parseSharedString.js +0 -64
  225. package/commonjs/xlsx/parseSharedString.js.map +0 -1
  226. package/commonjs/xlsx/parseSheetData.js +0 -68
  227. package/commonjs/xlsx/parseSheetData.js.map +0 -1
  228. package/commonjs/xlsx/reconstructSheetDimensionsFromSheetCells.js +0 -29
  229. package/commonjs/xlsx/reconstructSheetDimensionsFromSheetCells.js.map +0 -1
  230. package/commonjs/xml/parseXmlStream.saxen.code.js +0 -953
  231. package/commonjs/xml/parseXmlStream.saxen.code.js.map +0 -1
  232. package/commonjs/xml/parseXmlStream.test.js.map +0 -1
  233. package/modules/export/convertValuesFromUint8ArraysToStrings.js +0 -17
  234. package/modules/export/convertValuesFromUint8ArraysToStrings.js.map +0 -1
  235. package/modules/xlsx/convertCellsToData2dArray.js +0 -77
  236. package/modules/xlsx/convertCellsToData2dArray.js.map +0 -1
  237. package/modules/xlsx/dropEmptyColumns.js +0 -34
  238. package/modules/xlsx/dropEmptyColumns.js.map +0 -1
  239. package/modules/xlsx/dropEmptyColumns.test.js.map +0 -1
  240. package/modules/xlsx/dropEmptyRows.js +0 -37
  241. package/modules/xlsx/dropEmptyRows.js.map +0 -1
  242. package/modules/xlsx/dropEmptyRows.test.js.map +0 -1
  243. package/modules/xlsx/parseCellValue.js +0 -180
  244. package/modules/xlsx/parseCellValue.js.map +0 -1
  245. package/modules/xlsx/parseNumber.js +0 -14
  246. package/modules/xlsx/parseNumber.js.map +0 -1
  247. package/modules/xlsx/parseSharedString.js +0 -55
  248. package/modules/xlsx/parseSharedString.js.map +0 -1
  249. package/modules/xlsx/parseSheetData.js +0 -55
  250. package/modules/xlsx/parseSheetData.js.map +0 -1
  251. package/modules/xlsx/reconstructSheetDimensionsFromSheetCells.js +0 -23
  252. package/modules/xlsx/reconstructSheetDimensionsFromSheetCells.js.map +0 -1
  253. package/modules/xml/parseXmlStream.saxen.code.js +0 -947
  254. package/modules/xml/parseXmlStream.saxen.code.js.map +0 -1
  255. package/modules/xml/parseXmlStream.test.js.map +0 -1
@@ -1,49 +1,103 @@
1
- import { onOpenTagInSharedString, onCloseTagInSharedString, onTextInSharedString, createInitialStateInSharedString } from './parseSharedString.js';
2
-
3
1
  /**
4
2
  * Parses `sharedStrings.xml` file.
5
3
  * @param {string} content
6
- * @param {function} parseXmlStream — SAX XML parser.
4
+ * @param {function} parseXml — SAX XML parser.
7
5
  * @returns {Promise<string[]>}
8
6
  */
9
- export default function parseSharedStrings(content, parseXmlStream) {
10
- return parseXmlStream(content, {
11
- createInitialState: createInitialStateInSharedStrings,
12
- onOpenTag: onOpenTagInSharedStrings,
13
- onCloseTag: onCloseTagInSharedStrings,
14
- onText: onTextInSharedStrings
15
- }).then(function (state) {
16
- return state.strings;
7
+ export default function parseSharedStrings(content, parseXml) {
8
+ var state = createInitialState();
9
+ return parseXml(content, state, onOpenTag, onCloseTag, onText).then(function () {
10
+ return getResultFromState(state);
17
11
  });
18
- }
19
- function createInitialStateInSharedStrings() {
20
- return {
21
- si: undefined,
22
- strings: []
23
- };
24
- }
12
+ function createInitialState() {
13
+ return {
14
+ si: undefined,
15
+ strings: []
16
+ };
17
+ }
18
+ function getResultFromState(state) {
19
+ return state.strings;
20
+ }
25
21
 
26
- // In an XLSX `sharedStrings.xml` file, a <si/> (string item) element can have
27
- // either a single child <t/> element (meaning that "rich formatting" is not used)
28
- // or multiple child <r/> elements (meaning that "rich formatting" is used).
29
- function onOpenTagInSharedStrings(tagName, attributes, state) {
30
- if (tagName === 'si') {
31
- state.si = createInitialStateInSharedString();
32
- } else if (state.si) {
33
- onOpenTagInSharedString(tagName, attributes, state.si);
22
+ // In an XLSX `sharedStrings.xml` file, a <si/> (string item) element can have
23
+ // either a single child <t/> element (meaning that "rich formatting" is not used)
24
+ // or multiple child <r/> elements (meaning that "rich formatting" is used).
25
+ function onOpenTag(tagName, attributes, state) {
26
+ if (tagName === 'si') {
27
+ state.si = createInitialStateInSharedString();
28
+ } else if (state.si) {
29
+ onOpenTagInSharedString(tagName, attributes, state.si);
30
+ }
34
31
  }
35
- }
36
- function onCloseTagInSharedStrings(tagName, state) {
37
- if (tagName === 'si') {
38
- state.strings.push(state.si.string);
39
- state.si = undefined;
40
- } else if (state.si) {
41
- onCloseTagInSharedString(tagName, state.si);
32
+ function onCloseTag(tagName, state) {
33
+ if (tagName === 'si') {
34
+ state.strings.push(state.si.string);
35
+ state.si = undefined;
36
+ } else if (state.si) {
37
+ onCloseTagInSharedString(tagName, state.si);
38
+ }
42
39
  }
43
- }
44
- function onTextInSharedStrings(text, state) {
45
- if (state.si) {
46
- onTextInSharedString(text, state.si);
40
+ function onText(text, state) {
41
+ if (state.si) {
42
+ onTextInSharedString(text, state.si);
43
+ }
44
+ }
45
+
46
+ // Shared String
47
+
48
+ function createInitialStateInSharedString() {
49
+ return {
50
+ t: false,
51
+ r: false,
52
+ rPh: false,
53
+ string: ''
54
+ };
55
+ }
56
+
57
+ // In an XLSX `sharedStrings.xml` file, a <si/> (string item) element can have
58
+ // either a single child <t/> element (meaning that "rich formatting" is not used)
59
+ // or multiple child <r/> elements (meaning that "rich formatting" is used).
60
+ function onOpenTagInSharedString(tagName, attributes, state) {
61
+ // The possible children of <si> are:
62
+ // * <t>: Represents a simple text string. For plain text, this is the only child.
63
+ // * <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.
64
+ // * <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>.
65
+ // * <phoneticPr>: Defines the phonetic properties used for East Asian languages, specifically mapping how strings should be read for sorting and pronunciation.
66
+ if (tagName === 't') {
67
+ state.t = true;
68
+ } else if (tagName === 'r') {
69
+ // The possible children of <r/> are:
70
+ // * <rPr> (Run Properties): The formatting properties for the text (font, size, color, bold, italic, etc.).
71
+ // * <t> (Text): The actual text payload.
72
+ // * <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>.
73
+ state.r = true;
74
+ } else if (tagName === 'rPh') {
75
+ // The possible children of <rPh/> are:
76
+ // * <t> (Text): Contains the actual phonetic text or reading (usually in Katakana for Japanese) that corresponds to the associated character string.
77
+ state.rPh = true;
78
+ }
79
+ }
80
+ function onCloseTagInSharedString(tagName, state) {
81
+ if (tagName === 't') {
82
+ state.t = false;
83
+ } else if (tagName === 'r') {
84
+ state.r = false;
85
+ } else if (tagName === 'rPh') {
86
+ state.rPh = false;
87
+ }
88
+ }
89
+ function onTextInSharedString(text, state) {
90
+ if (state.rPh) {
91
+ // Ignore anything inside `<rPh/>` tags
92
+ } else if (state.t) {
93
+ if (state.r) {
94
+ // An `<r/>` element could contain multiple `<t/>` elements,
95
+ // the text content from all of which should be concatenated.
96
+ state.string += text;
97
+ } else {
98
+ state.string = text;
99
+ }
100
+ }
47
101
  }
48
102
  }
49
103
  //# sourceMappingURL=parseSharedStrings.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"parseSharedStrings.js","names":["onOpenTagInSharedString","onCloseTagInSharedString","onTextInSharedString","createInitialStateInSharedString","parseSharedStrings","content","parseXmlStream","createInitialState","createInitialStateInSharedStrings","onOpenTag","onOpenTagInSharedStrings","onCloseTag","onCloseTagInSharedStrings","onText","onTextInSharedStrings","then","state","strings","si","undefined","tagName","attributes","push","string","text"],"sources":["../../source/xlsx/parseSharedStrings.js"],"sourcesContent":["import {\r\n onOpenTagInSharedString,\r\n onCloseTagInSharedString,\r\n onTextInSharedString,\r\n createInitialStateInSharedString\r\n} from './parseSharedString.js'\r\n\r\n/**\r\n * Parses `sharedStrings.xml` file.\r\n * @param {string} content\r\n * @param {function} parseXmlStream — SAX XML parser.\r\n * @returns {Promise<string[]>}\r\n */\r\nexport default function parseSharedStrings(content, parseXmlStream) {\r\n return parseXmlStream(content, {\r\n createInitialState: createInitialStateInSharedStrings,\r\n onOpenTag: onOpenTagInSharedStrings,\r\n onCloseTag: onCloseTagInSharedStrings,\r\n onText: onTextInSharedStrings\r\n }).then((state) => {\r\n return state.strings\r\n })\r\n}\r\n\r\nfunction createInitialStateInSharedStrings() {\r\n return {\r\n si: undefined,\r\n strings: []\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\nfunction onOpenTagInSharedStrings(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\nfunction onCloseTagInSharedStrings(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\nfunction onTextInSharedStrings(text, state) {\r\n if (state.si) {\r\n onTextInSharedString(text, state.si)\r\n }\r\n}"],"mappings":"AAAA,SACEA,uBAAuB,EACvBC,wBAAwB,EACxBC,oBAAoB,EACpBC,gCAAgC,QAC3B,wBAAwB;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAASC,kBAAkBA,CAACC,OAAO,EAAEC,cAAc,EAAE;EAClE,OAAOA,cAAc,CAACD,OAAO,EAAE;IAC7BE,kBAAkB,EAAEC,iCAAiC;IACrDC,SAAS,EAAEC,wBAAwB;IACnCC,UAAU,EAAEC,yBAAyB;IACrCC,MAAM,EAAEC;EACV,CAAC,CAAC,CAACC,IAAI,CAAC,UAACC,KAAK,EAAK;IACjB,OAAOA,KAAK,CAACC,OAAO;EACtB,CAAC,CAAC;AACJ;AAEA,SAAST,iCAAiCA,CAAA,EAAG;EAC3C,OAAO;IACLU,EAAE,EAAEC,SAAS;IACbF,OAAO,EAAE;EACX,CAAC;AACH;;AAEA;AACA;AACA;AACA,SAASP,wBAAwBA,CAACU,OAAO,EAAEC,UAAU,EAAEL,KAAK,EAAE;EAC5D,IAAII,OAAO,KAAK,IAAI,EAAE;IACpBJ,KAAK,CAACE,EAAE,GAAGf,gCAAgC,CAAC,CAAC;EAC/C,CAAC,MAAM,IAAIa,KAAK,CAACE,EAAE,EAAE;IACnBlB,uBAAuB,CAACoB,OAAO,EAAEC,UAAU,EAAEL,KAAK,CAACE,EAAE,CAAC;EACxD;AACF;AAEA,SAASN,yBAAyBA,CAACQ,OAAO,EAAEJ,KAAK,EAAE;EACjD,IAAII,OAAO,KAAK,IAAI,EAAE;IACpBJ,KAAK,CAACC,OAAO,CAACK,IAAI,CAACN,KAAK,CAACE,EAAE,CAACK,MAAM,CAAC;IACnCP,KAAK,CAACE,EAAE,GAAGC,SAAS;EACtB,CAAC,MAAM,IAAIH,KAAK,CAACE,EAAE,EAAE;IACnBjB,wBAAwB,CAACmB,OAAO,EAAEJ,KAAK,CAACE,EAAE,CAAC;EAC7C;AACF;AAEA,SAASJ,qBAAqBA,CAACU,IAAI,EAAER,KAAK,EAAE;EAC1C,IAAIA,KAAK,CAACE,EAAE,EAAE;IACZhB,oBAAoB,CAACsB,IAAI,EAAER,KAAK,CAACE,EAAE,CAAC;EACtC;AACF"}
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":"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"}