@svgrid/grid 3.0.0 → 3.0.2

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 (304) hide show
  1. package/CHANGELOG.md +116 -88
  2. package/README.md +199 -199
  3. package/dist/FlexRender.svelte +96 -96
  4. package/dist/GridFooter.svelte +190 -181
  5. package/dist/GridFooter.svelte.d.ts +8 -0
  6. package/dist/GridMenus.svelte +18 -10
  7. package/dist/GridMenus.svelte.d.ts +2 -1
  8. package/dist/SvAutoComplete.svelte +169 -169
  9. package/dist/SvAvatar.svelte +75 -75
  10. package/dist/SvCalendar.svelte +503 -503
  11. package/dist/SvCarousel.svelte +141 -141
  12. package/dist/SvCheckBox.svelte +102 -102
  13. package/dist/SvCircularProgress.svelte +109 -109
  14. package/dist/SvColorInput.svelte +181 -181
  15. package/dist/SvComboBox.svelte +279 -279
  16. package/dist/SvContextMenu.svelte +116 -116
  17. package/dist/SvCountryInput.svelte +163 -163
  18. package/dist/SvDrawer.svelte +254 -254
  19. package/dist/SvDropDownList.svelte +378 -378
  20. package/dist/SvDurationInput.svelte +126 -126
  21. package/dist/SvField.svelte +293 -293
  22. package/dist/SvForm.svelte +437 -437
  23. package/dist/SvGrid.controller.svelte.d.ts +17 -0
  24. package/dist/SvGrid.controller.svelte.js +128 -14
  25. package/dist/SvGrid.css +79 -10
  26. package/dist/SvGrid.svelte +191 -186
  27. package/dist/SvGrid.types.d.ts +42 -1
  28. package/dist/SvGridCellEditor.svelte +748 -744
  29. package/dist/SvGridChart.svelte +2246 -1716
  30. package/dist/SvGridChart.svelte.d.ts +63 -1
  31. package/dist/SvGridChartPanel.svelte +633 -485
  32. package/dist/SvGridChartView.svelte +79 -70
  33. package/dist/SvGridChartView.svelte.d.ts +7 -0
  34. package/dist/SvGridDropdown.svelte +728 -728
  35. package/dist/SvGridSelect.svelte +270 -270
  36. package/dist/SvGroupCell.svelte +141 -116
  37. package/dist/SvGroupCell.svelte.d.ts +8 -0
  38. package/dist/SvListBox.svelte +334 -334
  39. package/dist/SvMaskedInput.svelte +122 -122
  40. package/dist/SvMenu.svelte +124 -124
  41. package/dist/SvMenuList.svelte +146 -146
  42. package/dist/SvMultiSelect.svelte +293 -293
  43. package/dist/SvNumberInput.svelte +172 -172
  44. package/dist/SvOtpInput.svelte +158 -158
  45. package/dist/SvPasswordInput.svelte +151 -151
  46. package/dist/SvPhoneInput.svelte +133 -133
  47. package/dist/SvPopover.svelte +197 -197
  48. package/dist/SvProgress.svelte +116 -116
  49. package/dist/SvRadioGroup.svelte +107 -107
  50. package/dist/SvRating.svelte +112 -112
  51. package/dist/SvResult.svelte +73 -73
  52. package/dist/SvRichText.svelte +211 -211
  53. package/dist/SvRowGroupPanel.svelte +186 -170
  54. package/dist/SvRowGroupPanel.svelte.d.ts +8 -0
  55. package/dist/SvScrollArea.svelte +61 -61
  56. package/dist/SvSlider.svelte +203 -203
  57. package/dist/SvSwitchButton.svelte +108 -108
  58. package/dist/SvTagsInput.svelte +115 -115
  59. package/dist/SvTextInput.svelte +147 -147
  60. package/dist/SvTimePicker.svelte +245 -245
  61. package/dist/SvToaster.svelte +159 -159
  62. package/dist/SvToggleButton.svelte +85 -85
  63. package/dist/SvTooltip.svelte +161 -161
  64. package/dist/SvTour.svelte +208 -208
  65. package/dist/SvTree.svelte +444 -444
  66. package/dist/SvTreeSelect.svelte +239 -239
  67. package/dist/ai.d.ts +11 -2
  68. package/dist/ai.js +51 -7
  69. package/dist/cdn/GridMenus-DyFA-QxA.js +602 -0
  70. package/dist/cdn/GridMenus-M2XP9t0_.js +603 -0
  71. package/dist/cdn/{SvDateRangeInput-DflbiP7N.js → SvDateRangeInput-CaOuMs8O.js} +1 -1
  72. package/dist/cdn/{SvDateRangeInput-Bh0A0JkF.js → SvDateRangeInput-DMLKmGEc.js} +1 -1
  73. package/dist/cdn/{SvDateTimePicker-Bivn8dAP.js → SvDateTimePicker-CCbDZNZB.js} +1 -1
  74. package/dist/cdn/{SvDateTimePicker-BWwpfB_o.js → SvDateTimePicker-sonaH0oh.js} +1 -1
  75. package/dist/cdn/{SvGridCellEditor-Ba7rY3eu.js → SvGridCellEditor-BWnTi2N7.js} +2 -2
  76. package/dist/cdn/{SvGridCellEditor-AXL8cHGO.js → SvGridCellEditor-CjEJMJKc.js} +2 -2
  77. package/dist/cdn/SvGridChart-DAb9RbRs.js +1480 -0
  78. package/dist/cdn/SvGridChart-Yl-IXZFO.js +1481 -0
  79. package/dist/cdn/SvGridChartPanel-DayQpDsR.js +834 -0
  80. package/dist/cdn/SvGridChartPanel-aqf8n-vJ.js +810 -0
  81. package/dist/cdn/{SvGridChartView-eSPuJE6g.js → SvGridChartView-CxfakxR0.js} +5 -3
  82. package/dist/cdn/{SvGridChartView-SmPW10dI.js → SvGridChartView-Dm_YEx9L.js} +5 -3
  83. package/dist/cdn/{SvGridDropdown-B1ZcLpgs.js → SvGridDropdown-D0VdjeR8.js} +1 -1
  84. package/dist/cdn/{SvGridDropdown-CtdbHcIS.js → SvGridDropdown-D13MtJ2j.js} +1 -1
  85. package/dist/cdn/cell-formatting-C2Hf5gqd.js +86 -0
  86. package/dist/cdn/chart-CKJRCPOk.js +1652 -0
  87. package/dist/cdn/{date-format-DZT7T1wf.js → date-format-BNii4zeD.js} +2 -2
  88. package/dist/cdn/{date-format-CcP1tafP.js → date-format-BnnHlqGw.js} +2 -2
  89. package/dist/cdn/{export-format-Cv1Dll6k.js → export-format-CUDLy2yn.js} +84 -168
  90. package/dist/cdn/{src-B_YS5AOc.js → src-BJ2opd0j.js} +3642 -3450
  91. package/dist/cdn/{src-DYXXpuSk.js → src-DNbz94Ct.js} +8649 -8457
  92. package/dist/cdn/svgrid.js +16 -15
  93. package/dist/cdn/svgrid.svelte-external.js +16 -15
  94. package/dist/cell-formatting.d.ts +7 -0
  95. package/dist/cell-formatting.js +7 -1
  96. package/dist/chart-export.d.ts +23 -2
  97. package/dist/chart-export.js +88 -14
  98. package/dist/chart.d.ts +410 -18
  99. package/dist/chart.js +824 -24
  100. package/dist/editing.js +22 -13
  101. package/dist/grid-icons.d.ts +49 -0
  102. package/dist/grid-icons.js +86 -0
  103. package/dist/index.d.ts +3 -2
  104. package/dist/index.js +3 -2
  105. package/package.json +1 -1
  106. package/src/FlexRender.svelte +96 -96
  107. package/src/GridFooter.svelte +190 -181
  108. package/src/GridMenus.svelte +18 -10
  109. package/src/SvAutoComplete.svelte +169 -169
  110. package/src/SvAvatar.svelte +75 -75
  111. package/src/SvCalendar.svelte +503 -503
  112. package/src/SvCalendar.test.ts +226 -226
  113. package/src/SvCarousel.svelte +141 -141
  114. package/src/SvCheckBox.svelte +102 -102
  115. package/src/SvCircularProgress.svelte +109 -109
  116. package/src/SvColorInput.svelte +181 -181
  117. package/src/SvComboBox.svelte +279 -279
  118. package/src/SvContextMenu.svelte +116 -116
  119. package/src/SvCountryInput.svelte +163 -163
  120. package/src/SvDrawer.svelte +254 -254
  121. package/src/SvDropDownList.svelte +378 -378
  122. package/src/SvDurationInput.svelte +126 -126
  123. package/src/SvField.svelte +293 -293
  124. package/src/SvForm.svelte +437 -437
  125. package/src/SvForm.test.ts +411 -411
  126. package/src/SvGrid.controller.svelte.ts +146 -13
  127. package/src/SvGrid.css +79 -10
  128. package/src/SvGrid.svelte +191 -186
  129. package/src/SvGrid.types.ts +2133 -2092
  130. package/src/SvGridCellEditor.svelte +748 -744
  131. package/src/SvGridChart.svelte +2246 -1716
  132. package/src/SvGridChart.test.ts +243 -1
  133. package/src/SvGridChartPanel.svelte +633 -485
  134. package/src/SvGridChartView.svelte +79 -70
  135. package/src/SvGridDropdown.svelte +728 -728
  136. package/src/SvGridSelect.svelte +270 -270
  137. package/src/SvGroupCell.svelte +141 -116
  138. package/src/SvListBox.svelte +334 -334
  139. package/src/SvMaskedInput.svelte +122 -122
  140. package/src/SvMenu.svelte +124 -124
  141. package/src/SvMenu.test.ts +97 -97
  142. package/src/SvMenuList.svelte +146 -146
  143. package/src/SvMultiSelect.svelte +293 -293
  144. package/src/SvNumberInput.svelte +172 -172
  145. package/src/SvOtpInput.svelte +158 -158
  146. package/src/SvPasswordInput.svelte +151 -151
  147. package/src/SvPhoneInput.svelte +133 -133
  148. package/src/SvPopover.svelte +197 -197
  149. package/src/SvProgress.svelte +116 -116
  150. package/src/SvRadioGroup.svelte +107 -107
  151. package/src/SvRating.svelte +112 -112
  152. package/src/SvResult.svelte +73 -73
  153. package/src/SvRichText.svelte +211 -211
  154. package/src/SvRowGroupPanel.svelte +186 -170
  155. package/src/SvScrollArea.svelte +61 -61
  156. package/src/SvSlider.svelte +203 -203
  157. package/src/SvSwitchButton.svelte +108 -108
  158. package/src/SvTagsInput.svelte +115 -115
  159. package/src/SvTextInput.svelte +147 -147
  160. package/src/SvTimePicker.svelte +245 -245
  161. package/src/SvToaster.svelte +159 -159
  162. package/src/SvToaster.test.ts +95 -95
  163. package/src/SvToggleButton.svelte +85 -85
  164. package/src/SvTooltip.svelte +161 -161
  165. package/src/SvTour.svelte +208 -208
  166. package/src/SvTree.svelte +444 -444
  167. package/src/SvTreeSelect.svelte +239 -239
  168. package/src/a11y/dismissable.test.ts +119 -119
  169. package/src/a11y/dismissable.ts +114 -114
  170. package/src/a11y.contract.test.ts +49 -49
  171. package/src/a11y.test.ts +59 -59
  172. package/src/a11y.ts +61 -61
  173. package/src/ai.test.ts +561 -502
  174. package/src/ai.ts +1472 -1419
  175. package/src/build-api.coverage.test.ts +633 -633
  176. package/src/build-api.ts +846 -846
  177. package/src/builtin-editors.grid.test.ts +83 -83
  178. package/src/cell-formatting.ts +177 -171
  179. package/src/cell-render.test.ts +513 -513
  180. package/src/cell-render.ts +496 -496
  181. package/src/cell-values.ts +148 -148
  182. package/src/chart-export.test.ts +112 -0
  183. package/src/chart-export.ts +270 -202
  184. package/src/chart-view.svelte.ts +36 -36
  185. package/src/chart.test.ts +830 -1
  186. package/src/chart.ts +3342 -2321
  187. package/src/collaboration.test.ts +104 -104
  188. package/src/collaboration.ts +167 -167
  189. package/src/column-groups.ts +78 -78
  190. package/src/core.performance.test.ts +30 -30
  191. package/src/core.ts +1865 -1865
  192. package/src/createAutocomplete.svelte.ts +132 -132
  193. package/src/createCombobox.svelte.ts +191 -191
  194. package/src/createCountryInput.svelte.ts +157 -157
  195. package/src/createDropdownList.svelte.ts +168 -168
  196. package/src/createForm.svelte.ts +386 -386
  197. package/src/createGrid.svelte.ts +42 -42
  198. package/src/createGrid.test.ts +10 -10
  199. package/src/createGridState.svelte.ts +17 -17
  200. package/src/createListbox.svelte.ts +250 -250
  201. package/src/createMenu.svelte.ts +224 -224
  202. package/src/createPopoverSelect.svelte.ts +213 -213
  203. package/src/createSlider.svelte.ts +191 -191
  204. package/src/createTooltip.svelte.ts +144 -144
  205. package/src/createTree.svelte.ts +322 -322
  206. package/src/datetime/date-core.ts +206 -206
  207. package/src/datetime/date-restrict.ts +61 -61
  208. package/src/datetime/timezone.ts +135 -135
  209. package/src/dock-manager-model.ts +596 -596
  210. package/src/dock-model.ts +374 -374
  211. package/src/editing.test.ts +974 -974
  212. package/src/editing.ts +618 -609
  213. package/src/editor-contract.ts +171 -171
  214. package/src/editor-registry.grid.test.ts +144 -144
  215. package/src/editor-registry.ts +122 -122
  216. package/src/export-data-api.test.ts +126 -126
  217. package/src/export-format.test.ts +107 -107
  218. package/src/export-format.ts +601 -601
  219. package/src/filter-operators.ts +160 -160
  220. package/src/filtering/excel-filters.ts +325 -325
  221. package/src/flex-render.ts +3 -3
  222. package/src/form-field.ts +127 -127
  223. package/src/grid-icons.test.ts +46 -0
  224. package/src/grid-icons.ts +184 -0
  225. package/src/group-display.test.ts +167 -167
  226. package/src/group-display.ts +200 -200
  227. package/src/headless.ts +87 -87
  228. package/src/icon-overrides.grid.test.ts +188 -0
  229. package/src/icon-seam.test.ts +100 -0
  230. package/src/index.ts +19 -0
  231. package/src/js-scroller.svelte.ts +173 -173
  232. package/src/keyboard-handlers.ts +270 -270
  233. package/src/keyboard.test.ts +59 -59
  234. package/src/keyboard.ts +97 -97
  235. package/src/list-nav.test.ts +49 -49
  236. package/src/list-nav.ts +29 -29
  237. package/src/list-option.test.ts +56 -56
  238. package/src/list-option.ts +179 -179
  239. package/src/menus.ts +597 -597
  240. package/src/merge-objects.ts +48 -48
  241. package/src/overlays.test.ts +90 -90
  242. package/src/positioning.ts +268 -268
  243. package/src/render-component.ts +28 -28
  244. package/src/row-drag.test.ts +401 -401
  245. package/src/row-drag.ts +419 -419
  246. package/src/row-resize.test.ts +524 -524
  247. package/src/row-resize.ts +228 -228
  248. package/src/scheduler-ical.ts +181 -181
  249. package/src/scheduler-model.test.ts +562 -562
  250. package/src/scheduler-model.ts +873 -873
  251. package/src/selection.test.ts +885 -885
  252. package/src/server-data-source.test.ts +383 -383
  253. package/src/server-data-source.ts +469 -469
  254. package/src/sparkline.test.ts +68 -68
  255. package/src/sparkline.ts +169 -169
  256. package/src/spreadsheet.test.ts +488 -488
  257. package/src/spreadsheet.ts +312 -312
  258. package/src/static-functions.ts +11 -11
  259. package/src/subscribe.ts +38 -38
  260. package/src/summaries.ts +113 -113
  261. package/src/svgrid-wrapper.types.ts +563 -563
  262. package/src/svgrid.async-editor-options.test.ts +273 -273
  263. package/src/svgrid.auto-row-height.test.ts +204 -204
  264. package/src/svgrid.behavior.test.ts +910 -910
  265. package/src/svgrid.charting.test.ts +654 -534
  266. package/src/svgrid.comments-autocomplete.test.ts +127 -127
  267. package/src/svgrid.context-menu.test.ts +147 -147
  268. package/src/svgrid.features.test.ts +157 -157
  269. package/src/svgrid.filter-depth.test.ts +163 -163
  270. package/src/svgrid.filter-menu-listbox.svelte.test.ts +382 -377
  271. package/src/svgrid.filter-menu-scroll.test.ts +112 -112
  272. package/src/svgrid.grand-total.test.ts +188 -188
  273. package/src/svgrid.group-display-mode.test.ts +171 -171
  274. package/src/svgrid.group-footers.test.ts +121 -121
  275. package/src/svgrid.group-pagination.test.ts +153 -153
  276. package/src/svgrid.new-features.wrapper.test.ts +251 -251
  277. package/src/svgrid.tree-data.test.ts +186 -186
  278. package/src/svgrid.wrapper.test.ts +63 -63
  279. package/src/svgriddropdown.async-panel.svelte.test.ts +195 -195
  280. package/src/test-setup.ts +62 -62
  281. package/src/themes/index.ts +288 -288
  282. package/src/toast-store.svelte.ts +250 -250
  283. package/src/toast-store.test.ts +147 -147
  284. package/src/tree-row-model.test.ts +168 -168
  285. package/src/ui-buttons.test.ts +144 -144
  286. package/src/ui-inputs.test.ts +118 -118
  287. package/src/ui-localization.test.ts +113 -113
  288. package/src/ui-range.test.ts +70 -70
  289. package/src/ui-selection.test.ts +155 -155
  290. package/src/ui-tier1.test.ts +142 -142
  291. package/src/virtual.test.ts +88 -88
  292. package/src/virtualization/column-virtualizer.test.ts +27 -27
  293. package/src/virtualization/column-virtualizer.ts +30 -30
  294. package/src/virtualization/svelte-virtualizer.svelte.ts +26 -26
  295. package/src/virtualization/types.ts +30 -30
  296. package/src/virtualization/virtualizer.test.ts +47 -47
  297. package/src/virtualization/virtualizer.ts +322 -322
  298. package/dist/cdn/GridMenus-DMihUtma.js +0 -600
  299. package/dist/cdn/GridMenus-nmNDj1a3.js +0 -601
  300. package/dist/cdn/SvGridChart-Bs2GIR2Q.js +0 -1202
  301. package/dist/cdn/SvGridChart-CwhFz7GV.js +0 -1203
  302. package/dist/cdn/SvGridChartPanel-1WXuStzM.js +0 -561
  303. package/dist/cdn/SvGridChartPanel-e5_nqNP9.js +0 -585
  304. package/dist/cdn/chart-i4XcXyHJ.js +0 -1214
@@ -1,1214 +0,0 @@
1
- import { t as e } from "./rolldown-runtime-Dy4uBu1J.js";
2
- //#region src/chart.ts
3
- var t = /* @__PURE__ */ e({
4
- DEFAULT_PALETTE: () => n,
5
- buildChart: () => O,
6
- buildLinePath: () => h,
7
- computeOverlay: () => b,
8
- exponentialMovingAverage: () => y,
9
- formatChartValue: () => C,
10
- linearTrend: () => _,
11
- niceLogScale: () => p,
12
- niceScale: () => x,
13
- pickContrastText: () => f,
14
- rowsToChartSpec: () => k,
15
- sampleGradient: () => u,
16
- simpleMovingAverage: () => v
17
- }), n = [
18
- "#2563eb",
19
- "#16a34a",
20
- "#f59e0b",
21
- "#ef4444",
22
- "#8b5cf6",
23
- "#0ea5e9",
24
- "#ec4899",
25
- "#14b8a6"
26
- ];
27
- function r(e) {
28
- return Math.round(e * 100) / 100;
29
- }
30
- function i(e, t) {
31
- if (e <= 0) return 1;
32
- let n = Math.floor(Math.log10(e)), r = e / 10 ** n, i;
33
- return i = t ? r < 1.5 ? 1 : r < 3 ? 2 : r < 7 ? 5 : 10 : r <= 1 ? 1 : r <= 2 ? 2 : r <= 5 ? 5 : 10, i * 10 ** n;
34
- }
35
- var a = [
36
- "#eff6ff",
37
- "#bfdbfe",
38
- "#60a5fa",
39
- "#2563eb",
40
- "#1e3a8a"
41
- ], o = [
42
- "#b91c1c",
43
- "#fca5a5",
44
- "#f1f5f9",
45
- "#93c5fd",
46
- "#1d4ed8"
47
- ], s = [
48
- "#1c2c4d",
49
- "#1d4ed8",
50
- "#3b82f6",
51
- "#60a5fa",
52
- "#bae6fd"
53
- ], c = [
54
- "#f87171",
55
- "#b91c1c",
56
- "#222b3d",
57
- "#1d4ed8",
58
- "#60a5fa"
59
- ];
60
- function l(e, t, n, r = "light") {
61
- if (Array.isArray(e) && e.length >= 2) return e;
62
- let i = r === "dark";
63
- return e === "diverging" || e == null && t < 0 && n > 0 ? i ? c : o : i ? s : a;
64
- }
65
- function u(e, t) {
66
- if (!e.length) return "#888";
67
- let n = Math.max(0, Math.min(1, t));
68
- if (e.length === 1) return e[0];
69
- let r = n * (e.length - 1), i = Math.floor(r), a = r - i, o = d(e[i]), s = d(e[Math.min(e.length - 1, i + 1)]);
70
- if (!o || !s) return e[i] ?? "#888";
71
- let c = (e, t) => Math.round(e + (t - e) * a), l = (e) => e.toString(16).padStart(2, "0");
72
- return "#" + l(c(o.r, s.r)) + l(c(o.g, s.g)) + l(c(o.b, s.b));
73
- }
74
- function d(e) {
75
- let t = /^#?([0-9a-f]{6})$/i.exec(e.trim());
76
- if (!t) return null;
77
- let n = parseInt(t[1], 16);
78
- return {
79
- r: n >> 16 & 255,
80
- g: n >> 8 & 255,
81
- b: n & 255
82
- };
83
- }
84
- function f(e) {
85
- let t = d(e);
86
- if (!t) return "#0f172a";
87
- let n = (e) => {
88
- let t = e / 255;
89
- return t <= .03928 ? t / 12.92 : ((t + .055) / 1.055) ** 2.4;
90
- };
91
- return .2126 * n(t.r) + .7152 * n(t.g) + .0722 * n(t.b) > .5 ? "#0f172a" : "#ffffff";
92
- }
93
- function p(e, t) {
94
- (!Number.isFinite(e) || e <= 0) && (e = 1), (!Number.isFinite(t) || t <= e) && (t = e * 10);
95
- let n = Math.floor(Math.log10(e)), r = Math.ceil(Math.log10(t)), i = [];
96
- for (let e = n; e <= r; e += 1) i.push(10 ** e);
97
- return {
98
- min: 10 ** n,
99
- max: 10 ** r,
100
- step: 10,
101
- ticks: i
102
- };
103
- }
104
- function m(e, t, n, r) {
105
- return Number.isFinite(e) ? r ? e <= 0 || t <= 0 ? null : (Math.log10(e) - Math.log10(t)) / (Math.log10(n) - Math.log10(t)) : (e - t) / (n - t) : null;
106
- }
107
- function h(e, t) {
108
- if (!t) {
109
- let t = "", n = !1;
110
- for (let r of e) {
111
- if (!r.defined) {
112
- n = !1;
113
- continue;
114
- }
115
- t += `${n ? "L" : "M"}${r.x},${r.y} `, n = !0;
116
- }
117
- return t.trim();
118
- }
119
- let n = [], r = [];
120
- for (let t of e) t.defined ? r.push({
121
- x: t.x,
122
- y: t.y
123
- }) : r.length && (n.push(r), r = []);
124
- return r.length && n.push(r), n.map(g).filter(Boolean).join(" ");
125
- }
126
- function g(e) {
127
- let t = e.length;
128
- if (t === 0) return "";
129
- if (t === 1) return `M${e[0].x},${e[0].y}`;
130
- if (t === 2) return `M${e[0].x},${e[0].y} L${e[1].x},${e[1].y}`;
131
- let n = Array(t - 1), r = Array(t - 1);
132
- for (let i = 0; i < t - 1; i += 1) {
133
- let t = e[i + 1].x - e[i].x;
134
- n[i] = t, r[i] = t === 0 ? 0 : (e[i + 1].y - e[i].y) / t;
135
- }
136
- let i = Array(t);
137
- i[0] = r[0], i[t - 1] = r[t - 2];
138
- for (let e = 1; e < t - 1; e += 1) r[e - 1] * r[e] <= 0 ? i[e] = 0 : i[e] = (r[e - 1] + r[e]) / 2;
139
- for (let e = 0; e < t - 1; e += 1) {
140
- if (r[e] === 0) {
141
- i[e] = 0, i[e + 1] = 0;
142
- continue;
143
- }
144
- let t = i[e] / r[e], n = i[e + 1] / r[e], a = Math.hypot(t, n);
145
- a > 3 && (i[e] = 3 / a * t * r[e], i[e + 1] = 3 / a * n * r[e]);
146
- }
147
- let a = `M${e[0].x},${e[0].y}`;
148
- for (let r = 0; r < t - 1; r += 1) {
149
- let t = n[r], o = e[r].x + t / 3, s = e[r].y + i[r] * t / 3, c = e[r + 1].x - t / 3, l = e[r + 1].y - i[r + 1] * t / 3;
150
- a += ` C${o},${s} ${c},${l} ${e[r + 1].x},${e[r + 1].y}`;
151
- }
152
- return a;
153
- }
154
- function _(e) {
155
- let t = 0, n = 0, r = 0, i = 0, a = 0;
156
- for (let o = 0; o < e.length; o += 1) {
157
- let s = e[o];
158
- Number.isFinite(s) && (t += 1, n += o, r += s, i += o * o, a += o * s);
159
- }
160
- if (t < 2) return e.map(() => NaN);
161
- let o = t * i - n * n;
162
- if (o === 0) return e.map(() => r / t);
163
- let s = (t * a - n * r) / o, c = (r - s * n) / t;
164
- return e.map((e, t) => s * t + c);
165
- }
166
- function v(e, t) {
167
- if (t < 1) return e.slice();
168
- let n = Array(e.length).fill(NaN), r = 0, i = 0;
169
- for (let a = 0; a < e.length; a += 1) {
170
- let o = e[a];
171
- if (Number.isFinite(o) && (r += o, i += 1), a >= t) {
172
- let n = e[a - t];
173
- Number.isFinite(n) && (r -= n, --i);
174
- }
175
- a >= t - 1 && i > 0 && (n[a] = r / i);
176
- }
177
- return n;
178
- }
179
- function y(e, t) {
180
- let n = 2 / (Math.max(1, t) + 1), r = Array(e.length).fill(NaN), i = null;
181
- for (let t = 0; t < e.length; t += 1) {
182
- let a = e[t];
183
- if (!Number.isFinite(a)) {
184
- r[t] = i ?? NaN;
185
- continue;
186
- }
187
- i = i == null ? a : n * a + (1 - n) * i, r[t] = i;
188
- }
189
- return r;
190
- }
191
- function b(e, t) {
192
- if (t === "linear") return _(e);
193
- let n = /^(sma|ema):(\d+)$/.exec(t);
194
- if (!n) return e.map(() => NaN);
195
- let r = Number(n[2]);
196
- return n[1] === "ema" ? y(e, r) : v(e, r);
197
- }
198
- function x(e, t, n = 4) {
199
- (!Number.isFinite(e) || !Number.isFinite(t)) && (e = 0, t = 1), e === t && (e === 0 ? t = 1 : (e = Math.min(0, e), t = Math.max(0, t)), e === t && (t = e + 1));
200
- let a = i(i(t - e, !1) / Math.max(1, n), !0), o = Math.floor(e / a) * a, s = Math.ceil(t / a) * a, c = [];
201
- for (let e = o; e <= s + a * .5; e += a) c.push(r(e));
202
- return {
203
- min: o,
204
- max: s,
205
- step: a,
206
- ticks: c
207
- };
208
- }
209
- function S(e) {
210
- let t = Math.abs(e);
211
- return t >= 1e6 ? `${(e / 1e6).toFixed(t % 1e6 ? 1 : 0)}M` : t >= 1e3 ? `${(e / 1e3).toFixed(t % 1e3 ? 1 : 0)}k` : String(Math.round(e * 100) / 100);
212
- }
213
- function C(e, t) {
214
- if (!Number.isFinite(e)) return "";
215
- if (t === "currency") return `${e < 0 ? "-" : ""}$${S(Math.abs(e))}`;
216
- if (t === "percent") {
217
- let t = e * 100;
218
- return `${Math.round(t * 10) / 10}%`;
219
- }
220
- return S(e);
221
- }
222
- var w = 864e5;
223
- function T(e, t) {
224
- let n = t - e, r = n <= 7 * w ? w : n <= 70 * w ? 7 * w : n <= 800 * w ? 30 * w : 365 * w, i = [];
225
- for (let n = Math.ceil(e / r) * r; n <= t + 1; n += r) i.push(n);
226
- return i.length || i.push(e, t), i;
227
- }
228
- function E(e, t) {
229
- let n = new Date(e);
230
- return t <= 70 * w ? n.toLocaleDateString(void 0, {
231
- month: "short",
232
- day: "numeric"
233
- }) : t <= 800 * w ? n.toLocaleDateString(void 0, {
234
- month: "short",
235
- year: "2-digit"
236
- }) : String(n.getFullYear());
237
- }
238
- function D(e, t, n, r = [], i = !1) {
239
- let a = Infinity, o = -Infinity, s = (e) => {
240
- Number.isFinite(e) && (i && e <= 0 || (e < a && (a = e), e > o && (o = e)));
241
- };
242
- for (let e of r) s(e);
243
- let c = e.filter((e) => e.kind === "bar" || e.kind === "area"), l = e.filter((e) => e.kind === "line");
244
- if (n && c.length) for (let e = 0; e < t.length; e += 1) {
245
- let t = 0, n = 0;
246
- for (let r of c) {
247
- let i = r.values[e] ?? 0;
248
- i >= 0 ? t += i : n += i;
249
- }
250
- s(t), s(n);
251
- }
252
- else for (let e of c) for (let t of e.values) s(t);
253
- for (let e of l) for (let t of e.values) s(t);
254
- return a === Infinity && (a = +!!i, o = i ? 10 : 1), c.length && !i && (a = Math.min(a, 0), o = Math.max(o, 0)), i ? p(a, o) : x(a, o);
255
- }
256
- function O(e, t = "light") {
257
- let i = e.width ?? 520, a = e.height ?? 300, o = e.palette ?? n, s = !!(e.stacked || e.stacked100), c = e.series.map((t, n) => ({
258
- ...t,
259
- color: t.color ?? o[n % o.length],
260
- kind: t.type ?? (e.type === "pie" || e.type === "scatter" ? "bar" : e.type),
261
- axis: t.axis ?? "left"
262
- })), d = c.map((e) => ({
263
- label: e.label,
264
- color: e.color
265
- })), p = {
266
- type: e.type,
267
- width: i,
268
- height: a,
269
- plot: {
270
- x: 0,
271
- y: 0,
272
- w: i,
273
- h: a
274
- },
275
- bars: [],
276
- lines: [],
277
- slices: [],
278
- yTicks: [],
279
- y2Ticks: [],
280
- hasRightAxis: !1,
281
- xTicks: [],
282
- categoryGroupTicks: [],
283
- xLabelRotated: !1,
284
- legend: d,
285
- donut: null,
286
- referenceLines: [],
287
- scatterPoints: [],
288
- orientation: "vertical",
289
- valueTicks: [],
290
- catTicks: [],
291
- referenceLinesV: [],
292
- overlays: [],
293
- annotations: [],
294
- heatmapCells: [],
295
- heatmapRowTicks: [],
296
- heatmapColTicks: [],
297
- heatmapLegend: [],
298
- funnelSegments: [],
299
- radarRings: [],
300
- radarAxes: [],
301
- radarSeries: [],
302
- radarCenter: null,
303
- treemapCells: [],
304
- calendarCells: [],
305
- calendarMonthTicks: [],
306
- calendarLegend: [],
307
- gauge: null,
308
- sankeyNodes: [],
309
- sankeyLinks: []
310
- };
311
- if (e.type === "waterfall") {
312
- let t = c[0];
313
- if (!t) return { ...p };
314
- let n = e.waterfallColors ?? {}, o = n.positive ?? "#16a34a", s = n.negative ?? "#ef4444", l = n.total ?? "#475569", u = e.categories.reduce((e, t) => Math.max(e, t.length), 0), d = e.categories.length > 8 || u > 9, f = 48 + (e.yAxisTitle ? 16 : 0), m = (d ? 54 : 28) + (e.xAxisTitle ? 16 : 0), h = Math.max(1, i - f - 12), g = Math.max(1, a - 10 - m), _ = {
315
- x: f,
316
- y: 10,
317
- w: h,
318
- h: g
319
- }, v = e.waterfallTotals ?? [], y = [], b = 0;
320
- e.categories.forEach((e, n) => {
321
- let r = t.values[n] ?? 0;
322
- v[n] ? y.push({
323
- from: 0,
324
- to: b,
325
- value: b,
326
- isTotal: !0
327
- }) : (y.push({
328
- from: b,
329
- to: b + r,
330
- value: r,
331
- isTotal: !1
332
- }), b += r);
333
- });
334
- let S = 0, w = 0;
335
- for (let e of y) e.from < S && (S = e.from), e.to < S && (S = e.to), e.from > w && (w = e.from), e.to > w && (w = e.to);
336
- let T = x(S, w), E = (e) => r(10 + g - (e - T.min) / (T.max - T.min || 1) * g), D = h / Math.max(1, e.categories.length), O = D * .2, k = Math.max(1, D - O), A = y.map((n, i) => {
337
- let a = E(Math.max(n.from, n.to)), c = E(Math.min(n.from, n.to)), u = f + D * i + O / 2, d = n.isTotal ? l : n.value >= 0 ? o : s;
338
- return {
339
- x: r(u),
340
- y: a,
341
- w: r(k),
342
- h: Math.max(1, c - a),
343
- color: d,
344
- label: e.categories[i] ?? String(i),
345
- series: t.label,
346
- value: n.value
347
- };
348
- }), j = [{
349
- path: y.map((e, t) => {
350
- let n = f + D * t + O / 2 + k, r = E(e.to), i = f + D * (t + 1) + O / 2;
351
- return t < y.length - 1 ? `M${n},${r} L${i},${r}` : "";
352
- }).filter(Boolean).join(" "),
353
- areaPath: "",
354
- color: "var(--sg-muted, #94a3b8)",
355
- label: "",
356
- points: []
357
- }], M = e.categories.map((e, t) => ({
358
- label: e,
359
- x: r(f + D * t + D / 2)
360
- })), N = T.ticks.map((t) => ({
361
- value: t,
362
- y: E(t),
363
- label: C(t, e.valueFormat)
364
- }));
365
- return {
366
- ...p,
367
- plot: _,
368
- bars: A,
369
- lines: j,
370
- yTicks: N,
371
- xTicks: M,
372
- xLabelRotated: d
373
- };
374
- }
375
- if (e.type === "funnel") {
376
- let t = c[0];
377
- if (!t || !t.values.length) return { ...p };
378
- let r = Math.max(1, i - 20 - 20), o = Math.max(1, a - 16 - 16), s = {
379
- x: 20,
380
- y: 16,
381
- w: r,
382
- h: o
383
- }, l = o / t.values.length, u = Math.max(...t.values.map((e) => Number.isFinite(e) ? e : 0)), d = t.values[0] ?? 0, m = (e) => u > 0 ? e / u * r : 0, h = 20 + r / 2, g = e.palette ?? n, _ = t.values.map((n, r) => {
384
- let i = t.values[r + 1] ?? n * .8, a = m(n), o = m(i), s = 16 + l * r, c = s + l, u = `M${h - a / 2},${s} L${h + a / 2},${s} L${h + o / 2},${c} L${h - o / 2},${c} Z`, p = t.color ?? g[r % g.length];
385
- return {
386
- path: u,
387
- color: p,
388
- label: e.categories[r] ?? t.label,
389
- value: n,
390
- conversion: d > 0 ? n / d : 0,
391
- dropoff: r === 0 ? 0 : (t.values[r - 1] ?? n) > 0 ? 1 - n / (t.values[r - 1] ?? n) : 0,
392
- cx: h,
393
- cy: (s + c) / 2,
394
- textColor: f(p)
395
- };
396
- });
397
- return {
398
- ...p,
399
- plot: s,
400
- funnelSegments: _
401
- };
402
- }
403
- if (e.type === "radar") {
404
- if (!c.length || !e.categories.length) return { ...p };
405
- let t = Math.max(1, i - 30 - 30), o = Math.max(1, a - 24 - 24), s = {
406
- x: 30,
407
- y: 24,
408
- w: t,
409
- h: o
410
- }, l = 30 + t / 2, u = 24 + o / 2, d = Math.max(20, Math.min(t, o) / 2 - 20), f = e.categories, m = f.length, h = 0;
411
- for (let e of c) for (let t of e.values) Number.isFinite(t) && t > h && (h = t);
412
- h === 0 && (h = 1);
413
- let g = Array.from({ length: 5 }, (e, t) => (t + 1) / 5 * h), _ = (e) => -Math.PI / 2 + e / m * Math.PI * 2, v = (e, t) => {
414
- let n = t / h, i = _(e);
415
- return {
416
- x: r(l + d * n * Math.cos(i)),
417
- y: r(u + d * n * Math.sin(i))
418
- };
419
- }, y = f.map((e, t) => {
420
- let n = v(t, h);
421
- return {
422
- label: e,
423
- x: n.x,
424
- y: n.y
425
- };
426
- }), b = c.map((t, r) => {
427
- let i = t.values.map((e, t) => {
428
- let n = v(t, Number.isFinite(e) ? e : 0);
429
- return {
430
- x: n.x,
431
- y: n.y,
432
- value: e,
433
- axis: f[t] ?? ""
434
- };
435
- }), a = i.length ? i.map((e, t) => `${t === 0 ? "M" : "L"}${e.x},${e.y}`).join(" ") + " Z" : "", o = e.palette ?? n;
436
- return {
437
- label: t.label,
438
- color: t.color ?? o[r % o.length],
439
- path: a,
440
- points: i
441
- };
442
- });
443
- return {
444
- ...p,
445
- plot: s,
446
- radarRings: g,
447
- radarAxes: y,
448
- radarSeries: b,
449
- radarCenter: {
450
- cx: l,
451
- cy: u,
452
- r: d
453
- }
454
- };
455
- }
456
- if (e.type === "calendar") {
457
- let n = e.calendarValues ?? [];
458
- if (!n.length && !e.calendarStart) return { ...p };
459
- let r = /* @__PURE__ */ new Map(), o = Infinity, s = -Infinity;
460
- for (let e of n) r.set(e.date, e.value), Number.isFinite(e.value) && (e.value < o && (o = e.value), e.value > s && (s = e.value));
461
- o === Infinity && (o = 0, s = 1), o === s && (s = o + 1);
462
- let c = l(e.colorScale, o, s, t), d = (e) => u(c, (e - o) / (s - o)), f = n.map((e) => e.date).sort(), m = e.calendarStart ?? f[0] ?? "2026-01-01", h = e.calendarEnd ?? f[f.length - 1] ?? m, g = /* @__PURE__ */ new Date(m + "T00:00:00Z"), _ = /* @__PURE__ */ new Date(h + "T00:00:00Z");
463
- g.setUTCDate(g.getUTCDate() - g.getUTCDay()), _.setUTCDate(_.getUTCDate() + (6 - _.getUTCDay()));
464
- let v = Math.round((_.getTime() - g.getTime()) / 864e5) + 1, y = Math.ceil(v / 7), b = Math.max(1, i - 36 - 80), x = Math.max(1, a - 26 - 16), S = Math.floor(b / y), w = Math.floor(x / 7), T = Math.max(6, Math.min(S, w)), E = {
465
- x: 36,
466
- y: 26,
467
- w: T * y,
468
- h: T * 7
469
- }, D = [], O = -1, k = [];
470
- for (let e = 0; e < v; e += 1) {
471
- let t = new Date(g.getTime() + e * 864e5), n = Math.floor(e / 7), i = e % 7, a = t.toISOString().slice(0, 10), o = r.has(a), s = r.get(a) ?? 0;
472
- D.push({
473
- x: 36 + n * T,
474
- y: 26 + i * T,
475
- size: T,
476
- date: a,
477
- value: s,
478
- defined: o,
479
- color: o ? d(s) : "transparent"
480
- }), t.getUTCDate() === 1 && t.getUTCMonth() !== O && (O = t.getUTCMonth(), k.push({
481
- label: t.toLocaleDateString(void 0, { month: "short" }),
482
- x: 36 + n * T
483
- }));
484
- }
485
- let A = Array.from({ length: 5 }, (t, n) => {
486
- let r = n / 4, i = o + (s - o) * r;
487
- return {
488
- value: i,
489
- color: d(i),
490
- label: C(i, e.valueFormat)
491
- };
492
- });
493
- return {
494
- ...p,
495
- plot: E,
496
- calendarCells: D,
497
- calendarMonthTicks: k,
498
- calendarLegend: A
499
- };
500
- }
501
- if (e.type === "gauge") {
502
- let t = e.gaugeMin ?? 0, n = e.gaugeMax ?? 100, o = Math.max(t, Math.min(n, e.gaugeValue ?? 0)), s = e.gaugeTarget, c = i / 2, l = a * .78, u = Math.min(i * .42, a * .65), d = Math.PI, f = 2 * Math.PI, m = (e) => d + (e - t) / (n - t || 1) * (f - d), h = (e, t, n) => {
503
- let r = c + n * Math.cos(e), i = l + n * Math.sin(e), a = c + n * Math.cos(t), o = l + n * Math.sin(t);
504
- return `M${r},${i} A${n},${n} 0 ${+(t - e > Math.PI)} 1 ${a},${o}`;
505
- }, g = h(d, f, u), _ = h(d, m(o), u), v = (e.gaugeRanges ?? []).map((e) => ({
506
- path: h(m(e.from), m(e.to), u - 9),
507
- color: e.color,
508
- from: e.from,
509
- to: e.to
510
- })), y = null;
511
- if (s != null && Number.isFinite(s)) {
512
- let e = m(Math.max(t, Math.min(n, s))), r = u - 12, i = u + 4;
513
- y = {
514
- x1: c + r * Math.cos(e),
515
- y1: l + r * Math.sin(e),
516
- x2: c + i * Math.cos(e),
517
- y2: l + i * Math.sin(e)
518
- };
519
- }
520
- let b = [];
521
- for (let e = 0; e <= 20; e++) {
522
- let t = d + e / 20 * (f - d), n = e % 5 == 0, r = u + 9, i = u + (n ? 17 : 13);
523
- b.push({
524
- x1: c + r * Math.cos(t),
525
- y1: l + r * Math.sin(t),
526
- x2: c + i * Math.cos(t),
527
- y2: l + i * Math.sin(t),
528
- major: n
529
- });
530
- }
531
- let x = m(o), S = u - 16, C = x + Math.PI / 2, w = (e, t) => `${r(c + e * Math.cos(t))},${r(l + e * Math.sin(t))}`, T = `M${w(6, C)} L${w(S, x)} L${w(6, C + Math.PI)} L${w(18, x + Math.PI)} Z`, E = null;
532
- for (let t of e.gaugeRanges ?? []) o >= t.from && o <= t.to && (E = t.color);
533
- return {
534
- ...p,
535
- plot: {
536
- x: 0,
537
- y: 0,
538
- w: i,
539
- h: a
540
- },
541
- gauge: {
542
- cx: c,
543
- cy: l,
544
- r: u,
545
- trackPath: g,
546
- valuePath: _,
547
- rangePaths: v,
548
- target: y,
549
- ticks: b,
550
- needle: {
551
- path: T,
552
- hubR: 7
553
- },
554
- valueColor: E,
555
- minLabel: {
556
- x: c - u,
557
- y: l + 20
558
- },
559
- maxLabel: {
560
- x: c + u,
561
- y: l + 20
562
- },
563
- value: o,
564
- min: t,
565
- max: n,
566
- unit: e.gaugeUnit ?? ""
567
- }
568
- };
569
- }
570
- if (e.type === "treemap") {
571
- let t = e.treemap;
572
- if (!t) return { ...p };
573
- let o = Math.max(1, i - 4 - 4), s = Math.max(1, a - 4 - 4), c = {
574
- x: 4,
575
- y: 4,
576
- w: o,
577
- h: s
578
- }, l = e.palette ?? n, u = [];
579
- function d(e) {
580
- return e.children?.length ? e.children.reduce((e, t) => e + d(t), 0) : Math.max(0, e.value ?? 0);
581
- }
582
- function m(e, t, n, i, a, o) {
583
- if (!e.length || i <= 0 || a <= 0) return;
584
- let s = e.map(d), c = s.reduce((e, t) => e + t, 0);
585
- if (c <= 0) return;
586
- let p = e.map((e, t) => ({
587
- node: e,
588
- value: s[t]
589
- })).sort((e, t) => t.value - e.value), h = t, g = n, _ = i, v = a, y = c, b = [], x = (e, t, n, r) => {
590
- if (n <= 0) return Infinity;
591
- let i = n * r / t, a = 0;
592
- for (let n of e) {
593
- let e = n * r / i, o = Math.max(t / e, e / t);
594
- o > a && (a = o);
595
- }
596
- return a;
597
- };
598
- function S() {
599
- if (!b.length) return;
600
- let e = b.reduce((e, t) => e + t.value, 0), t = _ * v / y, n = _ >= v, i = n ? v : _, a = e * t / i, s = 0;
601
- for (let e of b) {
602
- let i = e.value * t / a, c = n ? h : h + s, d = n ? g + s : g, p = n ? a : i, _ = n ? i : a, v = e.node.color ?? l[(o + u.length) % l.length];
603
- if (e.node.children?.length) {
604
- u.push({
605
- x: r(c),
606
- y: r(d),
607
- w: r(p),
608
- h: r(_),
609
- color: v,
610
- textColor: f(v),
611
- name: e.node.name,
612
- value: e.value,
613
- depth: o
614
- });
615
- let t = Math.min(18, _ * .25);
616
- m(e.node.children, c + 1, d + t, p - 2, _ - t - 1, o + 1);
617
- } else u.push({
618
- x: r(c),
619
- y: r(d),
620
- w: r(p),
621
- h: r(_),
622
- color: v,
623
- textColor: f(v),
624
- name: e.node.name,
625
- value: e.value,
626
- depth: o
627
- });
628
- s += i;
629
- }
630
- n ? (h += a, _ -= a) : (g += a, v -= a), y -= e, b = [];
631
- }
632
- for (let e of p) {
633
- let t = _ * v / y, n = Math.min(_, v), r = b.reduce((e, t) => e + t.value, 0), i = x(b.map((e) => e.value), n, r, t), a = x([...b.map((e) => e.value), e.value], n, r + e.value, t);
634
- b.length && a > i && S(), b.push(e);
635
- }
636
- S();
637
- }
638
- return m(t.children ?? [t], 4, 4, o, s, 0), {
639
- ...p,
640
- plot: c,
641
- treemapCells: u
642
- };
643
- }
644
- if (e.type === "sankey") {
645
- let t = e.sankeyNodes ?? [], r = e.sankeyLinks ?? [];
646
- if (!t.length || !r.length) return { ...p };
647
- let o = Math.max(1, i - 10 - 10), s = Math.max(1, a - 14 - 14), c = {
648
- x: 10,
649
- y: 14,
650
- w: o,
651
- h: s
652
- }, l = e.palette ?? n, u = new Map(t.map((e) => [e.id, e])), d = new Set(r.map((e) => e.target)), f = t.filter((e) => !d.has(e.id)), m = /* @__PURE__ */ new Map();
653
- function h(e, t, n) {
654
- if (!n.has(e)) {
655
- n.add(e), (t > (m.get(e) ?? 0) || !m.has(e)) && m.set(e, t);
656
- for (let i of r) i.source === e && h(i.target, t + 1, n);
657
- n.delete(e);
658
- }
659
- }
660
- for (let e of f) h(e.id, 0, /* @__PURE__ */ new Set());
661
- for (let e of t) m.has(e.id) || m.set(e.id, 0);
662
- let g = Math.max(...m.values()) + 1, _ = g > 1 ? (o - 14 * g) / (g - 1) : 0, v = /* @__PURE__ */ new Map(), y = /* @__PURE__ */ new Map();
663
- for (let e of r) v.set(e.target, (v.get(e.target) ?? 0) + e.value), y.set(e.source, (y.get(e.source) ?? 0) + e.value);
664
- let b = /* @__PURE__ */ new Map();
665
- for (let e of t) {
666
- let t = m.get(e.id) ?? 0, n = b.get(t) ?? [];
667
- n.push(e.id), b.set(t, n);
668
- }
669
- let x = 0;
670
- for (let e of b.values()) {
671
- let t = e.reduce((e, t) => e + Math.max(v.get(t) ?? 0, y.get(t) ?? 0), 0);
672
- t > x && (x = t);
673
- }
674
- if (x === 0) return {
675
- ...p,
676
- plot: c
677
- };
678
- let S = (s - 64) / x, C = [];
679
- for (let [e, t] of b) {
680
- let n = t.map((e) => Math.max(8, Math.max(v.get(e) ?? 0, y.get(e) ?? 0) * S)), r = 14 + (s - (n.reduce((e, t) => e + t, 0) + 8 * (t.length - 1))) / 2, i = 10 + e * (14 + _);
681
- t.forEach((t, a) => {
682
- let o = u.get(t), s = n[a];
683
- C.push({
684
- id: t,
685
- label: o.label ?? t,
686
- color: o.color ?? l[C.length % l.length],
687
- x: i,
688
- y: r,
689
- w: 14,
690
- h: s,
691
- column: e,
692
- totalIn: v.get(t) ?? 0,
693
- totalOut: y.get(t) ?? 0
694
- }), r += s + 8;
695
- });
696
- }
697
- let w = new Map(C.map((e) => [e.id, e])), T = /* @__PURE__ */ new Map(), E = /* @__PURE__ */ new Map(), D = [], O = r.slice().sort((e, t) => t.value - e.value);
698
- for (let e of O) {
699
- let t = w.get(e.source), n = w.get(e.target);
700
- if (!t || !n) continue;
701
- let r = Math.max(1, e.value * S), i = t.y + (E.get(t.id) ?? 0) + r / 2, a = n.y + (T.get(n.id) ?? 0) + r / 2;
702
- E.set(t.id, (E.get(t.id) ?? 0) + r), T.set(n.id, (T.get(n.id) ?? 0) + r);
703
- let o = t.x + t.w, s = n.x, c = (o + s) / 2, l = `M${o},${i} C${c},${i} ${c},${a} ${s},${a}`;
704
- D.push({
705
- path: l,
706
- color: e.color ?? t.color,
707
- width: r,
708
- source: e.source,
709
- target: e.target,
710
- value: e.value
711
- });
712
- }
713
- return {
714
- ...p,
715
- plot: c,
716
- sankeyNodes: C,
717
- sankeyLinks: D
718
- };
719
- }
720
- if (e.type === "heatmap") {
721
- if (!c.length || !e.categories.length) return {
722
- ...p,
723
- plot: {
724
- x: 0,
725
- y: 0,
726
- w: i,
727
- h: a
728
- }
729
- };
730
- let n = c.reduce((e, t) => Math.max(e, t.label.length), 0), o = 12 + Math.min(180, Math.max(60, n * 7)), s = Math.max(1, i - o - 64), d = Math.max(1, a - 12 - 32), m = {
731
- x: o,
732
- y: 12,
733
- w: s,
734
- h: d
735
- }, h = s / e.categories.length, g = d / c.length, _ = Infinity, v = -Infinity;
736
- for (let e of c) for (let t of e.values) Number.isFinite(t) && (t < _ && (_ = t), t > v && (v = t));
737
- _ === Infinity && (_ = 0, v = 1), _ === v && (v = _ + 1);
738
- let y = l(e.colorScale, _, v, t), b = (e) => u(y, (e - _) / (v - _)), x = [];
739
- c.forEach((t, n) => {
740
- t.values.forEach((i, a) => {
741
- if (!Number.isFinite(i)) return;
742
- let s = b(i);
743
- x.push({
744
- x: r(o + h * a),
745
- y: r(12 + g * n),
746
- w: r(h),
747
- h: r(g),
748
- color: s,
749
- textColor: f(s),
750
- value: i,
751
- rowLabel: t.label,
752
- colLabel: e.categories[a] ?? ""
753
- });
754
- });
755
- });
756
- let S = c.map((e, t) => ({
757
- value: t,
758
- y: r(12 + g * t + g / 2),
759
- label: e.label
760
- })), w = e.categories.map((e, t) => ({
761
- label: e,
762
- x: r(o + h * t + h / 2)
763
- })), T = Array.from({ length: 5 }, (t, n) => {
764
- let r = n / 4, i = _ + (v - _) * r;
765
- return {
766
- value: i,
767
- color: b(i),
768
- label: C(i, e.valueFormat)
769
- };
770
- });
771
- return {
772
- ...p,
773
- plot: m,
774
- heatmapCells: x,
775
- heatmapRowTicks: S,
776
- heatmapColTicks: w,
777
- heatmapLegend: T
778
- };
779
- }
780
- if (e.type === "pie") {
781
- let t = c[0];
782
- if (!t) return p;
783
- let n = t.values.reduce((e, t) => e + Math.max(0, t), 0) || 1, s = i / 2, l = a / 2, u = Math.min(i, a) / 2 - 10, d = u * Math.min(.9, Math.max(0, e.innerRadius ?? 0)), f = -Math.PI / 2, m = t.values.map((t, i) => {
784
- let a = Math.max(0, t) / n, c = f, p = f + a * Math.PI * 2;
785
- f = p;
786
- let m = +(p - c > Math.PI), h = (c + p) / 2, g = (u + d) / 2 || u * .6, _ = s + u * Math.cos(c), v = l + u * Math.sin(c), y = s + u * Math.cos(p), b = l + u * Math.sin(p), x;
787
- if (a >= .999) x = d ? `M${r(s - u)},${r(l)} A${u},${u} 0 1 1 ${r(s + u)},${r(l)} A${u},${u} 0 1 1 ${r(s - u)},${r(l)} ZM${r(s - d)},${r(l)} A${d},${d} 0 1 0 ${r(s + d)},${r(l)} A${d},${d} 0 1 0 ${r(s - d)},${r(l)} Z` : `M${r(s - u)},${r(l)} A${u},${u} 0 1 1 ${r(s + u)},${r(l)} A${u},${u} 0 1 1 ${r(s - u)},${r(l)} Z`;
788
- else if (d > 0) {
789
- let e = s + d * Math.cos(c), t = l + d * Math.sin(c), n = s + d * Math.cos(p), i = l + d * Math.sin(p);
790
- x = `M${r(_)},${r(v)} A${u},${u} 0 ${m} 1 ${r(y)},${r(b)} L${r(n)},${r(i)} A${d},${d} 0 ${m} 0 ${r(e)},${r(t)} Z`;
791
- } else x = `M${r(s)},${r(l)} L${r(_)},${r(v)} A${u},${u} 0 ${m} 1 ${r(y)},${r(b)} Z`;
792
- let S = e.categories[i] ?? String(i);
793
- return {
794
- path: x,
795
- color: e.categoryColors?.[S] ?? o[i % o.length],
796
- label: S,
797
- value: t,
798
- percent: a * 100,
799
- cx: r(s + g * Math.cos(h)),
800
- cy: r(l + g * Math.sin(h))
801
- };
802
- });
803
- return {
804
- ...p,
805
- slices: m,
806
- legend: e.categories.map((t, n) => ({
807
- label: t,
808
- color: e.categoryColors?.[t] ?? o[n % o.length]
809
- })),
810
- donut: d > 0 ? {
811
- cx: r(s),
812
- cy: r(l),
813
- r: r(d),
814
- total: t.values.reduce((e, t) => e + Math.max(0, t), 0)
815
- } : null
816
- };
817
- }
818
- if (e.type === "scatter") {
819
- let t = 48 + (e.yAxisTitle ? 16 : 0), n = 28 + (e.xAxisTitle ? 16 : 0), o = Math.max(1, i - t - 12), s = Math.max(1, a - 10 - n), l = {
820
- x: t,
821
- y: 10,
822
- w: o,
823
- h: s
824
- }, u = Infinity, d = -Infinity, f = Infinity, m = -Infinity, h = Infinity, g = -Infinity;
825
- for (let e of c) for (let t of e.points ?? []) Number.isFinite(t.x) && (u = Math.min(u, t.x), d = Math.max(d, t.x)), Number.isFinite(t.y) && (f = Math.min(f, t.y), m = Math.max(m, t.y)), t.r != null && Number.isFinite(t.r) && (h = Math.min(h, t.r), g = Math.max(g, t.r));
826
- if (u === Infinity) return {
827
- ...p,
828
- plot: l
829
- };
830
- let _ = x(u, d), v = x(f, m), y = g > h, b = (e) => r(t + (e - _.min) / (_.max - _.min || 1) * o), w = (e) => r(10 + s - (e - v.min) / (v.max - v.min || 1) * s), T = (e) => y && e != null && Number.isFinite(e) ? r(4 + (e - h) / (g - h || 1) * 14) : 5, E = [];
831
- for (let e of c) for (let t of e.points ?? []) !Number.isFinite(t.x) || !Number.isFinite(t.y) || E.push({
832
- cx: b(t.x),
833
- cy: w(t.y),
834
- r: T(t.r),
835
- color: e.color,
836
- label: t.label ?? "",
837
- series: e.label,
838
- x: t.x,
839
- y: t.y
840
- });
841
- let D = (e.referenceLines ?? []).map((t) => ({
842
- y: w(t.value),
843
- label: t.label ?? C(t.value, e.valueFormat),
844
- color: t.color ?? "#ef4444",
845
- dashed: t.dashed !== !1
846
- }));
847
- return {
848
- ...p,
849
- plot: l,
850
- scatterPoints: E,
851
- referenceLines: D,
852
- yTicks: v.ticks.map((t) => ({
853
- value: t,
854
- y: w(t),
855
- label: C(t, e.valueFormat)
856
- })),
857
- xTicks: _.ticks.map((e) => ({
858
- label: S(e),
859
- x: b(e)
860
- }))
861
- };
862
- }
863
- if (e.orientation === "horizontal" && c.length > 0 && c.every((e) => e.kind === "bar")) {
864
- let t = e.categories.reduce((e, t) => Math.max(e, t.length), 0), n = Math.min(150, 18 + t * 6.4) + (e.yAxisTitle ? 16 : 0), o = 26 + (e.xAxisTitle ? 16 : 0), l = Math.max(1, i - n - 16), u = Math.max(1, a - 8 - o), d = {
865
- x: n,
866
- y: 8,
867
- w: l,
868
- h: u
869
- }, f = (e.referenceLines ?? []).map((e) => e.value), m = e.stacked100 ? x(0, 100) : D(c, e.categories, s, f), h = (e) => r(n + (e - m.min) / (m.max - m.min || 1) * l), g = e.categories.length, _ = u / Math.max(1, g), v = _ * .2, y = _ - v, b = (e) => 8 + _ * e + v / 2, w = h(Math.min(Math.max(0, m.min), m.max)), T = [];
870
- if (s) {
871
- let t = e.stacked100 ? e.categories.map((e, t) => c.reduce((e, n) => e + Math.abs(Number.isFinite(n.values[t]) ? n.values[t] : 0), 0) || 1) : null, n = Array(g).fill(0), i = Array(g).fill(0);
872
- for (let a of c) a.values.forEach((o, s) => {
873
- if (!Number.isFinite(o)) return;
874
- let c = t ? o / t[s] * 100 : o, l, u;
875
- c >= 0 ? (l = h(n[s]), u = h(n[s] + c), n[s] += c) : (l = h(i[s] + c), u = h(i[s]), i[s] += c), T.push({
876
- x: Math.min(l, u),
877
- y: r(b(s)),
878
- w: r(Math.abs(u - l)),
879
- h: r(Math.max(1, y)),
880
- color: a.color,
881
- label: e.categories[s] ?? String(s),
882
- series: a.label,
883
- value: o
884
- });
885
- });
886
- } else {
887
- let t = y / c.length;
888
- c.forEach((n, i) => {
889
- n.values.forEach((a, o) => {
890
- if (!Number.isFinite(a)) return;
891
- let s = h(a);
892
- T.push({
893
- x: Math.min(s, w),
894
- y: r(b(o) + t * i),
895
- w: r(Math.max(1, Math.abs(s - w))),
896
- h: r(Math.max(1, t - 1)),
897
- color: n.color,
898
- label: e.categories[o] ?? String(o),
899
- series: n.label,
900
- value: a
901
- });
902
- });
903
- });
904
- }
905
- let E = m.ticks.map((t) => ({
906
- label: e.stacked100 ? `${S(t)}%` : C(t, e.valueFormat),
907
- x: h(t)
908
- })), O = e.categories.map((e, t) => ({
909
- value: t,
910
- y: r(b(t) + y / 2),
911
- label: e
912
- })), k = (e.referenceLines ?? []).map((t) => ({
913
- x: h(t.value),
914
- label: t.label ?? C(t.value, e.valueFormat),
915
- color: t.color ?? "#ef4444",
916
- dashed: t.dashed !== !1
917
- }));
918
- return {
919
- ...p,
920
- plot: d,
921
- bars: T,
922
- orientation: "horizontal",
923
- valueTicks: E,
924
- catTicks: O,
925
- referenceLinesV: k,
926
- xLabelRotated: !1
927
- };
928
- }
929
- let _ = c.filter((e) => e.axis === "left"), v = c.filter((e) => e.axis === "right"), y = v.length > 0, w = e.categories.reduce((e, t) => Math.max(e, t.length), 0), O = e.categories.length > 8 || w > 9, k = e.categoryGroups && e.categoryGroups.length > 0 && e.xType !== "time" && e.orientation !== "horizontal" && e.categoryGroups.reduce((e, t) => e + t.span, 0) === e.categories.length ? e.categoryGroups : null, A = k ? 18 : 0, j = 48 + (e.yAxisTitle ? 16 : 0), M = (y ? 48 : 12) + (e.y2AxisTitle ? 16 : 0), N = (O ? 54 : 28) + (e.xAxisTitle ? 16 : 0) + A, P = Math.max(1, i - j - M), F = Math.max(1, a - 10 - N), ee = {
930
- x: j,
931
- y: 10,
932
- w: P,
933
- h: F
934
- }, te = (e.referenceLines ?? []).filter((e) => e.axis !== "right").map((e) => e.value), ne = (e.referenceLines ?? []).filter((e) => e.axis === "right").map((e) => e.value), I = e.yScale === "log", L = e.y2Scale === "log", R = e.stacked100 ? x(0, 100) : D(_, e.categories, s, te, I), z = y ? e.stacked100 ? x(0, 100) : D(v, e.categories, s, ne, L) : null, B = (e, t, n = !1) => {
935
- let i = m(t, e.min, e.max, n);
936
- return i === null ? NaN : r(10 + F - i * F);
937
- }, re = (e) => B(R, e, I), ie = (e) => B(z ?? R, e, L), V = (e) => e.axis === "right" ? z ?? R : R, H = (e) => e.axis === "right" ? L : I, U = e.categories.length, W = P / Math.max(1, U), G = e.xType === "time" ? e.categories.map((e) => Date.parse(e)) : null, K = !!G && G.some((e) => Number.isFinite(e)), q = K ? Math.min(...G.filter(Number.isFinite)) : 0, J = K && Math.max(...G.filter(Number.isFinite)) - q || 1, Y = (e) => K && Number.isFinite(G[e]) ? r(j + (G[e] - q) / J * P) : r(j + W * e + W / 2), ae = K ? T(q, q + J).map((e) => ({
938
- label: E(e, J),
939
- x: r(j + (e - q) / J * P)
940
- })) : e.categories.map((e, t) => ({
941
- label: e,
942
- x: Y(t)
943
- })), X = [];
944
- if (k && !K) {
945
- let e = 0;
946
- for (let t of k) {
947
- let n = r(j + W * e), i = r(j + W * (e + t.span));
948
- X.push({
949
- label: t.label,
950
- x0: n,
951
- x1: i,
952
- xCenter: r((n + i) / 2)
953
- }), e += t.span;
954
- }
955
- }
956
- let Z = c.filter((e) => e.kind === "bar"), Q = [];
957
- if (Z.length) {
958
- let t = W * .2;
959
- if (s) {
960
- let n = W - t, i = (e) => j + W * e + t / 2;
961
- for (let t of ["left", "right"]) {
962
- let a = Z.filter((e) => e.axis === t);
963
- if (!a.length) continue;
964
- let o = t === "right" ? ie : re, s = e.stacked100 ? e.categories.map((e, t) => a.reduce((e, n) => e + Math.abs(Number.isFinite(n.values[t]) ? n.values[t] : 0), 0) || 1) : null, c = Array(U).fill(0), l = Array(U).fill(0);
965
- for (let t of a) t.values.forEach((a, u) => {
966
- if (!Number.isFinite(a)) return;
967
- let d = s ? a / s[u] * 100 : a, f, p;
968
- d >= 0 ? (f = o(c[u] + d), p = o(c[u]), c[u] += d) : (f = o(l[u]), p = o(l[u] + d), l[u] += d), Q.push({
969
- x: r(i(u)),
970
- y: Math.min(f, p),
971
- w: r(Math.max(1, n)),
972
- h: r(Math.abs(p - f)),
973
- color: t.color,
974
- label: e.categories[u] ?? String(u),
975
- series: t.label,
976
- value: a
977
- });
978
- });
979
- }
980
- } else {
981
- let n = (W - t) / Z.length;
982
- Z.forEach((i, a) => {
983
- let o = V(i), s = H(i), c = s ? B(o, o.min, s) : B(o, Math.min(Math.max(0, o.min), o.max), s);
984
- i.values.forEach((l, u) => {
985
- if (!Number.isFinite(l) || s && l <= 0) return;
986
- let d = j + W * u + t / 2 + n * a, f = B(o, l, s);
987
- Q.push({
988
- x: r(d),
989
- y: Math.min(f, c),
990
- w: r(Math.max(1, n - 1)),
991
- h: r(Math.max(1, Math.abs(f - c))),
992
- color: i.color,
993
- label: e.categories[u] ?? String(u),
994
- series: i.label,
995
- value: l
996
- });
997
- });
998
- });
999
- }
1000
- }
1001
- let $ = [], oe = {
1002
- left: Array(U).fill(0),
1003
- right: Array(U).fill(0)
1004
- }, se = {
1005
- left: null,
1006
- right: null
1007
- };
1008
- if (e.stacked100) for (let t of ["left", "right"]) {
1009
- let n = c.filter((e) => e.kind === "area" && e.axis === t);
1010
- n.length && (se[t] = e.categories.map((e, t) => n.reduce((e, n) => e + Math.abs(Number.isFinite(n.values[t]) ? n.values[t] : 0), 0) || 1));
1011
- }
1012
- for (let t of c) {
1013
- if (t.kind === "bar") continue;
1014
- let n = V(t), i = H(t), a = (e) => B(n, e, i), o = s && t.kind === "area", c = (e) => Y(e), l, u = null;
1015
- if (o) {
1016
- let n = oe[t.axis], r = n.slice(), i = se[t.axis];
1017
- l = t.values.map((t, r) => {
1018
- let o = Number.isFinite(t) ? t : 0, s = i ? o / i[r] * 100 : o, l = (n[r] ?? 0) + s;
1019
- return n[r] = l, {
1020
- x: c(r),
1021
- y: a(l),
1022
- label: e.categories[r] ?? String(r),
1023
- value: t,
1024
- defined: Number.isFinite(t)
1025
- };
1026
- }), u = r.map((e, t) => ({
1027
- x: c(t),
1028
- y: a(e)
1029
- }));
1030
- } else l = t.values.map((t, n) => {
1031
- let r = Number.isFinite(t);
1032
- return {
1033
- x: c(n),
1034
- y: r ? a(t) : NaN,
1035
- label: e.categories[n] ?? String(n),
1036
- value: t,
1037
- defined: r
1038
- };
1039
- });
1040
- let d = !!t.smooth, f = h(l, d), p = "";
1041
- if (t.kind === "area" && l.length) {
1042
- if (u) p = `${d ? g(l.map((e) => ({
1043
- x: e.x,
1044
- y: e.y
1045
- }))) : l.map((e, t) => `${t === 0 ? "M" : "L"}${e.x},${e.y}`).join(" ")} ${d ? `L${u[u.length - 1].x},${u[u.length - 1].y} ` + g(u.slice().reverse()).replace(/^M[^ ]+ /, "") : u.slice().reverse().map((e) => `L${e.x},${e.y}`).join(" ")} Z`;
1046
- else {
1047
- let e = r(a(Math.min(Math.max(0, n.min), n.max))), t = [], i = [];
1048
- for (let e of l) e.defined ? i.push(e) : i.length && (t.push(i), i = []);
1049
- i.length && t.push(i), p = t.map((t) => `${d ? g(t.map((e) => ({
1050
- x: e.x,
1051
- y: e.y
1052
- }))) : t.map((e, t) => `${t === 0 ? "M" : "L"}${e.x},${e.y}`).join(" ")} L${t[t.length - 1].x},${e} L${t[0].x},${e} Z`).join(" ");
1053
- }
1054
- }
1055
- let m = "";
1056
- if (t.upperValues?.length === t.values.length && t.lowerValues?.length === t.values.length) {
1057
- let e = [], n = [];
1058
- for (let r = 0; r < t.values.length; r += 1) {
1059
- let o = t.upperValues[r], s = t.lowerValues[r];
1060
- !Number.isFinite(o) || !Number.isFinite(s) || i && (o <= 0 || s <= 0) || (e.push({
1061
- x: c(r),
1062
- y: a(o)
1063
- }), n.push({
1064
- x: c(r),
1065
- y: a(s)
1066
- }));
1067
- }
1068
- e.length >= 2 && (m = `${d ? g(e) : e.map((e, t) => `${t === 0 ? "M" : "L"}${e.x},${e.y}`).join(" ")} ${d ? `L${n[n.length - 1].x},${n[n.length - 1].y} ` + g(n.slice().reverse()).replace(/^M[^ ]+ /, "") : n.slice().reverse().map((e) => `L${e.x},${e.y}`).join(" ")} Z`);
1069
- }
1070
- $.push({
1071
- path: f,
1072
- areaPath: p,
1073
- color: t.color,
1074
- label: t.label,
1075
- points: l,
1076
- bandPath: m
1077
- });
1078
- }
1079
- let ce = (t, n) => t.ticks.map((r) => ({
1080
- value: r,
1081
- y: B(t, r, n),
1082
- label: C(r, e.valueFormat)
1083
- })), le = (e.referenceLines ?? []).map((t) => {
1084
- let n = t.axis === "right", r = n ? z ?? R : R, i = n ? L : I;
1085
- return {
1086
- y: B(r, t.value, i),
1087
- label: t.label ?? C(t.value, e.valueFormat),
1088
- color: t.color ?? "#ef4444",
1089
- dashed: t.dashed !== !1
1090
- };
1091
- }), ue = [];
1092
- for (let t of c) {
1093
- if (!t.overlay) continue;
1094
- let n = V(t), r = H(t), i = b(t.values, t.overlay), a = t.overlayColor ?? t.color, o = i.map((t, i) => {
1095
- let a = Number.isFinite(t) && (!r || t > 0);
1096
- return {
1097
- x: Y(i),
1098
- y: a ? B(n, t, r) : NaN,
1099
- label: e.categories[i] ?? String(i),
1100
- value: t,
1101
- defined: a
1102
- };
1103
- }), s = h(o, !!t.smooth);
1104
- ue.push({
1105
- path: s,
1106
- areaPath: "",
1107
- color: a,
1108
- label: `${t.label} (${t.overlay})`,
1109
- points: o
1110
- });
1111
- }
1112
- let de = [];
1113
- for (let t of e.annotations ?? []) {
1114
- let n = null, r = null;
1115
- if ("category" in t.at) {
1116
- let i = e.categories.indexOf(t.at.category);
1117
- if (i < 0) continue;
1118
- n = Y(i);
1119
- let a = t.at.series, o = a ? c.find((e) => e.label === a) : c[0];
1120
- if (o) {
1121
- let e = o.values[i];
1122
- Number.isFinite(e) && (r = B(V(o), e, H(o)));
1123
- }
1124
- r ??= 10 + F / 2;
1125
- } else n = j + P / 2, r = Number.isFinite(t.at.y) ? B(R, t.at.y, I) : 10 + F / 2;
1126
- n != null && r != null && Number.isFinite(r) && de.push({
1127
- x: n,
1128
- y: r,
1129
- label: t.label,
1130
- color: t.color ?? "#0f172a",
1131
- placement: t.placement ?? "top"
1132
- });
1133
- }
1134
- return {
1135
- ...p,
1136
- plot: ee,
1137
- bars: Q,
1138
- lines: $,
1139
- yTicks: ce(R, I),
1140
- y2Ticks: z ? ce(z, L) : [],
1141
- hasRightAxis: y,
1142
- xTicks: ae,
1143
- categoryGroupTicks: X,
1144
- xLabelRotated: !K && O,
1145
- referenceLines: le,
1146
- overlays: ue,
1147
- annotations: de
1148
- };
1149
- }
1150
- function k(e, t) {
1151
- let n = t.reduce ?? "sum", r = Array.isArray(t.value) ? t.value : [t.value], i = (e, t) => n === "count" ? t : n === "avg" ? t ? e / t : 0 : e, a = [], o = /* @__PURE__ */ new Map(), s = (e) => {
1152
- let t = o.get(e);
1153
- return t === void 0 && (t = a.length, o.set(e, t), a.push(e)), t;
1154
- }, c = /* @__PURE__ */ new Map(), l = (e) => {
1155
- let t = c.get(e);
1156
- return t || (t = [], c.set(e, t)), t;
1157
- }, u = t.idField !== void 0;
1158
- for (let n of e) {
1159
- let e = s(String(n[t.category] ?? "")), i = u ? n[t.idField] : void 0;
1160
- if (t.series) {
1161
- let a = l(String(n[t.series] ?? "")), o = Number(n[r[0]]), s = a[e] ??= {
1162
- sum: 0,
1163
- count: 0,
1164
- rowIds: []
1165
- };
1166
- Number.isFinite(o) && (s.sum += o, s.count += 1, i !== void 0 && s.rowIds.push(i));
1167
- } else for (let t of r) {
1168
- let r = l(t), a = Number(n[t]), o = r[e] ??= {
1169
- sum: 0,
1170
- count: 0,
1171
- rowIds: []
1172
- };
1173
- Number.isFinite(a) && (o.sum += a, o.count += 1, i !== void 0 && o.rowIds.push(i));
1174
- }
1175
- }
1176
- let d = [...c.entries()].map(([e, n]) => ({
1177
- label: t.series ? e : t.seriesLabel && r.length === 1 ? t.seriesLabel : e,
1178
- values: a.map((e, t) => {
1179
- let r = n[t] ?? {
1180
- sum: 0,
1181
- count: 0,
1182
- rowIds: []
1183
- };
1184
- return i(r.sum, r.count);
1185
- }),
1186
- rowIds: u ? a.map((e, t) => (n[t]?.rowIds ?? []).slice()) : void 0
1187
- })), f = a.map((e, t) => d.reduce((e, n) => e + (Number.isFinite(n.values[t]) ? n.values[t] : 0), 0)), p = t.sort ?? (t.topN ? "value-desc" : "none"), m = a.map((e, t) => t);
1188
- p === "value-desc" ? m.sort((e, t) => f[t] - f[e]) : p === "value-asc" ? m.sort((e, t) => f[e] - f[t]) : p === "category" && m.sort((e, t) => a[e].localeCompare(a[t]));
1189
- let h, g;
1190
- if (t.topN && m.length > t.topN) {
1191
- let e = m.slice(0, t.topN), n = m.slice(t.topN);
1192
- h = e.map((e) => a[e]).concat(t.otherLabel ?? "Other"), g = d.map((t) => ({
1193
- label: t.label,
1194
- values: e.map((e) => t.values[e]).concat(n.reduce((e, n) => e + (Number.isFinite(t.values[n]) ? t.values[n] : 0), 0)),
1195
- rowIds: t.rowIds ? e.map((e) => t.rowIds[e]).concat([n.flatMap((e) => t.rowIds[e] ?? [])]) : void 0
1196
- }));
1197
- } else h = m.map((e) => a[e]), g = d.map((e) => ({
1198
- label: e.label,
1199
- values: m.map((t) => e.values[t]),
1200
- rowIds: e.rowIds ? m.map((t) => e.rowIds[t]) : void 0
1201
- }));
1202
- return {
1203
- type: t.type,
1204
- categories: h,
1205
- series: g,
1206
- width: t.width,
1207
- height: t.height,
1208
- stacked: t.stacked,
1209
- stacked100: t.stacked100,
1210
- palette: t.palette
1211
- };
1212
- }
1213
- //#endregion
1214
- export { b as a, _ as c, f as d, k as f, t as i, p as l, v as m, O as n, y as o, u as p, h as r, C as s, n as t, x as u };