@ktnpm_devops/react-component 0.2.1 → 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 (285) hide show
  1. package/dist/index.cjs +38 -33
  2. package/dist/index.cjs.map +1 -1
  3. package/dist/index.d.ts +5 -0
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +38 -33
  6. package/dist/index.js.map +1 -1
  7. package/dist/index10.cjs +15 -4
  8. package/dist/index10.cjs.map +1 -1
  9. package/dist/index10.js +15 -4
  10. package/dist/index10.js.map +1 -1
  11. package/dist/index11.cjs +4 -16
  12. package/dist/index11.cjs.map +1 -1
  13. package/dist/index11.js +4 -16
  14. package/dist/index11.js.map +1 -1
  15. package/dist/index12.cjs +16 -10
  16. package/dist/index12.cjs.map +1 -1
  17. package/dist/index12.js +16 -10
  18. package/dist/index12.js.map +1 -1
  19. package/dist/index13.cjs +10 -100
  20. package/dist/index13.cjs.map +1 -1
  21. package/dist/index13.js +11 -101
  22. package/dist/index13.js.map +1 -1
  23. package/dist/index14.cjs +100 -20
  24. package/dist/index14.cjs.map +1 -1
  25. package/dist/index14.js +101 -21
  26. package/dist/index14.js.map +1 -1
  27. package/dist/index15.cjs +20 -90
  28. package/dist/index15.cjs.map +1 -1
  29. package/dist/index15.js +21 -91
  30. package/dist/index15.js.map +1 -1
  31. package/dist/index16.cjs +40 -155
  32. package/dist/index16.cjs.map +1 -1
  33. package/dist/index16.js +42 -157
  34. package/dist/index16.js.map +1 -1
  35. package/dist/index17.cjs +86 -132
  36. package/dist/index17.cjs.map +1 -1
  37. package/dist/index17.js +88 -134
  38. package/dist/index17.js.map +1 -1
  39. package/dist/index18.cjs +150 -113
  40. package/dist/index18.cjs.map +1 -1
  41. package/dist/index18.js +151 -114
  42. package/dist/index18.js.map +1 -1
  43. package/dist/index19.cjs +136 -17
  44. package/dist/index19.cjs.map +1 -1
  45. package/dist/index19.js +136 -17
  46. package/dist/index19.js.map +1 -1
  47. package/dist/index20.cjs +120 -7
  48. package/dist/index20.cjs.map +1 -1
  49. package/dist/index20.js +122 -9
  50. package/dist/index20.js.map +1 -1
  51. package/dist/index21.cjs +16 -130
  52. package/dist/index21.cjs.map +1 -1
  53. package/dist/index21.js +16 -130
  54. package/dist/index21.js.map +1 -1
  55. package/dist/index22.cjs +8 -38
  56. package/dist/index22.cjs.map +1 -1
  57. package/dist/index22.js +9 -39
  58. package/dist/index22.js.map +1 -1
  59. package/dist/index23.cjs +118 -211
  60. package/dist/index23.cjs.map +1 -1
  61. package/dist/index23.js +119 -212
  62. package/dist/index23.js.map +1 -1
  63. package/dist/index24.cjs +38 -34
  64. package/dist/index24.cjs.map +1 -1
  65. package/dist/index24.js +39 -35
  66. package/dist/index24.js.map +1 -1
  67. package/dist/index25.cjs +211 -65
  68. package/dist/index25.cjs.map +1 -1
  69. package/dist/index25.js +211 -65
  70. package/dist/index25.js.map +1 -1
  71. package/dist/index26.cjs +29 -148
  72. package/dist/index26.cjs.map +1 -1
  73. package/dist/index26.js +31 -150
  74. package/dist/index26.js.map +1 -1
  75. package/dist/index27.cjs +77 -7
  76. package/dist/index27.cjs.map +1 -1
  77. package/dist/index27.js +79 -9
  78. package/dist/index27.js.map +1 -1
  79. package/dist/index28.cjs +59 -17
  80. package/dist/index28.cjs.map +1 -1
  81. package/dist/index28.js +60 -18
  82. package/dist/index28.js.map +1 -1
  83. package/dist/index29.cjs +146 -70
  84. package/dist/index29.cjs.map +1 -1
  85. package/dist/index29.js +148 -72
  86. package/dist/index29.js.map +1 -1
  87. package/dist/index3.cjs +76 -16
  88. package/dist/index3.cjs.map +1 -1
  89. package/dist/index3.js +76 -16
  90. package/dist/index3.js.map +1 -1
  91. package/dist/index30.cjs +7 -142
  92. package/dist/index30.cjs.map +1 -1
  93. package/dist/index30.js +9 -144
  94. package/dist/index30.js.map +1 -1
  95. package/dist/index31.cjs +15 -103
  96. package/dist/index31.cjs.map +1 -1
  97. package/dist/index31.js +14 -102
  98. package/dist/index31.js.map +1 -1
  99. package/dist/index32.cjs +77 -6
  100. package/dist/index32.cjs.map +1 -1
  101. package/dist/index32.js +78 -7
  102. package/dist/index32.js.map +1 -1
  103. package/dist/index33.cjs +133 -206
  104. package/dist/index33.cjs.map +1 -1
  105. package/dist/index33.js +134 -207
  106. package/dist/index33.js.map +1 -1
  107. package/dist/index34.cjs +104 -7
  108. package/dist/index34.cjs.map +1 -1
  109. package/dist/index34.js +106 -9
  110. package/dist/index34.js.map +1 -1
  111. package/dist/index35.cjs +8 -16
  112. package/dist/index35.cjs.map +1 -1
  113. package/dist/index35.js +7 -15
  114. package/dist/index35.js.map +1 -1
  115. package/dist/index36.cjs +218 -7
  116. package/dist/index36.cjs.map +1 -1
  117. package/dist/index36.js +217 -6
  118. package/dist/index36.js.map +1 -1
  119. package/dist/index37.cjs +10 -7
  120. package/dist/index37.cjs.map +1 -1
  121. package/dist/index37.js +9 -6
  122. package/dist/index37.js.map +1 -1
  123. package/dist/index38.cjs +15 -6
  124. package/dist/index38.cjs.map +1 -1
  125. package/dist/index38.js +15 -6
  126. package/dist/index38.js.map +1 -1
  127. package/dist/index39.cjs +9 -15
  128. package/dist/index39.cjs.map +1 -1
  129. package/dist/index39.js +10 -16
  130. package/dist/index39.js.map +1 -1
  131. package/dist/index4.cjs +12 -8
  132. package/dist/index4.cjs.map +1 -1
  133. package/dist/index4.js +12 -8
  134. package/dist/index4.js.map +1 -1
  135. package/dist/index40.cjs +24 -67
  136. package/dist/index40.cjs.map +1 -1
  137. package/dist/index40.js +23 -66
  138. package/dist/index40.js.map +1 -1
  139. package/dist/index41.cjs +10 -37
  140. package/dist/index41.cjs.map +1 -1
  141. package/dist/index41.js +10 -37
  142. package/dist/index41.js.map +1 -1
  143. package/dist/index42.cjs +2 -17
  144. package/dist/index42.cjs.map +1 -1
  145. package/dist/index42.js +3 -18
  146. package/dist/index42.js.map +1 -1
  147. package/dist/index43.cjs +2 -11
  148. package/dist/index43.cjs.map +1 -1
  149. package/dist/index43.js +2 -11
  150. package/dist/index43.js.map +1 -1
  151. package/dist/index44.cjs +22 -16
  152. package/dist/index44.cjs.map +1 -1
  153. package/dist/index44.js +22 -16
  154. package/dist/index44.js.map +1 -1
  155. package/dist/index45.cjs +16 -134
  156. package/dist/index45.cjs.map +1 -1
  157. package/dist/index45.js +15 -133
  158. package/dist/index45.js.map +1 -1
  159. package/dist/index46.cjs +15 -39
  160. package/dist/index46.cjs.map +1 -1
  161. package/dist/index46.js +16 -40
  162. package/dist/index46.js.map +1 -1
  163. package/dist/index47.cjs +16 -28
  164. package/dist/index47.cjs.map +1 -1
  165. package/dist/index47.js +16 -28
  166. package/dist/index47.js.map +1 -1
  167. package/dist/index48.cjs +67 -57
  168. package/dist/index48.cjs.map +1 -1
  169. package/dist/index48.js +66 -56
  170. package/dist/index48.js.map +1 -1
  171. package/dist/index49.cjs +77 -26
  172. package/dist/index49.cjs.map +1 -1
  173. package/dist/index49.js +77 -26
  174. package/dist/index49.js.map +1 -1
  175. package/dist/index5.cjs +9 -16
  176. package/dist/index5.cjs.map +1 -1
  177. package/dist/index5.js +10 -17
  178. package/dist/index5.js.map +1 -1
  179. package/dist/index51.cjs +30 -21
  180. package/dist/index51.cjs.map +1 -1
  181. package/dist/index51.js +30 -21
  182. package/dist/index51.js.map +1 -1
  183. package/dist/index52.cjs +13 -13
  184. package/dist/index52.js +14 -14
  185. package/dist/index54.cjs +1 -4
  186. package/dist/index54.cjs.map +1 -1
  187. package/dist/index54.js +1 -4
  188. package/dist/index54.js.map +1 -1
  189. package/dist/index55.cjs +5 -14
  190. package/dist/index55.cjs.map +1 -1
  191. package/dist/index55.js +5 -14
  192. package/dist/index55.js.map +1 -1
  193. package/dist/index56.cjs +37 -10
  194. package/dist/index56.cjs.map +1 -1
  195. package/dist/index56.js +37 -10
  196. package/dist/index56.js.map +1 -1
  197. package/dist/index57.cjs +2 -11
  198. package/dist/index57.cjs.map +1 -1
  199. package/dist/index57.js +2 -11
  200. package/dist/index57.js.map +1 -1
  201. package/dist/index58.cjs +13 -19
  202. package/dist/index58.cjs.map +1 -1
  203. package/dist/index58.js +13 -19
  204. package/dist/index58.js.map +1 -1
  205. package/dist/index59.cjs +27 -54
  206. package/dist/index59.cjs.map +1 -1
  207. package/dist/index59.js +28 -55
  208. package/dist/index59.js.map +1 -1
  209. package/dist/index6.cjs +19 -65
  210. package/dist/index6.cjs.map +1 -1
  211. package/dist/index6.js +19 -65
  212. package/dist/index6.js.map +1 -1
  213. package/dist/index60.cjs +64 -22
  214. package/dist/index60.cjs.map +1 -1
  215. package/dist/index60.js +64 -22
  216. package/dist/index60.js.map +1 -1
  217. package/dist/index61.cjs +15 -48
  218. package/dist/index61.cjs.map +1 -1
  219. package/dist/index61.js +16 -49
  220. package/dist/index61.js.map +1 -1
  221. package/dist/index62.cjs +16 -13
  222. package/dist/index62.cjs.map +1 -1
  223. package/dist/index62.js +17 -14
  224. package/dist/index62.js.map +1 -1
  225. package/dist/index63.cjs +27 -48
  226. package/dist/index63.cjs.map +1 -1
  227. package/dist/index63.js +27 -48
  228. package/dist/index63.js.map +1 -1
  229. package/dist/index64.cjs +13 -37
  230. package/dist/index64.cjs.map +1 -1
  231. package/dist/index64.js +14 -38
  232. package/dist/index64.js.map +1 -1
  233. package/dist/index65.cjs +45 -0
  234. package/dist/index65.cjs.map +1 -0
  235. package/dist/index65.js +45 -0
  236. package/dist/index65.js.map +1 -0
  237. package/dist/index66.cjs +136 -0
  238. package/dist/index66.cjs.map +1 -0
  239. package/dist/index66.js +136 -0
  240. package/dist/index66.js.map +1 -0
  241. package/dist/index67.cjs +48 -0
  242. package/dist/index67.cjs.map +1 -0
  243. package/dist/index67.js +48 -0
  244. package/dist/index67.js.map +1 -0
  245. package/dist/index68.cjs +60 -0
  246. package/dist/index68.cjs.map +1 -0
  247. package/dist/index68.js +60 -0
  248. package/dist/index68.js.map +1 -0
  249. package/dist/index69.cjs +57 -0
  250. package/dist/index69.cjs.map +1 -0
  251. package/dist/index69.js +57 -0
  252. package/dist/index69.js.map +1 -0
  253. package/dist/index7.cjs +58 -75
  254. package/dist/index7.cjs.map +1 -1
  255. package/dist/index7.js +58 -75
  256. package/dist/index7.js.map +1 -1
  257. package/dist/index8.cjs +82 -15
  258. package/dist/index8.cjs.map +1 -1
  259. package/dist/index8.js +82 -15
  260. package/dist/index8.js.map +1 -1
  261. package/dist/index9.cjs +14 -15
  262. package/dist/index9.cjs.map +1 -1
  263. package/dist/index9.js +15 -16
  264. package/dist/index9.js.map +1 -1
  265. package/dist/primitives/Col/Col.d.ts +4 -0
  266. package/dist/primitives/Col/Col.d.ts.map +1 -0
  267. package/dist/primitives/Col/Col.types.d.ts +13 -0
  268. package/dist/primitives/Col/Col.types.d.ts.map +1 -0
  269. package/dist/primitives/Col/index.d.ts +3 -0
  270. package/dist/primitives/Col/index.d.ts.map +1 -0
  271. package/dist/primitives/Row/Row.d.ts +4 -0
  272. package/dist/primitives/Row/Row.d.ts.map +1 -0
  273. package/dist/primitives/Row/Row.types.d.ts +16 -0
  274. package/dist/primitives/Row/Row.types.d.ts.map +1 -0
  275. package/dist/primitives/Row/index.d.ts +3 -0
  276. package/dist/primitives/Row/index.d.ts.map +1 -0
  277. package/dist/style.css +312 -0
  278. package/dist/tokens/semantic-tokens.css +21 -0
  279. package/dist/tokens/tokens.d.ts +35 -0
  280. package/dist/tokens/tokens.d.ts.map +1 -1
  281. package/package.json +3 -2
  282. package/dist/index2.cjs +0 -44
  283. package/dist/index2.cjs.map +0 -1
  284. package/dist/index2.js +0 -44
  285. package/dist/index2.js.map +0 -1
@@ -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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
+ const root = "krc-root-W2sel";
4
+ const tableContainer = "krc-tableContainer-Ed3uk";
5
+ const table = "krc-table-7p0H-";
6
+ const th = "krc-th-fNmfv";
7
+ const sortable = "krc-sortable-Ve0MQ";
8
+ const thContent = "krc-thContent-BRDIL";
9
+ const sortIndicator = "krc-sortIndicator-PtGYj";
10
+ const resizeHandle = "krc-resizeHandle--St-g";
11
+ const td = "krc-td-ZVsrU";
12
+ const row = "krc-row-JivMH";
13
+ const rowClickable = "krc-rowClickable-lTgQW";
14
+ const rowSelected = "krc-rowSelected-Sv0qs";
15
+ const skeletonRow = "krc-skeletonRow-uD1y7";
16
+ const skeleton = "krc-skeleton-eeYso";
17
+ const empty = "krc-empty-xKpKS";
18
+ const loadMore = "krc-loadMore-njxDN";
19
+ const loadMoreButton = "krc-loadMoreButton-C3Q-f";
20
+ const styles = {
21
+ root,
22
+ tableContainer,
23
+ table,
24
+ th,
25
+ sortable,
26
+ thContent,
27
+ sortIndicator,
28
+ resizeHandle,
29
+ td,
30
+ row,
31
+ rowClickable,
32
+ rowSelected,
33
+ skeletonRow,
34
+ skeleton,
35
+ empty,
36
+ loadMore,
37
+ loadMoreButton
38
+ };
39
+ exports.default = styles;
40
+ exports.empty = empty;
41
+ exports.loadMore = loadMore;
42
+ exports.loadMoreButton = loadMoreButton;
43
+ exports.resizeHandle = resizeHandle;
44
+ exports.root = root;
45
+ exports.row = row;
46
+ exports.rowClickable = rowClickable;
47
+ exports.rowSelected = rowSelected;
48
+ exports.skeleton = skeleton;
49
+ exports.skeletonRow = skeletonRow;
50
+ exports.sortIndicator = sortIndicator;
51
+ exports.sortable = sortable;
52
+ exports.table = table;
53
+ exports.tableContainer = tableContainer;
54
+ exports.td = td;
55
+ exports.th = th;
56
+ exports.thContent = thContent;
57
+ //# sourceMappingURL=index69.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index69.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,57 @@
1
+ const root = "krc-root-W2sel";
2
+ const tableContainer = "krc-tableContainer-Ed3uk";
3
+ const table = "krc-table-7p0H-";
4
+ const th = "krc-th-fNmfv";
5
+ const sortable = "krc-sortable-Ve0MQ";
6
+ const thContent = "krc-thContent-BRDIL";
7
+ const sortIndicator = "krc-sortIndicator-PtGYj";
8
+ const resizeHandle = "krc-resizeHandle--St-g";
9
+ const td = "krc-td-ZVsrU";
10
+ const row = "krc-row-JivMH";
11
+ const rowClickable = "krc-rowClickable-lTgQW";
12
+ const rowSelected = "krc-rowSelected-Sv0qs";
13
+ const skeletonRow = "krc-skeletonRow-uD1y7";
14
+ const skeleton = "krc-skeleton-eeYso";
15
+ const empty = "krc-empty-xKpKS";
16
+ const loadMore = "krc-loadMore-njxDN";
17
+ const loadMoreButton = "krc-loadMoreButton-C3Q-f";
18
+ const styles = {
19
+ root,
20
+ tableContainer,
21
+ table,
22
+ th,
23
+ sortable,
24
+ thContent,
25
+ sortIndicator,
26
+ resizeHandle,
27
+ td,
28
+ row,
29
+ rowClickable,
30
+ rowSelected,
31
+ skeletonRow,
32
+ skeleton,
33
+ empty,
34
+ loadMore,
35
+ loadMoreButton
36
+ };
37
+ export {
38
+ styles as default,
39
+ empty,
40
+ loadMore,
41
+ loadMoreButton,
42
+ resizeHandle,
43
+ root,
44
+ row,
45
+ rowClickable,
46
+ rowSelected,
47
+ skeleton,
48
+ skeletonRow,
49
+ sortIndicator,
50
+ sortable,
51
+ table,
52
+ tableContainer,
53
+ td,
54
+ th,
55
+ thContent
56
+ };
57
+ //# sourceMappingURL=index69.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index69.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/dist/index7.cjs CHANGED
@@ -1,85 +1,68 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const ensureString = (value) => value === null || value === void 0 ? "" : String(value);
4
- const toStringTable = (table) => table.map((row) => row.map((cell) => ensureString(cell)));
5
- const sanitizeFilename = (value) => {
6
- const normalized = value.normalize().replace(/[^\p{L}\p{N}]+/gu, "-").replace(/^-+|-+$/g, "").toLowerCase();
7
- return normalized || "export";
3
+ const truncateWithEllipsis = (value, maxLength = 36) => {
4
+ if (value.length <= maxLength) return value;
5
+ if (maxLength <= 3) return value.slice(0, maxLength);
6
+ return `${value.slice(0, maxLength - 3)}...`;
8
7
  };
9
- const buildCsv = (table) => {
10
- const rows = toStringTable(table);
11
- return rows.map(
12
- (row) => row.map((cell) => {
13
- const escaped = cell.replace(/"/g, '""');
14
- return /[",\n]/.test(escaped) ? `"${escaped}"` : escaped;
15
- }).join(",")
16
- ).join("\r\n");
17
- };
18
- const triggerDownload = (blob, filename) => {
19
- const link = document.createElement("a");
20
- const url = URL.createObjectURL(blob);
21
- link.href = url;
22
- link.download = filename;
23
- document.body.appendChild(link);
24
- link.click();
25
- document.body.removeChild(link);
26
- URL.revokeObjectURL(url);
27
- };
28
- const exportTableToCsv = (table, filename) => {
29
- if (table.length === 0) return;
30
- const csv = buildCsv(table);
31
- const blob = new Blob([csv], { type: "text/csv;charset=utf-8;" });
32
- const finalName = filename.endsWith(".csv") ? filename : `${filename}.csv`;
33
- triggerDownload(blob, finalName);
8
+ const formatNumber = (value, options) => Number.isFinite(value) ? value.toLocaleString(void 0, options) : "0";
9
+ const formatBytes = (value) => {
10
+ if (!Number.isFinite(value) || value === 0) return "0 B";
11
+ const units = ["B", "KB", "MB", "GB", "TB", "PB"];
12
+ let index = 0;
13
+ let current = Math.abs(value);
14
+ while (current >= 1024 && index < units.length - 1) {
15
+ current /= 1024;
16
+ index += 1;
17
+ }
18
+ const formatted = current.toFixed(current >= 10 || index === 0 ? 0 : 1);
19
+ return `${value < 0 ? "-" : ""}${formatted} ${units[index]}`;
34
20
  };
35
- const getChartPngDataUrl = (chart) => chart.getDataURL({ type: "png", pixelRatio: 2, backgroundColor: "#ffffff" });
36
- const downloadImageDataUrl = (dataUrl, filename) => {
37
- const link = document.createElement("a");
38
- link.href = dataUrl;
39
- link.download = filename;
40
- document.body.appendChild(link);
41
- link.click();
42
- document.body.removeChild(link);
21
+ const DATETIME_FORMATTERS = /* @__PURE__ */ new Map();
22
+ const getDateTimeFormatter = (timeZone, withSeconds) => {
23
+ const key = `${timeZone}-${withSeconds ? "s" : "n"}`;
24
+ const cached = DATETIME_FORMATTERS.get(key);
25
+ if (cached) return cached;
26
+ const formatter = new Intl.DateTimeFormat(void 0, {
27
+ year: "numeric",
28
+ month: "2-digit",
29
+ day: "2-digit",
30
+ hour: "2-digit",
31
+ minute: "2-digit",
32
+ second: withSeconds ? "2-digit" : void 0,
33
+ hour12: false,
34
+ timeZone
35
+ });
36
+ DATETIME_FORMATTERS.set(key, formatter);
37
+ return formatter;
43
38
  };
44
- const buildTableHtml = (table) => {
45
- const rows = toStringTable(table);
46
- if (rows.length === 0) return "";
47
- const [header, ...body] = rows;
48
- const thead = `<thead><tr>${header.map((c) => `<th>${c}</th>`).join("")}</tr></thead>`;
49
- const tbody = body.map((r) => `<tr>${r.map((c) => `<td>${c}</td>`).join("")}</tr>`).join("");
50
- return `<table>${thead}<tbody>${tbody}</tbody></table>`;
39
+ const formatDataTimestamp = (value, options = {}) => {
40
+ const { fallback = "Unknown", withSeconds = false, timeZone = "UTC", showTimeZoneLabel = false } = options;
41
+ if (!value) return fallback;
42
+ const date = new Date(value);
43
+ if (Number.isNaN(date.getTime())) return typeof value === "string" ? value : fallback;
44
+ const formatter = getDateTimeFormatter(timeZone, withSeconds);
45
+ const formatted = formatter.format(date);
46
+ return showTimeZoneLabel ? `${formatted} ${timeZone}` : formatted;
51
47
  };
52
- const openPrintWindowWithChart = (title, chartDataUrl, table) => {
53
- const win = window.open("", "_blank");
54
- if (!win) return;
55
- const tableHtml = buildTableHtml(table);
56
- win.document.write("<!DOCTYPE html>");
57
- win.document.write(`<html><head><title>${title}</title>`);
58
- win.document.write(
59
- "<style>body{font-family:Arial,Helvetica,sans-serif;padding:24px;color:#1f2937;}h1{font-size:20px;margin-bottom:16px;}img{max-width:100%;height:auto;margin-bottom:16px;border:1px solid #e5e7eb;border-radius:12px;}table{border-collapse:collapse;width:100%;}th,td{border:1px solid #d1d5db;padding:8px;text-align:left;font-size:12px;}th{background:#f3f4f6;text-transform:uppercase;letter-spacing:0.05em;font-weight:600;}</style>"
60
- );
61
- win.document.write("</head><body>");
62
- win.document.write(`<h1>${title}</h1>`);
63
- win.document.write(`<img src="${chartDataUrl}" alt="${title}" />`);
64
- win.document.write(tableHtml);
65
- win.document.write("</body></html>");
66
- win.document.close();
67
- win.focus();
68
- setTimeout(() => win.print(), 300);
48
+ const formatLocalISOString = (date) => {
49
+ const pad = (n) => `${n}`.padStart(2, "0");
50
+ return `${date.getFullYear()}-${pad(date.getMonth() + 1)}-${pad(date.getDate())}T${pad(date.getHours())}:${pad(date.getMinutes())}:${pad(date.getSeconds())}`;
69
51
  };
70
- const composeFilename = (title, suffix) => {
71
- const base = sanitizeFilename(title);
72
- if (suffix && suffix.trim().length > 0) {
73
- const suffixSanitized = sanitizeFilename(suffix);
74
- return `${base}-${suffixSanitized}`;
52
+ const generateUUID = () => {
53
+ if (typeof crypto !== "undefined" && typeof crypto.randomUUID === "function") {
54
+ return crypto.randomUUID();
75
55
  }
76
- return base;
56
+ return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, (c) => {
57
+ const r = Math.random() * 16 | 0;
58
+ const v = c === "x" ? r : r & 3 | 8;
59
+ return v.toString(16);
60
+ });
77
61
  };
78
- exports.composeFilename = composeFilename;
79
- exports.downloadImageDataUrl = downloadImageDataUrl;
80
- exports.exportTableToCsv = exportTableToCsv;
81
- exports.getChartPngDataUrl = getChartPngDataUrl;
82
- exports.openPrintWindowWithChart = openPrintWindowWithChart;
83
- exports.sanitizeFilename = sanitizeFilename;
84
- exports.toStringTable = toStringTable;
62
+ exports.formatBytes = formatBytes;
63
+ exports.formatDataTimestamp = formatDataTimestamp;
64
+ exports.formatLocalISOString = formatLocalISOString;
65
+ exports.formatNumber = formatNumber;
66
+ exports.generateUUID = generateUUID;
67
+ exports.truncateWithEllipsis = truncateWithEllipsis;
85
68
  //# sourceMappingURL=index7.cjs.map