@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,515 @@
1
+ import { __assign, __read, __spreadArray, __values } from "tslib";
2
+ import { addressToSelection, checkIfStringIsReference, cellToAddress, } from "@rowsncolumns/utils";
3
+ import { uuid } from "@rowsncolumns/utils";
4
+ import { get } from "lodash-es";
5
+ var formatSheetName = function (sheetName) {
6
+ if (!sheetName) {
7
+ return "";
8
+ }
9
+ return "'".concat(sheetName.replace(/'/g, "''"), "'");
10
+ };
11
+ var ensureSheetReference = function (reference, sheetName) {
12
+ if (!sheetName || reference.includes("!")) {
13
+ return reference;
14
+ }
15
+ var prefix = formatSheetName(sheetName);
16
+ return "".concat(prefix, "!").concat(reference);
17
+ };
18
+ var extractFormulaText = function (entry) {
19
+ if (entry === undefined || entry === null) {
20
+ return undefined;
21
+ }
22
+ if (typeof entry === "string" || typeof entry === "number") {
23
+ return String(entry);
24
+ }
25
+ if (typeof entry === "object") {
26
+ if (typeof entry.t$ === "string") {
27
+ return entry.t$;
28
+ }
29
+ if (typeof entry._ === "string") {
30
+ return entry._;
31
+ }
32
+ if (typeof entry["#text"] === "string") {
33
+ return entry["#text"];
34
+ }
35
+ }
36
+ return undefined;
37
+ };
38
+ var normalizeFormulaText = function (entry) {
39
+ var text = extractFormulaText(entry);
40
+ if (text === undefined) {
41
+ return undefined;
42
+ }
43
+ var trimmed = text.trim();
44
+ if (!trimmed)
45
+ return undefined;
46
+ return trimmed.startsWith("=") ? trimmed.slice(1) : trimmed;
47
+ };
48
+ var normalizeOperator = function (operator, hasSecondValue) { return operator || (hasSecondValue ? "between" : "equal"); };
49
+ var mapNumberOperatorToCondition = function (operator, hasSecondValue) {
50
+ var normalized = normalizeOperator(operator, hasSecondValue);
51
+ var operatorMap = {
52
+ between: "NUMBER_BETWEEN",
53
+ notBetween: "NUMBER_NOT_BETWEEN",
54
+ equal: "NUMBER_EQ",
55
+ notEqual: "NUMBER_NOT_EQ",
56
+ greaterThan: "NUMBER_GREATER",
57
+ greaterThanOrEqual: "NUMBER_GREATER_THAN_EQ",
58
+ lessThan: "NUMBER_LESS",
59
+ lessThanOrEqual: "NUMBER_LESS_THAN_EQ",
60
+ };
61
+ return operatorMap[normalized];
62
+ };
63
+ var mapDateOperatorToCondition = function (operator, hasSecondValue) {
64
+ var normalized = normalizeOperator(operator, hasSecondValue);
65
+ var operatorMap = {
66
+ between: "DATE_BETWEEN",
67
+ notBetween: "DATE_NOT_BETWEEN",
68
+ equal: "DATE_EQ",
69
+ notEqual: "DATE_NOT_EQ",
70
+ greaterThan: "DATE_AFTER",
71
+ greaterThanOrEqual: "DATE_ON_OR_AFTER",
72
+ lessThan: "DATE_BEFORE",
73
+ lessThanOrEqual: "DATE_ON_OR_BEFORE",
74
+ };
75
+ return operatorMap[normalized];
76
+ };
77
+ var buildTextLengthFormula = function (operator, baseCellRef, fromExpr, toExpr) {
78
+ var lenExpr = "LEN(".concat(baseCellRef, ")");
79
+ var normalized = normalizeOperator(operator, Boolean(toExpr));
80
+ if (!fromExpr && normalized !== "between" && normalized !== "notBetween") {
81
+ return undefined;
82
+ }
83
+ switch (normalized) {
84
+ case "between":
85
+ if (!fromExpr || !toExpr)
86
+ return undefined;
87
+ return "AND(".concat(lenExpr, ">=").concat(fromExpr, ",").concat(lenExpr, "<=").concat(toExpr, ")");
88
+ case "notBetween":
89
+ if (!fromExpr || !toExpr)
90
+ return undefined;
91
+ return "OR(".concat(lenExpr, "<").concat(fromExpr, ",").concat(lenExpr, ">").concat(toExpr, ")");
92
+ case "equal":
93
+ return "".concat(lenExpr, "=").concat(fromExpr);
94
+ case "notEqual":
95
+ return "".concat(lenExpr, "<>").concat(fromExpr);
96
+ case "greaterThan":
97
+ return "".concat(lenExpr, ">").concat(fromExpr);
98
+ case "greaterThanOrEqual":
99
+ return "".concat(lenExpr, ">=").concat(fromExpr);
100
+ case "lessThan":
101
+ return "".concat(lenExpr, "<").concat(fromExpr);
102
+ case "lessThanOrEqual":
103
+ return "".concat(lenExpr, "<=").concat(fromExpr);
104
+ default:
105
+ return undefined;
106
+ }
107
+ };
108
+ var mapErrorStyle = function (style) {
109
+ if (!style)
110
+ return "stop";
111
+ if (style === "warning")
112
+ return "warning";
113
+ if (style === "information")
114
+ return "information";
115
+ return "stop";
116
+ };
117
+ var NUMBER_VALIDATION_TYPES = new Set(["whole", "decimal", "time"]);
118
+ var escapeRegExp = function (value) {
119
+ return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
120
+ };
121
+ var parseListValues = function (raw) {
122
+ var trimmed = raw.trim();
123
+ if (!trimmed)
124
+ return [];
125
+ return [parseTextLiteral(trimmed)];
126
+ };
127
+ var parseTextLiteral = function (raw) {
128
+ var trimmed = raw.trim();
129
+ if (!trimmed)
130
+ return "";
131
+ if (trimmed.startsWith('"') && trimmed.endsWith('"')) {
132
+ return trimmed.slice(1, -1).replace(/""/g, '"');
133
+ }
134
+ return trimmed;
135
+ };
136
+ var parseCustomValidationFormula = function (rawFormula, baseCellRef) {
137
+ var formula = rawFormula.trim().startsWith("=")
138
+ ? rawFormula.trim().slice(1)
139
+ : rawFormula.trim();
140
+ if (!formula)
141
+ return undefined;
142
+ var baseMatch = /^([A-Z]+)(\d+)$/i.exec(baseCellRef);
143
+ var baseRefPattern = baseMatch
144
+ ? "\\$?".concat(baseMatch[1], "\\$?").concat(baseMatch[2])
145
+ : escapeRegExp(baseCellRef);
146
+ var basePattern = "(?:".concat(baseRefPattern, "|INDIRECT\\(\"RC\",FALSE\\))");
147
+ var textContains = new RegExp("^ISNUMBER\\(SEARCH\\((.+),\\s*".concat(basePattern, "\\)\\)$"), "i");
148
+ var textNotContains = new RegExp("^ISERROR\\(SEARCH\\((.+),\\s*".concat(basePattern, "\\)\\)$"), "i");
149
+ var textStartsWith = new RegExp("^LEFT\\(".concat(basePattern, ",LEN\\((.+)\\)\\)=(.+)$"), "i");
150
+ var textEndsWith = new RegExp("^RIGHT\\(".concat(basePattern, ",LEN\\((.+)\\)\\)=(.+)$"), "i");
151
+ var textIsEmail = new RegExp("^AND\\(ISNUMBER\\(SEARCH\\(\"@\",".concat(basePattern, "\\)\\),ISNUMBER\\(SEARCH\\(\"\\.\",").concat(basePattern, "\\)\\)\\)$"), "i");
152
+ var textIsUrl = new RegExp("^OR\\(LEFT\\(".concat(basePattern, ",7\\)=\"http://\",LEFT\\(").concat(basePattern, ",8\\)=\"https://\"\\)$"), "i");
153
+ var blank = new RegExp("^".concat(basePattern, "=\"\"$"), "i");
154
+ var notBlank = new RegExp("^".concat(basePattern, "<>\"\"$"), "i");
155
+ var boolean = new RegExp("^OR\\(".concat(basePattern, "=TRUE,").concat(basePattern, "=FALSE\\)$"), "i");
156
+ var dateIsValid = new RegExp("^ISNUMBER\\(".concat(basePattern, "\\)$"), "i");
157
+ var previousNumber = new RegExp("^IFERROR\\(".concat(basePattern, "\\s*(>=|<=|>|<)\\s*INDIRECT\\(\"R\\[-1\\]C\",FALSE\\),TRUE\\)$"), "i");
158
+ var oneOfRange = new RegExp("^COUNTIF\\((.+),\\s*".concat(basePattern, "\\)\\s*>\\s*0$"), "i");
159
+ var oneOfList = new RegExp("^OR\\((.+)\\)$", "i");
160
+ var match = formula.match(textContains);
161
+ if (match) {
162
+ var value = parseTextLiteral(match[1]);
163
+ return value
164
+ ? { type: "TEXT_CONTAINS", values: [{ userEnteredValue: value }] }
165
+ : undefined;
166
+ }
167
+ match = formula.match(textNotContains);
168
+ if (match) {
169
+ var value = parseTextLiteral(match[1]);
170
+ return value
171
+ ? { type: "TEXT_NOT_CONTAINS", values: [{ userEnteredValue: value }] }
172
+ : undefined;
173
+ }
174
+ match = formula.match(textStartsWith);
175
+ if (match) {
176
+ var value = parseTextLiteral(match[1]);
177
+ return value
178
+ ? { type: "TEXT_STARTS_WITH", values: [{ userEnteredValue: value }] }
179
+ : undefined;
180
+ }
181
+ match = formula.match(textEndsWith);
182
+ if (match) {
183
+ var value = parseTextLiteral(match[1]);
184
+ return value
185
+ ? { type: "TEXT_ENDS_WITH", values: [{ userEnteredValue: value }] }
186
+ : undefined;
187
+ }
188
+ if (textIsEmail.test(formula)) {
189
+ return { type: "TEXT_IS_EMAIL", values: [] };
190
+ }
191
+ if (textIsUrl.test(formula)) {
192
+ return { type: "TEXT_IS_URL", values: [] };
193
+ }
194
+ if (blank.test(formula)) {
195
+ return { type: "BLANK", values: [] };
196
+ }
197
+ if (notBlank.test(formula)) {
198
+ return { type: "NOT_BLANK", values: [] };
199
+ }
200
+ if (boolean.test(formula)) {
201
+ return { type: "BOOLEAN", values: [] };
202
+ }
203
+ if (dateIsValid.test(formula)) {
204
+ return { type: "DATE_IS_VALID", values: [] };
205
+ }
206
+ match = formula.match(previousNumber);
207
+ if (match) {
208
+ var op = match[1];
209
+ var opMap = {
210
+ ">": "NUMBER_GREATER_THAN_PREVIOUS",
211
+ ">=": "NUMBER_GREATER_THAN_EQ_PREVIOUS",
212
+ "<": "NUMBER_LESS_THAN_PREVIOUS",
213
+ "<=": "NUMBER_LESS_THAN_EQ_PREVIOUS",
214
+ };
215
+ var type = opMap[op];
216
+ return type ? { type: type, values: [] } : undefined;
217
+ }
218
+ match = formula.match(oneOfRange);
219
+ if (match) {
220
+ var rangeRef = match[1].trim();
221
+ return rangeRef
222
+ ? { type: "ONE_OF_RANGE", values: [{ userEnteredValue: rangeRef }] }
223
+ : undefined;
224
+ }
225
+ match = formula.match(oneOfList);
226
+ if (match) {
227
+ var entries = [];
228
+ var entryRegex = new RegExp("".concat(basePattern, "\\s*=\\s*([^,\\)]+)"), "gi");
229
+ var entryMatch = void 0;
230
+ while ((entryMatch = entryRegex.exec(match[1]))) {
231
+ var value = parseTextLiteral(entryMatch[1]);
232
+ if (value) {
233
+ entries.push({ userEnteredValue: value });
234
+ }
235
+ }
236
+ if (entries.length) {
237
+ return { type: "ONE_OF_LIST", values: entries };
238
+ }
239
+ }
240
+ return undefined;
241
+ };
242
+ export var getDataValidationsForSheet = function (workbook, sheetId, sheet_data, sheetName) {
243
+ var e_1, _a;
244
+ var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
245
+ var dataValidations = [];
246
+ // Handle both with and without namespace prefix
247
+ var validation = get(sheet_data, "worksheet.dataValidations.dataValidation") ||
248
+ get(sheet_data, "x:worksheet.x:dataValidations.x:dataValidation") ||
249
+ [];
250
+ var validations = Array.isArray(validation) ? validation : [validation];
251
+ // x14 (worksheet-extLst) validations — what Excel writes when a list rule's
252
+ // source lives on ANOTHER sheet. Ranges arrive via the `<xm:sqref>` CHILD
253
+ // (not the classic `sqref` attribute) and formulas via
254
+ // `<x14:formula1>/<xm:f>`. Normalize each into the classic node shape so
255
+ // the mapping loop below handles both forms identically.
256
+ var extEntry = get(sheet_data, "worksheet.extLst.ext") ||
257
+ get(sheet_data, "x:worksheet.x:extLst.x:ext") ||
258
+ [];
259
+ var exts = Array.isArray(extEntry) ? extEntry : [extEntry];
260
+ var x14Rules = exts
261
+ .flatMap(function (ext) {
262
+ var block = get(ext, "x14:dataValidations.x14:dataValidation") ||
263
+ get(ext, "dataValidations.dataValidation");
264
+ return block ? (Array.isArray(block) ? block : [block]) : [];
265
+ })
266
+ .map(function (node) {
267
+ var _a, _b, _c, _d;
268
+ var sqrefEntry = (_a = node === null || node === void 0 ? void 0 : node["xm:sqref"]) !== null && _a !== void 0 ? _a : node === null || node === void 0 ? void 0 : node.sqref;
269
+ var sqref = (Array.isArray(sqrefEntry) ? sqrefEntry : [sqrefEntry])
270
+ .map(function (entry) { var _a; return (_a = extractFormulaText(entry)) === null || _a === void 0 ? void 0 : _a.trim(); })
271
+ .filter(Boolean)
272
+ .join(" ");
273
+ if (!sqref) {
274
+ return undefined;
275
+ }
276
+ var formulaText = function (formulaNode) {
277
+ var _a, _b;
278
+ if (formulaNode === undefined || formulaNode === null) {
279
+ return undefined;
280
+ }
281
+ return extractFormulaText((_b = (_a = formulaNode === null || formulaNode === void 0 ? void 0 : formulaNode["xm:f"]) !== null && _a !== void 0 ? _a : formulaNode === null || formulaNode === void 0 ? void 0 : formulaNode.f) !== null && _b !== void 0 ? _b : formulaNode);
282
+ };
283
+ return {
284
+ a$: __assign(__assign({}, ((_b = node === null || node === void 0 ? void 0 : node.a$) !== null && _b !== void 0 ? _b : {})), { sqref: sqref }),
285
+ formula1: formulaText((_c = node === null || node === void 0 ? void 0 : node["x14:formula1"]) !== null && _c !== void 0 ? _c : node === null || node === void 0 ? void 0 : node.formula1),
286
+ formula2: formulaText((_d = node === null || node === void 0 ? void 0 : node["x14:formula2"]) !== null && _d !== void 0 ? _d : node === null || node === void 0 ? void 0 : node.formula2),
287
+ };
288
+ })
289
+ .filter(Boolean);
290
+ var namedRanges = workbook.getNamedRanges();
291
+ var _loop_1 = function (rule) {
292
+ var e_2, _p;
293
+ if (!((_b = rule === null || rule === void 0 ? void 0 : rule.a$) === null || _b === void 0 ? void 0 : _b.sqref)) {
294
+ return "continue";
295
+ }
296
+ var sqref = rule.a$.sqref.split(" ");
297
+ var type = rule.a$.type;
298
+ var ranges = [];
299
+ try {
300
+ for (var sqref_1 = (e_2 = void 0, __values(sqref)), sqref_1_1 = sqref_1.next(); !sqref_1_1.done; sqref_1_1 = sqref_1.next()) {
301
+ var ref = sqref_1_1.value;
302
+ var range = (_c = addressToSelection(ref)) === null || _c === void 0 ? void 0 : _c.range;
303
+ if (range) {
304
+ ranges.push(__assign({ sheetId: sheetId }, range));
305
+ }
306
+ }
307
+ }
308
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
309
+ finally {
310
+ try {
311
+ if (sqref_1_1 && !sqref_1_1.done && (_p = sqref_1.return)) _p.call(sqref_1);
312
+ }
313
+ finally { if (e_2) throw e_2.error; }
314
+ }
315
+ if (!ranges.length) {
316
+ return "continue";
317
+ }
318
+ var baseCellRef = (_d = cellToAddress({
319
+ rowIndex: ranges[0].startRowIndex,
320
+ columnIndex: ranges[0].startColumnIndex,
321
+ })) !== null && _d !== void 0 ? _d : "A1";
322
+ var allowBlank = rule.a$.allowBlank === "1";
323
+ var showInputMessage = rule.a$.showInputMessage === "1";
324
+ var showErrorMessage = rule.a$.showErrorMessage === "1";
325
+ var inputMessage = showInputMessage && (rule.a$.prompt || rule.a$.promptTitle)
326
+ ? {
327
+ title: (_e = rule.a$.promptTitle) !== null && _e !== void 0 ? _e : undefined,
328
+ message: (_f = rule.a$.prompt) !== null && _f !== void 0 ? _f : undefined,
329
+ }
330
+ : undefined;
331
+ // showErrorMessage alone (no custom title/text) still means "reject
332
+ // invalid input with Excel's default alert" — keep the alert with just
333
+ // its style so the Stop/Warning behavior survives import.
334
+ var alert_1 = showErrorMessage
335
+ ? {
336
+ style: mapErrorStyle(rule.a$.errorStyle),
337
+ message: rule.a$.error || rule.a$.errorTitle
338
+ ? {
339
+ title: (_g = rule.a$.errorTitle) !== null && _g !== void 0 ? _g : undefined,
340
+ message: (_h = rule.a$.error) !== null && _h !== void 0 ? _h : undefined,
341
+ }
342
+ : undefined,
343
+ }
344
+ : undefined;
345
+ // Prompt-only DV: Excel's "input message" feature attaches a tooltip
346
+ // (and/or an error alert) to a cell range without any validation
347
+ // constraint. These have no `type` attribute. Preserve them so the
348
+ // tooltip survives the round-trip.
349
+ if (!type) {
350
+ if (inputMessage || alert_1) {
351
+ dataValidations.push({
352
+ id: uuid(),
353
+ ranges: ranges,
354
+ allowBlank: allowBlank,
355
+ inputMessage: inputMessage,
356
+ alert: alert_1,
357
+ });
358
+ }
359
+ return "continue";
360
+ }
361
+ var formula1Node = (_j = rule.formula1) !== null && _j !== void 0 ? _j : rule["x:formula1"];
362
+ var formula2Node = (_k = rule.formula2) !== null && _k !== void 0 ? _k : rule["x:formula2"];
363
+ // Capture the source xlsx representation verbatim so the exporter can
364
+ // round-trip the original `type`/`operator`/formulas instead of
365
+ // re-synthesizing from the parsed `condition` (which loses fidelity:
366
+ // `whole` collapses to `decimal`, `textLength` collapses to `custom`,
367
+ // user formulas get `INDIRECT("RC",FALSE)` rewriting). The source
368
+ // formula text is kept with any leading `=` stripped (matches xlsx wire
369
+ // format — `<formula1>` carries the expression without `=`).
370
+ var formula1Verbatim = (function () {
371
+ var text = extractFormulaText(formula1Node);
372
+ if (text === undefined)
373
+ return undefined;
374
+ var trimmed = String(text).trim();
375
+ if (!trimmed)
376
+ return undefined;
377
+ return trimmed.startsWith("=") ? trimmed.slice(1) : trimmed;
378
+ })();
379
+ var formula2Verbatim = (function () {
380
+ var text = extractFormulaText(formula2Node);
381
+ if (text === undefined)
382
+ return undefined;
383
+ var trimmed = String(text).trim();
384
+ if (!trimmed)
385
+ return undefined;
386
+ return trimmed.startsWith("=") ? trimmed.slice(1) : trimmed;
387
+ })();
388
+ var xlsxSource = __assign(__assign(__assign({ type: type }, (rule.a$.operator ? { operator: rule.a$.operator } : {})), (formula1Verbatim !== undefined
389
+ ? { formula1: formula1Verbatim }
390
+ : {})), (formula2Verbatim !== undefined
391
+ ? { formula2: formula2Verbatim }
392
+ : {}));
393
+ if (type === "list") {
394
+ var rawFormula = (_l = extractFormulaText(formula1Node)) !== null && _l !== void 0 ? _l : "";
395
+ var trimmedFormula = String(rawFormula !== null && rawFormula !== void 0 ? rawFormula : "").trim();
396
+ var referenceCandidate_1 = trimmedFormula.startsWith("=")
397
+ ? trimmedFormula.slice(1)
398
+ : trimmedFormula;
399
+ var isOffsetFormula = /^offset\(/i.test(referenceCandidate_1);
400
+ var isNamedRange = !!namedRanges.find(function (n) { return n.name === referenceCandidate_1; });
401
+ var listValues = parseListValues(trimmedFormula);
402
+ var isRef = checkIfStringIsReference(referenceCandidate_1) ||
403
+ isOffsetFormula ||
404
+ isNamedRange;
405
+ var normalizedReference = isRef && !isNamedRange
406
+ ? ensureSheetReference(referenceCandidate_1, sheetName)
407
+ : referenceCandidate_1;
408
+ var values_1 = isRef
409
+ ? [
410
+ {
411
+ userEnteredValue: normalizedReference.startsWith("=")
412
+ ? normalizedReference
413
+ : "=".concat(normalizedReference),
414
+ },
415
+ ]
416
+ : listValues.map(function (value) { return ({ userEnteredValue: value }); });
417
+ if (!values_1.length) {
418
+ values_1.push({ userEnteredValue: trimmedFormula });
419
+ }
420
+ dataValidations.push({
421
+ id: uuid(),
422
+ ranges: ranges,
423
+ condition: {
424
+ type: isRef ? "ONE_OF_RANGE" : "ONE_OF_LIST",
425
+ values: values_1,
426
+ },
427
+ allowBlank: allowBlank,
428
+ displayStyle: rule.a$.showDropDown === "1" ? "plain" : undefined,
429
+ inputMessage: inputMessage,
430
+ alert: alert_1,
431
+ xlsxSource: xlsxSource,
432
+ });
433
+ return "continue";
434
+ }
435
+ var formula1 = normalizeFormulaText(formula1Node);
436
+ var formula2 = normalizeFormulaText(formula2Node);
437
+ if (type === "custom") {
438
+ if (!formula1) {
439
+ return "continue";
440
+ }
441
+ var parsedCondition = parseCustomValidationFormula(formula1, baseCellRef);
442
+ dataValidations.push({
443
+ id: uuid(),
444
+ ranges: ranges,
445
+ condition: parsedCondition !== null && parsedCondition !== void 0 ? parsedCondition : {
446
+ type: "CUSTOM_FORMULA",
447
+ values: [{ userEnteredValue: formula1 }],
448
+ },
449
+ allowBlank: allowBlank,
450
+ inputMessage: inputMessage,
451
+ alert: alert_1,
452
+ xlsxSource: xlsxSource,
453
+ });
454
+ return "continue";
455
+ }
456
+ if (type === "textLength") {
457
+ var lengthFormula = buildTextLengthFormula(rule.a$.operator, baseCellRef, formula1, formula2);
458
+ if (!lengthFormula) {
459
+ return "continue";
460
+ }
461
+ dataValidations.push({
462
+ id: uuid(),
463
+ ranges: ranges,
464
+ condition: {
465
+ type: "CUSTOM_FORMULA",
466
+ values: [{ userEnteredValue: lengthFormula }],
467
+ },
468
+ allowBlank: allowBlank,
469
+ inputMessage: inputMessage,
470
+ alert: alert_1,
471
+ xlsxSource: xlsxSource,
472
+ });
473
+ return "continue";
474
+ }
475
+ var isDateType = type === "date";
476
+ if (!isDateType && !NUMBER_VALIDATION_TYPES.has(type)) {
477
+ return "continue";
478
+ }
479
+ var conditionType = isDateType
480
+ ? mapDateOperatorToCondition(rule.a$.operator, Boolean(formula2))
481
+ : mapNumberOperatorToCondition(rule.a$.operator, Boolean(formula2));
482
+ if (!conditionType || !formula1) {
483
+ return "continue";
484
+ }
485
+ var values = __spreadArray([
486
+ { userEnteredValue: formula1 }
487
+ ], __read((formula2 ? [{ userEnteredValue: formula2 }] : [])), false);
488
+ dataValidations.push({
489
+ id: uuid(),
490
+ ranges: ranges,
491
+ condition: {
492
+ type: conditionType,
493
+ values: values,
494
+ },
495
+ allowBlank: allowBlank,
496
+ inputMessage: inputMessage,
497
+ alert: alert_1,
498
+ xlsxSource: xlsxSource,
499
+ });
500
+ };
501
+ try {
502
+ for (var _m = __values(__spreadArray(__spreadArray([], __read(validations), false), __read(x14Rules), false)), _o = _m.next(); !_o.done; _o = _m.next()) {
503
+ var rule = _o.value;
504
+ _loop_1(rule);
505
+ }
506
+ }
507
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
508
+ finally {
509
+ try {
510
+ if (_o && !_o.done && (_a = _m.return)) _a.call(_m);
511
+ }
512
+ finally { if (e_1) throw e_1.error; }
513
+ }
514
+ return dataValidations;
515
+ };
@@ -0,0 +1,39 @@
1
+ import type { EmbeddedObject, EmbedShapeSpec } from "@rowsncolumns/spreadsheet";
2
+ import { type XMLParser } from "fast-xml-parser";
3
+ import { type StreamingZipParser } from "../../zip-parser-streaming";
4
+ export type EmbeddedObjectWithPosition = EmbeddedObject & {
5
+ isInsideCell?: boolean;
6
+ };
7
+ /**
8
+ * Process different types of image anchors
9
+ * @param anchors The anchor elements from the drawing
10
+ * @param anchorType The type of anchor
11
+ * @param drawingPath The path to the drawing file
12
+ * @param sheetName The name of the worksheet
13
+ * @param zipParser The zip parser instance
14
+ * @param xmlParser The XML parser instance
15
+ * @returns An array of image objects with their properties and binary data
16
+ */
17
+ export declare function processAnchors(anchors: any, anchorType: string, drawingPath: string, sheetId: number, zipParser: StreamingZipParser, xmlParser: XMLParser): Promise<EmbeddedObjectWithPosition[]>;
18
+ /**
19
+ * Whether an `<xdr:sp>` should import as a drawing shape (`EmbedShapeSpec`)
20
+ * rather than a textbox. Text boxes are excluded explicitly (`txBox="1"`), and
21
+ * a rect with no `<xdr:style>` block stays a textbox too — routing those to
22
+ * the shape renderer would repaint plain text notes with the default accent
23
+ * shape style.
24
+ */
25
+ export declare function isDrawingShape(shape: any): boolean;
26
+ /** Parse an `<xdr:sp>` drawing shape into an {@link EmbedShapeSpec}. */
27
+ export declare function parseShapeSpec(shape: any): EmbedShapeSpec;
28
+ /**
29
+ * Determine if a oneCellAnchor image is inside a cell
30
+ * Using EMU values for accurate assessment
31
+ * @param fromColOff Column offset in EMUs
32
+ * @param fromRowOff Row offset in EMUs
33
+ * @param fLocksWithSheet Whether image locks with sheet
34
+ * @param cx Image width in EMUs
35
+ * @param cy Image height in EMUs
36
+ * @returns Boolean indicating if the image is inside a cell
37
+ */
38
+ export declare function determineIfOneCellInsideCell(fromColOff: number, fromRowOff: number, fLocksWithSheet: string, cx: number, cy: number): boolean;
39
+ //# sourceMappingURL=drawing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drawing.d.ts","sourceRoot":"","sources":["../../../../../excel-parser/plugins/xlsx/drawing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,cAAc,EAEd,cAAc,EAWf,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGjD,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAoDrE,MAAM,MAAM,0BAA0B,GAAG,cAAc,GAAG;IACxD,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,GAAG,EACZ,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,kBAAkB,EAC7B,SAAS,EAAE,SAAS,GACnB,OAAO,CAAC,0BAA0B,EAAE,CAAC,CA6dvC;AA6OD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CASlD;AAED,wEAAwE;AACxE,wBAAgB,cAAc,CAAC,KAAK,EAAE,GAAG,GAAG,cAAc,CA8CzD;AA8MD;;;;;;;;;GASG;AACH,wBAAgB,4BAA4B,CAC1C,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,eAAe,EAAE,MAAM,EACvB,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,GACT,OAAO,CAqBT"}