@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
@@ -433,8 +433,9 @@ class WorksheetWriter {
433
433
  if (typeof filter === "number") {
434
434
  this.conditionalFormatting.splice(filter, 1);
435
435
  }
436
- else if (filter instanceof Function) {
437
- this.conditionalFormatting = this.conditionalFormatting.filter(filter);
436
+ else if (typeof filter === "function") {
437
+ // Predicate selects rules to drop, not rules to keep.
438
+ this.conditionalFormatting = this.conditionalFormatting.filter(cf => !filter(cf));
438
439
  }
439
440
  else {
440
441
  this.conditionalFormatting = [];
@@ -115,7 +115,10 @@ class Column {
115
115
  return this.column.style;
116
116
  }
117
117
  set style(value) {
118
- this.column.style = value;
118
+ // Use _set so commit() will replay store() and propagate the new style
119
+ // to the on-sheet cells; a bare assignment leaves _cache empty and
120
+ // commit() returns early.
121
+ this._set("style", value);
119
122
  }
120
123
  get totalsRowLabel() {
121
124
  return this.column.totalsRowLabel;
@@ -241,10 +244,18 @@ class Table {
241
244
  const { row, col } = table.tl;
242
245
  assert(row > 0, "Table must be on valid row");
243
246
  assert(col > 0, "Table must be on valid col");
244
- const { width, tableHeight } = this;
245
- // autoFilterRef is a single-row range that targets the header row only.
246
- // Excel uses this for filter buttons; including data rows can break filter rendering.
247
- table.autoFilterRef = col_cache_1.colCache.encode(row, col, row, col + width - 1);
247
+ const { width, filterHeight, tableHeight } = this;
248
+ // autoFilterRef spans the header + all data rows (excludes the
249
+ // optional totals row). Matches what Excel itself emits: a real
250
+ // `<table ref="A1:C7"><autoFilter ref="A1:C7"/>` uses the same
251
+ // range for both when there's no totals row, and shrinks the
252
+ // autoFilter by one row when a totals row is present. Emitting a
253
+ // single-row range (`A1:C1`) — which the library did previously —
254
+ // made Excel reject the entire table on open with "Removed
255
+ // Records: Table from /xl/tables/tableN.xml part (Table)" because
256
+ // the spec requires the autoFilter range to cover the filterable
257
+ // data.
258
+ table.autoFilterRef = col_cache_1.colCache.encode(row, col, row + filterHeight - 1, col + width - 1);
248
259
  // tableRef is a range that includes optional headers and totals
249
260
  table.tableRef = col_cache_1.colCache.encode(row, col, row + tableHeight - 1, col + width - 1);
250
261
  table.columns.forEach((column, i) => {
@@ -481,7 +492,32 @@ class Table {
481
492
  }
482
493
  set name(value) {
483
494
  this.cacheState();
484
- this.table.name = sanitizeTableName(value);
495
+ const newName = sanitizeTableName(value);
496
+ const oldName = this.table.name;
497
+ if (newName === oldName) {
498
+ return;
499
+ }
500
+ // Synchronise the worksheet's table map and the workbook-wide name set
501
+ // so subsequent getTable(newName)/duplicate-name checks remain correct.
502
+ // Falls back to a bare assignment if the worksheet hasn't registered
503
+ // this table (e.g. transient instances built by Worksheet.set model).
504
+ const ws = this.worksheet;
505
+ const tables = ws?.tables;
506
+ const tableNames = ws?.workbook?._tableNames;
507
+ if (tables && tables[oldName] === this) {
508
+ const newKey = newName.toLowerCase();
509
+ const oldKey = oldName.toLowerCase();
510
+ if (newKey !== oldKey && tableNames?.has(newKey)) {
511
+ throw new errors_1.TableError(`Table name "${newName}" already exists in the workbook (case-insensitive).`);
512
+ }
513
+ delete tables[oldName];
514
+ tables[newName] = this;
515
+ if (tableNames) {
516
+ tableNames.delete(oldKey);
517
+ tableNames.add(newKey);
518
+ }
519
+ }
520
+ this.table.name = newName;
485
521
  }
486
522
  get displayName() {
487
523
  return this.table.displayName || this.table.name;
@@ -16,6 +16,7 @@ exports.decodeCell = decodeCell;
16
16
  exports.encodeCell = encodeCell;
17
17
  exports.decodeRange = decodeRange;
18
18
  exports.encodeRange = encodeRange;
19
+ exports.quoteSheetName = quoteSheetName;
19
20
  const col_cache_1 = require("./col-cache.js");
20
21
  // =============================================================================
21
22
  // Column Encoding/Decoding
@@ -105,3 +106,31 @@ function encodeRange(startOrRange, end) {
105
106
  const endStr = encodeCell(end);
106
107
  return startStr === endStr ? startStr : `${startStr}:${endStr}`;
107
108
  }
109
+ // =============================================================================
110
+ // Sheet name quoting (Excel formula references)
111
+ // =============================================================================
112
+ /**
113
+ * Excel allows unquoted sheet names only when they consist entirely of
114
+ * ASCII letters, digits, and underscores *and* do not start with a digit.
115
+ * Any sheet name with a space, dot, comma, bracket, `&`, CJK character,
116
+ * or any other non-trivial symbol must be wrapped in single quotes, with
117
+ * existing single quotes doubled.
118
+ *
119
+ * Shared helper so chart-api, pivot-chart, cache-populator, and the XForm
120
+ * layer all agree on the rule — before this was unified, three callers
121
+ * in the chart module used three different regexes, producing divergent
122
+ * formula strings for sheet names with punctuation.
123
+ *
124
+ * @example quoteSheetName("Sheet1") // "Sheet1"
125
+ * @example quoteSheetName("My Sheet") // "'My Sheet'"
126
+ * @example quoteSheetName("It's Fine") // "'It''s Fine'"
127
+ * @example quoteSheetName("2023 Data") // "'2023 Data'" (leading digit → quoted)
128
+ */
129
+ function quoteSheetName(sheetName) {
130
+ // Leading digit forces quoting even with an otherwise clean name —
131
+ // Excel would otherwise parse `2023Data!A1` as a numeric literal.
132
+ if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(sheetName)) {
133
+ return `'${sheetName.replace(/'/g, "''")}'`;
134
+ }
135
+ return sheetName;
136
+ }
@@ -106,20 +106,25 @@ function filterDrawingAnchors(anchors) {
106
106
  if (a == null) {
107
107
  return false;
108
108
  }
109
- // Absolute anchors need a valid picture
109
+ // Absolute anchors need either a picture (image with pos+ext) or a
110
+ // graphicFrame (chart placed via `{ pos, ext }`). The previous
111
+ // filter returned `!!a.picture` for every absolute anchor,
112
+ // silently dropping every chart anchored via `{ pos: { x, y },
113
+ // ext: { cx, cy } }` on write — the drawing XML came out empty
114
+ // and the chart disappeared from the saved file.
110
115
  if (a.range?.pos !== undefined) {
111
- return !!a.picture;
116
+ return !!a.picture || !!a.graphicFrame || !!a.shape;
112
117
  }
113
118
  // Form controls have range.br and shape properties
114
119
  if (a.range?.br && a.shape) {
115
120
  return true;
116
121
  }
117
- // One-cell anchors need a valid picture
118
- if (!a.range?.br && !a.picture) {
122
+ // One-cell anchors need a valid picture or graphicFrame (charts)
123
+ if (!a.range?.br && !a.picture && !a.graphicFrame) {
119
124
  return false;
120
125
  }
121
- // Two-cell anchors need either picture or shape
122
- if (a.range?.br && !a.picture && !a.shape) {
126
+ // Two-cell anchors need either picture, shape, or graphicFrame (charts)
127
+ if (a.range?.br && !a.picture && !a.shape && !a.graphicFrame) {
123
128
  return false;
124
129
  }
125
130
  return true;
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.synthGuid = synthGuid;
4
+ /**
5
+ * GUID helpers for OOXML.
6
+ *
7
+ * Office parts that need stable cross-reference ids (threaded comments,
8
+ * chart uniqueIds, slicer caches, …) use the canonical Microsoft
9
+ * `{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}` format — 32 uppercase hex
10
+ * characters split into 8-4-4-4-12 groups, surrounded by braces.
11
+ *
12
+ * `synthGuid()` returns an RFC-4122 version-4-compatible value suitable
13
+ * for those callers. We don't use `crypto.randomUUID()` directly because
14
+ * it isn't available in every supported runtime (older Node without
15
+ * `node:crypto` globals); `Math.random` is good enough for uniqueness
16
+ * within a single workbook, which is the only thing Office cares about.
17
+ */
18
+ function synthGuid() {
19
+ const hex = "0123456789ABCDEF";
20
+ let out = "";
21
+ for (let i = 0; i < 32; i++) {
22
+ // Version 4: bit 48 (13th hex digit) is always '4'.
23
+ // Variant 10xx: bit 64 (17th hex digit) is one of 8, 9, A, B.
24
+ if (i === 12) {
25
+ out += "4";
26
+ }
27
+ else if (i === 16) {
28
+ out += hex[8 + Math.floor(Math.random() * 4)];
29
+ }
30
+ else {
31
+ out += hex[Math.floor(Math.random() * 16)];
32
+ }
33
+ if (i === 7 || i === 11 || i === 15 || i === 19) {
34
+ out += "-";
35
+ }
36
+ }
37
+ return out;
38
+ }
@@ -11,6 +11,7 @@ exports.getThemeNameFromPath = getThemeNameFromPath;
11
11
  exports.isBinaryEntryPath = isBinaryEntryPath;
12
12
  exports.getDrawingNameFromPath = getDrawingNameFromPath;
13
13
  exports.getDrawingNameFromRelsPath = getDrawingNameFromRelsPath;
14
+ exports.getChartUserShapesNameFromPath = getChartUserShapesNameFromPath;
14
15
  exports.getVmlDrawingNameFromPath = getVmlDrawingNameFromPath;
15
16
  exports.getVmlDrawingHFNameFromPath = getVmlDrawingHFNameFromPath;
16
17
  exports.isCommentsPath = isCommentsPath;
@@ -30,6 +31,9 @@ exports.worksheetRelsPath = worksheetRelsPath;
30
31
  exports.worksheetRelTarget = worksheetRelTarget;
31
32
  exports.commentsPath = commentsPath;
32
33
  exports.commentsPathFromName = commentsPathFromName;
34
+ exports.threadedCommentsPath = threadedCommentsPath;
35
+ exports.threadedCommentsPathFromName = threadedCommentsPathFromName;
36
+ exports.personsPath = personsPath;
33
37
  exports.vmlDrawingPath = vmlDrawingPath;
34
38
  exports.vmlDrawingHFPath = vmlDrawingHFPath;
35
39
  exports.vmlDrawingHFRelsPath = vmlDrawingHFRelsPath;
@@ -56,8 +60,44 @@ exports.pivotTableRelTargetFromWorksheet = pivotTableRelTargetFromWorksheet;
56
60
  exports.tableRelTargetFromWorksheet = tableRelTargetFromWorksheet;
57
61
  exports.mediaRelTargetFromRels = mediaRelTargetFromRels;
58
62
  exports.ctrlPropPath = ctrlPropPath;
63
+ exports.getChartNumberFromPath = getChartNumberFromPath;
64
+ exports.getChartNumberFromRelsPath = getChartNumberFromRelsPath;
65
+ exports.getChartStyleNumberFromPath = getChartStyleNumberFromPath;
66
+ exports.getChartColorsNumberFromPath = getChartColorsNumberFromPath;
67
+ exports.getChartExStyleNumberFromPath = getChartExStyleNumberFromPath;
68
+ exports.getChartExColorsNumberFromPath = getChartExColorsNumberFromPath;
69
+ exports.chartPath = chartPath;
70
+ exports.chartRelsPath = chartRelsPath;
71
+ exports.chartStylePath = chartStylePath;
72
+ exports.chartColorsPath = chartColorsPath;
73
+ exports.chartExStylePath = chartExStylePath;
74
+ exports.chartExColorsPath = chartExColorsPath;
75
+ exports.chartRelTargetFromDrawing = chartRelTargetFromDrawing;
76
+ exports.chartUserShapesPath = chartUserShapesPath;
77
+ exports.chartUserShapesRelTarget = chartUserShapesRelTarget;
78
+ exports.chartStyleRelTarget = chartStyleRelTarget;
79
+ exports.chartColorsRelTarget = chartColorsRelTarget;
80
+ exports.chartExStyleRelTarget = chartExStyleRelTarget;
81
+ exports.chartExColorsRelTarget = chartExColorsRelTarget;
82
+ exports.isChartPath = isChartPath;
83
+ exports.isChartStylePath = isChartStylePath;
84
+ exports.isChartColorsPath = isChartColorsPath;
85
+ exports.isChartRelsPath = isChartRelsPath;
86
+ exports.getChartExNumberFromPath = getChartExNumberFromPath;
87
+ exports.getChartExNumberFromRelsPath = getChartExNumberFromRelsPath;
88
+ exports.chartExPath = chartExPath;
89
+ exports.chartExRelsPath = chartExRelsPath;
90
+ exports.chartExRelTargetFromDrawing = chartExRelTargetFromDrawing;
91
+ exports.isChartExPath = isChartExPath;
92
+ exports.isChartExRelsPath = isChartExRelsPath;
59
93
  exports.ctrlPropRelTargetFromWorksheet = ctrlPropRelTargetFromWorksheet;
60
94
  exports.resolveRelTarget = resolveRelTarget;
95
+ exports.getChartsheetNoFromPath = getChartsheetNoFromPath;
96
+ exports.getChartsheetNoFromRelsPath = getChartsheetNoFromRelsPath;
97
+ exports.chartsheetPath = chartsheetPath;
98
+ exports.chartsheetRelsPath = chartsheetRelsPath;
99
+ exports.isChartsheetPath = isChartsheetPath;
100
+ exports.isChartsheetRelsPath = isChartsheetRelsPath;
61
101
  exports.OOXML_PATHS = {
62
102
  contentTypes: "[Content_Types].xml",
63
103
  rootRels: "_rels/.rels",
@@ -77,6 +117,16 @@ const themeXmlRegex = /^xl\/theme\/[a-zA-Z0-9]+[.]xml$/;
77
117
  const mediaFilenameRegex = /^xl\/media\/([a-zA-Z0-9]+[.][a-zA-Z0-9]{3,4})$/;
78
118
  const drawingXmlRegex = /^xl\/drawings\/(drawing\d+)[.]xml$/;
79
119
  const drawingRelsXmlRegex = /^xl\/drawings\/_rels\/(drawing\d+)[.]xml[.]rels$/;
120
+ // `chartUserShape` is the canonical stem Excel and this library emit,
121
+ // but OOXML does not mandate any particular filename — the chart part
122
+ // discovers its user-shape drawing via the `.rels` relationship type,
123
+ // not by path. Widen the regex to also accept the plural form and
124
+ // a common third-party variant so foreign packages round-trip without
125
+ // silently dropping the overlay drawing. Packages that name the part
126
+ // entirely differently (e.g. `drawing5.xml` referenced via the
127
+ // `chartUserShapes` rel type) still require the relationship-based
128
+ // discovery path; that's a separate fix tracked against the reader.
129
+ const chartUserShapesXmlRegex = /^xl\/drawings\/((?:chartUserShape|chartUserShapes|userDrawing)\d+)[.]xml$/;
80
130
  const vmlDrawingRegex = /^xl\/drawings\/(vmlDrawing\d+)[.]vml$/;
81
131
  const vmlDrawingHFRegex = /^xl\/drawings\/(vmlDrawingHF\d+)[.]vml$/;
82
132
  // Matches both flat layout (xl/comments1.xml) and subdirectory layout (xl/comments/comment1.xml).
@@ -135,6 +185,17 @@ function getDrawingNameFromRelsPath(path) {
135
185
  const match = drawingRelsXmlRegex.exec(path);
136
186
  return match ? match[1] : undefined;
137
187
  }
188
+ /**
189
+ * Canonical filename stem for a chart-overlay drawing part — used by
190
+ * the reader to recognise `xl/drawings/chartUserShapeN.xml` entries
191
+ * and stash their bytes for post-load reconciliation onto the owning
192
+ * chart. Returns `undefined` for any other path, including regular
193
+ * worksheet drawings (those go through {@link getDrawingNameFromPath}).
194
+ */
195
+ function getChartUserShapesNameFromPath(path) {
196
+ const match = chartUserShapesXmlRegex.exec(path);
197
+ return match ? match[1] : undefined;
198
+ }
138
199
  function getVmlDrawingNameFromPath(path) {
139
200
  const match = vmlDrawingRegex.exec(path);
140
201
  return match ? match[1] : undefined;
@@ -216,6 +277,28 @@ function commentsPathFromName(commentName) {
216
277
  // For comments when the caller already has the logical name (e.g. "comments1").
217
278
  return `xl/${commentName}.xml`;
218
279
  }
280
+ /**
281
+ * Modern Office 365 "threaded comments" — separate from classic VML
282
+ * comments. Each worksheet that uses threaded comments has its own
283
+ * `xl/threadedComments/threadedComment{N}.xml` part alongside the
284
+ * legacy `xl/comments{N}.xml` (classic comments carry a fallback text
285
+ * representation, threaded comments carry the conversation tree).
286
+ */
287
+ function threadedCommentsPath(sheetId) {
288
+ return `xl/threadedComments/threadedComment${sheetId}.xml`;
289
+ }
290
+ function threadedCommentsPathFromName(name) {
291
+ return `xl/threadedComments/${name}.xml`;
292
+ }
293
+ /**
294
+ * Modern Office 365 "persons" list — the directory of commenters
295
+ * referenced by `threadedComment/@personId`. Workbook-level single
296
+ * part (`xl/persons/person.xml` is the conventional filename for the
297
+ * primary, rarely-duplicated list).
298
+ */
299
+ function personsPath() {
300
+ return "xl/persons/person.xml";
301
+ }
219
302
  function vmlDrawingPath(sheetId) {
220
303
  return `xl/drawings/vmlDrawing${sheetId}.vml`;
221
304
  }
@@ -316,6 +399,133 @@ function mediaRelTargetFromRels(filename) {
316
399
  function ctrlPropPath(id) {
317
400
  return `xl/ctrlProps/ctrlProp${id}.xml`;
318
401
  }
402
+ // -------- Charts --------
403
+ const chartXmlRegex = /^xl\/charts\/chart(\d+)[.]xml$/;
404
+ const chartRelsXmlRegex = /^xl\/charts\/_rels\/chart(\d+)[.]xml[.]rels$/;
405
+ const chartStyleXmlRegex = /^xl\/charts\/style(\d+)[.]xml$/;
406
+ const chartColorsXmlRegex = /^xl\/charts\/colors(\d+)[.]xml$/;
407
+ const chartExStyleXmlRegex = /^xl\/charts\/styleEx(\d+)[.]xml$/;
408
+ const chartExColorsXmlRegex = /^xl\/charts\/colorsEx(\d+)[.]xml$/;
409
+ function getChartNumberFromPath(path) {
410
+ const match = chartXmlRegex.exec(path);
411
+ return match ? parseInt(match[1], 10) : undefined;
412
+ }
413
+ function getChartNumberFromRelsPath(path) {
414
+ const match = chartRelsXmlRegex.exec(path);
415
+ return match ? parseInt(match[1], 10) : undefined;
416
+ }
417
+ function getChartStyleNumberFromPath(path) {
418
+ const match = chartStyleXmlRegex.exec(path);
419
+ return match ? parseInt(match[1], 10) : undefined;
420
+ }
421
+ function getChartColorsNumberFromPath(path) {
422
+ const match = chartColorsXmlRegex.exec(path);
423
+ return match ? parseInt(match[1], 10) : undefined;
424
+ }
425
+ function getChartExStyleNumberFromPath(path) {
426
+ const match = chartExStyleXmlRegex.exec(path);
427
+ return match ? parseInt(match[1], 10) : undefined;
428
+ }
429
+ function getChartExColorsNumberFromPath(path) {
430
+ const match = chartExColorsXmlRegex.exec(path);
431
+ return match ? parseInt(match[1], 10) : undefined;
432
+ }
433
+ function chartPath(n) {
434
+ return `xl/charts/chart${n}.xml`;
435
+ }
436
+ function chartRelsPath(n) {
437
+ return `xl/charts/_rels/chart${n}.xml.rels`;
438
+ }
439
+ function chartStylePath(n) {
440
+ return `xl/charts/style${n}.xml`;
441
+ }
442
+ function chartColorsPath(n) {
443
+ return `xl/charts/colors${n}.xml`;
444
+ }
445
+ function chartExStylePath(n) {
446
+ return `xl/charts/styleEx${n}.xml`;
447
+ }
448
+ function chartExColorsPath(n) {
449
+ return `xl/charts/colorsEx${n}.xml`;
450
+ }
451
+ function chartRelTargetFromDrawing(n) {
452
+ // Target inside xl/drawings/_rels/drawingN.xml.rels (base: xl/drawings/)
453
+ return `../charts/chart${n}.xml`;
454
+ }
455
+ /**
456
+ * Path of the DrawingML overlay part backing a chart's `c:userShapes`
457
+ * reference. Placed under `xl/drawings/` with a `chartUserShape` prefix
458
+ * (rather than sharing the regular `drawingN` pool) so the writer can
459
+ * allocate it by chart number without colliding with worksheet
460
+ * drawings. Excel itself is indifferent to the part path — only the
461
+ * rel target matters — so files loaded with a different original
462
+ * path are renamed on write.
463
+ */
464
+ function chartUserShapesPath(n) {
465
+ return `xl/drawings/chartUserShape${n}.xml`;
466
+ }
467
+ /**
468
+ * Target path emitted inside `xl/charts/_rels/chartN.xml.rels` for the
469
+ * user-shapes drawing part. Resolved relative to the rels file's
470
+ * base directory (`xl/charts/`).
471
+ */
472
+ function chartUserShapesRelTarget(n) {
473
+ return `../drawings/chartUserShape${n}.xml`;
474
+ }
475
+ function chartStyleRelTarget(n) {
476
+ // Target inside xl/charts/_rels/chartN.xml.rels (base: xl/charts/)
477
+ return `style${n}.xml`;
478
+ }
479
+ function chartColorsRelTarget(n) {
480
+ // Target inside xl/charts/_rels/chartN.xml.rels (base: xl/charts/)
481
+ return `colors${n}.xml`;
482
+ }
483
+ function chartExStyleRelTarget(n) {
484
+ return `styleEx${n}.xml`;
485
+ }
486
+ function chartExColorsRelTarget(n) {
487
+ return `colorsEx${n}.xml`;
488
+ }
489
+ function isChartPath(path) {
490
+ return chartXmlRegex.test(path);
491
+ }
492
+ function isChartStylePath(path) {
493
+ return chartStyleXmlRegex.test(path);
494
+ }
495
+ function isChartColorsPath(path) {
496
+ return chartColorsXmlRegex.test(path);
497
+ }
498
+ function isChartRelsPath(path) {
499
+ return chartRelsXmlRegex.test(path);
500
+ }
501
+ // ============================================================================
502
+ // Chart Ex (Office 2016+ extended charts: treemap, sunburst, waterfall, etc.)
503
+ // ============================================================================
504
+ const chartExXmlRegex = /^xl\/charts\/chartEx(\d+)[.]xml$/;
505
+ const chartExRelsXmlRegex = /^xl\/charts\/_rels\/chartEx(\d+)[.]xml[.]rels$/;
506
+ function getChartExNumberFromPath(path) {
507
+ const match = chartExXmlRegex.exec(path);
508
+ return match ? parseInt(match[1], 10) : undefined;
509
+ }
510
+ function getChartExNumberFromRelsPath(path) {
511
+ const match = chartExRelsXmlRegex.exec(path);
512
+ return match ? parseInt(match[1], 10) : undefined;
513
+ }
514
+ function chartExPath(n) {
515
+ return `xl/charts/chartEx${n}.xml`;
516
+ }
517
+ function chartExRelsPath(n) {
518
+ return `xl/charts/_rels/chartEx${n}.xml.rels`;
519
+ }
520
+ function chartExRelTargetFromDrawing(n) {
521
+ return `../charts/chartEx${n}.xml`;
522
+ }
523
+ function isChartExPath(path) {
524
+ return chartExXmlRegex.test(path);
525
+ }
526
+ function isChartExRelsPath(path) {
527
+ return chartExRelsXmlRegex.test(path);
528
+ }
319
529
  function ctrlPropRelTargetFromWorksheet(id) {
320
530
  // Target inside xl/worksheets/_rels/sheetN.xml.rels (base: xl/worksheets/)
321
531
  return `../ctrlProps/ctrlProp${id}.xml`;
@@ -331,15 +541,17 @@ function ctrlPropRelTargetFromWorksheet(id) {
331
541
  * @param target The raw Target value from the .rels file
332
542
  */
333
543
  function resolveRelTarget(baseDir, target) {
334
- // Absolute target strip leading slash to get the zip path.
335
- if (target.startsWith("/")) {
336
- return target.slice(1);
337
- }
338
- // Ensure baseDir ends with "/" so the join works correctly.
339
- const base = baseDir.endsWith("/") ? baseDir : baseDir + "/";
340
- // Relative target resolve against baseDir.
341
- // Simple resolution: join base + target, then resolve `.` and `..` segments.
342
- const parts = (base + target).split("/");
544
+ // Normalise every path through the same split / `.` / `..` collapse
545
+ // so absolute targets with `..` segments (legal per OPC, emitted by
546
+ // some third-party producers like LibreOffice for cross-folder rels
547
+ // such as `/xl/worksheets/../charts/chart1.xml`) resolve to a
548
+ // canonical zip path. Previously the absolute branch returned
549
+ // `target.slice(1)` verbatim every downstream `_chartRels[path]`
550
+ // lookup then missed because the stored keys are canonical.
551
+ const rawPath = target.startsWith("/")
552
+ ? target.slice(1)
553
+ : `${baseDir.endsWith("/") ? baseDir : baseDir + "/"}${target}`;
554
+ const parts = rawPath.split("/");
343
555
  const resolved = [];
344
556
  for (const part of parts) {
345
557
  if (part === "." || part === "") {
@@ -354,3 +566,28 @@ function resolveRelTarget(baseDir, target) {
354
566
  }
355
567
  return resolved.join("/");
356
568
  }
569
+ // ============================================================================
570
+ // Chartsheet paths
571
+ // ============================================================================
572
+ const chartsheetXmlRegex = /^xl\/chartsheets\/sheet(\d+)[.]xml$/;
573
+ const chartsheetRelsXmlRegex = /^xl\/chartsheets\/_rels\/sheet(\d+)[.]xml[.]rels$/;
574
+ function getChartsheetNoFromPath(path) {
575
+ const match = chartsheetXmlRegex.exec(path);
576
+ return match ? parseInt(match[1], 10) : undefined;
577
+ }
578
+ function getChartsheetNoFromRelsPath(path) {
579
+ const match = chartsheetRelsXmlRegex.exec(path);
580
+ return match ? parseInt(match[1], 10) : undefined;
581
+ }
582
+ function chartsheetPath(n) {
583
+ return `xl/chartsheets/sheet${n}.xml`;
584
+ }
585
+ function chartsheetRelsPath(n) {
586
+ return `xl/chartsheets/_rels/sheet${n}.xml.rels`;
587
+ }
588
+ function isChartsheetPath(path) {
589
+ return chartsheetXmlRegex.test(path);
590
+ }
591
+ function isChartsheetRelsPath(path) {
592
+ return chartsheetRelsXmlRegex.test(path);
593
+ }
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ /**
3
+ * ChartEx sidecar completeness check.
4
+ *
5
+ * Every ChartEx `xl/charts/chartExN.xml` MUST ship with a chartStyle
6
+ * sidecar (`xl/charts/styleN.xml` or `xl/charts/styleExN.xml`) and a
7
+ * chartColorStyle sidecar (`xl/charts/colorsN.xml` or
8
+ * `xl/charts/colorsExN.xml`), linked from `chartExN.xml.rels`. Without
9
+ * them Excel 2016+ discards the chartEx on load ("Removed Part:
10
+ * /xl/drawings/drawingN.xml (Drawing shape)").
11
+ *
12
+ * Both sidecars are STUB-REJECTED **for chartEx** — an id-only
13
+ * skeleton such as `<cs:chartStyle id="395"/>` (no child elements)
14
+ * makes Excel treat the sidecar as malformed and drop the parent
15
+ * chartEx + drawing. Excel authoring tools emit the FULL content: ~40
16
+ * child elements for chartStyle (axisTitle, dataPoint, dataLabel, …)
17
+ * and 6 `schemeClr` entries each with 9 `variation` siblings for
18
+ * chartColorStyle.
19
+ *
20
+ * CLASSIC charts (`xl/charts/chartN.xml`) can share the chartStyle
21
+ * namespace but Excel is lenient there — classic chart style stubs
22
+ * are accepted. We therefore only enforce the no-stub rule on
23
+ * sidecars **referenced by a `chartExN.xml` part** via its rels.
24
+ *
25
+ * The precise content is too intricate to validate without baking
26
+ * ~1500 lines of template XML into this module. Instead we detect the
27
+ * two high-signal stub patterns:
28
+ *
29
+ * - chartStyle root element has zero element children (pure stub).
30
+ * - chartColorStyle root element has zero element children (pure stub).
31
+ *
32
+ * A rich sidecar trivially has dozens of children so the zero-child
33
+ * case is a strong writer-bug signature.
34
+ */
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.checkChartSidecars = checkChartSidecars;
37
+ const path_utils_1 = require("./path-utils");
38
+ const CHARTEX_PART_RE = /^xl\/charts\/chartEx\d+\.xml$/;
39
+ const CHARTSTYLE_REL_TYPE = "http://schemas.microsoft.com/office/2011/relationships/chartStyle";
40
+ const CHARTCOLORS_REL_TYPE = "http://schemas.microsoft.com/office/2011/relationships/chartColorStyle";
41
+ function checkChartSidecars(ctx) {
42
+ // Phase 1: collect all sidecar paths that are referenced from a
43
+ // chartEx part. Only these warrant the "stub is rejection" rule.
44
+ const chartExStylePaths = new Set();
45
+ const chartExColorsPaths = new Set();
46
+ for (const [path, entry] of ctx.files()) {
47
+ if (entry.type === "directory" || !CHARTEX_PART_RE.test(path)) {
48
+ continue;
49
+ }
50
+ const relsPath = chartRelsPath(path);
51
+ if (!ctx.has(relsPath)) {
52
+ continue;
53
+ }
54
+ const rels = ctx.readRels(relsPath);
55
+ for (const rel of rels.rels) {
56
+ if (rel.targetMode === "External") {
57
+ continue;
58
+ }
59
+ const resolved = (0, path_utils_1.resolveRelTarget)(relsPath, rel.target);
60
+ if (rel.type === CHARTSTYLE_REL_TYPE) {
61
+ chartExStylePaths.add(resolved);
62
+ }
63
+ else if (rel.type === CHARTCOLORS_REL_TYPE) {
64
+ chartExColorsPaths.add(resolved);
65
+ }
66
+ }
67
+ }
68
+ // Phase 2: for every sidecar referenced by a chartEx, flag stub form.
69
+ for (const path of chartExStylePaths) {
70
+ if (ctx.reporter.capped) {
71
+ return;
72
+ }
73
+ checkStubRoot(ctx, path, "chartEx-chartStyle-stub-form", "chartStyle");
74
+ }
75
+ for (const path of chartExColorsPaths) {
76
+ if (ctx.reporter.capped) {
77
+ return;
78
+ }
79
+ checkStubRoot(ctx, path, "chartEx-chartColorStyle-stub-form", "chartColorStyle");
80
+ }
81
+ }
82
+ function chartRelsPath(chartPath) {
83
+ const slash = chartPath.lastIndexOf("/");
84
+ const dir = slash >= 0 ? chartPath.slice(0, slash) : "";
85
+ const name = slash >= 0 ? chartPath.slice(slash + 1) : chartPath;
86
+ return dir ? `${dir}/_rels/${name}.rels` : `_rels/${name}.rels`;
87
+ }
88
+ function checkStubRoot(ctx, path, kind, label) {
89
+ if (!ctx.has(path)) {
90
+ return; // missing-target already reported by the rels checker.
91
+ }
92
+ const dom = ctx.readDom(path);
93
+ if (!dom) {
94
+ return;
95
+ }
96
+ const root = dom.root;
97
+ const hasElementChildren = root.children.some(c => c.type === "element");
98
+ if (!hasElementChildren) {
99
+ ctx.reporter.error(kind, `${path}: ${label} sidecar referenced by a chartEx part is an id-only stub ` +
100
+ `(root element has no children). Excel 2016+ rejects chartEx stub sidecars and ` +
101
+ `drops the parent chartEx + drawing. Emit the full Microsoft-authored default content.`, path);
102
+ }
103
+ }