@ktnpm_devops/react-component 0.15.0 → 0.17.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 (424) hide show
  1. package/README.md +38 -2
  2. package/dist/constants.d.ts +9 -3
  3. package/dist/constants.d.ts.map +1 -1
  4. package/dist/data/HeatmapMatrix/HeatmapMatrix.d.ts.map +1 -1
  5. package/dist/data/HeatmapMatrix/HeatmapMatrix.types.d.ts +42 -0
  6. package/dist/data/HeatmapMatrix/HeatmapMatrix.types.d.ts.map +1 -1
  7. package/dist/data/HeatmapMatrix/HeatmapMatrixHeader.d.ts +9 -0
  8. package/dist/data/HeatmapMatrix/HeatmapMatrixHeader.d.ts.map +1 -0
  9. package/dist/data/HeatmapMatrix/getColumnRuns.d.ts +11 -0
  10. package/dist/data/HeatmapMatrix/getColumnRuns.d.ts.map +1 -0
  11. package/dist/data/HeatmapMatrix/getColumnRuns.test.d.ts +2 -0
  12. package/dist/data/HeatmapMatrix/getColumnRuns.test.d.ts.map +1 -0
  13. package/dist/data/HeatmapMatrix/index.d.ts +1 -1
  14. package/dist/data/HeatmapMatrix/index.d.ts.map +1 -1
  15. package/dist/geo/GeoMapCard/GeoMapCard.d.ts +1 -1
  16. package/dist/geo/GeoMapCard/GeoMapCard.d.ts.map +1 -1
  17. package/dist/geo/GeoMapCard/GeoMapCard.types.d.ts +28 -2
  18. package/dist/geo/GeoMapCard/GeoMapCard.types.d.ts.map +1 -1
  19. package/dist/geo/GeoMapCard/MapStatusBars.d.ts +11 -0
  20. package/dist/geo/GeoMapCard/MapStatusBars.d.ts.map +1 -0
  21. package/dist/geo/GeoMapCard/ViewportReporter.d.ts +15 -0
  22. package/dist/geo/GeoMapCard/ViewportReporter.d.ts.map +1 -0
  23. package/dist/geo/GeoMapCard/describePoints.d.ts +7 -0
  24. package/dist/geo/GeoMapCard/describePoints.d.ts.map +1 -0
  25. package/dist/geo/GeoMapCard/normalizeViewport.d.ts +13 -0
  26. package/dist/geo/GeoMapCard/normalizeViewport.d.ts.map +1 -0
  27. package/dist/geo/GeoMapCard/normalizeViewport.test.d.ts +2 -0
  28. package/dist/geo/GeoMapCard/normalizeViewport.test.d.ts.map +1 -0
  29. package/dist/geo/GeoMapCard/resolveTiles.d.ts +9 -0
  30. package/dist/geo/GeoMapCard/resolveTiles.d.ts.map +1 -0
  31. package/dist/geo/GeoMapCard/warnMissingBasemapKey.d.ts +9 -0
  32. package/dist/geo/GeoMapCard/warnMissingBasemapKey.d.ts.map +1 -0
  33. package/dist/index.d.ts +2 -2
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index10.cjs +1 -1
  36. package/dist/index10.js +1 -1
  37. package/dist/index100.cjs +39 -15
  38. package/dist/index100.cjs.map +1 -1
  39. package/dist/index100.js +38 -14
  40. package/dist/index100.js.map +1 -1
  41. package/dist/index101.cjs +9 -7
  42. package/dist/index101.cjs.map +1 -1
  43. package/dist/index101.js +8 -6
  44. package/dist/index101.js.map +1 -1
  45. package/dist/index102.cjs +10 -6
  46. package/dist/index102.cjs.map +1 -1
  47. package/dist/index102.js +9 -5
  48. package/dist/index102.js.map +1 -1
  49. package/dist/index103.cjs +20 -70
  50. package/dist/index103.cjs.map +1 -1
  51. package/dist/index103.js +19 -69
  52. package/dist/index103.js.map +1 -1
  53. package/dist/index104.cjs +14 -25
  54. package/dist/index104.cjs.map +1 -1
  55. package/dist/index104.js +13 -24
  56. package/dist/index104.js.map +1 -1
  57. package/dist/index105.cjs +10 -21
  58. package/dist/index105.cjs.map +1 -1
  59. package/dist/index105.js +9 -20
  60. package/dist/index105.js.map +1 -1
  61. package/dist/index106.cjs +70 -134
  62. package/dist/index106.cjs.map +1 -1
  63. package/dist/index106.js +69 -133
  64. package/dist/index106.js.map +1 -1
  65. package/dist/index107.cjs +8 -38
  66. package/dist/index107.cjs.map +1 -1
  67. package/dist/index107.js +9 -39
  68. package/dist/index107.js.map +1 -1
  69. package/dist/index108.cjs +48 -31
  70. package/dist/index108.cjs.map +1 -1
  71. package/dist/index108.js +47 -30
  72. package/dist/index108.js.map +1 -1
  73. package/dist/index109.cjs +18 -40
  74. package/dist/index109.cjs.map +1 -1
  75. package/dist/index109.js +17 -39
  76. package/dist/index109.js.map +1 -1
  77. package/dist/index11.cjs +1 -1
  78. package/dist/index11.js +1 -1
  79. package/dist/index110.cjs +31 -52
  80. package/dist/index110.cjs.map +1 -1
  81. package/dist/index110.js +31 -52
  82. package/dist/index110.js.map +1 -1
  83. package/dist/index111.cjs +49 -19
  84. package/dist/index111.cjs.map +1 -1
  85. package/dist/index111.js +49 -19
  86. package/dist/index111.js.map +1 -1
  87. package/dist/index112.cjs +35 -2
  88. package/dist/index112.cjs.map +1 -1
  89. package/dist/index112.js +36 -3
  90. package/dist/index112.js.map +1 -1
  91. package/dist/index113.cjs +10 -19
  92. package/dist/index113.cjs.map +1 -1
  93. package/dist/index113.js +11 -20
  94. package/dist/index113.js.map +1 -1
  95. package/dist/index114.cjs +18 -36
  96. package/dist/index114.cjs.map +1 -1
  97. package/dist/index114.js +18 -36
  98. package/dist/index114.js.map +1 -1
  99. package/dist/index115.cjs +39 -39
  100. package/dist/index115.cjs.map +1 -1
  101. package/dist/index115.js +38 -38
  102. package/dist/index115.js.map +1 -1
  103. package/dist/index116.cjs +69 -92
  104. package/dist/index116.cjs.map +1 -1
  105. package/dist/index116.js +68 -91
  106. package/dist/index116.js.map +1 -1
  107. package/dist/index117.cjs +52 -34
  108. package/dist/index117.cjs.map +1 -1
  109. package/dist/index117.js +52 -34
  110. package/dist/index117.js.map +1 -1
  111. package/dist/index118.cjs +16 -116
  112. package/dist/index118.cjs.map +1 -1
  113. package/dist/index118.js +15 -115
  114. package/dist/index118.js.map +1 -1
  115. package/dist/index119.cjs +16 -37
  116. package/dist/index119.cjs.map +1 -1
  117. package/dist/index119.js +16 -37
  118. package/dist/index119.js.map +1 -1
  119. package/dist/index12.cjs +1 -1
  120. package/dist/index12.js +1 -1
  121. package/dist/index120.cjs +17 -84
  122. package/dist/index120.cjs.map +1 -1
  123. package/dist/index120.js +16 -83
  124. package/dist/index120.js.map +1 -1
  125. package/dist/index121.cjs +2 -20
  126. package/dist/index121.cjs.map +1 -1
  127. package/dist/index121.js +3 -21
  128. package/dist/index121.js.map +1 -1
  129. package/dist/index122.cjs +19 -1164
  130. package/dist/index122.cjs.map +1 -1
  131. package/dist/index122.js +17 -1163
  132. package/dist/index122.js.map +1 -1
  133. package/dist/index123.cjs +6 -1575
  134. package/dist/index123.cjs.map +1 -1
  135. package/dist/index123.js +5 -1575
  136. package/dist/index123.js.map +1 -1
  137. package/dist/index124.cjs +21 -0
  138. package/dist/index124.cjs.map +1 -0
  139. package/dist/index124.js +21 -0
  140. package/dist/index124.js.map +1 -0
  141. package/dist/index125.cjs +87 -0
  142. package/dist/index125.cjs.map +1 -0
  143. package/dist/index125.js +87 -0
  144. package/dist/index125.js.map +1 -0
  145. package/dist/index126.cjs +24 -0
  146. package/dist/index126.cjs.map +1 -0
  147. package/dist/index126.js +24 -0
  148. package/dist/index126.js.map +1 -0
  149. package/dist/index127.cjs +36 -0
  150. package/dist/index127.cjs.map +1 -0
  151. package/dist/index127.js +36 -0
  152. package/dist/index127.js.map +1 -0
  153. package/dist/index128.cjs +1166 -0
  154. package/dist/index128.cjs.map +1 -0
  155. package/dist/index128.js +1167 -0
  156. package/dist/index128.js.map +1 -0
  157. package/dist/index129.cjs +1578 -0
  158. package/dist/index129.cjs.map +1 -0
  159. package/dist/index129.js +1579 -0
  160. package/dist/index129.js.map +1 -0
  161. package/dist/index13.cjs +1 -1
  162. package/dist/index13.js +1 -1
  163. package/dist/index130.cjs +37 -0
  164. package/dist/index130.cjs.map +1 -0
  165. package/dist/index130.js +37 -0
  166. package/dist/index130.js.map +1 -0
  167. package/dist/index14.cjs +1 -1
  168. package/dist/index14.js +1 -1
  169. package/dist/index15.cjs +1 -1
  170. package/dist/index15.js +1 -1
  171. package/dist/index16.cjs +2 -2
  172. package/dist/index16.js +2 -2
  173. package/dist/index17.cjs +1 -1
  174. package/dist/index17.js +1 -1
  175. package/dist/index18.cjs +1 -1
  176. package/dist/index18.js +1 -1
  177. package/dist/index19.cjs +1 -1
  178. package/dist/index19.js +1 -1
  179. package/dist/index20.cjs +1 -1
  180. package/dist/index20.js +1 -1
  181. package/dist/index21.cjs +1 -1
  182. package/dist/index21.js +1 -1
  183. package/dist/index22.cjs +2 -2
  184. package/dist/index22.js +2 -2
  185. package/dist/index23.cjs +2 -2
  186. package/dist/index23.js +2 -2
  187. package/dist/index24.cjs +2 -2
  188. package/dist/index24.js +2 -2
  189. package/dist/index25.cjs +1 -1
  190. package/dist/index25.js +1 -1
  191. package/dist/index26.cjs +1 -1
  192. package/dist/index26.js +1 -1
  193. package/dist/index27.cjs +1 -1
  194. package/dist/index27.js +1 -1
  195. package/dist/index28.cjs +1 -1
  196. package/dist/index28.js +1 -1
  197. package/dist/index29.cjs +2 -2
  198. package/dist/index29.js +2 -2
  199. package/dist/index30.cjs +37 -35
  200. package/dist/index30.cjs.map +1 -1
  201. package/dist/index30.js +35 -33
  202. package/dist/index30.js.map +1 -1
  203. package/dist/index31.cjs +4 -4
  204. package/dist/index31.js +4 -4
  205. package/dist/index32.cjs +78 -53
  206. package/dist/index32.cjs.map +1 -1
  207. package/dist/index32.js +79 -54
  208. package/dist/index32.js.map +1 -1
  209. package/dist/index33.cjs +1 -1
  210. package/dist/index33.js +1 -1
  211. package/dist/index34.cjs +2 -2
  212. package/dist/index34.js +2 -2
  213. package/dist/index35.cjs +2 -2
  214. package/dist/index35.js +2 -2
  215. package/dist/index36.cjs +2 -2
  216. package/dist/index36.js +2 -2
  217. package/dist/index37.cjs +1 -1
  218. package/dist/index37.js +1 -1
  219. package/dist/index38.cjs +2 -2
  220. package/dist/index38.js +2 -2
  221. package/dist/index39.cjs +1 -1
  222. package/dist/index39.js +1 -1
  223. package/dist/index40.cjs +2 -2
  224. package/dist/index40.js +2 -2
  225. package/dist/index41.cjs +2 -2
  226. package/dist/index41.js +2 -2
  227. package/dist/index42.cjs +2 -2
  228. package/dist/index42.js +2 -2
  229. package/dist/index43.cjs +1 -1
  230. package/dist/index43.js +1 -1
  231. package/dist/index44.cjs +2 -2
  232. package/dist/index44.js +2 -2
  233. package/dist/index45.cjs +4 -4
  234. package/dist/index45.js +4 -4
  235. package/dist/index46.cjs +1 -1
  236. package/dist/index46.js +1 -1
  237. package/dist/index47.cjs +1 -1
  238. package/dist/index47.js +1 -1
  239. package/dist/index48.cjs +1 -1
  240. package/dist/index48.js +1 -1
  241. package/dist/index49.cjs +2 -2
  242. package/dist/index49.js +2 -2
  243. package/dist/index50.cjs +2 -2
  244. package/dist/index50.js +2 -2
  245. package/dist/index51.cjs +1 -1
  246. package/dist/index51.js +1 -1
  247. package/dist/index52.cjs +3 -3
  248. package/dist/index52.js +3 -3
  249. package/dist/index53.cjs +1 -1
  250. package/dist/index53.js +1 -1
  251. package/dist/index54.cjs +1 -1
  252. package/dist/index54.js +1 -1
  253. package/dist/index55.cjs +3 -3
  254. package/dist/index55.js +3 -3
  255. package/dist/index56.cjs +1 -1
  256. package/dist/index56.js +1 -1
  257. package/dist/index57.cjs +1 -1
  258. package/dist/index57.js +1 -1
  259. package/dist/index58.cjs +2 -2
  260. package/dist/index58.js +2 -2
  261. package/dist/index60.cjs +7 -4
  262. package/dist/index60.cjs.map +1 -1
  263. package/dist/index60.js +7 -4
  264. package/dist/index60.js.map +1 -1
  265. package/dist/index61.cjs +20 -5
  266. package/dist/index61.cjs.map +1 -1
  267. package/dist/index61.js +21 -6
  268. package/dist/index61.js.map +1 -1
  269. package/dist/index62.cjs +18 -17
  270. package/dist/index62.cjs.map +1 -1
  271. package/dist/index62.js +17 -16
  272. package/dist/index62.js.map +1 -1
  273. package/dist/index63.cjs +4 -1
  274. package/dist/index63.cjs.map +1 -1
  275. package/dist/index63.js +4 -1
  276. package/dist/index63.js.map +1 -1
  277. package/dist/index64.cjs +142 -6
  278. package/dist/index64.cjs.map +1 -1
  279. package/dist/index64.js +141 -5
  280. package/dist/index64.js.map +1 -1
  281. package/dist/index65.cjs +22 -141
  282. package/dist/index65.cjs.map +1 -1
  283. package/dist/index65.js +20 -139
  284. package/dist/index65.js.map +1 -1
  285. package/dist/index66.cjs +19 -16
  286. package/dist/index66.cjs.map +1 -1
  287. package/dist/index66.js +19 -16
  288. package/dist/index66.js.map +1 -1
  289. package/dist/index67.cjs +16 -46
  290. package/dist/index67.cjs.map +1 -1
  291. package/dist/index67.js +16 -46
  292. package/dist/index67.js.map +1 -1
  293. package/dist/index68.cjs +37 -52
  294. package/dist/index68.cjs.map +1 -1
  295. package/dist/index68.js +37 -52
  296. package/dist/index68.js.map +1 -1
  297. package/dist/index69.cjs +28 -28
  298. package/dist/index69.js +28 -28
  299. package/dist/index70.cjs +20 -2
  300. package/dist/index70.cjs.map +1 -1
  301. package/dist/index70.js +21 -3
  302. package/dist/index70.js.map +1 -1
  303. package/dist/index71.cjs +4 -13
  304. package/dist/index71.cjs.map +1 -1
  305. package/dist/index71.js +4 -13
  306. package/dist/index71.js.map +1 -1
  307. package/dist/index72.cjs +116 -40
  308. package/dist/index72.cjs.map +1 -1
  309. package/dist/index72.js +115 -39
  310. package/dist/index72.js.map +1 -1
  311. package/dist/index73.cjs +33 -24
  312. package/dist/index73.cjs.map +1 -1
  313. package/dist/index73.js +34 -25
  314. package/dist/index73.js.map +1 -1
  315. package/dist/index74.cjs +52 -13
  316. package/dist/index74.cjs.map +1 -1
  317. package/dist/index74.js +53 -14
  318. package/dist/index74.js.map +1 -1
  319. package/dist/index75.cjs +39 -15
  320. package/dist/index75.cjs.map +1 -1
  321. package/dist/index75.js +38 -14
  322. package/dist/index75.js.map +1 -1
  323. package/dist/index76.cjs +92 -21
  324. package/dist/index76.cjs.map +1 -1
  325. package/dist/index76.js +91 -20
  326. package/dist/index76.js.map +1 -1
  327. package/dist/index77.cjs +34 -4
  328. package/dist/index77.cjs.map +1 -1
  329. package/dist/index77.js +35 -5
  330. package/dist/index77.js.map +1 -1
  331. package/dist/index78.cjs +22 -42
  332. package/dist/index78.cjs.map +1 -1
  333. package/dist/index78.js +21 -41
  334. package/dist/index78.js.map +1 -1
  335. package/dist/index79.cjs +69 -33
  336. package/dist/index79.cjs.map +1 -1
  337. package/dist/index79.js +68 -32
  338. package/dist/index79.js.map +1 -1
  339. package/dist/index80.cjs +7 -21
  340. package/dist/index80.cjs.map +1 -1
  341. package/dist/index80.js +6 -20
  342. package/dist/index80.js.map +1 -1
  343. package/dist/index81.cjs +39 -22
  344. package/dist/index81.cjs.map +1 -1
  345. package/dist/index81.js +38 -21
  346. package/dist/index81.js.map +1 -1
  347. package/dist/index82.cjs +127 -63
  348. package/dist/index82.cjs.map +1 -1
  349. package/dist/index82.js +127 -63
  350. package/dist/index82.js.map +1 -1
  351. package/dist/index83.cjs +45 -7
  352. package/dist/index83.cjs.map +1 -1
  353. package/dist/index83.js +44 -6
  354. package/dist/index83.js.map +1 -1
  355. package/dist/index84.cjs +2 -35
  356. package/dist/index84.cjs.map +1 -1
  357. package/dist/index84.js +3 -36
  358. package/dist/index84.js.map +1 -1
  359. package/dist/index85.cjs +39 -35
  360. package/dist/index85.cjs.map +1 -1
  361. package/dist/index85.js +38 -34
  362. package/dist/index85.js.map +1 -1
  363. package/dist/index86.cjs +33 -43
  364. package/dist/index86.cjs.map +1 -1
  365. package/dist/index86.js +32 -42
  366. package/dist/index86.js.map +1 -1
  367. package/dist/index87.cjs +6 -24
  368. package/dist/index87.cjs.map +1 -1
  369. package/dist/index87.js +5 -23
  370. package/dist/index87.js.map +1 -1
  371. package/dist/index88.cjs +22 -20
  372. package/dist/index88.cjs.map +1 -1
  373. package/dist/index88.js +21 -19
  374. package/dist/index88.js.map +1 -1
  375. package/dist/index89.cjs +25 -14
  376. package/dist/index89.cjs.map +1 -1
  377. package/dist/index89.js +24 -13
  378. package/dist/index89.js.map +1 -1
  379. package/dist/index90.cjs +42 -51
  380. package/dist/index90.cjs.map +1 -1
  381. package/dist/index90.js +42 -51
  382. package/dist/index90.js.map +1 -1
  383. package/dist/index91.cjs +21 -18
  384. package/dist/index91.cjs.map +1 -1
  385. package/dist/index91.js +22 -19
  386. package/dist/index91.js.map +1 -1
  387. package/dist/index92.cjs +22 -13
  388. package/dist/index92.cjs.map +1 -1
  389. package/dist/index92.js +22 -13
  390. package/dist/index92.js.map +1 -1
  391. package/dist/index93.cjs +2 -50
  392. package/dist/index93.cjs.map +1 -1
  393. package/dist/index93.js +3 -51
  394. package/dist/index93.js.map +1 -1
  395. package/dist/index94.cjs +13 -22
  396. package/dist/index94.cjs.map +1 -1
  397. package/dist/index94.js +14 -23
  398. package/dist/index94.js.map +1 -1
  399. package/dist/index95.cjs +3 -15
  400. package/dist/index95.cjs.map +1 -1
  401. package/dist/index95.js +3 -15
  402. package/dist/index95.js.map +1 -1
  403. package/dist/index96.cjs +19 -13
  404. package/dist/index96.cjs.map +1 -1
  405. package/dist/index96.js +19 -13
  406. package/dist/index96.js.map +1 -1
  407. package/dist/index97.cjs +35 -27
  408. package/dist/index97.cjs.map +1 -1
  409. package/dist/index97.js +34 -26
  410. package/dist/index97.js.map +1 -1
  411. package/dist/index98.cjs +43 -21
  412. package/dist/index98.cjs.map +1 -1
  413. package/dist/index98.js +42 -20
  414. package/dist/index98.js.map +1 -1
  415. package/dist/index99.cjs +24 -21
  416. package/dist/index99.cjs.map +1 -1
  417. package/dist/index99.js +23 -20
  418. package/dist/index99.js.map +1 -1
  419. package/dist/style.css +64 -5
  420. package/dist/types/geo.types.d.ts +14 -0
  421. package/dist/types/geo.types.d.ts.map +1 -1
  422. package/dist/types/index.d.ts +1 -1
  423. package/dist/types/index.d.ts.map +1 -1
  424. package/package.json +1 -1
package/dist/index80.cjs CHANGED
@@ -1,24 +1,10 @@
1
1
  "use strict";
2
- Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
- const root = "krc-root-jkFwM";
4
- const sidebar = "krc-sidebar-g7vxQ";
5
- const sidebarCollapsed = "krc-sidebarCollapsed-Xiswa";
6
- const main = "krc-main-B4HyG";
7
- const content = "krc-content-72sFf";
8
- const title = "krc-title-pe-1P";
9
- const styles = {
10
- root,
11
- sidebar,
12
- sidebarCollapsed,
13
- main,
14
- content,
15
- title
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const DEFAULT_LABELS = {
4
+ loading: "Loading chart...",
5
+ empty: "No data available.",
6
+ retry: "Retry",
7
+ noValue: "No data"
16
8
  };
17
- exports.content = content;
18
- exports.default = styles;
19
- exports.main = main;
20
- exports.root = root;
21
- exports.sidebar = sidebar;
22
- exports.sidebarCollapsed = sidebarCollapsed;
23
- exports.title = title;
9
+ exports.DEFAULT_LABELS = DEFAULT_LABELS;
24
10
  //# sourceMappingURL=index80.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index80.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index80.cjs","sources":["../src/charts/GroupedBarChartCard/defaultLabels.ts"],"sourcesContent":["import type { GroupedBarChartLabels } from './GroupedBarChartCard.types';\n\n/** English defaults, matching the texts of the other chart cards. */\nexport const DEFAULT_LABELS: GroupedBarChartLabels = {\n loading: 'Loading chart...',\n empty: 'No data available.',\n retry: 'Retry',\n noValue: 'No data',\n};\n"],"names":[],"mappings":";;AAGO,MAAM,iBAAwC;AAAA,EACnD,SAAS;AAAA,EACT,OAAO;AAAA,EACP,OAAO;AAAA,EACP,SAAS;AACX;;"}
package/dist/index80.js CHANGED
@@ -1,24 +1,10 @@
1
- const root = "krc-root-jkFwM";
2
- const sidebar = "krc-sidebar-g7vxQ";
3
- const sidebarCollapsed = "krc-sidebarCollapsed-Xiswa";
4
- const main = "krc-main-B4HyG";
5
- const content = "krc-content-72sFf";
6
- const title = "krc-title-pe-1P";
7
- const styles = {
8
- root,
9
- sidebar,
10
- sidebarCollapsed,
11
- main,
12
- content,
13
- title
1
+ const DEFAULT_LABELS = {
2
+ loading: "Loading chart...",
3
+ empty: "No data available.",
4
+ retry: "Retry",
5
+ noValue: "No data"
14
6
  };
15
7
  export {
16
- content,
17
- styles as default,
18
- main,
19
- root,
20
- sidebar,
21
- sidebarCollapsed,
22
- title
8
+ DEFAULT_LABELS
23
9
  };
24
10
  //# sourceMappingURL=index80.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index80.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index80.js","sources":["../src/charts/GroupedBarChartCard/defaultLabels.ts"],"sourcesContent":["import type { GroupedBarChartLabels } from './GroupedBarChartCard.types';\n\n/** English defaults, matching the texts of the other chart cards. */\nexport const DEFAULT_LABELS: GroupedBarChartLabels = {\n loading: 'Loading chart...',\n empty: 'No data available.',\n retry: 'Retry',\n noValue: 'No data',\n};\n"],"names":[],"mappings":"AAGO,MAAM,iBAAwC;AAAA,EACnD,SAAS;AAAA,EACT,OAAO;AAAA,EACP,OAAO;AAAA,EACP,SAAS;AACX;"}
package/dist/index81.cjs CHANGED
@@ -1,25 +1,42 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const merge = (a, b) => a == null ? b : b == null ? a : a + b;
4
- const pivotGroupedBars = (data) => {
5
- const categories = /* @__PURE__ */ new Set();
6
- const cells = /* @__PURE__ */ new Map();
7
- for (const { category, series: series2, value } of data) {
8
- categories.add(category);
9
- let row = cells.get(series2);
10
- if (!row) {
11
- row = /* @__PURE__ */ new Map();
12
- cells.set(series2, row);
13
- }
14
- row.set(category, row.has(category) ? merge(row.get(category) ?? null, value) : value);
15
- }
16
- const categoryList = [...categories];
17
- const series = [...cells.entries()].map(([name, row]) => ({
18
- name,
19
- values: categoryList.map((category) => row.get(category) ?? null)
20
- }));
21
- const hasValues = series.some((s) => s.values.some((v) => v != null));
22
- return { categories: categoryList, series, hasValues };
2
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
+ const root = "krc-root-ij8wB";
4
+ const header = "krc-header-poY0R";
5
+ const headerText = "krc-headerText-ShzOl";
6
+ const title = "krc-title-H3VpM";
7
+ const subtitle = "krc-subtitle-n6tgG";
8
+ const headerActions = "krc-headerActions-WY-hn";
9
+ const toolbar = "krc-toolbar-lMVmb";
10
+ const chartContainer = "krc-chartContainer-nlbUx";
11
+ const loading = "krc-loading-xub77";
12
+ const empty = "krc-empty-vJ4UM";
13
+ const error = "krc-error-d-7n5";
14
+ const retryButton = "krc-retryButton-LT8qy";
15
+ const styles = {
16
+ root,
17
+ header,
18
+ headerText,
19
+ title,
20
+ subtitle,
21
+ headerActions,
22
+ toolbar,
23
+ chartContainer,
24
+ loading,
25
+ empty,
26
+ error,
27
+ retryButton
23
28
  };
24
- exports.pivotGroupedBars = pivotGroupedBars;
29
+ exports.chartContainer = chartContainer;
30
+ exports.default = styles;
31
+ exports.empty = empty;
32
+ exports.error = error;
33
+ exports.header = header;
34
+ exports.headerActions = headerActions;
35
+ exports.headerText = headerText;
36
+ exports.loading = loading;
37
+ exports.retryButton = retryButton;
38
+ exports.root = root;
39
+ exports.subtitle = subtitle;
40
+ exports.title = title;
41
+ exports.toolbar = toolbar;
25
42
  //# sourceMappingURL=index81.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index81.cjs","sources":["../src/charts/GroupedBarChartCard/pivotGroupedBars.ts"],"sourcesContent":["import type { GroupedBarPoint } from '../../types/chart.types';\n\n/** One series with its values aligned to `categories`; `null` is a gap. */\nexport interface PivotedSeries {\n name: string;\n values: (number | null)[];\n}\n\n/** Category × series matrix of a grouped bar chart. */\nexport interface GroupedBarPivot {\n /** First-seen order. */\n categories: string[];\n /** First-seen order. */\n series: PivotedSeries[];\n /** Whether any value is non-null — false means there is nothing to draw. */\n hasValues: boolean;\n}\n\n/** `null` adds nothing: only nulls stay a gap. */\nconst merge = (a: number | null, b: number | null) => (a == null ? b : b == null ? a : a + b);\n\n/**\n * Pivot points into a category × series matrix, keeping first-appearance order,\n * summing repeated pairs and filling missing pairs with `null` — never `0`.\n */\nexport const pivotGroupedBars = (data: GroupedBarPoint[]): GroupedBarPivot => {\n const categories = new Set<string>();\n const cells = new Map<string, Map<string, number | null>>();\n\n for (const { category, series, value } of data) {\n categories.add(category);\n let row = cells.get(series);\n if (!row) {\n row = new Map();\n cells.set(series, row);\n }\n row.set(category, row.has(category) ? merge(row.get(category) ?? null, value) : value);\n }\n\n const categoryList = [...categories];\n const series = [...cells.entries()].map(([name, row]) => ({\n name,\n values: categoryList.map((category) => row.get(category) ?? null),\n }));\n const hasValues = series.some((s) => s.values.some((v) => v != null));\n\n return { categories: categoryList, series, hasValues };\n};\n"],"names":["series"],"mappings":";;AAmBA,MAAM,QAAQ,CAAC,GAAkB,MAAsB,KAAK,OAAO,IAAI,KAAK,OAAO,IAAI,IAAI;AAMpF,MAAM,mBAAmB,CAAC,SAA6C;AAC5E,QAAM,iCAAiB,IAAA;AACvB,QAAM,4BAAY,IAAA;AAElB,aAAW,EAAE,UAAU,QAAAA,SAAQ,MAAA,KAAW,MAAM;AAC9C,eAAW,IAAI,QAAQ;AACvB,QAAI,MAAM,MAAM,IAAIA,OAAM;AAC1B,QAAI,CAAC,KAAK;AACR,gCAAU,IAAA;AACV,YAAM,IAAIA,SAAQ,GAAG;AAAA,IACvB;AACA,QAAI,IAAI,UAAU,IAAI,IAAI,QAAQ,IAAI,MAAM,IAAI,IAAI,QAAQ,KAAK,MAAM,KAAK,IAAI,KAAK;AAAA,EACvF;AAEA,QAAM,eAAe,CAAC,GAAG,UAAU;AACnC,QAAM,SAAS,CAAC,GAAG,MAAM,QAAA,CAAS,EAAE,IAAI,CAAC,CAAC,MAAM,GAAG,OAAO;AAAA,IACxD;AAAA,IACA,QAAQ,aAAa,IAAI,CAAC,aAAa,IAAI,IAAI,QAAQ,KAAK,IAAI;AAAA,EAAA,EAChE;AACF,QAAM,YAAY,OAAO,KAAK,CAAC,MAAM,EAAE,OAAO,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC;AAEpE,SAAO,EAAE,YAAY,cAAc,QAAQ,UAAA;AAC7C;;"}
1
+ {"version":3,"file":"index81.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/dist/index81.js CHANGED
@@ -1,25 +1,42 @@
1
- const merge = (a, b) => a == null ? b : b == null ? a : a + b;
2
- const pivotGroupedBars = (data) => {
3
- const categories = /* @__PURE__ */ new Set();
4
- const cells = /* @__PURE__ */ new Map();
5
- for (const { category, series: series2, value } of data) {
6
- categories.add(category);
7
- let row = cells.get(series2);
8
- if (!row) {
9
- row = /* @__PURE__ */ new Map();
10
- cells.set(series2, row);
11
- }
12
- row.set(category, row.has(category) ? merge(row.get(category) ?? null, value) : value);
13
- }
14
- const categoryList = [...categories];
15
- const series = [...cells.entries()].map(([name, row]) => ({
16
- name,
17
- values: categoryList.map((category) => row.get(category) ?? null)
18
- }));
19
- const hasValues = series.some((s) => s.values.some((v) => v != null));
20
- return { categories: categoryList, series, hasValues };
1
+ const root = "krc-root-ij8wB";
2
+ const header = "krc-header-poY0R";
3
+ const headerText = "krc-headerText-ShzOl";
4
+ const title = "krc-title-H3VpM";
5
+ const subtitle = "krc-subtitle-n6tgG";
6
+ const headerActions = "krc-headerActions-WY-hn";
7
+ const toolbar = "krc-toolbar-lMVmb";
8
+ const chartContainer = "krc-chartContainer-nlbUx";
9
+ const loading = "krc-loading-xub77";
10
+ const empty = "krc-empty-vJ4UM";
11
+ const error = "krc-error-d-7n5";
12
+ const retryButton = "krc-retryButton-LT8qy";
13
+ const styles = {
14
+ root,
15
+ header,
16
+ headerText,
17
+ title,
18
+ subtitle,
19
+ headerActions,
20
+ toolbar,
21
+ chartContainer,
22
+ loading,
23
+ empty,
24
+ error,
25
+ retryButton
21
26
  };
22
27
  export {
23
- pivotGroupedBars
28
+ chartContainer,
29
+ styles as default,
30
+ empty,
31
+ error,
32
+ header,
33
+ headerActions,
34
+ headerText,
35
+ loading,
36
+ retryButton,
37
+ root,
38
+ subtitle,
39
+ title,
40
+ toolbar
24
41
  };
25
42
  //# sourceMappingURL=index81.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index81.js","sources":["../src/charts/GroupedBarChartCard/pivotGroupedBars.ts"],"sourcesContent":["import type { GroupedBarPoint } from '../../types/chart.types';\n\n/** One series with its values aligned to `categories`; `null` is a gap. */\nexport interface PivotedSeries {\n name: string;\n values: (number | null)[];\n}\n\n/** Category × series matrix of a grouped bar chart. */\nexport interface GroupedBarPivot {\n /** First-seen order. */\n categories: string[];\n /** First-seen order. */\n series: PivotedSeries[];\n /** Whether any value is non-null — false means there is nothing to draw. */\n hasValues: boolean;\n}\n\n/** `null` adds nothing: only nulls stay a gap. */\nconst merge = (a: number | null, b: number | null) => (a == null ? b : b == null ? a : a + b);\n\n/**\n * Pivot points into a category × series matrix, keeping first-appearance order,\n * summing repeated pairs and filling missing pairs with `null` — never `0`.\n */\nexport const pivotGroupedBars = (data: GroupedBarPoint[]): GroupedBarPivot => {\n const categories = new Set<string>();\n const cells = new Map<string, Map<string, number | null>>();\n\n for (const { category, series, value } of data) {\n categories.add(category);\n let row = cells.get(series);\n if (!row) {\n row = new Map();\n cells.set(series, row);\n }\n row.set(category, row.has(category) ? merge(row.get(category) ?? null, value) : value);\n }\n\n const categoryList = [...categories];\n const series = [...cells.entries()].map(([name, row]) => ({\n name,\n values: categoryList.map((category) => row.get(category) ?? null),\n }));\n const hasValues = series.some((s) => s.values.some((v) => v != null));\n\n return { categories: categoryList, series, hasValues };\n};\n"],"names":["series"],"mappings":"AAmBA,MAAM,QAAQ,CAAC,GAAkB,MAAsB,KAAK,OAAO,IAAI,KAAK,OAAO,IAAI,IAAI;AAMpF,MAAM,mBAAmB,CAAC,SAA6C;AAC5E,QAAM,iCAAiB,IAAA;AACvB,QAAM,4BAAY,IAAA;AAElB,aAAW,EAAE,UAAU,QAAAA,SAAQ,MAAA,KAAW,MAAM;AAC9C,eAAW,IAAI,QAAQ;AACvB,QAAI,MAAM,MAAM,IAAIA,OAAM;AAC1B,QAAI,CAAC,KAAK;AACR,gCAAU,IAAA;AACV,YAAM,IAAIA,SAAQ,GAAG;AAAA,IACvB;AACA,QAAI,IAAI,UAAU,IAAI,IAAI,QAAQ,IAAI,MAAM,IAAI,IAAI,QAAQ,KAAK,MAAM,KAAK,IAAI,KAAK;AAAA,EACvF;AAEA,QAAM,eAAe,CAAC,GAAG,UAAU;AACnC,QAAM,SAAS,CAAC,GAAG,MAAM,QAAA,CAAS,EAAE,IAAI,CAAC,CAAC,MAAM,GAAG,OAAO;AAAA,IACxD;AAAA,IACA,QAAQ,aAAa,IAAI,CAAC,aAAa,IAAI,IAAI,QAAQ,KAAK,IAAI;AAAA,EAAA,EAChE;AACF,QAAM,YAAY,OAAO,KAAK,CAAC,MAAM,EAAE,OAAO,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC;AAEpE,SAAO,EAAE,YAAY,cAAc,QAAQ,UAAA;AAC7C;"}
1
+ {"version":3,"file":"index81.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/dist/index82.cjs CHANGED
@@ -1,72 +1,136 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const constants = require("./index65.cjs");
4
- const { GRID_MARGIN, AXIS_NAME_GAP } = constants.GROUPED_BAR;
5
- const escapeHtml = (value) => value.replace(/[&<>"]/g, (char) => `&#${char.charCodeAt(0)};`);
6
- const colorFor = (name, index, seriesColors) => (seriesColors == null ? void 0 : seriesColors[name]) ?? constants.CHART_COLORS[index % constants.CHART_COLORS.length];
7
- const markerFor = (color) => {
8
- const { TOOLTIP_MARKER_SIZE: size, TOOLTIP_MARKER_GAP: gap } = constants.GROUPED_BAR;
9
- return `<span style="display:inline-block;margin-right:${gap}px;border-radius:50%;width:${size}px;height:${size}px;background-color:${escapeHtml(color)};"></span>`;
10
- };
11
- const buildTooltipFormatter = (pivot, colors, noValueText) => (params) => {
12
- const first = Array.isArray(params) ? params[0] : params;
13
- const index = first == null ? void 0 : first.dataIndex;
14
- if (index == null || index >= pivot.categories.length) return "";
15
- const lines = [escapeHtml(pivot.categories[index])];
16
- pivot.series.forEach((s, i) => {
17
- const value = s.values[index];
18
- const text = value == null ? escapeHtml(noValueText) : String(value);
19
- lines.push(`${markerFor(colors[i])}${escapeHtml(s.name)}: ${text}`);
20
- });
21
- return lines.join("<br/>");
22
- };
23
- const buildGrid = (config) => {
24
- const named = Boolean(config.valueLabel);
25
- return {
26
- left: GRID_MARGIN.BASE + (named && !config.invertAxis ? GRID_MARGIN.VALUE_NAME_Y : 0),
27
- right: GRID_MARGIN.RIGHT,
28
- top: GRID_MARGIN.TOP,
29
- // Room for a horizontal value-axis name and the legend, each only when drawn.
30
- bottom: GRID_MARGIN.BASE + (named && config.invertAxis ? GRID_MARGIN.VALUE_NAME_X : 0) + (config.hideLegend ? 0 : GRID_MARGIN.LEGEND),
31
- containLabel: true
32
- };
33
- };
34
- const buildGroupedBarOption = (pivot, config) => {
35
- const colors = pivot.series.map((s, i) => colorFor(s.name, i, config.seriesColors));
36
- const categoryAxis = {
37
- type: "category",
38
- data: pivot.categories,
39
- // Horizontal bars read top-down, so the first category goes on top.
40
- inverse: config.invertAxis
41
- };
42
- const valueAxis = {
43
- type: "value",
44
- name: config.valueLabel,
45
- nameLocation: "middle",
46
- nameGap: config.invertAxis ? AXIS_NAME_GAP.X : AXIS_NAME_GAP.Y,
47
- // Without this a vertical axis name is drawn horizontally and eats the plot's width.
48
- nameRotate: config.invertAxis ? 0 : 90,
49
- minInterval: config.integerValues ? 1 : void 0
50
- };
3
+ const constants = require("./index64.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 } }] : [];
51
66
  return {
52
- tooltip: {
53
- trigger: "axis",
54
- axisPointer: { type: "shadow" },
55
- formatter: buildTooltipFormatter(pivot, colors, config.noValueText)
56
- },
57
- legend: { show: !config.hideLegend, bottom: 0, type: "scroll" },
58
- grid: buildGrid(config),
59
- xAxis: config.invertAxis ? valueAxis : categoryAxis,
60
- yAxis: config.invertAxis ? categoryAxis : valueAxis,
61
- series: pivot.series.map((s, i) => ({
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) => ({
62
74
  name: s.name,
63
75
  type: "bar",
76
+ stack: "total",
77
+ emphasis: { focus: "series" },
64
78
  data: s.values,
65
- barMinHeight: constants.GROUPED_BAR.MIN_BAR_HEIGHT,
66
- itemStyle: { color: colors[i] },
67
- emphasis: { focus: "series" }
79
+ itemStyle: { color: constants.CHART_COLORS[i % constants.CHART_COLORS.length] }
68
80
  }))
69
81
  };
70
- };
71
- exports.buildGroupedBarOption = buildGroupedBarOption;
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;
72
136
  //# sourceMappingURL=index82.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index82.cjs","sources":["../src/charts/GroupedBarChartCard/buildGroupedBarOption.ts"],"sourcesContent":["import type { GroupedBarPivot } from './pivotGroupedBars';\nimport { CHART_COLORS, GROUPED_BAR } from '../../constants';\n\nexport interface GroupedBarOptionConfig {\n seriesColors?: Readonly<Record<string, string>>;\n invertAxis: boolean;\n hideLegend: boolean;\n integerValues: boolean;\n valueLabel?: string;\n /** Tooltip text for a gap. */\n noValueText: string;\n}\n\nconst { GRID_MARGIN, AXIS_NAME_GAP } = GROUPED_BAR;\n\n/** Category and series names come from consumer data and land in the tooltip's HTML. */\nconst escapeHtml = (value: string) =>\n value.replace(/[&<>\"]/g, (char) => `&#${char.charCodeAt(0)};`);\n\n/** Pinned colour first, else the palette by first-seen position. */\nconst colorFor = (name: string, index: number, seriesColors?: Readonly<Record<string, string>>) =>\n seriesColors?.[name] ?? CHART_COLORS[index % CHART_COLORS.length];\n\nconst markerFor = (color: string) => {\n const { TOOLTIP_MARKER_SIZE: size, TOOLTIP_MARKER_GAP: gap } = GROUPED_BAR;\n return `<span style=\"display:inline-block;margin-right:${gap}px;border-radius:50%;width:${size}px;height:${size}px;background-color:${escapeHtml(color)};\"></span>`;\n};\n\n/**\n * The tooltip is built from the pivot rather than from echarts' params, so every\n * series is listed in series order and a gap reads as `noValueText`, never `-`.\n */\nconst buildTooltipFormatter =\n (pivot: GroupedBarPivot, colors: string[], noValueText: string) => (params: unknown) => {\n const first = (Array.isArray(params) ? params[0] : params) as\n | { dataIndex?: number }\n | undefined;\n const index = first?.dataIndex;\n if (index == null || index >= pivot.categories.length) return '';\n\n const lines = [escapeHtml(pivot.categories[index])];\n pivot.series.forEach((s, i) => {\n const value = s.values[index];\n const text = value == null ? escapeHtml(noValueText) : String(value);\n lines.push(`${markerFor(colors[i])}${escapeHtml(s.name)}: ${text}`);\n });\n\n return lines.join('<br/>');\n };\n\nconst buildGrid = (config: GroupedBarOptionConfig) => {\n const named = Boolean(config.valueLabel);\n return {\n left: GRID_MARGIN.BASE + (named && !config.invertAxis ? GRID_MARGIN.VALUE_NAME_Y : 0),\n right: GRID_MARGIN.RIGHT,\n top: GRID_MARGIN.TOP,\n // Room for a horizontal value-axis name and the legend, each only when drawn.\n bottom:\n GRID_MARGIN.BASE +\n (named && config.invertAxis ? GRID_MARGIN.VALUE_NAME_X : 0) +\n (config.hideLegend ? 0 : GRID_MARGIN.LEGEND),\n containLabel: true,\n };\n};\n\nexport const buildGroupedBarOption = (pivot: GroupedBarPivot, config: GroupedBarOptionConfig) => {\n const colors = pivot.series.map((s, i) => colorFor(s.name, i, config.seriesColors));\n\n const categoryAxis = {\n type: 'category' as const,\n data: pivot.categories,\n // Horizontal bars read top-down, so the first category goes on top.\n inverse: config.invertAxis,\n };\n const valueAxis = {\n type: 'value' as const,\n name: config.valueLabel,\n nameLocation: 'middle' as const,\n nameGap: config.invertAxis ? AXIS_NAME_GAP.X : AXIS_NAME_GAP.Y,\n // Without this a vertical axis name is drawn horizontally and eats the plot's width.\n nameRotate: config.invertAxis ? 0 : 90,\n minInterval: config.integerValues ? 1 : undefined,\n };\n\n return {\n tooltip: {\n trigger: 'axis' as const,\n axisPointer: { type: 'shadow' as const },\n formatter: buildTooltipFormatter(pivot, colors, config.noValueText),\n },\n legend: { show: !config.hideLegend, bottom: 0, type: 'scroll' as const },\n grid: buildGrid(config),\n xAxis: config.invertAxis ? valueAxis : categoryAxis,\n yAxis: config.invertAxis ? categoryAxis : valueAxis,\n series: pivot.series.map((s, i) => ({\n name: s.name,\n type: 'bar' as const,\n data: s.values,\n barMinHeight: GROUPED_BAR.MIN_BAR_HEIGHT,\n itemStyle: { color: colors[i] },\n emphasis: { focus: 'series' as const },\n })),\n };\n};\n"],"names":["GROUPED_BAR","CHART_COLORS"],"mappings":";;;AAaA,MAAM,EAAE,aAAa,cAAA,IAAkBA,UAAAA;AAGvC,MAAM,aAAa,CAAC,UAClB,MAAM,QAAQ,WAAW,CAAC,SAAS,KAAK,KAAK,WAAW,CAAC,CAAC,GAAG;AAG/D,MAAM,WAAW,CAAC,MAAc,OAAe,kBAC7C,6CAAe,UAASC,UAAAA,aAAa,QAAQA,UAAAA,aAAa,MAAM;AAElE,MAAM,YAAY,CAAC,UAAkB;AACnC,QAAM,EAAE,qBAAqB,MAAM,oBAAoB,QAAQD,UAAAA;AAC/D,SAAO,kDAAkD,GAAG,8BAA8B,IAAI,aAAa,IAAI,uBAAuB,WAAW,KAAK,CAAC;AACzJ;AAMA,MAAM,wBACJ,CAAC,OAAwB,QAAkB,gBAAwB,CAAC,WAAoB;AACtF,QAAM,QAAS,MAAM,QAAQ,MAAM,IAAI,OAAO,CAAC,IAAI;AAGnD,QAAM,QAAQ,+BAAO;AACrB,MAAI,SAAS,QAAQ,SAAS,MAAM,WAAW,OAAQ,QAAO;AAE9D,QAAM,QAAQ,CAAC,WAAW,MAAM,WAAW,KAAK,CAAC,CAAC;AAClD,QAAM,OAAO,QAAQ,CAAC,GAAG,MAAM;AAC7B,UAAM,QAAQ,EAAE,OAAO,KAAK;AAC5B,UAAM,OAAO,SAAS,OAAO,WAAW,WAAW,IAAI,OAAO,KAAK;AACnE,UAAM,KAAK,GAAG,UAAU,OAAO,CAAC,CAAC,CAAC,GAAG,WAAW,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE;AAAA,EACpE,CAAC;AAED,SAAO,MAAM,KAAK,OAAO;AAC3B;AAEF,MAAM,YAAY,CAAC,WAAmC;AACpD,QAAM,QAAQ,QAAQ,OAAO,UAAU;AACvC,SAAO;AAAA,IACL,MAAM,YAAY,QAAQ,SAAS,CAAC,OAAO,aAAa,YAAY,eAAe;AAAA,IACnF,OAAO,YAAY;AAAA,IACnB,KAAK,YAAY;AAAA;AAAA,IAEjB,QACE,YAAY,QACX,SAAS,OAAO,aAAa,YAAY,eAAe,MACxD,OAAO,aAAa,IAAI,YAAY;AAAA,IACvC,cAAc;AAAA,EAAA;AAElB;AAEO,MAAM,wBAAwB,CAAC,OAAwB,WAAmC;AAC/F,QAAM,SAAS,MAAM,OAAO,IAAI,CAAC,GAAG,MAAM,SAAS,EAAE,MAAM,GAAG,OAAO,YAAY,CAAC;AAElF,QAAM,eAAe;AAAA,IACnB,MAAM;AAAA,IACN,MAAM,MAAM;AAAA;AAAA,IAEZ,SAAS,OAAO;AAAA,EAAA;AAElB,QAAM,YAAY;AAAA,IAChB,MAAM;AAAA,IACN,MAAM,OAAO;AAAA,IACb,cAAc;AAAA,IACd,SAAS,OAAO,aAAa,cAAc,IAAI,cAAc;AAAA;AAAA,IAE7D,YAAY,OAAO,aAAa,IAAI;AAAA,IACpC,aAAa,OAAO,gBAAgB,IAAI;AAAA,EAAA;AAG1C,SAAO;AAAA,IACL,SAAS;AAAA,MACP,SAAS;AAAA,MACT,aAAa,EAAE,MAAM,SAAA;AAAA,MACrB,WAAW,sBAAsB,OAAO,QAAQ,OAAO,WAAW;AAAA,IAAA;AAAA,IAEpE,QAAQ,EAAE,MAAM,CAAC,OAAO,YAAY,QAAQ,GAAG,MAAM,SAAA;AAAA,IACrD,MAAM,UAAU,MAAM;AAAA,IACtB,OAAO,OAAO,aAAa,YAAY;AAAA,IACvC,OAAO,OAAO,aAAa,eAAe;AAAA,IAC1C,QAAQ,MAAM,OAAO,IAAI,CAAC,GAAG,OAAO;AAAA,MAClC,MAAM,EAAE;AAAA,MACR,MAAM;AAAA,MACN,MAAM,EAAE;AAAA,MACR,cAAcA,UAAAA,YAAY;AAAA,MAC1B,WAAW,EAAE,OAAO,OAAO,CAAC,EAAA;AAAA,MAC5B,UAAU,EAAE,OAAO,SAAA;AAAA,IAAkB,EACrC;AAAA,EAAA;AAEN;;"}
1
+ {"version":3,"file":"index82.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;;;;;"}