@rowsncolumns/toolkit 24.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (456) hide show
  1. package/LICENSE.md +100 -0
  2. package/Readme.md +27 -0
  3. package/dist/cjs/autofilter-condition.d.ts +43 -0
  4. package/dist/cjs/autofilter-condition.d.ts.map +1 -0
  5. package/dist/cjs/autofilter-condition.js +155 -0
  6. package/dist/cjs/csv-export.d.ts +49 -0
  7. package/dist/cjs/csv-export.d.ts.map +1 -0
  8. package/dist/cjs/csv-export.js +142 -0
  9. package/dist/cjs/csv-import-worker.d.ts +16 -0
  10. package/dist/cjs/csv-import-worker.d.ts.map +1 -0
  11. package/dist/cjs/csv-import-worker.js +60 -0
  12. package/dist/cjs/csv-import.d.ts +38 -0
  13. package/dist/cjs/csv-import.d.ts.map +1 -0
  14. package/dist/cjs/csv-import.js +166 -0
  15. package/dist/cjs/csv-parser/helpers.d.ts +14 -0
  16. package/dist/cjs/csv-parser/helpers.d.ts.map +1 -0
  17. package/dist/cjs/csv-parser/helpers.js +145 -0
  18. package/dist/cjs/csv-parser/types.d.ts +66 -0
  19. package/dist/cjs/csv-parser/types.d.ts.map +1 -0
  20. package/dist/cjs/csv-parser/types.js +14 -0
  21. package/dist/cjs/csv-parser/worker.d.ts +2 -0
  22. package/dist/cjs/csv-parser/worker.d.ts.map +1 -0
  23. package/dist/cjs/csv-parser/worker.js +200 -0
  24. package/dist/cjs/excel-export.d.ts +11 -0
  25. package/dist/cjs/excel-export.d.ts.map +1 -0
  26. package/dist/cjs/excel-export.js +22 -0
  27. package/dist/cjs/excel-import-session.d.ts +51 -0
  28. package/dist/cjs/excel-import-session.d.ts.map +1 -0
  29. package/dist/cjs/excel-import-session.js +307 -0
  30. package/dist/cjs/excel-import-worker.d.ts +7 -0
  31. package/dist/cjs/excel-import-worker.d.ts.map +1 -0
  32. package/dist/cjs/excel-import-worker.js +119 -0
  33. package/dist/cjs/excel-parser/builtin-numfmts.d.ts +24 -0
  34. package/dist/cjs/excel-parser/builtin-numfmts.d.ts.map +1 -0
  35. package/dist/cjs/excel-parser/builtin-numfmts.js +63 -0
  36. package/dist/cjs/excel-parser/cfb-decryptor.d.ts +53 -0
  37. package/dist/cjs/excel-parser/cfb-decryptor.d.ts.map +1 -0
  38. package/dist/cjs/excel-parser/cfb-decryptor.js +553 -0
  39. package/dist/cjs/excel-parser/cfb-encryptor.d.ts +23 -0
  40. package/dist/cjs/excel-parser/cfb-encryptor.d.ts.map +1 -0
  41. package/dist/cjs/excel-parser/cfb-encryptor.js +200 -0
  42. package/dist/cjs/excel-parser/dv-cell-stamp.d.ts +29 -0
  43. package/dist/cjs/excel-parser/dv-cell-stamp.d.ts.map +1 -0
  44. package/dist/cjs/excel-parser/dv-cell-stamp.js +239 -0
  45. package/dist/cjs/excel-parser/helpers.d.ts +28 -0
  46. package/dist/cjs/excel-parser/helpers.d.ts.map +1 -0
  47. package/dist/cjs/excel-parser/helpers.js +188 -0
  48. package/dist/cjs/excel-parser/interface.d.ts +179 -0
  49. package/dist/cjs/excel-parser/interface.d.ts.map +1 -0
  50. package/dist/cjs/excel-parser/interface.js +1 -0
  51. package/dist/cjs/excel-parser/plugins/base/index.d.ts +31 -0
  52. package/dist/cjs/excel-parser/plugins/base/index.d.ts.map +1 -0
  53. package/dist/cjs/excel-parser/plugins/base/index.js +101 -0
  54. package/dist/cjs/excel-parser/plugins/ods/conditional-formatting.d.ts +16 -0
  55. package/dist/cjs/excel-parser/plugins/ods/conditional-formatting.d.ts.map +1 -0
  56. package/dist/cjs/excel-parser/plugins/ods/conditional-formatting.js +488 -0
  57. package/dist/cjs/excel-parser/plugins/ods/data-validations.d.ts +15 -0
  58. package/dist/cjs/excel-parser/plugins/ods/data-validations.d.ts.map +1 -0
  59. package/dist/cjs/excel-parser/plugins/ods/data-validations.js +353 -0
  60. package/dist/cjs/excel-parser/plugins/ods/formula.d.ts +8 -0
  61. package/dist/cjs/excel-parser/plugins/ods/formula.d.ts.map +1 -0
  62. package/dist/cjs/excel-parser/plugins/ods/formula.js +82 -0
  63. package/dist/cjs/excel-parser/plugins/ods/index.d.ts +122 -0
  64. package/dist/cjs/excel-parser/plugins/ods/index.d.ts.map +1 -0
  65. package/dist/cjs/excel-parser/plugins/ods/index.js +3642 -0
  66. package/dist/cjs/excel-parser/plugins/ods/sparklines.d.ts +25 -0
  67. package/dist/cjs/excel-parser/plugins/ods/sparklines.d.ts.map +1 -0
  68. package/dist/cjs/excel-parser/plugins/ods/sparklines.js +221 -0
  69. package/dist/cjs/excel-parser/plugins/ods/styles.d.ts +60 -0
  70. package/dist/cjs/excel-parser/plugins/ods/styles.d.ts.map +1 -0
  71. package/dist/cjs/excel-parser/plugins/ods/styles.js +808 -0
  72. package/dist/cjs/excel-parser/plugins/ods/types.d.ts +7 -0
  73. package/dist/cjs/excel-parser/plugins/ods/types.d.ts.map +1 -0
  74. package/dist/cjs/excel-parser/plugins/ods/types.js +1 -0
  75. package/dist/cjs/excel-parser/plugins/xls/index.d.ts +5 -0
  76. package/dist/cjs/excel-parser/plugins/xls/index.d.ts.map +1 -0
  77. package/dist/cjs/excel-parser/plugins/xls/index.js +19 -0
  78. package/dist/cjs/excel-parser/plugins/xlsb/biff-record-reader.d.ts +13 -0
  79. package/dist/cjs/excel-parser/plugins/xlsb/biff-record-reader.d.ts.map +1 -0
  80. package/dist/cjs/excel-parser/plugins/xlsb/biff-record-reader.js +49 -0
  81. package/dist/cjs/excel-parser/plugins/xlsb/index.d.ts +117 -0
  82. package/dist/cjs/excel-parser/plugins/xlsb/index.d.ts.map +1 -0
  83. package/dist/cjs/excel-parser/plugins/xlsb/index.js +2972 -0
  84. package/dist/cjs/excel-parser/plugins/xlsb/rgce-parser.d.ts +18 -0
  85. package/dist/cjs/excel-parser/plugins/xlsb/rgce-parser.d.ts.map +1 -0
  86. package/dist/cjs/excel-parser/plugins/xlsb/rgce-parser.js +527 -0
  87. package/dist/cjs/excel-parser/plugins/xlsm/index.d.ts +5 -0
  88. package/dist/cjs/excel-parser/plugins/xlsm/index.d.ts.map +1 -0
  89. package/dist/cjs/excel-parser/plugins/xlsm/index.js +10 -0
  90. package/dist/cjs/excel-parser/plugins/xlsx/charts.d.ts +60 -0
  91. package/dist/cjs/excel-parser/plugins/xlsx/charts.d.ts.map +1 -0
  92. package/dist/cjs/excel-parser/plugins/xlsx/charts.js +2178 -0
  93. package/dist/cjs/excel-parser/plugins/xlsx/conditional-formatting.d.ts +18 -0
  94. package/dist/cjs/excel-parser/plugins/xlsx/conditional-formatting.d.ts.map +1 -0
  95. package/dist/cjs/excel-parser/plugins/xlsx/conditional-formatting.js +620 -0
  96. package/dist/cjs/excel-parser/plugins/xlsx/data-validations.d.ts +4 -0
  97. package/dist/cjs/excel-parser/plugins/xlsx/data-validations.d.ts.map +1 -0
  98. package/dist/cjs/excel-parser/plugins/xlsx/data-validations.js +515 -0
  99. package/dist/cjs/excel-parser/plugins/xlsx/drawing.d.ts +39 -0
  100. package/dist/cjs/excel-parser/plugins/xlsx/drawing.d.ts.map +1 -0
  101. package/dist/cjs/excel-parser/plugins/xlsx/drawing.js +941 -0
  102. package/dist/cjs/excel-parser/plugins/xlsx/index.d.ts +320 -0
  103. package/dist/cjs/excel-parser/plugins/xlsx/index.d.ts.map +1 -0
  104. package/dist/cjs/excel-parser/plugins/xlsx/index.js +6056 -0
  105. package/dist/cjs/excel-parser/plugins/xlsx/numfmt.d.ts +2 -0
  106. package/dist/cjs/excel-parser/plugins/xlsx/numfmt.d.ts.map +1 -0
  107. package/dist/cjs/excel-parser/plugins/xlsx/numfmt.js +3 -0
  108. package/dist/cjs/excel-parser/plugins/xlsx/pivots.d.ts +40 -0
  109. package/dist/cjs/excel-parser/plugins/xlsx/pivots.d.ts.map +1 -0
  110. package/dist/cjs/excel-parser/plugins/xlsx/pivots.js +342 -0
  111. package/dist/cjs/excel-parser/plugins/xlsx/relationships.d.ts +8 -0
  112. package/dist/cjs/excel-parser/plugins/xlsx/relationships.d.ts.map +1 -0
  113. package/dist/cjs/excel-parser/plugins/xlsx/relationships.js +26 -0
  114. package/dist/cjs/excel-parser/plugins/xlsx/sheet-views.d.ts +26 -0
  115. package/dist/cjs/excel-parser/plugins/xlsx/sheet-views.d.ts.map +1 -0
  116. package/dist/cjs/excel-parser/plugins/xlsx/sheet-views.js +59 -0
  117. package/dist/cjs/excel-parser/plugins/xlsx/styles.d.ts +44 -0
  118. package/dist/cjs/excel-parser/plugins/xlsx/styles.d.ts.map +1 -0
  119. package/dist/cjs/excel-parser/plugins/xlsx/styles.js +1377 -0
  120. package/dist/cjs/excel-parser/plugins/xlsx/theme.d.ts +50 -0
  121. package/dist/cjs/excel-parser/plugins/xlsx/theme.d.ts.map +1 -0
  122. package/dist/cjs/excel-parser/plugins/xlsx/theme.js +150 -0
  123. package/dist/cjs/excel-parser/plugins/xlsx/threaded-comments.d.ts +47 -0
  124. package/dist/cjs/excel-parser/plugins/xlsx/threaded-comments.d.ts.map +1 -0
  125. package/dist/cjs/excel-parser/plugins/xlsx/threaded-comments.js +141 -0
  126. package/dist/cjs/excel-parser/plugins/xlsx/value-type-detection.d.ts +44 -0
  127. package/dist/cjs/excel-parser/plugins/xlsx/value-type-detection.d.ts.map +1 -0
  128. package/dist/cjs/excel-parser/plugins/xlsx/value-type-detection.js +407 -0
  129. package/dist/cjs/excel-parser/registry.d.ts +5 -0
  130. package/dist/cjs/excel-parser/registry.d.ts.map +1 -0
  131. package/dist/cjs/excel-parser/registry.js +21 -0
  132. package/dist/cjs/excel-parser/style-registry.d.ts +51 -0
  133. package/dist/cjs/excel-parser/style-registry.d.ts.map +1 -0
  134. package/dist/cjs/excel-parser/style-registry.js +175 -0
  135. package/dist/cjs/excel-parser/theme-default.d.ts +3 -0
  136. package/dist/cjs/excel-parser/theme-default.d.ts.map +1 -0
  137. package/dist/cjs/excel-parser/theme-default.js +19 -0
  138. package/dist/cjs/excel-parser/types.d.ts +365 -0
  139. package/dist/cjs/excel-parser/types.d.ts.map +1 -0
  140. package/dist/cjs/excel-parser/types.js +59 -0
  141. package/dist/cjs/excel-parser/utils.d.ts +6 -0
  142. package/dist/cjs/excel-parser/utils.d.ts.map +1 -0
  143. package/dist/cjs/excel-parser/utils.js +30 -0
  144. package/dist/cjs/excel-parser/workbook.d.ts +51 -0
  145. package/dist/cjs/excel-parser/workbook.d.ts.map +1 -0
  146. package/dist/cjs/excel-parser/workbook.js +317 -0
  147. package/dist/cjs/excel-parser/worker.d.ts +2 -0
  148. package/dist/cjs/excel-parser/worker.d.ts.map +1 -0
  149. package/dist/cjs/excel-parser/worker.js +1149 -0
  150. package/dist/cjs/excel-parser/zip-parser-streaming.d.ts +13 -0
  151. package/dist/cjs/excel-parser/zip-parser-streaming.d.ts.map +1 -0
  152. package/dist/cjs/excel-parser/zip-parser-streaming.js +200 -0
  153. package/dist/cjs/excel-parser/zip-parser.d.ts +11 -0
  154. package/dist/cjs/excel-parser/zip-parser.d.ts.map +1 -0
  155. package/dist/cjs/excel-parser/zip-parser.js +49 -0
  156. package/dist/cjs/exporter/invalid-data-validation.d.ts +19 -0
  157. package/dist/cjs/exporter/invalid-data-validation.d.ts.map +1 -0
  158. package/dist/cjs/exporter/invalid-data-validation.js +39 -0
  159. package/dist/cjs/exporter/ods/ods-export.d.ts +26 -0
  160. package/dist/cjs/exporter/ods/ods-export.d.ts.map +1 -0
  161. package/dist/cjs/exporter/ods/ods-export.js +3714 -0
  162. package/dist/cjs/exporter/ods/sparkline-builder.d.ts +33 -0
  163. package/dist/cjs/exporter/ods/sparkline-builder.d.ts.map +1 -0
  164. package/dist/cjs/exporter/ods/sparkline-builder.js +221 -0
  165. package/dist/cjs/exporter/xlsx/chart-builder.d.ts +3 -0
  166. package/dist/cjs/exporter/xlsx/chart-builder.d.ts.map +1 -0
  167. package/dist/cjs/exporter/xlsx/chart-builder.js +1901 -0
  168. package/dist/cjs/exporter/xlsx/chart-templates.d.ts +1781 -0
  169. package/dist/cjs/exporter/xlsx/chart-templates.d.ts.map +1 -0
  170. package/dist/cjs/exporter/xlsx/chart-templates.js +1798 -0
  171. package/dist/cjs/exporter/xlsx/future-functions.d.ts +10 -0
  172. package/dist/cjs/exporter/xlsx/future-functions.d.ts.map +1 -0
  173. package/dist/cjs/exporter/xlsx/future-functions.js +264 -0
  174. package/dist/cjs/exporter/xlsx/pivot-builder.d.ts +58 -0
  175. package/dist/cjs/exporter/xlsx/pivot-builder.d.ts.map +1 -0
  176. package/dist/cjs/exporter/xlsx/pivot-builder.js +277 -0
  177. package/dist/cjs/exporter/xlsx/power-query-builder.d.ts +26 -0
  178. package/dist/cjs/exporter/xlsx/power-query-builder.d.ts.map +1 -0
  179. package/dist/cjs/exporter/xlsx/power-query-builder.js +306 -0
  180. package/dist/cjs/exporter/xlsx/slicer-builder.d.ts +11 -0
  181. package/dist/cjs/exporter/xlsx/slicer-builder.d.ts.map +1 -0
  182. package/dist/cjs/exporter/xlsx/slicer-builder.js +87 -0
  183. package/dist/cjs/exporter/xlsx/sparkline-builder.d.ts +61 -0
  184. package/dist/cjs/exporter/xlsx/sparkline-builder.d.ts.map +1 -0
  185. package/dist/cjs/exporter/xlsx/sparkline-builder.js +489 -0
  186. package/dist/cjs/exporter/xlsx/style-builder.d.ts +93 -0
  187. package/dist/cjs/exporter/xlsx/style-builder.d.ts.map +1 -0
  188. package/dist/cjs/exporter/xlsx/style-builder.js +813 -0
  189. package/dist/cjs/exporter/xlsx/threaded-comments-builder.d.ts +58 -0
  190. package/dist/cjs/exporter/xlsx/threaded-comments-builder.d.ts.map +1 -0
  191. package/dist/cjs/exporter/xlsx/threaded-comments-builder.js +189 -0
  192. package/dist/cjs/exporter/xlsx/xlsx-export.d.ts +121 -0
  193. package/dist/cjs/exporter/xlsx/xlsx-export.d.ts.map +1 -0
  194. package/dist/cjs/exporter/xlsx/xlsx-export.js +4596 -0
  195. package/dist/cjs/helpers/theme-xml-generator.d.ts +8 -0
  196. package/dist/cjs/helpers/theme-xml-generator.d.ts.map +1 -0
  197. package/dist/cjs/helpers/theme-xml-generator.js +33 -0
  198. package/dist/cjs/helpers.d.ts +34 -0
  199. package/dist/cjs/helpers.d.ts.map +1 -0
  200. package/dist/cjs/helpers.js +189 -0
  201. package/dist/cjs/index.d.ts +16 -0
  202. package/dist/cjs/index.d.ts.map +1 -0
  203. package/dist/cjs/index.js +15 -0
  204. package/dist/cjs/indexed-colors.d.ts +2 -0
  205. package/dist/cjs/indexed-colors.d.ts.map +1 -0
  206. package/dist/cjs/indexed-colors.js +75 -0
  207. package/dist/cjs/ods-export.d.ts +24 -0
  208. package/dist/cjs/ods-export.d.ts.map +1 -0
  209. package/dist/cjs/ods-export.js +23 -0
  210. package/dist/cjs/parse.d.ts +24 -0
  211. package/dist/cjs/parse.d.ts.map +1 -0
  212. package/dist/cjs/parse.js +68 -0
  213. package/dist/cjs/power-query.d.ts +41 -0
  214. package/dist/cjs/power-query.d.ts.map +1 -0
  215. package/dist/cjs/power-query.js +22 -0
  216. package/dist/cjs/server.d.ts +9 -0
  217. package/dist/cjs/server.d.ts.map +1 -0
  218. package/dist/cjs/server.js +8 -0
  219. package/dist/cjs/theme1.d.ts +3 -0
  220. package/dist/cjs/theme1.d.ts.map +1 -0
  221. package/dist/cjs/theme1.js +2 -0
  222. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -0
  223. package/dist/cjs/types.d.ts +14 -0
  224. package/dist/cjs/types.d.ts.map +1 -0
  225. package/dist/cjs/types.js +14 -0
  226. package/dist/cjs/vitest.config.d.ts +3 -0
  227. package/dist/cjs/vitest.config.d.ts.map +1 -0
  228. package/dist/cjs/vitest.config.js +16 -0
  229. package/dist/esm/autofilter-condition.d.ts +43 -0
  230. package/dist/esm/autofilter-condition.d.ts.map +1 -0
  231. package/dist/esm/autofilter-condition.js +145 -0
  232. package/dist/esm/csv-export.d.ts +49 -0
  233. package/dist/esm/csv-export.d.ts.map +1 -0
  234. package/dist/esm/csv-export.js +126 -0
  235. package/dist/esm/csv-import-worker.d.ts +16 -0
  236. package/dist/esm/csv-import-worker.d.ts.map +1 -0
  237. package/dist/esm/csv-import-worker.js +60 -0
  238. package/dist/esm/csv-import.d.ts +38 -0
  239. package/dist/esm/csv-import.d.ts.map +1 -0
  240. package/dist/esm/csv-import.js +132 -0
  241. package/dist/esm/csv-parser/helpers.d.ts +14 -0
  242. package/dist/esm/csv-parser/helpers.d.ts.map +1 -0
  243. package/dist/esm/csv-parser/helpers.js +0 -0
  244. package/dist/esm/csv-parser/types.d.ts +66 -0
  245. package/dist/esm/csv-parser/types.d.ts.map +1 -0
  246. package/dist/esm/csv-parser/types.js +14 -0
  247. package/dist/esm/csv-parser/worker.d.ts +2 -0
  248. package/dist/esm/csv-parser/worker.d.ts.map +1 -0
  249. package/dist/esm/csv-parser/worker.js +154 -0
  250. package/dist/esm/excel-export.d.ts +11 -0
  251. package/dist/esm/excel-export.d.ts.map +1 -0
  252. package/dist/esm/excel-export.js +13 -0
  253. package/dist/esm/excel-import-session.d.ts +51 -0
  254. package/dist/esm/excel-import-session.d.ts.map +1 -0
  255. package/dist/esm/excel-import-session.js +255 -0
  256. package/dist/esm/excel-import-worker.d.ts +7 -0
  257. package/dist/esm/excel-import-worker.d.ts.map +1 -0
  258. package/dist/esm/excel-import-worker.js +116 -0
  259. package/dist/esm/excel-parser/builtin-numfmts.d.ts +24 -0
  260. package/dist/esm/excel-parser/builtin-numfmts.d.ts.map +1 -0
  261. package/dist/esm/excel-parser/builtin-numfmts.js +59 -0
  262. package/dist/esm/excel-parser/cfb-decryptor.d.ts +53 -0
  263. package/dist/esm/excel-parser/cfb-decryptor.d.ts.map +1 -0
  264. package/dist/esm/excel-parser/cfb-decryptor.js +493 -0
  265. package/dist/esm/excel-parser/cfb-encryptor.d.ts +23 -0
  266. package/dist/esm/excel-parser/cfb-encryptor.d.ts.map +1 -0
  267. package/dist/esm/excel-parser/cfb-encryptor.js +181 -0
  268. package/dist/esm/excel-parser/dv-cell-stamp.d.ts +29 -0
  269. package/dist/esm/excel-parser/dv-cell-stamp.d.ts.map +1 -0
  270. package/dist/esm/excel-parser/dv-cell-stamp.js +155 -0
  271. package/dist/esm/excel-parser/helpers.d.ts +28 -0
  272. package/dist/esm/excel-parser/helpers.d.ts.map +1 -0
  273. package/dist/esm/excel-parser/helpers.js +160 -0
  274. package/dist/esm/excel-parser/interface.d.ts +179 -0
  275. package/dist/esm/excel-parser/interface.d.ts.map +1 -0
  276. package/dist/esm/excel-parser/interface.js +1 -0
  277. package/dist/esm/excel-parser/plugins/base/index.d.ts +31 -0
  278. package/dist/esm/excel-parser/plugins/base/index.d.ts.map +1 -0
  279. package/dist/esm/excel-parser/plugins/base/index.js +64 -0
  280. package/dist/esm/excel-parser/plugins/ods/conditional-formatting.d.ts +16 -0
  281. package/dist/esm/excel-parser/plugins/ods/conditional-formatting.d.ts.map +1 -0
  282. package/dist/esm/excel-parser/plugins/ods/conditional-formatting.js +405 -0
  283. package/dist/esm/excel-parser/plugins/ods/data-validations.d.ts +15 -0
  284. package/dist/esm/excel-parser/plugins/ods/data-validations.d.ts.map +1 -0
  285. package/dist/esm/excel-parser/plugins/ods/data-validations.js +331 -0
  286. package/dist/esm/excel-parser/plugins/ods/formula.d.ts +8 -0
  287. package/dist/esm/excel-parser/plugins/ods/formula.d.ts.map +1 -0
  288. package/dist/esm/excel-parser/plugins/ods/formula.js +82 -0
  289. package/dist/esm/excel-parser/plugins/ods/index.d.ts +122 -0
  290. package/dist/esm/excel-parser/plugins/ods/index.d.ts.map +1 -0
  291. package/dist/esm/excel-parser/plugins/ods/index.js +2896 -0
  292. package/dist/esm/excel-parser/plugins/ods/sparklines.d.ts +25 -0
  293. package/dist/esm/excel-parser/plugins/ods/sparklines.d.ts.map +1 -0
  294. package/dist/esm/excel-parser/plugins/ods/sparklines.js +188 -0
  295. package/dist/esm/excel-parser/plugins/ods/styles.d.ts +60 -0
  296. package/dist/esm/excel-parser/plugins/ods/styles.d.ts.map +1 -0
  297. package/dist/esm/excel-parser/plugins/ods/styles.js +732 -0
  298. package/dist/esm/excel-parser/plugins/ods/types.d.ts +7 -0
  299. package/dist/esm/excel-parser/plugins/ods/types.d.ts.map +1 -0
  300. package/dist/esm/excel-parser/plugins/ods/types.js +1 -0
  301. package/dist/esm/excel-parser/plugins/xls/index.d.ts +5 -0
  302. package/dist/esm/excel-parser/plugins/xls/index.d.ts.map +1 -0
  303. package/dist/esm/excel-parser/plugins/xls/index.js +7 -0
  304. package/dist/esm/excel-parser/plugins/xlsb/biff-record-reader.d.ts +13 -0
  305. package/dist/esm/excel-parser/plugins/xlsb/biff-record-reader.d.ts.map +1 -0
  306. package/dist/esm/excel-parser/plugins/xlsb/biff-record-reader.js +48 -0
  307. package/dist/esm/excel-parser/plugins/xlsb/index.d.ts +117 -0
  308. package/dist/esm/excel-parser/plugins/xlsb/index.d.ts.map +1 -0
  309. package/dist/esm/excel-parser/plugins/xlsb/index.js +2339 -0
  310. package/dist/esm/excel-parser/plugins/xlsb/rgce-parser.d.ts +18 -0
  311. package/dist/esm/excel-parser/plugins/xlsb/rgce-parser.d.ts.map +1 -0
  312. package/dist/esm/excel-parser/plugins/xlsb/rgce-parser.js +522 -0
  313. package/dist/esm/excel-parser/plugins/xlsm/index.d.ts +5 -0
  314. package/dist/esm/excel-parser/plugins/xlsm/index.d.ts.map +1 -0
  315. package/dist/esm/excel-parser/plugins/xlsm/index.js +6 -0
  316. package/dist/esm/excel-parser/plugins/xlsx/charts.d.ts +60 -0
  317. package/dist/esm/excel-parser/plugins/xlsx/charts.d.ts.map +1 -0
  318. package/dist/esm/excel-parser/plugins/xlsx/charts.js +2036 -0
  319. package/dist/esm/excel-parser/plugins/xlsx/conditional-formatting.d.ts +18 -0
  320. package/dist/esm/excel-parser/plugins/xlsx/conditional-formatting.d.ts.map +1 -0
  321. package/dist/esm/excel-parser/plugins/xlsx/conditional-formatting.js +621 -0
  322. package/dist/esm/excel-parser/plugins/xlsx/data-validations.d.ts +4 -0
  323. package/dist/esm/excel-parser/plugins/xlsx/data-validations.d.ts.map +1 -0
  324. package/dist/esm/excel-parser/plugins/xlsx/data-validations.js +493 -0
  325. package/dist/esm/excel-parser/plugins/xlsx/drawing.d.ts +39 -0
  326. package/dist/esm/excel-parser/plugins/xlsx/drawing.d.ts.map +1 -0
  327. package/dist/esm/excel-parser/plugins/xlsx/drawing.js +905 -0
  328. package/dist/esm/excel-parser/plugins/xlsx/index.d.ts +320 -0
  329. package/dist/esm/excel-parser/plugins/xlsx/index.d.ts.map +1 -0
  330. package/dist/esm/excel-parser/plugins/xlsx/index.js +4654 -0
  331. package/dist/esm/excel-parser/plugins/xlsx/numfmt.d.ts +2 -0
  332. package/dist/esm/excel-parser/plugins/xlsx/numfmt.d.ts.map +1 -0
  333. package/dist/esm/excel-parser/plugins/xlsx/numfmt.js +3 -0
  334. package/dist/esm/excel-parser/plugins/xlsx/pivots.d.ts +40 -0
  335. package/dist/esm/excel-parser/plugins/xlsx/pivots.d.ts.map +1 -0
  336. package/dist/esm/excel-parser/plugins/xlsx/pivots.js +254 -0
  337. package/dist/esm/excel-parser/plugins/xlsx/relationships.d.ts +8 -0
  338. package/dist/esm/excel-parser/plugins/xlsx/relationships.d.ts.map +1 -0
  339. package/dist/esm/excel-parser/plugins/xlsx/relationships.js +13 -0
  340. package/dist/esm/excel-parser/plugins/xlsx/sheet-views.d.ts +26 -0
  341. package/dist/esm/excel-parser/plugins/xlsx/sheet-views.d.ts.map +1 -0
  342. package/dist/esm/excel-parser/plugins/xlsx/sheet-views.js +64 -0
  343. package/dist/esm/excel-parser/plugins/xlsx/styles.d.ts +44 -0
  344. package/dist/esm/excel-parser/plugins/xlsx/styles.d.ts.map +1 -0
  345. package/dist/esm/excel-parser/plugins/xlsx/styles.js +1365 -0
  346. package/dist/esm/excel-parser/plugins/xlsx/theme.d.ts +50 -0
  347. package/dist/esm/excel-parser/plugins/xlsx/theme.d.ts.map +1 -0
  348. package/dist/esm/excel-parser/plugins/xlsx/theme.js +127 -0
  349. package/dist/esm/excel-parser/plugins/xlsx/threaded-comments.d.ts +47 -0
  350. package/dist/esm/excel-parser/plugins/xlsx/threaded-comments.d.ts.map +1 -0
  351. package/dist/esm/excel-parser/plugins/xlsx/threaded-comments.js +103 -0
  352. package/dist/esm/excel-parser/plugins/xlsx/value-type-detection.d.ts +44 -0
  353. package/dist/esm/excel-parser/plugins/xlsx/value-type-detection.d.ts.map +1 -0
  354. package/dist/esm/excel-parser/plugins/xlsx/value-type-detection.js +399 -0
  355. package/dist/esm/excel-parser/registry.d.ts +5 -0
  356. package/dist/esm/excel-parser/registry.d.ts.map +1 -0
  357. package/dist/esm/excel-parser/registry.js +20 -0
  358. package/dist/esm/excel-parser/style-registry.d.ts +51 -0
  359. package/dist/esm/excel-parser/style-registry.d.ts.map +1 -0
  360. package/dist/esm/excel-parser/style-registry.js +163 -0
  361. package/dist/esm/excel-parser/theme-default.d.ts +3 -0
  362. package/dist/esm/excel-parser/theme-default.d.ts.map +1 -0
  363. package/dist/esm/excel-parser/theme-default.js +19 -0
  364. package/dist/esm/excel-parser/types.d.ts +365 -0
  365. package/dist/esm/excel-parser/types.d.ts.map +1 -0
  366. package/dist/esm/excel-parser/types.js +59 -0
  367. package/dist/esm/excel-parser/utils.d.ts +6 -0
  368. package/dist/esm/excel-parser/utils.d.ts.map +1 -0
  369. package/dist/esm/excel-parser/utils.js +25 -0
  370. package/dist/esm/excel-parser/workbook.d.ts +51 -0
  371. package/dist/esm/excel-parser/workbook.d.ts.map +1 -0
  372. package/dist/esm/excel-parser/workbook.js +192 -0
  373. package/dist/esm/excel-parser/worker.d.ts +2 -0
  374. package/dist/esm/excel-parser/worker.d.ts.map +1 -0
  375. package/dist/esm/excel-parser/worker.js +862 -0
  376. package/dist/esm/excel-parser/zip-parser-streaming.d.ts +13 -0
  377. package/dist/esm/excel-parser/zip-parser-streaming.d.ts.map +1 -0
  378. package/dist/esm/excel-parser/zip-parser-streaming.js +119 -0
  379. package/dist/esm/excel-parser/zip-parser.d.ts +11 -0
  380. package/dist/esm/excel-parser/zip-parser.d.ts.map +1 -0
  381. package/dist/esm/excel-parser/zip-parser.js +43 -0
  382. package/dist/esm/exporter/invalid-data-validation.d.ts +19 -0
  383. package/dist/esm/exporter/invalid-data-validation.d.ts.map +1 -0
  384. package/dist/esm/exporter/invalid-data-validation.js +37 -0
  385. package/dist/esm/exporter/ods/ods-export.d.ts +26 -0
  386. package/dist/esm/exporter/ods/ods-export.d.ts.map +1 -0
  387. package/dist/esm/exporter/ods/ods-export.js +3238 -0
  388. package/dist/esm/exporter/ods/sparkline-builder.d.ts +33 -0
  389. package/dist/esm/exporter/ods/sparkline-builder.d.ts.map +1 -0
  390. package/dist/esm/exporter/ods/sparkline-builder.js +165 -0
  391. package/dist/esm/exporter/xlsx/chart-builder.d.ts +3 -0
  392. package/dist/esm/exporter/xlsx/chart-builder.d.ts.map +1 -0
  393. package/dist/esm/exporter/xlsx/chart-builder.js +1805 -0
  394. package/dist/esm/exporter/xlsx/chart-templates.d.ts +1781 -0
  395. package/dist/esm/exporter/xlsx/chart-templates.d.ts.map +1 -0
  396. package/dist/esm/exporter/xlsx/chart-templates.js +1798 -0
  397. package/dist/esm/exporter/xlsx/future-functions.d.ts +10 -0
  398. package/dist/esm/exporter/xlsx/future-functions.d.ts.map +1 -0
  399. package/dist/esm/exporter/xlsx/future-functions.js +264 -0
  400. package/dist/esm/exporter/xlsx/pivot-builder.d.ts +58 -0
  401. package/dist/esm/exporter/xlsx/pivot-builder.d.ts.map +1 -0
  402. package/dist/esm/exporter/xlsx/pivot-builder.js +230 -0
  403. package/dist/esm/exporter/xlsx/power-query-builder.d.ts +26 -0
  404. package/dist/esm/exporter/xlsx/power-query-builder.d.ts.map +1 -0
  405. package/dist/esm/exporter/xlsx/power-query-builder.js +257 -0
  406. package/dist/esm/exporter/xlsx/slicer-builder.d.ts +11 -0
  407. package/dist/esm/exporter/xlsx/slicer-builder.d.ts.map +1 -0
  408. package/dist/esm/exporter/xlsx/slicer-builder.js +84 -0
  409. package/dist/esm/exporter/xlsx/sparkline-builder.d.ts +61 -0
  410. package/dist/esm/exporter/xlsx/sparkline-builder.d.ts.map +1 -0
  411. package/dist/esm/exporter/xlsx/sparkline-builder.js +437 -0
  412. package/dist/esm/exporter/xlsx/style-builder.d.ts +93 -0
  413. package/dist/esm/exporter/xlsx/style-builder.d.ts.map +1 -0
  414. package/dist/esm/exporter/xlsx/style-builder.js +795 -0
  415. package/dist/esm/exporter/xlsx/threaded-comments-builder.d.ts +58 -0
  416. package/dist/esm/exporter/xlsx/threaded-comments-builder.d.ts.map +1 -0
  417. package/dist/esm/exporter/xlsx/threaded-comments-builder.js +175 -0
  418. package/dist/esm/exporter/xlsx/xlsx-export.d.ts +121 -0
  419. package/dist/esm/exporter/xlsx/xlsx-export.d.ts.map +1 -0
  420. package/dist/esm/exporter/xlsx/xlsx-export.js +4062 -0
  421. package/dist/esm/helpers/theme-xml-generator.d.ts +8 -0
  422. package/dist/esm/helpers/theme-xml-generator.d.ts.map +1 -0
  423. package/dist/esm/helpers/theme-xml-generator.js +33 -0
  424. package/dist/esm/helpers.d.ts +34 -0
  425. package/dist/esm/helpers.d.ts.map +1 -0
  426. package/dist/esm/helpers.js +182 -0
  427. package/dist/esm/index.d.ts +16 -0
  428. package/dist/esm/index.d.ts.map +1 -0
  429. package/dist/esm/index.js +15 -0
  430. package/dist/esm/indexed-colors.d.ts +2 -0
  431. package/dist/esm/indexed-colors.d.ts.map +1 -0
  432. package/dist/esm/indexed-colors.js +75 -0
  433. package/dist/esm/ods-export.d.ts +24 -0
  434. package/dist/esm/ods-export.d.ts.map +1 -0
  435. package/dist/esm/ods-export.js +12 -0
  436. package/dist/esm/parse.d.ts +24 -0
  437. package/dist/esm/parse.d.ts.map +1 -0
  438. package/dist/esm/parse.js +55 -0
  439. package/dist/esm/power-query.d.ts +41 -0
  440. package/dist/esm/power-query.d.ts.map +1 -0
  441. package/dist/esm/power-query.js +19 -0
  442. package/dist/esm/server.d.ts +9 -0
  443. package/dist/esm/server.d.ts.map +1 -0
  444. package/dist/esm/server.js +8 -0
  445. package/dist/esm/theme1.d.ts +3 -0
  446. package/dist/esm/theme1.d.ts.map +1 -0
  447. package/dist/esm/theme1.js +2 -0
  448. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -0
  449. package/dist/esm/types.d.ts +14 -0
  450. package/dist/esm/types.d.ts.map +1 -0
  451. package/dist/esm/types.js +14 -0
  452. package/dist/esm/vitest.config.d.ts +3 -0
  453. package/dist/esm/vitest.config.d.ts.map +1 -0
  454. package/dist/esm/vitest.config.js +16 -0
  455. package/package.json +62 -0
  456. package/xlsx.d.ts +52 -0
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Parse Rgce (Reverse Polish Notation Compiled Expression) - binary formula format in XLSB
3
+ * This converts binary Ptg (Parsed Token) tokens into a formula string
4
+ *
5
+ * @param rgceBytes - The binary formula data
6
+ * @returns The formula string (without leading "=")
7
+ */
8
+ /**
9
+ * Parse Rgce with sheet names for cross-sheet references
10
+ * @param rgceBytes - The binary formula data
11
+ * @param sheetNames - Array of sheet names for resolving external references
12
+ * @returns The formula string (without leading "=")
13
+ */
14
+ export declare function parseRgce(rgceBytes: Uint8Array, sheetRefResolver?: string[] | ((ixti: number) => string | undefined), baseCell?: {
15
+ row: number;
16
+ col: number;
17
+ }, debug?: boolean): string;
18
+ //# sourceMappingURL=rgce-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rgce-parser.d.ts","sourceRoot":"","sources":["../../../../../excel-parser/plugins/xlsb/rgce-parser.ts"],"names":[],"mappings":"AAuHA;;;;;;GAMG;AACH;;;;;GAKG;AACH,wBAAgB,SAAS,CACvB,SAAS,EAAE,UAAU,EACrB,gBAAgB,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC,EACpE,QAAQ,CAAC,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,EACvC,KAAK,UAAQ,GACZ,MAAM,CAqaR"}
@@ -0,0 +1,522 @@
1
+ import { number2Alpha } from "@rowsncolumns/utils";
2
+ /**
3
+ * Reader class for parsing Rgce bytes
4
+ */
5
+ class RgceReader {
6
+ view;
7
+ offset = 0;
8
+ bytes;
9
+ constructor(bytes) {
10
+ this.bytes = bytes;
11
+ this.view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
12
+ }
13
+ readUInt8() {
14
+ const value = this.view.getUint8(this.offset);
15
+ this.offset += 1;
16
+ return value;
17
+ }
18
+ readUInt16LE() {
19
+ const value = this.view.getUint16(this.offset, true);
20
+ this.offset += 2;
21
+ return value;
22
+ }
23
+ readUInt32LE() {
24
+ const value = this.view.getUint32(this.offset, true);
25
+ this.offset += 4;
26
+ return value;
27
+ }
28
+ readInt32LE() {
29
+ const value = this.view.getInt32(this.offset, true);
30
+ this.offset += 4;
31
+ return value;
32
+ }
33
+ readInt16LE() {
34
+ const value = this.view.getInt16(this.offset, true);
35
+ this.offset += 2;
36
+ return value;
37
+ }
38
+ readFloat64LE() {
39
+ const value = this.view.getFloat64(this.offset, true);
40
+ this.offset += 8;
41
+ return value;
42
+ }
43
+ readUtf16Chars(charCount) {
44
+ if (charCount <= 0)
45
+ return "";
46
+ const byteCount = charCount * 2;
47
+ const slice = this.bytes.subarray(this.offset, this.offset + byteCount);
48
+ this.offset += byteCount;
49
+ return new TextDecoder("utf-16le").decode(slice);
50
+ }
51
+ readXLWideString() {
52
+ const cch = this.readUInt32LE();
53
+ return cch === 0 ? "" : this.readUtf16Chars(cch);
54
+ }
55
+ }
56
+ // Common Excel function names by ID (ftab index)
57
+ const FUNCTION_NAMES = {
58
+ 0: "COUNT", 1: "IF", 2: "ISNA", 3: "ISERROR", 4: "SUM", 5: "AVERAGE",
59
+ 6: "MIN", 7: "MAX", 8: "ROW", 9: "COLUMN", 10: "NA", 11: "NPV",
60
+ 12: "STDEV", 13: "DOLLAR", 14: "FIXED", 15: "SIN", 16: "COS",
61
+ 17: "TAN", 18: "ATAN", 19: "PI", 20: "SQRT", 21: "EXP", 22: "LN",
62
+ 23: "LOG10", 24: "ABS", 25: "INT", 26: "SIGN", 27: "ROUND",
63
+ 28: "LOOKUP", 29: "INDEX", 30: "REPT", 31: "MID", 32: "LEN",
64
+ 33: "VALUE", 34: "TRUE", 35: "FALSE", 36: "AND", 37: "OR",
65
+ 38: "NOT", 39: "MOD", 40: "DCOUNT", 41: "DSUM", 42: "DAVERAGE",
66
+ 43: "DMIN", 44: "DMAX", 45: "DSTDEV", 46: "VAR", 47: "DVAR",
67
+ 48: "TEXT", 49: "LINEST", 50: "TREND", 51: "LOGEST", 52: "GROWTH",
68
+ 61: "MIRR", 62: "IRR", 63: "RAND", 64: "MATCH", 65: "DATE",
69
+ 66: "TIME", 67: "DAY", 68: "MONTH", 69: "YEAR", 70: "WEEKDAY",
70
+ 71: "HOUR", 72: "MINUTE", 73: "SECOND", 74: "NOW", 75: "AREAS",
71
+ 76: "ROWS", 77: "COLUMNS", 78: "OFFSET", 82: "SEARCH", 83: "TRANSPOSE",
72
+ 86: "TYPE", 97: "ATAN2", 98: "ASIN", 99: "ACOS", 100: "CHOOSE",
73
+ 101: "HLOOKUP", 102: "VLOOKUP", 103: "ISREF", 104: "LOG",
74
+ 105: "CHAR", 106: "LOWER", 107: "UPPER", 108: "PROPER", 109: "LEFT",
75
+ 110: "RIGHT", 111: "EXACT", 112: "TRIM", 113: "REPLACE", 114: "SUBSTITUTE",
76
+ 115: "CODE", 116: "NAMES", 117: "DIRECTORY", 118: "FIND", 119: "CELL",
77
+ 120: "ISERR", 121: "ISTEXT", 122: "ISNUMBER", 123: "ISBLANK",
78
+ 124: "T", 125: "N", 127: "ISNONTEXT", 128: "ISODD", 129: "ISEVEN",
79
+ 162: "CLEAN", 163: "MDETERM", 164: "MINVERSE", 165: "MMULT",
80
+ 167: "IPMT", 168: "PPMT", 169: "COUNTA", 183: "PRODUCT",
81
+ 184: "FACT", 189: "DPRODUCT", 190: "ISNONTEXT",
82
+ 193: "STDEVP", 194: "VARP", 195: "DSTDEVP", 196: "DVARP",
83
+ 197: "TRUNC", 198: "ISLOGICAL", 199: "DCOUNTA", 200: "DELETEBAR",
84
+ 216: "RANK", 219: "ADDRESS", 220: "DAYS360", 221: "TODAY",
85
+ 222: "VDB", 227: "MEDIAN", 228: "SUMPRODUCT", 229: "SINH",
86
+ 230: "COSH", 231: "TANH", 232: "ASINH", 233: "ACOSH", 234: "ATANH",
87
+ 235: "DGET", 244: "INFO", 247: "DB", 252: "FREQUENCY",
88
+ 261: "ERROR.TYPE", 269: "AVEDEV", 270: "BETADIST", 271: "GAMMALN",
89
+ 272: "BETAINV", 273: "BINOMDIST", 274: "CHIDIST", 275: "CHIINV",
90
+ 276: "COMBIN", 277: "CONFIDENCE", 278: "CRITBINOM", 279: "EVEN",
91
+ 280: "EXPONDIST", 281: "FDIST", 282: "FINV", 283: "FISHER",
92
+ 284: "FISHERINV", 285: "FLOOR", 286: "GAMMADIST", 287: "GAMMAINV",
93
+ 288: "CEILING", 289: "HYPGEOMDIST", 290: "LOGNORMDIST", 291: "LOGINV",
94
+ 292: "NEGBINOMDIST", 293: "NORMDIST", 294: "NORMSDIST", 295: "NORMINV",
95
+ 296: "NORMSINV", 297: "STANDARDIZE", 298: "ODD", 299: "PERMUT",
96
+ 300: "POISSON", 301: "TDIST", 302: "WEIBULL", 303: "SUMXMY2",
97
+ 304: "SUMX2MY2", 305: "SUMX2PY2", 306: "CHITEST", 307: "CORREL",
98
+ 308: "COVAR", 309: "FORECAST", 310: "FTEST", 311: "INTERCEPT",
99
+ 312: "PEARSON", 313: "RSQ", 314: "STEYX", 315: "SLOPE", 316: "TTEST",
100
+ 317: "PROB", 318: "DEVSQ", 319: "GEOMEAN", 320: "HARMEAN",
101
+ 321: "SUMSQ", 322: "KURT", 323: "SKEW", 324: "ZTEST", 325: "LARGE",
102
+ 326: "SMALL", 327: "QUARTILE", 328: "PERCENTILE", 329: "PERCENTRANK",
103
+ 330: "MODE", 331: "TRIMMEAN", 332: "TINV", 334: "CONCATENATE",
104
+ 335: "POWER", 336: "RADIANS", 337: "DEGREES", 338: "SUBTOTAL",
105
+ 339: "SUMIF", 340: "COUNTIF", 341: "COUNTBLANK", 342: "HYPERLINK",
106
+ 343: "PHONETIC", 344: "AVERAGEA", 345: "MAXA", 346: "MINA",
107
+ 347: "STDEVPA", 348: "VARPA", 349: "STDEVA", 350: "VARA",
108
+ };
109
+ /**
110
+ * Parse Rgce (Reverse Polish Notation Compiled Expression) - binary formula format in XLSB
111
+ * This converts binary Ptg (Parsed Token) tokens into a formula string
112
+ *
113
+ * @param rgceBytes - The binary formula data
114
+ * @returns The formula string (without leading "=")
115
+ */
116
+ /**
117
+ * Parse Rgce with sheet names for cross-sheet references
118
+ * @param rgceBytes - The binary formula data
119
+ * @param sheetNames - Array of sheet names for resolving external references
120
+ * @returns The formula string (without leading "=")
121
+ */
122
+ export function parseRgce(rgceBytes, sheetRefResolver, baseCell, debug = false) {
123
+ if (!rgceBytes || rgceBytes.length === 0)
124
+ return "";
125
+ const reader = new RgceReader(rgceBytes);
126
+ const stack = [];
127
+ if (debug) {
128
+ console.log("[Rgce] Parsing", rgceBytes.length, "bytes:", Array.from(rgceBytes.slice(0, Math.min(30, rgceBytes.length)))
129
+ .map(b => `0x${b.toString(16).padStart(2, '0')}`)
130
+ .join(' '));
131
+ }
132
+ const fixedArgCounts = {
133
+ 15: 1, // SIN
134
+ 16: 1, // COS
135
+ 17: 1, // TAN
136
+ 19: 0, // PI
137
+ 20: 1, // SQRT
138
+ 21: 1, // EXP
139
+ 22: 1, // LN
140
+ 24: 1, // ABS
141
+ 25: 1, // INT
142
+ 27: 2, // ROUND
143
+ 31: 3, // MID
144
+ 32: 1, // LEN
145
+ 34: 0, // TRUE
146
+ 35: 0, // FALSE
147
+ 39: 2, // MOD
148
+ 65: 3, // DATE
149
+ 66: 3, // TIME
150
+ 67: 1, // DAY
151
+ 68: 1, // MONTH
152
+ 69: 1, // YEAR
153
+ 71: 1, // HOUR
154
+ 72: 1, // MINUTE
155
+ 73: 1, // SECOND
156
+ 74: 0, // NOW
157
+ 105: 1, // CHAR
158
+ 106: 1, // LOWER
159
+ 107: 1, // UPPER
160
+ 109: 2, // LEFT
161
+ 110: 2, // RIGHT
162
+ 111: 2, // EXACT
163
+ 112: 1, // TRIM
164
+ 115: 1, // CODE
165
+ 183: 1, // PRODUCT
166
+ 197: 2, // TRUNC
167
+ 221: 0, // TODAY
168
+ 335: 2, // POWER
169
+ 336: 1, // RADIANS
170
+ 337: 1, // DEGREES
171
+ };
172
+ const canRead = (n) => reader.offset + n <= rgceBytes.length;
173
+ const quoteSheetName = (name) => /[\s!'[\]]/.test(name) ? `'${name.replace(/'/g, "''")}'` : name;
174
+ const resolveSheetName = (ixti) => {
175
+ if (typeof sheetRefResolver === "function") {
176
+ return sheetRefResolver(ixti);
177
+ }
178
+ return sheetRefResolver?.[ixti];
179
+ };
180
+ const popArgs = (count) => {
181
+ const args = [];
182
+ for (let i = 0; i < count; i++)
183
+ args.unshift(stack.pop() || "");
184
+ return args;
185
+ };
186
+ const pushFixedFunction = (ftabIndex) => {
187
+ const funcName = FUNCTION_NAMES[ftabIndex] || `FUNC${ftabIndex}`;
188
+ const cargs = fixedArgCounts[ftabIndex] ?? 0;
189
+ stack.push(`${funcName}(${popArgs(cargs).join(",")})`);
190
+ };
191
+ const pushVariableFunction = (cargs, ftabIndex) => {
192
+ const funcName = FUNCTION_NAMES[ftabIndex] || `FUNC${ftabIndex}`;
193
+ stack.push(`${funcName}(${popArgs(cargs).join(",")})`);
194
+ };
195
+ const formatRef = (rowZero, colZero, rowRel, colRel) => {
196
+ const row = Math.max(0, rowZero);
197
+ const col = Math.max(0, colZero);
198
+ return `${colRel ? "" : "$"}${number2Alpha(col)}${rowRel ? "" : "$"}${row + 1}`;
199
+ };
200
+ const readShortRef = () => {
201
+ const row = reader.readUInt32LE();
202
+ const col = reader.readUInt16LE();
203
+ const rowRel = (col & 0x8000) !== 0;
204
+ const colRel = (col & 0x4000) !== 0;
205
+ return formatRef(row & 0x000fffff, col & 0x3fff, rowRel, colRel);
206
+ };
207
+ const readShortArea = () => {
208
+ const rowFirst = reader.readUInt32LE();
209
+ const rowLast = reader.readUInt32LE();
210
+ const colFirst = reader.readUInt16LE();
211
+ const colLast = reader.readUInt16LE();
212
+ const refFirst = formatRef(rowFirst & 0x000fffff, colFirst & 0x3fff, (colFirst & 0x8000) !== 0, (colFirst & 0x4000) !== 0);
213
+ const refLast = formatRef(rowLast & 0x000fffff, colLast & 0x3fff, (colLast & 0x8000) !== 0, (colLast & 0x4000) !== 0);
214
+ return `${refFirst}:${refLast}`;
215
+ };
216
+ const readRelShortRef = () => {
217
+ const rowOffset = reader.readInt32LE();
218
+ const colRaw = reader.readInt16LE();
219
+ const colOffset14 = colRaw & 0x3fff;
220
+ const colOffset = (colOffset14 << 18) >> 18;
221
+ const baseRowZero = Math.max(0, (baseCell?.row ?? 1) - 1);
222
+ const baseColZero = Math.max(0, (baseCell?.col ?? 1) - 1);
223
+ return formatRef(baseRowZero + rowOffset, baseColZero + colOffset, true, true);
224
+ };
225
+ const readRelShortArea = () => {
226
+ const rowFirstOffset = reader.readInt32LE();
227
+ const rowLastOffset = reader.readInt32LE();
228
+ const colFirstRaw = reader.readInt16LE();
229
+ const colLastRaw = reader.readInt16LE();
230
+ const colFirstOffset = ((colFirstRaw & 0x3fff) << 18) >> 18;
231
+ const colLastOffset = ((colLastRaw & 0x3fff) << 18) >> 18;
232
+ const baseRowZero = Math.max(0, (baseCell?.row ?? 1) - 1);
233
+ const baseColZero = Math.max(0, (baseCell?.col ?? 1) - 1);
234
+ const refFirst = formatRef(baseRowZero + rowFirstOffset, baseColZero + colFirstOffset, true, true);
235
+ const refLast = formatRef(baseRowZero + rowLastOffset, baseColZero + colLastOffset, true, true);
236
+ return `${refFirst}:${refLast}`;
237
+ };
238
+ try {
239
+ while (reader.offset < rgceBytes.length) {
240
+ const ptgOffset = reader.offset;
241
+ const ptg = reader.readUInt8();
242
+ if (debug) {
243
+ console.log(`[Rgce] @${ptgOffset}: ptg=0x${ptg.toString(16).padStart(2, '0')} stack=[${stack.join(', ')}]`);
244
+ }
245
+ // Handle token based on value
246
+ // Operators are 0x00-0x1f (no class bits)
247
+ // References/functions are 0x20-0x7f (have class bits in bits 5-6)
248
+ if (ptg === 0x03) {
249
+ // PtgAdd
250
+ const right = stack.pop() || "0";
251
+ const left = stack.pop() || "0";
252
+ stack.push(`${left}+${right}`);
253
+ }
254
+ else if (ptg === 0x04) {
255
+ // PtgSub - subtraction operator
256
+ const right = stack.pop() || "0";
257
+ const left = stack.pop() || "0";
258
+ stack.push(`${left}-${right}`);
259
+ }
260
+ else if (ptg === 0x05) {
261
+ // PtgMul - multiplication operator
262
+ const right = stack.pop() || "0";
263
+ const left = stack.pop() || "0";
264
+ stack.push(`${left}*${right}`);
265
+ }
266
+ else if (ptg === 0x06) {
267
+ // PtgDiv
268
+ const right = stack.pop() || "0";
269
+ const left = stack.pop() || "0";
270
+ stack.push(`${left}/${right}`);
271
+ }
272
+ else if (ptg === 0x07) {
273
+ // PtgPower
274
+ const right = stack.pop() || "0";
275
+ const left = stack.pop() || "0";
276
+ stack.push(`${left}^${right}`);
277
+ }
278
+ else if (ptg === 0x08) {
279
+ // PtgConcat
280
+ const right = stack.pop() || '""';
281
+ const left = stack.pop() || '""';
282
+ stack.push(`${left}&${right}`);
283
+ }
284
+ else if (ptg === 0x09) {
285
+ // PtgLT
286
+ const right = stack.pop() || "0";
287
+ const left = stack.pop() || "0";
288
+ stack.push(`${left}<${right}`);
289
+ }
290
+ else if (ptg === 0x0a) {
291
+ // PtgLE
292
+ const right = stack.pop() || "0";
293
+ const left = stack.pop() || "0";
294
+ stack.push(`${left}<=${right}`);
295
+ }
296
+ else if (ptg === 0x0b) {
297
+ // PtgEQ
298
+ const right = stack.pop() || "0";
299
+ const left = stack.pop() || "0";
300
+ stack.push(`${left}=${right}`);
301
+ }
302
+ else if (ptg === 0x0c) {
303
+ // PtgGE
304
+ const right = stack.pop() || "0";
305
+ const left = stack.pop() || "0";
306
+ stack.push(`${left}>=${right}`);
307
+ }
308
+ else if (ptg === 0x0d) {
309
+ // PtgGT
310
+ const right = stack.pop() || "0";
311
+ const left = stack.pop() || "0";
312
+ stack.push(`${left}>${right}`);
313
+ }
314
+ else if (ptg === 0x0e) {
315
+ // PtgNE
316
+ const right = stack.pop() || "0";
317
+ const left = stack.pop() || "0";
318
+ stack.push(`${left}<>${right}`);
319
+ }
320
+ else if (ptg === 0x12) {
321
+ // PtgUPlus
322
+ const operand = stack.pop() || "0";
323
+ stack.push(`+${operand}`);
324
+ }
325
+ else if (ptg === 0x13) {
326
+ // PtgUMinus
327
+ const operand = stack.pop() || "0";
328
+ stack.push(`-${operand}`);
329
+ }
330
+ else if (ptg === 0x14) {
331
+ // PtgPercent
332
+ const operand = stack.pop() || "0";
333
+ stack.push(`${operand}%`);
334
+ }
335
+ else if (ptg === 0x15) {
336
+ // PtgParen
337
+ const operand = stack.pop() || "";
338
+ stack.push(`(${operand})`);
339
+ }
340
+ else if (ptg === 0x16) {
341
+ // PtgMissArg - missing argument (empty between commas)
342
+ stack.push("");
343
+ }
344
+ else if (ptg === 0x17) {
345
+ // PtgStr - string constant
346
+ const str = reader.readXLWideString();
347
+ stack.push(`"${str.replace(/"/g, '""')}"`);
348
+ }
349
+ else if (ptg === 0x1d) {
350
+ // PtgBool - boolean constant
351
+ const value = reader.readUInt8();
352
+ stack.push(value ? "TRUE" : "FALSE");
353
+ }
354
+ else if (ptg === 0x1e) {
355
+ // PtgInt - integer constant
356
+ const value = reader.readUInt16LE();
357
+ stack.push(String(value));
358
+ }
359
+ else if (ptg === 0x1f) {
360
+ // PtgNum - float constant
361
+ const value = reader.readFloat64LE();
362
+ stack.push(String(value));
363
+ }
364
+ else if (ptg === 0x18) {
365
+ // PtgErr - error constant
366
+ if (!canRead(1))
367
+ break;
368
+ const code = reader.readUInt8();
369
+ const errorValues = {
370
+ 0x00: "#NULL!",
371
+ 0x07: "#DIV/0!",
372
+ 0x0f: "#VALUE!",
373
+ 0x17: "#REF!",
374
+ 0x1d: "#NAME?",
375
+ 0x24: "#NUM!",
376
+ 0x2a: "#N/A",
377
+ 0x2b: "#GETTING_DATA",
378
+ };
379
+ stack.push(errorValues[code] || "#VALUE!");
380
+ }
381
+ else if (ptg === 0x19) {
382
+ // PtgAttr: 1 byte flags + 2 bytes data
383
+ if (!canRead(3))
384
+ break;
385
+ const flags = reader.readUInt8();
386
+ const data = reader.readUInt16LE();
387
+ // Handle various PtgAttr flags
388
+ if ((flags & 0x10) !== 0) {
389
+ // fSum: treat previous operand as SUM(operand)
390
+ const operand = stack.pop() || "";
391
+ stack.push(`SUM(${operand})`);
392
+ }
393
+ // Note: Other flags (fIf=0x02, fChoose=0x04, fSkip=0x08, fGoto=0x01)
394
+ // are for control flow and typically don't affect the formula string
395
+ // They just affect how bytes are skipped during parsing
396
+ }
397
+ else if (ptg === 0x01) {
398
+ // Ambiguous in some XLSB streams:
399
+ // - PtgExp (4-byte payload)
400
+ // - PtgFunc ref-class variant (2-byte payload)
401
+ if (canRead(4)) {
402
+ const srcRow = reader.readUInt16LE() + 1;
403
+ const srcCol = reader.readUInt16LE() + 1;
404
+ stack.push(`__PTGEXP__:${srcRow}:${srcCol}`);
405
+ }
406
+ else if (canRead(2)) {
407
+ pushFixedFunction(reader.readUInt16LE());
408
+ }
409
+ else {
410
+ break;
411
+ }
412
+ }
413
+ else if (ptg === 0x02) {
414
+ // PtgFuncVar reference-class variant (0x02)
415
+ // In practice, 0x02 is PtgFuncVar, not PtgTbl
416
+ if (canRead(3)) {
417
+ const cargs = reader.readUInt8();
418
+ pushVariableFunction(cargs, reader.readUInt16LE());
419
+ }
420
+ else {
421
+ break;
422
+ }
423
+ }
424
+ else if (ptg === 0x1a || ptg === 0x3a || ptg === 0x5a || ptg === 0x7a) {
425
+ // PtgRef3d - cross-sheet cell reference
426
+ if (!canRead(8))
427
+ break;
428
+ const ixti = reader.readUInt16LE(); // External sheet index
429
+ const cellRef = readShortRef();
430
+ // Get sheet name if available
431
+ const sheetName = resolveSheetName(ixti);
432
+ if (sheetName) {
433
+ const quotedName = quoteSheetName(sheetName);
434
+ stack.push(`${quotedName}!${cellRef}`);
435
+ }
436
+ else {
437
+ stack.push(cellRef);
438
+ }
439
+ }
440
+ else if (ptg === 0x1b || ptg === 0x3b || ptg === 0x5b || ptg === 0x7b) {
441
+ // PtgArea3d - cross-sheet range reference
442
+ if (!canRead(14))
443
+ break;
444
+ const ixti = reader.readUInt16LE(); // External sheet index
445
+ const rangeRef = readShortArea();
446
+ // Get sheet name if available
447
+ const sheetName = resolveSheetName(ixti);
448
+ if (sheetName) {
449
+ const quotedName = quoteSheetName(sheetName);
450
+ stack.push(`${quotedName}!${rangeRef}`);
451
+ }
452
+ else {
453
+ stack.push(rangeRef);
454
+ }
455
+ }
456
+ // References and functions have class bits
457
+ else if (ptg >= 0x20) {
458
+ const basePtg = ptg & 0x1f;
459
+ if (basePtg === 0x01) {
460
+ // PtgFunc - function with fixed args
461
+ if (!canRead(2))
462
+ break;
463
+ pushFixedFunction(reader.readUInt16LE());
464
+ }
465
+ else if (basePtg === 0x02) {
466
+ // PtgFuncVar - function with variable args
467
+ if (!canRead(3))
468
+ break;
469
+ const cargs = reader.readUInt8();
470
+ pushVariableFunction(cargs, reader.readUInt16LE());
471
+ }
472
+ else if (basePtg === 0x04) {
473
+ // PtgRef - cell reference
474
+ if (!canRead(6))
475
+ break;
476
+ stack.push(readShortRef());
477
+ }
478
+ else if (basePtg === 0x05) {
479
+ // PtgArea - range reference
480
+ if (!canRead(12))
481
+ break;
482
+ stack.push(readShortArea());
483
+ }
484
+ else if (basePtg === 0x0c) {
485
+ // PtgRefN - relative cell reference (commonly used in shared formulas)
486
+ if (!canRead(6))
487
+ break;
488
+ stack.push(readRelShortRef());
489
+ }
490
+ else if (basePtg === 0x0d) {
491
+ // PtgAreaN - relative range reference
492
+ if (!canRead(12))
493
+ break;
494
+ stack.push(readRelShortArea());
495
+ }
496
+ else {
497
+ // Unknown class token: break to avoid stream desync.
498
+ break;
499
+ }
500
+ }
501
+ else {
502
+ // Unknown non-class token: break to avoid stream desync.
503
+ if (debug) {
504
+ console.log(`[Rgce] Unknown token 0x${ptg.toString(16)}, stopping parse`);
505
+ }
506
+ break;
507
+ }
508
+ }
509
+ }
510
+ catch (err) {
511
+ // Parse error - return what we have so far
512
+ if (debug) {
513
+ console.error("[Rgce] Parse error:", err);
514
+ }
515
+ return stack.length > 0 ? stack[stack.length - 1] : "";
516
+ }
517
+ const result = stack.length > 0 ? stack[stack.length - 1] : "";
518
+ if (debug) {
519
+ console.log("[Rgce] Final result:", result);
520
+ }
521
+ return result;
522
+ }
@@ -0,0 +1,5 @@
1
+ import { XlsxPlugin } from "../xlsx/index";
2
+ export declare class XlsmPlugin extends XlsxPlugin {
3
+ constructor();
4
+ }
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../excel-parser/plugins/xlsm/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,qBAAa,UAAW,SAAQ,UAAU;;CAIzC"}
@@ -0,0 +1,6 @@
1
+ import { XlsxPlugin } from "../xlsx/index";
2
+ export class XlsmPlugin extends XlsxPlugin {
3
+ constructor() {
4
+ super();
5
+ }
6
+ }
@@ -0,0 +1,60 @@
1
+ import type { ChartData, EmbeddedChart, EmbeddedObjectPosition, HIDDEN_DIMENSION_STRATEGY, SheetRange } from "@rowsncolumns/spreadsheet";
2
+ import type { StreamingZipParser } from "../../zip-parser-streaming";
3
+ /**
4
+ * Resolver from a sheet name (as it appears inside chart formula refs,
5
+ * e.g. `'Data for the Chart'!$A$7:$A$26`) to the numeric sheetId in the
6
+ * workbook. Returns `undefined` when the sheet can't be found — the
7
+ * caller then falls back to the host sheetId, preserving the legacy
8
+ * behaviour (chart pinned to its own sheet) for malformed refs.
9
+ */
10
+ export type ResolveSheetId = (sheetName: string | undefined) => number | undefined;
11
+ export declare function processChart(chartTarget: string, drawingPath: string, anchor: any, sheetId: number, zipParser: StreamingZipParser, xmlParser: any, sheetDimensions?: SheetDimensions, resolveSheetId?: ResolveSheetId): Promise<EmbeddedChart | null>;
12
+ export declare function extractChartDataRange(plotArea: any, chartType: string, sheetId: number, resolveSheetId?: ResolveSheetId): SheetRange | null;
13
+ /**
14
+ * Extract hidden dimension strategy from plotVisOnly attribute
15
+ * In Excel: plotVisOnly="1" means skip hidden rows/columns, "0" means show all
16
+ */
17
+ export declare function extractHiddenDimensionStrategy(chart: any): HIDDEN_DIMENSION_STRATEGY | undefined;
18
+ export declare function extractChartTitle(chart: any): string;
19
+ export declare function determineChartType(chart: any): "bar" | "column" | "line" | "pie" | "doughnut" | "area" | "radar" | "stock" | "scatter" | "bubble" | "treemap" | "sunburst" | "histogram" | "boxplot" | "waterfall" | "funnel";
20
+ /**
21
+ * Phase 5.5 — pull binCount out of the c15:histogramChart extension
22
+ * marker. Returns undefined if absent.
23
+ */
24
+ export declare function extractC15HistogramBinCount(plotArea: any): number | undefined;
25
+ export declare function extractChartSeries(plotArea: any, chartType: string, sheetId: number, resolveSheetId?: ResolveSheetId): ChartData[];
26
+ export declare function extractChartDomains(plotArea: any, chartType: string, sheetId: number, resolveSheetId?: ResolveSheetId): ChartData[];
27
+ /**
28
+ * Bubble charts have a third dimension — bubble size — referenced
29
+ * via `<c:bubbleSize><c:numRef><c:f>` on each series. Returns one
30
+ * `ChartData` entry per series (matches the shape used by `domains` /
31
+ * `series`).
32
+ */
33
+ export declare function extractChartBubbleSizes(plotArea: any, sheetId: number, resolveSheetId?: ResolveSheetId): ChartData[];
34
+ export type SheetDimensions = {
35
+ columnWidths?: Map<number, number>;
36
+ rowHeights?: Map<number, number>;
37
+ defaultColumnWidth?: number;
38
+ defaultRowHeight?: number;
39
+ };
40
+ export declare function extractChartPosition(anchor: any, sheetId: number, sheetDimensions?: SheetDimensions): EmbeddedObjectPosition | null;
41
+ export declare function extractAxisOptions(plotArea: any): {
42
+ valueAxisOptions: any;
43
+ secondaryValueAxisOptions: any;
44
+ categoryAxisOptions: any;
45
+ };
46
+ /**
47
+ * Pie-of-pie / bar-of-pie — extract the of-pie layout fields from
48
+ * `<c:ofPieChart>`. Returns undefined for plain pies. `splitType`
49
+ * maps the OOXML tokens (`pos`/`val`/`percent`) to the spec vocabulary;
50
+ * `auto` and `cust` (custom point assignment, carried in `<c:custSplit>`
51
+ * which the spec cannot represent) are omitted so the renderer applies
52
+ * Excel's default rule (position, last 3 values).
53
+ */
54
+ export declare function extractOfPieOptions(plotArea: any): {
55
+ ofPieType: "pie" | "bar";
56
+ splitType?: "position" | "value" | "percent";
57
+ splitPos?: number;
58
+ secondPieSize?: number;
59
+ } | undefined;
60
+ //# sourceMappingURL=charts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"charts.d.ts","sourceRoot":"","sources":["../../../../../excel-parser/plugins/xlsx/charts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,SAAS,EAET,aAAa,EACb,sBAAsB,EACtB,yBAAyB,EACzB,UAAU,EACX,MAAM,2BAA2B,CAAC;AAInC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAErE;;;;;;GAMG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,KAAK,MAAM,GAAG,SAAS,CAAC;AAkDnF,wBAAsB,YAAY,CAChC,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,GAAG,EACX,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,kBAAkB,EAC7B,SAAS,EAAE,GAAG,EACd,eAAe,CAAC,EAAE,eAAe,EACjC,cAAc,CAAC,EAAE,cAAc,GAC9B,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CA+L/B;AA8HD,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,GAAG,EACb,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,cAAc,CAAC,EAAE,cAAc,GAC9B,UAAU,GAAG,IAAI,CAgEnB;AA+DD;;;GAGG;AACH,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,GAAG,GACT,yBAAyB,GAAG,SAAS,CAiBvC;AAyBD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM,CAoBpD;AA0BD,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,GAAG,GAER,KAAK,GACL,QAAQ,GACR,MAAM,GACN,KAAK,GACL,UAAU,GACV,MAAM,GACN,OAAO,GACP,OAAO,GACP,SAAS,GACT,QAAQ,GACR,SAAS,GACT,UAAU,GACV,WAAW,GACX,SAAS,GACT,WAAW,GACX,QAAQ,CAwEX;AAoED;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,GAAG,GACZ,MAAM,GAAG,SAAS,CA+CpB;AAoGD,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,GAAG,EACb,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,cAAc,CAAC,EAAE,cAAc,GAC9B,SAAS,EAAE,CAkLb;AAioBD,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,GAAG,EACb,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,cAAc,CAAC,EAAE,cAAc,GAC9B,SAAS,EAAE,CAgGb;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,GAAG,EACb,OAAO,EAAE,MAAM,EACf,cAAc,CAAC,EAAE,cAAc,GAC9B,SAAS,EAAE,CAiBb;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,YAAY,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,UAAU,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,GAAG,EACX,OAAO,EAAE,MAAM,EACf,eAAe,CAAC,EAAE,eAAe,GAChC,sBAAsB,GAAG,IAAI,CA2H/B;AA4ND,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,GAAG;;;;EAe/C;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,GAAG,GAC7C;IACE,SAAS,EAAE,KAAK,GAAG,KAAK,CAAC;IACzB,SAAS,CAAC,EAAE,UAAU,GAAG,OAAO,GAAG,SAAS,CAAC;IAC7C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,GACD,SAAS,CAiCZ"}