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