@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,18 @@
1
+ import type { BooleanCondition, CellFormat, ConditionalFormatRule, DistinctRule, TopBottomRule } from "@rowsncolumns/spreadsheet";
2
+ export declare function parseTopBottomCondition(cfRule: any, format: CellFormat): TopBottomRule | undefined;
3
+ export declare function parseDistinctRule(ruleType: string, format: CellFormat): DistinctRule;
4
+ /**
5
+ * Parse a boolean rule condition
6
+ * @param cfRule The conditional formatting rule
7
+ * @returns BooleanCondition object
8
+ */
9
+ export declare function parseBooleanCondition(cfRule: any): BooleanCondition | undefined;
10
+ /**
11
+ * Get conditional formatting rules from a sheet
12
+ * @param sheetData The sheet data
13
+ * @param sheetId The sheet ID
14
+ * @param workbookStyles The workbook styles
15
+ * @returns Array of ConditionalFormatRule objects
16
+ */
17
+ export declare function getConditionalFormattingFromSheet(sheetData: any, sheetId: number, workbookStyles: any, indexedColors?: Array<string | undefined>): ConditionalFormatRule[];
18
+ //# sourceMappingURL=conditional-formatting.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conditional-formatting.d.ts","sourceRoot":"","sources":["../../../../../excel-parser/plugins/xlsx/conditional-formatting.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,UAAU,EAGV,qBAAqB,EAGrB,YAAY,EAKZ,aAAa,EACd,MAAM,2BAA2B,CAAC;AAgLnC,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,GAAG,EACX,MAAM,EAAE,UAAU,GACjB,aAAa,GAAG,SAAS,CAuC3B;AAED,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,UAAU,GACjB,YAAY,CAKd;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,GAAG,GACV,gBAAgB,GAAG,SAAS,CAgI9B;AA8KD;;;;;;GAMG;AACH,wBAAgB,iCAAiC,CAC/C,SAAS,EAAE,GAAG,EACd,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,GAAG,EACnB,aAAa,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,GACxC,qBAAqB,EAAE,CAsLzB"}
@@ -0,0 +1,620 @@
1
+ import { __assign, __read, __spreadArray, __values } from "tslib";
2
+ import { get, set } from "lodash-es";
3
+ import { getRangeFromAddressRef } from "../../helpers";
4
+ import { extractColor } from "./styles";
5
+ /**
6
+ * Parse cell format from dxf format definition. Theme color
7
+ * references (`<color theme="N" tint="T"/>`) are intentionally
8
+ * preserved as `{ theme, tint }` objects on output — consumers
9
+ * resolve them via `getStringifiedColor(color, theme)` so users can
10
+ * switch themes / dark mode and have CF colors re-resolve.
11
+ * Symmetric with how regular cell `backgroundColor` is stored.
12
+ *
13
+ * @param dxf The differential formatting element
14
+ * @param indexedColors Indexed color palette overrides
15
+ * @returns CellFormat object
16
+ */
17
+ function parseDxfFormat(dxf, indexedColors) {
18
+ var _a, _b;
19
+ var format = {};
20
+ // Font formatting. OOXML boolean flag elements default to TRUE when the `val`
21
+ // attribute is absent, but `val="0"`/`"false"` means explicitly OFF — key presence
22
+ // alone treated `<strike val="0"/>` (an explicit "not struck" dxf font) as struck.
23
+ // Mirrors styles.ts' `isTruthyFlagNode` + its `<u val="none"/>` handling.
24
+ var isTruthyFlagNode = function (node) {
25
+ var _a, _b, _c;
26
+ if (node === undefined || node === null)
27
+ return false;
28
+ var val = typeof node === "object" ? ((_c = (_b = (_a = node.a$) === null || _a === void 0 ? void 0 : _a.val) !== null && _b !== void 0 ? _b : node["#text"]) !== null && _c !== void 0 ? _c : node) : node;
29
+ if (val === undefined || val === null || val === true)
30
+ return true;
31
+ var str = String(val).toLowerCase();
32
+ if (str === "" || str === "true" || str === "1")
33
+ return true;
34
+ return false;
35
+ };
36
+ if (dxf.font) {
37
+ if ("b" in dxf.font && isTruthyFlagNode(dxf.font.b)) {
38
+ set(format, "textFormat.bold", true);
39
+ }
40
+ if ("i" in dxf.font && isTruthyFlagNode(dxf.font.i)) {
41
+ set(format, "textFormat.italic", true);
42
+ }
43
+ if ("u" in dxf.font) {
44
+ // Underline is not a boolean — `<u val="none"/>` means no underline; anything
45
+ // else (including an absent val) is some form of underline.
46
+ var uNode = dxf.font.u;
47
+ var uVal = typeof uNode === "object" ? ((_b = (_a = uNode === null || uNode === void 0 ? void 0 : uNode.a$) === null || _a === void 0 ? void 0 : _a.val) !== null && _b !== void 0 ? _b : uNode === null || uNode === void 0 ? void 0 : uNode["#text"]) : uNode;
48
+ var uStr = uVal === undefined || uVal === null ? "" : String(uVal).toLowerCase();
49
+ if (uStr !== "none") {
50
+ set(format, "textFormat.underline", true);
51
+ }
52
+ }
53
+ if ("strike" in dxf.font && isTruthyFlagNode(dxf.font.strike)) {
54
+ set(format, "textFormat.strikethrough", true);
55
+ }
56
+ if (dxf.font.color)
57
+ set(format, "textFormat.color", extractColor(dxf.font.color, indexedColors));
58
+ }
59
+ // Fill formatting
60
+ if (dxf.fill && dxf.fill.patternFill && dxf.fill.patternFill.bgColor) {
61
+ format.backgroundColor = extractColor(dxf.fill.patternFill.bgColor, indexedColors);
62
+ }
63
+ return format;
64
+ }
65
+ /**
66
+ * Map Excel condition type to our condition type
67
+ * @param cfType Excel conditional formatting type
68
+ * @returns Standardized condition type
69
+ */
70
+ function mapConditionType(cfType) {
71
+ var typeMap = {
72
+ containsText: "TEXT_CONTAINS",
73
+ notContainsText: "TEXT_NOT_CONTAINS",
74
+ beginsWith: "TEXT_STARTS_WITH",
75
+ endsWith: "TEXT_ENDS_WITH",
76
+ containsBlanks: "BLANK",
77
+ notContainsBlanks: "NOT_BLANK",
78
+ containsErrors: "ERROR",
79
+ notContainsErrors: "NOT_ERROR",
80
+ expression: "CUSTOM_FORMULA",
81
+ };
82
+ return typeMap[cfType] || cfType;
83
+ }
84
+ /**
85
+ * Map Excel operator to our condition operator
86
+ * @param operator Excel operator
87
+ * @returns Standardized operator
88
+ */
89
+ function mapOperator(operator) {
90
+ var operatorMap = {
91
+ lessThan: "NUMBER_LESS",
92
+ lessThanOrEqual: "NUMBER_LESS_THAN_EQ",
93
+ equal: "NUMBER_EQ",
94
+ notEqual: "NUMBER_NOT_EQ",
95
+ greaterThanOrEqual: "NUMBER_GREATER_THAN_EQ",
96
+ greaterThan: "NUMBER_GREATER",
97
+ between: "NUMBER_BETWEEN",
98
+ notBetween: "NUMBER_NOT_BETWEEN",
99
+ containsText: "TEXT_CONTAINS",
100
+ };
101
+ return operatorMap[operator] || operator;
102
+ }
103
+ function asArray(entry) {
104
+ if (entry === undefined || entry === null) {
105
+ return [];
106
+ }
107
+ return Array.isArray(entry) ? entry : [entry];
108
+ }
109
+ function extractFormulaText(entry) {
110
+ var _a;
111
+ if (entry === undefined || entry === null) {
112
+ return undefined;
113
+ }
114
+ if (typeof entry === "string" || typeof entry === "number") {
115
+ return String(entry);
116
+ }
117
+ if (typeof entry === "object") {
118
+ var textNode = (typeof entry.t$ === "string" && entry.t$) ||
119
+ (typeof entry._text === "string" && entry._text) ||
120
+ (typeof entry["#text"] === "string" && entry["#text"]);
121
+ var attributeFormula = typeof ((_a = entry === null || entry === void 0 ? void 0 : entry.a$) === null || _a === void 0 ? void 0 : _a["xm:f"]) === "string" ? entry.a$["xm:f"] : undefined;
122
+ if (textNode && !textNode.trim().startsWith("#REF!")) {
123
+ return textNode;
124
+ }
125
+ if (attributeFormula && attributeFormula.trim()) {
126
+ return attributeFormula;
127
+ }
128
+ if (textNode) {
129
+ return textNode;
130
+ }
131
+ }
132
+ return undefined;
133
+ }
134
+ function normalizeFormulaExpression(entry) {
135
+ var text = extractFormulaText(entry);
136
+ if (text === undefined) {
137
+ return undefined;
138
+ }
139
+ var trimmed = text.trim();
140
+ if (!trimmed) {
141
+ return undefined;
142
+ }
143
+ return trimmed.startsWith("=") ? trimmed : "=".concat(trimmed);
144
+ }
145
+ export function parseTopBottomCondition(cfRule, format) {
146
+ var _a, _b, _c, _d, _e, _f, _g, _h;
147
+ if (!cfRule) {
148
+ return undefined;
149
+ }
150
+ var ruleAttributes = (_a = cfRule.a$) !== null && _a !== void 0 ? _a : {};
151
+ var top10Node = (_b = cfRule.top10) !== null && _b !== void 0 ? _b : cfRule["x:top10"];
152
+ var top10Attributes = (_c = top10Node === null || top10Node === void 0 ? void 0 : top10Node.a$) !== null && _c !== void 0 ? _c : {};
153
+ var attributes = __assign(__assign({}, ruleAttributes), top10Attributes);
154
+ var rankAttr = (_f = (_e = (_d = attributes.rank) !== null && _d !== void 0 ? _d : attributes.val) !== null && _e !== void 0 ? _e : attributes.value) !== null && _f !== void 0 ? _f : attributes.rankNumber;
155
+ var rank = rankAttr !== undefined && !Number.isNaN(Number(rankAttr))
156
+ ? Number(rankAttr)
157
+ : 10;
158
+ if (!Number.isFinite(rank) || rank <= 0) {
159
+ return undefined;
160
+ }
161
+ var percentAttr = (_g = attributes.percent) !== null && _g !== void 0 ? _g : attributes.isPercent;
162
+ var bottomAttr = (_h = attributes.bottom) !== null && _h !== void 0 ? _h : attributes.isBottom;
163
+ var isPercent = percentAttr === "1" || percentAttr === "true";
164
+ var isBottom = bottomAttr === "1" || bottomAttr === "true";
165
+ return {
166
+ type: isBottom ? "BOTTOM" : "TOP",
167
+ rank: rank,
168
+ isPercent: isPercent,
169
+ format: format,
170
+ };
171
+ }
172
+ export function parseDistinctRule(ruleType, format) {
173
+ return {
174
+ type: ruleType === "duplicateValues" ? "DUPLICATE" : "UNIQUE",
175
+ format: format,
176
+ };
177
+ }
178
+ /**
179
+ * Parse a boolean rule condition
180
+ * @param cfRule The conditional formatting rule
181
+ * @returns BooleanCondition object
182
+ */
183
+ export function parseBooleanCondition(cfRule) {
184
+ var _a, _b, _c, _d, _e;
185
+ var rawType = cfRule.a$.type;
186
+ if (!rawType) {
187
+ return undefined;
188
+ }
189
+ if (rawType === "timePeriod") {
190
+ var periodMap = {
191
+ today: "DATE_TODAY",
192
+ yesterday: "DATE_YESTERDAY",
193
+ tomorrow: "DATE_TOMORROW",
194
+ last7Days: "DATE_LAST_7_DAYS",
195
+ lastWeek: "DATE_LAST_WEEK",
196
+ thisWeek: "DATE_THIS_WEEK",
197
+ nextWeek: "DATE_NEXT_WEEK",
198
+ lastMonth: "DATE_LAST_MONTH",
199
+ thisMonth: "DATE_THIS_MONTH",
200
+ nextMonth: "DATE_NEXT_MONTH",
201
+ };
202
+ var mapped = periodMap[String((_a = cfRule.a$.timePeriod) !== null && _a !== void 0 ? _a : "")];
203
+ if (!mapped) {
204
+ return undefined;
205
+ }
206
+ return { type: mapped };
207
+ }
208
+ if (rawType === "aboveAverage") {
209
+ var aboveAverage = String((_b = cfRule.a$.aboveAverage) !== null && _b !== void 0 ? _b : "1") !== "0";
210
+ return {
211
+ type: aboveAverage ? "NUMBER_ABOVE_AVERAGE" : "NUMBER_BELOW_AVERAGE",
212
+ };
213
+ }
214
+ var type = mapConditionType(rawType);
215
+ if (!type) {
216
+ return undefined;
217
+ }
218
+ var condition = {
219
+ type: type,
220
+ };
221
+ // Parse operators and values
222
+ var operator = cfRule.a$.operator;
223
+ if (cfRule.a$.operator) {
224
+ condition.type = mapOperator(cfRule.a$.operator);
225
+ }
226
+ // Parse formula values
227
+ var values = [];
228
+ // Handle both with and without namespace prefix
229
+ var formulaEntries = asArray((_c = cfRule.formula) !== null && _c !== void 0 ? _c : cfRule["x:formula"]);
230
+ var formula1Entries = asArray((_d = cfRule.formula1) !== null && _d !== void 0 ? _d : cfRule["x:formula1"]);
231
+ var formula2Entries = asArray((_e = cfRule.formula2) !== null && _e !== void 0 ? _e : cfRule["x:formula2"]);
232
+ var effectiveFormulaEntries = formulaEntries.length > 0
233
+ ? formulaEntries
234
+ : __spreadArray(__spreadArray([], __read(formula1Entries), false), __read(formula2Entries), false);
235
+ if (condition.type === "CUSTOM_FORMULA") {
236
+ effectiveFormulaEntries.forEach(function (entry) {
237
+ var normalized = normalizeFormulaExpression(entry);
238
+ if (normalized !== undefined) {
239
+ values.push({ userEnteredValue: normalized });
240
+ }
241
+ });
242
+ }
243
+ else if (["containsText", "notContainsText", "beginsWith", "endsWith"].includes(rawType)) {
244
+ // Prefer text attribute for text based rules, ignore implementation formula
245
+ if (cfRule.a$.text) {
246
+ values.push({ userEnteredValue: cfRule.a$.text });
247
+ }
248
+ }
249
+ else if ([
250
+ "containsBlanks",
251
+ "notContainsBlanks",
252
+ "containsErrors",
253
+ "notContainsErrors",
254
+ ].includes(rawType)) {
255
+ // Ignore values for these rules
256
+ }
257
+ else {
258
+ // Default behavior (e.g. cellIs): use formula values as literals
259
+ var hasQuotedTextLiteral_1 = false;
260
+ effectiveFormulaEntries.forEach(function (entry) {
261
+ var text = extractFormulaText(entry);
262
+ if (text !== undefined) {
263
+ var trimmed = text.trim();
264
+ var isQuoted = (trimmed.startsWith('"') && trimmed.endsWith('"')) ||
265
+ (trimmed.startsWith("'") && trimmed.endsWith("'"));
266
+ // Check if numeric (simple check)
267
+ var isNumeric = !isNaN(Number(trimmed));
268
+ if (isQuoted) {
269
+ // Quoted string literal -> Scalar string
270
+ hasQuotedTextLiteral_1 = true;
271
+ values.push({ userEnteredValue: trimmed.slice(1, -1) });
272
+ }
273
+ else if (isNumeric) {
274
+ // Numeric literal -> Scalar number
275
+ values.push({ userEnteredValue: trimmed });
276
+ }
277
+ else {
278
+ // Reference or Formula -> Formula value (prepend =)
279
+ var val = trimmed.startsWith("=") ? trimmed : "=".concat(trimmed);
280
+ values.push({ userEnteredValue: val });
281
+ }
282
+ }
283
+ });
284
+ if (values.length === 0 && cfRule.a$.text) {
285
+ hasQuotedTextLiteral_1 = true;
286
+ values.push({ userEnteredValue: cfRule.a$.text });
287
+ }
288
+ if (rawType === "cellIs" &&
289
+ hasQuotedTextLiteral_1 &&
290
+ (operator === "equal" || operator === "notEqual")) {
291
+ condition.type = operator === "equal" ? "TEXT_EQ" : "TEXT_NOT_EQ";
292
+ }
293
+ }
294
+ if (values.length > 0) {
295
+ condition.values = values;
296
+ }
297
+ return condition;
298
+ }
299
+ /**
300
+ * Parse color scale rule
301
+ * @param cfRule The conditional formatting rule
302
+ * @param dxfs The differential formatting styles
303
+ * @param workbookStyles The workbook styles
304
+ * @returns GradientRule object
305
+ */
306
+ function parseColorScaleRule(cfRule, indexedColors) {
307
+ var _a, _b, _c, _d, _e;
308
+ var gradientRule = {};
309
+ // Handle both with and without namespace prefix
310
+ var colorScale = (_a = cfRule.colorScale) !== null && _a !== void 0 ? _a : cfRule["x:colorScale"];
311
+ if (!colorScale)
312
+ return gradientRule;
313
+ var cfColors = (_c = (_b = colorScale.color) !== null && _b !== void 0 ? _b : colorScale["x:color"]) !== null && _c !== void 0 ? _c : [];
314
+ var cfValues = (_e = (_d = colorScale.cfvo) !== null && _d !== void 0 ? _d : colorScale["x:cfvo"]) !== null && _e !== void 0 ? _e : [];
315
+ var colorsArray = Array.isArray(cfColors) ? cfColors : [cfColors];
316
+ var valuesArray = Array.isArray(cfValues) ? cfValues : [cfValues];
317
+ // Parse min point
318
+ if (valuesArray.length > 0 && colorsArray.length > 0) {
319
+ var minValue = valuesArray[0];
320
+ var minValueType = minValue.a$.type.toUpperCase();
321
+ gradientRule.minpoint = {
322
+ color: extractColor(colorsArray[0], indexedColors),
323
+ type: minValueType,
324
+ };
325
+ if (minValue.a$.val) {
326
+ set(gradientRule, "minpoint.value", minValue.a$.val);
327
+ }
328
+ }
329
+ // Parse mid point (if exists)
330
+ if (valuesArray.length > 2 && colorsArray.length > 2) {
331
+ var midValue = valuesArray[1];
332
+ var midValueType = midValue.a$.type.toUpperCase();
333
+ gradientRule.midpoint = {
334
+ color: extractColor(colorsArray[1], indexedColors),
335
+ type: midValueType,
336
+ };
337
+ if (midValue.a$.val) {
338
+ set(gradientRule, "midpoint.value", midValue.a$.val);
339
+ }
340
+ }
341
+ // Parse max point
342
+ if (valuesArray.length > 1 && colorsArray.length > 1) {
343
+ var maxIndex = valuesArray.length - 1;
344
+ var maxValue = valuesArray[maxIndex];
345
+ var maxValueType = maxValue.a$.type.toUpperCase();
346
+ gradientRule.maxpoint = {
347
+ color: extractColor(colorsArray[maxIndex], indexedColors),
348
+ type: maxValueType,
349
+ };
350
+ if (maxValue.a$.val) {
351
+ set(gradientRule, "maxpoint.value", maxValue.a$.val);
352
+ }
353
+ }
354
+ return gradientRule;
355
+ }
356
+ // Map OOXML cfvo type → engine threshold type. OOXML uses lowercase strings;
357
+ // our engine uses uppercase enum values.
358
+ function mapCfvoType(rawType) {
359
+ var t = (rawType !== null && rawType !== void 0 ? rawType : "").toLowerCase();
360
+ if (t === "min")
361
+ return "MIN";
362
+ if (t === "max")
363
+ return "MAX";
364
+ if (t === "num")
365
+ return "NUMBER";
366
+ if (t === "percent")
367
+ return "PERCENT";
368
+ if (t === "percentile")
369
+ return "PERCENTILE";
370
+ if (t === "formula")
371
+ return "FORMULA";
372
+ return "NUMBER";
373
+ }
374
+ function parseCfvoArray(cfvos) {
375
+ if (!cfvos)
376
+ return [];
377
+ var array = Array.isArray(cfvos) ? cfvos : [cfvos];
378
+ return array.map(function (v) {
379
+ var _a, _b;
380
+ return (__assign({ type: mapCfvoType((_a = v === null || v === void 0 ? void 0 : v.a$) === null || _a === void 0 ? void 0 : _a.type) }, (((_b = v === null || v === void 0 ? void 0 : v.a$) === null || _b === void 0 ? void 0 : _b.val) !== undefined ? { value: v.a$.val } : {})));
381
+ });
382
+ }
383
+ var KNOWN_ICON_SET_FAMILIES = new Set([
384
+ "3Arrows",
385
+ "3ArrowsGray",
386
+ "3Flags",
387
+ "3TrafficLights1",
388
+ "3TrafficLights2",
389
+ "3Signs",
390
+ "3Symbols",
391
+ "3Symbols2",
392
+ "4Arrows",
393
+ "4ArrowsGray",
394
+ "4RedToBlack",
395
+ "4Rating",
396
+ "4TrafficLights",
397
+ "5Arrows",
398
+ "5ArrowsGray",
399
+ "5Rating",
400
+ "5Quarters",
401
+ ]);
402
+ function parseIconSetRule(cfRule) {
403
+ var _a, _b, _c, _d, _e, _f;
404
+ var iconSet = (_a = cfRule.iconSet) !== null && _a !== void 0 ? _a : cfRule["x:iconSet"];
405
+ if (!iconSet)
406
+ return null;
407
+ var familyRaw = (_c = (_b = iconSet === null || iconSet === void 0 ? void 0 : iconSet.a$) === null || _b === void 0 ? void 0 : _b.iconSet) !== null && _c !== void 0 ? _c : "3TrafficLights1";
408
+ var family = (KNOWN_ICON_SET_FAMILIES.has(familyRaw) ? familyRaw : "3TrafficLights1");
409
+ var cfvos = (_d = iconSet.cfvo) !== null && _d !== void 0 ? _d : iconSet["x:cfvo"];
410
+ var thresholds = parseCfvoArray(cfvos);
411
+ // OOXML always includes a leading "MIN/0%" cfvo for icon sets; drop it
412
+ // because the engine treats thresholds[i] as the lower bound for bucket i+1.
413
+ var effective = thresholds.length > 1 ? thresholds.slice(1) : thresholds;
414
+ var rule = {
415
+ iconSet: family,
416
+ thresholds: effective,
417
+ };
418
+ if (((_e = iconSet.a$) === null || _e === void 0 ? void 0 : _e.reverse) === "1")
419
+ rule.reverse = true;
420
+ if (((_f = iconSet.a$) === null || _f === void 0 ? void 0 : _f.showValue) === "0")
421
+ rule.showValue = false;
422
+ return rule;
423
+ }
424
+ function parseDataBarRule(cfRule, indexedColors) {
425
+ var _a, _b, _c, _d;
426
+ var dataBar = (_a = cfRule.dataBar) !== null && _a !== void 0 ? _a : cfRule["x:dataBar"];
427
+ if (!dataBar)
428
+ return null;
429
+ var cfvos = parseCfvoArray((_b = dataBar.cfvo) !== null && _b !== void 0 ? _b : dataBar["x:cfvo"]);
430
+ if (cfvos.length < 2)
431
+ return null;
432
+ var colorNode = (_c = dataBar.color) !== null && _c !== void 0 ? _c : dataBar["x:color"];
433
+ var color = extractColor(Array.isArray(colorNode) ? colorNode[0] : colorNode, indexedColors);
434
+ if (!color)
435
+ return null;
436
+ var rule = {
437
+ minpoint: cfvos[0],
438
+ maxpoint: cfvos[cfvos.length - 1],
439
+ color: color,
440
+ };
441
+ if (((_d = dataBar.a$) === null || _d === void 0 ? void 0 : _d.showValue) === "0")
442
+ rule.showValue = false;
443
+ return rule;
444
+ }
445
+ /**
446
+ * Get conditional formatting rules from a sheet
447
+ * @param sheetData The sheet data
448
+ * @param sheetId The sheet ID
449
+ * @param workbookStyles The workbook styles
450
+ * @returns Array of ConditionalFormatRule objects
451
+ */
452
+ export function getConditionalFormattingFromSheet(sheetData, sheetId, workbookStyles, indexedColors) {
453
+ var conditionalFormatRules = [];
454
+ // Get conditional formatting entries
455
+ // Handle both with and without namespace prefix
456
+ var conditionalFormattingEntries = get(sheetData, "worksheet.conditionalFormatting") ||
457
+ get(sheetData, "x:worksheet.x:conditionalFormatting");
458
+ if (!conditionalFormattingEntries)
459
+ return [];
460
+ // Normalize to array
461
+ var cfEntries = Array.isArray(conditionalFormattingEntries)
462
+ ? conditionalFormattingEntries
463
+ : [conditionalFormattingEntries];
464
+ // Get dxfs (differential formatting) if available
465
+ var dxfs = get(workbookStyles, "dxfs.dxf") || [];
466
+ var dxfsArray = Array.isArray(dxfs) ? dxfs : [dxfs];
467
+ // Process each conditional formatting entry
468
+ cfEntries.forEach(function (cfEntry, index) {
469
+ var _a, _b;
470
+ // Get the range(s) this formatting applies to
471
+ var sqref = cfEntry.a$ && cfEntry.a$.sqref;
472
+ if (!sqref)
473
+ return;
474
+ // Split multiple ranges (Excel uses space as delimiter)
475
+ var rangeAddresses = sqref.split(" ");
476
+ var ranges = [];
477
+ // Convert each Excel range to our SheetRange format
478
+ rangeAddresses.forEach(function (address) {
479
+ var range = getRangeFromAddressRef(address);
480
+ if (range) {
481
+ ranges.push(__assign(__assign({}, range), { sheetId: sheetId }));
482
+ }
483
+ });
484
+ if (ranges.length === 0)
485
+ return;
486
+ // Get the formatting rules
487
+ // Handle both with and without namespace prefix
488
+ var cfRules = (_b = (_a = cfEntry.cfRule) !== null && _a !== void 0 ? _a : cfEntry["x:cfRule"]) !== null && _b !== void 0 ? _b : [];
489
+ var cfRulesArray = Array.isArray(cfRules) ? cfRules : [cfRules];
490
+ // Process each rule
491
+ cfRulesArray.forEach(function (cfRule, ruleIndex) {
492
+ var e_1, _a;
493
+ var _b, _c, _d, _e, _f, _g;
494
+ var rule = {
495
+ id: "".concat(sheetId, "_").concat(index, "_").concat(ruleIndex),
496
+ ranges: ranges,
497
+ };
498
+ if (((_b = cfRule.a$) === null || _b === void 0 ? void 0 : _b.priority) !== undefined) {
499
+ var parsedPriority = Number.parseInt(cfRule.a$.priority, 10);
500
+ if (!Number.isNaN(parsedPriority)) {
501
+ rule.priority = parsedPriority;
502
+ }
503
+ }
504
+ if (((_c = cfRule.a$) === null || _c === void 0 ? void 0 : _c.stopIfTrue) === "1") {
505
+ rule.stopIfTrue = true;
506
+ }
507
+ // Check if rule is disabled
508
+ if (cfRule.a$ && cfRule.a$.disabled === "1") {
509
+ rule.enabled = false;
510
+ }
511
+ // Process different rule types
512
+ var ruleType = cfRule.a$.type;
513
+ // Capture the verbatim source representation so the exporter can replay
514
+ // it exactly — preserves cfRule `type` (`containsText`/`beginsWith`/
515
+ // `timePeriod`/etc.), the original operator, the user's formula text,
516
+ // and rule attrs (`text`, `rank`, `percent`, `aboveAverage`, etc.) that
517
+ // would otherwise be lost when the rule round-trips through the
518
+ // synthesizing exporter. For `colorScale`/`dataBar`/`iconSet` rules,
519
+ // the relevant data lives in nested child elements with stop points,
520
+ // colors, and value thresholds — capture those subtrees opaquely so
521
+ // the exporter can re-emit them via XMLBuilder verbatim.
522
+ if (ruleType) {
523
+ var formulaNodes = (_d = cfRule.formula) !== null && _d !== void 0 ? _d : cfRule["x:formula"];
524
+ var formulaArray = formulaNodes
525
+ ? Array.isArray(formulaNodes)
526
+ ? formulaNodes
527
+ : [formulaNodes]
528
+ : [];
529
+ var formulas = [];
530
+ try {
531
+ for (var formulaArray_1 = __values(formulaArray), formulaArray_1_1 = formulaArray_1.next(); !formulaArray_1_1.done; formulaArray_1_1 = formulaArray_1.next()) {
532
+ var fNode = formulaArray_1_1.value;
533
+ var text = extractFormulaText(fNode);
534
+ if (text !== undefined && String(text).length > 0) {
535
+ var trimmed = String(text).trim();
536
+ formulas.push(trimmed.startsWith("=") ? trimmed.slice(1) : trimmed);
537
+ }
538
+ }
539
+ }
540
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
541
+ finally {
542
+ try {
543
+ if (formulaArray_1_1 && !formulaArray_1_1.done && (_a = formulaArray_1.return)) _a.call(formulaArray_1);
544
+ }
545
+ finally { if (e_1) throw e_1.error; }
546
+ }
547
+ var numericAttr = function (key) {
548
+ var _a;
549
+ if (((_a = cfRule.a$) === null || _a === void 0 ? void 0 : _a[key]) === undefined)
550
+ return undefined;
551
+ var n = Number(cfRule.a$[key]);
552
+ return Number.isFinite(n) ? n : undefined;
553
+ };
554
+ var colorScaleNode = (_e = cfRule.colorScale) !== null && _e !== void 0 ? _e : cfRule["x:colorScale"];
555
+ var dataBarNode = (_f = cfRule.dataBar) !== null && _f !== void 0 ? _f : cfRule["x:dataBar"];
556
+ var iconSetNode = (_g = cfRule.iconSet) !== null && _g !== void 0 ? _g : cfRule["x:iconSet"];
557
+ rule.xlsxSource = __assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign({ type: ruleType }, (cfRule.a$.operator
558
+ ? { operator: cfRule.a$.operator }
559
+ : {})), (cfRule.a$.text ? { text: cfRule.a$.text } : {})), (cfRule.a$.timePeriod
560
+ ? { timePeriod: cfRule.a$.timePeriod }
561
+ : {})), (numericAttr("rank") !== undefined
562
+ ? { rank: numericAttr("rank") }
563
+ : {})), (cfRule.a$.percent === "1" ? { percent: true } : {})), (cfRule.a$.bottom === "1" ? { bottom: true } : {})), (cfRule.a$.aboveAverage === "0"
564
+ ? { aboveAverage: false }
565
+ : cfRule.a$.aboveAverage === "1"
566
+ ? { aboveAverage: true }
567
+ : {})), (cfRule.a$.equalAverage === "1"
568
+ ? { equalAverage: true }
569
+ : {})), (numericAttr("stdDev") !== undefined
570
+ ? { stdDev: numericAttr("stdDev") }
571
+ : {})), (formulas.length ? { formulas: formulas } : {})), (colorScaleNode ? { colorScale: colorScaleNode } : {})), (dataBarNode ? { dataBar: dataBarNode } : {})), (iconSetNode ? { iconSet: iconSetNode } : {}));
572
+ }
573
+ // Handle color scale (gradient) rules
574
+ if (ruleType === "colorScale") {
575
+ rule.gradientRule = parseColorScaleRule(cfRule, indexedColors);
576
+ }
577
+ else if (ruleType === "iconSet") {
578
+ var parsed = parseIconSetRule(cfRule);
579
+ if (parsed)
580
+ rule.iconSetRule = parsed;
581
+ }
582
+ else if (ruleType === "dataBar") {
583
+ var parsed = parseDataBarRule(cfRule, indexedColors);
584
+ if (parsed)
585
+ rule.dataBarRule = parsed;
586
+ }
587
+ else {
588
+ // Get formatting from dxf if available
589
+ var format = {};
590
+ if (cfRule.a$.dxfId !== undefined) {
591
+ var dxfId = parseInt(cfRule.a$.dxfId);
592
+ if (dxfId >= 0 && dxfId < dxfsArray.length) {
593
+ format = parseDxfFormat(dxfsArray[dxfId], indexedColors);
594
+ }
595
+ }
596
+ if (ruleType === "top10") {
597
+ var topBottomRule = parseTopBottomCondition(cfRule, format);
598
+ if (topBottomRule) {
599
+ rule.topBottomRule = topBottomRule;
600
+ }
601
+ }
602
+ else if (ruleType === "duplicateValues" ||
603
+ ruleType === "uniqueValues") {
604
+ rule.distinctRule = parseDistinctRule(ruleType, format);
605
+ }
606
+ else {
607
+ var condition = parseBooleanCondition(cfRule);
608
+ if (condition) {
609
+ rule.booleanRule = {
610
+ condition: condition,
611
+ format: format,
612
+ };
613
+ }
614
+ }
615
+ }
616
+ conditionalFormatRules.push(rule);
617
+ });
618
+ });
619
+ return conditionalFormatRules;
620
+ }
@@ -0,0 +1,4 @@
1
+ import type { DataValidationRuleRecord } from "@rowsncolumns/spreadsheet";
2
+ import type { IWorkbookPlugin } from "../../interface";
3
+ export declare const getDataValidationsForSheet: (workbook: IWorkbookPlugin, sheetId: number, sheet_data: any, sheetName?: string) => DataValidationRuleRecord[];
4
+ //# sourceMappingURL=data-validations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-validations.d.ts","sourceRoot":"","sources":["../../../../../excel-parser/plugins/xlsx/data-validations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAIV,wBAAwB,EAEzB,MAAM,2BAA2B,CAAC;AASnC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAwSvD,eAAO,MAAM,0BAA0B,GACrC,UAAU,eAAe,EACzB,SAAS,MAAM,EACf,YAAY,GAAG,EACf,YAAY,MAAM,+BAyRnB,CAAC"}