ooxml-core 0.19.0 → 0.21.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 (328) hide show
  1. package/README.md +21 -43
  2. package/dist/automation/index.cjs +195 -193
  3. package/dist/automation/index.mjs +195 -193
  4. package/dist/chart/axis-nice.d.ts +97 -0
  5. package/dist/chart/axis-nice.d.ts.map +1 -0
  6. package/dist/chart/histogram-binning.d.ts +40 -0
  7. package/dist/chart/histogram-binning.d.ts.map +1 -0
  8. package/dist/chart/index.cjs +167 -0
  9. package/dist/chart/index.d.ts +2 -0
  10. package/dist/chart/index.d.ts.map +1 -1
  11. package/dist/chart/index.mjs +162 -1
  12. package/dist/diagram/index.cjs +2 -1
  13. package/dist/diagram/index.mjs +2 -1
  14. package/dist/docx/attr-units.d.ts +11 -0
  15. package/dist/docx/attr-units.d.ts.map +1 -0
  16. package/dist/docx/block-parser.d.ts.map +1 -1
  17. package/dist/docx/case-transform.d.ts +9 -0
  18. package/dist/docx/case-transform.d.ts.map +1 -0
  19. package/dist/docx/embedded.cjs +2 -1
  20. package/dist/docx/embedded.mjs +2 -1
  21. package/dist/docx/index.cjs +289 -3
  22. package/dist/docx/index.d.ts +5 -0
  23. package/dist/docx/index.d.ts.map +1 -1
  24. package/dist/docx/index.mjs +269 -4
  25. package/dist/docx/layout/adapter.d.ts.map +1 -1
  26. package/dist/docx/layout/table-layout.d.ts.map +1 -1
  27. package/dist/docx/load/index.cjs +2 -1
  28. package/dist/docx/load/index.mjs +2 -1
  29. package/dist/docx/page-setup-model.d.ts +29 -0
  30. package/dist/docx/page-setup-model.d.ts.map +1 -0
  31. package/dist/docx/page-size.d.ts +11 -0
  32. package/dist/docx/page-size.d.ts.map +1 -0
  33. package/dist/docx/parse.d.ts.map +1 -1
  34. package/dist/docx/section-edit.d.ts +19 -0
  35. package/dist/docx/section-edit.d.ts.map +1 -0
  36. package/dist/docx/tab-stops.d.ts.map +1 -1
  37. package/dist/docx/ui/backstage-focus.d.ts +6 -0
  38. package/dist/docx/ui/backstage-focus.d.ts.map +1 -0
  39. package/dist/docx/ui/break-note-schema.d.ts +11 -0
  40. package/dist/docx/ui/break-note-schema.d.ts.map +1 -0
  41. package/dist/docx/ui/collaboration-authority.d.ts +31 -0
  42. package/dist/docx/ui/collaboration-authority.d.ts.map +1 -0
  43. package/dist/docx/ui/collaboration-identity.d.ts +8 -0
  44. package/dist/docx/ui/collaboration-identity.d.ts.map +1 -0
  45. package/dist/docx/ui/collaboration-protocol.d.ts +25 -0
  46. package/dist/docx/ui/collaboration-protocol.d.ts.map +1 -0
  47. package/dist/docx/ui/collaboration.d.ts +30 -0
  48. package/dist/docx/ui/collaboration.d.ts.map +1 -0
  49. package/dist/docx/ui/defined.d.ts +3 -0
  50. package/dist/docx/ui/defined.d.ts.map +1 -0
  51. package/dist/docx/ui/dirty-state.d.ts +9 -0
  52. package/dist/docx/ui/dirty-state.d.ts.map +1 -0
  53. package/dist/docx/ui/field-guard.d.ts +21 -0
  54. package/dist/docx/ui/field-guard.d.ts.map +1 -0
  55. package/dist/docx/ui/header-footer-history.d.ts +15 -0
  56. package/dist/docx/ui/header-footer-history.d.ts.map +1 -0
  57. package/dist/docx/ui/index.cjs +2380 -0
  58. package/dist/docx/ui/index.d.ts +30 -0
  59. package/dist/docx/ui/index.d.ts.map +1 -0
  60. package/dist/docx/ui/index.mjs +2317 -0
  61. package/dist/docx/ui/inline-content-schema.d.ts +15 -0
  62. package/dist/docx/ui/inline-content-schema.d.ts.map +1 -0
  63. package/dist/docx/ui/ligature-style.d.ts +4 -0
  64. package/dist/docx/ui/ligature-style.d.ts.map +1 -0
  65. package/dist/docx/ui/node-numbering.d.ts +8 -0
  66. package/dist/docx/ui/node-numbering.d.ts.map +1 -0
  67. package/dist/docx/ui/review-schema.d.ts +90 -0
  68. package/dist/docx/ui/review-schema.d.ts.map +1 -0
  69. package/dist/docx/ui/ribbon-action-ids.d.ts +26 -0
  70. package/dist/docx/ui/ribbon-action-ids.d.ts.map +1 -0
  71. package/dist/docx/ui/ribbon-colors.d.ts +3 -0
  72. package/dist/docx/ui/ribbon-colors.d.ts.map +1 -0
  73. package/dist/docx/ui/ribbon-legacy-labels.d.ts +6 -0
  74. package/dist/docx/ui/ribbon-legacy-labels.d.ts.map +1 -0
  75. package/dist/docx/ui/run-compare.d.ts +5 -0
  76. package/dist/docx/ui/run-compare.d.ts.map +1 -0
  77. package/dist/docx/ui/run-extra-mark.d.ts +17 -0
  78. package/dist/docx/ui/run-extra-mark.d.ts.map +1 -0
  79. package/dist/docx/ui/schema-marks.d.ts +273 -0
  80. package/dist/docx/ui/schema-marks.d.ts.map +1 -0
  81. package/dist/docx/ui/smartart-theme.d.ts +21 -0
  82. package/dist/docx/ui/smartart-theme.d.ts.map +1 -0
  83. package/dist/docx/ui/table-render.d.ts +24 -0
  84. package/dist/docx/ui/table-render.d.ts.map +1 -0
  85. package/dist/docx/ui/table-visuals.d.ts +3 -0
  86. package/dist/docx/ui/table-visuals.d.ts.map +1 -0
  87. package/dist/docx/ui/theme/css-vars.d.ts +6 -0
  88. package/dist/docx/ui/theme/css-vars.d.ts.map +1 -0
  89. package/dist/docx/ui/theme/defaults.d.ts +12 -0
  90. package/dist/docx/ui/theme/defaults.d.ts.map +1 -0
  91. package/dist/docx/ui/theme/element.d.ts +9 -0
  92. package/dist/docx/ui/theme/element.d.ts.map +1 -0
  93. package/dist/docx/ui/theme/index.d.ts +5 -0
  94. package/dist/docx/ui/theme/index.d.ts.map +1 -0
  95. package/dist/docx/ui/theme/types.d.ts +42 -0
  96. package/dist/docx/ui/theme/types.d.ts.map +1 -0
  97. package/dist/docx/ui/word-count.d.ts +3 -0
  98. package/dist/docx/ui/word-count.d.ts.map +1 -0
  99. package/dist/docx/ui/zoom-fit.d.ts +16 -0
  100. package/dist/docx/ui/zoom-fit.d.ts.map +1 -0
  101. package/dist/docx/validate-paragraph.d.ts.map +1 -1
  102. package/dist/index.cjs +169 -1
  103. package/dist/index.mjs +169 -1
  104. package/dist/math/index.cjs +2 -1
  105. package/dist/math/index.mjs +2 -1
  106. package/dist/opc/index.cjs +2 -1
  107. package/dist/opc/index.mjs +2 -1
  108. package/dist/pptx/automation/index.cjs +1572 -863
  109. package/dist/pptx/automation/index.d.ts +4 -3
  110. package/dist/pptx/automation/index.d.ts.map +1 -1
  111. package/dist/pptx/automation/index.mjs +1572 -863
  112. package/dist/pptx/chunks/color-ref-BM66NGFP.d.ts +42 -0
  113. package/dist/pptx/chunks/color-ref-BM66NGFP.d.ts.map +1 -0
  114. package/dist/pptx/chunks/{index-D0yGoLyw.d.ts → index-CcQTCBnT.d.ts} +63 -479
  115. package/dist/pptx/chunks/index-CcQTCBnT.d.ts.map +1 -0
  116. package/dist/pptx/chunks/{index-BtBj3VG1.d.ts → index-DHoPgFcH.d.ts} +529 -11
  117. package/dist/pptx/chunks/index-DHoPgFcH.d.ts.map +1 -0
  118. package/dist/pptx/chunks/{text-operations-GuisjlbR.d.ts → text-operations-BzdehTeY.d.ts} +50 -51
  119. package/dist/pptx/chunks/text-operations-BzdehTeY.d.ts.map +1 -0
  120. package/dist/pptx/cli/index.cjs +1204 -489
  121. package/dist/pptx/cli/index.d.ts +1 -1
  122. package/dist/pptx/cli/index.mjs +1204 -489
  123. package/dist/pptx/converter/index.cjs +8 -5
  124. package/dist/pptx/converter/index.d.ts +1 -1
  125. package/dist/pptx/converter/index.mjs +8 -5
  126. package/dist/pptx/index.cjs +1699 -989
  127. package/dist/pptx/index.d.ts +5 -4
  128. package/dist/pptx/index.mjs +1698 -990
  129. package/dist/pptx/ui/index.cjs +510 -0
  130. package/dist/pptx/ui/index.d.ts +80 -0
  131. package/dist/pptx/ui/index.d.ts.map +1 -0
  132. package/dist/pptx/ui/index.mjs +499 -0
  133. package/dist/visio/index.cjs +2 -1
  134. package/dist/visio/index.mjs +2 -1
  135. package/dist/visio/ui/contract.d.ts +33 -0
  136. package/dist/visio/ui/contract.d.ts.map +1 -0
  137. package/dist/visio/ui/demo-document.d.ts +4 -0
  138. package/dist/visio/ui/demo-document.d.ts.map +1 -0
  139. package/dist/visio/ui/diagnostics.d.ts +10 -0
  140. package/dist/visio/ui/diagnostics.d.ts.map +1 -0
  141. package/dist/visio/ui/document-history.d.ts +43 -0
  142. package/dist/visio/ui/document-history.d.ts.map +1 -0
  143. package/dist/visio/ui/document-text-search.d.ts +45 -0
  144. package/dist/visio/ui/document-text-search.d.ts.map +1 -0
  145. package/dist/visio/ui/edit-commands.d.ts +4 -0
  146. package/dist/visio/ui/edit-commands.d.ts.map +1 -0
  147. package/dist/visio/ui/edit-error.d.ts +5 -0
  148. package/dist/visio/ui/edit-error.d.ts.map +1 -0
  149. package/dist/visio/ui/foreign-vector-budget.d.ts +25 -0
  150. package/dist/visio/ui/foreign-vector-budget.d.ts.map +1 -0
  151. package/dist/visio/ui/index.cjs +1523 -0
  152. package/dist/visio/ui/index.d.ts +12 -0
  153. package/dist/visio/ui/index.d.ts.map +1 -0
  154. package/dist/visio/ui/index.mjs +1498 -0
  155. package/dist/visio/ui/scene-details.d.ts +8 -0
  156. package/dist/visio/ui/scene-details.d.ts.map +1 -0
  157. package/dist/visio/ui/scene-validation.d.ts +5 -0
  158. package/dist/visio/ui/scene-validation.d.ts.map +1 -0
  159. package/dist/visio/ui/snapshot-scene.d.ts +9 -0
  160. package/dist/visio/ui/snapshot-scene.d.ts.map +1 -0
  161. package/dist/xlsx/index.cjs +100 -98
  162. package/dist/xlsx/index.mjs +100 -98
  163. package/dist/xlsx/load/index.cjs +68 -66
  164. package/dist/xlsx/load/index.mjs +68 -66
  165. package/dist/xlsx/ui/backstage/templates.d.ts +16 -0
  166. package/dist/xlsx/ui/backstage/templates.d.ts.map +1 -0
  167. package/dist/xlsx/ui/commands/alignment.d.ts +4 -0
  168. package/dist/xlsx/ui/commands/alignment.d.ts.map +1 -0
  169. package/dist/xlsx/ui/commands/cells.d.ts +3 -0
  170. package/dist/xlsx/ui/commands/cells.d.ts.map +1 -0
  171. package/dist/xlsx/ui/commands/cf-presets.d.ts +15 -0
  172. package/dist/xlsx/ui/commands/cf-presets.d.ts.map +1 -0
  173. package/dist/xlsx/ui/commands/clipboard.d.ts +22 -0
  174. package/dist/xlsx/ui/commands/clipboard.d.ts.map +1 -0
  175. package/dist/xlsx/ui/commands/contextual.d.ts +13 -0
  176. package/dist/xlsx/ui/commands/contextual.d.ts.map +1 -0
  177. package/dist/xlsx/ui/commands/data.d.ts +3 -0
  178. package/dist/xlsx/ui/commands/data.d.ts.map +1 -0
  179. package/dist/xlsx/ui/commands/editing.d.ts +13 -0
  180. package/dist/xlsx/ui/commands/editing.d.ts.map +1 -0
  181. package/dist/xlsx/ui/commands/font.d.ts +21 -0
  182. package/dist/xlsx/ui/commands/font.d.ts.map +1 -0
  183. package/dist/xlsx/ui/commands/formulas.d.ts +15 -0
  184. package/dist/xlsx/ui/commands/formulas.d.ts.map +1 -0
  185. package/dist/xlsx/ui/commands/i18n/core-features.d.ts +3 -0
  186. package/dist/xlsx/ui/commands/i18n/core-features.d.ts.map +1 -0
  187. package/dist/xlsx/ui/commands/i18n/format-cells.d.ts +3 -0
  188. package/dist/xlsx/ui/commands/i18n/format-cells.d.ts.map +1 -0
  189. package/dist/xlsx/ui/commands/i18n/index.d.ts +4 -0
  190. package/dist/xlsx/ui/commands/i18n/index.d.ts.map +1 -0
  191. package/dist/xlsx/ui/commands/i18n/messages.d.ts +3 -0
  192. package/dist/xlsx/ui/commands/i18n/messages.d.ts.map +1 -0
  193. package/dist/xlsx/ui/commands/i18n/navigation.d.ts +3 -0
  194. package/dist/xlsx/ui/commands/i18n/navigation.d.ts.map +1 -0
  195. package/dist/xlsx/ui/commands/i18n/ribbon-home.d.ts +3 -0
  196. package/dist/xlsx/ui/commands/i18n/ribbon-home.d.ts.map +1 -0
  197. package/dist/xlsx/ui/commands/i18n/ribbon-tabs.d.ts +3 -0
  198. package/dist/xlsx/ui/commands/i18n/ribbon-tabs.d.ts.map +1 -0
  199. package/dist/xlsx/ui/commands/i18n/rules.d.ts +3 -0
  200. package/dist/xlsx/ui/commands/i18n/rules.d.ts.map +1 -0
  201. package/dist/xlsx/ui/commands/i18n/tools.d.ts +3 -0
  202. package/dist/xlsx/ui/commands/i18n/tools.d.ts.map +1 -0
  203. package/dist/xlsx/ui/commands/i18n/types.d.ts +5 -0
  204. package/dist/xlsx/ui/commands/i18n/types.d.ts.map +1 -0
  205. package/dist/xlsx/ui/commands/icons.d.ts +4 -0
  206. package/dist/xlsx/ui/commands/icons.d.ts.map +1 -0
  207. package/dist/xlsx/ui/commands/number.d.ts +11 -0
  208. package/dist/xlsx/ui/commands/number.d.ts.map +1 -0
  209. package/dist/xlsx/ui/commands/page-layout.d.ts +10 -0
  210. package/dist/xlsx/ui/commands/page-layout.d.ts.map +1 -0
  211. package/dist/xlsx/ui/commands/select-special.d.ts +12 -0
  212. package/dist/xlsx/ui/commands/select-special.d.ts.map +1 -0
  213. package/dist/xlsx/ui/commands/sort-filter.d.ts +3 -0
  214. package/dist/xlsx/ui/commands/sort-filter.d.ts.map +1 -0
  215. package/dist/xlsx/ui/commands/style-presets.d.ts +21 -0
  216. package/dist/xlsx/ui/commands/style-presets.d.ts.map +1 -0
  217. package/dist/xlsx/ui/commands/util.d.ts +59 -0
  218. package/dist/xlsx/ui/commands/util.d.ts.map +1 -0
  219. package/dist/xlsx/ui/commands.d.ts +36 -0
  220. package/dist/xlsx/ui/commands.d.ts.map +1 -0
  221. package/dist/xlsx/ui/context-menu/items.d.ts +36 -0
  222. package/dist/xlsx/ui/context-menu/items.d.ts.map +1 -0
  223. package/dist/xlsx/ui/context.d.ts +65 -0
  224. package/dist/xlsx/ui/context.d.ts.map +1 -0
  225. package/dist/xlsx/ui/dialogs/format-cells/number-categories.d.ts +28 -0
  226. package/dist/xlsx/ui/dialogs/format-cells/number-categories.d.ts.map +1 -0
  227. package/dist/xlsx/ui/dialogs/format-cells/types.d.ts +40 -0
  228. package/dist/xlsx/ui/dialogs/format-cells/types.d.ts.map +1 -0
  229. package/dist/xlsx/ui/dialogs/insert-chart-model.d.ts +9 -0
  230. package/dist/xlsx/ui/dialogs/insert-chart-model.d.ts.map +1 -0
  231. package/dist/xlsx/ui/dialogs.d.ts +9 -0
  232. package/dist/xlsx/ui/dialogs.d.ts.map +1 -0
  233. package/dist/xlsx/ui/dirty-state.d.ts +9 -0
  234. package/dist/xlsx/ui/dirty-state.d.ts.map +1 -0
  235. package/dist/xlsx/ui/formula-bar/name-resolve.d.ts +23 -0
  236. package/dist/xlsx/ui/formula-bar/name-resolve.d.ts.map +1 -0
  237. package/dist/xlsx/ui/grid/cell-items.d.ts +42 -0
  238. package/dist/xlsx/ui/grid/cell-items.d.ts.map +1 -0
  239. package/dist/xlsx/ui/grid/cell-paint.d.ts +26 -0
  240. package/dist/xlsx/ui/grid/cell-paint.d.ts.map +1 -0
  241. package/dist/xlsx/ui/grid/edit-bridge.d.ts +47 -0
  242. package/dist/xlsx/ui/grid/edit-bridge.d.ts.map +1 -0
  243. package/dist/xlsx/ui/grid/geometry.d.ts +76 -0
  244. package/dist/xlsx/ui/grid/geometry.d.ts.map +1 -0
  245. package/dist/xlsx/ui/grid/icon-sets.d.ts +3 -0
  246. package/dist/xlsx/ui/grid/icon-sets.d.ts.map +1 -0
  247. package/dist/xlsx/ui/grid/number-fit.d.ts +3 -0
  248. package/dist/xlsx/ui/grid/number-fit.d.ts.map +1 -0
  249. package/dist/xlsx/ui/grid/selection-ops.d.ts +32 -0
  250. package/dist/xlsx/ui/grid/selection-ops.d.ts.map +1 -0
  251. package/dist/xlsx/ui/grid/view-cache.d.ts +15 -0
  252. package/dist/xlsx/ui/grid/view-cache.d.ts.map +1 -0
  253. package/dist/xlsx/ui/index.cjs +28484 -0
  254. package/dist/xlsx/ui/index.d.ts +56 -0
  255. package/dist/xlsx/ui/index.d.ts.map +1 -0
  256. package/dist/xlsx/ui/index.mjs +28290 -0
  257. package/dist/xlsx/ui/locales/de/commands.d.ts +2 -0
  258. package/dist/xlsx/ui/locales/de/commands.d.ts.map +1 -0
  259. package/dist/xlsx/ui/locales/de/grid.d.ts +2 -0
  260. package/dist/xlsx/ui/locales/de/grid.d.ts.map +1 -0
  261. package/dist/xlsx/ui/locales/de/index.d.ts +2 -0
  262. package/dist/xlsx/ui/locales/de/index.d.ts.map +1 -0
  263. package/dist/xlsx/ui/locales/de/shell.d.ts +2 -0
  264. package/dist/xlsx/ui/locales/de/shell.d.ts.map +1 -0
  265. package/dist/xlsx/ui/locales/en/commands.d.ts +2 -0
  266. package/dist/xlsx/ui/locales/en/commands.d.ts.map +1 -0
  267. package/dist/xlsx/ui/locales/en/grid.d.ts +2 -0
  268. package/dist/xlsx/ui/locales/en/grid.d.ts.map +1 -0
  269. package/dist/xlsx/ui/locales/en/index.d.ts +2 -0
  270. package/dist/xlsx/ui/locales/en/index.d.ts.map +1 -0
  271. package/dist/xlsx/ui/locales/en/shell.d.ts +2 -0
  272. package/dist/xlsx/ui/locales/en/shell.d.ts.map +1 -0
  273. package/dist/xlsx/ui/locales/es/commands.d.ts +2 -0
  274. package/dist/xlsx/ui/locales/es/commands.d.ts.map +1 -0
  275. package/dist/xlsx/ui/locales/es/grid.d.ts +2 -0
  276. package/dist/xlsx/ui/locales/es/grid.d.ts.map +1 -0
  277. package/dist/xlsx/ui/locales/es/index.d.ts +2 -0
  278. package/dist/xlsx/ui/locales/es/index.d.ts.map +1 -0
  279. package/dist/xlsx/ui/locales/es/shell.d.ts +2 -0
  280. package/dist/xlsx/ui/locales/es/shell.d.ts.map +1 -0
  281. package/dist/xlsx/ui/locales/fr/commands.d.ts +2 -0
  282. package/dist/xlsx/ui/locales/fr/commands.d.ts.map +1 -0
  283. package/dist/xlsx/ui/locales/fr/grid.d.ts +2 -0
  284. package/dist/xlsx/ui/locales/fr/grid.d.ts.map +1 -0
  285. package/dist/xlsx/ui/locales/fr/index.d.ts +2 -0
  286. package/dist/xlsx/ui/locales/fr/index.d.ts.map +1 -0
  287. package/dist/xlsx/ui/locales/fr/shell.d.ts +2 -0
  288. package/dist/xlsx/ui/locales/fr/shell.d.ts.map +1 -0
  289. package/dist/xlsx/ui/locales/merge.d.ts +7 -0
  290. package/dist/xlsx/ui/locales/merge.d.ts.map +1 -0
  291. package/dist/xlsx/ui/locales/zh-CN/commands.d.ts +2 -0
  292. package/dist/xlsx/ui/locales/zh-CN/commands.d.ts.map +1 -0
  293. package/dist/xlsx/ui/locales/zh-CN/grid.d.ts +2 -0
  294. package/dist/xlsx/ui/locales/zh-CN/grid.d.ts.map +1 -0
  295. package/dist/xlsx/ui/locales/zh-CN/index.d.ts +2 -0
  296. package/dist/xlsx/ui/locales/zh-CN/index.d.ts.map +1 -0
  297. package/dist/xlsx/ui/locales/zh-CN/shell.d.ts +2 -0
  298. package/dist/xlsx/ui/locales/zh-CN/shell.d.ts.map +1 -0
  299. package/dist/xlsx/ui/localization.d.ts +23 -0
  300. package/dist/xlsx/ui/localization.d.ts.map +1 -0
  301. package/dist/xlsx/ui/ribbon/icon-paths.d.ts +9 -0
  302. package/dist/xlsx/ui/ribbon/icon-paths.d.ts.map +1 -0
  303. package/dist/xlsx/ui/ribbon/parts.d.ts +88 -0
  304. package/dist/xlsx/ui/ribbon/parts.d.ts.map +1 -0
  305. package/dist/xlsx/ui/ribbon/tab-api.d.ts +21 -0
  306. package/dist/xlsx/ui/ribbon/tab-api.d.ts.map +1 -0
  307. package/dist/xlsx/ui/ribbon/tabs/review-view.d.ts +5 -0
  308. package/dist/xlsx/ui/ribbon/tabs/review-view.d.ts.map +1 -0
  309. package/dist/xlsx/ui/ribbon/tabs/theme-palette.d.ts +8 -0
  310. package/dist/xlsx/ui/ribbon/tabs/theme-palette.d.ts.map +1 -0
  311. package/dist/xlsx/ui/ribbon/tell-me.d.ts +16 -0
  312. package/dist/xlsx/ui/ribbon/tell-me.d.ts.map +1 -0
  313. package/dist/xlsx/ui/selection.d.ts +34 -0
  314. package/dist/xlsx/ui/selection.d.ts.map +1 -0
  315. package/dist/xlsx/ui/theme/css-vars.d.ts +6 -0
  316. package/dist/xlsx/ui/theme/css-vars.d.ts.map +1 -0
  317. package/dist/xlsx/ui/theme/defaults.d.ts +6 -0
  318. package/dist/xlsx/ui/theme/defaults.d.ts.map +1 -0
  319. package/dist/xlsx/ui/theme/element.d.ts +9 -0
  320. package/dist/xlsx/ui/theme/element.d.ts.map +1 -0
  321. package/dist/xlsx/ui/theme/types.d.ts +54 -0
  322. package/dist/xlsx/ui/theme/types.d.ts.map +1 -0
  323. package/dist/xml/index.cjs +2 -1
  324. package/dist/xml/index.mjs +2 -1
  325. package/package.json +42 -4
  326. package/dist/pptx/chunks/index-BtBj3VG1.d.ts.map +0 -1
  327. package/dist/pptx/chunks/index-D0yGoLyw.d.ts.map +0 -1
  328. package/dist/pptx/chunks/text-operations-GuisjlbR.d.ts.map +0 -1
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Editor theme tokens.
3
+ *
4
+ * Provenance: the semantic key set mirrors the shared theme of pptx-viewer
5
+ * (packages/shared/src/theme/types.ts, `ViewerThemeColors` plus `radius`), which follows the
6
+ * shadcn/ui naming convention. Keys are camelCase here and become `--dve-*` custom properties
7
+ * (kebab-case). Values accept any CSS color. Only editor chrome is themed: the document paper
8
+ * stays white like Word's page.
9
+ */
10
+ export interface EditorTheme {
11
+ /** Application chrome background (title bar, window). */
12
+ background: string;
13
+ foreground: string;
14
+ /** Ribbon, panel and status-bar surface. */
15
+ card: string;
16
+ cardForeground: string;
17
+ /** Menus, dialogs and other floating surfaces. */
18
+ popover: string;
19
+ popoverForeground: string;
20
+ /** Brand and primary action color. */
21
+ primary: string;
22
+ primaryForeground: string;
23
+ secondary: string;
24
+ secondaryForeground: string;
25
+ /** Muted surface; also the area behind the document pages. */
26
+ muted: string;
27
+ mutedForeground: string;
28
+ /** Hover and selected highlight. */
29
+ accent: string;
30
+ accentForeground: string;
31
+ destructive: string;
32
+ destructiveForeground: string;
33
+ border: string;
34
+ input: string;
35
+ /** Focus ring. */
36
+ ring: string;
37
+ /** Base corner radius, e.g. `4px`. */
38
+ radius: string;
39
+ }
40
+ export type EditorThemeMode = 'light' | 'dark' | 'auto';
41
+ export declare const EDITOR_THEME_MODES: readonly EditorThemeMode[];
42
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/docx/ui/theme/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,WAAW,WAAW;IAC3B,yDAAyD;IACzD,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,4CAA4C;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,kDAAkD;IAClD,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,sCAAsC;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,8DAA8D;IAC9D,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;IACxB,oCAAoC;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,kBAAkB;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,sCAAsC;IACtC,MAAM,EAAE,MAAM,CAAC;CACf;AACD,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;AACxD,eAAO,MAAM,kBAAkB,EAAE,SAAS,eAAe,EAA8B,CAAC"}
@@ -0,0 +1,3 @@
1
+ /** Unicode-aware word counting; segmentation is provided by the host's ICU data. */
2
+ export declare function countWords(text: string, locale?: string): number;
3
+ //# sourceMappingURL=word-count.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"word-count.d.ts","sourceRoot":"","sources":["../../../src/docx/ui/word-count.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAYhE"}
@@ -0,0 +1,16 @@
1
+ export type ZoomFit = 'actual' | 'width' | 'page' | 'pages';
2
+ /** The gap between pages laid side by side in Print Layout, in CSS pixels. */
3
+ export declare const PAGE_GAP = 24;
4
+ /**
5
+ * The zoom percentage that makes a page fit its viewport: 100% for `actual`, the viewport's width
6
+ * for `width`, and both dimensions for `page`. Sizes are in the same CSS-pixel units; the result
7
+ * is a whole percent clamped to the 10-500% range Word allows.
8
+ */
9
+ export declare function fitZoomPercent(mode: ZoomFit, viewport: {
10
+ width: number;
11
+ height: number;
12
+ }, page: {
13
+ width: number;
14
+ height: number;
15
+ }): number;
16
+ //# sourceMappingURL=zoom-fit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zoom-fit.d.ts","sourceRoot":"","sources":["../../../src/docx/ui/zoom-fit.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;AAE5D,8EAA8E;AAC9E,eAAO,MAAM,QAAQ,KAAK,CAAC;AAE3B;;;;GAIG;AACH,wBAAgB,cAAc,CAC7B,IAAI,EAAE,OAAO,EACb,QAAQ,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EAC3C,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACrC,MAAM,CAUR"}
@@ -1 +1 @@
1
- {"version":3,"file":"validate-paragraph.d.ts","sourceRoot":"","sources":["../../src/docx/validate-paragraph.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAW,OAAO,EAAE,MAAM,YAAY,CAAC;AACxE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAQ,MAAM,sBAAsB,CAAC;AAMrD,6FAA6F;AAC7F,wBAAgB,sBAAsB,CACrC,CAAC,EAAE,OAAO,EACV,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,mBAAmB,GAAG,SAAS,GACpC,IAAI,CAMN;AAED,gGAAgG;AAChG,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,SAAS,GAAG,IAAI,CAGhG;AAYD,wBAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,GAAG,IAAI,CA6D1D;AAQD,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI,CA2DxE"}
1
+ {"version":3,"file":"validate-paragraph.d.ts","sourceRoot":"","sources":["../../src/docx/validate-paragraph.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAW,OAAO,EAAE,MAAM,YAAY,CAAC;AACxE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAM/C,6FAA6F;AAC7F,wBAAgB,sBAAsB,CACrC,CAAC,EAAE,OAAO,EACV,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,mBAAmB,GAAG,SAAS,GACpC,IAAI,CAMN;AAED,gGAAgG;AAChG,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,SAAS,GAAG,IAAI,CAGhG;AAYD,wBAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,GAAG,IAAI,CA6D1D;AAQD,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI,CA2DxE"}
package/dist/index.cjs CHANGED
@@ -191,13 +191,19 @@ function linearToSrgb255(linear) {
191
191
  // src/chart/index.ts
192
192
  var chart_exports = {};
193
193
  __export(chart_exports, {
194
+ aggregateByCategory: () => aggregateByCategory,
195
+ axisTargetIntervals: () => axisTargetIntervals,
194
196
  computeBoxStats: () => computeBoxStats,
197
+ computeHistogramBins: () => computeHistogramBins,
195
198
  computeLinearRegression: () => computeLinearRegression,
196
199
  computeRSquared: () => computeRSquared,
197
200
  computeStackedSeriesPlots: () => computeStackedSeriesPlots,
198
201
  fitPolynomial: () => fitPolynomial,
199
202
  groupRowsByCategory: () => groupRowsByCategory,
203
+ niceAxisStep: () => niceAxisStep,
204
+ niceValueAxisBounds: () => niceValueAxisBounds,
200
205
  resolveBlankDisplay: () => resolveBlankDisplay,
206
+ scottBinCount: () => scottBinCount,
201
207
  visibleRuns: () => visibleRuns
202
208
  });
203
209
 
@@ -420,6 +426,167 @@ function computeStackedSeriesPlots(seriesValues, catCount, percent) {
420
426
  });
421
427
  }
422
428
 
429
+ // src/chart/axis-nice.ts
430
+ var NICE_STEPS = [1, 2, 2.5, 5, 10];
431
+ var HEADROOM = 0.05;
432
+ var POINTS_PER_GRIDLINE = 20;
433
+ var MIN_TARGET_INTERVALS = 1;
434
+ var MAX_TARGET_INTERVALS = 10;
435
+ var PX_PER_POINT = 4 / 3;
436
+ var DEFAULT_TARGET_INTERVALS = 4;
437
+ var ZERO_ANCHOR_RATIO = 5 / 6;
438
+ function axisTargetIntervals(plotHeightPx) {
439
+ if (!Number.isFinite(plotHeightPx) || plotHeightPx <= 0) {
440
+ return DEFAULT_TARGET_INTERVALS;
441
+ }
442
+ const plotHeightPt = plotHeightPx / PX_PER_POINT;
443
+ const raw = Math.round(plotHeightPt / POINTS_PER_GRIDLINE);
444
+ return Math.min(MAX_TARGET_INTERVALS, Math.max(MIN_TARGET_INTERVALS, raw));
445
+ }
446
+ function niceAxisStep(value) {
447
+ if (!Number.isFinite(value) || value <= 0) {
448
+ return 1;
449
+ }
450
+ const exponent = Math.floor(Math.log10(value));
451
+ const power = 10 ** exponent;
452
+ const mantissa = value / power;
453
+ const step = NICE_STEPS.find((candidate) => mantissa <= candidate + 1e-12) ?? 10;
454
+ return step * power;
455
+ }
456
+ function snap(value, unit, direction) {
457
+ const scaled = value / unit;
458
+ const rounded = direction === "up" ? Math.ceil(scaled - 1e-9) : Math.floor(scaled + 1e-9);
459
+ return rounded * unit;
460
+ }
461
+ function niceValueAxisBounds(dataMin, dataMax, targetIntervals = DEFAULT_TARGET_INTERVALS, headroom = HEADROOM) {
462
+ if (!Number.isFinite(dataMin) || !Number.isFinite(dataMax)) {
463
+ return { min: 0, max: 1, majorUnit: 0.5 };
464
+ }
465
+ const low = Math.min(dataMin, dataMax);
466
+ const high = Math.max(dataMin, dataMax);
467
+ const intervals = Math.max(1, Math.round(targetIntervals));
468
+ if (low === high) {
469
+ if (low === 0) {
470
+ return { min: 0, max: 1, majorUnit: 1 / intervals };
471
+ }
472
+ const unit2 = niceAxisStep(Math.abs(low) / intervals);
473
+ return low > 0 ? { min: 0, max: snap(low, unit2, "up") || unit2, majorUnit: unit2 } : { min: snap(low, unit2, "down"), max: 0, majorUnit: unit2 };
474
+ }
475
+ const dataSpan = high - low;
476
+ const padding = dataSpan * headroom;
477
+ let paddedMin;
478
+ let paddedMax;
479
+ if (low >= 0) {
480
+ paddedMin = low < high * ZERO_ANCHOR_RATIO ? 0 : low - padding;
481
+ paddedMax = high + padding;
482
+ } else if (high <= 0) {
483
+ paddedMax = high > low * ZERO_ANCHOR_RATIO ? 0 : high + padding;
484
+ paddedMin = low - padding;
485
+ } else {
486
+ paddedMin = low - padding;
487
+ paddedMax = high + padding;
488
+ }
489
+ const unit = niceAxisStep((paddedMax - paddedMin) / intervals);
490
+ const min = paddedMin === 0 ? 0 : snap(paddedMin, unit, "down");
491
+ let max = paddedMax === 0 ? 0 : snap(paddedMax, unit, "up");
492
+ if (max <= min) {
493
+ max = min + unit;
494
+ }
495
+ return { min, max, majorUnit: unit };
496
+ }
497
+
498
+ // src/chart/histogram-binning.ts
499
+ function binLabel(lower, upper, closed, format) {
500
+ return closed === "r" ? `(${format(lower)}, ${format(upper)}]` : `[${format(lower)}, ${format(upper)})`;
501
+ }
502
+ function scottBinCount(values, min, max) {
503
+ if (values.length < 2 || max <= min) {
504
+ return 1;
505
+ }
506
+ const mean = values.reduce((sum, value) => sum + value, 0) / values.length;
507
+ const variance = values.reduce((sum, value) => sum + (value - mean) ** 2, 0) / (values.length - 1);
508
+ const sd = Math.sqrt(variance);
509
+ if (!(sd > 0)) {
510
+ return 1;
511
+ }
512
+ const width = 3.49 * sd * values.length ** (-1 / 3);
513
+ return Math.max(1, Math.ceil((max - min) / width));
514
+ }
515
+ function computeHistogramBins(values, options, format = String) {
516
+ const closed = options.intervalClosed ?? "l";
517
+ const finite2 = values.map((value, sourceIndex) => ({ value, sourceIndex })).filter((item) => Number.isFinite(item.value));
518
+ if (finite2.length === 0) {
519
+ return [];
520
+ }
521
+ const underflow = typeof options.underflow === "number" ? options.underflow : void 0;
522
+ const overflow = typeof options.overflow === "number" ? options.overflow : void 0;
523
+ const under = underflow === void 0 ? [] : finite2.filter(
524
+ (item) => closed === "r" ? item.value <= underflow : item.value < underflow
525
+ );
526
+ const over = overflow === void 0 ? [] : finite2.filter((item) => closed === "l" ? item.value >= overflow : item.value > overflow);
527
+ const regular = finite2.filter((item) => !under.includes(item) && !over.includes(item));
528
+ const result = [];
529
+ if (underflow !== void 0) {
530
+ result.push({
531
+ value: under.length,
532
+ label: `${closed === "r" ? "\u2264" : "<"} ${format(underflow)}`,
533
+ sourceIndices: under.map((item) => item.sourceIndex)
534
+ });
535
+ }
536
+ if (regular.length > 0) {
537
+ const min = Math.min(...regular.map((item) => item.value));
538
+ const max = Math.max(...regular.map((item) => item.value));
539
+ const requestedSize = options.binSize && options.binSize > 0 ? options.binSize : void 0;
540
+ const requestedCount = options.binCount && options.binCount > 0 ? options.binCount : void 0;
541
+ const start = requestedSize ? Math.floor(min / requestedSize) * requestedSize : min;
542
+ const count = requestedSize ? Math.max(
543
+ closed === "l" ? Math.floor((max - start) / requestedSize) + 1 : Math.ceil((max - start) / requestedSize),
544
+ 1
545
+ ) : Math.max(
546
+ requestedCount ?? scottBinCount(
547
+ regular.map((item) => item.value),
548
+ min,
549
+ max
550
+ ),
551
+ 1
552
+ );
553
+ const width = requestedSize ?? Math.max((max - start) / count, 1);
554
+ const bins = Array.from({ length: count }, (_, index) => ({
555
+ value: 0,
556
+ label: binLabel(start + index * width, start + (index + 1) * width, closed, format),
557
+ sourceIndices: []
558
+ }));
559
+ for (const item of regular) {
560
+ const rawIndex = closed === "r" ? Math.ceil((item.value - start) / width) - 1 : Math.floor((item.value - start) / width);
561
+ const index = Math.max(0, Math.min(rawIndex, bins.length - 1));
562
+ const bin = bins[index];
563
+ if (!bin) continue;
564
+ bin.value += 1;
565
+ bin.sourceIndices.push(item.sourceIndex);
566
+ }
567
+ result.push(...bins);
568
+ }
569
+ if (overflow !== void 0) {
570
+ result.push({
571
+ value: over.length,
572
+ label: `${closed === "l" ? "\u2265" : ">"} ${format(overflow)}`,
573
+ sourceIndices: over.map((item) => item.sourceIndex)
574
+ });
575
+ }
576
+ return result;
577
+ }
578
+ function aggregateByCategory(values, rawCategories) {
579
+ const { uniqueCategories, rowIndexesByCategory } = groupRowsByCategory(rawCategories);
580
+ return uniqueCategories.map((label) => {
581
+ const rows = rowIndexesByCategory.get(label) ?? [];
582
+ return {
583
+ value: rows.reduce((sum, row) => sum + (values[row] ?? 0), 0),
584
+ label,
585
+ sourceIndices: rows
586
+ };
587
+ });
588
+ }
589
+
423
590
  // src/text/index.ts
424
591
  var text_exports = {};
425
592
  __export(text_exports, {
@@ -880,7 +1047,8 @@ function parseXml(xml, options = {}) {
880
1047
  }).parseFromString(xml, "application/xml");
881
1048
  } catch (error) {
882
1049
  throw new Error(
883
- `Invalid ${label} XML: ${error instanceof Error ? error.message : String(error)}`
1050
+ `Invalid ${label} XML: ${error instanceof Error ? error.message : String(error)}`,
1051
+ { cause: error }
884
1052
  );
885
1053
  }
886
1054
  if (parseError || !parsed.documentElement)
package/dist/index.mjs CHANGED
@@ -189,13 +189,19 @@ function linearToSrgb255(linear) {
189
189
  // src/chart/index.ts
190
190
  var chart_exports = {};
191
191
  __export(chart_exports, {
192
+ aggregateByCategory: () => aggregateByCategory,
193
+ axisTargetIntervals: () => axisTargetIntervals,
192
194
  computeBoxStats: () => computeBoxStats,
195
+ computeHistogramBins: () => computeHistogramBins,
193
196
  computeLinearRegression: () => computeLinearRegression,
194
197
  computeRSquared: () => computeRSquared,
195
198
  computeStackedSeriesPlots: () => computeStackedSeriesPlots,
196
199
  fitPolynomial: () => fitPolynomial,
197
200
  groupRowsByCategory: () => groupRowsByCategory,
201
+ niceAxisStep: () => niceAxisStep,
202
+ niceValueAxisBounds: () => niceValueAxisBounds,
198
203
  resolveBlankDisplay: () => resolveBlankDisplay,
204
+ scottBinCount: () => scottBinCount,
199
205
  visibleRuns: () => visibleRuns
200
206
  });
201
207
 
@@ -418,6 +424,167 @@ function computeStackedSeriesPlots(seriesValues, catCount, percent) {
418
424
  });
419
425
  }
420
426
 
427
+ // src/chart/axis-nice.ts
428
+ var NICE_STEPS = [1, 2, 2.5, 5, 10];
429
+ var HEADROOM = 0.05;
430
+ var POINTS_PER_GRIDLINE = 20;
431
+ var MIN_TARGET_INTERVALS = 1;
432
+ var MAX_TARGET_INTERVALS = 10;
433
+ var PX_PER_POINT = 4 / 3;
434
+ var DEFAULT_TARGET_INTERVALS = 4;
435
+ var ZERO_ANCHOR_RATIO = 5 / 6;
436
+ function axisTargetIntervals(plotHeightPx) {
437
+ if (!Number.isFinite(plotHeightPx) || plotHeightPx <= 0) {
438
+ return DEFAULT_TARGET_INTERVALS;
439
+ }
440
+ const plotHeightPt = plotHeightPx / PX_PER_POINT;
441
+ const raw = Math.round(plotHeightPt / POINTS_PER_GRIDLINE);
442
+ return Math.min(MAX_TARGET_INTERVALS, Math.max(MIN_TARGET_INTERVALS, raw));
443
+ }
444
+ function niceAxisStep(value) {
445
+ if (!Number.isFinite(value) || value <= 0) {
446
+ return 1;
447
+ }
448
+ const exponent = Math.floor(Math.log10(value));
449
+ const power = 10 ** exponent;
450
+ const mantissa = value / power;
451
+ const step = NICE_STEPS.find((candidate) => mantissa <= candidate + 1e-12) ?? 10;
452
+ return step * power;
453
+ }
454
+ function snap(value, unit, direction) {
455
+ const scaled = value / unit;
456
+ const rounded = direction === "up" ? Math.ceil(scaled - 1e-9) : Math.floor(scaled + 1e-9);
457
+ return rounded * unit;
458
+ }
459
+ function niceValueAxisBounds(dataMin, dataMax, targetIntervals = DEFAULT_TARGET_INTERVALS, headroom = HEADROOM) {
460
+ if (!Number.isFinite(dataMin) || !Number.isFinite(dataMax)) {
461
+ return { min: 0, max: 1, majorUnit: 0.5 };
462
+ }
463
+ const low = Math.min(dataMin, dataMax);
464
+ const high = Math.max(dataMin, dataMax);
465
+ const intervals = Math.max(1, Math.round(targetIntervals));
466
+ if (low === high) {
467
+ if (low === 0) {
468
+ return { min: 0, max: 1, majorUnit: 1 / intervals };
469
+ }
470
+ const unit2 = niceAxisStep(Math.abs(low) / intervals);
471
+ return low > 0 ? { min: 0, max: snap(low, unit2, "up") || unit2, majorUnit: unit2 } : { min: snap(low, unit2, "down"), max: 0, majorUnit: unit2 };
472
+ }
473
+ const dataSpan = high - low;
474
+ const padding = dataSpan * headroom;
475
+ let paddedMin;
476
+ let paddedMax;
477
+ if (low >= 0) {
478
+ paddedMin = low < high * ZERO_ANCHOR_RATIO ? 0 : low - padding;
479
+ paddedMax = high + padding;
480
+ } else if (high <= 0) {
481
+ paddedMax = high > low * ZERO_ANCHOR_RATIO ? 0 : high + padding;
482
+ paddedMin = low - padding;
483
+ } else {
484
+ paddedMin = low - padding;
485
+ paddedMax = high + padding;
486
+ }
487
+ const unit = niceAxisStep((paddedMax - paddedMin) / intervals);
488
+ const min = paddedMin === 0 ? 0 : snap(paddedMin, unit, "down");
489
+ let max = paddedMax === 0 ? 0 : snap(paddedMax, unit, "up");
490
+ if (max <= min) {
491
+ max = min + unit;
492
+ }
493
+ return { min, max, majorUnit: unit };
494
+ }
495
+
496
+ // src/chart/histogram-binning.ts
497
+ function binLabel(lower, upper, closed, format) {
498
+ return closed === "r" ? `(${format(lower)}, ${format(upper)}]` : `[${format(lower)}, ${format(upper)})`;
499
+ }
500
+ function scottBinCount(values, min, max) {
501
+ if (values.length < 2 || max <= min) {
502
+ return 1;
503
+ }
504
+ const mean = values.reduce((sum, value) => sum + value, 0) / values.length;
505
+ const variance = values.reduce((sum, value) => sum + (value - mean) ** 2, 0) / (values.length - 1);
506
+ const sd = Math.sqrt(variance);
507
+ if (!(sd > 0)) {
508
+ return 1;
509
+ }
510
+ const width = 3.49 * sd * values.length ** (-1 / 3);
511
+ return Math.max(1, Math.ceil((max - min) / width));
512
+ }
513
+ function computeHistogramBins(values, options, format = String) {
514
+ const closed = options.intervalClosed ?? "l";
515
+ const finite2 = values.map((value, sourceIndex) => ({ value, sourceIndex })).filter((item) => Number.isFinite(item.value));
516
+ if (finite2.length === 0) {
517
+ return [];
518
+ }
519
+ const underflow = typeof options.underflow === "number" ? options.underflow : void 0;
520
+ const overflow = typeof options.overflow === "number" ? options.overflow : void 0;
521
+ const under = underflow === void 0 ? [] : finite2.filter(
522
+ (item) => closed === "r" ? item.value <= underflow : item.value < underflow
523
+ );
524
+ const over = overflow === void 0 ? [] : finite2.filter((item) => closed === "l" ? item.value >= overflow : item.value > overflow);
525
+ const regular = finite2.filter((item) => !under.includes(item) && !over.includes(item));
526
+ const result = [];
527
+ if (underflow !== void 0) {
528
+ result.push({
529
+ value: under.length,
530
+ label: `${closed === "r" ? "\u2264" : "<"} ${format(underflow)}`,
531
+ sourceIndices: under.map((item) => item.sourceIndex)
532
+ });
533
+ }
534
+ if (regular.length > 0) {
535
+ const min = Math.min(...regular.map((item) => item.value));
536
+ const max = Math.max(...regular.map((item) => item.value));
537
+ const requestedSize = options.binSize && options.binSize > 0 ? options.binSize : void 0;
538
+ const requestedCount = options.binCount && options.binCount > 0 ? options.binCount : void 0;
539
+ const start = requestedSize ? Math.floor(min / requestedSize) * requestedSize : min;
540
+ const count = requestedSize ? Math.max(
541
+ closed === "l" ? Math.floor((max - start) / requestedSize) + 1 : Math.ceil((max - start) / requestedSize),
542
+ 1
543
+ ) : Math.max(
544
+ requestedCount ?? scottBinCount(
545
+ regular.map((item) => item.value),
546
+ min,
547
+ max
548
+ ),
549
+ 1
550
+ );
551
+ const width = requestedSize ?? Math.max((max - start) / count, 1);
552
+ const bins = Array.from({ length: count }, (_, index) => ({
553
+ value: 0,
554
+ label: binLabel(start + index * width, start + (index + 1) * width, closed, format),
555
+ sourceIndices: []
556
+ }));
557
+ for (const item of regular) {
558
+ const rawIndex = closed === "r" ? Math.ceil((item.value - start) / width) - 1 : Math.floor((item.value - start) / width);
559
+ const index = Math.max(0, Math.min(rawIndex, bins.length - 1));
560
+ const bin = bins[index];
561
+ if (!bin) continue;
562
+ bin.value += 1;
563
+ bin.sourceIndices.push(item.sourceIndex);
564
+ }
565
+ result.push(...bins);
566
+ }
567
+ if (overflow !== void 0) {
568
+ result.push({
569
+ value: over.length,
570
+ label: `${closed === "l" ? "\u2265" : ">"} ${format(overflow)}`,
571
+ sourceIndices: over.map((item) => item.sourceIndex)
572
+ });
573
+ }
574
+ return result;
575
+ }
576
+ function aggregateByCategory(values, rawCategories) {
577
+ const { uniqueCategories, rowIndexesByCategory } = groupRowsByCategory(rawCategories);
578
+ return uniqueCategories.map((label) => {
579
+ const rows = rowIndexesByCategory.get(label) ?? [];
580
+ return {
581
+ value: rows.reduce((sum, row) => sum + (values[row] ?? 0), 0),
582
+ label,
583
+ sourceIndices: rows
584
+ };
585
+ });
586
+ }
587
+
421
588
  // src/text/index.ts
422
589
  var text_exports = {};
423
590
  __export(text_exports, {
@@ -878,7 +1045,8 @@ function parseXml(xml, options = {}) {
878
1045
  }).parseFromString(xml, "application/xml");
879
1046
  } catch (error) {
880
1047
  throw new Error(
881
- `Invalid ${label} XML: ${error instanceof Error ? error.message : String(error)}`
1048
+ `Invalid ${label} XML: ${error instanceof Error ? error.message : String(error)}`,
1049
+ { cause: error }
882
1050
  );
883
1051
  }
884
1052
  if (parseError || !parsed.documentElement)
@@ -1948,7 +1948,8 @@ function parseXml(xml, options = {}) {
1948
1948
  }).parseFromString(xml, "application/xml");
1949
1949
  } catch (error) {
1950
1950
  throw new Error(
1951
- `Invalid ${label} XML: ${error instanceof Error ? error.message : String(error)}`
1951
+ `Invalid ${label} XML: ${error instanceof Error ? error.message : String(error)}`,
1952
+ { cause: error }
1952
1953
  );
1953
1954
  }
1954
1955
  if (parseError || !parsed.documentElement)
@@ -1946,7 +1946,8 @@ function parseXml(xml, options = {}) {
1946
1946
  }).parseFromString(xml, "application/xml");
1947
1947
  } catch (error) {
1948
1948
  throw new Error(
1949
- `Invalid ${label} XML: ${error instanceof Error ? error.message : String(error)}`
1949
+ `Invalid ${label} XML: ${error instanceof Error ? error.message : String(error)}`,
1950
+ { cause: error }
1950
1951
  );
1951
1952
  }
1952
1953
  if (parseError || !parsed.documentElement)
@@ -139,7 +139,8 @@ function parseXml(xml, options = {}) {
139
139
  }).parseFromString(xml, "application/xml");
140
140
  } catch (error) {
141
141
  throw new Error(
142
- `Invalid ${label} XML: ${error instanceof Error ? error.message : String(error)}`
142
+ `Invalid ${label} XML: ${error instanceof Error ? error.message : String(error)}`,
143
+ { cause: error }
143
144
  );
144
145
  }
145
146
  if (parseError || !parsed.documentElement)
@@ -137,7 +137,8 @@ function parseXml(xml, options = {}) {
137
137
  }).parseFromString(xml, "application/xml");
138
138
  } catch (error) {
139
139
  throw new Error(
140
- `Invalid ${label} XML: ${error instanceof Error ? error.message : String(error)}`
140
+ `Invalid ${label} XML: ${error instanceof Error ? error.message : String(error)}`,
141
+ { cause: error }
141
142
  );
142
143
  }
143
144
  if (parseError || !parsed.documentElement)