@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,306 @@
1
+ /**
2
+ * Power Query part re-emission — the export half of the parser's `getPowerQuery()` preservation,
3
+ * and the JS mirror of the Rust engine's `rnc-export` `inject_power_query` pass (same rules, same
4
+ * envelope shape).
5
+ *
6
+ * Runs as a post-pass over the exporter's assembled `files` map (just before zipping):
7
+ *
8
+ * - `customXml/item{N}.xml` (the `<DataMashup>` blob) + `customXml/itemProps{N}.xml` + the item's
9
+ * rels, related from `xl/workbook.xml`.
10
+ * - `xl/connections.xml`, verbatim.
11
+ * - `xl/queryTables/queryTable{N}.xml`, re-attached to the regenerated table part when the exported
12
+ * table still matches the imported one (same `displayName`, same ordered column names): the table
13
+ * part gains `tableType="queryTable"`, its `<tableColumn>`s get their ORIGINAL ids back (the
14
+ * verbatim queryTable part references them) plus their `queryTableFieldId`s, and a
15
+ * table→queryTable rel is written. A table that was renamed or had columns
16
+ * added/removed/reordered degrades to a plain table (its queryTable part is dropped) while the
17
+ * query itself (DataMashup + connection) still round-trips — Excel's own
18
+ * connection-without-load-target state.
19
+ */
20
+ import { __values } from "tslib";
21
+ import { hasPowerQueryParts, } from "../../power-query";
22
+ var CUSTOM_XML_REL_TYPE = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXml";
23
+ var CUSTOM_XML_PROPS_REL_TYPE = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXmlProps";
24
+ var CONNECTIONS_REL_TYPE = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/connections";
25
+ var QUERY_TABLE_REL_TYPE = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/queryTable";
26
+ var CUSTOM_XML_PROPS_CT = "application/vnd.openxmlformats-officedocument.customXmlProperties+xml";
27
+ var CONNECTIONS_CT = "application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml";
28
+ var QUERY_TABLE_CT = "application/vnd.openxmlformats-officedocument.spreadsheetml.queryTable+xml";
29
+ var XML_DECLARATION = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>";
30
+ var encoder = new TextEncoder();
31
+ var decoder = new TextDecoder();
32
+ /**
33
+ * Apply the preserved Power Query parts onto the exporter's `files` map (part name → bytes).
34
+ * No-op when the envelope is empty, keeping every other export byte-for-byte unchanged.
35
+ */
36
+ export var applyPowerQueryParts = function (files, powerQuery) {
37
+ var e_1, _a;
38
+ var _b, _c;
39
+ if (!hasPowerQueryParts(powerQuery)) {
40
+ return;
41
+ }
42
+ var customXmlParts = (_b = powerQuery.customXmlParts) !== null && _b !== void 0 ? _b : [];
43
+ var queryTables = (_c = powerQuery.queryTables) !== null && _c !== void 0 ? _c : [];
44
+ // Re-attach queryTable parts to still-matching regenerated table parts.
45
+ var used = new Set();
46
+ var relinkedCount = 0;
47
+ var tableEntries = Object.keys(files)
48
+ .filter(function (name) { return /^xl\/tables\/table\d+\.xml$/.test(name); })
49
+ .sort(function (a, b) {
50
+ return Number(a.replace(/\D/g, "")) - Number(b.replace(/\D/g, ""));
51
+ });
52
+ var _loop_1 = function (entryName) {
53
+ var xml = decoder.decode(files[entryName]);
54
+ var displayName = tagAttr(openTag(xml, "<table "), "displayName");
55
+ if (!displayName)
56
+ return "continue";
57
+ var wanted = unescapeXml(displayName);
58
+ var matchIndex = queryTables.findIndex(function (qt, i) {
59
+ return !used.has(i) &&
60
+ qt.tableTitle === wanted &&
61
+ columnsMatch(xml, qt) &&
62
+ qt.columns.every(function (c) { return c.queryTableFieldId != null; });
63
+ });
64
+ if (matchIndex === -1)
65
+ return "continue";
66
+ var qt = queryTables[matchIndex];
67
+ var patched = patchTableXml(xml, qt);
68
+ if (!patched)
69
+ return "continue";
70
+ used.add(matchIndex);
71
+ relinkedCount += 1;
72
+ files[entryName] = encoder.encode(patched);
73
+ files["xl/queryTables/queryTable".concat(relinkedCount, ".xml")] = encoder.encode(qt.partXml);
74
+ // The exporter writes no rels for table parts, so this is always a fresh file.
75
+ var file = entryName.substring(entryName.lastIndexOf("/") + 1);
76
+ files["xl/tables/_rels/".concat(file, ".rels")] = encoder.encode("".concat(XML_DECLARATION, "<Relationships xmlns=\"http://schemas.openxmlformats.org/package/2006/relationships\">").concat(relationship("rId1", QUERY_TABLE_REL_TYPE, "../queryTables/queryTable".concat(relinkedCount, ".xml")), "</Relationships>"));
77
+ };
78
+ try {
79
+ for (var tableEntries_1 = __values(tableEntries), tableEntries_1_1 = tableEntries_1.next(); !tableEntries_1_1.done; tableEntries_1_1 = tableEntries_1.next()) {
80
+ var entryName = tableEntries_1_1.value;
81
+ _loop_1(entryName);
82
+ }
83
+ }
84
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
85
+ finally {
86
+ try {
87
+ if (tableEntries_1_1 && !tableEntries_1_1.done && (_a = tableEntries_1.return)) _a.call(tableEntries_1);
88
+ }
89
+ finally { if (e_1) throw e_1.error; }
90
+ }
91
+ // DataMashup customXml items (+ props + the item's rels).
92
+ customXmlParts.forEach(function (item, index) {
93
+ var n = index + 1;
94
+ files["customXml/item".concat(n, ".xml")] = encoder.encode(item.itemXml);
95
+ if (item.propsXml) {
96
+ files["customXml/itemProps".concat(n, ".xml")] = encoder.encode(item.propsXml);
97
+ files["customXml/_rels/item".concat(n, ".xml.rels")] = encoder.encode("".concat(XML_DECLARATION, "<Relationships xmlns=\"http://schemas.openxmlformats.org/package/2006/relationships\">").concat(relationship("rId1", CUSTOM_XML_PROPS_REL_TYPE, "itemProps".concat(n, ".xml")), "</Relationships>"));
98
+ }
99
+ });
100
+ var writeConnections = Boolean(powerQuery.connectionsXml) && !files["xl/connections.xml"];
101
+ if (writeConnections) {
102
+ files["xl/connections.xml"] = encoder.encode(powerQuery.connectionsXml);
103
+ }
104
+ // Workbook rels: one customXml rel per DataMashup item + the connections rel.
105
+ if (customXmlParts.length || writeConnections) {
106
+ var relsKey = "xl/_rels/workbook.xml.rels";
107
+ var existing = files[relsKey] ? decoder.decode(files[relsKey]) : "";
108
+ var nextRelId_1 = seededRelIdGen(existing);
109
+ var extra_1 = "";
110
+ customXmlParts.forEach(function (_, index) {
111
+ extra_1 += relationship(nextRelId_1(), CUSTOM_XML_REL_TYPE, "../customXml/item".concat(index + 1, ".xml"));
112
+ });
113
+ if (writeConnections) {
114
+ extra_1 += relationship(nextRelId_1(), CONNECTIONS_REL_TYPE, "connections.xml");
115
+ }
116
+ files[relsKey] = encoder.encode(existing.includes("</Relationships>")
117
+ ? existing.replace("</Relationships>", "".concat(extra_1, "</Relationships>"))
118
+ : "".concat(XML_DECLARATION, "<Relationships xmlns=\"http://schemas.openxmlformats.org/package/2006/relationships\">").concat(extra_1, "</Relationships>"));
119
+ }
120
+ // Content types: itemProps / connections / queryTable overrides. `customXml/item{N}.xml` needs
121
+ // no Override — the exporter's `<Default Extension="xml">` covers it.
122
+ var ctExtra = "";
123
+ customXmlParts.forEach(function (item, index) {
124
+ if (item.propsXml) {
125
+ ctExtra += "<Override PartName=\"/customXml/itemProps".concat(index + 1, ".xml\" ContentType=\"").concat(CUSTOM_XML_PROPS_CT, "\"/>");
126
+ }
127
+ });
128
+ if (writeConnections) {
129
+ ctExtra += "<Override PartName=\"/xl/connections.xml\" ContentType=\"".concat(CONNECTIONS_CT, "\"/>");
130
+ }
131
+ for (var n = 1; n <= relinkedCount; n++) {
132
+ ctExtra += "<Override PartName=\"/xl/queryTables/queryTable".concat(n, ".xml\" ContentType=\"").concat(QUERY_TABLE_CT, "\"/>");
133
+ }
134
+ if (ctExtra) {
135
+ var ctKey = "[Content_Types].xml";
136
+ var ct = files[ctKey] ? decoder.decode(files[ctKey]) : "";
137
+ if (ct.includes("</Types>")) {
138
+ files[ctKey] = encoder.encode(ct.replace("</Types>", "".concat(ctExtra, "</Types>")));
139
+ }
140
+ }
141
+ };
142
+ /** `rId{N}` generator seeded past the highest id already present in a rels document. */
143
+ var seededRelIdGen = function (relsXml) {
144
+ var e_2, _a;
145
+ var max = 0;
146
+ var matches = relsXml.matchAll(/Id="rId(\d+)"/g);
147
+ try {
148
+ for (var matches_1 = __values(matches), matches_1_1 = matches_1.next(); !matches_1_1.done; matches_1_1 = matches_1.next()) {
149
+ var match = matches_1_1.value;
150
+ max = Math.max(max, Number(match[1]));
151
+ }
152
+ }
153
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
154
+ finally {
155
+ try {
156
+ if (matches_1_1 && !matches_1_1.done && (_a = matches_1.return)) _a.call(matches_1);
157
+ }
158
+ finally { if (e_2) throw e_2.error; }
159
+ }
160
+ return function () { return "rId".concat(++max); };
161
+ };
162
+ var relationship = function (id, type, target) {
163
+ return "<Relationship Id=\"".concat(id, "\" Type=\"").concat(type, "\" Target=\"").concat(escapeXmlAttr(target), "\"/>");
164
+ };
165
+ /**
166
+ * Whether the generated table part's ordered `<tableColumn name=…>` list equals the preserved one.
167
+ */
168
+ var columnsMatch = function (tableXml, qt) {
169
+ if (!qt.columns.length) {
170
+ return false;
171
+ }
172
+ var generated = columnNames(tableXml);
173
+ return (generated.length === qt.columns.length &&
174
+ generated.every(function (name, index) { return name === qt.columns[index].name; }));
175
+ };
176
+ /**
177
+ * The ordered (unescaped) `name` attributes of every `<tableColumn>` open tag. The needle keeps its
178
+ * trailing space so the plural `<tableColumns count=…>` container never matches (a `<tableColumn>`
179
+ * always carries at least its required `id`/`name` attributes).
180
+ */
181
+ var columnNames = function (tableXml) {
182
+ var names = [];
183
+ var rest = tableXml;
184
+ for (;;) {
185
+ var pos = rest.indexOf("<tableColumn ");
186
+ if (pos === -1)
187
+ break;
188
+ var tail = rest.substring(pos);
189
+ var end = tail.indexOf(">");
190
+ var tag = end === -1 ? tail : tail.substring(0, end);
191
+ var name_1 = tagAttr(tag, "name");
192
+ if (name_1 != null) {
193
+ names.push(unescapeXml(name_1));
194
+ }
195
+ rest = end === -1 ? "" : tail.substring(end);
196
+ }
197
+ return names;
198
+ };
199
+ /**
200
+ * Patch a matched table part: `tableType="queryTable"` on `<table>`, original ids +
201
+ * `queryTableFieldId`s on each `<tableColumn>` (the verbatim queryTable part references the
202
+ * original column ids). `undefined` when the XML doesn't have the expected shape (caller degrades
203
+ * to the plain table).
204
+ */
205
+ var patchTableXml = function (xml, qt) {
206
+ var e_3, _a;
207
+ var _b;
208
+ var tableStart = xml.indexOf("<table ");
209
+ if (tableStart === -1)
210
+ return undefined;
211
+ var openEndRel = xml.substring(tableStart).indexOf(">");
212
+ if (openEndRel === -1)
213
+ return undefined;
214
+ var openTagText = xml.substring(tableStart, tableStart + openEndRel);
215
+ if (openTagText.includes("tableType="))
216
+ return undefined;
217
+ var out = "".concat(xml.substring(0, tableStart + openEndRel), " tableType=\"queryTable\"");
218
+ var rest = xml.substring(tableStart + openEndRel);
219
+ try {
220
+ for (var _c = __values(qt.columns), _d = _c.next(); !_d.done; _d = _c.next()) {
221
+ var col = _d.value;
222
+ // Trailing space in the needle — see `columnNames`.
223
+ var pos = rest.indexOf("<tableColumn ");
224
+ if (pos === -1)
225
+ return undefined;
226
+ var before = rest.substring(0, pos);
227
+ var tail = rest.substring(pos);
228
+ var tagEndRel = tail.indexOf(">");
229
+ if (tagEndRel === -1)
230
+ return undefined;
231
+ var tag = tail.substring(0, tagEndRel);
232
+ var after = tail.substring(tagEndRel);
233
+ out += before;
234
+ if (unescapeXml((_b = tagAttr(tag, "name")) !== null && _b !== void 0 ? _b : "") !== col.name)
235
+ return undefined;
236
+ var fieldId = col.queryTableFieldId;
237
+ if (fieldId == null)
238
+ return undefined;
239
+ // The tag slice runs up to (not including) `>`, so a self-closing column ends with `/` — the
240
+ // new attribute must land BEFORE that slash.
241
+ var selfClose = tag.endsWith("/");
242
+ if (selfClose) {
243
+ tag = tag.substring(0, tag.length - 1);
244
+ }
245
+ var idStart = tag.indexOf(' id="');
246
+ if (idStart === -1)
247
+ return undefined;
248
+ var idValueStart = idStart + ' id="'.length;
249
+ var idValueEndRel = tag.substring(idValueStart).indexOf('"');
250
+ if (idValueEndRel === -1)
251
+ return undefined;
252
+ out +=
253
+ tag.substring(0, idValueStart) +
254
+ escapeXmlAttr(col.id) +
255
+ tag.substring(idValueStart + idValueEndRel) +
256
+ " queryTableFieldId=\"".concat(escapeXmlAttr(fieldId), "\"") +
257
+ (selfClose ? "/" : "");
258
+ rest = after;
259
+ }
260
+ }
261
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
262
+ finally {
263
+ try {
264
+ if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
265
+ }
266
+ finally { if (e_3) throw e_3.error; }
267
+ }
268
+ out += rest;
269
+ return out;
270
+ };
271
+ /** The `<tag …` open-tag slice starting at the first occurrence of `prefix` (through its `>`). */
272
+ var openTag = function (xml, prefix) {
273
+ var start = xml.indexOf(prefix);
274
+ if (start === -1)
275
+ return "";
276
+ var rest = xml.substring(start);
277
+ var end = rest.indexOf(">");
278
+ return end === -1 ? rest : rest.substring(0, end);
279
+ };
280
+ /** Extract an attribute's raw (still-escaped) value from an open-tag slice. */
281
+ var tagAttr = function (tag, name) {
282
+ var needle = " ".concat(name, "=\"");
283
+ var start = tag.indexOf(needle);
284
+ if (start === -1)
285
+ return undefined;
286
+ var valueStart = start + needle.length;
287
+ var end = tag.substring(valueStart).indexOf('"');
288
+ return end === -1 ? undefined : tag.substring(valueStart, valueStart + end);
289
+ };
290
+ var escapeXmlAttr = function (value) {
291
+ return value
292
+ .replace(/&/g, "&amp;")
293
+ .replace(/</g, "&lt;")
294
+ .replace(/>/g, "&gt;")
295
+ .replace(/"/g, "&quot;")
296
+ .replace(/'/g, "&apos;");
297
+ };
298
+ /** Reverse of {@link escapeXmlAttr} — `&amp;` last so it can't re-expand entities. */
299
+ var unescapeXml = function (value) {
300
+ return value
301
+ .replace(/&lt;/g, "<")
302
+ .replace(/&gt;/g, ">")
303
+ .replace(/&quot;/g, '"')
304
+ .replace(/&apos;/g, "'")
305
+ .replace(/&amp;/g, "&");
306
+ };
@@ -0,0 +1,11 @@
1
+ import type { Slicer, TableView } from "@rowsncolumns/spreadsheet";
2
+ /**
3
+ * Build slicer cache XML for a table slicer
4
+ * Returns null for pivot slicers (not yet supported)
5
+ */
6
+ export declare const buildSlicerCacheXml: (slicer: Slicer, tables: TableView[], cacheName: string) => string | null;
7
+ /**
8
+ * Build slicer XML (visual definition)
9
+ */
10
+ export declare const buildSlicerXml: (slicer: Slicer, cacheName: string) => string;
11
+ //# sourceMappingURL=slicer-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slicer-builder.d.ts","sourceRoot":"","sources":["../../../../exporter/xlsx/slicer-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAanE;;;GAGG;AACH,eAAO,MAAM,mBAAmB,GAC9B,QAAQ,MAAM,EACd,QAAQ,SAAS,EAAE,EACnB,WAAW,MAAM,KAChB,MAAM,GAAG,IAoDX,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,GACzB,QAAQ,MAAM,EACd,WAAW,MAAM,KAChB,MA0BF,CAAC"}
@@ -0,0 +1,87 @@
1
+ import { XMLBuilder } from "fast-xml-parser";
2
+ var XML_DECLARATION = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>";
3
+ var slicerBuilder = new XMLBuilder({
4
+ ignoreAttributes: false,
5
+ attributesGroupName: "a$",
6
+ textNodeName: "t$",
7
+ suppressEmptyNode: true,
8
+ format: false,
9
+ });
10
+ /**
11
+ * Build slicer cache XML for a table slicer
12
+ * Returns null for pivot slicers (not yet supported)
13
+ */
14
+ export var buildSlicerCacheXml = function (slicer, tables, cacheName) {
15
+ var _a, _b;
16
+ if (slicer.spec.type !== "table") {
17
+ // Pivot table slicers not yet supported
18
+ return null;
19
+ }
20
+ var _c = slicer.spec, tableIds = _c.tableIds, columnIndex = _c.columnIndex;
21
+ // Find the first related table
22
+ // Note: tableIds from slicer might be strings, but prepared tables have numeric ids
23
+ var relatedTable = tables.find(function (t) {
24
+ return tableIds.some(function (tid) { return String(tid) === String(t.id); });
25
+ });
26
+ if (!relatedTable)
27
+ return null;
28
+ // Get column name from table
29
+ var columnName = ((_b = (_a = relatedTable.columns) === null || _a === void 0 ? void 0 : _a[columnIndex]) === null || _b === void 0 ? void 0 : _b.name) || "Column".concat(columnIndex + 1);
30
+ // Build the slicer cache definition
31
+ var cacheDefinition = {
32
+ "slicerCacheDefinition": {
33
+ "a$": {
34
+ "xmlns": "http://schemas.microsoft.com/office/spreadsheetml/2009/9/main",
35
+ "xmlns:mc": "http://schemas.openxmlformats.org/markup-compatibility/2006",
36
+ "mc:Ignorable": "x xr10",
37
+ "xmlns:x": "http://schemas.openxmlformats.org/spreadsheetml/2006/main",
38
+ "xmlns:xr10": "http://schemas.microsoft.com/office/spreadsheetml/2016/revision10",
39
+ "name": cacheName,
40
+ "sourceName": columnName,
41
+ },
42
+ "extLst": {
43
+ "x:ext": {
44
+ "a$": {
45
+ "uri": "{2F2917AC-EB37-4324-AD4E-5DD8C200BD13}",
46
+ "xmlns:x15": "http://schemas.microsoft.com/office/spreadsheetml/2010/11/main",
47
+ },
48
+ "x15:tableSlicerCache": {
49
+ "a$": {
50
+ "tableId": relatedTable.id,
51
+ "column": columnIndex + 1, // 1-based
52
+ },
53
+ },
54
+ },
55
+ },
56
+ },
57
+ };
58
+ var xml = slicerBuilder.build(cacheDefinition);
59
+ return "".concat(XML_DECLARATION, "\n").concat(xml);
60
+ };
61
+ /**
62
+ * Build slicer XML (visual definition)
63
+ */
64
+ export var buildSlicerXml = function (slicer, cacheName) {
65
+ var displayName = slicer.spec.title || "Slicer";
66
+ var slicerDefinition = {
67
+ "slicers": {
68
+ "a$": {
69
+ "xmlns": "http://schemas.microsoft.com/office/spreadsheetml/2009/9/main",
70
+ "xmlns:mc": "http://schemas.openxmlformats.org/markup-compatibility/2006",
71
+ "mc:Ignorable": "x xr10",
72
+ "xmlns:x": "http://schemas.openxmlformats.org/spreadsheetml/2006/main",
73
+ "xmlns:xr10": "http://schemas.microsoft.com/office/spreadsheetml/2016/revision10",
74
+ },
75
+ "slicer": {
76
+ "a$": {
77
+ "name": displayName,
78
+ "cache": cacheName,
79
+ "caption": displayName,
80
+ "rowHeight": "251883",
81
+ },
82
+ },
83
+ },
84
+ };
85
+ var xml = slicerBuilder.build(slicerDefinition);
86
+ return "".concat(XML_DECLARATION, "\n").concat(xml);
87
+ };
@@ -0,0 +1,61 @@
1
+ import type { CellData, Sheet } from "@rowsncolumns/spreadsheet";
2
+ export type SparklineAxisOptions = {
3
+ emptyCellsAs?: "gap" | "zero" | "span";
4
+ dateAxis?: boolean;
5
+ markers?: boolean;
6
+ high?: boolean;
7
+ low?: boolean;
8
+ first?: boolean;
9
+ last?: boolean;
10
+ negative?: boolean;
11
+ displayXAxis?: boolean;
12
+ displayHidden?: boolean;
13
+ rightToLeft?: boolean;
14
+ lineWeight?: number;
15
+ manualMax?: number;
16
+ manualMin?: number;
17
+ minAxisType?: "individual" | "group" | "custom";
18
+ maxAxisType?: "individual" | "group" | "custom";
19
+ colorHigh?: string;
20
+ colorLow?: string;
21
+ colorFirst?: string;
22
+ colorLast?: string;
23
+ colorMarkers?: string;
24
+ colorNegative?: string;
25
+ };
26
+ export type DetectedSparkline = {
27
+ targetCell: string;
28
+ dataRange: string;
29
+ type: "line" | "column" | "stacked";
30
+ color?: string;
31
+ rowIndex: number;
32
+ columnIndex: number;
33
+ } & SparklineAxisOptions;
34
+ /**
35
+ * Parse a SPARKLINE formula to extract data range and options
36
+ * Formula format: =SPARKLINE(A1:E1,{"charttype","column","color","#FF0000"})
37
+ */
38
+ export declare function parseSparklineFormula(formula: string, sheetName: string): ({
39
+ dataRange: string;
40
+ chartType: "line" | "column" | "stacked";
41
+ color?: string;
42
+ } & SparklineAxisOptions) | null;
43
+ /**
44
+ * Detect SPARKLINE formulas in a sheet and extract sparkline info
45
+ */
46
+ export declare function detectSparklines(sheet: Sheet, rowData: Record<number, Record<number, CellData>>): DetectedSparkline[];
47
+ /**
48
+ * Build sparkline groups XML for worksheet extLst
49
+ * Returns null if no sparklines detected
50
+ */
51
+ export declare function buildSparklineGroupsXml(sheet: Sheet, rowData: Record<number, Record<number, CellData>>): string | null;
52
+ /**
53
+ * Build combined extLst for worksheet (sparklines + slicers)
54
+ */
55
+ export declare function buildWorksheetExtLst(sparklineExtXml: string | null, slicerExtXml: string | null): string;
56
+ /**
57
+ * Check if a cell has a SPARKLINE formula and should NOT be exported as a formula
58
+ * (the formula will be converted to native Excel sparkline instead)
59
+ */
60
+ export declare function isSparklineCell(cell: CellData | null | undefined): boolean;
61
+ //# sourceMappingURL=sparkline-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sparkline-builder.d.ts","sourceRoot":"","sources":["../../../../exporter/xlsx/sparkline-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAMjE,MAAM,MAAM,oBAAoB,GAAG;IACjC,YAAY,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,YAAY,GAAG,OAAO,GAAG,QAAQ,CAAC;IAChD,WAAW,CAAC,EAAE,YAAY,GAAG,OAAO,GAAG,QAAQ,CAAC;IAIhD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAGF,MAAM,MAAM,iBAAiB,GAAG;IAE9B,UAAU,EAAE,MAAM,CAAC;IAEnB,SAAS,EAAE,MAAM,CAAC;IAElB,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;IAEpC,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,QAAQ,EAAE,MAAM,CAAC;IAEjB,WAAW,EAAE,MAAM,CAAC;CACrB,GAAG,oBAAoB,CAAC;AAWzB;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,GAChB,CAAC;IACF,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,oBAAoB,CAAC,GAAG,IAAI,CA+K/B;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,GAChD,iBAAiB,EAAE,CAqCrB;AA6FD;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,GAChD,MAAM,GAAG,IAAI,CAuGf;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,eAAe,EAAE,MAAM,GAAG,IAAI,EAC9B,YAAY,EAAE,MAAM,GAAG,IAAI,GAC1B,MAAM,CAgBR;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAM1E"}