@ktnpm_devops/react-component 0.12.1 → 0.13.1

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 (459) hide show
  1. package/README.md +39 -0
  2. package/dist/constants.d.ts +26 -0
  3. package/dist/constants.d.ts.map +1 -1
  4. package/dist/geo/GeoMapCard/GeoMapCard.d.ts +7 -0
  5. package/dist/geo/GeoMapCard/GeoMapCard.d.ts.map +1 -0
  6. package/dist/geo/GeoMapCard/GeoMapCard.types.d.ts +91 -0
  7. package/dist/geo/GeoMapCard/GeoMapCard.types.d.ts.map +1 -0
  8. package/dist/geo/GeoMapCard/MapLegend.d.ts +12 -0
  9. package/dist/geo/GeoMapCard/MapLegend.d.ts.map +1 -0
  10. package/dist/geo/GeoMapCard/MapViewport.d.ts +17 -0
  11. package/dist/geo/GeoMapCard/MapViewport.d.ts.map +1 -0
  12. package/dist/geo/GeoMapCard/PointListing.d.ts +14 -0
  13. package/dist/geo/GeoMapCard/PointListing.d.ts.map +1 -0
  14. package/dist/geo/GeoMapCard/buildMarkerStyle.d.ts +47 -0
  15. package/dist/geo/GeoMapCard/buildMarkerStyle.d.ts.map +1 -0
  16. package/dist/geo/GeoMapCard/buildMarkerStyle.test.d.ts +2 -0
  17. package/dist/geo/GeoMapCard/buildMarkerStyle.test.d.ts.map +1 -0
  18. package/dist/geo/GeoMapCard/index.d.ts +3 -0
  19. package/dist/geo/GeoMapCard/index.d.ts.map +1 -0
  20. package/dist/geo/GeoMapCard/normalizePoints.d.ts +26 -0
  21. package/dist/geo/GeoMapCard/normalizePoints.d.ts.map +1 -0
  22. package/dist/geo/GeoMapCard/normalizePoints.test.d.ts +2 -0
  23. package/dist/geo/GeoMapCard/normalizePoints.test.d.ts.map +1 -0
  24. package/dist/geo/GeoMapCard/warnMissingLeafletStylesheet.d.ts +13 -0
  25. package/dist/geo/GeoMapCard/warnMissingLeafletStylesheet.d.ts.map +1 -0
  26. package/dist/geo/GeoMapCard/warnMissingLeafletStylesheet.test.d.ts +2 -0
  27. package/dist/geo/GeoMapCard/warnMissingLeafletStylesheet.test.d.ts.map +1 -0
  28. package/dist/geo/index.d.ts +3 -0
  29. package/dist/geo/index.d.ts.map +1 -0
  30. package/dist/hooks/useThemeMode.d.ts +8 -0
  31. package/dist/hooks/useThemeMode.d.ts.map +1 -0
  32. package/dist/index.cjs +52 -48
  33. package/dist/index.cjs.map +1 -1
  34. package/dist/index.d.ts +5 -0
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +52 -48
  37. package/dist/index.js.map +1 -1
  38. package/dist/index10.cjs +45 -14
  39. package/dist/index10.cjs.map +1 -1
  40. package/dist/index10.js +46 -15
  41. package/dist/index10.js.map +1 -1
  42. package/dist/index100.cjs +35 -2
  43. package/dist/index100.cjs.map +1 -1
  44. package/dist/index100.js +36 -3
  45. package/dist/index100.js.map +1 -1
  46. package/dist/index101.cjs +52 -10
  47. package/dist/index101.cjs.map +1 -1
  48. package/dist/index101.js +52 -10
  49. package/dist/index101.js.map +1 -1
  50. package/dist/index102.cjs +134 -22
  51. package/dist/index102.cjs.map +1 -1
  52. package/dist/index102.js +133 -21
  53. package/dist/index102.js.map +1 -1
  54. package/dist/index103.cjs +42 -36
  55. package/dist/index103.cjs.map +1 -1
  56. package/dist/index103.js +42 -36
  57. package/dist/index103.js.map +1 -1
  58. package/dist/index104.cjs +35 -21
  59. package/dist/index104.cjs.map +1 -1
  60. package/dist/index104.js +34 -20
  61. package/dist/index104.js.map +1 -1
  62. package/dist/index105.cjs +43 -24
  63. package/dist/index105.cjs.map +1 -1
  64. package/dist/index105.js +42 -23
  65. package/dist/index105.js.map +1 -1
  66. package/dist/index106.cjs +27 -0
  67. package/dist/index106.cjs.map +1 -0
  68. package/dist/index106.js +27 -0
  69. package/dist/index106.js.map +1 -0
  70. package/dist/index107.cjs +22 -0
  71. package/dist/index107.cjs.map +1 -0
  72. package/dist/index107.js +22 -0
  73. package/dist/index107.js.map +1 -0
  74. package/dist/index108.cjs +16 -0
  75. package/dist/index108.cjs.map +1 -0
  76. package/dist/index108.js +16 -0
  77. package/dist/index108.js.map +1 -0
  78. package/dist/index109.cjs +63 -0
  79. package/dist/index109.cjs.map +1 -0
  80. package/dist/index109.js +63 -0
  81. package/dist/index109.js.map +1 -0
  82. package/dist/index11.cjs +14 -15
  83. package/dist/index11.cjs.map +1 -1
  84. package/dist/index11.js +15 -16
  85. package/dist/index11.js.map +1 -1
  86. package/dist/index110.cjs +36 -0
  87. package/dist/index110.cjs.map +1 -0
  88. package/dist/index110.js +36 -0
  89. package/dist/index110.js.map +1 -0
  90. package/dist/index111.cjs +18 -0
  91. package/dist/index111.cjs.map +1 -0
  92. package/dist/index111.js +18 -0
  93. package/dist/index111.js.map +1 -0
  94. package/dist/index112.cjs +27 -0
  95. package/dist/index112.cjs.map +1 -0
  96. package/dist/index112.js +27 -0
  97. package/dist/index112.js.map +1 -0
  98. package/dist/index113.cjs +21 -0
  99. package/dist/index113.cjs.map +1 -0
  100. package/dist/index113.js +21 -0
  101. package/dist/index113.js.map +1 -0
  102. package/dist/index12.cjs +15 -4
  103. package/dist/index12.cjs.map +1 -1
  104. package/dist/index12.js +15 -4
  105. package/dist/index12.js.map +1 -1
  106. package/dist/index13.cjs +4 -16
  107. package/dist/index13.cjs.map +1 -1
  108. package/dist/index13.js +4 -16
  109. package/dist/index13.js.map +1 -1
  110. package/dist/index14.cjs +16 -10
  111. package/dist/index14.cjs.map +1 -1
  112. package/dist/index14.js +16 -10
  113. package/dist/index14.js.map +1 -1
  114. package/dist/index15.cjs +10 -100
  115. package/dist/index15.cjs.map +1 -1
  116. package/dist/index15.js +11 -101
  117. package/dist/index15.js.map +1 -1
  118. package/dist/index16.cjs +100 -20
  119. package/dist/index16.cjs.map +1 -1
  120. package/dist/index16.js +101 -21
  121. package/dist/index16.js.map +1 -1
  122. package/dist/index17.cjs +20 -54
  123. package/dist/index17.cjs.map +1 -1
  124. package/dist/index17.js +20 -54
  125. package/dist/index17.js.map +1 -1
  126. package/dist/index18.cjs +52 -16
  127. package/dist/index18.cjs.map +1 -1
  128. package/dist/index18.js +54 -18
  129. package/dist/index18.js.map +1 -1
  130. package/dist/index19.cjs +16 -24
  131. package/dist/index19.cjs.map +1 -1
  132. package/dist/index19.js +17 -25
  133. package/dist/index19.js.map +1 -1
  134. package/dist/index20.cjs +22 -39
  135. package/dist/index20.cjs.map +1 -1
  136. package/dist/index20.js +23 -40
  137. package/dist/index20.js.map +1 -1
  138. package/dist/index21.cjs +38 -85
  139. package/dist/index21.cjs.map +1 -1
  140. package/dist/index21.js +40 -87
  141. package/dist/index21.js.map +1 -1
  142. package/dist/index22.cjs +84 -152
  143. package/dist/index22.cjs.map +1 -1
  144. package/dist/index22.js +87 -155
  145. package/dist/index22.js.map +1 -1
  146. package/dist/index23.cjs +149 -127
  147. package/dist/index23.cjs.map +1 -1
  148. package/dist/index23.js +150 -128
  149. package/dist/index23.js.map +1 -1
  150. package/dist/index24.cjs +121 -106
  151. package/dist/index24.cjs.map +1 -1
  152. package/dist/index24.js +122 -107
  153. package/dist/index24.js.map +1 -1
  154. package/dist/index25.cjs +121 -17
  155. package/dist/index25.cjs.map +1 -1
  156. package/dist/index25.js +121 -17
  157. package/dist/index25.js.map +1 -1
  158. package/dist/index26.cjs +16 -163
  159. package/dist/index26.cjs.map +1 -1
  160. package/dist/index26.js +16 -163
  161. package/dist/index26.js.map +1 -1
  162. package/dist/index27.cjs +163 -21
  163. package/dist/index27.cjs.map +1 -1
  164. package/dist/index27.js +164 -22
  165. package/dist/index27.js.map +1 -1
  166. package/dist/index28.cjs +20 -129
  167. package/dist/index28.cjs.map +1 -1
  168. package/dist/index28.js +21 -130
  169. package/dist/index28.js.map +1 -1
  170. package/dist/index29.cjs +129 -75
  171. package/dist/index29.cjs.map +1 -1
  172. package/dist/index29.js +131 -77
  173. package/dist/index29.js.map +1 -1
  174. package/dist/index30.cjs +152 -7
  175. package/dist/index30.cjs.map +1 -1
  176. package/dist/index30.js +154 -9
  177. package/dist/index30.js.map +1 -1
  178. package/dist/index31.cjs +74 -128
  179. package/dist/index31.cjs.map +1 -1
  180. package/dist/index31.js +75 -129
  181. package/dist/index31.js.map +1 -1
  182. package/dist/index32.cjs +6 -54
  183. package/dist/index32.cjs.map +1 -1
  184. package/dist/index32.js +8 -56
  185. package/dist/index32.js.map +1 -1
  186. package/dist/index33.cjs +128 -35
  187. package/dist/index33.cjs.map +1 -1
  188. package/dist/index33.js +129 -36
  189. package/dist/index33.js.map +1 -1
  190. package/dist/index34.cjs +50 -220
  191. package/dist/index34.cjs.map +1 -1
  192. package/dist/index34.js +53 -223
  193. package/dist/index34.js.map +1 -1
  194. package/dist/index35.cjs +38 -34
  195. package/dist/index35.cjs.map +1 -1
  196. package/dist/index35.js +39 -35
  197. package/dist/index35.js.map +1 -1
  198. package/dist/index36.cjs +221 -105
  199. package/dist/index36.cjs.map +1 -1
  200. package/dist/index36.js +224 -108
  201. package/dist/index36.js.map +1 -1
  202. package/dist/index37.cjs +30 -64
  203. package/dist/index37.cjs.map +1 -1
  204. package/dist/index37.js +31 -65
  205. package/dist/index37.js.map +1 -1
  206. package/dist/index38.cjs +105 -73
  207. package/dist/index38.cjs.map +1 -1
  208. package/dist/index38.js +108 -76
  209. package/dist/index38.js.map +1 -1
  210. package/dist/index39.cjs +63 -54
  211. package/dist/index39.cjs.map +1 -1
  212. package/dist/index39.js +64 -55
  213. package/dist/index39.js.map +1 -1
  214. package/dist/index40.cjs +68 -143
  215. package/dist/index40.cjs.map +1 -1
  216. package/dist/index40.js +70 -145
  217. package/dist/index40.js.map +1 -1
  218. package/dist/index41.cjs +57 -96
  219. package/dist/index41.cjs.map +1 -1
  220. package/dist/index41.js +59 -98
  221. package/dist/index41.js.map +1 -1
  222. package/dist/index42.cjs +147 -66
  223. package/dist/index42.cjs.map +1 -1
  224. package/dist/index42.js +149 -68
  225. package/dist/index42.js.map +1 -1
  226. package/dist/index43.cjs +97 -7
  227. package/dist/index43.cjs.map +1 -1
  228. package/dist/index43.js +99 -9
  229. package/dist/index43.js.map +1 -1
  230. package/dist/index44.cjs +72 -17
  231. package/dist/index44.cjs.map +1 -1
  232. package/dist/index44.js +73 -18
  233. package/dist/index44.js.map +1 -1
  234. package/dist/index45.cjs +7 -76
  235. package/dist/index45.cjs.map +1 -1
  236. package/dist/index45.js +9 -78
  237. package/dist/index45.js.map +1 -1
  238. package/dist/index46.cjs +17 -143
  239. package/dist/index46.cjs.map +1 -1
  240. package/dist/index46.js +17 -143
  241. package/dist/index46.js.map +1 -1
  242. package/dist/index47.cjs +72 -59
  243. package/dist/index47.cjs.map +1 -1
  244. package/dist/index47.js +74 -61
  245. package/dist/index47.js.map +1 -1
  246. package/dist/index48.cjs +135 -97
  247. package/dist/index48.cjs.map +1 -1
  248. package/dist/index48.js +136 -98
  249. package/dist/index48.js.map +1 -1
  250. package/dist/index49.cjs +49 -32
  251. package/dist/index49.cjs.map +1 -1
  252. package/dist/index49.js +49 -32
  253. package/dist/index49.js.map +1 -1
  254. package/dist/index50.cjs +105 -6
  255. package/dist/index50.cjs.map +1 -1
  256. package/dist/index50.js +106 -7
  257. package/dist/index50.js.map +1 -1
  258. package/dist/index51.cjs +44 -144
  259. package/dist/index51.cjs.map +1 -1
  260. package/dist/index51.js +45 -145
  261. package/dist/index51.js.map +1 -1
  262. package/dist/index52.cjs +6 -8
  263. package/dist/index52.cjs.map +1 -1
  264. package/dist/index52.js +6 -8
  265. package/dist/index52.js.map +1 -1
  266. package/dist/index53.cjs +145 -15
  267. package/dist/index53.cjs.map +1 -1
  268. package/dist/index53.js +147 -17
  269. package/dist/index53.js.map +1 -1
  270. package/dist/index54.cjs +7 -65
  271. package/dist/index54.cjs.map +1 -1
  272. package/dist/index54.js +9 -67
  273. package/dist/index54.js.map +1 -1
  274. package/dist/index55.cjs +19 -16
  275. package/dist/index55.cjs.map +1 -1
  276. package/dist/index55.js +18 -15
  277. package/dist/index55.js.map +1 -1
  278. package/dist/index56.cjs +67 -24
  279. package/dist/index56.cjs.map +1 -1
  280. package/dist/index56.js +66 -23
  281. package/dist/index56.js.map +1 -1
  282. package/dist/index57.cjs +15 -69
  283. package/dist/index57.cjs.map +1 -1
  284. package/dist/index57.js +15 -69
  285. package/dist/index57.js.map +1 -1
  286. package/dist/index59.cjs +26 -0
  287. package/dist/index59.cjs.map +1 -1
  288. package/dist/index59.js +26 -0
  289. package/dist/index59.js.map +1 -1
  290. package/dist/index60.cjs +13 -16
  291. package/dist/index60.cjs.map +1 -1
  292. package/dist/index60.js +13 -16
  293. package/dist/index60.js.map +1 -1
  294. package/dist/index61.cjs +10 -22
  295. package/dist/index61.cjs.map +1 -1
  296. package/dist/index61.js +11 -23
  297. package/dist/index61.js.map +1 -1
  298. package/dist/index62.cjs +13 -13
  299. package/dist/index62.js +13 -13
  300. package/dist/index63.cjs +20 -14
  301. package/dist/index63.cjs.map +1 -1
  302. package/dist/index63.js +20 -14
  303. package/dist/index63.js.map +1 -1
  304. package/dist/index64.cjs +34 -13
  305. package/dist/index64.cjs.map +1 -1
  306. package/dist/index64.js +34 -13
  307. package/dist/index64.js.map +1 -1
  308. package/dist/index65.cjs +1 -1
  309. package/dist/index65.js +1 -1
  310. package/dist/index66.cjs +2 -20
  311. package/dist/index66.cjs.map +1 -1
  312. package/dist/index66.js +3 -21
  313. package/dist/index66.js.map +1 -1
  314. package/dist/index67.cjs +5 -23
  315. package/dist/index67.cjs.map +1 -1
  316. package/dist/index67.js +6 -24
  317. package/dist/index67.js.map +1 -1
  318. package/dist/index68.cjs +19 -19
  319. package/dist/index68.js +20 -20
  320. package/dist/index69.cjs +20 -5
  321. package/dist/index69.cjs.map +1 -1
  322. package/dist/index69.js +21 -6
  323. package/dist/index69.js.map +1 -1
  324. package/dist/index7.cjs +32 -64
  325. package/dist/index7.cjs.map +1 -1
  326. package/dist/index7.js +32 -64
  327. package/dist/index7.js.map +1 -1
  328. package/dist/index70.cjs +15 -15
  329. package/dist/index70.js +15 -15
  330. package/dist/index71.cjs +13 -28
  331. package/dist/index71.cjs.map +1 -1
  332. package/dist/index71.js +14 -29
  333. package/dist/index71.js.map +1 -1
  334. package/dist/index72.cjs +2 -20
  335. package/dist/index72.cjs.map +1 -1
  336. package/dist/index72.js +2 -20
  337. package/dist/index72.js.map +1 -1
  338. package/dist/index73.cjs +30 -3
  339. package/dist/index73.cjs.map +1 -1
  340. package/dist/index73.js +30 -3
  341. package/dist/index73.js.map +1 -1
  342. package/dist/index74.cjs +36 -3
  343. package/dist/index74.cjs.map +1 -1
  344. package/dist/index74.js +36 -3
  345. package/dist/index74.js.map +1 -1
  346. package/dist/index75.cjs +34 -13
  347. package/dist/index75.cjs.map +1 -1
  348. package/dist/index75.js +35 -14
  349. package/dist/index75.js.map +1 -1
  350. package/dist/index76.cjs +22 -13
  351. package/dist/index76.cjs.map +1 -1
  352. package/dist/index76.js +23 -14
  353. package/dist/index76.js.map +1 -1
  354. package/dist/index77.cjs +3 -30
  355. package/dist/index77.cjs.map +1 -1
  356. package/dist/index77.js +3 -30
  357. package/dist/index77.js.map +1 -1
  358. package/dist/index78.cjs +16 -10
  359. package/dist/index78.cjs.map +1 -1
  360. package/dist/index78.js +16 -10
  361. package/dist/index78.js.map +1 -1
  362. package/dist/index79.cjs +10 -34
  363. package/dist/index79.cjs.map +1 -1
  364. package/dist/index79.js +11 -35
  365. package/dist/index79.js.map +1 -1
  366. package/dist/index8.cjs +58 -75
  367. package/dist/index8.cjs.map +1 -1
  368. package/dist/index8.js +58 -75
  369. package/dist/index8.js.map +1 -1
  370. package/dist/index80.cjs +64 -10
  371. package/dist/index80.cjs.map +1 -1
  372. package/dist/index80.js +65 -11
  373. package/dist/index80.js.map +1 -1
  374. package/dist/index81.cjs +16 -4
  375. package/dist/index81.cjs.map +1 -1
  376. package/dist/index81.js +17 -5
  377. package/dist/index81.js.map +1 -1
  378. package/dist/index82.cjs +52 -134
  379. package/dist/index82.cjs.map +1 -1
  380. package/dist/index82.js +51 -133
  381. package/dist/index82.js.map +1 -1
  382. package/dist/index83.cjs +50 -38
  383. package/dist/index83.cjs.map +1 -1
  384. package/dist/index83.js +50 -38
  385. package/dist/index83.js.map +1 -1
  386. package/dist/index84.cjs +16 -76
  387. package/dist/index84.cjs.map +1 -1
  388. package/dist/index84.js +16 -76
  389. package/dist/index84.js.map +1 -1
  390. package/dist/index85.cjs +20 -2
  391. package/dist/index85.cjs.map +1 -1
  392. package/dist/index85.js +20 -2
  393. package/dist/index85.js.map +1 -1
  394. package/dist/index86.cjs +77 -44
  395. package/dist/index86.cjs.map +1 -1
  396. package/dist/index86.js +78 -45
  397. package/dist/index86.js.map +1 -1
  398. package/dist/index87.cjs +2 -53
  399. package/dist/index87.cjs.map +1 -1
  400. package/dist/index87.js +3 -54
  401. package/dist/index87.js.map +1 -1
  402. package/dist/index88.cjs +15 -36
  403. package/dist/index88.cjs.map +1 -1
  404. package/dist/index88.js +16 -37
  405. package/dist/index88.js.map +1 -1
  406. package/dist/index89.cjs +26 -14
  407. package/dist/index89.cjs.map +1 -1
  408. package/dist/index89.js +26 -14
  409. package/dist/index89.js.map +1 -1
  410. package/dist/index9.cjs +81 -45
  411. package/dist/index9.cjs.map +1 -1
  412. package/dist/index9.js +81 -45
  413. package/dist/index9.js.map +1 -1
  414. package/dist/index90.cjs +22 -116
  415. package/dist/index90.cjs.map +1 -1
  416. package/dist/index90.js +21 -115
  417. package/dist/index90.js.map +1 -1
  418. package/dist/index91.cjs +116 -43
  419. package/dist/index91.cjs.map +1 -1
  420. package/dist/index91.js +115 -42
  421. package/dist/index91.js.map +1 -1
  422. package/dist/index92.cjs +35 -32
  423. package/dist/index92.cjs.map +1 -1
  424. package/dist/index92.js +35 -32
  425. package/dist/index92.js.map +1 -1
  426. package/dist/index93.cjs +26 -17
  427. package/dist/index93.cjs.map +1 -1
  428. package/dist/index93.js +27 -18
  429. package/dist/index93.js.map +1 -1
  430. package/dist/index94.cjs +9 -39
  431. package/dist/index94.cjs.map +1 -1
  432. package/dist/index94.js +8 -38
  433. package/dist/index94.js.map +1 -1
  434. package/dist/index95.cjs +21 -92
  435. package/dist/index95.cjs.map +1 -1
  436. package/dist/index95.js +20 -91
  437. package/dist/index95.js.map +1 -1
  438. package/dist/index96.cjs +47 -32
  439. package/dist/index96.cjs.map +1 -1
  440. package/dist/index96.js +47 -32
  441. package/dist/index96.js.map +1 -1
  442. package/dist/index97.cjs +25 -49
  443. package/dist/index97.cjs.map +1 -1
  444. package/dist/index97.js +25 -49
  445. package/dist/index97.js.map +1 -1
  446. package/dist/index98.cjs +39 -30
  447. package/dist/index98.cjs.map +1 -1
  448. package/dist/index98.js +38 -29
  449. package/dist/index98.js.map +1 -1
  450. package/dist/index99.cjs +92 -57
  451. package/dist/index99.cjs.map +1 -1
  452. package/dist/index99.js +91 -56
  453. package/dist/index99.js.map +1 -1
  454. package/dist/style.css +207 -0
  455. package/dist/types/geo.types.d.ts +45 -0
  456. package/dist/types/geo.types.d.ts.map +1 -0
  457. package/dist/types/index.d.ts +1 -0
  458. package/dist/types/index.d.ts.map +1 -1
  459. package/package.json +16 -2
@@ -1 +1 @@
1
- {"version":3,"file":"index9.cjs","sources":["../src/composites/Accordion/Accordion.tsx"],"sourcesContent":["import { forwardRef, useId } from 'react';\nimport clsx from 'clsx';\nimport type { AccordionItemProps, AccordionProps } from './Accordion.types';\nimport styles from './Accordion.module.css';\n\nexport const Accordion = forwardRef<HTMLDivElement, AccordionProps>(\n ({ className, children, ...props }, ref) => (\n <div ref={ref} className={clsx(styles.root, className)} {...props}>\n {children}\n </div>\n ),\n);\n\nAccordion.displayName = 'Accordion';\n\nexport const AccordionItem = forwardRef<HTMLDivElement, AccordionItemProps>(\n ({ header, open, onToggle, className, children, ...props }, ref) => {\n const bodyId = useId();\n return (\n <div ref={ref} className={clsx(styles.item, open && styles.isOpen, className)} {...props}>\n <button\n type=\"button\"\n className={styles.head}\n aria-expanded={open}\n aria-controls={bodyId}\n onClick={onToggle}\n >\n <span className={styles.headContent}>{header}</span>\n <svg\n className={styles.chev}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <polyline points=\"9 18 15 12 9 6\" />\n </svg>\n </button>\n <div id={bodyId} className={styles.body} role=\"region\" hidden={!open}>\n {children}\n </div>\n </div>\n );\n },\n);\n\nAccordionItem.displayName = 'AccordionItem';\n"],"names":["forwardRef","jsx","clsx","styles","useId","jsxs"],"mappings":";;;;;;AAKO,MAAM,YAAYA,MAAAA;AAAAA,EACvB,CAAC,EAAE,WAAW,UAAU,GAAG,MAAA,GAAS,QAClCC,2BAAAA,IAAC,SAAI,KAAU,WAAWC,KAAAA,KAAKC,yBAAO,MAAM,SAAS,GAAI,GAAG,OACzD,SAAA,CACH;AAEJ;AAEA,UAAU,cAAc;AAEjB,MAAM,gBAAgBH,MAAAA;AAAAA,EAC3B,CAAC,EAAE,QAAQ,MAAM,UAAU,WAAW,UAAU,GAAG,MAAA,GAAS,QAAQ;AAClE,UAAM,SAASI,MAAAA,MAAA;AACf,WACEC,2BAAAA,KAAC,OAAA,EAAI,KAAU,WAAWH,KAAAA,KAAKC,iBAAAA,QAAO,MAAM,QAAQA,iBAAAA,QAAO,QAAQ,SAAS,GAAI,GAAG,OACjF,UAAA;AAAA,MAAAE,2BAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,WAAWF,iBAAAA,QAAO;AAAA,UAClB,iBAAe;AAAA,UACf,iBAAe;AAAA,UACf,SAAS;AAAA,UAET,UAAA;AAAA,YAAAF,2BAAAA,IAAC,QAAA,EAAK,WAAWE,iBAAAA,QAAO,aAAc,UAAA,QAAO;AAAA,YAC7CF,2BAAAA;AAAAA,cAAC;AAAA,cAAA;AAAA,gBACC,WAAWE,iBAAAA,QAAO;AAAA,gBAClB,SAAQ;AAAA,gBACR,MAAK;AAAA,gBACL,QAAO;AAAA,gBACP,aAAY;AAAA,gBACZ,eAAc;AAAA,gBACd,gBAAe;AAAA,gBACf,eAAY;AAAA,gBAEZ,UAAAF,2BAAAA,IAAC,YAAA,EAAS,QAAO,iBAAA,CAAiB;AAAA,cAAA;AAAA,YAAA;AAAA,UACpC;AAAA,QAAA;AAAA,MAAA;AAAA,MAEFA,2BAAAA,IAAC,OAAA,EAAI,IAAI,QAAQ,WAAWE,iBAAAA,QAAO,MAAM,MAAK,UAAS,QAAQ,CAAC,MAC7D,SAAA,CACH;AAAA,IAAA,GACF;AAAA,EAEJ;AACF;AAEA,cAAc,cAAc;;;"}
1
+ {"version":3,"file":"index9.cjs","sources":["../src/utils/chartExport.ts"],"sourcesContent":["export type TableData = Array<Array<string | number>>;\n\nconst ensureString = (value: string | number): string =>\n value === null || value === undefined ? '' : String(value);\n\nexport const toStringTable = (table: TableData): string[][] =>\n table.map((row) => row.map((cell) => ensureString(cell)));\n\nexport const sanitizeFilename = (value: string): string => {\n const normalized = value\n .normalize()\n .replace(/[^\\p{L}\\p{N}]+/gu, '-')\n .replace(/^-+|-+$/g, '')\n .toLowerCase();\n return normalized || 'export';\n};\n\nconst buildCsv = (table: TableData): string => {\n const rows = toStringTable(table);\n return rows\n .map((row) =>\n row\n .map((cell) => {\n const escaped = cell.replace(/\"/g, '\"\"');\n return /[\",\\n]/.test(escaped) ? `\"${escaped}\"` : escaped;\n })\n .join(','),\n )\n .join('\\r\\n');\n};\n\nconst triggerDownload = (blob: Blob, filename: string) => {\n const link = document.createElement('a');\n const url = URL.createObjectURL(blob);\n link.href = url;\n link.download = filename;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n URL.revokeObjectURL(url);\n};\n\nexport const exportTableToCsv = (table: TableData, filename: string) => {\n if (table.length === 0) return;\n const csv = buildCsv(table);\n const blob = new Blob([csv], { type: 'text/csv;charset=utf-8;' });\n const finalName = filename.endsWith('.csv') ? filename : `${filename}.csv`;\n triggerDownload(blob, finalName);\n};\n\nexport const getChartPngDataUrl = (chart: { getDataURL: (opts: Record<string, unknown>) => string }): string =>\n chart.getDataURL({ type: 'png', pixelRatio: 2, backgroundColor: '#ffffff' });\n\nexport const downloadImageDataUrl = (dataUrl: string, filename: string) => {\n const link = document.createElement('a');\n link.href = dataUrl;\n link.download = filename;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n};\n\nconst buildTableHtml = (table: TableData): string => {\n const rows = toStringTable(table);\n if (rows.length === 0) return '';\n const [header, ...body] = rows;\n const thead = `<thead><tr>${header.map((c) => `<th>${c}</th>`).join('')}</tr></thead>`;\n const tbody = body.map((r) => `<tr>${r.map((c) => `<td>${c}</td>`).join('')}</tr>`).join('');\n return `<table>${thead}<tbody>${tbody}</tbody></table>`;\n};\n\nexport const openPrintWindowWithChart = (title: string, chartDataUrl: string, table: TableData) => {\n const win = window.open('', '_blank');\n if (!win) return;\n const tableHtml = buildTableHtml(table);\n win.document.write('<!DOCTYPE html>');\n win.document.write(`<html><head><title>${title}</title>`);\n win.document.write(\n '<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>',\n );\n win.document.write('</head><body>');\n win.document.write(`<h1>${title}</h1>`);\n win.document.write(`<img src=\"${chartDataUrl}\" alt=\"${title}\" />`);\n win.document.write(tableHtml);\n win.document.write('</body></html>');\n win.document.close();\n win.focus();\n setTimeout(() => win.print(), 300);\n};\n\nexport const composeFilename = (title: string, suffix?: string) => {\n const base = sanitizeFilename(title);\n if (suffix && suffix.trim().length > 0) {\n const suffixSanitized = sanitizeFilename(suffix);\n return suffixSanitized ? `${base}-${suffixSanitized}` : base;\n }\n return base;\n};\n"],"names":[],"mappings":"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"}
package/dist/index9.js CHANGED
@@ -1,49 +1,85 @@
1
- import { jsx, jsxs } from "react/jsx-runtime";
2
- import { forwardRef, useId } from "react";
3
- import { clsx } from "./index55.js";
4
- import styles from "./index72.js";
5
- const Accordion = forwardRef(
6
- ({ className, children, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: clsx(styles.root, className), ...props, children })
7
- );
8
- Accordion.displayName = "Accordion";
9
- const AccordionItem = forwardRef(
10
- ({ header, open, onToggle, className, children, ...props }, ref) => {
11
- const bodyId = useId();
12
- return /* @__PURE__ */ jsxs("div", { ref, className: clsx(styles.item, open && styles.isOpen, className), ...props, children: [
13
- /* @__PURE__ */ jsxs(
14
- "button",
15
- {
16
- type: "button",
17
- className: styles.head,
18
- "aria-expanded": open,
19
- "aria-controls": bodyId,
20
- onClick: onToggle,
21
- children: [
22
- /* @__PURE__ */ jsx("span", { className: styles.headContent, children: header }),
23
- /* @__PURE__ */ jsx(
24
- "svg",
25
- {
26
- className: styles.chev,
27
- viewBox: "0 0 24 24",
28
- fill: "none",
29
- stroke: "currentColor",
30
- strokeWidth: "2",
31
- strokeLinecap: "round",
32
- strokeLinejoin: "round",
33
- "aria-hidden": "true",
34
- children: /* @__PURE__ */ jsx("polyline", { points: "9 18 15 12 9 6" })
35
- }
36
- )
37
- ]
38
- }
39
- ),
40
- /* @__PURE__ */ jsx("div", { id: bodyId, className: styles.body, role: "region", hidden: !open, children })
41
- ] });
1
+ const ensureString = (value) => value === null || value === void 0 ? "" : String(value);
2
+ const toStringTable = (table) => table.map((row) => row.map((cell) => ensureString(cell)));
3
+ const sanitizeFilename = (value) => {
4
+ const normalized = value.normalize().replace(/[^\p{L}\p{N}]+/gu, "-").replace(/^-+|-+$/g, "").toLowerCase();
5
+ return normalized || "export";
6
+ };
7
+ const buildCsv = (table) => {
8
+ const rows = toStringTable(table);
9
+ return rows.map(
10
+ (row) => row.map((cell) => {
11
+ const escaped = cell.replace(/"/g, '""');
12
+ return /[",\n]/.test(escaped) ? `"${escaped}"` : escaped;
13
+ }).join(",")
14
+ ).join("\r\n");
15
+ };
16
+ const triggerDownload = (blob, filename) => {
17
+ const link = document.createElement("a");
18
+ const url = URL.createObjectURL(blob);
19
+ link.href = url;
20
+ link.download = filename;
21
+ document.body.appendChild(link);
22
+ link.click();
23
+ document.body.removeChild(link);
24
+ URL.revokeObjectURL(url);
25
+ };
26
+ const exportTableToCsv = (table, filename) => {
27
+ if (table.length === 0) return;
28
+ const csv = buildCsv(table);
29
+ const blob = new Blob([csv], { type: "text/csv;charset=utf-8;" });
30
+ const finalName = filename.endsWith(".csv") ? filename : `${filename}.csv`;
31
+ triggerDownload(blob, finalName);
32
+ };
33
+ const getChartPngDataUrl = (chart) => chart.getDataURL({ type: "png", pixelRatio: 2, backgroundColor: "#ffffff" });
34
+ const downloadImageDataUrl = (dataUrl, filename) => {
35
+ const link = document.createElement("a");
36
+ link.href = dataUrl;
37
+ link.download = filename;
38
+ document.body.appendChild(link);
39
+ link.click();
40
+ document.body.removeChild(link);
41
+ };
42
+ const buildTableHtml = (table) => {
43
+ const rows = toStringTable(table);
44
+ if (rows.length === 0) return "";
45
+ const [header, ...body] = rows;
46
+ const thead = `<thead><tr>${header.map((c) => `<th>${c}</th>`).join("")}</tr></thead>`;
47
+ const tbody = body.map((r) => `<tr>${r.map((c) => `<td>${c}</td>`).join("")}</tr>`).join("");
48
+ return `<table>${thead}<tbody>${tbody}</tbody></table>`;
49
+ };
50
+ const openPrintWindowWithChart = (title, chartDataUrl, table) => {
51
+ const win = window.open("", "_blank");
52
+ if (!win) return;
53
+ const tableHtml = buildTableHtml(table);
54
+ win.document.write("<!DOCTYPE html>");
55
+ win.document.write(`<html><head><title>${title}</title>`);
56
+ win.document.write(
57
+ "<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>"
58
+ );
59
+ win.document.write("</head><body>");
60
+ win.document.write(`<h1>${title}</h1>`);
61
+ win.document.write(`<img src="${chartDataUrl}" alt="${title}" />`);
62
+ win.document.write(tableHtml);
63
+ win.document.write("</body></html>");
64
+ win.document.close();
65
+ win.focus();
66
+ setTimeout(() => win.print(), 300);
67
+ };
68
+ const composeFilename = (title, suffix) => {
69
+ const base = sanitizeFilename(title);
70
+ if (suffix && suffix.trim().length > 0) {
71
+ const suffixSanitized = sanitizeFilename(suffix);
72
+ return `${base}-${suffixSanitized}`;
42
73
  }
43
- );
44
- AccordionItem.displayName = "AccordionItem";
74
+ return base;
75
+ };
45
76
  export {
46
- Accordion,
47
- AccordionItem
77
+ composeFilename,
78
+ downloadImageDataUrl,
79
+ exportTableToCsv,
80
+ getChartPngDataUrl,
81
+ openPrintWindowWithChart,
82
+ sanitizeFilename,
83
+ toStringTable
48
84
  };
49
85
  //# sourceMappingURL=index9.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index9.js","sources":["../src/composites/Accordion/Accordion.tsx"],"sourcesContent":["import { forwardRef, useId } from 'react';\nimport clsx from 'clsx';\nimport type { AccordionItemProps, AccordionProps } from './Accordion.types';\nimport styles from './Accordion.module.css';\n\nexport const Accordion = forwardRef<HTMLDivElement, AccordionProps>(\n ({ className, children, ...props }, ref) => (\n <div ref={ref} className={clsx(styles.root, className)} {...props}>\n {children}\n </div>\n ),\n);\n\nAccordion.displayName = 'Accordion';\n\nexport const AccordionItem = forwardRef<HTMLDivElement, AccordionItemProps>(\n ({ header, open, onToggle, className, children, ...props }, ref) => {\n const bodyId = useId();\n return (\n <div ref={ref} className={clsx(styles.item, open && styles.isOpen, className)} {...props}>\n <button\n type=\"button\"\n className={styles.head}\n aria-expanded={open}\n aria-controls={bodyId}\n onClick={onToggle}\n >\n <span className={styles.headContent}>{header}</span>\n <svg\n className={styles.chev}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <polyline points=\"9 18 15 12 9 6\" />\n </svg>\n </button>\n <div id={bodyId} className={styles.body} role=\"region\" hidden={!open}>\n {children}\n </div>\n </div>\n );\n },\n);\n\nAccordionItem.displayName = 'AccordionItem';\n"],"names":[],"mappings":";;;;AAKO,MAAM,YAAY;AAAA,EACvB,CAAC,EAAE,WAAW,UAAU,GAAG,MAAA,GAAS,QAClC,oBAAC,SAAI,KAAU,WAAW,KAAK,OAAO,MAAM,SAAS,GAAI,GAAG,OACzD,SAAA,CACH;AAEJ;AAEA,UAAU,cAAc;AAEjB,MAAM,gBAAgB;AAAA,EAC3B,CAAC,EAAE,QAAQ,MAAM,UAAU,WAAW,UAAU,GAAG,MAAA,GAAS,QAAQ;AAClE,UAAM,SAAS,MAAA;AACf,WACE,qBAAC,OAAA,EAAI,KAAU,WAAW,KAAK,OAAO,MAAM,QAAQ,OAAO,QAAQ,SAAS,GAAI,GAAG,OACjF,UAAA;AAAA,MAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,WAAW,OAAO;AAAA,UAClB,iBAAe;AAAA,UACf,iBAAe;AAAA,UACf,SAAS;AAAA,UAET,UAAA;AAAA,YAAA,oBAAC,QAAA,EAAK,WAAW,OAAO,aAAc,UAAA,QAAO;AAAA,YAC7C;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,WAAW,OAAO;AAAA,gBAClB,SAAQ;AAAA,gBACR,MAAK;AAAA,gBACL,QAAO;AAAA,gBACP,aAAY;AAAA,gBACZ,eAAc;AAAA,gBACd,gBAAe;AAAA,gBACf,eAAY;AAAA,gBAEZ,UAAA,oBAAC,YAAA,EAAS,QAAO,iBAAA,CAAiB;AAAA,cAAA;AAAA,YAAA;AAAA,UACpC;AAAA,QAAA;AAAA,MAAA;AAAA,MAEF,oBAAC,OAAA,EAAI,IAAI,QAAQ,WAAW,OAAO,MAAM,MAAK,UAAS,QAAQ,CAAC,MAC7D,SAAA,CACH;AAAA,IAAA,GACF;AAAA,EAEJ;AACF;AAEA,cAAc,cAAc;"}
1
+ {"version":3,"file":"index9.js","sources":["../src/utils/chartExport.ts"],"sourcesContent":["export type TableData = Array<Array<string | number>>;\n\nconst ensureString = (value: string | number): string =>\n value === null || value === undefined ? '' : String(value);\n\nexport const toStringTable = (table: TableData): string[][] =>\n table.map((row) => row.map((cell) => ensureString(cell)));\n\nexport const sanitizeFilename = (value: string): string => {\n const normalized = value\n .normalize()\n .replace(/[^\\p{L}\\p{N}]+/gu, '-')\n .replace(/^-+|-+$/g, '')\n .toLowerCase();\n return normalized || 'export';\n};\n\nconst buildCsv = (table: TableData): string => {\n const rows = toStringTable(table);\n return rows\n .map((row) =>\n row\n .map((cell) => {\n const escaped = cell.replace(/\"/g, '\"\"');\n return /[\",\\n]/.test(escaped) ? `\"${escaped}\"` : escaped;\n })\n .join(','),\n )\n .join('\\r\\n');\n};\n\nconst triggerDownload = (blob: Blob, filename: string) => {\n const link = document.createElement('a');\n const url = URL.createObjectURL(blob);\n link.href = url;\n link.download = filename;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n URL.revokeObjectURL(url);\n};\n\nexport const exportTableToCsv = (table: TableData, filename: string) => {\n if (table.length === 0) return;\n const csv = buildCsv(table);\n const blob = new Blob([csv], { type: 'text/csv;charset=utf-8;' });\n const finalName = filename.endsWith('.csv') ? filename : `${filename}.csv`;\n triggerDownload(blob, finalName);\n};\n\nexport const getChartPngDataUrl = (chart: { getDataURL: (opts: Record<string, unknown>) => string }): string =>\n chart.getDataURL({ type: 'png', pixelRatio: 2, backgroundColor: '#ffffff' });\n\nexport const downloadImageDataUrl = (dataUrl: string, filename: string) => {\n const link = document.createElement('a');\n link.href = dataUrl;\n link.download = filename;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n};\n\nconst buildTableHtml = (table: TableData): string => {\n const rows = toStringTable(table);\n if (rows.length === 0) return '';\n const [header, ...body] = rows;\n const thead = `<thead><tr>${header.map((c) => `<th>${c}</th>`).join('')}</tr></thead>`;\n const tbody = body.map((r) => `<tr>${r.map((c) => `<td>${c}</td>`).join('')}</tr>`).join('');\n return `<table>${thead}<tbody>${tbody}</tbody></table>`;\n};\n\nexport const openPrintWindowWithChart = (title: string, chartDataUrl: string, table: TableData) => {\n const win = window.open('', '_blank');\n if (!win) return;\n const tableHtml = buildTableHtml(table);\n win.document.write('<!DOCTYPE html>');\n win.document.write(`<html><head><title>${title}</title>`);\n win.document.write(\n '<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>',\n );\n win.document.write('</head><body>');\n win.document.write(`<h1>${title}</h1>`);\n win.document.write(`<img src=\"${chartDataUrl}\" alt=\"${title}\" />`);\n win.document.write(tableHtml);\n win.document.write('</body></html>');\n win.document.close();\n win.focus();\n setTimeout(() => win.print(), 300);\n};\n\nexport const composeFilename = (title: string, suffix?: string) => {\n const base = sanitizeFilename(title);\n if (suffix && suffix.trim().length > 0) {\n const suffixSanitized = sanitizeFilename(suffix);\n return suffixSanitized ? `${base}-${suffixSanitized}` : base;\n }\n return base;\n};\n"],"names":[],"mappings":"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"}
package/dist/index90.cjs CHANGED
@@ -1,118 +1,24 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const constants = require("./index59.cjs");
4
- function groupByCategory(data, limit, order = "total") {
5
- const grouped = /* @__PURE__ */ new Map();
6
- for (const point of data) {
7
- const key = point.category ?? "Unknown";
8
- if (!grouped.has(key)) {
9
- grouped.set(key, []);
10
- }
11
- grouped.get(key).push({
12
- ts: point.ts ?? "",
13
- value: point.value
14
- });
15
- }
16
- const entries = order === "first-seen" ? [...grouped.entries()] : [...grouped.entries()].sort(
17
- (a, b) => b[1].reduce((sum, p) => sum + p.value, 0) - a[1].reduce((sum, p) => sum + p.value, 0)
18
- );
19
- if (entries.length <= limit) {
20
- return entries;
21
- }
22
- const top = entries.slice(0, limit - 1);
23
- const rest = entries.slice(limit - 1);
24
- const otherMap = /* @__PURE__ */ new Map();
25
- for (const [, points] of rest) {
26
- for (const p of points) {
27
- otherMap.set(p.ts, (otherMap.get(p.ts) ?? 0) + p.value);
28
- }
29
- }
30
- const otherPoints = [...otherMap.entries()].map(([ts, value]) => ({
31
- ts,
32
- value
33
- }));
34
- return [...top, ["Other", otherPoints]];
35
- }
36
- function buildMarkAreas(annotations) {
37
- return annotations.filter((a) => a.end).map((a) => [
38
- {
39
- name: a.label,
40
- xAxis: a.start,
41
- itemStyle: { color: a.color ?? "rgba(255,107,90,0.1)" }
42
- },
43
- { xAxis: a.end }
44
- ]);
45
- }
46
- function buildMarkLines(annotations) {
47
- return annotations.filter((a) => !a.end).map((a) => ({
48
- name: a.label,
49
- xAxis: a.start,
50
- lineStyle: { color: a.color ?? constants.CHART_COLORS[0], type: "dashed" },
51
- label: { formatter: a.label, position: "end" }
52
- }));
53
- }
54
- function buildReferenceLines(referenceLines) {
55
- return referenceLines.map((r) => ({
56
- name: r.label ?? String(r.value),
57
- yAxis: r.value,
58
- lineStyle: {
59
- color: r.color ?? constants.CHART_COLORS[0],
60
- type: r.dashed === false ? "solid" : "dashed"
61
- },
62
- label: {
63
- formatter: r.label ?? String(r.value),
64
- position: "insideEndTop"
65
- }
66
- }));
67
- }
68
- function buildLegendSelected(seriesGroups, hiddenSeries) {
69
- if (!hiddenSeries) return void 0;
70
- const hidden = hiddenSeries instanceof Set ? hiddenSeries : new Set(hiddenSeries);
71
- return Object.fromEntries(seriesGroups.map(([name]) => [name, !hidden.has(name)]));
72
- }
73
- function buildTemporalTrendOption(seriesGroups, config) {
74
- const markAreas = buildMarkAreas(config.annotations);
75
- const markLines = [
76
- ...buildMarkLines(config.annotations),
77
- ...buildReferenceLines(config.referenceLines)
78
- ];
79
- const series = seriesGroups.map(([name, points], idx) => ({
80
- name,
81
- type: "line",
82
- ...config.stacked ? { stack: "total", areaStyle: {} } : {},
83
- emphasis: { focus: "series" },
84
- color: constants.CHART_COLORS[idx % constants.CHART_COLORS.length],
85
- data: points.sort((a, b) => a.ts < b.ts ? -1 : 1).map((p) => [p.ts, p.value]),
86
- ...idx === 0 && (markAreas.length > 0 || markLines.length > 0) ? {
87
- markArea: markAreas.length > 0 ? { silent: true, data: markAreas } : void 0,
88
- markLine: markLines.length > 0 ? { silent: true, symbol: "none", data: markLines } : void 0
89
- } : {}
90
- }));
91
- return {
92
- tooltip: {
93
- trigger: "axis",
94
- axisPointer: { type: "cross" }
95
- },
96
- legend: {
97
- show: config.showLegend,
98
- type: "scroll",
99
- bottom: 0,
100
- selected: buildLegendSelected(seriesGroups, config.hiddenSeries)
101
- },
102
- grid: {
103
- left: "3%",
104
- right: "4%",
105
- bottom: config.showLegend ? "15%" : "3%",
106
- containLabel: true
107
- },
108
- xAxis: { type: "time" },
109
- yAxis: { type: "value" },
110
- series
111
- };
112
- }
113
- exports.buildMarkAreas = buildMarkAreas;
114
- exports.buildMarkLines = buildMarkLines;
115
- exports.buildReferenceLines = buildReferenceLines;
116
- exports.buildTemporalTrendOption = buildTemporalTrendOption;
117
- exports.groupByCategory = groupByCategory;
2
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
+ const root = "krc-root-pS02L";
4
+ const sidebar = "krc-sidebar-n1HeR";
5
+ const conversationList = "krc-conversationList-E8ODD";
6
+ const mainArea = "krc-mainArea-E0cNf";
7
+ const messages = "krc-messages-S9aU-";
8
+ const input = "krc-input-HAMJ3";
9
+ const styles = {
10
+ root,
11
+ sidebar,
12
+ conversationList,
13
+ mainArea,
14
+ messages,
15
+ input
16
+ };
17
+ exports.conversationList = conversationList;
18
+ exports.default = styles;
19
+ exports.input = input;
20
+ exports.mainArea = mainArea;
21
+ exports.messages = messages;
22
+ exports.root = root;
23
+ exports.sidebar = sidebar;
118
24
  //# sourceMappingURL=index90.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index90.cjs","sources":["../src/charts/TemporalTrendChartCard/buildChartOption.ts"],"sourcesContent":["import type {\n ChartSeriesPoint,\n ChartAnnotation,\n ReferenceLine,\n} from '../../types/chart.types';\nimport type { TemporalSeriesOrder } from './TemporalTrendChartCard.types';\nimport { CHART_COLORS } from '../../constants';\n\n/** A category and its points, sorted by the active series order. */\nexport type SeriesGroup = [string, { ts: string; value: number }[]];\n\nexport interface TemporalTrendOptionConfig {\n annotations: ChartAnnotation[];\n referenceLines: ReferenceLine[];\n showLegend: boolean;\n stacked: boolean;\n /** Series to start hidden. `undefined` leaves legend selection uncontrolled. */\n hiddenSeries?: Set<string> | string[];\n}\n\n/** Group data points by category, returning sorted series keyed by category name. */\nexport function groupByCategory(\n data: ChartSeriesPoint[],\n limit: number,\n order: TemporalSeriesOrder = 'total',\n): SeriesGroup[] {\n const grouped = new Map<string, { ts: string; value: number }[]>();\n\n for (const point of data) {\n const key = point.category ?? 'Unknown';\n if (!grouped.has(key)) {\n grouped.set(key, []);\n }\n grouped.get(key)!.push({\n ts: point.ts ?? '',\n value: point.value,\n });\n }\n\n // `first-seen` keeps the Map's insertion order, so each series keeps its\n // colour when the data is refreshed and the totals move.\n const entries =\n order === 'first-seen'\n ? [...grouped.entries()]\n : [...grouped.entries()].sort(\n (a, b) =>\n b[1].reduce((sum, p) => sum + p.value, 0) -\n a[1].reduce((sum, p) => sum + p.value, 0),\n );\n\n if (entries.length <= limit) {\n return entries;\n }\n\n const top = entries.slice(0, limit - 1);\n const rest = entries.slice(limit - 1);\n\n const otherMap = new Map<string, number>();\n for (const [, points] of rest) {\n for (const p of points) {\n otherMap.set(p.ts, (otherMap.get(p.ts) ?? 0) + p.value);\n }\n }\n\n const otherPoints = [...otherMap.entries()].map(([ts, value]) => ({\n ts,\n value,\n }));\n\n return [...top, ['Other', otherPoints] as SeriesGroup];\n}\n\n/** Build markArea items from range annotations. */\nexport function buildMarkAreas(annotations: ChartAnnotation[]) {\n return annotations\n .filter((a) => a.end)\n .map((a) => [\n {\n name: a.label,\n xAxis: a.start,\n itemStyle: { color: a.color ?? 'rgba(255,107,90,0.1)' },\n },\n { xAxis: a.end },\n ]);\n}\n\n/** Build markLine items from point annotations. */\nexport function buildMarkLines(annotations: ChartAnnotation[]) {\n return annotations\n .filter((a) => !a.end)\n .map((a) => ({\n name: a.label,\n xAxis: a.start,\n lineStyle: { color: a.color ?? CHART_COLORS[0], type: 'dashed' as const },\n label: { formatter: a.label, position: 'end' as const },\n }));\n}\n\n/** Build markLine items from horizontal reference lines (KPI target, threshold). */\nexport function buildReferenceLines(referenceLines: ReferenceLine[]) {\n return referenceLines.map((r) => ({\n name: r.label ?? String(r.value),\n yAxis: r.value,\n lineStyle: {\n color: r.color ?? CHART_COLORS[0],\n type: r.dashed === false ? ('solid' as const) : ('dashed' as const),\n },\n label: {\n formatter: r.label ?? String(r.value),\n position: 'insideEndTop' as const,\n },\n }));\n}\n\n/**\n * Legend selection map. Hiding through the legend rather than filtering the\n * series array keeps every series at its own index, and so at its own colour.\n */\nfunction buildLegendSelected(\n seriesGroups: SeriesGroup[],\n hiddenSeries: Set<string> | string[] | undefined,\n) {\n if (!hiddenSeries) return undefined;\n\n const hidden = hiddenSeries instanceof Set ? hiddenSeries : new Set(hiddenSeries);\n return Object.fromEntries(seriesGroups.map(([name]) => [name, !hidden.has(name)]));\n}\n\n/** Assemble the ECharts option for the temporal trend card. */\nexport function buildTemporalTrendOption(\n seriesGroups: SeriesGroup[],\n config: TemporalTrendOptionConfig,\n) {\n const markAreas = buildMarkAreas(config.annotations);\n const markLines = [\n ...buildMarkLines(config.annotations),\n ...buildReferenceLines(config.referenceLines),\n ];\n\n const series = seriesGroups.map(([name, points], idx) => ({\n name,\n type: 'line' as const,\n ...(config.stacked ? { stack: 'total', areaStyle: {} } : {}),\n emphasis: { focus: 'series' as const },\n color: CHART_COLORS[idx % CHART_COLORS.length],\n data: points\n .sort((a, b) => (a.ts < b.ts ? -1 : 1))\n .map((p) => [p.ts, p.value]),\n ...(idx === 0 && (markAreas.length > 0 || markLines.length > 0)\n ? {\n markArea: markAreas.length > 0 ? { silent: true, data: markAreas } : undefined,\n markLine:\n markLines.length > 0\n ? { silent: true, symbol: 'none', data: markLines }\n : undefined,\n }\n : {}),\n }));\n\n return {\n tooltip: {\n trigger: 'axis' as const,\n axisPointer: { type: 'cross' as const },\n },\n legend: {\n show: config.showLegend,\n type: 'scroll' as const,\n bottom: 0,\n selected: buildLegendSelected(seriesGroups, config.hiddenSeries),\n },\n grid: {\n left: '3%',\n right: '4%',\n bottom: config.showLegend ? '15%' : '3%',\n containLabel: true,\n },\n xAxis: { type: 'time' as const },\n yAxis: { type: 'value' as const },\n series,\n };\n}\n"],"names":["CHART_COLORS"],"mappings":";;;AAqBO,SAAS,gBACd,MACA,OACA,QAA6B,SACd;AACf,QAAM,8BAAc,IAAA;AAEpB,aAAW,SAAS,MAAM;AACxB,UAAM,MAAM,MAAM,YAAY;AAC9B,QAAI,CAAC,QAAQ,IAAI,GAAG,GAAG;AACrB,cAAQ,IAAI,KAAK,EAAE;AAAA,IACrB;AACA,YAAQ,IAAI,GAAG,EAAG,KAAK;AAAA,MACrB,IAAI,MAAM,MAAM;AAAA,MAChB,OAAO,MAAM;AAAA,IAAA,CACd;AAAA,EACH;AAIA,QAAM,UACJ,UAAU,eACN,CAAC,GAAG,QAAQ,QAAA,CAAS,IACrB,CAAC,GAAG,QAAQ,QAAA,CAAS,EAAE;AAAA,IACrB,CAAC,GAAG,MACF,EAAE,CAAC,EAAE,OAAO,CAAC,KAAK,MAAM,MAAM,EAAE,OAAO,CAAC,IACxC,EAAE,CAAC,EAAE,OAAO,CAAC,KAAK,MAAM,MAAM,EAAE,OAAO,CAAC;AAAA,EAAA;AAGlD,MAAI,QAAQ,UAAU,OAAO;AAC3B,WAAO;AAAA,EACT;AAEA,QAAM,MAAM,QAAQ,MAAM,GAAG,QAAQ,CAAC;AACtC,QAAM,OAAO,QAAQ,MAAM,QAAQ,CAAC;AAEpC,QAAM,+BAAe,IAAA;AACrB,aAAW,CAAA,EAAG,MAAM,KAAK,MAAM;AAC7B,eAAW,KAAK,QAAQ;AACtB,eAAS,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,EAAE,KAAK,KAAK,EAAE,KAAK;AAAA,IACxD;AAAA,EACF;AAEA,QAAM,cAAc,CAAC,GAAG,SAAS,QAAA,CAAS,EAAE,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO;AAAA,IAChE;AAAA,IACA;AAAA,EAAA,EACA;AAEF,SAAO,CAAC,GAAG,KAAK,CAAC,SAAS,WAAW,CAAgB;AACvD;AAGO,SAAS,eAAe,aAAgC;AAC7D,SAAO,YACJ,OAAO,CAAC,MAAM,EAAE,GAAG,EACnB,IAAI,CAAC,MAAM;AAAA,IACV;AAAA,MACE,MAAM,EAAE;AAAA,MACR,OAAO,EAAE;AAAA,MACT,WAAW,EAAE,OAAO,EAAE,SAAS,uBAAA;AAAA,IAAuB;AAAA,IAExD,EAAE,OAAO,EAAE,IAAA;AAAA,EAAI,CAChB;AACL;AAGO,SAAS,eAAe,aAAgC;AAC7D,SAAO,YACJ,OAAO,CAAC,MAAM,CAAC,EAAE,GAAG,EACpB,IAAI,CAAC,OAAO;AAAA,IACX,MAAM,EAAE;AAAA,IACR,OAAO,EAAE;AAAA,IACT,WAAW,EAAE,OAAO,EAAE,SAASA,UAAAA,aAAa,CAAC,GAAG,MAAM,SAAA;AAAA,IACtD,OAAO,EAAE,WAAW,EAAE,OAAO,UAAU,MAAA;AAAA,EAAe,EACtD;AACN;AAGO,SAAS,oBAAoB,gBAAiC;AACnE,SAAO,eAAe,IAAI,CAAC,OAAO;AAAA,IAChC,MAAM,EAAE,SAAS,OAAO,EAAE,KAAK;AAAA,IAC/B,OAAO,EAAE;AAAA,IACT,WAAW;AAAA,MACT,OAAO,EAAE,SAASA,UAAAA,aAAa,CAAC;AAAA,MAChC,MAAM,EAAE,WAAW,QAAS,UAAqB;AAAA,IAAA;AAAA,IAEnD,OAAO;AAAA,MACL,WAAW,EAAE,SAAS,OAAO,EAAE,KAAK;AAAA,MACpC,UAAU;AAAA,IAAA;AAAA,EACZ,EACA;AACJ;AAMA,SAAS,oBACP,cACA,cACA;AACA,MAAI,CAAC,aAAc,QAAO;AAE1B,QAAM,SAAS,wBAAwB,MAAM,eAAe,IAAI,IAAI,YAAY;AAChF,SAAO,OAAO,YAAY,aAAa,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC;AACnF;AAGO,SAAS,yBACd,cACA,QACA;AACA,QAAM,YAAY,eAAe,OAAO,WAAW;AACnD,QAAM,YAAY;AAAA,IAChB,GAAG,eAAe,OAAO,WAAW;AAAA,IACpC,GAAG,oBAAoB,OAAO,cAAc;AAAA,EAAA;AAG9C,QAAM,SAAS,aAAa,IAAI,CAAC,CAAC,MAAM,MAAM,GAAG,SAAS;AAAA,IACxD;AAAA,IACA,MAAM;AAAA,IACN,GAAI,OAAO,UAAU,EAAE,OAAO,SAAS,WAAW,CAAA,EAAC,IAAM,CAAA;AAAA,IACzD,UAAU,EAAE,OAAO,SAAA;AAAA,IACnB,OAAOA,UAAAA,aAAa,MAAMA,UAAAA,aAAa,MAAM;AAAA,IAC7C,MAAM,OACH,KAAK,CAAC,GAAG,MAAO,EAAE,KAAK,EAAE,KAAK,KAAK,CAAE,EACrC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC;AAAA,IAC7B,GAAI,QAAQ,MAAM,UAAU,SAAS,KAAK,UAAU,SAAS,KACzD;AAAA,MACE,UAAU,UAAU,SAAS,IAAI,EAAE,QAAQ,MAAM,MAAM,UAAA,IAAc;AAAA,MACrE,UACE,UAAU,SAAS,IACf,EAAE,QAAQ,MAAM,QAAQ,QAAQ,MAAM,UAAA,IACtC;AAAA,IAAA,IAER,CAAA;AAAA,EAAC,EACL;AAEF,SAAO;AAAA,IACL,SAAS;AAAA,MACP,SAAS;AAAA,MACT,aAAa,EAAE,MAAM,QAAA;AAAA,IAAiB;AAAA,IAExC,QAAQ;AAAA,MACN,MAAM,OAAO;AAAA,MACb,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,UAAU,oBAAoB,cAAc,OAAO,YAAY;AAAA,IAAA;AAAA,IAEjE,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,OAAO;AAAA,MACP,QAAQ,OAAO,aAAa,QAAQ;AAAA,MACpC,cAAc;AAAA,IAAA;AAAA,IAEhB,OAAO,EAAE,MAAM,OAAA;AAAA,IACf,OAAO,EAAE,MAAM,QAAA;AAAA,IACf;AAAA,EAAA;AAEJ;;;;;;"}
1
+ {"version":3,"file":"index90.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;"}
package/dist/index90.js CHANGED
@@ -1,118 +1,24 @@
1
- import { CHART_COLORS } from "./index59.js";
2
- function groupByCategory(data, limit, order = "total") {
3
- const grouped = /* @__PURE__ */ new Map();
4
- for (const point of data) {
5
- const key = point.category ?? "Unknown";
6
- if (!grouped.has(key)) {
7
- grouped.set(key, []);
8
- }
9
- grouped.get(key).push({
10
- ts: point.ts ?? "",
11
- value: point.value
12
- });
13
- }
14
- const entries = order === "first-seen" ? [...grouped.entries()] : [...grouped.entries()].sort(
15
- (a, b) => b[1].reduce((sum, p) => sum + p.value, 0) - a[1].reduce((sum, p) => sum + p.value, 0)
16
- );
17
- if (entries.length <= limit) {
18
- return entries;
19
- }
20
- const top = entries.slice(0, limit - 1);
21
- const rest = entries.slice(limit - 1);
22
- const otherMap = /* @__PURE__ */ new Map();
23
- for (const [, points] of rest) {
24
- for (const p of points) {
25
- otherMap.set(p.ts, (otherMap.get(p.ts) ?? 0) + p.value);
26
- }
27
- }
28
- const otherPoints = [...otherMap.entries()].map(([ts, value]) => ({
29
- ts,
30
- value
31
- }));
32
- return [...top, ["Other", otherPoints]];
33
- }
34
- function buildMarkAreas(annotations) {
35
- return annotations.filter((a) => a.end).map((a) => [
36
- {
37
- name: a.label,
38
- xAxis: a.start,
39
- itemStyle: { color: a.color ?? "rgba(255,107,90,0.1)" }
40
- },
41
- { xAxis: a.end }
42
- ]);
43
- }
44
- function buildMarkLines(annotations) {
45
- return annotations.filter((a) => !a.end).map((a) => ({
46
- name: a.label,
47
- xAxis: a.start,
48
- lineStyle: { color: a.color ?? CHART_COLORS[0], type: "dashed" },
49
- label: { formatter: a.label, position: "end" }
50
- }));
51
- }
52
- function buildReferenceLines(referenceLines) {
53
- return referenceLines.map((r) => ({
54
- name: r.label ?? String(r.value),
55
- yAxis: r.value,
56
- lineStyle: {
57
- color: r.color ?? CHART_COLORS[0],
58
- type: r.dashed === false ? "solid" : "dashed"
59
- },
60
- label: {
61
- formatter: r.label ?? String(r.value),
62
- position: "insideEndTop"
63
- }
64
- }));
65
- }
66
- function buildLegendSelected(seriesGroups, hiddenSeries) {
67
- if (!hiddenSeries) return void 0;
68
- const hidden = hiddenSeries instanceof Set ? hiddenSeries : new Set(hiddenSeries);
69
- return Object.fromEntries(seriesGroups.map(([name]) => [name, !hidden.has(name)]));
70
- }
71
- function buildTemporalTrendOption(seriesGroups, config) {
72
- const markAreas = buildMarkAreas(config.annotations);
73
- const markLines = [
74
- ...buildMarkLines(config.annotations),
75
- ...buildReferenceLines(config.referenceLines)
76
- ];
77
- const series = seriesGroups.map(([name, points], idx) => ({
78
- name,
79
- type: "line",
80
- ...config.stacked ? { stack: "total", areaStyle: {} } : {},
81
- emphasis: { focus: "series" },
82
- color: CHART_COLORS[idx % CHART_COLORS.length],
83
- data: points.sort((a, b) => a.ts < b.ts ? -1 : 1).map((p) => [p.ts, p.value]),
84
- ...idx === 0 && (markAreas.length > 0 || markLines.length > 0) ? {
85
- markArea: markAreas.length > 0 ? { silent: true, data: markAreas } : void 0,
86
- markLine: markLines.length > 0 ? { silent: true, symbol: "none", data: markLines } : void 0
87
- } : {}
88
- }));
89
- return {
90
- tooltip: {
91
- trigger: "axis",
92
- axisPointer: { type: "cross" }
93
- },
94
- legend: {
95
- show: config.showLegend,
96
- type: "scroll",
97
- bottom: 0,
98
- selected: buildLegendSelected(seriesGroups, config.hiddenSeries)
99
- },
100
- grid: {
101
- left: "3%",
102
- right: "4%",
103
- bottom: config.showLegend ? "15%" : "3%",
104
- containLabel: true
105
- },
106
- xAxis: { type: "time" },
107
- yAxis: { type: "value" },
108
- series
109
- };
110
- }
1
+ const root = "krc-root-pS02L";
2
+ const sidebar = "krc-sidebar-n1HeR";
3
+ const conversationList = "krc-conversationList-E8ODD";
4
+ const mainArea = "krc-mainArea-E0cNf";
5
+ const messages = "krc-messages-S9aU-";
6
+ const input = "krc-input-HAMJ3";
7
+ const styles = {
8
+ root,
9
+ sidebar,
10
+ conversationList,
11
+ mainArea,
12
+ messages,
13
+ input
14
+ };
111
15
  export {
112
- buildMarkAreas,
113
- buildMarkLines,
114
- buildReferenceLines,
115
- buildTemporalTrendOption,
116
- groupByCategory
16
+ conversationList,
17
+ styles as default,
18
+ input,
19
+ mainArea,
20
+ messages,
21
+ root,
22
+ sidebar
117
23
  };
118
24
  //# sourceMappingURL=index90.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index90.js","sources":["../src/charts/TemporalTrendChartCard/buildChartOption.ts"],"sourcesContent":["import type {\n ChartSeriesPoint,\n ChartAnnotation,\n ReferenceLine,\n} from '../../types/chart.types';\nimport type { TemporalSeriesOrder } from './TemporalTrendChartCard.types';\nimport { CHART_COLORS } from '../../constants';\n\n/** A category and its points, sorted by the active series order. */\nexport type SeriesGroup = [string, { ts: string; value: number }[]];\n\nexport interface TemporalTrendOptionConfig {\n annotations: ChartAnnotation[];\n referenceLines: ReferenceLine[];\n showLegend: boolean;\n stacked: boolean;\n /** Series to start hidden. `undefined` leaves legend selection uncontrolled. */\n hiddenSeries?: Set<string> | string[];\n}\n\n/** Group data points by category, returning sorted series keyed by category name. */\nexport function groupByCategory(\n data: ChartSeriesPoint[],\n limit: number,\n order: TemporalSeriesOrder = 'total',\n): SeriesGroup[] {\n const grouped = new Map<string, { ts: string; value: number }[]>();\n\n for (const point of data) {\n const key = point.category ?? 'Unknown';\n if (!grouped.has(key)) {\n grouped.set(key, []);\n }\n grouped.get(key)!.push({\n ts: point.ts ?? '',\n value: point.value,\n });\n }\n\n // `first-seen` keeps the Map's insertion order, so each series keeps its\n // colour when the data is refreshed and the totals move.\n const entries =\n order === 'first-seen'\n ? [...grouped.entries()]\n : [...grouped.entries()].sort(\n (a, b) =>\n b[1].reduce((sum, p) => sum + p.value, 0) -\n a[1].reduce((sum, p) => sum + p.value, 0),\n );\n\n if (entries.length <= limit) {\n return entries;\n }\n\n const top = entries.slice(0, limit - 1);\n const rest = entries.slice(limit - 1);\n\n const otherMap = new Map<string, number>();\n for (const [, points] of rest) {\n for (const p of points) {\n otherMap.set(p.ts, (otherMap.get(p.ts) ?? 0) + p.value);\n }\n }\n\n const otherPoints = [...otherMap.entries()].map(([ts, value]) => ({\n ts,\n value,\n }));\n\n return [...top, ['Other', otherPoints] as SeriesGroup];\n}\n\n/** Build markArea items from range annotations. */\nexport function buildMarkAreas(annotations: ChartAnnotation[]) {\n return annotations\n .filter((a) => a.end)\n .map((a) => [\n {\n name: a.label,\n xAxis: a.start,\n itemStyle: { color: a.color ?? 'rgba(255,107,90,0.1)' },\n },\n { xAxis: a.end },\n ]);\n}\n\n/** Build markLine items from point annotations. */\nexport function buildMarkLines(annotations: ChartAnnotation[]) {\n return annotations\n .filter((a) => !a.end)\n .map((a) => ({\n name: a.label,\n xAxis: a.start,\n lineStyle: { color: a.color ?? CHART_COLORS[0], type: 'dashed' as const },\n label: { formatter: a.label, position: 'end' as const },\n }));\n}\n\n/** Build markLine items from horizontal reference lines (KPI target, threshold). */\nexport function buildReferenceLines(referenceLines: ReferenceLine[]) {\n return referenceLines.map((r) => ({\n name: r.label ?? String(r.value),\n yAxis: r.value,\n lineStyle: {\n color: r.color ?? CHART_COLORS[0],\n type: r.dashed === false ? ('solid' as const) : ('dashed' as const),\n },\n label: {\n formatter: r.label ?? String(r.value),\n position: 'insideEndTop' as const,\n },\n }));\n}\n\n/**\n * Legend selection map. Hiding through the legend rather than filtering the\n * series array keeps every series at its own index, and so at its own colour.\n */\nfunction buildLegendSelected(\n seriesGroups: SeriesGroup[],\n hiddenSeries: Set<string> | string[] | undefined,\n) {\n if (!hiddenSeries) return undefined;\n\n const hidden = hiddenSeries instanceof Set ? hiddenSeries : new Set(hiddenSeries);\n return Object.fromEntries(seriesGroups.map(([name]) => [name, !hidden.has(name)]));\n}\n\n/** Assemble the ECharts option for the temporal trend card. */\nexport function buildTemporalTrendOption(\n seriesGroups: SeriesGroup[],\n config: TemporalTrendOptionConfig,\n) {\n const markAreas = buildMarkAreas(config.annotations);\n const markLines = [\n ...buildMarkLines(config.annotations),\n ...buildReferenceLines(config.referenceLines),\n ];\n\n const series = seriesGroups.map(([name, points], idx) => ({\n name,\n type: 'line' as const,\n ...(config.stacked ? { stack: 'total', areaStyle: {} } : {}),\n emphasis: { focus: 'series' as const },\n color: CHART_COLORS[idx % CHART_COLORS.length],\n data: points\n .sort((a, b) => (a.ts < b.ts ? -1 : 1))\n .map((p) => [p.ts, p.value]),\n ...(idx === 0 && (markAreas.length > 0 || markLines.length > 0)\n ? {\n markArea: markAreas.length > 0 ? { silent: true, data: markAreas } : undefined,\n markLine:\n markLines.length > 0\n ? { silent: true, symbol: 'none', data: markLines }\n : undefined,\n }\n : {}),\n }));\n\n return {\n tooltip: {\n trigger: 'axis' as const,\n axisPointer: { type: 'cross' as const },\n },\n legend: {\n show: config.showLegend,\n type: 'scroll' as const,\n bottom: 0,\n selected: buildLegendSelected(seriesGroups, config.hiddenSeries),\n },\n grid: {\n left: '3%',\n right: '4%',\n bottom: config.showLegend ? '15%' : '3%',\n containLabel: true,\n },\n xAxis: { type: 'time' as const },\n yAxis: { type: 'value' as const },\n series,\n };\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index90.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;"}