@rowsncolumns/toolkit 24.4.1

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 (456) hide show
  1. package/LICENSE.md +100 -0
  2. package/Readme.md +27 -0
  3. package/dist/cjs/autofilter-condition.d.ts +43 -0
  4. package/dist/cjs/autofilter-condition.d.ts.map +1 -0
  5. package/dist/cjs/autofilter-condition.js +155 -0
  6. package/dist/cjs/csv-export.d.ts +49 -0
  7. package/dist/cjs/csv-export.d.ts.map +1 -0
  8. package/dist/cjs/csv-export.js +142 -0
  9. package/dist/cjs/csv-import-worker.d.ts +16 -0
  10. package/dist/cjs/csv-import-worker.d.ts.map +1 -0
  11. package/dist/cjs/csv-import-worker.js +60 -0
  12. package/dist/cjs/csv-import.d.ts +38 -0
  13. package/dist/cjs/csv-import.d.ts.map +1 -0
  14. package/dist/cjs/csv-import.js +166 -0
  15. package/dist/cjs/csv-parser/helpers.d.ts +14 -0
  16. package/dist/cjs/csv-parser/helpers.d.ts.map +1 -0
  17. package/dist/cjs/csv-parser/helpers.js +145 -0
  18. package/dist/cjs/csv-parser/types.d.ts +66 -0
  19. package/dist/cjs/csv-parser/types.d.ts.map +1 -0
  20. package/dist/cjs/csv-parser/types.js +14 -0
  21. package/dist/cjs/csv-parser/worker.d.ts +2 -0
  22. package/dist/cjs/csv-parser/worker.d.ts.map +1 -0
  23. package/dist/cjs/csv-parser/worker.js +200 -0
  24. package/dist/cjs/excel-export.d.ts +11 -0
  25. package/dist/cjs/excel-export.d.ts.map +1 -0
  26. package/dist/cjs/excel-export.js +22 -0
  27. package/dist/cjs/excel-import-session.d.ts +51 -0
  28. package/dist/cjs/excel-import-session.d.ts.map +1 -0
  29. package/dist/cjs/excel-import-session.js +307 -0
  30. package/dist/cjs/excel-import-worker.d.ts +7 -0
  31. package/dist/cjs/excel-import-worker.d.ts.map +1 -0
  32. package/dist/cjs/excel-import-worker.js +119 -0
  33. package/dist/cjs/excel-parser/builtin-numfmts.d.ts +24 -0
  34. package/dist/cjs/excel-parser/builtin-numfmts.d.ts.map +1 -0
  35. package/dist/cjs/excel-parser/builtin-numfmts.js +63 -0
  36. package/dist/cjs/excel-parser/cfb-decryptor.d.ts +53 -0
  37. package/dist/cjs/excel-parser/cfb-decryptor.d.ts.map +1 -0
  38. package/dist/cjs/excel-parser/cfb-decryptor.js +553 -0
  39. package/dist/cjs/excel-parser/cfb-encryptor.d.ts +23 -0
  40. package/dist/cjs/excel-parser/cfb-encryptor.d.ts.map +1 -0
  41. package/dist/cjs/excel-parser/cfb-encryptor.js +200 -0
  42. package/dist/cjs/excel-parser/dv-cell-stamp.d.ts +29 -0
  43. package/dist/cjs/excel-parser/dv-cell-stamp.d.ts.map +1 -0
  44. package/dist/cjs/excel-parser/dv-cell-stamp.js +239 -0
  45. package/dist/cjs/excel-parser/helpers.d.ts +28 -0
  46. package/dist/cjs/excel-parser/helpers.d.ts.map +1 -0
  47. package/dist/cjs/excel-parser/helpers.js +188 -0
  48. package/dist/cjs/excel-parser/interface.d.ts +179 -0
  49. package/dist/cjs/excel-parser/interface.d.ts.map +1 -0
  50. package/dist/cjs/excel-parser/interface.js +1 -0
  51. package/dist/cjs/excel-parser/plugins/base/index.d.ts +31 -0
  52. package/dist/cjs/excel-parser/plugins/base/index.d.ts.map +1 -0
  53. package/dist/cjs/excel-parser/plugins/base/index.js +101 -0
  54. package/dist/cjs/excel-parser/plugins/ods/conditional-formatting.d.ts +16 -0
  55. package/dist/cjs/excel-parser/plugins/ods/conditional-formatting.d.ts.map +1 -0
  56. package/dist/cjs/excel-parser/plugins/ods/conditional-formatting.js +488 -0
  57. package/dist/cjs/excel-parser/plugins/ods/data-validations.d.ts +15 -0
  58. package/dist/cjs/excel-parser/plugins/ods/data-validations.d.ts.map +1 -0
  59. package/dist/cjs/excel-parser/plugins/ods/data-validations.js +353 -0
  60. package/dist/cjs/excel-parser/plugins/ods/formula.d.ts +8 -0
  61. package/dist/cjs/excel-parser/plugins/ods/formula.d.ts.map +1 -0
  62. package/dist/cjs/excel-parser/plugins/ods/formula.js +82 -0
  63. package/dist/cjs/excel-parser/plugins/ods/index.d.ts +122 -0
  64. package/dist/cjs/excel-parser/plugins/ods/index.d.ts.map +1 -0
  65. package/dist/cjs/excel-parser/plugins/ods/index.js +3642 -0
  66. package/dist/cjs/excel-parser/plugins/ods/sparklines.d.ts +25 -0
  67. package/dist/cjs/excel-parser/plugins/ods/sparklines.d.ts.map +1 -0
  68. package/dist/cjs/excel-parser/plugins/ods/sparklines.js +221 -0
  69. package/dist/cjs/excel-parser/plugins/ods/styles.d.ts +60 -0
  70. package/dist/cjs/excel-parser/plugins/ods/styles.d.ts.map +1 -0
  71. package/dist/cjs/excel-parser/plugins/ods/styles.js +808 -0
  72. package/dist/cjs/excel-parser/plugins/ods/types.d.ts +7 -0
  73. package/dist/cjs/excel-parser/plugins/ods/types.d.ts.map +1 -0
  74. package/dist/cjs/excel-parser/plugins/ods/types.js +1 -0
  75. package/dist/cjs/excel-parser/plugins/xls/index.d.ts +5 -0
  76. package/dist/cjs/excel-parser/plugins/xls/index.d.ts.map +1 -0
  77. package/dist/cjs/excel-parser/plugins/xls/index.js +19 -0
  78. package/dist/cjs/excel-parser/plugins/xlsb/biff-record-reader.d.ts +13 -0
  79. package/dist/cjs/excel-parser/plugins/xlsb/biff-record-reader.d.ts.map +1 -0
  80. package/dist/cjs/excel-parser/plugins/xlsb/biff-record-reader.js +49 -0
  81. package/dist/cjs/excel-parser/plugins/xlsb/index.d.ts +117 -0
  82. package/dist/cjs/excel-parser/plugins/xlsb/index.d.ts.map +1 -0
  83. package/dist/cjs/excel-parser/plugins/xlsb/index.js +2972 -0
  84. package/dist/cjs/excel-parser/plugins/xlsb/rgce-parser.d.ts +18 -0
  85. package/dist/cjs/excel-parser/plugins/xlsb/rgce-parser.d.ts.map +1 -0
  86. package/dist/cjs/excel-parser/plugins/xlsb/rgce-parser.js +527 -0
  87. package/dist/cjs/excel-parser/plugins/xlsm/index.d.ts +5 -0
  88. package/dist/cjs/excel-parser/plugins/xlsm/index.d.ts.map +1 -0
  89. package/dist/cjs/excel-parser/plugins/xlsm/index.js +10 -0
  90. package/dist/cjs/excel-parser/plugins/xlsx/charts.d.ts +60 -0
  91. package/dist/cjs/excel-parser/plugins/xlsx/charts.d.ts.map +1 -0
  92. package/dist/cjs/excel-parser/plugins/xlsx/charts.js +2178 -0
  93. package/dist/cjs/excel-parser/plugins/xlsx/conditional-formatting.d.ts +18 -0
  94. package/dist/cjs/excel-parser/plugins/xlsx/conditional-formatting.d.ts.map +1 -0
  95. package/dist/cjs/excel-parser/plugins/xlsx/conditional-formatting.js +620 -0
  96. package/dist/cjs/excel-parser/plugins/xlsx/data-validations.d.ts +4 -0
  97. package/dist/cjs/excel-parser/plugins/xlsx/data-validations.d.ts.map +1 -0
  98. package/dist/cjs/excel-parser/plugins/xlsx/data-validations.js +515 -0
  99. package/dist/cjs/excel-parser/plugins/xlsx/drawing.d.ts +39 -0
  100. package/dist/cjs/excel-parser/plugins/xlsx/drawing.d.ts.map +1 -0
  101. package/dist/cjs/excel-parser/plugins/xlsx/drawing.js +941 -0
  102. package/dist/cjs/excel-parser/plugins/xlsx/index.d.ts +320 -0
  103. package/dist/cjs/excel-parser/plugins/xlsx/index.d.ts.map +1 -0
  104. package/dist/cjs/excel-parser/plugins/xlsx/index.js +6056 -0
  105. package/dist/cjs/excel-parser/plugins/xlsx/numfmt.d.ts +2 -0
  106. package/dist/cjs/excel-parser/plugins/xlsx/numfmt.d.ts.map +1 -0
  107. package/dist/cjs/excel-parser/plugins/xlsx/numfmt.js +3 -0
  108. package/dist/cjs/excel-parser/plugins/xlsx/pivots.d.ts +40 -0
  109. package/dist/cjs/excel-parser/plugins/xlsx/pivots.d.ts.map +1 -0
  110. package/dist/cjs/excel-parser/plugins/xlsx/pivots.js +342 -0
  111. package/dist/cjs/excel-parser/plugins/xlsx/relationships.d.ts +8 -0
  112. package/dist/cjs/excel-parser/plugins/xlsx/relationships.d.ts.map +1 -0
  113. package/dist/cjs/excel-parser/plugins/xlsx/relationships.js +26 -0
  114. package/dist/cjs/excel-parser/plugins/xlsx/sheet-views.d.ts +26 -0
  115. package/dist/cjs/excel-parser/plugins/xlsx/sheet-views.d.ts.map +1 -0
  116. package/dist/cjs/excel-parser/plugins/xlsx/sheet-views.js +59 -0
  117. package/dist/cjs/excel-parser/plugins/xlsx/styles.d.ts +44 -0
  118. package/dist/cjs/excel-parser/plugins/xlsx/styles.d.ts.map +1 -0
  119. package/dist/cjs/excel-parser/plugins/xlsx/styles.js +1377 -0
  120. package/dist/cjs/excel-parser/plugins/xlsx/theme.d.ts +50 -0
  121. package/dist/cjs/excel-parser/plugins/xlsx/theme.d.ts.map +1 -0
  122. package/dist/cjs/excel-parser/plugins/xlsx/theme.js +150 -0
  123. package/dist/cjs/excel-parser/plugins/xlsx/threaded-comments.d.ts +47 -0
  124. package/dist/cjs/excel-parser/plugins/xlsx/threaded-comments.d.ts.map +1 -0
  125. package/dist/cjs/excel-parser/plugins/xlsx/threaded-comments.js +141 -0
  126. package/dist/cjs/excel-parser/plugins/xlsx/value-type-detection.d.ts +44 -0
  127. package/dist/cjs/excel-parser/plugins/xlsx/value-type-detection.d.ts.map +1 -0
  128. package/dist/cjs/excel-parser/plugins/xlsx/value-type-detection.js +407 -0
  129. package/dist/cjs/excel-parser/registry.d.ts +5 -0
  130. package/dist/cjs/excel-parser/registry.d.ts.map +1 -0
  131. package/dist/cjs/excel-parser/registry.js +21 -0
  132. package/dist/cjs/excel-parser/style-registry.d.ts +51 -0
  133. package/dist/cjs/excel-parser/style-registry.d.ts.map +1 -0
  134. package/dist/cjs/excel-parser/style-registry.js +175 -0
  135. package/dist/cjs/excel-parser/theme-default.d.ts +3 -0
  136. package/dist/cjs/excel-parser/theme-default.d.ts.map +1 -0
  137. package/dist/cjs/excel-parser/theme-default.js +19 -0
  138. package/dist/cjs/excel-parser/types.d.ts +365 -0
  139. package/dist/cjs/excel-parser/types.d.ts.map +1 -0
  140. package/dist/cjs/excel-parser/types.js +59 -0
  141. package/dist/cjs/excel-parser/utils.d.ts +6 -0
  142. package/dist/cjs/excel-parser/utils.d.ts.map +1 -0
  143. package/dist/cjs/excel-parser/utils.js +30 -0
  144. package/dist/cjs/excel-parser/workbook.d.ts +51 -0
  145. package/dist/cjs/excel-parser/workbook.d.ts.map +1 -0
  146. package/dist/cjs/excel-parser/workbook.js +317 -0
  147. package/dist/cjs/excel-parser/worker.d.ts +2 -0
  148. package/dist/cjs/excel-parser/worker.d.ts.map +1 -0
  149. package/dist/cjs/excel-parser/worker.js +1149 -0
  150. package/dist/cjs/excel-parser/zip-parser-streaming.d.ts +13 -0
  151. package/dist/cjs/excel-parser/zip-parser-streaming.d.ts.map +1 -0
  152. package/dist/cjs/excel-parser/zip-parser-streaming.js +200 -0
  153. package/dist/cjs/excel-parser/zip-parser.d.ts +11 -0
  154. package/dist/cjs/excel-parser/zip-parser.d.ts.map +1 -0
  155. package/dist/cjs/excel-parser/zip-parser.js +49 -0
  156. package/dist/cjs/exporter/invalid-data-validation.d.ts +19 -0
  157. package/dist/cjs/exporter/invalid-data-validation.d.ts.map +1 -0
  158. package/dist/cjs/exporter/invalid-data-validation.js +39 -0
  159. package/dist/cjs/exporter/ods/ods-export.d.ts +26 -0
  160. package/dist/cjs/exporter/ods/ods-export.d.ts.map +1 -0
  161. package/dist/cjs/exporter/ods/ods-export.js +3714 -0
  162. package/dist/cjs/exporter/ods/sparkline-builder.d.ts +33 -0
  163. package/dist/cjs/exporter/ods/sparkline-builder.d.ts.map +1 -0
  164. package/dist/cjs/exporter/ods/sparkline-builder.js +221 -0
  165. package/dist/cjs/exporter/xlsx/chart-builder.d.ts +3 -0
  166. package/dist/cjs/exporter/xlsx/chart-builder.d.ts.map +1 -0
  167. package/dist/cjs/exporter/xlsx/chart-builder.js +1901 -0
  168. package/dist/cjs/exporter/xlsx/chart-templates.d.ts +1781 -0
  169. package/dist/cjs/exporter/xlsx/chart-templates.d.ts.map +1 -0
  170. package/dist/cjs/exporter/xlsx/chart-templates.js +1798 -0
  171. package/dist/cjs/exporter/xlsx/future-functions.d.ts +10 -0
  172. package/dist/cjs/exporter/xlsx/future-functions.d.ts.map +1 -0
  173. package/dist/cjs/exporter/xlsx/future-functions.js +264 -0
  174. package/dist/cjs/exporter/xlsx/pivot-builder.d.ts +58 -0
  175. package/dist/cjs/exporter/xlsx/pivot-builder.d.ts.map +1 -0
  176. package/dist/cjs/exporter/xlsx/pivot-builder.js +277 -0
  177. package/dist/cjs/exporter/xlsx/power-query-builder.d.ts +26 -0
  178. package/dist/cjs/exporter/xlsx/power-query-builder.d.ts.map +1 -0
  179. package/dist/cjs/exporter/xlsx/power-query-builder.js +306 -0
  180. package/dist/cjs/exporter/xlsx/slicer-builder.d.ts +11 -0
  181. package/dist/cjs/exporter/xlsx/slicer-builder.d.ts.map +1 -0
  182. package/dist/cjs/exporter/xlsx/slicer-builder.js +87 -0
  183. package/dist/cjs/exporter/xlsx/sparkline-builder.d.ts +61 -0
  184. package/dist/cjs/exporter/xlsx/sparkline-builder.d.ts.map +1 -0
  185. package/dist/cjs/exporter/xlsx/sparkline-builder.js +489 -0
  186. package/dist/cjs/exporter/xlsx/style-builder.d.ts +93 -0
  187. package/dist/cjs/exporter/xlsx/style-builder.d.ts.map +1 -0
  188. package/dist/cjs/exporter/xlsx/style-builder.js +813 -0
  189. package/dist/cjs/exporter/xlsx/threaded-comments-builder.d.ts +58 -0
  190. package/dist/cjs/exporter/xlsx/threaded-comments-builder.d.ts.map +1 -0
  191. package/dist/cjs/exporter/xlsx/threaded-comments-builder.js +189 -0
  192. package/dist/cjs/exporter/xlsx/xlsx-export.d.ts +121 -0
  193. package/dist/cjs/exporter/xlsx/xlsx-export.d.ts.map +1 -0
  194. package/dist/cjs/exporter/xlsx/xlsx-export.js +4596 -0
  195. package/dist/cjs/helpers/theme-xml-generator.d.ts +8 -0
  196. package/dist/cjs/helpers/theme-xml-generator.d.ts.map +1 -0
  197. package/dist/cjs/helpers/theme-xml-generator.js +33 -0
  198. package/dist/cjs/helpers.d.ts +34 -0
  199. package/dist/cjs/helpers.d.ts.map +1 -0
  200. package/dist/cjs/helpers.js +189 -0
  201. package/dist/cjs/index.d.ts +16 -0
  202. package/dist/cjs/index.d.ts.map +1 -0
  203. package/dist/cjs/index.js +15 -0
  204. package/dist/cjs/indexed-colors.d.ts +2 -0
  205. package/dist/cjs/indexed-colors.d.ts.map +1 -0
  206. package/dist/cjs/indexed-colors.js +75 -0
  207. package/dist/cjs/ods-export.d.ts +24 -0
  208. package/dist/cjs/ods-export.d.ts.map +1 -0
  209. package/dist/cjs/ods-export.js +23 -0
  210. package/dist/cjs/parse.d.ts +24 -0
  211. package/dist/cjs/parse.d.ts.map +1 -0
  212. package/dist/cjs/parse.js +68 -0
  213. package/dist/cjs/power-query.d.ts +41 -0
  214. package/dist/cjs/power-query.d.ts.map +1 -0
  215. package/dist/cjs/power-query.js +22 -0
  216. package/dist/cjs/server.d.ts +9 -0
  217. package/dist/cjs/server.d.ts.map +1 -0
  218. package/dist/cjs/server.js +8 -0
  219. package/dist/cjs/theme1.d.ts +3 -0
  220. package/dist/cjs/theme1.d.ts.map +1 -0
  221. package/dist/cjs/theme1.js +2 -0
  222. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -0
  223. package/dist/cjs/types.d.ts +14 -0
  224. package/dist/cjs/types.d.ts.map +1 -0
  225. package/dist/cjs/types.js +14 -0
  226. package/dist/cjs/vitest.config.d.ts +3 -0
  227. package/dist/cjs/vitest.config.d.ts.map +1 -0
  228. package/dist/cjs/vitest.config.js +16 -0
  229. package/dist/esm/autofilter-condition.d.ts +43 -0
  230. package/dist/esm/autofilter-condition.d.ts.map +1 -0
  231. package/dist/esm/autofilter-condition.js +145 -0
  232. package/dist/esm/csv-export.d.ts +49 -0
  233. package/dist/esm/csv-export.d.ts.map +1 -0
  234. package/dist/esm/csv-export.js +126 -0
  235. package/dist/esm/csv-import-worker.d.ts +16 -0
  236. package/dist/esm/csv-import-worker.d.ts.map +1 -0
  237. package/dist/esm/csv-import-worker.js +60 -0
  238. package/dist/esm/csv-import.d.ts +38 -0
  239. package/dist/esm/csv-import.d.ts.map +1 -0
  240. package/dist/esm/csv-import.js +132 -0
  241. package/dist/esm/csv-parser/helpers.d.ts +14 -0
  242. package/dist/esm/csv-parser/helpers.d.ts.map +1 -0
  243. package/dist/esm/csv-parser/helpers.js +0 -0
  244. package/dist/esm/csv-parser/types.d.ts +66 -0
  245. package/dist/esm/csv-parser/types.d.ts.map +1 -0
  246. package/dist/esm/csv-parser/types.js +14 -0
  247. package/dist/esm/csv-parser/worker.d.ts +2 -0
  248. package/dist/esm/csv-parser/worker.d.ts.map +1 -0
  249. package/dist/esm/csv-parser/worker.js +154 -0
  250. package/dist/esm/excel-export.d.ts +11 -0
  251. package/dist/esm/excel-export.d.ts.map +1 -0
  252. package/dist/esm/excel-export.js +13 -0
  253. package/dist/esm/excel-import-session.d.ts +51 -0
  254. package/dist/esm/excel-import-session.d.ts.map +1 -0
  255. package/dist/esm/excel-import-session.js +255 -0
  256. package/dist/esm/excel-import-worker.d.ts +7 -0
  257. package/dist/esm/excel-import-worker.d.ts.map +1 -0
  258. package/dist/esm/excel-import-worker.js +116 -0
  259. package/dist/esm/excel-parser/builtin-numfmts.d.ts +24 -0
  260. package/dist/esm/excel-parser/builtin-numfmts.d.ts.map +1 -0
  261. package/dist/esm/excel-parser/builtin-numfmts.js +59 -0
  262. package/dist/esm/excel-parser/cfb-decryptor.d.ts +53 -0
  263. package/dist/esm/excel-parser/cfb-decryptor.d.ts.map +1 -0
  264. package/dist/esm/excel-parser/cfb-decryptor.js +493 -0
  265. package/dist/esm/excel-parser/cfb-encryptor.d.ts +23 -0
  266. package/dist/esm/excel-parser/cfb-encryptor.d.ts.map +1 -0
  267. package/dist/esm/excel-parser/cfb-encryptor.js +181 -0
  268. package/dist/esm/excel-parser/dv-cell-stamp.d.ts +29 -0
  269. package/dist/esm/excel-parser/dv-cell-stamp.d.ts.map +1 -0
  270. package/dist/esm/excel-parser/dv-cell-stamp.js +155 -0
  271. package/dist/esm/excel-parser/helpers.d.ts +28 -0
  272. package/dist/esm/excel-parser/helpers.d.ts.map +1 -0
  273. package/dist/esm/excel-parser/helpers.js +160 -0
  274. package/dist/esm/excel-parser/interface.d.ts +179 -0
  275. package/dist/esm/excel-parser/interface.d.ts.map +1 -0
  276. package/dist/esm/excel-parser/interface.js +1 -0
  277. package/dist/esm/excel-parser/plugins/base/index.d.ts +31 -0
  278. package/dist/esm/excel-parser/plugins/base/index.d.ts.map +1 -0
  279. package/dist/esm/excel-parser/plugins/base/index.js +64 -0
  280. package/dist/esm/excel-parser/plugins/ods/conditional-formatting.d.ts +16 -0
  281. package/dist/esm/excel-parser/plugins/ods/conditional-formatting.d.ts.map +1 -0
  282. package/dist/esm/excel-parser/plugins/ods/conditional-formatting.js +405 -0
  283. package/dist/esm/excel-parser/plugins/ods/data-validations.d.ts +15 -0
  284. package/dist/esm/excel-parser/plugins/ods/data-validations.d.ts.map +1 -0
  285. package/dist/esm/excel-parser/plugins/ods/data-validations.js +331 -0
  286. package/dist/esm/excel-parser/plugins/ods/formula.d.ts +8 -0
  287. package/dist/esm/excel-parser/plugins/ods/formula.d.ts.map +1 -0
  288. package/dist/esm/excel-parser/plugins/ods/formula.js +82 -0
  289. package/dist/esm/excel-parser/plugins/ods/index.d.ts +122 -0
  290. package/dist/esm/excel-parser/plugins/ods/index.d.ts.map +1 -0
  291. package/dist/esm/excel-parser/plugins/ods/index.js +2896 -0
  292. package/dist/esm/excel-parser/plugins/ods/sparklines.d.ts +25 -0
  293. package/dist/esm/excel-parser/plugins/ods/sparklines.d.ts.map +1 -0
  294. package/dist/esm/excel-parser/plugins/ods/sparklines.js +188 -0
  295. package/dist/esm/excel-parser/plugins/ods/styles.d.ts +60 -0
  296. package/dist/esm/excel-parser/plugins/ods/styles.d.ts.map +1 -0
  297. package/dist/esm/excel-parser/plugins/ods/styles.js +732 -0
  298. package/dist/esm/excel-parser/plugins/ods/types.d.ts +7 -0
  299. package/dist/esm/excel-parser/plugins/ods/types.d.ts.map +1 -0
  300. package/dist/esm/excel-parser/plugins/ods/types.js +1 -0
  301. package/dist/esm/excel-parser/plugins/xls/index.d.ts +5 -0
  302. package/dist/esm/excel-parser/plugins/xls/index.d.ts.map +1 -0
  303. package/dist/esm/excel-parser/plugins/xls/index.js +7 -0
  304. package/dist/esm/excel-parser/plugins/xlsb/biff-record-reader.d.ts +13 -0
  305. package/dist/esm/excel-parser/plugins/xlsb/biff-record-reader.d.ts.map +1 -0
  306. package/dist/esm/excel-parser/plugins/xlsb/biff-record-reader.js +48 -0
  307. package/dist/esm/excel-parser/plugins/xlsb/index.d.ts +117 -0
  308. package/dist/esm/excel-parser/plugins/xlsb/index.d.ts.map +1 -0
  309. package/dist/esm/excel-parser/plugins/xlsb/index.js +2339 -0
  310. package/dist/esm/excel-parser/plugins/xlsb/rgce-parser.d.ts +18 -0
  311. package/dist/esm/excel-parser/plugins/xlsb/rgce-parser.d.ts.map +1 -0
  312. package/dist/esm/excel-parser/plugins/xlsb/rgce-parser.js +522 -0
  313. package/dist/esm/excel-parser/plugins/xlsm/index.d.ts +5 -0
  314. package/dist/esm/excel-parser/plugins/xlsm/index.d.ts.map +1 -0
  315. package/dist/esm/excel-parser/plugins/xlsm/index.js +6 -0
  316. package/dist/esm/excel-parser/plugins/xlsx/charts.d.ts +60 -0
  317. package/dist/esm/excel-parser/plugins/xlsx/charts.d.ts.map +1 -0
  318. package/dist/esm/excel-parser/plugins/xlsx/charts.js +2036 -0
  319. package/dist/esm/excel-parser/plugins/xlsx/conditional-formatting.d.ts +18 -0
  320. package/dist/esm/excel-parser/plugins/xlsx/conditional-formatting.d.ts.map +1 -0
  321. package/dist/esm/excel-parser/plugins/xlsx/conditional-formatting.js +621 -0
  322. package/dist/esm/excel-parser/plugins/xlsx/data-validations.d.ts +4 -0
  323. package/dist/esm/excel-parser/plugins/xlsx/data-validations.d.ts.map +1 -0
  324. package/dist/esm/excel-parser/plugins/xlsx/data-validations.js +493 -0
  325. package/dist/esm/excel-parser/plugins/xlsx/drawing.d.ts +39 -0
  326. package/dist/esm/excel-parser/plugins/xlsx/drawing.d.ts.map +1 -0
  327. package/dist/esm/excel-parser/plugins/xlsx/drawing.js +905 -0
  328. package/dist/esm/excel-parser/plugins/xlsx/index.d.ts +320 -0
  329. package/dist/esm/excel-parser/plugins/xlsx/index.d.ts.map +1 -0
  330. package/dist/esm/excel-parser/plugins/xlsx/index.js +4654 -0
  331. package/dist/esm/excel-parser/plugins/xlsx/numfmt.d.ts +2 -0
  332. package/dist/esm/excel-parser/plugins/xlsx/numfmt.d.ts.map +1 -0
  333. package/dist/esm/excel-parser/plugins/xlsx/numfmt.js +3 -0
  334. package/dist/esm/excel-parser/plugins/xlsx/pivots.d.ts +40 -0
  335. package/dist/esm/excel-parser/plugins/xlsx/pivots.d.ts.map +1 -0
  336. package/dist/esm/excel-parser/plugins/xlsx/pivots.js +254 -0
  337. package/dist/esm/excel-parser/plugins/xlsx/relationships.d.ts +8 -0
  338. package/dist/esm/excel-parser/plugins/xlsx/relationships.d.ts.map +1 -0
  339. package/dist/esm/excel-parser/plugins/xlsx/relationships.js +13 -0
  340. package/dist/esm/excel-parser/plugins/xlsx/sheet-views.d.ts +26 -0
  341. package/dist/esm/excel-parser/plugins/xlsx/sheet-views.d.ts.map +1 -0
  342. package/dist/esm/excel-parser/plugins/xlsx/sheet-views.js +64 -0
  343. package/dist/esm/excel-parser/plugins/xlsx/styles.d.ts +44 -0
  344. package/dist/esm/excel-parser/plugins/xlsx/styles.d.ts.map +1 -0
  345. package/dist/esm/excel-parser/plugins/xlsx/styles.js +1365 -0
  346. package/dist/esm/excel-parser/plugins/xlsx/theme.d.ts +50 -0
  347. package/dist/esm/excel-parser/plugins/xlsx/theme.d.ts.map +1 -0
  348. package/dist/esm/excel-parser/plugins/xlsx/theme.js +127 -0
  349. package/dist/esm/excel-parser/plugins/xlsx/threaded-comments.d.ts +47 -0
  350. package/dist/esm/excel-parser/plugins/xlsx/threaded-comments.d.ts.map +1 -0
  351. package/dist/esm/excel-parser/plugins/xlsx/threaded-comments.js +103 -0
  352. package/dist/esm/excel-parser/plugins/xlsx/value-type-detection.d.ts +44 -0
  353. package/dist/esm/excel-parser/plugins/xlsx/value-type-detection.d.ts.map +1 -0
  354. package/dist/esm/excel-parser/plugins/xlsx/value-type-detection.js +399 -0
  355. package/dist/esm/excel-parser/registry.d.ts +5 -0
  356. package/dist/esm/excel-parser/registry.d.ts.map +1 -0
  357. package/dist/esm/excel-parser/registry.js +20 -0
  358. package/dist/esm/excel-parser/style-registry.d.ts +51 -0
  359. package/dist/esm/excel-parser/style-registry.d.ts.map +1 -0
  360. package/dist/esm/excel-parser/style-registry.js +163 -0
  361. package/dist/esm/excel-parser/theme-default.d.ts +3 -0
  362. package/dist/esm/excel-parser/theme-default.d.ts.map +1 -0
  363. package/dist/esm/excel-parser/theme-default.js +19 -0
  364. package/dist/esm/excel-parser/types.d.ts +365 -0
  365. package/dist/esm/excel-parser/types.d.ts.map +1 -0
  366. package/dist/esm/excel-parser/types.js +59 -0
  367. package/dist/esm/excel-parser/utils.d.ts +6 -0
  368. package/dist/esm/excel-parser/utils.d.ts.map +1 -0
  369. package/dist/esm/excel-parser/utils.js +25 -0
  370. package/dist/esm/excel-parser/workbook.d.ts +51 -0
  371. package/dist/esm/excel-parser/workbook.d.ts.map +1 -0
  372. package/dist/esm/excel-parser/workbook.js +192 -0
  373. package/dist/esm/excel-parser/worker.d.ts +2 -0
  374. package/dist/esm/excel-parser/worker.d.ts.map +1 -0
  375. package/dist/esm/excel-parser/worker.js +862 -0
  376. package/dist/esm/excel-parser/zip-parser-streaming.d.ts +13 -0
  377. package/dist/esm/excel-parser/zip-parser-streaming.d.ts.map +1 -0
  378. package/dist/esm/excel-parser/zip-parser-streaming.js +119 -0
  379. package/dist/esm/excel-parser/zip-parser.d.ts +11 -0
  380. package/dist/esm/excel-parser/zip-parser.d.ts.map +1 -0
  381. package/dist/esm/excel-parser/zip-parser.js +43 -0
  382. package/dist/esm/exporter/invalid-data-validation.d.ts +19 -0
  383. package/dist/esm/exporter/invalid-data-validation.d.ts.map +1 -0
  384. package/dist/esm/exporter/invalid-data-validation.js +37 -0
  385. package/dist/esm/exporter/ods/ods-export.d.ts +26 -0
  386. package/dist/esm/exporter/ods/ods-export.d.ts.map +1 -0
  387. package/dist/esm/exporter/ods/ods-export.js +3238 -0
  388. package/dist/esm/exporter/ods/sparkline-builder.d.ts +33 -0
  389. package/dist/esm/exporter/ods/sparkline-builder.d.ts.map +1 -0
  390. package/dist/esm/exporter/ods/sparkline-builder.js +165 -0
  391. package/dist/esm/exporter/xlsx/chart-builder.d.ts +3 -0
  392. package/dist/esm/exporter/xlsx/chart-builder.d.ts.map +1 -0
  393. package/dist/esm/exporter/xlsx/chart-builder.js +1805 -0
  394. package/dist/esm/exporter/xlsx/chart-templates.d.ts +1781 -0
  395. package/dist/esm/exporter/xlsx/chart-templates.d.ts.map +1 -0
  396. package/dist/esm/exporter/xlsx/chart-templates.js +1798 -0
  397. package/dist/esm/exporter/xlsx/future-functions.d.ts +10 -0
  398. package/dist/esm/exporter/xlsx/future-functions.d.ts.map +1 -0
  399. package/dist/esm/exporter/xlsx/future-functions.js +264 -0
  400. package/dist/esm/exporter/xlsx/pivot-builder.d.ts +58 -0
  401. package/dist/esm/exporter/xlsx/pivot-builder.d.ts.map +1 -0
  402. package/dist/esm/exporter/xlsx/pivot-builder.js +230 -0
  403. package/dist/esm/exporter/xlsx/power-query-builder.d.ts +26 -0
  404. package/dist/esm/exporter/xlsx/power-query-builder.d.ts.map +1 -0
  405. package/dist/esm/exporter/xlsx/power-query-builder.js +257 -0
  406. package/dist/esm/exporter/xlsx/slicer-builder.d.ts +11 -0
  407. package/dist/esm/exporter/xlsx/slicer-builder.d.ts.map +1 -0
  408. package/dist/esm/exporter/xlsx/slicer-builder.js +84 -0
  409. package/dist/esm/exporter/xlsx/sparkline-builder.d.ts +61 -0
  410. package/dist/esm/exporter/xlsx/sparkline-builder.d.ts.map +1 -0
  411. package/dist/esm/exporter/xlsx/sparkline-builder.js +437 -0
  412. package/dist/esm/exporter/xlsx/style-builder.d.ts +93 -0
  413. package/dist/esm/exporter/xlsx/style-builder.d.ts.map +1 -0
  414. package/dist/esm/exporter/xlsx/style-builder.js +795 -0
  415. package/dist/esm/exporter/xlsx/threaded-comments-builder.d.ts +58 -0
  416. package/dist/esm/exporter/xlsx/threaded-comments-builder.d.ts.map +1 -0
  417. package/dist/esm/exporter/xlsx/threaded-comments-builder.js +175 -0
  418. package/dist/esm/exporter/xlsx/xlsx-export.d.ts +121 -0
  419. package/dist/esm/exporter/xlsx/xlsx-export.d.ts.map +1 -0
  420. package/dist/esm/exporter/xlsx/xlsx-export.js +4062 -0
  421. package/dist/esm/helpers/theme-xml-generator.d.ts +8 -0
  422. package/dist/esm/helpers/theme-xml-generator.d.ts.map +1 -0
  423. package/dist/esm/helpers/theme-xml-generator.js +33 -0
  424. package/dist/esm/helpers.d.ts +34 -0
  425. package/dist/esm/helpers.d.ts.map +1 -0
  426. package/dist/esm/helpers.js +182 -0
  427. package/dist/esm/index.d.ts +16 -0
  428. package/dist/esm/index.d.ts.map +1 -0
  429. package/dist/esm/index.js +15 -0
  430. package/dist/esm/indexed-colors.d.ts +2 -0
  431. package/dist/esm/indexed-colors.d.ts.map +1 -0
  432. package/dist/esm/indexed-colors.js +75 -0
  433. package/dist/esm/ods-export.d.ts +24 -0
  434. package/dist/esm/ods-export.d.ts.map +1 -0
  435. package/dist/esm/ods-export.js +12 -0
  436. package/dist/esm/parse.d.ts +24 -0
  437. package/dist/esm/parse.d.ts.map +1 -0
  438. package/dist/esm/parse.js +55 -0
  439. package/dist/esm/power-query.d.ts +41 -0
  440. package/dist/esm/power-query.d.ts.map +1 -0
  441. package/dist/esm/power-query.js +19 -0
  442. package/dist/esm/server.d.ts +9 -0
  443. package/dist/esm/server.d.ts.map +1 -0
  444. package/dist/esm/server.js +8 -0
  445. package/dist/esm/theme1.d.ts +3 -0
  446. package/dist/esm/theme1.d.ts.map +1 -0
  447. package/dist/esm/theme1.js +2 -0
  448. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -0
  449. package/dist/esm/types.d.ts +14 -0
  450. package/dist/esm/types.d.ts.map +1 -0
  451. package/dist/esm/types.js +14 -0
  452. package/dist/esm/vitest.config.d.ts +3 -0
  453. package/dist/esm/vitest.config.d.ts.map +1 -0
  454. package/dist/esm/vitest.config.js +16 -0
  455. package/package.json +62 -0
  456. package/xlsx.d.ts +52 -0
@@ -0,0 +1,353 @@
1
+ import { __assign, __read, __values } from "tslib";
2
+ import { get } from "lodash-es";
3
+ export function extractDataValidations(ctx) {
4
+ var e_1, _a;
5
+ var sheetContexts = ctx.sheetContexts, sheetNameMap = ctx.sheetNameMap, spreadsheetNode = ctx.spreadsheetNode, getAttributes = ctx.getAttributes, parseRangeList = ctx.parseRangeList, normalizeConditionExpression = ctx.normalizeConditionExpression, parseBooleanAttribute = ctx.parseBooleanAttribute, mapAlertStyle = ctx.mapAlertStyle, toArray = ctx.toArray;
6
+ if (!sheetContexts.length)
7
+ return [];
8
+ var validations = [];
9
+ var validationId = 1;
10
+ var processNodes = function (nodes, fallbackContext) {
11
+ var e_2, _a;
12
+ var _b;
13
+ try {
14
+ for (var nodes_1 = __values(nodes), nodes_1_1 = nodes_1.next(); !nodes_1_1.done; nodes_1_1 = nodes_1.next()) {
15
+ var node = nodes_1_1.value;
16
+ var attrs = getAttributes(node);
17
+ if (!attrs)
18
+ continue;
19
+ var rangeAttr = attrs["@_table:target-range-address"] ||
20
+ attrs["@_target-range-address"] ||
21
+ attrs["@_table:base-cell-address"];
22
+ var ranges = parseRangeList(rangeAttr, sheetNameMap, fallbackContext);
23
+ if (!ranges.length)
24
+ continue;
25
+ var baseCellAddress = attrs["@_table:base-cell-address"] || attrs["@_base-cell-address"];
26
+ var inferredSheetName = extractSheetNameFromAddress(baseCellAddress) || (fallbackContext === null || fallbackContext === void 0 ? void 0 : fallbackContext.name);
27
+ var conditionFormula = normalizeConditionExpression(attrs["@_table:condition"] || attrs["@_condition"]);
28
+ var condition = parseConditionFormula(conditionFormula, inferredSheetName);
29
+ var allowBlank = parseBooleanAttribute(attrs["@_table:allow-empty-cell"] || attrs["@_allow-empty-cell"]);
30
+ var displayStyleAttr = attrs["@_table:display-list"] || attrs["@_display-list"];
31
+ var displayStyle = void 0;
32
+ if (displayStyleAttr) {
33
+ var normalized = displayStyleAttr.toLowerCase();
34
+ if (normalized === "none") {
35
+ displayStyle = "plain";
36
+ }
37
+ else if (normalized === "list" ||
38
+ normalized === "unsorted" ||
39
+ normalized === "sorted") {
40
+ displayStyle = "arrow";
41
+ }
42
+ }
43
+ var helpNode = get(node, "table:help-message") || get(node, "help-message");
44
+ var helpAttrs = getAttributes(helpNode);
45
+ var inputMessage = helpAttrs && (helpAttrs["@_table:message"] || helpAttrs["@_message"])
46
+ ? {
47
+ title: helpAttrs["@_table:title"] || helpAttrs["@_title"] || undefined,
48
+ message: helpAttrs["@_table:message"] ||
49
+ helpAttrs["@_message"] ||
50
+ undefined,
51
+ }
52
+ : undefined;
53
+ var errorNode = get(node, "table:error-message") || get(node, "error-message");
54
+ var errorAttrs = getAttributes(errorNode);
55
+ var alert_1 = void 0;
56
+ if (errorAttrs &&
57
+ (errorAttrs["@_table:message"] || errorAttrs["@_message"])) {
58
+ alert_1 = {
59
+ style: (_b = mapAlertStyle(errorAttrs["@_table:message-type"] ||
60
+ errorAttrs["@_message-type"])) !== null && _b !== void 0 ? _b : "stop",
61
+ message: {
62
+ title: errorAttrs["@_table:title"] || errorAttrs["@_title"] || undefined,
63
+ message: errorAttrs["@_table:message"] ||
64
+ errorAttrs["@_message"] ||
65
+ undefined,
66
+ },
67
+ };
68
+ }
69
+ validations.push({
70
+ id: "ods-dv-".concat(validationId++),
71
+ ranges: ranges,
72
+ condition: condition,
73
+ allowBlank: allowBlank,
74
+ displayStyle: displayStyle,
75
+ inputMessage: inputMessage,
76
+ alert: alert_1,
77
+ });
78
+ }
79
+ }
80
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
81
+ finally {
82
+ try {
83
+ if (nodes_1_1 && !nodes_1_1.done && (_a = nodes_1.return)) _a.call(nodes_1);
84
+ }
85
+ finally { if (e_2) throw e_2.error; }
86
+ }
87
+ };
88
+ if (spreadsheetNode) {
89
+ var globalContainer = get(spreadsheetNode, "table:content-validations") ||
90
+ get(spreadsheetNode, "content-validations");
91
+ var globalNodes = globalContainer
92
+ ? toArray(get(globalContainer, "table:content-validation") ||
93
+ get(globalContainer, "content-validation"))
94
+ : [];
95
+ processNodes(globalNodes);
96
+ }
97
+ try {
98
+ for (var sheetContexts_1 = __values(sheetContexts), sheetContexts_1_1 = sheetContexts_1.next(); !sheetContexts_1_1.done; sheetContexts_1_1 = sheetContexts_1.next()) {
99
+ var context = sheetContexts_1_1.value;
100
+ var container = get(context.node, "table:content-validations") ||
101
+ get(context.node, "content-validations");
102
+ var nodes = container
103
+ ? toArray(get(container, "table:content-validation") ||
104
+ get(container, "content-validation"))
105
+ : [];
106
+ processNodes(nodes, context);
107
+ }
108
+ }
109
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
110
+ finally {
111
+ try {
112
+ if (sheetContexts_1_1 && !sheetContexts_1_1.done && (_a = sheetContexts_1.return)) _a.call(sheetContexts_1);
113
+ }
114
+ finally { if (e_1) throw e_1.error; }
115
+ }
116
+ return validations;
117
+ }
118
+ var FUNCTION_CONDITION_MAP = {
119
+ "cell-content-is-between": { type: "NUMBER_BETWEEN", valueCount: 2 },
120
+ "cell-content-is-not-between": { type: "NUMBER_NOT_BETWEEN", valueCount: 2 },
121
+ "cell-content-is-equal-to": { type: "NUMBER_EQ", valueCount: 1 },
122
+ "cell-content-is-not-equal-to": { type: "NUMBER_NOT_EQ", valueCount: 1 },
123
+ "cell-content-is-greater-than": { type: "NUMBER_GREATER", valueCount: 1 },
124
+ "cell-content-is-greater-than-or-equal-to": {
125
+ type: "NUMBER_GREATER_THAN_EQ",
126
+ valueCount: 1,
127
+ },
128
+ "cell-content-is-less-than": { type: "NUMBER_LESS", valueCount: 1 },
129
+ "cell-content-is-less-than-or-equal-to": {
130
+ type: "NUMBER_LESS_THAN_EQ",
131
+ valueCount: 1,
132
+ },
133
+ "cell-content-text-equal-to": { type: "TEXT_EQ", valueCount: 1 },
134
+ "cell-content-text-not-equal-to": { type: "TEXT_NOT_EQ", valueCount: 1 },
135
+ "cell-content-text-contains": { type: "TEXT_CONTAINS", valueCount: 1 },
136
+ "cell-content-text-not-contains": {
137
+ type: "TEXT_NOT_CONTAINS",
138
+ valueCount: 1,
139
+ },
140
+ "cell-content-text-begins-with": { type: "TEXT_STARTS_WITH", valueCount: 1 },
141
+ "cell-content-text-ends-with": { type: "TEXT_ENDS_WITH", valueCount: 1 },
142
+ "cell-content-text-is-email": { type: "TEXT_IS_EMAIL", valueCount: 0 },
143
+ "cell-content-text-is-url": { type: "TEXT_IS_URL", valueCount: 0 },
144
+ "cell-content-date-equal-to": { type: "DATE_EQ", valueCount: 1 },
145
+ "cell-content-date-not-equal-to": { type: "DATE_NOT_EQ", valueCount: 1 },
146
+ "cell-content-date-before": { type: "DATE_BEFORE", valueCount: 1 },
147
+ "cell-content-date-after": { type: "DATE_AFTER", valueCount: 1 },
148
+ "cell-content-date-on-or-before": {
149
+ type: "DATE_ON_OR_BEFORE",
150
+ valueCount: 1,
151
+ },
152
+ "cell-content-date-on-or-after": {
153
+ type: "DATE_ON_OR_AFTER",
154
+ valueCount: 1,
155
+ },
156
+ "cell-content-date-between": { type: "DATE_BETWEEN", valueCount: 2 },
157
+ "cell-content-date-not-between": { type: "DATE_NOT_BETWEEN", valueCount: 2 },
158
+ "cell-content-date-is-valid": { type: "DATE_IS_VALID", valueCount: 0 },
159
+ "cell-content-is-blank": { type: "BLANK", valueCount: 0 },
160
+ "cell-content-is-not-blank": { type: "NOT_BLANK", valueCount: 0 },
161
+ "cell-content-is-boolean": { type: "BOOLEAN", valueCount: 0 },
162
+ "cell-content-is-in-range": { type: "ONE_OF_RANGE", valueCount: 1 },
163
+ "cell-content-is-error": { type: "ERROR", valueCount: 0 },
164
+ "cell-content-is-not-error": { type: "NOT_ERROR", valueCount: 0 },
165
+ };
166
+ var OPERATOR_CONDITION_MAP = {
167
+ ">": "NUMBER_GREATER",
168
+ ">=": "NUMBER_GREATER_THAN_EQ",
169
+ "<": "NUMBER_LESS",
170
+ "<=": "NUMBER_LESS_THAN_EQ",
171
+ "=": "NUMBER_EQ",
172
+ "==": "NUMBER_EQ",
173
+ "<>": "NUMBER_NOT_EQ",
174
+ "!=": "NUMBER_NOT_EQ",
175
+ };
176
+ var LIST_FUNCTION_REGEX = /^=cell-content-is-in-list\((.*)\)$/i;
177
+ function parseConditionFormula(conditionFormula, sheetName) {
178
+ var trimmed = conditionFormula === null || conditionFormula === void 0 ? void 0 : conditionFormula.trim();
179
+ if (!trimmed)
180
+ return undefined;
181
+ var listCondition = parseListCondition(trimmed, sheetName);
182
+ if (listCondition)
183
+ return listCondition;
184
+ var functionCondition = parseFunctionCondition(trimmed, sheetName);
185
+ if (functionCondition)
186
+ return functionCondition;
187
+ var operatorCondition = parseOperatorCondition(trimmed);
188
+ if (operatorCondition)
189
+ return operatorCondition;
190
+ return {
191
+ type: "CUSTOM_FORMULA",
192
+ values: [{ userEnteredValue: trimmed }],
193
+ };
194
+ }
195
+ function parseListCondition(formula, sheetName) {
196
+ var match = formula.match(LIST_FUNCTION_REGEX);
197
+ if (!match)
198
+ return undefined;
199
+ var args = splitArguments(match[1]);
200
+ if (!args.length)
201
+ return undefined;
202
+ var _a = __read(args, 1), firstArg = _a[0];
203
+ if (firstArg && isRangeArgument(firstArg)) {
204
+ return {
205
+ type: "ONE_OF_RANGE",
206
+ values: [
207
+ {
208
+ userEnteredValue: formatRangeValue(firstArg, sheetName),
209
+ },
210
+ ],
211
+ };
212
+ }
213
+ var values = [
214
+ {
215
+ userEnteredValue: args.join(","),
216
+ },
217
+ ];
218
+ return {
219
+ type: "ONE_OF_LIST",
220
+ values: values,
221
+ };
222
+ }
223
+ function parseFunctionCondition(formula, sheetName) {
224
+ var normalized = formula.startsWith("=") ? formula.slice(1) : formula;
225
+ var match = normalized.match(/^([a-z-]+)\((.*)\)$/i);
226
+ if (!match)
227
+ return undefined;
228
+ var fnName = match[1].toLowerCase();
229
+ if (fnName === "cell-content-is-in-list") {
230
+ return undefined;
231
+ }
232
+ var mapping = FUNCTION_CONDITION_MAP[fnName];
233
+ if (!mapping)
234
+ return undefined;
235
+ var args = splitArguments(match[2]);
236
+ if (mapping.valueCount > args.length)
237
+ return undefined;
238
+ if (mapping.type === "ONE_OF_RANGE" && args.length) {
239
+ return {
240
+ type: "ONE_OF_RANGE",
241
+ values: [{ userEnteredValue: formatRangeValue(args[0], sheetName) }],
242
+ };
243
+ }
244
+ var values = mapping.valueCount > 0
245
+ ? args.slice(0, mapping.valueCount).map(function (value) { return ({
246
+ userEnteredValue: value,
247
+ }); })
248
+ : undefined;
249
+ return __assign({ type: mapping.type }, (values ? { values: values } : {}));
250
+ }
251
+ function parseOperatorCondition(formula) {
252
+ var normalized = formula.startsWith("=") ? formula.slice(1) : formula;
253
+ var match = normalized.match(/^cell-content\(\)\s*(<=|>=|<>|!=|=|==|<|>)\s*(.+)$/i);
254
+ if (!match)
255
+ return undefined;
256
+ var operator = match[1];
257
+ var conditionType = OPERATOR_CONDITION_MAP[operator];
258
+ if (!conditionType)
259
+ return undefined;
260
+ var value = stripQuotes(match[2].trim());
261
+ if (!value.length)
262
+ return undefined;
263
+ return {
264
+ type: conditionType,
265
+ values: [{ userEnteredValue: value }],
266
+ };
267
+ }
268
+ function splitArguments(value) {
269
+ if (!value)
270
+ return [];
271
+ return value
272
+ .split(/[,;](?=(?:[^"]*"[^"]*")*[^"]*$)/)
273
+ .map(function (part) { return stripQuotes(part.trim()); })
274
+ .filter(function (part) { return part.length > 0; });
275
+ }
276
+ function stripQuotes(value) {
277
+ if ((value.startsWith('"') && value.endsWith('"')) ||
278
+ (value.startsWith("'") && value.endsWith("'"))) {
279
+ return value.substring(1, value.length - 1);
280
+ }
281
+ return value;
282
+ }
283
+ function formatRangeValue(value, sheetName) {
284
+ var _a;
285
+ if (!value)
286
+ return value;
287
+ var reference = value.trim();
288
+ if (!reference)
289
+ return value;
290
+ if (reference.startsWith("=")) {
291
+ reference = reference.slice(1);
292
+ }
293
+ var bracketMatch = reference.match(/^\[(.*)\]$/);
294
+ if (bracketMatch) {
295
+ reference = bracketMatch[1];
296
+ }
297
+ var exclamationMatch = reference.match(/^(.*)!(.+)$/);
298
+ if (exclamationMatch) {
299
+ var sheet = escapeSheetName(exclamationMatch[1]);
300
+ var ref = exclamationMatch[2].replace(/\.(?=\$?[A-Za-z])/g, "");
301
+ if (sheet) {
302
+ return "='".concat(sheet, "'!").concat(ref);
303
+ }
304
+ var normalized = ref;
305
+ return normalized.startsWith("=") ? normalized : "=".concat(normalized);
306
+ }
307
+ var dotMatch = reference.match(/^(?:'([^']+)'|([^.!]+))\.(.+)$/);
308
+ if (dotMatch) {
309
+ var sheet = (_a = dotMatch[1]) !== null && _a !== void 0 ? _a : dotMatch[2];
310
+ var ref = dotMatch[3].replace(/\.(?=\$?[A-Za-z])/g, "");
311
+ return "='".concat(escapeSheetName(sheet), "'!").concat(ref);
312
+ }
313
+ var normalizedRef = reference.replace(/\.(?=\$?[A-Za-z])/g, "");
314
+ var inferredSheet = sheetName ? escapeSheetName(sheetName) : undefined;
315
+ if (inferredSheet) {
316
+ return "='".concat(inferredSheet, "'!").concat(normalizedRef);
317
+ }
318
+ return normalizedRef.startsWith("=") ? normalizedRef : "=".concat(normalizedRef);
319
+ }
320
+ function escapeSheetName(name) {
321
+ return name
322
+ .replace(/^'+|'+$/g, "")
323
+ .replace(/^\$+/, "")
324
+ .replace(/'/g, "''");
325
+ }
326
+ function isRangeArgument(value) {
327
+ if (!value)
328
+ return false;
329
+ if (/^\[.*\]$/.test(value)) {
330
+ return true;
331
+ }
332
+ return /[:.!]/.test(value) && /\d/.test(value);
333
+ }
334
+ function extractSheetNameFromAddress(address) {
335
+ if (!address)
336
+ return undefined;
337
+ var trimmed = address.trim();
338
+ if (!trimmed)
339
+ return undefined;
340
+ var bangMatch = trimmed.match(/^'([^']+)'!/);
341
+ if (bangMatch)
342
+ return bangMatch[1];
343
+ var dotBangMatch = trimmed.match(/^'([^']+)'[.!]/);
344
+ if (dotBangMatch)
345
+ return dotBangMatch[1];
346
+ var plainBangMatch = trimmed.match(/^([^'!.]+)!/);
347
+ if (plainBangMatch)
348
+ return plainBangMatch[1].replace(/^\$+/, "").trim();
349
+ var plainDotMatch = trimmed.match(/^([^'!.]+)\./);
350
+ if (plainDotMatch)
351
+ return plainDotMatch[1].replace(/^\$+/, "").trim();
352
+ return undefined;
353
+ }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Converts ODS OpenFormula to Excel formula
3
+ * Example: of:=SUM([.A1:.B2]) -> =SUM(A1:B2)
4
+ * Example: of:=[.A1]+[.B2] -> =A1+B2
5
+ * Example: of:=[$Sheet2.A1] -> =Sheet2!A1
6
+ */
7
+ export declare function convertOdsFormulaToExcel(odsFormula: string): string;
8
+ //# sourceMappingURL=formula.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formula.d.ts","sourceRoot":"","sources":["../../../../../excel-parser/plugins/ods/formula.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAiGnE"}
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Converts ODS OpenFormula to Excel formula
3
+ * Example: of:=SUM([.A1:.B2]) -> =SUM(A1:B2)
4
+ * Example: of:=[.A1]+[.B2] -> =A1+B2
5
+ * Example: of:=[$Sheet2.A1] -> =Sheet2!A1
6
+ */
7
+ export function convertOdsFormulaToExcel(odsFormula) {
8
+ if (!odsFormula)
9
+ return "";
10
+ var formula = odsFormula;
11
+ // Remove 'of:' prefix
12
+ if (formula.startsWith("of:")) {
13
+ formula = formula.substring(3);
14
+ }
15
+ // If it doesn't start with '=', add it (unless it's just a value, but ODS formulas usually denote calculation)
16
+ // Actually ODS formulas in table:formula often start with := or just = after of:
17
+ // formula "of:=..." -> "="
18
+ // formula "of:..." -> "..."
19
+ // Handle cell references
20
+ // [.A1] -> A1 (Absolute/Relative handling in ODS is complex, but basic mapping:
21
+ // [.A1] usually refers to cell A1 in current sheet.
22
+ // [.$A$1] -> $A$1
23
+ // [.A1:.B2] -> A1:B2
24
+ // Regex to match references like [.A1], [.A1:.B2], [$Sheet1.A1]
25
+ // Replace ranges [.A1:.B2] -> A1:B2
26
+ formula = formula.replace(/\[\.([A-Z]+[0-9]+):\.\1([A-Z]+[0-9]+)\]/g, "$1:$2"); // This is too specific
27
+ // Better: Match generic range pattern
28
+ // ODS Range: [.A1:.B2]
29
+ // We can try to strip the brackets and dots for local references.
30
+ // Simple replacer for local single cell refs [.A1] -> A1
31
+ formula = formula.replace(/\[\.([A-Z$]+[0-9$]+)\]/g, "$1");
32
+ // Simple replacer for local ranges [.A1:.B2] -> A1:B2
33
+ // Note: range might be [.A1:.B2] or [.A1:.C3]
34
+ formula = formula.replace(/\[\.([A-Z$]+[0-9$]+):\.\1([A-Z$]+[0-9$]+)\]/g, // This regex is wrong (uses backreference \1)
35
+ "$1:$2");
36
+ // Correct regex for ranges: [.A1:.B2]
37
+ formula = formula.replace(/\[\.([A-Za-z]+[0-9]+):\.\1([A-Za-z]+[0-9]+)\]/g, // Only matches if same col? No.
38
+ function (match, p1, p2) { return "".concat(p1, ":").concat(p2); } // Logic above was weird.
39
+ );
40
+ // Let's use a more general approach.
41
+ // Replace `[.colrow]` with `colrow`.
42
+ // Replace `:.colrow` with `:colrow`.
43
+ formula = formula.replace(/\[\.([A-Za-z0-9$]+)\]/g, "$1");
44
+ // Handle Ranges inside brackets [A1:B2] which ODS might represent as [.A1:.B2]
45
+ // If we already replaced single refs, we might have `A1:.B2` left if we are not careful?
46
+ // ODS range is a single token `[.A1:.B2]`.
47
+ // Strategy:
48
+ // 1. Find [...] blocks.
49
+ // 2. Inside them, remove leading dots for cell refs.
50
+ // 3. Convert :. to :
51
+ formula = formula.replace(/\[(.*?)\]/g, function (match, content) {
52
+ // Content is like ".A1:.B2" or "$Sheet1.A1"
53
+ // Check for sheet ref
54
+ if (content.startsWith("$")) {
55
+ // $SheetName.A1 -> SheetName!A1
56
+ // content: $Sheet1.A1
57
+ // Split by last dot?
58
+ var lastDotIndex = content.lastIndexOf(".");
59
+ if (lastDotIndex > 0) {
60
+ var sheetPart = content.substring(1, lastDotIndex); // Remove leading $
61
+ var cellPart = content.substring(lastDotIndex + 1);
62
+ // If sheet name has spaces, wrap in quotes? Excel standard: 'Sheet Name'!A1
63
+ // ODS sheet names in references usually don't have quotes inside the bracket?
64
+ // We assume valid Excel sheet syntax or just quote it.
65
+ return "'".concat(sheetPart, "'!").concat(cellPart);
66
+ }
67
+ }
68
+ // Local ref
69
+ // .A1:.B2 -> A1:B2
70
+ // .A1 -> A1
71
+ var processed = content.replace(/^\./, ""); // Remove first dot
72
+ processed = processed.replace(/:\./g, ":"); // Remove dot after colon
73
+ return processed;
74
+ });
75
+ // Convert ; to , (function arguments)
76
+ // ODS uses ; as separator. Excel usually , (en-US).
77
+ // Be careful not to replace ; inside strings.
78
+ // Simple heuristic: if not inside quotes.
79
+ // For now, global replace might be safer than nothing, assuming no ; in strings usually.
80
+ formula = formula.replace(/;/g, ",");
81
+ return formula;
82
+ }
@@ -0,0 +1,122 @@
1
+ import type { ConditionalFormatRule, DataValidationRuleRecord, EmbeddedChart, NamedRange, Sheet, TableView } from "@rowsncolumns/spreadsheet";
2
+ import type { TextFormatRun } from "@rowsncolumns/common-types";
3
+ import { XMLParser } from "fast-xml-parser";
4
+ import type { EmbeddedObjectWithPosition, ProcessSheetDataResult } from "../../types";
5
+ import { ZipParser } from "../../zip-parser";
6
+ import { BaseWorkbookPlugin } from "../base/index";
7
+ import { OdsStyles } from "./styles";
8
+ import type { IterativeCalculationOptions } from "@rowsncolumns/common-types";
9
+ export declare class OdsPlugin extends BaseWorkbookPlugin {
10
+ zipParser: ZipParser;
11
+ xmlParser: XMLParser;
12
+ xmlOrderedParser: XMLParser;
13
+ contentXml: any;
14
+ contentXmlOrdered: any;
15
+ settingsXml: any;
16
+ odsStyles: OdsStyles;
17
+ cellXfs: Map<string | number, any>;
18
+ sharedStrings: string[];
19
+ richSharedStringRuns: Map<number, TextFormatRun[]>;
20
+ private sharedStringIndexByValue;
21
+ private sheetCache;
22
+ private sparklinesBySheet;
23
+ constructor();
24
+ load(buffer: ArrayBuffer | File, password?: string): Promise<void>;
25
+ getCellXfs(): Map<string | number, any>;
26
+ getSharedStrings(): string[];
27
+ private getOrCreateSharedStringIndex;
28
+ registerFormat(format: any): string;
29
+ dispose(): void;
30
+ private getSpreadsheetNode;
31
+ private getTables;
32
+ getSheetCount(): number;
33
+ private ensureSheetCache;
34
+ private buildSheetCache;
35
+ private extractTableViews;
36
+ private convertDatabaseRangeNode;
37
+ private extractNamedRanges;
38
+ private extractBasicFilters;
39
+ private convertFilterNodeToSpecs;
40
+ private applyFilterCondition;
41
+ private extractTextContent;
42
+ private extractTextContentWithRuns;
43
+ private normalizeInternalHyperlinkLocation;
44
+ private extractHyperlinkValue;
45
+ private extractSpaceNodes;
46
+ private getSpaceRepeatCount;
47
+ private extractEmbeddedObjects;
48
+ private buildAnchorKey;
49
+ /**
50
+ * Walk the ordered content XML for each table and assign outline
51
+ * level + collapsed/hiddenByGroup state on `rowMetadata` and
52
+ * `columnMetadata`. ODS encodes outline as `<table:table-row-group>`
53
+ * / `<table:table-column-group>` wrappers (nest for level > 1); a
54
+ * group is collapsed when its `table:display="false"`. Cells inside
55
+ * a collapsed wrapper get `hiddenByGroup`; the summary cell (per
56
+ * `outlinePr.summaryBelow`/`summaryRight`, default true = below /
57
+ * right of the group) gets `collapsed = true`.
58
+ */
59
+ private extractOutlineGroups;
60
+ private extractMerges;
61
+ private getOrderedTableWrappers;
62
+ private findOrderedTableWrapperForContext;
63
+ private extractTableColumnsFromHeader;
64
+ private collectFrameNodes;
65
+ private extractSheetSettings;
66
+ private parseConfigItemEntry;
67
+ private parseFreezeCoordinates;
68
+ private convertFrameToEmbeddedObject;
69
+ private convertFrameToEmbeddedChart;
70
+ private findInlineChartNode;
71
+ private findFrameObjectNode;
72
+ private findFrameImageNode;
73
+ private loadChartNodeFromObject;
74
+ private loadChartNodeFromHref;
75
+ private resolveObjectPath;
76
+ private findChartNodeInDocument;
77
+ private findNodeRecursive;
78
+ private convertChartNodeToSpec;
79
+ private extractSeriesLabel;
80
+ private extractChartSeriesColor;
81
+ private extractColorFromChartProperties;
82
+ private mapOdsChartClassToType;
83
+ private findRangeString;
84
+ private looksLikeCellRangeAddress;
85
+ private createChartDataFromAddress;
86
+ private buildOverlayPlacement;
87
+ private getImageDataUrl;
88
+ private normalizeImagePath;
89
+ private getImageMimeType;
90
+ private createDataUrlFromBytes;
91
+ private bytesToBase64;
92
+ private convertLengthToPixels;
93
+ private normalizeOdsColor;
94
+ private parseIntegerValue;
95
+ private getNodeText;
96
+ private buildSheetNameMap;
97
+ private registerSheetNameVariants;
98
+ private normalizeSheetName;
99
+ private parseRangeList;
100
+ private splitAddressSegments;
101
+ private parseRange;
102
+ private parseCellReference;
103
+ private parseBooleanAttribute;
104
+ private normalizeConditionExpression;
105
+ private normalizeExpression;
106
+ private toArray;
107
+ private expandRowCells;
108
+ private wrapRawCellEntry;
109
+ private extractAttributesFromNode;
110
+ private getAttributes;
111
+ private mapAlertStyle;
112
+ getSheets(minRowCount?: number, minColumnCount?: number): Promise<[Sheet[], TableView[]]>;
113
+ getConditionalFormatting(): Promise<ConditionalFormatRule[]>;
114
+ getDrawings(): Promise<EmbeddedObjectWithPosition[]>;
115
+ getCharts(): Promise<EmbeddedChart[]>;
116
+ getDataValidations(): Promise<DataValidationRuleRecord[]>;
117
+ getNamedRanges(): NamedRange[];
118
+ private findCalculationSettings;
119
+ getIterativeCalculationOptions(): IterativeCalculationOptions | undefined;
120
+ processSheetData(chunkSize?: number, enableCellXfsRegistry?: boolean, enableSharedStrings?: boolean): AsyncGenerator<ProcessSheetDataResult, void, unknown>;
121
+ }
122
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../excel-parser/plugins/ods/index.ts"],"names":[],"mappings":"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"}