@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
@@ -92,8 +92,77 @@ export async function layoutSheet(sheet, options, fontManager) {
92
92
  if (layoutPages.length > 0 && sheet.images) {
93
93
  assignImagesToPages(sheet.images, layoutPages, ctx.scaleFactor);
94
94
  }
95
+ if (layoutPages.length > 0 && sheet.charts) {
96
+ assignChartsToPages(sheet.charts, layoutPages, ctx.scaleFactor);
97
+ }
95
98
  return layoutPages;
96
99
  }
100
+ /**
101
+ * Produce the layout for a chartsheet — a single PDF page whose entire
102
+ * content area is covered by one chart.
103
+ *
104
+ * Chartsheets have no row/column grid, so we bypass the cell-layout
105
+ * pipeline entirely. Page dimensions come from `options.pageSize`, with
106
+ * orientation overridden by the chartsheet's own `orientation` field
107
+ * (Excel's chartsheet convention defaults to landscape; see the
108
+ * `CHARTSHEET_EMU_CX/CY` constants that define the drawing canvas in
109
+ * `xlsx.browser.ts`).
110
+ *
111
+ * The returned LayoutPage has:
112
+ * - `cells = []` (no grid to render)
113
+ * - `charts` containing one full-content-area chart
114
+ * - all other cell-grid arrays empty
115
+ *
116
+ * The existing `renderSinglePage` in `pdf-exporter.ts` already handles
117
+ * pages with zero cells and a non-empty `charts` array via the shared
118
+ * chart-rendering path, so no exporter changes are needed here.
119
+ */
120
+ export function layoutChartsheet(sheet, documentOptions) {
121
+ // Chartsheet orientation override — independent of the document
122
+ // default. We clone the options so neighbouring worksheets aren't
123
+ // affected when a single chartsheet flips to portrait.
124
+ const orientation = sheet.orientation ?? documentOptions.orientation;
125
+ const options = { ...documentOptions, orientation };
126
+ let pageWidth = options.pageSize.width;
127
+ let pageHeight = options.pageSize.height;
128
+ if (options.orientation === "landscape") {
129
+ [pageWidth, pageHeight] = [pageHeight, pageWidth];
130
+ }
131
+ const margins = options.margins;
132
+ const headerHeight = options.showSheetNames ? 20 : 0;
133
+ const contentX = margins.left;
134
+ const contentY = margins.bottom;
135
+ const contentWidth = pageWidth - margins.left - margins.right;
136
+ const contentHeight = pageHeight - margins.top - margins.bottom - headerHeight;
137
+ const chart = {
138
+ rect: {
139
+ x: contentX,
140
+ y: contentY,
141
+ width: Math.max(0, contentWidth),
142
+ height: Math.max(0, contentHeight)
143
+ },
144
+ drawVector: sheet.chart.drawVector,
145
+ raster: sheet.chart.raster
146
+ };
147
+ const page = {
148
+ pageNumber: 1,
149
+ options,
150
+ cells: [],
151
+ width: pageWidth,
152
+ height: pageHeight,
153
+ sheetName: sheet.name,
154
+ sheetCols: [],
155
+ columnOffsets: [],
156
+ columnWidths: [],
157
+ sheetRows: [],
158
+ rowYPositions: [],
159
+ rowHeights: [],
160
+ images: [],
161
+ charts: [chart],
162
+ scaleFactor: 1
163
+ };
164
+ return [page];
165
+ }
97
166
  /**
98
167
  * Steps 1–5: compute columns, scale, rows, merges, pagination.
99
168
  * Returns null if the sheet has no visible columns (→ caller should emit an empty page).
@@ -259,6 +328,7 @@ function buildPageLayout(ctx, rowPage, colGroup, currentPageCount, sheet, option
259
328
  rowYPositions,
260
329
  rowHeights: pageRowHeights,
261
330
  images: [],
331
+ charts: [],
262
332
  scaleFactor
263
333
  };
264
334
  }
@@ -282,6 +352,7 @@ function createEmptyPage(sheet, options) {
282
352
  rowYPositions: [],
283
353
  rowHeights: [],
284
354
  images: [],
355
+ charts: [],
285
356
  scaleFactor: 1
286
357
  };
287
358
  }
@@ -474,6 +545,17 @@ function countWrapLines(cell, fontSize, scaleFactor, sheet, fontManager, options
474
545
  : 0;
475
546
  const padding = CELL_PADDING_H + borderLeft + (CELL_PADDING_H + borderRight) + indent * INDENT_WIDTH;
476
547
  const effectiveWidth = Math.max(scaledColPts - padding, 1);
548
+ // For rich text cells, use per-run font size measurement to match rendering
549
+ if (cell.type === PdfCellType.RichText) {
550
+ const value = cell.value;
551
+ if (value && typeof value === "object" && "richText" in value) {
552
+ const runs = value.richText;
553
+ if (runs.length > 0) {
554
+ const wrappedCount = countRichTextWrapLines(text, runs, scaleFactor, effectiveWidth, fontManager, options);
555
+ return Math.max(lineCount, wrappedCount);
556
+ }
557
+ }
558
+ }
477
559
  const scaledFontSize = fontSize * scaleFactor;
478
560
  const fontProps = extractFontProperties(cell.style.font, options.defaultFontFamily, options.defaultFontSize);
479
561
  const pdfFontName = resolvePdfFontName(fontProps.fontFamily, fontProps.bold, fontProps.italic);
@@ -484,6 +566,119 @@ function countWrapLines(cell, fontSize, scaleFactor, sheet, fontManager, options
484
566
  const wrappedLines = wrapTextLines(text, measure, effectiveWidth);
485
567
  return Math.max(lineCount, wrappedLines.length);
486
568
  }
569
+ /**
570
+ * Count wrap lines for a rich text cell using per-run font sizes.
571
+ * This mirrors the logic in wrapRichTextLines (page-renderer) so that
572
+ * the row height calculation matches the actual rendering.
573
+ */
574
+ function countRichTextWrapLines(text, runs, scaleFactor, effectiveWidth, fontManager, options) {
575
+ // Build character-to-run mapping
576
+ const runForChar = [];
577
+ for (let ri = 0; ri < runs.length; ri++) {
578
+ for (let ci = 0; ci < runs[ri].text.length; ci++) {
579
+ runForChar.push(ri);
580
+ }
581
+ }
582
+ // Resolve font resources for each run
583
+ const runResources = runs.map(run => {
584
+ const fontProps = extractFontProperties(run.font, options.defaultFontFamily, options.defaultFontSize);
585
+ const pdfFontName = resolvePdfFontName(fontProps.fontFamily, fontProps.bold, fontProps.italic);
586
+ return fontManager.hasEmbeddedFont()
587
+ ? fontManager.getEmbeddedResourceName()
588
+ : fontManager.ensureFont(pdfFontName);
589
+ });
590
+ // Resolve scaled font sizes for each run
591
+ const runFontSizes = runs.map(run => {
592
+ const fontProps = extractFontProperties(run.font, options.defaultFontFamily, options.defaultFontSize);
593
+ return fontProps.fontSize * scaleFactor;
594
+ });
595
+ // Measure a range of fullText using per-character run font sizes
596
+ const measureRange = (start, end) => {
597
+ let width = 0;
598
+ let segStart = start;
599
+ let currentRi = runForChar[start] ?? 0;
600
+ for (let i = start + 1; i <= end; i++) {
601
+ const ri = i < end ? (runForChar[i] ?? currentRi) : -1;
602
+ if (ri !== currentRi) {
603
+ const seg = text.slice(segStart, i);
604
+ width += fontManager.measureText(seg, runResources[currentRi], runFontSizes[currentRi]);
605
+ segStart = i;
606
+ currentRi = ri;
607
+ }
608
+ }
609
+ return width;
610
+ };
611
+ // Word-wrap using per-run measurements — mirrors wrapRichTextLines in
612
+ // page-renderer exactly (paragraph split on \n, word boundaries by
613
+ // scanning space/tab characters) to ensure line count matches rendering.
614
+ let totalLines = 0;
615
+ let globalOffset = 0;
616
+ const len = text.length;
617
+ while (globalOffset <= len) {
618
+ // Find end of current paragraph (handles both \n and \r\n)
619
+ let paraEnd = text.indexOf("\n", globalOffset);
620
+ if (paraEnd === -1) {
621
+ paraEnd = len;
622
+ }
623
+ // Skip \r before \n
624
+ const paraContentEnd = paraEnd > globalOffset && text[paraEnd - 1] === "\r" ? paraEnd - 1 : paraEnd;
625
+ if (paraContentEnd === globalOffset) {
626
+ // Empty paragraph
627
+ totalLines++;
628
+ globalOffset = paraEnd + 1;
629
+ if (paraEnd === len) {
630
+ break;
631
+ }
632
+ continue;
633
+ }
634
+ // Find word boundaries within this paragraph (space/tab are separators)
635
+ const paraText = text.slice(globalOffset, paraContentEnd);
636
+ const wordStarts = [];
637
+ const wordEnds = [];
638
+ let inWord = false;
639
+ for (let i = 0; i < paraText.length; i++) {
640
+ const isSpace = paraText[i] === " " || paraText[i] === "\t";
641
+ if (!isSpace && !inWord) {
642
+ wordStarts.push(i);
643
+ inWord = true;
644
+ }
645
+ else if (isSpace && inWord) {
646
+ wordEnds.push(i);
647
+ inWord = false;
648
+ }
649
+ }
650
+ if (inWord) {
651
+ wordEnds.push(paraText.length);
652
+ }
653
+ let lineStart = globalOffset;
654
+ let lineEnd = globalOffset;
655
+ let linesInParagraph = 0;
656
+ for (let wi = 0; wi < wordStarts.length; wi++) {
657
+ const wordEnd = globalOffset + wordEnds[wi];
658
+ if (lineEnd === lineStart) {
659
+ lineEnd = wordEnd;
660
+ continue;
661
+ }
662
+ if (measureRange(lineStart, wordEnd) <= effectiveWidth) {
663
+ lineEnd = wordEnd;
664
+ }
665
+ else {
666
+ linesInParagraph++;
667
+ lineStart = globalOffset + wordStarts[wi];
668
+ lineEnd = wordEnd;
669
+ }
670
+ }
671
+ if (lineEnd > lineStart || wordStarts.length === 0) {
672
+ linesInParagraph++;
673
+ }
674
+ totalLines += linesInParagraph;
675
+ globalOffset = paraEnd + 1;
676
+ if (paraEnd === len) {
677
+ break;
678
+ }
679
+ }
680
+ return Math.max(1, totalLines);
681
+ }
487
682
  // =============================================================================
488
683
  // Row Breaks
489
684
  // =============================================================================
@@ -778,70 +973,242 @@ export function resolveSharedBorders(cellGrid, rowCount, colCount) {
778
973
  }
779
974
  }
780
975
  // =============================================================================
781
- // Image Placement
976
+ // Image & Chart Placement
782
977
  // =============================================================================
978
+ /**
979
+ * Resolve an anchor's page-space rectangle by combining the `tl` / `br` /
980
+ * `ext` fields of a {@link PdfSheetImage.range} or {@link PdfSheetChart.range}.
981
+ *
982
+ * The convention is identical for both object types:
983
+ * - `tl` locates the upper-left corner in sheet coordinates (`nativeCol`,
984
+ * `nativeRow`, + sub-cell offsets in EMU).
985
+ * - `br` — when present — locates the opposite corner, so the rect size is
986
+ * the difference.
987
+ * - `ext` — when present — overrides the size directly. Images use pixels
988
+ * (px × 0.75 = pt); charts use EMU (EMU / 9525 = pt). The `extUnit`
989
+ * field disambiguates. Historical callers that omit `extUnit` keep
990
+ * the legacy px behaviour.
991
+ *
992
+ * Returns `null` if the anchor does not land on any of the supplied
993
+ * pages (e.g. the object is anchored below the printed area).
994
+ */
995
+ function resolveAnchorRect(range, layoutPages, scaleFactor) {
996
+ const tl = range.tl;
997
+ const tlCol = (tl.nativeCol ?? tl.col ?? 0) + 1; // 0-indexed → 1-indexed
998
+ const tlRow = (tl.nativeRow ?? tl.row ?? 0) + 1;
999
+ const targetPage = layoutPages.find(page => page.sheetCols.includes(tlCol) && page.sheetRows.includes(tlRow));
1000
+ if (!targetPage) {
1001
+ return null;
1002
+ }
1003
+ const pageColIndex = targetPage.sheetCols.indexOf(tlCol);
1004
+ const pageRowIndex = targetPage.sheetRows.indexOf(tlRow);
1005
+ const baseX = targetPage.columnOffsets[pageColIndex] ?? targetPage.options.margins.left;
1006
+ const baseY = targetPage.rowYPositions[pageRowIndex] ??
1007
+ targetPage.height -
1008
+ targetPage.options.margins.top -
1009
+ (targetPage.options.showSheetNames ? 20 : 0);
1010
+ // Apply sub-cell offsets (EMU: 1pt = 12700 EMU), scaled to match page layout
1011
+ const tlColOff = ((tl.nativeColOff ?? 0) / 12700 || 0) * scaleFactor;
1012
+ const tlRowOff = ((tl.nativeRowOff ?? 0) / 12700 || 0) * scaleFactor;
1013
+ const x = baseX + tlColOff;
1014
+ const yTop = baseY - tlRowOff;
1015
+ // Determine width / height
1016
+ let width = 100;
1017
+ let height = 100;
1018
+ const extUnit = range.extUnit ?? "px";
1019
+ if (range.ext) {
1020
+ if (extUnit === "emu") {
1021
+ // EMU → pt (1 pt = 9525 EMU, same as the Excel drawing ext.cx/cy).
1022
+ width = (range.ext.width / 9525) * scaleFactor;
1023
+ height = (range.ext.height / 9525) * scaleFactor;
1024
+ }
1025
+ else {
1026
+ // Legacy pixel → pt (0.75 factor = 72/96 dpi)
1027
+ width = range.ext.width * 0.75 * scaleFactor;
1028
+ height = range.ext.height * 0.75 * scaleFactor;
1029
+ }
1030
+ }
1031
+ else if (range.br) {
1032
+ const br = range.br;
1033
+ const brCol = (br.nativeCol ?? br.col ?? 0) + 1;
1034
+ const brRow = (br.nativeRow ?? br.row ?? 0) + 1;
1035
+ const brPageColIndex = targetPage.sheetCols.indexOf(brCol);
1036
+ const brPageRowIndex = targetPage.sheetRows.indexOf(brRow);
1037
+ let brBaseX;
1038
+ let brBaseY;
1039
+ if (brPageColIndex >= 0) {
1040
+ brBaseX = targetPage.columnOffsets[brPageColIndex];
1041
+ }
1042
+ else {
1043
+ // br column is beyond this page — sum column widths from tl
1044
+ // through the last page column, then extrapolate remaining cols
1045
+ // at the average page column width so the chart stretches to its
1046
+ // intended width even when the page doesn't extend far enough.
1047
+ const lastCI = targetPage.sheetCols.length - 1;
1048
+ const lastPageCol = targetPage.sheetCols[lastCI] ?? tlCol;
1049
+ // End of the last column on this page:
1050
+ const lastColEnd = lastCI >= 0
1051
+ ? targetPage.columnOffsets[lastCI] + (targetPage.columnWidths[lastCI] ?? 0)
1052
+ : baseX;
1053
+ if (brCol <= lastPageCol) {
1054
+ // brCol should be on this page but indexOf missed — use end of
1055
+ // the closest column as a fallback.
1056
+ brBaseX = lastColEnd;
1057
+ }
1058
+ else {
1059
+ const avgColWidth = targetPage.columnWidths.length > 0
1060
+ ? targetPage.columnWidths.reduce((s, w) => s + w, 0) / targetPage.columnWidths.length
1061
+ : 48;
1062
+ const extraCols = brCol - lastPageCol;
1063
+ brBaseX = lastColEnd + extraCols * avgColWidth;
1064
+ }
1065
+ }
1066
+ if (brPageRowIndex >= 0) {
1067
+ brBaseY = targetPage.rowYPositions[brPageRowIndex];
1068
+ }
1069
+ else {
1070
+ // br row is beyond this page — accumulate row heights from tl
1071
+ // downward to compute the real chart height. In PDF coords,
1072
+ // rows stack downward (decreasing y). `baseY` (= yTop before
1073
+ // offsets) is the PDF y of the top of `tlRow`. Each subsequent
1074
+ // row's top y = previous row's top y - that row's height.
1075
+ const lastRI = targetPage.sheetRows.length - 1;
1076
+ const lastPageRow = targetPage.sheetRows[lastRI] ?? tlRow;
1077
+ if (brRow <= lastPageRow) {
1078
+ // brRow is on this page — sum heights from tl up to br.
1079
+ let accH = 0;
1080
+ for (let ri = pageRowIndex; ri <= lastRI; ri++) {
1081
+ if (targetPage.sheetRows[ri] >= brRow) {
1082
+ break;
1083
+ }
1084
+ accH += targetPage.rowHeights[ri] ?? 0;
1085
+ }
1086
+ brBaseY = baseY - accH;
1087
+ }
1088
+ else {
1089
+ // brRow exceeds the page — sum all rows from tl to end of page,
1090
+ // then extrapolate remaining rows at default height.
1091
+ let accH = 0;
1092
+ for (let ri = pageRowIndex; ri <= lastRI; ri++) {
1093
+ accH += targetPage.rowHeights[ri] ?? 0;
1094
+ }
1095
+ const remainingRows = brRow - lastPageRow - 1;
1096
+ accH += remainingRows * (15 * scaleFactor);
1097
+ brBaseY = baseY - accH;
1098
+ }
1099
+ }
1100
+ const brColOff = ((br.nativeColOff ?? 0) / 12700 || 0) * scaleFactor;
1101
+ const brRowOff = ((br.nativeRowOff ?? 0) / 12700 || 0) * scaleFactor;
1102
+ const brX = brBaseX + brColOff;
1103
+ const brYTop = brBaseY - brRowOff;
1104
+ width = brX - x;
1105
+ height = yTop - brYTop;
1106
+ }
1107
+ // Normalise to bottom-left y (PDF origin is bottom-left).
1108
+ // Clamp width to the page's content area; for height, if the chart's
1109
+ // anchor extends well below the page boundary (less than 50% of the
1110
+ // chart fits on this page), skip it entirely — drawing a severely
1111
+ // clipped chart is worse than omitting it. Otherwise keep the full
1112
+ // computed height so the chart renders at the correct aspect ratio
1113
+ // even if it slightly overflows the page bottom.
1114
+ const contentRight = targetPage.width - targetPage.options.margins.right;
1115
+ const contentBottom = targetPage.options.margins.bottom;
1116
+ const absWidth = Math.min(Math.abs(width), Math.max(0, contentRight - x));
1117
+ const absHeight = Math.abs(height);
1118
+ const availableHeight = Math.max(0, yTop - contentBottom);
1119
+ if (absHeight > 0 && availableHeight < absHeight * 0.5) {
1120
+ // Less than half the chart fits on this page — skip it.
1121
+ return null;
1122
+ }
1123
+ return {
1124
+ page: targetPage,
1125
+ x,
1126
+ y: yTop - absHeight,
1127
+ width: absWidth,
1128
+ height: absHeight
1129
+ };
1130
+ }
783
1131
  /**
784
1132
  * Assign pre-collected images to the pages that contain their top-left anchor.
785
1133
  */
786
1134
  function assignImagesToPages(images, layoutPages, scaleFactor) {
787
1135
  for (const img of images) {
788
- const tl = img.range.tl;
789
- const tlCol = (tl.nativeCol ?? tl.col ?? 0) + 1; // convert 0-indexed to 1-indexed
790
- const tlRow = (tl.nativeRow ?? tl.row ?? 0) + 1;
791
- const targetPage = layoutPages.find(page => page.sheetCols.includes(tlCol) && page.sheetRows.includes(tlRow));
792
- if (!targetPage) {
1136
+ const placement = resolveAnchorRect(img.range, layoutPages, scaleFactor);
1137
+ if (!placement) {
793
1138
  continue;
794
1139
  }
795
- const pageColIndex = targetPage.sheetCols.indexOf(tlCol);
796
- const pageRowIndex = targetPage.sheetRows.indexOf(tlRow);
797
- const baseX = targetPage.columnOffsets[pageColIndex] ?? targetPage.options.margins.left;
798
- const baseY = targetPage.rowYPositions[pageRowIndex] ??
799
- targetPage.height -
800
- targetPage.options.margins.top -
801
- (targetPage.options.showSheetNames ? 20 : 0);
802
- // Apply sub-cell offsets (EMU: 1pt = 12700 EMU), scaled to match page layout
803
- const tlColOff = ((tl.nativeColOff ?? 0) / 12700 || 0) * scaleFactor;
804
- const tlRowOff = ((tl.nativeRowOff ?? 0) / 12700 || 0) * scaleFactor;
805
- const imgX = baseX + tlColOff;
806
- const imgY = baseY - tlRowOff;
807
- // Determine image size
808
- let imgWidth = 100;
809
- let imgHeight = 100;
810
- if (img.range.ext) {
811
- imgWidth = (img.range.ext.width ?? 100) * 0.75 * scaleFactor;
812
- imgHeight = (img.range.ext.height ?? 100) * 0.75 * scaleFactor;
813
- }
814
- else if (img.range.br) {
815
- const br = img.range.br;
816
- const brCol = (br.nativeCol ?? br.col ?? 0) + 1;
817
- const brRow = (br.nativeRow ?? br.row ?? 0) + 1;
818
- const brPageColIndex = targetPage.sheetCols.indexOf(brCol);
819
- const brPageRowIndex = targetPage.sheetRows.indexOf(brRow);
820
- const brBaseX = brPageColIndex >= 0
821
- ? targetPage.columnOffsets[brPageColIndex]
822
- : imgX + (targetPage.columnWidths[pageColIndex] ?? 100);
823
- const brBaseY = brPageRowIndex >= 0
824
- ? targetPage.rowYPositions[brPageRowIndex]
825
- : imgY - (targetPage.rowHeights[pageRowIndex] ?? 100);
826
- const brColOff = ((br.nativeColOff ?? 0) / 12700 || 0) * scaleFactor;
827
- const brRowOff = ((br.nativeRowOff ?? 0) / 12700 || 0) * scaleFactor;
828
- const brX = brBaseX + brColOff;
829
- const brY = brBaseY - brRowOff;
830
- imgWidth = brX - imgX;
831
- imgHeight = imgY - brY;
832
- }
833
- targetPage.images.push({
1140
+ placement.page.images.push({
834
1141
  data: img.data,
835
1142
  format: img.format,
836
1143
  rect: {
837
- x: imgX,
838
- y: imgY - imgHeight,
839
- width: Math.abs(imgWidth),
840
- height: Math.abs(imgHeight)
1144
+ x: placement.x,
1145
+ y: placement.y,
1146
+ width: placement.width,
1147
+ height: placement.height
841
1148
  }
842
1149
  });
843
1150
  }
844
1151
  }
1152
+ /**
1153
+ * Assign pre-collected charts to the pages that contain their top-left
1154
+ * anchor. When a chart's anchor doesn't fit on any page (e.g. it spans
1155
+ * most of its height below the page boundary), place it full-page on
1156
+ * the next available page so it's not lost entirely.
1157
+ */
1158
+ function assignChartsToPages(charts, layoutPages, scaleFactor) {
1159
+ for (const chart of charts) {
1160
+ const placement = resolveAnchorRect(chart.range, layoutPages, scaleFactor);
1161
+ if (placement) {
1162
+ placement.page.charts.push({
1163
+ rect: {
1164
+ x: placement.x,
1165
+ y: placement.y,
1166
+ width: placement.width,
1167
+ height: placement.height
1168
+ },
1169
+ drawVector: chart.drawVector,
1170
+ raster: chart.raster
1171
+ });
1172
+ continue;
1173
+ }
1174
+ // Chart didn't fit — find the page whose rows are closest to the
1175
+ // chart's tl row and place it full-content-area on that page (or
1176
+ // the next one if it exists). This handles charts whose tl anchor
1177
+ // is near a page break: rather than clipping them to a sliver, we
1178
+ // push them onto the following page at full size.
1179
+ const tl = chart.range.tl;
1180
+ const tlRow = (tl.nativeRow ?? tl.row ?? 0) + 1;
1181
+ let targetPage;
1182
+ for (let pi = 0; pi < layoutPages.length; pi++) {
1183
+ const page = layoutPages[pi];
1184
+ const lastPageRow = page.sheetRows[page.sheetRows.length - 1] ?? 0;
1185
+ if (lastPageRow >= tlRow - 1 && pi + 1 < layoutPages.length) {
1186
+ targetPage = layoutPages[pi + 1];
1187
+ break;
1188
+ }
1189
+ if (lastPageRow >= tlRow) {
1190
+ targetPage = page;
1191
+ break;
1192
+ }
1193
+ }
1194
+ if (!targetPage) {
1195
+ targetPage = layoutPages[layoutPages.length - 1];
1196
+ }
1197
+ if (targetPage) {
1198
+ const margins = targetPage.options.margins;
1199
+ const headerH = targetPage.options.showSheetNames ? 20 : 0;
1200
+ const contentX = margins.left;
1201
+ const contentY = margins.bottom;
1202
+ const contentW = targetPage.width - margins.left - margins.right;
1203
+ const contentH = targetPage.height - margins.top - margins.bottom - headerH;
1204
+ targetPage.charts.push({
1205
+ rect: { x: contentX, y: contentY, width: contentW, height: contentH },
1206
+ drawVector: chart.drawVector,
1207
+ raster: chart.raster
1208
+ });
1209
+ }
1210
+ }
1211
+ }
845
1212
  // =============================================================================
846
1213
  // Merge Border Propagation
847
1214
  // =============================================================================
@@ -889,16 +1256,29 @@ function computeTextOverflows(cellGrid, rowPage, colGroup, visibleRows, visibleC
889
1256
  if (!cell ||
890
1257
  cell.wrapText ||
891
1258
  cell.colSpan > 1 ||
892
- !cell.text ||
893
- cell.richText ||
1259
+ (!cell.text && !cell.richText) ||
894
1260
  (typeof cell.textRotation === "number" && cell.textRotation !== 0) ||
895
1261
  cell.textRotation === "vertical") {
896
1262
  continue;
897
1263
  }
898
- const resourceName = fontManager.hasEmbeddedFont()
899
- ? fontManager.getEmbeddedResourceName()
900
- : fontManager.ensureFont(resolvePdfFontName(cell.fontFamily, cell.bold, cell.italic));
901
- const textWidth = fontManager.measureText(cell.text, resourceName, cell.fontSize);
1264
+ // Measure the total text width (plain text or rich text runs)
1265
+ let textWidth;
1266
+ if (cell.richText) {
1267
+ textWidth = 0;
1268
+ const isEmbedded = fontManager.hasEmbeddedFont();
1269
+ for (const run of cell.richText) {
1270
+ const resourceName = isEmbedded
1271
+ ? fontManager.getEmbeddedResourceName()
1272
+ : fontManager.ensureFont(resolvePdfFontName(run.fontFamily, run.bold, run.italic));
1273
+ textWidth += fontManager.measureText(run.text, resourceName, run.fontSize);
1274
+ }
1275
+ }
1276
+ else {
1277
+ const resourceName = fontManager.hasEmbeddedFont()
1278
+ ? fontManager.getEmbeddedResourceName()
1279
+ : fontManager.ensureFont(resolvePdfFontName(cell.fontFamily, cell.bold, cell.italic));
1280
+ textWidth = fontManager.measureText(cell.text, resourceName, cell.fontSize);
1281
+ }
902
1282
  const cellContentWidth = cell.rect.width -
903
1283
  (CELL_PADDING_H + cell.borderInsets.left) -
904
1284
  (CELL_PADDING_H + cell.borderInsets.right);
@@ -915,7 +1295,7 @@ function computeTextOverflows(cellGrid, rowPage, colGroup, visibleRows, visibleC
915
1295
  break;
916
1296
  }
917
1297
  const neighborCell = cellGrid.get(`${ri}:${j}`);
918
- if (neighborCell?.text) {
1298
+ if (neighborCell?.text || neighborCell?.richText) {
919
1299
  break;
920
1300
  }
921
1301
  overflowAvailable += groupColWidths[j];