@svgrid/grid 2.2.16 → 2.2.18

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 (290) hide show
  1. package/README.md +1 -1
  2. package/dist/GridFooter.svelte +12 -11
  3. package/dist/SvAnchor.svelte +65 -0
  4. package/dist/SvAnchor.svelte.d.ts +24 -0
  5. package/dist/SvAspectRatio.svelte +38 -0
  6. package/dist/SvAspectRatio.svelte.d.ts +16 -0
  7. package/dist/SvAutoComplete.svelte +52 -7
  8. package/dist/SvAutoComplete.svelte.d.ts +4 -1
  9. package/dist/SvBlockquote.svelte +43 -0
  10. package/dist/SvBlockquote.svelte.d.ts +16 -0
  11. package/dist/SvCalendar.svelte +33 -2
  12. package/dist/SvCalendar.svelte.d.ts +8 -1
  13. package/dist/SvCheckBox.svelte +6 -2
  14. package/dist/SvCode.svelte +52 -0
  15. package/dist/SvCode.svelte.d.ts +19 -0
  16. package/dist/SvCollapsible.svelte +75 -0
  17. package/dist/SvCollapsible.svelte.d.ts +27 -0
  18. package/dist/SvColorInput.svelte +11 -17
  19. package/dist/SvColorInput.svelte.d.ts +2 -0
  20. package/dist/SvComboBox.svelte +85 -8
  21. package/dist/SvComboBox.svelte.d.ts +14 -0
  22. package/dist/SvCountryInput.svelte +2 -2
  23. package/dist/SvCountryInput.svelte.d.ts +1 -1
  24. package/dist/SvDropDownList.svelte +154 -51
  25. package/dist/SvDropDownList.svelte.d.ts +17 -3
  26. package/dist/SvDurationInput.svelte +59 -41
  27. package/dist/SvDurationInput.svelte.d.ts +18 -0
  28. package/dist/SvField.svelte +203 -12
  29. package/dist/SvField.svelte.d.ts +45 -8
  30. package/dist/SvForm.svelte +195 -21
  31. package/dist/SvForm.svelte.d.ts +23 -0
  32. package/dist/SvGrid.controller.svelte.d.ts +12 -1
  33. package/dist/SvGrid.controller.svelte.js +87 -7
  34. package/dist/SvGrid.svelte +383 -181
  35. package/dist/SvGrid.types.d.ts +123 -2
  36. package/dist/SvGridChartView.svelte +70 -0
  37. package/dist/SvGridChartView.svelte.d.ts +11 -0
  38. package/dist/SvGridDropdown.svelte +9 -2
  39. package/dist/SvGridSelect.svelte +5 -2
  40. package/dist/SvGridSelect.svelte.d.ts +1 -1
  41. package/dist/SvGroup.svelte +41 -0
  42. package/dist/SvGroup.svelte.d.ts +27 -0
  43. package/dist/SvHoverCard.svelte +70 -0
  44. package/dist/SvHoverCard.svelte.d.ts +41 -0
  45. package/dist/SvKbd.svelte +51 -0
  46. package/dist/SvKbd.svelte.d.ts +18 -0
  47. package/dist/SvList.svelte +55 -0
  48. package/dist/SvList.svelte.d.ts +23 -0
  49. package/dist/SvListBox.svelte +166 -77
  50. package/dist/SvListBox.svelte.d.ts +17 -4
  51. package/dist/SvLoadingOverlay.svelte +53 -0
  52. package/dist/SvLoadingOverlay.svelte.d.ts +28 -0
  53. package/dist/SvMark.svelte +36 -0
  54. package/dist/SvMark.svelte.d.ts +14 -0
  55. package/dist/SvMaskedInput.svelte +50 -35
  56. package/dist/SvMaskedInput.svelte.d.ts +17 -2
  57. package/dist/SvMenuList.svelte +32 -3
  58. package/dist/SvMenubar.svelte +200 -0
  59. package/dist/SvMenubar.svelte.d.ts +18 -0
  60. package/dist/SvMultiSelect.svelte +7 -4
  61. package/dist/SvMultiSelect.svelte.d.ts +1 -1
  62. package/dist/SvNumberInput.svelte +79 -42
  63. package/dist/SvNumberInput.svelte.d.ts +25 -0
  64. package/dist/SvOtpInput.svelte +2 -2
  65. package/dist/SvPasswordInput.svelte +51 -31
  66. package/dist/SvPasswordInput.svelte.d.ts +17 -0
  67. package/dist/SvPhoneInput.svelte +39 -28
  68. package/dist/SvPhoneInput.svelte.d.ts +4 -0
  69. package/dist/SvPopconfirm.svelte +79 -0
  70. package/dist/SvPopconfirm.svelte.d.ts +42 -0
  71. package/dist/SvPopover.svelte +87 -29
  72. package/dist/SvPopover.svelte.d.ts +18 -4
  73. package/dist/SvRadioGroup.svelte +5 -1
  74. package/dist/SvResult.svelte +73 -0
  75. package/dist/SvResult.svelte.d.ts +28 -0
  76. package/dist/SvSegmented.svelte +114 -0
  77. package/dist/SvSegmented.svelte.d.ts +29 -0
  78. package/dist/SvSimpleGrid.svelte +41 -0
  79. package/dist/SvSimpleGrid.svelte.d.ts +25 -0
  80. package/dist/SvSlider.svelte +23 -10
  81. package/dist/SvSpinner.svelte +43 -0
  82. package/dist/SvSpinner.svelte.d.ts +20 -0
  83. package/dist/SvStack.svelte +37 -0
  84. package/dist/SvStack.svelte.d.ts +24 -0
  85. package/dist/SvSwitchButton.svelte +6 -1
  86. package/dist/SvTagsInput.svelte +9 -5
  87. package/dist/SvText.svelte +76 -0
  88. package/dist/SvText.svelte.d.ts +31 -0
  89. package/dist/SvTextInput.svelte +75 -43
  90. package/dist/SvTextInput.svelte.d.ts +28 -1
  91. package/dist/SvTimePicker.svelte +32 -2
  92. package/dist/SvTimePicker.svelte.d.ts +8 -9
  93. package/dist/SvTitle.svelte +57 -0
  94. package/dist/SvTitle.svelte.d.ts +24 -0
  95. package/dist/SvToaster.svelte +41 -6
  96. package/dist/SvToggleButton.svelte +4 -1
  97. package/dist/SvTooltip.svelte +68 -34
  98. package/dist/SvTooltip.svelte.d.ts +14 -2
  99. package/dist/SvTree.svelte +81 -21
  100. package/dist/SvTree.svelte.d.ts +3 -2
  101. package/dist/SvTreeSelect.svelte +5 -2
  102. package/dist/SvTreeSelect.svelte.d.ts +1 -1
  103. package/dist/SvVisuallyHidden.svelte +49 -0
  104. package/dist/SvVisuallyHidden.svelte.d.ts +19 -0
  105. package/dist/ai.d.ts +289 -0
  106. package/dist/ai.js +1013 -0
  107. package/dist/board-view.svelte.d.ts +22 -0
  108. package/dist/board-view.svelte.js +13 -0
  109. package/dist/build-api.js +36 -6
  110. package/dist/cdn/GridMenus-0AK9O7qG.js +420 -0
  111. package/dist/cdn/GridMenus-BjUoCXoD.js +416 -0
  112. package/dist/cdn/SvDateTimePicker-CYC7gRER.js +2176 -0
  113. package/dist/cdn/SvDateTimePicker-DtQKd4Ns.js +2198 -0
  114. package/dist/cdn/SvGridChart-BcLCYvw9.js +1195 -0
  115. package/dist/cdn/SvGridChart-BhnFdLd0.js +1203 -0
  116. package/dist/cdn/SvGridChartPanel-Cmx9DHAS.js +561 -0
  117. package/dist/cdn/SvGridChartPanel-DvjwxLvK.js +577 -0
  118. package/dist/cdn/SvGridChartView-B40DTJSX.js +54 -0
  119. package/dist/cdn/SvGridChartView-PwqI4s02.js +53 -0
  120. package/dist/cdn/SvGridDropdown-DjALc_4f.js +255 -0
  121. package/dist/cdn/SvGridDropdown-hpnHvOGt.js +254 -0
  122. package/dist/cdn/chart-T1usDN0o.js +1212 -0
  123. package/dist/cdn/disclose-version-DoD9AFD_.js +2958 -0
  124. package/dist/cdn/export-format-JT5pWVT8.js +561 -0
  125. package/dist/cdn/popover-P-9P2YYn.js +69 -0
  126. package/dist/cdn/rolldown-runtime-Dy4uBu1J.js +11 -0
  127. package/dist/cdn/src-BLhdLmoN.js +25707 -0
  128. package/dist/cdn/src-BwnUVj3T.js +25623 -0
  129. package/dist/cdn/svgrid.js +9 -32897
  130. package/dist/cdn/svgrid.svelte-external.js +9 -30052
  131. package/dist/cell-formatting.d.ts +2 -2
  132. package/dist/cell-render.js +4 -4
  133. package/dist/chart-view.svelte.d.ts +25 -0
  134. package/dist/chart-view.svelte.js +14 -0
  135. package/dist/createCombobox.svelte.d.ts +5 -0
  136. package/dist/createCombobox.svelte.js +21 -5
  137. package/dist/createDropdownList.svelte.d.ts +3 -0
  138. package/dist/createDropdownList.svelte.js +8 -2
  139. package/dist/createForm.svelte.d.ts +18 -0
  140. package/dist/createForm.svelte.js +51 -6
  141. package/dist/createMenu.svelte.js +27 -0
  142. package/dist/createPopoverSelect.svelte.d.ts +3 -0
  143. package/dist/createPopoverSelect.svelte.js +9 -1
  144. package/dist/createSlider.svelte.d.ts +8 -21
  145. package/dist/createSlider.svelte.js +34 -0
  146. package/dist/createTooltip.svelte.d.ts +12 -0
  147. package/dist/createTooltip.svelte.js +72 -9
  148. package/dist/editor-contract.d.ts +15 -0
  149. package/dist/export-provider.d.ts +27 -0
  150. package/dist/export-provider.js +9 -0
  151. package/dist/filter-operators.d.ts +6 -0
  152. package/dist/filter-operators.js +33 -0
  153. package/dist/form-field.d.ts +45 -2
  154. package/dist/grid-messages.d.ts +61 -0
  155. package/dist/grid-messages.js +72 -0
  156. package/dist/group-display.d.ts +62 -0
  157. package/dist/group-display.js +78 -0
  158. package/dist/index.d.ts +36 -4
  159. package/dist/index.js +43 -2
  160. package/dist/js-scroller.svelte.d.ts +35 -0
  161. package/dist/js-scroller.svelte.js +154 -0
  162. package/dist/list-option.d.ts +46 -0
  163. package/dist/list-option.js +53 -0
  164. package/dist/menus.js +25 -11
  165. package/dist/pivot-view.svelte.d.ts +72 -0
  166. package/dist/pivot-view.svelte.js +13 -0
  167. package/dist/positioning.d.ts +111 -0
  168. package/dist/positioning.js +191 -0
  169. package/dist/scheduler-model.d.ts +3 -0
  170. package/dist/scheduler-model.js +22 -5
  171. package/dist/svgrid-wrapper.types.d.ts +18 -0
  172. package/dist/toast-store.svelte.d.ts +54 -0
  173. package/dist/toast-store.svelte.js +65 -15
  174. package/package.json +9 -1
  175. package/src/GridFooter.svelte +12 -11
  176. package/src/SvAnchor.svelte +65 -0
  177. package/src/SvAspectRatio.svelte +38 -0
  178. package/src/SvAutoComplete.svelte +52 -7
  179. package/src/SvBlockquote.svelte +43 -0
  180. package/src/SvCalendar.svelte +33 -2
  181. package/src/SvCalendar.test.ts +15 -0
  182. package/src/SvCheckBox.svelte +6 -2
  183. package/src/SvCode.svelte +52 -0
  184. package/src/SvCollapsible.svelte +75 -0
  185. package/src/SvColorInput.svelte +11 -17
  186. package/src/SvComboBox.svelte +85 -8
  187. package/src/SvCountryInput.svelte +2 -2
  188. package/src/SvDropDownList.svelte +154 -51
  189. package/src/SvDurationInput.svelte +59 -41
  190. package/src/SvField.svelte +203 -12
  191. package/src/SvForm.svelte +195 -21
  192. package/src/SvForm.test.ts +112 -0
  193. package/src/SvGrid.controller.svelte.ts +88 -7
  194. package/src/SvGrid.svelte +383 -181
  195. package/src/SvGrid.types.ts +125 -1
  196. package/src/SvGridChartView.svelte +70 -0
  197. package/src/SvGridDropdown.svelte +9 -2
  198. package/src/SvGridSelect.svelte +5 -2
  199. package/src/SvGroup.svelte +41 -0
  200. package/src/SvHoverCard.svelte +70 -0
  201. package/src/SvKbd.svelte +51 -0
  202. package/src/SvList.svelte +55 -0
  203. package/src/SvListBox.svelte +166 -77
  204. package/src/SvLoadingOverlay.svelte +53 -0
  205. package/src/SvMark.svelte +36 -0
  206. package/src/SvMaskedInput.svelte +50 -35
  207. package/src/SvMenuList.svelte +32 -3
  208. package/src/SvMenubar.svelte +200 -0
  209. package/src/SvMultiSelect.svelte +7 -4
  210. package/src/SvNumberInput.svelte +79 -42
  211. package/src/SvOtpInput.svelte +2 -2
  212. package/src/SvPasswordInput.svelte +51 -31
  213. package/src/SvPhoneInput.svelte +39 -28
  214. package/src/SvPopconfirm.svelte +79 -0
  215. package/src/SvPopover.svelte +87 -29
  216. package/src/SvRadioGroup.svelte +5 -1
  217. package/src/SvResult.svelte +73 -0
  218. package/src/SvSegmented.svelte +114 -0
  219. package/src/SvSimpleGrid.svelte +41 -0
  220. package/src/SvSlider.svelte +23 -10
  221. package/src/SvSpinner.svelte +43 -0
  222. package/src/SvStack.svelte +37 -0
  223. package/src/SvSwitchButton.svelte +6 -1
  224. package/src/SvTagsInput.svelte +9 -5
  225. package/src/SvText.svelte +76 -0
  226. package/src/SvTextInput.svelte +75 -43
  227. package/src/SvTimePicker.svelte +32 -2
  228. package/src/SvTitle.svelte +57 -0
  229. package/src/SvToaster.svelte +41 -6
  230. package/src/SvToaster.test.ts +32 -0
  231. package/src/SvToggleButton.svelte +4 -1
  232. package/src/SvTooltip.svelte +68 -34
  233. package/src/SvTree.svelte +81 -21
  234. package/src/SvTreeSelect.svelte +5 -2
  235. package/src/SvVisuallyHidden.svelte +49 -0
  236. package/src/ai.test.ts +502 -0
  237. package/src/ai.ts +1391 -0
  238. package/src/board-view.svelte.ts +33 -0
  239. package/src/build-api.coverage.test.ts +101 -0
  240. package/src/build-api.ts +43 -18
  241. package/src/builtin-editors.grid.test.ts +1 -1
  242. package/src/cell-formatting.ts +5 -5
  243. package/src/cell-render.ts +4 -4
  244. package/src/chart-view.svelte.ts +36 -0
  245. package/src/createCombobox.svelte.ts +17 -5
  246. package/src/createDropdownList.svelte.ts +8 -2
  247. package/src/createForm.svelte.ts +59 -6
  248. package/src/createMenu.svelte.ts +23 -0
  249. package/src/createPopoverSelect.svelte.ts +8 -1
  250. package/src/createSlider.svelte.ts +20 -0
  251. package/src/createTooltip.svelte.ts +67 -9
  252. package/src/editor-contract.ts +16 -0
  253. package/src/export-provider.ts +40 -0
  254. package/src/filter-operators.ts +37 -0
  255. package/src/form-field.ts +42 -2
  256. package/src/grid-messages.test.ts +24 -0
  257. package/src/grid-messages.ts +137 -0
  258. package/src/group-display.test.ts +77 -0
  259. package/src/group-display.ts +117 -0
  260. package/src/i18n.grid.test.ts +73 -0
  261. package/src/index.ts +91 -2
  262. package/src/js-scroller.svelte.ts +173 -0
  263. package/src/list-option.test.ts +56 -0
  264. package/src/list-option.ts +81 -0
  265. package/src/menus.test.ts +32 -0
  266. package/src/menus.ts +25 -12
  267. package/src/pivot-view.svelte.ts +90 -0
  268. package/src/pivot-view.test.ts +38 -0
  269. package/src/pivot.grid.test.ts +102 -0
  270. package/src/positioning.test.ts +141 -0
  271. package/src/positioning.ts +266 -0
  272. package/src/scheduler-model.test.ts +16 -0
  273. package/src/scheduler-model.ts +24 -5
  274. package/src/svgrid-wrapper.types.ts +23 -0
  275. package/src/svgrid.charting.test.ts +8 -1
  276. package/src/svgrid.comments-autocomplete.test.ts +7 -2
  277. package/src/svgrid.context-menu.test.ts +8 -3
  278. package/src/toast-store.svelte.ts +98 -0
  279. package/src/toast-store.test.ts +62 -1
  280. package/src/ui-breadth.test.ts +138 -0
  281. package/src/ui-buttons.test.ts +39 -0
  282. package/src/ui-inputs.test.ts +2 -2
  283. package/src/ui-range.test.ts +9 -0
  284. package/src/ui-selection.test.ts +36 -0
  285. package/src/ui-tier1.test.ts +1 -1
  286. package/src/virtual.test.ts +20 -6
  287. package/dist/SvGridBoard.svelte +0 -2339
  288. package/dist/SvGridBoard.svelte.d.ts +0 -31
  289. package/src/SvGridBoard.svelte +0 -2339
  290. package/src/board.test.ts +0 -927
@@ -0,0 +1,1212 @@
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) if (u) p = `${d ? g(l.map((e) => ({
1042
+ x: e.x,
1043
+ y: e.y
1044
+ }))) : 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`;
1045
+ else {
1046
+ let e = r(a(Math.min(Math.max(0, n.min), n.max))), t = [], i = [];
1047
+ for (let e of l) e.defined ? i.push(e) : i.length && (t.push(i), i = []);
1048
+ i.length && t.push(i), p = t.map((t) => `${d ? g(t.map((e) => ({
1049
+ x: e.x,
1050
+ y: e.y
1051
+ }))) : 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(" ");
1052
+ }
1053
+ let m = "";
1054
+ if (t.upperValues?.length === t.values.length && t.lowerValues?.length === t.values.length) {
1055
+ let e = [], n = [];
1056
+ for (let r = 0; r < t.values.length; r += 1) {
1057
+ let o = t.upperValues[r], s = t.lowerValues[r];
1058
+ !Number.isFinite(o) || !Number.isFinite(s) || i && (o <= 0 || s <= 0) || (e.push({
1059
+ x: c(r),
1060
+ y: a(o)
1061
+ }), n.push({
1062
+ x: c(r),
1063
+ y: a(s)
1064
+ }));
1065
+ }
1066
+ 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`);
1067
+ }
1068
+ $.push({
1069
+ path: f,
1070
+ areaPath: p,
1071
+ color: t.color,
1072
+ label: t.label,
1073
+ points: l,
1074
+ bandPath: m
1075
+ });
1076
+ }
1077
+ let ce = (t, n) => t.ticks.map((r) => ({
1078
+ value: r,
1079
+ y: B(t, r, n),
1080
+ label: C(r, e.valueFormat)
1081
+ })), le = (e.referenceLines ?? []).map((t) => {
1082
+ let n = t.axis === "right", r = n ? z ?? R : R, i = n ? L : I;
1083
+ return {
1084
+ y: B(r, t.value, i),
1085
+ label: t.label ?? C(t.value, e.valueFormat),
1086
+ color: t.color ?? "#ef4444",
1087
+ dashed: t.dashed !== !1
1088
+ };
1089
+ }), ue = [];
1090
+ for (let t of c) {
1091
+ if (!t.overlay) continue;
1092
+ let n = V(t), r = H(t), i = b(t.values, t.overlay), a = t.overlayColor ?? t.color, o = i.map((t, i) => {
1093
+ let a = Number.isFinite(t) && (!r || t > 0);
1094
+ return {
1095
+ x: Y(i),
1096
+ y: a ? B(n, t, r) : NaN,
1097
+ label: e.categories[i] ?? String(i),
1098
+ value: t,
1099
+ defined: a
1100
+ };
1101
+ }), s = h(o, !!t.smooth);
1102
+ ue.push({
1103
+ path: s,
1104
+ areaPath: "",
1105
+ color: a,
1106
+ label: `${t.label} (${t.overlay})`,
1107
+ points: o
1108
+ });
1109
+ }
1110
+ let de = [];
1111
+ for (let t of e.annotations ?? []) {
1112
+ let n = null, r = null;
1113
+ if ("category" in t.at) {
1114
+ let i = e.categories.indexOf(t.at.category);
1115
+ if (i < 0) continue;
1116
+ n = Y(i);
1117
+ let a = t.at.series, o = a ? c.find((e) => e.label === a) : c[0];
1118
+ if (o) {
1119
+ let e = o.values[i];
1120
+ Number.isFinite(e) && (r = B(V(o), e, H(o)));
1121
+ }
1122
+ r ??= 10 + F / 2;
1123
+ } else n = j + P / 2, r = Number.isFinite(t.at.y) ? B(R, t.at.y, I) : 10 + F / 2;
1124
+ n != null && r != null && Number.isFinite(r) && de.push({
1125
+ x: n,
1126
+ y: r,
1127
+ label: t.label,
1128
+ color: t.color ?? "#0f172a",
1129
+ placement: t.placement ?? "top"
1130
+ });
1131
+ }
1132
+ return {
1133
+ ...p,
1134
+ plot: ee,
1135
+ bars: Q,
1136
+ lines: $,
1137
+ yTicks: ce(R, I),
1138
+ y2Ticks: z ? ce(z, L) : [],
1139
+ hasRightAxis: y,
1140
+ xTicks: ae,
1141
+ categoryGroupTicks: X,
1142
+ xLabelRotated: K ? !1 : O,
1143
+ referenceLines: le,
1144
+ overlays: ue,
1145
+ annotations: de
1146
+ };
1147
+ }
1148
+ function k(e, t) {
1149
+ 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) => {
1150
+ let t = o.get(e);
1151
+ return t === void 0 && (t = a.length, o.set(e, t), a.push(e)), t;
1152
+ }, c = /* @__PURE__ */ new Map(), l = (e) => {
1153
+ let t = c.get(e);
1154
+ return t || (t = [], c.set(e, t)), t;
1155
+ }, u = t.idField !== void 0;
1156
+ for (let n of e) {
1157
+ let e = s(String(n[t.category] ?? "")), i = u ? n[t.idField] : void 0;
1158
+ if (t.series) {
1159
+ let a = l(String(n[t.series] ?? "")), o = Number(n[r[0]]), s = a[e] ??= {
1160
+ sum: 0,
1161
+ count: 0,
1162
+ rowIds: []
1163
+ };
1164
+ Number.isFinite(o) && (s.sum += o, s.count += 1, i !== void 0 && s.rowIds.push(i));
1165
+ } else for (let t of r) {
1166
+ let r = l(t), a = Number(n[t]), o = r[e] ??= {
1167
+ sum: 0,
1168
+ count: 0,
1169
+ rowIds: []
1170
+ };
1171
+ Number.isFinite(a) && (o.sum += a, o.count += 1, i !== void 0 && o.rowIds.push(i));
1172
+ }
1173
+ }
1174
+ let d = [...c.entries()].map(([e, n]) => ({
1175
+ label: t.series ? e : t.seriesLabel && r.length === 1 ? t.seriesLabel : e,
1176
+ values: a.map((e, t) => {
1177
+ let r = n[t] ?? {
1178
+ sum: 0,
1179
+ count: 0,
1180
+ rowIds: []
1181
+ };
1182
+ return i(r.sum, r.count);
1183
+ }),
1184
+ rowIds: u ? a.map((e, t) => (n[t]?.rowIds ?? []).slice()) : void 0
1185
+ })), 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);
1186
+ 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]));
1187
+ let h, g;
1188
+ if (t.topN && m.length > t.topN) {
1189
+ let e = m.slice(0, t.topN), n = m.slice(t.topN);
1190
+ h = e.map((e) => a[e]).concat(t.otherLabel ?? "Other"), g = d.map((t) => ({
1191
+ label: t.label,
1192
+ values: e.map((e) => t.values[e]).concat(n.reduce((e, n) => e + (Number.isFinite(t.values[n]) ? t.values[n] : 0), 0)),
1193
+ rowIds: t.rowIds ? e.map((e) => t.rowIds[e]).concat([n.flatMap((e) => t.rowIds[e] ?? [])]) : void 0
1194
+ }));
1195
+ } else h = m.map((e) => a[e]), g = d.map((e) => ({
1196
+ label: e.label,
1197
+ values: m.map((t) => e.values[t]),
1198
+ rowIds: e.rowIds ? m.map((t) => e.rowIds[t]) : void 0
1199
+ }));
1200
+ return {
1201
+ type: t.type,
1202
+ categories: h,
1203
+ series: g,
1204
+ width: t.width,
1205
+ height: t.height,
1206
+ stacked: t.stacked,
1207
+ stacked100: t.stacked100,
1208
+ palette: t.palette
1209
+ };
1210
+ }
1211
+ //#endregion
1212
+ 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 };