@cj-tech-master/excelts 5.0.6 → 5.1.0

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 (273) hide show
  1. package/dist/browser/index.browser.d.ts +1 -1
  2. package/dist/browser/index.d.ts +1 -1
  3. package/dist/browser/modules/archive/unzip/stream.base.js +19 -19
  4. package/dist/browser/modules/archive/unzip/stream.browser.js +3 -3
  5. package/dist/browser/modules/csv/csv-core.js +6 -3
  6. package/dist/browser/modules/csv/csv.browser.js +2 -2
  7. package/dist/browser/modules/csv/csv.js +1 -1
  8. package/dist/browser/modules/excel/anchor.js +4 -4
  9. package/dist/browser/modules/excel/cell.js +5 -5
  10. package/dist/browser/modules/excel/column.js +4 -4
  11. package/dist/browser/modules/excel/defined-names.js +1 -1
  12. package/dist/browser/modules/excel/form-control.js +1 -1
  13. package/dist/browser/modules/excel/pivot-table.d.ts +168 -17
  14. package/dist/browser/modules/excel/pivot-table.js +278 -70
  15. package/dist/browser/modules/excel/row.js +4 -4
  16. package/dist/browser/modules/excel/stream/workbook-reader.browser.js +4 -4
  17. package/dist/browser/modules/excel/stream/workbook-writer.browser.js +4 -4
  18. package/dist/browser/modules/excel/stream/worksheet-reader.js +1 -1
  19. package/dist/browser/modules/excel/stream/worksheet-writer.js +4 -4
  20. package/dist/browser/modules/excel/table.js +2 -2
  21. package/dist/browser/modules/excel/types.d.ts +0 -4
  22. package/dist/browser/modules/excel/utils/cell-format.js +3 -3
  23. package/dist/browser/modules/excel/utils/shared-formula.js +1 -1
  24. package/dist/browser/modules/excel/utils/stream-buf.js +2 -2
  25. package/dist/browser/modules/excel/utils/string-buf.js +1 -1
  26. package/dist/browser/modules/excel/workbook.d.ts +0 -2
  27. package/dist/browser/modules/excel/workbook.js +4 -5
  28. package/dist/browser/modules/excel/worksheet.js +9 -9
  29. package/dist/browser/modules/excel/xlsx/xform/base-xform.d.ts +5 -5
  30. package/dist/browser/modules/excel/xlsx/xform/base-xform.js +1 -1
  31. package/dist/browser/modules/excel/xlsx/xform/book/defined-name-xform.js +2 -2
  32. package/dist/browser/modules/excel/xlsx/xform/book/workbook-view-xform.js +4 -4
  33. package/dist/browser/modules/excel/xlsx/xform/book/workbook-xform.js +16 -4
  34. package/dist/browser/modules/excel/xlsx/xform/comment/comment-xform.d.ts +1 -2
  35. package/dist/browser/modules/excel/xlsx/xform/comment/comments-xform.d.ts +1 -2
  36. package/dist/browser/modules/excel/xlsx/xform/comment/style/vml-position-xform.d.ts +3 -4
  37. package/dist/browser/modules/excel/xlsx/xform/comment/style/vml-position-xform.js +1 -1
  38. package/dist/browser/modules/excel/xlsx/xform/comment/style/vml-protection-xform.js +1 -1
  39. package/dist/browser/modules/excel/xlsx/xform/comment/vml-client-data-xform.d.ts +1 -2
  40. package/dist/browser/modules/excel/xlsx/xform/comment/vml-notes-xform.d.ts +1 -2
  41. package/dist/browser/modules/excel/xlsx/xform/comment/vml-shape-xform.js +1 -1
  42. package/dist/browser/modules/excel/xlsx/xform/comment/vml-textbox-xform.d.ts +1 -2
  43. package/dist/browser/modules/excel/xlsx/xform/comment/vml-textbox-xform.js +1 -1
  44. package/dist/browser/modules/excel/xlsx/xform/composite-xform.d.ts +1 -1
  45. package/dist/browser/modules/excel/xlsx/xform/core/app-xform.js +1 -1
  46. package/dist/browser/modules/excel/xlsx/xform/core/content-types-xform.js +24 -11
  47. package/dist/browser/modules/excel/xlsx/xform/drawing/base-cell-anchor-xform.js +1 -1
  48. package/dist/browser/modules/excel/xlsx/xform/drawing/blip-xform.d.ts +1 -2
  49. package/dist/browser/modules/excel/xlsx/xform/drawing/cell-position-xform.d.ts +1 -2
  50. package/dist/browser/modules/excel/xlsx/xform/drawing/ctrl-prop-xform.d.ts +1 -2
  51. package/dist/browser/modules/excel/xlsx/xform/drawing/drawing-xform.d.ts +1 -2
  52. package/dist/browser/modules/excel/xlsx/xform/drawing/ext-xform.d.ts +1 -2
  53. package/dist/browser/modules/excel/xlsx/xform/drawing/ext-xform.js +2 -2
  54. package/dist/browser/modules/excel/xlsx/xform/drawing/one-cell-anchor-xform.js +1 -1
  55. package/dist/browser/modules/excel/xlsx/xform/drawing/two-cell-anchor-xform.js +1 -1
  56. package/dist/browser/modules/excel/xlsx/xform/drawing/vml-drawing-xform.d.ts +1 -2
  57. package/dist/browser/modules/excel/xlsx/xform/list-xform.d.ts +1 -2
  58. package/dist/browser/modules/excel/xlsx/xform/list-xform.js +3 -3
  59. package/dist/browser/modules/excel/xlsx/xform/pivot-table/cache-field-xform.d.ts +5 -15
  60. package/dist/browser/modules/excel/xlsx/xform/pivot-table/cache-field-xform.js +134 -52
  61. package/dist/browser/modules/excel/xlsx/xform/pivot-table/cache-field.d.ts +14 -15
  62. package/dist/browser/modules/excel/xlsx/xform/pivot-table/cache-field.js +244 -70
  63. package/dist/browser/modules/excel/xlsx/xform/pivot-table/pivot-cache-definition-xform.d.ts +13 -29
  64. package/dist/browser/modules/excel/xlsx/xform/pivot-table/pivot-cache-definition-xform.js +213 -37
  65. package/dist/browser/modules/excel/xlsx/xform/pivot-table/pivot-cache-records-xform.d.ts +7 -34
  66. package/dist/browser/modules/excel/xlsx/xform/pivot-table/pivot-cache-records-xform.js +143 -41
  67. package/dist/browser/modules/excel/xlsx/xform/pivot-table/pivot-table-xform.d.ts +101 -27
  68. package/dist/browser/modules/excel/xlsx/xform/pivot-table/pivot-table-xform.js +793 -408
  69. package/dist/browser/modules/excel/xlsx/xform/pivot-table/raw-xml-collector.d.ts +78 -0
  70. package/dist/browser/modules/excel/xlsx/xform/pivot-table/raw-xml-collector.js +149 -0
  71. package/dist/browser/modules/excel/xlsx/xform/sheet/cell-xform.js +1 -1
  72. package/dist/browser/modules/excel/xlsx/xform/sheet/cf/cf-rule-xform.js +1 -1
  73. package/dist/browser/modules/excel/xlsx/xform/sheet/cf/conditional-formattings-xform.js +1 -1
  74. package/dist/browser/modules/excel/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js +1 -1
  75. package/dist/browser/modules/excel/xlsx/xform/sheet/col-xform.js +3 -3
  76. package/dist/browser/modules/excel/xlsx/xform/sheet/data-validations-xform.js +3 -3
  77. package/dist/browser/modules/excel/xlsx/xform/sheet/header-footer-xform.js +6 -6
  78. package/dist/browser/modules/excel/xlsx/xform/sheet/page-setup-xform.js +11 -11
  79. package/dist/browser/modules/excel/xlsx/xform/sheet/row-xform.d.ts +1 -2
  80. package/dist/browser/modules/excel/xlsx/xform/sheet/sheet-format-properties-xform.js +3 -3
  81. package/dist/browser/modules/excel/xlsx/xform/sheet/sheet-view-xform.d.ts +1 -2
  82. package/dist/browser/modules/excel/xlsx/xform/sheet/sheet-view-xform.js +10 -10
  83. package/dist/browser/modules/excel/xlsx/xform/sheet/worksheet-xform.js +12 -12
  84. package/dist/browser/modules/excel/xlsx/xform/strings/phonetic-text-xform.js +2 -2
  85. package/dist/browser/modules/excel/xlsx/xform/style/color-xform.js +1 -1
  86. package/dist/browser/modules/excel/xlsx/xform/style/style-xform.js +5 -5
  87. package/dist/browser/modules/excel/xlsx/xform/table/auto-filter-xform.d.ts +1 -2
  88. package/dist/browser/modules/excel/xlsx/xform/table/custom-filter-xform.d.ts +1 -2
  89. package/dist/browser/modules/excel/xlsx/xform/table/filter-column-xform.d.ts +1 -2
  90. package/dist/browser/modules/excel/xlsx/xform/table/filter-xform.d.ts +1 -2
  91. package/dist/browser/modules/excel/xlsx/xform/table/table-column-xform.d.ts +1 -2
  92. package/dist/browser/modules/excel/xlsx/xform/table/table-style-info-xform.d.ts +1 -2
  93. package/dist/browser/modules/excel/xlsx/xform/table/table-xform.d.ts +1 -2
  94. package/dist/browser/modules/excel/xlsx/xlsx.browser.d.ts +5 -2
  95. package/dist/browser/modules/excel/xlsx/xlsx.browser.js +88 -54
  96. package/dist/browser/utils/env.d.ts +0 -5
  97. package/dist/browser/utils/env.js +0 -7
  98. package/dist/browser/utils/utils.base.d.ts +8 -13
  99. package/dist/browser/utils/utils.base.js +40 -47
  100. package/dist/browser/utils/utils.browser.d.ts +1 -1
  101. package/dist/browser/utils/utils.browser.js +1 -1
  102. package/dist/browser/utils/utils.d.ts +1 -1
  103. package/dist/browser/utils/utils.js +1 -1
  104. package/dist/cjs/modules/archive/unzip/stream.base.js +19 -19
  105. package/dist/cjs/modules/archive/unzip/stream.browser.js +3 -3
  106. package/dist/cjs/modules/csv/csv-core.js +6 -3
  107. package/dist/cjs/modules/csv/csv.browser.js +2 -2
  108. package/dist/cjs/modules/csv/csv.js +1 -1
  109. package/dist/cjs/modules/excel/anchor.js +4 -4
  110. package/dist/cjs/modules/excel/cell.js +5 -5
  111. package/dist/cjs/modules/excel/column.js +4 -4
  112. package/dist/cjs/modules/excel/defined-names.js +1 -1
  113. package/dist/cjs/modules/excel/form-control.js +1 -1
  114. package/dist/cjs/modules/excel/pivot-table.js +280 -70
  115. package/dist/cjs/modules/excel/row.js +4 -4
  116. package/dist/cjs/modules/excel/stream/workbook-reader.browser.js +4 -4
  117. package/dist/cjs/modules/excel/stream/workbook-writer.browser.js +4 -4
  118. package/dist/cjs/modules/excel/stream/worksheet-reader.js +1 -1
  119. package/dist/cjs/modules/excel/stream/worksheet-writer.js +4 -4
  120. package/dist/cjs/modules/excel/table.js +2 -2
  121. package/dist/cjs/modules/excel/utils/cell-format.js +3 -3
  122. package/dist/cjs/modules/excel/utils/shared-formula.js +1 -1
  123. package/dist/cjs/modules/excel/utils/stream-buf.js +2 -2
  124. package/dist/cjs/modules/excel/utils/string-buf.js +1 -1
  125. package/dist/cjs/modules/excel/workbook.js +4 -5
  126. package/dist/cjs/modules/excel/worksheet.js +9 -9
  127. package/dist/cjs/modules/excel/xlsx/xform/base-xform.js +1 -1
  128. package/dist/cjs/modules/excel/xlsx/xform/book/defined-name-xform.js +2 -2
  129. package/dist/cjs/modules/excel/xlsx/xform/book/workbook-view-xform.js +4 -4
  130. package/dist/cjs/modules/excel/xlsx/xform/book/workbook-xform.js +16 -4
  131. package/dist/cjs/modules/excel/xlsx/xform/comment/style/vml-position-xform.js +1 -1
  132. package/dist/cjs/modules/excel/xlsx/xform/comment/style/vml-protection-xform.js +1 -1
  133. package/dist/cjs/modules/excel/xlsx/xform/comment/vml-shape-xform.js +1 -1
  134. package/dist/cjs/modules/excel/xlsx/xform/comment/vml-textbox-xform.js +1 -1
  135. package/dist/cjs/modules/excel/xlsx/xform/core/app-xform.js +1 -1
  136. package/dist/cjs/modules/excel/xlsx/xform/core/content-types-xform.js +24 -11
  137. package/dist/cjs/modules/excel/xlsx/xform/drawing/base-cell-anchor-xform.js +1 -1
  138. package/dist/cjs/modules/excel/xlsx/xform/drawing/ext-xform.js +2 -2
  139. package/dist/cjs/modules/excel/xlsx/xform/drawing/one-cell-anchor-xform.js +1 -1
  140. package/dist/cjs/modules/excel/xlsx/xform/drawing/two-cell-anchor-xform.js +1 -1
  141. package/dist/cjs/modules/excel/xlsx/xform/list-xform.js +3 -3
  142. package/dist/cjs/modules/excel/xlsx/xform/pivot-table/cache-field-xform.js +133 -51
  143. package/dist/cjs/modules/excel/xlsx/xform/pivot-table/cache-field.js +245 -71
  144. package/dist/cjs/modules/excel/xlsx/xform/pivot-table/pivot-cache-definition-xform.js +212 -36
  145. package/dist/cjs/modules/excel/xlsx/xform/pivot-table/pivot-cache-records-xform.js +142 -40
  146. package/dist/cjs/modules/excel/xlsx/xform/pivot-table/pivot-table-xform.js +793 -408
  147. package/dist/cjs/modules/excel/xlsx/xform/pivot-table/raw-xml-collector.js +153 -0
  148. package/dist/cjs/modules/excel/xlsx/xform/sheet/cell-xform.js +1 -1
  149. package/dist/cjs/modules/excel/xlsx/xform/sheet/cf/cf-rule-xform.js +1 -1
  150. package/dist/cjs/modules/excel/xlsx/xform/sheet/cf/conditional-formattings-xform.js +1 -1
  151. package/dist/cjs/modules/excel/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js +1 -1
  152. package/dist/cjs/modules/excel/xlsx/xform/sheet/col-xform.js +3 -3
  153. package/dist/cjs/modules/excel/xlsx/xform/sheet/data-validations-xform.js +3 -3
  154. package/dist/cjs/modules/excel/xlsx/xform/sheet/header-footer-xform.js +6 -6
  155. package/dist/cjs/modules/excel/xlsx/xform/sheet/page-setup-xform.js +11 -11
  156. package/dist/cjs/modules/excel/xlsx/xform/sheet/sheet-format-properties-xform.js +3 -3
  157. package/dist/cjs/modules/excel/xlsx/xform/sheet/sheet-view-xform.js +10 -10
  158. package/dist/cjs/modules/excel/xlsx/xform/sheet/worksheet-xform.js +12 -12
  159. package/dist/cjs/modules/excel/xlsx/xform/strings/phonetic-text-xform.js +2 -2
  160. package/dist/cjs/modules/excel/xlsx/xform/style/color-xform.js +1 -1
  161. package/dist/cjs/modules/excel/xlsx/xform/style/style-xform.js +5 -5
  162. package/dist/cjs/modules/excel/xlsx/xlsx.browser.js +88 -54
  163. package/dist/cjs/utils/env.js +0 -8
  164. package/dist/cjs/utils/utils.base.js +41 -54
  165. package/dist/cjs/utils/utils.browser.js +2 -7
  166. package/dist/cjs/utils/utils.js +2 -7
  167. package/dist/esm/modules/archive/unzip/stream.base.js +19 -19
  168. package/dist/esm/modules/archive/unzip/stream.browser.js +3 -3
  169. package/dist/esm/modules/csv/csv-core.js +6 -3
  170. package/dist/esm/modules/csv/csv.browser.js +2 -2
  171. package/dist/esm/modules/csv/csv.js +1 -1
  172. package/dist/esm/modules/excel/anchor.js +4 -4
  173. package/dist/esm/modules/excel/cell.js +5 -5
  174. package/dist/esm/modules/excel/column.js +4 -4
  175. package/dist/esm/modules/excel/defined-names.js +1 -1
  176. package/dist/esm/modules/excel/form-control.js +1 -1
  177. package/dist/esm/modules/excel/pivot-table.js +278 -70
  178. package/dist/esm/modules/excel/row.js +4 -4
  179. package/dist/esm/modules/excel/stream/workbook-reader.browser.js +4 -4
  180. package/dist/esm/modules/excel/stream/workbook-writer.browser.js +4 -4
  181. package/dist/esm/modules/excel/stream/worksheet-reader.js +1 -1
  182. package/dist/esm/modules/excel/stream/worksheet-writer.js +4 -4
  183. package/dist/esm/modules/excel/table.js +2 -2
  184. package/dist/esm/modules/excel/utils/cell-format.js +3 -3
  185. package/dist/esm/modules/excel/utils/shared-formula.js +1 -1
  186. package/dist/esm/modules/excel/utils/stream-buf.js +2 -2
  187. package/dist/esm/modules/excel/utils/string-buf.js +1 -1
  188. package/dist/esm/modules/excel/workbook.js +4 -5
  189. package/dist/esm/modules/excel/worksheet.js +9 -9
  190. package/dist/esm/modules/excel/xlsx/xform/base-xform.js +1 -1
  191. package/dist/esm/modules/excel/xlsx/xform/book/defined-name-xform.js +2 -2
  192. package/dist/esm/modules/excel/xlsx/xform/book/workbook-view-xform.js +4 -4
  193. package/dist/esm/modules/excel/xlsx/xform/book/workbook-xform.js +16 -4
  194. package/dist/esm/modules/excel/xlsx/xform/comment/style/vml-position-xform.js +1 -1
  195. package/dist/esm/modules/excel/xlsx/xform/comment/style/vml-protection-xform.js +1 -1
  196. package/dist/esm/modules/excel/xlsx/xform/comment/vml-shape-xform.js +1 -1
  197. package/dist/esm/modules/excel/xlsx/xform/comment/vml-textbox-xform.js +1 -1
  198. package/dist/esm/modules/excel/xlsx/xform/core/app-xform.js +1 -1
  199. package/dist/esm/modules/excel/xlsx/xform/core/content-types-xform.js +24 -11
  200. package/dist/esm/modules/excel/xlsx/xform/drawing/base-cell-anchor-xform.js +1 -1
  201. package/dist/esm/modules/excel/xlsx/xform/drawing/ext-xform.js +2 -2
  202. package/dist/esm/modules/excel/xlsx/xform/drawing/one-cell-anchor-xform.js +1 -1
  203. package/dist/esm/modules/excel/xlsx/xform/drawing/two-cell-anchor-xform.js +1 -1
  204. package/dist/esm/modules/excel/xlsx/xform/list-xform.js +3 -3
  205. package/dist/esm/modules/excel/xlsx/xform/pivot-table/cache-field-xform.js +134 -52
  206. package/dist/esm/modules/excel/xlsx/xform/pivot-table/cache-field.js +244 -70
  207. package/dist/esm/modules/excel/xlsx/xform/pivot-table/pivot-cache-definition-xform.js +213 -37
  208. package/dist/esm/modules/excel/xlsx/xform/pivot-table/pivot-cache-records-xform.js +143 -41
  209. package/dist/esm/modules/excel/xlsx/xform/pivot-table/pivot-table-xform.js +793 -408
  210. package/dist/esm/modules/excel/xlsx/xform/pivot-table/raw-xml-collector.js +149 -0
  211. package/dist/esm/modules/excel/xlsx/xform/sheet/cell-xform.js +1 -1
  212. package/dist/esm/modules/excel/xlsx/xform/sheet/cf/cf-rule-xform.js +1 -1
  213. package/dist/esm/modules/excel/xlsx/xform/sheet/cf/conditional-formattings-xform.js +1 -1
  214. package/dist/esm/modules/excel/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js +1 -1
  215. package/dist/esm/modules/excel/xlsx/xform/sheet/col-xform.js +3 -3
  216. package/dist/esm/modules/excel/xlsx/xform/sheet/data-validations-xform.js +3 -3
  217. package/dist/esm/modules/excel/xlsx/xform/sheet/header-footer-xform.js +6 -6
  218. package/dist/esm/modules/excel/xlsx/xform/sheet/page-setup-xform.js +11 -11
  219. package/dist/esm/modules/excel/xlsx/xform/sheet/sheet-format-properties-xform.js +3 -3
  220. package/dist/esm/modules/excel/xlsx/xform/sheet/sheet-view-xform.js +10 -10
  221. package/dist/esm/modules/excel/xlsx/xform/sheet/worksheet-xform.js +12 -12
  222. package/dist/esm/modules/excel/xlsx/xform/strings/phonetic-text-xform.js +2 -2
  223. package/dist/esm/modules/excel/xlsx/xform/style/color-xform.js +1 -1
  224. package/dist/esm/modules/excel/xlsx/xform/style/style-xform.js +5 -5
  225. package/dist/esm/modules/excel/xlsx/xlsx.browser.js +88 -54
  226. package/dist/esm/utils/env.js +0 -7
  227. package/dist/esm/utils/utils.base.js +40 -47
  228. package/dist/esm/utils/utils.browser.js +1 -1
  229. package/dist/esm/utils/utils.js +1 -1
  230. package/dist/iife/excelts.iife.js +1553 -718
  231. package/dist/iife/excelts.iife.js.map +1 -1
  232. package/dist/iife/excelts.iife.min.js +36 -105
  233. package/dist/types/index.browser.d.ts +1 -1
  234. package/dist/types/index.d.ts +1 -1
  235. package/dist/types/modules/excel/pivot-table.d.ts +168 -17
  236. package/dist/types/modules/excel/types.d.ts +0 -4
  237. package/dist/types/modules/excel/workbook.d.ts +0 -2
  238. package/dist/types/modules/excel/xlsx/xform/base-xform.d.ts +5 -5
  239. package/dist/types/modules/excel/xlsx/xform/comment/comment-xform.d.ts +1 -2
  240. package/dist/types/modules/excel/xlsx/xform/comment/comments-xform.d.ts +1 -2
  241. package/dist/types/modules/excel/xlsx/xform/comment/style/vml-position-xform.d.ts +3 -4
  242. package/dist/types/modules/excel/xlsx/xform/comment/vml-client-data-xform.d.ts +1 -2
  243. package/dist/types/modules/excel/xlsx/xform/comment/vml-notes-xform.d.ts +1 -2
  244. package/dist/types/modules/excel/xlsx/xform/comment/vml-textbox-xform.d.ts +1 -2
  245. package/dist/types/modules/excel/xlsx/xform/composite-xform.d.ts +1 -1
  246. package/dist/types/modules/excel/xlsx/xform/drawing/blip-xform.d.ts +1 -2
  247. package/dist/types/modules/excel/xlsx/xform/drawing/cell-position-xform.d.ts +1 -2
  248. package/dist/types/modules/excel/xlsx/xform/drawing/ctrl-prop-xform.d.ts +1 -2
  249. package/dist/types/modules/excel/xlsx/xform/drawing/drawing-xform.d.ts +1 -2
  250. package/dist/types/modules/excel/xlsx/xform/drawing/ext-xform.d.ts +1 -2
  251. package/dist/types/modules/excel/xlsx/xform/drawing/vml-drawing-xform.d.ts +1 -2
  252. package/dist/types/modules/excel/xlsx/xform/list-xform.d.ts +1 -2
  253. package/dist/types/modules/excel/xlsx/xform/pivot-table/cache-field-xform.d.ts +5 -15
  254. package/dist/types/modules/excel/xlsx/xform/pivot-table/cache-field.d.ts +14 -15
  255. package/dist/types/modules/excel/xlsx/xform/pivot-table/pivot-cache-definition-xform.d.ts +13 -29
  256. package/dist/types/modules/excel/xlsx/xform/pivot-table/pivot-cache-records-xform.d.ts +7 -34
  257. package/dist/types/modules/excel/xlsx/xform/pivot-table/pivot-table-xform.d.ts +101 -27
  258. package/dist/types/modules/excel/xlsx/xform/pivot-table/raw-xml-collector.d.ts +78 -0
  259. package/dist/types/modules/excel/xlsx/xform/sheet/row-xform.d.ts +1 -2
  260. package/dist/types/modules/excel/xlsx/xform/sheet/sheet-view-xform.d.ts +1 -2
  261. package/dist/types/modules/excel/xlsx/xform/table/auto-filter-xform.d.ts +1 -2
  262. package/dist/types/modules/excel/xlsx/xform/table/custom-filter-xform.d.ts +1 -2
  263. package/dist/types/modules/excel/xlsx/xform/table/filter-column-xform.d.ts +1 -2
  264. package/dist/types/modules/excel/xlsx/xform/table/filter-xform.d.ts +1 -2
  265. package/dist/types/modules/excel/xlsx/xform/table/table-column-xform.d.ts +1 -2
  266. package/dist/types/modules/excel/xlsx/xform/table/table-style-info-xform.d.ts +1 -2
  267. package/dist/types/modules/excel/xlsx/xform/table/table-xform.d.ts +1 -2
  268. package/dist/types/modules/excel/xlsx/xlsx.browser.d.ts +5 -2
  269. package/dist/types/utils/env.d.ts +0 -5
  270. package/dist/types/utils/utils.base.d.ts +8 -13
  271. package/dist/types/utils/utils.browser.d.ts +1 -1
  272. package/dist/types/utils/utils.d.ts +1 -1
  273. package/package.json +1 -1
@@ -1,81 +1,255 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CacheField = void 0;
3
+ exports.renderCacheField = renderCacheField;
4
+ exports.formatDateForExcel = formatDateForExcel;
4
5
  const utils_1 = require("../../../../../utils/utils.js");
5
- class CacheField {
6
- constructor({ name, sharedItems, minValue, maxValue }) {
7
- // string type
8
- //
9
- // {
10
- // 'name': 'A',
11
- // 'sharedItems': ['a1', 'a2', 'a3']
12
- // }
13
- //
14
- // or
15
- //
16
- // integer type (no sharedItems)
17
- //
18
- // {
19
- // 'name': 'D',
20
- // 'sharedItems': null,
21
- // 'minValue': 5,
22
- // 'maxValue': 45
23
- // }
24
- //
25
- // or
26
- //
27
- // numeric type with shared items (used as both row/column and value field)
28
- //
29
- // {
30
- // 'name': 'C',
31
- // 'sharedItems': [5, 24, 35, 45]
32
- // }
33
- this.name = name;
34
- this.sharedItems = sharedItems;
35
- this.minValue = minValue;
36
- this.maxValue = maxValue;
37
- }
38
- render() {
39
- // PivotCache Field: http://www.datypic.com/sc/ooxml/e-ssml_cacheField-1.html
40
- // Shared Items: http://www.datypic.com/sc/ooxml/e-ssml_sharedItems-1.html
41
- // Escape XML special characters in name attribute
42
- const escapedName = (0, utils_1.xmlEncode)(this.name);
43
- // No shared items - field not used for rows/columns
44
- if (this.sharedItems === null) {
45
- // If no minValue/maxValue, this is an unused field - use empty sharedItems like Excel does
46
- if (this.minValue === undefined || this.maxValue === undefined) {
47
- return `<cacheField name="${escapedName}" numFmtId="0">
48
- <sharedItems />
49
- </cacheField>`;
6
+ const pivot_table_1 = require("../../../pivot-table.js");
7
+ /**
8
+ * Format a Date for OOXML pivot cache output.
9
+ * Excel expects `"2024-01-15T00:00:00"` — no milliseconds, no trailing "Z".
10
+ */
11
+ function formatDateForExcel(date) {
12
+ // Guard against Invalid Date — toISOString() throws RangeError for invalid dates
13
+ if (isNaN(date.getTime())) {
14
+ return "";
15
+ }
16
+ return date.toISOString().replace(/\.\d{3}Z$/, "");
17
+ }
18
+ /**
19
+ * Render a single `<cacheField>` element as an XML string.
20
+ *
21
+ * This is a pure data-in → string-out transformation with no state or lifecycle,
22
+ * so it is a plain function rather than a class.
23
+ */
24
+ function renderCacheField(cf) {
25
+ // PivotCache Field: http://www.datypic.com/sc/ooxml/e-ssml_cacheField-1.html
26
+ // Shared Items: http://www.datypic.com/sc/ooxml/e-ssml_sharedItems-1.html
27
+ // Escape XML special characters in name attribute
28
+ const escapedName = (0, utils_1.xmlEncode)(cf.name);
29
+ const fmtId = cf.numFmtId ?? "0";
30
+ // Extra unknown attributes for roundtrip preservation (e.g. caption, formula)
31
+ const extraStr = buildExtraAttrsStr(cf.extraAttrs);
32
+ // fieldGroup raw XML for roundtrip (rendered after sharedItems per OOXML schema)
33
+ const fgXml = cf.fieldGroupXml ? `\n ${cf.fieldGroupXml}` : "";
34
+ // --- Branch A: no shared-item children ---
35
+ // For loaded fields, only render <sharedItems> if it was present in the original (sharedItems !== null).
36
+ // For new fields, sharedItems === null means a value-only field that still needs <sharedItems />.
37
+ if (cf.sharedItems === null) {
38
+ if (cf.isLoaded) {
39
+ // Loaded field with no <sharedItems> element — don't add one on roundtrip
40
+ if (fgXml) {
41
+ // Has fieldGroup — need open/close tags to wrap it
42
+ return `<cacheField name="${escapedName}" numFmtId="${fmtId}"${extraStr}>${fgXml}\n </cacheField>`;
50
43
  }
51
- // Numeric field used only for values (not rows/columns) - include min/max
52
- return `<cacheField name="${escapedName}" numFmtId="0">
53
- <sharedItems containsSemiMixedTypes="0" containsString="0" containsNumber="1" containsInteger="1" minValue="${this.minValue}" maxValue="${this.maxValue}" />
54
- </cacheField>`;
44
+ // R8-B6: No children at all use self-closing tag to avoid whitespace content
45
+ return `<cacheField name="${escapedName}" numFmtId="${fmtId}"${extraStr} />`;
46
+ }
47
+ // New field — render bare empty <sharedItems />
48
+ let attrStr;
49
+ if (cf.minValue !== undefined && cf.maxValue !== undefined) {
50
+ // New numeric-only field (no row/column usage) – compute type attributes
51
+ const integerAttr = cf.containsInteger ? ' containsInteger="1"' : "";
52
+ attrStr = ` containsSemiMixedTypes="0" containsString="0" containsNumber="1"${integerAttr} minValue="${cf.minValue}" maxValue="${cf.maxValue}"`;
53
+ }
54
+ else {
55
+ attrStr = "";
55
56
  }
56
- // Shared items exist - check if all values are numeric
57
- // Note: empty array returns true for every(), so check length first
58
- const allNumeric = this.sharedItems.length > 0 &&
59
- this.sharedItems.every(item => typeof item === "number" && Number.isFinite(item));
60
- const allInteger = allNumeric && this.sharedItems.every(item => Number.isInteger(item));
61
- if (allNumeric) {
62
- // Numeric shared items - used when field is both a row/column field AND a value field
63
- // This allows Excel to both group by unique values AND perform aggregation
64
- const minValue = Math.min(...this.sharedItems);
65
- const maxValue = Math.max(...this.sharedItems);
66
- const integerAttr = allInteger ? ' containsInteger="1"' : "";
67
- return `<cacheField name="${escapedName}" numFmtId="0">
68
- <sharedItems containsSemiMixedTypes="0" containsString="0" containsNumber="1"${integerAttr} minValue="${minValue}" maxValue="${maxValue}" count="${this.sharedItems.length}">
69
- ${this.sharedItems.map(item => `<n v="${item}" />`).join("")}
70
- </sharedItems>
57
+ return `<cacheField name="${escapedName}" numFmtId="${fmtId}"${extraStr}>
58
+ <sharedItems${attrStr} />${fgXml}
71
59
  </cacheField>`;
60
+ }
61
+ if (cf.isLoaded && cf.sharedItems.length === 0) {
62
+ // Roundtrip: use preserved attributes exactly as parsed
63
+ const attrStr = buildLoadedSharedItemsAttrs(cf);
64
+ return `<cacheField name="${escapedName}" numFmtId="${fmtId}"${extraStr}>
65
+ <sharedItems${attrStr} />${fgXml}
66
+ </cacheField>`;
67
+ }
68
+ // --- Branch B: shared items present – render each child element ---
69
+ // For loaded fields, skip recomputation – use preserved attributes directly
70
+ if (cf.isLoaded) {
71
+ const itemXmls = renderSharedItemElements(cf.sharedItems);
72
+ const finalAttrStr = buildLoadedSharedItemsAttrs(cf);
73
+ return `<cacheField name="${escapedName}" numFmtId="${fmtId}"${extraStr}>
74
+ <sharedItems${finalAttrStr} count="${cf.sharedItems.length}">
75
+ ${itemXmls}
76
+ </sharedItems>${fgXml}
77
+ </cacheField>`;
78
+ }
79
+ // New field – analyze content types in a single pass (avoids stack overflow from spread on large arrays)
80
+ let hasString = false;
81
+ let hasNumber = false;
82
+ let hasBoolean = false;
83
+ let hasDate = false;
84
+ let hasNull = false;
85
+ let hasError = false;
86
+ let allInteger = true;
87
+ let minValue = Infinity;
88
+ let maxValue = -Infinity;
89
+ for (const item of cf.sharedItems) {
90
+ if (item === null) {
91
+ hasNull = true;
92
+ }
93
+ else if (item instanceof pivot_table_1.PivotErrorValue) {
94
+ hasError = true;
72
95
  }
73
- // String shared items - escape XML special characters in each value
74
- return `<cacheField name="${escapedName}" numFmtId="0">
75
- <sharedItems count="${this.sharedItems.length}">
76
- ${this.sharedItems.map(item => `<s v="${(0, utils_1.xmlEncode)(String(item))}" />`).join("")}
77
- </sharedItems>
96
+ else if (typeof item === "string") {
97
+ hasString = true;
98
+ }
99
+ else if (typeof item === "number") {
100
+ if (Number.isFinite(item)) {
101
+ hasNumber = true;
102
+ if (item < minValue) {
103
+ minValue = item;
104
+ }
105
+ if (item > maxValue) {
106
+ maxValue = item;
107
+ }
108
+ if (!Number.isInteger(item)) {
109
+ allInteger = false;
110
+ }
111
+ }
112
+ else {
113
+ // NaN, Infinity, -Infinity are not valid OOXML numeric values — treat as missing
114
+ hasNull = true;
115
+ }
116
+ }
117
+ else if (typeof item === "boolean") {
118
+ hasBoolean = true;
119
+ }
120
+ else if (item instanceof Date) {
121
+ hasDate = true;
122
+ }
123
+ }
124
+ // Build sharedItems attributes per OOXML spec:
125
+ // - containsSemiMixedTypes: "0" if no strings at all (default "1")
126
+ // - containsString: "0" if no string items (default "1")
127
+ // - containsNumber: "1" if any numeric items (default "0")
128
+ // - containsInteger: "1" if all numbers are integers (only when containsNumber="1")
129
+ // - containsBlank: "1" if any null/missing items
130
+ // - containsMixedTypes: "1" if multiple non-string types present
131
+ // - containsDate: "1" if any date items (default "0")
132
+ const attrs = [];
133
+ if (!hasString) {
134
+ // No string items at all (errors, numbers, booleans, dates, nulls are all non-string)
135
+ attrs.push('containsSemiMixedTypes="0"');
136
+ attrs.push('containsString="0"');
137
+ }
138
+ // containsMixedTypes: set when multiple distinct non-string type families are present
139
+ // e.g., number+date, string+number, error+number, etc.
140
+ const typeCount = (hasString ? 1 : 0) +
141
+ (hasNumber ? 1 : 0) +
142
+ (hasBoolean ? 1 : 0) +
143
+ (hasDate ? 1 : 0) +
144
+ (hasError ? 1 : 0);
145
+ if (typeCount > 1) {
146
+ attrs.push('containsMixedTypes="1"');
147
+ }
148
+ if (hasNumber) {
149
+ attrs.push('containsNumber="1"');
150
+ if (allInteger) {
151
+ attrs.push('containsInteger="1"');
152
+ }
153
+ attrs.push(`minValue="${minValue}"`);
154
+ attrs.push(`maxValue="${maxValue}"`);
155
+ }
156
+ if (hasDate) {
157
+ attrs.push('containsDate="1"');
158
+ }
159
+ if (hasNull) {
160
+ attrs.push('containsBlank="1"');
161
+ }
162
+ const itemXmls = renderSharedItemElements(cf.sharedItems);
163
+ const attrStr = attrs.length > 0 ? ` ${attrs.join(" ")}` : "";
164
+ return `<cacheField name="${escapedName}" numFmtId="${fmtId}"${extraStr}>
165
+ <sharedItems${attrStr} count="${cf.sharedItems.length}">
166
+ ${itemXmls}
167
+ </sharedItems>${fgXml}
78
168
  </cacheField>`;
169
+ }
170
+ /**
171
+ * Render shared item elements as an XML string.
172
+ */
173
+ function renderSharedItemElements(sharedItems) {
174
+ const itemXmls = [];
175
+ for (const item of sharedItems) {
176
+ if (item === null) {
177
+ itemXmls.push("<m />");
178
+ }
179
+ else if (item instanceof pivot_table_1.PivotErrorValue) {
180
+ itemXmls.push(`<e v="${(0, utils_1.xmlEncode)(item.code)}" />`);
181
+ }
182
+ else if (typeof item === "number") {
183
+ if (Number.isFinite(item)) {
184
+ itemXmls.push(`<n v="${item}" />`);
185
+ }
186
+ else {
187
+ // NaN, Infinity, -Infinity — not valid in OOXML, render as missing
188
+ itemXmls.push("<m />");
189
+ }
190
+ }
191
+ else if (typeof item === "boolean") {
192
+ itemXmls.push(`<b v="${item ? "1" : "0"}" />`);
193
+ }
194
+ else if (item instanceof Date) {
195
+ itemXmls.push(`<d v="${formatDateForExcel(item)}" />`);
196
+ }
197
+ else {
198
+ // string
199
+ itemXmls.push(`<s v="${(0, utils_1.xmlEncode)(item)}" />`);
200
+ }
201
+ }
202
+ return itemXmls.join("");
203
+ }
204
+ /**
205
+ * Build extra attributes string for cacheField element (roundtrip preservation).
206
+ */
207
+ function buildExtraAttrsStr(extraAttrs) {
208
+ if (!extraAttrs) {
209
+ return "";
210
+ }
211
+ return Object.entries(extraAttrs)
212
+ .map(([k, v]) => ` ${k}="${(0, utils_1.xmlEncode)(v)}"`)
213
+ .join("");
214
+ }
215
+ /**
216
+ * Build sharedItems attribute string from preserved loaded attributes.
217
+ * Reconstructs the original attribute order for roundtrip fidelity.
218
+ */
219
+ function buildLoadedSharedItemsAttrs(cf) {
220
+ const parts = [];
221
+ if (cf.containsSemiMixedTypes !== undefined) {
222
+ parts.push(`containsSemiMixedTypes="${cf.containsSemiMixedTypes}"`);
223
+ }
224
+ if (cf.containsNonDate !== undefined) {
225
+ parts.push(`containsNonDate="${cf.containsNonDate}"`);
226
+ }
227
+ if (cf.containsString !== undefined) {
228
+ parts.push(`containsString="${cf.containsString}"`);
229
+ }
230
+ if (cf.containsBlank !== undefined) {
231
+ parts.push(`containsBlank="${cf.containsBlank}"`);
232
+ }
233
+ if (cf.containsMixedTypes !== undefined) {
234
+ parts.push(`containsMixedTypes="${cf.containsMixedTypes}"`);
235
+ }
236
+ // R8-B4: containsNumber/containsInteger are now raw strings ("0"/"1") for roundtrip fidelity
237
+ if (cf.containsNumber !== undefined) {
238
+ parts.push(`containsNumber="${cf.containsNumber}"`);
239
+ }
240
+ if (cf.containsInteger !== undefined) {
241
+ parts.push(`containsInteger="${cf.containsInteger}"`);
242
+ }
243
+ // R8-B5: Emit minValue/maxValue independently of containsNumber — the original XML
244
+ // may have these attributes even without containsNumber="1"
245
+ if (cf.minValue !== undefined) {
246
+ parts.push(`minValue="${cf.minValue}"`);
247
+ }
248
+ if (cf.maxValue !== undefined) {
249
+ parts.push(`maxValue="${cf.maxValue}"`);
250
+ }
251
+ if (cf.containsDate !== undefined) {
252
+ parts.push(`containsDate="${cf.containsDate}"`);
79
253
  }
254
+ return parts.length > 0 ? ` ${parts.join(" ")}` : "";
80
255
  }
81
- exports.CacheField = CacheField;