@cj-tech-master/excelts 9.4.2 → 9.5.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 (618) hide show
  1. package/dist/browser/index.browser.d.ts +8 -5
  2. package/dist/browser/index.browser.js +19 -1
  3. package/dist/browser/index.d.ts +4 -2
  4. package/dist/browser/index.js +9 -1
  5. package/dist/browser/modules/excel/chart/cache-populator.d.ts +49 -0
  6. package/dist/browser/modules/excel/chart/cache-populator.js +1171 -0
  7. package/dist/browser/modules/excel/chart/chart-api.d.ts +92 -0
  8. package/dist/browser/modules/excel/chart/chart-api.js +364 -0
  9. package/dist/browser/modules/excel/chart/chart-builder.d.ts +48 -0
  10. package/dist/browser/modules/excel/chart/chart-builder.js +2432 -0
  11. package/dist/browser/modules/excel/chart/chart-ex-builder.d.ts +36 -0
  12. package/dist/browser/modules/excel/chart/chart-ex-builder.js +903 -0
  13. package/dist/browser/modules/excel/chart/chart-ex-parser.d.ts +8 -0
  14. package/dist/browser/modules/excel/chart/chart-ex-parser.js +1205 -0
  15. package/dist/browser/modules/excel/chart/chart-ex-renderer.d.ts +187 -0
  16. package/dist/browser/modules/excel/chart/chart-ex-renderer.js +5352 -0
  17. package/dist/browser/modules/excel/chart/chart-ex-types.d.ts +531 -0
  18. package/dist/browser/modules/excel/chart/chart-ex-types.js +11 -0
  19. package/dist/browser/modules/excel/chart/chart-images.d.ts +78 -0
  20. package/dist/browser/modules/excel/chart/chart-images.js +363 -0
  21. package/dist/browser/modules/excel/chart/chart-presets.d.ts +392 -0
  22. package/dist/browser/modules/excel/chart/chart-presets.js +179 -0
  23. package/dist/browser/modules/excel/chart/chart-renderer.d.ts +550 -0
  24. package/dist/browser/modules/excel/chart/chart-renderer.js +6440 -0
  25. package/dist/browser/modules/excel/chart/chart-sidecar.d.ts +21 -0
  26. package/dist/browser/modules/excel/chart/chart-sidecar.js +427 -0
  27. package/dist/browser/modules/excel/chart/chart-utils.d.ts +306 -0
  28. package/dist/browser/modules/excel/chart/chart-utils.js +821 -0
  29. package/dist/browser/modules/excel/chart/chart.d.ts +504 -0
  30. package/dist/browser/modules/excel/chart/chart.js +1320 -0
  31. package/dist/browser/modules/excel/chart/glyph-rasterizer.d.ts +62 -0
  32. package/dist/browser/modules/excel/chart/glyph-rasterizer.js +658 -0
  33. package/dist/browser/modules/excel/chart/index.d.ts +54 -0
  34. package/dist/browser/modules/excel/chart/index.js +46 -0
  35. package/dist/browser/modules/excel/chart/install.d.ts +44 -0
  36. package/dist/browser/modules/excel/chart/install.js +91 -0
  37. package/dist/browser/modules/excel/chart/shape-properties.d.ts +156 -0
  38. package/dist/browser/modules/excel/chart/shape-properties.js +1557 -0
  39. package/dist/browser/modules/excel/chart/stroke-font.d.ts +36 -0
  40. package/dist/browser/modules/excel/chart/stroke-font.js +1556 -0
  41. package/dist/browser/modules/excel/chart/topojson.d.ts +98 -0
  42. package/dist/browser/modules/excel/chart/topojson.js +236 -0
  43. package/dist/browser/modules/excel/chart/types.d.ts +2559 -0
  44. package/dist/browser/modules/excel/chart/types.js +8 -0
  45. package/dist/browser/modules/excel/chart-host-registry.d.ts +157 -0
  46. package/dist/browser/modules/excel/chart-host-registry.js +90 -0
  47. package/dist/browser/modules/excel/chartsheet.d.ts +102 -0
  48. package/dist/browser/modules/excel/chartsheet.js +196 -0
  49. package/dist/browser/modules/excel/defined-names.d.ts +35 -0
  50. package/dist/browser/modules/excel/defined-names.js +44 -4
  51. package/dist/browser/modules/excel/errors.d.ts +6 -0
  52. package/dist/browser/modules/excel/errors.js +9 -0
  53. package/dist/browser/modules/excel/form-control.d.ts +6 -0
  54. package/dist/browser/modules/excel/form-control.js +17 -0
  55. package/dist/browser/modules/excel/image.js +12 -2
  56. package/dist/browser/modules/excel/pivot-chart.d.ts +7 -0
  57. package/dist/browser/modules/excel/pivot-chart.js +53 -0
  58. package/dist/browser/modules/excel/pivot-table.d.ts +55 -0
  59. package/dist/browser/modules/excel/pivot-table.js +35 -0
  60. package/dist/browser/modules/excel/range.js +5 -1
  61. package/dist/browser/modules/excel/sparkline/index.d.ts +7 -0
  62. package/dist/browser/modules/excel/sparkline/index.js +7 -0
  63. package/dist/browser/modules/excel/sparkline/sparkline.d.ts +206 -0
  64. package/dist/browser/modules/excel/sparkline/sparkline.js +750 -0
  65. package/dist/browser/modules/excel/stream/worksheet-writer.js +3 -2
  66. package/dist/browser/modules/excel/table.js +42 -6
  67. package/dist/browser/modules/excel/types.d.ts +72 -0
  68. package/dist/browser/modules/excel/utils/address.d.ts +18 -0
  69. package/dist/browser/modules/excel/utils/address.js +28 -0
  70. package/dist/browser/modules/excel/utils/drawing-utils.js +11 -6
  71. package/dist/browser/modules/excel/utils/guid.d.ts +15 -0
  72. package/dist/browser/modules/excel/utils/guid.js +35 -0
  73. package/dist/browser/modules/excel/utils/ooxml-paths.d.ts +74 -0
  74. package/dist/browser/modules/excel/utils/ooxml-paths.js +206 -9
  75. package/dist/browser/modules/excel/utils/ooxml-validator/check-chart-sidecar.d.ts +35 -0
  76. package/dist/browser/modules/excel/utils/ooxml-validator/check-chart-sidecar.js +101 -0
  77. package/dist/browser/modules/excel/utils/ooxml-validator/check-chart.d.ts +32 -0
  78. package/dist/browser/modules/excel/utils/ooxml-validator/check-chart.js +2125 -0
  79. package/dist/browser/modules/excel/utils/ooxml-validator/check-chartsheet.d.ts +9 -0
  80. package/dist/browser/modules/excel/utils/ooxml-validator/check-chartsheet.js +26 -0
  81. package/dist/browser/modules/excel/utils/ooxml-validator/check-content-types.d.ts +16 -0
  82. package/dist/browser/modules/excel/utils/ooxml-validator/check-content-types.js +181 -0
  83. package/dist/browser/modules/excel/utils/ooxml-validator/check-drawing.d.ts +34 -0
  84. package/dist/browser/modules/excel/utils/ooxml-validator/check-drawing.js +267 -0
  85. package/dist/browser/modules/excel/utils/ooxml-validator/check-pivot.d.ts +14 -0
  86. package/dist/browser/modules/excel/utils/ooxml-validator/check-pivot.js +104 -0
  87. package/dist/browser/modules/excel/utils/ooxml-validator/check-relationships.d.ts +18 -0
  88. package/dist/browser/modules/excel/utils/ooxml-validator/check-relationships.js +184 -0
  89. package/dist/browser/modules/excel/utils/ooxml-validator/check-structure.d.ts +21 -0
  90. package/dist/browser/modules/excel/utils/ooxml-validator/check-structure.js +56 -0
  91. package/dist/browser/modules/excel/utils/ooxml-validator/check-styles.d.ts +15 -0
  92. package/dist/browser/modules/excel/utils/ooxml-validator/check-styles.js +89 -0
  93. package/dist/browser/modules/excel/utils/ooxml-validator/check-table.d.ts +31 -0
  94. package/dist/browser/modules/excel/utils/ooxml-validator/check-table.js +177 -0
  95. package/dist/browser/modules/excel/utils/ooxml-validator/check-workbook.d.ts +19 -0
  96. package/dist/browser/modules/excel/utils/ooxml-validator/check-workbook.js +163 -0
  97. package/dist/browser/modules/excel/utils/ooxml-validator/check-worksheet.d.ts +25 -0
  98. package/dist/browser/modules/excel/utils/ooxml-validator/check-worksheet.js +569 -0
  99. package/dist/browser/modules/excel/utils/ooxml-validator/context.d.ts +85 -0
  100. package/dist/browser/modules/excel/utils/ooxml-validator/context.js +191 -0
  101. package/dist/browser/modules/excel/utils/ooxml-validator/index.d.ts +31 -0
  102. package/dist/browser/modules/excel/utils/ooxml-validator/index.js +102 -0
  103. package/dist/browser/modules/excel/utils/ooxml-validator/path-utils.d.ts +67 -0
  104. package/dist/browser/modules/excel/utils/ooxml-validator/path-utils.js +156 -0
  105. package/dist/browser/modules/excel/utils/ooxml-validator/reporter.d.ts +41 -0
  106. package/dist/browser/modules/excel/utils/ooxml-validator/reporter.js +61 -0
  107. package/dist/browser/modules/excel/utils/ooxml-validator/types.d.ts +109 -0
  108. package/dist/browser/modules/excel/utils/ooxml-validator/types.js +12 -0
  109. package/dist/browser/modules/excel/utils/ooxml-validator/xml-utils.d.ts +38 -0
  110. package/dist/browser/modules/excel/utils/ooxml-validator/xml-utils.js +100 -0
  111. package/dist/browser/modules/excel/workbook.browser.d.ts +248 -30
  112. package/dist/browser/modules/excel/workbook.browser.js +966 -31
  113. package/dist/browser/modules/excel/workbook.d.ts +43 -0
  114. package/dist/browser/modules/excel/workbook.js +48 -0
  115. package/dist/browser/modules/excel/worksheet.d.ts +157 -3
  116. package/dist/browser/modules/excel/worksheet.js +394 -35
  117. package/dist/browser/modules/excel/xlsx/rel-type.d.ts +40 -0
  118. package/dist/browser/modules/excel/xlsx/rel-type.js +41 -1
  119. package/dist/browser/modules/excel/xlsx/xform/book/defined-name-xform.d.ts +1 -0
  120. package/dist/browser/modules/excel/xlsx/xform/book/defined-name-xform.js +11 -2
  121. package/dist/browser/modules/excel/xlsx/xform/book/external-link-xform.js +12 -10
  122. package/dist/browser/modules/excel/xlsx/xform/book/workbook-xform.js +96 -22
  123. package/dist/browser/modules/excel/xlsx/xform/chart/chart-space-xform.d.ts +353 -0
  124. package/dist/browser/modules/excel/xlsx/xform/chart/chart-space-xform.js +6000 -0
  125. package/dist/browser/modules/excel/xlsx/xform/comment/threaded-comments-xform.d.ts +60 -0
  126. package/dist/browser/modules/excel/xlsx/xform/comment/threaded-comments-xform.js +213 -0
  127. package/dist/browser/modules/excel/xlsx/xform/core/content-types-xform.js +150 -11
  128. package/dist/browser/modules/excel/xlsx/xform/drawing/absolute-anchor-xform.js +20 -1
  129. package/dist/browser/modules/excel/xlsx/xform/drawing/base-cell-anchor-xform.js +1 -1
  130. package/dist/browser/modules/excel/xlsx/xform/drawing/drawing-xform.d.ts +30 -0
  131. package/dist/browser/modules/excel/xlsx/xform/drawing/drawing-xform.js +109 -5
  132. package/dist/browser/modules/excel/xlsx/xform/drawing/graphic-frame-xform.d.ts +54 -0
  133. package/dist/browser/modules/excel/xlsx/xform/drawing/graphic-frame-xform.js +225 -0
  134. package/dist/browser/modules/excel/xlsx/xform/drawing/one-cell-anchor-xform.d.ts +3 -1
  135. package/dist/browser/modules/excel/xlsx/xform/drawing/one-cell-anchor-xform.js +18 -3
  136. package/dist/browser/modules/excel/xlsx/xform/drawing/two-cell-anchor-xform.d.ts +46 -0
  137. package/dist/browser/modules/excel/xlsx/xform/drawing/two-cell-anchor-xform.js +294 -12
  138. package/dist/browser/modules/excel/xlsx/xform/pivot-table/pivot-table-xform.d.ts +13 -2
  139. package/dist/browser/modules/excel/xlsx/xform/pivot-table/pivot-table-xform.js +32 -6
  140. package/dist/browser/modules/excel/xlsx/xform/sheet/chartsheet-xform.d.ts +185 -0
  141. package/dist/browser/modules/excel/xlsx/xform/sheet/chartsheet-xform.js +441 -0
  142. package/dist/browser/modules/excel/xlsx/xform/sheet/ext-lst-xform.d.ts +1 -0
  143. package/dist/browser/modules/excel/xlsx/xform/sheet/ext-lst-xform.js +51 -2
  144. package/dist/browser/modules/excel/xlsx/xform/sheet/worksheet-xform.js +196 -20
  145. package/dist/browser/modules/excel/xlsx/xform/table/auto-filter-xform.js +16 -1
  146. package/dist/browser/modules/excel/xlsx/xform/table/table-column-xform.js +17 -2
  147. package/dist/browser/modules/excel/xlsx/xform/xsd-values.d.ts +63 -0
  148. package/dist/browser/modules/excel/xlsx/xform/xsd-values.js +101 -0
  149. package/dist/browser/modules/excel/xlsx/xlsx.browser.d.ts +115 -21
  150. package/dist/browser/modules/excel/xlsx/xlsx.browser.js +4422 -78
  151. package/dist/browser/modules/pdf/builder/document-builder.d.ts +74 -0
  152. package/dist/browser/modules/pdf/builder/document-builder.js +507 -2
  153. package/dist/browser/modules/pdf/builder/pdf-editor.js +48 -3
  154. package/dist/browser/modules/pdf/excel-bridge.d.ts +69 -0
  155. package/dist/browser/modules/pdf/excel-bridge.js +683 -12
  156. package/dist/browser/modules/pdf/font/font-manager.d.ts +25 -0
  157. package/dist/browser/modules/pdf/font/font-manager.js +39 -0
  158. package/dist/browser/modules/pdf/index.d.ts +5 -2
  159. package/dist/browser/modules/pdf/index.js +3 -1
  160. package/dist/browser/modules/pdf/render/chart-surface.d.ts +33 -0
  161. package/dist/browser/modules/pdf/render/chart-surface.js +200 -0
  162. package/dist/browser/modules/pdf/render/layout-engine.d.ts +22 -1
  163. package/dist/browser/modules/pdf/render/layout-engine.js +436 -56
  164. package/dist/browser/modules/pdf/render/page-renderer.js +169 -28
  165. package/dist/browser/modules/pdf/render/pdf-exporter.js +117 -7
  166. package/dist/browser/modules/pdf/types.d.ts +227 -23
  167. package/dist/browser/modules/pdf/types.js +4 -0
  168. package/dist/browser/modules/pdf/word-bridge.d.ts +47 -0
  169. package/dist/browser/modules/pdf/word-bridge.js +304 -0
  170. package/dist/browser/modules/word/constants.d.ts +179 -0
  171. package/dist/browser/modules/word/constants.js +231 -0
  172. package/dist/browser/modules/word/content-types.d.ts +27 -0
  173. package/dist/browser/modules/word/content-types.js +53 -0
  174. package/dist/browser/modules/word/digital-signatures.d.ts +87 -0
  175. package/dist/browser/modules/word/digital-signatures.js +134 -0
  176. package/dist/browser/modules/word/document.d.ts +728 -0
  177. package/dist/browser/modules/word/document.js +1795 -0
  178. package/dist/browser/modules/word/docx-packager.d.ts +14 -0
  179. package/dist/browser/modules/word/docx-packager.js +822 -0
  180. package/dist/browser/modules/word/docx-reader.d.ts +11 -0
  181. package/dist/browser/modules/word/docx-reader.js +4929 -0
  182. package/dist/browser/modules/word/encryption.d.ts +102 -0
  183. package/dist/browser/modules/word/encryption.js +274 -0
  184. package/dist/browser/modules/word/errors.d.ts +49 -0
  185. package/dist/browser/modules/word/errors.js +68 -0
  186. package/dist/browser/modules/word/font-obfuscation.d.ts +31 -0
  187. package/dist/browser/modules/word/font-obfuscation.js +83 -0
  188. package/dist/browser/modules/word/html-renderer.d.ts +38 -0
  189. package/dist/browser/modules/word/html-renderer.js +782 -0
  190. package/dist/browser/modules/word/index.base.d.ts +19 -0
  191. package/dist/browser/modules/word/index.base.js +51 -0
  192. package/dist/browser/modules/word/index.browser.d.ts +4 -0
  193. package/dist/browser/modules/word/index.browser.js +4 -0
  194. package/dist/browser/modules/word/index.d.ts +4 -0
  195. package/dist/browser/modules/word/index.js +4 -0
  196. package/dist/browser/modules/word/internal-utils.d.ts +23 -0
  197. package/dist/browser/modules/word/internal-utils.js +54 -0
  198. package/dist/browser/modules/word/relationships.d.ts +31 -0
  199. package/dist/browser/modules/word/relationships.js +56 -0
  200. package/dist/browser/modules/word/types.d.ts +2325 -0
  201. package/dist/browser/modules/word/types.js +10 -0
  202. package/dist/browser/modules/word/units.d.ts +49 -0
  203. package/dist/browser/modules/word/units.js +111 -0
  204. package/dist/browser/modules/word/writers/chart-writer.d.ts +10 -0
  205. package/dist/browser/modules/word/writers/chart-writer.js +385 -0
  206. package/dist/browser/modules/word/writers/checkbox-writer.d.ts +9 -0
  207. package/dist/browser/modules/word/writers/checkbox-writer.js +42 -0
  208. package/dist/browser/modules/word/writers/comment-writer.d.ts +15 -0
  209. package/dist/browser/modules/word/writers/comment-writer.js +70 -0
  210. package/dist/browser/modules/word/writers/document-writer.d.ts +16 -0
  211. package/dist/browser/modules/word/writers/document-writer.js +461 -0
  212. package/dist/browser/modules/word/writers/footnote-writer.d.ts +11 -0
  213. package/dist/browser/modules/word/writers/footnote-writer.js +72 -0
  214. package/dist/browser/modules/word/writers/header-footer-writer.d.ts +13 -0
  215. package/dist/browser/modules/word/writers/header-footer-writer.js +129 -0
  216. package/dist/browser/modules/word/writers/image-writer.d.ts +10 -0
  217. package/dist/browser/modules/word/writers/image-writer.js +185 -0
  218. package/dist/browser/modules/word/writers/math-writer.d.ts +9 -0
  219. package/dist/browser/modules/word/writers/math-writer.js +428 -0
  220. package/dist/browser/modules/word/writers/numbering-writer.d.ts +10 -0
  221. package/dist/browser/modules/word/writers/numbering-writer.js +125 -0
  222. package/dist/browser/modules/word/writers/paragraph-writer.d.ts +13 -0
  223. package/dist/browser/modules/word/writers/paragraph-writer.js +516 -0
  224. package/dist/browser/modules/word/writers/parts-writer.d.ts +26 -0
  225. package/dist/browser/modules/word/writers/parts-writer.js +660 -0
  226. package/dist/browser/modules/word/writers/run-writer.d.ts +15 -0
  227. package/dist/browser/modules/word/writers/run-writer.js +649 -0
  228. package/dist/browser/modules/word/writers/section-writer.d.ts +10 -0
  229. package/dist/browser/modules/word/writers/section-writer.js +238 -0
  230. package/dist/browser/modules/word/writers/styles-writer.d.ts +10 -0
  231. package/dist/browser/modules/word/writers/styles-writer.js +242 -0
  232. package/dist/browser/modules/word/writers/table-writer.d.ts +10 -0
  233. package/dist/browser/modules/word/writers/table-writer.js +503 -0
  234. package/dist/browser/modules/word/writers/textbox-writer.d.ts +9 -0
  235. package/dist/browser/modules/word/writers/textbox-writer.js +53 -0
  236. package/dist/browser/modules/word/writers/toc-writer.d.ts +9 -0
  237. package/dist/browser/modules/word/writers/toc-writer.js +79 -0
  238. package/dist/browser/modules/xml/encode.d.ts +56 -7
  239. package/dist/browser/modules/xml/encode.js +157 -11
  240. package/dist/cjs/index.js +13 -2
  241. package/dist/cjs/modules/excel/chart/cache-populator.js +1178 -0
  242. package/dist/cjs/modules/excel/chart/chart-api.js +371 -0
  243. package/dist/cjs/modules/excel/chart/chart-builder.js +2440 -0
  244. package/dist/cjs/modules/excel/chart/chart-ex-builder.js +907 -0
  245. package/dist/cjs/modules/excel/chart/chart-ex-parser.js +1208 -0
  246. package/dist/cjs/modules/excel/chart/chart-ex-renderer.js +5364 -0
  247. package/dist/cjs/modules/excel/chart/chart-ex-types.js +12 -0
  248. package/dist/cjs/modules/excel/chart/chart-images.js +366 -0
  249. package/dist/cjs/modules/excel/chart/chart-presets.js +184 -0
  250. package/dist/cjs/modules/excel/chart/chart-renderer.js +6450 -0
  251. package/dist/cjs/modules/excel/chart/chart-sidecar.js +433 -0
  252. package/dist/cjs/modules/excel/chart/chart-utils.js +845 -0
  253. package/dist/cjs/modules/excel/chart/chart.js +1324 -0
  254. package/dist/cjs/modules/excel/chart/glyph-rasterizer.js +664 -0
  255. package/dist/cjs/modules/excel/chart/index.js +101 -0
  256. package/dist/cjs/modules/excel/chart/install.js +95 -0
  257. package/dist/cjs/modules/excel/chart/shape-properties.js +1577 -0
  258. package/dist/cjs/modules/excel/chart/stroke-font.js +1559 -0
  259. package/dist/cjs/modules/excel/chart/topojson.js +239 -0
  260. package/dist/cjs/modules/excel/chart/types.js +9 -0
  261. package/dist/cjs/modules/excel/chart-host-registry.js +96 -0
  262. package/dist/cjs/modules/excel/chartsheet.js +199 -0
  263. package/dist/cjs/modules/excel/defined-names.js +44 -4
  264. package/dist/cjs/modules/excel/errors.js +11 -1
  265. package/dist/cjs/modules/excel/form-control.js +17 -0
  266. package/dist/cjs/modules/excel/image.js +12 -2
  267. package/dist/cjs/modules/excel/pivot-chart.js +56 -0
  268. package/dist/cjs/modules/excel/pivot-table.js +35 -0
  269. package/dist/cjs/modules/excel/range.js +5 -1
  270. package/dist/cjs/modules/excel/sparkline/index.js +23 -0
  271. package/dist/cjs/modules/excel/sparkline/sparkline.js +756 -0
  272. package/dist/cjs/modules/excel/stream/worksheet-writer.js +3 -2
  273. package/dist/cjs/modules/excel/table.js +42 -6
  274. package/dist/cjs/modules/excel/utils/address.js +29 -0
  275. package/dist/cjs/modules/excel/utils/drawing-utils.js +11 -6
  276. package/dist/cjs/modules/excel/utils/guid.js +38 -0
  277. package/dist/cjs/modules/excel/utils/ooxml-paths.js +246 -9
  278. package/dist/cjs/modules/excel/utils/ooxml-validator/check-chart-sidecar.js +103 -0
  279. package/dist/cjs/modules/excel/utils/ooxml-validator/check-chart.js +2128 -0
  280. package/dist/cjs/modules/excel/utils/ooxml-validator/check-chartsheet.js +29 -0
  281. package/dist/cjs/modules/excel/utils/ooxml-validator/check-content-types.js +184 -0
  282. package/dist/cjs/modules/excel/utils/ooxml-validator/check-drawing.js +270 -0
  283. package/dist/cjs/modules/excel/utils/ooxml-validator/check-pivot.js +107 -0
  284. package/dist/cjs/modules/excel/utils/ooxml-validator/check-relationships.js +188 -0
  285. package/dist/cjs/modules/excel/utils/ooxml-validator/check-structure.js +60 -0
  286. package/dist/cjs/modules/excel/utils/ooxml-validator/check-styles.js +92 -0
  287. package/dist/cjs/modules/excel/utils/ooxml-validator/check-table.js +180 -0
  288. package/dist/cjs/modules/excel/utils/ooxml-validator/check-workbook.js +166 -0
  289. package/dist/cjs/modules/excel/utils/ooxml-validator/check-worksheet.js +572 -0
  290. package/dist/cjs/modules/excel/utils/ooxml-validator/context.js +196 -0
  291. package/dist/cjs/modules/excel/utils/ooxml-validator/index.js +105 -0
  292. package/dist/cjs/modules/excel/utils/ooxml-validator/path-utils.js +168 -0
  293. package/dist/cjs/modules/excel/utils/ooxml-validator/reporter.js +66 -0
  294. package/dist/cjs/modules/excel/utils/ooxml-validator/types.js +13 -0
  295. package/dist/cjs/modules/excel/utils/ooxml-validator/xml-utils.js +110 -0
  296. package/dist/cjs/modules/excel/workbook.browser.js +973 -38
  297. package/dist/cjs/modules/excel/workbook.js +48 -0
  298. package/dist/cjs/modules/excel/worksheet.js +393 -34
  299. package/dist/cjs/modules/excel/xlsx/rel-type.js +41 -1
  300. package/dist/cjs/modules/excel/xlsx/xform/book/defined-name-xform.js +11 -2
  301. package/dist/cjs/modules/excel/xlsx/xform/book/external-link-xform.js +12 -10
  302. package/dist/cjs/modules/excel/xlsx/xform/book/workbook-xform.js +96 -22
  303. package/dist/cjs/modules/excel/xlsx/xform/chart/chart-space-xform.js +6003 -0
  304. package/dist/cjs/modules/excel/xlsx/xform/comment/threaded-comments-xform.js +219 -0
  305. package/dist/cjs/modules/excel/xlsx/xform/core/content-types-xform.js +149 -10
  306. package/dist/cjs/modules/excel/xlsx/xform/drawing/absolute-anchor-xform.js +20 -1
  307. package/dist/cjs/modules/excel/xlsx/xform/drawing/base-cell-anchor-xform.js +1 -1
  308. package/dist/cjs/modules/excel/xlsx/xform/drawing/drawing-xform.js +109 -5
  309. package/dist/cjs/modules/excel/xlsx/xform/drawing/graphic-frame-xform.js +228 -0
  310. package/dist/cjs/modules/excel/xlsx/xform/drawing/one-cell-anchor-xform.js +18 -3
  311. package/dist/cjs/modules/excel/xlsx/xform/drawing/two-cell-anchor-xform.js +294 -12
  312. package/dist/cjs/modules/excel/xlsx/xform/pivot-table/pivot-table-xform.js +32 -6
  313. package/dist/cjs/modules/excel/xlsx/xform/sheet/chartsheet-xform.js +444 -0
  314. package/dist/cjs/modules/excel/xlsx/xform/sheet/ext-lst-xform.js +51 -2
  315. package/dist/cjs/modules/excel/xlsx/xform/sheet/worksheet-xform.js +195 -19
  316. package/dist/cjs/modules/excel/xlsx/xform/table/auto-filter-xform.js +16 -1
  317. package/dist/cjs/modules/excel/xlsx/xform/table/table-column-xform.js +17 -2
  318. package/dist/cjs/modules/excel/xlsx/xform/xsd-values.js +106 -0
  319. package/dist/cjs/modules/excel/xlsx/xlsx.browser.js +4420 -76
  320. package/dist/cjs/modules/pdf/builder/document-builder.js +506 -1
  321. package/dist/cjs/modules/pdf/builder/pdf-editor.js +48 -3
  322. package/dist/cjs/modules/pdf/excel-bridge.js +684 -12
  323. package/dist/cjs/modules/pdf/font/font-manager.js +39 -0
  324. package/dist/cjs/modules/pdf/index.js +5 -1
  325. package/dist/cjs/modules/pdf/render/chart-surface.js +203 -0
  326. package/dist/cjs/modules/pdf/render/layout-engine.js +437 -56
  327. package/dist/cjs/modules/pdf/render/page-renderer.js +169 -28
  328. package/dist/cjs/modules/pdf/render/pdf-exporter.js +115 -5
  329. package/dist/cjs/modules/pdf/types.js +5 -0
  330. package/dist/cjs/modules/pdf/word-bridge.js +307 -0
  331. package/dist/cjs/modules/word/constants.js +234 -0
  332. package/dist/cjs/modules/word/content-types.js +57 -0
  333. package/dist/cjs/modules/word/digital-signatures.js +140 -0
  334. package/dist/cjs/modules/word/document.js +1909 -0
  335. package/dist/cjs/modules/word/docx-packager.js +825 -0
  336. package/dist/cjs/modules/word/docx-reader.js +4932 -0
  337. package/dist/cjs/modules/word/encryption.js +282 -0
  338. package/dist/cjs/modules/word/errors.js +88 -0
  339. package/dist/cjs/modules/word/font-obfuscation.js +88 -0
  340. package/dist/cjs/modules/word/html-renderer.js +785 -0
  341. package/dist/cjs/modules/word/index.base.js +199 -0
  342. package/dist/cjs/modules/word/index.browser.js +20 -0
  343. package/dist/cjs/modules/word/index.js +20 -0
  344. package/dist/cjs/modules/word/internal-utils.js +59 -0
  345. package/dist/cjs/modules/word/relationships.js +60 -0
  346. package/dist/cjs/modules/word/types.js +11 -0
  347. package/dist/cjs/modules/word/units.js +135 -0
  348. package/dist/cjs/modules/word/writers/chart-writer.js +388 -0
  349. package/dist/cjs/modules/word/writers/checkbox-writer.js +45 -0
  350. package/dist/cjs/modules/word/writers/comment-writer.js +74 -0
  351. package/dist/cjs/modules/word/writers/document-writer.js +465 -0
  352. package/dist/cjs/modules/word/writers/footnote-writer.js +76 -0
  353. package/dist/cjs/modules/word/writers/header-footer-writer.js +134 -0
  354. package/dist/cjs/modules/word/writers/image-writer.js +188 -0
  355. package/dist/cjs/modules/word/writers/math-writer.js +431 -0
  356. package/dist/cjs/modules/word/writers/numbering-writer.js +128 -0
  357. package/dist/cjs/modules/word/writers/paragraph-writer.js +521 -0
  358. package/dist/cjs/modules/word/writers/parts-writer.js +671 -0
  359. package/dist/cjs/modules/word/writers/run-writer.js +655 -0
  360. package/dist/cjs/modules/word/writers/section-writer.js +241 -0
  361. package/dist/cjs/modules/word/writers/styles-writer.js +245 -0
  362. package/dist/cjs/modules/word/writers/table-writer.js +506 -0
  363. package/dist/cjs/modules/word/writers/textbox-writer.js +56 -0
  364. package/dist/cjs/modules/word/writers/toc-writer.js +82 -0
  365. package/dist/cjs/modules/xml/encode.js +158 -11
  366. package/dist/esm/index.browser.js +20 -2
  367. package/dist/esm/index.js +9 -1
  368. package/dist/esm/modules/excel/chart/cache-populator.js +1171 -0
  369. package/dist/esm/modules/excel/chart/chart-api.js +364 -0
  370. package/dist/esm/modules/excel/chart/chart-builder.js +2432 -0
  371. package/dist/esm/modules/excel/chart/chart-ex-builder.js +903 -0
  372. package/dist/esm/modules/excel/chart/chart-ex-parser.js +1205 -0
  373. package/dist/esm/modules/excel/chart/chart-ex-renderer.js +5352 -0
  374. package/dist/esm/modules/excel/chart/chart-ex-types.js +11 -0
  375. package/dist/esm/modules/excel/chart/chart-images.js +363 -0
  376. package/dist/esm/modules/excel/chart/chart-presets.js +179 -0
  377. package/dist/esm/modules/excel/chart/chart-renderer.js +6440 -0
  378. package/dist/esm/modules/excel/chart/chart-sidecar.js +427 -0
  379. package/dist/esm/modules/excel/chart/chart-utils.js +821 -0
  380. package/dist/esm/modules/excel/chart/chart.js +1320 -0
  381. package/dist/esm/modules/excel/chart/glyph-rasterizer.js +658 -0
  382. package/dist/esm/modules/excel/chart/index.js +46 -0
  383. package/dist/esm/modules/excel/chart/install.js +91 -0
  384. package/dist/esm/modules/excel/chart/shape-properties.js +1557 -0
  385. package/dist/esm/modules/excel/chart/stroke-font.js +1556 -0
  386. package/dist/esm/modules/excel/chart/topojson.js +236 -0
  387. package/dist/esm/modules/excel/chart/types.js +8 -0
  388. package/dist/esm/modules/excel/chart-host-registry.js +90 -0
  389. package/dist/esm/modules/excel/chartsheet.js +196 -0
  390. package/dist/esm/modules/excel/defined-names.js +44 -4
  391. package/dist/esm/modules/excel/errors.js +9 -0
  392. package/dist/esm/modules/excel/form-control.js +17 -0
  393. package/dist/esm/modules/excel/image.js +12 -2
  394. package/dist/esm/modules/excel/pivot-chart.js +53 -0
  395. package/dist/esm/modules/excel/pivot-table.js +35 -0
  396. package/dist/esm/modules/excel/range.js +5 -1
  397. package/dist/esm/modules/excel/sparkline/index.js +7 -0
  398. package/dist/esm/modules/excel/sparkline/sparkline.js +750 -0
  399. package/dist/esm/modules/excel/stream/worksheet-writer.js +3 -2
  400. package/dist/esm/modules/excel/table.js +42 -6
  401. package/dist/esm/modules/excel/utils/address.js +28 -0
  402. package/dist/esm/modules/excel/utils/drawing-utils.js +11 -6
  403. package/dist/esm/modules/excel/utils/guid.js +35 -0
  404. package/dist/esm/modules/excel/utils/ooxml-paths.js +206 -9
  405. package/dist/esm/modules/excel/utils/ooxml-validator/check-chart-sidecar.js +101 -0
  406. package/dist/esm/modules/excel/utils/ooxml-validator/check-chart.js +2125 -0
  407. package/dist/esm/modules/excel/utils/ooxml-validator/check-chartsheet.js +26 -0
  408. package/dist/esm/modules/excel/utils/ooxml-validator/check-content-types.js +181 -0
  409. package/dist/esm/modules/excel/utils/ooxml-validator/check-drawing.js +267 -0
  410. package/dist/esm/modules/excel/utils/ooxml-validator/check-pivot.js +104 -0
  411. package/dist/esm/modules/excel/utils/ooxml-validator/check-relationships.js +184 -0
  412. package/dist/esm/modules/excel/utils/ooxml-validator/check-structure.js +56 -0
  413. package/dist/esm/modules/excel/utils/ooxml-validator/check-styles.js +89 -0
  414. package/dist/esm/modules/excel/utils/ooxml-validator/check-table.js +177 -0
  415. package/dist/esm/modules/excel/utils/ooxml-validator/check-workbook.js +163 -0
  416. package/dist/esm/modules/excel/utils/ooxml-validator/check-worksheet.js +569 -0
  417. package/dist/esm/modules/excel/utils/ooxml-validator/context.js +191 -0
  418. package/dist/esm/modules/excel/utils/ooxml-validator/index.js +102 -0
  419. package/dist/esm/modules/excel/utils/ooxml-validator/path-utils.js +156 -0
  420. package/dist/esm/modules/excel/utils/ooxml-validator/reporter.js +61 -0
  421. package/dist/esm/modules/excel/utils/ooxml-validator/types.js +12 -0
  422. package/dist/esm/modules/excel/utils/ooxml-validator/xml-utils.js +100 -0
  423. package/dist/esm/modules/excel/workbook.browser.js +969 -34
  424. package/dist/esm/modules/excel/workbook.js +48 -0
  425. package/dist/esm/modules/excel/worksheet.js +394 -35
  426. package/dist/esm/modules/excel/xlsx/rel-type.js +41 -1
  427. package/dist/esm/modules/excel/xlsx/xform/book/defined-name-xform.js +11 -2
  428. package/dist/esm/modules/excel/xlsx/xform/book/external-link-xform.js +12 -10
  429. package/dist/esm/modules/excel/xlsx/xform/book/workbook-xform.js +96 -22
  430. package/dist/esm/modules/excel/xlsx/xform/chart/chart-space-xform.js +6000 -0
  431. package/dist/esm/modules/excel/xlsx/xform/comment/threaded-comments-xform.js +213 -0
  432. package/dist/esm/modules/excel/xlsx/xform/core/content-types-xform.js +150 -11
  433. package/dist/esm/modules/excel/xlsx/xform/drawing/absolute-anchor-xform.js +20 -1
  434. package/dist/esm/modules/excel/xlsx/xform/drawing/base-cell-anchor-xform.js +1 -1
  435. package/dist/esm/modules/excel/xlsx/xform/drawing/drawing-xform.js +109 -5
  436. package/dist/esm/modules/excel/xlsx/xform/drawing/graphic-frame-xform.js +225 -0
  437. package/dist/esm/modules/excel/xlsx/xform/drawing/one-cell-anchor-xform.js +18 -3
  438. package/dist/esm/modules/excel/xlsx/xform/drawing/two-cell-anchor-xform.js +294 -12
  439. package/dist/esm/modules/excel/xlsx/xform/pivot-table/pivot-table-xform.js +32 -6
  440. package/dist/esm/modules/excel/xlsx/xform/sheet/chartsheet-xform.js +441 -0
  441. package/dist/esm/modules/excel/xlsx/xform/sheet/ext-lst-xform.js +51 -2
  442. package/dist/esm/modules/excel/xlsx/xform/sheet/worksheet-xform.js +196 -20
  443. package/dist/esm/modules/excel/xlsx/xform/table/auto-filter-xform.js +16 -1
  444. package/dist/esm/modules/excel/xlsx/xform/table/table-column-xform.js +17 -2
  445. package/dist/esm/modules/excel/xlsx/xform/xsd-values.js +101 -0
  446. package/dist/esm/modules/excel/xlsx/xlsx.browser.js +4422 -78
  447. package/dist/esm/modules/pdf/builder/document-builder.js +507 -2
  448. package/dist/esm/modules/pdf/builder/pdf-editor.js +48 -3
  449. package/dist/esm/modules/pdf/excel-bridge.js +683 -12
  450. package/dist/esm/modules/pdf/font/font-manager.js +39 -0
  451. package/dist/esm/modules/pdf/index.js +3 -1
  452. package/dist/esm/modules/pdf/render/chart-surface.js +200 -0
  453. package/dist/esm/modules/pdf/render/layout-engine.js +436 -56
  454. package/dist/esm/modules/pdf/render/page-renderer.js +169 -28
  455. package/dist/esm/modules/pdf/render/pdf-exporter.js +117 -7
  456. package/dist/esm/modules/pdf/types.js +4 -0
  457. package/dist/esm/modules/pdf/word-bridge.js +304 -0
  458. package/dist/esm/modules/word/constants.js +231 -0
  459. package/dist/esm/modules/word/content-types.js +53 -0
  460. package/dist/esm/modules/word/digital-signatures.js +134 -0
  461. package/dist/esm/modules/word/document.js +1795 -0
  462. package/dist/esm/modules/word/docx-packager.js +822 -0
  463. package/dist/esm/modules/word/docx-reader.js +4929 -0
  464. package/dist/esm/modules/word/encryption.js +274 -0
  465. package/dist/esm/modules/word/errors.js +68 -0
  466. package/dist/esm/modules/word/font-obfuscation.js +83 -0
  467. package/dist/esm/modules/word/html-renderer.js +782 -0
  468. package/dist/esm/modules/word/index.base.js +51 -0
  469. package/dist/esm/modules/word/index.browser.js +4 -0
  470. package/dist/esm/modules/word/index.js +4 -0
  471. package/dist/esm/modules/word/internal-utils.js +54 -0
  472. package/dist/esm/modules/word/relationships.js +56 -0
  473. package/dist/esm/modules/word/types.js +10 -0
  474. package/dist/esm/modules/word/units.js +111 -0
  475. package/dist/esm/modules/word/writers/chart-writer.js +385 -0
  476. package/dist/esm/modules/word/writers/checkbox-writer.js +42 -0
  477. package/dist/esm/modules/word/writers/comment-writer.js +70 -0
  478. package/dist/esm/modules/word/writers/document-writer.js +461 -0
  479. package/dist/esm/modules/word/writers/footnote-writer.js +72 -0
  480. package/dist/esm/modules/word/writers/header-footer-writer.js +129 -0
  481. package/dist/esm/modules/word/writers/image-writer.js +185 -0
  482. package/dist/esm/modules/word/writers/math-writer.js +428 -0
  483. package/dist/esm/modules/word/writers/numbering-writer.js +125 -0
  484. package/dist/esm/modules/word/writers/paragraph-writer.js +516 -0
  485. package/dist/esm/modules/word/writers/parts-writer.js +660 -0
  486. package/dist/esm/modules/word/writers/run-writer.js +649 -0
  487. package/dist/esm/modules/word/writers/section-writer.js +238 -0
  488. package/dist/esm/modules/word/writers/styles-writer.js +242 -0
  489. package/dist/esm/modules/word/writers/table-writer.js +503 -0
  490. package/dist/esm/modules/word/writers/textbox-writer.js +53 -0
  491. package/dist/esm/modules/word/writers/toc-writer.js +79 -0
  492. package/dist/esm/modules/xml/encode.js +157 -11
  493. package/dist/iife/excelts.iife.js +11789 -687
  494. package/dist/iife/excelts.iife.js.map +1 -1
  495. package/dist/iife/excelts.iife.min.js +52 -44
  496. package/dist/types/index.browser.d.ts +8 -5
  497. package/dist/types/index.d.ts +4 -2
  498. package/dist/types/modules/excel/chart/cache-populator.d.ts +49 -0
  499. package/dist/types/modules/excel/chart/chart-api.d.ts +92 -0
  500. package/dist/types/modules/excel/chart/chart-builder.d.ts +48 -0
  501. package/dist/types/modules/excel/chart/chart-ex-builder.d.ts +36 -0
  502. package/dist/types/modules/excel/chart/chart-ex-parser.d.ts +8 -0
  503. package/dist/types/modules/excel/chart/chart-ex-renderer.d.ts +187 -0
  504. package/dist/types/modules/excel/chart/chart-ex-types.d.ts +531 -0
  505. package/dist/types/modules/excel/chart/chart-images.d.ts +78 -0
  506. package/dist/types/modules/excel/chart/chart-presets.d.ts +392 -0
  507. package/dist/types/modules/excel/chart/chart-renderer.d.ts +550 -0
  508. package/dist/types/modules/excel/chart/chart-sidecar.d.ts +21 -0
  509. package/dist/types/modules/excel/chart/chart-utils.d.ts +306 -0
  510. package/dist/types/modules/excel/chart/chart.d.ts +504 -0
  511. package/dist/types/modules/excel/chart/glyph-rasterizer.d.ts +62 -0
  512. package/dist/types/modules/excel/chart/index.d.ts +54 -0
  513. package/dist/types/modules/excel/chart/install.d.ts +44 -0
  514. package/dist/types/modules/excel/chart/shape-properties.d.ts +156 -0
  515. package/dist/types/modules/excel/chart/stroke-font.d.ts +36 -0
  516. package/dist/types/modules/excel/chart/topojson.d.ts +98 -0
  517. package/dist/types/modules/excel/chart/types.d.ts +2559 -0
  518. package/dist/types/modules/excel/chart-host-registry.d.ts +157 -0
  519. package/dist/types/modules/excel/chartsheet.d.ts +102 -0
  520. package/dist/types/modules/excel/defined-names.d.ts +35 -0
  521. package/dist/types/modules/excel/errors.d.ts +6 -0
  522. package/dist/types/modules/excel/form-control.d.ts +6 -0
  523. package/dist/types/modules/excel/pivot-chart.d.ts +7 -0
  524. package/dist/types/modules/excel/pivot-table.d.ts +55 -0
  525. package/dist/types/modules/excel/sparkline/index.d.ts +7 -0
  526. package/dist/types/modules/excel/sparkline/sparkline.d.ts +206 -0
  527. package/dist/types/modules/excel/types.d.ts +72 -0
  528. package/dist/types/modules/excel/utils/address.d.ts +18 -0
  529. package/dist/types/modules/excel/utils/guid.d.ts +15 -0
  530. package/dist/types/modules/excel/utils/ooxml-paths.d.ts +74 -0
  531. package/dist/types/modules/excel/utils/ooxml-validator/check-chart-sidecar.d.ts +35 -0
  532. package/dist/types/modules/excel/utils/ooxml-validator/check-chart.d.ts +32 -0
  533. package/dist/types/modules/excel/utils/ooxml-validator/check-chartsheet.d.ts +9 -0
  534. package/dist/types/modules/excel/utils/ooxml-validator/check-content-types.d.ts +16 -0
  535. package/dist/types/modules/excel/utils/ooxml-validator/check-drawing.d.ts +34 -0
  536. package/dist/types/modules/excel/utils/ooxml-validator/check-pivot.d.ts +14 -0
  537. package/dist/types/modules/excel/utils/ooxml-validator/check-relationships.d.ts +18 -0
  538. package/dist/types/modules/excel/utils/ooxml-validator/check-structure.d.ts +21 -0
  539. package/dist/types/modules/excel/utils/ooxml-validator/check-styles.d.ts +15 -0
  540. package/dist/types/modules/excel/utils/ooxml-validator/check-table.d.ts +31 -0
  541. package/dist/types/modules/excel/utils/ooxml-validator/check-workbook.d.ts +19 -0
  542. package/dist/types/modules/excel/utils/ooxml-validator/check-worksheet.d.ts +25 -0
  543. package/dist/types/modules/excel/utils/ooxml-validator/context.d.ts +85 -0
  544. package/dist/types/modules/excel/utils/ooxml-validator/index.d.ts +31 -0
  545. package/dist/types/modules/excel/utils/ooxml-validator/path-utils.d.ts +67 -0
  546. package/dist/types/modules/excel/utils/ooxml-validator/reporter.d.ts +41 -0
  547. package/dist/types/modules/excel/utils/ooxml-validator/types.d.ts +109 -0
  548. package/dist/types/modules/excel/utils/ooxml-validator/xml-utils.d.ts +38 -0
  549. package/dist/types/modules/excel/workbook.browser.d.ts +248 -30
  550. package/dist/types/modules/excel/workbook.d.ts +43 -0
  551. package/dist/types/modules/excel/worksheet.d.ts +157 -3
  552. package/dist/types/modules/excel/xlsx/rel-type.d.ts +40 -0
  553. package/dist/types/modules/excel/xlsx/xform/book/defined-name-xform.d.ts +1 -0
  554. package/dist/types/modules/excel/xlsx/xform/chart/chart-space-xform.d.ts +353 -0
  555. package/dist/types/modules/excel/xlsx/xform/comment/threaded-comments-xform.d.ts +60 -0
  556. package/dist/types/modules/excel/xlsx/xform/drawing/drawing-xform.d.ts +30 -0
  557. package/dist/types/modules/excel/xlsx/xform/drawing/graphic-frame-xform.d.ts +54 -0
  558. package/dist/types/modules/excel/xlsx/xform/drawing/one-cell-anchor-xform.d.ts +3 -1
  559. package/dist/types/modules/excel/xlsx/xform/drawing/two-cell-anchor-xform.d.ts +46 -0
  560. package/dist/types/modules/excel/xlsx/xform/pivot-table/pivot-table-xform.d.ts +13 -2
  561. package/dist/types/modules/excel/xlsx/xform/sheet/chartsheet-xform.d.ts +185 -0
  562. package/dist/types/modules/excel/xlsx/xform/sheet/ext-lst-xform.d.ts +1 -0
  563. package/dist/types/modules/excel/xlsx/xform/xsd-values.d.ts +63 -0
  564. package/dist/types/modules/excel/xlsx/xlsx.browser.d.ts +115 -21
  565. package/dist/types/modules/pdf/builder/document-builder.d.ts +74 -0
  566. package/dist/types/modules/pdf/excel-bridge.d.ts +69 -0
  567. package/dist/types/modules/pdf/font/font-manager.d.ts +25 -0
  568. package/dist/types/modules/pdf/index.d.ts +5 -2
  569. package/dist/types/modules/pdf/render/chart-surface.d.ts +33 -0
  570. package/dist/types/modules/pdf/render/layout-engine.d.ts +22 -1
  571. package/dist/types/modules/pdf/types.d.ts +227 -23
  572. package/dist/types/modules/pdf/word-bridge.d.ts +47 -0
  573. package/dist/types/modules/word/constants.d.ts +179 -0
  574. package/dist/types/modules/word/content-types.d.ts +27 -0
  575. package/dist/types/modules/word/digital-signatures.d.ts +87 -0
  576. package/dist/types/modules/word/document.d.ts +728 -0
  577. package/dist/types/modules/word/docx-packager.d.ts +14 -0
  578. package/dist/types/modules/word/docx-reader.d.ts +11 -0
  579. package/dist/types/modules/word/encryption.d.ts +102 -0
  580. package/dist/types/modules/word/errors.d.ts +49 -0
  581. package/dist/types/modules/word/font-obfuscation.d.ts +31 -0
  582. package/dist/types/modules/word/html-renderer.d.ts +38 -0
  583. package/dist/types/modules/word/index.base.d.ts +19 -0
  584. package/dist/types/modules/word/index.browser.d.ts +4 -0
  585. package/dist/types/modules/word/index.d.ts +4 -0
  586. package/dist/types/modules/word/internal-utils.d.ts +23 -0
  587. package/dist/types/modules/word/relationships.d.ts +31 -0
  588. package/dist/types/modules/word/types.d.ts +2325 -0
  589. package/dist/types/modules/word/units.d.ts +49 -0
  590. package/dist/types/modules/word/writers/chart-writer.d.ts +10 -0
  591. package/dist/types/modules/word/writers/checkbox-writer.d.ts +9 -0
  592. package/dist/types/modules/word/writers/comment-writer.d.ts +15 -0
  593. package/dist/types/modules/word/writers/document-writer.d.ts +16 -0
  594. package/dist/types/modules/word/writers/footnote-writer.d.ts +11 -0
  595. package/dist/types/modules/word/writers/header-footer-writer.d.ts +13 -0
  596. package/dist/types/modules/word/writers/image-writer.d.ts +10 -0
  597. package/dist/types/modules/word/writers/math-writer.d.ts +9 -0
  598. package/dist/types/modules/word/writers/numbering-writer.d.ts +10 -0
  599. package/dist/types/modules/word/writers/paragraph-writer.d.ts +13 -0
  600. package/dist/types/modules/word/writers/parts-writer.d.ts +26 -0
  601. package/dist/types/modules/word/writers/run-writer.d.ts +15 -0
  602. package/dist/types/modules/word/writers/section-writer.d.ts +10 -0
  603. package/dist/types/modules/word/writers/styles-writer.d.ts +10 -0
  604. package/dist/types/modules/word/writers/table-writer.d.ts +10 -0
  605. package/dist/types/modules/word/writers/textbox-writer.d.ts +9 -0
  606. package/dist/types/modules/word/writers/toc-writer.d.ts +9 -0
  607. package/dist/types/modules/xml/encode.d.ts +56 -7
  608. package/package.json +29 -11
  609. package/dist/browser/modules/excel/utils/ooxml-validator.d.ts +0 -48
  610. package/dist/browser/modules/excel/utils/ooxml-validator.js +0 -493
  611. package/dist/browser/modules/excel/utils/passthrough-manager.d.ts +0 -77
  612. package/dist/browser/modules/excel/utils/passthrough-manager.js +0 -129
  613. package/dist/cjs/modules/excel/utils/ooxml-validator.js +0 -499
  614. package/dist/cjs/modules/excel/utils/passthrough-manager.js +0 -133
  615. package/dist/esm/modules/excel/utils/ooxml-validator.js +0 -493
  616. package/dist/esm/modules/excel/utils/passthrough-manager.js +0 -129
  617. package/dist/types/modules/excel/utils/ooxml-validator.d.ts +0 -48
  618. package/dist/types/modules/excel/utils/passthrough-manager.d.ts +0 -77
@@ -430,8 +430,9 @@ class WorksheetWriter {
430
430
  if (typeof filter === "number") {
431
431
  this.conditionalFormatting.splice(filter, 1);
432
432
  }
433
- else if (filter instanceof Function) {
434
- this.conditionalFormatting = this.conditionalFormatting.filter(filter);
433
+ else if (typeof filter === "function") {
434
+ // Predicate selects rules to drop, not rules to keep.
435
+ this.conditionalFormatting = this.conditionalFormatting.filter(cf => !filter(cf));
435
436
  }
436
437
  else {
437
438
  this.conditionalFormatting = [];
@@ -111,7 +111,10 @@ class Column {
111
111
  return this.column.style;
112
112
  }
113
113
  set style(value) {
114
- this.column.style = value;
114
+ // Use _set so commit() will replay store() and propagate the new style
115
+ // to the on-sheet cells; a bare assignment leaves _cache empty and
116
+ // commit() returns early.
117
+ this._set("style", value);
115
118
  }
116
119
  get totalsRowLabel() {
117
120
  return this.column.totalsRowLabel;
@@ -237,10 +240,18 @@ class Table {
237
240
  const { row, col } = table.tl;
238
241
  assert(row > 0, "Table must be on valid row");
239
242
  assert(col > 0, "Table must be on valid col");
240
- const { width, tableHeight } = this;
241
- // autoFilterRef is a single-row range that targets the header row only.
242
- // Excel uses this for filter buttons; including data rows can break filter rendering.
243
- table.autoFilterRef = colCache.encode(row, col, row, col + width - 1);
243
+ const { width, filterHeight, tableHeight } = this;
244
+ // autoFilterRef spans the header + all data rows (excludes the
245
+ // optional totals row). Matches what Excel itself emits: a real
246
+ // `<table ref="A1:C7"><autoFilter ref="A1:C7"/>` uses the same
247
+ // range for both when there's no totals row, and shrinks the
248
+ // autoFilter by one row when a totals row is present. Emitting a
249
+ // single-row range (`A1:C1`) — which the library did previously —
250
+ // made Excel reject the entire table on open with "Removed
251
+ // Records: Table from /xl/tables/tableN.xml part (Table)" because
252
+ // the spec requires the autoFilter range to cover the filterable
253
+ // data.
254
+ table.autoFilterRef = colCache.encode(row, col, row + filterHeight - 1, col + width - 1);
244
255
  // tableRef is a range that includes optional headers and totals
245
256
  table.tableRef = colCache.encode(row, col, row + tableHeight - 1, col + width - 1);
246
257
  table.columns.forEach((column, i) => {
@@ -477,7 +488,32 @@ class Table {
477
488
  }
478
489
  set name(value) {
479
490
  this.cacheState();
480
- this.table.name = sanitizeTableName(value);
491
+ const newName = sanitizeTableName(value);
492
+ const oldName = this.table.name;
493
+ if (newName === oldName) {
494
+ return;
495
+ }
496
+ // Synchronise the worksheet's table map and the workbook-wide name set
497
+ // so subsequent getTable(newName)/duplicate-name checks remain correct.
498
+ // Falls back to a bare assignment if the worksheet hasn't registered
499
+ // this table (e.g. transient instances built by Worksheet.set model).
500
+ const ws = this.worksheet;
501
+ const tables = ws?.tables;
502
+ const tableNames = ws?.workbook?._tableNames;
503
+ if (tables && tables[oldName] === this) {
504
+ const newKey = newName.toLowerCase();
505
+ const oldKey = oldName.toLowerCase();
506
+ if (newKey !== oldKey && tableNames?.has(newKey)) {
507
+ throw new TableError(`Table name "${newName}" already exists in the workbook (case-insensitive).`);
508
+ }
509
+ delete tables[oldName];
510
+ tables[newName] = this;
511
+ if (tableNames) {
512
+ tableNames.delete(oldKey);
513
+ tableNames.add(newKey);
514
+ }
515
+ }
516
+ this.table.name = newName;
481
517
  }
482
518
  get displayName() {
483
519
  return this.table.displayName || this.table.name;
@@ -379,6 +379,78 @@ export interface Comment {
379
379
  margins?: Partial<CommentMargins>;
380
380
  protection?: Partial<CommentProtection>;
381
381
  editAs?: CommentEditAs;
382
+ /**
383
+ * Office 365 threaded-comment conversation anchored at the same
384
+ * cell. When present, Excel surfaces the modern reply UI; the
385
+ * classic VML note still renders as a fallback for older viewers.
386
+ *
387
+ * The first entry in the list is the top-level comment; subsequent
388
+ * entries with `parentId === first.id` are replies to it. Nested
389
+ * threads beyond two levels are not supported by Excel itself.
390
+ */
391
+ threadedComments?: ThreadedComment[];
392
+ }
393
+ /**
394
+ * A single entry in a threaded-comment conversation
395
+ * (`xl/threadedComments/threadedComment{N}.xml` →
396
+ * `<threadedComment ref="…" personId="…" id="…" parentId="…">`).
397
+ *
398
+ * `id` is a GUID-braced string Excel expects to uniquely identify the
399
+ * comment within the sheet; callers may omit it and let the writer
400
+ * synthesise one. `personId` must reference an entry in the
401
+ * workbook-level {@link ThreadedCommentPerson} list — the writer
402
+ * enforces this by adding any dangling `personId` to the list with a
403
+ * placeholder displayName.
404
+ */
405
+ export interface ThreadedComment {
406
+ /** `{GUID}`-style id; auto-generated if absent. */
407
+ id?: string;
408
+ /**
409
+ * Id of the parent comment when this entry is a reply. Absent for
410
+ * top-level comments.
411
+ */
412
+ parentId?: string;
413
+ /** Reference to the author in the workbook persons list. */
414
+ personId: string;
415
+ /** Creation timestamp as an ISO-8601 string. */
416
+ date?: string;
417
+ /** Plain-text body. @mentions are expressed separately via {@link mentions}. */
418
+ text: string;
419
+ /**
420
+ * Structured `@mention` markers inside `text`. `startIndex`/`length`
421
+ * point at the substring Excel shows as a clickable mention.
422
+ */
423
+ mentions?: ThreadedCommentMention[];
424
+ /**
425
+ * Whether Excel marks this comment as "resolved". Corresponds to
426
+ * `done="1"` on the commentExt element. When undefined, Excel treats
427
+ * the thread as open.
428
+ */
429
+ done?: boolean;
430
+ }
431
+ export interface ThreadedCommentMention {
432
+ mentionId?: string;
433
+ mentionPersonId: string;
434
+ startIndex: number;
435
+ length: number;
436
+ }
437
+ /**
438
+ * Workbook-level person directory referenced by threaded comments.
439
+ * Written as `xl/persons/person.xml`; one `<person>` element per
440
+ * unique commenter.
441
+ */
442
+ export interface ThreadedCommentPerson {
443
+ /** `{GUID}`-style id referenced by `threadedComment/@personId`. */
444
+ id: string;
445
+ /** Display name shown in the UI (e.g. "Jane Doe"). */
446
+ displayName: string;
447
+ /** Provider user id (e.g. "jane@example.com", "S-1-5-…"). */
448
+ userId?: string;
449
+ /**
450
+ * Identity provider — "AD" (Active Directory), "PeoplePicker",
451
+ * "None". Excel preserves unknown values verbatim.
452
+ */
453
+ providerId?: string;
382
454
  }
383
455
  export type DataValidationOperator = "between" | "notBetween" | "equal" | "notEqual" | "greaterThan" | "lessThan" | "greaterThanOrEqual" | "lessThanOrEqual";
384
456
  /** Base properties shared by all data validation types */
@@ -74,3 +74,21 @@ export declare function decodeRange(range: string): SheetRange;
74
74
  */
75
75
  export declare function encodeRange(range: SheetRange): string;
76
76
  export declare function encodeRange(start: CellAddress, end: CellAddress): string;
77
+ /**
78
+ * Excel allows unquoted sheet names only when they consist entirely of
79
+ * ASCII letters, digits, and underscores *and* do not start with a digit.
80
+ * Any sheet name with a space, dot, comma, bracket, `&`, CJK character,
81
+ * or any other non-trivial symbol must be wrapped in single quotes, with
82
+ * existing single quotes doubled.
83
+ *
84
+ * Shared helper so chart-api, pivot-chart, cache-populator, and the XForm
85
+ * layer all agree on the rule — before this was unified, three callers
86
+ * in the chart module used three different regexes, producing divergent
87
+ * formula strings for sheet names with punctuation.
88
+ *
89
+ * @example quoteSheetName("Sheet1") // "Sheet1"
90
+ * @example quoteSheetName("My Sheet") // "'My Sheet'"
91
+ * @example quoteSheetName("It's Fine") // "'It''s Fine'"
92
+ * @example quoteSheetName("2023 Data") // "'2023 Data'" (leading digit → quoted)
93
+ */
94
+ export declare function quoteSheetName(sheetName: string): string;
@@ -95,3 +95,31 @@ export function encodeRange(startOrRange, end) {
95
95
  const endStr = encodeCell(end);
96
96
  return startStr === endStr ? startStr : `${startStr}:${endStr}`;
97
97
  }
98
+ // =============================================================================
99
+ // Sheet name quoting (Excel formula references)
100
+ // =============================================================================
101
+ /**
102
+ * Excel allows unquoted sheet names only when they consist entirely of
103
+ * ASCII letters, digits, and underscores *and* do not start with a digit.
104
+ * Any sheet name with a space, dot, comma, bracket, `&`, CJK character,
105
+ * or any other non-trivial symbol must be wrapped in single quotes, with
106
+ * existing single quotes doubled.
107
+ *
108
+ * Shared helper so chart-api, pivot-chart, cache-populator, and the XForm
109
+ * layer all agree on the rule — before this was unified, three callers
110
+ * in the chart module used three different regexes, producing divergent
111
+ * formula strings for sheet names with punctuation.
112
+ *
113
+ * @example quoteSheetName("Sheet1") // "Sheet1"
114
+ * @example quoteSheetName("My Sheet") // "'My Sheet'"
115
+ * @example quoteSheetName("It's Fine") // "'It''s Fine'"
116
+ * @example quoteSheetName("2023 Data") // "'2023 Data'" (leading digit → quoted)
117
+ */
118
+ export function quoteSheetName(sheetName) {
119
+ // Leading digit forces quoting even with an otherwise clean name —
120
+ // Excel would otherwise parse `2023Data!A1` as a numeric literal.
121
+ if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(sheetName)) {
122
+ return `'${sheetName.replace(/'/g, "''")}'`;
123
+ }
124
+ return sheetName;
125
+ }
@@ -101,20 +101,25 @@ export function filterDrawingAnchors(anchors) {
101
101
  if (a == null) {
102
102
  return false;
103
103
  }
104
- // Absolute anchors need a valid picture
104
+ // Absolute anchors need either a picture (image with pos+ext) or a
105
+ // graphicFrame (chart placed via `{ pos, ext }`). The previous
106
+ // filter returned `!!a.picture` for every absolute anchor,
107
+ // silently dropping every chart anchored via `{ pos: { x, y },
108
+ // ext: { cx, cy } }` on write — the drawing XML came out empty
109
+ // and the chart disappeared from the saved file.
105
110
  if (a.range?.pos !== undefined) {
106
- return !!a.picture;
111
+ return !!a.picture || !!a.graphicFrame || !!a.shape;
107
112
  }
108
113
  // Form controls have range.br and shape properties
109
114
  if (a.range?.br && a.shape) {
110
115
  return true;
111
116
  }
112
- // One-cell anchors need a valid picture
113
- if (!a.range?.br && !a.picture) {
117
+ // One-cell anchors need a valid picture or graphicFrame (charts)
118
+ if (!a.range?.br && !a.picture && !a.graphicFrame) {
114
119
  return false;
115
120
  }
116
- // Two-cell anchors need either picture or shape
117
- if (a.range?.br && !a.picture && !a.shape) {
121
+ // Two-cell anchors need either picture, shape, or graphicFrame (charts)
122
+ if (a.range?.br && !a.picture && !a.shape && !a.graphicFrame) {
118
123
  return false;
119
124
  }
120
125
  return true;
@@ -0,0 +1,15 @@
1
+ /**
2
+ * GUID helpers for OOXML.
3
+ *
4
+ * Office parts that need stable cross-reference ids (threaded comments,
5
+ * chart uniqueIds, slicer caches, …) use the canonical Microsoft
6
+ * `{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}` format — 32 uppercase hex
7
+ * characters split into 8-4-4-4-12 groups, surrounded by braces.
8
+ *
9
+ * `synthGuid()` returns an RFC-4122 version-4-compatible value suitable
10
+ * for those callers. We don't use `crypto.randomUUID()` directly because
11
+ * it isn't available in every supported runtime (older Node without
12
+ * `node:crypto` globals); `Math.random` is good enough for uniqueness
13
+ * within a single workbook, which is the only thing Office cares about.
14
+ */
15
+ export declare function synthGuid(): string;
@@ -0,0 +1,35 @@
1
+ /**
2
+ * GUID helpers for OOXML.
3
+ *
4
+ * Office parts that need stable cross-reference ids (threaded comments,
5
+ * chart uniqueIds, slicer caches, …) use the canonical Microsoft
6
+ * `{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}` format — 32 uppercase hex
7
+ * characters split into 8-4-4-4-12 groups, surrounded by braces.
8
+ *
9
+ * `synthGuid()` returns an RFC-4122 version-4-compatible value suitable
10
+ * for those callers. We don't use `crypto.randomUUID()` directly because
11
+ * it isn't available in every supported runtime (older Node without
12
+ * `node:crypto` globals); `Math.random` is good enough for uniqueness
13
+ * within a single workbook, which is the only thing Office cares about.
14
+ */
15
+ export function synthGuid() {
16
+ const hex = "0123456789ABCDEF";
17
+ let out = "";
18
+ for (let i = 0; i < 32; i++) {
19
+ // Version 4: bit 48 (13th hex digit) is always '4'.
20
+ // Variant 10xx: bit 64 (17th hex digit) is one of 8, 9, A, B.
21
+ if (i === 12) {
22
+ out += "4";
23
+ }
24
+ else if (i === 16) {
25
+ out += hex[8 + Math.floor(Math.random() * 4)];
26
+ }
27
+ else {
28
+ out += hex[Math.floor(Math.random() * 16)];
29
+ }
30
+ if (i === 7 || i === 11 || i === 15 || i === 19) {
31
+ out += "-";
32
+ }
33
+ }
34
+ return out;
35
+ }
@@ -21,6 +21,14 @@ export declare function getThemeNameFromPath(path: string): string | undefined;
21
21
  export declare function isBinaryEntryPath(path: string): boolean;
22
22
  export declare function getDrawingNameFromPath(path: string): string | undefined;
23
23
  export declare function getDrawingNameFromRelsPath(path: string): string | undefined;
24
+ /**
25
+ * Canonical filename stem for a chart-overlay drawing part — used by
26
+ * the reader to recognise `xl/drawings/chartUserShapeN.xml` entries
27
+ * and stash their bytes for post-load reconciliation onto the owning
28
+ * chart. Returns `undefined` for any other path, including regular
29
+ * worksheet drawings (those go through {@link getDrawingNameFromPath}).
30
+ */
31
+ export declare function getChartUserShapesNameFromPath(path: string): string | undefined;
24
32
  export declare function getVmlDrawingNameFromPath(path: string): string | undefined;
25
33
  export declare function getVmlDrawingHFNameFromPath(path: string): string | undefined;
26
34
  /**
@@ -52,6 +60,22 @@ export declare function worksheetRelsPath(sheetId: number | string): string;
52
60
  export declare function worksheetRelTarget(sheetId: number | string): string;
53
61
  export declare function commentsPath(sheetId: number | string): string;
54
62
  export declare function commentsPathFromName(commentName: string): string;
63
+ /**
64
+ * Modern Office 365 "threaded comments" — separate from classic VML
65
+ * comments. Each worksheet that uses threaded comments has its own
66
+ * `xl/threadedComments/threadedComment{N}.xml` part alongside the
67
+ * legacy `xl/comments{N}.xml` (classic comments carry a fallback text
68
+ * representation, threaded comments carry the conversation tree).
69
+ */
70
+ export declare function threadedCommentsPath(sheetId: number | string): string;
71
+ export declare function threadedCommentsPathFromName(name: string): string;
72
+ /**
73
+ * Modern Office 365 "persons" list — the directory of commenters
74
+ * referenced by `threadedComment/@personId`. Workbook-level single
75
+ * part (`xl/persons/person.xml` is the conventional filename for the
76
+ * primary, rarely-duplicated list).
77
+ */
78
+ export declare function personsPath(): string;
55
79
  export declare function vmlDrawingPath(sheetId: number | string): string;
56
80
  export declare function vmlDrawingHFPath(sheetId: number | string): string;
57
81
  export declare function vmlDrawingHFRelsPath(sheetId: number | string): string;
@@ -89,6 +113,50 @@ export declare function pivotTableRelTargetFromWorksheet(n: number | string): st
89
113
  export declare function tableRelTargetFromWorksheet(target: string): string;
90
114
  export declare function mediaRelTargetFromRels(filename: string): string;
91
115
  export declare function ctrlPropPath(id: number | string): string;
116
+ export declare function getChartNumberFromPath(path: string): number | undefined;
117
+ export declare function getChartNumberFromRelsPath(path: string): number | undefined;
118
+ export declare function getChartStyleNumberFromPath(path: string): number | undefined;
119
+ export declare function getChartColorsNumberFromPath(path: string): number | undefined;
120
+ export declare function getChartExStyleNumberFromPath(path: string): number | undefined;
121
+ export declare function getChartExColorsNumberFromPath(path: string): number | undefined;
122
+ export declare function chartPath(n: number | string): string;
123
+ export declare function chartRelsPath(n: number | string): string;
124
+ export declare function chartStylePath(n: number | string): string;
125
+ export declare function chartColorsPath(n: number | string): string;
126
+ export declare function chartExStylePath(n: number | string): string;
127
+ export declare function chartExColorsPath(n: number | string): string;
128
+ export declare function chartRelTargetFromDrawing(n: number | string): string;
129
+ /**
130
+ * Path of the DrawingML overlay part backing a chart's `c:userShapes`
131
+ * reference. Placed under `xl/drawings/` with a `chartUserShape` prefix
132
+ * (rather than sharing the regular `drawingN` pool) so the writer can
133
+ * allocate it by chart number without colliding with worksheet
134
+ * drawings. Excel itself is indifferent to the part path — only the
135
+ * rel target matters — so files loaded with a different original
136
+ * path are renamed on write.
137
+ */
138
+ export declare function chartUserShapesPath(n: number | string): string;
139
+ /**
140
+ * Target path emitted inside `xl/charts/_rels/chartN.xml.rels` for the
141
+ * user-shapes drawing part. Resolved relative to the rels file's
142
+ * base directory (`xl/charts/`).
143
+ */
144
+ export declare function chartUserShapesRelTarget(n: number | string): string;
145
+ export declare function chartStyleRelTarget(n: number | string): string;
146
+ export declare function chartColorsRelTarget(n: number | string): string;
147
+ export declare function chartExStyleRelTarget(n: number | string): string;
148
+ export declare function chartExColorsRelTarget(n: number | string): string;
149
+ export declare function isChartPath(path: string): boolean;
150
+ export declare function isChartStylePath(path: string): boolean;
151
+ export declare function isChartColorsPath(path: string): boolean;
152
+ export declare function isChartRelsPath(path: string): boolean;
153
+ export declare function getChartExNumberFromPath(path: string): number | undefined;
154
+ export declare function getChartExNumberFromRelsPath(path: string): number | undefined;
155
+ export declare function chartExPath(n: number | string): string;
156
+ export declare function chartExRelsPath(n: number | string): string;
157
+ export declare function chartExRelTargetFromDrawing(n: number | string): string;
158
+ export declare function isChartExPath(path: string): boolean;
159
+ export declare function isChartExRelsPath(path: string): boolean;
92
160
  export declare function ctrlPropRelTargetFromWorksheet(id: number | string): string;
93
161
  /**
94
162
  * Resolve a relationship Target (relative or absolute) to a normalized zip path.
@@ -101,3 +169,9 @@ export declare function ctrlPropRelTargetFromWorksheet(id: number | string): str
101
169
  * @param target The raw Target value from the .rels file
102
170
  */
103
171
  export declare function resolveRelTarget(baseDir: string, target: string): string;
172
+ export declare function getChartsheetNoFromPath(path: string): number | undefined;
173
+ export declare function getChartsheetNoFromRelsPath(path: string): number | undefined;
174
+ export declare function chartsheetPath(n: number | string): string;
175
+ export declare function chartsheetRelsPath(n: number | string): string;
176
+ export declare function isChartsheetPath(path: string): boolean;
177
+ export declare function isChartsheetRelsPath(path: string): boolean;
@@ -17,6 +17,16 @@ const themeXmlRegex = /^xl\/theme\/[a-zA-Z0-9]+[.]xml$/;
17
17
  const mediaFilenameRegex = /^xl\/media\/([a-zA-Z0-9]+[.][a-zA-Z0-9]{3,4})$/;
18
18
  const drawingXmlRegex = /^xl\/drawings\/(drawing\d+)[.]xml$/;
19
19
  const drawingRelsXmlRegex = /^xl\/drawings\/_rels\/(drawing\d+)[.]xml[.]rels$/;
20
+ // `chartUserShape` is the canonical stem Excel and this library emit,
21
+ // but OOXML does not mandate any particular filename — the chart part
22
+ // discovers its user-shape drawing via the `.rels` relationship type,
23
+ // not by path. Widen the regex to also accept the plural form and
24
+ // a common third-party variant so foreign packages round-trip without
25
+ // silently dropping the overlay drawing. Packages that name the part
26
+ // entirely differently (e.g. `drawing5.xml` referenced via the
27
+ // `chartUserShapes` rel type) still require the relationship-based
28
+ // discovery path; that's a separate fix tracked against the reader.
29
+ const chartUserShapesXmlRegex = /^xl\/drawings\/((?:chartUserShape|chartUserShapes|userDrawing)\d+)[.]xml$/;
20
30
  const vmlDrawingRegex = /^xl\/drawings\/(vmlDrawing\d+)[.]vml$/;
21
31
  const vmlDrawingHFRegex = /^xl\/drawings\/(vmlDrawingHF\d+)[.]vml$/;
22
32
  // Matches both flat layout (xl/comments1.xml) and subdirectory layout (xl/comments/comment1.xml).
@@ -75,6 +85,17 @@ export function getDrawingNameFromRelsPath(path) {
75
85
  const match = drawingRelsXmlRegex.exec(path);
76
86
  return match ? match[1] : undefined;
77
87
  }
88
+ /**
89
+ * Canonical filename stem for a chart-overlay drawing part — used by
90
+ * the reader to recognise `xl/drawings/chartUserShapeN.xml` entries
91
+ * and stash their bytes for post-load reconciliation onto the owning
92
+ * chart. Returns `undefined` for any other path, including regular
93
+ * worksheet drawings (those go through {@link getDrawingNameFromPath}).
94
+ */
95
+ export function getChartUserShapesNameFromPath(path) {
96
+ const match = chartUserShapesXmlRegex.exec(path);
97
+ return match ? match[1] : undefined;
98
+ }
78
99
  export function getVmlDrawingNameFromPath(path) {
79
100
  const match = vmlDrawingRegex.exec(path);
80
101
  return match ? match[1] : undefined;
@@ -156,6 +177,28 @@ export function commentsPathFromName(commentName) {
156
177
  // For comments when the caller already has the logical name (e.g. "comments1").
157
178
  return `xl/${commentName}.xml`;
158
179
  }
180
+ /**
181
+ * Modern Office 365 "threaded comments" — separate from classic VML
182
+ * comments. Each worksheet that uses threaded comments has its own
183
+ * `xl/threadedComments/threadedComment{N}.xml` part alongside the
184
+ * legacy `xl/comments{N}.xml` (classic comments carry a fallback text
185
+ * representation, threaded comments carry the conversation tree).
186
+ */
187
+ export function threadedCommentsPath(sheetId) {
188
+ return `xl/threadedComments/threadedComment${sheetId}.xml`;
189
+ }
190
+ export function threadedCommentsPathFromName(name) {
191
+ return `xl/threadedComments/${name}.xml`;
192
+ }
193
+ /**
194
+ * Modern Office 365 "persons" list — the directory of commenters
195
+ * referenced by `threadedComment/@personId`. Workbook-level single
196
+ * part (`xl/persons/person.xml` is the conventional filename for the
197
+ * primary, rarely-duplicated list).
198
+ */
199
+ export function personsPath() {
200
+ return "xl/persons/person.xml";
201
+ }
159
202
  export function vmlDrawingPath(sheetId) {
160
203
  return `xl/drawings/vmlDrawing${sheetId}.vml`;
161
204
  }
@@ -256,6 +299,133 @@ export function mediaRelTargetFromRels(filename) {
256
299
  export function ctrlPropPath(id) {
257
300
  return `xl/ctrlProps/ctrlProp${id}.xml`;
258
301
  }
302
+ // -------- Charts --------
303
+ const chartXmlRegex = /^xl\/charts\/chart(\d+)[.]xml$/;
304
+ const chartRelsXmlRegex = /^xl\/charts\/_rels\/chart(\d+)[.]xml[.]rels$/;
305
+ const chartStyleXmlRegex = /^xl\/charts\/style(\d+)[.]xml$/;
306
+ const chartColorsXmlRegex = /^xl\/charts\/colors(\d+)[.]xml$/;
307
+ const chartExStyleXmlRegex = /^xl\/charts\/styleEx(\d+)[.]xml$/;
308
+ const chartExColorsXmlRegex = /^xl\/charts\/colorsEx(\d+)[.]xml$/;
309
+ export function getChartNumberFromPath(path) {
310
+ const match = chartXmlRegex.exec(path);
311
+ return match ? parseInt(match[1], 10) : undefined;
312
+ }
313
+ export function getChartNumberFromRelsPath(path) {
314
+ const match = chartRelsXmlRegex.exec(path);
315
+ return match ? parseInt(match[1], 10) : undefined;
316
+ }
317
+ export function getChartStyleNumberFromPath(path) {
318
+ const match = chartStyleXmlRegex.exec(path);
319
+ return match ? parseInt(match[1], 10) : undefined;
320
+ }
321
+ export function getChartColorsNumberFromPath(path) {
322
+ const match = chartColorsXmlRegex.exec(path);
323
+ return match ? parseInt(match[1], 10) : undefined;
324
+ }
325
+ export function getChartExStyleNumberFromPath(path) {
326
+ const match = chartExStyleXmlRegex.exec(path);
327
+ return match ? parseInt(match[1], 10) : undefined;
328
+ }
329
+ export function getChartExColorsNumberFromPath(path) {
330
+ const match = chartExColorsXmlRegex.exec(path);
331
+ return match ? parseInt(match[1], 10) : undefined;
332
+ }
333
+ export function chartPath(n) {
334
+ return `xl/charts/chart${n}.xml`;
335
+ }
336
+ export function chartRelsPath(n) {
337
+ return `xl/charts/_rels/chart${n}.xml.rels`;
338
+ }
339
+ export function chartStylePath(n) {
340
+ return `xl/charts/style${n}.xml`;
341
+ }
342
+ export function chartColorsPath(n) {
343
+ return `xl/charts/colors${n}.xml`;
344
+ }
345
+ export function chartExStylePath(n) {
346
+ return `xl/charts/styleEx${n}.xml`;
347
+ }
348
+ export function chartExColorsPath(n) {
349
+ return `xl/charts/colorsEx${n}.xml`;
350
+ }
351
+ export function chartRelTargetFromDrawing(n) {
352
+ // Target inside xl/drawings/_rels/drawingN.xml.rels (base: xl/drawings/)
353
+ return `../charts/chart${n}.xml`;
354
+ }
355
+ /**
356
+ * Path of the DrawingML overlay part backing a chart's `c:userShapes`
357
+ * reference. Placed under `xl/drawings/` with a `chartUserShape` prefix
358
+ * (rather than sharing the regular `drawingN` pool) so the writer can
359
+ * allocate it by chart number without colliding with worksheet
360
+ * drawings. Excel itself is indifferent to the part path — only the
361
+ * rel target matters — so files loaded with a different original
362
+ * path are renamed on write.
363
+ */
364
+ export function chartUserShapesPath(n) {
365
+ return `xl/drawings/chartUserShape${n}.xml`;
366
+ }
367
+ /**
368
+ * Target path emitted inside `xl/charts/_rels/chartN.xml.rels` for the
369
+ * user-shapes drawing part. Resolved relative to the rels file's
370
+ * base directory (`xl/charts/`).
371
+ */
372
+ export function chartUserShapesRelTarget(n) {
373
+ return `../drawings/chartUserShape${n}.xml`;
374
+ }
375
+ export function chartStyleRelTarget(n) {
376
+ // Target inside xl/charts/_rels/chartN.xml.rels (base: xl/charts/)
377
+ return `style${n}.xml`;
378
+ }
379
+ export function chartColorsRelTarget(n) {
380
+ // Target inside xl/charts/_rels/chartN.xml.rels (base: xl/charts/)
381
+ return `colors${n}.xml`;
382
+ }
383
+ export function chartExStyleRelTarget(n) {
384
+ return `styleEx${n}.xml`;
385
+ }
386
+ export function chartExColorsRelTarget(n) {
387
+ return `colorsEx${n}.xml`;
388
+ }
389
+ export function isChartPath(path) {
390
+ return chartXmlRegex.test(path);
391
+ }
392
+ export function isChartStylePath(path) {
393
+ return chartStyleXmlRegex.test(path);
394
+ }
395
+ export function isChartColorsPath(path) {
396
+ return chartColorsXmlRegex.test(path);
397
+ }
398
+ export function isChartRelsPath(path) {
399
+ return chartRelsXmlRegex.test(path);
400
+ }
401
+ // ============================================================================
402
+ // Chart Ex (Office 2016+ extended charts: treemap, sunburst, waterfall, etc.)
403
+ // ============================================================================
404
+ const chartExXmlRegex = /^xl\/charts\/chartEx(\d+)[.]xml$/;
405
+ const chartExRelsXmlRegex = /^xl\/charts\/_rels\/chartEx(\d+)[.]xml[.]rels$/;
406
+ export function getChartExNumberFromPath(path) {
407
+ const match = chartExXmlRegex.exec(path);
408
+ return match ? parseInt(match[1], 10) : undefined;
409
+ }
410
+ export function getChartExNumberFromRelsPath(path) {
411
+ const match = chartExRelsXmlRegex.exec(path);
412
+ return match ? parseInt(match[1], 10) : undefined;
413
+ }
414
+ export function chartExPath(n) {
415
+ return `xl/charts/chartEx${n}.xml`;
416
+ }
417
+ export function chartExRelsPath(n) {
418
+ return `xl/charts/_rels/chartEx${n}.xml.rels`;
419
+ }
420
+ export function chartExRelTargetFromDrawing(n) {
421
+ return `../charts/chartEx${n}.xml`;
422
+ }
423
+ export function isChartExPath(path) {
424
+ return chartExXmlRegex.test(path);
425
+ }
426
+ export function isChartExRelsPath(path) {
427
+ return chartExRelsXmlRegex.test(path);
428
+ }
259
429
  export function ctrlPropRelTargetFromWorksheet(id) {
260
430
  // Target inside xl/worksheets/_rels/sheetN.xml.rels (base: xl/worksheets/)
261
431
  return `../ctrlProps/ctrlProp${id}.xml`;
@@ -271,15 +441,17 @@ export function ctrlPropRelTargetFromWorksheet(id) {
271
441
  * @param target The raw Target value from the .rels file
272
442
  */
273
443
  export function resolveRelTarget(baseDir, target) {
274
- // Absolute target strip leading slash to get the zip path.
275
- if (target.startsWith("/")) {
276
- return target.slice(1);
277
- }
278
- // Ensure baseDir ends with "/" so the join works correctly.
279
- const base = baseDir.endsWith("/") ? baseDir : baseDir + "/";
280
- // Relative target resolve against baseDir.
281
- // Simple resolution: join base + target, then resolve `.` and `..` segments.
282
- const parts = (base + target).split("/");
444
+ // Normalise every path through the same split / `.` / `..` collapse
445
+ // so absolute targets with `..` segments (legal per OPC, emitted by
446
+ // some third-party producers like LibreOffice for cross-folder rels
447
+ // such as `/xl/worksheets/../charts/chart1.xml`) resolve to a
448
+ // canonical zip path. Previously the absolute branch returned
449
+ // `target.slice(1)` verbatim every downstream `_chartRels[path]`
450
+ // lookup then missed because the stored keys are canonical.
451
+ const rawPath = target.startsWith("/")
452
+ ? target.slice(1)
453
+ : `${baseDir.endsWith("/") ? baseDir : baseDir + "/"}${target}`;
454
+ const parts = rawPath.split("/");
283
455
  const resolved = [];
284
456
  for (const part of parts) {
285
457
  if (part === "." || part === "") {
@@ -294,3 +466,28 @@ export function resolveRelTarget(baseDir, target) {
294
466
  }
295
467
  return resolved.join("/");
296
468
  }
469
+ // ============================================================================
470
+ // Chartsheet paths
471
+ // ============================================================================
472
+ const chartsheetXmlRegex = /^xl\/chartsheets\/sheet(\d+)[.]xml$/;
473
+ const chartsheetRelsXmlRegex = /^xl\/chartsheets\/_rels\/sheet(\d+)[.]xml[.]rels$/;
474
+ export function getChartsheetNoFromPath(path) {
475
+ const match = chartsheetXmlRegex.exec(path);
476
+ return match ? parseInt(match[1], 10) : undefined;
477
+ }
478
+ export function getChartsheetNoFromRelsPath(path) {
479
+ const match = chartsheetRelsXmlRegex.exec(path);
480
+ return match ? parseInt(match[1], 10) : undefined;
481
+ }
482
+ export function chartsheetPath(n) {
483
+ return `xl/chartsheets/sheet${n}.xml`;
484
+ }
485
+ export function chartsheetRelsPath(n) {
486
+ return `xl/chartsheets/_rels/sheet${n}.xml.rels`;
487
+ }
488
+ export function isChartsheetPath(path) {
489
+ return chartsheetXmlRegex.test(path);
490
+ }
491
+ export function isChartsheetRelsPath(path) {
492
+ return chartsheetRelsXmlRegex.test(path);
493
+ }