@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,489 @@
1
+ import { __assign, __read, __rest, __values } from "tslib";
2
+ import { cellToAddress } from "@rowsncolumns/utils";
3
+ /**
4
+ * Parse a SPARKLINE formula to extract data range and options
5
+ * Formula format: =SPARKLINE(A1:E1,{"charttype","column","color","#FF0000"})
6
+ */
7
+ export function parseSparklineFormula(formula, sheetName) {
8
+ // Match SPARKLINE formula
9
+ var sparklineMatch = formula.match(/^=SPARKLINE\s*\(\s*([^,)]+)(?:\s*,\s*\{([^}]*)\})?\s*\)$/i);
10
+ if (!sparklineMatch)
11
+ return null;
12
+ var dataRange = sparklineMatch[1].trim();
13
+ var optionsStr = sparklineMatch[2];
14
+ // If the range doesn't have a sheet prefix, add current sheet name
15
+ if (!dataRange.includes("!")) {
16
+ dataRange = "".concat(sheetName, "!").concat(dataRange);
17
+ }
18
+ // Parse options
19
+ var chartType = "line";
20
+ var color;
21
+ var opts = {};
22
+ var parseBool = function (v) {
23
+ var upper = v.toUpperCase();
24
+ if (upper === "TRUE" || upper === "1")
25
+ return true;
26
+ if (upper === "FALSE" || upper === "0")
27
+ return false;
28
+ return undefined;
29
+ };
30
+ var parseNum = function (v) {
31
+ var n = parseFloat(v);
32
+ return Number.isFinite(n) ? n : undefined;
33
+ };
34
+ if (optionsStr) {
35
+ // Tokenize on commas, strip outer quotes. The grammar is loose —
36
+ // Sheets accepts both `{"key","value", "key2","value2"}` and
37
+ // semicolon-separated pair forms — but our parser side always
38
+ // emits the comma form, so that's what we accept on the way back.
39
+ var tokens = optionsStr
40
+ .split(/[,;]/)
41
+ .map(function (t) { return t.trim().replace(/^"|"$/g, ""); });
42
+ for (var i = 0; i < tokens.length - 1; i += 2) {
43
+ var key = tokens[i].toLowerCase();
44
+ var value = tokens[i + 1];
45
+ switch (key) {
46
+ case "charttype":
47
+ if (value === "column")
48
+ chartType = "column";
49
+ else if (value === "winloss")
50
+ chartType = "stacked";
51
+ break;
52
+ case "color":
53
+ color = value;
54
+ break;
55
+ case "emptycells":
56
+ if (value === "gap" || value === "zero" || value === "span") {
57
+ opts.emptyCellsAs = value;
58
+ }
59
+ break;
60
+ case "dateaxis": {
61
+ var b = parseBool(value);
62
+ if (b)
63
+ opts.dateAxis = true;
64
+ break;
65
+ }
66
+ case "markers": {
67
+ var b = parseBool(value);
68
+ if (b)
69
+ opts.markers = true;
70
+ break;
71
+ }
72
+ // Two key spellings are accepted for the highlight flags:
73
+ // the new `high`/`low`/… names that match
74
+ // `SparkLineResultOptions` and the legacy `highpoint`/
75
+ // `lowpoint`/… names that the parser used to emit. Keep both
76
+ // so user-typed formulas and round-tripped files both work.
77
+ case "high":
78
+ case "highpoint": {
79
+ var b = parseBool(value);
80
+ if (b)
81
+ opts.high = true;
82
+ break;
83
+ }
84
+ case "low":
85
+ case "lowpoint": {
86
+ var b = parseBool(value);
87
+ if (b)
88
+ opts.low = true;
89
+ break;
90
+ }
91
+ case "first":
92
+ case "firstpoint": {
93
+ var b = parseBool(value);
94
+ if (b)
95
+ opts.first = true;
96
+ break;
97
+ }
98
+ case "last":
99
+ case "lastpoint": {
100
+ var b = parseBool(value);
101
+ if (b)
102
+ opts.last = true;
103
+ break;
104
+ }
105
+ case "negative":
106
+ case "negativepoints": {
107
+ var b = parseBool(value);
108
+ if (b)
109
+ opts.negative = true;
110
+ break;
111
+ }
112
+ case "colorhigh":
113
+ opts.colorHigh = value;
114
+ break;
115
+ case "colorlow":
116
+ opts.colorLow = value;
117
+ break;
118
+ case "colorfirst":
119
+ opts.colorFirst = value;
120
+ break;
121
+ case "colorlast":
122
+ opts.colorLast = value;
123
+ break;
124
+ case "colormarkers":
125
+ opts.colorMarkers = value;
126
+ break;
127
+ case "colornegative":
128
+ opts.colorNegative = value;
129
+ break;
130
+ case "axis": {
131
+ var b = parseBool(value);
132
+ if (b)
133
+ opts.displayXAxis = true;
134
+ break;
135
+ }
136
+ case "rtl": {
137
+ // Sheets' SPARKLINE option name for OOXML `rightToLeft`.
138
+ var b = parseBool(value);
139
+ if (b)
140
+ opts.rightToLeft = true;
141
+ break;
142
+ }
143
+ case "displayhidden": {
144
+ var b = parseBool(value);
145
+ if (b)
146
+ opts.displayHidden = true;
147
+ break;
148
+ }
149
+ case "lineweight": {
150
+ var n = parseNum(value);
151
+ if (n != null)
152
+ opts.lineWeight = n;
153
+ break;
154
+ }
155
+ case "max": {
156
+ var n = parseNum(value);
157
+ if (n != null)
158
+ opts.manualMax = n;
159
+ break;
160
+ }
161
+ case "min": {
162
+ var n = parseNum(value);
163
+ if (n != null)
164
+ opts.manualMin = n;
165
+ break;
166
+ }
167
+ case "minaxistype":
168
+ if (value === "individual" ||
169
+ value === "group" ||
170
+ value === "custom") {
171
+ opts.minAxisType = value;
172
+ }
173
+ break;
174
+ case "maxaxistype":
175
+ if (value === "individual" ||
176
+ value === "group" ||
177
+ value === "custom") {
178
+ opts.maxAxisType = value;
179
+ }
180
+ break;
181
+ }
182
+ }
183
+ }
184
+ return __assign({ dataRange: dataRange, chartType: chartType, color: color }, opts);
185
+ }
186
+ /**
187
+ * Detect SPARKLINE formulas in a sheet and extract sparkline info
188
+ */
189
+ export function detectSparklines(sheet, rowData) {
190
+ var e_1, _a, e_2, _b;
191
+ var _c, _d;
192
+ var sparklines = [];
193
+ try {
194
+ for (var _e = __values(Object.entries(rowData)), _f = _e.next(); !_f.done; _f = _e.next()) {
195
+ var _g = __read(_f.value, 2), rowIndexStr = _g[0], row = _g[1];
196
+ var rowIndex = parseInt(rowIndexStr, 10);
197
+ try {
198
+ for (var _h = (e_2 = void 0, __values(Object.entries(row))), _j = _h.next(); !_j.done; _j = _h.next()) {
199
+ var _k = __read(_j.value, 2), colIndexStr = _k[0], cell = _k[1];
200
+ var columnIndex = parseInt(colIndexStr, 10);
201
+ var formula = ((_c = cell === null || cell === void 0 ? void 0 : cell.ue) === null || _c === void 0 ? void 0 : _c.fv) || ((_d = cell === null || cell === void 0 ? void 0 : cell.userEnteredValue) === null || _d === void 0 ? void 0 : _d.formulaValue);
202
+ if (formula && formula.toUpperCase().startsWith("=SPARKLINE(")) {
203
+ var parsed = parseSparklineFormula(formula, sheet.title);
204
+ if (parsed) {
205
+ var targetCell = cellToAddress({
206
+ rowIndex: rowIndex,
207
+ columnIndex: columnIndex,
208
+ });
209
+ if (targetCell) {
210
+ var dataRange = parsed.dataRange, chartType = parsed.chartType, color = parsed.color, axis = __rest(parsed, ["dataRange", "chartType", "color"]);
211
+ sparklines.push(__assign({ targetCell: targetCell, dataRange: dataRange, type: chartType, color: color, rowIndex: rowIndex, columnIndex: columnIndex }, axis));
212
+ }
213
+ }
214
+ }
215
+ }
216
+ }
217
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
218
+ finally {
219
+ try {
220
+ if (_j && !_j.done && (_b = _h.return)) _b.call(_h);
221
+ }
222
+ finally { if (e_2) throw e_2.error; }
223
+ }
224
+ }
225
+ }
226
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
227
+ finally {
228
+ try {
229
+ if (_f && !_f.done && (_a = _e.return)) _a.call(_e);
230
+ }
231
+ finally { if (e_1) throw e_1.error; }
232
+ }
233
+ return sparklines;
234
+ }
235
+ /**
236
+ * Group sparklines by their full style fingerprint — type + color +
237
+ * every axis option that affects rendering. Two sparklines only share
238
+ * a `<x14:sparklineGroup>` when every attribute matches, otherwise
239
+ * OOXML's "one set of attrs per group" model would silently merge
240
+ * different settings into one.
241
+ */
242
+ function groupSparklines(sparklines) {
243
+ var e_3, _a;
244
+ var groups = new Map();
245
+ var fingerprintAxis = function (s) {
246
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
247
+ return [
248
+ (_a = s.emptyCellsAs) !== null && _a !== void 0 ? _a : "",
249
+ s.dateAxis ? "1" : "",
250
+ s.markers ? "1" : "",
251
+ s.high ? "1" : "",
252
+ s.low ? "1" : "",
253
+ s.first ? "1" : "",
254
+ s.last ? "1" : "",
255
+ s.negative ? "1" : "",
256
+ s.displayXAxis ? "1" : "",
257
+ s.displayHidden ? "1" : "",
258
+ s.rightToLeft ? "1" : "",
259
+ (_b = s.lineWeight) !== null && _b !== void 0 ? _b : "",
260
+ (_c = s.manualMax) !== null && _c !== void 0 ? _c : "",
261
+ (_d = s.manualMin) !== null && _d !== void 0 ? _d : "",
262
+ (_e = s.minAxisType) !== null && _e !== void 0 ? _e : "",
263
+ (_f = s.maxAxisType) !== null && _f !== void 0 ? _f : "",
264
+ (_g = s.colorHigh) !== null && _g !== void 0 ? _g : "",
265
+ (_h = s.colorLow) !== null && _h !== void 0 ? _h : "",
266
+ (_j = s.colorFirst) !== null && _j !== void 0 ? _j : "",
267
+ (_k = s.colorLast) !== null && _k !== void 0 ? _k : "",
268
+ (_l = s.colorMarkers) !== null && _l !== void 0 ? _l : "",
269
+ (_m = s.colorNegative) !== null && _m !== void 0 ? _m : "",
270
+ ].join("|");
271
+ };
272
+ try {
273
+ for (var sparklines_1 = __values(sparklines), sparklines_1_1 = sparklines_1.next(); !sparklines_1_1.done; sparklines_1_1 = sparklines_1.next()) {
274
+ var sparkline = sparklines_1_1.value;
275
+ var key = "".concat(sparkline.type, "|").concat(sparkline.color || "", "|").concat(fingerprintAxis(sparkline));
276
+ if (!groups.has(key)) {
277
+ groups.set(key, {
278
+ type: sparkline.type,
279
+ color: sparkline.color,
280
+ sparklines: [],
281
+ emptyCellsAs: sparkline.emptyCellsAs,
282
+ dateAxis: sparkline.dateAxis,
283
+ markers: sparkline.markers,
284
+ high: sparkline.high,
285
+ low: sparkline.low,
286
+ first: sparkline.first,
287
+ last: sparkline.last,
288
+ negative: sparkline.negative,
289
+ displayXAxis: sparkline.displayXAxis,
290
+ displayHidden: sparkline.displayHidden,
291
+ rightToLeft: sparkline.rightToLeft,
292
+ lineWeight: sparkline.lineWeight,
293
+ manualMax: sparkline.manualMax,
294
+ manualMin: sparkline.manualMin,
295
+ minAxisType: sparkline.minAxisType,
296
+ maxAxisType: sparkline.maxAxisType,
297
+ colorHigh: sparkline.colorHigh,
298
+ colorLow: sparkline.colorLow,
299
+ colorFirst: sparkline.colorFirst,
300
+ colorLast: sparkline.colorLast,
301
+ colorMarkers: sparkline.colorMarkers,
302
+ colorNegative: sparkline.colorNegative,
303
+ });
304
+ }
305
+ groups.get(key).sparklines.push(sparkline);
306
+ }
307
+ }
308
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
309
+ finally {
310
+ try {
311
+ if (sparklines_1_1 && !sparklines_1_1.done && (_a = sparklines_1.return)) _a.call(sparklines_1);
312
+ }
313
+ finally { if (e_3) throw e_3.error; }
314
+ }
315
+ return Array.from(groups.values());
316
+ }
317
+ /**
318
+ * Convert hex color #RRGGBB to Excel's ARGB format FFRRGGBB
319
+ */
320
+ function toExcelColor(color) {
321
+ // Remove # if present
322
+ var hex = color.replace(/^#/, "");
323
+ // Add alpha channel (FF = fully opaque)
324
+ return "FF".concat(hex.toUpperCase());
325
+ }
326
+ // Default colors for sparklines (Excel theme colors)
327
+ var DEFAULT_SPARKLINE_COLOR = "#4472C4"; // Excel default blue
328
+ var DEFAULT_MARKER_COLOR = "#4472C4"; // Same as line color
329
+ var DEFAULT_HIGH_COLOR = "#56A26B"; // Green for high point
330
+ var DEFAULT_LOW_COLOR = "#C55A5A"; // Red for low point
331
+ var DEFAULT_NEGATIVE_COLOR = "#C55A5A"; // Red for negative values
332
+ /**
333
+ * Build sparkline groups XML for worksheet extLst
334
+ * Returns null if no sparklines detected
335
+ */
336
+ export function buildSparklineGroupsXml(sheet, rowData) {
337
+ var e_4, _a, e_5, _b;
338
+ var _c, _d, _e, _f;
339
+ var sparklines = detectSparklines(sheet, rowData);
340
+ if (sparklines.length === 0) {
341
+ return null;
342
+ }
343
+ var groups = groupSparklines(sparklines);
344
+ var groupsXml = "";
345
+ try {
346
+ for (var groups_1 = __values(groups), groups_1_1 = groups_1.next(); !groups_1_1.done; groups_1_1 = groups_1.next()) {
347
+ var group = groups_1_1.value;
348
+ // Use specified color or default
349
+ var seriesColor = group.color || DEFAULT_SPARKLINE_COLOR;
350
+ // Build sparkline group attributes. Each axis option round-trips
351
+ // 1:1 with its OOXML attribute name. When a value was explicitly
352
+ // parsed off the formula we emit it verbatim; otherwise we keep
353
+ // the legacy "sensible defaults" path so plain `SPARKLINE(range)`
354
+ // formulas still get readable highlights when exported.
355
+ var groupAttrs = "";
356
+ if (group.type !== "line") {
357
+ groupAttrs += " type=\"".concat(group.type, "\"");
358
+ }
359
+ if (group.lineWeight != null) {
360
+ groupAttrs += " lineWeight=\"".concat(group.lineWeight, "\"");
361
+ }
362
+ if (group.dateAxis)
363
+ groupAttrs += " dateAxis=\"1\"";
364
+ if (group.emptyCellsAs) {
365
+ groupAttrs += " displayEmptyCellsAs=\"".concat(group.emptyCellsAs, "\"");
366
+ }
367
+ if (group.markers)
368
+ groupAttrs += " markers=\"1\"";
369
+ if (group.high)
370
+ groupAttrs += " high=\"1\"";
371
+ if (group.low)
372
+ groupAttrs += " low=\"1\"";
373
+ if (group.first)
374
+ groupAttrs += " first=\"1\"";
375
+ if (group.last)
376
+ groupAttrs += " last=\"1\"";
377
+ if (group.negative)
378
+ groupAttrs += " negative=\"1\"";
379
+ if (group.displayXAxis)
380
+ groupAttrs += " displayXAxis=\"1\"";
381
+ if (group.displayHidden)
382
+ groupAttrs += " displayHidden=\"1\"";
383
+ if (group.rightToLeft)
384
+ groupAttrs += " rightToLeft=\"1\"";
385
+ if (group.manualMax != null)
386
+ groupAttrs += " manualMax=\"".concat(group.manualMax, "\"");
387
+ if (group.manualMin != null)
388
+ groupAttrs += " manualMin=\"".concat(group.manualMin, "\"");
389
+ if (group.minAxisType)
390
+ groupAttrs += " minAxisType=\"".concat(group.minAxisType, "\"");
391
+ if (group.maxAxisType)
392
+ groupAttrs += " maxAxisType=\"".concat(group.maxAxisType, "\"");
393
+ // Legacy "sensible defaults" — only when the formula didn't
394
+ // explicitly set markers / high / low / negative. Preserves the
395
+ // existing behavior for plain `SPARKLINE(range)` formulas that
396
+ // came through without options.
397
+ var hasExplicitHighlights = group.markers ||
398
+ group.high ||
399
+ group.low ||
400
+ group.first ||
401
+ group.last ||
402
+ group.negative;
403
+ if (!hasExplicitHighlights) {
404
+ if (group.type === "line") {
405
+ groupAttrs += " markers=\"1\" high=\"1\" low=\"1\"";
406
+ }
407
+ else if (group.type === "column" || group.type === "stacked") {
408
+ groupAttrs += " high=\"1\" low=\"1\" negative=\"1\"";
409
+ }
410
+ }
411
+ // Build color elements. Per-point colors come from the original
412
+ // workbook when present (round-trip path); otherwise we fall back
413
+ // to readable defaults so plain `SPARKLINE(range)` formulas still
414
+ // get sensible highlights.
415
+ var colorsXml = "";
416
+ colorsXml += "<x14:colorSeries rgb=\"".concat(toExcelColor(seriesColor), "\"/>");
417
+ if (group.type === "column" || group.type === "stacked") {
418
+ colorsXml += "<x14:colorNegative rgb=\"".concat(toExcelColor((_c = group.colorNegative) !== null && _c !== void 0 ? _c : DEFAULT_NEGATIVE_COLOR), "\"/>");
419
+ }
420
+ else if (group.colorNegative) {
421
+ colorsXml += "<x14:colorNegative rgb=\"".concat(toExcelColor(group.colorNegative), "\"/>");
422
+ }
423
+ if (group.type === "line") {
424
+ colorsXml += "<x14:colorMarkers rgb=\"".concat(toExcelColor((_d = group.colorMarkers) !== null && _d !== void 0 ? _d : seriesColor), "\"/>");
425
+ }
426
+ else if (group.colorMarkers) {
427
+ colorsXml += "<x14:colorMarkers rgb=\"".concat(toExcelColor(group.colorMarkers), "\"/>");
428
+ }
429
+ if (group.colorFirst) {
430
+ colorsXml += "<x14:colorFirst rgb=\"".concat(toExcelColor(group.colorFirst), "\"/>");
431
+ }
432
+ if (group.colorLast) {
433
+ colorsXml += "<x14:colorLast rgb=\"".concat(toExcelColor(group.colorLast), "\"/>");
434
+ }
435
+ colorsXml += "<x14:colorHigh rgb=\"".concat(toExcelColor((_e = group.colorHigh) !== null && _e !== void 0 ? _e : DEFAULT_HIGH_COLOR), "\"/>");
436
+ colorsXml += "<x14:colorLow rgb=\"".concat(toExcelColor((_f = group.colorLow) !== null && _f !== void 0 ? _f : DEFAULT_LOW_COLOR), "\"/>");
437
+ // Build individual sparklines
438
+ var sparklinesXml = "";
439
+ try {
440
+ for (var _g = (e_5 = void 0, __values(group.sparklines)), _h = _g.next(); !_h.done; _h = _g.next()) {
441
+ var sparkline = _h.value;
442
+ sparklinesXml += "<x14:sparkline><xm:f>".concat(sparkline.dataRange, "</xm:f><xm:sqref>").concat(sparkline.targetCell, "</xm:sqref></x14:sparkline>");
443
+ }
444
+ }
445
+ catch (e_5_1) { e_5 = { error: e_5_1 }; }
446
+ finally {
447
+ try {
448
+ if (_h && !_h.done && (_b = _g.return)) _b.call(_g);
449
+ }
450
+ finally { if (e_5) throw e_5.error; }
451
+ }
452
+ groupsXml += "<x14:sparklineGroup".concat(groupAttrs, ">").concat(colorsXml, "<x14:sparklines>").concat(sparklinesXml, "</x14:sparklines></x14:sparklineGroup>");
453
+ }
454
+ }
455
+ catch (e_4_1) { e_4 = { error: e_4_1 }; }
456
+ finally {
457
+ try {
458
+ if (groups_1_1 && !groups_1_1.done && (_a = groups_1.return)) _a.call(groups_1);
459
+ }
460
+ finally { if (e_4) throw e_4.error; }
461
+ }
462
+ return "<ext uri=\"{05C60535-1F16-4fd2-B633-F4F36F0B64E0}\" xmlns:x14=\"http://schemas.microsoft.com/office/spreadsheetml/2009/9/main\" xmlns:xm=\"http://schemas.microsoft.com/office/excel/2006/main\"><x14:sparklineGroups xmlns:xm=\"http://schemas.microsoft.com/office/excel/2006/main\">".concat(groupsXml, "</x14:sparklineGroups></ext>");
463
+ }
464
+ /**
465
+ * Build combined extLst for worksheet (sparklines + slicers)
466
+ */
467
+ export function buildWorksheetExtLst(sparklineExtXml, slicerExtXml) {
468
+ var parts = [];
469
+ if (sparklineExtXml) {
470
+ parts.push(sparklineExtXml);
471
+ }
472
+ if (slicerExtXml) {
473
+ parts.push(slicerExtXml);
474
+ }
475
+ if (parts.length === 0) {
476
+ return "";
477
+ }
478
+ return "<extLst>".concat(parts.join(""), "</extLst>");
479
+ }
480
+ /**
481
+ * Check if a cell has a SPARKLINE formula and should NOT be exported as a formula
482
+ * (the formula will be converted to native Excel sparkline instead)
483
+ */
484
+ export function isSparklineCell(cell) {
485
+ var _a, _b;
486
+ var formula = ((_a = cell === null || cell === void 0 ? void 0 : cell.ue) === null || _a === void 0 ? void 0 : _a.fv) || ((_b = cell === null || cell === void 0 ? void 0 : cell.userEnteredValue) === null || _b === void 0 ? void 0 : _b.formulaValue);
487
+ return (typeof formula === "string" &&
488
+ formula.toUpperCase().startsWith("=SPARKLINE("));
489
+ }
@@ -0,0 +1,93 @@
1
+ import type { CellData, CellFormat, Color, TextFormat } from "@rowsncolumns/spreadsheet";
2
+ import { type CellXfs } from "@rowsncolumns/spreadsheet-state";
3
+ type NamedCellStyleRecord = {
4
+ name: string;
5
+ xfId: number;
6
+ builtinId?: number;
7
+ iLevel?: number;
8
+ hidden?: boolean;
9
+ customBuiltin?: boolean;
10
+ };
11
+ type CustomTableStyleRecord = {
12
+ name: string;
13
+ pivot?: boolean;
14
+ elements: Array<{
15
+ type: string;
16
+ size?: number;
17
+ backgroundColor?: Color;
18
+ textColor?: Color;
19
+ bold?: boolean;
20
+ italic?: boolean;
21
+ }>;
22
+ };
23
+ export declare class StyleBuilder {
24
+ private numberFormats;
25
+ private fonts;
26
+ private fills;
27
+ private borders;
28
+ private namedCellStyles;
29
+ private customTableStyles;
30
+ /**
31
+ * Replace the named-cell-styles list emitted in `<cellStyles>`.
32
+ * Used for round-tripping the OOXML Heading 1 / Accent / Total /
33
+ * Good-Bad-Neutral gallery — the importer parses these from
34
+ * `xl/styles.xml` and exposes them on `workbook.workbookStyles.
35
+ * namedCellStyles`; hosts can forward that list back here.
36
+ *
37
+ * Excel requires at least a "Normal" entry pointing at xfId=0,
38
+ * builtinId=0 — when the supplied list doesn't contain one, we
39
+ * keep the default at the head of the list rather than risk
40
+ * emitting a file Excel rejects.
41
+ */
42
+ setNamedCellStyles(entries: NamedCellStyleRecord[]): void;
43
+ /**
44
+ * Replace the user-authored table-style list emitted in the
45
+ * `<tableStyles>` block. The exporter registers each element's
46
+ * format as a dxf at `toXml()` time, so callers pass self-contained
47
+ * records (no dxfIds to manage). Used for round-tripping the
48
+ * OOXML custom-table-style list from
49
+ * `workbook.workbookStyles.getCustomTableStyleExports()`.
50
+ */
51
+ setCustomTableStyles(entries: CustomTableStyleRecord[]): void;
52
+ private cellXfs;
53
+ private fontMap;
54
+ private fillMap;
55
+ private borderMap;
56
+ private formatMap;
57
+ private xfMap;
58
+ private dxfs;
59
+ private dxfMap;
60
+ constructor();
61
+ /**
62
+ * Replace the workbook default font (font id 0 — what every cell without
63
+ * an explicit font inherits). Callers pass the source workbook's parsed
64
+ * default (`WorkBook.getDefaultFont()`) so an imported workbook keeps its
65
+ * default typeface/size instead of the hardcoded Calibri 11. Must be
66
+ * called before any cell registration: cells explicitly styled with the
67
+ * old default must not collapse into font id 0.
68
+ */
69
+ setDefaultFont(format?: TextFormat | null): void;
70
+ registerCell<T extends CellData>(cell: T | null | undefined, cellXfs: CellXfs | null | undefined,
71
+ /**
72
+ * Number format to use when the cell itself has none. Used by the
73
+ * exporter to layer in the precedent-derived number format on formula
74
+ * cells so Excel displays them correctly without requiring a recalc.
75
+ */
76
+ derivedNumberFormat?: CellFormat["numberFormat"]): number;
77
+ registerDifferentialFormat(format?: CellFormat | null): number | undefined;
78
+ private getNumberFormatId;
79
+ private getFontId;
80
+ private getFillId;
81
+ private getBorderId;
82
+ private serializeFont;
83
+ private buildFontRecord;
84
+ private buildFontXml;
85
+ private buildFillXml;
86
+ private buildGradientFillXml;
87
+ private serializeFill;
88
+ private serializeBorder;
89
+ private serializeDxf;
90
+ toXml(): string;
91
+ }
92
+ export {};
93
+ //# sourceMappingURL=style-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"style-builder.d.ts","sourceRoot":"","sources":["../../../../exporter/xlsx/style-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,QAAQ,EACR,UAAU,EACV,KAAK,EAEL,UAAU,EACX,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,iCAAiC,CAAC;AAwF/D,KAAK,oBAAoB,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AAKF,KAAK,sBAAsB,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,KAAK,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,eAAe,CAAC,EAAE,KAAK,CAAC;QACxB,SAAS,CAAC,EAAE,KAAK,CAAC;QAClB,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,MAAM,CAAC,EAAE,OAAO,CAAC;KAClB,CAAC,CAAC;CACJ,CAAC;AAEF,qBAAa,YAAY;IACvB,OAAO,CAAC,aAAa,CAAsB;IAC3C,OAAO,CAAC,KAAK,CAKX;IACF,OAAO,CAAC,KAAK,CAA+D;IAC5E,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,eAAe,CAErB;IACF,OAAO,CAAC,iBAAiB,CAAgC;IAEzD;;;;;;;;;;;OAWG;IACH,kBAAkB,CAAC,OAAO,EAAE,oBAAoB,EAAE;IAUlD;;;;;;;OAOG;IACH,oBAAoB,CAAC,OAAO,EAAE,sBAAsB,EAAE;IAOtD,OAAO,CAAC,OAAO,CAOb;IAEF,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,SAAS,CAA6B;IAC9C,OAAO,CAAC,SAAS,CAA6B;IAC9C,OAAO,CAAC,KAAK,CAA6B;IAC1C,OAAO,CAAC,IAAI,CAAmB;IAC/B,OAAO,CAAC,MAAM,CAA6B;;IAU3C;;;;;;;OAOG;IACH,cAAc,CAAC,MAAM,CAAC,EAAE,UAAU,GAAG,IAAI;IASzC,YAAY,CAAC,CAAC,SAAS,QAAQ,EAC7B,IAAI,EAAE,CAAC,GAAG,IAAI,GAAG,SAAS,EAC1B,OAAO,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS;IACnC;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,UAAU,CAAC,cAAc,CAAC,GAC/C,MAAM;IAsET,0BAA0B,CAAC,MAAM,CAAC,EAAE,UAAU,GAAG,IAAI;IA0BrD,OAAO,CAAC,iBAAiB;IAoCzB,OAAO,CAAC,SAAS;IAcjB,OAAO,CAAC,SAAS;IA2DjB,OAAO,CAAC,WAAW;IA2BnB,OAAO,CAAC,aAAa;IAarB,OAAO,CAAC,eAAe;IA8BvB,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,YAAY;IAqCpB,OAAO,CAAC,oBAAoB;IAyB5B,OAAO,CAAC,aAAa;IAerB,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,YAAY;IAMpB,KAAK;CAuJN"}