@ktnpm_devops/react-component 0.3.0 → 0.4.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 (248) hide show
  1. package/dist/index.cjs +24 -20
  2. package/dist/index.cjs.map +1 -1
  3. package/dist/index.d.ts +4 -0
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +24 -20
  6. package/dist/index.js.map +1 -1
  7. package/dist/index10.cjs +2 -2
  8. package/dist/index10.js +2 -2
  9. package/dist/index11.cjs +2 -2
  10. package/dist/index11.js +2 -2
  11. package/dist/index12.cjs +2 -2
  12. package/dist/index12.js +2 -2
  13. package/dist/index13.cjs +2 -2
  14. package/dist/index13.js +2 -2
  15. package/dist/index14.cjs +3 -3
  16. package/dist/index14.js +3 -3
  17. package/dist/index15.cjs +2 -2
  18. package/dist/index15.js +2 -2
  19. package/dist/index16.cjs +38 -85
  20. package/dist/index16.cjs.map +1 -1
  21. package/dist/index16.js +40 -87
  22. package/dist/index16.js.map +1 -1
  23. package/dist/index17.cjs +85 -153
  24. package/dist/index17.cjs.map +1 -1
  25. package/dist/index17.js +87 -155
  26. package/dist/index17.js.map +1 -1
  27. package/dist/index18.cjs +150 -128
  28. package/dist/index18.cjs.map +1 -1
  29. package/dist/index18.js +150 -128
  30. package/dist/index18.js.map +1 -1
  31. package/dist/index19.cjs +121 -106
  32. package/dist/index19.cjs.map +1 -1
  33. package/dist/index19.js +122 -107
  34. package/dist/index19.js.map +1 -1
  35. package/dist/index20.cjs +121 -17
  36. package/dist/index20.cjs.map +1 -1
  37. package/dist/index20.js +121 -17
  38. package/dist/index20.js.map +1 -1
  39. package/dist/index21.cjs +17 -8
  40. package/dist/index21.cjs.map +1 -1
  41. package/dist/index21.js +18 -9
  42. package/dist/index21.js.map +1 -1
  43. package/dist/index22.cjs +7 -130
  44. package/dist/index22.cjs.map +1 -1
  45. package/dist/index22.js +9 -132
  46. package/dist/index22.js.map +1 -1
  47. package/dist/index23.cjs +128 -35
  48. package/dist/index23.cjs.map +1 -1
  49. package/dist/index23.js +129 -36
  50. package/dist/index23.js.map +1 -1
  51. package/dist/index24.cjs +36 -222
  52. package/dist/index24.cjs.map +1 -1
  53. package/dist/index24.js +37 -223
  54. package/dist/index24.js.map +1 -1
  55. package/dist/index25.cjs +218 -28
  56. package/dist/index25.cjs.map +1 -1
  57. package/dist/index25.js +220 -30
  58. package/dist/index25.js.map +1 -1
  59. package/dist/index26.cjs +29 -73
  60. package/dist/index26.cjs.map +1 -1
  61. package/dist/index26.js +31 -75
  62. package/dist/index26.js.map +1 -1
  63. package/dist/index27.cjs +69 -144
  64. package/dist/index27.cjs.map +1 -1
  65. package/dist/index27.js +70 -145
  66. package/dist/index27.js.map +1 -1
  67. package/dist/index28.cjs +57 -6
  68. package/dist/index28.cjs.map +1 -1
  69. package/dist/index28.js +57 -6
  70. package/dist/index28.js.map +1 -1
  71. package/dist/index29.cjs +152 -16
  72. package/dist/index29.cjs.map +1 -1
  73. package/dist/index29.js +152 -16
  74. package/dist/index29.js.map +1 -1
  75. package/dist/index30.cjs +7 -76
  76. package/dist/index30.cjs.map +1 -1
  77. package/dist/index30.js +9 -78
  78. package/dist/index30.js.map +1 -1
  79. package/dist/index31.cjs +17 -143
  80. package/dist/index31.cjs.map +1 -1
  81. package/dist/index31.js +17 -143
  82. package/dist/index31.js.map +1 -1
  83. package/dist/index32.cjs +69 -97
  84. package/dist/index32.cjs.map +1 -1
  85. package/dist/index32.js +71 -99
  86. package/dist/index32.js.map +1 -1
  87. package/dist/index33.cjs +143 -6
  88. package/dist/index33.cjs.map +1 -1
  89. package/dist/index33.js +144 -7
  90. package/dist/index33.js.map +1 -1
  91. package/dist/index34.cjs +74 -185
  92. package/dist/index34.cjs.map +1 -1
  93. package/dist/index34.js +67 -178
  94. package/dist/index34.js.map +1 -1
  95. package/dist/index35.cjs +6 -8
  96. package/dist/index35.cjs.map +1 -1
  97. package/dist/index35.js +6 -8
  98. package/dist/index35.js.map +1 -1
  99. package/dist/index36.cjs +216 -14
  100. package/dist/index36.cjs.map +1 -1
  101. package/dist/index36.js +215 -13
  102. package/dist/index36.js.map +1 -1
  103. package/dist/index37.cjs +10 -10
  104. package/dist/index37.cjs.map +1 -1
  105. package/dist/index37.js +9 -9
  106. package/dist/index37.js.map +1 -1
  107. package/dist/index38.cjs +15 -15
  108. package/dist/index38.cjs.map +1 -1
  109. package/dist/index38.js +15 -15
  110. package/dist/index38.js.map +1 -1
  111. package/dist/index39.cjs +15 -67
  112. package/dist/index39.cjs.map +1 -1
  113. package/dist/index39.js +14 -66
  114. package/dist/index39.js.map +1 -1
  115. package/dist/index40.cjs +14 -29
  116. package/dist/index40.cjs.map +1 -1
  117. package/dist/index40.js +14 -29
  118. package/dist/index40.js.map +1 -1
  119. package/dist/index41.cjs +10 -19
  120. package/dist/index41.cjs.map +1 -1
  121. package/dist/index41.js +10 -19
  122. package/dist/index41.js.map +1 -1
  123. package/dist/index42.cjs +2 -53
  124. package/dist/index42.cjs.map +1 -1
  125. package/dist/index42.js +3 -54
  126. package/dist/index42.js.map +1 -1
  127. package/dist/index43.cjs +2 -14
  128. package/dist/index43.cjs.map +1 -1
  129. package/dist/index43.js +2 -14
  130. package/dist/index43.js.map +1 -1
  131. package/dist/index44.cjs +24 -30
  132. package/dist/index44.cjs.map +1 -1
  133. package/dist/index44.js +24 -30
  134. package/dist/index44.js.map +1 -1
  135. package/dist/index45.cjs +10 -13
  136. package/dist/index45.cjs.map +1 -1
  137. package/dist/index45.js +10 -13
  138. package/dist/index45.js.map +1 -1
  139. package/dist/index46.cjs +16 -13
  140. package/dist/index46.cjs.map +1 -1
  141. package/dist/index46.js +16 -13
  142. package/dist/index46.js.map +1 -1
  143. package/dist/index47.cjs +17 -2
  144. package/dist/index47.cjs.map +1 -1
  145. package/dist/index47.js +18 -3
  146. package/dist/index47.js.map +1 -1
  147. package/dist/index48.cjs +67 -6
  148. package/dist/index48.cjs.map +1 -1
  149. package/dist/index48.js +66 -5
  150. package/dist/index48.js.map +1 -1
  151. package/dist/index49.cjs +80 -2
  152. package/dist/index49.cjs.map +1 -1
  153. package/dist/index49.js +81 -3
  154. package/dist/index49.js.map +1 -1
  155. package/dist/index50.cjs +34 -34
  156. package/dist/index50.js +34 -34
  157. package/dist/index51.cjs +29 -50
  158. package/dist/index51.cjs.map +1 -1
  159. package/dist/index51.js +29 -50
  160. package/dist/index51.js.map +1 -1
  161. package/dist/index52.cjs +13 -16
  162. package/dist/index52.cjs.map +1 -1
  163. package/dist/index52.js +14 -17
  164. package/dist/index52.js.map +1 -1
  165. package/dist/index53.cjs +32 -35
  166. package/dist/index53.cjs.map +1 -1
  167. package/dist/index53.js +32 -35
  168. package/dist/index53.js.map +1 -1
  169. package/dist/index54.cjs +2 -53
  170. package/dist/index54.cjs.map +1 -1
  171. package/dist/index54.js +3 -54
  172. package/dist/index54.js.map +1 -1
  173. package/dist/index55.cjs +10 -134
  174. package/dist/index55.cjs.map +1 -1
  175. package/dist/index55.js +9 -133
  176. package/dist/index55.js.map +1 -1
  177. package/dist/index56.cjs +22 -25
  178. package/dist/index56.cjs.map +1 -1
  179. package/dist/index56.js +23 -26
  180. package/dist/index56.js.map +1 -1
  181. package/dist/index57.cjs +2 -29
  182. package/dist/index57.cjs.map +1 -1
  183. package/dist/index57.js +3 -30
  184. package/dist/index57.js.map +1 -1
  185. package/dist/index58.cjs +11 -20
  186. package/dist/index58.cjs.map +1 -1
  187. package/dist/index58.js +11 -20
  188. package/dist/index58.js.map +1 -1
  189. package/dist/index59.cjs +52 -10
  190. package/dist/index59.cjs.map +1 -1
  191. package/dist/index59.js +52 -10
  192. package/dist/index59.js.map +1 -1
  193. package/dist/index60.cjs +64 -19
  194. package/dist/index60.cjs.map +1 -1
  195. package/dist/index60.js +65 -20
  196. package/dist/index60.js.map +1 -1
  197. package/dist/index61.cjs +14 -74
  198. package/dist/index61.cjs.map +1 -1
  199. package/dist/index61.js +15 -75
  200. package/dist/index61.js.map +1 -1
  201. package/dist/index62.cjs +16 -37
  202. package/dist/index62.cjs.map +1 -1
  203. package/dist/index62.js +16 -37
  204. package/dist/index62.js.map +1 -1
  205. package/dist/index63.cjs +28 -16
  206. package/dist/index63.cjs.map +1 -1
  207. package/dist/index63.js +28 -16
  208. package/dist/index63.js.map +1 -1
  209. package/dist/index64.cjs +13 -16
  210. package/dist/index64.cjs.map +1 -1
  211. package/dist/index64.js +14 -17
  212. package/dist/index64.js.map +1 -1
  213. package/dist/index65.cjs +37 -10
  214. package/dist/index65.cjs.map +1 -1
  215. package/dist/index65.js +38 -11
  216. package/dist/index65.js.map +1 -1
  217. package/dist/index66.cjs +136 -0
  218. package/dist/index66.cjs.map +1 -0
  219. package/dist/index66.js +136 -0
  220. package/dist/index66.js.map +1 -0
  221. package/dist/index67.cjs +48 -0
  222. package/dist/index67.cjs.map +1 -0
  223. package/dist/index67.js +48 -0
  224. package/dist/index67.js.map +1 -0
  225. package/dist/index68.cjs +60 -0
  226. package/dist/index68.cjs.map +1 -0
  227. package/dist/index68.js +60 -0
  228. package/dist/index68.js.map +1 -0
  229. package/dist/index69.cjs +57 -0
  230. package/dist/index69.cjs.map +1 -0
  231. package/dist/index69.js +57 -0
  232. package/dist/index69.js.map +1 -0
  233. package/dist/index9.cjs +2 -2
  234. package/dist/index9.js +2 -2
  235. package/dist/primitives/Col/Col.d.ts +4 -0
  236. package/dist/primitives/Col/Col.d.ts.map +1 -0
  237. package/dist/primitives/Col/Col.types.d.ts +13 -0
  238. package/dist/primitives/Col/Col.types.d.ts.map +1 -0
  239. package/dist/primitives/Col/index.d.ts +3 -0
  240. package/dist/primitives/Col/index.d.ts.map +1 -0
  241. package/dist/primitives/Row/Row.d.ts +4 -0
  242. package/dist/primitives/Row/Row.d.ts.map +1 -0
  243. package/dist/primitives/Row/Row.types.d.ts +16 -0
  244. package/dist/primitives/Row/Row.types.d.ts.map +1 -0
  245. package/dist/primitives/Row/index.d.ts +3 -0
  246. package/dist/primitives/Row/index.d.ts.map +1 -0
  247. package/dist/style.css +41 -0
  248. package/package.json +3 -2
package/dist/index65.cjs CHANGED
@@ -1,18 +1,45 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
- const root = "krc-root-la9-1";
4
- const logo = "krc-logo-b73UT";
5
- const card = "krc-card-1ev-q";
6
- const footer = "krc-footer-E0B15";
3
+ const root = "krc-root-xM3Jn";
4
+ const header = "krc-header-Pg9ER";
5
+ const title = "krc-title-MRZQn";
6
+ const headerRight = "krc-headerRight-b0xzW";
7
+ const toolbar = "krc-toolbar--rsIi";
8
+ const select = "krc-select-79sIN";
9
+ const legendToggle = "krc-legendToggle--ofSS";
10
+ const legendToggleActive = "krc-legendToggleActive-14gdq";
11
+ const chartContainer = "krc-chartContainer-tDTrg";
12
+ const loading = "krc-loading-WkgGt";
13
+ const error = "krc-error-yzAKV";
14
+ const retryButton = "krc-retryButton-wTkWq";
15
+ const empty = "krc-empty-1EZzg";
7
16
  const styles = {
8
17
  root,
9
- logo,
10
- card,
11
- footer
18
+ header,
19
+ title,
20
+ headerRight,
21
+ toolbar,
22
+ select,
23
+ legendToggle,
24
+ legendToggleActive,
25
+ chartContainer,
26
+ loading,
27
+ error,
28
+ retryButton,
29
+ empty
12
30
  };
13
- exports.card = card;
31
+ exports.chartContainer = chartContainer;
14
32
  exports.default = styles;
15
- exports.footer = footer;
16
- exports.logo = logo;
33
+ exports.empty = empty;
34
+ exports.error = error;
35
+ exports.header = header;
36
+ exports.headerRight = headerRight;
37
+ exports.legendToggle = legendToggle;
38
+ exports.legendToggleActive = legendToggleActive;
39
+ exports.loading = loading;
40
+ exports.retryButton = retryButton;
17
41
  exports.root = root;
42
+ exports.select = select;
43
+ exports.title = title;
44
+ exports.toolbar = toolbar;
18
45
  //# sourceMappingURL=index65.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index65.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index65.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/dist/index65.js CHANGED
@@ -1,18 +1,45 @@
1
- const root = "krc-root-la9-1";
2
- const logo = "krc-logo-b73UT";
3
- const card = "krc-card-1ev-q";
4
- const footer = "krc-footer-E0B15";
1
+ const root = "krc-root-xM3Jn";
2
+ const header = "krc-header-Pg9ER";
3
+ const title = "krc-title-MRZQn";
4
+ const headerRight = "krc-headerRight-b0xzW";
5
+ const toolbar = "krc-toolbar--rsIi";
6
+ const select = "krc-select-79sIN";
7
+ const legendToggle = "krc-legendToggle--ofSS";
8
+ const legendToggleActive = "krc-legendToggleActive-14gdq";
9
+ const chartContainer = "krc-chartContainer-tDTrg";
10
+ const loading = "krc-loading-WkgGt";
11
+ const error = "krc-error-yzAKV";
12
+ const retryButton = "krc-retryButton-wTkWq";
13
+ const empty = "krc-empty-1EZzg";
5
14
  const styles = {
6
15
  root,
7
- logo,
8
- card,
9
- footer
16
+ header,
17
+ title,
18
+ headerRight,
19
+ toolbar,
20
+ select,
21
+ legendToggle,
22
+ legendToggleActive,
23
+ chartContainer,
24
+ loading,
25
+ error,
26
+ retryButton,
27
+ empty
10
28
  };
11
29
  export {
12
- card,
30
+ chartContainer,
13
31
  styles as default,
14
- footer,
15
- logo,
16
- root
32
+ empty,
33
+ error,
34
+ header,
35
+ headerRight,
36
+ legendToggle,
37
+ legendToggleActive,
38
+ loading,
39
+ retryButton,
40
+ root,
41
+ select,
42
+ title,
43
+ toolbar
17
44
  };
18
45
  //# sourceMappingURL=index65.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index65.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;"}
1
+ {"version":3,"file":"index65.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,136 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const constants = require("./index48.cjs");
4
+ function aggregateData(data, maxCats, maxSubs, showOthers) {
5
+ const categoryMap = /* @__PURE__ */ new Map();
6
+ for (const point of data) {
7
+ const cat = point.category ?? "Unknown";
8
+ const sub = point.subCategory ?? "Default";
9
+ if (!categoryMap.has(cat)) {
10
+ categoryMap.set(cat, /* @__PURE__ */ new Map());
11
+ }
12
+ const subMap = categoryMap.get(cat);
13
+ subMap.set(sub, (subMap.get(sub) ?? 0) + point.value);
14
+ }
15
+ const sortedCategories = [...categoryMap.entries()].map(([cat, subMap]) => {
16
+ let total = 0;
17
+ for (const v of subMap.values()) total += v;
18
+ return { cat, subMap, total };
19
+ }).sort((a, b) => b.total - a.total);
20
+ const topCategories = sortedCategories.slice(0, maxCats);
21
+ const overflowCategories = sortedCategories.slice(maxCats);
22
+ if (showOthers && overflowCategories.length > 0) {
23
+ const othersMap = /* @__PURE__ */ new Map();
24
+ for (const { subMap } of overflowCategories) {
25
+ for (const [sub, val] of subMap) {
26
+ othersMap.set(sub, (othersMap.get(sub) ?? 0) + val);
27
+ }
28
+ }
29
+ let othersTotal = 0;
30
+ for (const v of othersMap.values()) othersTotal += v;
31
+ topCategories.push({ cat: "Others", subMap: othersMap, total: othersTotal });
32
+ }
33
+ const allSubCategories = /* @__PURE__ */ new Set();
34
+ for (const { subMap } of topCategories) {
35
+ for (const sub of subMap.keys()) {
36
+ allSubCategories.add(sub);
37
+ }
38
+ }
39
+ const sortedSubs = [...allSubCategories];
40
+ const limitedSubs = sortedSubs.slice(0, maxSubs);
41
+ const hasOverflowSubs = sortedSubs.length > maxSubs;
42
+ const categories = topCategories.map((entry) => entry.cat);
43
+ const series = limitedSubs.map((sub) => ({
44
+ name: sub,
45
+ values: topCategories.map((entry) => entry.subMap.get(sub) ?? 0)
46
+ }));
47
+ if (hasOverflowSubs && showOthers) {
48
+ const overflowSubs = sortedSubs.slice(maxSubs);
49
+ series.push({
50
+ name: "Other subcategories",
51
+ values: topCategories.map((entry) => {
52
+ let sum = 0;
53
+ for (const sub of overflowSubs) {
54
+ sum += entry.subMap.get(sub) ?? 0;
55
+ }
56
+ return sum;
57
+ })
58
+ });
59
+ }
60
+ return { categories, series };
61
+ }
62
+ function buildBarOption(categories, series, invertAxis, hideLegend, enableScroll) {
63
+ const categoryAxis = { type: "category", data: categories };
64
+ const valueAxis = { type: "value" };
65
+ const dataZoom = enableScroll ? [{ type: "slider", show: true, ...invertAxis ? { yAxisIndex: 0 } : { xAxisIndex: 0 } }] : [];
66
+ return {
67
+ tooltip: { trigger: "axis", axisPointer: { type: "shadow" } },
68
+ legend: { show: !hideLegend, bottom: 0, type: "scroll" },
69
+ grid: { left: "3%", right: "4%", top: "3%", bottom: hideLegend ? "3%" : "12%", containLabel: true },
70
+ xAxis: invertAxis ? valueAxis : categoryAxis,
71
+ yAxis: invertAxis ? categoryAxis : valueAxis,
72
+ dataZoom,
73
+ series: series.map((s, i) => ({
74
+ name: s.name,
75
+ type: "bar",
76
+ stack: "total",
77
+ emphasis: { focus: "series" },
78
+ data: s.values,
79
+ itemStyle: { color: constants.CHART_COLORS[i % constants.CHART_COLORS.length] }
80
+ }))
81
+ };
82
+ }
83
+ function buildPieOption(categories, series, hideLegend) {
84
+ const pieData = categories.map((cat, catIdx) => {
85
+ let total = 0;
86
+ for (const s of series) {
87
+ total += s.values[catIdx] ?? 0;
88
+ }
89
+ return { name: cat, value: total };
90
+ });
91
+ return {
92
+ tooltip: { trigger: "item" },
93
+ legend: { show: !hideLegend, bottom: 0, type: "scroll" },
94
+ series: [
95
+ {
96
+ type: "pie",
97
+ radius: ["30%", "65%"],
98
+ center: ["50%", "45%"],
99
+ data: pieData.map((d, i) => ({
100
+ ...d,
101
+ itemStyle: { color: constants.CHART_COLORS[i % constants.CHART_COLORS.length] }
102
+ })),
103
+ emphasis: { itemStyle: { shadowBlur: 10, shadowOffsetX: 0, shadowColor: "rgba(0,0,0,0.3)" } },
104
+ label: { show: true, formatter: "{b}: {d}%" }
105
+ }
106
+ ]
107
+ };
108
+ }
109
+ function buildSunburstOption(categories, series) {
110
+ const sunburstData = categories.map((cat, catIdx) => {
111
+ const children = series.map((s, sIdx) => ({
112
+ name: s.name,
113
+ value: s.values[catIdx] ?? 0,
114
+ itemStyle: { color: constants.CHART_COLORS[(catIdx * series.length + sIdx) % constants.CHART_COLORS.length] }
115
+ })).filter((child) => child.value > 0);
116
+ return { name: cat, children };
117
+ });
118
+ return {
119
+ tooltip: { trigger: "item" },
120
+ series: [
121
+ {
122
+ type: "sunburst",
123
+ data: sunburstData,
124
+ radius: ["15%", "80%"],
125
+ label: { rotate: "radial", fontSize: 10 },
126
+ itemStyle: { borderRadius: 4, borderWidth: 1 },
127
+ emphasis: { focus: "ancestor" }
128
+ }
129
+ ]
130
+ };
131
+ }
132
+ exports.aggregateData = aggregateData;
133
+ exports.buildBarOption = buildBarOption;
134
+ exports.buildPieOption = buildPieOption;
135
+ exports.buildSunburstOption = buildSunburstOption;
136
+ //# sourceMappingURL=index66.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index66.cjs","sources":["../src/charts/StackedBarChartCard/buildChartOptions.ts"],"sourcesContent":["import type { ChartSeriesPoint } from '../../types/chart.types';\nimport { CHART_COLORS } from '../../constants';\n\n/** Aggregated series data for chart rendering. */\nexport interface AggregatedChartData {\n categories: string[];\n series: { name: string; values: number[] }[];\n}\n\n/** Aggregate data points by category and subCategory, applying limits. */\nexport function aggregateData(\n data: ChartSeriesPoint[],\n maxCats: number,\n maxSubs: number,\n showOthers: boolean,\n): AggregatedChartData {\n const categoryMap = new Map<string, Map<string, number>>();\n\n for (const point of data) {\n const cat = point.category ?? 'Unknown';\n const sub = point.subCategory ?? 'Default';\n if (!categoryMap.has(cat)) {\n categoryMap.set(cat, new Map());\n }\n const subMap = categoryMap.get(cat)!;\n subMap.set(sub, (subMap.get(sub) ?? 0) + point.value);\n }\n\n const sortedCategories = [...categoryMap.entries()]\n .map(([cat, subMap]) => {\n let total = 0;\n for (const v of subMap.values()) total += v;\n return { cat, subMap, total };\n })\n .sort((a, b) => b.total - a.total);\n\n const topCategories = sortedCategories.slice(0, maxCats);\n const overflowCategories = sortedCategories.slice(maxCats);\n\n if (showOthers && overflowCategories.length > 0) {\n const othersMap = new Map<string, number>();\n for (const { subMap } of overflowCategories) {\n for (const [sub, val] of subMap) {\n othersMap.set(sub, (othersMap.get(sub) ?? 0) + val);\n }\n }\n let othersTotal = 0;\n for (const v of othersMap.values()) othersTotal += v;\n topCategories.push({ cat: 'Others', subMap: othersMap, total: othersTotal });\n }\n\n const allSubCategories = new Set<string>();\n for (const { subMap } of topCategories) {\n for (const sub of subMap.keys()) {\n allSubCategories.add(sub);\n }\n }\n\n const sortedSubs = [...allSubCategories];\n const limitedSubs = sortedSubs.slice(0, maxSubs);\n const hasOverflowSubs = sortedSubs.length > maxSubs;\n\n const categories = topCategories.map((entry) => entry.cat);\n\n const series = limitedSubs.map((sub) => ({\n name: sub,\n values: topCategories.map((entry) => entry.subMap.get(sub) ?? 0),\n }));\n\n if (hasOverflowSubs && showOthers) {\n const overflowSubs = sortedSubs.slice(maxSubs);\n series.push({\n name: 'Other subcategories',\n values: topCategories.map((entry) => {\n let sum = 0;\n for (const sub of overflowSubs) {\n sum += entry.subMap.get(sub) ?? 0;\n }\n return sum;\n }),\n });\n }\n\n return { categories, series };\n}\n\n/** Build ECharts option for stacked bar chart. */\nexport function buildBarOption(\n categories: string[],\n series: { name: string; values: number[] }[],\n invertAxis: boolean,\n hideLegend: boolean,\n enableScroll: boolean,\n) {\n const categoryAxis = { type: 'category' as const, data: categories };\n const valueAxis = { type: 'value' as const };\n\n const dataZoom = enableScroll\n ? [{ type: 'slider' as const, show: true, ...(invertAxis ? { yAxisIndex: 0 } : { xAxisIndex: 0 }) }]\n : [];\n\n return {\n tooltip: { trigger: 'axis' as const, axisPointer: { type: 'shadow' as const } },\n legend: { show: !hideLegend, bottom: 0, type: 'scroll' as const },\n grid: { left: '3%', right: '4%', top: '3%', bottom: hideLegend ? '3%' : '12%', containLabel: true },\n xAxis: invertAxis ? valueAxis : categoryAxis,\n yAxis: invertAxis ? categoryAxis : valueAxis,\n dataZoom,\n series: series.map((s, i) => ({\n name: s.name,\n type: 'bar' as const,\n stack: 'total',\n emphasis: { focus: 'series' as const },\n data: s.values,\n itemStyle: { color: CHART_COLORS[i % CHART_COLORS.length] },\n })),\n };\n}\n\n/** Build ECharts option for pie chart. */\nexport function buildPieOption(\n categories: string[],\n series: { name: string; values: number[] }[],\n hideLegend: boolean,\n) {\n const pieData = categories.map((cat, catIdx) => {\n let total = 0;\n for (const s of series) {\n total += s.values[catIdx] ?? 0;\n }\n return { name: cat, value: total };\n });\n\n return {\n tooltip: { trigger: 'item' as const },\n legend: { show: !hideLegend, bottom: 0, type: 'scroll' as const },\n series: [\n {\n type: 'pie' as const,\n radius: ['30%', '65%'],\n center: ['50%', '45%'],\n data: pieData.map((d, i) => ({\n ...d,\n itemStyle: { color: CHART_COLORS[i % CHART_COLORS.length] },\n })),\n emphasis: { itemStyle: { shadowBlur: 10, shadowOffsetX: 0, shadowColor: 'rgba(0,0,0,0.3)' } },\n label: { show: true, formatter: '{b}: {d}%' },\n },\n ],\n };\n}\n\n/** Build ECharts option for sunburst chart. */\nexport function buildSunburstOption(\n categories: string[],\n series: { name: string; values: number[] }[],\n) {\n const sunburstData = categories.map((cat, catIdx) => {\n const children = series\n .map((s, sIdx) => ({\n name: s.name,\n value: s.values[catIdx] ?? 0,\n itemStyle: { color: CHART_COLORS[(catIdx * series.length + sIdx) % CHART_COLORS.length] },\n }))\n .filter((child) => child.value > 0);\n\n return { name: cat, children };\n });\n\n return {\n tooltip: { trigger: 'item' as const },\n series: [\n {\n type: 'sunburst' as const,\n data: sunburstData,\n radius: ['15%', '80%'],\n label: { rotate: 'radial' as const, fontSize: 10 },\n itemStyle: { borderRadius: 4, borderWidth: 1 },\n emphasis: { focus: 'ancestor' as const },\n },\n ],\n };\n}\n"],"names":["CHART_COLORS"],"mappings":";;;AAUO,SAAS,cACd,MACA,SACA,SACA,YACqB;AACrB,QAAM,kCAAkB,IAAA;AAExB,aAAW,SAAS,MAAM;AACxB,UAAM,MAAM,MAAM,YAAY;AAC9B,UAAM,MAAM,MAAM,eAAe;AACjC,QAAI,CAAC,YAAY,IAAI,GAAG,GAAG;AACzB,kBAAY,IAAI,KAAK,oBAAI,IAAA,CAAK;AAAA,IAChC;AACA,UAAM,SAAS,YAAY,IAAI,GAAG;AAClC,WAAO,IAAI,MAAM,OAAO,IAAI,GAAG,KAAK,KAAK,MAAM,KAAK;AAAA,EACtD;AAEA,QAAM,mBAAmB,CAAC,GAAG,YAAY,QAAA,CAAS,EAC/C,IAAI,CAAC,CAAC,KAAK,MAAM,MAAM;AACtB,QAAI,QAAQ;AACZ,eAAW,KAAK,OAAO,OAAA,EAAU,UAAS;AAC1C,WAAO,EAAE,KAAK,QAAQ,MAAA;AAAA,EACxB,CAAC,EACA,KAAK,CAAC,GAAG,MAAM,EAAE,QAAQ,EAAE,KAAK;AAEnC,QAAM,gBAAgB,iBAAiB,MAAM,GAAG,OAAO;AACvD,QAAM,qBAAqB,iBAAiB,MAAM,OAAO;AAEzD,MAAI,cAAc,mBAAmB,SAAS,GAAG;AAC/C,UAAM,gCAAgB,IAAA;AACtB,eAAW,EAAE,OAAA,KAAY,oBAAoB;AAC3C,iBAAW,CAAC,KAAK,GAAG,KAAK,QAAQ;AAC/B,kBAAU,IAAI,MAAM,UAAU,IAAI,GAAG,KAAK,KAAK,GAAG;AAAA,MACpD;AAAA,IACF;AACA,QAAI,cAAc;AAClB,eAAW,KAAK,UAAU,OAAA,EAAU,gBAAe;AACnD,kBAAc,KAAK,EAAE,KAAK,UAAU,QAAQ,WAAW,OAAO,aAAa;AAAA,EAC7E;AAEA,QAAM,uCAAuB,IAAA;AAC7B,aAAW,EAAE,OAAA,KAAY,eAAe;AACtC,eAAW,OAAO,OAAO,QAAQ;AAC/B,uBAAiB,IAAI,GAAG;AAAA,IAC1B;AAAA,EACF;AAEA,QAAM,aAAa,CAAC,GAAG,gBAAgB;AACvC,QAAM,cAAc,WAAW,MAAM,GAAG,OAAO;AAC/C,QAAM,kBAAkB,WAAW,SAAS;AAE5C,QAAM,aAAa,cAAc,IAAI,CAAC,UAAU,MAAM,GAAG;AAEzD,QAAM,SAAS,YAAY,IAAI,CAAC,SAAS;AAAA,IACvC,MAAM;AAAA,IACN,QAAQ,cAAc,IAAI,CAAC,UAAU,MAAM,OAAO,IAAI,GAAG,KAAK,CAAC;AAAA,EAAA,EAC/D;AAEF,MAAI,mBAAmB,YAAY;AACjC,UAAM,eAAe,WAAW,MAAM,OAAO;AAC7C,WAAO,KAAK;AAAA,MACV,MAAM;AAAA,MACN,QAAQ,cAAc,IAAI,CAAC,UAAU;AACnC,YAAI,MAAM;AACV,mBAAW,OAAO,cAAc;AAC9B,iBAAO,MAAM,OAAO,IAAI,GAAG,KAAK;AAAA,QAClC;AACA,eAAO;AAAA,MACT,CAAC;AAAA,IAAA,CACF;AAAA,EACH;AAEA,SAAO,EAAE,YAAY,OAAA;AACvB;AAGO,SAAS,eACd,YACA,QACA,YACA,YACA,cACA;AACA,QAAM,eAAe,EAAE,MAAM,YAAqB,MAAM,WAAA;AACxD,QAAM,YAAY,EAAE,MAAM,QAAA;AAE1B,QAAM,WAAW,eACb,CAAC,EAAE,MAAM,UAAmB,MAAM,MAAM,GAAI,aAAa,EAAE,YAAY,MAAM,EAAE,YAAY,IAAE,CAAI,IACjG,CAAA;AAEJ,SAAO;AAAA,IACL,SAAS,EAAE,SAAS,QAAiB,aAAa,EAAE,MAAM,WAAkB;AAAA,IAC5E,QAAQ,EAAE,MAAM,CAAC,YAAY,QAAQ,GAAG,MAAM,SAAA;AAAA,IAC9C,MAAM,EAAE,MAAM,MAAM,OAAO,MAAM,KAAK,MAAM,QAAQ,aAAa,OAAO,OAAO,cAAc,KAAA;AAAA,IAC7F,OAAO,aAAa,YAAY;AAAA,IAChC,OAAO,aAAa,eAAe;AAAA,IACnC;AAAA,IACA,QAAQ,OAAO,IAAI,CAAC,GAAG,OAAO;AAAA,MAC5B,MAAM,EAAE;AAAA,MACR,MAAM;AAAA,MACN,OAAO;AAAA,MACP,UAAU,EAAE,OAAO,SAAA;AAAA,MACnB,MAAM,EAAE;AAAA,MACR,WAAW,EAAE,OAAOA,UAAAA,aAAa,IAAIA,UAAAA,aAAa,MAAM,EAAA;AAAA,IAAE,EAC1D;AAAA,EAAA;AAEN;AAGO,SAAS,eACd,YACA,QACA,YACA;AACA,QAAM,UAAU,WAAW,IAAI,CAAC,KAAK,WAAW;AAC9C,QAAI,QAAQ;AACZ,eAAW,KAAK,QAAQ;AACtB,eAAS,EAAE,OAAO,MAAM,KAAK;AAAA,IAC/B;AACA,WAAO,EAAE,MAAM,KAAK,OAAO,MAAA;AAAA,EAC7B,CAAC;AAED,SAAO;AAAA,IACL,SAAS,EAAE,SAAS,OAAA;AAAA,IACpB,QAAQ,EAAE,MAAM,CAAC,YAAY,QAAQ,GAAG,MAAM,SAAA;AAAA,IAC9C,QAAQ;AAAA,MACN;AAAA,QACE,MAAM;AAAA,QACN,QAAQ,CAAC,OAAO,KAAK;AAAA,QACrB,QAAQ,CAAC,OAAO,KAAK;AAAA,QACrB,MAAM,QAAQ,IAAI,CAAC,GAAG,OAAO;AAAA,UAC3B,GAAG;AAAA,UACH,WAAW,EAAE,OAAOA,UAAAA,aAAa,IAAIA,UAAAA,aAAa,MAAM,EAAA;AAAA,QAAE,EAC1D;AAAA,QACF,UAAU,EAAE,WAAW,EAAE,YAAY,IAAI,eAAe,GAAG,aAAa,oBAAkB;AAAA,QAC1F,OAAO,EAAE,MAAM,MAAM,WAAW,YAAA;AAAA,MAAY;AAAA,IAC9C;AAAA,EACF;AAEJ;AAGO,SAAS,oBACd,YACA,QACA;AACA,QAAM,eAAe,WAAW,IAAI,CAAC,KAAK,WAAW;AACnD,UAAM,WAAW,OACd,IAAI,CAAC,GAAG,UAAU;AAAA,MACjB,MAAM,EAAE;AAAA,MACR,OAAO,EAAE,OAAO,MAAM,KAAK;AAAA,MAC3B,WAAW,EAAE,OAAOA,UAAAA,cAAc,SAAS,OAAO,SAAS,QAAQA,UAAAA,aAAa,MAAM,EAAA;AAAA,IAAE,EACxF,EACD,OAAO,CAAC,UAAU,MAAM,QAAQ,CAAC;AAEpC,WAAO,EAAE,MAAM,KAAK,SAAA;AAAA,EACtB,CAAC;AAED,SAAO;AAAA,IACL,SAAS,EAAE,SAAS,OAAA;AAAA,IACpB,QAAQ;AAAA,MACN;AAAA,QACE,MAAM;AAAA,QACN,MAAM;AAAA,QACN,QAAQ,CAAC,OAAO,KAAK;AAAA,QACrB,OAAO,EAAE,QAAQ,UAAmB,UAAU,GAAA;AAAA,QAC9C,WAAW,EAAE,cAAc,GAAG,aAAa,EAAA;AAAA,QAC3C,UAAU,EAAE,OAAO,WAAA;AAAA,MAAoB;AAAA,IACzC;AAAA,EACF;AAEJ;;;;;"}
@@ -0,0 +1,136 @@
1
+ import { CHART_COLORS } from "./index48.js";
2
+ function aggregateData(data, maxCats, maxSubs, showOthers) {
3
+ const categoryMap = /* @__PURE__ */ new Map();
4
+ for (const point of data) {
5
+ const cat = point.category ?? "Unknown";
6
+ const sub = point.subCategory ?? "Default";
7
+ if (!categoryMap.has(cat)) {
8
+ categoryMap.set(cat, /* @__PURE__ */ new Map());
9
+ }
10
+ const subMap = categoryMap.get(cat);
11
+ subMap.set(sub, (subMap.get(sub) ?? 0) + point.value);
12
+ }
13
+ const sortedCategories = [...categoryMap.entries()].map(([cat, subMap]) => {
14
+ let total = 0;
15
+ for (const v of subMap.values()) total += v;
16
+ return { cat, subMap, total };
17
+ }).sort((a, b) => b.total - a.total);
18
+ const topCategories = sortedCategories.slice(0, maxCats);
19
+ const overflowCategories = sortedCategories.slice(maxCats);
20
+ if (showOthers && overflowCategories.length > 0) {
21
+ const othersMap = /* @__PURE__ */ new Map();
22
+ for (const { subMap } of overflowCategories) {
23
+ for (const [sub, val] of subMap) {
24
+ othersMap.set(sub, (othersMap.get(sub) ?? 0) + val);
25
+ }
26
+ }
27
+ let othersTotal = 0;
28
+ for (const v of othersMap.values()) othersTotal += v;
29
+ topCategories.push({ cat: "Others", subMap: othersMap, total: othersTotal });
30
+ }
31
+ const allSubCategories = /* @__PURE__ */ new Set();
32
+ for (const { subMap } of topCategories) {
33
+ for (const sub of subMap.keys()) {
34
+ allSubCategories.add(sub);
35
+ }
36
+ }
37
+ const sortedSubs = [...allSubCategories];
38
+ const limitedSubs = sortedSubs.slice(0, maxSubs);
39
+ const hasOverflowSubs = sortedSubs.length > maxSubs;
40
+ const categories = topCategories.map((entry) => entry.cat);
41
+ const series = limitedSubs.map((sub) => ({
42
+ name: sub,
43
+ values: topCategories.map((entry) => entry.subMap.get(sub) ?? 0)
44
+ }));
45
+ if (hasOverflowSubs && showOthers) {
46
+ const overflowSubs = sortedSubs.slice(maxSubs);
47
+ series.push({
48
+ name: "Other subcategories",
49
+ values: topCategories.map((entry) => {
50
+ let sum = 0;
51
+ for (const sub of overflowSubs) {
52
+ sum += entry.subMap.get(sub) ?? 0;
53
+ }
54
+ return sum;
55
+ })
56
+ });
57
+ }
58
+ return { categories, series };
59
+ }
60
+ function buildBarOption(categories, series, invertAxis, hideLegend, enableScroll) {
61
+ const categoryAxis = { type: "category", data: categories };
62
+ const valueAxis = { type: "value" };
63
+ const dataZoom = enableScroll ? [{ type: "slider", show: true, ...invertAxis ? { yAxisIndex: 0 } : { xAxisIndex: 0 } }] : [];
64
+ return {
65
+ tooltip: { trigger: "axis", axisPointer: { type: "shadow" } },
66
+ legend: { show: !hideLegend, bottom: 0, type: "scroll" },
67
+ grid: { left: "3%", right: "4%", top: "3%", bottom: hideLegend ? "3%" : "12%", containLabel: true },
68
+ xAxis: invertAxis ? valueAxis : categoryAxis,
69
+ yAxis: invertAxis ? categoryAxis : valueAxis,
70
+ dataZoom,
71
+ series: series.map((s, i) => ({
72
+ name: s.name,
73
+ type: "bar",
74
+ stack: "total",
75
+ emphasis: { focus: "series" },
76
+ data: s.values,
77
+ itemStyle: { color: CHART_COLORS[i % CHART_COLORS.length] }
78
+ }))
79
+ };
80
+ }
81
+ function buildPieOption(categories, series, hideLegend) {
82
+ const pieData = categories.map((cat, catIdx) => {
83
+ let total = 0;
84
+ for (const s of series) {
85
+ total += s.values[catIdx] ?? 0;
86
+ }
87
+ return { name: cat, value: total };
88
+ });
89
+ return {
90
+ tooltip: { trigger: "item" },
91
+ legend: { show: !hideLegend, bottom: 0, type: "scroll" },
92
+ series: [
93
+ {
94
+ type: "pie",
95
+ radius: ["30%", "65%"],
96
+ center: ["50%", "45%"],
97
+ data: pieData.map((d, i) => ({
98
+ ...d,
99
+ itemStyle: { color: CHART_COLORS[i % CHART_COLORS.length] }
100
+ })),
101
+ emphasis: { itemStyle: { shadowBlur: 10, shadowOffsetX: 0, shadowColor: "rgba(0,0,0,0.3)" } },
102
+ label: { show: true, formatter: "{b}: {d}%" }
103
+ }
104
+ ]
105
+ };
106
+ }
107
+ function buildSunburstOption(categories, series) {
108
+ const sunburstData = categories.map((cat, catIdx) => {
109
+ const children = series.map((s, sIdx) => ({
110
+ name: s.name,
111
+ value: s.values[catIdx] ?? 0,
112
+ itemStyle: { color: CHART_COLORS[(catIdx * series.length + sIdx) % CHART_COLORS.length] }
113
+ })).filter((child) => child.value > 0);
114
+ return { name: cat, children };
115
+ });
116
+ return {
117
+ tooltip: { trigger: "item" },
118
+ series: [
119
+ {
120
+ type: "sunburst",
121
+ data: sunburstData,
122
+ radius: ["15%", "80%"],
123
+ label: { rotate: "radial", fontSize: 10 },
124
+ itemStyle: { borderRadius: 4, borderWidth: 1 },
125
+ emphasis: { focus: "ancestor" }
126
+ }
127
+ ]
128
+ };
129
+ }
130
+ export {
131
+ aggregateData,
132
+ buildBarOption,
133
+ buildPieOption,
134
+ buildSunburstOption
135
+ };
136
+ //# sourceMappingURL=index66.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index66.js","sources":["../src/charts/StackedBarChartCard/buildChartOptions.ts"],"sourcesContent":["import type { ChartSeriesPoint } from '../../types/chart.types';\nimport { CHART_COLORS } from '../../constants';\n\n/** Aggregated series data for chart rendering. */\nexport interface AggregatedChartData {\n categories: string[];\n series: { name: string; values: number[] }[];\n}\n\n/** Aggregate data points by category and subCategory, applying limits. */\nexport function aggregateData(\n data: ChartSeriesPoint[],\n maxCats: number,\n maxSubs: number,\n showOthers: boolean,\n): AggregatedChartData {\n const categoryMap = new Map<string, Map<string, number>>();\n\n for (const point of data) {\n const cat = point.category ?? 'Unknown';\n const sub = point.subCategory ?? 'Default';\n if (!categoryMap.has(cat)) {\n categoryMap.set(cat, new Map());\n }\n const subMap = categoryMap.get(cat)!;\n subMap.set(sub, (subMap.get(sub) ?? 0) + point.value);\n }\n\n const sortedCategories = [...categoryMap.entries()]\n .map(([cat, subMap]) => {\n let total = 0;\n for (const v of subMap.values()) total += v;\n return { cat, subMap, total };\n })\n .sort((a, b) => b.total - a.total);\n\n const topCategories = sortedCategories.slice(0, maxCats);\n const overflowCategories = sortedCategories.slice(maxCats);\n\n if (showOthers && overflowCategories.length > 0) {\n const othersMap = new Map<string, number>();\n for (const { subMap } of overflowCategories) {\n for (const [sub, val] of subMap) {\n othersMap.set(sub, (othersMap.get(sub) ?? 0) + val);\n }\n }\n let othersTotal = 0;\n for (const v of othersMap.values()) othersTotal += v;\n topCategories.push({ cat: 'Others', subMap: othersMap, total: othersTotal });\n }\n\n const allSubCategories = new Set<string>();\n for (const { subMap } of topCategories) {\n for (const sub of subMap.keys()) {\n allSubCategories.add(sub);\n }\n }\n\n const sortedSubs = [...allSubCategories];\n const limitedSubs = sortedSubs.slice(0, maxSubs);\n const hasOverflowSubs = sortedSubs.length > maxSubs;\n\n const categories = topCategories.map((entry) => entry.cat);\n\n const series = limitedSubs.map((sub) => ({\n name: sub,\n values: topCategories.map((entry) => entry.subMap.get(sub) ?? 0),\n }));\n\n if (hasOverflowSubs && showOthers) {\n const overflowSubs = sortedSubs.slice(maxSubs);\n series.push({\n name: 'Other subcategories',\n values: topCategories.map((entry) => {\n let sum = 0;\n for (const sub of overflowSubs) {\n sum += entry.subMap.get(sub) ?? 0;\n }\n return sum;\n }),\n });\n }\n\n return { categories, series };\n}\n\n/** Build ECharts option for stacked bar chart. */\nexport function buildBarOption(\n categories: string[],\n series: { name: string; values: number[] }[],\n invertAxis: boolean,\n hideLegend: boolean,\n enableScroll: boolean,\n) {\n const categoryAxis = { type: 'category' as const, data: categories };\n const valueAxis = { type: 'value' as const };\n\n const dataZoom = enableScroll\n ? [{ type: 'slider' as const, show: true, ...(invertAxis ? { yAxisIndex: 0 } : { xAxisIndex: 0 }) }]\n : [];\n\n return {\n tooltip: { trigger: 'axis' as const, axisPointer: { type: 'shadow' as const } },\n legend: { show: !hideLegend, bottom: 0, type: 'scroll' as const },\n grid: { left: '3%', right: '4%', top: '3%', bottom: hideLegend ? '3%' : '12%', containLabel: true },\n xAxis: invertAxis ? valueAxis : categoryAxis,\n yAxis: invertAxis ? categoryAxis : valueAxis,\n dataZoom,\n series: series.map((s, i) => ({\n name: s.name,\n type: 'bar' as const,\n stack: 'total',\n emphasis: { focus: 'series' as const },\n data: s.values,\n itemStyle: { color: CHART_COLORS[i % CHART_COLORS.length] },\n })),\n };\n}\n\n/** Build ECharts option for pie chart. */\nexport function buildPieOption(\n categories: string[],\n series: { name: string; values: number[] }[],\n hideLegend: boolean,\n) {\n const pieData = categories.map((cat, catIdx) => {\n let total = 0;\n for (const s of series) {\n total += s.values[catIdx] ?? 0;\n }\n return { name: cat, value: total };\n });\n\n return {\n tooltip: { trigger: 'item' as const },\n legend: { show: !hideLegend, bottom: 0, type: 'scroll' as const },\n series: [\n {\n type: 'pie' as const,\n radius: ['30%', '65%'],\n center: ['50%', '45%'],\n data: pieData.map((d, i) => ({\n ...d,\n itemStyle: { color: CHART_COLORS[i % CHART_COLORS.length] },\n })),\n emphasis: { itemStyle: { shadowBlur: 10, shadowOffsetX: 0, shadowColor: 'rgba(0,0,0,0.3)' } },\n label: { show: true, formatter: '{b}: {d}%' },\n },\n ],\n };\n}\n\n/** Build ECharts option for sunburst chart. */\nexport function buildSunburstOption(\n categories: string[],\n series: { name: string; values: number[] }[],\n) {\n const sunburstData = categories.map((cat, catIdx) => {\n const children = series\n .map((s, sIdx) => ({\n name: s.name,\n value: s.values[catIdx] ?? 0,\n itemStyle: { color: CHART_COLORS[(catIdx * series.length + sIdx) % CHART_COLORS.length] },\n }))\n .filter((child) => child.value > 0);\n\n return { name: cat, children };\n });\n\n return {\n tooltip: { trigger: 'item' as const },\n series: [\n {\n type: 'sunburst' as const,\n data: sunburstData,\n radius: ['15%', '80%'],\n label: { rotate: 'radial' as const, fontSize: 10 },\n itemStyle: { borderRadius: 4, borderWidth: 1 },\n emphasis: { focus: 'ancestor' as const },\n },\n ],\n };\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
+ const root = "krc-root-U8B4Y";
4
+ const header = "krc-header-dy6xQ";
5
+ const headerLeft = "krc-headerLeft-80jJu";
6
+ const title = "krc-title--e-Ci";
7
+ const subtitle = "krc-subtitle-63ixC";
8
+ const headerRight = "krc-headerRight-3Vuls";
9
+ const toolbar = "krc-toolbar-h6ALf";
10
+ const chartTypeToggle = "krc-chartTypeToggle-6DRWb";
11
+ const active = "krc-active-Un9q0";
12
+ const chartContainer = "krc-chartContainer-2Oz2N";
13
+ const loading = "krc-loading-hTkxl";
14
+ const error = "krc-error--F7yO";
15
+ const retryButton = "krc-retryButton-w0SS7";
16
+ const empty = "krc-empty-HWTS-";
17
+ const styles = {
18
+ root,
19
+ header,
20
+ headerLeft,
21
+ title,
22
+ subtitle,
23
+ headerRight,
24
+ toolbar,
25
+ chartTypeToggle,
26
+ active,
27
+ chartContainer,
28
+ loading,
29
+ error,
30
+ retryButton,
31
+ empty
32
+ };
33
+ exports.active = active;
34
+ exports.chartContainer = chartContainer;
35
+ exports.chartTypeToggle = chartTypeToggle;
36
+ exports.default = styles;
37
+ exports.empty = empty;
38
+ exports.error = error;
39
+ exports.header = header;
40
+ exports.headerLeft = headerLeft;
41
+ exports.headerRight = headerRight;
42
+ exports.loading = loading;
43
+ exports.retryButton = retryButton;
44
+ exports.root = root;
45
+ exports.subtitle = subtitle;
46
+ exports.title = title;
47
+ exports.toolbar = toolbar;
48
+ //# sourceMappingURL=index67.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index67.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,48 @@
1
+ const root = "krc-root-U8B4Y";
2
+ const header = "krc-header-dy6xQ";
3
+ const headerLeft = "krc-headerLeft-80jJu";
4
+ const title = "krc-title--e-Ci";
5
+ const subtitle = "krc-subtitle-63ixC";
6
+ const headerRight = "krc-headerRight-3Vuls";
7
+ const toolbar = "krc-toolbar-h6ALf";
8
+ const chartTypeToggle = "krc-chartTypeToggle-6DRWb";
9
+ const active = "krc-active-Un9q0";
10
+ const chartContainer = "krc-chartContainer-2Oz2N";
11
+ const loading = "krc-loading-hTkxl";
12
+ const error = "krc-error--F7yO";
13
+ const retryButton = "krc-retryButton-w0SS7";
14
+ const empty = "krc-empty-HWTS-";
15
+ const styles = {
16
+ root,
17
+ header,
18
+ headerLeft,
19
+ title,
20
+ subtitle,
21
+ headerRight,
22
+ toolbar,
23
+ chartTypeToggle,
24
+ active,
25
+ chartContainer,
26
+ loading,
27
+ error,
28
+ retryButton,
29
+ empty
30
+ };
31
+ export {
32
+ active,
33
+ chartContainer,
34
+ chartTypeToggle,
35
+ styles as default,
36
+ empty,
37
+ error,
38
+ header,
39
+ headerLeft,
40
+ headerRight,
41
+ loading,
42
+ retryButton,
43
+ root,
44
+ subtitle,
45
+ title,
46
+ toolbar
47
+ };
48
+ //# sourceMappingURL=index67.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index67.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
+ const root = "krc-root-GYECa";
4
+ const header = "krc-header-7V-0i";
5
+ const title = "krc-title-SiRcV";
6
+ const headerActions = "krc-headerActions-HY6nM";
7
+ const splitContainer = "krc-splitContainer-ovkIf";
8
+ const tablePanel = "krc-tablePanel-gbWQx";
9
+ const chartPanel = "krc-chartPanel-eBJ9W";
10
+ const table = "krc-table-40WZx";
11
+ const tableRow = "krc-tableRow-yQlEa";
12
+ const tableRowSelected = "krc-tableRowSelected-vIEfO";
13
+ const pagination = "krc-pagination-nyCxO";
14
+ const paginationButton = "krc-paginationButton-k-cQB";
15
+ const paginationInfo = "krc-paginationInfo-ouuPw";
16
+ const placeholder = "krc-placeholder-YDeIw";
17
+ const loading = "krc-loading-UoiCd";
18
+ const error = "krc-error-Subfi";
19
+ const retryButton = "krc-retryButton-k8HPu";
20
+ const empty = "krc-empty-OoPZo";
21
+ const styles = {
22
+ root,
23
+ header,
24
+ title,
25
+ headerActions,
26
+ splitContainer,
27
+ tablePanel,
28
+ chartPanel,
29
+ table,
30
+ tableRow,
31
+ tableRowSelected,
32
+ pagination,
33
+ paginationButton,
34
+ paginationInfo,
35
+ placeholder,
36
+ loading,
37
+ error,
38
+ retryButton,
39
+ empty
40
+ };
41
+ exports.chartPanel = chartPanel;
42
+ exports.default = styles;
43
+ exports.empty = empty;
44
+ exports.error = error;
45
+ exports.header = header;
46
+ exports.headerActions = headerActions;
47
+ exports.loading = loading;
48
+ exports.pagination = pagination;
49
+ exports.paginationButton = paginationButton;
50
+ exports.paginationInfo = paginationInfo;
51
+ exports.placeholder = placeholder;
52
+ exports.retryButton = retryButton;
53
+ exports.root = root;
54
+ exports.splitContainer = splitContainer;
55
+ exports.table = table;
56
+ exports.tablePanel = tablePanel;
57
+ exports.tableRow = tableRow;
58
+ exports.tableRowSelected = tableRowSelected;
59
+ exports.title = title;
60
+ //# sourceMappingURL=index68.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index68.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,60 @@
1
+ const root = "krc-root-GYECa";
2
+ const header = "krc-header-7V-0i";
3
+ const title = "krc-title-SiRcV";
4
+ const headerActions = "krc-headerActions-HY6nM";
5
+ const splitContainer = "krc-splitContainer-ovkIf";
6
+ const tablePanel = "krc-tablePanel-gbWQx";
7
+ const chartPanel = "krc-chartPanel-eBJ9W";
8
+ const table = "krc-table-40WZx";
9
+ const tableRow = "krc-tableRow-yQlEa";
10
+ const tableRowSelected = "krc-tableRowSelected-vIEfO";
11
+ const pagination = "krc-pagination-nyCxO";
12
+ const paginationButton = "krc-paginationButton-k-cQB";
13
+ const paginationInfo = "krc-paginationInfo-ouuPw";
14
+ const placeholder = "krc-placeholder-YDeIw";
15
+ const loading = "krc-loading-UoiCd";
16
+ const error = "krc-error-Subfi";
17
+ const retryButton = "krc-retryButton-k8HPu";
18
+ const empty = "krc-empty-OoPZo";
19
+ const styles = {
20
+ root,
21
+ header,
22
+ title,
23
+ headerActions,
24
+ splitContainer,
25
+ tablePanel,
26
+ chartPanel,
27
+ table,
28
+ tableRow,
29
+ tableRowSelected,
30
+ pagination,
31
+ paginationButton,
32
+ paginationInfo,
33
+ placeholder,
34
+ loading,
35
+ error,
36
+ retryButton,
37
+ empty
38
+ };
39
+ export {
40
+ chartPanel,
41
+ styles as default,
42
+ empty,
43
+ error,
44
+ header,
45
+ headerActions,
46
+ loading,
47
+ pagination,
48
+ paginationButton,
49
+ paginationInfo,
50
+ placeholder,
51
+ retryButton,
52
+ root,
53
+ splitContainer,
54
+ table,
55
+ tablePanel,
56
+ tableRow,
57
+ tableRowSelected,
58
+ title
59
+ };
60
+ //# sourceMappingURL=index68.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index68.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}