@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
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Chartsheet structure check.
3
+ *
4
+ * A chartsheet (`xl/chartsheets/sheetN.xml`) must contain a `<drawing>`
5
+ * reference — the chart itself is always in the linked drawing part.
6
+ * Without it, Excel shows an empty chart sheet.
7
+ */
8
+ import type { ValidationContext } from "./context.js";
9
+ export declare function checkChartsheet(ctx: ValidationContext): void;
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Chartsheet structure check.
3
+ *
4
+ * A chartsheet (`xl/chartsheets/sheetN.xml`) must contain a `<drawing>`
5
+ * reference — the chart itself is always in the linked drawing part.
6
+ * Without it, Excel shows an empty chart sheet.
7
+ */
8
+ import { hasDescendantLocal } from "./xml-utils.js";
9
+ const CHARTSHEET_PATH_RE = /^xl\/chartsheets\/sheet\d+\.xml$/;
10
+ export function checkChartsheet(ctx) {
11
+ for (const [path, entry] of ctx.files()) {
12
+ if (ctx.reporter.capped) {
13
+ return;
14
+ }
15
+ if (entry.type === "directory" || !CHARTSHEET_PATH_RE.test(path)) {
16
+ continue;
17
+ }
18
+ const dom = ctx.readDom(path);
19
+ if (!dom) {
20
+ continue;
21
+ }
22
+ if (!hasDescendantLocal(dom.root, "drawing")) {
23
+ ctx.reporter.error("chartsheet-missing-drawing", `${path}: missing drawing reference`, path);
24
+ }
25
+ }
26
+ }
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Content-types check.
3
+ *
4
+ * OPC requires every part in the package to be resolvable to a
5
+ * content-type via either a `<Default Extension=...>` entry or a
6
+ * `<Override PartName=...>` entry. Excel rejects packages where this
7
+ * mapping has gaps — the classic "repairable content" error.
8
+ *
9
+ * Beyond the OPC-mandatory rules, we also enforce Microsoft's
10
+ * well-known part→type expectations for the common OOXML part layouts
11
+ * (chart, pivot, chartsheet, drawing, etc.). A wrong content-type on
12
+ * these parts is one of the top causes of "Excel cannot open" errors
13
+ * because Excel uses the type string to route parsing.
14
+ */
15
+ import type { ValidationContext } from "./context.js";
16
+ export declare function checkContentTypes(ctx: ValidationContext): void;
@@ -0,0 +1,181 @@
1
+ /**
2
+ * Content-types check.
3
+ *
4
+ * OPC requires every part in the package to be resolvable to a
5
+ * content-type via either a `<Default Extension=...>` entry or a
6
+ * `<Override PartName=...>` entry. Excel rejects packages where this
7
+ * mapping has gaps — the classic "repairable content" error.
8
+ *
9
+ * Beyond the OPC-mandatory rules, we also enforce Microsoft's
10
+ * well-known part→type expectations for the common OOXML part layouts
11
+ * (chart, pivot, chartsheet, drawing, etc.). A wrong content-type on
12
+ * these parts is one of the top causes of "Excel cannot open" errors
13
+ * because Excel uses the type string to route parsing.
14
+ */
15
+ import { getExtension, isLegalPartName, stripLeadingSlash } from "./path-utils.js";
16
+ // -----------------------------------------------------------------------------
17
+ // Well-known content types
18
+ // -----------------------------------------------------------------------------
19
+ const CT = {
20
+ workbook: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml",
21
+ styles: "application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml",
22
+ sharedStrings: "application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml",
23
+ theme: "application/vnd.openxmlformats-officedocument.theme+xml",
24
+ worksheet: "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml",
25
+ chartsheet: "application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml",
26
+ chart: "application/vnd.openxmlformats-officedocument.drawingml.chart+xml",
27
+ chartEx: "application/vnd.ms-office.chartex+xml",
28
+ chartStyle: "application/vnd.ms-office.chartstyle+xml",
29
+ chartColors: "application/vnd.ms-office.chartcolorstyle+xml",
30
+ drawing: "application/vnd.openxmlformats-officedocument.drawing+xml",
31
+ pivotTable: "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotTable+xml",
32
+ pivotCacheDefinition: "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheDefinition+xml",
33
+ pivotCacheRecords: "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheRecords+xml",
34
+ comments: "application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml",
35
+ threadedComments: "application/vnd.ms-excel.threadedcomments+xml",
36
+ externalLink: "application/vnd.openxmlformats-officedocument.spreadsheetml.externalLink+xml",
37
+ tableDef: "application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml",
38
+ calcChain: "application/vnd.openxmlformats-officedocument.spreadsheetml.calcChain+xml",
39
+ app: "application/vnd.openxmlformats-officedocument.extended-properties+xml",
40
+ core: "application/vnd.openxmlformats-package.core-properties+xml"
41
+ };
42
+ /**
43
+ * Path→expected content-type rules. The first matching rule wins. We
44
+ * keep these in a single table so it is easy to audit and extend. Exact
45
+ * string keys take precedence over regex rules for performance and
46
+ * readability.
47
+ */
48
+ const EXACT_PART_CONTENT_TYPE = {
49
+ "xl/workbook.xml": CT.workbook,
50
+ "xl/styles.xml": CT.styles,
51
+ "xl/sharedStrings.xml": CT.sharedStrings,
52
+ "xl/calcChain.xml": CT.calcChain,
53
+ "docProps/app.xml": CT.app,
54
+ "docProps/core.xml": CT.core
55
+ };
56
+ const PATTERN_RULES = [
57
+ { pattern: /^xl\/theme\/[^/]+\.xml$/, contentType: CT.theme, label: "theme" },
58
+ { pattern: /^xl\/worksheets\/sheet\d+\.xml$/, contentType: CT.worksheet, label: "worksheet" },
59
+ { pattern: /^xl\/chartsheets\/sheet\d+\.xml$/, contentType: CT.chartsheet, label: "chartsheet" },
60
+ { pattern: /^xl\/charts\/chart\d+\.xml$/, contentType: CT.chart, label: "chart" },
61
+ { pattern: /^xl\/charts\/chartEx\d+\.xml$/, contentType: CT.chartEx, label: "chartEx" },
62
+ { pattern: /^xl\/charts\/style\d+\.xml$/, contentType: CT.chartStyle, label: "chart style" },
63
+ { pattern: /^xl\/charts\/colors\d+\.xml$/, contentType: CT.chartColors, label: "chart colors" },
64
+ { pattern: /^xl\/charts\/styleEx\d+\.xml$/, contentType: CT.chartStyle, label: "chart styleEx" },
65
+ {
66
+ pattern: /^xl\/charts\/colorsEx\d+\.xml$/,
67
+ contentType: CT.chartColors,
68
+ label: "chart colorsEx"
69
+ },
70
+ { pattern: /^xl\/drawings\/drawing\d+\.xml$/, contentType: CT.drawing, label: "drawing" },
71
+ {
72
+ pattern: /^xl\/pivotTables\/pivotTable\d+\.xml$/,
73
+ contentType: CT.pivotTable,
74
+ label: "pivot table"
75
+ },
76
+ {
77
+ pattern: /^xl\/pivotCache\/pivotCacheDefinition\d+\.xml$/,
78
+ contentType: CT.pivotCacheDefinition,
79
+ label: "pivot cache definition"
80
+ },
81
+ {
82
+ pattern: /^xl\/pivotCache\/pivotCacheRecords\d+\.xml$/,
83
+ contentType: CT.pivotCacheRecords,
84
+ label: "pivot cache records"
85
+ },
86
+ { pattern: /^xl\/tables\/table\d+\.xml$/, contentType: CT.tableDef, label: "table" },
87
+ {
88
+ pattern: /^xl\/externalLinks\/externalLink\d+\.xml$/,
89
+ contentType: CT.externalLink,
90
+ label: "external link"
91
+ },
92
+ { pattern: /^xl\/comments\d+\.xml$/, contentType: CT.comments, label: "comments" },
93
+ {
94
+ pattern: /^xl\/threadedComments\/threadedComment\d+\.xml$/,
95
+ contentType: CT.threadedComments,
96
+ label: "threaded comments"
97
+ }
98
+ ];
99
+ function expectedContentType(path) {
100
+ const exact = EXACT_PART_CONTENT_TYPE[path];
101
+ if (exact) {
102
+ return { contentType: exact, label: path };
103
+ }
104
+ for (const rule of PATTERN_RULES) {
105
+ if (rule.pattern.test(path)) {
106
+ return { contentType: rule.contentType, label: rule.label };
107
+ }
108
+ }
109
+ return undefined;
110
+ }
111
+ // -----------------------------------------------------------------------------
112
+ // Checker
113
+ // -----------------------------------------------------------------------------
114
+ export function checkContentTypes(ctx) {
115
+ if (!ctx.has("[Content_Types].xml")) {
116
+ // checkStructure will already have reported missing-part.
117
+ return;
118
+ }
119
+ const data = ctx.readContentTypes();
120
+ if (!data.parseOk) {
121
+ // context already reported `content-types-malformed`.
122
+ return;
123
+ }
124
+ // Duplicate overrides — we keep the first and report extras.
125
+ for (const pn of data.duplicateOverrides) {
126
+ ctx.reporter.error("content-types-duplicate-override", `Duplicate Override PartName: ${pn}`, "[Content_Types].xml");
127
+ }
128
+ // The two OPC-mandated defaults.
129
+ const relsDefault = data.defaults.get("rels");
130
+ if (relsDefault !== "application/vnd.openxmlformats-package.relationships+xml") {
131
+ ctx.reporter.error("content-types-missing-default", "Missing/incorrect Default for .rels (expected application/vnd.openxmlformats-package.relationships+xml)", "[Content_Types].xml");
132
+ }
133
+ const xmlDefault = data.defaults.get("xml");
134
+ if (xmlDefault !== "application/xml") {
135
+ ctx.reporter.error("content-types-missing-default", "Missing/incorrect Default for .xml (expected application/xml)", "[Content_Types].xml");
136
+ }
137
+ // Every override must point to an existing part.
138
+ for (const [partName, _ct] of data.overrides) {
139
+ if (ctx.reporter.capped) {
140
+ return;
141
+ }
142
+ if (!ctx.has(partName)) {
143
+ ctx.reporter.error("content-types-missing", `Override PartName points to missing file: /${partName}`, "[Content_Types].xml");
144
+ }
145
+ }
146
+ // Every part in the zip must resolve to a content type and — when we
147
+ // know the expected type — match it.
148
+ for (const [path, entry] of ctx.files()) {
149
+ if (ctx.reporter.capped) {
150
+ return;
151
+ }
152
+ if (entry.type === "directory" || path === "[Content_Types].xml") {
153
+ continue;
154
+ }
155
+ // Reject invalid OPC part names (e.g. containing `\`, ending `/`, or
156
+ // embedded `..`). Excel refuses such packages outright.
157
+ if (!isLegalPartName(path)) {
158
+ ctx.reporter.error("part-name-invalid", `Illegal OPC part name: ${path}`, path);
159
+ }
160
+ const overrideType = data.overrides.get(path);
161
+ const ext = getExtension(path);
162
+ const defaultType = ext ? data.defaults.get(ext) : undefined;
163
+ if (!overrideType && !defaultType) {
164
+ if (!ext) {
165
+ ctx.reporter.error("content-types-missing-for-part", `No content type for part without extension: ${path}`, "[Content_Types].xml");
166
+ }
167
+ else {
168
+ ctx.reporter.error("content-types-missing-for-part", `No Default/Override content type for part: ${path} (extension .${ext})`, "[Content_Types].xml");
169
+ }
170
+ continue;
171
+ }
172
+ const expected = expectedContentType(path);
173
+ if (!expected) {
174
+ continue;
175
+ }
176
+ const actual = overrideType ?? defaultType;
177
+ if (actual !== expected.contentType) {
178
+ ctx.reporter.error("content-types-wrong-for-part", `Unexpected content type for /${stripLeadingSlash(path)}: got "${actual}", expected "${expected.contentType}" (${expected.label})`, "[Content_Types].xml");
179
+ }
180
+ }
181
+ }
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Drawing part structure check.
3
+ *
4
+ * When a drawing file contains `<xdr:graphicFrame>` nodes but neither a
5
+ * classic `<c:chart>` nor a chartEx `<cx:chart>` reference inside them,
6
+ * the graphic frame is dangling — Excel shows a placeholder or drops the
7
+ * frame on load.
8
+ *
9
+ * We also scan anchor coordinates: every anchor must have `from` and
10
+ * `to` child elements, and EMU values (`x`, `y`, `cx`, `cy`,
11
+ * `colOff`, `rowOff`) when present must parse as finite non-negative
12
+ * numbers. Excel rejects anchors with NaN coordinates outright.
13
+ *
14
+ * Finally we enforce the ChartEx drawing-wrapper invariants that
15
+ * trigger "Removed Part: /xl/drawings/drawingN.xml (Drawing shape)"
16
+ * in production Excel logs:
17
+ *
18
+ * - Any `<cx:chart>` reference MUST live inside an
19
+ * `<mc:AlternateContent>` block. The Microsoft ChartEx schema was
20
+ * never part of the base OOXML spec, so Excel's strict loader
21
+ * requires MC substitution so legacy readers see a fallback shape.
22
+ * - The `<mc:Fallback>` MUST be non-empty. An empty Fallback
23
+ * collapses the anchor to nothing on clients that take that
24
+ * branch, and Excel's strict loader has been observed to reject
25
+ * the drawing even on the Choice branch when it sees the
26
+ * degenerate Fallback.
27
+ * - `<mc:AlternateContent>` lives INSIDE the `<xdr:twoCellAnchor>`
28
+ * shape slot (between `<xdr:to>` and `<xdr:clientData>`), NOT
29
+ * around the whole anchor. Wrapping the entire anchor duplicates
30
+ * `<xdr:from>`/`<xdr:to>` across Choice and Fallback, which Excel
31
+ * rejects even though MC substitution permits it in theory.
32
+ */
33
+ import type { ValidationContext } from "./context.js";
34
+ export declare function checkDrawing(ctx: ValidationContext): void;
@@ -0,0 +1,267 @@
1
+ /**
2
+ * Drawing part structure check.
3
+ *
4
+ * When a drawing file contains `<xdr:graphicFrame>` nodes but neither a
5
+ * classic `<c:chart>` nor a chartEx `<cx:chart>` reference inside them,
6
+ * the graphic frame is dangling — Excel shows a placeholder or drops the
7
+ * frame on load.
8
+ *
9
+ * We also scan anchor coordinates: every anchor must have `from` and
10
+ * `to` child elements, and EMU values (`x`, `y`, `cx`, `cy`,
11
+ * `colOff`, `rowOff`) when present must parse as finite non-negative
12
+ * numbers. Excel rejects anchors with NaN coordinates outright.
13
+ *
14
+ * Finally we enforce the ChartEx drawing-wrapper invariants that
15
+ * trigger "Removed Part: /xl/drawings/drawingN.xml (Drawing shape)"
16
+ * in production Excel logs:
17
+ *
18
+ * - Any `<cx:chart>` reference MUST live inside an
19
+ * `<mc:AlternateContent>` block. The Microsoft ChartEx schema was
20
+ * never part of the base OOXML spec, so Excel's strict loader
21
+ * requires MC substitution so legacy readers see a fallback shape.
22
+ * - The `<mc:Fallback>` MUST be non-empty. An empty Fallback
23
+ * collapses the anchor to nothing on clients that take that
24
+ * branch, and Excel's strict loader has been observed to reject
25
+ * the drawing even on the Choice branch when it sees the
26
+ * degenerate Fallback.
27
+ * - `<mc:AlternateContent>` lives INSIDE the `<xdr:twoCellAnchor>`
28
+ * shape slot (between `<xdr:to>` and `<xdr:clientData>`), NOT
29
+ * around the whole anchor. Wrapping the entire anchor duplicates
30
+ * `<xdr:from>`/`<xdr:to>` across Choice and Fallback, which Excel
31
+ * rejects even though MC substitution permits it in theory.
32
+ */
33
+ import { attrByLocalName, collectDescendantsLocal, findChildLocal, findChildrenLocal, hasDescendantLocal, matchesLocal } from "./xml-utils.js";
34
+ const DRAWING_PATH_RE = /^xl\/drawings\/drawing\d+\.xml$/;
35
+ export function checkDrawing(ctx) {
36
+ for (const [path, entry] of ctx.files()) {
37
+ if (ctx.reporter.capped) {
38
+ return;
39
+ }
40
+ if (entry.type === "directory" || !DRAWING_PATH_RE.test(path)) {
41
+ continue;
42
+ }
43
+ checkSingleDrawing(ctx, path);
44
+ }
45
+ }
46
+ function checkSingleDrawing(ctx, path) {
47
+ const dom = ctx.readDom(path);
48
+ if (!dom) {
49
+ return;
50
+ }
51
+ const root = dom.root;
52
+ // Graphic frame without embedded chart reference.
53
+ for (const gf of collectDescendantsLocal(root, "graphicFrame")) {
54
+ const hasChartFrame = hasDescendantLocal(gf, "chart");
55
+ if (!hasChartFrame) {
56
+ ctx.reporter.error("drawing-graphicFrame-missing-chart", `${path}: xdr:graphicFrame has no c:chart or cx:chart reference`, path);
57
+ }
58
+ }
59
+ // AlternateContent wrap at drawing-root level is the "outer wrap"
60
+ // writer bug — but ONLY for chartEx (`Requires="cx1"` / `"cx"`).
61
+ // Form-control legacy wrappers (`Requires="a14"`) legitimately
62
+ // wrap the whole anchor and Excel handles them fine; those are
63
+ // not the chartEx bug this rule targets. When the whole anchor
64
+ // is wrapped for chartEx, `<xdr:from>` / `<xdr:to>` get
65
+ // duplicated inside Choice and Fallback and Excel rejects the
66
+ // drawing.
67
+ for (const child of root.children) {
68
+ if (child.type === "element" && matchesLocal(child.name, "AlternateContent")) {
69
+ // Only flag if the AlternateContent contains anchor elements —
70
+ // otherwise it might be a root-level extension that's fine.
71
+ if (hasDescendantLocal(child, "twoCellAnchor") ||
72
+ hasDescendantLocal(child, "oneCellAnchor") ||
73
+ hasDescendantLocal(child, "absoluteAnchor")) {
74
+ // Look for a Choice with Requires="cx1" / "cx" — those mean
75
+ // chartEx, which is the bug this rule flags. If the Choice
76
+ // uses any other prefix ("a14" for form controls, etc.) the
77
+ // outer wrap is the Microsoft-sanctioned shape and we skip.
78
+ const choiceRequires = findChoiceRequires(child);
79
+ if (choiceRequires === "cx" || choiceRequires === "cx1") {
80
+ ctx.reporter.error("drawing-chartEx-alternateContent-outer-wrap", `${path}: <mc:AlternateContent> wraps the entire anchor. ` +
81
+ `Move it INSIDE <xdr:twoCellAnchor>, after <xdr:to> and before ` +
82
+ `<xdr:clientData>, so <xdr:from>/<xdr:to> are not duplicated.`, path);
83
+ }
84
+ }
85
+ }
86
+ }
87
+ // Anchors.
88
+ for (const anchorName of ["twoCellAnchor", "oneCellAnchor", "absoluteAnchor"]) {
89
+ for (const anchor of findChildrenLocal(root, anchorName)) {
90
+ checkAnchor(ctx, path, anchor);
91
+ checkChartExWrapping(ctx, path, anchor);
92
+ }
93
+ }
94
+ }
95
+ // -----------------------------------------------------------------------------
96
+ // ChartEx AlternateContent wrapping
97
+ // -----------------------------------------------------------------------------
98
+ /**
99
+ * For every anchor: if it hosts a `<cx:chart>` reference, that
100
+ * reference MUST be wrapped in `<mc:AlternateContent>` (inside the
101
+ * anchor) with a non-empty `<mc:Fallback>`. This mirrors what Excel
102
+ * itself writes for every ChartEx drawing.
103
+ */
104
+ function checkChartExWrapping(ctx, path, anchor) {
105
+ // Collect every `<cx:chart>` descendant of the anchor.
106
+ const chartExRefs = collectDescendantsLocal(anchor, "chart").filter(el => {
107
+ // Distinguish `<cx:chart>` (ChartEx) from `<c:chart>` (classic) by
108
+ // namespace prefix. Both have local name "chart".
109
+ const idx = el.name.indexOf(":");
110
+ return idx !== -1 && el.name.slice(0, idx) === "cx";
111
+ });
112
+ if (chartExRefs.length === 0) {
113
+ return;
114
+ }
115
+ // Is there an `<mc:AlternateContent>` direct child?
116
+ const alternateContent = anchor.children.find((c) => c.type === "element" && matchesLocal(c.name, "AlternateContent"));
117
+ if (!alternateContent) {
118
+ ctx.reporter.error("drawing-chartEx-missing-alternateContent-wrap", `${path}: anchor contains <cx:chart> but has no <mc:AlternateContent> wrapper. ` +
119
+ `ChartEx drawings must place the <xdr:graphicFrame> inside ` +
120
+ `<mc:AlternateContent><mc:Choice>…</mc:Choice><mc:Fallback>…</mc:Fallback></mc:AlternateContent>.`, path);
121
+ return;
122
+ }
123
+ // Fallback must be non-empty.
124
+ const fallback = findChildLocal(alternateContent, "Fallback");
125
+ if (!fallback) {
126
+ ctx.reporter.error("drawing-chartEx-alternateContent-empty-fallback", `${path}: <mc:AlternateContent> has no <mc:Fallback>. ` +
127
+ `Excel's strict loader rejects drawings whose Fallback is missing.`, path);
128
+ return;
129
+ }
130
+ const fallbackHasChildren = fallback.children.some(c => c.type === "element");
131
+ if (!fallbackHasChildren) {
132
+ ctx.reporter.error("drawing-chartEx-alternateContent-empty-fallback", `${path}: <mc:Fallback> is empty. ` +
133
+ `Provide a non-empty legacy shape (e.g. <xdr:sp>) so non-ChartEx ` +
134
+ `readers see a placeholder instead of collapsing the anchor.`, path);
135
+ return;
136
+ }
137
+ // Office creation-id extension. Warning-level: not strictly required
138
+ // by the base OOXML schema, but strict Excel builds have been seen
139
+ // dropping chartEx drawings that lack the extension.
140
+ // Structure: xdr:graphicFrame/xdr:nvGraphicFramePr/xdr:cNvPr/a:extLst/a:ext/a16:creationId
141
+ // We locate the graphicFrame inside Choice and walk down.
142
+ const choice = findChildLocal(alternateContent, "Choice");
143
+ if (!choice) {
144
+ return;
145
+ }
146
+ const graphicFrame = findChildLocal(choice, "graphicFrame");
147
+ if (!graphicFrame) {
148
+ return;
149
+ }
150
+ const nvGraphicFramePr = findChildLocal(graphicFrame, "nvGraphicFramePr");
151
+ if (!nvGraphicFramePr) {
152
+ return;
153
+ }
154
+ const cNvPr = findChildLocal(nvGraphicFramePr, "cNvPr");
155
+ if (!cNvPr) {
156
+ return;
157
+ }
158
+ const extLst = findChildLocal(cNvPr, "extLst");
159
+ const hasCreationId = !!extLst && collectDescendantsLocal(extLst, "creationId").length > 0;
160
+ if (!hasCreationId) {
161
+ ctx.reporter.warning("drawing-chartEx-missing-creationId", `${path}: chartEx drawing <xdr:cNvPr> missing Office creation-id extension ` +
162
+ `(<a:extLst>/<a:ext>/<a16:creationId>). Strict Excel builds may drop the drawing ` +
163
+ `on load without it.`, path);
164
+ }
165
+ }
166
+ function checkAnchor(ctx, path, anchor) {
167
+ const name = anchor.name.includes(":")
168
+ ? anchor.name.slice(anchor.name.lastIndexOf(":") + 1)
169
+ : anchor.name;
170
+ // twoCellAnchor requires from+to; oneCellAnchor requires from+ext;
171
+ // absoluteAnchor requires pos+ext.
172
+ if (name === "twoCellAnchor") {
173
+ if (!findChildLocal(anchor, "from") || !findChildLocal(anchor, "to")) {
174
+ ctx.reporter.error("drawing-anchor-missing", `${path}: ${name} missing from/to`, path);
175
+ return;
176
+ }
177
+ checkCellAnchor(ctx, path, findChildLocal(anchor, "from"));
178
+ checkCellAnchor(ctx, path, findChildLocal(anchor, "to"));
179
+ }
180
+ else if (name === "oneCellAnchor") {
181
+ if (!findChildLocal(anchor, "from") || !findChildLocal(anchor, "ext")) {
182
+ ctx.reporter.error("drawing-anchor-missing", `${path}: ${name} missing from/ext`, path);
183
+ return;
184
+ }
185
+ checkCellAnchor(ctx, path, findChildLocal(anchor, "from"));
186
+ checkExtOrPos(ctx, path, findChildLocal(anchor, "ext"), "ext");
187
+ }
188
+ else if (name === "absoluteAnchor") {
189
+ if (!findChildLocal(anchor, "pos") || !findChildLocal(anchor, "ext")) {
190
+ ctx.reporter.error("drawing-anchor-missing", `${path}: ${name} missing pos/ext`, path);
191
+ return;
192
+ }
193
+ checkExtOrPos(ctx, path, findChildLocal(anchor, "pos"), "pos");
194
+ checkExtOrPos(ctx, path, findChildLocal(anchor, "ext"), "ext");
195
+ }
196
+ }
197
+ function checkCellAnchor(ctx, path, cellAnchor) {
198
+ if (!cellAnchor) {
199
+ return;
200
+ }
201
+ // Children are col / colOff / row / rowOff (as xdr:col etc.). Each is a
202
+ // plain-text integer. A non-integer is typically the result of a writer
203
+ // that stringified `undefined` / `null` — Excel silently repairs the
204
+ // anchor (the "Removed Part: Drawing shape" message) but the file
205
+ // still opens. So we downgrade this to a warning.
206
+ for (const tag of ["col", "colOff", "row", "rowOff"]) {
207
+ const el = findChildLocal(cellAnchor, tag);
208
+ if (!el) {
209
+ continue; // some producers elide zero offsets — tolerate.
210
+ }
211
+ const text = collectText(el).trim();
212
+ const n = parseInt(text, 10);
213
+ if (!Number.isFinite(n)) {
214
+ ctx.reporter.warning("drawing-anchor-invalid-coords", `${path}: anchor ${tag}=${JSON.stringify(text)} is not an integer`, path);
215
+ }
216
+ // Negatives are permitted for colOff/rowOff in some corner cases
217
+ // (e.g. partial-cell anchors slight-past zero). Only warn on NaN.
218
+ }
219
+ }
220
+ function checkExtOrPos(ctx, path, el, kind) {
221
+ if (!el) {
222
+ return;
223
+ }
224
+ const attrs = kind === "ext" ? ["cx", "cy"] : ["x", "y"];
225
+ for (const a of attrs) {
226
+ const v = attrByLocalName(el, a);
227
+ if (v === undefined) {
228
+ continue;
229
+ }
230
+ const n = parseInt(v, 10);
231
+ if (!Number.isFinite(n)) {
232
+ ctx.reporter.warning("drawing-anchor-invalid-coords", `${path}: ${kind} ${a}=${JSON.stringify(v)} is not a valid EMU integer`, path);
233
+ }
234
+ }
235
+ }
236
+ function collectText(el) {
237
+ let out = "";
238
+ for (const child of el.children) {
239
+ if (child.type === "text" || child.type === "cdata") {
240
+ out += child.value;
241
+ }
242
+ else if (child.type === "element") {
243
+ out += collectText(child);
244
+ }
245
+ }
246
+ return out;
247
+ }
248
+ /**
249
+ * Extract the `Requires` value from the first `<mc:Choice>` inside an
250
+ * `<mc:AlternateContent>` block. Used by the outer-wrap rule to skip
251
+ * form-control (`Requires="a14"`) anchors — only chartEx
252
+ * (`Requires="cx1"` / `"cx"`) should trigger the diagnostic.
253
+ *
254
+ * Returns `undefined` when no Choice with a `Requires` attribute is
255
+ * found.
256
+ */
257
+ function findChoiceRequires(ac) {
258
+ for (const child of ac.children) {
259
+ if (child.type === "element" && matchesLocal(child.name, "Choice")) {
260
+ const req = attrByLocalName(child, "Requires");
261
+ if (req !== undefined) {
262
+ return req;
263
+ }
264
+ }
265
+ }
266
+ return undefined;
267
+ }
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Pivot table & pivot cache check.
3
+ *
4
+ * Each `xl/pivotTables/pivotTableN.xml` declares a `cacheId` that must be
5
+ * registered in the workbook's `<pivotCaches>` list; the cache in turn
6
+ * must back a live pivotCacheDefinition/pivotCacheRecords pair.
7
+ *
8
+ * We do a lightweight cross-reference check: (a) every pivot table
9
+ * advertises a cacheId that resolves to a `<pivotCache>` entry in
10
+ * workbook.xml, and (b) each referenced pivotCacheDefinition's rels point
11
+ * at a pivotCacheRecords file that actually exists.
12
+ */
13
+ import type { ValidationContext } from "./context.js";
14
+ export declare function checkPivot(ctx: ValidationContext): void;
@@ -0,0 +1,104 @@
1
+ /**
2
+ * Pivot table & pivot cache check.
3
+ *
4
+ * Each `xl/pivotTables/pivotTableN.xml` declares a `cacheId` that must be
5
+ * registered in the workbook's `<pivotCaches>` list; the cache in turn
6
+ * must back a live pivotCacheDefinition/pivotCacheRecords pair.
7
+ *
8
+ * We do a lightweight cross-reference check: (a) every pivot table
9
+ * advertises a cacheId that resolves to a `<pivotCache>` entry in
10
+ * workbook.xml, and (b) each referenced pivotCacheDefinition's rels point
11
+ * at a pivotCacheRecords file that actually exists.
12
+ */
13
+ import { attrByLocalName, findChildLocal, findChildrenLocal } from "./xml-utils.js";
14
+ const PIVOT_TABLE_RE = /^xl\/pivotTables\/pivotTable\d+\.xml$/;
15
+ const WORKBOOK_PATH = "xl/workbook.xml";
16
+ export function checkPivot(ctx) {
17
+ const declared = collectWorkbookPivotCaches(ctx);
18
+ for (const [path, entry] of ctx.files()) {
19
+ if (ctx.reporter.capped) {
20
+ return;
21
+ }
22
+ if (entry.type === "directory" || !PIVOT_TABLE_RE.test(path)) {
23
+ continue;
24
+ }
25
+ const dom = ctx.readDom(path);
26
+ if (!dom) {
27
+ continue;
28
+ }
29
+ const cacheId = attrByLocalName(dom.root, "cacheId");
30
+ if (cacheId === undefined) {
31
+ ctx.reporter.error("pivot-missing-cacheId", `${path}: missing cacheId attribute`, path);
32
+ continue;
33
+ }
34
+ if (!declared.has(cacheId)) {
35
+ ctx.reporter.error("pivot-cacheId-not-in-workbook", `${path}: cacheId="${cacheId}" is not declared in workbook <pivotCaches>`, path);
36
+ }
37
+ }
38
+ // Each pivotCacheDefinition.rels should point at a pivotCacheRecords file
39
+ // that exists inside the package.
40
+ for (const [path, entry] of ctx.files()) {
41
+ if (ctx.reporter.capped) {
42
+ return;
43
+ }
44
+ if (entry.type === "directory" ||
45
+ !/^xl\/pivotCache\/pivotCacheDefinition\d+\.xml$/.test(path)) {
46
+ continue;
47
+ }
48
+ const defRels = ctx.readRels(defaultRelsPath(path));
49
+ const recordsRel = defRels.rels.find(r => r.type.includes("pivotCacheRecords"));
50
+ if (recordsRel) {
51
+ const resolved = recordsRel.target.startsWith("/")
52
+ ? recordsRel.target.slice(1)
53
+ : joinPath(parentDir(path), recordsRel.target);
54
+ if (!ctx.has(resolved)) {
55
+ ctx.reporter.error("pivot-cacheRecords-missing", `${path}: references missing pivotCacheRecords file ${resolved}`, path);
56
+ }
57
+ }
58
+ }
59
+ }
60
+ function collectWorkbookPivotCaches(ctx) {
61
+ const ids = new Set();
62
+ if (!ctx.has(WORKBOOK_PATH)) {
63
+ return ids;
64
+ }
65
+ const dom = ctx.readDom(WORKBOOK_PATH);
66
+ if (!dom) {
67
+ return ids;
68
+ }
69
+ const pivotCaches = findChildLocal(dom.root, "pivotCaches");
70
+ if (!pivotCaches) {
71
+ return ids;
72
+ }
73
+ for (const pc of findChildrenLocal(pivotCaches, "pivotCache")) {
74
+ const id = attrByLocalName(pc, "cacheId");
75
+ if (id !== undefined) {
76
+ ids.add(id);
77
+ }
78
+ }
79
+ return ids;
80
+ }
81
+ function defaultRelsPath(partPath) {
82
+ const dir = parentDir(partPath);
83
+ const base = partPath.slice(dir.length ? dir.length + 1 : 0);
84
+ return dir ? `${dir}/_rels/${base}.rels` : `_rels/${base}.rels`;
85
+ }
86
+ function parentDir(p) {
87
+ const idx = p.lastIndexOf("/");
88
+ return idx === -1 ? "" : p.slice(0, idx);
89
+ }
90
+ function joinPath(dir, target) {
91
+ // Resolve `./foo/bar` or `../baz` relative to `dir`.
92
+ const parts = dir ? dir.split("/") : [];
93
+ for (const seg of target.split("/")) {
94
+ if (seg === "" || seg === ".") {
95
+ continue;
96
+ }
97
+ if (seg === "..") {
98
+ parts.pop();
99
+ continue;
100
+ }
101
+ parts.push(seg);
102
+ }
103
+ return parts.join("/");
104
+ }