@ktnpm_devops/react-component 0.18.0 → 0.19.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 (362) hide show
  1. package/dist/data/LiveExplorerTable/LiveExplorerTable.d.ts.map +1 -1
  2. package/dist/data/LiveExplorerTable/LiveExplorerTable.types.d.ts +5 -0
  3. package/dist/data/LiveExplorerTable/LiveExplorerTable.types.d.ts.map +1 -1
  4. package/dist/index10.cjs +1 -1
  5. package/dist/index10.js +1 -1
  6. package/dist/index100.cjs +22 -28
  7. package/dist/index100.cjs.map +1 -1
  8. package/dist/index100.js +22 -28
  9. package/dist/index100.js.map +1 -1
  10. package/dist/index101.cjs +48 -22
  11. package/dist/index101.cjs.map +1 -1
  12. package/dist/index101.js +47 -21
  13. package/dist/index101.js.map +1 -1
  14. package/dist/index102.cjs +16 -34
  15. package/dist/index102.cjs.map +1 -1
  16. package/dist/index102.js +16 -34
  17. package/dist/index102.js.map +1 -1
  18. package/dist/index103.cjs +36 -43
  19. package/dist/index103.cjs.map +1 -1
  20. package/dist/index103.js +35 -42
  21. package/dist/index103.js.map +1 -1
  22. package/dist/index104.cjs +6 -24
  23. package/dist/index104.cjs.map +1 -1
  24. package/dist/index104.js +5 -23
  25. package/dist/index104.js.map +1 -1
  26. package/dist/index105.cjs +21 -39
  27. package/dist/index105.cjs.map +1 -1
  28. package/dist/index105.js +20 -38
  29. package/dist/index105.js.map +1 -1
  30. package/dist/index106.cjs +22 -9
  31. package/dist/index106.cjs.map +1 -1
  32. package/dist/index106.js +21 -8
  33. package/dist/index106.js.map +1 -1
  34. package/dist/index107.cjs +6 -10
  35. package/dist/index107.cjs.map +1 -1
  36. package/dist/index107.js +5 -9
  37. package/dist/index107.js.map +1 -1
  38. package/dist/index108.cjs +19 -20
  39. package/dist/index108.cjs.map +1 -1
  40. package/dist/index108.js +18 -19
  41. package/dist/index108.js.map +1 -1
  42. package/dist/index109.cjs +19 -14
  43. package/dist/index109.cjs.map +1 -1
  44. package/dist/index109.js +18 -13
  45. package/dist/index109.js.map +1 -1
  46. package/dist/index11.cjs +1 -1
  47. package/dist/index11.js +1 -1
  48. package/dist/index110.cjs +33 -10
  49. package/dist/index110.cjs.map +1 -1
  50. package/dist/index110.js +32 -9
  51. package/dist/index110.js.map +1 -1
  52. package/dist/index111.cjs +2 -65
  53. package/dist/index111.cjs.map +1 -1
  54. package/dist/index111.js +3 -66
  55. package/dist/index111.js.map +1 -1
  56. package/dist/index112.cjs +49 -46
  57. package/dist/index112.cjs.map +1 -1
  58. package/dist/index112.js +49 -46
  59. package/dist/index112.js.map +1 -1
  60. package/dist/index113.cjs +22 -21
  61. package/dist/index113.cjs.map +1 -1
  62. package/dist/index113.js +21 -20
  63. package/dist/index113.js.map +1 -1
  64. package/dist/index114.cjs +69 -6
  65. package/dist/index114.cjs.map +1 -1
  66. package/dist/index114.js +68 -5
  67. package/dist/index114.js.map +1 -1
  68. package/dist/index115.cjs +7 -47
  69. package/dist/index115.cjs.map +1 -1
  70. package/dist/index115.js +7 -47
  71. package/dist/index115.js.map +1 -1
  72. package/dist/index116.cjs +40 -18
  73. package/dist/index116.cjs.map +1 -1
  74. package/dist/index116.js +39 -17
  75. package/dist/index116.js.map +1 -1
  76. package/dist/index117.cjs +35 -36
  77. package/dist/index117.cjs.map +1 -1
  78. package/dist/index117.js +34 -35
  79. package/dist/index117.js.map +1 -1
  80. package/dist/index118.cjs +42 -21
  81. package/dist/index118.cjs.map +1 -1
  82. package/dist/index118.js +42 -21
  83. package/dist/index118.js.map +1 -1
  84. package/dist/index119.cjs +22 -67
  85. package/dist/index119.cjs.map +1 -1
  86. package/dist/index119.js +23 -68
  87. package/dist/index119.js.map +1 -1
  88. package/dist/index12.cjs +1 -1
  89. package/dist/index12.js +1 -1
  90. package/dist/index120.cjs +38 -6
  91. package/dist/index120.cjs.map +1 -1
  92. package/dist/index120.js +38 -6
  93. package/dist/index120.js.map +1 -1
  94. package/dist/index121.cjs +9 -40
  95. package/dist/index121.cjs.map +1 -1
  96. package/dist/index121.js +8 -39
  97. package/dist/index121.js.map +1 -1
  98. package/dist/index122.cjs +10 -42
  99. package/dist/index122.cjs.map +1 -1
  100. package/dist/index122.js +9 -41
  101. package/dist/index122.js.map +1 -1
  102. package/dist/index123.cjs +20 -7
  103. package/dist/index123.cjs.map +1 -1
  104. package/dist/index123.js +19 -6
  105. package/dist/index123.js.map +1 -1
  106. package/dist/index124.cjs +14 -58
  107. package/dist/index124.cjs.map +1 -1
  108. package/dist/index124.js +13 -57
  109. package/dist/index124.js.map +1 -1
  110. package/dist/index125.cjs +10 -57
  111. package/dist/index125.cjs.map +1 -1
  112. package/dist/index125.js +9 -56
  113. package/dist/index125.js.map +1 -1
  114. package/dist/index126.cjs +69 -39
  115. package/dist/index126.cjs.map +1 -1
  116. package/dist/index126.js +68 -38
  117. package/dist/index126.js.map +1 -1
  118. package/dist/index127.cjs +24 -92
  119. package/dist/index127.cjs.map +1 -1
  120. package/dist/index127.js +23 -91
  121. package/dist/index127.js.map +1 -1
  122. package/dist/index128.cjs +22 -34
  123. package/dist/index128.cjs.map +1 -1
  124. package/dist/index128.js +22 -34
  125. package/dist/index128.js.map +1 -1
  126. package/dist/index13.cjs +1 -1
  127. package/dist/index13.js +1 -1
  128. package/dist/index14.cjs +1 -1
  129. package/dist/index14.js +1 -1
  130. package/dist/index15.cjs +1 -1
  131. package/dist/index15.js +1 -1
  132. package/dist/index16.cjs +1 -1
  133. package/dist/index16.js +1 -1
  134. package/dist/index17.cjs +1 -1
  135. package/dist/index17.js +1 -1
  136. package/dist/index18.cjs +1 -1
  137. package/dist/index18.js +1 -1
  138. package/dist/index19.cjs +1 -1
  139. package/dist/index19.js +1 -1
  140. package/dist/index20.cjs +1 -1
  141. package/dist/index20.js +1 -1
  142. package/dist/index21.cjs +1 -1
  143. package/dist/index21.js +1 -1
  144. package/dist/index22.cjs +1 -1
  145. package/dist/index22.js +1 -1
  146. package/dist/index23.cjs +1 -1
  147. package/dist/index23.js +1 -1
  148. package/dist/index24.cjs +1 -1
  149. package/dist/index24.js +1 -1
  150. package/dist/index25.cjs +1 -1
  151. package/dist/index25.js +1 -1
  152. package/dist/index26.cjs +1 -1
  153. package/dist/index26.js +1 -1
  154. package/dist/index27.cjs +1 -1
  155. package/dist/index27.js +1 -1
  156. package/dist/index28.cjs +1 -1
  157. package/dist/index28.js +1 -1
  158. package/dist/index29.cjs +1 -1
  159. package/dist/index29.js +1 -1
  160. package/dist/index30.cjs +10 -10
  161. package/dist/index30.js +10 -10
  162. package/dist/index31.cjs +4 -4
  163. package/dist/index31.js +4 -4
  164. package/dist/index32.cjs +3 -3
  165. package/dist/index32.js +3 -3
  166. package/dist/index33.cjs +1 -1
  167. package/dist/index33.js +1 -1
  168. package/dist/index34.cjs +2 -1
  169. package/dist/index34.cjs.map +1 -1
  170. package/dist/index34.js +2 -1
  171. package/dist/index34.js.map +1 -1
  172. package/dist/index35.cjs +1 -1
  173. package/dist/index35.js +1 -1
  174. package/dist/index36.cjs +2 -2
  175. package/dist/index36.js +2 -2
  176. package/dist/index37.cjs +1 -1
  177. package/dist/index37.js +1 -1
  178. package/dist/index38.cjs +1 -1
  179. package/dist/index38.js +1 -1
  180. package/dist/index39.cjs +1 -1
  181. package/dist/index39.js +1 -1
  182. package/dist/index40.cjs +1 -1
  183. package/dist/index40.js +1 -1
  184. package/dist/index41.cjs +1 -1
  185. package/dist/index41.js +1 -1
  186. package/dist/index43.cjs +1 -1
  187. package/dist/index43.js +1 -1
  188. package/dist/index44.cjs +1 -1
  189. package/dist/index44.js +1 -1
  190. package/dist/index45.cjs +3 -3
  191. package/dist/index45.js +3 -3
  192. package/dist/index46.cjs +1 -1
  193. package/dist/index46.js +1 -1
  194. package/dist/index47.cjs +1 -1
  195. package/dist/index47.js +1 -1
  196. package/dist/index48.cjs +1 -1
  197. package/dist/index48.js +1 -1
  198. package/dist/index49.cjs +1 -1
  199. package/dist/index49.js +1 -1
  200. package/dist/index50.cjs +1 -1
  201. package/dist/index50.js +1 -1
  202. package/dist/index51.cjs +1 -1
  203. package/dist/index51.js +1 -1
  204. package/dist/index52.cjs +2 -2
  205. package/dist/index52.js +2 -2
  206. package/dist/index53.cjs +1 -1
  207. package/dist/index53.js +1 -1
  208. package/dist/index54.cjs +1 -1
  209. package/dist/index54.js +1 -1
  210. package/dist/index55.cjs +2 -2
  211. package/dist/index55.js +2 -2
  212. package/dist/index56.cjs +1 -1
  213. package/dist/index56.js +1 -1
  214. package/dist/index57.cjs +1 -1
  215. package/dist/index57.js +1 -1
  216. package/dist/index58.cjs +1 -1
  217. package/dist/index58.js +1 -1
  218. package/dist/index60.cjs +64 -19
  219. package/dist/index60.cjs.map +1 -1
  220. package/dist/index60.js +64 -19
  221. package/dist/index60.js.map +1 -1
  222. package/dist/index61.cjs +12 -15
  223. package/dist/index61.cjs.map +1 -1
  224. package/dist/index61.js +12 -15
  225. package/dist/index61.js.map +1 -1
  226. package/dist/index63.cjs +34 -22
  227. package/dist/index63.cjs.map +1 -1
  228. package/dist/index63.js +34 -22
  229. package/dist/index63.js.map +1 -1
  230. package/dist/index64.cjs +16 -13
  231. package/dist/index64.cjs.map +1 -1
  232. package/dist/index64.js +16 -13
  233. package/dist/index64.js.map +1 -1
  234. package/dist/index65.cjs +11 -2
  235. package/dist/index65.cjs.map +1 -1
  236. package/dist/index65.js +11 -2
  237. package/dist/index65.js.map +1 -1
  238. package/dist/index66.cjs +14 -8
  239. package/dist/index66.cjs.map +1 -1
  240. package/dist/index66.js +15 -9
  241. package/dist/index66.js.map +1 -1
  242. package/dist/index67.cjs +19 -22
  243. package/dist/index67.cjs.map +1 -1
  244. package/dist/index67.js +20 -23
  245. package/dist/index67.js.map +1 -1
  246. package/dist/index68.cjs +36 -6
  247. package/dist/index68.cjs.map +1 -1
  248. package/dist/index68.js +36 -6
  249. package/dist/index68.js.map +1 -1
  250. package/dist/index69.cjs +36 -12
  251. package/dist/index69.cjs.map +1 -1
  252. package/dist/index69.js +36 -12
  253. package/dist/index69.js.map +1 -1
  254. package/dist/index70.cjs +49 -16
  255. package/dist/index70.cjs.map +1 -1
  256. package/dist/index70.js +50 -17
  257. package/dist/index70.js.map +1 -1
  258. package/dist/index71.cjs +17 -17
  259. package/dist/index71.js +18 -18
  260. package/dist/index72.cjs +2 -20
  261. package/dist/index72.cjs.map +1 -1
  262. package/dist/index72.js +3 -21
  263. package/dist/index72.js.map +1 -1
  264. package/dist/index73.cjs +5 -11
  265. package/dist/index73.cjs.map +1 -1
  266. package/dist/index73.js +6 -12
  267. package/dist/index73.js.map +1 -1
  268. package/dist/index74.cjs +17 -2
  269. package/dist/index74.cjs.map +1 -1
  270. package/dist/index74.js +17 -2
  271. package/dist/index74.js.map +1 -1
  272. package/dist/index75.cjs +10 -19
  273. package/dist/index75.cjs.map +1 -1
  274. package/dist/index75.js +11 -20
  275. package/dist/index75.js.map +1 -1
  276. package/dist/index77.cjs +42 -24
  277. package/dist/index77.cjs.map +1 -1
  278. package/dist/index77.js +43 -25
  279. package/dist/index77.js.map +1 -1
  280. package/dist/index78.cjs +6 -17
  281. package/dist/index78.cjs.map +1 -1
  282. package/dist/index78.js +5 -16
  283. package/dist/index78.js.map +1 -1
  284. package/dist/index79.cjs +17 -6
  285. package/dist/index79.cjs.map +1 -1
  286. package/dist/index79.js +16 -5
  287. package/dist/index79.js.map +1 -1
  288. package/dist/index80.cjs +1 -1
  289. package/dist/index80.js +1 -1
  290. package/dist/index81.cjs +19 -64
  291. package/dist/index81.cjs.map +1 -1
  292. package/dist/index81.js +20 -65
  293. package/dist/index81.js.map +1 -1
  294. package/dist/index82.cjs +34 -46
  295. package/dist/index82.cjs.map +1 -1
  296. package/dist/index82.js +34 -46
  297. package/dist/index82.js.map +1 -1
  298. package/dist/index84.cjs +54 -30
  299. package/dist/index84.cjs.map +1 -1
  300. package/dist/index84.js +54 -30
  301. package/dist/index84.js.map +1 -1
  302. package/dist/index85.cjs +134 -40
  303. package/dist/index85.cjs.map +1 -1
  304. package/dist/index85.js +133 -39
  305. package/dist/index85.js.map +1 -1
  306. package/dist/index86.cjs +38 -32
  307. package/dist/index86.cjs.map +1 -1
  308. package/dist/index86.js +38 -32
  309. package/dist/index86.js.map +1 -1
  310. package/dist/index87.cjs +79 -13
  311. package/dist/index87.cjs.map +1 -1
  312. package/dist/index87.js +80 -14
  313. package/dist/index87.js.map +1 -1
  314. package/dist/index88.cjs +15 -18
  315. package/dist/index88.cjs.map +1 -1
  316. package/dist/index88.js +15 -18
  317. package/dist/index88.js.map +1 -1
  318. package/dist/index89.cjs +26 -14
  319. package/dist/index89.cjs.map +1 -1
  320. package/dist/index89.js +26 -14
  321. package/dist/index89.js.map +1 -1
  322. package/dist/index90.cjs +17 -8
  323. package/dist/index90.cjs.map +1 -1
  324. package/dist/index90.js +18 -9
  325. package/dist/index90.js.map +1 -1
  326. package/dist/index91.cjs +19 -116
  327. package/dist/index91.cjs.map +1 -1
  328. package/dist/index91.js +18 -115
  329. package/dist/index91.js.map +1 -1
  330. package/dist/index92.cjs +16 -25
  331. package/dist/index92.cjs.map +1 -1
  332. package/dist/index92.js +17 -26
  333. package/dist/index92.js.map +1 -1
  334. package/dist/index93.cjs +16 -34
  335. package/dist/index93.cjs.map +1 -1
  336. package/dist/index93.js +16 -34
  337. package/dist/index93.js.map +1 -1
  338. package/dist/index94.cjs +116 -22
  339. package/dist/index94.cjs.map +1 -1
  340. package/dist/index94.js +115 -21
  341. package/dist/index94.js.map +1 -1
  342. package/dist/index95.cjs +35 -77
  343. package/dist/index95.cjs.map +1 -1
  344. package/dist/index95.js +35 -77
  345. package/dist/index95.js.map +1 -1
  346. package/dist/index96.cjs +39 -9
  347. package/dist/index96.cjs.map +1 -1
  348. package/dist/index96.js +38 -8
  349. package/dist/index96.js.map +1 -1
  350. package/dist/index97.cjs +86 -127
  351. package/dist/index97.cjs.map +1 -1
  352. package/dist/index97.js +87 -128
  353. package/dist/index97.js.map +1 -1
  354. package/dist/index98.cjs +19 -25
  355. package/dist/index98.cjs.map +1 -1
  356. package/dist/index98.js +20 -26
  357. package/dist/index98.js.map +1 -1
  358. package/dist/index99.cjs +4 -19
  359. package/dist/index99.cjs.map +1 -1
  360. package/dist/index99.js +5 -20
  361. package/dist/index99.js.map +1 -1
  362. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index113.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index113.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;"}
package/dist/index114.cjs CHANGED
@@ -1,9 +1,72 @@
1
1
  "use strict";
2
- Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
- const root = "krc-root-FVKOX";
4
- const styles = {
5
- root
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const constants = require("./index62.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>`;
6
10
  };
7
- exports.default = styles;
8
- exports.root = root;
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
+ };
51
+ 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) => ({
62
+ name: s.name,
63
+ type: "bar",
64
+ data: s.values,
65
+ barMinHeight: constants.GROUPED_BAR.MIN_BAR_HEIGHT,
66
+ itemStyle: { color: colors[i] },
67
+ emphasis: { focus: "series" }
68
+ }))
69
+ };
70
+ };
71
+ exports.buildGroupedBarOption = buildGroupedBarOption;
9
72
  //# sourceMappingURL=index114.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index114.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
1
+ {"version":3,"file":"index114.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;;"}
package/dist/index114.js CHANGED
@@ -1,9 +1,72 @@
1
- const root = "krc-root-FVKOX";
2
- const styles = {
3
- root
1
+ import { GROUPED_BAR, CHART_COLORS } from "./index62.js";
2
+ const { GRID_MARGIN, AXIS_NAME_GAP } = GROUPED_BAR;
3
+ const escapeHtml = (value) => value.replace(/[&<>"]/g, (char) => `&#${char.charCodeAt(0)};`);
4
+ const colorFor = (name, index, seriesColors) => (seriesColors == null ? void 0 : seriesColors[name]) ?? CHART_COLORS[index % CHART_COLORS.length];
5
+ const markerFor = (color) => {
6
+ const { TOOLTIP_MARKER_SIZE: size, TOOLTIP_MARKER_GAP: gap } = GROUPED_BAR;
7
+ return `<span style="display:inline-block;margin-right:${gap}px;border-radius:50%;width:${size}px;height:${size}px;background-color:${escapeHtml(color)};"></span>`;
8
+ };
9
+ const buildTooltipFormatter = (pivot, colors, noValueText) => (params) => {
10
+ const first = Array.isArray(params) ? params[0] : params;
11
+ const index = first == null ? void 0 : first.dataIndex;
12
+ if (index == null || index >= pivot.categories.length) return "";
13
+ const lines = [escapeHtml(pivot.categories[index])];
14
+ pivot.series.forEach((s, i) => {
15
+ const value = s.values[index];
16
+ const text = value == null ? escapeHtml(noValueText) : String(value);
17
+ lines.push(`${markerFor(colors[i])}${escapeHtml(s.name)}: ${text}`);
18
+ });
19
+ return lines.join("<br/>");
20
+ };
21
+ const buildGrid = (config) => {
22
+ const named = Boolean(config.valueLabel);
23
+ return {
24
+ left: GRID_MARGIN.BASE + (named && !config.invertAxis ? GRID_MARGIN.VALUE_NAME_Y : 0),
25
+ right: GRID_MARGIN.RIGHT,
26
+ top: GRID_MARGIN.TOP,
27
+ // Room for a horizontal value-axis name and the legend, each only when drawn.
28
+ bottom: GRID_MARGIN.BASE + (named && config.invertAxis ? GRID_MARGIN.VALUE_NAME_X : 0) + (config.hideLegend ? 0 : GRID_MARGIN.LEGEND),
29
+ containLabel: true
30
+ };
31
+ };
32
+ const buildGroupedBarOption = (pivot, config) => {
33
+ const colors = pivot.series.map((s, i) => colorFor(s.name, i, config.seriesColors));
34
+ const categoryAxis = {
35
+ type: "category",
36
+ data: pivot.categories,
37
+ // Horizontal bars read top-down, so the first category goes on top.
38
+ inverse: config.invertAxis
39
+ };
40
+ const valueAxis = {
41
+ type: "value",
42
+ name: config.valueLabel,
43
+ nameLocation: "middle",
44
+ nameGap: config.invertAxis ? AXIS_NAME_GAP.X : AXIS_NAME_GAP.Y,
45
+ // Without this a vertical axis name is drawn horizontally and eats the plot's width.
46
+ nameRotate: config.invertAxis ? 0 : 90,
47
+ minInterval: config.integerValues ? 1 : void 0
48
+ };
49
+ return {
50
+ tooltip: {
51
+ trigger: "axis",
52
+ axisPointer: { type: "shadow" },
53
+ formatter: buildTooltipFormatter(pivot, colors, config.noValueText)
54
+ },
55
+ legend: { show: !config.hideLegend, bottom: 0, type: "scroll" },
56
+ grid: buildGrid(config),
57
+ xAxis: config.invertAxis ? valueAxis : categoryAxis,
58
+ yAxis: config.invertAxis ? categoryAxis : valueAxis,
59
+ series: pivot.series.map((s, i) => ({
60
+ name: s.name,
61
+ type: "bar",
62
+ data: s.values,
63
+ barMinHeight: GROUPED_BAR.MIN_BAR_HEIGHT,
64
+ itemStyle: { color: colors[i] },
65
+ emphasis: { focus: "series" }
66
+ }))
67
+ };
4
68
  };
5
69
  export {
6
- styles as default,
7
- root
70
+ buildGroupedBarOption
8
71
  };
9
72
  //# sourceMappingURL=index114.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index114.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
1
+ {"version":3,"file":"index114.js","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":[],"mappings":";AAaA,MAAM,EAAE,aAAa,cAAA,IAAkB;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,UAAS,aAAa,QAAQ,aAAa,MAAM;AAElE,MAAM,YAAY,CAAC,UAAkB;AACnC,QAAM,EAAE,qBAAqB,MAAM,oBAAoB,QAAQ;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,cAAc,YAAY;AAAA,MAC1B,WAAW,EAAE,OAAO,OAAO,CAAC,EAAA;AAAA,MAC5B,UAAU,EAAE,OAAO,SAAA;AAAA,IAAkB,EACrC;AAAA,EAAA;AAEN;"}
package/dist/index115.cjs CHANGED
@@ -1,50 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const jsxRuntime = require("react/jsx-runtime");
4
- const constants = require("./index62.cjs");
5
- const HeatmapMatrix_module = require("./index117.cjs");
6
- function ColumnHeader({ column, rowSpan }) {
7
- return /* @__PURE__ */ jsxRuntime.jsx("th", { scope: "col", rowSpan, className: HeatmapMatrix_module.default.colh, title: column.title, children: column.label });
8
- }
9
- function HeatmapMatrixHeader({
10
- columns,
11
- runs,
12
- columnGroups,
13
- cornerLabel
14
- }) {
15
- const rowSpan = runs ? constants.HEATMAP_GROUPED_HEADER_ROWS : void 0;
16
- const corner = /* @__PURE__ */ jsxRuntime.jsx("th", { scope: "col", rowSpan, className: HeatmapMatrix_module.default.corner, "aria-hidden": cornerLabel == null, children: cornerLabel });
17
- if (!runs) {
18
- return /* @__PURE__ */ jsxRuntime.jsx("thead", { children: /* @__PURE__ */ jsxRuntime.jsxs("tr", { children: [
19
- corner,
20
- columns.map((column) => /* @__PURE__ */ jsxRuntime.jsx(ColumnHeader, { column }, column.key))
21
- ] }) });
22
- }
23
- const groupsByKey = new Map(columnGroups == null ? void 0 : columnGroups.map((group) => [group.key, group]));
24
- const groupedColumns = runs.filter((run) => run.group !== void 0).flatMap((run) => run.columns);
25
- return /* @__PURE__ */ jsxRuntime.jsxs("thead", { children: [
26
- /* @__PURE__ */ jsxRuntime.jsxs("tr", { children: [
27
- corner,
28
- runs.map((run) => {
29
- if (run.group === void 0) {
30
- return run.columns.map((column) => /* @__PURE__ */ jsxRuntime.jsx(ColumnHeader, { column, rowSpan }, column.key));
31
- }
32
- const entry = groupsByKey.get(run.group);
33
- return /* @__PURE__ */ jsxRuntime.jsx(
34
- "th",
35
- {
36
- scope: "colgroup",
37
- colSpan: run.columns.length,
38
- className: HeatmapMatrix_module.default.group,
39
- title: entry == null ? void 0 : entry.title,
40
- children: (entry == null ? void 0 : entry.label) ?? run.group
41
- },
42
- `group-${run.start}`
43
- );
44
- })
45
- ] }),
46
- /* @__PURE__ */ jsxRuntime.jsx("tr", { children: groupedColumns.map((column) => /* @__PURE__ */ jsxRuntime.jsx(ColumnHeader, { column }, column.key)) })
47
- ] });
48
- }
49
- exports.HeatmapMatrixHeader = HeatmapMatrixHeader;
3
+ const DEFAULT_LABELS = {
4
+ loading: "Loading chart...",
5
+ empty: "No data available.",
6
+ retry: "Retry",
7
+ noValue: "No data"
8
+ };
9
+ exports.DEFAULT_LABELS = DEFAULT_LABELS;
50
10
  //# sourceMappingURL=index115.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index115.cjs","sources":["../src/data/HeatmapMatrix/HeatmapMatrixHeader.tsx"],"sourcesContent":["import { HEATMAP_GROUPED_HEADER_ROWS } from '../../constants';\nimport type { HeatmapColumnHeaderProps, HeatmapMatrixHeaderProps } from './HeatmapMatrix.types';\nimport styles from './HeatmapMatrix.module.css';\n\nfunction ColumnHeader({ column, rowSpan }: HeatmapColumnHeaderProps) {\n return (\n <th scope=\"col\" rowSpan={rowSpan} className={styles.colh} title={column.title}>\n {column.label}\n </th>\n );\n}\n\n/**\n * Flat (one row) when `runs` is undefined, so the DOM stays as it was before column groups.\n * Grouped: the corner and ungrouped columns span both rows; each grouped run gets one\n * `scope=\"colgroup\"` header above its columns.\n */\nexport function HeatmapMatrixHeader({\n columns,\n runs,\n columnGroups,\n cornerLabel,\n}: HeatmapMatrixHeaderProps) {\n const rowSpan = runs ? HEATMAP_GROUPED_HEADER_ROWS : undefined;\n const corner = (\n <th scope=\"col\" rowSpan={rowSpan} className={styles.corner} aria-hidden={cornerLabel == null}>\n {cornerLabel}\n </th>\n );\n\n if (!runs) {\n return (\n <thead>\n <tr>\n {corner}\n {columns.map((column) => (\n <ColumnHeader key={column.key} column={column} />\n ))}\n </tr>\n </thead>\n );\n }\n\n const groupsByKey = new Map(columnGroups?.map((group) => [group.key, group]));\n const groupedColumns = runs\n .filter((run) => run.group !== undefined)\n .flatMap((run) => run.columns);\n\n return (\n <thead>\n <tr>\n {corner}\n {runs.map((run) => {\n if (run.group === undefined) {\n return run.columns.map((column) => (\n <ColumnHeader key={column.key} column={column} rowSpan={rowSpan} />\n ));\n }\n const entry = groupsByKey.get(run.group);\n return (\n <th\n key={`group-${run.start}`}\n scope=\"colgroup\"\n colSpan={run.columns.length}\n className={styles.group}\n title={entry?.title}\n >\n {entry?.label ?? run.group}\n </th>\n );\n })}\n </tr>\n <tr>\n {groupedColumns.map((column) => (\n <ColumnHeader key={column.key} column={column} />\n ))}\n </tr>\n </thead>\n );\n}\n"],"names":["jsx","styles","HEATMAP_GROUPED_HEADER_ROWS","jsxs"],"mappings":";;;;;AAIA,SAAS,aAAa,EAAE,QAAQ,WAAqC;AACnE,SACEA,2BAAAA,IAAC,MAAA,EAAG,OAAM,OAAM,SAAkB,WAAWC,qBAAAA,QAAO,MAAM,OAAO,OAAO,OACrE,UAAA,OAAO,OACV;AAEJ;AAOO,SAAS,oBAAoB;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAA6B;AAC3B,QAAM,UAAU,OAAOC,UAAAA,8BAA8B;AACrD,QAAM,SACJF,2BAAAA,IAAC,MAAA,EAAG,OAAM,OAAM,SAAkB,WAAWC,qBAAAA,QAAO,QAAQ,eAAa,eAAe,MACrF,UAAA,aACH;AAGF,MAAI,CAAC,MAAM;AACT,WACED,2BAAAA,IAAC,SAAA,EACC,UAAAG,2BAAAA,KAAC,MAAA,EACE,UAAA;AAAA,MAAA;AAAA,MACA,QAAQ,IAAI,CAAC,0CACX,cAAA,EAA8B,OAAA,GAAZ,OAAO,GAAqB,CAChD;AAAA,IAAA,EAAA,CACH,EAAA,CACF;AAAA,EAEJ;AAEA,QAAM,cAAc,IAAI,IAAI,6CAAc,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,KAAK,EAAE;AAC5E,QAAM,iBAAiB,KACpB,OAAO,CAAC,QAAQ,IAAI,UAAU,MAAS,EACvC,QAAQ,CAAC,QAAQ,IAAI,OAAO;AAE/B,yCACG,SAAA,EACC,UAAA;AAAA,IAAAA,gCAAC,MAAA,EACE,UAAA;AAAA,MAAA;AAAA,MACA,KAAK,IAAI,CAAC,QAAQ;AACjB,YAAI,IAAI,UAAU,QAAW;AAC3B,iBAAO,IAAI,QAAQ,IAAI,CAAC,WACtBH,2BAAAA,IAAC,cAAA,EAA8B,QAAgB,QAAA,GAA5B,OAAO,GAAuC,CAClE;AAAA,QACH;AACA,cAAM,QAAQ,YAAY,IAAI,IAAI,KAAK;AACvC,eACEA,2BAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YAEC,OAAM;AAAA,YACN,SAAS,IAAI,QAAQ;AAAA,YACrB,WAAWC,qBAAAA,QAAO;AAAA,YAClB,OAAO,+BAAO;AAAA,YAEb,WAAA,+BAAO,UAAS,IAAI;AAAA,UAAA;AAAA,UANhB,SAAS,IAAI,KAAK;AAAA,QAAA;AAAA,MAS7B,CAAC;AAAA,IAAA,GACH;AAAA,IACAD,2BAAAA,IAAC,MAAA,EACE,UAAA,eAAe,IAAI,CAAC,WACnBA,2BAAAA,IAAC,cAAA,EAA8B,OAAA,GAAZ,OAAO,GAAqB,CAChD,EAAA,CACH;AAAA,EAAA,GACF;AAEJ;;"}
1
+ {"version":3,"file":"index115.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/index115.js CHANGED
@@ -1,50 +1,10 @@
1
- import { jsx, jsxs } from "react/jsx-runtime";
2
- import { HEATMAP_GROUPED_HEADER_ROWS } from "./index62.js";
3
- import styles from "./index117.js";
4
- function ColumnHeader({ column, rowSpan }) {
5
- return /* @__PURE__ */ jsx("th", { scope: "col", rowSpan, className: styles.colh, title: column.title, children: column.label });
6
- }
7
- function HeatmapMatrixHeader({
8
- columns,
9
- runs,
10
- columnGroups,
11
- cornerLabel
12
- }) {
13
- const rowSpan = runs ? HEATMAP_GROUPED_HEADER_ROWS : void 0;
14
- const corner = /* @__PURE__ */ jsx("th", { scope: "col", rowSpan, className: styles.corner, "aria-hidden": cornerLabel == null, children: cornerLabel });
15
- if (!runs) {
16
- return /* @__PURE__ */ jsx("thead", { children: /* @__PURE__ */ jsxs("tr", { children: [
17
- corner,
18
- columns.map((column) => /* @__PURE__ */ jsx(ColumnHeader, { column }, column.key))
19
- ] }) });
20
- }
21
- const groupsByKey = new Map(columnGroups == null ? void 0 : columnGroups.map((group) => [group.key, group]));
22
- const groupedColumns = runs.filter((run) => run.group !== void 0).flatMap((run) => run.columns);
23
- return /* @__PURE__ */ jsxs("thead", { children: [
24
- /* @__PURE__ */ jsxs("tr", { children: [
25
- corner,
26
- runs.map((run) => {
27
- if (run.group === void 0) {
28
- return run.columns.map((column) => /* @__PURE__ */ jsx(ColumnHeader, { column, rowSpan }, column.key));
29
- }
30
- const entry = groupsByKey.get(run.group);
31
- return /* @__PURE__ */ jsx(
32
- "th",
33
- {
34
- scope: "colgroup",
35
- colSpan: run.columns.length,
36
- className: styles.group,
37
- title: entry == null ? void 0 : entry.title,
38
- children: (entry == null ? void 0 : entry.label) ?? run.group
39
- },
40
- `group-${run.start}`
41
- );
42
- })
43
- ] }),
44
- /* @__PURE__ */ jsx("tr", { children: groupedColumns.map((column) => /* @__PURE__ */ jsx(ColumnHeader, { column }, column.key)) })
45
- ] });
46
- }
1
+ const DEFAULT_LABELS = {
2
+ loading: "Loading chart...",
3
+ empty: "No data available.",
4
+ retry: "Retry",
5
+ noValue: "No data"
6
+ };
47
7
  export {
48
- HeatmapMatrixHeader
8
+ DEFAULT_LABELS
49
9
  };
50
10
  //# sourceMappingURL=index115.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index115.js","sources":["../src/data/HeatmapMatrix/HeatmapMatrixHeader.tsx"],"sourcesContent":["import { HEATMAP_GROUPED_HEADER_ROWS } from '../../constants';\nimport type { HeatmapColumnHeaderProps, HeatmapMatrixHeaderProps } from './HeatmapMatrix.types';\nimport styles from './HeatmapMatrix.module.css';\n\nfunction ColumnHeader({ column, rowSpan }: HeatmapColumnHeaderProps) {\n return (\n <th scope=\"col\" rowSpan={rowSpan} className={styles.colh} title={column.title}>\n {column.label}\n </th>\n );\n}\n\n/**\n * Flat (one row) when `runs` is undefined, so the DOM stays as it was before column groups.\n * Grouped: the corner and ungrouped columns span both rows; each grouped run gets one\n * `scope=\"colgroup\"` header above its columns.\n */\nexport function HeatmapMatrixHeader({\n columns,\n runs,\n columnGroups,\n cornerLabel,\n}: HeatmapMatrixHeaderProps) {\n const rowSpan = runs ? HEATMAP_GROUPED_HEADER_ROWS : undefined;\n const corner = (\n <th scope=\"col\" rowSpan={rowSpan} className={styles.corner} aria-hidden={cornerLabel == null}>\n {cornerLabel}\n </th>\n );\n\n if (!runs) {\n return (\n <thead>\n <tr>\n {corner}\n {columns.map((column) => (\n <ColumnHeader key={column.key} column={column} />\n ))}\n </tr>\n </thead>\n );\n }\n\n const groupsByKey = new Map(columnGroups?.map((group) => [group.key, group]));\n const groupedColumns = runs\n .filter((run) => run.group !== undefined)\n .flatMap((run) => run.columns);\n\n return (\n <thead>\n <tr>\n {corner}\n {runs.map((run) => {\n if (run.group === undefined) {\n return run.columns.map((column) => (\n <ColumnHeader key={column.key} column={column} rowSpan={rowSpan} />\n ));\n }\n const entry = groupsByKey.get(run.group);\n return (\n <th\n key={`group-${run.start}`}\n scope=\"colgroup\"\n colSpan={run.columns.length}\n className={styles.group}\n title={entry?.title}\n >\n {entry?.label ?? run.group}\n </th>\n );\n })}\n </tr>\n <tr>\n {groupedColumns.map((column) => (\n <ColumnHeader key={column.key} column={column} />\n ))}\n </tr>\n </thead>\n );\n}\n"],"names":[],"mappings":";;;AAIA,SAAS,aAAa,EAAE,QAAQ,WAAqC;AACnE,SACE,oBAAC,MAAA,EAAG,OAAM,OAAM,SAAkB,WAAW,OAAO,MAAM,OAAO,OAAO,OACrE,UAAA,OAAO,OACV;AAEJ;AAOO,SAAS,oBAAoB;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAA6B;AAC3B,QAAM,UAAU,OAAO,8BAA8B;AACrD,QAAM,SACJ,oBAAC,MAAA,EAAG,OAAM,OAAM,SAAkB,WAAW,OAAO,QAAQ,eAAa,eAAe,MACrF,UAAA,aACH;AAGF,MAAI,CAAC,MAAM;AACT,WACE,oBAAC,SAAA,EACC,UAAA,qBAAC,MAAA,EACE,UAAA;AAAA,MAAA;AAAA,MACA,QAAQ,IAAI,CAAC,+BACX,cAAA,EAA8B,OAAA,GAAZ,OAAO,GAAqB,CAChD;AAAA,IAAA,EAAA,CACH,EAAA,CACF;AAAA,EAEJ;AAEA,QAAM,cAAc,IAAI,IAAI,6CAAc,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,KAAK,EAAE;AAC5E,QAAM,iBAAiB,KACpB,OAAO,CAAC,QAAQ,IAAI,UAAU,MAAS,EACvC,QAAQ,CAAC,QAAQ,IAAI,OAAO;AAE/B,8BACG,SAAA,EACC,UAAA;AAAA,IAAA,qBAAC,MAAA,EACE,UAAA;AAAA,MAAA;AAAA,MACA,KAAK,IAAI,CAAC,QAAQ;AACjB,YAAI,IAAI,UAAU,QAAW;AAC3B,iBAAO,IAAI,QAAQ,IAAI,CAAC,WACtB,oBAAC,cAAA,EAA8B,QAAgB,QAAA,GAA5B,OAAO,GAAuC,CAClE;AAAA,QACH;AACA,cAAM,QAAQ,YAAY,IAAI,IAAI,KAAK;AACvC,eACE;AAAA,UAAC;AAAA,UAAA;AAAA,YAEC,OAAM;AAAA,YACN,SAAS,IAAI,QAAQ;AAAA,YACrB,WAAW,OAAO;AAAA,YAClB,OAAO,+BAAO;AAAA,YAEb,WAAA,+BAAO,UAAS,IAAI;AAAA,UAAA;AAAA,UANhB,SAAS,IAAI,KAAK;AAAA,QAAA;AAAA,MAS7B,CAAC;AAAA,IAAA,GACH;AAAA,IACA,oBAAC,MAAA,EACE,UAAA,eAAe,IAAI,CAAC,WACnB,oBAAC,cAAA,EAA8B,OAAA,GAAZ,OAAO,GAAqB,CAChD,EAAA,CACH;AAAA,EAAA,GACF;AAEJ;"}
1
+ {"version":3,"file":"index115.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/index116.cjs CHANGED
@@ -1,20 +1,42 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- function getColumnRuns(columns) {
4
- const runs = [];
5
- columns.forEach((column, index) => {
6
- const current = runs[runs.length - 1];
7
- if (current && current.group === column.group) {
8
- current.columns.push(column);
9
- } else {
10
- runs.push({ group: column.group, start: index, columns: [column] });
11
- }
12
- });
13
- return runs;
14
- }
15
- function hasColumnGroups(columns) {
16
- return columns.some((column) => column.group !== void 0);
17
- }
18
- exports.getColumnRuns = getColumnRuns;
19
- exports.hasColumnGroups = hasColumnGroups;
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
28
+ };
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;
20
42
  //# sourceMappingURL=index116.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index116.cjs","sources":["../src/data/HeatmapMatrix/getColumnRuns.ts"],"sourcesContent":["import type { ColumnRun, HeatmapColumn } from './HeatmapMatrix.types';\n\n/**\n * Splits `columns` into runs of consecutive columns sharing the same `group`. Never sorts: a group\n * that appears in two non-contiguous places yields two runs, and ungrouped columns form their own\n * runs (`group` undefined).\n */\nexport function getColumnRuns(columns: HeatmapColumn[]): ColumnRun[] {\n const runs: ColumnRun[] = [];\n columns.forEach((column, index) => {\n const current = runs[runs.length - 1];\n if (current && current.group === column.group) {\n current.columns.push(column);\n } else {\n runs.push({ group: column.group, start: index, columns: [column] });\n }\n });\n return runs;\n}\n\n/** True when at least one column declares a `group`, i.e. the two-row header is needed. */\nexport function hasColumnGroups(columns: HeatmapColumn[]): boolean {\n return columns.some((column) => column.group !== undefined);\n}\n"],"names":[],"mappings":";;AAOO,SAAS,cAAc,SAAuC;AACnE,QAAM,OAAoB,CAAA;AAC1B,UAAQ,QAAQ,CAAC,QAAQ,UAAU;AACjC,UAAM,UAAU,KAAK,KAAK,SAAS,CAAC;AACpC,QAAI,WAAW,QAAQ,UAAU,OAAO,OAAO;AAC7C,cAAQ,QAAQ,KAAK,MAAM;AAAA,IAC7B,OAAO;AACL,WAAK,KAAK,EAAE,OAAO,OAAO,OAAO,OAAO,OAAO,SAAS,CAAC,MAAM,EAAA,CAAG;AAAA,IACpE;AAAA,EACF,CAAC;AACD,SAAO;AACT;AAGO,SAAS,gBAAgB,SAAmC;AACjE,SAAO,QAAQ,KAAK,CAAC,WAAW,OAAO,UAAU,MAAS;AAC5D;;;"}
1
+ {"version":3,"file":"index116.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/dist/index116.js CHANGED
@@ -1,20 +1,42 @@
1
- function getColumnRuns(columns) {
2
- const runs = [];
3
- columns.forEach((column, index) => {
4
- const current = runs[runs.length - 1];
5
- if (current && current.group === column.group) {
6
- current.columns.push(column);
7
- } else {
8
- runs.push({ group: column.group, start: index, columns: [column] });
9
- }
10
- });
11
- return runs;
12
- }
13
- function hasColumnGroups(columns) {
14
- return columns.some((column) => column.group !== void 0);
15
- }
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
26
+ };
16
27
  export {
17
- getColumnRuns,
18
- hasColumnGroups
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
19
41
  };
20
42
  //# sourceMappingURL=index116.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index116.js","sources":["../src/data/HeatmapMatrix/getColumnRuns.ts"],"sourcesContent":["import type { ColumnRun, HeatmapColumn } from './HeatmapMatrix.types';\n\n/**\n * Splits `columns` into runs of consecutive columns sharing the same `group`. Never sorts: a group\n * that appears in two non-contiguous places yields two runs, and ungrouped columns form their own\n * runs (`group` undefined).\n */\nexport function getColumnRuns(columns: HeatmapColumn[]): ColumnRun[] {\n const runs: ColumnRun[] = [];\n columns.forEach((column, index) => {\n const current = runs[runs.length - 1];\n if (current && current.group === column.group) {\n current.columns.push(column);\n } else {\n runs.push({ group: column.group, start: index, columns: [column] });\n }\n });\n return runs;\n}\n\n/** True when at least one column declares a `group`, i.e. the two-row header is needed. */\nexport function hasColumnGroups(columns: HeatmapColumn[]): boolean {\n return columns.some((column) => column.group !== undefined);\n}\n"],"names":[],"mappings":"AAOO,SAAS,cAAc,SAAuC;AACnE,QAAM,OAAoB,CAAA;AAC1B,UAAQ,QAAQ,CAAC,QAAQ,UAAU;AACjC,UAAM,UAAU,KAAK,KAAK,SAAS,CAAC;AACpC,QAAI,WAAW,QAAQ,UAAU,OAAO,OAAO;AAC7C,cAAQ,QAAQ,KAAK,MAAM;AAAA,IAC7B,OAAO;AACL,WAAK,KAAK,EAAE,OAAO,OAAO,OAAO,OAAO,OAAO,SAAS,CAAC,MAAM,EAAA,CAAG;AAAA,IACpE;AAAA,EACF,CAAC;AACD,SAAO;AACT;AAGO,SAAS,gBAAgB,SAAmC;AACjE,SAAO,QAAQ,KAAK,CAAC,WAAW,OAAO,UAAU,MAAS;AAC5D;"}
1
+ {"version":3,"file":"index116.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/dist/index117.cjs CHANGED
@@ -1,39 +1,38 @@
1
1
  "use strict";
2
- Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
- const wrap = "krc-wrap-JRsc1";
4
- const root = "krc-root-k9ocd";
5
- const colh = "krc-colh-Fi0Kr";
6
- const group = "krc-group-rVQPU";
7
- const groupStart = "krc-groupStart-bu8S4";
8
- const rowh = "krc-rowh-bTG4G";
9
- const corner = "krc-corner-MNGJd";
10
- const cell = "krc-cell-i0lDG";
11
- const bad = "krc-bad-Hb1F3";
12
- const ok = "krc-ok-hx6Lc";
13
- const clickable = "krc-clickable-Q8fZg";
14
- const styles = {
15
- wrap,
16
- root,
17
- colh,
18
- group,
19
- groupStart,
20
- rowh,
21
- corner,
22
- cell,
23
- bad,
24
- ok,
25
- clickable
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const MAX_LATITUDE = 90;
4
+ const MAX_LONGITUDE = 180;
5
+ const hasUsableCoordinates = (point) => Number.isFinite(point.latitude) && Number.isFinite(point.longitude) && Math.abs(point.latitude) <= MAX_LATITUDE && Math.abs(point.longitude) <= MAX_LONGITUDE;
6
+ const sample = (points, cap) => {
7
+ if (cap <= 1) return points.slice(0, Math.max(cap, 0));
8
+ const step = (points.length - 1) / (cap - 1);
9
+ return Array.from({ length: cap }, (_, i) => points[Math.round(i * step)]);
26
10
  };
27
- exports.bad = bad;
28
- exports.cell = cell;
29
- exports.clickable = clickable;
30
- exports.colh = colh;
31
- exports.corner = corner;
32
- exports.default = styles;
33
- exports.group = group;
34
- exports.groupStart = groupStart;
35
- exports.ok = ok;
36
- exports.root = root;
37
- exports.rowh = rowh;
38
- exports.wrap = wrap;
11
+ const boundsOf = (points) => {
12
+ if (points.length === 0) return null;
13
+ const latitudes = points.map((p) => p.point.latitude);
14
+ const longitudes = points.map((p) => p.point.longitude);
15
+ return [
16
+ [Math.min(...latitudes), Math.min(...longitudes)],
17
+ [Math.max(...latitudes), Math.max(...longitudes)]
18
+ ];
19
+ };
20
+ const normalizePoints = (points, maxPoints) => {
21
+ const usable = [];
22
+ points.forEach((point, sourceIndex) => {
23
+ if (hasUsableCoordinates(point)) usable.push({ point, sourceIndex });
24
+ });
25
+ const drawn = usable.length > maxPoints ? sample(usable, maxPoints) : usable;
26
+ return {
27
+ drawn,
28
+ bounds: boundsOf(drawn),
29
+ info: {
30
+ total: points.length,
31
+ drawn: drawn.length,
32
+ skipped: points.length - usable.length,
33
+ dropped: usable.length - drawn.length
34
+ }
35
+ };
36
+ };
37
+ exports.normalizePoints = normalizePoints;
39
38
  //# sourceMappingURL=index117.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index117.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index117.cjs","sources":["../src/geo/GeoMapCard/normalizePoints.ts"],"sourcesContent":["import type { GeoPoint, GeoRenderInfo } from '../../types/geo.types';\n\n/** A point that survived validation, paired with where it came from. */\nexport interface DrawnPoint {\n point: GeoPoint;\n /** Index in the original `points` array, not in the normalised one. */\n sourceIndex: number;\n}\n\n/** South-west and north-east corners, in Leaflet's `[lat, lng]` order. */\nexport type GeoBounds = [[number, number], [number, number]];\n\nexport interface NormalizeResult {\n drawn: DrawnPoint[];\n bounds: GeoBounds | null;\n info: GeoRenderInfo;\n}\n\nconst MAX_LATITUDE = 90;\nconst MAX_LONGITUDE = 180;\n\n/**\n * Garbage coordinates are the norm in network inventories, not the exception:\n * nulls, empty strings coerced to NaN and swapped lat/lng all show up.\n */\nconst hasUsableCoordinates = (point: GeoPoint): boolean =>\n Number.isFinite(point.latitude) &&\n Number.isFinite(point.longitude) &&\n Math.abs(point.latitude) <= MAX_LATITUDE &&\n Math.abs(point.longitude) <= MAX_LONGITUDE;\n\n/**\n * Evenly spread `cap` markers across `points`, always keeping the first and last.\n * Deterministic on purpose: the same data must always draw the same map.\n */\nconst sample = (points: DrawnPoint[], cap: number): DrawnPoint[] => {\n if (cap <= 1) return points.slice(0, Math.max(cap, 0));\n\n const step = (points.length - 1) / (cap - 1);\n\n return Array.from({ length: cap }, (_, i) => points[Math.round(i * step)]);\n};\n\nconst boundsOf = (points: DrawnPoint[]): GeoBounds | null => {\n if (points.length === 0) return null;\n\n const latitudes = points.map((p) => p.point.latitude);\n const longitudes = points.map((p) => p.point.longitude);\n\n return [\n [Math.min(...latitudes), Math.min(...longitudes)],\n [Math.max(...latitudes), Math.max(...longitudes)],\n ];\n};\n\n/**\n * Drop the unplottable points, cap the marker count, then report what happened.\n *\n * Coincident points are *not* folded the way the scatter chart folds them: on a\n * map two cells at the same site are two cells, and zooming already separates\n * them.\n *\n * The reported counts satisfy `total === drawn + skipped + dropped`.\n */\nexport const normalizePoints = (points: GeoPoint[], maxPoints: number): NormalizeResult => {\n const usable: DrawnPoint[] = [];\n\n points.forEach((point, sourceIndex) => {\n if (hasUsableCoordinates(point)) usable.push({ point, sourceIndex });\n });\n\n const drawn = usable.length > maxPoints ? sample(usable, maxPoints) : usable;\n\n return {\n drawn,\n bounds: boundsOf(drawn),\n info: {\n total: points.length,\n drawn: drawn.length,\n skipped: points.length - usable.length,\n dropped: usable.length - drawn.length,\n },\n };\n};\n"],"names":[],"mappings":";;AAkBA,MAAM,eAAe;AACrB,MAAM,gBAAgB;AAMtB,MAAM,uBAAuB,CAAC,UAC5B,OAAO,SAAS,MAAM,QAAQ,KAC9B,OAAO,SAAS,MAAM,SAAS,KAC/B,KAAK,IAAI,MAAM,QAAQ,KAAK,gBAC5B,KAAK,IAAI,MAAM,SAAS,KAAK;AAM/B,MAAM,SAAS,CAAC,QAAsB,QAA8B;AAClE,MAAI,OAAO,EAAG,QAAO,OAAO,MAAM,GAAG,KAAK,IAAI,KAAK,CAAC,CAAC;AAErD,QAAM,QAAQ,OAAO,SAAS,MAAM,MAAM;AAE1C,SAAO,MAAM,KAAK,EAAE,QAAQ,OAAO,CAAC,GAAG,MAAM,OAAO,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC;AAC3E;AAEA,MAAM,WAAW,CAAC,WAA2C;AAC3D,MAAI,OAAO,WAAW,EAAG,QAAO;AAEhC,QAAM,YAAY,OAAO,IAAI,CAAC,MAAM,EAAE,MAAM,QAAQ;AACpD,QAAM,aAAa,OAAO,IAAI,CAAC,MAAM,EAAE,MAAM,SAAS;AAEtD,SAAO;AAAA,IACL,CAAC,KAAK,IAAI,GAAG,SAAS,GAAG,KAAK,IAAI,GAAG,UAAU,CAAC;AAAA,IAChD,CAAC,KAAK,IAAI,GAAG,SAAS,GAAG,KAAK,IAAI,GAAG,UAAU,CAAC;AAAA,EAAA;AAEpD;AAWO,MAAM,kBAAkB,CAAC,QAAoB,cAAuC;AACzF,QAAM,SAAuB,CAAA;AAE7B,SAAO,QAAQ,CAAC,OAAO,gBAAgB;AACrC,QAAI,qBAAqB,KAAK,EAAG,QAAO,KAAK,EAAE,OAAO,aAAa;AAAA,EACrE,CAAC;AAED,QAAM,QAAQ,OAAO,SAAS,YAAY,OAAO,QAAQ,SAAS,IAAI;AAEtE,SAAO;AAAA,IACL;AAAA,IACA,QAAQ,SAAS,KAAK;AAAA,IACtB,MAAM;AAAA,MACJ,OAAO,OAAO;AAAA,MACd,OAAO,MAAM;AAAA,MACb,SAAS,OAAO,SAAS,OAAO;AAAA,MAChC,SAAS,OAAO,SAAS,MAAM;AAAA,IAAA;AAAA,EACjC;AAEJ;;"}