@cj-tech-master/excelts 3.1.0-canary.20260102071304.d80b29d → 4.0.0-canary.20260103013222.0e5d37f

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 (630) hide show
  1. package/README.md +2 -2
  2. package/README_zh.md +2 -2
  3. package/dist/browser/index.browser.d.ts +25 -0
  4. package/dist/browser/index.browser.js +40 -0
  5. package/dist/browser/index.d.ts +23 -0
  6. package/dist/browser/index.js +35 -0
  7. package/dist/browser/modules/archive/byte-queue.d.ts +18 -0
  8. package/dist/browser/modules/archive/byte-queue.js +125 -0
  9. package/dist/browser/modules/archive/compress.base.d.ts +98 -0
  10. package/dist/browser/modules/archive/compress.base.js +173 -0
  11. package/dist/browser/modules/archive/compress.browser.d.ts +57 -0
  12. package/dist/browser/modules/archive/compress.browser.js +93 -0
  13. package/dist/browser/modules/archive/compress.d.ts +44 -0
  14. package/dist/browser/modules/archive/compress.js +86 -0
  15. package/dist/browser/modules/archive/crc32.base.d.ts +25 -0
  16. package/dist/browser/modules/archive/crc32.base.js +51 -0
  17. package/dist/browser/modules/archive/crc32.browser.d.ts +30 -0
  18. package/dist/browser/modules/archive/crc32.browser.js +32 -0
  19. package/dist/browser/modules/archive/crc32.d.ts +59 -0
  20. package/dist/browser/modules/archive/crc32.js +97 -0
  21. package/dist/browser/modules/archive/defaults.d.ts +4 -0
  22. package/dist/browser/modules/archive/defaults.js +3 -0
  23. package/dist/browser/modules/archive/deflate-fallback.d.ts +39 -0
  24. package/dist/browser/modules/archive/deflate-fallback.js +564 -0
  25. package/dist/browser/modules/archive/extract.d.ts +94 -0
  26. package/dist/browser/modules/archive/extract.js +106 -0
  27. package/dist/browser/modules/archive/index.base.d.ts +11 -0
  28. package/dist/browser/modules/archive/index.base.js +13 -0
  29. package/dist/browser/modules/archive/index.browser.d.ts +11 -0
  30. package/dist/browser/modules/archive/index.browser.js +17 -0
  31. package/dist/browser/modules/archive/index.d.ts +11 -0
  32. package/dist/browser/modules/archive/index.js +15 -0
  33. package/dist/browser/modules/archive/parse.base.d.ts +198 -0
  34. package/dist/browser/modules/archive/parse.base.js +610 -0
  35. package/dist/browser/modules/archive/parse.browser.d.ts +22 -0
  36. package/dist/browser/modules/archive/parse.browser.js +564 -0
  37. package/dist/browser/modules/archive/parse.d.ts +16 -0
  38. package/dist/browser/modules/archive/parse.js +94 -0
  39. package/dist/browser/modules/archive/streaming-compress.base.d.ts +36 -0
  40. package/dist/browser/modules/archive/streaming-compress.base.js +9 -0
  41. package/dist/browser/modules/archive/streaming-compress.browser.d.ts +26 -0
  42. package/dist/browser/modules/archive/streaming-compress.browser.js +296 -0
  43. package/dist/browser/modules/archive/streaming-compress.d.ts +22 -0
  44. package/dist/browser/modules/archive/streaming-compress.js +68 -0
  45. package/dist/browser/modules/archive/streaming-zip.d.ts +120 -0
  46. package/dist/browser/modules/archive/streaming-zip.js +407 -0
  47. package/dist/browser/modules/archive/utils/binary.d.ts +24 -0
  48. package/dist/browser/modules/archive/utils/binary.js +69 -0
  49. package/dist/browser/modules/archive/utils/bytes.d.ts +7 -0
  50. package/dist/browser/modules/archive/utils/bytes.js +101 -0
  51. package/dist/browser/modules/archive/utils/parse-buffer.d.ts +18 -0
  52. package/dist/browser/modules/archive/utils/parse-buffer.js +55 -0
  53. package/dist/browser/modules/archive/utils/text.d.ts +20 -0
  54. package/dist/browser/modules/archive/utils/text.js +33 -0
  55. package/dist/browser/modules/archive/utils/timestamps.d.ts +28 -0
  56. package/dist/browser/modules/archive/utils/timestamps.js +48 -0
  57. package/dist/browser/modules/archive/utils/zip-extra-fields.d.ts +19 -0
  58. package/dist/browser/modules/archive/utils/zip-extra-fields.js +72 -0
  59. package/dist/browser/modules/archive/utils/zip-extra.d.ts +18 -0
  60. package/dist/browser/modules/archive/utils/zip-extra.js +68 -0
  61. package/dist/browser/modules/archive/zip-builder.d.ts +117 -0
  62. package/dist/browser/modules/archive/zip-builder.js +292 -0
  63. package/dist/browser/modules/archive/zip-constants.d.ts +18 -0
  64. package/dist/browser/modules/archive/zip-constants.js +23 -0
  65. package/dist/browser/modules/archive/zip-entry-info.d.ts +29 -0
  66. package/dist/browser/modules/archive/zip-entry-info.js +6 -0
  67. package/dist/browser/modules/archive/zip-entry-metadata.d.ts +23 -0
  68. package/dist/browser/modules/archive/zip-entry-metadata.js +24 -0
  69. package/dist/browser/modules/archive/zip-parser.d.ts +62 -0
  70. package/dist/browser/modules/archive/zip-parser.js +332 -0
  71. package/dist/browser/modules/archive/zip-records.d.ts +43 -0
  72. package/dist/browser/modules/archive/zip-records.js +84 -0
  73. package/dist/browser/modules/csv/csv-core.d.ts +215 -0
  74. package/dist/browser/modules/csv/csv-core.js +723 -0
  75. package/dist/browser/modules/csv/csv-number.d.ts +3 -0
  76. package/dist/browser/modules/csv/csv-number.js +20 -0
  77. package/dist/browser/modules/csv/csv-stream.d.ts +121 -0
  78. package/dist/browser/modules/csv/csv-stream.js +703 -0
  79. package/dist/browser/modules/csv/csv.browser.d.ts +60 -0
  80. package/dist/browser/modules/csv/csv.browser.js +265 -0
  81. package/dist/browser/modules/csv/csv.d.ts +14 -0
  82. package/dist/browser/modules/csv/csv.js +29 -0
  83. package/dist/browser/modules/excel/anchor.d.ts +33 -0
  84. package/dist/browser/modules/excel/anchor.js +97 -0
  85. package/dist/browser/modules/excel/cell.d.ts +138 -0
  86. package/dist/browser/modules/excel/cell.js +946 -0
  87. package/dist/browser/modules/excel/column.d.ts +122 -0
  88. package/dist/browser/modules/excel/column.js +358 -0
  89. package/dist/browser/modules/excel/data-validations.d.ts +11 -0
  90. package/dist/browser/modules/excel/data-validations.js +43 -0
  91. package/dist/browser/modules/excel/defined-names.d.ts +37 -0
  92. package/dist/browser/modules/excel/defined-names.js +214 -0
  93. package/dist/browser/modules/excel/enums.d.ts +62 -0
  94. package/dist/browser/modules/excel/enums.js +58 -0
  95. package/dist/browser/modules/excel/image.d.ts +64 -0
  96. package/dist/browser/modules/excel/image.js +60 -0
  97. package/dist/browser/modules/excel/note.d.ts +29 -0
  98. package/dist/browser/modules/excel/note.js +61 -0
  99. package/dist/browser/modules/excel/pivot-table.d.ts +152 -0
  100. package/dist/browser/modules/excel/pivot-table.js +237 -0
  101. package/dist/browser/modules/excel/range.d.ts +62 -0
  102. package/dist/browser/modules/excel/range.js +280 -0
  103. package/dist/browser/modules/excel/row.d.ts +127 -0
  104. package/dist/browser/modules/excel/row.js +441 -0
  105. package/dist/browser/modules/excel/stream/hyperlink-reader.d.ts +33 -0
  106. package/dist/browser/modules/excel/stream/hyperlink-reader.js +84 -0
  107. package/dist/browser/modules/excel/stream/sheet-comments-writer.d.ts +26 -0
  108. package/dist/browser/modules/excel/stream/sheet-comments-writer.js +101 -0
  109. package/dist/browser/modules/excel/stream/sheet-rels-writer.d.ts +45 -0
  110. package/dist/browser/modules/excel/stream/sheet-rels-writer.js +91 -0
  111. package/dist/browser/modules/excel/stream/workbook-reader.browser.d.ts +169 -0
  112. package/dist/browser/modules/excel/stream/workbook-reader.browser.js +443 -0
  113. package/dist/browser/modules/excel/stream/workbook-reader.d.ts +24 -0
  114. package/dist/browser/modules/excel/stream/workbook-reader.js +50 -0
  115. package/dist/browser/modules/excel/stream/workbook-writer.browser.d.ts +147 -0
  116. package/dist/browser/modules/excel/stream/workbook-writer.browser.js +356 -0
  117. package/dist/browser/modules/excel/stream/workbook-writer.d.ts +31 -0
  118. package/dist/browser/modules/excel/stream/workbook-writer.js +52 -0
  119. package/dist/browser/modules/excel/stream/worksheet-reader.d.ts +61 -0
  120. package/dist/browser/modules/excel/stream/worksheet-reader.js +367 -0
  121. package/dist/browser/modules/excel/stream/worksheet-writer.d.ts +140 -0
  122. package/dist/browser/modules/excel/stream/worksheet-writer.js +613 -0
  123. package/dist/browser/modules/excel/table.d.ts +81 -0
  124. package/dist/browser/modules/excel/table.js +405 -0
  125. package/dist/browser/modules/excel/types.d.ts +518 -0
  126. package/dist/browser/modules/excel/types.js +22 -0
  127. package/dist/browser/modules/excel/utils/cell-format.d.ts +32 -0
  128. package/dist/browser/modules/excel/utils/cell-format.js +814 -0
  129. package/dist/browser/modules/excel/utils/cell-matrix.d.ts +37 -0
  130. package/dist/browser/modules/excel/utils/cell-matrix.js +180 -0
  131. package/dist/browser/modules/excel/utils/col-cache.d.ts +36 -0
  132. package/dist/browser/modules/excel/utils/col-cache.js +278 -0
  133. package/dist/browser/modules/excel/utils/copy-style.d.ts +5 -0
  134. package/dist/browser/modules/excel/utils/copy-style.js +43 -0
  135. package/dist/browser/modules/excel/utils/encryptor.browser.d.ts +19 -0
  136. package/dist/browser/modules/excel/utils/encryptor.browser.js +46 -0
  137. package/dist/browser/modules/excel/utils/encryptor.d.ts +9 -0
  138. package/dist/browser/modules/excel/utils/encryptor.js +35 -0
  139. package/dist/browser/modules/excel/utils/iterate-stream.d.ts +14 -0
  140. package/dist/browser/modules/excel/utils/iterate-stream.js +55 -0
  141. package/dist/browser/modules/excel/utils/ooxml-paths.d.ts +64 -0
  142. package/dist/browser/modules/excel/utils/ooxml-paths.js +209 -0
  143. package/dist/browser/modules/excel/utils/parse-sax.d.ts +113 -0
  144. package/dist/browser/modules/excel/utils/parse-sax.js +1206 -0
  145. package/dist/browser/modules/excel/utils/shared-formula.d.ts +2 -0
  146. package/dist/browser/modules/excel/utils/shared-formula.js +36 -0
  147. package/dist/browser/modules/excel/utils/shared-strings.d.ts +12 -0
  148. package/dist/browser/modules/excel/utils/shared-strings.js +29 -0
  149. package/dist/browser/modules/excel/utils/sheet-utils.d.ts +190 -0
  150. package/dist/browser/modules/excel/utils/sheet-utils.js +674 -0
  151. package/dist/browser/modules/excel/utils/stream-buf.d.ts +126 -0
  152. package/dist/browser/modules/excel/utils/stream-buf.js +452 -0
  153. package/dist/browser/modules/excel/utils/string-buf.d.ts +29 -0
  154. package/dist/browser/modules/excel/utils/string-buf.js +75 -0
  155. package/dist/browser/modules/excel/utils/under-dash.d.ts +7 -0
  156. package/dist/browser/modules/excel/utils/under-dash.js +166 -0
  157. package/dist/browser/modules/excel/utils/xml-stream.d.ts +34 -0
  158. package/dist/browser/modules/excel/utils/xml-stream.js +179 -0
  159. package/dist/browser/modules/excel/workbook.d.ts +195 -0
  160. package/dist/browser/modules/excel/workbook.js +314 -0
  161. package/dist/browser/modules/excel/worksheet.d.ts +333 -0
  162. package/dist/browser/modules/excel/worksheet.js +924 -0
  163. package/dist/browser/modules/excel/xlsx/defaultnumformats.d.ts +12 -0
  164. package/dist/browser/modules/excel/xlsx/defaultnumformats.js +149 -0
  165. package/dist/browser/modules/excel/xlsx/rel-type.d.ts +19 -0
  166. package/dist/browser/modules/excel/xlsx/rel-type.js +19 -0
  167. package/dist/browser/modules/excel/xlsx/xform/base-xform.d.ts +33 -0
  168. package/dist/browser/modules/excel/xlsx/xform/base-xform.js +135 -0
  169. package/dist/browser/modules/excel/xlsx/xform/book/defined-name-xform.d.ts +17 -0
  170. package/dist/browser/modules/excel/xlsx/xform/book/defined-name-xform.js +124 -0
  171. package/dist/browser/modules/excel/xlsx/xform/book/sheet-xform.d.ts +14 -0
  172. package/dist/browser/modules/excel/xlsx/xform/book/sheet-xform.js +30 -0
  173. package/dist/browser/modules/excel/xlsx/xform/book/workbook-calc-properties-xform.d.ts +11 -0
  174. package/dist/browser/modules/excel/xlsx/xform/book/workbook-calc-properties-xform.js +21 -0
  175. package/dist/browser/modules/excel/xlsx/xform/book/workbook-pivot-cache-xform.d.ts +12 -0
  176. package/dist/browser/modules/excel/xlsx/xform/book/workbook-pivot-cache-xform.js +24 -0
  177. package/dist/browser/modules/excel/xlsx/xform/book/workbook-properties-xform.d.ts +11 -0
  178. package/dist/browser/modules/excel/xlsx/xform/book/workbook-properties-xform.js +24 -0
  179. package/dist/browser/modules/excel/xlsx/xform/book/workbook-view-xform.d.ts +17 -0
  180. package/dist/browser/modules/excel/xlsx/xform/book/workbook-view-xform.js +46 -0
  181. package/dist/browser/modules/excel/xlsx/xform/book/workbook-xform.d.ts +23 -0
  182. package/dist/browser/modules/excel/xlsx/xform/book/workbook-xform.js +234 -0
  183. package/dist/browser/modules/excel/xlsx/xform/comment/comment-xform.d.ts +28 -0
  184. package/dist/browser/modules/excel/xlsx/xform/comment/comment-xform.js +76 -0
  185. package/dist/browser/modules/excel/xlsx/xform/comment/comments-xform.d.ts +21 -0
  186. package/dist/browser/modules/excel/xlsx/xform/comment/comments-xform.js +72 -0
  187. package/dist/browser/modules/excel/xlsx/xform/comment/style/vml-position-xform.d.ts +16 -0
  188. package/dist/browser/modules/excel/xlsx/xform/comment/style/vml-position-xform.js +34 -0
  189. package/dist/browser/modules/excel/xlsx/xform/comment/style/vml-protection-xform.d.ts +14 -0
  190. package/dist/browser/modules/excel/xlsx/xform/comment/style/vml-protection-xform.js +30 -0
  191. package/dist/browser/modules/excel/xlsx/xform/comment/vml-anchor-xform.d.ts +27 -0
  192. package/dist/browser/modules/excel/xlsx/xform/comment/vml-anchor-xform.js +55 -0
  193. package/dist/browser/modules/excel/xlsx/xform/comment/vml-client-data-xform.d.ts +35 -0
  194. package/dist/browser/modules/excel/xlsx/xform/comment/vml-client-data-xform.js +82 -0
  195. package/dist/browser/modules/excel/xlsx/xform/comment/vml-notes-xform.d.ts +24 -0
  196. package/dist/browser/modules/excel/xlsx/xform/comment/vml-notes-xform.js +96 -0
  197. package/dist/browser/modules/excel/xlsx/xform/comment/vml-shape-xform.d.ts +25 -0
  198. package/dist/browser/modules/excel/xlsx/xform/comment/vml-shape-xform.js +83 -0
  199. package/dist/browser/modules/excel/xlsx/xform/comment/vml-textbox-xform.d.ts +23 -0
  200. package/dist/browser/modules/excel/xlsx/xform/comment/vml-textbox-xform.js +60 -0
  201. package/dist/browser/modules/excel/xlsx/xform/composite-xform.d.ts +11 -0
  202. package/dist/browser/modules/excel/xlsx/xform/composite-xform.js +48 -0
  203. package/dist/browser/modules/excel/xlsx/xform/core/app-heading-pairs-xform.d.ts +8 -0
  204. package/dist/browser/modules/excel/xlsx/xform/core/app-heading-pairs-xform.js +24 -0
  205. package/dist/browser/modules/excel/xlsx/xform/core/app-titles-of-parts-xform.d.ts +8 -0
  206. package/dist/browser/modules/excel/xlsx/xform/core/app-titles-of-parts-xform.js +21 -0
  207. package/dist/browser/modules/excel/xlsx/xform/core/app-xform.d.ts +26 -0
  208. package/dist/browser/modules/excel/xlsx/xform/core/app-xform.js +83 -0
  209. package/dist/browser/modules/excel/xlsx/xform/core/content-types-xform.d.ts +11 -0
  210. package/dist/browser/modules/excel/xlsx/xform/core/content-types-xform.js +122 -0
  211. package/dist/browser/modules/excel/xlsx/xform/core/core-xform.d.ts +42 -0
  212. package/dist/browser/modules/excel/xlsx/xform/core/core-xform.js +124 -0
  213. package/dist/browser/modules/excel/xlsx/xform/core/relationship-xform.d.ts +14 -0
  214. package/dist/browser/modules/excel/xlsx/xform/core/relationship-xform.js +20 -0
  215. package/dist/browser/modules/excel/xlsx/xform/core/relationships-xform.d.ts +14 -0
  216. package/dist/browser/modules/excel/xlsx/xform/core/relationships-xform.js +62 -0
  217. package/dist/browser/modules/excel/xlsx/xform/drawing/base-cell-anchor-xform.d.ts +13 -0
  218. package/dist/browser/modules/excel/xlsx/xform/drawing/base-cell-anchor-xform.js +44 -0
  219. package/dist/browser/modules/excel/xlsx/xform/drawing/blip-fill-xform.d.ts +16 -0
  220. package/dist/browser/modules/excel/xlsx/xform/drawing/blip-fill-xform.js +57 -0
  221. package/dist/browser/modules/excel/xlsx/xform/drawing/blip-xform.d.ts +14 -0
  222. package/dist/browser/modules/excel/xlsx/xform/drawing/blip-xform.js +40 -0
  223. package/dist/browser/modules/excel/xlsx/xform/drawing/c-nv-pic-pr-xform.d.ts +9 -0
  224. package/dist/browser/modules/excel/xlsx/xform/drawing/c-nv-pic-pr-xform.js +32 -0
  225. package/dist/browser/modules/excel/xlsx/xform/drawing/c-nv-pr-xform.d.ts +18 -0
  226. package/dist/browser/modules/excel/xlsx/xform/drawing/c-nv-pr-xform.js +59 -0
  227. package/dist/browser/modules/excel/xlsx/xform/drawing/cell-position-xform.d.ts +24 -0
  228. package/dist/browser/modules/excel/xlsx/xform/drawing/cell-position-xform.js +68 -0
  229. package/dist/browser/modules/excel/xlsx/xform/drawing/drawing-xform.d.ts +24 -0
  230. package/dist/browser/modules/excel/xlsx/xform/drawing/drawing-xform.js +96 -0
  231. package/dist/browser/modules/excel/xlsx/xform/drawing/ext-lst-xform.d.ts +9 -0
  232. package/dist/browser/modules/excel/xlsx/xform/drawing/ext-lst-xform.js +37 -0
  233. package/dist/browser/modules/excel/xlsx/xform/drawing/ext-xform.d.ts +20 -0
  234. package/dist/browser/modules/excel/xlsx/xform/drawing/ext-xform.js +34 -0
  235. package/dist/browser/modules/excel/xlsx/xform/drawing/hlink-click-xform.d.ts +11 -0
  236. package/dist/browser/modules/excel/xlsx/xform/drawing/hlink-click-xform.js +39 -0
  237. package/dist/browser/modules/excel/xlsx/xform/drawing/nv-pic-pr-xform.d.ts +15 -0
  238. package/dist/browser/modules/excel/xlsx/xform/drawing/nv-pic-pr-xform.js +56 -0
  239. package/dist/browser/modules/excel/xlsx/xform/drawing/one-cell-anchor-xform.d.ts +20 -0
  240. package/dist/browser/modules/excel/xlsx/xform/drawing/one-cell-anchor-xform.js +52 -0
  241. package/dist/browser/modules/excel/xlsx/xform/drawing/pic-xform.d.ts +22 -0
  242. package/dist/browser/modules/excel/xlsx/xform/drawing/pic-xform.js +64 -0
  243. package/dist/browser/modules/excel/xlsx/xform/drawing/sp-pr.d.ts +32 -0
  244. package/dist/browser/modules/excel/xlsx/xform/drawing/sp-pr.js +17 -0
  245. package/dist/browser/modules/excel/xlsx/xform/drawing/two-cell-anchor-xform.d.ts +20 -0
  246. package/dist/browser/modules/excel/xlsx/xform/drawing/two-cell-anchor-xform.js +51 -0
  247. package/dist/browser/modules/excel/xlsx/xform/list-xform.d.ts +32 -0
  248. package/dist/browser/modules/excel/xlsx/xform/list-xform.js +89 -0
  249. package/dist/browser/modules/excel/xlsx/xform/pivot-table/cache-field-xform.d.ts +42 -0
  250. package/dist/browser/modules/excel/xlsx/xform/pivot-table/cache-field-xform.js +128 -0
  251. package/dist/browser/modules/excel/xlsx/xform/pivot-table/cache-field.d.ts +15 -0
  252. package/dist/browser/modules/excel/xlsx/xform/pivot-table/cache-field.js +78 -0
  253. package/dist/browser/modules/excel/xlsx/xform/pivot-table/pivot-cache-definition-xform.d.ts +60 -0
  254. package/dist/browser/modules/excel/xlsx/xform/pivot-table/pivot-cache-definition-xform.js +179 -0
  255. package/dist/browser/modules/excel/xlsx/xform/pivot-table/pivot-cache-records-xform.d.ts +73 -0
  256. package/dist/browser/modules/excel/xlsx/xform/pivot-table/pivot-cache-records-xform.js +234 -0
  257. package/dist/browser/modules/excel/xlsx/xform/pivot-table/pivot-table-xform.d.ts +119 -0
  258. package/dist/browser/modules/excel/xlsx/xform/pivot-table/pivot-table-xform.js +624 -0
  259. package/dist/browser/modules/excel/xlsx/xform/sheet/auto-filter-xform.d.ts +8 -0
  260. package/dist/browser/modules/excel/xlsx/xform/sheet/auto-filter-xform.js +34 -0
  261. package/dist/browser/modules/excel/xlsx/xform/sheet/cell-xform.d.ts +17 -0
  262. package/dist/browser/modules/excel/xlsx/xform/sheet/cell-xform.js +460 -0
  263. package/dist/browser/modules/excel/xlsx/xform/sheet/cf/cf-rule-xform.d.ts +41 -0
  264. package/dist/browser/modules/excel/xlsx/xform/sheet/cf/cf-rule-xform.js +259 -0
  265. package/dist/browser/modules/excel/xlsx/xform/sheet/cf/cfvo-xform.d.ts +8 -0
  266. package/dist/browser/modules/excel/xlsx/xform/sheet/cf/cfvo-xform.js +22 -0
  267. package/dist/browser/modules/excel/xlsx/xform/sheet/cf/color-scale-xform.d.ts +13 -0
  268. package/dist/browser/modules/excel/xlsx/xform/sheet/cf/color-scale-xform.js +35 -0
  269. package/dist/browser/modules/excel/xlsx/xform/sheet/cf/conditional-formatting-xform.d.ts +9 -0
  270. package/dist/browser/modules/excel/xlsx/xform/sheet/cf/conditional-formatting-xform.js +37 -0
  271. package/dist/browser/modules/excel/xlsx/xform/sheet/cf/conditional-formattings-xform.d.ts +16 -0
  272. package/dist/browser/modules/excel/xlsx/xform/sheet/cf/conditional-formattings-xform.js +74 -0
  273. package/dist/browser/modules/excel/xlsx/xform/sheet/cf/databar-xform.d.ts +13 -0
  274. package/dist/browser/modules/excel/xlsx/xform/sheet/cf/databar-xform.js +39 -0
  275. package/dist/browser/modules/excel/xlsx/xform/sheet/cf/ext-lst-ref-xform.d.ts +9 -0
  276. package/dist/browser/modules/excel/xlsx/xform/sheet/cf/ext-lst-ref-xform.js +67 -0
  277. package/dist/browser/modules/excel/xlsx/xform/sheet/cf/formula-xform.d.ts +9 -0
  278. package/dist/browser/modules/excel/xlsx/xform/sheet/cf/formula-xform.js +19 -0
  279. package/dist/browser/modules/excel/xlsx/xform/sheet/cf/icon-set-xform.d.ts +11 -0
  280. package/dist/browser/modules/excel/xlsx/xform/sheet/cf/icon-set-xform.js +37 -0
  281. package/dist/browser/modules/excel/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.d.ts +10 -0
  282. package/dist/browser/modules/excel/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.js +22 -0
  283. package/dist/browser/modules/excel/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.d.ts +23 -0
  284. package/dist/browser/modules/excel/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js +80 -0
  285. package/dist/browser/modules/excel/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.d.ts +13 -0
  286. package/dist/browser/modules/excel/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.js +35 -0
  287. package/dist/browser/modules/excel/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.d.ts +16 -0
  288. package/dist/browser/modules/excel/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.js +48 -0
  289. package/dist/browser/modules/excel/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.d.ts +13 -0
  290. package/dist/browser/modules/excel/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.js +40 -0
  291. package/dist/browser/modules/excel/xlsx/xform/sheet/cf-ext/databar-ext-xform.d.ts +29 -0
  292. package/dist/browser/modules/excel/xlsx/xform/sheet/cf-ext/databar-ext-xform.js +69 -0
  293. package/dist/browser/modules/excel/xlsx/xform/sheet/cf-ext/f-ext-xform.d.ts +9 -0
  294. package/dist/browser/modules/excel/xlsx/xform/sheet/cf-ext/f-ext-xform.js +19 -0
  295. package/dist/browser/modules/excel/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.d.ts +20 -0
  296. package/dist/browser/modules/excel/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.js +60 -0
  297. package/dist/browser/modules/excel/xlsx/xform/sheet/cf-ext/sqref-ext-xform.d.ts +9 -0
  298. package/dist/browser/modules/excel/xlsx/xform/sheet/cf-ext/sqref-ext-xform.js +19 -0
  299. package/dist/browser/modules/excel/xlsx/xform/sheet/col-breaks-xform.d.ts +16 -0
  300. package/dist/browser/modules/excel/xlsx/xform/sheet/col-breaks-xform.js +35 -0
  301. package/dist/browser/modules/excel/xlsx/xform/sheet/col-xform.d.ts +22 -0
  302. package/dist/browser/modules/excel/xlsx/xform/sheet/col-xform.js +75 -0
  303. package/dist/browser/modules/excel/xlsx/xform/sheet/data-validations-xform.d.ts +12 -0
  304. package/dist/browser/modules/excel/xlsx/xform/sheet/data-validations-xform.js +269 -0
  305. package/dist/browser/modules/excel/xlsx/xform/sheet/dimension-xform.d.ts +10 -0
  306. package/dist/browser/modules/excel/xlsx/xform/sheet/dimension-xform.js +23 -0
  307. package/dist/browser/modules/excel/xlsx/xform/sheet/drawing-xform.d.ts +12 -0
  308. package/dist/browser/modules/excel/xlsx/xform/sheet/drawing-xform.js +27 -0
  309. package/dist/browser/modules/excel/xlsx/xform/sheet/ext-lst-xform.d.ts +16 -0
  310. package/dist/browser/modules/excel/xlsx/xform/sheet/ext-lst-xform.js +66 -0
  311. package/dist/browser/modules/excel/xlsx/xform/sheet/header-footer-xform.d.ts +20 -0
  312. package/dist/browser/modules/excel/xlsx/xform/sheet/header-footer-xform.js +124 -0
  313. package/dist/browser/modules/excel/xlsx/xform/sheet/hyperlink-xform.d.ts +16 -0
  314. package/dist/browser/modules/excel/xlsx/xform/sheet/hyperlink-xform.js +47 -0
  315. package/dist/browser/modules/excel/xlsx/xform/sheet/merge-cell-xform.d.ts +9 -0
  316. package/dist/browser/modules/excel/xlsx/xform/sheet/merge-cell-xform.js +21 -0
  317. package/dist/browser/modules/excel/xlsx/xform/sheet/merges.d.ts +14 -0
  318. package/dist/browser/modules/excel/xlsx/xform/sheet/merges.js +50 -0
  319. package/dist/browser/modules/excel/xlsx/xform/sheet/outline-properties-xform.d.ts +13 -0
  320. package/dist/browser/modules/excel/xlsx/xform/sheet/outline-properties-xform.js +36 -0
  321. package/dist/browser/modules/excel/xlsx/xform/sheet/page-breaks-xform.d.ts +14 -0
  322. package/dist/browser/modules/excel/xlsx/xform/sheet/page-breaks-xform.js +33 -0
  323. package/dist/browser/modules/excel/xlsx/xform/sheet/page-margins-xform.d.ts +17 -0
  324. package/dist/browser/modules/excel/xlsx/xform/sheet/page-margins-xform.js +42 -0
  325. package/dist/browser/modules/excel/xlsx/xform/sheet/page-setup-properties-xform.d.ts +12 -0
  326. package/dist/browser/modules/excel/xlsx/xform/sheet/page-setup-properties-xform.js +29 -0
  327. package/dist/browser/modules/excel/xlsx/xform/sheet/page-setup-xform.d.ts +27 -0
  328. package/dist/browser/modules/excel/xlsx/xform/sheet/page-setup-xform.js +96 -0
  329. package/dist/browser/modules/excel/xlsx/xform/sheet/picture-xform.d.ts +12 -0
  330. package/dist/browser/modules/excel/xlsx/xform/sheet/picture-xform.js +27 -0
  331. package/dist/browser/modules/excel/xlsx/xform/sheet/print-options-xform.d.ts +15 -0
  332. package/dist/browser/modules/excel/xlsx/xform/sheet/print-options-xform.js +41 -0
  333. package/dist/browser/modules/excel/xlsx/xform/sheet/row-breaks-xform.d.ts +10 -0
  334. package/dist/browser/modules/excel/xlsx/xform/sheet/row-breaks-xform.js +29 -0
  335. package/dist/browser/modules/excel/xlsx/xform/sheet/row-xform.d.ts +37 -0
  336. package/dist/browser/modules/excel/xlsx/xform/sheet/row-xform.js +152 -0
  337. package/dist/browser/modules/excel/xlsx/xform/sheet/sheet-format-properties-xform.d.ts +16 -0
  338. package/dist/browser/modules/excel/xlsx/xform/sheet/sheet-format-properties-xform.js +49 -0
  339. package/dist/browser/modules/excel/xlsx/xform/sheet/sheet-properties-xform.d.ts +19 -0
  340. package/dist/browser/modules/excel/xlsx/xform/sheet/sheet-properties-xform.js +82 -0
  341. package/dist/browser/modules/excel/xlsx/xform/sheet/sheet-protection-xform.d.ts +31 -0
  342. package/dist/browser/modules/excel/xlsx/xform/sheet/sheet-protection-xform.js +80 -0
  343. package/dist/browser/modules/excel/xlsx/xform/sheet/sheet-view-xform.d.ts +32 -0
  344. package/dist/browser/modules/excel/xlsx/xform/sheet/sheet-view-xform.js +193 -0
  345. package/dist/browser/modules/excel/xlsx/xform/sheet/table-part-xform.d.ts +12 -0
  346. package/dist/browser/modules/excel/xlsx/xform/sheet/table-part-xform.js +27 -0
  347. package/dist/browser/modules/excel/xlsx/xform/sheet/worksheet-xform.d.ts +21 -0
  348. package/dist/browser/modules/excel/xlsx/xform/sheet/worksheet-xform.js +518 -0
  349. package/dist/browser/modules/excel/xlsx/xform/simple/boolean-xform.d.ts +15 -0
  350. package/dist/browser/modules/excel/xlsx/xform/simple/boolean-xform.js +24 -0
  351. package/dist/browser/modules/excel/xlsx/xform/simple/date-xform.d.ts +22 -0
  352. package/dist/browser/modules/excel/xlsx/xform/simple/date-xform.js +65 -0
  353. package/dist/browser/modules/excel/xlsx/xform/simple/float-xform.d.ts +18 -0
  354. package/dist/browser/modules/excel/xlsx/xform/simple/float-xform.js +47 -0
  355. package/dist/browser/modules/excel/xlsx/xform/simple/integer-xform.d.ts +20 -0
  356. package/dist/browser/modules/excel/xlsx/xform/simple/integer-xform.js +52 -0
  357. package/dist/browser/modules/excel/xlsx/xform/simple/string-xform.d.ts +18 -0
  358. package/dist/browser/modules/excel/xlsx/xform/simple/string-xform.js +47 -0
  359. package/dist/browser/modules/excel/xlsx/xform/static-xform.d.ts +17 -0
  360. package/dist/browser/modules/excel/xlsx/xform/static-xform.js +55 -0
  361. package/dist/browser/modules/excel/xlsx/xform/strings/phonetic-text-xform.d.ts +20 -0
  362. package/dist/browser/modules/excel/xlsx/xform/strings/phonetic-text-xform.js +86 -0
  363. package/dist/browser/modules/excel/xlsx/xform/strings/rich-text-xform.d.ts +25 -0
  364. package/dist/browser/modules/excel/xlsx/xform/strings/rich-text-xform.js +77 -0
  365. package/dist/browser/modules/excel/xlsx/xform/strings/shared-string-xform.d.ts +17 -0
  366. package/dist/browser/modules/excel/xlsx/xform/strings/shared-string-xform.js +90 -0
  367. package/dist/browser/modules/excel/xlsx/xform/strings/shared-strings-xform.d.ts +27 -0
  368. package/dist/browser/modules/excel/xlsx/xform/strings/shared-strings-xform.js +109 -0
  369. package/dist/browser/modules/excel/xlsx/xform/strings/text-xform.d.ts +10 -0
  370. package/dist/browser/modules/excel/xlsx/xform/strings/text-xform.js +36 -0
  371. package/dist/browser/modules/excel/xlsx/xform/style/alignment-xform.d.ts +18 -0
  372. package/dist/browser/modules/excel/xlsx/xform/style/alignment-xform.js +152 -0
  373. package/dist/browser/modules/excel/xlsx/xform/style/border-xform.d.ts +49 -0
  374. package/dist/browser/modules/excel/xlsx/xform/style/border-xform.js +188 -0
  375. package/dist/browser/modules/excel/xlsx/xform/style/color-xform.d.ts +17 -0
  376. package/dist/browser/modules/excel/xlsx/xform/style/color-xform.js +61 -0
  377. package/dist/browser/modules/excel/xlsx/xform/style/dxf-xform.d.ts +23 -0
  378. package/dist/browser/modules/excel/xlsx/xform/style/dxf-xform.js +92 -0
  379. package/dist/browser/modules/excel/xlsx/xform/style/fill-xform.d.ts +85 -0
  380. package/dist/browser/modules/excel/xlsx/xform/style/fill-xform.js +312 -0
  381. package/dist/browser/modules/excel/xlsx/xform/style/font-xform.d.ts +35 -0
  382. package/dist/browser/modules/excel/xlsx/xform/style/font-xform.js +100 -0
  383. package/dist/browser/modules/excel/xlsx/xform/style/numfmt-xform.d.ts +18 -0
  384. package/dist/browser/modules/excel/xlsx/xform/style/numfmt-xform.js +50 -0
  385. package/dist/browser/modules/excel/xlsx/xform/style/protection-xform.d.ts +13 -0
  386. package/dist/browser/modules/excel/xlsx/xform/style/protection-xform.js +49 -0
  387. package/dist/browser/modules/excel/xlsx/xform/style/style-xform.d.ts +30 -0
  388. package/dist/browser/modules/excel/xlsx/xform/style/style-xform.js +108 -0
  389. package/dist/browser/modules/excel/xlsx/xform/style/styles-xform.d.ts +46 -0
  390. package/dist/browser/modules/excel/xlsx/xform/style/styles-xform.js +484 -0
  391. package/dist/browser/modules/excel/xlsx/xform/style/underline-xform.d.ts +14 -0
  392. package/dist/browser/modules/excel/xlsx/xform/style/underline-xform.js +38 -0
  393. package/dist/browser/modules/excel/xlsx/xform/table/auto-filter-xform.d.ts +21 -0
  394. package/dist/browser/modules/excel/xlsx/xform/table/auto-filter-xform.js +70 -0
  395. package/dist/browser/modules/excel/xlsx/xform/table/custom-filter-xform.d.ts +15 -0
  396. package/dist/browser/modules/excel/xlsx/xform/table/custom-filter-xform.js +31 -0
  397. package/dist/browser/modules/excel/xlsx/xform/table/filter-column-xform.d.ts +24 -0
  398. package/dist/browser/modules/excel/xlsx/xform/table/filter-column-xform.js +87 -0
  399. package/dist/browser/modules/excel/xlsx/xform/table/filter-xform.d.ts +14 -0
  400. package/dist/browser/modules/excel/xlsx/xform/table/filter-xform.js +29 -0
  401. package/dist/browser/modules/excel/xlsx/xform/table/table-column-xform.d.ts +21 -0
  402. package/dist/browser/modules/excel/xlsx/xform/table/table-column-xform.js +41 -0
  403. package/dist/browser/modules/excel/xlsx/xform/table/table-style-info-xform.d.ts +18 -0
  404. package/dist/browser/modules/excel/xlsx/xform/table/table-style-info-xform.js +44 -0
  405. package/dist/browser/modules/excel/xlsx/xform/table/table-xform.d.ts +33 -0
  406. package/dist/browser/modules/excel/xlsx/xform/table/table-xform.js +126 -0
  407. package/dist/browser/modules/excel/xlsx/xlsx.browser.d.ts +208 -0
  408. package/dist/browser/modules/excel/xlsx/xlsx.browser.js +1152 -0
  409. package/dist/browser/modules/excel/xlsx/xlsx.d.ts +24 -0
  410. package/dist/browser/modules/excel/xlsx/xlsx.js +239 -0
  411. package/dist/browser/modules/excel/xlsx/xml/theme1.d.ts +1 -0
  412. package/dist/browser/modules/excel/xlsx/xml/theme1.js +1 -0
  413. package/dist/browser/modules/stream/base-transform.d.ts +68 -0
  414. package/dist/browser/modules/stream/base-transform.js +160 -0
  415. package/dist/browser/modules/stream/buffered-stream.d.ts +94 -0
  416. package/dist/browser/modules/stream/buffered-stream.js +277 -0
  417. package/dist/browser/modules/stream/chunked-builder.d.ts +97 -0
  418. package/dist/browser/modules/stream/chunked-builder.js +165 -0
  419. package/dist/browser/modules/stream/event-emitter.d.ts +30 -0
  420. package/dist/browser/modules/stream/event-emitter.js +239 -0
  421. package/dist/browser/modules/stream/index.browser.d.ts +22 -0
  422. package/dist/browser/modules/stream/index.browser.js +25 -0
  423. package/dist/browser/modules/stream/index.d.ts +49 -0
  424. package/dist/browser/modules/stream/index.js +52 -0
  425. package/dist/browser/modules/stream/pull-stream.d.ts +67 -0
  426. package/dist/browser/modules/stream/pull-stream.js +204 -0
  427. package/dist/browser/modules/stream/shared.d.ts +54 -0
  428. package/dist/browser/modules/stream/shared.js +156 -0
  429. package/dist/browser/modules/stream/streams.browser.d.ts +936 -0
  430. package/dist/browser/modules/stream/streams.browser.js +3297 -0
  431. package/dist/browser/modules/stream/streams.d.ts +282 -0
  432. package/dist/browser/modules/stream/streams.js +940 -0
  433. package/dist/browser/modules/stream/types.d.ts +238 -0
  434. package/dist/browser/modules/stream/types.js +7 -0
  435. package/dist/browser/modules/stream/utils.d.ts +24 -0
  436. package/dist/browser/modules/stream/utils.js +85 -0
  437. package/dist/browser/utils/browser.d.ts +9 -0
  438. package/dist/browser/utils/browser.js +49 -0
  439. package/dist/browser/utils/datetime.d.ts +56 -0
  440. package/dist/browser/utils/datetime.js +493 -0
  441. package/dist/browser/utils/env.d.ts +14 -0
  442. package/dist/browser/utils/env.js +18 -0
  443. package/dist/browser/utils/utils.base.d.ts +49 -0
  444. package/dist/browser/utils/utils.base.js +275 -0
  445. package/dist/browser/utils/utils.browser.d.ts +6 -0
  446. package/dist/browser/utils/utils.browser.js +12 -0
  447. package/dist/browser/utils/utils.d.ts +6 -0
  448. package/dist/browser/utils/utils.js +19 -0
  449. package/dist/browser/utils/uuid.d.ts +11 -0
  450. package/dist/browser/utils/uuid.js +55 -0
  451. package/dist/{browser → iife}/excelts.iife.js +1 -1
  452. package/dist/{browser → iife}/excelts.iife.min.js +1 -1
  453. package/dist/types/index.browser.d.ts +20 -20
  454. package/dist/types/index.d.ts +23 -23
  455. package/dist/types/modules/archive/compress.browser.d.ts +1 -1
  456. package/dist/types/modules/archive/compress.d.ts +2 -2
  457. package/dist/types/modules/archive/crc32.browser.d.ts +1 -1
  458. package/dist/types/modules/archive/crc32.d.ts +1 -1
  459. package/dist/types/modules/archive/defaults.d.ts +1 -1
  460. package/dist/types/modules/archive/extract.d.ts +2 -2
  461. package/dist/types/modules/archive/index.base.d.ts +4 -4
  462. package/dist/types/modules/archive/index.browser.d.ts +5 -5
  463. package/dist/types/modules/archive/index.d.ts +5 -5
  464. package/dist/types/modules/archive/parse.base.d.ts +3 -3
  465. package/dist/types/modules/archive/parse.browser.d.ts +2 -2
  466. package/dist/types/modules/archive/parse.d.ts +3 -3
  467. package/dist/types/modules/archive/streaming-compress.browser.d.ts +2 -2
  468. package/dist/types/modules/archive/streaming-compress.d.ts +2 -2
  469. package/dist/types/modules/archive/streaming-zip.d.ts +2 -2
  470. package/dist/types/modules/archive/zip-builder.d.ts +2 -2
  471. package/dist/types/modules/archive/zip-entry-metadata.d.ts +1 -1
  472. package/dist/types/modules/archive/zip-parser.d.ts +1 -1
  473. package/dist/types/modules/csv/csv-stream.d.ts +3 -3
  474. package/dist/types/modules/csv/csv.browser.d.ts +9 -9
  475. package/dist/types/modules/csv/csv.d.ts +4 -4
  476. package/dist/types/modules/excel/anchor.d.ts +1 -1
  477. package/dist/types/modules/excel/cell.d.ts +7 -7
  478. package/dist/types/modules/excel/column.d.ts +3 -3
  479. package/dist/types/modules/excel/defined-names.d.ts +4 -4
  480. package/dist/types/modules/excel/image.d.ts +2 -2
  481. package/dist/types/modules/excel/pivot-table.d.ts +1 -1
  482. package/dist/types/modules/excel/range.d.ts +1 -1
  483. package/dist/types/modules/excel/row.d.ts +3 -3
  484. package/dist/types/modules/excel/stream/hyperlink-reader.d.ts +2 -2
  485. package/dist/types/modules/excel/stream/workbook-reader.browser.d.ts +6 -6
  486. package/dist/types/modules/excel/stream/workbook-reader.d.ts +5 -5
  487. package/dist/types/modules/excel/stream/workbook-writer.browser.d.ts +8 -8
  488. package/dist/types/modules/excel/stream/workbook-writer.d.ts +2 -2
  489. package/dist/types/modules/excel/stream/worksheet-reader.d.ts +6 -6
  490. package/dist/types/modules/excel/stream/worksheet-writer.d.ts +9 -9
  491. package/dist/types/modules/excel/table.d.ts +2 -2
  492. package/dist/types/modules/excel/utils/col-cache.d.ts +1 -1
  493. package/dist/types/modules/excel/utils/sheet-utils.d.ts +3 -3
  494. package/dist/types/modules/excel/utils/stream-buf.d.ts +2 -2
  495. package/dist/types/modules/excel/workbook.d.ts +9 -9
  496. package/dist/types/modules/excel/worksheet.d.ts +10 -10
  497. package/dist/types/modules/excel/xlsx/xform/base-xform.d.ts +1 -1
  498. package/dist/types/modules/excel/xlsx/xform/book/defined-name-xform.d.ts +1 -1
  499. package/dist/types/modules/excel/xlsx/xform/book/sheet-xform.d.ts +1 -1
  500. package/dist/types/modules/excel/xlsx/xform/book/workbook-calc-properties-xform.d.ts +1 -1
  501. package/dist/types/modules/excel/xlsx/xform/book/workbook-pivot-cache-xform.d.ts +1 -1
  502. package/dist/types/modules/excel/xlsx/xform/book/workbook-properties-xform.d.ts +1 -1
  503. package/dist/types/modules/excel/xlsx/xform/book/workbook-view-xform.d.ts +1 -1
  504. package/dist/types/modules/excel/xlsx/xform/book/workbook-xform.d.ts +2 -2
  505. package/dist/types/modules/excel/xlsx/xform/comment/comment-xform.d.ts +2 -2
  506. package/dist/types/modules/excel/xlsx/xform/comment/comments-xform.d.ts +2 -2
  507. package/dist/types/modules/excel/xlsx/xform/comment/style/vml-position-xform.d.ts +1 -1
  508. package/dist/types/modules/excel/xlsx/xform/comment/style/vml-protection-xform.d.ts +1 -1
  509. package/dist/types/modules/excel/xlsx/xform/comment/vml-anchor-xform.d.ts +1 -1
  510. package/dist/types/modules/excel/xlsx/xform/comment/vml-client-data-xform.d.ts +1 -1
  511. package/dist/types/modules/excel/xlsx/xform/comment/vml-notes-xform.d.ts +1 -1
  512. package/dist/types/modules/excel/xlsx/xform/comment/vml-shape-xform.d.ts +1 -1
  513. package/dist/types/modules/excel/xlsx/xform/comment/vml-textbox-xform.d.ts +1 -1
  514. package/dist/types/modules/excel/xlsx/xform/composite-xform.d.ts +1 -1
  515. package/dist/types/modules/excel/xlsx/xform/core/app-heading-pairs-xform.d.ts +1 -1
  516. package/dist/types/modules/excel/xlsx/xform/core/app-titles-of-parts-xform.d.ts +1 -1
  517. package/dist/types/modules/excel/xlsx/xform/core/app-xform.d.ts +1 -1
  518. package/dist/types/modules/excel/xlsx/xform/core/content-types-xform.d.ts +1 -1
  519. package/dist/types/modules/excel/xlsx/xform/core/core-xform.d.ts +1 -1
  520. package/dist/types/modules/excel/xlsx/xform/core/relationship-xform.d.ts +1 -1
  521. package/dist/types/modules/excel/xlsx/xform/core/relationships-xform.d.ts +1 -1
  522. package/dist/types/modules/excel/xlsx/xform/drawing/base-cell-anchor-xform.d.ts +1 -1
  523. package/dist/types/modules/excel/xlsx/xform/drawing/blip-fill-xform.d.ts +2 -2
  524. package/dist/types/modules/excel/xlsx/xform/drawing/blip-xform.d.ts +1 -1
  525. package/dist/types/modules/excel/xlsx/xform/drawing/c-nv-pic-pr-xform.d.ts +1 -1
  526. package/dist/types/modules/excel/xlsx/xform/drawing/c-nv-pr-xform.d.ts +1 -1
  527. package/dist/types/modules/excel/xlsx/xform/drawing/cell-position-xform.d.ts +2 -2
  528. package/dist/types/modules/excel/xlsx/xform/drawing/drawing-xform.d.ts +1 -1
  529. package/dist/types/modules/excel/xlsx/xform/drawing/ext-lst-xform.d.ts +1 -1
  530. package/dist/types/modules/excel/xlsx/xform/drawing/ext-xform.d.ts +1 -1
  531. package/dist/types/modules/excel/xlsx/xform/drawing/hlink-click-xform.d.ts +1 -1
  532. package/dist/types/modules/excel/xlsx/xform/drawing/nv-pic-pr-xform.d.ts +1 -1
  533. package/dist/types/modules/excel/xlsx/xform/drawing/one-cell-anchor-xform.d.ts +1 -1
  534. package/dist/types/modules/excel/xlsx/xform/drawing/pic-xform.d.ts +1 -1
  535. package/dist/types/modules/excel/xlsx/xform/drawing/two-cell-anchor-xform.d.ts +1 -1
  536. package/dist/types/modules/excel/xlsx/xform/list-xform.d.ts +1 -1
  537. package/dist/types/modules/excel/xlsx/xform/pivot-table/cache-field-xform.d.ts +1 -1
  538. package/dist/types/modules/excel/xlsx/xform/pivot-table/pivot-cache-definition-xform.d.ts +3 -3
  539. package/dist/types/modules/excel/xlsx/xform/pivot-table/pivot-cache-records-xform.d.ts +2 -2
  540. package/dist/types/modules/excel/xlsx/xform/pivot-table/pivot-table-xform.d.ts +1 -1
  541. package/dist/types/modules/excel/xlsx/xform/sheet/auto-filter-xform.d.ts +1 -1
  542. package/dist/types/modules/excel/xlsx/xform/sheet/cell-xform.d.ts +1 -1
  543. package/dist/types/modules/excel/xlsx/xform/sheet/cf/cf-rule-xform.d.ts +6 -6
  544. package/dist/types/modules/excel/xlsx/xform/sheet/cf/cfvo-xform.d.ts +1 -1
  545. package/dist/types/modules/excel/xlsx/xform/sheet/cf/color-scale-xform.d.ts +3 -3
  546. package/dist/types/modules/excel/xlsx/xform/sheet/cf/conditional-formatting-xform.d.ts +1 -1
  547. package/dist/types/modules/excel/xlsx/xform/sheet/cf/conditional-formattings-xform.d.ts +2 -2
  548. package/dist/types/modules/excel/xlsx/xform/sheet/cf/databar-xform.d.ts +3 -3
  549. package/dist/types/modules/excel/xlsx/xform/sheet/cf/ext-lst-ref-xform.d.ts +1 -1
  550. package/dist/types/modules/excel/xlsx/xform/sheet/cf/formula-xform.d.ts +1 -1
  551. package/dist/types/modules/excel/xlsx/xform/sheet/cf/icon-set-xform.d.ts +2 -2
  552. package/dist/types/modules/excel/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.d.ts +1 -1
  553. package/dist/types/modules/excel/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.d.ts +3 -3
  554. package/dist/types/modules/excel/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.d.ts +2 -2
  555. package/dist/types/modules/excel/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.d.ts +3 -3
  556. package/dist/types/modules/excel/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.d.ts +2 -2
  557. package/dist/types/modules/excel/xlsx/xform/sheet/cf-ext/databar-ext-xform.d.ts +3 -3
  558. package/dist/types/modules/excel/xlsx/xform/sheet/cf-ext/f-ext-xform.d.ts +1 -1
  559. package/dist/types/modules/excel/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.d.ts +3 -3
  560. package/dist/types/modules/excel/xlsx/xform/sheet/cf-ext/sqref-ext-xform.d.ts +1 -1
  561. package/dist/types/modules/excel/xlsx/xform/sheet/col-breaks-xform.d.ts +1 -1
  562. package/dist/types/modules/excel/xlsx/xform/sheet/col-xform.d.ts +1 -1
  563. package/dist/types/modules/excel/xlsx/xform/sheet/data-validations-xform.d.ts +1 -1
  564. package/dist/types/modules/excel/xlsx/xform/sheet/dimension-xform.d.ts +1 -1
  565. package/dist/types/modules/excel/xlsx/xform/sheet/drawing-xform.d.ts +1 -1
  566. package/dist/types/modules/excel/xlsx/xform/sheet/ext-lst-xform.d.ts +1 -1
  567. package/dist/types/modules/excel/xlsx/xform/sheet/header-footer-xform.d.ts +1 -1
  568. package/dist/types/modules/excel/xlsx/xform/sheet/hyperlink-xform.d.ts +1 -1
  569. package/dist/types/modules/excel/xlsx/xform/sheet/merge-cell-xform.d.ts +1 -1
  570. package/dist/types/modules/excel/xlsx/xform/sheet/outline-properties-xform.d.ts +1 -1
  571. package/dist/types/modules/excel/xlsx/xform/sheet/page-breaks-xform.d.ts +1 -1
  572. package/dist/types/modules/excel/xlsx/xform/sheet/page-margins-xform.d.ts +1 -1
  573. package/dist/types/modules/excel/xlsx/xform/sheet/page-setup-properties-xform.d.ts +1 -1
  574. package/dist/types/modules/excel/xlsx/xform/sheet/page-setup-xform.d.ts +1 -1
  575. package/dist/types/modules/excel/xlsx/xform/sheet/picture-xform.d.ts +1 -1
  576. package/dist/types/modules/excel/xlsx/xform/sheet/print-options-xform.d.ts +1 -1
  577. package/dist/types/modules/excel/xlsx/xform/sheet/row-breaks-xform.d.ts +1 -1
  578. package/dist/types/modules/excel/xlsx/xform/sheet/row-xform.d.ts +1 -1
  579. package/dist/types/modules/excel/xlsx/xform/sheet/sheet-format-properties-xform.d.ts +1 -1
  580. package/dist/types/modules/excel/xlsx/xform/sheet/sheet-properties-xform.d.ts +1 -1
  581. package/dist/types/modules/excel/xlsx/xform/sheet/sheet-protection-xform.d.ts +1 -1
  582. package/dist/types/modules/excel/xlsx/xform/sheet/sheet-view-xform.d.ts +1 -1
  583. package/dist/types/modules/excel/xlsx/xform/sheet/table-part-xform.d.ts +1 -1
  584. package/dist/types/modules/excel/xlsx/xform/sheet/worksheet-xform.d.ts +1 -1
  585. package/dist/types/modules/excel/xlsx/xform/simple/boolean-xform.d.ts +1 -1
  586. package/dist/types/modules/excel/xlsx/xform/simple/date-xform.d.ts +1 -1
  587. package/dist/types/modules/excel/xlsx/xform/simple/float-xform.d.ts +1 -1
  588. package/dist/types/modules/excel/xlsx/xform/simple/integer-xform.d.ts +1 -1
  589. package/dist/types/modules/excel/xlsx/xform/simple/string-xform.d.ts +1 -1
  590. package/dist/types/modules/excel/xlsx/xform/static-xform.d.ts +1 -1
  591. package/dist/types/modules/excel/xlsx/xform/strings/phonetic-text-xform.d.ts +1 -1
  592. package/dist/types/modules/excel/xlsx/xform/strings/rich-text-xform.d.ts +3 -3
  593. package/dist/types/modules/excel/xlsx/xform/strings/shared-string-xform.d.ts +1 -1
  594. package/dist/types/modules/excel/xlsx/xform/strings/shared-strings-xform.d.ts +2 -2
  595. package/dist/types/modules/excel/xlsx/xform/strings/text-xform.d.ts +1 -1
  596. package/dist/types/modules/excel/xlsx/xform/style/alignment-xform.d.ts +1 -1
  597. package/dist/types/modules/excel/xlsx/xform/style/border-xform.d.ts +2 -2
  598. package/dist/types/modules/excel/xlsx/xform/style/color-xform.d.ts +1 -1
  599. package/dist/types/modules/excel/xlsx/xform/style/dxf-xform.d.ts +1 -1
  600. package/dist/types/modules/excel/xlsx/xform/style/fill-xform.d.ts +2 -2
  601. package/dist/types/modules/excel/xlsx/xform/style/font-xform.d.ts +1 -1
  602. package/dist/types/modules/excel/xlsx/xform/style/numfmt-xform.d.ts +1 -1
  603. package/dist/types/modules/excel/xlsx/xform/style/protection-xform.d.ts +1 -1
  604. package/dist/types/modules/excel/xlsx/xform/style/style-xform.d.ts +3 -3
  605. package/dist/types/modules/excel/xlsx/xform/style/styles-xform.d.ts +2 -2
  606. package/dist/types/modules/excel/xlsx/xform/style/underline-xform.d.ts +1 -1
  607. package/dist/types/modules/excel/xlsx/xform/table/auto-filter-xform.d.ts +2 -2
  608. package/dist/types/modules/excel/xlsx/xform/table/custom-filter-xform.d.ts +1 -1
  609. package/dist/types/modules/excel/xlsx/xform/table/filter-column-xform.d.ts +2 -2
  610. package/dist/types/modules/excel/xlsx/xform/table/filter-xform.d.ts +1 -1
  611. package/dist/types/modules/excel/xlsx/xform/table/table-column-xform.d.ts +1 -1
  612. package/dist/types/modules/excel/xlsx/xform/table/table-style-info-xform.d.ts +1 -1
  613. package/dist/types/modules/excel/xlsx/xform/table/table-xform.d.ts +1 -1
  614. package/dist/types/modules/excel/xlsx/xlsx.browser.d.ts +3 -3
  615. package/dist/types/modules/excel/xlsx/xlsx.d.ts +1 -1
  616. package/dist/types/modules/stream/base-transform.d.ts +1 -1
  617. package/dist/types/modules/stream/buffered-stream.d.ts +1 -1
  618. package/dist/types/modules/stream/index.browser.d.ts +8 -8
  619. package/dist/types/modules/stream/index.d.ts +8 -8
  620. package/dist/types/modules/stream/pull-stream.d.ts +1 -1
  621. package/dist/types/modules/stream/streams.browser.d.ts +4 -4
  622. package/dist/types/modules/stream/streams.d.ts +3 -3
  623. package/dist/types/modules/stream/utils.d.ts +1 -1
  624. package/dist/types/utils/utils.browser.d.ts +1 -1
  625. package/dist/types/utils/utils.d.ts +1 -1
  626. package/package.json +10 -6
  627. package/dist/browser/excelts.esm.js +0 -24621
  628. package/dist/browser/excelts.esm.js.map +0 -1
  629. package/dist/browser/excelts.esm.min.js +0 -148
  630. /package/dist/{browser → iife}/excelts.iife.js.map +0 -0
@@ -0,0 +1,814 @@
1
+ // oxlint-disable no-control-regex
2
+ /**
3
+ * Excel Cell Format Parser
4
+ * A simplified implementation for formatting cell values according to Excel numFmt patterns
5
+ * Supports: General, percentages, decimals, thousands separators, dates, currencies,
6
+ * scientific notation, fractions, elapsed time, and more
7
+ */
8
+ import { excelToDate } from "../../../utils/utils.browser.js";
9
+ // =============================================================================
10
+ // Built-in Format Table (Excel numFmtId to format string mapping)
11
+ // =============================================================================
12
+ const TABLE_FMT = {
13
+ 0: "General",
14
+ 1: "0",
15
+ 2: "0.00",
16
+ 3: "#,##0",
17
+ 4: "#,##0.00",
18
+ 9: "0%",
19
+ 10: "0.00%",
20
+ 11: "0.00E+00",
21
+ 12: "# ?/?",
22
+ 13: "# ??/??",
23
+ 14: "m/d/yy",
24
+ 15: "d-mmm-yy",
25
+ 16: "d-mmm",
26
+ 17: "mmm-yy",
27
+ 18: "h:mm AM/PM",
28
+ 19: "h:mm:ss AM/PM",
29
+ 20: "h:mm",
30
+ 21: "h:mm:ss",
31
+ 22: "m/d/yy h:mm",
32
+ 37: "#,##0 ;(#,##0)",
33
+ 38: "#,##0 ;[Red](#,##0)",
34
+ 39: "#,##0.00;(#,##0.00)",
35
+ 40: "#,##0.00;[Red](#,##0.00)",
36
+ 41: '_(* #,##0_);_(* (#,##0);_(* "-"_);_(@_)',
37
+ 42: '_($* #,##0_);_($* (#,##0);_($* "-"_);_(@_)',
38
+ 43: '_(* #,##0.00_);_(* (#,##0.00);_(* "-"??_);_(@_)',
39
+ 44: '_($* #,##0.00_);_($* (#,##0.00);_($* "-"??_);_(@_)',
40
+ 45: "mm:ss",
41
+ 46: "[h]:mm:ss",
42
+ 47: "mmss.0",
43
+ 48: "##0.0E+0",
44
+ 49: "@"
45
+ };
46
+ /**
47
+ * Default mapping for numFmtId that should map to other formats
48
+ * Based on Excel's behavior for certain format IDs
49
+ */
50
+ const DEFAULT_MAP = {
51
+ // 5 -> 37 ... 8 -> 40
52
+ 5: 37,
53
+ 6: 38,
54
+ 7: 39,
55
+ 8: 40,
56
+ // 23-26 -> 0
57
+ 23: 0,
58
+ 24: 0,
59
+ 25: 0,
60
+ 26: 0,
61
+ // 27-31 -> 14
62
+ 27: 14,
63
+ 28: 14,
64
+ 29: 14,
65
+ 30: 14,
66
+ 31: 14,
67
+ // 50-58 -> 14
68
+ 50: 14,
69
+ 51: 14,
70
+ 52: 14,
71
+ 53: 14,
72
+ 54: 14,
73
+ 55: 14,
74
+ 56: 14,
75
+ 57: 14,
76
+ 58: 14,
77
+ // 59-62 -> 1-4
78
+ 59: 1,
79
+ 60: 2,
80
+ 61: 3,
81
+ 62: 4,
82
+ // 67-68 -> 9-10
83
+ 67: 9,
84
+ 68: 10,
85
+ // 72-75 -> 14-17
86
+ 72: 14,
87
+ 73: 15,
88
+ 74: 16,
89
+ 75: 17,
90
+ // 76-78 -> 20-22
91
+ 76: 20,
92
+ 77: 21,
93
+ 78: 22,
94
+ // 79-81 -> 45-47
95
+ 79: 45,
96
+ 80: 46,
97
+ 81: 47
98
+ };
99
+ /**
100
+ * Get format string from numFmtId
101
+ * Handles default mappings for certain format IDs
102
+ */
103
+ export function getFormat(numFmtId) {
104
+ // Direct lookup first
105
+ if (TABLE_FMT[numFmtId]) {
106
+ return TABLE_FMT[numFmtId];
107
+ }
108
+ // Check default map
109
+ if (DEFAULT_MAP[numFmtId] !== undefined) {
110
+ return TABLE_FMT[DEFAULT_MAP[numFmtId]] || "General";
111
+ }
112
+ return "General";
113
+ }
114
+ // =============================================================================
115
+ // Helper Functions
116
+ // =============================================================================
117
+ /**
118
+ * Pad number with leading zeros
119
+ */
120
+ function pad0(num, len) {
121
+ let s = Math.round(num).toString();
122
+ while (s.length < len) {
123
+ s = "0" + s;
124
+ }
125
+ return s;
126
+ }
127
+ /**
128
+ * Add thousand separators to a number string
129
+ */
130
+ function commaify(s) {
131
+ const w = 3;
132
+ if (s.length <= w) {
133
+ return s;
134
+ }
135
+ const j = s.length % w;
136
+ let o = s.substring(0, j);
137
+ for (let i = j; i < s.length; i += w) {
138
+ o += (o.length > 0 ? "," : "") + s.substring(i, i + w);
139
+ }
140
+ return o;
141
+ }
142
+ /**
143
+ * Round a number to specified decimal places
144
+ */
145
+ function roundTo(val, decimals) {
146
+ const factor = Math.pow(10, decimals);
147
+ return Math.round(val * factor) / factor;
148
+ }
149
+ /**
150
+ * Process _ (underscore) placeholder - adds space with width of next character
151
+ * Process * (asterisk) placeholder - repeats next character to fill width (simplified to single char)
152
+ */
153
+ function processPlaceholders(fmt) {
154
+ // Replace _X with a space (skip next character, add space)
155
+ let result = fmt.replace(/_./g, " ");
156
+ // Replace *X with empty string (fill character, simplified)
157
+ result = result.replace(/\*./g, "");
158
+ return result;
159
+ }
160
+ // =============================================================================
161
+ // Format Detection
162
+ // =============================================================================
163
+ /**
164
+ * Check if format is "General"
165
+ */
166
+ function isGeneral(fmt) {
167
+ return /^General$/i.test(fmt.trim());
168
+ }
169
+ /**
170
+ * Check if format is a date format
171
+ */
172
+ function isDateFormat(fmt) {
173
+ // Remove color codes and conditions
174
+ const cleaned = fmt.replace(/\[[^\]]*\]/g, "");
175
+ // Check for date/time tokens (but not if it's just a number format with brackets)
176
+ return /[ymdhs]/i.test(cleaned) && !/^[#0.,E%$\s()\-+]+$/i.test(cleaned);
177
+ }
178
+ // =============================================================================
179
+ // Date Formatting
180
+ // =============================================================================
181
+ const MONTHS_SHORT = [
182
+ "Jan",
183
+ "Feb",
184
+ "Mar",
185
+ "Apr",
186
+ "May",
187
+ "Jun",
188
+ "Jul",
189
+ "Aug",
190
+ "Sep",
191
+ "Oct",
192
+ "Nov",
193
+ "Dec"
194
+ ];
195
+ const MONTHS_LONG = [
196
+ "January",
197
+ "February",
198
+ "March",
199
+ "April",
200
+ "May",
201
+ "June",
202
+ "July",
203
+ "August",
204
+ "September",
205
+ "October",
206
+ "November",
207
+ "December"
208
+ ];
209
+ // Single letter month abbreviation (J, F, M, A, M, J, J, A, S, O, N, D)
210
+ const MONTHS_LETTER = ["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"];
211
+ const DAYS_SHORT = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
212
+ const DAYS_LONG = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
213
+ /**
214
+ * Format a date value using Excel date format
215
+ * @param serial Excel serial number (days since 1900-01-01)
216
+ * @param fmt Format string
217
+ */
218
+ function formatDate(serial, fmt) {
219
+ // Extract time components directly from serial number (timezone-agnostic)
220
+ const totalSeconds = Math.round(serial * 86400);
221
+ const timeOfDay = totalSeconds % 86400;
222
+ const hours = Math.floor(timeOfDay / 3600);
223
+ const minutes = Math.floor((timeOfDay % 3600) / 60);
224
+ const seconds = timeOfDay % 60;
225
+ // For date components, use excelToDate but only for date parts
226
+ const date = excelToDate(serial, false);
227
+ const year = date.getUTCFullYear();
228
+ const month = date.getUTCMonth(); // 0-indexed
229
+ const day = date.getUTCDate();
230
+ const dayOfWeek = date.getUTCDay();
231
+ // Calculate fractional seconds from serial
232
+ const fractionalSeconds = serial * 86400 - Math.floor(serial * 86400);
233
+ // Check for AM/PM
234
+ const hasAmPm = /AM\/PM|A\/P/i.test(fmt);
235
+ const isPm = hours >= 12;
236
+ // Standard 12-hour format: 0 and 12 both display as 12
237
+ const hours12 = hours % 12 || 12;
238
+ // Remove color codes like [Red], [Green], etc. but keep elapsed time brackets
239
+ let result = fmt.replace(/\[(Red|Green|Blue|Yellow|Magenta|Cyan|White|Black|Color\d+)\]/gi, "");
240
+ // Process _ and * placeholders
241
+ result = processPlaceholders(result);
242
+ // Handle fractional seconds (ss.0, ss.00, ss.000)
243
+ const fracSecMatch = result.match(/ss\.(0+)/i);
244
+ let fracSecStr = "";
245
+ if (fracSecMatch) {
246
+ const decPlaces = fracSecMatch[1].length;
247
+ const fracPart = Math.round(fractionalSeconds * Math.pow(10, decPlaces));
248
+ fracSecStr = fracPart.toString().padStart(decPlaces, "0");
249
+ result = result.replace(/ss\.0+/gi, "\x00SF\x00");
250
+ }
251
+ // Process tokens - order matters! Longer patterns first.
252
+ // Use placeholder tokens to avoid re-matching
253
+ // Important: Use unique markers that don't contain the original pattern letters
254
+ // Year
255
+ result = result.replace(/yyyy/gi, "\x00Y4\x00");
256
+ result = result.replace(/yy/gi, "\x00Y2\x00");
257
+ // Month names (before numeric month) - order matters: longer patterns first
258
+ result = result.replace(/mmmmm/gi, "\x00MN5\x00"); // Single letter month
259
+ result = result.replace(/mmmm/gi, "\x00MN4\x00");
260
+ result = result.replace(/mmm/gi, "\x00MN3\x00");
261
+ // Day names (must be before dd and d)
262
+ result = result.replace(/dddd/gi, "\x00DN4\x00");
263
+ result = result.replace(/ddd/gi, "\x00DN3\x00");
264
+ // Day numbers
265
+ result = result.replace(/dd/gi, "\x00D2\x00");
266
+ result = result.replace(/\bd\b/gi, "\x00D1\x00");
267
+ // Hours
268
+ result = result.replace(/hh/gi, "\x00H2\x00");
269
+ result = result.replace(/\bh\b/gi, "\x00H1\x00");
270
+ // Seconds (before mm to avoid confusion)
271
+ result = result.replace(/ss/gi, "\x00S2\x00");
272
+ result = result.replace(/\bs\b/gi, "\x00S1\x00");
273
+ // Minutes/Month mm - context dependent
274
+ // If near h or s, it's minutes; otherwise month
275
+ // For simplicity, check if we already have hour tokens nearby
276
+ const hasTimeContext = /\x00H[12]\x00.*mm|mm.*\x00S[12]\x00/i.test(result);
277
+ if (hasTimeContext) {
278
+ result = result.replace(/mm/gi, "\x00MI2\x00");
279
+ }
280
+ else {
281
+ result = result.replace(/mm/gi, "\x00M2\x00");
282
+ }
283
+ result = result.replace(/\bm\b/gi, "\x00M1\x00");
284
+ // AM/PM
285
+ result = result.replace(/AM\/PM/gi, "\x00AMPM\x00");
286
+ result = result.replace(/A\/P/gi, "\x00AP\x00");
287
+ // Now replace placeholders with actual values
288
+ const hourVal = hasAmPm ? hours12 : hours;
289
+ result = result
290
+ .replace(/\x00Y4\x00/g, year.toString())
291
+ .replace(/\x00Y2\x00/g, (year % 100).toString().padStart(2, "0"))
292
+ .replace(/\x00MN5\x00/g, MONTHS_LETTER[month])
293
+ .replace(/\x00MN4\x00/g, MONTHS_LONG[month])
294
+ .replace(/\x00MN3\x00/g, MONTHS_SHORT[month])
295
+ .replace(/\x00M2\x00/g, (month + 1).toString().padStart(2, "0"))
296
+ .replace(/\x00M1\x00/g, (month + 1).toString())
297
+ .replace(/\x00DN4\x00/g, DAYS_LONG[dayOfWeek])
298
+ .replace(/\x00DN3\x00/g, DAYS_SHORT[dayOfWeek])
299
+ .replace(/\x00D2\x00/g, day.toString().padStart(2, "0"))
300
+ .replace(/\x00D1\x00/g, day.toString())
301
+ .replace(/\x00H2\x00/g, hourVal.toString().padStart(2, "0"))
302
+ .replace(/\x00H1\x00/g, hourVal.toString())
303
+ .replace(/\x00MI2\x00/g, minutes.toString().padStart(2, "0"))
304
+ .replace(/\x00S2\x00/g, seconds.toString().padStart(2, "0"))
305
+ .replace(/\x00S1\x00/g, seconds.toString())
306
+ .replace(/\x00SF\x00/g, seconds.toString().padStart(2, "0") + "." + fracSecStr)
307
+ .replace(/\x00AMPM\x00/g, isPm ? "PM" : "AM")
308
+ .replace(/\x00AP\x00/g, isPm ? "P" : "A");
309
+ // Clean up escape characters
310
+ result = result.replace(/\\/g, "");
311
+ return result;
312
+ }
313
+ // =============================================================================
314
+ // Number Formatting
315
+ // =============================================================================
316
+ /**
317
+ * Format a number using "General" format
318
+ */
319
+ function formatGeneral(val) {
320
+ if (typeof val === "boolean") {
321
+ return val ? "TRUE" : "FALSE";
322
+ }
323
+ if (typeof val === "string") {
324
+ return val;
325
+ }
326
+ // Number formatting - up to 11 significant digits
327
+ if (Number.isInteger(val)) {
328
+ return val.toString();
329
+ }
330
+ // For decimals, show up to 11 significant figures
331
+ const str = val.toPrecision(11);
332
+ // Remove trailing zeros after decimal point
333
+ return str.replace(/\.?0+$/, "").replace(/\.?0+e/, "e");
334
+ }
335
+ /**
336
+ * Format a percentage value
337
+ * @param val The decimal value (e.g., 0.25 for 25%)
338
+ * @param fmt The format string containing %
339
+ */
340
+ function formatPercentage(val, fmt) {
341
+ // Count % signs
342
+ const percentCount = (fmt.match(/%/g) || []).length;
343
+ // Multiply value by 100 for each %
344
+ const scaledVal = val * Math.pow(100, percentCount);
345
+ // Remove % from format to process the number part
346
+ const numFmt = fmt.replace(/%/g, "");
347
+ // Format the number part
348
+ const numStr = formatNumberPattern(scaledVal, numFmt || "0");
349
+ // Add back the % signs
350
+ return numStr + "%".repeat(percentCount);
351
+ }
352
+ /**
353
+ * Format a number in scientific notation
354
+ * @param val The number to format
355
+ * @param fmt The format string (e.g., "0.00E+00")
356
+ */
357
+ function formatScientific(val, fmt) {
358
+ const sign = val < 0 ? "-" : "";
359
+ const absVal = Math.abs(val);
360
+ if (absVal === 0) {
361
+ // Handle zero
362
+ const decMatch = fmt.match(/\.([0#]+)E/i);
363
+ const decPlaces = decMatch ? decMatch[1].length : 2;
364
+ return "0." + "0".repeat(decPlaces) + "E+00";
365
+ }
366
+ // Find decimal places from format
367
+ const decMatch = fmt.match(/\.([0#]+)E/i);
368
+ const decPlaces = decMatch ? decMatch[1].length : 2;
369
+ // Check if format has explicit +
370
+ const hasPlus = fmt.includes("E+");
371
+ // Calculate exponent
372
+ const exp = Math.floor(Math.log10(absVal));
373
+ const mantissa = absVal / Math.pow(10, exp);
374
+ // Round mantissa to specified decimal places
375
+ const roundedMantissa = roundTo(mantissa, decPlaces);
376
+ // Format mantissa
377
+ const mantissaStr = roundedMantissa.toFixed(decPlaces);
378
+ // Format exponent
379
+ const expSign = exp >= 0 ? (hasPlus ? "+" : "") : "-";
380
+ const expStr = pad0(Math.abs(exp), 2);
381
+ return sign + mantissaStr + "E" + expSign + expStr;
382
+ }
383
+ /**
384
+ * Convert decimal to fraction using continued fraction algorithm
385
+ */
386
+ function toFraction(val, maxDenom) {
387
+ const sign = val < 0 ? -1 : 1;
388
+ let absVal = Math.abs(val);
389
+ const whole = Math.floor(absVal);
390
+ absVal -= whole;
391
+ if (absVal < 1e-10) {
392
+ return [sign * whole, 0, 1];
393
+ }
394
+ let p0 = 0, p1 = 1;
395
+ let q0 = 1, q1 = 0;
396
+ let a = Math.floor(absVal);
397
+ let p = a;
398
+ let q = 1;
399
+ while (q1 < maxDenom) {
400
+ a = Math.floor(absVal);
401
+ p = a * p1 + p0;
402
+ q = a * q1 + q0;
403
+ if (absVal - a < 1e-10) {
404
+ break;
405
+ }
406
+ absVal = 1 / (absVal - a);
407
+ p0 = p1;
408
+ p1 = p;
409
+ q0 = q1;
410
+ q1 = q;
411
+ }
412
+ if (q > maxDenom) {
413
+ q = q1;
414
+ p = p1;
415
+ }
416
+ return [sign * whole, sign * p, q];
417
+ }
418
+ /**
419
+ * Format a number as a fraction
420
+ * @param val The number to format
421
+ * @param fmt The format string (e.g., "# ?/?", "# ??/??")
422
+ */
423
+ function formatFraction(val, fmt) {
424
+ const sign = val < 0 ? "-" : "";
425
+ const absVal = Math.abs(val);
426
+ // Check for fixed denominator (e.g., "# ?/8")
427
+ const fixedDenomMatch = fmt.match(/\?+\s*\/\s*(\d+)/);
428
+ if (fixedDenomMatch) {
429
+ const denom = parseInt(fixedDenomMatch[1], 10);
430
+ const whole = Math.floor(absVal);
431
+ const frac = absVal - whole;
432
+ const numer = Math.round(frac * denom);
433
+ if (fmt.includes("#") || fmt.includes("0")) {
434
+ // Mixed fraction
435
+ if (numer === 0) {
436
+ return sign + whole.toString();
437
+ }
438
+ return sign + (whole > 0 ? whole + " " : "") + numer + "/" + denom;
439
+ }
440
+ // Simple fraction
441
+ return sign + (whole * denom + numer) + "/" + denom;
442
+ }
443
+ // Variable denominator - count ? to determine max digits
444
+ const denomMatch = fmt.match(/\/\s*(\?+)/);
445
+ const maxDigits = denomMatch ? denomMatch[1].length : 2;
446
+ const maxDenom = Math.pow(10, maxDigits) - 1;
447
+ const [whole, numer, denom] = toFraction(absVal, maxDenom);
448
+ // Format based on whether we want mixed or improper fraction
449
+ if (fmt.includes("#") && whole !== 0) {
450
+ if (numer === 0) {
451
+ return sign + Math.abs(whole).toString();
452
+ }
453
+ return sign + Math.abs(whole) + " " + Math.abs(numer) + "/" + denom;
454
+ }
455
+ if (numer === 0) {
456
+ return whole === 0 ? "0" : sign + Math.abs(whole).toString();
457
+ }
458
+ // Improper fraction
459
+ const totalNumer = Math.abs(whole) * denom + Math.abs(numer);
460
+ return sign + totalNumer + "/" + denom;
461
+ }
462
+ /**
463
+ * Format elapsed time (e.g., [h]:mm:ss for durations > 24 hours)
464
+ */
465
+ function formatElapsedTime(serial, fmt) {
466
+ // serial is in days, convert to components
467
+ const totalSeconds = Math.round(serial * 86400);
468
+ const totalMinutes = Math.floor(totalSeconds / 60);
469
+ const totalHours = Math.floor(totalMinutes / 60);
470
+ const seconds = totalSeconds % 60;
471
+ const minutes = totalMinutes % 60;
472
+ const hours = totalHours;
473
+ let result = fmt;
474
+ // Replace elapsed time tokens
475
+ if (/\[h+\]/i.test(result)) {
476
+ result = result.replace(/\[h+\]/gi, hours.toString());
477
+ }
478
+ if (/\[m+\]/i.test(result)) {
479
+ result = result.replace(/\[m+\]/gi, totalMinutes.toString());
480
+ }
481
+ if (/\[s+\]/i.test(result)) {
482
+ result = result.replace(/\[s+\]/gi, totalSeconds.toString());
483
+ }
484
+ // Replace regular time tokens
485
+ result = result.replace(/mm/gi, minutes.toString().padStart(2, "0"));
486
+ result = result.replace(/ss/gi, seconds.toString().padStart(2, "0"));
487
+ return result;
488
+ }
489
+ /**
490
+ * Format a number with the given pattern
491
+ * Handles patterns like "0", "00", "#,##0", "0-0", "000-0000" etc.
492
+ */
493
+ function formatNumberPattern(val, fmt) {
494
+ const absVal = Math.abs(val);
495
+ const sign = val < 0 ? "-" : "";
496
+ // Handle trailing commas (divide by 1000 for each)
497
+ let trailingCommas = 0;
498
+ let workFmt = fmt;
499
+ while (workFmt.endsWith(",")) {
500
+ trailingCommas++;
501
+ workFmt = workFmt.slice(0, -1);
502
+ }
503
+ const scaledVal = absVal / Math.pow(1000, trailingCommas);
504
+ // Check for decimal point
505
+ const decimalIdx = workFmt.indexOf(".");
506
+ let intFmt = workFmt;
507
+ let decFmt = "";
508
+ if (decimalIdx !== -1) {
509
+ intFmt = workFmt.substring(0, decimalIdx);
510
+ decFmt = workFmt.substring(decimalIdx + 1);
511
+ }
512
+ // Count decimal places needed
513
+ const decimalPlaces = decFmt.replace(/[^0#?]/g, "").length;
514
+ // Round the value
515
+ const roundedVal = roundTo(scaledVal, decimalPlaces);
516
+ // Split into integer and decimal parts
517
+ const [intPart, decPart = ""] = roundedVal.toString().split(".");
518
+ // Check if format has literal characters mixed with digit placeholders (like "0-0", "000-0000")
519
+ // This is used for phone numbers, SSN, etc.
520
+ const hasLiteralInFormat = /[0#?][^0#?,.\s][0#?]/.test(intFmt);
521
+ let formattedInt;
522
+ if (hasLiteralInFormat) {
523
+ // Handle pattern with literals like "0-0", "000-0000", "00-00-00"
524
+ // Count total digit placeholders
525
+ const digitPlaceholders = intFmt.replace(/[^0#?]/g, "").length;
526
+ // Pad the number to match the digit placeholder count
527
+ let digits = intPart;
528
+ if (digits.length < digitPlaceholders) {
529
+ digits = "0".repeat(digitPlaceholders - digits.length) + digits;
530
+ }
531
+ // Build result by replacing placeholders with digits
532
+ formattedInt = "";
533
+ let digitIndex = digits.length - digitPlaceholders; // start position in digits string
534
+ for (let i = 0; i < intFmt.length; i++) {
535
+ const char = intFmt[i];
536
+ if (char === "0" || char === "#" || char === "?") {
537
+ if (digitIndex < digits.length) {
538
+ formattedInt += digits[digitIndex];
539
+ digitIndex++;
540
+ }
541
+ }
542
+ else if (char !== ",") {
543
+ // Literal character (like -, /, space, etc.) - but not comma (thousand separator)
544
+ formattedInt += char;
545
+ }
546
+ }
547
+ }
548
+ else {
549
+ // Standard number formatting
550
+ formattedInt = intPart;
551
+ // Add thousand separators if format has them
552
+ if (intFmt.includes(",")) {
553
+ formattedInt = commaify(intPart);
554
+ }
555
+ // Pad integer with leading zeros if needed
556
+ const minIntDigits = (intFmt.match(/0/g) || []).length;
557
+ if (formattedInt.length < minIntDigits) {
558
+ formattedInt = "0".repeat(minIntDigits - formattedInt.length) + formattedInt;
559
+ }
560
+ }
561
+ // Format decimal part
562
+ let formattedDec = "";
563
+ if (decimalPlaces > 0) {
564
+ formattedDec = "." + (decPart + "0".repeat(decimalPlaces)).substring(0, decimalPlaces);
565
+ }
566
+ return sign + formattedInt + formattedDec;
567
+ }
568
+ // =============================================================================
569
+ // Main Format Function
570
+ // =============================================================================
571
+ /**
572
+ * Remove quoted literal text markers and return the literal characters
573
+ * Also handles backslash escape sequences
574
+ */
575
+ function processQuotedText(fmt) {
576
+ let result = "";
577
+ let i = 0;
578
+ while (i < fmt.length) {
579
+ if (fmt[i] === '"') {
580
+ // Find closing quote
581
+ i++;
582
+ while (i < fmt.length && fmt[i] !== '"') {
583
+ result += fmt[i];
584
+ i++;
585
+ }
586
+ i++; // skip closing quote
587
+ }
588
+ else if (fmt[i] === "\\" && i + 1 < fmt.length) {
589
+ // Backslash escapes the next character
590
+ i++;
591
+ result += fmt[i];
592
+ i++;
593
+ }
594
+ else {
595
+ result += fmt[i];
596
+ i++;
597
+ }
598
+ }
599
+ return result;
600
+ }
601
+ /**
602
+ * Check if a condition matches (e.g., [>100], [<=50])
603
+ */
604
+ function checkCondition(val, condition) {
605
+ const match = condition.match(/\[(=|>|<|>=|<=|<>)(-?\d+(?:\.\d*)?)\]/);
606
+ if (!match) {
607
+ return false;
608
+ }
609
+ const op = match[1];
610
+ const threshold = parseFloat(match[2]);
611
+ switch (op) {
612
+ case "=":
613
+ return val === threshold;
614
+ case ">":
615
+ return val > threshold;
616
+ case "<":
617
+ return val < threshold;
618
+ case ">=":
619
+ return val >= threshold;
620
+ case "<=":
621
+ return val <= threshold;
622
+ case "<>":
623
+ return val !== threshold;
624
+ default:
625
+ return false;
626
+ }
627
+ }
628
+ /**
629
+ * Parse format string and handle positive/negative/zero/text sections
630
+ * Excel format: positive;negative;zero;text
631
+ * Also handles conditional formats like [>100]
632
+ */
633
+ function chooseFormat(fmt, val) {
634
+ if (typeof val === "string") {
635
+ // For text, use the 4th section if available, or just return as-is
636
+ const sections = splitFormat(fmt);
637
+ if (sections.length >= 4 && sections[3]) {
638
+ // Process quoted text and replace @ with the value
639
+ const textFmt = processQuotedText(sections[3]);
640
+ return textFmt.replace(/@/g, val);
641
+ }
642
+ return val;
643
+ }
644
+ if (typeof val === "boolean") {
645
+ return val ? "TRUE" : "FALSE";
646
+ }
647
+ const sections = splitFormat(fmt);
648
+ // Check for conditional format in sections
649
+ const condRegex = /\[(=|>|<|>=|<=|<>)-?\d+(?:\.\d*)?\]/;
650
+ const hasCondition = (sections[0] && condRegex.test(sections[0])) || (sections[1] && condRegex.test(sections[1]));
651
+ if (hasCondition && sections.length >= 2) {
652
+ // Conditional format: check each section's condition
653
+ for (let i = 0; i < Math.min(sections.length, 2); i++) {
654
+ const condMatch = sections[i].match(/\[(=|>|<|>=|<=|<>)-?\d+(?:\.\d*)?\]/);
655
+ if (condMatch && checkCondition(val, condMatch[0])) {
656
+ return sections[i];
657
+ }
658
+ }
659
+ // No condition matched, use last section
660
+ return sections[sections.length > 2 ? 2 : 1];
661
+ }
662
+ if (sections.length === 1) {
663
+ return sections[0];
664
+ }
665
+ if (sections.length === 2) {
666
+ // positive/zero; negative
667
+ return val >= 0 ? sections[0] : sections[1];
668
+ }
669
+ // 3+ sections: positive; negative; zero
670
+ if (val > 0) {
671
+ return sections[0];
672
+ }
673
+ if (val < 0) {
674
+ return sections[1];
675
+ }
676
+ return sections[2] || sections[0];
677
+ }
678
+ /**
679
+ * Check if format section is for negative values (2nd section in multi-section format)
680
+ */
681
+ function isNegativeSection(fmt, selectedFmt) {
682
+ const sections = splitFormat(fmt);
683
+ return sections.length >= 2 && sections[1] === selectedFmt;
684
+ }
685
+ /**
686
+ * Split format string by semicolons, respecting quoted strings and brackets
687
+ */
688
+ function splitFormat(fmt) {
689
+ const sections = [];
690
+ let current = "";
691
+ let inQuote = false;
692
+ let inBracket = false;
693
+ for (let i = 0; i < fmt.length; i++) {
694
+ const char = fmt[i];
695
+ if (char === '"' && !inBracket) {
696
+ inQuote = !inQuote;
697
+ current += char;
698
+ }
699
+ else if (char === "[" && !inQuote) {
700
+ inBracket = true;
701
+ current += char;
702
+ }
703
+ else if (char === "]" && !inQuote) {
704
+ inBracket = false;
705
+ current += char;
706
+ }
707
+ else if (char === ";" && !inQuote && !inBracket) {
708
+ sections.push(current);
709
+ current = "";
710
+ }
711
+ else {
712
+ current += char;
713
+ }
714
+ }
715
+ sections.push(current);
716
+ return sections;
717
+ }
718
+ /**
719
+ * Main format function - formats a value according to Excel numFmt
720
+ * @param fmt The Excel number format string (e.g., "0.00%", "#,##0", "yyyy-mm-dd")
721
+ * @param val The value to format
722
+ */
723
+ export function format(fmt, val) {
724
+ // Handle null/undefined
725
+ if (val == null) {
726
+ return "";
727
+ }
728
+ // Handle General format
729
+ if (isGeneral(fmt)) {
730
+ return formatGeneral(val);
731
+ }
732
+ // Handle string values
733
+ if (typeof val === "string") {
734
+ return chooseFormat(fmt, val);
735
+ }
736
+ // Handle boolean values
737
+ if (typeof val === "boolean") {
738
+ return val ? "TRUE" : "FALSE";
739
+ }
740
+ // Now val is a number
741
+ let numVal = val;
742
+ // Choose the right format section based on value
743
+ const selectedFmt = chooseFormat(fmt, numVal);
744
+ // If negative section is selected, use absolute value (format handles display)
745
+ if (numVal < 0 && isNegativeSection(fmt, selectedFmt)) {
746
+ numVal = Math.abs(numVal);
747
+ }
748
+ // Remove color codes like [Red], [Green], [Blue], etc.
749
+ let cleanFmt = selectedFmt.replace(/\[(Red|Green|Blue|Yellow|Magenta|Cyan|White|Black|Color\d+)\]/gi, "");
750
+ // Remove condition codes like [>100], [<=50], etc.
751
+ cleanFmt = cleanFmt.replace(/\[(>|<|>=|<=|=|<>)-?\d+(\.\d+)?\]/g, "");
752
+ // Remove locale codes like [$-804], [$€-407], etc.
753
+ cleanFmt = cleanFmt.replace(/\[\$[^\]]*\]/g, "");
754
+ // Process _ and * placeholders
755
+ cleanFmt = processPlaceholders(cleanFmt);
756
+ // Process quoted text
757
+ cleanFmt = processQuotedText(cleanFmt);
758
+ // Check for elapsed time format [h]:mm:ss, [m]:ss, [s]
759
+ if (/\[[hms]+\]/i.test(cleanFmt)) {
760
+ return formatElapsedTime(numVal, cleanFmt);
761
+ }
762
+ // Check if this is a date format
763
+ if (isDateFormat(cleanFmt)) {
764
+ return formatDate(numVal, cleanFmt);
765
+ }
766
+ // Check for percentage
767
+ if (cleanFmt.includes("%")) {
768
+ return formatPercentage(numVal, cleanFmt);
769
+ }
770
+ // Check for scientific notation
771
+ if (/E[+-]?/i.test(cleanFmt)) {
772
+ return formatScientific(numVal, cleanFmt);
773
+ }
774
+ // Check for fraction format
775
+ if (/\?+\s*\/\s*[\d?]+/.test(cleanFmt)) {
776
+ return formatFraction(numVal, cleanFmt);
777
+ }
778
+ // Handle negative numbers in parentheses format
779
+ if (cleanFmt.includes("(") && cleanFmt.includes(")") && numVal < 0) {
780
+ const innerFmt = cleanFmt.replace(/\(|\)/g, "");
781
+ return "(" + formatNumberPattern(-numVal, innerFmt) + ")";
782
+ }
783
+ // Handle text placeholder @
784
+ if (cleanFmt === "@") {
785
+ return numVal.toString();
786
+ }
787
+ // Handle currency symbol and literal text prefix/suffix
788
+ let prefix = "";
789
+ let suffix = "";
790
+ // Extract currency/text prefix (includes $, ¥, €, etc. and quoted text)
791
+ const prefixMatch = cleanFmt.match(/^([^#0?.,]+)/);
792
+ if (prefixMatch) {
793
+ prefix = prefixMatch[1];
794
+ cleanFmt = cleanFmt.substring(prefixMatch[0].length);
795
+ }
796
+ // Extract suffix
797
+ const suffixMatch = cleanFmt.match(/([^#0?.,]+)$/);
798
+ if (suffixMatch && !suffixMatch[1].includes("%")) {
799
+ suffix = suffixMatch[1];
800
+ cleanFmt = cleanFmt.substring(0, cleanFmt.length - suffixMatch[0].length);
801
+ }
802
+ // Format the number
803
+ const formattedNum = formatNumberPattern(numVal, cleanFmt);
804
+ return prefix + formattedNum + suffix;
805
+ }
806
+ // =============================================================================
807
+ // Export
808
+ // =============================================================================
809
+ export const cellFormat = {
810
+ format,
811
+ getFormat,
812
+ isDateFormat,
813
+ isGeneral
814
+ };