@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,213 @@
1
+ /**
2
+ * Reader/writer for Office 365 "threaded comments" (`<ThreadedComments>`
3
+ * XML root) and the workbook-level person directory (`<personList>`).
4
+ *
5
+ * Threaded comments live in a separate part tree from classic VML
6
+ * comments:
7
+ *
8
+ * - `xl/threadedComments/threadedComment{N}.xml` — one per sheet
9
+ * that has threaded comments; referenced from the sheet rels
10
+ * - `xl/persons/person.xml` — workbook-level person directory;
11
+ * referenced from the workbook rels
12
+ *
13
+ * The schema lives in Microsoft's extension namespace
14
+ * `http://schemas.microsoft.com/office/spreadsheetml/2018/threadedcomments`
15
+ * (for comments) and the older `…/2018/threadedcomments` for persons
16
+ * (identical URI tag-shared).
17
+ *
18
+ * This module is intentionally free of runtime xform plumbing —
19
+ * threaded comments are a discrete part with only text content, so
20
+ * two small render/parse functions suffice and plug directly into
21
+ * `xlsx.browser.ts` and `workbook.browser.ts`.
22
+ */
23
+ import { synthGuid } from "../../../utils/guid.js";
24
+ import { findChild, findChildren, parseXml, textContent } from "../../../../xml/dom.js";
25
+ import { xmlEncode, xmlEncodeAttr } from "../../../../xml/encode.js";
26
+ const TC_NAMESPACE = "http://schemas.microsoft.com/office/spreadsheetml/2018/threadedcomments";
27
+ /**
28
+ * Render the threaded-comment part for a single worksheet.
29
+ *
30
+ * Input is a list of `(cellRef, comment)` pairs — the cell ref is
31
+ * stored as the `ref` attribute on each `<threadedComment>`, not on
32
+ * the public {@link ThreadedComment} type (which doesn't carry it so
33
+ * the same structure can be shared between the public API and the
34
+ * XForm).
35
+ *
36
+ * Input order is preserved — Excel relies on parent-child ordering
37
+ * when rendering conversation threads, so callers must keep replies
38
+ * after their parents.
39
+ */
40
+ export function renderThreadedComments(entries) {
41
+ const parts = [];
42
+ parts.push('<?xml version="1.0" encoding="UTF-8" standalone="yes"?>');
43
+ parts.push(`<ThreadedComments xmlns="${TC_NAMESPACE}">`);
44
+ for (const { ref, comment: c } of entries) {
45
+ const id = c.id ?? `{${synthGuid()}}`;
46
+ const attrs = [`ref="${escapeAttr(ref)}"`];
47
+ if (c.date) {
48
+ attrs.push(`dT="${escapeAttr(c.date)}"`);
49
+ }
50
+ attrs.push(`personId="${escapeAttr(c.personId)}"`);
51
+ attrs.push(`id="${escapeAttr(id)}"`);
52
+ if (c.parentId) {
53
+ attrs.push(`parentId="${escapeAttr(c.parentId)}"`);
54
+ }
55
+ if (c.done !== undefined) {
56
+ attrs.push(`done="${c.done ? "1" : "0"}"`);
57
+ }
58
+ parts.push(`<threadedComment ${attrs.join(" ")}>`);
59
+ parts.push(`<text>${escapeXml(c.text)}</text>`);
60
+ if (c.mentions && c.mentions.length > 0) {
61
+ parts.push("<mentions>");
62
+ for (const m of c.mentions) {
63
+ // `startIndex` and `length` are `xsd:unsignedInt` per the
64
+ // threaded-comments schema — negative, non-integer, or
65
+ // non-finite values produce XML that strict validators (and
66
+ // Excel's own reader) reject. Fail loud with a descriptive
67
+ // error rather than ship a broken comment part.
68
+ if (!isNonNegativeInt(m.startIndex)) {
69
+ throw new Error(`Threaded comment mention.startIndex must be a non-negative integer; got ${m.startIndex}.`);
70
+ }
71
+ if (!isNonNegativeInt(m.length)) {
72
+ throw new Error(`Threaded comment mention.length must be a non-negative integer; got ${m.length}.`);
73
+ }
74
+ const mAttrs = [
75
+ `mentionpersonId="${escapeAttr(m.mentionPersonId)}"`,
76
+ `mentionId="${escapeAttr(m.mentionId ?? `{${synthGuid()}}`)}"`,
77
+ `startIndex="${m.startIndex}"`,
78
+ `length="${m.length}"`
79
+ ];
80
+ parts.push(`<mention ${mAttrs.join(" ")}/>`);
81
+ }
82
+ parts.push("</mentions>");
83
+ }
84
+ parts.push(`</threadedComment>`);
85
+ }
86
+ parts.push(`</ThreadedComments>`);
87
+ return parts.join("");
88
+ }
89
+ /**
90
+ * Parse a `xl/threadedComments/threadedComment{N}.xml` payload into
91
+ * structured per-cell entries. Returns an empty array on malformed
92
+ * input — the caller can silently drop threaded comments rather than
93
+ * failing the entire workbook load.
94
+ */
95
+ export function parseThreadedComments(rawXml) {
96
+ let root;
97
+ try {
98
+ root = parseXml(rawXml).root;
99
+ }
100
+ catch {
101
+ return [];
102
+ }
103
+ const result = [];
104
+ for (const el of findChildren(root, "threadedComment")) {
105
+ const ref = el.attributes.ref;
106
+ if (!ref) {
107
+ continue;
108
+ }
109
+ const personId = el.attributes.personId;
110
+ if (!personId) {
111
+ continue;
112
+ }
113
+ const textEl = findChild(el, "text");
114
+ const mentionsEl = findChild(el, "mentions");
115
+ const mentions = mentionsEl
116
+ ? findChildren(mentionsEl, "mention").map(m => ({
117
+ mentionId: m.attributes.mentionId,
118
+ mentionPersonId: m.attributes.mentionpersonId ?? "",
119
+ startIndex: parseInt(m.attributes.startIndex ?? "0", 10),
120
+ length: parseInt(m.attributes.length ?? "0", 10)
121
+ }))
122
+ : [];
123
+ const comment = {
124
+ personId,
125
+ text: textEl ? textContent(textEl) : "",
126
+ ...(el.attributes.id ? { id: el.attributes.id } : {}),
127
+ ...(el.attributes.parentId ? { parentId: el.attributes.parentId } : {}),
128
+ ...(el.attributes.dT ? { date: el.attributes.dT } : {}),
129
+ ...(el.attributes.done !== undefined ? { done: el.attributes.done === "1" } : {}),
130
+ ...(mentions.length > 0 ? { mentions } : {})
131
+ };
132
+ result.push({ ref, comment });
133
+ }
134
+ return result;
135
+ }
136
+ /**
137
+ * Render the workbook-level `xl/persons/person.xml` part.
138
+ */
139
+ export function renderPersonList(persons) {
140
+ const parts = [];
141
+ parts.push('<?xml version="1.0" encoding="UTF-8" standalone="yes"?>');
142
+ parts.push(`<personList xmlns="${TC_NAMESPACE}">`);
143
+ for (const p of persons) {
144
+ const attrs = [
145
+ `displayName="${escapeAttr(p.displayName)}"`,
146
+ `id="${escapeAttr(p.id)}"`
147
+ ];
148
+ if (p.userId !== undefined) {
149
+ attrs.push(`userId="${escapeAttr(p.userId)}"`);
150
+ }
151
+ if (p.providerId !== undefined) {
152
+ attrs.push(`providerId="${escapeAttr(p.providerId)}"`);
153
+ }
154
+ parts.push(`<person ${attrs.join(" ")}/>`);
155
+ }
156
+ parts.push(`</personList>`);
157
+ return parts.join("");
158
+ }
159
+ /**
160
+ * Parse `xl/persons/person.xml` into a {@link ThreadedCommentPerson}
161
+ * list. Missing ids are auto-generated so downstream parts that
162
+ * reference the list don't accidentally collide.
163
+ */
164
+ export function parsePersonList(rawXml) {
165
+ let root;
166
+ try {
167
+ root = parseXml(rawXml).root;
168
+ }
169
+ catch {
170
+ return [];
171
+ }
172
+ return findChildren(root, "person")
173
+ .map(el => {
174
+ const id = el.attributes.id ?? `{${synthGuid()}}`;
175
+ const displayName = el.attributes.displayName ?? "";
176
+ if (!displayName) {
177
+ return undefined;
178
+ }
179
+ const entry = { id, displayName };
180
+ if (el.attributes.userId !== undefined) {
181
+ entry.userId = el.attributes.userId;
182
+ }
183
+ if (el.attributes.providerId !== undefined) {
184
+ entry.providerId = el.attributes.providerId;
185
+ }
186
+ return entry;
187
+ })
188
+ .filter((x) => x !== undefined);
189
+ }
190
+ function escapeXml(value) {
191
+ // Route through the canonical encoder so the writer strips
192
+ // XML-illegal control characters / lone surrogates in user-supplied
193
+ // comment text. The previous manual `.replace` chain only handled
194
+ // `& < >` and left every other hazard untouched — e.g. a pasted
195
+ // `\u0008` corrupted the whole `<ThreadedComments>` part on save.
196
+ return xmlEncode(value);
197
+ }
198
+ function escapeAttr(value) {
199
+ // Attribute values additionally need `\t \n \r` encoded as
200
+ // numeric character references so XML attribute-value normalisation
201
+ // doesn't collapse them to literal spaces; a threaded comment
202
+ // `personId` / `id` GUID shouldn't ever contain whitespace but the
203
+ // `ref` / `displayName` attributes can carry user input.
204
+ return xmlEncodeAttr(value);
205
+ }
206
+ /**
207
+ * Whether `v` is a finite non-negative integer suitable for the
208
+ * `xsd:unsignedInt` attributes used by the threaded-comments schema.
209
+ * Rejects `NaN`, `±Infinity`, negative numbers, and fractional values.
210
+ */
211
+ function isNonNegativeInt(v) {
212
+ return typeof v === "number" && Number.isFinite(v) && v >= 0 && Math.floor(v) === v;
213
+ }
@@ -1,4 +1,4 @@
1
- import { OOXML_PATHS, commentsPathFromName, ctrlPropPath, drawingPath, externalLinkPath, pivotCacheDefinitionPath, pivotCacheRecordsPath, pivotTablePath, tablePath, toContentTypesPartName, worksheetPath } from "../../../utils/ooxml-paths.js";
1
+ import { OOXML_PATHS, chartsheetPath, commentsPathFromName, ctrlPropPath, drawingPath, externalLinkPath, chartPath, chartUserShapesPath, chartExPath, chartStylePath, chartColorsPath, chartExStylePath, chartExColorsPath, pivotCacheDefinitionPath, pivotCacheRecordsPath, pivotTablePath, tablePath, toContentTypesPartName, worksheetPath } from "../../../utils/ooxml-paths.js";
2
2
  import { BaseXform } from "../base-xform.js";
3
3
  import { StdDocAttributes } from "../../../../xml/writer.js";
4
4
  // used for rendering the [Content_Types].xml file
@@ -35,6 +35,14 @@ class ContentTypesXform extends BaseXform {
35
35
  ContentType: "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml"
36
36
  });
37
37
  });
38
+ if (model.chartsheets) {
39
+ model.chartsheets.forEach((cs) => {
40
+ xmlStream.leafNode("Override", {
41
+ PartName: toContentTypesPartName(chartsheetPath(cs.sheetNo)),
42
+ ContentType: "application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml"
43
+ });
44
+ });
45
+ }
38
46
  if ((model.pivotTables ?? []).length) {
39
47
  // R9-B6: Deduplicate cache content types by cacheId. When multiple pivot tables
40
48
  // share the same cache, the cache definition/records files are written only once.
@@ -122,11 +130,105 @@ class ContentTypesXform extends BaseXform {
122
130
  });
123
131
  });
124
132
  }
125
- // VML extension is needed for comments, form controls, or header watermarks
133
+ if (model.chartEntries) {
134
+ for (const [n, entry] of Object.entries(model.chartEntries)) {
135
+ xmlStream.leafNode("Override", {
136
+ PartName: toContentTypesPartName(chartPath(n)),
137
+ ContentType: "application/vnd.openxmlformats-officedocument.drawingml.chart+xml"
138
+ });
139
+ if (entry?.userShapesXml) {
140
+ // `c:userShapes` overlay drawings use the same DrawingML
141
+ // content type as worksheet drawings — Excel distinguishes
142
+ // them via the relationship type, not the content-type.
143
+ xmlStream.leafNode("Override", {
144
+ PartName: toContentTypesPartName(chartUserShapesPath(n)),
145
+ ContentType: "application/vnd.openxmlformats-officedocument.drawing+xml"
146
+ });
147
+ }
148
+ }
149
+ }
150
+ // Track every ChartEx PartName already emitted so the structured
151
+ // and raw entry loops can't duplicate an Override. Open Packaging
152
+ // mandates at most one `<Override>` per PartName — a duplicate
153
+ // surfaces as the "damaged workbook" dialog in Excel. Using an
154
+ // explicit Set also guards against any future drift in the key
155
+ // shape between `chartExEntries` and `chartExStructuredEntries`.
156
+ const chartExPartNamesEmitted = new Set();
157
+ if (model.chartExEntries) {
158
+ for (const n of Object.keys(model.chartExEntries)) {
159
+ const partName = toContentTypesPartName(chartExPath(n));
160
+ if (chartExPartNamesEmitted.has(partName)) {
161
+ continue;
162
+ }
163
+ chartExPartNamesEmitted.add(partName);
164
+ xmlStream.leafNode("Override", {
165
+ PartName: partName,
166
+ // Microsoft's canonical content type for ChartEx parts is
167
+ // `application/vnd.ms-office.chartex+xml` — ALL lowercase.
168
+ // Earlier versions of this library emitted the camel-cased
169
+ // `chartEx+xml` variant; Excel 2016+ is strict about this and
170
+ // drops any chartEx whose content-type doesn't match exactly,
171
+ // which cascades into "Removed Part: /xl/drawings/drawingN.xml
172
+ // (Drawing shape)" because the parent drawing's r:id pointer
173
+ // is left dangling.
174
+ ContentType: "application/vnd.ms-office.chartex+xml"
175
+ });
176
+ }
177
+ }
178
+ if (model.chartExStructuredEntries) {
179
+ for (const n of Object.keys(model.chartExStructuredEntries)) {
180
+ const partName = toContentTypesPartName(chartExPath(n));
181
+ if (chartExPartNamesEmitted.has(partName)) {
182
+ continue;
183
+ }
184
+ chartExPartNamesEmitted.add(partName);
185
+ xmlStream.leafNode("Override", {
186
+ PartName: partName,
187
+ ContentType: "application/vnd.ms-office.chartex+xml"
188
+ });
189
+ }
190
+ }
191
+ if (model.chartStyles) {
192
+ for (const n of Object.keys(model.chartStyles)) {
193
+ xmlStream.leafNode("Override", {
194
+ PartName: toContentTypesPartName(chartStylePath(n)),
195
+ ContentType: "application/vnd.ms-office.chartstyle+xml"
196
+ });
197
+ }
198
+ }
199
+ if (model.chartColors) {
200
+ for (const n of Object.keys(model.chartColors)) {
201
+ xmlStream.leafNode("Override", {
202
+ PartName: toContentTypesPartName(chartColorsPath(n)),
203
+ ContentType: "application/vnd.ms-office.chartcolorstyle+xml"
204
+ });
205
+ }
206
+ }
207
+ if (model.chartExStyles) {
208
+ for (const n of Object.keys(model.chartExStyles)) {
209
+ xmlStream.leafNode("Override", {
210
+ PartName: toContentTypesPartName(chartExStylePath(n)),
211
+ ContentType: "application/vnd.ms-office.chartstyle+xml"
212
+ });
213
+ }
214
+ }
215
+ if (model.chartExColors) {
216
+ for (const n of Object.keys(model.chartExColors)) {
217
+ xmlStream.leafNode("Override", {
218
+ PartName: toContentTypesPartName(chartExColorsPath(n)),
219
+ ContentType: "application/vnd.ms-office.chartcolorstyle+xml"
220
+ });
221
+ }
222
+ }
223
+ // VML extension is needed for comments, form controls, header
224
+ // watermarks, OR any chartsheet that carries a `<legacyDrawing>`
225
+ // reference — that last case pins a VML part body through the
226
+ // package without the worksheet loop declaring the extension.
126
227
  const hasComments = model.commentRefs && model.commentRefs.length > 0;
127
228
  const hasFormControls = model.formControlRefs && model.formControlRefs.length > 0;
128
229
  const hasHeaderWatermark = model.hasHeaderWatermark === true;
129
- if (hasComments || hasFormControls || hasHeaderWatermark) {
230
+ const hasChartsheetVml = model.hasChartsheetVml === true;
231
+ if (hasComments || hasFormControls || hasHeaderWatermark || hasChartsheetVml) {
130
232
  xmlStream.leafNode("Default", {
131
233
  Extension: "vml",
132
234
  ContentType: "application/vnd.openxmlformats-officedocument.vmlDrawing"
@@ -148,14 +250,51 @@ class ContentTypesXform extends BaseXform {
148
250
  });
149
251
  }
150
252
  }
151
- // Add passthrough content types (charts, etc.)
152
- if (model.passthroughContentTypes) {
153
- for (const { partName, contentType } of model.passthroughContentTypes) {
154
- xmlStream.leafNode("Override", {
155
- PartName: toContentTypesPartName(partName),
156
- ContentType: contentType
157
- });
158
- }
253
+ // Office 365 threaded comments: each worksheet that has them gets
254
+ // its own override, and the workbook-level person directory gets
255
+ // one more. Writers populate `model.threadedCommentSheetIds` with
256
+ // the worksheet ids that need parts; absent entry means no
257
+ // threaded comments on that sheet.
258
+ const threadedCommentSheetIds = model.threadedCommentSheetIds ?? [];
259
+ for (const sheetId of threadedCommentSheetIds) {
260
+ xmlStream.leafNode("Override", {
261
+ PartName: toContentTypesPartName(`xl/threadedComments/threadedComment${sheetId}.xml`),
262
+ ContentType: "application/vnd.ms-excel.threadedcomments+xml"
263
+ });
264
+ }
265
+ if (model.hasPersons) {
266
+ xmlStream.leafNode("Override", {
267
+ PartName: toContentTypesPartName("xl/persons/person.xml"),
268
+ ContentType: "application/vnd.ms-excel.person+xml"
269
+ });
270
+ }
271
+ // Raw-passthrough parts for slicers / timelines. The path lists
272
+ // were populated in `prepareModel` from the workbook's captured
273
+ // raw parts. Content type URIs come from MS-XLSX §2.1.32 and the
274
+ // 2011 timeline extension addendum.
275
+ for (const path of model.slicerPartPaths ?? []) {
276
+ xmlStream.leafNode("Override", {
277
+ PartName: toContentTypesPartName(path),
278
+ ContentType: "application/vnd.ms-excel.slicer+xml"
279
+ });
280
+ }
281
+ for (const path of model.slicerCachePartPaths ?? []) {
282
+ xmlStream.leafNode("Override", {
283
+ PartName: toContentTypesPartName(path),
284
+ ContentType: "application/vnd.ms-excel.slicerCache+xml"
285
+ });
286
+ }
287
+ for (const path of model.timelinePartPaths ?? []) {
288
+ xmlStream.leafNode("Override", {
289
+ PartName: toContentTypesPartName(path),
290
+ ContentType: "application/vnd.ms-excel.timeline+xml"
291
+ });
292
+ }
293
+ for (const path of model.timelineCachePartPaths ?? []) {
294
+ xmlStream.leafNode("Override", {
295
+ PartName: toContentTypesPartName(path),
296
+ ContentType: "application/vnd.ms-excel.timelineCache+xml"
297
+ });
159
298
  }
160
299
  xmlStream.leafNode("Override", {
161
300
  PartName: toContentTypesPartName(OOXML_PATHS.docPropsCore),
@@ -1,6 +1,7 @@
1
1
  import { BaseXform } from "../base-xform.js";
2
2
  import { BaseCellAnchorXform } from "./base-cell-anchor-xform.js";
3
3
  import { ExtXform } from "./ext-xform.js";
4
+ import { GraphicFrameXform } from "./graphic-frame-xform.js";
4
5
  import { PicXform } from "./pic-xform.js";
5
6
  import { StaticXform } from "../static-xform.js";
6
7
  /** https://en.wikipedia.org/wiki/Office_Open_XML_file_formats#DrawingML */
@@ -60,6 +61,15 @@ class AbsoluteAnchorXform extends BaseCellAnchorXform {
60
61
  "xdr:pos": new PosXform(),
61
62
  "xdr:ext": new ExtXform({ tag: "xdr:ext" }),
62
63
  "xdr:pic": new PicXform(),
64
+ // `xdr:graphicFrame` carries the chart / embedded object payload
65
+ // for absolute-anchor sheet drawings. The oneCell / twoCell
66
+ // counterparts already handled it; the absolute branch was
67
+ // pic-only, so a chart authored with an absolute anchor (or
68
+ // programmatically constructed via `{ pos, ext }`) silently
69
+ // dropped its graphicFrame on write — the drawing XML emitted
70
+ // `<xdr:absoluteAnchor><xdr:pos/><xdr:ext/><xdr:clientData/></xdr:absoluteAnchor>`
71
+ // with no chart reference, so the anchor was ignored on open.
72
+ "xdr:graphicFrame": new GraphicFrameXform(),
63
73
  "xdr:clientData": new StaticXform({ tag: "xdr:clientData" })
64
74
  };
65
75
  }
@@ -70,6 +80,9 @@ class AbsoluteAnchorXform extends BaseCellAnchorXform {
70
80
  if (model.picture) {
71
81
  this.map["xdr:pic"].prepare(model.picture, options);
72
82
  }
83
+ else if (model.graphicFrame) {
84
+ this.map["xdr:graphicFrame"].prepare(model.graphicFrame, options);
85
+ }
73
86
  }
74
87
  render(xmlStream, model) {
75
88
  xmlStream.openNode(this.tag);
@@ -78,6 +91,9 @@ class AbsoluteAnchorXform extends BaseCellAnchorXform {
78
91
  if (model.picture) {
79
92
  this.map["xdr:pic"].render(xmlStream, model.picture);
80
93
  }
94
+ else if (model.graphicFrame) {
95
+ this.map["xdr:graphicFrame"].render(xmlStream, model.graphicFrame);
96
+ }
81
97
  this.map["xdr:clientData"].render(xmlStream, {});
82
98
  xmlStream.closeNode();
83
99
  }
@@ -93,13 +109,16 @@ class AbsoluteAnchorXform extends BaseCellAnchorXform {
93
109
  this.model.range.pos = this.map["xdr:pos"].model;
94
110
  this.model.range.ext = this.map["xdr:ext"].model;
95
111
  this.model.picture = this.map["xdr:pic"].model;
112
+ this.model.graphicFrame = this.map["xdr:graphicFrame"].model;
96
113
  return false;
97
114
  default:
98
115
  return true;
99
116
  }
100
117
  }
101
118
  reconcile(model, options) {
102
- model.medium = this.reconcilePicture(model.picture, options);
119
+ if (model.picture) {
120
+ model.medium = this.reconcilePicture(model.picture, options);
121
+ }
103
122
  }
104
123
  }
105
124
  export { AbsoluteAnchorXform };
@@ -10,7 +10,7 @@ class BaseCellAnchorXform extends BaseXform {
10
10
  this.reset();
11
11
  this.model = {
12
12
  range: {
13
- editAs: node.attributes.editAs ?? "oneCell"
13
+ editAs: node.attributes.editAs
14
14
  }
15
15
  };
16
16
  break;
@@ -14,6 +14,15 @@ function getAnchorType(model) {
14
14
  class DrawingXform extends BaseXform {
15
15
  constructor() {
16
16
  super();
17
+ // mc:AlternateContent parse state
18
+ this._inAlternateContent = false;
19
+ this._acDepth = 0;
20
+ this._inChoice = false;
21
+ this._inFallback = false;
22
+ this._fallbackDepth = 0;
23
+ this._choiceRequires = undefined;
24
+ /** Number of anchors before entering mc:AlternateContent — used to tag new anchors */
25
+ this._anchorCountBeforeAC = 0;
17
26
  this.map = {
18
27
  "xdr:twoCellAnchor": new TwoCellAnchorXform(),
19
28
  "xdr:oneCellAnchor": new OneCellAnchorXform(),
@@ -34,7 +43,27 @@ class DrawingXform extends BaseXform {
34
43
  render(xmlStream, model) {
35
44
  const renderModel = model || this.model;
36
45
  xmlStream.openXml(StdDocAttributes);
37
- xmlStream.openNode(this.tag, DrawingXform.DRAWING_ATTRIBUTES);
46
+ // `<xdr:wsDr>` must declare every namespace prefix any descendant
47
+ // uses. Inline `xmlns:mc=…` declarations on a deeply nested
48
+ // `<mc:AlternateContent>` are legal XML and strictly sufficient for
49
+ // the parser, but Microsoft Excel's **drawing validator** walks the
50
+ // anchor tree ahead of the parser and rejects the whole drawing
51
+ // when it encounters an element whose prefix was not pre-declared
52
+ // on the wsDr root ("Removed Part: /xl/drawings/drawingN.xml
53
+ // part. (Drawing shape)"). Excel's own output for any drawing that
54
+ // hosts ChartEx content therefore declares all six prefixes —
55
+ // `xdr`, `a`, `r`, `c`, `mc`, `cx` — at the root.
56
+ //
57
+ // Switch to the extended namespace set whenever any anchor carries
58
+ // `alternateContent` metadata (form-control shapes, ChartEx
59
+ // charts, and their `cx1` variants all use the same wrapper). The
60
+ // bare `xdr` + `a` set is correct for "legacy only" drawings and
61
+ // round-trips byte-for-byte with Excel's output for those files.
62
+ const needsMcNamespaces = renderModel.anchors.some(a => !!a?.alternateContent);
63
+ const rootAttrs = needsMcNamespaces
64
+ ? DrawingXform.DRAWING_ATTRIBUTES_WITH_MC
65
+ : DrawingXform.DRAWING_ATTRIBUTES;
66
+ xmlStream.openNode(this.tag, rootAttrs);
38
67
  renderModel.anchors.forEach(item => {
39
68
  const anchor = this.map[item.anchorType];
40
69
  anchor.render(xmlStream, item);
@@ -42,6 +71,12 @@ class DrawingXform extends BaseXform {
42
71
  xmlStream.closeNode();
43
72
  }
44
73
  parseOpen(node) {
74
+ // Inside mc:Fallback — skip everything
75
+ if (this._inFallback) {
76
+ this._fallbackDepth++;
77
+ return true;
78
+ }
79
+ // Delegate to active parser
45
80
  if (this.parser) {
46
81
  this.parser.parseOpen(node);
47
82
  return true;
@@ -49,11 +84,29 @@ class DrawingXform extends BaseXform {
49
84
  switch (node.name) {
50
85
  case this.tag:
51
86
  this.reset();
52
- this.model = {
53
- anchors: []
54
- };
87
+ this.model = { anchors: [] };
88
+ break;
89
+ case "mc:AlternateContent":
90
+ this._acDepth = (this._acDepth ?? 0) + 1;
91
+ if (this._acDepth === 1) {
92
+ this._inAlternateContent = true;
93
+ this._anchorCountBeforeAC = this.model.anchors.length;
94
+ }
95
+ break;
96
+ case "mc:Choice":
97
+ if (this._inAlternateContent) {
98
+ this._inChoice = true;
99
+ this._choiceRequires = node.attributes?.Requires;
100
+ }
101
+ break;
102
+ case "mc:Fallback":
103
+ if (this._inAlternateContent) {
104
+ this._inFallback = true;
105
+ this._fallbackDepth = 1;
106
+ }
55
107
  break;
56
108
  default:
109
+ // Normal anchor dispatch (works both inside mc:Choice and at top level)
57
110
  this.parser = this.map[node.name];
58
111
  if (this.parser) {
59
112
  this.parser.parseOpen(node);
@@ -63,11 +116,22 @@ class DrawingXform extends BaseXform {
63
116
  return true;
64
117
  }
65
118
  parseText(text) {
119
+ if (this._inFallback) {
120
+ return;
121
+ }
66
122
  if (this.parser) {
67
123
  this.parser.parseText(text);
68
124
  }
69
125
  }
70
126
  parseClose(name) {
127
+ // Inside mc:Fallback — skip until closed
128
+ if (this._inFallback) {
129
+ this._fallbackDepth--;
130
+ if (this._fallbackDepth === 0) {
131
+ this._inFallback = false;
132
+ }
133
+ return true;
134
+ }
71
135
  if (this.parser) {
72
136
  if (!this.parser.parseClose(name)) {
73
137
  this.model.anchors.push(this.parser.model);
@@ -78,8 +142,26 @@ class DrawingXform extends BaseXform {
78
142
  switch (name) {
79
143
  case this.tag:
80
144
  return false;
145
+ case "mc:AlternateContent":
146
+ this._acDepth = (this._acDepth ?? 0) - 1;
147
+ if (this._acDepth <= 0) {
148
+ // Tag any anchors added during this mc:AlternateContent with alternateContent info
149
+ if (this._inAlternateContent && this._choiceRequires) {
150
+ const anchors = this.model.anchors;
151
+ for (let i = this._anchorCountBeforeAC; i < anchors.length; i++) {
152
+ anchors[i].alternateContent = { requires: this._choiceRequires };
153
+ }
154
+ }
155
+ this._inAlternateContent = false;
156
+ this._inChoice = false;
157
+ this._choiceRequires = undefined;
158
+ this._acDepth = 0;
159
+ }
160
+ return true;
161
+ case "mc:Choice":
162
+ this._inChoice = false;
163
+ return true;
81
164
  default:
82
- // could be some unrecognised tags
83
165
  return true;
84
166
  }
85
167
  }
@@ -101,4 +183,26 @@ DrawingXform.DRAWING_ATTRIBUTES = {
101
183
  "xmlns:xdr": "http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing",
102
184
  "xmlns:a": "http://schemas.openxmlformats.org/drawingml/2006/main"
103
185
  };
186
+ /**
187
+ * Extended namespace set used when the drawing contains anchors
188
+ * wrapped in `<mc:AlternateContent>` — the ChartEx case. Excel's
189
+ * strict loader requires the `mc`, `r`, `c`, and `cx` prefixes at
190
+ * the root of `<xdr:wsDr>` before it will parse `<mc:Choice>` /
191
+ * `<cx:chart>` descendants. Declaring them only inside the inner
192
+ * `<mc:AlternateContent>` element (as earlier versions did) made
193
+ * Excel reject the drawing and report "Removed Part:
194
+ * /xl/drawings/drawingN.xml (Drawing shape)".
195
+ *
196
+ * Mirrors what Excel itself emits when it writes a drawing that
197
+ * hosts a ChartEx chart — see `__tests__/data/workbook-roundtrip-
198
+ * chartex.xlsx` (fixtures authored by Excel 2016+).
199
+ */
200
+ DrawingXform.DRAWING_ATTRIBUTES_WITH_MC = {
201
+ "xmlns:xdr": "http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing",
202
+ "xmlns:a": "http://schemas.openxmlformats.org/drawingml/2006/main",
203
+ "xmlns:r": "http://schemas.openxmlformats.org/officeDocument/2006/relationships",
204
+ "xmlns:c": "http://schemas.openxmlformats.org/drawingml/2006/chart",
205
+ "xmlns:mc": "http://schemas.openxmlformats.org/markup-compatibility/2006",
206
+ "xmlns:cx": "http://schemas.microsoft.com/office/drawing/2014/chartex"
207
+ };
104
208
  export { DrawingXform };