@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
@@ -132,7 +132,7 @@ class StreamBuf extends EventEmitter {
132
132
  this._asyncWriteQueue = Promise.resolve();
133
133
  this.bufSize = options?.bufSize || 1024 * 1024;
134
134
  this.buffers = [];
135
- this.batch = options?.batch || false;
135
+ this.batch = options?.batch ?? false;
136
136
  this.corked = false;
137
137
  this.paused = false;
138
138
  this.encoding = null;
@@ -345,7 +345,7 @@ class StreamBuf extends EventEmitter {
345
345
  * Cross-platform compatible - works identically in Node.js and Browser.
346
346
  */
347
347
  readString(encoding) {
348
- const enc = encoding || this.encoding || "utf-8";
348
+ const enc = encoding ?? this.encoding ?? "utf-8";
349
349
  const buf = this.read();
350
350
  if (typeof Buffer !== "undefined" && buf instanceof Buffer) {
351
351
  return buf.toString(enc);
@@ -33,7 +33,7 @@ class StringBuf {
33
33
  return this._buffer;
34
34
  }
35
35
  reset(position) {
36
- position = position || 0;
36
+ position = position ?? 0;
37
37
  this._buffer = undefined;
38
38
  this._inPos = position;
39
39
  }
@@ -52,8 +52,6 @@ export interface WorkbookModel {
52
52
  themes?: unknown;
53
53
  media: WorkbookMedia[];
54
54
  pivotTables: PivotTable[];
55
- /** Loaded pivot tables from file - used during reconciliation */
56
- loadedPivotTables?: any[];
57
55
  calcProperties: Partial<CalculationProperties>;
58
56
  /** Passthrough files (charts, etc.) preserved for round-trip */
59
57
  passthrough?: Record<string, Uint8Array>;
@@ -230,8 +230,8 @@ class Workbook {
230
230
  // ===========================================================================
231
231
  get model() {
232
232
  return {
233
- creator: this.creator || "Unknown",
234
- lastModifiedBy: this.lastModifiedBy || "Unknown",
233
+ creator: this.creator ?? "Unknown",
234
+ lastModifiedBy: this.lastModifiedBy ?? "Unknown",
235
235
  lastPrinted: this.lastPrinted,
236
236
  created: this.created,
237
237
  modified: this.modified,
@@ -293,10 +293,9 @@ class Workbook {
293
293
  this._definedNames.model = value.definedNames;
294
294
  this.views = value.views;
295
295
  this._themes = value.themes;
296
- this.media = value.media || [];
296
+ this.media = value.media ?? [];
297
297
  // Handle pivot tables - either newly created or loaded from file
298
- // Loaded pivot tables come from loadedPivotTables after reconciliation
299
- this.pivotTables = value.pivotTables || value.loadedPivotTables || [];
298
+ this.pivotTables = value.pivotTables ?? [];
300
299
  // Preserve passthrough files (charts, etc.) for round-trip preservation
301
300
  this._passthrough = value.passthrough || {};
302
301
  // Preserve raw drawing data for drawings with chart references
@@ -21,12 +21,12 @@ class Worksheet {
21
21
  options = options || {};
22
22
  this._workbook = options.workbook;
23
23
  // in a workbook, each sheet will have a number
24
- this.id = options.id || 0;
25
- this.orderNo = options.orderNo || 0;
24
+ this.id = options.id ?? 0;
25
+ this.orderNo = options.orderNo ?? 0;
26
26
  // and a name - use the setter to ensure validation and truncation
27
27
  this.name = options.name || `sheet${this.id}`;
28
28
  // add a state
29
- this.state = options.state || "visible";
29
+ this.state = options.state ?? "visible";
30
30
  // rows allows access organised by row. Sparse array of arrays indexed by row-1, col
31
31
  // Note: _rows is zero based. Must subtract 1 to go from cell.row to index
32
32
  this._rows = [];
@@ -86,8 +86,8 @@ class Worksheet {
86
86
  }, options.headerFooter);
87
87
  this.dataValidations = new DataValidations();
88
88
  // for freezepanes, split, zoom, gridlines, etc
89
- this.views = options.views || [];
90
- this.autoFilter = options.autoFilter || null;
89
+ this.views = options.views ?? [];
90
+ this.autoFilter = options.autoFilter ?? null;
91
91
  // for images, etc
92
92
  this._media = [];
93
93
  // worksheet protection
@@ -250,7 +250,7 @@ class Worksheet {
250
250
  if (inserts.length > 0) {
251
251
  // must iterate over all rows whether they exist yet or not
252
252
  for (let i = 0; i < nRows; i++) {
253
- const insertValues = inserts.map(insert => insert[i] || null);
253
+ const insertValues = inserts.map(insert => insert[i] ?? null);
254
254
  const row = this.getRow(i + 1);
255
255
  row.splice(start, count, ...insertValues);
256
256
  }
@@ -930,7 +930,7 @@ class Worksheet {
930
930
  };
931
931
  // =================================================
932
932
  // columns
933
- model.cols = Column.toModel(this.columns || []);
933
+ model.cols = Column.toModel(this.columns ?? []);
934
934
  // ==========================================================
935
935
  // Rows
936
936
  const rows = (model.rows = []);
@@ -978,8 +978,8 @@ class Worksheet {
978
978
  this.properties = value.properties;
979
979
  this.pageSetup = value.pageSetup;
980
980
  this.headerFooter = value.headerFooter;
981
- this.rowBreaks = value.rowBreaks || [];
982
- this.colBreaks = value.colBreaks || [];
981
+ this.rowBreaks = value.rowBreaks ?? [];
982
+ this.colBreaks = value.colBreaks ?? [];
983
983
  this.views = value.views;
984
984
  this.autoFilter = value.autoFilter;
985
985
  this._media = value.media.map(medium => new Image(this, medium));
@@ -3,11 +3,11 @@ interface ParseEvent {
3
3
  eventType: string;
4
4
  value: any;
5
5
  }
6
- declare class BaseXform {
6
+ declare class BaseXform<TModel = any> {
7
7
  map?: {
8
8
  [key: string]: any;
9
9
  };
10
- model?: any;
10
+ model?: TModel;
11
11
  prepare(_model?: any, _options?: any): void;
12
12
  render(_xmlStream?: XmlStream, _model?: any): void;
13
13
  parseOpen(_node: any): void;
@@ -16,10 +16,10 @@ declare class BaseXform {
16
16
  reconcile(_model: any, _options?: any): void;
17
17
  reset(): void;
18
18
  mergeModel(obj: any): void;
19
- parse(saxParser: AsyncIterable<ParseEvent[]>): Promise<any>;
20
- parseStream(stream: any): Promise<any>;
19
+ parse(saxParser: AsyncIterable<ParseEvent[]>): Promise<TModel | undefined>;
20
+ parseStream(stream: any): Promise<TModel | undefined>;
21
21
  get xml(): string;
22
- toXml(model: any): string;
22
+ toXml(model?: any): string;
23
23
  static toAttribute(value: any, dflt?: any, always?: boolean): string | undefined;
24
24
  static toStringAttribute(value: any, dflt?: any, always?: boolean): string | undefined;
25
25
  static toStringValue(attr: any, dflt?: any): any;
@@ -62,7 +62,7 @@ class BaseXform {
62
62
  // ============================================================
63
63
  reset() {
64
64
  // to make sure parses don't bleed to next iteration
65
- this.model = null;
65
+ this.model = undefined;
66
66
  // if we have a map - reset them too
67
67
  if (this.map) {
68
68
  Object.values(this.map).forEach(xform => {
@@ -57,7 +57,7 @@ function isValidRange(range) {
57
57
  return false;
58
58
  }
59
59
  // Extract the cell reference part (after the sheet name if present)
60
- const cellRef = range.split("!").pop() || "";
60
+ const cellRef = range.split("!").pop() ?? "";
61
61
  // Must match one of the valid patterns
62
62
  if (!cellRangeRegexp.test(cellRef) &&
63
63
  !rowRangeRegexp.test(cellRef) &&
@@ -93,7 +93,7 @@ function extractRanges(parsedText) {
93
93
  if (!item) {
94
94
  return;
95
95
  }
96
- const quotes = (item.match(/'/g) || []).length;
96
+ const quotes = (item.match(/'/g) ?? []).length;
97
97
  if (!quotes) {
98
98
  if (quotesOpened) {
99
99
  last += `${item},`;
@@ -2,10 +2,10 @@ import { BaseXform } from "../base-xform.js";
2
2
  class WorkbookViewXform extends BaseXform {
3
3
  render(xmlStream, model) {
4
4
  const attributes = {
5
- xWindow: model.x || 0,
6
- yWindow: model.y || 0,
7
- windowWidth: model.width || 12000,
8
- windowHeight: model.height || 24000,
5
+ xWindow: model.x ?? 0,
6
+ yWindow: model.y ?? 0,
7
+ windowWidth: model.width ?? 12000,
8
+ windowHeight: model.height ?? 24000,
9
9
  firstSheet: model.firstSheet,
10
10
  activeTab: model.activeTab
11
11
  };
@@ -74,7 +74,7 @@ class WorkbookXform extends BaseXform {
74
74
  if (printAreas.length) {
75
75
  model.definedNames = model.definedNames.concat(printAreas);
76
76
  }
77
- (model.media || []).forEach((medium, i) => {
77
+ (model.media ?? []).forEach((medium, i) => {
78
78
  // assign name
79
79
  medium.name = medium.type + (i + 1);
80
80
  });
@@ -88,7 +88,19 @@ class WorkbookXform extends BaseXform {
88
88
  this.map.sheets.render(xmlStream, model.sheets);
89
89
  this.map.definedNames.render(xmlStream, model.definedNames);
90
90
  this.map.calcPr.render(xmlStream, model.calcProperties);
91
- this.map.pivotCaches.render(xmlStream, model.pivotTables);
91
+ // R9-B6: Deduplicate pivot caches by cacheId before rendering.
92
+ // Multiple pivot tables may share the same cache, but workbook.xml should
93
+ // only list each cache once in <pivotCaches>.
94
+ const pivotTables = model.pivotTables ?? [];
95
+ const seenCacheIds = new Set();
96
+ const uniquePivotCaches = pivotTables.filter((pt) => {
97
+ if (seenCacheIds.has(pt.cacheId)) {
98
+ return false;
99
+ }
100
+ seenCacheIds.add(pt.cacheId);
101
+ return true;
102
+ });
103
+ this.map.pivotCaches.render(xmlStream, uniquePivotCaches);
92
104
  xmlStream.closeNode();
93
105
  }
94
106
  parseOpen(node) {
@@ -140,7 +152,7 @@ class WorkbookXform extends BaseXform {
140
152
  }
141
153
  }
142
154
  reconcile(model) {
143
- const rels = (model.workbookRels || []).reduce((map, rel) => {
155
+ const rels = (model.workbookRels ?? []).reduce((map, rel) => {
144
156
  map[rel.Id] = rel;
145
157
  return map;
146
158
  }, {});
@@ -148,7 +160,7 @@ class WorkbookXform extends BaseXform {
148
160
  const worksheets = [];
149
161
  let worksheet;
150
162
  let index = 0;
151
- (model.sheets || []).forEach((sheet) => {
163
+ (model.sheets ?? []).forEach((sheet) => {
152
164
  const rel = rels[sheet.rId];
153
165
  if (!rel) {
154
166
  return;
@@ -13,8 +13,7 @@ interface CommentModel {
13
13
  ref: string;
14
14
  authorId?: number;
15
15
  }
16
- declare class CommentXform extends BaseXform {
17
- model: CommentModel;
16
+ declare class CommentXform extends BaseXform<CommentModel> {
18
17
  parser: any;
19
18
  private _richTextXform?;
20
19
  constructor(model?: CommentModel);
@@ -3,12 +3,11 @@ import { CommentXform } from "@excel/xlsx/xform/comment/comment-xform";
3
3
  interface CommentsModel {
4
4
  comments: any[];
5
5
  }
6
- declare class CommentsXform extends BaseXform {
6
+ declare class CommentsXform extends BaseXform<CommentsModel> {
7
7
  map: {
8
8
  [key: string]: CommentXform;
9
9
  };
10
10
  parser: any;
11
- model: CommentsModel;
12
11
  constructor();
13
12
  render(xmlStream: any, model?: CommentsModel): void;
14
13
  parseOpen(node: any): boolean;
@@ -1,9 +1,8 @@
1
1
  import { BaseXform } from "@excel/xlsx/xform/base-xform";
2
- declare class VmlPositionXform extends BaseXform {
2
+ declare class VmlPositionXform extends BaseXform<{
3
+ [key: string]: boolean;
4
+ }> {
3
5
  private _model;
4
- model: {
5
- [key: string]: boolean;
6
- };
7
6
  constructor(model?: {
8
7
  tag?: string;
9
8
  });
@@ -6,7 +6,7 @@ class VmlPositionXform extends BaseXform {
6
6
  this.model = {};
7
7
  }
8
8
  get tag() {
9
- return (this._model && this._model.tag) || "";
9
+ return this._model?.tag ?? "";
10
10
  }
11
11
  render(xmlStream, model, type) {
12
12
  if (type && model === type[2]) {
@@ -6,7 +6,7 @@ class VmlProtectionXform extends BaseXform {
6
6
  this.text = "";
7
7
  }
8
8
  get tag() {
9
- return (this._model && this._model.tag) || "";
9
+ return this._model?.tag ?? "";
10
10
  }
11
11
  render(xmlStream, model) {
12
12
  xmlStream.leafNode(this.tag, null, model);
@@ -18,12 +18,11 @@ interface RenderModel {
18
18
  col: number;
19
19
  };
20
20
  }
21
- declare class VmlClientDataXform extends BaseXform {
21
+ declare class VmlClientDataXform extends BaseXform<ClientDataModel> {
22
22
  map: {
23
23
  [key: string]: any;
24
24
  };
25
25
  parser: any;
26
- model: ClientDataModel;
27
26
  constructor();
28
27
  get tag(): string;
29
28
  render(xmlStream: any, model: RenderModel): void;
@@ -2,12 +2,11 @@ import { BaseXform } from "@excel/xlsx/xform/base-xform";
2
2
  interface VmlNotesModel {
3
3
  comments: any[];
4
4
  }
5
- declare class VmlNotesXform extends BaseXform {
5
+ declare class VmlNotesXform extends BaseXform<VmlNotesModel> {
6
6
  map: {
7
7
  [key: string]: any;
8
8
  };
9
9
  parser: any;
10
- model: VmlNotesModel;
11
10
  constructor();
12
11
  get tag(): string;
13
12
  render(xmlStream: any, model?: VmlNotesModel): void;
@@ -13,7 +13,7 @@ class VmlShapeXform extends BaseXform {
13
13
  return "v:shape";
14
14
  }
15
15
  render(xmlStream, model, index) {
16
- xmlStream.openNode("v:shape", VmlShapeXform.V_SHAPE_ATTRIBUTES(model, index || 0));
16
+ xmlStream.openNode("v:shape", VmlShapeXform.V_SHAPE_ATTRIBUTES(model, index ?? 0));
17
17
  xmlStream.leafNode("v:fill", { color2: "infoBackground [80]" });
18
18
  xmlStream.leafNode("v:shadow", { color: "none [81]", obscured: "t" });
19
19
  xmlStream.leafNode("v:path", { "o:connecttype": "none" });
@@ -9,8 +9,7 @@ interface TextboxModel {
9
9
  note?: NoteModel;
10
10
  inset?: number[];
11
11
  }
12
- declare class VmlTextboxXform extends BaseXform {
13
- model: TextboxModel;
12
+ declare class VmlTextboxXform extends BaseXform<TextboxModel> {
14
13
  constructor();
15
14
  get tag(): string;
16
15
  conversionUnit(value: string | number, multiple: number, unit: string): string;
@@ -11,7 +11,7 @@ class VmlTextboxXform extends BaseXform {
11
11
  return `${(parseFloat(value.toString()) * multiple).toFixed(2)}${unit}`;
12
12
  }
13
13
  reverseConversionUnit(inset) {
14
- return (inset || "").split(",").map(margin => {
14
+ return (inset ?? "").split(",").map(margin => {
15
15
  return Number(parseFloat(this.conversionUnit(parseFloat(margin), 0.1, "")).toFixed(2));
16
16
  });
17
17
  }
@@ -1,5 +1,5 @@
1
1
  import { BaseXform } from "@excel/xlsx/xform/base-xform";
2
- declare class CompositeXform extends BaseXform {
2
+ declare class CompositeXform<TModel = any> extends BaseXform<TModel> {
3
3
  parser?: any;
4
4
  createNewModel(_node?: any): any;
5
5
  parseOpen(node: any): boolean;
@@ -21,7 +21,7 @@ class AppXform extends BaseXform {
21
21
  xmlStream.leafNode("ScaleCrop", undefined, "false");
22
22
  this.map.HeadingPairs.render(xmlStream, model.worksheets);
23
23
  this.map.TitlesOfParts.render(xmlStream, model.worksheets);
24
- this.map.Company.render(xmlStream, model.company || "");
24
+ this.map.Company.render(xmlStream, model.company ?? "");
25
25
  this.map.Manager.render(xmlStream, model.manager);
26
26
  xmlStream.leafNode("LinksUpToDate", undefined, "false");
27
27
  xmlStream.leafNode("SharedDoc", undefined, "false");
@@ -8,7 +8,7 @@ class ContentTypesXform extends BaseXform {
8
8
  xmlStream.openXml(XmlStream.StdDocAttributes);
9
9
  xmlStream.openNode("Types", ContentTypesXform.PROPERTY_ATTRIBUTES);
10
10
  const mediaHash = {};
11
- (model.media || []).forEach((medium) => {
11
+ (model.media ?? []).forEach((medium) => {
12
12
  if (medium.type === "image") {
13
13
  const imageType = medium.extension;
14
14
  if (!mediaHash[imageType]) {
@@ -37,18 +37,31 @@ class ContentTypesXform extends BaseXform {
37
37
  ContentType: "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml"
38
38
  });
39
39
  });
40
- if ((model.pivotTables || []).length) {
40
+ if ((model.pivotTables ?? []).length) {
41
+ // R9-B6: Deduplicate cache content types by cacheId. When multiple pivot tables
42
+ // share the same cache, the cache definition/records files are written only once.
43
+ const writtenCacheIds = new Set();
41
44
  // Add content types for each pivot table
42
- (model.pivotTables || []).forEach((pivotTable) => {
45
+ (model.pivotTables ?? []).forEach((pivotTable) => {
43
46
  const n = pivotTable.tableNumber;
44
- xmlStream.leafNode("Override", {
45
- PartName: toContentTypesPartName(pivotCacheDefinitionPath(n)),
46
- ContentType: "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheDefinition+xml"
47
- });
48
- xmlStream.leafNode("Override", {
49
- PartName: toContentTypesPartName(pivotCacheRecordsPath(n)),
50
- ContentType: "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheRecords+xml"
51
- });
47
+ const cacheId = pivotTable.cacheId;
48
+ if (!writtenCacheIds.has(cacheId)) {
49
+ writtenCacheIds.add(cacheId);
50
+ xmlStream.leafNode("Override", {
51
+ PartName: toContentTypesPartName(pivotCacheDefinitionPath(n)),
52
+ ContentType: "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheDefinition+xml"
53
+ });
54
+ // R9-B5: Only register cacheRecords content type when the file actually exists.
55
+ // Loaded pivot tables may lack cacheRecords (e.g. OLAP sources).
56
+ const hasCacheRecords = pivotTable.isLoaded ? !!pivotTable.cacheRecords : true;
57
+ if (hasCacheRecords) {
58
+ xmlStream.leafNode("Override", {
59
+ PartName: toContentTypesPartName(pivotCacheRecordsPath(n)),
60
+ ContentType: "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheRecords+xml"
61
+ });
62
+ }
63
+ }
64
+ // Each pivot table always has its own file
52
65
  xmlStream.leafNode("Override", {
53
66
  PartName: toContentTypesPartName(pivotTablePath(n)),
54
67
  ContentType: "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotTable+xml"
@@ -10,7 +10,7 @@ class BaseCellAnchorXform extends BaseXform {
10
10
  this.reset();
11
11
  this.model = {
12
12
  range: {
13
- editAs: node.attributes.editAs || "oneCell"
13
+ editAs: node.attributes.editAs ?? "oneCell"
14
14
  }
15
15
  };
16
16
  break;
@@ -2,8 +2,7 @@ import { BaseXform } from "@excel/xlsx/xform/base-xform";
2
2
  interface BlipModel {
3
3
  rId: string;
4
4
  }
5
- declare class BlipXform extends BaseXform {
6
- model: BlipModel;
5
+ declare class BlipXform extends BaseXform<BlipModel> {
7
6
  constructor();
8
7
  get tag(): string;
9
8
  render(xmlStream: any, model: BlipModel): void;
@@ -6,13 +6,12 @@ interface PositionModel {
6
6
  nativeRow: number;
7
7
  nativeRowOff: number;
8
8
  }
9
- declare class CellPositionXform extends BaseXform {
9
+ declare class CellPositionXform extends BaseXform<PositionModel> {
10
10
  private tag;
11
11
  map: {
12
12
  [key: string]: IntegerXform;
13
13
  };
14
14
  parser: any;
15
- model: PositionModel;
16
15
  constructor(options: {
17
16
  tag: string;
18
17
  });
@@ -6,8 +6,7 @@ import type { FormCheckboxModel } from "@excel/form-control";
6
6
  * Each form control (checkbox, button, etc.) has an associated ctrlProp file
7
7
  * that stores its properties like objectType, checked state, and linked cell.
8
8
  */
9
- declare class CtrlPropXform extends BaseXform {
10
- model: FormCheckboxModel;
9
+ declare class CtrlPropXform extends BaseXform<FormCheckboxModel> {
11
10
  private _checkedToXmlValue;
12
11
  get tag(): string;
13
12
  render(xmlStream: any, model?: FormCheckboxModel): void;
@@ -2,12 +2,11 @@ import { BaseXform } from "@excel/xlsx/xform/base-xform";
2
2
  interface DrawingModel {
3
3
  anchors: any[];
4
4
  }
5
- declare class DrawingXform extends BaseXform {
5
+ declare class DrawingXform extends BaseXform<DrawingModel> {
6
6
  map: {
7
7
  [key: string]: any;
8
8
  };
9
9
  parser: any;
10
- model: DrawingModel;
11
10
  constructor();
12
11
  prepare(model: DrawingModel): void;
13
12
  get tag(): string;
@@ -3,12 +3,11 @@ interface ExtModel {
3
3
  width: number;
4
4
  height: number;
5
5
  }
6
- declare class ExtXform extends BaseXform {
6
+ declare class ExtXform extends BaseXform<ExtModel> {
7
7
  private tag;
8
8
  map: {
9
9
  [key: string]: any;
10
10
  };
11
- model: ExtModel;
12
11
  constructor(options: {
13
12
  tag: string;
14
13
  });
@@ -19,8 +19,8 @@ class ExtXform extends BaseXform {
19
19
  parseOpen(node) {
20
20
  if (node.name === this.tag) {
21
21
  this.model = {
22
- width: parseInt(node.attributes.cx || "0", 10) / EMU_PER_PIXEL_AT_96_DPI,
23
- height: parseInt(node.attributes.cy || "0", 10) / EMU_PER_PIXEL_AT_96_DPI
22
+ width: parseInt(node.attributes.cx ?? "0", 10) / EMU_PER_PIXEL_AT_96_DPI,
23
+ height: parseInt(node.attributes.cy ?? "0", 10) / EMU_PER_PIXEL_AT_96_DPI
24
24
  };
25
25
  return true;
26
26
  }
@@ -20,7 +20,7 @@ class OneCellAnchorXform extends BaseCellAnchorXform {
20
20
  this.map["xdr:pic"].prepare(model.picture, options);
21
21
  }
22
22
  render(xmlStream, model) {
23
- xmlStream.openNode(this.tag, { editAs: model.range.editAs || "oneCell" });
23
+ xmlStream.openNode(this.tag, { editAs: model.range.editAs ?? "oneCell" });
24
24
  this.map["xdr:from"].render(xmlStream, model.range.tl);
25
25
  this.map["xdr:ext"].render(xmlStream, model.range.ext);
26
26
  this.map["xdr:pic"].render(xmlStream, model.picture);
@@ -37,7 +37,7 @@ class TwoCellAnchorXform extends BaseCellAnchorXform {
37
37
  : {})
38
38
  });
39
39
  }
40
- xmlStream.openNode(this.tag, { editAs: model.range.editAs || "oneCell" });
40
+ xmlStream.openNode(this.tag, { editAs: model.range.editAs ?? "oneCell" });
41
41
  this.map["xdr:from"].render(xmlStream, model.range.tl);
42
42
  this.map["xdr:to"].render(xmlStream, model.range.br);
43
43
  if (model.picture) {
@@ -15,12 +15,11 @@ interface VmlDrawingModel {
15
15
  /** Form control checkboxes */
16
16
  formControls?: FormCheckboxModel[];
17
17
  }
18
- declare class VmlDrawingXform extends BaseXform {
18
+ declare class VmlDrawingXform extends BaseXform<VmlDrawingModel> {
19
19
  map: {
20
20
  [key: string]: any;
21
21
  };
22
22
  parser: any;
23
- model: VmlDrawingModel;
24
23
  constructor();
25
24
  get tag(): string;
26
25
  /**
@@ -9,7 +9,7 @@ interface ListXformOptions {
9
9
  childXform: any;
10
10
  maxItems?: number;
11
11
  }
12
- declare class ListXform extends BaseXform {
12
+ declare class ListXform<TChild = any> extends BaseXform<TChild[]> {
13
13
  protected tag: string;
14
14
  protected always: boolean;
15
15
  protected count?: boolean;
@@ -19,7 +19,6 @@ declare class ListXform extends BaseXform {
19
19
  protected childXform: any;
20
20
  protected maxItems?: number;
21
21
  parser: any;
22
- model: any[];
23
22
  constructor(options: ListXformOptions);
24
23
  prepare(model: any[], options: any): void;
25
24
  render(xmlStream: any, model?: any[]): void;
@@ -6,7 +6,7 @@ class ListXform extends BaseXform {
6
6
  this.always = !!options.always;
7
7
  this.count = options.count;
8
8
  this.empty = options.empty;
9
- this.$count = options.$count || "count";
9
+ this.$count = options.$count ?? "count";
10
10
  this.$ = options.$;
11
11
  this.childXform = options.childXform;
12
12
  this.maxItems = options.maxItems;
@@ -24,10 +24,10 @@ class ListXform extends BaseXform {
24
24
  if (this.always || (model && model.length)) {
25
25
  xmlStream.openNode(this.tag, this.$);
26
26
  if (this.count) {
27
- xmlStream.addAttribute(this.$count, (model && model.length) || 0);
27
+ xmlStream.addAttribute(this.$count, model?.length ?? 0);
28
28
  }
29
29
  const { childXform } = this;
30
- (model || []).forEach((childModel, index) => {
30
+ (model ?? []).forEach((childModel, index) => {
31
31
  childXform.render(xmlStream, childModel, index);
32
32
  });
33
33
  xmlStream.closeNode();
@@ -1,15 +1,5 @@
1
1
  import { BaseXform } from "@excel/xlsx/xform/base-xform";
2
- /**
3
- * Parsed cache field model containing name and shared items (if any)
4
- */
5
- interface CacheFieldModel {
6
- name: string;
7
- sharedItems: any[] | null;
8
- containsNumber?: boolean;
9
- containsInteger?: boolean;
10
- minValue?: number;
11
- maxValue?: number;
12
- }
2
+ import type { CacheField } from "@excel/pivot-table";
13
3
  /**
14
4
  * Xform for parsing individual <cacheField> elements within a pivot cache definition.
15
5
  *
@@ -29,14 +19,14 @@ interface CacheFieldModel {
29
19
  * </cacheField>
30
20
  * ```
31
21
  */
32
- declare class CacheFieldXform extends BaseXform {
33
- model: CacheFieldModel | null;
22
+ declare class CacheFieldXform extends BaseXform<CacheField | null> {
34
23
  private inSharedItems;
24
+ private fieldGroupCollector;
35
25
  constructor();
36
26
  get tag(): string;
37
27
  reset(): void;
38
28
  parseOpen(node: any): boolean;
39
- parseText(_text: string): void;
29
+ parseText(text: string): void;
40
30
  parseClose(name: string): boolean;
41
31
  }
42
- export { CacheFieldXform, type CacheFieldModel };
32
+ export { CacheFieldXform };