lintje 0.2.0 → 0.3.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 (276) hide show
  1. package/README.md +2 -2
  2. package/dist-elements/actions.js +1 -1
  3. package/dist-elements/chunks/{base-Bg-IFOPG.js → base-CbmWxUig.js} +444 -272
  4. package/dist-elements/chunks/{controls-B1455oPG.js → controls-DxmnDSBr.js} +6 -0
  5. package/dist-elements/chunks/dialog-DChINFxD.js +28 -0
  6. package/dist-elements/chunks/{disclosure-BXTX04gM.js → disclosure-D39vAR5q.js} +1 -1
  7. package/dist-elements/chunks/{disclosure-CMXhX-Vb.js → disclosure-DLkXPUpV.js} +6 -6
  8. package/dist-elements/chunks/download-Ct9q2anY.js +206 -0
  9. package/dist-elements/chunks/{focus-trap-9BnE-xWv.js → focus-trap-BwOxE5BX.js} +1 -1
  10. package/dist-elements/chunks/input-CRW_exv_.js +195 -0
  11. package/dist-elements/chunks/{player-DXOZEyEy.js → player-B8QXJ0Z5.js} +26 -26
  12. package/dist-elements/chunks/{sentence-BI3lwEuT.js → sentence-B19AyZBS.js} +3 -3
  13. package/dist-elements/chunks/{stagger-qGD3wmhg.js → stagger-BHoOgy0g.js} +81 -75
  14. package/dist-elements/core.js +1 -1
  15. package/dist-elements/custom-elements.json +980 -670
  16. package/dist-elements/data-types.json +6798 -0
  17. package/dist-elements/feedback.js +2 -1
  18. package/dist-elements/frame.js +0 -2
  19. package/dist-elements/guides/dashboard.md +8 -0
  20. package/dist-elements/guides/events.md +4 -5
  21. package/dist-elements/guides/loading.md +8 -7
  22. package/dist-elements/guides/page-contents.md +110 -0
  23. package/dist-elements/guides/start.md +12 -0
  24. package/dist-elements/inputs.js +2 -1
  25. package/dist-elements/layout.js +1 -1
  26. package/dist-elements/lintje.js +6975 -6120
  27. package/dist-elements/overlays.js +2 -2
  28. package/dist-elements/skills/lintje/SKILL.md +1 -1
  29. package/dist-elements/tables.js +1 -1
  30. package/dist-elements/tag/activity-log.js +15 -15
  31. package/dist-elements/tag/ai-label.js +10 -10
  32. package/dist-elements/tag/announcement.js +36 -76
  33. package/dist-elements/tag/app-search.js +49 -49
  34. package/dist-elements/tag/audio-player.js +57 -57
  35. package/dist-elements/tag/badge.js +1 -1
  36. package/dist-elements/tag/breadcrumbs.js +15 -15
  37. package/dist-elements/tag/button.js +1 -1
  38. package/dist-elements/tag/card-list.js +12 -12
  39. package/dist-elements/tag/card.js +39 -44
  40. package/dist-elements/tag/chart.js +1050 -795
  41. package/dist-elements/tag/chat-answer.js +49 -49
  42. package/dist-elements/tag/chat-composer.js +75 -71
  43. package/dist-elements/tag/chat-message.js +8 -8
  44. package/dist-elements/tag/chat-strip.js +22 -22
  45. package/dist-elements/tag/chat-suggestions.js +12 -12
  46. package/dist-elements/tag/chat.js +56 -56
  47. package/dist-elements/tag/checkbox-group.d.ts +1 -0
  48. package/dist-elements/tag/checkbox-group.js +59 -0
  49. package/dist-elements/tag/checkbox.js +8 -8
  50. package/dist-elements/tag/code.js +9 -9
  51. package/dist-elements/tag/combobox.js +18 -18
  52. package/dist-elements/tag/conflict-alert.js +12 -12
  53. package/dist-elements/tag/copy-button.js +14 -14
  54. package/dist-elements/tag/data-table.js +878 -530
  55. package/dist-elements/tag/date-input.js +30 -30
  56. package/dist-elements/tag/date-range.js +37 -37
  57. package/dist-elements/tag/description-list.js +29 -32
  58. package/dist-elements/tag/dialog.d.ts +1 -0
  59. package/dist-elements/tag/dialog.js +144 -0
  60. package/dist-elements/tag/document-viewer.js +23 -23
  61. package/dist-elements/tag/drawer.js +28 -32
  62. package/dist-elements/tag/empty-state.js +19 -30
  63. package/dist-elements/tag/error-page.d.ts +1 -0
  64. package/dist-elements/tag/error-page.js +109 -0
  65. package/dist-elements/tag/error-summary.js +10 -10
  66. package/dist-elements/tag/expander.js +8 -8
  67. package/dist-elements/tag/explainer.js +11 -11
  68. package/dist-elements/tag/field.js +5 -5
  69. package/dist-elements/tag/file-upload.js +34 -34
  70. package/dist-elements/tag/filter-bar.js +56 -56
  71. package/dist-elements/tag/filter-sheet.js +11 -11
  72. package/dist-elements/tag/filter-zone.js +31 -31
  73. package/dist-elements/tag/footer.js +21 -21
  74. package/dist-elements/tag/form-actions.js +29 -25
  75. package/dist-elements/tag/form-section.js +6 -6
  76. package/dist-elements/tag/form.js +12 -12
  77. package/dist-elements/tag/gallery.js +14 -14
  78. package/dist-elements/tag/grid-item.js +1 -1
  79. package/dist-elements/tag/grid.js +1 -1
  80. package/dist-elements/tag/hero.js +12 -12
  81. package/dist-elements/tag/highlight.js +5 -5
  82. package/dist-elements/tag/icon-button.js +1 -1
  83. package/dist-elements/tag/icon.js +1 -1
  84. package/dist-elements/tag/job-list.js +22 -44
  85. package/dist-elements/tag/kpi-row.js +12 -10
  86. package/dist-elements/tag/kpi.js +146 -137
  87. package/dist-elements/tag/level-meter.js +11 -11
  88. package/dist-elements/tag/list.js +55 -55
  89. package/dist-elements/tag/logo.js +30 -30
  90. package/dist-elements/tag/map.js +690 -665
  91. package/dist-elements/tag/menu-button.js +70 -69
  92. package/dist-elements/tag/modal.js +28 -37
  93. package/dist-elements/tag/multiselect.js +34 -34
  94. package/dist-elements/tag/note.js +5 -5
  95. package/dist-elements/tag/notifications.js +36 -36
  96. package/dist-elements/tag/number-input.js +12 -12
  97. package/dist-elements/tag/page-header.js +140 -37
  98. package/dist-elements/tag/pagination.js +53 -48
  99. package/dist-elements/tag/popover.js +1 -1
  100. package/dist-elements/tag/progress-bar.js +1 -1
  101. package/dist-elements/tag/prose.js +6 -6
  102. package/dist-elements/tag/qr-code.js +7 -7
  103. package/dist-elements/tag/radio-group.js +12 -12
  104. package/dist-elements/tag/range.js +22 -22
  105. package/dist-elements/tag/recording-status.js +14 -14
  106. package/dist-elements/tag/repeater.js +10 -10
  107. package/dist-elements/tag/segmented.js +13 -13
  108. package/dist-elements/tag/select.js +10 -10
  109. package/dist-elements/tag/shell.js +356 -339
  110. package/dist-elements/tag/skeleton.js +1 -1
  111. package/dist-elements/tag/slot-picker.js +14 -14
  112. package/dist-elements/tag/sortable-list.js +14 -14
  113. package/dist-elements/tag/spinner.js +1 -1
  114. package/dist-elements/tag/split-pane.js +12 -12
  115. package/dist-elements/tag/status-dot.js +1 -1
  116. package/dist-elements/tag/stepper.js +21 -21
  117. package/dist-elements/tag/streaming-text.js +13 -13
  118. package/dist-elements/tag/sub-nav.js +39 -38
  119. package/dist-elements/tag/tabs.js +38 -38
  120. package/dist-elements/tag/tag-input.js +19 -19
  121. package/dist-elements/tag/text-editor.js +24 -24
  122. package/dist-elements/tag/text-input.js +14 -14
  123. package/dist-elements/tag/textarea.js +14 -14
  124. package/dist-elements/tag/tile.js +1 -1
  125. package/dist-elements/tag/time-input.js +19 -19
  126. package/dist-elements/tag/toast.js +32 -23
  127. package/dist-elements/tag/toggle.js +8 -8
  128. package/dist-elements/tag/toggletip.js +27 -27
  129. package/dist-elements/tag/tooltip.js +1 -1
  130. package/dist-elements/tag/transcript.js +48 -48
  131. package/dist-elements/tag/translator.js +13 -13
  132. package/dist-elements/tag/tree-view.js +13 -13
  133. package/dist-elements/tag/user-menu.js +37 -37
  134. package/dist-elements/tag/video-player.js +21 -21
  135. package/dist-elements/tokens.css +120 -96
  136. package/dist-elements/types/bundle/feedback.d.ts +1 -0
  137. package/dist-elements/types/bundle/frame.d.ts +0 -2
  138. package/dist-elements/types/bundle/inputs.d.ts +1 -0
  139. package/dist-elements/types/bundle/overlays.d.ts +1 -1
  140. package/dist-elements/types/components/actions/copy-button/copy-button.d.ts +6 -7
  141. package/dist-elements/types/components/actions/menu-button/menu-button.d.ts +13 -15
  142. package/dist-elements/types/components/actions/qr-code/qr-code.d.ts +9 -9
  143. package/dist-elements/types/components/charts/chart/chart.d.ts +5 -4
  144. package/dist-elements/types/components/charts/kpi/kpi.d.ts +16 -8
  145. package/dist-elements/types/components/charts/kpi-row/kpi-row.d.ts +1 -7
  146. package/dist-elements/types/components/charts/note/note.d.ts +1 -1
  147. package/dist-elements/types/components/chat/chat/chat.d.ts +8 -10
  148. package/dist-elements/types/components/chat/chat-answer/chat-answer.d.ts +7 -8
  149. package/dist-elements/types/components/chat/chat-composer/chat-composer.d.ts +8 -10
  150. package/dist-elements/types/components/chat/chat-message/chat-message.d.ts +6 -7
  151. package/dist-elements/types/components/chat/chat-strip/chat-strip.d.ts +5 -5
  152. package/dist-elements/types/components/chat/chat-suggestions/chat-suggestions.d.ts +9 -10
  153. package/dist-elements/types/components/content/audio-player/audio-player.d.ts +10 -12
  154. package/dist-elements/types/components/content/code/code.d.ts +2 -3
  155. package/dist-elements/types/components/content/document-viewer/document-viewer.d.ts +8 -9
  156. package/dist-elements/types/components/content/gallery/gallery.d.ts +5 -4
  157. package/dist-elements/types/components/content/highlight/highlight.d.ts +4 -3
  158. package/dist-elements/types/components/content/prose/prose.d.ts +2 -3
  159. package/dist-elements/types/components/content/transcript/transcript.d.ts +12 -25
  160. package/dist-elements/types/components/content/translator/translator.d.ts +11 -15
  161. package/dist-elements/types/components/content/video-player/video-player.d.ts +11 -13
  162. package/dist-elements/types/components/feedback/ai-label/ai-label.d.ts +3 -4
  163. package/dist-elements/types/components/feedback/announcement/announcement.d.ts +3 -7
  164. package/dist-elements/types/components/feedback/conflict-alert/conflict-alert.d.ts +3 -4
  165. package/dist-elements/types/components/feedback/empty-state/empty-state.d.ts +5 -8
  166. package/dist-elements/types/components/feedback/error-page/error-page.d.ts +52 -0
  167. package/dist-elements/types/components/feedback/job-list/job-list.d.ts +9 -12
  168. package/dist-elements/types/components/feedback/level-meter/level-meter.d.ts +4 -6
  169. package/dist-elements/types/components/feedback/recording-status/recording-status.d.ts +5 -6
  170. package/dist-elements/types/components/feedback/streaming-text/streaming-text.d.ts +10 -7
  171. package/dist-elements/types/components/feedback/toast/toast.d.ts +8 -9
  172. package/dist-elements/types/components/filters/filter-bar/filter-bar.d.ts +9 -4
  173. package/dist-elements/types/components/filters/filter-sheet/filter-sheet.d.ts +5 -5
  174. package/dist-elements/types/components/filters/filter-zone/filter-zone.d.ts +4 -4
  175. package/dist-elements/types/components/forms/error-summary/error-summary.d.ts +5 -6
  176. package/dist-elements/types/components/forms/form/form.d.ts +5 -5
  177. package/dist-elements/types/components/forms/form-actions/form-actions.d.ts +9 -7
  178. package/dist-elements/types/components/forms/form-section/form-section.d.ts +6 -5
  179. package/dist-elements/types/components/forms/repeater/repeater.d.ts +13 -7
  180. package/dist-elements/types/components/forms/stepper/stepper.d.ts +5 -4
  181. package/dist-elements/types/components/frame/app-search/app-search.d.ts +6 -7
  182. package/dist-elements/types/components/frame/breadcrumbs/breadcrumbs.d.ts +2 -2
  183. package/dist-elements/types/components/frame/footer/footer.d.ts +3 -2
  184. package/dist-elements/types/components/frame/hero/hero.d.ts +7 -9
  185. package/dist-elements/types/components/frame/notifications/notifications.d.ts +5 -9
  186. package/dist-elements/types/components/frame/page-header/page-header.d.ts +12 -15
  187. package/dist-elements/types/components/frame/shell/shell.d.ts +14 -13
  188. package/dist-elements/types/components/frame/sub-nav/sub-nav.d.ts +10 -6
  189. package/dist-elements/types/components/frame/user-menu/user-menu.d.ts +11 -10
  190. package/dist-elements/types/components/index.d.ts +8 -9
  191. package/dist-elements/types/components/inputs/checkbox/checkbox.d.ts +4 -4
  192. package/dist-elements/types/components/inputs/checkbox-group/checkbox-group.d.ts +33 -0
  193. package/dist-elements/types/components/inputs/combobox/combobox.d.ts +12 -6
  194. package/dist-elements/types/components/inputs/date-input/date-input.d.ts +5 -5
  195. package/dist-elements/types/components/inputs/date-range/date-range.d.ts +11 -6
  196. package/dist-elements/types/components/inputs/field/field.d.ts +5 -3
  197. package/dist-elements/types/components/inputs/file-upload/file-upload.d.ts +6 -8
  198. package/dist-elements/types/components/inputs/multiselect/multiselect.d.ts +4 -6
  199. package/dist-elements/types/components/inputs/number-input/number-input.d.ts +8 -7
  200. package/dist-elements/types/components/inputs/radio-group/radio-group.d.ts +2 -4
  201. package/dist-elements/types/components/inputs/range/range.d.ts +5 -6
  202. package/dist-elements/types/components/inputs/segmented/segmented.d.ts +7 -4
  203. package/dist-elements/types/components/inputs/select/select.d.ts +6 -3
  204. package/dist-elements/types/components/inputs/slot-picker/slot-picker.d.ts +6 -5
  205. package/dist-elements/types/components/inputs/tag-input/tag-input.d.ts +7 -5
  206. package/dist-elements/types/components/inputs/text-editor/text-editor.d.ts +6 -6
  207. package/dist-elements/types/components/inputs/text-input/text-input.d.ts +11 -6
  208. package/dist-elements/types/components/inputs/textarea/textarea.d.ts +12 -11
  209. package/dist-elements/types/components/inputs/time-input/time-input.d.ts +7 -8
  210. package/dist-elements/types/components/inputs/toggle/toggle.d.ts +3 -1
  211. package/dist-elements/types/components/layout/expander/expander.d.ts +9 -10
  212. package/dist-elements/types/components/layout/split-pane/split-pane.d.ts +6 -6
  213. package/dist-elements/types/components/layout/tabs/tabs.d.ts +11 -9
  214. package/dist-elements/types/components/map/map/map.d.ts +10 -9
  215. package/dist-elements/types/components/overlays/dialog/dialog.d.ts +49 -0
  216. package/dist-elements/types/components/overlays/drawer/drawer.d.ts +6 -5
  217. package/dist-elements/types/components/overlays/modal/modal.d.ts +7 -12
  218. package/dist-elements/types/components/overlays/toggletip/toggletip.d.ts +3 -7
  219. package/dist-elements/types/components/shared/charts/index.d.ts +4 -1
  220. package/dist-elements/types/components/shared/charts/kinds.d.ts +86 -0
  221. package/dist-elements/types/components/shared/charts/line-chart/line-chart.d.ts +2 -2
  222. package/dist-elements/types/components/shared/charts/map-chart/leaflet.d.ts +5 -0
  223. package/dist-elements/types/components/shared/charts/shared/chart-states.d.ts +8 -19
  224. package/dist-elements/types/components/shared/charts/shared/controller.d.ts +7 -0
  225. package/dist-elements/types/components/shared/charts/shared/types.d.ts +29 -0
  226. package/dist-elements/types/components/shared/charts/stacked-area-chart/stacked-area-chart.d.ts +13 -0
  227. package/dist-elements/types/components/shared/dialog.d.ts +9 -0
  228. package/dist-elements/types/components/shared/overflow.d.ts +58 -0
  229. package/dist-elements/types/components/tables/activity-log/activity-log.d.ts +2 -3
  230. package/dist-elements/types/components/tables/card/card.d.ts +14 -20
  231. package/dist-elements/types/components/tables/card-list/card-list.d.ts +9 -11
  232. package/dist-elements/types/components/tables/data-table/data-table.d.ts +85 -16
  233. package/dist-elements/types/components/tables/data-table/filters.d.ts +13 -4
  234. package/dist-elements/types/components/tables/description-list/description-list.d.ts +12 -11
  235. package/dist-elements/types/components/tables/list/list.d.ts +9 -20
  236. package/dist-elements/types/components/tables/pagination/pagination.d.ts +12 -11
  237. package/dist-elements/types/components/tables/sortable-list/sortable-list.d.ts +5 -6
  238. package/dist-elements/types/components/tables/tree-view/tree-view.d.ts +4 -4
  239. package/dist-elements/types/core/media.d.ts +2 -2
  240. package/dist-elements/types/core/motion.d.ts +5 -0
  241. package/dist-elements/types/core/print.d.ts +15 -0
  242. package/dist-elements/types/core/shortcuts.d.ts +2 -2
  243. package/dist-elements/types/icons/icon/icon.d.ts +2 -3
  244. package/dist-elements/types/icons/register.d.ts +1 -1
  245. package/dist-elements/types/primitives/badge/badge.d.ts +9 -5
  246. package/dist-elements/types/primitives/button/button.d.ts +12 -9
  247. package/dist-elements/types/primitives/grid/grid.d.ts +3 -3
  248. package/dist-elements/types/primitives/grid-item/grid-item.d.ts +1 -1
  249. package/dist-elements/types/primitives/icon-button/icon-button.d.ts +7 -5
  250. package/dist-elements/types/primitives/index.d.ts +3 -1
  251. package/dist-elements/types/primitives/popover/popover.d.ts +5 -4
  252. package/dist-elements/types/primitives/progress-bar/progress-bar.d.ts +8 -6
  253. package/dist-elements/types/primitives/shared/announcement-block.d.ts +38 -0
  254. package/dist-elements/types/primitives/shared/empty-state-block.d.ts +26 -0
  255. package/dist-elements/types/primitives/shared/tone.d.ts +18 -0
  256. package/dist-elements/types/primitives/skeleton/skeleton.d.ts +1 -1
  257. package/dist-elements/types/primitives/spinner/spinner.d.ts +1 -2
  258. package/dist-elements/types/primitives/status-dot/status-dot.d.ts +4 -5
  259. package/dist-elements/types/primitives/tile/tile.d.ts +17 -5
  260. package/dist-elements/types/primitives/tooltip/tooltip.d.ts +6 -6
  261. package/dist-elements/types/types.d.ts +70 -10
  262. package/dist-icons/functioneel-kolommen.svg +1 -0
  263. package/dist-icons/functioneel-trechter.svg +1 -0
  264. package/package.json +1 -1
  265. package/dist-elements/chunks/confirm-dialog-D5EVGuil.js +0 -4
  266. package/dist-elements/chunks/download-y528pIHP.js +0 -230
  267. package/dist-elements/chunks/input-BtuNFSWk.js +0 -195
  268. package/dist-elements/tag/confirm-dialog.d.ts +0 -1
  269. package/dist-elements/tag/confirm-dialog.js +0 -118
  270. package/dist-elements/tag/session-expiry.d.ts +0 -1
  271. package/dist-elements/tag/session-expiry.js +0 -184
  272. package/dist-elements/tag/shortcuts.d.ts +0 -1
  273. package/dist-elements/tag/shortcuts.js +0 -104
  274. package/dist-elements/types/components/frame/session-expiry/session-expiry.d.ts +0 -55
  275. package/dist-elements/types/components/frame/shortcuts/shortcuts.d.ts +0 -41
  276. package/dist-elements/types/components/overlays/confirm-dialog/confirm-dialog.d.ts +0 -41
@@ -1,32 +1,32 @@
1
- import { A as e, Bt as t, Gt as n, Ht as r, Jt as i, Lt as a, S as o, c as s, d as c, i as l, k as u, l as d, o as f, p, qt as m, r as h, s as g, ut as _, w as v } from "../chunks/base-Bg-IFOPG.js";
2
- import { t as y } from "./announcement.js";
1
+ import { F as e, I as t, Kt as n, O as r, Yt as i, Zt as a, _ as o, bt as s, c, en as l, h as u, i as d, l as f, nn as p, o as m, p as h, r as g, rn as _, s as v, v as y, y as b } from "../chunks/base-CbmWxUig.js";
2
+ import { t as x } from "./announcement.js";
3
3
  import "./segmented.js";
4
- import { a as b, c as x, d as S, i as C, n as w, o as T, s as E, t as D } from "../chunks/download-y528pIHP.js";
5
- import { C as O, E as k, S as A, T as j, _ as M, a as N, b as P, c as F, f as I, g as L, h as R, i as z, l as ee, n as B, o as V, p as te, r as H, s as ne, t as re, u as ie, v as U, w as W, x as G, y as K } from "../chunks/stagger-qGD3wmhg.js";
4
+ import { a as S, c as C, i as w, n as T, t as E } from "../chunks/download-Ct9q2anY.js";
5
+ import { C as D, E as O, S as k, T as A, _ as j, a as M, b as N, c as P, f as F, g as I, h as L, i as R, l as ee, n as z, o as B, p as V, r as H, s as te, t as ne, u as U, v as W, w as G, x as K, y as q } from "../chunks/stagger-BHoOgy0g.js";
6
6
  import "./data-table.js";
7
7
  //#region src/components/shared/charts/shared/plot-keys.ts
8
- var q = /* @__PURE__ */ new Set(["ArrowRight", "ArrowDown"]), ae = /* @__PURE__ */ new Set(["ArrowLeft", "ArrowUp"]);
9
- function oe(e) {
10
- return `${e.title}: ${e.rows.map((e) => `${e.label} ${e.value}`.trim()).join(", ")}`;
8
+ var J = /* @__PURE__ */ new Set(["ArrowRight", "ArrowDown"]), Y = /* @__PURE__ */ new Set(["ArrowLeft", "ArrowUp"]);
9
+ function re(e) {
10
+ return [`${e.title}: ${e.rows.map((e) => `${e.label} ${e.value}`.trim()).join(", ")}`, ...(e.events ?? []).map((e) => `Gebeurtenis ${e.number}: ${e.label}`)].join(". ");
11
11
  }
12
- function J(e) {
12
+ function X(e) {
13
13
  try {
14
14
  return e.matches(":focus-visible");
15
15
  } catch {
16
16
  return !0;
17
17
  }
18
18
  }
19
- function Y(e, t, n) {
19
+ function Z(e, t, n) {
20
20
  let r = (t, r) => {
21
21
  let i = n(r), a = t.closest("[data-tooltip-anchor]"), o = t.getBoundingClientRect(), s = a?.getBoundingClientRect() ?? o;
22
- e.hoverIndex = r, e.status = oe(i.content), e.showTooltipAt(o.left - s.left + i.x, o.top - s.top + i.y, i.content);
22
+ e.hoverIndex = r, e.status = re(i.content), e.showTooltipAt(o.left - s.left + i.x, o.top - s.top + i.y, i.content);
23
23
  };
24
24
  return {
25
25
  keydown(n) {
26
26
  if (n.target !== n.currentTarget || t === 0) return;
27
27
  let i = e.hoverIndex ?? -1, a;
28
- if (q.has(n.key)) a = Math.min(t - 1, i + 1);
29
- else if (ae.has(n.key)) a = Math.max(0, i - 1);
28
+ if (J.has(n.key)) a = Math.min(t - 1, i + 1);
29
+ else if (Y.has(n.key)) a = Math.max(0, i - 1);
30
30
  else if (n.key === "Home") a = 0;
31
31
  else if (n.key === "End") a = t - 1;
32
32
  else return;
@@ -34,168 +34,205 @@ function Y(e, t, n) {
34
34
  },
35
35
  focus(n) {
36
36
  let i = n.currentTarget;
37
- n.target === i && t !== 0 && J(i) && r(i, Math.min(e.hoverIndex ?? 0, t - 1));
37
+ n.target === i && t !== 0 && X(i) && r(i, Math.min(e.hoverIndex ?? 0, t - 1));
38
38
  },
39
39
  blur() {
40
40
  (e.hoverIndex != null || e.status) && (e.hoverIndex = null, e.status = "", e.hideTooltip(), e.requestUpdate());
41
41
  }
42
42
  };
43
43
  }
44
- function X(e) {
45
- return m`<p class="visually-hidden" role="status">${e.status}</p>`;
44
+ function Q(e) {
45
+ return p`<p class="visually-hidden" role="status">${e.status}</p>`;
46
46
  }
47
47
  //#endregion
48
48
  //#region src/components/shared/charts/line-chart/line-chart.ts
49
+ var $ = 18, ie = 4, ae = 8;
50
+ function oe(e) {
51
+ let t = [];
52
+ return e.map((e) => {
53
+ let n = t.findIndex((t) => t.every((t) => Math.abs(t - e) >= 22));
54
+ return n === -1 && (n = t.push([]) - 1), t[n].push(e), n;
55
+ });
56
+ }
49
57
  function se(e, t) {
50
- let { controller: r, description: a } = t, { labels: o, axisTitle: s, unit: l, asOfIndex: u, asOfLabel: f, pendingHours: p = 0, fixedMax: h, small: _ = !1 } = e, v = r.id;
51
- r.measure({
58
+ let { controller: n, description: r } = t, { labels: i, axisTitle: a, unit: o, asOfIndex: c, asOfLabel: u, pendingHours: d = 0, fixedMax: m, small: g = !1 } = e, y = (e.events ?? []).filter((e) => Number.isInteger(e.index) && e.index >= 0 && e.index < i.length).sort((e, t) => e.index - t.index).map((e, t) => ({
59
+ ...e,
60
+ number: t + 1
61
+ })), b = n.id;
62
+ n.measure({
52
63
  width: !0,
53
- height: t.height ?? (_ ? "--chart-h-small" : "--chart-h-main"),
64
+ height: t.height ?? (g ? "--chart-h-small" : "--chart-h-main"),
54
65
  fit: !!t.expanded && !t.mobile
55
66
  });
56
- let y = e.series.filter((e) => !e.comparison).length > 1, b = 0, x = e.series.map((e) => ({
67
+ let x = e.series.filter((e) => !e.comparison).length > 1, S = 0, C = e.series.map((e) => ({
57
68
  ...e,
58
- color: I(e.color),
59
- symbol: y && !e.comparison ? L(e.color) ? e.color : R[b++ % R.length] : void 0
60
- })), S = x.filter((e) => !r.hiddenSeries.includes(e.label)), C = S.flatMap((e) => e.values).filter((e) => e != null), { max: w, ticks: T } = G(h ?? Math.max(...C, 1)), E = P(T, r.width, {
61
- fontFamily: r.fontFamily,
62
- minimum: Math.ceil(d(o[0] ?? "", r.fontFamily) / 2)
63
- }), D = K(t, { left: E.width }), A = p > 6, N = u ?? o.length - 1, F = (e) => e.comparison ? "var(--color-chart-secondary)" : e.color ?? "var(--color-chart-default)", z = x.map((e) => ({
69
+ color: F(e.color),
70
+ symbol: x && !e.comparison ? I(e.color) ? e.color : L[S++ % L.length] : void 0
71
+ })), w = C.filter((e) => !n.hiddenSeries.includes(e.label)), T = w.flatMap((e) => e.values).filter((e) => e != null), { max: E, ticks: k } = K(m ?? Math.max(...T, 1)), M = N(k, n.width, {
72
+ fontFamily: n.fontFamily,
73
+ minimum: Math.ceil(f(i[0] ?? "", n.fontFamily) / 2)
74
+ }), P = q(t, { left: M.width }), R = y.map((e) => Math.min(P.width - $ / 2, Math.max($ / 2, A(e.index, i.length, P)))), z = oe(R), ne = z.length ? Math.max(...z) + 1 : 0, U = q(t, {
75
+ left: M.width,
76
+ ...ne ? { top: ne * 22 + ae } : {}
77
+ }), W = (e) => ie + z[e] * 22, G = d > 6, J = c ?? i.length - 1, Y = (e) => e.comparison ? "var(--color-chart-secondary)" : e.color ?? "var(--color-chart-default)", re = C.map((e) => ({
64
78
  label: e.label,
65
- color: F(e),
79
+ color: Y(e),
66
80
  shape: e.comparison ? "dashed" : "line",
67
81
  symbol: e.symbol,
68
- hidden: r.hiddenSeries.includes(e.label)
69
- })), B = Math.max(1, Math.ceil(o.length / 8)), re = o.map((e, t) => ({
82
+ hidden: n.hiddenSeries.includes(e.label)
83
+ })), X = Math.max(1, Math.ceil(i.length / 8)), se = i.map((e, t) => ({
70
84
  label: e,
71
- x: j(t, o.length, D),
85
+ x: A(t, i.length, U),
72
86
  i: t
73
- })).filter((e) => e.i % B === 0);
74
- function ie(e) {
87
+ })).filter((e) => e.i % X === 0);
88
+ function ce(e) {
89
+ let t = y.filter((t) => t.index === e);
75
90
  return {
76
- title: o[e],
77
- rows: S.map((t) => ({
91
+ title: i[e],
92
+ rows: w.map((t) => ({
78
93
  label: t.label,
79
- value: t.values[e] == null ? "geen gegevens" : g(t.values[e]),
80
- color: F(t)
81
- }))
94
+ value: t.values[e] == null ? "geen gegevens" : v(t.values[e]),
95
+ color: Y(t)
96
+ })),
97
+ ...t.length ? { events: t } : {}
82
98
  };
83
99
  }
84
- let U = Y(r, o.length, (e) => {
85
- let t = S.map((t) => t.values[e]).filter((e) => e != null);
100
+ let le = Z(n, i.length, (e) => {
101
+ let t = w.map((t) => t.values[e]).filter((e) => e != null);
86
102
  return {
87
- x: j(e, o.length, D),
88
- y: t.length ? k(Math.max(...t), w, D) : D.top,
89
- content: ie(e)
103
+ x: A(e, i.length, U),
104
+ y: t.length ? O(Math.max(...t), E, U) : U.top,
105
+ content: ce(e)
90
106
  };
91
- }), W = [
92
- p > 0 ? (() => {
93
- let e = j(N, o.length, D), t = A ? O(D) / (o.length - 1) : D.width - D.right - e;
94
- return i`<rect x=${e} y=${D.top} width=${Math.max(0, t)}
95
- height=${D.height - D.top - D.bottom}
96
- fill="url(#hatch-${v})" />`;
97
- })() : n,
98
- i`<g class="lintje-chart__reveal">
99
- ${S.map((e) => {
100
- let t = F(e), r = e.comparison ? void 0 : te(t), a = [[]];
107
+ }), ue = [
108
+ d > 0 ? (() => {
109
+ let e = A(J, i.length, U), t = G ? D(U) / (i.length - 1) : U.width - U.right - e;
110
+ return _`<rect x=${e} y=${U.top} width=${Math.max(0, t)}
111
+ height=${U.height - U.top - U.bottom}
112
+ fill="url(#hatch-${b})" />`;
113
+ })() : l,
114
+ y.length ? _`<g>
115
+ ${y.map((e, t) => {
116
+ let n = A(e.index, i.length, U);
117
+ return _`<line class="lintje-chart__event-line" x1=${n} x2=${n}
118
+ y1=${W(t) + $} y2=${U.height - U.bottom} />`;
119
+ })}
120
+ ${y.map((e, t) => _`
121
+ <rect class="lintje-chart__event-chip" x=${R[t] - $ / 2} y=${W(t)}
122
+ width=${$} height=${$} />
123
+ <text class="lintje-chart__event-number" x=${R[t]} y=${W(t) + $ / 2}
124
+ text-anchor="middle" dominant-baseline="central">${e.number}</text>
125
+ `)}
126
+ </g>` : l,
127
+ _`<g class="lintje-chart__reveal">
128
+ ${w.map((e) => {
129
+ let t = Y(e), n = e.comparison ? void 0 : V(t), r = [[]];
101
130
  e.values.forEach((e, t) => {
102
- e == null || A && t > N ? a[a.length - 1].length && a.push([]) : a[a.length - 1].push({
103
- x: j(t, o.length, D),
104
- y: k(e, w, D)
131
+ e == null || G && t > J ? r[r.length - 1].length && r.push([]) : r[r.length - 1].push({
132
+ x: A(t, i.length, U),
133
+ y: O(e, E, U)
105
134
  });
106
135
  });
107
- let s = a.filter((e) => e.length > 0);
108
- if (s.length === 0) return n;
109
- let c = s[s.length - 1], l = c[c.length - 1], u = D.height - D.bottom;
110
- return i`
136
+ let a = r.filter((e) => e.length > 0);
137
+ if (a.length === 0) return l;
138
+ let o = a[a.length - 1], s = o[o.length - 1], c = U.height - U.bottom;
139
+ return _`
111
140
  <g>
112
- ${s.map((a) => {
113
- let o = a.map((e) => `${e.x},${e.y}`).join(" ");
114
- return i`
115
- ${e.area && !e.comparison ? i`<polygon fill=${t} fill-opacity=".14"
116
- points=${`${a[0].x},${u} ${o} ${a[a.length - 1].x},${u}`} />` : n}
117
- ${r && a.length > 1 ? i`<polyline class="lintje-chart__line lintje-chart__line--casing" points=${o} stroke=${r} />` : n}
118
- ${a.length === 1 ? i`<circle cx=${a[0].x} cy=${a[0].y} r="2.5" fill=${t} />` : i`<polyline
141
+ ${a.map((r) => {
142
+ let i = r.map((e) => `${e.x},${e.y}`).join(" ");
143
+ return _`
144
+ ${e.area && !e.comparison ? _`<polygon fill=${t} fill-opacity=".14"
145
+ points=${`${r[0].x},${c} ${i} ${r[r.length - 1].x},${c}`} />` : l}
146
+ ${n && r.length > 1 ? _`<polyline class="lintje-chart__line lintje-chart__line--casing" points=${i} stroke=${n} />` : l}
147
+ ${r.length === 1 ? _`<circle cx=${r[0].x} cy=${r[0].y} r="2.5" fill=${t} />` : _`<polyline
119
148
  class="lintje-chart__line"
120
- points=${o}
149
+ points=${i}
121
150
  stroke=${t}
122
- stroke-dasharray=${e.comparison ? "5 4" : n}
151
+ stroke-dasharray=${e.comparison ? "5 4" : l}
123
152
  opacity=${e.comparison ? .9 : 1} />`}
124
153
  `;
125
154
  })}
126
155
  <!-- The line's own shape at its end; a 4 px point there at an early as-of time. -->
127
- ${e.symbol ? i`<path class="lintje-chart__line-end" d=${M(e.symbol, 4.5, l.x, l.y)} fill=${t} />` : A && !e.comparison ? i`<circle cx=${l.x} cy=${l.y} r="4" fill=${t} />` : n}
156
+ ${e.symbol ? _`<path class="lintje-chart__line-end" d=${j(e.symbol, 4.5, s.x, s.y)} fill=${t} />` : G && !e.comparison ? _`<circle cx=${s.x} cy=${s.y} r="4" fill=${t} />` : l}
128
157
  </g>
129
158
  `;
130
159
  })}
131
160
  </g>`,
132
- A && f ? V({
133
- area: D,
134
- index: N,
135
- count: o.length,
136
- label: `peilmoment ${f}`,
137
- pendingHours: p,
161
+ G && u ? B({
162
+ area: U,
163
+ index: J,
164
+ count: i.length,
165
+ label: `peilmoment ${u}`,
166
+ pendingHours: d,
138
167
  lastValue: (() => {
139
- let e = S.find((e) => !e.comparison)?.values[N];
140
- return e == null ? void 0 : `${g(e)}${l ? ` ${l}` : ""}`;
168
+ let e = w.find((e) => !e.comparison)?.values[J];
169
+ return e == null ? void 0 : `${v(e)}${o ? ` ${o}` : ""}`;
141
170
  })()
142
- }) : n,
143
- r.hoverIndex == null ? n : S.map((e) => {
144
- let t = r.hoverIndex, a = e.values[t];
145
- return a == null || A && t > N ? n : i`<circle class="lintje-chart__hover-point" r="4" fill=${F(e)}
146
- cx=${j(t, o.length, D)}
147
- cy=${k(a, w, D)} />`;
171
+ }) : l,
172
+ n.hoverIndex == null ? l : w.map((e) => {
173
+ let t = n.hoverIndex, r = e.values[t];
174
+ return r == null || G && t > J ? l : _`<circle class="lintje-chart__hover-point" r="4" fill=${Y(e)}
175
+ cx=${A(t, i.length, U)}
176
+ cy=${O(r, E, U)} />`;
148
177
  }),
149
- o.map((e, t) => {
150
- let n = j(t, o.length, D), a = O(D) / Math.max(1, o.length - 1);
151
- return i`
152
- <rect x=${n - a / 2} y=${D.top} width=${a}
153
- height=${D.height - D.top - D.bottom}
178
+ i.map((e, t) => {
179
+ let r = A(t, i.length, U), a = D(U) / Math.max(1, i.length - 1);
180
+ return _`
181
+ <rect x=${r - a / 2} y=${U.top} width=${a}
182
+ height=${U.height - U.top - U.bottom}
154
183
  fill="transparent"
155
- @mousemove=${(e) => r.hoverAt(t, e, ie(t))}
156
- @mouseleave=${() => r.hoverAt(null)} />
184
+ @mousemove=${(e) => n.hoverAt(t, e, ce(t))}
185
+ @mouseleave=${() => n.hoverAt(null)} />
157
186
  `;
158
187
  })
159
188
  ];
160
- return m`
161
- <div class="lintje-chart-wrap ${_ ? "lintje-chart--small" : ""}"
162
- ${c(r.attach)} ?data-in-view=${r.inView} data-tooltip-anchor
163
- @keydown=${(e) => r.dismiss(e)}>
189
+ return p`
190
+ <div class="lintje-chart-wrap ${g ? "lintje-chart--small" : ""}"
191
+ ${s({ "--lintje-event-size": `${$}px` })}
192
+ ${h(n.attach)} ?data-in-view=${n.inView} data-tooltip-anchor
193
+ @keydown=${(e) => n.dismiss(e)}>
164
194
  ${ee({
165
- items: z,
166
- onToggle: (e) => r.toggleSeries(e)
195
+ items: re,
196
+ onToggle: (e) => n.toggleSeries(e)
167
197
  })}
168
- ${ne({
169
- fontFamily: r.fontFamily,
170
- id: v,
171
- ticks: T,
172
- max: w,
173
- area: D,
174
- formatTick: E.format,
175
- axisTitle: s ?? l,
176
- xLabels: re,
177
- description: a,
178
- keys: U
179
- }, W)}
180
- ${H(r)}
181
- ${X(r)}
198
+ ${te({
199
+ fontFamily: n.fontFamily,
200
+ id: b,
201
+ ticks: k,
202
+ max: E,
203
+ area: U,
204
+ formatTick: M.format,
205
+ axisTitle: a ?? o,
206
+ xLabels: se,
207
+ description: y.length ? `${r} ${y.map((e) => `Gebeurtenis ${e.number}, ${i[e.index]}: ${e.label}.`).join(" ")}` : r,
208
+ keys: le
209
+ }, ue)}
210
+ ${y.length ? p`<ol class="lintje-chart-events" aria-label="Gebeurtenissen">
211
+ ${y.map((e) => p`<li class="lintje-chart-events__item">
212
+ <span class="lintje-event-chip"><span class="lintje-event-chip__number">${e.number}</span></span>
213
+ <span><span class="lintje-chart-events__category">${i[e.index]}</span> ·
214
+ ${e.label}</span>
215
+ </li>`)}
216
+ </ol>` : l}
217
+ ${H(n)}
218
+ ${Q(n)}
182
219
  </div>
183
220
  `;
184
221
  }
185
222
  //#endregion
186
223
  //#region src/components/shared/charts/shared/mark-select.ts
187
- var Z = {
224
+ var ce = {
188
225
  clickable: !1,
189
226
  state: "",
190
- markId: n,
191
- role: n,
192
- tabIndex: n,
193
- pressed: n,
194
- label: n,
195
- click: n,
196
- keydown: n
227
+ markId: l,
228
+ role: l,
229
+ tabIndex: l,
230
+ pressed: l,
231
+ label: l,
232
+ click: l,
233
+ keydown: l
197
234
  };
198
- function Q(e, t) {
235
+ function le(e, t) {
199
236
  let n = /* @__PURE__ */ new Set();
200
237
  for (let e of t) e?.href && n.add(e.id);
201
238
  let r = e.selectedId != null && n.has(e.selectedId) ? e.selectedId : null, i = () => {
@@ -212,8 +249,8 @@ function Q(e, t) {
212
249
  active: r,
213
250
  interactive: !!e.onSelect && n.size > 0,
214
251
  of(t, n, i) {
215
- if (!t?.href || !e.onSelect) return r == null ? Z : {
216
- ...Z,
252
+ if (!t?.href || !e.onSelect) return r == null ? ce : {
253
+ ...ce,
217
254
  state: "is-muted"
218
255
  };
219
256
  let o = t.id === r;
@@ -238,304 +275,304 @@ function Q(e, t) {
238
275
  }
239
276
  //#endregion
240
277
  //#region src/components/shared/charts/bar-chart/bar-chart.ts
241
- var ce = [
278
+ var ue = [
242
279
  "var(--color-chart-tint-1)",
243
280
  "var(--color-chart-tint-2)",
244
281
  "var(--color-chart-tint-3)",
245
282
  "var(--color-chart-tint-4)",
246
283
  "var(--color-chart-tint-5)"
247
284
  ];
248
- function le(e, t) {
249
- let { controller: r, description: a } = t, { labels: o, values: s, axisTitle: u, trend: d, dataLabels: p = !0, small: h = !1, links: v } = e, y = I(e.color) ?? "var(--color-chart-default)", b = r.id, x = Q(t, v ?? []);
250
- r.measure({
285
+ function de(e, t) {
286
+ let { controller: n, description: r } = t, { labels: i, values: a, axisTitle: o, trend: c, dataLabels: u = !0, small: f = !1, links: g } = e, y = F(e.color) ?? "var(--color-chart-default)", b = n.id, x = le(t, g ?? []);
287
+ n.measure({
251
288
  width: !0,
252
- height: t.height ?? (h ? "--chart-h-small" : "--chart-h-main"),
289
+ height: t.height ?? (f ? "--chart-h-small" : "--chart-h-main"),
253
290
  fit: !!t.expanded && !t.mobile
254
291
  });
255
- let S = s.filter((e) => e != null), { max: C, ticks: w } = G(Math.max(...S, 1)), T = P(w, r.width, { fontFamily: r.fontFamily }), E = K(t, { left: T.width }), D = E.height - E.bottom, { width: O, bandWidth: j } = A(0, o.length, E), M = p && s.every((e) => e == null || l(f(e, O), j - 4)), N = (e) => ({
256
- title: o[e],
292
+ let S = a.filter((e) => e != null), { max: C, ticks: w } = K(Math.max(...S, 1)), T = N(w, n.width, { fontFamily: n.fontFamily }), E = q(t, { left: T.width }), D = E.height - E.bottom, { width: A, bandWidth: j } = k(0, i.length, E), M = u && a.every((e) => e == null || d(m(e, A), j - 4)), P = (e) => ({
293
+ title: i[e],
257
294
  rows: [{
258
- label: u ?? "Waarde",
259
- value: s[e] == null ? "geen gegevens" : g(s[e]),
295
+ label: o ?? "Waarde",
296
+ value: a[e] == null ? "geen gegevens" : v(a[e]),
260
297
  color: y
261
298
  }]
262
- }), F = Y(r, o.length, (e) => ({
263
- x: A(e, o.length, E).center,
264
- y: s[e] == null ? E.top : k(s[e], C, E),
265
- content: N(e)
266
- })), L = [s.map((e, t) => {
267
- let a = A(t, o.length, E);
268
- if (e == null) return i`<rect class="lintje-chart__missing" x=${a.x} y=${E.top} width=${a.width}
299
+ }), I = Z(n, i.length, (e) => ({
300
+ x: k(e, i.length, E).center,
301
+ y: a[e] == null ? E.top : O(a[e], C, E),
302
+ content: P(e)
303
+ })), L = [a.map((e, t) => {
304
+ let r = k(t, i.length, E);
305
+ if (e == null) return _`<rect class="lintje-chart__missing" x=${r.x} y=${E.top} width=${r.width}
269
306
  height=${Math.max(0, D - E.top)} fill="url(#hatch-${b})"
270
- @mousemove=${(e) => r.showTooltip(e, N(t))}
271
- @mouseleave=${() => r.hideTooltip()} />`;
272
- let s = k(e, C, E), c = x.of(v?.[t], o[t], `${o[t]}: ${g(e)}`);
273
- return i`
274
- <g class="lintje-chart__bar-group ${r.hoverIndex === t ? "is-hovered" : ""}"
275
- ${_(B(t, o.length))}
276
- @mousemove=${(e) => r.showTooltip(e, N(t))}
277
- @mouseleave=${() => r.hideTooltip()}>
278
- <rect class="lintje-chart__bar lintje-chart__mark ${c.state}"
279
- x=${a.x} y=${s} width=${a.width} height=${Math.max(0, D - s)} fill=${y}
280
- data-mark-id=${c.markId} role=${c.role} tabindex=${c.tabIndex}
281
- aria-pressed=${c.pressed} aria-label=${c.label}
282
- @click=${c.click} @keydown=${c.keydown} />
283
- ${M ? i`<text x=${a.center} y=${s - 5} text-anchor="middle" class="lintje-chart__data-label">
284
- ${f(e, a.width)}
285
- </text>` : n}
307
+ @mousemove=${(e) => n.showTooltip(e, P(t))}
308
+ @mouseleave=${() => n.hideTooltip()} />`;
309
+ let a = O(e, C, E), o = x.of(g?.[t], i[t], `${i[t]}: ${v(e)}`);
310
+ return _`
311
+ <g class="lintje-chart__bar-group ${n.hoverIndex === t ? "is-hovered" : ""}"
312
+ ${s(z(t, i.length))}
313
+ @mousemove=${(e) => n.showTooltip(e, P(t))}
314
+ @mouseleave=${() => n.hideTooltip()}>
315
+ <rect class="lintje-chart__bar lintje-chart__mark ${o.state}"
316
+ x=${r.x} y=${a} width=${r.width} height=${Math.max(0, D - a)} fill=${y}
317
+ data-mark-id=${o.markId} role=${o.role} tabindex=${o.tabIndex}
318
+ aria-pressed=${o.pressed} aria-label=${o.label}
319
+ @click=${o.click} @keydown=${o.keydown} />
320
+ ${M ? _`<text x=${r.center} y=${a - 5} text-anchor="middle" class="lintje-chart__data-label">
321
+ ${m(e, r.width)}
322
+ </text>` : l}
286
323
  </g>
287
324
  `;
288
- }), d ? i`<polyline
325
+ }), c ? _`<polyline
289
326
  fill="none" stroke="var(--color-chart-emphasis)" stroke-width="1.5" stroke-dasharray="5 4"
290
- points=${d.map((e, t) => e == null ? null : `${A(t, o.length, E).center},${k(e, C, E)}`).filter(Boolean).join(" ")} />` : n];
291
- return m`
292
- <div class="lintje-chart-wrap ${h ? "lintje-chart--small" : ""}"
293
- ${c(r.attach)} ?data-in-view=${r.inView} data-tooltip-anchor
294
- @keydown=${(e) => r.dismiss(e) || x.escape(e)}>
295
- ${ne({
296
- fontFamily: r.fontFamily,
327
+ points=${c.map((e, t) => e == null ? null : `${k(t, i.length, E).center},${O(e, C, E)}`).filter(Boolean).join(" ")} />` : l];
328
+ return p`
329
+ <div class="lintje-chart-wrap ${f ? "lintje-chart--small" : ""}"
330
+ ${h(n.attach)} ?data-in-view=${n.inView} data-tooltip-anchor
331
+ @keydown=${(e) => n.dismiss(e) || x.escape(e)}>
332
+ ${te({
333
+ fontFamily: n.fontFamily,
297
334
  id: b,
298
335
  ticks: w,
299
336
  max: C,
300
337
  area: E,
301
- axisTitle: u,
302
- description: a,
338
+ axisTitle: o,
339
+ description: r,
303
340
  formatTick: T.format,
304
- xLabels: o.map((e, t) => ({
341
+ xLabels: i.map((e, t) => ({
305
342
  label: e,
306
- x: A(t, o.length, E).center
343
+ x: k(t, i.length, E).center
307
344
  })),
308
345
  interactive: x.interactive,
309
- keys: F
346
+ keys: I
310
347
  }, L)}
311
- ${H(r)}
312
- ${X(r)}
348
+ ${H(n)}
349
+ ${Q(n)}
313
350
  </div>
314
351
  `;
315
352
  }
316
353
  //#endregion
317
354
  //#region src/components/shared/charts/horizontal-bar-chart/horizontal-bar-chart.ts
318
- function ue(e) {
355
+ function fe(e) {
319
356
  return e * 26 + 24;
320
357
  }
321
- function de(e, t) {
322
- let { controller: r, description: a } = t, { rows: o, threshold: s, thresholdLabel: l, unit: u } = e, d = I(e.color) ?? "var(--color-chart-dark-yellow)", f = I(e.aboveThresholdColor) ?? "var(--color-chart-red)", p = r.id, h = o.map((e) => e.href ? {
358
+ function pe(e, t) {
359
+ let { controller: n, description: r } = t, { rows: i, threshold: a, thresholdLabel: o, unit: c } = e, u = F(e.color) ?? "var(--color-chart-dark-yellow)", d = F(e.aboveThresholdColor) ?? "var(--color-chart-red)", f = n.id, m = i.map((e) => e.href ? {
323
360
  id: e.id ?? e.label,
324
361
  href: e.href
325
- } : null), v = Q(t, h), y = ue(o.length);
326
- r.measure({
362
+ } : null), g = le(t, m), y = fe(i.length);
363
+ n.measure({
327
364
  width: !0,
328
365
  height: y
329
366
  });
330
- let b = r.width, x = W(o.map((e) => e.label), b, { fontFamily: r.fontFamily }), { labelEnd: S, barStart: C } = x, w = Math.max(...o.map((e) => e.value), s ?? 0) * 1.15, T = (e) => Math.max(40, b - C - 60) * e / w, E = (e) => `${g(e)}${u ? ` ${u}` : ""}`, D = (e) => {
331
- let t = o[e], n = s != null && t.value > s;
367
+ let b = n.width, x = G(i.map((e) => e.label), b, { fontFamily: n.fontFamily }), { labelEnd: S, barStart: C } = x, w = Math.max(...i.map((e) => e.value), a ?? 0) * 1.15, T = (e) => Math.max(40, b - C - 60) * e / w, E = (e) => `${v(e)}${c ? ` ${c}` : ""}`, D = (e) => {
368
+ let t = i[e], n = a != null && t.value > a;
332
369
  return {
333
370
  title: t.label,
334
371
  rows: [{
335
372
  label: "Waarde",
336
373
  value: E(t.value),
337
- color: n ? f : d
338
- }, ...s == null ? [] : [{
374
+ color: n ? d : u
375
+ }, ...a == null ? [] : [{
339
376
  label: "Norm",
340
- value: E(s),
377
+ value: E(a),
341
378
  color: "var(--color-chart-emphasis)"
342
379
  }]]
343
380
  };
344
- }, O = Y(r, o.length, (e) => ({
345
- x: C + T(o[e].value),
381
+ }, O = Z(n, i.length, (e) => ({
382
+ x: C + T(i[e].value),
346
383
  y: e * 26 + 4,
347
384
  content: D(e)
348
385
  }));
349
- return m`
350
- <figure class="lintje-chart lintje-chart--rows" ${c(r.attach)} ?data-in-view=${r.inView}
386
+ return p`
387
+ <figure class="lintje-chart lintje-chart--rows" ${h(n.attach)} ?data-in-view=${n.inView}
351
388
  data-tooltip-anchor
352
- @keydown=${(e) => r.dismiss(e) || v.escape(e)}>
353
- <svg viewBox="0 0 ${b} ${y}" class="lintje-chart__svg" role=${z(v.interactive)}
354
- aria-labelledby="${p}-desc" width=${b} height=${y}
355
- ${_({
389
+ @keydown=${(e) => n.dismiss(e) || g.escape(e)}>
390
+ <svg viewBox="0 0 ${b} ${y}" class="lintje-chart__svg" role=${R(g.interactive)}
391
+ aria-labelledby="${f}-desc" width=${b} height=${y}
392
+ ${s({
356
393
  height: `${y}px`,
357
- ...N(p)
394
+ ...M(f)
358
395
  })}
359
396
  tabindex="0" @keydown=${O.keydown} @focus=${O.focus} @blur=${O.blur}>
360
- <desc id="${p}-desc">${a}</desc>
361
- <defs>${F(p)}</defs>
362
- ${s == null ? n : i`
363
- <line x1=${C + T(s)} x2=${C + T(s)} y1=${4} y2=${o.length * 26 + 2}
397
+ <desc id="${f}-desc">${r}</desc>
398
+ <defs>${P(f)}</defs>
399
+ ${a == null ? l : _`
400
+ <line x1=${C + T(a)} x2=${C + T(a)} y1=${4} y2=${i.length * 26 + 2}
364
401
  stroke="var(--color-chart-emphasis)" stroke-width="1" stroke-dasharray="3 3" />
365
- <text x=${C + T(s) + 6} y=${o.length * 26 + 16} class="lintje-chart__axis-label">
366
- ${l ?? `norm ${g(s)}`}
402
+ <text x=${C + T(a) + 6} y=${i.length * 26 + 16} class="lintje-chart__axis-label">
403
+ ${o ?? `norm ${v(a)}`}
367
404
  </text>
368
405
  `}
369
- ${o.map((e, t) => {
370
- let n = t * 26 + 4, a = s != null && e.value > s, c = T(e.value), l = v.of(h[t], e.label, `${e.label}: ${g(e.value)}${u ? ` ${u}` : ""}`);
371
- return i`
372
- <g class="lintje-chart__bar-row ${r.hoverIndex === t ? "is-hovered" : ""}"
373
- @mousemove=${(e) => r.showTooltip(e, D(t))}
374
- @mouseleave=${() => r.hideTooltip()}>
406
+ ${i.map((e, t) => {
407
+ let r = t * 26 + 4, o = a != null && e.value > a, l = T(e.value), f = g.of(m[t], e.label, `${e.label}: ${v(e.value)}${c ? ` ${c}` : ""}`);
408
+ return _`
409
+ <g class="lintje-chart__bar-row ${n.hoverIndex === t ? "is-hovered" : ""}"
410
+ @mousemove=${(e) => n.showTooltip(e, D(t))}
411
+ @mouseleave=${() => n.hideTooltip()}>
375
412
  <!-- Hit area across the whole row, so the tooltip doesn't flicker between bars. -->
376
- <rect x=${0} y=${n - 5} width=${b} height=${26} fill="transparent" />
377
- <text x=${S} y=${n + 16 - 3} text-anchor="end" class="lintje-chart__axis-label">${x.fit(e.label)}</text>
378
- <rect class="lintje-chart__bar lintje-chart__bar--horizontal lintje-chart__mark ${l.state}"
379
- ${_(B(t, o.length))}
380
- x=${C} y=${n} width=${Math.max(0, c)} height=${16}
381
- fill=${a ? f : d}
382
- data-mark-id=${l.markId} role=${l.role} tabindex=${l.tabIndex}
383
- aria-pressed=${l.pressed} aria-label=${l.label}
384
- @click=${l.click} @keydown=${l.keydown} />
385
- <text x=${C + c + 6} y=${n + 16 - 3} font-weight="700"
386
- class="lintje-chart__data-label ${s == null ? "" : "lintje-chart__data-label--halo"}">
387
- ${g(e.value)}${u ? ` ${u}` : ""}
413
+ <rect x=${0} y=${r - 5} width=${b} height=${26} fill="transparent" />
414
+ <text x=${S} y=${r + 16 - 3} text-anchor="end" class="lintje-chart__axis-label">${x.fit(e.label)}</text>
415
+ <rect class="lintje-chart__bar lintje-chart__bar--horizontal lintje-chart__mark ${f.state}"
416
+ ${s(z(t, i.length))}
417
+ x=${C} y=${r} width=${Math.max(0, l)} height=${16}
418
+ fill=${o ? d : u}
419
+ data-mark-id=${f.markId} role=${f.role} tabindex=${f.tabIndex}
420
+ aria-pressed=${f.pressed} aria-label=${f.label}
421
+ @click=${f.click} @keydown=${f.keydown} />
422
+ <text x=${C + l + 6} y=${r + 16 - 3} font-weight="700"
423
+ class="lintje-chart__data-label ${a == null ? "" : "lintje-chart__data-label--halo"}">
424
+ ${v(e.value)}${c ? ` ${c}` : ""}
388
425
  </text>
389
426
  </g>
390
427
  `;
391
428
  })}
392
429
  </svg>
393
- ${H(r)}
394
- ${X(r)}
430
+ ${H(n)}
431
+ ${Q(n)}
395
432
  </figure>
396
433
  `;
397
434
  }
398
435
  //#endregion
399
436
  //#region src/components/shared/charts/target-progress-chart/target-progress-chart.ts
400
- function fe(e, t) {
401
- let { controller: n, description: r } = t, { rows: a, target: o = 100 } = e, l = n.id, u = ue(a.length);
437
+ function me(e, t) {
438
+ let { controller: n, description: r } = t, { rows: i, target: a = 100 } = e, o = n.id, l = fe(i.length);
402
439
  n.measure({
403
440
  width: !0,
404
- height: u
441
+ height: l
405
442
  });
406
- let d = n.width, f = W(a.map((e) => e.label), d, { fontFamily: n.fontFamily }), { labelEnd: p, barStart: h } = f, g = (e) => Math.max(40, d - h - 70) * e / 110, v = h + g(o), y = (e) => e >= o ? "var(--color-chart-green)" : "var(--color-attention)", b = (e) => ({
407
- title: a[e].label,
443
+ let u = n.width, d = G(i.map((e) => e.label), u, { fontFamily: n.fontFamily }), { labelEnd: f, barStart: m } = d, g = (e) => Math.max(40, u - m - 70) * e / 110, v = m + g(a), y = (e) => e >= a ? "var(--color-chart-green)" : "var(--color-attention)", b = (e) => ({
444
+ title: i[e].label,
408
445
  rows: [{
409
446
  label: "Voortgang",
410
- value: s(a[e].value),
411
- color: y(a[e].value)
447
+ value: c(i[e].value),
448
+ color: y(i[e].value)
412
449
  }, {
413
450
  label: "Doel",
414
- value: s(o),
451
+ value: c(a),
415
452
  color: "var(--color-chart-emphasis)"
416
453
  }]
417
- }), x = Y(n, a.length, (e) => ({
418
- x: h + g(a[e].value),
454
+ }), x = Z(n, i.length, (e) => ({
455
+ x: m + g(i[e].value),
419
456
  y: e * 26 + 4,
420
457
  content: b(e)
421
458
  }));
422
- return m`
423
- <figure class="lintje-chart lintje-chart--rows" ${c(n.attach)} ?data-in-view=${n.inView}
459
+ return p`
460
+ <figure class="lintje-chart lintje-chart--rows" ${h(n.attach)} ?data-in-view=${n.inView}
424
461
  data-tooltip-anchor @keydown=${(e) => n.dismiss(e)}>
425
- <svg viewBox="0 0 ${d} ${u}" class="lintje-chart__svg" role="img"
426
- aria-labelledby="${l}-desc" width=${d} height=${u} ${_({ height: `${u}px` })}
462
+ <svg viewBox="0 0 ${u} ${l}" class="lintje-chart__svg" role="img"
463
+ aria-labelledby="${o}-desc" width=${u} height=${l} ${s({ height: `${l}px` })}
427
464
  tabindex="0" @keydown=${x.keydown} @focus=${x.focus} @blur=${x.blur}>
428
- <desc id="${l}-desc">${r}</desc>
429
- ${a.map((e, t) => {
430
- let r = t * 26 + 4, c = g(e.value), l = y(e.value), u = h + c + 46 > d, m = e.value >= o ? "lintje-chart__data-label--inside" : "lintje-chart__data-label--inside-light";
431
- return i`
465
+ <desc id="${o}-desc">${r}</desc>
466
+ ${i.map((e, t) => {
467
+ let r = t * 26 + 4, o = g(e.value), l = y(e.value), p = m + o + 46 > u, h = e.value >= a ? "lintje-chart__data-label--inside" : "lintje-chart__data-label--inside-light";
468
+ return _`
432
469
  <g class="lintje-chart__bar-row ${n.hoverIndex === t ? "is-hovered" : ""}"
433
470
  @mousemove=${(e) => n.showTooltip(e, b(t))}
434
471
  @mouseleave=${() => n.hideTooltip()}>
435
- <rect x=${0} y=${r - 5} width=${d} height=${26} fill="transparent" />
436
- <text x=${p} y=${r + 16 - 3} text-anchor="end" class="lintje-chart__axis-label">${f.fit(e.label)}</text>
437
- <rect class="lintje-chart__bar lintje-chart__bar--horizontal" ${_(B(t, a.length))}
438
- x=${h} y=${r} width=${Math.max(0, c)} height=${16} fill=${l} />
439
- <text x=${u ? h + c - 6 : h + c + 6} y=${r + 16 - 3}
440
- text-anchor=${u ? "end" : "start"}
441
- class="lintje-chart__data-label ${u ? m : ""}" font-weight="700">${s(e.value)}</text>
472
+ <rect x=${0} y=${r - 5} width=${u} height=${26} fill="transparent" />
473
+ <text x=${f} y=${r + 16 - 3} text-anchor="end" class="lintje-chart__axis-label">${d.fit(e.label)}</text>
474
+ <rect class="lintje-chart__bar lintje-chart__bar--horizontal" ${s(z(t, i.length))}
475
+ x=${m} y=${r} width=${Math.max(0, o)} height=${16} fill=${l} />
476
+ <text x=${p ? m + o - 6 : m + o + 6} y=${r + 16 - 3}
477
+ text-anchor=${p ? "end" : "start"}
478
+ class="lintje-chart__data-label ${p ? h : ""}" font-weight="700">${c(e.value)}</text>
442
479
  </g>
443
480
  `;
444
481
  })}
445
- <line x1=${v} x2=${v} y1=${0} y2=${a.length * 26 + 2}
482
+ <line x1=${v} x2=${v} y1=${0} y2=${i.length * 26 + 2}
446
483
  stroke="var(--color-chart-emphasis)" stroke-width="1" stroke-dasharray="3 3" />
447
- <text x=${v + 6} y=${a.length * 26 + 16} class="lintje-chart__axis-label">norm ${o}</text>
484
+ <text x=${v + 6} y=${i.length * 26 + 16} class="lintje-chart__axis-label">norm ${a}</text>
448
485
  </svg>
449
486
  ${H(n)}
450
- ${X(n)}
487
+ ${Q(n)}
451
488
  </figure>
452
489
  `;
453
490
  }
454
491
  //#endregion
455
492
  //#region src/components/shared/charts/grouped-bar-chart/grouped-bar-chart.ts
456
- function pe(e, t) {
457
- let { controller: r, description: a } = t, { labels: o, axisTitle: s, small: u = !1 } = e, d = r.id;
458
- r.measure({
493
+ function he(e, t) {
494
+ let { controller: n, description: r } = t, { labels: i, axisTitle: a, small: o = !1 } = e, c = n.id;
495
+ n.measure({
459
496
  width: !0,
460
- height: t.height ?? (u ? "--chart-h-small" : "--chart-h-main"),
497
+ height: t.height ?? (o ? "--chart-h-small" : "--chart-h-main"),
461
498
  fit: !!t.expanded && !t.mobile
462
499
  });
463
- let p = e.series.map((e) => ({
500
+ let u = e.series.map((e) => ({
464
501
  ...e,
465
- color: I(e.color)
466
- })), h = p.filter((e) => !r.hiddenSeries.includes(e.label)), v = Q(t, h.flatMap((e) => e.links ?? [])), { max: y, ticks: b } = G(Math.max(...h.flatMap((e) => e.values), 1)), x = P(b, r.width, { fontFamily: r.fontFamily }), S = K(t, { left: x.width }), C = S.height - S.bottom, w = A(0, o.length, S).width / Math.max(1, h.length), T = h.every((e) => e.values.every((e) => l(f(e, w), w - 2))), E = p.map((e, t) => ({
502
+ color: F(e.color)
503
+ })), f = u.filter((e) => !n.hiddenSeries.includes(e.label)), g = le(t, f.flatMap((e) => e.links ?? [])), { max: y, ticks: b } = K(Math.max(...f.flatMap((e) => e.values), 1)), x = N(b, n.width, { fontFamily: n.fontFamily }), S = q(t, { left: x.width }), C = S.height - S.bottom, w = k(0, i.length, S).width / Math.max(1, f.length), T = f.every((e) => e.values.every((e) => d(m(e, w), w - 2))), E = u.map((e, t) => ({
467
504
  label: e.label,
468
505
  color: e.color ?? (t === 0 ? "var(--color-chart-default)" : "var(--color-chart-secondary)"),
469
506
  shape: "square",
470
- hidden: r.hiddenSeries.includes(e.label)
471
- })), D = (e, t) => E[p.indexOf(e)]?.color ?? ce[t], O = (e) => ({
472
- title: o[e],
473
- rows: h.map((t, n) => ({
507
+ hidden: n.hiddenSeries.includes(e.label)
508
+ })), D = (e, t) => E[u.indexOf(e)]?.color ?? ue[t], A = (e) => ({
509
+ title: i[e],
510
+ rows: f.map((t, n) => ({
474
511
  label: t.label,
475
- value: g(t.values[e]),
512
+ value: v(t.values[e]),
476
513
  color: D(t, n)
477
514
  }))
478
- }), j = Y(r, o.length, (e) => ({
479
- x: A(e, o.length, S).center,
480
- y: k(Math.max(0, ...h.map((t) => t.values[e])), y, S),
481
- content: O(e)
482
- })), M = o.map((e, t) => {
483
- let a = A(t, o.length, S);
484
- return i`
485
- <g class="lintje-chart__bar-group ${r.hoverIndex === t ? "is-hovered" : ""}"
486
- ${_(B(t, o.length))}
487
- @mousemove=${(e) => r.showTooltip(e, O(t))}
488
- @mouseleave=${() => r.hideTooltip()}>
489
- ${h.map((r, o) => {
490
- let s = r.values[t], c = k(s, y, S), l = D(r, o), u = v.of(r.links?.[t], `${e} · ${r.label}`, `${e}, ${r.label}: ${g(s)}`);
491
- return i`
515
+ }), j = Z(n, i.length, (e) => ({
516
+ x: k(e, i.length, S).center,
517
+ y: O(Math.max(0, ...f.map((t) => t.values[e])), y, S),
518
+ content: A(e)
519
+ })), M = i.map((e, t) => {
520
+ let r = k(t, i.length, S);
521
+ return _`
522
+ <g class="lintje-chart__bar-group ${n.hoverIndex === t ? "is-hovered" : ""}"
523
+ ${s(z(t, i.length))}
524
+ @mousemove=${(e) => n.showTooltip(e, A(t))}
525
+ @mouseleave=${() => n.hideTooltip()}>
526
+ ${f.map((n, i) => {
527
+ let a = n.values[t], o = O(a, y, S), s = D(n, i), c = g.of(n.links?.[t], `${e} · ${n.label}`, `${e}, ${n.label}: ${v(a)}`);
528
+ return _`
492
529
  <g>
493
- <rect class="lintje-chart__bar lintje-chart__mark ${u.state}"
494
- x=${a.x + o * w} y=${c} width=${w - 2}
495
- height=${Math.max(0, C - c)} fill=${l}
496
- data-mark-id=${u.markId} role=${u.role} tabindex=${u.tabIndex}
497
- aria-pressed=${u.pressed} aria-label=${u.label}
498
- @click=${u.click} @keydown=${u.keydown} />
499
- ${T ? i`<text x=${a.x + o * w + (w - 2) / 2} y=${c - 4}
500
- text-anchor="middle" class="lintje-chart__data-label">${f(s, w)}</text>` : n}
530
+ <rect class="lintje-chart__bar lintje-chart__mark ${c.state}"
531
+ x=${r.x + i * w} y=${o} width=${w - 2}
532
+ height=${Math.max(0, C - o)} fill=${s}
533
+ data-mark-id=${c.markId} role=${c.role} tabindex=${c.tabIndex}
534
+ aria-pressed=${c.pressed} aria-label=${c.label}
535
+ @click=${c.click} @keydown=${c.keydown} />
536
+ ${T ? _`<text x=${r.x + i * w + (w - 2) / 2} y=${o - 4}
537
+ text-anchor="middle" class="lintje-chart__data-label">${m(a, w)}</text>` : l}
501
538
  </g>
502
539
  `;
503
540
  })}
504
541
  </g>
505
542
  `;
506
543
  });
507
- return m`
508
- <div class="lintje-chart-wrap ${u ? "lintje-chart--small" : ""}"
509
- ${c(r.attach)} ?data-in-view=${r.inView} data-tooltip-anchor
510
- @keydown=${(e) => r.dismiss(e) || v.escape(e)}>
544
+ return p`
545
+ <div class="lintje-chart-wrap ${o ? "lintje-chart--small" : ""}"
546
+ ${h(n.attach)} ?data-in-view=${n.inView} data-tooltip-anchor
547
+ @keydown=${(e) => n.dismiss(e) || g.escape(e)}>
511
548
  ${ee({
512
549
  items: E,
513
- onToggle: (e) => r.toggleSeries(e)
550
+ onToggle: (e) => n.toggleSeries(e)
514
551
  })}
515
- ${ne({
516
- fontFamily: r.fontFamily,
517
- id: d,
552
+ ${te({
553
+ fontFamily: n.fontFamily,
554
+ id: c,
518
555
  ticks: b,
519
556
  max: y,
520
557
  area: S,
521
- axisTitle: s,
522
- description: a,
558
+ axisTitle: a,
559
+ description: r,
523
560
  formatTick: x.format,
524
- xLabels: o.map((e, t) => ({
561
+ xLabels: i.map((e, t) => ({
525
562
  label: e,
526
- x: A(t, o.length, S).center
563
+ x: k(t, i.length, S).center
527
564
  })),
528
- interactive: v.interactive,
565
+ interactive: g.interactive,
529
566
  keys: j
530
567
  }, M)}
531
- ${H(r)}
532
- ${X(r)}
568
+ ${H(n)}
569
+ ${Q(n)}
533
570
  </div>
534
571
  `;
535
572
  }
536
573
  //#endregion
537
574
  //#region src/components/shared/charts/shared/tints.ts
538
- var $ = [
575
+ var ge = [
539
576
  [1],
540
577
  [1, 4],
541
578
  [
@@ -557,14 +594,14 @@ var $ = [
557
594
  5
558
595
  ]
559
596
  ];
560
- function me(e, t) {
597
+ function _e(e, t) {
561
598
  if (e < 1) return [];
562
- let n = $[Math.min(e, $.length) - 1];
563
- return h(t) ? n.map((e) => e === 1 ? `var(--color-chart-${t})` : `var(--color-chart-${t}-tint-${e})`) : n.map((e) => `var(--color-chart-tint-${e})`);
599
+ let n = ge[Math.min(e, ge.length) - 1];
600
+ return g(t) ? n.map((e) => e === 1 ? `var(--color-chart-${t})` : `var(--color-chart-${t}-tint-${e})`) : n.map((e) => `var(--color-chart-tint-${e})`);
564
601
  }
565
602
  //#endregion
566
603
  //#region src/components/shared/charts/stacked-bar-chart/stacked-bar-chart.ts
567
- var he = /* @__PURE__ */ new Set([
604
+ var ve = /* @__PURE__ */ new Set([
568
605
  "sky-blue",
569
606
  "red",
570
607
  "green",
@@ -577,17 +614,17 @@ var he = /* @__PURE__ */ new Set([
577
614
  "dark-blue",
578
615
  "moss-green"
579
616
  ]);
580
- function ge(e, t) {
581
- let { controller: r, description: a } = t, { labels: o, axisTitle: u, normalized: d = !1, totalOnTop: p = !0, small: h = !1 } = e, v = r.id;
582
- r.measure({
617
+ function ye(e, t) {
618
+ let { controller: n, description: r } = t, { labels: i, axisTitle: a, normalized: o = !1, totalOnTop: u = !0, small: f = !1 } = e, g = n.id;
619
+ n.measure({
583
620
  width: !0,
584
- height: t.height ?? (h ? "--chart-h-small" : "--chart-h-main"),
621
+ height: t.height ?? (f ? "--chart-h-small" : "--chart-h-main"),
585
622
  fit: !!t.expanded && !t.mobile
586
623
  });
587
624
  let y = e.series.map((e) => ({
588
625
  ...e,
589
- color: I(e.color)
590
- })), b = Q(t, y.flatMap((e) => e.links ?? [])), x = o.map((e, t) => y.reduce((e, n) => e + n.values[t], 0)), { max: S, ticks: C } = d ? {
626
+ color: F(e.color)
627
+ })), b = le(t, y.flatMap((e) => e.links ?? [])), x = i.map((e, t) => y.reduce((e, n) => e + n.values[t], 0)), { max: S, ticks: C } = o ? {
591
628
  max: 100,
592
629
  ticks: [
593
630
  0,
@@ -596,103 +633,295 @@ function ge(e, t) {
596
633
  75,
597
634
  100
598
635
  ]
599
- } : G(Math.max(...x, 1)), w = P(C, r.width, { fontFamily: r.fontFamily }), T = K(t, { left: w.width }), E = T.height - T.bottom, { width: D, bandWidth: O } = A(0, o.length, T), j = p && !d && x.every((e) => l(f(e, O), O - 4)), M = me(y.length), N = (e, t) => e.color ?? M[Math.min(t, M.length - 1)], F = (t) => {
636
+ } : K(Math.max(...x, 1)), w = N(C, n.width, { fontFamily: n.fontFamily }), T = q(t, { left: w.width }), E = T.height - T.bottom, { width: D, bandWidth: A } = k(0, i.length, T), j = u && !o && x.every((e) => d(m(e, A), A - 4)), M = _e(y.length), P = (e, t) => e.color ?? M[Math.min(t, M.length - 1)], I = (t) => {
600
637
  let n = e.series[t].color;
601
- return (n == null ? t === 0 : he.has(n)) ? "lintje-chart__data-label--inside" : "lintje-chart__data-label--inside-light";
638
+ return (n == null ? t === 0 : ve.has(n)) ? "lintje-chart__data-label--inside" : "lintje-chart__data-label--inside-light";
602
639
  }, L = (e) => ({
603
- title: o[e],
640
+ title: i[e],
604
641
  rows: y.map((t, n) => ({
605
642
  label: t.label,
606
- value: d ? s(t.values[e] / x[e] * 100) : g(t.values[e]),
607
- color: N(t, n)
643
+ value: o ? c(t.values[e] / x[e] * 100) : v(t.values[e]),
644
+ color: P(t, n)
608
645
  }))
609
- }), R = Y(r, o.length, (e) => ({
610
- x: A(e, o.length, T).center,
611
- y: k(d ? S : x[e], S, T),
646
+ }), R = Z(n, i.length, (e) => ({
647
+ x: k(e, i.length, T).center,
648
+ y: O(o ? S : x[e], S, T),
612
649
  content: L(e)
613
- })), z = y.map((e, t) => ({
650
+ })), B = y.map((e, t) => ({
614
651
  label: e.label,
615
- color: N(e, t),
652
+ color: P(e, t),
616
653
  shape: "square"
617
- })), V = o.map((e, t) => {
618
- let a = A(t, o.length, T), c = 0, u = y.map((e, n) => {
619
- let r = e.values[t], i = d ? r / x[t] * 100 : r, a = k(c, S, T);
620
- c += i;
621
- let o = k(c, S, T);
654
+ })), V = i.map((e, t) => {
655
+ let r = k(t, i.length, T), a = 0, u = y.map((e, n) => {
656
+ let r = e.values[t], i = o ? r / x[t] * 100 : r, s = O(a, S, T);
657
+ a += i;
658
+ let c = O(a, S, T);
622
659
  return {
623
660
  row: e,
624
661
  j: n,
625
662
  value: i,
626
- y1: o,
627
- height: Math.max(0, a - o)
663
+ y1: c,
664
+ height: Math.max(0, s - c)
628
665
  };
629
666
  });
630
- return i`
631
- <g class="lintje-chart__bar-group ${r.hoverIndex === t ? "is-hovered" : ""}"
632
- ${_(B(t, o.length))}
633
- @mousemove=${(e) => r.showTooltip(e, L(t))}
634
- @mouseleave=${() => r.hideTooltip()}>
667
+ return _`
668
+ <g class="lintje-chart__bar-group ${n.hoverIndex === t ? "is-hovered" : ""}"
669
+ ${s(z(t, i.length))}
670
+ @mousemove=${(e) => n.showTooltip(e, L(t))}
671
+ @mouseleave=${() => n.hideTooltip()}>
635
672
  <!-- The hit area under the whole column, so the tooltip also follows the empty
636
673
  space above the stack. It lies *under* the segments: on top it swallowed
637
674
  every click on a segment that drills. -->
638
- <rect x=${a.x} y=${T.top} width=${a.width} height=${E - T.top} fill="transparent" />
675
+ <rect x=${r.x} y=${T.top} width=${r.width} height=${E - T.top} fill="transparent" />
639
676
  <!-- The segments in one group, so the column lifts on hover as a whole. -->
640
677
  <g class="lintje-chart__bar">
641
678
  ${u.map((n) => {
642
- let r = b.of(n.row.links?.[t], `${e} · ${n.row.label}`, `${e}, ${n.row.label}: ${g(n.row.values[t])}`);
643
- return i`
644
- <rect class="lintje-chart__mark lintje-chart__segment ${r.state}"
645
- x=${a.x} y=${n.y1} width=${a.width} height=${n.height}
646
- fill=${N(n.row, n.j)}
647
- data-mark-id=${r.markId} role=${r.role} tabindex=${r.tabIndex}
648
- aria-pressed=${r.pressed} aria-label=${r.label}
649
- @click=${r.click} @keydown=${r.keydown} />
679
+ let i = b.of(n.row.links?.[t], `${e} · ${n.row.label}`, `${e}, ${n.row.label}: ${v(n.row.values[t])}`);
680
+ return _`
681
+ <rect class="lintje-chart__mark lintje-chart__segment ${i.state}"
682
+ x=${r.x} y=${n.y1} width=${r.width} height=${n.height}
683
+ fill=${P(n.row, n.j)}
684
+ data-mark-id=${i.markId} role=${i.role} tabindex=${i.tabIndex}
685
+ aria-pressed=${i.pressed} aria-label=${i.label}
686
+ @click=${i.click} @keydown=${i.keydown} />
650
687
  `;
651
688
  })}
652
689
  </g>
653
690
  <!-- Percentages inside the segments when they are >= 16 px tall and fit the width. -->
654
- ${d ? u.map((e) => e.height >= 16 && l(s(e.value), D - 4) ? i`<text x=${a.center} y=${e.y1 + e.height / 2 + 4} text-anchor="middle"
655
- class="lintje-chart__data-label ${F(e.j)}">${s(e.value)}</text>` : n) : n}
656
- ${j ? i`<text x=${a.center} y=${k(x[t], S, T) - 5} text-anchor="middle"
657
- class="lintje-chart__data-label" font-weight="700">${f(x[t], a.bandWidth)}</text>` : n}
691
+ ${o ? u.map((e) => e.height >= 16 && d(c(e.value), D - 4) ? _`<text x=${r.center} y=${e.y1 + e.height / 2 + 4} text-anchor="middle"
692
+ class="lintje-chart__data-label ${I(e.j)}">${c(e.value)}</text>` : l) : l}
693
+ ${j ? _`<text x=${r.center} y=${O(x[t], S, T) - 5} text-anchor="middle"
694
+ class="lintje-chart__data-label" font-weight="700">${m(x[t], r.bandWidth)}</text>` : l}
658
695
  </g>
659
696
  `;
660
697
  });
661
- return m`
662
- <div class="lintje-chart-wrap ${h ? "lintje-chart--small" : ""}"
663
- ${c(r.attach)} ?data-in-view=${r.inView} data-tooltip-anchor
664
- @keydown=${(e) => r.dismiss(e) || b.escape(e)}>
665
- ${ee({ items: z })}
666
- ${ne({
667
- fontFamily: r.fontFamily,
668
- id: v,
698
+ return p`
699
+ <div class="lintje-chart-wrap ${f ? "lintje-chart--small" : ""}"
700
+ ${h(n.attach)} ?data-in-view=${n.inView} data-tooltip-anchor
701
+ @keydown=${(e) => n.dismiss(e) || b.escape(e)}>
702
+ ${ee({ items: B })}
703
+ ${te({
704
+ fontFamily: n.fontFamily,
705
+ id: g,
669
706
  ticks: C,
670
707
  max: S,
671
708
  area: T,
672
- axisTitle: u,
673
- description: a,
709
+ axisTitle: a,
710
+ description: r,
674
711
  formatTick: w.format,
675
- xLabels: o.map((e, t) => ({
712
+ xLabels: i.map((e, t) => ({
676
713
  label: e,
677
- x: A(t, o.length, T).center
714
+ x: k(t, i.length, T).center
678
715
  })),
679
716
  interactive: b.interactive,
680
717
  keys: R
681
718
  }, V)}
682
- ${H(r)}
683
- ${X(r)}
719
+ ${H(n)}
720
+ ${Q(n)}
721
+ </div>
722
+ `;
723
+ }
724
+ //#endregion
725
+ //#region src/components/shared/charts/stacked-area-chart/stacked-area-chart.ts
726
+ var be = "geen gegevens", xe = /* @__PURE__ */ new WeakMap();
727
+ function Se(e, t) {
728
+ return e.duration > 0 ? Math.min(1, (t - e.start) / e.duration) : 1;
729
+ }
730
+ function Ce(e, t) {
731
+ let n = Se(e, t);
732
+ if (n >= 1) return e.to;
733
+ let r = e.ease(n);
734
+ return e.to.map((t, n) => e.from[n] + (t - e.from[n]) * r);
735
+ }
736
+ function we(e, t, n) {
737
+ let r = performance.now(), i = xe.get(e);
738
+ if (!i || i.key !== t) {
739
+ let a = {
740
+ key: t,
741
+ from: n,
742
+ to: n,
743
+ start: r,
744
+ duration: 0,
745
+ ease: (e) => e,
746
+ element: i?.element,
747
+ attach: (e) => {
748
+ a.element = e;
749
+ }
750
+ };
751
+ return xe.set(e, a), n;
752
+ }
753
+ if (i.to.some((e, t) => e !== n[t])) {
754
+ let t = i.element, a = !t || b();
755
+ if (i.from = a ? n : Ce(i, r), i.to = n, i.start = r, i.duration = a ? 0 : o(t, "--dur-layer"), i.ease = t ? y(t, "--ease-in-motion") : (e) => e, i.frame == null && i.duration > 0) {
756
+ let t = i, n = () => {
757
+ t.frame = void 0;
758
+ let r = Se(t, performance.now()) >= 1;
759
+ e.requestUpdate(), r || (t.frame = requestAnimationFrame(n));
760
+ };
761
+ t.frame = requestAnimationFrame(n);
762
+ }
763
+ }
764
+ return Ce(i, r);
765
+ }
766
+ function Te(e, t) {
767
+ let { controller: n, description: r } = t, { labels: i, axisTitle: a, unit: o, small: s = !1 } = e, c = n.id, u = i.length;
768
+ n.measure({
769
+ width: !0,
770
+ height: t.height ?? (s ? "--chart-h-small" : "--chart-h-main"),
771
+ fit: !!t.expanded && !t.mobile
772
+ });
773
+ let d = _e(e.series.length, e.color), m = e.series.map((e, t) => ({
774
+ ...e,
775
+ color: d[Math.min(t, d.length - 1)],
776
+ hidden: n.hiddenSeries.includes(e.label)
777
+ })), g = m.filter((e) => !e.hidden), y = we(n, m.map((e) => e.label).join("\0"), m.map((e) => +!e.hidden)), b = y.some((e, t) => e !== +!m[t].hidden), x = xe.get(n), S = m.map(() => i.map(() => !1)), C = m.map(() => i.map(() => 0)), w = m.map(() => i.map(() => 0)), T = i.map(() => !1);
778
+ i.forEach((e, t) => {
779
+ let n = 0;
780
+ m.forEach((e, r) => {
781
+ if (y[r] === 0) return;
782
+ let i = e.values[t];
783
+ T[t] || i == null ? T[t] = !0 : (S[r][t] = !0, C[r][t] = n, n += i * y[r], w[r][t] = n);
784
+ });
785
+ });
786
+ let E = y.some((e) => e > 0), k = i.map((e, t) => m.map((e) => e.values[t]).filter((e) => e != null)).filter((e) => e.length > 0).map((e) => e.reduce((e, t) => e + t, 0)), { max: j, ticks: M } = K(Math.max(...k, 1)), P = N(M, n.width, {
787
+ fontFamily: n.fontFamily,
788
+ minimum: Math.ceil(f(i[0] ?? "", n.fontFamily) / 2)
789
+ }), F = q(t, { left: P.width }), I = F.height - F.bottom, L = (e) => A(e, u, F), R = (e) => O(e, j, F), z = (e) => {
790
+ let t = [];
791
+ return i.forEach((n, r) => {
792
+ if (!e(r)) return;
793
+ let i = t[t.length - 1];
794
+ i && i[i.length - 1] === r - 1 ? i.push(r) : t.push([r]);
795
+ }), t;
796
+ }, B = i.map((e, t) => {
797
+ let n = 0;
798
+ for (let e of g) {
799
+ let r = e.values[t];
800
+ if (r == null) return {
801
+ level: n,
802
+ complete: !1
803
+ };
804
+ n += r;
805
+ }
806
+ return {
807
+ level: n,
808
+ complete: g.length > 0
809
+ };
810
+ }), V = m.map((e) => ({
811
+ label: e.label,
812
+ color: e.color,
813
+ shape: "square",
814
+ hidden: e.hidden
815
+ })), ne = Math.max(1, Math.ceil(u / 8)), U = i.map((e, t) => ({
816
+ label: e,
817
+ x: L(t),
818
+ i: t
819
+ })).filter((e) => e.i % ne === 0), W = g.length < m.length ? "Totaal getoond" : "Totaal";
820
+ function G(e) {
821
+ return {
822
+ title: i[e],
823
+ rows: [...[...g].reverse().map((t) => ({
824
+ label: t.label,
825
+ value: t.values[e] == null ? be : v(t.values[e]),
826
+ color: t.color
827
+ })), ...g.length > 0 ? [{
828
+ label: W,
829
+ value: B[e].complete ? v(B[e].level) : be,
830
+ divider: !0
831
+ }] : []]
832
+ };
833
+ }
834
+ let J = Z(n, u, (e) => ({
835
+ x: L(e),
836
+ y: B[e].level > 0 ? R(B[e].level) : F.top,
837
+ content: G(e)
838
+ })), Y = (e) => {
839
+ let t = [0, 0];
840
+ return m.forEach((n, r) => {
841
+ S[r][e] && S[r][e + 1] && (t = [w[r][e], w[r][e + 1]]);
842
+ }), t;
843
+ }, re = (E ? z((e) => T[e]) : []).map((e) => {
844
+ let t = Math.max(0, e[0] - 1), r = Math.min(u - 1, e[e.length - 1] + 1), i = Array.from({ length: r - t }, (e, n) => t + n).map((e) => {
845
+ let [t, n] = Y(e);
846
+ return {
847
+ k: e,
848
+ left: R(t),
849
+ right: R(n)
850
+ };
851
+ }), a = L(t), o = L(r) - a, s = Math.min(I, ...i.flatMap((e) => [e.left, e.right]));
852
+ return {
853
+ segments: i,
854
+ from: a,
855
+ width: o,
856
+ ceiling: s,
857
+ fits: f(be, n.fontFamily) + 8 <= o && s - F.top >= 20
858
+ };
859
+ }), X = (e, t) => t.map((t) => `${L(t)},${R(e[t])}`), $ = [
860
+ re.map((e) => _`
861
+ ${e.segments.map((e) => _`<polygon fill="url(#hatch-${c})"
862
+ points=${`${L(e.k)},${F.top} ${L(e.k + 1)},${F.top} ${L(e.k + 1)},${e.right} ${L(e.k)},${e.left}`} />`)}
863
+ ${e.fits ? _`<text x=${e.from + e.width / 2} y=${(F.top + e.ceiling) / 2 + 4}
864
+ text-anchor="middle"
865
+ class="lintje-chart__as-of-note lintje-chart__data-label--halo">${be}</text>` : l}
866
+ `),
867
+ _`<g class="lintje-chart__reveal" ${h(x.attach)}>
868
+ ${m.map((e, t) => {
869
+ let n = z((e) => S[t][e]);
870
+ return _`<g>
871
+ ${n.map((n) => n.length === 1 ? _`<circle cx=${L(n[0])} cy=${R(w[t][n[0]])} r="2.5" fill=${e.color} />` : _`<polygon fill=${e.color}
872
+ points=${[...X(w[t], n), ...X(C[t], n).reverse()].join(" ")} />`)}
873
+ </g>`;
874
+ })}
875
+ <!-- Between two parts a 1 px line in the surface: along each part's lower edge, not the floor. -->
876
+ ${m.map((e, t) => z((e) => S[t][e] && C[t][e] > 0).filter((e) => e.length > 1).map((e) => _`<polyline class="lintje-chart__segment" fill="none" points=${X(C[t], e).join(" ")} />`))}
877
+ </g>`,
878
+ n.hoverIndex != null && !b ? m.map((e, t) => S[t][n.hoverIndex] ? _`<circle class="lintje-chart__hover-point" r="4" fill=${e.color}
879
+ cx=${L(n.hoverIndex)} cy=${R(w[t][n.hoverIndex])} />` : l) : l,
880
+ i.map((e, t) => {
881
+ let r = D(F) / Math.max(1, u - 1);
882
+ return _`
883
+ <rect x=${L(t) - r / 2} y=${F.top} width=${r}
884
+ height=${I - F.top}
885
+ fill="transparent"
886
+ @mousemove=${(e) => n.hoverAt(t, e, G(t))}
887
+ @mouseleave=${() => n.hoverAt(null)} />
888
+ `;
889
+ })
890
+ ];
891
+ return p`
892
+ <div class="lintje-chart-wrap ${s ? "lintje-chart--small" : ""}"
893
+ ${h(n.attach)} ?data-in-view=${n.inView} data-tooltip-anchor
894
+ @keydown=${(e) => n.dismiss(e)}>
895
+ ${ee({
896
+ items: V,
897
+ onToggle: (e) => n.toggleSeries(e)
898
+ })}
899
+ ${te({
900
+ fontFamily: n.fontFamily,
901
+ id: c,
902
+ ticks: M,
903
+ max: j,
904
+ area: F,
905
+ formatTick: P.format,
906
+ axisTitle: a ?? o,
907
+ xLabels: U,
908
+ description: r,
909
+ keys: J
910
+ }, $)}
911
+ ${H(n)}
912
+ ${Q(n)}
684
913
  </div>
685
914
  `;
686
915
  }
687
916
  //#endregion
688
917
  //#region src/components/shared/charts/pie-chart/pie-chart.ts
689
- var _e = 5, ve = (e) => {
918
+ var Ee = 5, De = (e) => {
690
919
  let t = e.label.toLowerCase();
691
920
  return t.startsWith("overig") || t === "rest";
692
- }, ye = (e) => !e.remainder && !ve(e);
693
- function be(e) {
694
- let t = e.filter(ye).sort((e, t) => t.value - e.value), n = e.filter((e) => !e.remainder && ve(e)), r = e.filter((e) => e.remainder);
695
- if (t.length > _e) {
921
+ }, Oe = (e) => !e.remainder && !De(e);
922
+ function ke(e) {
923
+ let t = e.filter(Oe).sort((e, t) => t.value - e.value), n = e.filter((e) => !e.remainder && De(e)), r = e.filter((e) => e.remainder);
924
+ if (t.length > Ee) {
696
925
  let e = t.splice(4).reduce((e, t) => e + t.value, 0);
697
926
  if (n.length > 0) {
698
927
  let [t] = n;
@@ -712,291 +941,291 @@ function be(e) {
712
941
  ...r
713
942
  ];
714
943
  }
715
- function xe(e, t) {
716
- let { controller: r, description: a } = t, { donut: o = !1, centerValue: l, centerLabel: u, legendTable: d = !0, labelHeader: f = "Categorie" } = e, p = r.id, h = be(e.segments).map((e) => ({
944
+ function Ae(e, t) {
945
+ let { controller: n, description: r } = t, { donut: i = !1, centerValue: a, centerLabel: o, legendTable: u = !0, labelHeader: d = "Categorie" } = e, f = n.id, m = ke(e.segments).map((e) => ({
717
946
  ...e,
718
- color: I(e.color)
719
- })), v = h.map((e) => e.href ? {
947
+ color: F(e.color)
948
+ })), g = m.map((e) => e.href ? {
720
949
  id: e.id ?? e.label,
721
950
  href: e.href
722
- } : null), y = Q(t, v), b = (e) => {
723
- let t = y.of(v[e], h[e].label, h[e].label).state;
951
+ } : null), y = le(t, g), b = (e) => {
952
+ let t = y.of(g[e], m[e].label, m[e].label).state;
724
953
  return t.includes("is-selected") ? "is-selected" : t.includes("is-muted") ? "is-muted" : "";
725
954
  }, x = !!t.expanded;
726
- r.measure(x ? {
955
+ n.measure(x ? {
727
956
  width: !0,
728
957
  height: "--chart-h-main"
729
958
  } : {});
730
- let S = x ? Math.max(240, Math.min(560, r.height - 24)) : e.size ?? 200, C = h.reduce((e, t) => e + t.value, 0), w = S / 2, T = o ? w * .62 : 0, E = me(h.filter(ye).length, e.color), D = -1, O = h.map((e) => (ye(e) && (D += 1), e.color ?? (e.remainder ? "var(--color-chart-remainder)" : ve(e) ? "var(--color-chart-other)" : E[Math.min(D, E.length - 1)]))), k = -90, A = h.map((e, t) => {
731
- let n = e.value / C, r = k, i = k + n * 360;
732
- k = i;
733
- let a = +(n > .5), s = (e, t) => [w + t * Math.cos(e * Math.PI / 180), w + t * Math.sin(e * Math.PI / 180)], [c, l] = s(r, w), [u, d] = s(i, w);
959
+ let S = x ? Math.max(240, Math.min(560, n.height - 24)) : e.size ?? 200, C = m.reduce((e, t) => e + t.value, 0), w = S / 2, T = i ? w * .62 : 0, E = _e(m.filter(Oe).length, e.color), D = -1, O = m.map((e) => (Oe(e) && (D += 1), e.color ?? (e.remainder ? "var(--color-chart-remainder)" : De(e) ? "var(--color-chart-other)" : E[Math.min(D, E.length - 1)]))), k = -90, A = m.map((e, t) => {
960
+ let n = e.value / C, r = k, a = k + n * 360;
961
+ k = a;
962
+ let o = +(n > .5), s = (e, t) => [w + t * Math.cos(e * Math.PI / 180), w + t * Math.sin(e * Math.PI / 180)], [c, l] = s(r, w), [u, d] = s(a, w);
734
963
  return {
735
964
  segment: e,
736
965
  i: t,
737
- d: o ? (() => {
738
- let [e, t] = s(i, T), [n, o] = s(r, T);
739
- return `M ${c} ${l} A ${w} ${w} 0 ${a} 1 ${u} ${d} L ${e} ${t} A ${T} ${T} 0 ${a} 0 ${n} ${o} Z`;
740
- })() : `M ${w} ${w} L ${c} ${l} A ${w} ${w} 0 ${a} 1 ${u} ${d} Z`,
966
+ d: i ? (() => {
967
+ let [e, t] = s(a, T), [n, i] = s(r, T);
968
+ return `M ${c} ${l} A ${w} ${w} 0 ${o} 1 ${u} ${d} L ${e} ${t} A ${T} ${T} 0 ${o} 0 ${n} ${i} Z`;
969
+ })() : `M ${w} ${w} L ${c} ${l} A ${w} ${w} 0 ${o} 1 ${u} ${d} Z`,
741
970
  color: O[t]
742
971
  };
743
- }), j = r.hoverSegment, M = j == null ? void 0 : A[j], P = (e) => {
744
- r.hoverSegment = e, r.requestUpdate();
972
+ }), j = n.hoverSegment, N = j == null ? void 0 : A[j], I = (e) => {
973
+ n.hoverSegment = e, n.requestUpdate();
745
974
  };
746
- return m`
747
- <div class="lintje-pie-chart ${x ? "lintje-pie-chart--expanded" : ""}" ${c(r.attach)}
748
- ?data-in-view=${r.inView} data-tooltip-anchor
749
- @keydown=${(e) => r.dismiss(e) || y.escape(e)}>
750
- <svg viewBox="0 0 ${S} ${S}" width=${S} height=${S} role=${z(y.interactive)}
751
- class="lintje-pie-chart__svg" aria-labelledby="${p}-desc" ${_(N(p))}>
752
- <desc id="${p}-desc">${a}</desc>
753
- <defs>${F(p)}</defs>
754
- ${A.map(({ segment: e, i: t, d: n, color: a }) => {
755
- let o = y.of(v[t], e.label, `${e.label}: ${g(e.value)} · ${s(e.value / C * 100)}`);
756
- return i`
757
- <path d=${n} fill=${a}
758
- class="lintje-pie-chart__segment lintje-chart__mark lintje-chart__segment ${j === t ? "is-hovered" : ""} ${o.state}"
759
- ${_({ "transform-origin": `${w}px ${w}px` })}
760
- data-mark-id=${o.markId} role=${o.role} tabindex=${o.tabIndex}
761
- aria-pressed=${o.pressed} aria-label=${o.label}
762
- @click=${o.click} @keydown=${o.keydown}
763
- @mousemove=${(n) => {
764
- P(t), r.showTooltip(n, {
975
+ return p`
976
+ <div class="lintje-pie-chart ${x ? "lintje-pie-chart--expanded" : ""}" ${h(n.attach)}
977
+ ?data-in-view=${n.inView} data-tooltip-anchor
978
+ @keydown=${(e) => n.dismiss(e) || y.escape(e)}>
979
+ <svg viewBox="0 0 ${S} ${S}" width=${S} height=${S} role=${R(y.interactive)}
980
+ class="lintje-pie-chart__svg" aria-labelledby="${f}-desc" ${s(M(f))}>
981
+ <desc id="${f}-desc">${r}</desc>
982
+ <defs>${P(f)}</defs>
983
+ ${A.map(({ segment: e, i: t, d: r, color: i }) => {
984
+ let a = y.of(g[t], e.label, `${e.label}: ${v(e.value)} · ${c(e.value / C * 100)}`);
985
+ return _`
986
+ <path d=${r} fill=${i}
987
+ class="lintje-pie-chart__segment lintje-chart__mark lintje-chart__segment ${j === t ? "is-hovered" : ""} ${a.state}"
988
+ ${s({ "transform-origin": `${w}px ${w}px` })}
989
+ data-mark-id=${a.markId} role=${a.role} tabindex=${a.tabIndex}
990
+ aria-pressed=${a.pressed} aria-label=${a.label}
991
+ @click=${a.click} @keydown=${a.keydown}
992
+ @mousemove=${(r) => {
993
+ I(t), n.showTooltip(r, {
765
994
  title: e.label,
766
995
  rows: [{
767
996
  label: "Aantal",
768
- value: `${g(e.value)} · ${s(e.value / C * 100)}`,
769
- color: a
997
+ value: `${v(e.value)} · ${c(e.value / C * 100)}`,
998
+ color: i
770
999
  }]
771
1000
  });
772
1001
  }}
773
1002
  @mouseleave=${() => {
774
- r.hoverSegment = null, r.hideTooltip(), r.requestUpdate();
1003
+ n.hoverSegment = null, n.hideTooltip(), n.requestUpdate();
775
1004
  }} />
776
1005
  `;
777
1006
  })}
778
1007
  <!-- The hovered segment once more on top, lifted with a light shadow: in place, the
779
1008
  next segment would cover that shadow on one side (user test 13 Sep). -->
780
- ${M ? i`<path d=${M.d} fill=${M.color} class="lintje-pie-chart__lift lintje-chart__segment"
781
- ${_({ "transform-origin": `${w}px ${w}px` })} aria-hidden="true" />` : n}
782
- ${o && l ? i`
783
- <text x=${w} y=${w + 2} text-anchor="middle" class="lintje-pie-chart__center">${l}</text>
784
- ${u ? i`<text x=${w} y=${w + 20} text-anchor="middle" class="lintje-chart__axis-label">${u}</text>` : n}
785
- ` : n}
1009
+ ${N ? _`<path d=${N.d} fill=${N.color} class="lintje-pie-chart__lift lintje-chart__segment"
1010
+ ${s({ "transform-origin": `${w}px ${w}px` })} aria-hidden="true" />` : l}
1011
+ ${i && a ? _`
1012
+ <text x=${w} y=${w + 2} text-anchor="middle" class="lintje-pie-chart__center">${a}</text>
1013
+ ${o ? _`<text x=${w} y=${w + 20} text-anchor="middle" class="lintje-chart__axis-label">${o}</text>` : l}
1014
+ ` : l}
786
1015
  </svg>
787
1016
 
788
- ${d ? m`
1017
+ ${u ? p`
789
1018
  <table class="lintje-pie-chart__table">
790
- <caption class="visually-hidden">Legenda: ${a}</caption>
1019
+ <caption class="visually-hidden">Legenda: ${r}</caption>
791
1020
  <thead>
792
1021
  <tr>
793
- <th scope="col" class="lintje-pie-chart__column-label">${f}</th>
1022
+ <th scope="col" class="lintje-pie-chart__column-label">${d}</th>
794
1023
  <th scope="col" class="lintje-pie-chart__column-label lintje-pie-chart__column-label--numeric">aantal</th>
795
1024
  <th scope="col" class="lintje-pie-chart__column-label lintje-pie-chart__column-label--numeric">%</th>
796
1025
  </tr>
797
1026
  </thead>
798
1027
  <tbody>
799
- ${h.map((e, t) => m`
1028
+ ${m.map((e, t) => p`
800
1029
  <tr class="lintje-pie-chart__row ${j === t ? "is-hovered" : ""} ${b(t)}"
801
- @mouseenter=${() => P(t)} @mouseleave=${() => P(null)}>
1030
+ @mouseenter=${() => I(t)} @mouseleave=${() => I(null)}>
802
1031
  <th scope="row" class="lintje-pie-chart__label">
803
- <span class="lintje-pie-chart__marker" ${_({ background: O[t] })}></span>${e.label}
1032
+ <span class="lintje-pie-chart__marker" ${s({ background: O[t] })}></span>${e.label}
804
1033
  </th>
805
- <td class="lintje-pie-chart__value">${g(e.value)}</td>
806
- <td class="lintje-pie-chart__value">${s(e.value / C * 100)}</td>
1034
+ <td class="lintje-pie-chart__value">${v(e.value)}</td>
1035
+ <td class="lintje-pie-chart__value">${c(e.value / C * 100)}</td>
807
1036
  </tr>
808
1037
  `)}
809
1038
  </tbody>
810
1039
  <tfoot>
811
1040
  <tr>
812
1041
  <th scope="row" class="lintje-pie-chart__total-label">Totaal</th>
813
- <td class="lintje-pie-chart__total">${g(C)}</td>
1042
+ <td class="lintje-pie-chart__total">${v(C)}</td>
814
1043
  <td class="lintje-pie-chart__total"></td>
815
1044
  </tr>
816
1045
  </tfoot>
817
1046
  </table>
818
- ` : n}
819
- ${H(r)}
1047
+ ` : l}
1048
+ ${H(n)}
820
1049
  </div>
821
1050
  `;
822
1051
  }
823
1052
  //#endregion
824
1053
  //#region src/components/shared/charts/dual-axis-chart/dual-axis-chart.ts
825
- function Se(e, t) {
826
- let { controller: r, description: a } = t, { labels: o, threshold: s, thresholdLabel: l, small: u = !1, pendingHours: d = 0 } = e, f = {
1054
+ function je(e, t) {
1055
+ let { controller: n, description: r } = t, { labels: i, threshold: a, thresholdLabel: o, small: c = !1, pendingHours: u = 0 } = e, d = {
827
1056
  ...e.left,
828
- color: I(e.left.color)
829
- }, p = {
1057
+ color: F(e.left.color)
1058
+ }, f = {
830
1059
  ...e.right,
831
- color: I(e.right.color)
832
- }, h = r.id;
833
- r.measure({
1060
+ color: F(e.right.color)
1061
+ }, m = n.id;
1062
+ n.measure({
834
1063
  width: !0,
835
- height: t.height ?? (u ? "--chart-h-small" : "--chart-h-main"),
1064
+ height: t.height ?? (c ? "--chart-h-small" : "--chart-h-main"),
836
1065
  fit: !!t.expanded && !t.mobile
837
1066
  });
838
- let v = f.color ?? "var(--color-chart-default)", y = p.color ?? "var(--color-chart-dark-yellow)", b = G(Math.max(...f.values.filter((e) => e != null), 1)), x = G(Math.max(...p.values.filter((e) => e != null), s ?? 0, 1)), S = P(b.ticks, r.width, { fontFamily: r.fontFamily }), C = P(x.ticks, r.width, { fontFamily: r.fontFamily }), w = K(t, {
1067
+ let g = d.color ?? "var(--color-chart-default)", y = f.color ?? "var(--color-chart-dark-yellow)", b = K(Math.max(...d.values.filter((e) => e != null), 1)), x = K(Math.max(...f.values.filter((e) => e != null), a ?? 0, 1)), S = N(b.ticks, n.width, { fontFamily: n.fontFamily }), C = N(x.ticks, n.width, { fontFamily: n.fontFamily }), w = q(t, {
839
1068
  left: S.width,
840
1069
  right: C.width
841
1070
  }), T = w.height - w.bottom, E = [
842
1071
  {
843
- label: `${f.label} (linkeras)`,
844
- color: v,
1072
+ label: `${d.label} (linkeras)`,
1073
+ color: g,
845
1074
  shape: "square"
846
1075
  },
847
1076
  {
848
- label: `${p.label} (rechteras)`,
1077
+ label: `${f.label} (rechteras)`,
849
1078
  color: y,
850
1079
  shape: "line"
851
1080
  },
852
- ...s == null ? [] : [{
853
- label: l ?? `Norm ${s}`,
1081
+ ...a == null ? [] : [{
1082
+ label: o ?? `Norm ${a}`,
854
1083
  color: "var(--color-chart-emphasis)",
855
1084
  shape: "dashed"
856
1085
  }]
857
- ], D = Math.max(1, Math.ceil(o.length / 8)), O = r.hoverIndex, j = te(y), M = [[]];
858
- p.values.forEach((e, t) => {
859
- e == null ? M[M.length - 1].length && M.push([]) : M[M.length - 1].push(`${A(t, o.length, w).center},${k(e, x.max, w)}`);
1086
+ ], D = Math.max(1, Math.ceil(i.length / 8)), A = n.hoverIndex, j = V(y), M = [[]];
1087
+ f.values.forEach((e, t) => {
1088
+ e == null ? M[M.length - 1].length && M.push([]) : M[M.length - 1].push(`${k(t, i.length, w).center},${O(e, x.max, w)}`);
860
1089
  });
861
- let N = (e, t) => e == null ? "geen gegevens" : `${g(e)}${t ? ` ${t}` : ""}`, F = (e) => ({
862
- title: o[e],
1090
+ let P = (e, t) => e == null ? "geen gegevens" : `${v(e)}${t ? ` ${t}` : ""}`, I = (e) => ({
1091
+ title: i[e],
863
1092
  rows: [{
864
- label: f.label,
865
- value: N(f.values[e], f.unit),
866
- color: v
1093
+ label: d.label,
1094
+ value: P(d.values[e], d.unit),
1095
+ color: g
867
1096
  }, {
868
- label: p.label,
869
- value: N(p.values[e], p.unit),
1097
+ label: f.label,
1098
+ value: P(f.values[e], f.unit),
870
1099
  color: y
871
1100
  }]
872
- }), L = Y(r, o.length, (e) => ({
873
- x: A(e, o.length, w).center,
874
- y: Math.min(f.values[e] == null ? T : k(f.values[e], b.max, w), p.values[e] == null ? T : k(p.values[e], x.max, w)),
875
- content: F(e)
1101
+ }), L = Z(n, i.length, (e) => ({
1102
+ x: k(e, i.length, w).center,
1103
+ y: Math.min(d.values[e] == null ? T : O(d.values[e], b.max, w), f.values[e] == null ? T : O(f.values[e], x.max, w)),
1104
+ content: I(e)
876
1105
  }));
877
- return m`
878
- <div class="lintje-chart-wrap ${u ? "lintje-chart--small" : ""}"
879
- ${c(r.attach)} ?data-in-view=${r.inView} data-tooltip-anchor
880
- @keydown=${(e) => r.dismiss(e)}>
1106
+ return p`
1107
+ <div class="lintje-chart-wrap ${c ? "lintje-chart--small" : ""}"
1108
+ ${h(n.attach)} ?data-in-view=${n.inView} data-tooltip-anchor
1109
+ @keydown=${(e) => n.dismiss(e)}>
881
1110
  ${ee({ items: E })}
882
1111
  <figure class="lintje-chart">
883
- <svg viewBox="0 0 ${w.width} ${w.height}" class="lintje-chart__svg" role=${z(!1)}
884
- aria-labelledby="${h}-desc" width=${w.width} height=${w.height}
1112
+ <svg viewBox="0 0 ${w.width} ${w.height}" class="lintje-chart__svg" role=${R(!1)}
1113
+ aria-labelledby="${m}-desc" width=${w.width} height=${w.height}
885
1114
  tabindex="0" @keydown=${L.keydown} @focus=${L.focus} @blur=${L.blur}>
886
- <desc id="${h}-desc">${a}</desc>
1115
+ <desc id="${m}-desc">${r}</desc>
887
1116
  <defs>
888
- <pattern id="hatch-${h}" width="6" height="6" patternUnits="userSpaceOnUse" patternTransform="rotate(45)">
1117
+ <pattern id="hatch-${m}" width="6" height="6" patternUnits="userSpaceOnUse" patternTransform="rotate(45)">
889
1118
  <line x1="0" y1="0" x2="0" y2="6" stroke="var(--color-chart-hatch)" stroke-width="2" />
890
1119
  </pattern>
891
1120
  </defs>
892
1121
  <!-- Incomplete hours at the end: hatched, never drawn as zero. -->
893
- ${d > 0 ? (() => {
894
- let e = A(o.length - d, o.length, w);
895
- return i`<rect x=${e.x - (e.bandWidth - e.width) / 2} y=${w.top}
1122
+ ${u > 0 ? (() => {
1123
+ let e = k(i.length - u, i.length, w);
1124
+ return _`<rect x=${e.x - (e.bandWidth - e.width) / 2} y=${w.top}
896
1125
  width=${w.width - w.right - e.x + (e.bandWidth - e.width) / 2}
897
- height=${T - w.top} fill="url(#hatch-${h})" />`;
898
- })() : n}
1126
+ height=${T - w.top} fill="url(#hatch-${m})" />`;
1127
+ })() : l}
899
1128
 
900
1129
  ${b.ticks.map((e) => {
901
- let t = k(e, b.max, w), n = e === 0;
902
- return i`
1130
+ let t = O(e, b.max, w), n = e === 0;
1131
+ return _`
903
1132
  <g>
904
1133
  <line x1=${w.left} x2=${w.width - w.right} y1=${t} y2=${t}
905
1134
  stroke=${n ? "var(--color-chart-zero)" : "var(--color-chart-grid)"}
906
1135
  stroke-width=${n ? 1.5 : 1} />
907
- <text x=${w.left - 8} y=${t + 4} text-anchor="end" class="lintje-chart__axis-label" fill=${v}>
1136
+ <text x=${w.left - 8} y=${t + 4} text-anchor="end" class="lintje-chart__axis-label" fill=${g}>
908
1137
  ${S.format(e)}
909
1138
  </text>
910
1139
  </g>
911
1140
  `;
912
1141
  })}
913
- ${x.ticks.map((e) => i`
914
- <text x=${w.width - w.right + 8} y=${k(e, x.max, w) + 4}
1142
+ ${x.ticks.map((e) => _`
1143
+ <text x=${w.width - w.right + 8} y=${O(e, x.max, w) + 4}
915
1144
  class="lintje-chart__axis-label" fill=${"var(--color-chart-dark-yellow-text)"}>${C.format(e)}</text>
916
1145
  `)}
917
1146
 
918
1147
  <!-- 2 px axis lines in the color of their series -->
919
- <line x1=${w.left} x2=${w.left} y1=${w.top} y2=${T} stroke=${v} stroke-width="2" />
1148
+ <line x1=${w.left} x2=${w.left} y1=${w.top} y2=${T} stroke=${g} stroke-width="2" />
920
1149
  <line x1=${w.width - w.right} x2=${w.width - w.right} y1=${w.top} y2=${T}
921
1150
  stroke=${y} stroke-width="2" />
922
1151
 
923
1152
  <!-- Bars grow in one after another; the hit areas below sit on top, so hover comes
924
1153
  from hoverIndex rather than :hover. -->
925
- ${f.values.map((e, t) => {
926
- let n = A(t, o.length, w);
927
- if (e == null) return i`<rect class="lintje-chart__missing" x=${n.x} y=${w.top} width=${n.width}
928
- height=${Math.max(0, T - w.top)} fill="url(#hatch-${h})" />`;
929
- let r = k(e, b.max, w);
930
- return i`
931
- <g class="lintje-chart__bar-group ${O === t ? "is-hovered" : ""}"
932
- ${_(B(t, o.length))}>
1154
+ ${d.values.map((e, t) => {
1155
+ let n = k(t, i.length, w);
1156
+ if (e == null) return _`<rect class="lintje-chart__missing" x=${n.x} y=${w.top} width=${n.width}
1157
+ height=${Math.max(0, T - w.top)} fill="url(#hatch-${m})" />`;
1158
+ let r = O(e, b.max, w);
1159
+ return _`
1160
+ <g class="lintje-chart__bar-group ${A === t ? "is-hovered" : ""}"
1161
+ ${s(z(t, i.length))}>
933
1162
  <rect class="lintje-chart__bar" x=${n.x} y=${r} width=${n.width}
934
- height=${Math.max(0, T - r)} fill=${v} />
1163
+ height=${Math.max(0, T - r)} fill=${g} />
935
1164
  </g>
936
1165
  `;
937
1166
  })}
938
1167
 
939
- ${s == null ? n : i`<line x1=${w.left} x2=${w.width - w.right}
940
- y1=${k(s, x.max, w)} y2=${k(s, x.max, w)}
1168
+ ${a == null ? l : _`<line x1=${w.left} x2=${w.width - w.right}
1169
+ y1=${O(a, x.max, w)} y2=${O(a, x.max, w)}
941
1170
  stroke="var(--color-chart-emphasis)" stroke-width="1" stroke-dasharray="4 3" />`}
942
1171
 
943
1172
  <g class="lintje-chart__reveal">
944
1173
  ${M.filter((e) => e.length > 0).map((e) => {
945
- let t = e.join(" "), [r, a] = e[0].split(",");
946
- return i`
947
- ${j && e.length > 1 ? i`<polyline class="lintje-chart__line lintje-chart__line--casing"
948
- stroke=${j} points=${t} />` : n}
949
- ${e.length === 1 ? i`<circle cx=${r} cy=${a} r="2.5" fill=${y} />` : i`<polyline class="lintje-chart__line" stroke=${y} points=${t} />`}
1174
+ let t = e.join(" "), [n, r] = e[0].split(",");
1175
+ return _`
1176
+ ${j && e.length > 1 ? _`<polyline class="lintje-chart__line lintje-chart__line--casing"
1177
+ stroke=${j} points=${t} />` : l}
1178
+ ${e.length === 1 ? _`<circle cx=${n} cy=${r} r="2.5" fill=${y} />` : _`<polyline class="lintje-chart__line" stroke=${y} points=${t} />`}
950
1179
  `;
951
1180
  })}
952
1181
  </g>
953
1182
 
954
- ${o.filter((e, t) => t % D === 0).map((e, t) => i`
955
- <text x=${A(t * D, o.length, w).center} y=${w.height - 8}
1183
+ ${i.filter((e, t) => t % D === 0).map((e, t) => _`
1184
+ <text x=${k(t * D, i.length, w).center} y=${w.height - 8}
956
1185
  text-anchor="middle" class="lintje-chart__axis-label">${e}</text>
957
1186
  `)}
958
1187
 
959
1188
  <!-- Hover point on the right-axis line; no point for a missing value. -->
960
- ${O != null && p.values[O] != null ? i`<circle class="lintje-chart__hover-point" r="4" fill=${y}
961
- cx=${A(O, o.length, w).center}
962
- cy=${k(p.values[O], x.max, w)} />` : n}
963
- ${o.map((e, t) => {
964
- let n = A(t, o.length, w);
965
- return i`
966
- <rect x=${n.x} y=${w.top} width=${n.bandWidth} height=${T - w.top}
1189
+ ${A != null && f.values[A] != null ? _`<circle class="lintje-chart__hover-point" r="4" fill=${y}
1190
+ cx=${k(A, i.length, w).center}
1191
+ cy=${O(f.values[A], x.max, w)} />` : l}
1192
+ ${i.map((e, t) => {
1193
+ let r = k(t, i.length, w);
1194
+ return _`
1195
+ <rect x=${r.x} y=${w.top} width=${r.bandWidth} height=${T - w.top}
967
1196
  fill="transparent"
968
- @mousemove=${(e) => r.hoverAt(t, e, F(t))}
969
- @mouseleave=${() => r.hoverAt(null)} />
1197
+ @mousemove=${(e) => n.hoverAt(t, e, I(t))}
1198
+ @mouseleave=${() => n.hoverAt(null)} />
970
1199
  `;
971
1200
  })}
972
1201
  </svg>
973
1202
  </figure>
974
- ${H(r)}
975
- ${X(r)}
1203
+ ${H(n)}
1204
+ ${Q(n)}
976
1205
  </div>
977
1206
  `;
978
1207
  }
979
1208
  //#endregion
980
1209
  //#region src/components/shared/charts/scatter-chart/scatter-chart.ts
981
- var Ce = 4.5, we = 5.5, Te = 44, Ee = 8, De = (e, t) => e.left < t.right && t.left < e.right && e.top < t.bottom && t.top < e.bottom;
982
- function Oe(e, t, n, r) {
1210
+ var Me = 4.5, Ne = 5.5, Pe = 44, Fe = 8, Ie = (e, t) => e.left < t.right && t.left < e.right && e.top < t.bottom && t.top < e.bottom;
1211
+ function Le(e, t, n, r) {
983
1212
  let i = 5.5, a = [];
984
1213
  for (let [o, s] of e.entries()) {
985
1214
  if (!t.includes(s.label)) continue;
986
- let c = d(s.label, r, 700), l = s.y - 9, u = l - 12, f = l + 3, p = [{
1215
+ let c = f(s.label, r, 700), l = s.y - 9, u = l - 12, d = l + 3, p = [{
987
1216
  anchor: "end",
988
- x: s.x - Ee,
989
- left: s.x - Ee - c
1217
+ x: s.x - Fe,
1218
+ left: s.x - Fe - c
990
1219
  }, {
991
1220
  anchor: "start",
992
- x: s.x + Ee,
993
- left: s.x + Ee
1221
+ x: s.x + Fe,
1222
+ left: s.x + Fe
994
1223
  }].map((e) => ({
995
1224
  ...e,
996
1225
  right: e.left + c,
997
1226
  top: u,
998
- bottom: f
999
- })).find((t) => t.left >= n.left && t.right <= n.width - n.right && t.top >= 0 && a.every((e) => !De(t, e)) && e.every((e, n) => n === o || !De(t, {
1227
+ bottom: d
1228
+ })).find((t) => t.left >= n.left && t.right <= n.width - n.right && t.top >= 0 && a.every((e) => !Ie(t, e)) && e.every((e, n) => n === o || !Ie(t, {
1000
1229
  left: e.x - i,
1001
1230
  right: e.x + i,
1002
1231
  top: e.y - i,
@@ -1016,37 +1245,37 @@ function Oe(e, t, n, r) {
1016
1245
  anchor: r
1017
1246
  }));
1018
1247
  }
1019
- var ke = (e) => e.charAt(0).toUpperCase() + e.slice(1), Ae = (e, t) => `${g(e)}${t ? ` ${t}` : ""}`;
1020
- function je(e) {
1021
- let t = new Set(e.series.map((e) => e.color).filter(L)), n = R.filter((e) => !t.has(e)), r = 0;
1248
+ var Re = (e) => e.charAt(0).toUpperCase() + e.slice(1), ze = (e, t) => `${v(e)}${t ? ` ${t}` : ""}`;
1249
+ function Be(e) {
1250
+ let t = new Set(e.series.map((e) => e.color).filter(I)), n = L.filter((e) => !t.has(e)), r = 0;
1022
1251
  return e.series.map((e) => {
1023
- let t = L(e.color) ? e.color : n[r++ % n.length];
1252
+ let t = I(e.color) ? e.color : n[r++ % n.length];
1024
1253
  return {
1025
- color: I(e.color ?? t),
1254
+ color: F(e.color ?? t),
1026
1255
  symbol: t
1027
1256
  };
1028
1257
  });
1029
1258
  }
1030
- function Me(t, r) {
1031
- let { controller: a, description: o } = r, { axisTitle: s, unit: l, xTitle: u, xUnit: d, threshold: f, thresholdLabel: h, small: v = !1 } = t, y = a.id;
1032
- a.measure({
1259
+ function Ve(e, n) {
1260
+ let { controller: r, description: i } = n, { axisTitle: a, unit: o, xTitle: c, xUnit: d, threshold: f, thresholdLabel: m, small: g = !1 } = e, y = r.id;
1261
+ r.measure({
1033
1262
  width: !0,
1034
- height: r.height ?? (v ? "--chart-h-small" : "--chart-h-main"),
1035
- fit: !!r.expanded && !r.mobile
1263
+ height: n.height ?? (g ? "--chart-h-small" : "--chart-h-main"),
1264
+ fit: !!n.expanded && !n.mobile
1036
1265
  });
1037
- let b = je(t), x = t.series.map((e, t) => ({
1266
+ let b = Be(e), x = e.series.map((e, t) => ({
1038
1267
  ...e,
1039
1268
  ...b[t]
1040
- })), S = (e) => a.hiddenSeries.includes(e.label), C = x.flatMap((e, t) => e.points.map((n, r) => ({
1269
+ })), S = (e) => r.hiddenSeries.includes(e.label), C = x.flatMap((e, t) => e.points.map((n, r) => ({
1041
1270
  point: n,
1042
1271
  row: e,
1043
1272
  key: `${t}:${r}`
1044
- })).filter((e) => e.point.x != null && e.point.y != null)).sort((e, t) => e.point.x - t.point.x || e.point.y - t.point.y), w = C.filter(({ row: e }) => !S(e)), T = new Map(w.map((e, t) => [e.key, t])), E = G(Math.max(...w.map(({ point: e }) => e.x), 1), r.mobile ? 3 : 6), D = G(Math.max(...w.map(({ point: e }) => e.y), f ?? 0, 1)), A = P(D.ticks, a.width, { fontFamily: a.fontFamily }), j = K(r, {
1273
+ })).filter((e) => e.point.x != null && e.point.y != null)).sort((e, t) => e.point.x - t.point.x || e.point.y - t.point.y), w = C.filter(({ row: e }) => !S(e)), T = new Map(w.map((e, t) => [e.key, t])), E = K(Math.max(...w.map(({ point: e }) => e.x), 1), n.mobile ? 3 : 6), k = K(Math.max(...w.map(({ point: e }) => e.y), f ?? 0, 1)), A = N(k.ticks, r.width, { fontFamily: r.fontFamily }), M = q(n, {
1045
1274
  left: A.width,
1046
- bottom: Te
1047
- }), N = (e) => j.left + O(j) * e / E.max, F = E.ticks.map((e, t) => ({
1048
- label: g(e),
1049
- x: N(e),
1275
+ bottom: Pe
1276
+ }), P = (e) => M.left + D(M) * e / E.max, F = E.ticks.map((e, t) => ({
1277
+ label: v(e),
1278
+ x: P(e),
1050
1279
  anchor: t === E.ticks.length - 1 ? "end" : "middle"
1051
1280
  })), I = [...x.map((e) => ({
1052
1281
  label: e.label,
@@ -1055,7 +1284,7 @@ function Me(t, r) {
1055
1284
  symbol: e.symbol,
1056
1285
  hidden: S(e)
1057
1286
  })), ...f == null ? [] : [{
1058
- label: h ?? "Norm",
1287
+ label: m ?? "Norm",
1059
1288
  color: "var(--color-chart-emphasis)",
1060
1289
  shape: "dashed",
1061
1290
  fixed: !0
@@ -1072,131 +1301,131 @@ function Me(t, r) {
1072
1301
  symbol: n.symbol
1073
1302
  },
1074
1303
  {
1075
- label: ke(u),
1076
- value: Ae(t.x, d)
1304
+ label: Re(c),
1305
+ value: ze(t.x, d)
1077
1306
  },
1078
1307
  {
1079
- label: ke(s),
1080
- value: Ae(t.y, l)
1308
+ label: Re(a),
1309
+ value: ze(t.y, o)
1081
1310
  }
1082
1311
  ]
1083
1312
  };
1084
1313
  }
1085
1314
  let R = (e) => ({
1086
- x: N(e.x),
1087
- y: k(e.y, D.max, j)
1088
- }), z = (e) => R(w[e].point), V = Y(a, w.length, (e) => ({
1089
- ...z(e),
1315
+ x: P(e.x),
1316
+ y: O(e.y, k.max, M)
1317
+ }), B = (e) => R(w[e].point), ne = Z(r, w.length, (e) => ({
1318
+ ...B(e),
1090
1319
  content: L(e)
1091
- })), re = w.map(({ point: e, row: t }) => e.href ? {
1320
+ })), U = w.map(({ point: e, row: t }) => e.href ? {
1092
1321
  id: e.id ?? `${t.label} · ${e.label}`,
1093
1322
  href: e.href
1094
- } : null), ie = Q(r, re), U = w.map(({ point: e }, t) => ie.of(re[t], e.label, oe(L(t)))), W = Oe(w.map((e, t) => ({
1323
+ } : null), W = le(n, U), G = w.map(({ point: e }, t) => W.of(U[t], e.label, re(L(t)))), J = Le(w.map((e, t) => ({
1095
1324
  label: e.point.label,
1096
- ...z(t)
1097
- })), t.dataLabels ?? [], j, a.fontFamily), q = f == null ? 0 : k(f, D.max, j), ae = a.hoverIndex == null ? void 0 : w[a.hoverIndex], J = (t) => {
1098
- let n = t.target.closest?.("[data-point]");
1325
+ ...B(t)
1326
+ })), e.dataLabels ?? [], M, r.fontFamily), Y = f == null ? 0 : O(f, k.max, M), X = r.hoverIndex == null ? void 0 : w[r.hoverIndex], $ = (e) => {
1327
+ let n = e.target.closest?.("[data-point]");
1099
1328
  if (n) return Number(n.getAttribute("data-point"));
1100
- let r = t.currentTarget, i = r.ownerSVGElement?.getBoundingClientRect(), a = i && i.width > 0 ? j.width / i.width : 1, o = (t.clientX - (i?.left ?? 0)) * a, s = (t.clientY - (i?.top ?? 0)) * a, c = e(r, "--h-target", 48) / 2, l = null, u = c;
1329
+ let r = e.currentTarget, i = r.ownerSVGElement?.getBoundingClientRect(), a = i && i.width > 0 ? M.width / i.width : 1, o = (e.clientX - (i?.left ?? 0)) * a, s = (e.clientY - (i?.top ?? 0)) * a, c = t(r, "--h-target", 48) / 2, l = null, u = c;
1101
1330
  return w.forEach((e, t) => {
1102
- let { x: n, y: r } = z(t), i = Math.hypot(n - o, r - s);
1331
+ let { x: n, y: r } = B(t), i = Math.hypot(n - o, r - s);
1103
1332
  i <= u && (l = t, u = i);
1104
1333
  }), l;
1105
- }, se = (e) => {
1106
- let t = J(e);
1107
- t == null ? (a.hoverIndex != null || a.tooltip) && a.hoverAt(null) : a.hoverAt(t, e, L(t));
1108
- }, Z = (e) => {
1109
- let t = J(e), r = t == null ? null : U[t];
1110
- r?.clickable && r.click !== n && r.click();
1111
- }, ce = ae != null && U[a.hoverIndex]?.clickable, le = [f == null ? n : i`
1334
+ }, ie = (e) => {
1335
+ let t = $(e);
1336
+ t == null ? (r.hoverIndex != null || r.tooltip) && r.hoverAt(null) : r.hoverAt(t, e, L(t));
1337
+ }, ae = (e) => {
1338
+ let t = $(e), n = t == null ? null : G[t];
1339
+ n?.clickable && n.click !== l && n.click();
1340
+ }, oe = X != null && G[r.hoverIndex]?.clickable, se = [f == null ? l : _`
1112
1341
  <g class="lintje-chart__reference">
1113
- <line x1=${j.left} x2=${j.width - j.right} y1=${q} y2=${q}
1342
+ <line x1=${M.left} x2=${M.width - M.right} y1=${Y} y2=${Y}
1114
1343
  stroke="var(--color-chart-emphasis)" stroke-width="1" stroke-dasharray="3 3" />
1115
- <text x=${j.left + 6} y=${q - 6}
1344
+ <text x=${M.left + 6} y=${Y - 6}
1116
1345
  class="lintje-chart__axis-label lintje-chart__axis-label--halo">
1117
- ${h ?? `norm ${Ae(f, l)}`}
1346
+ ${m ?? `norm ${ze(f, o)}`}
1118
1347
  </text>
1119
1348
  </g>
1120
- `, i`<g @mousemove=${se} @mouseleave=${() => a.hoverAt(null)} @click=${Z}>
1121
- <rect class="lintje-chart__hit ${ce ? "is-clickable" : ""}"
1122
- x="0" y="0" width=${j.width} height=${j.height} />
1349
+ `, _`<g @mousemove=${ie} @mouseleave=${() => r.hoverAt(null)} @click=${ae}>
1350
+ <rect class="lintje-chart__hit ${oe ? "is-clickable" : ""}"
1351
+ x="0" y="0" width=${M.width} height=${M.height} />
1123
1352
  <g>
1124
- ${p(C, (e) => e.key, ({ point: e, row: t, key: r }, a) => {
1125
- let { x: o, y: s } = R(e), c = te(t.color), l = T.get(r), u = l == null ? void 0 : U[l];
1126
- return i`
1127
- <path class="lintje-chart__point lintje-chart__mark ${c ? "" : "lintje-chart__segment"} ${u?.state ?? "is-hidden"}"
1128
- ${_(B(a, C.length))}
1129
- d=${M(t.symbol, Ce, o, s)} fill=${t.color}
1130
- stroke=${c ?? n} stroke-width=${c ? 1 : n}
1131
- data-point=${l ?? n}
1132
- data-mark-id=${u?.markId ?? n} role=${u?.role ?? n}
1133
- tabindex=${u?.tabIndex ?? n}
1134
- aria-pressed=${u?.pressed ?? n} aria-label=${u?.label ?? n}
1135
- @keydown=${u?.keydown ?? n} />
1353
+ ${u(C, (e) => e.key, ({ point: e, row: t, key: n }, r) => {
1354
+ let { x: i, y: a } = R(e), o = V(t.color), c = T.get(n), u = c == null ? void 0 : G[c];
1355
+ return _`
1356
+ <path class="lintje-chart__point lintje-chart__mark ${o ? "" : "lintje-chart__segment"} ${u?.state ?? "is-hidden"}"
1357
+ ${s(z(r, C.length))}
1358
+ d=${j(t.symbol, Me, i, a)} fill=${t.color}
1359
+ stroke=${o ?? l} stroke-width=${o ? 1 : l}
1360
+ data-point=${c ?? l}
1361
+ data-mark-id=${u?.markId ?? l} role=${u?.role ?? l}
1362
+ tabindex=${u?.tabIndex ?? l}
1363
+ aria-pressed=${u?.pressed ?? l} aria-label=${u?.label ?? l}
1364
+ @keydown=${u?.keydown ?? l} />
1136
1365
  `;
1137
1366
  })}
1138
1367
  </g>
1139
1368
 
1140
- ${W.map((e) => i`
1369
+ ${J.map((e) => _`
1141
1370
  <text x=${e.x} y=${e.y} text-anchor=${e.anchor}
1142
1371
  class="lintje-chart__data-label lintje-chart__data-label--halo">${e.label}</text>
1143
1372
  `)}
1144
1373
 
1145
1374
  <!-- The point under the pointer or the keyboard, raised with a ring in the surface. -->
1146
- ${ae ? (() => {
1147
- let { x: e, y: t } = z(a.hoverIndex), r = te(ae.row.color), o = M(ae.row.symbol, we, e, t);
1148
- return i`
1149
- <path class="lintje-chart__hover-point" d=${o} fill=${ae.row.color} />
1150
- ${r ? i`<path class="lintje-chart__hover-casing" d=${o} stroke=${r} />` : n}
1375
+ ${X ? (() => {
1376
+ let { x: e, y: t } = B(r.hoverIndex), n = V(X.row.color), i = j(X.row.symbol, Ne, e, t);
1377
+ return _`
1378
+ <path class="lintje-chart__hover-point" d=${i} fill=${X.row.color} />
1379
+ ${n ? _`<path class="lintje-chart__hover-casing" d=${i} stroke=${n} />` : l}
1151
1380
  `;
1152
- })() : n}
1381
+ })() : l}
1153
1382
  </g>`];
1154
- return m`
1155
- <div class="lintje-chart-wrap ${v ? "lintje-chart--small" : ""}"
1156
- ${c(a.attach)} ?data-in-view=${a.inView} data-tooltip-anchor
1157
- @keydown=${(e) => a.dismiss(e) || ie.escape(e)}>
1383
+ return p`
1384
+ <div class="lintje-chart-wrap ${g ? "lintje-chart--small" : ""}"
1385
+ ${h(r.attach)} ?data-in-view=${r.inView} data-tooltip-anchor
1386
+ @keydown=${(e) => r.dismiss(e) || W.escape(e)}>
1158
1387
  ${ee({
1159
1388
  items: I,
1160
- onToggle: (e) => a.toggleSeries(e)
1389
+ onToggle: (e) => r.toggleSeries(e)
1161
1390
  })}
1162
- ${ne({
1163
- fontFamily: a.fontFamily,
1391
+ ${te({
1392
+ fontFamily: r.fontFamily,
1164
1393
  id: y,
1165
- ticks: D.ticks,
1166
- max: D.max,
1167
- area: j,
1394
+ ticks: k.ticks,
1395
+ max: k.max,
1396
+ area: M,
1168
1397
  formatTick: A.format,
1169
- axisTitle: s,
1398
+ axisTitle: a,
1170
1399
  xLabels: F,
1171
- xTitle: u,
1172
- description: o,
1173
- interactive: ie.interactive,
1174
- keys: V
1175
- }, le)}
1176
- ${H(a)}
1177
- ${X(a)}
1400
+ xTitle: c,
1401
+ description: i,
1402
+ interactive: W.interactive,
1403
+ keys: ne
1404
+ }, se)}
1405
+ ${H(r)}
1406
+ ${Q(r)}
1178
1407
  </div>
1179
1408
  `;
1180
1409
  }
1181
1410
  //#endregion
1182
1411
  //#region src/components/shared/charts/heatmap-chart/heatmap-classes.ts
1183
- var Ne = [
1412
+ var He = [
1184
1413
  "var(--color-chart-seq-1)",
1185
1414
  "var(--color-chart-seq-2)",
1186
1415
  "var(--color-chart-seq-3)",
1187
1416
  "var(--color-chart-seq-4)",
1188
1417
  "var(--color-chart-seq-5)"
1189
- ], Pe = Ne.length, Fe = [
1418
+ ], Ue = He.length, We = [
1190
1419
  1,
1191
1420
  2,
1192
1421
  2.5,
1193
1422
  5,
1194
1423
  10
1195
1424
  ];
1196
- function Ie(e, t) {
1425
+ function Ge(e, t) {
1197
1426
  if (!(e > 0) || !Number.isFinite(e)) return 1;
1198
1427
  let n = 10 ** Math.floor(Math.log10(e)), r = 0, i = Infinity;
1199
- for (let a of Fe) {
1428
+ for (let a of We) {
1200
1429
  let o = a * n;
1201
1430
  if (t && !Number.isInteger(o)) continue;
1202
1431
  let s = Math.abs(Math.log(o / e));
@@ -1204,29 +1433,29 @@ function Ie(e, t) {
1204
1433
  }
1205
1434
  return r || (t ? 1 : n);
1206
1435
  }
1207
- function Le(e, t) {
1436
+ function Ke(e, t) {
1208
1437
  let n = Math.max(0, Math.min(10, -Math.floor(Math.log10(t)) + 1));
1209
1438
  return Number(e.toFixed(n));
1210
1439
  }
1211
- function Re(e) {
1440
+ function qe(e) {
1212
1441
  let t = [];
1213
1442
  for (let n of e) for (let e of n ?? []) e != null && Number.isFinite(e) && t.push(e);
1214
1443
  if (t.length === 0) return [];
1215
1444
  let n = Math.min(...t), r = Math.max(...t);
1216
1445
  if (n === r) return [];
1217
- let i = t.every(Number.isInteger), a = Ie((r - n) / Pe, i), o = Math.floor(n / a) * a, s = [];
1218
- for (let e = 1; e < Pe; e += 1) {
1219
- let t = Le(o + e * a, a);
1446
+ let i = t.every(Number.isInteger), a = Ge((r - n) / Ue, i), o = Math.floor(n / a) * a, s = [];
1447
+ for (let e = 1; e < Ue; e += 1) {
1448
+ let t = Ke(o + e * a, a);
1220
1449
  if (t > r) break;
1221
1450
  s.push(t);
1222
1451
  }
1223
1452
  return s;
1224
1453
  }
1225
- function ze(e, t, n = 0) {
1226
- let r = g(e, n), i = t?.trim() ?? "";
1454
+ function Je(e, t, n = 0) {
1455
+ let r = v(e, n), i = t?.trim() ?? "";
1227
1456
  return i ? i === "%" ? `${r}%` : `${r} ${i}` : r;
1228
1457
  }
1229
- function Be(e) {
1458
+ function Ye(e) {
1230
1459
  let t = 0;
1231
1460
  for (let n of e) {
1232
1461
  let e = String(n), r = e.indexOf(".");
@@ -1234,13 +1463,13 @@ function Be(e) {
1234
1463
  }
1235
1464
  return Math.min(t, 4);
1236
1465
  }
1237
- function Ve(e, t = {}) {
1238
- let n = (t.bounds?.length ? t.bounds.slice(0, Pe - 1) : null) ?? Re(e), r = Be(n), i = (e) => ze(e, t.unit, r), a = (e) => g(e, r);
1466
+ function Xe(e, t = {}) {
1467
+ let n = (t.bounds?.length ? t.bounds.slice(0, Ue - 1) : null) ?? qe(e), r = Ye(n), i = (e) => Je(e, t.unit, r), a = (e) => v(e, r);
1239
1468
  if (n.length === 0) {
1240
- let e = Ne.length - 1;
1469
+ let e = He.length - 1;
1241
1470
  return [{
1242
1471
  limit: Infinity,
1243
- color: Ne[e],
1472
+ color: He[e],
1244
1473
  label: "alle waarden",
1245
1474
  ramp: e
1246
1475
  }];
@@ -1248,106 +1477,106 @@ function Ve(e, t = {}) {
1248
1477
  return [
1249
1478
  {
1250
1479
  limit: n[0],
1251
- color: Ne[0],
1480
+ color: He[0],
1252
1481
  label: `< ${i(n[0])}`,
1253
1482
  ramp: 0
1254
1483
  },
1255
1484
  ...n.slice(1).map((e, t) => ({
1256
1485
  limit: e,
1257
- color: Ne[t + 1],
1486
+ color: He[t + 1],
1258
1487
  label: `${a(n[t])}–${i(e)}`,
1259
1488
  ramp: t + 1
1260
1489
  })),
1261
1490
  {
1262
1491
  limit: Infinity,
1263
- color: Ne[n.length],
1492
+ color: He[n.length],
1264
1493
  label: `≥ ${i(n[n.length - 1])}`,
1265
1494
  ramp: n.length
1266
1495
  }
1267
1496
  ];
1268
1497
  }
1269
- function He(e, t) {
1498
+ function Ze(e, t) {
1270
1499
  let n = e.findIndex((e) => t < e.limit);
1271
1500
  return n === -1 ? e.length - 1 : n;
1272
1501
  }
1273
1502
  //#endregion
1274
1503
  //#region src/components/shared/charts/heatmap-chart/heatmap-chart.ts
1275
- function Ue(e, t, n) {
1504
+ function Qe(e, t, n) {
1276
1505
  return Array.from({ length: n }, (n, r) => Array.from({ length: t }, (t, n) => e?.[n]?.[r]));
1277
1506
  }
1278
- function We(e) {
1507
+ function $e(e) {
1279
1508
  if (e.mobile) return e.mobile;
1280
1509
  let t = e.rowLabels.length, n = e.columnLabels.length;
1281
1510
  if (!(n <= t)) return {
1282
1511
  columnLabels: e.rowLabels,
1283
1512
  rowLabels: e.columnLabels,
1284
- values: Ue(e.values, t, n),
1285
- links: e.links ? Ue(e.links, t, n) : void 0
1513
+ values: Qe(e.values, t, n),
1514
+ links: e.links ? Qe(e.links, t, n) : void 0
1286
1515
  };
1287
1516
  }
1288
- function Ge(e, t) {
1289
- let { controller: r, description: i, mobile: a = !1 } = t, o = a ? We(e) : void 0, s = o?.columnLabels ?? e.columnLabels, l = o?.rowLabels ?? e.rowLabels, u = o?.values ?? e.values, d = o ? o.links : e.links, f = o ? !0 : e.compact ?? !1, { unit: p } = e, h = Q(t, (d ?? []).flat()), v = Ve(u, {
1517
+ function et(e, t) {
1518
+ let { controller: n, description: r, mobile: i = !1 } = t, a = i ? $e(e) : void 0, o = a?.columnLabels ?? e.columnLabels, c = a?.rowLabels ?? e.rowLabels, u = a?.values ?? e.values, d = a ? a.links : e.links, f = a ? !0 : e.compact ?? !1, { unit: m } = e, g = le(t, (d ?? []).flat()), _ = Xe(u, {
1290
1519
  bounds: e.bounds,
1291
- unit: p
1292
- }), y = (e) => He(v, e);
1293
- r.measure({});
1294
- let b = r.selectedCell, x = r.dimmedClass;
1295
- return m`
1296
- <div class="lintje-heatmap" ${c(r.attach)} ?data-in-view=${r.inView}
1297
- data-tooltip-anchor @keydown=${h.escape}>
1520
+ unit: m
1521
+ }), y = (e) => Ze(_, e);
1522
+ n.measure({});
1523
+ let b = n.selectedCell, x = n.dimmedClass;
1524
+ return p`
1525
+ <div class="lintje-heatmap" ${h(n.attach)} ?data-in-view=${n.inView}
1526
+ data-tooltip-anchor @keydown=${g.escape}>
1298
1527
  <table class="lintje-heatmap__grid ${f ? "is-compact" : ""}">
1299
- <caption class="visually-hidden">${i}</caption>
1528
+ <caption class="visually-hidden">${r}</caption>
1300
1529
  <thead>
1301
1530
  <tr>
1302
1531
  <td></td>
1303
- ${s.map((e) => m`<th scope="col" class="lintje-heatmap__column-label">${e}</th>`)}
1532
+ ${o.map((e) => p`<th scope="col" class="lintje-heatmap__column-label">${e}</th>`)}
1304
1533
  </tr>
1305
1534
  </thead>
1306
1535
  <tbody>
1307
- ${l.map((e, t) => m`
1536
+ ${c.map((e, t) => p`
1308
1537
  <tr>
1309
1538
  <th scope="row" class="lintje-heatmap__row-label" title=${e}>
1310
1539
  <span class="lintje-heatmap__row-label-text">${e}</span>
1311
1540
  </th>
1312
- ${s.map((n, i) => {
1541
+ ${o.map((r, i) => {
1313
1542
  let a = u[t]?.[i];
1314
- if (a == null) return m`
1543
+ if (a == null) return p`
1315
1544
  <td class="lintje-heatmap__slot">
1316
1545
  <div class="lintje-heatmap__cell is-empty"
1317
- title="${e} · ${s[i]}: geen meting">
1546
+ title="${e} · ${o[i]}: geen meting">
1318
1547
  <span class="visually-hidden">geen meting</span>
1319
1548
  </div>
1320
1549
  </td>
1321
1550
  `;
1322
- let o = y(a), c = h.of(d?.[t]?.[i], `${e} · ${s[i]}`), S = !c.clickable && b?.row === t && b?.column === i;
1323
- return m`
1551
+ let l = y(a), h = g.of(d?.[t]?.[i], `${e} · ${o[i]}`), S = !h.clickable && b?.row === t && b?.column === i;
1552
+ return p`
1324
1553
  <td class="lintje-heatmap__slot">
1325
1554
  <button
1326
1555
  type="button"
1327
- class="lintje-heatmap__cell lintje-heatmap__cell--class-${v[o].ramp} ${S ? "is-selected" : ""} ${x != null && x !== o ? "is-dimmed" : ""} ${c.state}"
1328
- data-mark-id=${c.markId}
1329
- ${_({
1330
- "--lintje-cell": v[o].color,
1331
- ...re(i, t, s.length, l.length)
1556
+ class="lintje-heatmap__cell lintje-heatmap__cell--class-${_[l].ramp} ${S ? "is-selected" : ""} ${x != null && x !== l ? "is-dimmed" : ""} ${h.state}"
1557
+ data-mark-id=${h.markId}
1558
+ ${s({
1559
+ "--lintje-cell": _[l].color,
1560
+ ...ne(i, t, o.length, c.length)
1332
1561
  })}
1333
- @click=${c.clickable ? c.click : () => {
1334
- r.selectedCell = S ? null : {
1562
+ @click=${h.clickable ? h.click : () => {
1563
+ n.selectedCell = S ? null : {
1335
1564
  row: t,
1336
1565
  column: i
1337
- }, r.requestUpdate();
1566
+ }, n.requestUpdate();
1338
1567
  }}
1339
- @mousemove=${f ? void 0 : (t) => r.showTooltip(t, {
1340
- title: `${e} · ${s[i]}`,
1568
+ @mousemove=${f ? void 0 : (t) => n.showTooltip(t, {
1569
+ title: `${e} · ${o[i]}`,
1341
1570
  rows: [{
1342
- label: `klasse ${v[o].label}`,
1343
- value: ze(a, p),
1344
- color: v[o].color
1571
+ label: `klasse ${_[l].label}`,
1572
+ value: Je(a, m),
1573
+ color: _[l].color
1345
1574
  }]
1346
1575
  })}
1347
- @mouseleave=${f ? void 0 : () => r.hideTooltip()}
1348
- aria-pressed=${c.clickable ? c.pressed : S}
1349
- aria-label="${e} ${s[i]}: ${ze(a, p)}, klasse ${v[o].label}"
1350
- >${g(a)}</button>
1576
+ @mouseleave=${f ? void 0 : () => n.hideTooltip()}
1577
+ aria-pressed=${h.clickable ? h.pressed : S}
1578
+ aria-label="${e} ${o[i]}: ${Je(a, m)}, klasse ${_[l].label}"
1579
+ >${v(a)}</button>
1351
1580
  </td>
1352
1581
  `;
1353
1582
  })}
@@ -1357,223 +1586,225 @@ function Ge(e, t) {
1357
1586
  </table>
1358
1587
 
1359
1588
  <!-- Selected cell: a 48 px line with day, block, value, class. -->
1360
- ${b && u[b.row]?.[b.column] != null ? m`
1589
+ ${b && u[b.row]?.[b.column] != null ? p`
1361
1590
  <p class="lintje-heatmap__selection">
1362
- <b>${l[b.row]} ${s[b.column]}</b> ·
1363
- ${ze(u[b.row][b.column], p)} · klasse
1364
- ${v[y(u[b.row][b.column])].label}
1591
+ <b>${c[b.row]} ${o[b.column]}</b> ·
1592
+ ${Je(u[b.row][b.column], m)} · klasse
1593
+ ${_[y(u[b.row][b.column])].label}
1365
1594
  </p>
1366
- ` : n}
1595
+ ` : l}
1367
1596
 
1368
1597
  <!-- Class legend: clickable, dims the other classes to .25. -->
1369
1598
  <ul class="lintje-heatmap__legend">
1370
- ${v.map((e, t) => m`
1599
+ ${_.map((e, t) => p`
1371
1600
  <li>
1372
1601
  <button type="button" class="lintje-heatmap__legend-item ${x != null && x !== t ? "is-dimmed" : ""}"
1373
1602
  @click=${() => {
1374
- r.dimmedClass = x === t ? null : t, r.requestUpdate();
1603
+ n.dimmedClass = x === t ? null : t, n.requestUpdate();
1375
1604
  }}
1376
1605
  aria-pressed=${x === t}>
1377
- <span class="lintje-heatmap__swatch lintje-heatmap__swatch--class-${e.ramp}" ${_({ background: e.color })}></span>
1606
+ <span class="lintje-heatmap__swatch lintje-heatmap__swatch--class-${e.ramp}" ${s({ background: e.color })}></span>
1378
1607
  <span>${e.label}</span>
1379
1608
  </button>
1380
1609
  </li>
1381
1610
  `)}
1382
1611
  </ul>
1383
- ${H(r)}
1612
+ ${H(n)}
1384
1613
  </div>
1385
1614
  `;
1386
1615
  }
1387
1616
  //#endregion
1388
1617
  //#region src/components/shared/charts/histogram-chart/histogram-chart.ts
1389
- var Ke = 16, qe = 56, Je = 8, Ye = 18;
1390
- function Xe(e) {
1391
- return g(e, +!Number.isInteger(e));
1618
+ var tt = 16, nt = 56, rt = 8, it = 18;
1619
+ function at(e) {
1620
+ return v(e, +!Number.isInteger(e));
1392
1621
  }
1393
- function Ze(e, t) {
1622
+ function ot(e, t) {
1394
1623
  let n = t ? ` ${t}` : "";
1395
- return e.to == null ? `${Xe(e.from)}${n} of meer` : `${Xe(e.from)} tot ${Xe(e.to)}${n}`;
1624
+ return e.to == null ? `${at(e.from)}${n} of meer` : `${at(e.from)} tot ${at(e.to)}${n}`;
1396
1625
  }
1397
- function Qe(e, t, n = "") {
1626
+ function st(e, t, n = "") {
1398
1627
  let r = t.width, i = e.map((e) => {
1399
- let t = d(e.text, n, e.bold ? 700 : 400), i = e.x + 6 + t <= r;
1628
+ let t = f(e.text, n, e.bold ? 700 : 400), i = e.x + 6 + t <= r;
1400
1629
  return {
1401
1630
  x: i ? e.x + 6 : e.x - 6,
1402
1631
  anchor: i ? "start" : "end",
1403
1632
  left: i ? e.x + 6 : e.x - 6 - t,
1404
1633
  right: i ? e.x + 6 + t : e.x - 6
1405
1634
  };
1406
- }), a = i.length === 2 ? +(e[1].x >= e[0].x) : -1, o = i.length === 2 && i[0].left < i[1].right + Je && i[1].left < i[0].right + Je;
1635
+ }), a = i.length === 2 ? +(e[1].x >= e[0].x) : -1, o = i.length === 2 && i[0].left < i[1].right + rt && i[1].left < i[0].right + rt;
1407
1636
  return i.map((e, n) => ({
1408
1637
  x: e.x,
1409
- y: t.top + 12 + (o && n === a ? Ye : 0),
1638
+ y: t.top + 12 + (o && n === a ? it : 0),
1410
1639
  anchor: e.anchor
1411
1640
  }));
1412
1641
  }
1413
- function $e(e, t) {
1414
- let { controller: r, description: a } = t, { bins: o, axisTitle: l, xTitle: u, unit: f, median: p, threshold: h, small: v = !1 } = e, y = e.label ?? "Aantal", b = I(e.color) ?? "var(--color-chart-default)", x = r.id, S = (e) => f ? `${e} ${f}` : e;
1415
- r.measure({
1642
+ function ct(e, t) {
1643
+ let { controller: n, description: r } = t, { bins: i, axisTitle: a, xTitle: o, unit: u, median: d, threshold: m, small: g = !1 } = e, y = e.label ?? "Aantal", b = F(e.color) ?? "var(--color-chart-default)", x = n.id, S = (e) => u ? `${e} ${u}` : e;
1644
+ n.measure({
1416
1645
  width: !0,
1417
- height: t.height ?? (v ? "--chart-h-small" : "--chart-h-main"),
1646
+ height: t.height ?? (g ? "--chart-h-small" : "--chart-h-main"),
1418
1647
  fit: !!t.expanded && !t.mobile
1419
1648
  });
1420
- let C = o.map((e) => e.count).filter((e) => e != null), w = C.length === o.length ? C.reduce((e, t) => e + t, 0) : null, { max: T, ticks: E } = G(Math.max(...C, 1)), D = P(E, r.width, { fontFamily: r.fontFamily }), O = K(t), A = K(t, {
1649
+ let C = i.map((e) => e.count).filter((e) => e != null), w = C.length === i.length ? C.reduce((e, t) => e + t, 0) : null, { max: T, ticks: E } = K(Math.max(...C, 1)), D = N(E, n.width, { fontFamily: n.fontFamily }), k = q(t), A = q(t, {
1421
1650
  left: D.width,
1422
- bottom: O.bottom + (u ? Ke : 0)
1423
- }), j = A.height - A.bottom, M = A.width - A.right, N = o[0]?.from ?? 0, F = o[o.length - 1], L = o.length > 1 ? o[o.length - 1].from - o[o.length - 2].from : 1, R = F ? F.to ?? F.from + L : 1, z = (e) => A.left + (e - N) / Math.max(R - N, 2 ** -52) * (M - A.left), V = o.map((e) => {
1424
- let t = z(e.from), n = z(e.to ?? R) - t;
1651
+ bottom: k.bottom + (o ? tt : 0)
1652
+ }), j = A.height - A.bottom, M = A.width - A.right, P = i[0]?.from ?? 0, I = i[i.length - 1], L = i.length > 1 ? i[i.length - 1].from - i[i.length - 2].from : 1, R = I ? I.to ?? I.from + L : 1, B = (e) => A.left + (e - P) / Math.max(R - P, 2 ** -52) * (M - A.left), V = i.map((e) => {
1653
+ let t = B(e.from), n = B(e.to ?? R) - t;
1425
1654
  return {
1426
1655
  x: t,
1427
1656
  width: n,
1428
1657
  center: t + n / 2
1429
1658
  };
1430
- }), te = (e) => {
1431
- let t = o[e].count;
1659
+ }), ne = (e) => {
1660
+ let t = i[e].count;
1432
1661
  return {
1433
- title: Ze(o[e], f),
1662
+ title: ot(i[e], u),
1434
1663
  rows: [{
1435
1664
  label: y,
1436
- value: t == null ? "geen gegevens" : g(t),
1665
+ value: t == null ? "geen gegevens" : v(t),
1437
1666
  color: b
1438
1667
  }, ...t != null && w != null && w > 0 ? [{
1439
1668
  label: "Aandeel",
1440
- value: s(t / w * 100, 1),
1669
+ value: c(t / w * 100, 1),
1441
1670
  color: b
1442
1671
  }] : []]
1443
1672
  };
1444
- }, re = Y(r, o.length, (e) => ({
1673
+ }, W = Z(n, i.length, (e) => ({
1445
1674
  x: V[e].center,
1446
- y: o[e].count == null ? A.top : k(o[e].count, T, A),
1447
- content: te(e)
1448
- })), U = F?.to == null && o.length > 0, W = [...o.slice(0, U ? -1 : void 0).map((e) => e.from), ...U ? [] : F ? [F.to] : []].map((e) => ({
1449
- label: Xe(e),
1450
- x: z(e)
1451
- })), q = U ? {
1452
- label: `${Xe(F.from)}+`,
1675
+ y: i[e].count == null ? A.top : O(i[e].count, T, A),
1676
+ content: ne(e)
1677
+ })), G = I?.to == null && i.length > 0, J = [...i.slice(0, G ? -1 : void 0).map((e) => e.from), ...G ? [] : I ? [I.to] : []].map((e) => ({
1678
+ label: at(e),
1679
+ x: B(e)
1680
+ })), Y = G ? {
1681
+ label: `${at(I.from)}+`,
1453
1682
  x: V[V.length - 1].center
1454
- } : null, ae = W.length > 1 ? (W[W.length - 1].x - W[0].x) / (W.length - 1) : 1, oe = Math.max(1, Math.ceil(qe / ae)), J = ie(W.filter((e, t) => t % oe === 0), r.fontFamily), se = (e, t) => Math.abs(t.x - e.x) < (d(e.label, r.fontFamily) + d(t.label, r.fontFamily)) / 2 + Je, Z = U ? q : W[W.length - 1];
1455
- Z && !J.includes(Z) && (J.length && se(J[J.length - 1], Z) && (J = J.slice(0, -1)), U || (J = [...J, Z]));
1456
- let Q = U ? F.from : R, ce = (e) => e != null && e >= N && e <= Q, le = [...ce(p) ? [{
1457
- x: z(p),
1458
- text: e.medianLabel ?? S(`mediaan ${Xe(p)}`),
1683
+ } : null, re = J.length > 1 ? (J[J.length - 1].x - J[0].x) / (J.length - 1) : 1, X = Math.max(1, Math.ceil(nt / re)), $ = U(J.filter((e, t) => t % X === 0), n.fontFamily), ie = (e, t) => Math.abs(t.x - e.x) < (f(e.label, n.fontFamily) + f(t.label, n.fontFamily)) / 2 + rt, ae = G ? Y : J[J.length - 1];
1684
+ ae && !$.includes(ae) && ($.length && ie($[$.length - 1], ae) && ($ = $.slice(0, -1)), G || ($ = [...$, ae]));
1685
+ let oe = G ? I.from : R, se = (e) => e != null && e >= P && e <= oe, ce = [...se(d) ? [{
1686
+ x: B(d),
1687
+ text: e.medianLabel ?? S(`mediaan ${at(d)}`),
1459
1688
  bold: !0,
1460
1689
  dashed: !1
1461
- }] : [], ...ce(h) ? [{
1462
- x: z(h),
1463
- text: e.thresholdLabel ?? S(`norm ${Xe(h)}`),
1690
+ }] : [], ...se(m) ? [{
1691
+ x: B(m),
1692
+ text: e.thresholdLabel ?? S(`norm ${at(m)}`),
1464
1693
  bold: !1,
1465
1694
  dashed: !0
1466
- }] : []], ue = Qe(le, A, r.fontFamily), de = (e) => e.charAt(0).toUpperCase() + e.slice(1), fe = [
1695
+ }] : []], le = st(ce, A, n.fontFamily), ue = (e) => e.charAt(0).toUpperCase() + e.slice(1), de = [
1467
1696
  {
1468
1697
  label: y,
1469
1698
  color: b,
1470
1699
  shape: "square"
1471
1700
  },
1472
- ...ce(p) ? [{
1473
- label: de(e.medianLabel ?? "Mediaan"),
1701
+ ...se(d) ? [{
1702
+ label: ue(e.medianLabel ?? "Mediaan"),
1474
1703
  color: "var(--color-chart-emphasis)",
1475
1704
  shape: "line"
1476
1705
  }] : [],
1477
- ...ce(h) ? [{
1478
- label: de(e.thresholdLabel ?? "Norm"),
1706
+ ...se(m) ? [{
1707
+ label: ue(e.thresholdLabel ?? "Norm"),
1479
1708
  color: "var(--color-chart-emphasis)",
1480
1709
  shape: "dashed"
1481
1710
  }] : []
1482
- ], pe = (e) => {
1483
- let t = V[e], n = o[e].count;
1484
- if (n == null) return i`<rect class="lintje-chart__missing" x=${t.x} y=${A.top} width=${t.width}
1711
+ ], fe = (e) => {
1712
+ let t = V[e], n = i[e].count;
1713
+ if (n == null) return _`<rect class="lintje-chart__missing" x=${t.x} y=${A.top} width=${t.width}
1485
1714
  height=${Math.max(0, j - A.top)} fill="url(#hatch-${x})" />`;
1486
- let r = k(n, T, A);
1487
- return i`
1488
- <g class="lintje-chart__bar-group" ${_(B(e, o.length))}>
1715
+ let r = O(n, T, A);
1716
+ return _`
1717
+ <g class="lintje-chart__bar-group" ${s(z(e, i.length))}>
1489
1718
  <rect class="lintje-chart__bar lintje-chart__segment" x=${t.x} y=${r} width=${t.width}
1490
1719
  height=${Math.max(0, j - r)} fill=${b} />
1491
1720
  </g>
1492
1721
  `;
1493
- }, $ = r.hoverIndex, me = $ == null ? null : o[$]?.count, he = [
1494
- o.map((e, t) => pe(t)),
1495
- $ != null && me != null ? i`<rect class="lintje-chart__bar lintje-chart__bar--lifted lintje-chart__segment"
1496
- x=${V[$].x} y=${k(me, T, A)} width=${V[$].width}
1497
- height=${Math.max(0, j - k(me, T, A))} fill=${b} />` : n,
1498
- J.map((e) => i`
1722
+ }, pe = n.hoverIndex, me = pe == null ? null : i[pe]?.count, he = [
1723
+ i.map((e, t) => fe(t)),
1724
+ pe != null && me != null ? _`<rect class="lintje-chart__bar lintje-chart__bar--lifted lintje-chart__segment"
1725
+ x=${V[pe].x} y=${O(me, T, A)} width=${V[pe].width}
1726
+ height=${Math.max(0, j - O(me, T, A))} fill=${b} />` : l,
1727
+ $.map((e) => _`
1499
1728
  <line x1=${e.x} x2=${e.x} y1=${j} y2=${j + 4}
1500
1729
  stroke="var(--color-chart-zero)" stroke-width="1" />
1501
1730
  <text x=${e.x} y=${j + 20} text-anchor="middle" class="lintje-chart__axis-label">${e.label}</text>
1502
1731
  `),
1503
- q ? i`<text x=${q.x} y=${j + 20} text-anchor="middle" class="lintje-chart__axis-label">${q.label}</text>` : n,
1504
- le.map((e, t) => {
1505
- let r = ue[t];
1506
- return i`
1732
+ Y ? _`<text x=${Y.x} y=${j + 20} text-anchor="middle" class="lintje-chart__axis-label">${Y.label}</text>` : l,
1733
+ ce.map((e, t) => {
1734
+ let n = le[t];
1735
+ return _`
1507
1736
  <g class="lintje-chart__reference">
1508
1737
  <line x1=${e.x} x2=${e.x} y1=${A.top} y2=${j}
1509
1738
  stroke="var(--color-chart-emphasis)" stroke-width=${e.dashed ? 1 : 1.5}
1510
- stroke-dasharray=${e.dashed ? "3 3" : n} />
1511
- <text x=${r.x} y=${r.y} text-anchor=${r.anchor}
1739
+ stroke-dasharray=${e.dashed ? "3 3" : l} />
1740
+ <text x=${n.x} y=${n.y} text-anchor=${n.anchor}
1512
1741
  class=${e.bold ? "lintje-chart__data-label lintje-chart__data-label--halo" : "lintje-chart__axis-label lintje-chart__axis-label--halo"}>${e.text}</text>
1513
1742
  </g>
1514
1743
  `;
1515
1744
  }),
1516
- V.map((e, t) => i`
1745
+ V.map((e, t) => _`
1517
1746
  <rect x=${e.x} y=${A.top} width=${e.width} height=${Math.max(0, j - A.top)}
1518
1747
  fill="transparent"
1519
- @mousemove=${(e) => r.hoverAt(t, e, te(t))}
1520
- @mouseleave=${() => r.hoverAt(null)} />
1748
+ @mousemove=${(e) => n.hoverAt(t, e, ne(t))}
1749
+ @mouseleave=${() => n.hoverAt(null)} />
1521
1750
  `)
1522
1751
  ];
1523
- return m`
1524
- <div class="lintje-chart-wrap ${v ? "lintje-chart--small" : ""}"
1525
- ${c(r.attach)} ?data-in-view=${r.inView} data-tooltip-anchor
1526
- @keydown=${(e) => r.dismiss(e)}>
1527
- ${ee({ items: fe })}
1528
- ${ne({
1529
- fontFamily: r.fontFamily,
1752
+ return p`
1753
+ <div class="lintje-chart-wrap ${g ? "lintje-chart--small" : ""}"
1754
+ ${h(n.attach)} ?data-in-view=${n.inView} data-tooltip-anchor
1755
+ @keydown=${(e) => n.dismiss(e)}>
1756
+ ${ee({ items: de })}
1757
+ ${te({
1758
+ fontFamily: n.fontFamily,
1530
1759
  id: x,
1531
1760
  ticks: E,
1532
1761
  max: T,
1533
1762
  area: A,
1534
- axisTitle: l,
1535
- xTitle: u,
1536
- description: a,
1763
+ axisTitle: a,
1764
+ xTitle: o,
1765
+ description: r,
1537
1766
  formatTick: D.format,
1538
- keys: re
1767
+ keys: W
1539
1768
  }, he)}
1540
- ${H(r)}
1541
- ${X(r)}
1769
+ ${H(n)}
1770
+ ${Q(n)}
1542
1771
  </div>
1543
1772
  `;
1544
1773
  }
1545
1774
  //#endregion
1546
1775
  //#region src/components/shared/charts/shared/render-chart.ts
1547
- function et(e, t) {
1776
+ function lt(e, t) {
1548
1777
  switch (e.kind) {
1549
1778
  case "line": return se(e, t);
1550
- case "bar": return le(e, t);
1551
- case "horizontal-bar": return de(e, t);
1552
- case "target-progress": return fe(e, t);
1553
- case "grouped-bar": return pe(e, t);
1554
- case "stacked-bar": return ge(e, t);
1555
- case "pie": return xe(e, t);
1556
- case "dual-axis": return Se(e, t);
1557
- case "scatter": return Me(e, t);
1558
- case "heatmap": return Ge(e, t);
1559
- case "histogram": return $e(e, t);
1779
+ case "bar": return de(e, t);
1780
+ case "horizontal-bar": return pe(e, t);
1781
+ case "target-progress": return me(e, t);
1782
+ case "grouped-bar": return he(e, t);
1783
+ case "stacked-bar": return ye(e, t);
1784
+ case "stacked-area": return Te(e, t);
1785
+ case "pie": return Ae(e, t);
1786
+ case "dual-axis": return je(e, t);
1787
+ case "scatter": return Ve(e, t);
1788
+ case "heatmap": return et(e, t);
1789
+ case "histogram": return ct(e, t);
1560
1790
  }
1561
1791
  }
1562
1792
  //#endregion
1563
1793
  //#region src/components/charts/chart/chart.css?inline
1564
- var tt = "/* ------------------------------------------------------------------------ */\n\n.lintje-chart__view { flex: none; }\n\n/* Below 768 px it is a row of its own at the touch height. */\n@media (max-width: 767px) {\n .lintje-chart__view { --h-control: var(--h-touch); width: 100%; }\n}\n", nt = ".lintje-chart__svg, .lintje-pie-chart__svg", rt = [{
1794
+ var ut = "/* ------------------------------------------------------------------------ */\n\n.lintje-chart__view { flex: none; }\n\n/* Below 768 px it is a row of its own at the touch height. */\n@media screen and (max-width: 767px) {\n .lintje-chart__view { --h-control: var(--h-touch); width: 100%; }\n}\n", dt = ".lintje-chart__svg, .lintje-pie-chart__svg", ft = [{
1565
1795
  value: "chart",
1566
1796
  label: "Grafiek"
1567
1797
  }, {
1568
1798
  value: "table",
1569
1799
  label: "Tabel"
1570
1800
  }];
1571
- function it(e) {
1801
+ function pt(e) {
1572
1802
  return (e ?? "").normalize("NFD").replace(/[\u0300-\u036f]/g, "").toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "") || "grafiek";
1573
1803
  }
1574
- function at(e) {
1804
+ function mt(e) {
1575
1805
  switch (e.kind) {
1576
1806
  case "line":
1807
+ case "stacked-area":
1577
1808
  case "dual-axis":
1578
1809
  case "scatter": return "line";
1579
1810
  case "pie": return e.donut ? "donut" : "pie";
@@ -1581,18 +1812,29 @@ function at(e) {
1581
1812
  default: return "bar";
1582
1813
  }
1583
1814
  }
1584
- function ot(e) {
1815
+ function ht(e) {
1585
1816
  switch (e.kind) {
1586
1817
  case "horizontal-bar":
1587
- case "target-progress": return e.rows.length ? `${ue(e.rows.length)}px` : void 0;
1818
+ case "target-progress": return e.rows.length ? `${fe(e.rows.length)}px` : void 0;
1588
1819
  case "pie":
1589
1820
  case "heatmap": return;
1590
1821
  default: return e.small ? "var(--chart-h-small)" : void 0;
1591
1822
  }
1592
1823
  }
1593
- function st(e) {
1824
+ function gt(e) {
1594
1825
  switch (e.kind) {
1595
- case "line": return [["", ...e.series.map((e) => e.label)], ...e.labels.map((t, n) => [t, ...e.series.map((e) => e.values[n])])];
1826
+ case "line": {
1827
+ let t = e.events ?? [], n = (e) => t.filter((t) => t.index === e).map((e) => e.label).join("; ");
1828
+ return [[
1829
+ "",
1830
+ ...e.series.map((e) => e.label),
1831
+ ...t.length ? ["Gebeurtenis"] : []
1832
+ ], ...e.labels.map((r, i) => [
1833
+ r,
1834
+ ...e.series.map((e) => e.values[i]),
1835
+ ...t.length ? [n(i)] : []
1836
+ ])];
1837
+ }
1596
1838
  case "bar": return [[
1597
1839
  "",
1598
1840
  e.axisTitle ?? "Waarde",
@@ -1614,6 +1856,18 @@ function st(e) {
1614
1856
  ])];
1615
1857
  case "grouped-bar":
1616
1858
  case "stacked-bar": return [["", ...e.series.map((e) => e.label)], ...e.labels.map((t, n) => [t, ...e.series.map((e) => e.values[n])])];
1859
+ case "stacked-area": return [[
1860
+ "",
1861
+ ...e.series.map((e) => e.label),
1862
+ "Totaal"
1863
+ ], ...e.labels.map((t, n) => {
1864
+ let r = e.series.map((e) => e.values[n]), i = r.some((e) => e == null) ? null : Number(r.reduce((e, t) => e + t, 0).toFixed(_t(r)));
1865
+ return [
1866
+ t,
1867
+ ...r,
1868
+ i
1869
+ ];
1870
+ })];
1617
1871
  case "pie": return [["", "Aantal"], ...e.segments.map((e) => [e.label, e.value])];
1618
1872
  case "dual-axis": {
1619
1873
  let t = (e) => e.unit ? `${e.label} (${e.unit})` : e.label;
@@ -1653,7 +1907,7 @@ function st(e) {
1653
1907
  t("Tot"),
1654
1908
  "Aantal"
1655
1909
  ], ...e.bins.map((t) => [
1656
- Ze(t, e.unit),
1910
+ ot(t, e.unit),
1657
1911
  t.from,
1658
1912
  t.to ?? "",
1659
1913
  t.count
@@ -1661,15 +1915,15 @@ function st(e) {
1661
1915
  }
1662
1916
  }
1663
1917
  }
1664
- function ct(e) {
1918
+ function _t(e) {
1665
1919
  return e.reduce((e, t) => {
1666
1920
  if (typeof t != "number" || Number.isInteger(t)) return e;
1667
1921
  let n = String(t).split(".")[1] ?? "";
1668
1922
  return Math.max(e, n.length);
1669
1923
  }, 0);
1670
1924
  }
1671
- function lt(e, t) {
1672
- let [n = [], ...r] = st(e), i = n.map((e, t) => {
1925
+ function vt(e, t) {
1926
+ let [n = [], ...r] = gt(e), i = n.map((e, t) => {
1673
1927
  let n = r.map((e) => e[t] ?? null);
1674
1928
  return t === 0 || n.some((e) => typeof e == "string" && e !== "") ? {
1675
1929
  key: `c${t}`,
@@ -1680,7 +1934,7 @@ function lt(e, t) {
1680
1934
  key: `c${t}`,
1681
1935
  header: String(e ?? ""),
1682
1936
  format: "decimal",
1683
- decimals: ct(n),
1937
+ decimals: _t(n),
1684
1938
  align: "right",
1685
1939
  sortable: !1
1686
1940
  };
@@ -1700,18 +1954,17 @@ function lt(e, t) {
1700
1954
  pageSize: Math.max(r.length, 1)
1701
1955
  };
1702
1956
  }
1703
- var ut = class extends S {
1957
+ var yt = class extends C {
1704
1958
  constructor(...e) {
1705
- super(...e), this.view = "chart", this.#e = new U(() => this.requestUpdate()), this.#t = null, this.#n = new a(this);
1959
+ super(...e), this.view = "chart", this.#e = new W(() => this.requestUpdate()), this.#t = null, this.#n = new n(this);
1706
1960
  }
1707
1961
  static {
1708
1962
  this.styles = [
1709
- u,
1710
- r(y),
1711
- r(v),
1712
- r(o),
1713
- ...C,
1714
- r(tt)
1963
+ e,
1964
+ a(x),
1965
+ a(r),
1966
+ ...w,
1967
+ a(ut)
1715
1968
  ];
1716
1969
  }
1717
1970
  static {
@@ -1740,36 +1993,40 @@ var ut = class extends S {
1740
1993
  }
1741
1994
  get downloadName() {
1742
1995
  let e = this.data?.download;
1743
- return e === !1 ? null : e?.filename ?? it(this.data?.title);
1996
+ return e === !1 ? null : e?.filename ?? pt(this.data?.title);
1744
1997
  }
1745
1998
  csv() {
1746
1999
  let e = this.data, t = this.downloadName;
1747
- e && t !== null && D(t, st(e.chart));
2000
+ e && t !== null && E(t, gt(e.chart));
1748
2001
  }
1749
2002
  png() {
1750
2003
  let e = this.data;
1751
2004
  if (!e) return;
1752
- let t = this.renderRoot.querySelector(this.expanded ? "lintje-modal" : "lintje-tile")?.querySelector(nt);
1753
- t && w(this.downloadName ?? it(e.title), t);
2005
+ let t = this.renderRoot.querySelector(this.expanded ? "lintje-modal" : "lintje-tile")?.querySelector(dt);
2006
+ t && T(this.downloadName ?? pt(e.title), t);
1754
2007
  }
1755
2008
  expandChanged(e) {
1756
- e ? this.#t ??= new U(() => this.requestUpdate()) : (this.#t?.detach(), this.#t = null);
2009
+ e ? this.#t ??= new W(() => this.requestUpdate()) : (this.#t?.detach(), this.#t = null);
1757
2010
  }
1758
2011
  render() {
1759
2012
  let e = this.data;
1760
- if (!e) return n;
1761
- let t = this.ready, r = this.#n.matches && e.mobileSubtitle ? e.mobileSubtitle : e.subtitle, i = this.id ? `${this.id}-tile` : void 0, a = e.tableSwitch && t ? this.viewSwitch() : n, o = this.showsTable;
1762
- return m`<lintje-tile
1763
- id=${i ?? n}
1764
- span=${e.span ?? n}
1765
- heading=${e.title ?? n}
1766
- icon=${e.icon ?? n}
1767
- subtitle=${r ?? n}
1768
- intro=${e.intro ?? n}
1769
- footnote=${e.footnote ?? n}
2013
+ if (!e) return l;
2014
+ let t = this.ready, n = this.#n.matches && e.mobileSubtitle ? e.mobileSubtitle : e.subtitle, r = this.id ? `${this.id}-tile` : void 0, i = e.tableSwitch && t ? this.viewSwitch() : l, a = this.showsTable;
2015
+ return p`<lintje-tile
2016
+ id=${r ?? l}
2017
+ span=${e.span ?? l}
2018
+ heading=${e.title ?? l}
2019
+ icon=${e.icon ?? l}
2020
+ subtitle=${n ?? l}
2021
+ intro=${e.intro ?? l}
2022
+ footnote=${e.footnote ?? l}
1770
2023
  ?legend-below=${!!e.legendBelow}
1771
2024
  ?expandable=${this.expandable && t}
1772
2025
  ?download=${this.downloadName !== null && t}
2026
+ state=${e.state ?? "ready"}
2027
+ message=${e.message ?? l}
2028
+ last-known=${e.lastKnown ?? l}
2029
+ content-height=${ht(e.chart) ?? l}
1773
2030
  @lintje-tile-expand=${(e) => {
1774
2031
  e.stopPropagation(), this.expand(!0);
1775
2032
  }}
@@ -1777,53 +2034,51 @@ var ut = class extends S {
1777
2034
  e.stopPropagation(), this.csv();
1778
2035
  }}
1779
2036
  >
1780
- ${a}
1781
- ${e.notice ? m`<lintje-announcement
2037
+ ${i}
2038
+ ${e.notice ? p`<lintje-announcement
1782
2039
  slot="notice"
1783
2040
  compact
1784
2041
  .data=${e.notice}
1785
- ></lintje-announcement>` : n}
2042
+ ></lintje-announcement>` : l}
1786
2043
  ${this.content()}
1787
2044
  </lintje-tile>
1788
2045
 
1789
- ${this.renderExpandModal(this.expanded ? o ? this.table() : this.#t ? et(e.chart, {
2046
+ ${this.renderExpandModal(this.expanded ? a ? this.table() : this.#t ? lt(e.chart, {
1790
2047
  ...this.chartOptions(this.#t),
1791
2048
  expanded: !0
1792
- }) : n : n, {
2049
+ }) : l : l, {
1793
2050
  heading: e.title,
1794
- subtitle: r,
2051
+ subtitle: n,
1795
2052
  footnote: e.footnote,
1796
2053
  csv: () => this.csv(),
1797
- png: o ? void 0 : () => this.png()
2054
+ png: a ? void 0 : () => this.png()
1798
2055
  })}`;
1799
2056
  }
1800
2057
  content() {
1801
- let e = this.data, t = ot(e.chart);
2058
+ let e = this.data;
1802
2059
  switch (e.state ?? "ready") {
1803
- case "loading": return x({
1804
- kind: at(e.chart),
1805
- height: t
1806
- });
1807
- case "empty": return T(e.message, t);
1808
- case "error": return E({
1809
- message: e.message,
1810
- lastKnown: e.lastKnown,
1811
- height: t,
1812
- announcement: b
1813
- });
1814
- default: return this.showsTable ? this.table() : et(e.chart, this.chartOptions(this.#e));
2060
+ case "loading": return p`<div slot="loading">
2061
+ ${S({
2062
+ kind: mt(e.chart),
2063
+ height: ht(e.chart),
2064
+ status: !1
2065
+ })}
2066
+ </div>`;
2067
+ case "empty":
2068
+ case "error": return l;
2069
+ default: return this.showsTable ? this.table() : lt(e.chart, this.chartOptions(this.#e));
1815
2070
  }
1816
2071
  }
1817
2072
  viewSwitch() {
1818
2073
  let e = this.#n.matches;
1819
- return m`<lintje-segmented
2074
+ return p`<lintje-segmented
1820
2075
  class="lintje-chart__view"
1821
2076
  slot=${e ? "notice" : "actions"}
1822
2077
  label="Weergave"
1823
2078
  hide-label
1824
2079
  ?stacked=${e}
1825
2080
  .value=${this.view}
1826
- .options=${rt}
2081
+ .options=${ft}
1827
2082
  @lintje-change=${(e) => {
1828
2083
  e.stopPropagation(), this.view = e.detail === "table" ? "table" : "chart";
1829
2084
  }}
@@ -1831,15 +2086,15 @@ var ut = class extends S {
1831
2086
  }
1832
2087
  table() {
1833
2088
  let e = this.data, t = e.title ? `${e.title}, als tabel` : "Grafiek als tabel";
1834
- return m`<lintje-data-table
2089
+ return p`<lintje-data-table
1835
2090
  class="lintje-chart__table"
1836
2091
  bare
1837
- .data=${lt(e.chart, t)}
2092
+ .data=${vt(e.chart, t)}
1838
2093
  ></lintje-data-table>`;
1839
2094
  }
1840
2095
  async focusMark(e) {
1841
2096
  await this.updateComplete;
1842
- let t = this.renderRoot.querySelector(this.expanded ? "lintje-modal" : "lintje-tile"), n = t?.querySelector(`[data-mark-id="${CSS.escape(e)}"]`) ?? t?.querySelector(`${nt}, .lintje-heatmap`);
2097
+ let t = this.renderRoot.querySelector(this.expanded ? "lintje-modal" : "lintje-tile"), n = t?.querySelector(`[data-mark-id="${CSS.escape(e)}"]`) ?? t?.querySelector(`${dt}, .lintje-heatmap`);
1843
2098
  n && !n.hasAttribute("tabindex") && n.setAttribute("tabindex", "-1"), n?.focus();
1844
2099
  }
1845
2100
  chartOptions(e) {
@@ -1863,6 +2118,6 @@ var ut = class extends S {
1863
2118
  };
1864
2119
  }
1865
2120
  };
1866
- t("lintje-chart", ut);
2121
+ i("lintje-chart", yt);
1867
2122
  //#endregion
1868
- export { ut as LintjeChart };
2123
+ export { yt as LintjeChart };