@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;
@@ -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,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
+ }
@@ -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
+ }
@@ -0,0 +1,101 @@
1
+ /**
2
+ * ChartEx sidecar completeness check.
3
+ *
4
+ * Every ChartEx `xl/charts/chartExN.xml` MUST ship with a chartStyle
5
+ * sidecar (`xl/charts/styleN.xml` or `xl/charts/styleExN.xml`) and a
6
+ * chartColorStyle sidecar (`xl/charts/colorsN.xml` or
7
+ * `xl/charts/colorsExN.xml`), linked from `chartExN.xml.rels`. Without
8
+ * them Excel 2016+ discards the chartEx on load ("Removed Part:
9
+ * /xl/drawings/drawingN.xml (Drawing shape)").
10
+ *
11
+ * Both sidecars are STUB-REJECTED **for chartEx** — an id-only
12
+ * skeleton such as `<cs:chartStyle id="395"/>` (no child elements)
13
+ * makes Excel treat the sidecar as malformed and drop the parent
14
+ * chartEx + drawing. Excel authoring tools emit the FULL content: ~40
15
+ * child elements for chartStyle (axisTitle, dataPoint, dataLabel, …)
16
+ * and 6 `schemeClr` entries each with 9 `variation` siblings for
17
+ * chartColorStyle.
18
+ *
19
+ * CLASSIC charts (`xl/charts/chartN.xml`) can share the chartStyle
20
+ * namespace but Excel is lenient there — classic chart style stubs
21
+ * are accepted. We therefore only enforce the no-stub rule on
22
+ * sidecars **referenced by a `chartExN.xml` part** via its rels.
23
+ *
24
+ * The precise content is too intricate to validate without baking
25
+ * ~1500 lines of template XML into this module. Instead we detect the
26
+ * two high-signal stub patterns:
27
+ *
28
+ * - chartStyle root element has zero element children (pure stub).
29
+ * - chartColorStyle root element has zero element children (pure stub).
30
+ *
31
+ * A rich sidecar trivially has dozens of children so the zero-child
32
+ * case is a strong writer-bug signature.
33
+ */
34
+ import {} from "./context.js";
35
+ import { resolveRelTarget } from "./path-utils.js";
36
+ const CHARTEX_PART_RE = /^xl\/charts\/chartEx\d+\.xml$/;
37
+ const CHARTSTYLE_REL_TYPE = "http://schemas.microsoft.com/office/2011/relationships/chartStyle";
38
+ const CHARTCOLORS_REL_TYPE = "http://schemas.microsoft.com/office/2011/relationships/chartColorStyle";
39
+ export function checkChartSidecars(ctx) {
40
+ // Phase 1: collect all sidecar paths that are referenced from a
41
+ // chartEx part. Only these warrant the "stub is rejection" rule.
42
+ const chartExStylePaths = new Set();
43
+ const chartExColorsPaths = new Set();
44
+ for (const [path, entry] of ctx.files()) {
45
+ if (entry.type === "directory" || !CHARTEX_PART_RE.test(path)) {
46
+ continue;
47
+ }
48
+ const relsPath = chartRelsPath(path);
49
+ if (!ctx.has(relsPath)) {
50
+ continue;
51
+ }
52
+ const rels = ctx.readRels(relsPath);
53
+ for (const rel of rels.rels) {
54
+ if (rel.targetMode === "External") {
55
+ continue;
56
+ }
57
+ const resolved = resolveRelTarget(relsPath, rel.target);
58
+ if (rel.type === CHARTSTYLE_REL_TYPE) {
59
+ chartExStylePaths.add(resolved);
60
+ }
61
+ else if (rel.type === CHARTCOLORS_REL_TYPE) {
62
+ chartExColorsPaths.add(resolved);
63
+ }
64
+ }
65
+ }
66
+ // Phase 2: for every sidecar referenced by a chartEx, flag stub form.
67
+ for (const path of chartExStylePaths) {
68
+ if (ctx.reporter.capped) {
69
+ return;
70
+ }
71
+ checkStubRoot(ctx, path, "chartEx-chartStyle-stub-form", "chartStyle");
72
+ }
73
+ for (const path of chartExColorsPaths) {
74
+ if (ctx.reporter.capped) {
75
+ return;
76
+ }
77
+ checkStubRoot(ctx, path, "chartEx-chartColorStyle-stub-form", "chartColorStyle");
78
+ }
79
+ }
80
+ function chartRelsPath(chartPath) {
81
+ const slash = chartPath.lastIndexOf("/");
82
+ const dir = slash >= 0 ? chartPath.slice(0, slash) : "";
83
+ const name = slash >= 0 ? chartPath.slice(slash + 1) : chartPath;
84
+ return dir ? `${dir}/_rels/${name}.rels` : `_rels/${name}.rels`;
85
+ }
86
+ function checkStubRoot(ctx, path, kind, label) {
87
+ if (!ctx.has(path)) {
88
+ return; // missing-target already reported by the rels checker.
89
+ }
90
+ const dom = ctx.readDom(path);
91
+ if (!dom) {
92
+ return;
93
+ }
94
+ const root = dom.root;
95
+ const hasElementChildren = root.children.some(c => c.type === "element");
96
+ if (!hasElementChildren) {
97
+ ctx.reporter.error(kind, `${path}: ${label} sidecar referenced by a chartEx part is an id-only stub ` +
98
+ `(root element has no children). Excel 2016+ rejects chartEx stub sidecars and ` +
99
+ `drops the parent chartEx + drawing. Emit the full Microsoft-authored default content.`, path);
100
+ }
101
+ }