@cloudflare/kumo 2.0.4 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (172) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/ai/component-registry.json +24 -1
  3. package/ai/component-registry.md +57 -0
  4. package/dist/.build-complete +1 -1
  5. package/dist/chunks/SankeyChart-i4vgcatj89zpgpl9.js +626 -0
  6. package/dist/chunks/SankeyChart-i4vgcatj89zpgpl9.js.map +1 -0
  7. package/dist/chunks/{autocomplete-hbs51xgjf9iglbmq.js → autocomplete-1hi2rgzo10bczkfa.js} +4 -4
  8. package/dist/chunks/{autocomplete-hbs51xgjf9iglbmq.js.map → autocomplete-1hi2rgzo10bczkfa.js.map} +1 -1
  9. package/dist/chunks/{breadcrumbs-er08s9swoctwoj69.js → breadcrumbs-davmangc0urzivbs.js} +2 -2
  10. package/dist/chunks/{breadcrumbs-er08s9swoctwoj69.js.map → breadcrumbs-davmangc0urzivbs.js.map} +1 -1
  11. package/dist/chunks/{button-fe5rvewji3e5xd7m.js → button-n859eyw550yi2b9z.js} +2 -2
  12. package/dist/chunks/{button-fe5rvewji3e5xd7m.js.map → button-n859eyw550yi2b9z.js.map} +1 -1
  13. package/dist/chunks/{checkbox-l7kc0vcs0o7a6fgn.js → checkbox-dfl2fr8nchh43qfc.js} +3 -3
  14. package/dist/chunks/{checkbox-l7kc0vcs0o7a6fgn.js.map → checkbox-dfl2fr8nchh43qfc.js.map} +1 -1
  15. package/dist/chunks/{clipboard-text-je4e2q880wngmmuc.js → clipboard-text-ic9k5qjkljlr9z3b.js} +4 -4
  16. package/dist/chunks/{clipboard-text-je4e2q880wngmmuc.js.map → clipboard-text-ic9k5qjkljlr9z3b.js.map} +1 -1
  17. package/dist/chunks/{collapsible-nlp2jvcyuzxmq28o.js → collapsible-jvebgqfqljzokj8h.js} +2 -2
  18. package/dist/chunks/{collapsible-nlp2jvcyuzxmq28o.js.map → collapsible-jvebgqfqljzokj8h.js.map} +1 -1
  19. package/dist/chunks/{combobox-ck95wketqoqbxjwb.js → combobox-f5nyw45yiwx5f69l.js} +26 -23
  20. package/dist/chunks/{combobox-ck95wketqoqbxjwb.js.map → combobox-f5nyw45yiwx5f69l.js.map} +1 -1
  21. package/dist/chunks/{command-palette-kgiso245exdons4r.js → command-palette-ezbzp2fpbbo97ogf.js} +12 -12
  22. package/dist/chunks/command-palette-ezbzp2fpbbo97ogf.js.map +1 -0
  23. package/dist/chunks/{dialog-mqpvaidy0vnjwrfp.js → dialog-n6uc2s99xwdn2pnb.js} +3 -3
  24. package/dist/chunks/{dialog-mqpvaidy0vnjwrfp.js.map → dialog-n6uc2s99xwdn2pnb.js.map} +1 -1
  25. package/dist/chunks/{dropdown-gp5iptj1niq14lpv.js → dropdown-mftv4iv9nzhprg81.js} +2 -2
  26. package/dist/chunks/{dropdown-gp5iptj1niq14lpv.js.map → dropdown-mftv4iv9nzhprg81.js.map} +1 -1
  27. package/dist/chunks/{empty-bmacg9ap2gjmyqiw.js → empty-mmtirqntk6enx51o.js} +2 -2
  28. package/dist/chunks/{empty-bmacg9ap2gjmyqiw.js.map → empty-mmtirqntk6enx51o.js.map} +1 -1
  29. package/dist/chunks/{field-hmucpi6d4sqci1zu.js → field-mil8efu3x0s68eed.js} +3 -3
  30. package/dist/chunks/{field-hmucpi6d4sqci1zu.js.map → field-mil8efu3x0s68eed.js.map} +1 -1
  31. package/dist/chunks/{input-area-dpgn5810c269jwbu.js → input-area-hl1rdb9xcrqyt8xw.js} +4 -4
  32. package/dist/chunks/{input-area-dpgn5810c269jwbu.js.map → input-area-hl1rdb9xcrqyt8xw.js.map} +1 -1
  33. package/dist/chunks/{input-group-k1xa9cu8ochl1arh.js → input-group-5luo0442jgsie018.js} +5 -5
  34. package/dist/chunks/{input-group-k1xa9cu8ochl1arh.js.map → input-group-5luo0442jgsie018.js.map} +1 -1
  35. package/dist/chunks/{input-k2ychlh2zo6hsocz.js → input-kmztt6h4mzy101ho.js} +3 -3
  36. package/dist/chunks/{input-k2ychlh2zo6hsocz.js.map → input-kmztt6h4mzy101ho.js.map} +1 -1
  37. package/dist/chunks/{label-ni6chzu01wns3cs2.js → label-d14ibjmcbk1qmyrt.js} +3 -3
  38. package/dist/chunks/{label-ni6chzu01wns3cs2.js.map → label-d14ibjmcbk1qmyrt.js.map} +1 -1
  39. package/dist/chunks/{layer-card-ikm31xemd70w3lru.js → layer-card-eomdoafn3sfpih1d.js} +18 -17
  40. package/dist/chunks/layer-card-eomdoafn3sfpih1d.js.map +1 -0
  41. package/dist/chunks/{link-m9hlspftl34nseme.js → link-ihastr6a2dmo1so5.js} +39 -25
  42. package/dist/chunks/link-ihastr6a2dmo1so5.js.map +1 -0
  43. package/dist/chunks/link-provider-mn2voeohon7cj9o4.js.map +1 -1
  44. package/dist/chunks/{menubar-hwev159bm4rw9ixk.js → menubar-f6xelkurau8cl60f.js} +2 -2
  45. package/dist/chunks/{menubar-hwev159bm4rw9ixk.js.map → menubar-f6xelkurau8cl60f.js.map} +1 -1
  46. package/dist/chunks/{meter-n34a7yb8c3rim26i.js → meter-g1ja8cwtum0frcdj.js} +2 -2
  47. package/dist/chunks/{meter-n34a7yb8c3rim26i.js.map → meter-g1ja8cwtum0frcdj.js.map} +1 -1
  48. package/dist/chunks/{pagination-l9inbujoqp5swmyg.js → pagination-kmtbb3twehv79tm8.js} +3 -3
  49. package/dist/chunks/{pagination-l9inbujoqp5swmyg.js.map → pagination-kmtbb3twehv79tm8.js.map} +1 -1
  50. package/dist/chunks/{popover-iayd9ya5yhujz6ve.js → popover-f3t99000mahsnjzc.js} +2 -2
  51. package/dist/chunks/{popover-iayd9ya5yhujz6ve.js.map → popover-f3t99000mahsnjzc.js.map} +1 -1
  52. package/dist/chunks/{radio-f95mt237ru8fyc03.js → radio-me5m5ei86beum5bo.js} +2 -2
  53. package/dist/chunks/{radio-f95mt237ru8fyc03.js.map → radio-me5m5ei86beum5bo.js.map} +1 -1
  54. package/dist/chunks/{select-n6u3p44qgtb0in3z.js → select-brzswxbhhf1ktx9t.js} +5 -5
  55. package/dist/chunks/{select-n6u3p44qgtb0in3z.js.map → select-brzswxbhhf1ktx9t.js.map} +1 -1
  56. package/dist/chunks/{sensitive-input-yoawqvvvmtdod430.js → sensitive-input-gyf5hhgyolt07y1p.js} +4 -4
  57. package/dist/chunks/{sensitive-input-yoawqvvvmtdod430.js.map → sensitive-input-gyf5hhgyolt07y1p.js.map} +1 -1
  58. package/dist/chunks/{sidebar-jjptencqv1jgztgu.js → sidebar-o8y71x814ptc0xpf.js} +3 -3
  59. package/dist/chunks/{sidebar-jjptencqv1jgztgu.js.map → sidebar-o8y71x814ptc0xpf.js.map} +1 -1
  60. package/dist/chunks/{surface-k0e8mq1x00b7i8r6.js → surface-ivrb4btwdoq91ytl.js} +2 -2
  61. package/dist/chunks/{surface-k0e8mq1x00b7i8r6.js.map → surface-ivrb4btwdoq91ytl.js.map} +1 -1
  62. package/dist/chunks/{switch-dsnh8onvu1sxzdoe.js → switch-c0avfhj6n85inmtb.js} +3 -3
  63. package/dist/chunks/{switch-dsnh8onvu1sxzdoe.js.map → switch-c0avfhj6n85inmtb.js.map} +1 -1
  64. package/dist/chunks/{table-ngrghrfy9qsk6091.js → table-htqdo9dgy8c6hwuq.js} +2 -2
  65. package/dist/chunks/{table-ngrghrfy9qsk6091.js.map → table-htqdo9dgy8c6hwuq.js.map} +1 -1
  66. package/dist/chunks/{tabs-mkhf1uemgr3ij0ps.js → tabs-fdkhdhv8kvnpp8nt.js} +2 -2
  67. package/dist/chunks/{tabs-mkhf1uemgr3ij0ps.js.map → tabs-fdkhdhv8kvnpp8nt.js.map} +1 -1
  68. package/dist/chunks/{toast-ksnnyrf2o8yfvc3m.js → toast-evn3ce20j18hpyqt.js} +3 -3
  69. package/dist/chunks/{toast-ksnnyrf2o8yfvc3m.js.map → toast-evn3ce20j18hpyqt.js.map} +1 -1
  70. package/dist/chunks/{tooltip-odudhkxe282wxinq.js → tooltip-fjxy4s4l75hjxp1x.js} +9 -5
  71. package/dist/chunks/{tooltip-odudhkxe282wxinq.js.map → tooltip-fjxy4s4l75hjxp1x.js.map} +1 -1
  72. package/dist/chunks/{vendor-base-ui-ie71jahf0czyf58j.js → vendor-base-ui-epfrwb4nfbd4btaz.js} +17 -17
  73. package/dist/chunks/{vendor-base-ui-ie71jahf0czyf58j.js.map → vendor-base-ui-epfrwb4nfbd4btaz.js.map} +1 -1
  74. package/dist/code.js +1 -1
  75. package/dist/components/autocomplete.js +1 -1
  76. package/dist/components/breadcrumbs.js +1 -1
  77. package/dist/components/button.js +1 -1
  78. package/dist/components/chart.js +3 -2
  79. package/dist/components/checkbox.js +1 -1
  80. package/dist/components/clipboard-text.js +1 -1
  81. package/dist/components/collapsible.js +1 -1
  82. package/dist/components/combobox.js +1 -1
  83. package/dist/components/command-palette.js +1 -1
  84. package/dist/components/dialog.js +1 -1
  85. package/dist/components/dropdown.js +1 -1
  86. package/dist/components/empty.js +1 -1
  87. package/dist/components/field.js +1 -1
  88. package/dist/components/input-group.js +1 -1
  89. package/dist/components/input.js +3 -3
  90. package/dist/components/label.js +1 -1
  91. package/dist/components/layer-card.js +1 -1
  92. package/dist/components/link.js +1 -1
  93. package/dist/components/menubar.js +1 -1
  94. package/dist/components/meter.js +1 -1
  95. package/dist/components/pagination.js +1 -1
  96. package/dist/components/popover.js +1 -1
  97. package/dist/components/radio.js +1 -1
  98. package/dist/components/select.js +1 -1
  99. package/dist/components/sensitive-input.js +1 -1
  100. package/dist/components/sidebar.js +1 -1
  101. package/dist/components/surface.js +1 -1
  102. package/dist/components/switch.js +1 -1
  103. package/dist/components/table.js +1 -1
  104. package/dist/components/tabs.js +1 -1
  105. package/dist/components/toast.js +2 -2
  106. package/dist/components/tooltip.js +1 -1
  107. package/dist/index.js +109 -108
  108. package/dist/primitives/accordion.js +1 -1
  109. package/dist/primitives/alert-dialog.js +1 -1
  110. package/dist/primitives/autocomplete.js +1 -1
  111. package/dist/primitives/avatar.js +1 -1
  112. package/dist/primitives/button.js +1 -1
  113. package/dist/primitives/checkbox-group.js +1 -1
  114. package/dist/primitives/checkbox.js +1 -1
  115. package/dist/primitives/collapsible.js +1 -1
  116. package/dist/primitives/combobox.js +1 -1
  117. package/dist/primitives/context-menu.js +1 -1
  118. package/dist/primitives/csp-provider.js +1 -1
  119. package/dist/primitives/dialog.js +1 -1
  120. package/dist/primitives/direction-provider.js +1 -1
  121. package/dist/primitives/drawer.js +1 -1
  122. package/dist/primitives/field.js +1 -1
  123. package/dist/primitives/fieldset.js +1 -1
  124. package/dist/primitives/form.js +1 -1
  125. package/dist/primitives/input.js +1 -1
  126. package/dist/primitives/menu.js +1 -1
  127. package/dist/primitives/menubar.js +1 -1
  128. package/dist/primitives/meter.js +1 -1
  129. package/dist/primitives/navigation-menu.js +1 -1
  130. package/dist/primitives/number-field.js +1 -1
  131. package/dist/primitives/otp-field.js +1 -1
  132. package/dist/primitives/popover.js +1 -1
  133. package/dist/primitives/preview-card.js +1 -1
  134. package/dist/primitives/progress.js +1 -1
  135. package/dist/primitives/radio-group.js +1 -1
  136. package/dist/primitives/radio.js +1 -1
  137. package/dist/primitives/scroll-area.js +1 -1
  138. package/dist/primitives/select.js +1 -1
  139. package/dist/primitives/separator.js +1 -1
  140. package/dist/primitives/slider.js +1 -1
  141. package/dist/primitives/switch.js +1 -1
  142. package/dist/primitives/tabs.js +1 -1
  143. package/dist/primitives/toast.js +1 -1
  144. package/dist/primitives/toggle-group.js +1 -1
  145. package/dist/primitives/toggle.js +1 -1
  146. package/dist/primitives/toolbar.js +1 -1
  147. package/dist/primitives/tooltip.js +1 -1
  148. package/dist/primitives.js +1 -1
  149. package/dist/src/components/chart/Color.d.ts +11 -0
  150. package/dist/src/components/chart/Color.d.ts.map +1 -1
  151. package/dist/src/components/chart/SankeyChart.d.ts +89 -0
  152. package/dist/src/components/chart/SankeyChart.d.ts.map +1 -0
  153. package/dist/src/components/chart/index.d.ts +1 -0
  154. package/dist/src/components/chart/index.d.ts.map +1 -1
  155. package/dist/src/components/combobox/combobox.d.ts +3 -0
  156. package/dist/src/components/combobox/combobox.d.ts.map +1 -1
  157. package/dist/src/components/layer-card/layer-card.d.ts +4 -7
  158. package/dist/src/components/layer-card/layer-card.d.ts.map +1 -1
  159. package/dist/src/components/link/link.d.ts +12 -1
  160. package/dist/src/components/link/link.d.ts.map +1 -1
  161. package/dist/src/components/tooltip/tooltip.d.ts.map +1 -1
  162. package/dist/src/index.d.ts +1 -1
  163. package/dist/src/index.d.ts.map +1 -1
  164. package/dist/src/utils/link-provider.d.ts +54 -0
  165. package/dist/src/utils/link-provider.d.ts.map +1 -1
  166. package/dist/styles/kumo-standalone.css +1 -1
  167. package/package.json +2 -2
  168. package/dist/chunks/Legend-ibjxhfm9pn2vrb6f.js +0 -430
  169. package/dist/chunks/Legend-ibjxhfm9pn2vrb6f.js.map +0 -1
  170. package/dist/chunks/command-palette-kgiso245exdons4r.js.map +0 -1
  171. package/dist/chunks/layer-card-ikm31xemd70w3lru.js.map +0 -1
  172. package/dist/chunks/link-m9hlspftl34nseme.js.map +0 -1
@@ -0,0 +1,626 @@
1
+ "use client";
2
+ import { jsx as w, jsxs as C } from "react/jsx-runtime";
3
+ import { forwardRef as ne, useRef as M, useEffect as D, useMemo as q, useCallback as re } from "react";
4
+ import { c as L } from "./cn-ct4n7r74mh8y0f48.js";
5
+ var Z = /* @__PURE__ */ ((e) => (e.Attention = "#FC574A", e.Warning = "#F8A054", e.Success = "#00A63E", e.Neutral = "#B9D6FF", e.Disabled = "#CBCBCB", e.Skeleton = "#DDDDDD", e))(Z || {}), ee = /* @__PURE__ */ ((e) => (e.Attention = "#FC574A", e.Warning = "#F8A054", e.Success = "#00A63E", e.Neutral = "#8EC5FF", e.Disabled = "#878787", e.Skeleton = "#5C5C5C", e))(ee || {});
6
+ const se = {
7
+ blues: ["#E1EAF4", "#8EBCF6", "#4290F0", "#0E58B4", "#03254F"]
8
+ }, oe = {
9
+ blues: ["#03254F", "#0E58B4", "#4290F0", "#A6BFDD", "#E1EAF4"]
10
+ }, U = [
11
+ "#4290F0",
12
+ "#F5B647",
13
+ "#E8649D",
14
+ "#8D58EE",
15
+ "#50C3B6",
16
+ "#D37536"
17
+ /* Orange */
18
+ ], X = [
19
+ "#4290F0",
20
+ "#EEB720",
21
+ "#E8649D",
22
+ "#8D58EE",
23
+ "#50C3B6",
24
+ "#D37536"
25
+ /* Orange */
26
+ ];
27
+ var j;
28
+ ((e) => {
29
+ function t(s, d = !1) {
30
+ return d ? ee[s] : Z[s];
31
+ }
32
+ e.semantic = t;
33
+ function c(s, d = !1) {
34
+ return d ? X[s % X.length] : U[s % U.length];
35
+ }
36
+ e.categorical = c;
37
+ function i(s, d = !1) {
38
+ return d ? [...oe[s]] : [...se[s]];
39
+ }
40
+ e.sequential = i;
41
+ function r(s, d = !1) {
42
+ const h = {
43
+ light: { primary: "#6B7280", secondary: "#9CA3AF" },
44
+ dark: { primary: "#9CA3AF", secondary: "#6B7280" }
45
+ };
46
+ return d ? h.dark[s] : h.light[s];
47
+ }
48
+ e.text = r;
49
+ })(j || (j = {}));
50
+ const Y = (e) => {
51
+ const { dangerousHtmlFormatter: t, ...c } = e;
52
+ return {
53
+ ...c,
54
+ formatter: t
55
+ };
56
+ }, ae = (e) => e.tooltip ? {
57
+ ...e,
58
+ tooltip: Array.isArray(e.tooltip) ? e.tooltip.map(Y) : Y(e.tooltip)
59
+ } : e, K = ne(function({
60
+ echarts: t,
61
+ options: c,
62
+ optionUpdateBehavior: i,
63
+ className: r,
64
+ isDarkMode: s,
65
+ height: d = 350,
66
+ onEvents: h
67
+ }, p) {
68
+ const f = M(null), N = M(null), S = M({}), E = M({}), F = M(/* @__PURE__ */ new Set());
69
+ return D(() => {
70
+ if (!f.current) return;
71
+ const u = t.init(
72
+ f.current,
73
+ s ? "dark" : {
74
+ color: s ? X : U
75
+ }
76
+ );
77
+ return N.current = u, typeof p == "function" ? p(u) : p && (p.current = u), () => {
78
+ for (const b of F.current) {
79
+ const l = E.current[b];
80
+ l && u.off(b, l);
81
+ }
82
+ F.current.clear(), typeof p == "function" ? p(null) : p && (p.current = null), N.current = null, u.dispose();
83
+ };
84
+ }, [f, s]), D(() => {
85
+ const u = N.current;
86
+ u && u.setOption(ae(c), {
87
+ notMerge: !1,
88
+ lazyUpdate: !0,
89
+ ...i
90
+ });
91
+ }, [s, i, c]), D(() => {
92
+ S.current = h ?? {};
93
+ }, [h]), D(() => {
94
+ const u = N.current;
95
+ if (!u) return;
96
+ const b = /* @__PURE__ */ new Set();
97
+ for (const [l, A] of Object.entries(h ?? {}))
98
+ typeof A == "function" && (b.add(l), E.current[l] || (E.current[l] = (B) => {
99
+ S.current[l]?.(B);
100
+ }), F.current.has(l) || u.on(l, E.current[l]));
101
+ for (const l of F.current) {
102
+ if (b.has(l)) continue;
103
+ const A = E.current[l];
104
+ A && u.off(l, A);
105
+ }
106
+ F.current = b;
107
+ }, [t, s, h]), D(() => {
108
+ const u = N.current, b = f.current;
109
+ if (!u || !b) return;
110
+ let l = !0;
111
+ const A = new ResizeObserver(() => {
112
+ if (l) {
113
+ l = !1;
114
+ return;
115
+ }
116
+ u.resize();
117
+ });
118
+ return A.observe(b), () => A.disconnect();
119
+ }, []), /* @__PURE__ */ w(
120
+ "div",
121
+ {
122
+ ref: f,
123
+ className: L("w-full", r),
124
+ style: { height: d },
125
+ tabIndex: c.aria?.enabled ? 0 : void 0,
126
+ role: c.aria?.enabled ? "img" : void 0
127
+ }
128
+ );
129
+ });
130
+ K.displayName = "Chart";
131
+ function be({
132
+ echarts: e,
133
+ type: t = "line",
134
+ data: c,
135
+ xAxisName: i,
136
+ xAxisTickCount: r,
137
+ xAxisTickFormat: s,
138
+ yAxisTickFormat: d,
139
+ yAxisTickLabelFormat: h,
140
+ yAxisName: p,
141
+ yAxisTickCount: f,
142
+ tooltipValueFormat: N,
143
+ onTimeRangeChange: S,
144
+ height: E = 350,
145
+ incomplete: F,
146
+ isDarkMode: u,
147
+ gradient: b,
148
+ loading: l,
149
+ ariaDescription: A
150
+ }) {
151
+ const B = M(null), R = F?.before, H = F?.after, P = q(() => {
152
+ const g = [], I = t === "bar" ? { type: "bar", stack: "total" } : { type: "line", showSymbol: !1 };
153
+ for (const o of c) {
154
+ const n = R && t === "line" ? o.data.filter((O) => O[0] <= R) : [], a = H && t === "line" ? o.data.filter((O) => O[0] >= H) : [], m = n.length > 0 || a.length > 0 ? o.data.slice(
155
+ Math.max(0, n.length - 1),
156
+ Math.max(0, o.data.length - a.length + 1)
157
+ ) : o.data, x = b && t === "line" ? {
158
+ color: new e.graphic.LinearGradient(0, 0, 0, 1, [
159
+ { offset: 0, color: J(o.color, 0.4) },
160
+ { offset: 1, color: J(o.color, 0) }
161
+ ])
162
+ } : void 0;
163
+ g.push({
164
+ data: m,
165
+ color: o.color,
166
+ name: o.name,
167
+ emphasis: { focus: "series" },
168
+ ...x ? { areaStyle: x } : {},
169
+ ...I
170
+ });
171
+ const $ = {
172
+ color: o.color,
173
+ name: o.name,
174
+ type: "line",
175
+ lineStyle: { type: "dashed" },
176
+ showSymbol: !1,
177
+ emphasis: { focus: "series" }
178
+ };
179
+ n.length > 0 && g.push({
180
+ ...$,
181
+ data: n
182
+ }), a.length > 0 && g.push({
183
+ ...$,
184
+ data: a
185
+ });
186
+ }
187
+ return {
188
+ aria: {
189
+ enabled: !0,
190
+ ...A && { label: { description: A } }
191
+ },
192
+ brush: {
193
+ xAxisIndex: "all",
194
+ brushType: "lineX",
195
+ brushMode: "single",
196
+ outOfBrush: {
197
+ colorAlpha: 0.3
198
+ },
199
+ brushStyle: {
200
+ borderWidth: 1,
201
+ color: "rgba(120,140,180,0.3)",
202
+ borderColor: "rgba(120,140,180,0.8)"
203
+ }
204
+ },
205
+ tooltip: {
206
+ trigger: "axis",
207
+ appendTo: "body",
208
+ axisPointer: { type: "shadow" },
209
+ dangerousHtmlFormatter: (o) => {
210
+ const n = Array.isArray(o) ? o : [o], a = /* @__PURE__ */ new Set(), m = n.filter((T) => a.has(T.seriesName) ? !1 : (a.add(T.seriesName), !0)), x = m[0], $ = x?.value?.[0] ?? x?.axisValue, O = $ != null ? `<div style="font-weight:600;margin-bottom:4px;">${e.format.encodeHTML(le($))}</div>` : "", _ = m.map((T) => {
211
+ const k = T?.value?.[1], G = N ?? h, te = G ? e.format.encodeHTML(String(G(k))) : e.format.encodeHTML(String(k));
212
+ return `${T.marker} ${e.format.encodeHTML(T.seriesName)}: <strong>${te}</strong>`;
213
+ }).join("<br/>");
214
+ return `${O}${_}`;
215
+ }
216
+ },
217
+ backgroundColor: "transparent",
218
+ toolbox: { show: !1 },
219
+ xAxis: {
220
+ name: i,
221
+ nameLocation: "middle",
222
+ nameGap: 30,
223
+ type: "time",
224
+ splitLine: {
225
+ show: !1
226
+ },
227
+ axisLine: { show: !1 },
228
+ splitNumber: r ?? 5,
229
+ ...s && {
230
+ axisLabel: {
231
+ formatter: (o) => s(o)
232
+ }
233
+ }
234
+ },
235
+ yAxis: {
236
+ name: p,
237
+ nameLocation: "middle",
238
+ nameGap: 40,
239
+ type: "value",
240
+ axisTick: { show: !0 },
241
+ axisLabel: {
242
+ margin: 15,
243
+ ...d && {
244
+ formatter: (o) => d(o)
245
+ }
246
+ },
247
+ splitLine: {
248
+ show: !0,
249
+ lineStyle: { type: "dashed", width: 1 }
250
+ },
251
+ splitNumber: f
252
+ },
253
+ grid: {
254
+ left: p ? 30 : 24,
255
+ right: 24,
256
+ top: 24,
257
+ bottom: i ? 30 : 24
258
+ },
259
+ series: g
260
+ };
261
+ }, [
262
+ c,
263
+ i,
264
+ r,
265
+ s,
266
+ d,
267
+ h,
268
+ p,
269
+ f,
270
+ N,
271
+ R,
272
+ H,
273
+ t,
274
+ b,
275
+ e,
276
+ A
277
+ ]), y = q(() => S ? {
278
+ brushend: (g) => {
279
+ const I = g.areas[0].coordRange;
280
+ S(I[0], I[1]), B.current?.dispatchAction({ type: "brush", areas: [] });
281
+ }
282
+ } : {}, [S]), v = !!S;
283
+ return D(() => {
284
+ const g = B.current;
285
+ if (g && v)
286
+ return g.dispatchAction({
287
+ type: "takeGlobalCursor",
288
+ key: "brush",
289
+ brushOption: {
290
+ brushType: "lineX",
291
+ brushMode: "single"
292
+ }
293
+ }), () => {
294
+ g.dispatchAction({
295
+ type: "takeGlobalCursor",
296
+ key: "brush",
297
+ brushOption: {
298
+ brushType: !1
299
+ }
300
+ });
301
+ };
302
+ }, [B, v, l]), /* @__PURE__ */ C("div", { className: "relative w-full", style: { height: E }, children: [
303
+ l && /* @__PURE__ */ w(ce, { height: E, isDarkMode: u }),
304
+ !l && /* @__PURE__ */ w(
305
+ K,
306
+ {
307
+ echarts: e,
308
+ ref: B,
309
+ options: P,
310
+ height: E,
311
+ isDarkMode: u,
312
+ onEvents: y
313
+ }
314
+ )
315
+ ] });
316
+ }
317
+ function ce({
318
+ height: e,
319
+ isDarkMode: t
320
+ }) {
321
+ const c = e / 2, i = Math.min(e * 0.12, 28), r = 400, s = 120, d = [];
322
+ for (let f = 0; f <= s; f++) {
323
+ const N = -r + f / s * r * 3, S = c + Math.sin(f / s * 2 * Math.PI * 3) * i;
324
+ d.push(`${f === 0 ? "M" : "L"}${N.toFixed(2)},${S.toFixed(2)}`);
325
+ }
326
+ const h = d.join(" "), p = t ? "rgba(255,255,255,0.5)" : "rgba(0,0,0,0.2)";
327
+ return /* @__PURE__ */ w(
328
+ "div",
329
+ {
330
+ "aria-hidden": "true",
331
+ className: "absolute inset-0 overflow-hidden",
332
+ style: { height: e },
333
+ children: /* @__PURE__ */ w(
334
+ "svg",
335
+ {
336
+ width: "100%",
337
+ height: e,
338
+ viewBox: `0 0 ${r} ${e}`,
339
+ preserveAspectRatio: "none",
340
+ className: "w-full animate-pulse",
341
+ children: /* @__PURE__ */ w(
342
+ "path",
343
+ {
344
+ d: h,
345
+ fill: "none",
346
+ stroke: p,
347
+ strokeWidth: "2",
348
+ style: {
349
+ animation: "kumo-chart-wave 2.4s linear infinite",
350
+ transformOrigin: "0 0"
351
+ }
352
+ }
353
+ )
354
+ }
355
+ )
356
+ }
357
+ );
358
+ }
359
+ function J(e, t) {
360
+ const c = Math.max(0, Math.min(1, t)), i = e.match(
361
+ /rgba?\(\s*([\d.]+)\s*,\s*([\d.]+)\s*,\s*([\d.]+)/i
362
+ );
363
+ if (i)
364
+ return `rgba(${i[1]}, ${i[2]}, ${i[3]}, ${c})`;
365
+ let r = e.replace(/^#/, "");
366
+ r.length === 3 && (r = r[0] + r[0] + r[1] + r[1] + r[2] + r[2]), r.length === 8 && (r = r.slice(0, 6));
367
+ const s = parseInt(r.slice(0, 2), 16), d = parseInt(r.slice(2, 4), 16), h = parseInt(r.slice(4, 6), 16);
368
+ return `rgba(${s}, ${d}, ${h}, ${c})`;
369
+ }
370
+ function z(e) {
371
+ return e.toString().padStart(2, "0");
372
+ }
373
+ function le(e) {
374
+ const t = new Date(e);
375
+ return `${t.getFullYear()}-${z(t.getMonth() + 1)}-${z(t.getDate())} ${z(t.getHours())}:${z(t.getMinutes())}:${z(t.getSeconds())}`;
376
+ }
377
+ function ie({ color: e, value: t, name: c, unit: i, inactive: r }) {
378
+ return /* @__PURE__ */ C("div", { className: "inline-flex flex-col gap-2 min-w-42 py-2", children: [
379
+ /* @__PURE__ */ C("div", { className: "flex items-center gap-2", children: [
380
+ /* @__PURE__ */ w(
381
+ "span",
382
+ {
383
+ className: L("size-2 rounded-full inline-block", {
384
+ "opacity-50": r
385
+ }),
386
+ style: { backgroundColor: e }
387
+ }
388
+ ),
389
+ /* @__PURE__ */ w("span", { className: L("text-xs", { "opacity-50": r }), children: c })
390
+ ] }),
391
+ /* @__PURE__ */ C("div", { className: "flex items-baseline gap-0.5", children: [
392
+ /* @__PURE__ */ w(
393
+ "span",
394
+ {
395
+ className: L("text-lg font-medium leading-none", {
396
+ "opacity-50": r
397
+ }),
398
+ children: t
399
+ }
400
+ ),
401
+ i && /* @__PURE__ */ w(
402
+ "span",
403
+ {
404
+ className: L("text-xs text-kumo-subtle leading-none", {
405
+ "opacity-50": r
406
+ }),
407
+ children: i
408
+ }
409
+ )
410
+ ] })
411
+ ] });
412
+ }
413
+ function ue({ color: e, value: t, name: c, inactive: i }) {
414
+ return /* @__PURE__ */ C("div", { className: "inline-flex items-center gap-2", children: [
415
+ /* @__PURE__ */ w(
416
+ "span",
417
+ {
418
+ className: L("size-2 rounded-full inline-block", {
419
+ "opacity-50": i
420
+ }),
421
+ style: { backgroundColor: e }
422
+ }
423
+ ),
424
+ /* @__PURE__ */ w("span", { className: L("text-xs", { "opacity-50": i }), children: c }),
425
+ /* @__PURE__ */ w("span", { className: L("text-xs font-medium", { "opacity-50": i }), children: t })
426
+ ] });
427
+ }
428
+ const ye = {
429
+ SmallItem: ue,
430
+ LargeItem: ie
431
+ }, de = (e) => e.toLocaleString();
432
+ function fe(e) {
433
+ return typeof e == "object" && e !== null;
434
+ }
435
+ const W = (e) => e.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&#39;"), Q = (e) => e.replace(/[{}|]/g, (t) => `\\${t}`), V = (e) => {
436
+ const t = "#666";
437
+ return !e || typeof e != "string" ? t : /^#(?:[0-9a-f]{3}|[0-9a-f]{6}|[0-9a-f]{8})$/i.test(e) || /^rgba?\(\s*\d{1,3}\s*,\s*\d{1,3}\s*,\s*\d{1,3}\s*(?:,\s*[\d.]+\s*)?\)$/i.test(
438
+ e
439
+ ) || /^hsla?\(\s*\d{1,3}\s*,\s*\d{1,3}%\s*,\s*\d{1,3}%\s*(?:,\s*[\d.]+\s*)?\)$/i.test(
440
+ e
441
+ ) || /^[a-z]{3,20}$/i.test(e) ? e : t;
442
+ };
443
+ function pe({
444
+ echarts: e,
445
+ nodes: t,
446
+ links: c,
447
+ height: i = 400,
448
+ nodeWidth: r = 8,
449
+ nodePadding: s = 10,
450
+ showTooltip: d = !0,
451
+ showNodeValues: h,
452
+ formatValue: p = de,
453
+ tooltipFormatter: f,
454
+ defaultNodeColor: N,
455
+ linkColor: S = "gradient",
456
+ linkOpacity: E = 0.5,
457
+ className: F,
458
+ isDarkMode: u,
459
+ onNodeClick: b,
460
+ onLinkClick: l
461
+ }) {
462
+ const A = t.some((y) => y.value !== void 0), B = h ?? A, R = q(() => {
463
+ const y = j.text("primary", u), v = j.text("secondary", u), g = new Map(t.map((n) => [n.name, n])), I = t.map((n, a) => ({
464
+ name: n.name,
465
+ value: n.value,
466
+ itemStyle: {
467
+ color: n.color ?? N ?? j.categorical(a, u)
468
+ }
469
+ })), o = c.map((n) => ({
470
+ source: t[n.source]?.name ?? "",
471
+ target: t[n.target]?.name ?? "",
472
+ value: n.value
473
+ }));
474
+ return {
475
+ animation: !0,
476
+ animationDuration: 500,
477
+ animationDurationUpdate: 300,
478
+ animationEasingUpdate: "cubicInOut",
479
+ tooltip: d ? {
480
+ trigger: "item",
481
+ triggerOn: "mousemove",
482
+ dangerousHtmlFormatter: (n) => {
483
+ if (!fe(n)) return "";
484
+ if (n.dataType === "node" && n.name) {
485
+ const a = g.get(n.name), m = V(
486
+ a?.color ?? n.color ?? "#666"
487
+ );
488
+ if (f)
489
+ return f({
490
+ type: "node",
491
+ name: n.name,
492
+ node: a,
493
+ color: m
494
+ });
495
+ const x = W(n.name);
496
+ return `<div style="display:flex;align-items:center;gap:6px;"><span style="display:inline-block;width:10px;height:10px;border-radius:50%;background:${m}"></span><strong>${x}</strong></div>`;
497
+ }
498
+ if (n.dataType === "edge" && n.data) {
499
+ const { source: a, target: m, value: x } = n.data;
500
+ if (f)
501
+ return f({
502
+ type: "link",
503
+ name: `${a} → ${m}`,
504
+ link: {
505
+ source: a ?? "",
506
+ target: m ?? "",
507
+ value: x ?? 0
508
+ }
509
+ });
510
+ const $ = g.get(a ?? ""), O = g.get(m ?? ""), _ = V($?.color ?? "#666"), T = V(O?.color ?? "#666"), k = W(a ?? ""), G = W(m ?? "");
511
+ return `<div style="display:flex;align-items:center;gap:6px;margin-bottom:4px;">
512
+ <span style="display:inline-block;width:10px;height:10px;border-radius:50%;background:${_}"></span>
513
+ <strong>${k}</strong>
514
+ <span style="color:${v}">→</span>
515
+ <span style="display:inline-block;width:10px;height:10px;border-radius:50%;background:${T}"></span>
516
+ <strong>${G}</strong>
517
+ </div>
518
+ <strong>${x !== void 0 ? W(p(x)) : ""}</strong>`;
519
+ }
520
+ return "";
521
+ }
522
+ } : void 0,
523
+ series: [
524
+ {
525
+ type: "sankey",
526
+ data: I,
527
+ links: o,
528
+ draggable: !1,
529
+ emphasis: {
530
+ focus: "adjacency"
531
+ },
532
+ nodeWidth: r,
533
+ nodeGap: s,
534
+ lineStyle: {
535
+ color: S === "gradient" ? "source" : "#d1d5db",
536
+ opacity: S === "gradient" ? E : 0.4,
537
+ curveness: 0.5
538
+ },
539
+ label: {
540
+ show: !0,
541
+ color: y,
542
+ fontSize: 12,
543
+ formatter: B ? (n) => {
544
+ const a = n.name ?? "", m = g.get(a), x = Q(a);
545
+ return m?.value !== void 0 ? `{value|${Q(p(m.value))}}
546
+ {name|${x}}` : x;
547
+ } : void 0,
548
+ rich: B ? {
549
+ value: {
550
+ fontSize: 11,
551
+ color: y,
552
+ lineHeight: 16
553
+ },
554
+ name: {
555
+ fontSize: 12,
556
+ color: y,
557
+ fontWeight: 700
558
+ }
559
+ } : void 0
560
+ }
561
+ }
562
+ ]
563
+ };
564
+ }, [
565
+ t,
566
+ c,
567
+ d,
568
+ r,
569
+ s,
570
+ N,
571
+ u,
572
+ S,
573
+ E,
574
+ B,
575
+ p,
576
+ f
577
+ ]), H = re(
578
+ (y) => {
579
+ if (y.dataType === "node" && b && y.name) {
580
+ const v = t.findIndex((o) => o.name === y.name), I = {
581
+ ...v >= 0 ? t[v] : null,
582
+ name: y.name
583
+ };
584
+ b(I);
585
+ } else if (y.dataType === "edge" && l && y.data) {
586
+ const v = y.data, g = typeof v == "object" && v !== null && "source" in v ? String(v.source) : "", I = typeof v == "object" && v !== null && "target" in v ? String(v.target) : "", o = t.findIndex(($) => $.name === g), n = t.findIndex(($) => $.name === I);
587
+ if (o === -1 || n === -1) return;
588
+ const a = y.value, m = typeof a == "number" ? a : Array.isArray(a) && typeof a[0] == "number" ? a[0] : 0, x = c.find(
589
+ ($) => $.source === o && $.target === n
590
+ );
591
+ l({
592
+ ...x,
593
+ source: o,
594
+ target: n,
595
+ value: m
596
+ });
597
+ }
598
+ },
599
+ [t, c, b, l]
600
+ ), P = q(
601
+ () => ({
602
+ click: H
603
+ }),
604
+ [H]
605
+ );
606
+ return /* @__PURE__ */ w(
607
+ K,
608
+ {
609
+ echarts: e,
610
+ options: R,
611
+ className: F,
612
+ isDarkMode: u,
613
+ height: i,
614
+ onEvents: P
615
+ }
616
+ );
617
+ }
618
+ pe.displayName = "SankeyChart";
619
+ export {
620
+ K as C,
621
+ pe as S,
622
+ be as T,
623
+ ye as a,
624
+ j as b
625
+ };
626
+ //# sourceMappingURL=SankeyChart-i4vgcatj89zpgpl9.js.map