@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,225 @@
1
+ /**
2
+ * GraphicFrameXform — handles `xdr:graphicFrame` elements in drawing XML.
3
+ *
4
+ * A graphicFrame is the container for embedded objects such as charts.
5
+ * The OOXML structure:
6
+ *
7
+ * <xdr:graphicFrame macro="">
8
+ * <xdr:nvGraphicFramePr>
9
+ * <xdr:cNvPr id="2" name="Chart 1"/>
10
+ * <xdr:cNvGraphicFramePr/>
11
+ * </xdr:nvGraphicFramePr>
12
+ * <xdr:xfrm>
13
+ * <a:off x="0" y="0"/>
14
+ * <a:ext cx="0" cy="0"/>
15
+ * </xdr:xfrm>
16
+ * <a:graphic>
17
+ * <a:graphicData uri="http://schemas.openxmlformats.org/drawingml/2006/chart">
18
+ * <c:chart xmlns:c="..." xmlns:r="..." r:id="rId1"/>
19
+ * </a:graphicData>
20
+ * </a:graphic>
21
+ * </xdr:graphicFrame>
22
+ */
23
+ import { BaseXform } from "../base-xform.js";
24
+ import { uuidV4 } from "../../../../../utils/uuid.js";
25
+ const CHART_URI = "http://schemas.openxmlformats.org/drawingml/2006/chart";
26
+ const CHART_EX_URI = "http://schemas.microsoft.com/office/drawing/2014/chartex";
27
+ // URI identifying the Office `creationId` extension registered on
28
+ // `xdr:cNvPr`. This GUID is the Microsoft-assigned registry value
29
+ // for the extension — every Office-authored drawing carries the
30
+ // same uri on this element.
31
+ const CREATION_ID_EXT_URI = "{FF2B5EF4-FFF2-40B4-BE49-F238E27FC236}";
32
+ class GraphicFrameXform extends BaseXform {
33
+ constructor() {
34
+ super(...arguments);
35
+ // SAX parse state
36
+ this._inNvPr = false;
37
+ this._inGraphicData = false;
38
+ /** Raw XML capture for a:extLst inside xdr:cNvPr */
39
+ this._extLstCapture = null;
40
+ }
41
+ get tag() {
42
+ return "xdr:graphicFrame";
43
+ }
44
+ prepare(model, options) {
45
+ if (model.index === undefined) {
46
+ model.index = options.index + 1;
47
+ }
48
+ }
49
+ render(xmlStream, model) {
50
+ xmlStream.openNode(this.tag, { macro: "" });
51
+ // Non-visual properties
52
+ xmlStream.openNode("xdr:nvGraphicFramePr");
53
+ // Microsoft Excel starts `xdr:cNvPr/@id` at 2 (id 1 is
54
+ // reserved for the anchor's own non-visual drawing id slot
55
+ // internal to Office's drawing engine). Mirror the convention
56
+ // here so freshly-authored drawings round-trip byte-for-byte
57
+ // against Excel's output. Loaded files retain whatever id they
58
+ // carried at parse time via `model.index`.
59
+ const cNvPrId = model.index ?? 2;
60
+ const cNvPrName = model.name ?? `Chart ${cNvPrId}`;
61
+ if (model.cNvPrExtLst) {
62
+ xmlStream.openNode("xdr:cNvPr", {
63
+ id: cNvPrId,
64
+ name: cNvPrName
65
+ });
66
+ xmlStream.writeRaw(model.cNvPrExtLst);
67
+ xmlStream.closeNode(); // xdr:cNvPr
68
+ }
69
+ else if (model.isChartEx) {
70
+ // ChartEx drawings — auto-generate Microsoft's standard
71
+ // `<a:extLst>` with an `<a16:creationId>` extension so
72
+ // Excel 2019+ can track the drawing across sessions.
73
+ // Without this extension, strict Excel builds have been
74
+ // observed to reject the drawing part on load with
75
+ // "Removed Part: /xl/drawings/drawingN.xml (Drawing shape)"
76
+ // even when the chartEx reference inside is otherwise
77
+ // valid. A random UUID suffices — the id only has to be
78
+ // stable within a given saved file; it isn't a content
79
+ // address.
80
+ xmlStream.openNode("xdr:cNvPr", {
81
+ id: cNvPrId,
82
+ name: cNvPrName
83
+ });
84
+ xmlStream.openNode("a:extLst");
85
+ xmlStream.openNode("a:ext", { uri: CREATION_ID_EXT_URI });
86
+ xmlStream.leafNode("a16:creationId", {
87
+ "xmlns:a16": "http://schemas.microsoft.com/office/drawing/2014/main",
88
+ id: `{${uuidV4().toUpperCase()}}`
89
+ });
90
+ xmlStream.closeNode(); // a:ext
91
+ xmlStream.closeNode(); // a:extLst
92
+ xmlStream.closeNode(); // xdr:cNvPr
93
+ }
94
+ else {
95
+ xmlStream.leafNode("xdr:cNvPr", {
96
+ id: cNvPrId,
97
+ name: cNvPrName
98
+ });
99
+ }
100
+ xmlStream.leafNode("xdr:cNvGraphicFramePr");
101
+ xmlStream.closeNode(); // xdr:nvGraphicFramePr
102
+ // Transform (position/size handled by anchor, so use zeros)
103
+ xmlStream.openNode("xdr:xfrm");
104
+ xmlStream.leafNode("a:off", { x: 0, y: 0 });
105
+ xmlStream.leafNode("a:ext", { cx: 0, cy: 0 });
106
+ xmlStream.closeNode(); // xdr:xfrm
107
+ // Graphic
108
+ xmlStream.openNode("a:graphic");
109
+ if (model.isChartEx) {
110
+ xmlStream.openNode("a:graphicData", { uri: CHART_EX_URI });
111
+ xmlStream.leafNode("cx:chart", {
112
+ "xmlns:cx": CHART_EX_URI,
113
+ "xmlns:r": "http://schemas.openxmlformats.org/officeDocument/2006/relationships",
114
+ "r:id": model.rId
115
+ });
116
+ }
117
+ else {
118
+ xmlStream.openNode("a:graphicData", {
119
+ uri: model.graphicDataUri ?? CHART_URI
120
+ });
121
+ xmlStream.leafNode("c:chart", {
122
+ "xmlns:c": "http://schemas.openxmlformats.org/drawingml/2006/chart",
123
+ "xmlns:r": "http://schemas.openxmlformats.org/officeDocument/2006/relationships",
124
+ "r:id": model.rId
125
+ });
126
+ }
127
+ xmlStream.closeNode(); // a:graphicData
128
+ xmlStream.closeNode(); // a:graphic
129
+ xmlStream.closeNode(); // xdr:graphicFrame
130
+ }
131
+ parseOpen(node) {
132
+ // Raw XML capture mode for extLst
133
+ if (this._extLstCapture) {
134
+ const attrs = Object.entries(node.attributes || {})
135
+ .map(([k, v]) => ` ${k}="${v}"`)
136
+ .join("");
137
+ if (node.isSelfClosing) {
138
+ this._extLstCapture.parts.push(`<${node.name}${attrs}/>`);
139
+ this._extLstCapture.skipNextClose = true;
140
+ }
141
+ else {
142
+ this._extLstCapture.parts.push(`<${node.name}${attrs}>`);
143
+ this._extLstCapture.depth++;
144
+ }
145
+ return true;
146
+ }
147
+ switch (node.name) {
148
+ case this.tag:
149
+ this.reset();
150
+ this.model = {};
151
+ this._extLstCapture = null;
152
+ break;
153
+ case "xdr:cNvPr":
154
+ this._inNvPr = true;
155
+ this.model.index = parseInt(node.attributes.id, 10) || undefined;
156
+ this.model.name = node.attributes.name;
157
+ break;
158
+ case "a:extLst":
159
+ if (this._inNvPr) {
160
+ // Start capturing raw XML
161
+ const attrs = Object.entries(node.attributes || {})
162
+ .map(([k, v]) => ` ${k}="${v}"`)
163
+ .join("");
164
+ this._extLstCapture = {
165
+ depth: 1,
166
+ parts: [`<a:extLst${attrs}>`],
167
+ skipNextClose: false
168
+ };
169
+ return true;
170
+ }
171
+ break;
172
+ case "a:graphicData":
173
+ this._inGraphicData = true;
174
+ this.model.graphicDataUri = node.attributes.uri;
175
+ break;
176
+ case "c:chart":
177
+ if (this._inGraphicData) {
178
+ this.model.rId = node.attributes["r:id"];
179
+ }
180
+ break;
181
+ case "cx:chart":
182
+ if (this._inGraphicData) {
183
+ this.model.rId = node.attributes["r:id"];
184
+ this.model.isChartEx = true;
185
+ }
186
+ break;
187
+ default:
188
+ break;
189
+ }
190
+ return true;
191
+ }
192
+ parseText(text) {
193
+ if (this._extLstCapture && text) {
194
+ this._extLstCapture.parts.push(text);
195
+ }
196
+ }
197
+ parseClose(name) {
198
+ if (this._extLstCapture) {
199
+ if (this._extLstCapture.skipNextClose) {
200
+ this._extLstCapture.skipNextClose = false;
201
+ return true;
202
+ }
203
+ this._extLstCapture.parts.push(`</${name}>`);
204
+ this._extLstCapture.depth--;
205
+ if (this._extLstCapture.depth === 0) {
206
+ this.model.cNvPrExtLst = this._extLstCapture.parts.join("");
207
+ this._extLstCapture = null;
208
+ }
209
+ return true;
210
+ }
211
+ switch (name) {
212
+ case this.tag:
213
+ return false;
214
+ case "xdr:cNvPr":
215
+ this._inNvPr = false;
216
+ return true;
217
+ case "a:graphicData":
218
+ this._inGraphicData = false;
219
+ return true;
220
+ default:
221
+ return true;
222
+ }
223
+ }
224
+ }
225
+ export { GraphicFrameXform };
@@ -1,6 +1,7 @@
1
1
  import { BaseCellAnchorXform } from "./base-cell-anchor-xform.js";
2
2
  import { CellPositionXform } from "./cell-position-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
  class OneCellAnchorXform extends BaseCellAnchorXform {
@@ -10,6 +11,7 @@ class OneCellAnchorXform extends BaseCellAnchorXform {
10
11
  "xdr:from": new CellPositionXform({ tag: "xdr:from" }),
11
12
  "xdr:ext": new ExtXform({ tag: "xdr:ext" }),
12
13
  "xdr:pic": new PicXform(),
14
+ "xdr:graphicFrame": new GraphicFrameXform(),
13
15
  "xdr:clientData": new StaticXform({ tag: "xdr:clientData" })
14
16
  };
15
17
  }
@@ -17,13 +19,23 @@ class OneCellAnchorXform extends BaseCellAnchorXform {
17
19
  return "xdr:oneCellAnchor";
18
20
  }
19
21
  prepare(model, options) {
20
- this.map["xdr:pic"].prepare(model.picture, options);
22
+ if (model.picture) {
23
+ this.map["xdr:pic"].prepare(model.picture, options);
24
+ }
25
+ else if (model.graphicFrame) {
26
+ this.map["xdr:graphicFrame"].prepare(model.graphicFrame, options);
27
+ }
21
28
  }
22
29
  render(xmlStream, model) {
23
30
  xmlStream.openNode(this.tag, { editAs: model.range.editAs ?? "oneCell" });
24
31
  this.map["xdr:from"].render(xmlStream, model.range.tl);
25
32
  this.map["xdr:ext"].render(xmlStream, model.range.ext);
26
- this.map["xdr:pic"].render(xmlStream, model.picture);
33
+ if (model.picture) {
34
+ this.map["xdr:pic"].render(xmlStream, model.picture);
35
+ }
36
+ else if (model.graphicFrame) {
37
+ this.map["xdr:graphicFrame"].render(xmlStream, model.graphicFrame);
38
+ }
27
39
  this.map["xdr:clientData"].render(xmlStream, {});
28
40
  xmlStream.closeNode();
29
41
  }
@@ -39,6 +51,7 @@ class OneCellAnchorXform extends BaseCellAnchorXform {
39
51
  this.model.range.tl = this.map["xdr:from"].model;
40
52
  this.model.range.ext = this.map["xdr:ext"].model;
41
53
  this.model.picture = this.map["xdr:pic"].model;
54
+ this.model.graphicFrame = this.map["xdr:graphicFrame"].model;
42
55
  return false;
43
56
  default:
44
57
  // could be some unrecognised tags
@@ -46,7 +59,9 @@ class OneCellAnchorXform extends BaseCellAnchorXform {
46
59
  }
47
60
  }
48
61
  reconcile(model, options) {
49
- model.medium = this.reconcilePicture(model.picture, options);
62
+ if (model.picture) {
63
+ model.medium = this.reconcilePicture(model.picture, options);
64
+ }
50
65
  }
51
66
  }
52
67
  export { OneCellAnchorXform };
@@ -1,16 +1,30 @@
1
1
  import { BaseCellAnchorXform } from "./base-cell-anchor-xform.js";
2
2
  import { CellPositionXform } from "./cell-position-xform.js";
3
+ import { GraphicFrameXform } from "./graphic-frame-xform.js";
3
4
  import { PicXform } from "./pic-xform.js";
4
5
  import { SpXform } from "./sp-xform.js";
5
6
  import { StaticXform } from "../static-xform.js";
6
7
  class TwoCellAnchorXform extends BaseCellAnchorXform {
7
8
  constructor() {
8
9
  super();
10
+ // Parse state for the inner `<mc:AlternateContent>` block that
11
+ // chartEx drawings place in the shape slot of a `<xdr:twoCellAnchor>`.
12
+ // See `render()` for the canonical layout. When `_inFallback`
13
+ // flips on we swallow every open/close/text until the matching
14
+ // `</mc:Fallback>` — the Fallback contents are a legacy-Excel
15
+ // placeholder shape that structured consumers don't need to
16
+ // surface; `alternateContent.requires` on the model is enough
17
+ // to re-emit it verbatim on save.
18
+ this._acDepth = 0;
19
+ this._inFallback = false;
20
+ this._fallbackDepth = 0;
21
+ this._choiceRequires = undefined;
9
22
  this.map = {
10
23
  "xdr:from": new CellPositionXform({ tag: "xdr:from" }),
11
24
  "xdr:to": new CellPositionXform({ tag: "xdr:to" }),
12
25
  "xdr:pic": new PicXform(),
13
26
  "xdr:sp": new SpXform(),
27
+ "xdr:graphicFrame": new GraphicFrameXform(),
14
28
  "xdr:clientData": new StaticXform({ tag: "xdr:clientData" })
15
29
  };
16
30
  }
@@ -21,40 +35,304 @@ class TwoCellAnchorXform extends BaseCellAnchorXform {
21
35
  if (model.picture) {
22
36
  this.map["xdr:pic"].prepare(model.picture, options);
23
37
  }
38
+ else if (model.graphicFrame) {
39
+ this.map["xdr:graphicFrame"].prepare(model.graphicFrame, options);
40
+ }
24
41
  }
25
42
  render(xmlStream, model) {
26
- const wrapAlternateContent = !!model.alternateContent;
27
- if (wrapAlternateContent) {
43
+ // ChartEx anchors (sunburst, treemap, funnel, waterfall, boxplot,
44
+ // histogram, region map, …) MUST be wrapped in
45
+ // `<mc:AlternateContent>`. ChartEx is a Microsoft extension that
46
+ // was never in the base OOXML spec; Excel's strict loader
47
+ // rejects a bare `<xdr:graphicFrame><cx:chart/>` anchor with
48
+ // "Removed Part: /xl/drawings/drawingN.xml (Drawing shape)".
49
+ //
50
+ // CRITICAL: Excel emits `<mc:AlternateContent>` as the SHAPE slot
51
+ // INSIDE the `<xdr:twoCellAnchor>`, between `<xdr:to>` and
52
+ // `<xdr:clientData>` — NOT around the whole anchor. The Choice
53
+ // carries the `<xdr:graphicFrame>` and the Fallback carries the
54
+ // `<xdr:sp>`; they share the single `<xdr:from>`/`<xdr:to>` of
55
+ // the outer anchor. This is how Microsoft Excel itself writes
56
+ // chartEx drawings — see `tmp/ttttt.xlsx` (Excel 2021-authored)
57
+ // for the canonical byte layout. Earlier revisions of this file
58
+ // wrapped the ENTIRE anchor in `<mc:AlternateContent>` and
59
+ // duplicated `<xdr:from>`/`<xdr:to>` in both Choice and
60
+ // Fallback. Excel's strict loader rejected that nesting even
61
+ // though MC substitution rules permit it in theory — the
62
+ // "Removed Part: drawing1.xml" repair dialog users saw on open
63
+ // was caused by this exact mis-nesting.
64
+ //
65
+ // Canonical structure:
66
+ //
67
+ // <xdr:twoCellAnchor>
68
+ // <xdr:from>…</xdr:from>
69
+ // <xdr:to>…</xdr:to>
70
+ // <mc:AlternateContent>
71
+ // <mc:Choice Requires="cx1" xmlns:cx1="…/2015/9/8/chartex">
72
+ // <xdr:graphicFrame>…<cx:chart/>…</xdr:graphicFrame>
73
+ // </mc:Choice>
74
+ // <mc:Fallback>
75
+ // <xdr:sp>…placeholder…</xdr:sp>
76
+ // </mc:Fallback>
77
+ // </mc:AlternateContent>
78
+ // <xdr:clientData/>
79
+ // </xdr:twoCellAnchor>
80
+ //
81
+ // The Fallback MUST NOT be empty — an empty fallback is spec-legal
82
+ // but Excel's validator treats an empty-choice+empty-fallback
83
+ // pair as "collapses to nothing" and drops the drawing. The
84
+ // placeholder shape we emit mirrors the "This chart isn't
85
+ // available in your version of Excel" message Office uses.
86
+ //
87
+ // The `a14`-requires branch (form-control shapes) uses the LEGACY
88
+ // wrap-the-whole-anchor form with an empty Fallback. That form
89
+ // was fine for 2010-era form controls and round-tripping code
90
+ // still depends on it; it is NOT the chartEx shape.
91
+ const requires = model.alternateContent?.requires;
92
+ const isChartEx = requires === "cx1" || requires === "cx";
93
+ const wrapAnchorInAc = !!requires && !isChartEx;
94
+ if (wrapAnchorInAc) {
95
+ // Legacy wrap-the-whole-anchor path (form controls, etc.)
28
96
  xmlStream.openNode("mc:AlternateContent", {
29
97
  "xmlns:mc": "http://schemas.openxmlformats.org/markup-compatibility/2006"
30
98
  });
31
99
  xmlStream.openNode("mc:Choice", {
32
- Requires: model.alternateContent?.requires,
33
- ...(model.alternateContent?.requires === "a14"
34
- ? {
35
- "xmlns:a14": "http://schemas.microsoft.com/office/drawing/2010/main"
36
- }
100
+ Requires: requires,
101
+ ...(requires === "a14"
102
+ ? { "xmlns:a14": "http://schemas.microsoft.com/office/drawing/2010/main" }
37
103
  : {})
38
104
  });
39
105
  }
40
- xmlStream.openNode(this.tag, { editAs: model.range.editAs ?? "oneCell" });
106
+ const editAs = model.range.editAs ?? (model.graphicFrame ? undefined : "oneCell");
107
+ // `editAs="twoCell"` is the default per the CT_TwoCellAnchor
108
+ // schema — Microsoft Excel omits the attribute in this case.
109
+ // Emitting it anyway is spec-valid but byte-diverges from
110
+ // Excel's own output for chartEx drawings, so suppress it when
111
+ // the effective value is the default.
112
+ const emitEditAs = editAs && editAs !== "twoCell" ? { editAs } : {};
113
+ xmlStream.openNode(this.tag, emitEditAs);
41
114
  this.map["xdr:from"].render(xmlStream, model.range.tl);
42
115
  this.map["xdr:to"].render(xmlStream, model.range.br);
43
- if (model.picture) {
116
+ if (isChartEx) {
117
+ // ChartEx: wrap the graphicFrame/shape INSIDE the anchor in
118
+ // mc:AlternateContent, matching Excel's emitted layout.
119
+ this.renderChartExAlternateContent(xmlStream, model);
120
+ }
121
+ else if (model.picture) {
44
122
  this.map["xdr:pic"].render(xmlStream, model.picture);
45
123
  }
124
+ else if (model.graphicFrame) {
125
+ this.map["xdr:graphicFrame"].render(xmlStream, model.graphicFrame);
126
+ }
46
127
  else if (model.shape) {
47
128
  this.map["xdr:sp"].render(xmlStream, model.shape);
48
129
  }
49
130
  this.map["xdr:clientData"].render(xmlStream, {});
50
- xmlStream.closeNode();
51
- if (wrapAlternateContent) {
131
+ xmlStream.closeNode(); // xdr:twoCellAnchor
132
+ if (wrapAnchorInAc) {
52
133
  xmlStream.closeNode(); // mc:Choice
53
134
  xmlStream.leafNode("mc:Fallback");
54
135
  xmlStream.closeNode(); // mc:AlternateContent
55
136
  }
56
137
  }
138
+ /**
139
+ * Emit the ChartEx `<mc:AlternateContent>` block that occupies the
140
+ * shape slot inside a `<xdr:twoCellAnchor>` — between `<xdr:to>`
141
+ * and `<xdr:clientData>`.
142
+ *
143
+ * Structure mirrors Microsoft Excel's own output:
144
+ *
145
+ * <mc:AlternateContent>
146
+ * <mc:Choice Requires="cx1" xmlns:cx1="…/2015/9/8/chartex">
147
+ * <xdr:graphicFrame>…<cx:chart/>…</xdr:graphicFrame>
148
+ * </mc:Choice>
149
+ * <mc:Fallback>
150
+ * <xdr:sp>…placeholder shape…</xdr:sp>
151
+ * </mc:Fallback>
152
+ * </mc:AlternateContent>
153
+ *
154
+ * Both the Choice graphicFrame and the Fallback shape inherit
155
+ * sizing from the outer `<xdr:from>`/`<xdr:to>` cell range — they
156
+ * do NOT each re-declare the anchor; there is only one anchor.
157
+ */
158
+ renderChartExAlternateContent(xmlStream, model) {
159
+ xmlStream.openNode("mc:AlternateContent", {
160
+ "xmlns:mc": "http://schemas.openxmlformats.org/markup-compatibility/2006"
161
+ });
162
+ xmlStream.openNode("mc:Choice", {
163
+ "xmlns:cx1": "http://schemas.microsoft.com/office/drawing/2015/9/8/chartex",
164
+ Requires: "cx1"
165
+ });
166
+ if (model.graphicFrame) {
167
+ this.map["xdr:graphicFrame"].render(xmlStream, model.graphicFrame);
168
+ }
169
+ xmlStream.closeNode(); // mc:Choice
170
+ xmlStream.openNode("mc:Fallback");
171
+ this.renderChartExFallbackShape(xmlStream, model);
172
+ xmlStream.closeNode(); // mc:Fallback
173
+ xmlStream.closeNode(); // mc:AlternateContent
174
+ }
175
+ /**
176
+ * Emit the placeholder `<xdr:sp>` that lives inside the
177
+ * `<mc:Fallback>` of a ChartEx anchor. Legacy Excel (2010/2013)
178
+ * and non-Microsoft loaders that don't understand the `cx1`
179
+ * namespace render this in place of the `cx:chart`.
180
+ *
181
+ * Matches Microsoft Excel's convention: cNvPr id=0 / empty name
182
+ * (a deliberate placeholder, not a real drawing object), a white
183
+ * rectangle sized to the anchor's cell range, and the localizable
184
+ * "This chart isn't available" message. The shape's own xfrm
185
+ * carries concrete EMU values rather than zeros because the
186
+ * Fallback expansion is meant to be rendered standalone — a
187
+ * zero-size shape would collapse and Excel 2016+ flags that as
188
+ * "drawing shape" validation failure even though the outer
189
+ * twoCellAnchor provides sizing.
190
+ */
191
+ renderChartExFallbackShape(xmlStream, model) {
192
+ xmlStream.openNode("xdr:sp", { macro: "", textlink: "" });
193
+ xmlStream.openNode("xdr:nvSpPr");
194
+ // `id=0`, empty name — Microsoft's convention for Fallback
195
+ // placeholders. Using a real numeric id here would conflict with
196
+ // the real graphicFrame id in Choice on loaders that scan both
197
+ // branches during validation.
198
+ xmlStream.leafNode("xdr:cNvPr", { id: 0, name: "" });
199
+ xmlStream.openNode("xdr:cNvSpPr");
200
+ xmlStream.leafNode("a:spLocks", { noTextEdit: 1 });
201
+ xmlStream.closeNode(); // xdr:cNvSpPr
202
+ xmlStream.closeNode(); // xdr:nvSpPr
203
+ xmlStream.openNode("xdr:spPr");
204
+ xmlStream.openNode("a:xfrm");
205
+ // Non-zero placeholder geometry. Excel expects the fallback
206
+ // shape to have a concrete size even though the outer
207
+ // twoCellAnchor already pins its bounds to from/to. Using
208
+ // 6"×4" (5486400 × 3657600 EMU) here — the dimensions Excel
209
+ // uses in its own fallback shapes. The position (3917950,
210
+ // 698500) roughly tracks Excel's offset for the same fallback
211
+ // shape (the exact values don't matter for validation; they
212
+ // only affect legacy-client rendering).
213
+ xmlStream.leafNode("a:off", { x: 3917950, y: 698500 });
214
+ xmlStream.leafNode("a:ext", { cx: 5486400, cy: 3657600 });
215
+ xmlStream.closeNode(); // a:xfrm
216
+ xmlStream.openNode("a:prstGeom", { prst: "rect" });
217
+ xmlStream.leafNode("a:avLst");
218
+ xmlStream.closeNode(); // a:prstGeom
219
+ xmlStream.openNode("a:solidFill");
220
+ xmlStream.leafNode("a:prstClr", { val: "white" });
221
+ xmlStream.closeNode(); // a:solidFill
222
+ xmlStream.openNode("a:ln", { w: 1 });
223
+ xmlStream.openNode("a:solidFill");
224
+ xmlStream.leafNode("a:prstClr", { val: "black" });
225
+ xmlStream.closeNode(); // a:solidFill
226
+ xmlStream.closeNode(); // a:ln
227
+ xmlStream.closeNode(); // xdr:spPr
228
+ xmlStream.openNode("xdr:txBody");
229
+ xmlStream.leafNode("a:bodyPr", { vertOverflow: "clip", horzOverflow: "clip" });
230
+ xmlStream.leafNode("a:lstStyle");
231
+ xmlStream.openNode("a:p");
232
+ xmlStream.openNode("a:r");
233
+ xmlStream.leafNode("a:rPr", { lang: "en-US", sz: 1100 });
234
+ xmlStream.openNode("a:t");
235
+ xmlStream.writeText("This chart isn't available in your version of Excel.\n\n" +
236
+ "Editing this shape or saving this workbook into a different file format will permanently break the chart.");
237
+ xmlStream.closeNode(); // a:t
238
+ xmlStream.closeNode(); // a:r
239
+ xmlStream.closeNode(); // a:p
240
+ xmlStream.closeNode(); // xdr:txBody
241
+ xmlStream.closeNode(); // xdr:sp
242
+ }
243
+ parseOpen(node) {
244
+ // Swallow everything inside `<mc:Fallback>` — it is a legacy
245
+ // placeholder shape the writer regenerates verbatim.
246
+ if (this._inFallback) {
247
+ this._fallbackDepth++;
248
+ return true;
249
+ }
250
+ // Intercept the MC substitution elements. The children of
251
+ // `<mc:Choice>` (a `<xdr:graphicFrame>`, typically) should be
252
+ // parsed by the existing xforms as if the wrapper weren't there.
253
+ switch (node.name) {
254
+ case "mc:AlternateContent":
255
+ this._acDepth++;
256
+ return true;
257
+ case "mc:Choice":
258
+ if (this._acDepth > 0) {
259
+ this._choiceRequires = node.attributes?.Requires;
260
+ }
261
+ return true;
262
+ case "mc:Fallback":
263
+ if (this._acDepth > 0) {
264
+ this._inFallback = true;
265
+ this._fallbackDepth = 1;
266
+ }
267
+ return true;
268
+ default:
269
+ break;
270
+ }
271
+ if (this.parser) {
272
+ this.parser.parseOpen(node);
273
+ return true;
274
+ }
275
+ switch (node.name) {
276
+ case this.tag:
277
+ this.reset();
278
+ this.model = {
279
+ range: {
280
+ editAs: node.attributes.editAs
281
+ }
282
+ };
283
+ this._acDepth = 0;
284
+ this._inFallback = false;
285
+ this._fallbackDepth = 0;
286
+ this._choiceRequires = undefined;
287
+ break;
288
+ default:
289
+ this.parser = this.map[node.name];
290
+ if (this.parser) {
291
+ this.parser.parseOpen(node);
292
+ }
293
+ break;
294
+ }
295
+ return true;
296
+ }
297
+ parseText(text) {
298
+ if (this._inFallback) {
299
+ return;
300
+ }
301
+ if (this.parser) {
302
+ this.parser.parseText(text);
303
+ }
304
+ }
57
305
  parseClose(name) {
306
+ // Close matching against the inner `<mc:Fallback>` skip window
307
+ // first. `_fallbackDepth` tracks nested opens inside the
308
+ // fallback shape (xdr:sp → xdr:spPr → …); only when it drops
309
+ // back to zero do we exit skip mode.
310
+ if (this._inFallback) {
311
+ this._fallbackDepth--;
312
+ if (this._fallbackDepth === 0) {
313
+ this._inFallback = false;
314
+ }
315
+ return true;
316
+ }
317
+ switch (name) {
318
+ case "mc:AlternateContent":
319
+ this._acDepth--;
320
+ if (this._acDepth <= 0) {
321
+ this._acDepth = 0;
322
+ // Tag the anchor model with the Requires value so the
323
+ // writer re-emits the MC wrapper on save.
324
+ if (this._choiceRequires) {
325
+ this.model.alternateContent = { requires: this._choiceRequires };
326
+ }
327
+ this._choiceRequires = undefined;
328
+ }
329
+ return true;
330
+ case "mc:Choice":
331
+ case "mc:Fallback":
332
+ return true;
333
+ default:
334
+ break;
335
+ }
58
336
  if (this.parser) {
59
337
  if (!this.parser.parseClose(name)) {
60
338
  this.parser = undefined;
@@ -66,6 +344,7 @@ class TwoCellAnchorXform extends BaseCellAnchorXform {
66
344
  this.model.range.tl = this.map["xdr:from"].model;
67
345
  this.model.range.br = this.map["xdr:to"].model;
68
346
  this.model.picture = this.map["xdr:pic"].model;
347
+ this.model.graphicFrame = this.map["xdr:graphicFrame"].model;
69
348
  return false;
70
349
  default:
71
350
  // could be some unrecognised tags
@@ -73,7 +352,10 @@ class TwoCellAnchorXform extends BaseCellAnchorXform {
73
352
  }
74
353
  }
75
354
  reconcile(model, options) {
76
- model.medium = this.reconcilePicture(model.picture, options);
355
+ if (model.picture) {
356
+ model.medium = this.reconcilePicture(model.picture, options);
357
+ }
358
+ // graphicFrame reconciliation handled at DrawingXform level
77
359
  }
78
360
  }
79
361
  export { TwoCellAnchorXform };