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