@mattilsynet/design 2.2.28 → 2.2.30

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 (177) hide show
  1. package/mtds/alert/alert.js +8 -9
  2. package/mtds/alert/alert.js.map +1 -1
  3. package/mtds/analytics/analytics.js +104 -165
  4. package/mtds/analytics/analytics.js.map +1 -1
  5. package/mtds/app/app-observer.js +28 -74
  6. package/mtds/app/app-observer.js.map +1 -1
  7. package/mtds/app/app-toggle.js +26 -16
  8. package/mtds/app/app-toggle.js.map +1 -1
  9. package/mtds/app/app-toggle2.js +10 -4
  10. package/mtds/app/app-toggle2.js.map +1 -1
  11. package/mtds/app/app.js +32 -36
  12. package/mtds/app/app.js.map +1 -1
  13. package/mtds/atlas/atlas-element.d.ts +27 -0
  14. package/mtds/atlas/atlas-element.js +63 -84
  15. package/mtds/atlas/atlas-element.js.map +1 -1
  16. package/mtds/atlas/atlas-marker.js +28 -48
  17. package/mtds/atlas/atlas-marker.js.map +1 -1
  18. package/mtds/atlas/atlas-matgeo.d.ts +3 -8
  19. package/mtds/atlas/atlas-matgeo.js +36 -66
  20. package/mtds/atlas/atlas-matgeo.js.map +1 -1
  21. package/mtds/atlas/atlas-wms.js +11 -21
  22. package/mtds/atlas/atlas-wms.js.map +1 -1
  23. package/mtds/atlas/atlas.css.js +2 -2
  24. package/mtds/atlas/atlas.css.js.map +1 -1
  25. package/mtds/atlas/atlas.js +23 -23
  26. package/mtds/atlas/atlas.js.map +1 -1
  27. package/mtds/atlas/atlas.stories.d.ts +1 -0
  28. package/mtds/atlas/cluster.js +697 -1576
  29. package/mtds/atlas/cluster.js.map +1 -1
  30. package/mtds/atlas.iife.js +4 -4
  31. package/mtds/atlas.js +11 -10
  32. package/mtds/avatar/avatar.js +8 -8
  33. package/mtds/avatar/avatar.js.map +1 -1
  34. package/mtds/badge/badge.js +7 -7
  35. package/mtds/badge/badge.js.map +1 -1
  36. package/mtds/breadcrumbs/breadcrumbs-observer.js +9 -10
  37. package/mtds/breadcrumbs/breadcrumbs-observer.js.map +1 -1
  38. package/mtds/breadcrumbs/breadcrumbs.js +13 -14
  39. package/mtds/breadcrumbs/breadcrumbs.js.map +1 -1
  40. package/mtds/button/button.js +14 -16
  41. package/mtds/button/button.js.map +1 -1
  42. package/mtds/card/card.js +12 -14
  43. package/mtds/card/card.js.map +1 -1
  44. package/mtds/chart/chart-axis.js +15 -27
  45. package/mtds/chart/chart-axis.js.map +1 -1
  46. package/mtds/chart/chart-bars.js +13 -15
  47. package/mtds/chart/chart-bars.js.map +1 -1
  48. package/mtds/chart/chart-element.js +48 -83
  49. package/mtds/chart/chart-element.js.map +1 -1
  50. package/mtds/chart/chart-lines.js +32 -54
  51. package/mtds/chart/chart-lines.js.map +1 -1
  52. package/mtds/chart/chart-pies.js +14 -34
  53. package/mtds/chart/chart-pies.js.map +1 -1
  54. package/mtds/chart/chart.css.js +2 -2
  55. package/mtds/chart/chart.css.js.map +1 -1
  56. package/mtds/chart/chart.js +12 -12
  57. package/mtds/chart/chart.js.map +1 -1
  58. package/mtds/chip/chip.js +8 -8
  59. package/mtds/chip/chip.js.map +1 -1
  60. package/mtds/chip/chip.stories.d.ts +1 -0
  61. package/mtds/details/details.js +12 -14
  62. package/mtds/details/details.js.map +1 -1
  63. package/mtds/dialog/dialog-observer.js +22 -35
  64. package/mtds/dialog/dialog-observer.js.map +1 -1
  65. package/mtds/dialog/dialog.js +12 -12
  66. package/mtds/dialog/dialog.js.map +1 -1
  67. package/mtds/divider/divider.js +10 -10
  68. package/mtds/divider/divider.js.map +1 -1
  69. package/mtds/errorsummary/errorsummary-observer.js +8 -11
  70. package/mtds/errorsummary/errorsummary-observer.js.map +1 -1
  71. package/mtds/errorsummary/errorsummary.js +11 -11
  72. package/mtds/errorsummary/errorsummary.js.map +1 -1
  73. package/mtds/external/@turf/boolean-point-in-polygon/dist/esm/index.js +19 -27
  74. package/mtds/external/@turf/boolean-point-in-polygon/dist/esm/index.js.map +1 -1
  75. package/mtds/external/@turf/helpers/dist/esm/index.js +16 -29
  76. package/mtds/external/@turf/helpers/dist/esm/index.js.map +1 -1
  77. package/mtds/external/@turf/invariant/dist/esm/index.js +13 -20
  78. package/mtds/external/@turf/invariant/dist/esm/index.js.map +1 -1
  79. package/mtds/external/leaflet/dist/leaflet-src.js +3096 -6004
  80. package/mtds/external/leaflet/dist/leaflet-src.js.map +1 -1
  81. package/mtds/external/leaflet/dist/leaflet.css.js +2 -2
  82. package/mtds/external/leaflet/dist/leaflet.css.js.map +1 -1
  83. package/mtds/external/point-in-polygon-hao/dist/esm/index.js +16 -46
  84. package/mtds/external/point-in-polygon-hao/dist/esm/index.js.map +1 -1
  85. package/mtds/external/robust-predicates/esm/orient2d.js +19 -163
  86. package/mtds/external/robust-predicates/esm/orient2d.js.map +1 -1
  87. package/mtds/external/robust-predicates/esm/util.js +25 -85
  88. package/mtds/external/robust-predicates/esm/util.js.map +1 -1
  89. package/mtds/field/field-observer.js +53 -119
  90. package/mtds/field/field-observer.js.map +1 -1
  91. package/mtds/field/field.d.ts +0 -1
  92. package/mtds/field/field.js +145 -177
  93. package/mtds/field/field.js.map +1 -1
  94. package/mtds/fieldset/fieldset-observer.js +14 -24
  95. package/mtds/fieldset/fieldset-observer.js.map +1 -1
  96. package/mtds/fieldset/fieldset.d.ts +3 -9
  97. package/mtds/fieldset/fieldset.js +20 -23
  98. package/mtds/fieldset/fieldset.js.map +1 -1
  99. package/mtds/fileupload/fileupload.js +8 -9
  100. package/mtds/fileupload/fileupload.js.map +1 -1
  101. package/mtds/fileupload/fileupload.stories.d.ts +1 -0
  102. package/mtds/helptext/helptext.js +15 -15
  103. package/mtds/helptext/helptext.js.map +1 -1
  104. package/mtds/illustrations/index.json +2 -2
  105. package/mtds/index.iife.js +15 -15
  106. package/mtds/index.js +27 -26
  107. package/mtds/index.js.map +1 -1
  108. package/mtds/input/input.js +28 -30
  109. package/mtds/input/input.js.map +1 -1
  110. package/mtds/law/law-helper.js +77 -143
  111. package/mtds/law/law-helper.js.map +1 -1
  112. package/mtds/law/law.js +6 -6
  113. package/mtds/law/law.js.map +1 -1
  114. package/mtds/layout/layout.js +10 -13
  115. package/mtds/layout/layout.js.map +1 -1
  116. package/mtds/link/link.js +7 -8
  117. package/mtds/link/link.js.map +1 -1
  118. package/mtds/logo/logo-observer.js +12 -18
  119. package/mtds/logo/logo-observer.js.map +1 -1
  120. package/mtds/logo/logo.js +8 -8
  121. package/mtds/logo/logo.js.map +1 -1
  122. package/mtds/package.json.js +2 -2
  123. package/mtds/pagination/pagination-helper.js +11 -17
  124. package/mtds/pagination/pagination-helper.js.map +1 -1
  125. package/mtds/pagination/pagination.js +30 -30
  126. package/mtds/pagination/pagination.js.map +1 -1
  127. package/mtds/popover/popover-observer.js +33 -45
  128. package/mtds/popover/popover-observer.js.map +1 -1
  129. package/mtds/popover/popover.js +12 -13
  130. package/mtds/popover/popover.js.map +1 -1
  131. package/mtds/progress/progress.js +8 -8
  132. package/mtds/progress/progress.js.map +1 -1
  133. package/mtds/react-atlas.js +13 -12
  134. package/mtds/react-types.d.ts +1 -0
  135. package/mtds/react.js +80 -80
  136. package/mtds/skeleton/skeleton.js +8 -8
  137. package/mtds/skeleton/skeleton.js.map +1 -1
  138. package/mtds/spinner/spinner.js +8 -8
  139. package/mtds/spinner/spinner.js.map +1 -1
  140. package/mtds/steps/steps.js +7 -7
  141. package/mtds/steps/steps.js.map +1 -1
  142. package/mtds/styles.css +1 -4591
  143. package/mtds/styles.json +43 -43
  144. package/mtds/styles.module.css.js +112 -167
  145. package/mtds/styles.module.css.js.map +1 -1
  146. package/mtds/table/table-observer.js +19 -22
  147. package/mtds/table/table-observer.js.map +1 -1
  148. package/mtds/table/table.d.ts +7 -0
  149. package/mtds/table/table.js +43 -18
  150. package/mtds/table/table.js.map +1 -1
  151. package/mtds/tabs/tabs.js +21 -25
  152. package/mtds/tabs/tabs.js.map +1 -1
  153. package/mtds/tag/tag.js +8 -8
  154. package/mtds/tag/tag.js.map +1 -1
  155. package/mtds/tailwind.css +6 -25
  156. package/mtds/toast/toast-helper.js +20 -35
  157. package/mtds/toast/toast-helper.js.map +1 -1
  158. package/mtds/toast/toast-observer.js +15 -30
  159. package/mtds/toast/toast-observer.js.map +1 -1
  160. package/mtds/toast/toast.js +37 -45
  161. package/mtds/toast/toast.js.map +1 -1
  162. package/mtds/togglegroup/togglegroup-observer.js +10 -15
  163. package/mtds/togglegroup/togglegroup-observer.js.map +1 -1
  164. package/mtds/togglegroup/togglegroup.js +24 -21
  165. package/mtds/togglegroup/togglegroup.js.map +1 -1
  166. package/mtds/tooltip/tooltip-observer.js +32 -48
  167. package/mtds/tooltip/tooltip-observer.js.map +1 -1
  168. package/mtds/typography/typography.js +19 -28
  169. package/mtds/typography/typography.js.map +1 -1
  170. package/mtds/utils.js +89 -129
  171. package/mtds/utils.js.map +1 -1
  172. package/mtds/validation/validation-observer.d.ts +1 -0
  173. package/mtds/validation/validation-observer.js +31 -0
  174. package/mtds/validation/validation-observer.js.map +1 -0
  175. package/mtds/validation/validation.js +12 -12
  176. package/mtds/validation/validation.js.map +1 -1
  177. package/package.json +8 -6
@@ -1,48 +1,46 @@
1
- import { jsx } from "react/jsx-runtime";
2
- import clsx from "clsx";
3
- import { forwardRef } from "react";
4
- import styles from "../styles.module.css.js";
5
- const Input = forwardRef(function Input2({ className, type = "text", ...rest }, ref) {
6
- return /* @__PURE__ */ jsx(
1
+ import { jsx as n } from "react/jsx-runtime";
2
+ import s from "clsx";
3
+ import { forwardRef as a } from "react";
4
+ import o from "../styles.module.css.js";
5
+ const l = a(function({ className: t, type: r = "text", ...e }, i) {
6
+ return /* @__PURE__ */ n(
7
7
  "input",
8
8
  {
9
- className: clsx(styles.input, className),
10
- suppressHydrationWarning: true,
11
- type,
12
- ref,
13
- ...rest
9
+ className: s(o.input, t),
10
+ suppressHydrationWarning: !0,
11
+ type: r,
12
+ ref: i,
13
+ ...e
14
14
  }
15
15
  );
16
- });
17
- const Select = forwardRef(
18
- function Select2({ className, ...rest }, ref) {
19
- return /* @__PURE__ */ jsx(
16
+ }), x = a(
17
+ function({ className: t, ...r }, e) {
18
+ return /* @__PURE__ */ n(
20
19
  "select",
21
20
  {
22
- className: clsx(styles.input, className),
23
- suppressHydrationWarning: true,
24
- ref,
25
- ...rest
21
+ className: s(o.input, t),
22
+ suppressHydrationWarning: !0,
23
+ ref: e,
24
+ ...r
26
25
  }
27
26
  );
28
27
  }
29
- );
30
- const Textarea = forwardRef(
31
- function Textarea2({ className, ...rest }, ref) {
32
- return /* @__PURE__ */ jsx(
28
+ ), d = a(
29
+ function({ className: t, ...r }, e) {
30
+ return /* @__PURE__ */ n(
33
31
  "textarea",
34
32
  {
35
- className: clsx(styles.input, className),
36
- suppressHydrationWarning: true,
37
- ref,
38
- ...rest
33
+ className: s(o.input, t),
34
+ suppressHydrationWarning: !0,
35
+ ref: e,
36
+ ...r
39
37
  }
40
38
  );
41
39
  }
42
40
  );
43
41
  export {
44
- Input,
45
- Select,
46
- Textarea
42
+ l as Input,
43
+ x as Select,
44
+ d as Textarea
47
45
  };
48
46
  //# sourceMappingURL=input.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"input.js","sources":["../../designsystem/input/input.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport { forwardRef } from \"react\";\nimport styles from \"../styles.module.css\";\n\nexport type InputProps = React.ComponentPropsWithoutRef<\"input\">;\nexport const Input = forwardRef<HTMLInputElement, InputProps>(function Input(\n\t{ className, type = \"text\", ...rest },\n\tref,\n) {\n\treturn (\n\t\t<input\n\t\t\tclassName={clsx(styles.input, className)}\n\t\t\tsuppressHydrationWarning // Prevent hydration mismatch for SSR caused by field-observer.ts\n\t\t\ttype={type}\n\t\t\tref={ref}\n\t\t\t{...rest}\n\t\t/>\n\t);\n});\n\nexport type SelectProps = React.ComponentPropsWithoutRef<\"select\">;\nexport const Select = forwardRef<HTMLSelectElement, SelectProps>(\n\tfunction Select({ className, ...rest }, ref) {\n\t\treturn (\n\t\t\t<select\n\t\t\t\tclassName={clsx(styles.input, className)}\n\t\t\t\tsuppressHydrationWarning // Prevent hydration mismatch for SSR caused by field-observer.ts\n\t\t\t\tref={ref}\n\t\t\t\t{...rest}\n\t\t\t/>\n\t\t);\n\t},\n);\n\nexport type TextareaProps = React.ComponentPropsWithoutRef<\"textarea\">;\nexport const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(\n\tfunction Textarea({ className, ...rest }, ref) {\n\t\treturn (\n\t\t\t<textarea\n\t\t\t\tclassName={clsx(styles.input, className)}\n\t\t\t\tsuppressHydrationWarning // Prevent hydration mismatch for SSR caused by field-observer.ts\n\t\t\t\tref={ref}\n\t\t\t\t{...rest}\n\t\t\t/>\n\t\t);\n\t},\n);\n"],"names":["Input","Select","Textarea"],"mappings":";;;;AAKO,MAAM,QAAQ,WAAyC,SAASA,OACtE,EAAE,WAAW,OAAO,QAAQ,GAAG,KAAA,GAC/B,KACC;AACD,SACC;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,WAAW,KAAK,OAAO,OAAO,SAAS;AAAA,MACvC,0BAAwB;AAAA,MACxB;AAAA,MACA;AAAA,MACC,GAAG;AAAA,IAAA;AAAA,EAAA;AAGP,CAAC;AAGM,MAAM,SAAS;AAAA,EACrB,SAASC,QAAO,EAAE,WAAW,GAAG,KAAA,GAAQ,KAAK;AAC5C,WACC;AAAA,MAAC;AAAA,MAAA;AAAA,QACA,WAAW,KAAK,OAAO,OAAO,SAAS;AAAA,QACvC,0BAAwB;AAAA,QACxB;AAAA,QACC,GAAG;AAAA,MAAA;AAAA,IAAA;AAAA,EAGP;AACD;AAGO,MAAM,WAAW;AAAA,EACvB,SAASC,UAAS,EAAE,WAAW,GAAG,KAAA,GAAQ,KAAK;AAC9C,WACC;AAAA,MAAC;AAAA,MAAA;AAAA,QACA,WAAW,KAAK,OAAO,OAAO,SAAS;AAAA,QACvC,0BAAwB;AAAA,QACxB;AAAA,QACC,GAAG;AAAA,MAAA;AAAA,IAAA;AAAA,EAGP;AACD;"}
1
+ {"version":3,"file":"input.js","sources":["../../designsystem/input/input.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport { forwardRef } from \"react\";\nimport styles from \"../styles.module.css\";\n\nexport type InputProps = React.ComponentPropsWithoutRef<\"input\">;\nexport const Input = forwardRef<HTMLInputElement, InputProps>(function Input(\n\t{ className, type = \"text\", ...rest },\n\tref,\n) {\n\treturn (\n\t\t<input\n\t\t\tclassName={clsx(styles.input, className)}\n\t\t\tsuppressHydrationWarning // Prevent hydration mismatch for SSR caused by field-observer.ts\n\t\t\ttype={type}\n\t\t\tref={ref}\n\t\t\t{...rest}\n\t\t/>\n\t);\n});\n\nexport type SelectProps = React.ComponentPropsWithoutRef<\"select\">;\nexport const Select = forwardRef<HTMLSelectElement, SelectProps>(\n\tfunction Select({ className, ...rest }, ref) {\n\t\treturn (\n\t\t\t<select\n\t\t\t\tclassName={clsx(styles.input, className)}\n\t\t\t\tsuppressHydrationWarning // Prevent hydration mismatch for SSR caused by field-observer.ts\n\t\t\t\tref={ref}\n\t\t\t\t{...rest}\n\t\t\t/>\n\t\t);\n\t},\n);\n\nexport type TextareaProps = React.ComponentPropsWithoutRef<\"textarea\">;\nexport const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(\n\tfunction Textarea({ className, ...rest }, ref) {\n\t\treturn (\n\t\t\t<textarea\n\t\t\t\tclassName={clsx(styles.input, className)}\n\t\t\t\tsuppressHydrationWarning // Prevent hydration mismatch for SSR caused by field-observer.ts\n\t\t\t\tref={ref}\n\t\t\t\t{...rest}\n\t\t\t/>\n\t\t);\n\t},\n);\n"],"names":["Input","forwardRef","className","type","rest","ref","jsx","clsx","styles","Select","Textarea"],"mappings":";;;;AAKO,MAAMA,IAAQC,EAAyC,SAC7D,EAAE,WAAAC,GAAW,MAAAC,IAAO,QAAQ,GAAGC,EAAA,GAC/BC,GACC;AACD,SACC,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,WAAWC,EAAKC,EAAO,OAAON,CAAS;AAAA,MACvC,0BAAwB;AAAA,MACxB,MAAAC;AAAA,MACA,KAAAE;AAAA,MACC,GAAGD;AAAA,IAAA;AAAA,EAAA;AAGP,CAAC,GAGYK,IAASR;AAAA,EACrB,SAAgB,EAAE,WAAAC,GAAW,GAAGE,EAAA,GAAQC,GAAK;AAC5C,WACC,gBAAAC;AAAA,MAAC;AAAA,MAAA;AAAA,QACA,WAAWC,EAAKC,EAAO,OAAON,CAAS;AAAA,QACvC,0BAAwB;AAAA,QACxB,KAAAG;AAAA,QACC,GAAGD;AAAA,MAAA;AAAA,IAAA;AAAA,EAGP;AACD,GAGaM,IAAWT;AAAA,EACvB,SAAkB,EAAE,WAAAC,GAAW,GAAGE,EAAA,GAAQC,GAAK;AAC9C,WACC,gBAAAC;AAAA,MAAC;AAAA,MAAA;AAAA,QACA,WAAWC,EAAKC,EAAO,OAAON,CAAS;AAAA,QACvC,0BAAwB;AAAA,QACxB,KAAAG;AAAA,QACC,GAAGD;AAAA,MAAA;AAAA,IAAA;AAAA,EAGP;AACD;"}
@@ -1,160 +1,94 @@
1
- import { attr } from "../utils.js";
2
- const REGEX_ID = /<[^>]+\bid="([^"]+)[^>]+>/gi;
3
- const REGEX_FORORDNING = /\([^)]{1,4}\).{1,9}\d+\/\d+/i;
4
- const REGEX_HEADING = /<(h\d|[^>]+role="heading")[^>]*>(.*?)<\/?(h\d|br|div)/i;
5
- const REGEX_KAPITTEL_LEDD = /kapittel-\d+-ledd-\d+/;
6
- const REGEX_STRIP_BUTTONS = /<button[^>]+>.*?<\/button>/g;
7
- const REGEX_STRIP_POINTER = /►m\d+/i;
8
- const REGEX_STRIP_TAGS = /<[^>]+>/g;
9
- const REGEX_META = /<dt([^>]*class="([^"]+)")?[^>]*>(.*?)<\/dt><dd[^>]*>(.*?)<\/dd>/gis;
10
- const REGEX_FIX_TAGS = /<(\/?)(article|footer|section)/gi;
11
- const REGEX_FIX_BASEURL = /(src|href)="([^"]+)"/gi;
12
- const REGEX_FIX_LISTS = /(<li[^>]*)>\s*<div([^>]*>)|<\/div>(<\/li>)/gi;
13
- const REGEX_FIX_SPAN_ID = /(<li[^>]+data-name="([^"]+)[^>]+>)(\s*<(ul|ol|div)[^>]+>)/gis;
14
- const REGEX_FIX_NUMBEREDLEGALP = /(<[^>]+class="[^"]*\bnumberedLegalP\b[^>]+>\s*)(\d+\.)(.*?)(?=<\/?(ul|ol|div)|$)/gis;
15
- const BASE_URL = "https://lovdata.no/";
16
- const META_DEFAULT = {
1
+ import { attr as f } from "../utils.js";
2
+ const b = /<[^>]+\bid="([^"]+)[^>]+>/gi, _ = /\([^)]{1,4}\).{1,9}\d+\/\d+/i, A = /<(h\d|[^>]+role="heading")[^>]*>(.*?)<\/?(h\d|br|div)/i, x = /kapittel-\d+-ledd-\d+/, I = /<button[^>]+>.*?<\/button>/g, L = /►m\d+/i, p = /<[^>]+>/g, O = /<dt([^>]*class="([^"]+)")?[^>]*>(.*?)<\/dt><dd[^>]*>(.*?)<\/dd>/gis, v = /<(\/?)(article|footer|section)/gi, R = /(src|href)="([^"]+)"/gi, k = /(<li[^>]*)>\s*<div([^>]*>)|<\/div>(<\/li>)/gi, G = /(<li[^>]+data-name="([^"]+)[^>]+>)(\s*<(ul|ol|div)[^>]+>)/gis, T = /(<[^>]+class="[^"]*\bnumberedLegalP\b[^>]+>\s*)(\d+\.)(.*?)(?=<\/?(ul|ol|div)|$)/gis, g = "https://lovdata.no/", X = {
17
3
  legacyid: { label: "Datokode", value: "" },
18
4
  titleshort: { label: "Korttittel", value: "" },
19
5
  title: { label: "Tittel", value: "" },
20
6
  url: { label: "Url", value: "" }
21
- };
22
- const toIdArray = (ids) => Array.from(
23
- Array.isArray(ids) ? ids : [ids],
24
- (id) => id instanceof HTMLButtonElement ? id.value : id
25
- );
26
- const getLawChecked = (lawElement) => Array.from(
27
- lawElement?.querySelectorAll(`button[aria-checked="true"]`) || [],
28
- (btn) => btn.value
29
- );
30
- const toggleLawChecked = (ids, lawElement) => {
31
- const idArray = toIdArray(ids);
32
- lawElement?.querySelectorAll(`button`).forEach((btn) => {
33
- if (idArray.includes(btn.value))
34
- attr(btn, "aria-checked", `${attr(btn, "aria-checked") !== "true"}`);
7
+ }, E = (a) => Array.from(
8
+ Array.isArray(a) ? a : [a],
9
+ (t) => t instanceof HTMLButtonElement ? t.value : t
10
+ ), w = (a) => Array.from(
11
+ a?.querySelectorAll('button[aria-checked="true"]') || [],
12
+ (t) => t.value
13
+ ), D = (a, t) => {
14
+ const n = E(a);
15
+ t?.querySelectorAll("button").forEach((e) => {
16
+ n.includes(e.value) && f(e, "aria-checked", `${f(e, "aria-checked") !== "true"}`);
35
17
  });
36
- };
37
- const setLawChecked = (ids, lawElement) => {
38
- const idArray = toIdArray(ids);
39
- lawElement?.querySelectorAll("button").forEach((btn) => {
40
- attr(btn, "aria-checked", `${idArray.includes(btn.value) || false}`);
18
+ }, F = (a, t) => {
19
+ const n = E(a);
20
+ t?.querySelectorAll("button").forEach((e) => {
21
+ f(e, "aria-checked", `${n.includes(e.value) || !1}`);
41
22
  });
42
- };
43
- const parseLawIds = (ids, lawHtml) => {
44
- const html = fixLawHtml(lawHtml);
45
- return toIdArray(ids).map((id) => parseLawId(id, html)).filter((unit) => !!unit);
46
- };
47
- const parseLawMeta = (lawHtml) => {
48
- const html = lawHtml.slice(0, lawHtml.indexOf("</dl>"));
49
- const meta = { ...META_DEFAULT };
50
- for (const m of html.matchAll(REGEX_META)) {
51
- const key = m[2].replace(/-/g, "").toLowerCase();
52
- meta[key] = { label: m[3], value: m[4] };
23
+ }, B = (a, t) => {
24
+ const n = y(t);
25
+ return E(a).map((e) => m(e, n)).filter((e) => !!e);
26
+ }, C = (a) => {
27
+ const t = a.slice(0, a.indexOf("</dl>")), n = { ...X };
28
+ for (const e of t.matchAll(O)) {
29
+ const r = e[2].replace(/-/g, "").toLowerCase();
30
+ n[r] = { label: e[3], value: e[4] };
53
31
  }
54
- return meta;
55
- };
56
- const fixLawHtml = (lawHtml) => {
57
- if (!lawHtml.includes("<main")) return lawHtml;
58
- return (lawHtml.split(/<\/?main[^>]*>/)[1] || "").replace(REGEX_FIX_TAGS, "<$1div").replace(REGEX_FIX_LISTS, "$1$2$3").replace(REGEX_FIX_BASEURL, (_, attr2, url) => {
59
- return `${attr2}="${url.includes(":") ? "" : BASE_URL}${url}" ${attr2 === "href" ? 'rel="noopener noreferrer" target="_blank"' : ""}`;
60
- }).replace(REGEX_FIX_NUMBEREDLEGALP, (_, tag, id, ledd) => {
61
- return `${tag}<span class="data-originalId">${id}</span><div class="legalP" id="${getAttr("id", tag)}-ledd-0">${ledd}</div>`;
62
- }).replace(REGEX_FIX_SPAN_ID, (_, tag, id, child) => {
63
- return `${tag}<span class="data-originalId">${id}</span>${child}`;
64
- }).replace(REGEX_ID, (tag, id, idx, html) => {
65
- const label = getLabel(tag, id, idx, html);
66
- return `${tag}${label ? `<button type="button" role="checkbox" aria-label="${label}" value="${id}"></button>` : ""}`;
67
- });
68
- };
69
- const parseLawId = (id, html) => {
70
- const isKapitellLedd = REGEX_KAPITTEL_LEDD.test(id);
71
- const path = id.split("-").map(
72
- (_, i, all) => i % 2 ? parseLawItem(all.slice(0, i + 1).join("-"), html, isKapitellLedd) : null
73
- ).filter((unit) => !!unit);
74
- if (!path.length) return null;
75
- const url = path.filter(({ url: url2 }) => url2).pop()?.url || "";
76
- const forordninger = path.filter(
77
- (u) => u.className === "section" && REGEX_FORORDNING.test(u.label)
78
- );
79
- const label = path.slice(path.indexOf(forordninger.pop() || path[0])).map((u) => u.label).join(", ");
80
- return { ...path.slice(-1)[0], path, label, url };
81
- };
82
- const parseLawItem = (id, html, isKapitellLedd) => {
83
- const idx = html.lastIndexOf("<", html.indexOf(` id="${id}"`));
84
- const tag = html.slice(idx, html.indexOf(">", idx) + 1);
85
- const className = getAttr("class", tag);
86
- const url = getAttr("data-lovdata-url", tag);
87
- const label = getLabel(tag, id, idx, html);
32
+ return n;
33
+ }, y = (a) => a.includes("<main") ? (a.split(/<\/?main[^>]*>/)[1] || "").replace(v, "<$1div").replace(k, "$1$2$3").replace(R, (t, n, e) => `${n}="${e.includes(":") ? "" : g}${e}" ${n === "href" ? 'rel="noopener noreferrer" target="_blank"' : ""}`).replace(T, (t, n, e, r) => `${n}<span class="data-originalId">${e}</span><div class="legalP" id="${o("id", n)}-ledd-0">${r}</div>`).replace(G, (t, n, e, r) => `${n}<span class="data-originalId">${e}</span>${r}`).replace(b, (t, n, e, r) => {
34
+ const l = $(t, n, e, r);
35
+ return `${t}${l ? `<button type="button" role="checkbox" aria-label="${l}" value="${n}"></button>` : ""}`;
36
+ }) : a, m = (a, t) => {
37
+ const n = x.test(a), e = a.split("-").map(
38
+ (s, i, d) => i % 2 ? S(d.slice(0, i + 1).join("-"), t, n) : null
39
+ ).filter((s) => !!s);
40
+ if (!e.length) return null;
41
+ const r = e.filter(({ url: s }) => s).pop()?.url || "", l = e.filter(
42
+ (s) => s.className === "section" && _.test(s.label)
43
+ ), c = e.slice(e.indexOf(l.pop() || e[0])).map((s) => s.label).join(", ");
44
+ return { ...e.slice(-1)[0], path: e, label: c, url: r };
45
+ }, S = (a, t, n) => {
46
+ const e = t.lastIndexOf("<", t.indexOf(` id="${a}"`)), r = t.slice(e, t.indexOf(">", e) + 1), l = o("class", r), c = o("data-lovdata-url", r), s = $(r, a, e, t);
88
47
  return {
89
- id,
90
- className,
91
- html: getOuterHTML(id, html),
92
- url: url ? `${BASE_URL}${url}` : "",
93
- label: !isKapitellLedd && className === "section" && label?.match(REGEX_FORORDNING)?.[0] || label
48
+ id: a,
49
+ className: l,
50
+ html: h(a, t),
51
+ url: c ? `${g}${c}` : "",
52
+ label: !n && l === "section" && s?.match(_)?.[0] || s
94
53
  };
95
- };
96
- const getAttr = (attr2, html) => {
97
- const query = ` ${attr2.toLowerCase()}="`;
98
- const idx = html.toLowerCase().indexOf(query);
99
- const start = idx + query.length;
100
- return idx === -1 ? "" : html.slice(start, html.indexOf('"', start));
101
- };
102
- const getOuterHTML = (id, html) => {
103
- const idx = html.lastIndexOf("<", html.indexOf(` id="${id}"`));
104
- const max = html.length;
105
- let i = idx + 1;
106
- let depth = 0;
107
- while (i && i < max) {
108
- i = html.indexOf("<", i) + 1;
109
- if (html[i] !== "/") depth++;
110
- else if (--depth < 0) break;
111
- }
112
- const end = html.indexOf(">", i) + 1;
113
- return i ? html.slice(idx, end).replace(REGEX_STRIP_BUTTONS, "") : "";
114
- };
115
- const getLabel = (tag, id, idx, html) => LABELS[getAttr("class", tag)]?.(tag, id, idx, html) || "";
116
- const LABELS = {
117
- numberedLegalP: (tag) => `nr. ${getAttr("data-numerator", tag)}.`,
118
- section: (_tag, _id, idx, html) => {
119
- const head = html.slice(idx).match(REGEX_HEADING)?.[2];
120
- const clean = head?.replace(REGEX_STRIP_TAGS, "");
121
- return clean?.replace(REGEX_STRIP_POINTER, "").trim() || "";
122
- },
123
- legalArticle: (_tag, _id, idx, html) => {
124
- const at = html.indexOf(">", html.indexOf("legalArticleValue", idx));
125
- const id = html.slice(at + 1, html.indexOf("</span>", at));
126
- return id.replace(REGEX_STRIP_TAGS, "").replace("Artikkel", "artikkel");
54
+ }, o = (a, t) => {
55
+ const n = ` ${a.toLowerCase()}="`, e = t.toLowerCase().indexOf(n), r = e + n.length;
56
+ return e === -1 ? "" : t.slice(r, t.indexOf('"', r));
57
+ }, h = (a, t) => {
58
+ const n = t.lastIndexOf("<", t.indexOf(` id="${a}"`)), e = t.length;
59
+ let r = n + 1, l = 0;
60
+ for (; r && r < e; )
61
+ if (r = t.indexOf("<", r) + 1, t[r] !== "/") l++;
62
+ else if (--l < 0) break;
63
+ const c = t.indexOf(">", r) + 1;
64
+ return r ? t.slice(n, c).replace(I, "") : "";
65
+ }, $ = (a, t, n, e) => P[o("class", a)]?.(a, t, n, e) || "", P = {
66
+ numberedLegalP: (a) => `nr. ${o("data-numerator", a)}.`,
67
+ section: (a, t, n, e) => e.slice(n).match(A)?.[2]?.replace(p, "")?.replace(L, "").trim() || "",
68
+ legalArticle: (a, t, n, e) => {
69
+ const r = e.indexOf(">", e.indexOf("legalArticleValue", n));
70
+ return e.slice(r + 1, e.indexOf("</span>", r)).replace(p, "").replace("Artikkel", "artikkel");
127
71
  },
128
- legalP: (_tag, id) => {
129
- const [idx, type, _, parent] = id.split("-").reverse();
130
- const count = type === "nummer" ? 1 : Number(idx);
131
- return `avsnitt ${count + (parent === "nummer" ? 1 : 0)}`;
72
+ legalP: (a, t) => {
73
+ const [n, e, r, l] = t.split("-").reverse();
74
+ return `avsnitt ${(e === "nummer" ? 1 : Number(n)) + (l === "nummer" ? 1 : 0)}`;
132
75
  },
133
- listArticle: (tag, id, idx, html) => {
134
- const path = id.split("-");
135
- const parentTag = ` id="${path.slice(0, -2).join("-")}"`;
136
- const parentIdx = html.lastIndexOf(parentTag, idx);
137
- const list = html.slice(html.indexOf("<ol", parentIdx), idx);
138
- const name = getAttr("data-name", tag) || "-";
139
- const type = getAttr("type", list) || "-";
140
- let unit = "punkt";
141
- if (type === "1") unit = "tall";
142
- if (type === "a") unit = "bokstav";
143
- if (type === "i") unit = "romtertall";
144
- return `${unit} ${name === "-" ? path.pop() : name.replace(REGEX_STRIP_TAGS, "")}`;
76
+ listArticle: (a, t, n, e) => {
77
+ const r = t.split("-"), l = ` id="${r.slice(0, -2).join("-")}"`, c = e.lastIndexOf(l, n), s = e.slice(e.indexOf("<ol", c), n), i = o("data-name", a) || "-", d = o("type", s) || "-";
78
+ let u = "punkt";
79
+ return d === "1" && (u = "tall"), d === "a" && (u = "bokstav"), d === "i" && (u = "romtertall"), `${u} ${i === "-" ? r.pop() : i.replace(p, "")}`;
145
80
  },
146
- marginIdArticle: (_tag, _id, idx, html) => {
147
- const at = html.indexOf(">", html.indexOf("data-marginOriginalId", idx));
148
- const id = html.slice(at + 1, html.indexOf("</span>", at));
149
- return `nr. ${id.replace(REGEX_STRIP_TAGS, "")}`;
81
+ marginIdArticle: (a, t, n, e) => {
82
+ const r = e.indexOf(">", e.indexOf("data-marginOriginalId", n));
83
+ return `nr. ${e.slice(r + 1, e.indexOf("</span>", r)).replace(p, "")}`;
150
84
  }
151
85
  };
152
86
  export {
153
- fixLawHtml,
154
- getLawChecked,
155
- parseLawIds,
156
- parseLawMeta,
157
- setLawChecked,
158
- toggleLawChecked
87
+ y as fixLawHtml,
88
+ w as getLawChecked,
89
+ B as parseLawIds,
90
+ C as parseLawMeta,
91
+ F as setLawChecked,
92
+ D as toggleLawChecked
159
93
  };
160
94
  //# sourceMappingURL=law-helper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"law-helper.js","sources":["../../designsystem/law/law-helper.ts"],"sourcesContent":["import { attr } from \"../utils\";\n\n// NOTE: The law format is documentet in https://api.lovdata.no/xmldocs\nconst REGEX_ID = /<[^>]+\\bid=\"([^\"]+)[^>]+>/gi;\nconst REGEX_FORORDNING = /\\([^)]{1,4}\\).{1,9}\\d+\\/\\d+/i; // Match (EU) 2016/2031, (EF) nr. 2020/1054, (EFF) ..., etc.\nconst REGEX_HEADING = /<(h\\d|[^>]+role=\"heading\")[^>]*>(.*?)<\\/?(h\\d|br|div)/i; // Can be both <h1>-<h6> and or <div> with role=\"heading\" if level 7+\nconst REGEX_KAPITTEL_LEDD = /kapittel-\\d+-ledd-\\d+/;\nconst REGEX_STRIP_BUTTONS = /<button[^>]+>.*?<\\/button>/g;\nconst REGEX_STRIP_POINTER = /►m\\d+/i;\nconst REGEX_STRIP_TAGS = /<[^>]+>/g;\nconst REGEX_META =\n\t/<dt([^>]*class=\"([^\"]+)\")?[^>]*>(.*?)<\\/dt><dd[^>]*>(.*?)<\\/dd>/gis;\n\nconst REGEX_FIX_TAGS = /<(\\/?)(article|footer|section)/gi;\nconst REGEX_FIX_BASEURL = /(src|href)=\"([^\"]+)\"/gi;\nconst REGEX_FIX_LISTS = /(<li[^>]*)>\\s*<div([^>]*>)|<\\/div>(<\\/li>)/gi;\nconst REGEX_FIX_SPAN_ID =\n\t/(<li[^>]+data-name=\"([^\"]+)[^>]+>)(\\s*<(ul|ol|div)[^>]+>)/gis; // Only create span if no span exists\nconst REGEX_FIX_NUMBEREDLEGALP =\n\t/(<[^>]+class=\"[^\"]*\\bnumberedLegalP\\b[^>]+>\\s*)(\\d+\\.)(.*?)(?=<\\/?(ul|ol|div)|$)/gis;\n\nconst BASE_URL = \"https://lovdata.no/\";\nconst META_DEFAULT: Record<\n\t\"legacyid\" | \"title\" | \"titleshort\" | \"url\" | (string & {}), // Ensure title and titleShort are always present\n\t{ label: string; value: string }\n> = {\n\tlegacyid: { label: \"Datokode\", value: \"\" },\n\ttitleshort: { label: \"Korttittel\", value: \"\" },\n\ttitle: { label: \"Tittel\", value: \"\" },\n\turl: { label: \"Url\", value: \"\" },\n};\n\ntype Ids = string | string[] | HTMLButtonElement | HTMLButtonElement[];\nconst toIdArray = (ids: Ids): string[] =>\n\tArray.from(Array.isArray(ids) ? ids : [ids], (id) =>\n\t\tid instanceof HTMLButtonElement ? id.value : id,\n\t);\n\nexport const getLawChecked = (lawElement?: HTMLElement | null) =>\n\tArray.from(\n\t\tlawElement?.querySelectorAll(`button[aria-checked=\"true\"]`) || [],\n\t\t(btn) => (btn as HTMLButtonElement).value,\n\t);\n\nexport const toggleLawChecked = (ids: Ids, lawElement?: HTMLElement | null) => {\n\tconst idArray = toIdArray(ids);\n\tlawElement?.querySelectorAll(`button`).forEach((btn) => {\n\t\tif (idArray.includes(btn.value))\n\t\t\tattr(btn, \"aria-checked\", `${attr(btn, \"aria-checked\") !== \"true\"}`);\n\t});\n};\n\nexport const setLawChecked = (ids: Ids, lawElement?: HTMLElement | null) => {\n\tconst idArray = toIdArray(ids);\n\tlawElement?.querySelectorAll(\"button\").forEach((btn) => {\n\t\tattr(btn, \"aria-checked\", `${idArray.includes(btn.value) || false}`);\n\t});\n};\n\nexport const parseLawIds = (ids: string | string[], lawHtml: string) => {\n\tconst html = fixLawHtml(lawHtml);\n\treturn toIdArray(ids)\n\t\t.map((id) => parseLawId(id, html))\n\t\t.filter((unit) => !!unit);\n};\n\nexport const parseLawMeta = (lawHtml: string) => {\n\tconst html = lawHtml.slice(0, lawHtml.indexOf(\"</dl>\"));\n\tconst meta = { ...META_DEFAULT };\n\tfor (const m of html.matchAll(REGEX_META)) {\n\t\tconst key = m[2].replace(/-/g, \"\").toLowerCase();\n\t\tmeta[key] = { label: m[3], value: m[4] };\n\t}\n\treturn meta;\n};\n\nexport const fixLawHtml = (lawHtml: string) => {\n\tif (!lawHtml.includes(\"<main\")) return lawHtml; // Already rendered\n\treturn (lawHtml.split(/<\\/?main[^>]*>/)[1] || \"\") // Only need content in <main>\n\t\t.replace(REGEX_FIX_TAGS, \"<$1div\") // Better for accessibility, must run before other REGEX_FIX\n\t\t.replace(REGEX_FIX_LISTS, \"$1$2$3\") // Merge <li> with inner <div> to reduce unnecessary elements\n\t\t.replace(REGEX_FIX_BASEURL, (_, attr, url) => {\n\t\t\treturn `${attr}=\"${url.includes(\":\") ? \"\" : BASE_URL}${url}\" ${attr === \"href\" ? 'rel=\"noopener noreferrer\" target=\"_blank\"' : \"\"}`;\n\t\t})\n\t\t.replace(REGEX_FIX_NUMBEREDLEGALP, (_, tag, id, ledd) => {\n\t\t\treturn `${tag}<span class=\"data-originalId\">${id}</span><div class=\"legalP\" id=\"${getAttr(\"id\", tag)}-ledd-0\">${ledd}</div>`;\n\t\t})\n\t\t.replace(REGEX_FIX_SPAN_ID, (_, tag, id, child) => {\n\t\t\treturn `${tag}<span class=\"data-originalId\">${id}</span>${child}`;\n\t\t})\n\t\t.replace(REGEX_ID, (tag, id, idx, html) => {\n\t\t\tconst label = getLabel(tag, id, idx, html);\n\t\t\treturn `${tag}${label ? `<button type=\"button\" role=\"checkbox\" aria-label=\"${label}\" value=\"${id}\"></button>` : \"\"}`;\n\t\t});\n};\n\nconst parseLawId = (id: string, html: string) => {\n\tconst isKapitellLedd = REGEX_KAPITTEL_LEDD.test(id);\n\tconst path = id\n\t\t.split(\"-\")\n\t\t.map((_, i, all) =>\n\t\t\ti % 2\n\t\t\t\t? parseLawItem(all.slice(0, i + 1).join(\"-\"), html, isKapitellLedd)\n\t\t\t\t: null,\n\t\t)\n\t\t.filter((unit) => !!unit);\n\n\tif (!path.length) return null;\n\tconst url = path.filter(({ url }) => url).pop()?.url || \"\"; // The closest units item might not have an URL, so we provide the last found URL\n\tconst forordninger = path.filter(\n\t\t(u) => u.className === \"section\" && REGEX_FORORDNING.test(u.label),\n\t);\n\tconst label = path\n\t\t.slice(path.indexOf(forordninger.pop() || path[0]))\n\t\t.map((u) => u.label)\n\t\t.join(\", \");\n\n\treturn { ...path.slice(-1)[0], path, label, url };\n};\n\nconst parseLawItem = (id: string, html: string, isKapitellLedd: boolean) => {\n\tconst idx = html.lastIndexOf(\"<\", html.indexOf(` id=\"${id}\"`));\n\tconst tag = html.slice(idx, html.indexOf(\">\", idx) + 1);\n\tconst className = getAttr(\"class\", tag);\n\tconst url = getAttr(\"data-lovdata-url\", tag);\n\tconst label = getLabel(tag, id, idx, html);\n\n\treturn {\n\t\tid,\n\t\tclassName,\n\t\thtml: getOuterHTML(id, html),\n\t\turl: url ? `${BASE_URL}${url}` : \"\",\n\t\tlabel:\n\t\t\t(!isKapitellLedd &&\n\t\t\t\tclassName === \"section\" &&\n\t\t\t\tlabel?.match(REGEX_FORORDNING)?.[0]) ||\n\t\t\tlabel,\n\t};\n};\n\nconst getAttr = (attr: string, html: string) => {\n\tconst query = ` ${attr.toLowerCase()}=\"`;\n\tconst idx = html.toLowerCase().indexOf(query); // Need to lowercase to sanitize html variations\n\tconst start = idx + query.length;\n\treturn idx === -1 ? \"\" : html.slice(start, html.indexOf('\"', start)); // Using slice for performance\n};\n\nconst getOuterHTML = (id: string, html: string) => {\n\tconst idx = html.lastIndexOf(\"<\", html.indexOf(` id=\"${id}\"`));\n\tconst max = html.length;\n\tlet i = idx + 1; // Using + 1 to get 0 if not found, and to ensure we start searching inside element\n\tlet depth = 0;\n\n\twhile (i && i < max) {\n\t\ti = html.indexOf(\"<\", i) + 1;\n\t\tif (html[i] !== \"/\") depth++;\n\t\telse if (--depth < 0) break;\n\t}\n\tconst end = html.indexOf(\">\", i) + 1;\n\treturn i ? html.slice(idx, end).replace(REGEX_STRIP_BUTTONS, \"\") : \"\";\n};\n\nconst getLabel = (tag: string, id: string, idx: number, html: string): string =>\n\tLABELS[getAttr(\"class\", tag)]?.(tag, id, idx, html) || \"\";\n\nconst LABELS: Record<string, typeof getLabel> = {\n\tnumberedLegalP: (tag) => `nr. ${getAttr(\"data-numerator\", tag)}.`,\n\tsection: (_tag, _id, idx, html) => {\n\t\tconst head = html.slice(idx).match(REGEX_HEADING)?.[2];\n\t\tconst clean = head?.replace(REGEX_STRIP_TAGS, \"\");\n\t\treturn clean?.replace(REGEX_STRIP_POINTER, \"\").trim() || \"\";\n\t},\n\tlegalArticle: (_tag, _id, idx, html) => {\n\t\tconst at = html.indexOf(\">\", html.indexOf(\"legalArticleValue\", idx));\n\t\tconst id = html.slice(at + 1, html.indexOf(\"</span>\", at)); // .legalArticleValue is always a <span>\n\t\treturn id.replace(REGEX_STRIP_TAGS, \"\").replace(\"Artikkel\", \"artikkel\");\n\t},\n\tlegalP: (_tag, id) => {\n\t\tconst [idx, type, _, parent] = id.split(\"-\").reverse(); // If placed inside numberedLegalP, parent is \"nummer\"\n\t\tconst count = type === \"nummer\" ? 1 : Number(idx); // If \"fake\" ledd 1 created by fixNumberedLegalP, type is \"number\"\n\t\treturn `avsnitt ${count + (parent === \"nummer\" ? 1 : 0)}`; // Adjust for numberedLegalP creating fake legalP starting at 1\n\t},\n\tlistArticle: (tag, id, idx, html) => {\n\t\tconst path = id.split(\"-\");\n\t\tconst parentTag = ` id=\"${path.slice(0, -2).join(\"-\")}\"`; // Since lists can be nested, we need to find parent law unit to get correct list\n\t\tconst parentIdx = html.lastIndexOf(parentTag, idx);\n\t\tconst list = html.slice(html.indexOf(\"<ol\", parentIdx), idx); // Find first <ol> after parent element opening tag\n\t\tconst name = getAttr(\"data-name\", tag) || \"-\"; // Name can be empty or dash so allways fallback to dash\n\t\tconst type = getAttr(\"type\", list) || \"-\";\n\n\t\tlet unit = \"punkt\";\n\t\tif (type === \"1\") unit = \"tall\";\n\t\tif (type === \"a\") unit = \"bokstav\";\n\t\tif (type === \"i\") unit = \"romtertall\";\n\t\treturn `${unit} ${name === \"-\" ? path.pop() : name.replace(REGEX_STRIP_TAGS, \"\")}`;\n\t},\n\tmarginIdArticle: (_tag, _id, idx, html) => {\n\t\tconst at = html.indexOf(\">\", html.indexOf(\"data-marginOriginalId\", idx));\n\t\tconst id = html.slice(at + 1, html.indexOf(\"</span>\", at));\n\t\treturn `nr. ${id.replace(REGEX_STRIP_TAGS, \"\")}`;\n\t},\n};\n"],"names":["attr","url"],"mappings":"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"}
1
+ {"version":3,"file":"law-helper.js","sources":["../../designsystem/law/law-helper.ts"],"sourcesContent":["import { attr } from \"../utils\";\n\n// NOTE: The law format is documentet in https://api.lovdata.no/xmldocs\nconst REGEX_ID = /<[^>]+\\bid=\"([^\"]+)[^>]+>/gi;\nconst REGEX_FORORDNING = /\\([^)]{1,4}\\).{1,9}\\d+\\/\\d+/i; // Match (EU) 2016/2031, (EF) nr. 2020/1054, (EFF) ..., etc.\nconst REGEX_HEADING = /<(h\\d|[^>]+role=\"heading\")[^>]*>(.*?)<\\/?(h\\d|br|div)/i; // Can be both <h1>-<h6> and or <div> with role=\"heading\" if level 7+\nconst REGEX_KAPITTEL_LEDD = /kapittel-\\d+-ledd-\\d+/;\nconst REGEX_STRIP_BUTTONS = /<button[^>]+>.*?<\\/button>/g;\nconst REGEX_STRIP_POINTER = /►m\\d+/i;\nconst REGEX_STRIP_TAGS = /<[^>]+>/g;\nconst REGEX_META =\n\t/<dt([^>]*class=\"([^\"]+)\")?[^>]*>(.*?)<\\/dt><dd[^>]*>(.*?)<\\/dd>/gis;\n\nconst REGEX_FIX_TAGS = /<(\\/?)(article|footer|section)/gi;\nconst REGEX_FIX_BASEURL = /(src|href)=\"([^\"]+)\"/gi;\nconst REGEX_FIX_LISTS = /(<li[^>]*)>\\s*<div([^>]*>)|<\\/div>(<\\/li>)/gi;\nconst REGEX_FIX_SPAN_ID =\n\t/(<li[^>]+data-name=\"([^\"]+)[^>]+>)(\\s*<(ul|ol|div)[^>]+>)/gis; // Only create span if no span exists\nconst REGEX_FIX_NUMBEREDLEGALP =\n\t/(<[^>]+class=\"[^\"]*\\bnumberedLegalP\\b[^>]+>\\s*)(\\d+\\.)(.*?)(?=<\\/?(ul|ol|div)|$)/gis;\n\nconst BASE_URL = \"https://lovdata.no/\";\nconst META_DEFAULT: Record<\n\t\"legacyid\" | \"title\" | \"titleshort\" | \"url\" | (string & {}), // Ensure title and titleShort are always present\n\t{ label: string; value: string }\n> = {\n\tlegacyid: { label: \"Datokode\", value: \"\" },\n\ttitleshort: { label: \"Korttittel\", value: \"\" },\n\ttitle: { label: \"Tittel\", value: \"\" },\n\turl: { label: \"Url\", value: \"\" },\n};\n\ntype Ids = string | string[] | HTMLButtonElement | HTMLButtonElement[];\nconst toIdArray = (ids: Ids): string[] =>\n\tArray.from(Array.isArray(ids) ? ids : [ids], (id) =>\n\t\tid instanceof HTMLButtonElement ? id.value : id,\n\t);\n\nexport const getLawChecked = (lawElement?: HTMLElement | null) =>\n\tArray.from(\n\t\tlawElement?.querySelectorAll(`button[aria-checked=\"true\"]`) || [],\n\t\t(btn) => (btn as HTMLButtonElement).value,\n\t);\n\nexport const toggleLawChecked = (ids: Ids, lawElement?: HTMLElement | null) => {\n\tconst idArray = toIdArray(ids);\n\tlawElement?.querySelectorAll(`button`).forEach((btn) => {\n\t\tif (idArray.includes(btn.value))\n\t\t\tattr(btn, \"aria-checked\", `${attr(btn, \"aria-checked\") !== \"true\"}`);\n\t});\n};\n\nexport const setLawChecked = (ids: Ids, lawElement?: HTMLElement | null) => {\n\tconst idArray = toIdArray(ids);\n\tlawElement?.querySelectorAll(\"button\").forEach((btn) => {\n\t\tattr(btn, \"aria-checked\", `${idArray.includes(btn.value) || false}`);\n\t});\n};\n\nexport const parseLawIds = (ids: string | string[], lawHtml: string) => {\n\tconst html = fixLawHtml(lawHtml);\n\treturn toIdArray(ids)\n\t\t.map((id) => parseLawId(id, html))\n\t\t.filter((unit) => !!unit);\n};\n\nexport const parseLawMeta = (lawHtml: string) => {\n\tconst html = lawHtml.slice(0, lawHtml.indexOf(\"</dl>\"));\n\tconst meta = { ...META_DEFAULT };\n\tfor (const m of html.matchAll(REGEX_META)) {\n\t\tconst key = m[2].replace(/-/g, \"\").toLowerCase();\n\t\tmeta[key] = { label: m[3], value: m[4] };\n\t}\n\treturn meta;\n};\n\nexport const fixLawHtml = (lawHtml: string) => {\n\tif (!lawHtml.includes(\"<main\")) return lawHtml; // Already rendered\n\treturn (lawHtml.split(/<\\/?main[^>]*>/)[1] || \"\") // Only need content in <main>\n\t\t.replace(REGEX_FIX_TAGS, \"<$1div\") // Better for accessibility, must run before other REGEX_FIX\n\t\t.replace(REGEX_FIX_LISTS, \"$1$2$3\") // Merge <li> with inner <div> to reduce unnecessary elements\n\t\t.replace(REGEX_FIX_BASEURL, (_, attr, url) => {\n\t\t\treturn `${attr}=\"${url.includes(\":\") ? \"\" : BASE_URL}${url}\" ${attr === \"href\" ? 'rel=\"noopener noreferrer\" target=\"_blank\"' : \"\"}`;\n\t\t})\n\t\t.replace(REGEX_FIX_NUMBEREDLEGALP, (_, tag, id, ledd) => {\n\t\t\treturn `${tag}<span class=\"data-originalId\">${id}</span><div class=\"legalP\" id=\"${getAttr(\"id\", tag)}-ledd-0\">${ledd}</div>`;\n\t\t})\n\t\t.replace(REGEX_FIX_SPAN_ID, (_, tag, id, child) => {\n\t\t\treturn `${tag}<span class=\"data-originalId\">${id}</span>${child}`;\n\t\t})\n\t\t.replace(REGEX_ID, (tag, id, idx, html) => {\n\t\t\tconst label = getLabel(tag, id, idx, html);\n\t\t\treturn `${tag}${label ? `<button type=\"button\" role=\"checkbox\" aria-label=\"${label}\" value=\"${id}\"></button>` : \"\"}`;\n\t\t});\n};\n\nconst parseLawId = (id: string, html: string) => {\n\tconst isKapitellLedd = REGEX_KAPITTEL_LEDD.test(id);\n\tconst path = id\n\t\t.split(\"-\")\n\t\t.map((_, i, all) =>\n\t\t\ti % 2\n\t\t\t\t? parseLawItem(all.slice(0, i + 1).join(\"-\"), html, isKapitellLedd)\n\t\t\t\t: null,\n\t\t)\n\t\t.filter((unit) => !!unit);\n\n\tif (!path.length) return null;\n\tconst url = path.filter(({ url }) => url).pop()?.url || \"\"; // The closest units item might not have an URL, so we provide the last found URL\n\tconst forordninger = path.filter(\n\t\t(u) => u.className === \"section\" && REGEX_FORORDNING.test(u.label),\n\t);\n\tconst label = path\n\t\t.slice(path.indexOf(forordninger.pop() || path[0]))\n\t\t.map((u) => u.label)\n\t\t.join(\", \");\n\n\treturn { ...path.slice(-1)[0], path, label, url };\n};\n\nconst parseLawItem = (id: string, html: string, isKapitellLedd: boolean) => {\n\tconst idx = html.lastIndexOf(\"<\", html.indexOf(` id=\"${id}\"`));\n\tconst tag = html.slice(idx, html.indexOf(\">\", idx) + 1);\n\tconst className = getAttr(\"class\", tag);\n\tconst url = getAttr(\"data-lovdata-url\", tag);\n\tconst label = getLabel(tag, id, idx, html);\n\n\treturn {\n\t\tid,\n\t\tclassName,\n\t\thtml: getOuterHTML(id, html),\n\t\turl: url ? `${BASE_URL}${url}` : \"\",\n\t\tlabel:\n\t\t\t(!isKapitellLedd &&\n\t\t\t\tclassName === \"section\" &&\n\t\t\t\tlabel?.match(REGEX_FORORDNING)?.[0]) ||\n\t\t\tlabel,\n\t};\n};\n\nconst getAttr = (attr: string, html: string) => {\n\tconst query = ` ${attr.toLowerCase()}=\"`;\n\tconst idx = html.toLowerCase().indexOf(query); // Need to lowercase to sanitize html variations\n\tconst start = idx + query.length;\n\treturn idx === -1 ? \"\" : html.slice(start, html.indexOf('\"', start)); // Using slice for performance\n};\n\nconst getOuterHTML = (id: string, html: string) => {\n\tconst idx = html.lastIndexOf(\"<\", html.indexOf(` id=\"${id}\"`));\n\tconst max = html.length;\n\tlet i = idx + 1; // Using + 1 to get 0 if not found, and to ensure we start searching inside element\n\tlet depth = 0;\n\n\twhile (i && i < max) {\n\t\ti = html.indexOf(\"<\", i) + 1;\n\t\tif (html[i] !== \"/\") depth++;\n\t\telse if (--depth < 0) break;\n\t}\n\tconst end = html.indexOf(\">\", i) + 1;\n\treturn i ? html.slice(idx, end).replace(REGEX_STRIP_BUTTONS, \"\") : \"\";\n};\n\nconst getLabel = (tag: string, id: string, idx: number, html: string): string =>\n\tLABELS[getAttr(\"class\", tag)]?.(tag, id, idx, html) || \"\";\n\nconst LABELS: Record<string, typeof getLabel> = {\n\tnumberedLegalP: (tag) => `nr. ${getAttr(\"data-numerator\", tag)}.`,\n\tsection: (_tag, _id, idx, html) => {\n\t\tconst head = html.slice(idx).match(REGEX_HEADING)?.[2];\n\t\tconst clean = head?.replace(REGEX_STRIP_TAGS, \"\");\n\t\treturn clean?.replace(REGEX_STRIP_POINTER, \"\").trim() || \"\";\n\t},\n\tlegalArticle: (_tag, _id, idx, html) => {\n\t\tconst at = html.indexOf(\">\", html.indexOf(\"legalArticleValue\", idx));\n\t\tconst id = html.slice(at + 1, html.indexOf(\"</span>\", at)); // .legalArticleValue is always a <span>\n\t\treturn id.replace(REGEX_STRIP_TAGS, \"\").replace(\"Artikkel\", \"artikkel\");\n\t},\n\tlegalP: (_tag, id) => {\n\t\tconst [idx, type, _, parent] = id.split(\"-\").reverse(); // If placed inside numberedLegalP, parent is \"nummer\"\n\t\tconst count = type === \"nummer\" ? 1 : Number(idx); // If \"fake\" ledd 1 created by fixNumberedLegalP, type is \"number\"\n\t\treturn `avsnitt ${count + (parent === \"nummer\" ? 1 : 0)}`; // Adjust for numberedLegalP creating fake legalP starting at 1\n\t},\n\tlistArticle: (tag, id, idx, html) => {\n\t\tconst path = id.split(\"-\");\n\t\tconst parentTag = ` id=\"${path.slice(0, -2).join(\"-\")}\"`; // Since lists can be nested, we need to find parent law unit to get correct list\n\t\tconst parentIdx = html.lastIndexOf(parentTag, idx);\n\t\tconst list = html.slice(html.indexOf(\"<ol\", parentIdx), idx); // Find first <ol> after parent element opening tag\n\t\tconst name = getAttr(\"data-name\", tag) || \"-\"; // Name can be empty or dash so allways fallback to dash\n\t\tconst type = getAttr(\"type\", list) || \"-\";\n\n\t\tlet unit = \"punkt\";\n\t\tif (type === \"1\") unit = \"tall\";\n\t\tif (type === \"a\") unit = \"bokstav\";\n\t\tif (type === \"i\") unit = \"romtertall\";\n\t\treturn `${unit} ${name === \"-\" ? path.pop() : name.replace(REGEX_STRIP_TAGS, \"\")}`;\n\t},\n\tmarginIdArticle: (_tag, _id, idx, html) => {\n\t\tconst at = html.indexOf(\">\", html.indexOf(\"data-marginOriginalId\", idx));\n\t\tconst id = html.slice(at + 1, html.indexOf(\"</span>\", at));\n\t\treturn `nr. ${id.replace(REGEX_STRIP_TAGS, \"\")}`;\n\t},\n};\n"],"names":["REGEX_ID","REGEX_FORORDNING","REGEX_HEADING","REGEX_KAPITTEL_LEDD","REGEX_STRIP_BUTTONS","REGEX_STRIP_POINTER","REGEX_STRIP_TAGS","REGEX_META","REGEX_FIX_TAGS","REGEX_FIX_BASEURL","REGEX_FIX_LISTS","REGEX_FIX_SPAN_ID","REGEX_FIX_NUMBEREDLEGALP","BASE_URL","META_DEFAULT","toIdArray","ids","id","getLawChecked","lawElement","btn","toggleLawChecked","idArray","attr","setLawChecked","parseLawIds","lawHtml","html","fixLawHtml","parseLawId","unit","parseLawMeta","meta","m","key","_","url","tag","ledd","getAttr","child","idx","label","getLabel","isKapitellLedd","path","all","parseLawItem","forordninger","u","className","getOuterHTML","query","start","max","i","depth","end","LABELS","_tag","_id","at","type","parent","parentTag","parentIdx","list","name"],"mappings":"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"}
package/mtds/law/law.js CHANGED
@@ -1,10 +1,10 @@
1
- import { jsx } from "react/jsx-runtime";
2
- import { forwardRef } from "react";
3
- import styles from "../styles.module.css.js";
4
- const Law = forwardRef(function Law2({ className, ...rest }, ref) {
5
- return /* @__PURE__ */ jsx("div", { className: styles.law, ref, ...rest });
1
+ import { jsx as a } from "react/jsx-runtime";
2
+ import { forwardRef as m } from "react";
3
+ import s from "../styles.module.css.js";
4
+ const l = m(function({ className: e, ...r }, o) {
5
+ return /* @__PURE__ */ a("div", { className: s.law, ref: o, ...r });
6
6
  });
7
7
  export {
8
- Law
8
+ l as Law
9
9
  };
10
10
  //# sourceMappingURL=law.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"law.js","sources":["../../designsystem/law/law.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\nimport styles from \"../styles.module.css\";\n\nexport type LawProps = React.ComponentPropsWithoutRef<\"div\"> & {\n\t\"data-variant\"?: \"view\" | \"readonly\";\n};\n\nexport const Law = forwardRef<HTMLDivElement, LawProps>(function Law(\n\t{ className, ...rest },\n\tref,\n) {\n\treturn <div className={styles.law} ref={ref} {...rest} />;\n});\n"],"names":["Law"],"mappings":";;;AAOO,MAAM,MAAM,WAAqC,SAASA,KAChE,EAAE,WAAW,GAAG,KAAA,GAChB,KACC;AACD,6BAAQ,OAAA,EAAI,WAAW,OAAO,KAAK,KAAW,GAAG,MAAM;AACxD,CAAC;"}
1
+ {"version":3,"file":"law.js","sources":["../../designsystem/law/law.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\nimport styles from \"../styles.module.css\";\n\nexport type LawProps = React.ComponentPropsWithoutRef<\"div\"> & {\n\t\"data-variant\"?: \"view\" | \"readonly\";\n};\n\nexport const Law = forwardRef<HTMLDivElement, LawProps>(function Law(\n\t{ className, ...rest },\n\tref,\n) {\n\treturn <div className={styles.law} ref={ref} {...rest} />;\n});\n"],"names":["Law","forwardRef","className","rest","ref","styles"],"mappings":";;;AAOO,MAAMA,IAAMC,EAAqC,SACvD,EAAE,WAAAC,GAAW,GAAGC,EAAA,GAChBC,GACC;AACD,2BAAQ,OAAA,EAAI,WAAWC,EAAO,KAAK,KAAAD,GAAW,GAAGD,GAAM;AACxD,CAAC;"}
@@ -1,17 +1,14 @@
1
- import { jsx } from "react/jsx-runtime";
2
- import clsx from "clsx";
3
- import { forwardRef } from "react";
4
- import styles from "../styles.module.css.js";
5
- const Flex = forwardRef(function Flex2({ as, className, ...rest }, ref) {
6
- const Tag = as || "div";
7
- return /* @__PURE__ */ jsx(Tag, { className: clsx(styles.flex, className), ref, ...rest });
8
- });
9
- const Grid = forwardRef(function Grid2({ as, className, ...rest }, ref) {
10
- const Tag = as || "div";
11
- return /* @__PURE__ */ jsx(Tag, { className: clsx(styles.grid, className), ref, ...rest });
1
+ import { jsx as i } from "react/jsx-runtime";
2
+ import e from "clsx";
3
+ import { forwardRef as m } from "react";
4
+ import n from "../styles.module.css.js";
5
+ const g = m(function({ as: r, className: o, ...t }, s) {
6
+ return /* @__PURE__ */ i(r || "div", { className: e(n.flex, o), ref: s, ...t });
7
+ }), p = m(function({ as: r, className: o, ...t }, s) {
8
+ return /* @__PURE__ */ i(r || "div", { className: e(n.grid, o), ref: s, ...t });
12
9
  });
13
10
  export {
14
- Flex,
15
- Grid
11
+ g as Flex,
12
+ p as Grid
16
13
  };
17
14
  //# sourceMappingURL=layout.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"layout.js","sources":["../../designsystem/layout/layout.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport { forwardRef, type JSX } from \"react\";\nimport type {\n\tPolymorphicComponentPropWithRef,\n\tPolymorphicRef,\n\tSizes,\n} from \"../react-types\";\nimport styles from \"../styles.module.css\";\n\ntype GapOld = \"none\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\n\ntype SharedProps = {\n\t\"data-align\"?: \"normal\" | \"stretch\" | \"start\" | \"center\" | \"end\";\n\t\"data-align-content\"?:\n\t\t| \"start\"\n\t\t| \"center\"\n\t\t| \"end\"\n\t\t| \"space-between\"\n\t\t| \"space-around\"\n\t\t| \"space-evenly\";\n\t\"data-center\"?: \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\";\n\t\"data-gap\"?: Sizes | GapOld;\n\t\"data-row-gap\"?: Sizes;\n\t\"data-column-gap\"?: Sizes;\n\t\"data-nowrap\"?: boolean;\n\t\"data-justify\"?:\n\t\t| \"start\"\n\t\t| \"center\"\n\t\t| \"end\"\n\t\t| \"space-between\"\n\t\t| \"space-around\"\n\t\t| \"space-evenly\";\n\t\"data-fixed\"?: boolean;\n\t\"data-items\"?:\n\t\t| \"auto\"\n\t\t| \"full\"\n\t\t| \"50\"\n\t\t| \"100\"\n\t\t| \"150\"\n\t\t| \"200\"\n\t\t| \"250\"\n\t\t| \"300\"\n\t\t| \"350\"\n\t\t| \"400\"\n\t\t| \"450\"\n\t\t| \"500\"\n\t\t| 50\n\t\t| 100\n\t\t| 150\n\t\t| 200\n\t\t| 250\n\t\t| 300\n\t\t| 350\n\t\t| 400\n\t\t| 450\n\t\t| 500;\n};\n\n/**\n * Flex\n */\nexport type FlexProps<As extends React.ElementType = \"div\"> =\n\tPolymorphicComponentPropWithRef<As, SharedProps>;\n\ntype FlexComponent = <As extends React.ElementType = \"div\">(\n\tprops: FlexProps<As>,\n) => JSX.Element;\n\nexport const Flex: FlexComponent = forwardRef<null>(function Flex<\n\tAs extends React.ElementType = \"div\",\n>({ as, className, ...rest }: FlexProps<As>, ref?: PolymorphicRef<As>) {\n\tconst Tag = as || \"div\";\n\n\treturn <Tag className={clsx(styles.flex, className)} ref={ref} {...rest} />;\n}) as FlexComponent; // Needed to tell Typescript this does not return ReactNode but acutally JSX.Element\n\n/**\n * Grid\n */\nexport type GridProps<As extends React.ElementType = \"div\"> =\n\tPolymorphicComponentPropWithRef<As, SharedProps>;\n\ntype GridComponent = <As extends React.ElementType = \"div\">(\n\tprops: GridProps<As>,\n) => JSX.Element;\n\nexport const Grid: GridComponent = forwardRef<null>(function Grid<\n\tAs extends React.ElementType = \"div\",\n>({ as, className, ...rest }: GridProps<As>, ref?: PolymorphicRef<As>) {\n\tconst Tag = as || \"div\";\n\n\treturn <Tag className={clsx(styles.grid, className)} ref={ref} {...rest} />;\n}) as GridComponent; // Needed to tell Typescript this does not return ReactNode but acutally JSX.Element\n"],"names":["Flex","Grid"],"mappings":";;;;AAoEO,MAAM,OAAsB,WAAiB,SAASA,MAE3D,EAAE,IAAI,WAAW,GAAG,KAAA,GAAuB,KAA0B;AACtE,QAAM,MAAM,MAAM;AAElB,SAAO,oBAAC,KAAA,EAAI,WAAW,KAAK,OAAO,MAAM,SAAS,GAAG,KAAW,GAAG,KAAA,CAAM;AAC1E,CAAC;AAYM,MAAM,OAAsB,WAAiB,SAASC,MAE3D,EAAE,IAAI,WAAW,GAAG,KAAA,GAAuB,KAA0B;AACtE,QAAM,MAAM,MAAM;AAElB,SAAO,oBAAC,KAAA,EAAI,WAAW,KAAK,OAAO,MAAM,SAAS,GAAG,KAAW,GAAG,KAAA,CAAM;AAC1E,CAAC;"}
1
+ {"version":3,"file":"layout.js","sources":["../../designsystem/layout/layout.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport { forwardRef, type JSX } from \"react\";\nimport type {\n\tPolymorphicComponentPropWithRef,\n\tPolymorphicRef,\n\tSizes,\n} from \"../react-types\";\nimport styles from \"../styles.module.css\";\n\ntype GapOld = \"none\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\n\ntype SharedProps = {\n\t\"data-align\"?: \"normal\" | \"stretch\" | \"start\" | \"center\" | \"end\";\n\t\"data-align-content\"?:\n\t\t| \"start\"\n\t\t| \"center\"\n\t\t| \"end\"\n\t\t| \"space-between\"\n\t\t| \"space-around\"\n\t\t| \"space-evenly\";\n\t\"data-center\"?: \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\";\n\t\"data-gap\"?: Sizes | GapOld;\n\t\"data-row-gap\"?: Sizes;\n\t\"data-column-gap\"?: Sizes;\n\t\"data-nowrap\"?: boolean;\n\t\"data-justify\"?:\n\t\t| \"start\"\n\t\t| \"center\"\n\t\t| \"end\"\n\t\t| \"space-between\"\n\t\t| \"space-around\"\n\t\t| \"space-evenly\";\n\t\"data-fixed\"?: boolean;\n\t\"data-items\"?:\n\t\t| \"auto\"\n\t\t| \"full\"\n\t\t| \"50\"\n\t\t| \"100\"\n\t\t| \"150\"\n\t\t| \"200\"\n\t\t| \"250\"\n\t\t| \"300\"\n\t\t| \"350\"\n\t\t| \"400\"\n\t\t| \"450\"\n\t\t| \"500\"\n\t\t| 50\n\t\t| 100\n\t\t| 150\n\t\t| 200\n\t\t| 250\n\t\t| 300\n\t\t| 350\n\t\t| 400\n\t\t| 450\n\t\t| 500;\n};\n\n/**\n * Flex\n */\nexport type FlexProps<As extends React.ElementType = \"div\"> =\n\tPolymorphicComponentPropWithRef<As, SharedProps>;\n\ntype FlexComponent = <As extends React.ElementType = \"div\">(\n\tprops: FlexProps<As>,\n) => JSX.Element;\n\nexport const Flex: FlexComponent = forwardRef<null>(function Flex<\n\tAs extends React.ElementType = \"div\",\n>({ as, className, ...rest }: FlexProps<As>, ref?: PolymorphicRef<As>) {\n\tconst Tag = as || \"div\";\n\n\treturn <Tag className={clsx(styles.flex, className)} ref={ref} {...rest} />;\n}) as FlexComponent; // Needed to tell Typescript this does not return ReactNode but acutally JSX.Element\n\n/**\n * Grid\n */\nexport type GridProps<As extends React.ElementType = \"div\"> =\n\tPolymorphicComponentPropWithRef<As, SharedProps>;\n\ntype GridComponent = <As extends React.ElementType = \"div\">(\n\tprops: GridProps<As>,\n) => JSX.Element;\n\nexport const Grid: GridComponent = forwardRef<null>(function Grid<\n\tAs extends React.ElementType = \"div\",\n>({ as, className, ...rest }: GridProps<As>, ref?: PolymorphicRef<As>) {\n\tconst Tag = as || \"div\";\n\n\treturn <Tag className={clsx(styles.grid, className)} ref={ref} {...rest} />;\n}) as GridComponent; // Needed to tell Typescript this does not return ReactNode but acutally JSX.Element\n"],"names":["Flex","forwardRef","as","className","rest","ref","jsx","clsx","styles","Grid"],"mappings":";;;;AAoEO,MAAMA,IAAsBC,EAAiB,SAElD,EAAE,IAAAC,GAAI,WAAAC,GAAW,GAAGC,EAAA,GAAuBC,GAA0B;AAGtE,SAAO,gBAAAC,EAFKJ,KAAM,OAEV,EAAI,WAAWK,EAAKC,EAAO,MAAML,CAAS,GAAG,KAAAE,GAAW,GAAGD,EAAA,CAAM;AAC1E,CAAC,GAYYK,IAAsBR,EAAiB,SAElD,EAAE,IAAAC,GAAI,WAAAC,GAAW,GAAGC,EAAA,GAAuBC,GAA0B;AAGtE,SAAO,gBAAAC,EAFKJ,KAAM,OAEV,EAAI,WAAWK,EAAKC,EAAO,MAAML,CAAS,GAAG,KAAAE,GAAW,GAAGD,EAAA,CAAM;AAC1E,CAAC;"}
package/mtds/link/link.js CHANGED
@@ -1,12 +1,11 @@
1
- import { jsx } from "react/jsx-runtime";
2
- import clsx from "clsx";
3
- import { forwardRef } from "react";
4
- import styles from "../styles.module.css.js";
5
- const Link = forwardRef(function Link2({ as, className, ...rest }, ref) {
6
- const Tag = as || "a";
7
- return /* @__PURE__ */ jsx(Tag, { className: clsx(styles.link, className), ...rest, ref });
1
+ import { jsx as i } from "react/jsx-runtime";
2
+ import n from "clsx";
3
+ import { forwardRef as s } from "react";
4
+ import f from "../styles.module.css.js";
5
+ const x = s(function({ as: o, className: r, ...t }, m) {
6
+ return /* @__PURE__ */ i(o || "a", { className: n(f.link, r), ...t, ref: m });
8
7
  });
9
8
  export {
10
- Link
9
+ x as Link
11
10
  };
12
11
  //# sourceMappingURL=link.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"link.js","sources":["../../designsystem/link/link.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport { forwardRef } from \"react\";\nimport type {\n\tPolymorphicComponentPropWithRef,\n\tPolymorphicRef,\n} from \"../react-types\";\nimport styles from \"../styles.module.css\";\n\nexport type LinkProps<As extends React.ElementType = \"a\"> =\n\tPolymorphicComponentPropWithRef<As>;\n\ntype LinkComponent = <As extends React.ElementType = \"a\">(\n\tprops: LinkProps<As>,\n) => React.ReactElement | null;\n\nexport const Link: LinkComponent = forwardRef<null>(function Link<\n\tAs extends React.ElementType = \"a\",\n>({ as, className, ...rest }: LinkProps<As>, ref?: PolymorphicRef<As>) {\n\tconst Tag = as || \"a\";\n\treturn <Tag className={clsx(styles.link, className)} {...rest} ref={ref} />;\n}) as LinkComponent; // Needed to tell Typescript this does not return ReactNode but acutally JSX.Element\n"],"names":["Link"],"mappings":";;;;AAeO,MAAM,OAAsB,WAAiB,SAASA,MAE3D,EAAE,IAAI,WAAW,GAAG,KAAA,GAAuB,KAA0B;AACtE,QAAM,MAAM,MAAM;AAClB,SAAO,oBAAC,KAAA,EAAI,WAAW,KAAK,OAAO,MAAM,SAAS,GAAI,GAAG,MAAM,IAAA,CAAU;AAC1E,CAAC;"}
1
+ {"version":3,"file":"link.js","sources":["../../designsystem/link/link.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport { forwardRef } from \"react\";\nimport type {\n\tPolymorphicComponentPropWithRef,\n\tPolymorphicRef,\n} from \"../react-types\";\nimport styles from \"../styles.module.css\";\n\nexport type LinkProps<As extends React.ElementType = \"a\"> =\n\tPolymorphicComponentPropWithRef<As>;\n\ntype LinkComponent = <As extends React.ElementType = \"a\">(\n\tprops: LinkProps<As>,\n) => React.ReactElement | null;\n\nexport const Link: LinkComponent = forwardRef<null>(function Link<\n\tAs extends React.ElementType = \"a\",\n>({ as, className, ...rest }: LinkProps<As>, ref?: PolymorphicRef<As>) {\n\tconst Tag = as || \"a\";\n\treturn <Tag className={clsx(styles.link, className)} {...rest} ref={ref} />;\n}) as LinkComponent; // Needed to tell Typescript this does not return ReactNode but acutally JSX.Element\n"],"names":["Link","forwardRef","as","className","rest","ref","jsx","clsx","styles"],"mappings":";;;;AAeO,MAAMA,IAAsBC,EAAiB,SAElD,EAAE,IAAAC,GAAI,WAAAC,GAAW,GAAGC,EAAA,GAAuBC,GAA0B;AAEtE,SAAO,gBAAAC,EADKJ,KAAM,KACV,EAAI,WAAWK,EAAKC,EAAO,MAAML,CAAS,GAAI,GAAGC,GAAM,KAAAC,EAAA,CAAU;AAC1E,CAAC;"}
@@ -1,25 +1,19 @@
1
- import styles from "../styles.module.css.js";
2
- import { isBrowser, onLoaded, onMutation, tag } from "../utils.js";
3
- const CSS_LOGO = styles.logo.split(" ")[0];
4
- const LOGOS = isBrowser() ? document.getElementsByClassName(CSS_LOGO) : [];
5
- function handleLogoMutation() {
6
- const logo = LOGOS[0];
7
- const svg = logo?.firstElementChild;
8
- if (svg instanceof SVGSVGElement) {
9
- for (const icon2 of document.head.querySelectorAll("link[rel~='icon']"))
10
- icon2.setAttribute("rel", "disabled");
11
- const isDot = logo?.hasAttribute("data-env");
12
- const style = window.getComputedStyle(svg);
13
- const text = style.getPropertyValue("color");
14
- const back = style.getPropertyValue("--mtdsc-logo-background");
15
- const icon = svg.outerHTML.replace(/\n+/g, " ").replace(/(fill|width|height|xmlns)="[^"]+"/gi, "").replace("<svg", `<svg width="40" height="40" fill="${text}"`);
1
+ import a from "../styles.module.css.js";
2
+ import { isBrowser as c, onLoaded as d, onMutation as g, tag as h } from "../utils.js";
3
+ const m = a.logo.split(" ")[0], p = c() ? document.getElementsByClassName(m) : [];
4
+ function u() {
5
+ const e = p[0], t = e?.firstElementChild;
6
+ if (t instanceof SVGSVGElement) {
7
+ for (const i of document.head.querySelectorAll("link[rel~='icon']"))
8
+ i.setAttribute("rel", "disabled");
9
+ const o = e?.hasAttribute("data-env"), n = window.getComputedStyle(t), s = n.getPropertyValue("color"), l = n.getPropertyValue("--mtdsc-logo-background"), r = t.outerHTML.replace(/\n+/g, " ").replace(/(fill|width|height|xmlns)="[^"]+"/gi, "").replace("<svg", `<svg width="40" height="40" fill="${s}"`);
16
10
  document.head.appendChild(
17
- tag("link", {
18
- href: `data:image/svg+xml,${encodeURIComponent(`<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 55 55'><rect fill='${isDot ? "none" : back}' width='51' height='51' x='2' y='2' stroke='${text}' stroke-dasharray='0.09 6.38' stroke-linecap='round' stroke-opacity='${isDot ? 0.6 : 0}' stroke-width='2.3' rx='25.5'/><g transform="translate(7.5 7.5)">${icon}</g></svg>`)}`,
11
+ h("link", {
12
+ href: `data:image/svg+xml,${encodeURIComponent(`<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 55 55'><rect fill='${o ? "none" : l}' width='51' height='51' x='2' y='2' stroke='${s}' stroke-dasharray='0.09 6.38' stroke-linecap='round' stroke-opacity='${o ? 0.6 : 0}' stroke-width='2.3' rx='25.5'/><g transform="translate(7.5 7.5)">${r}</g></svg>`)}`,
19
13
  rel: "icon"
20
14
  })
21
15
  );
22
16
  }
23
17
  }
24
- onLoaded(() => [onMutation(handleLogoMutation, "class")]);
18
+ d(() => [g(u, "class")]);
25
19
  //# sourceMappingURL=logo-observer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"logo-observer.js","sources":["../../designsystem/logo/logo-observer.ts"],"sourcesContent":["import styles from \"../styles.module.css\";\nimport { isBrowser, onLoaded, onMutation, tag } from \"../utils\";\n\nconst CSS_LOGO = styles.logo.split(\" \")[0];\nconst LOGOS = isBrowser() ? document.getElementsByClassName(CSS_LOGO) : [];\n\nfunction handleLogoMutation() {\n\tconst logo = LOGOS[0];\n\tconst svg = logo?.firstElementChild;\n\n\tif (svg instanceof SVGSVGElement) {\n\t\tfor (const icon of document.head.querySelectorAll(\"link[rel~='icon']\"))\n\t\t\ticon.setAttribute(\"rel\", \"disabled\"); // Disable previous icon (but not remove is as this makes Next.js sad)\n\n\t\tconst isDot = logo?.hasAttribute(\"data-env\");\n\t\tconst style = window.getComputedStyle(svg);\n\t\tconst text = style.getPropertyValue(\"color\");\n\t\tconst back = style.getPropertyValue(\"--mtdsc-logo-background\");\n\t\tconst icon = svg.outerHTML\n\t\t\t.replace(/\\n+/g, \" \") // Prevent line breaks\n\t\t\t.replace(/(fill|width|height|xmlns)=\"[^\"]+\"/gi, \"\")\n\t\t\t.replace(\"<svg\", `<svg width=\"40\" height=\"40\" fill=\"${text}\"`);\n\n\t\tdocument.head.appendChild(\n\t\t\ttag(\"link\", {\n\t\t\t\thref: `data:image/svg+xml,${encodeURIComponent(`<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 55 55'><rect fill='${isDot ? \"none\" : back}' width='51' height='51' x='2' y='2' stroke='${text}' stroke-dasharray='0.09 6.38' stroke-linecap='round' stroke-opacity='${isDot ? 0.6 : 0}' stroke-width='2.3' rx='25.5'/><g transform=\"translate(7.5 7.5)\">${icon}</g></svg>`)}`,\n\t\t\t\trel: \"icon\",\n\t\t\t}),\n\t\t);\n\t}\n}\n\nonLoaded(() => [onMutation(handleLogoMutation, \"class\")]);\n"],"names":["icon"],"mappings":";;AAGA,MAAM,WAAW,OAAO,KAAK,MAAM,GAAG,EAAE,CAAC;AACzC,MAAM,QAAQ,UAAA,IAAc,SAAS,uBAAuB,QAAQ,IAAI,CAAA;AAExE,SAAS,qBAAqB;AAC7B,QAAM,OAAO,MAAM,CAAC;AACpB,QAAM,MAAM,MAAM;AAElB,MAAI,eAAe,eAAe;AACjC,eAAWA,SAAQ,SAAS,KAAK,iBAAiB,mBAAmB;AACpEA,YAAK,aAAa,OAAO,UAAU;AAEpC,UAAM,QAAQ,MAAM,aAAa,UAAU;AAC3C,UAAM,QAAQ,OAAO,iBAAiB,GAAG;AACzC,UAAM,OAAO,MAAM,iBAAiB,OAAO;AAC3C,UAAM,OAAO,MAAM,iBAAiB,yBAAyB;AAC7D,UAAM,OAAO,IAAI,UACf,QAAQ,QAAQ,GAAG,EACnB,QAAQ,uCAAuC,EAAE,EACjD,QAAQ,QAAQ,qCAAqC,IAAI,GAAG;AAE9D,aAAS,KAAK;AAAA,MACb,IAAI,QAAQ;AAAA,QACX,MAAM,sBAAsB,mBAAmB,2EAA2E,QAAQ,SAAS,IAAI,gDAAgD,IAAI,yEAAyE,QAAQ,MAAM,CAAC,qEAAqE,IAAI,YAAY,CAAC;AAAA,QACjX,KAAK;AAAA,MAAA,CACL;AAAA,IAAA;AAAA,EAEH;AACD;AAEA,SAAS,MAAM,CAAC,WAAW,oBAAoB,OAAO,CAAC,CAAC;"}
1
+ {"version":3,"file":"logo-observer.js","sources":["../../designsystem/logo/logo-observer.ts"],"sourcesContent":["import styles from \"../styles.module.css\";\nimport { isBrowser, onLoaded, onMutation, tag } from \"../utils\";\n\nconst CSS_LOGO = styles.logo.split(\" \")[0];\nconst LOGOS = isBrowser() ? document.getElementsByClassName(CSS_LOGO) : [];\n\nfunction handleLogoMutation() {\n\tconst logo = LOGOS[0];\n\tconst svg = logo?.firstElementChild;\n\n\tif (svg instanceof SVGSVGElement) {\n\t\tfor (const icon of document.head.querySelectorAll(\"link[rel~='icon']\"))\n\t\t\ticon.setAttribute(\"rel\", \"disabled\"); // Disable previous icon (but not remove is as this makes Next.js sad)\n\n\t\tconst isDot = logo?.hasAttribute(\"data-env\");\n\t\tconst style = window.getComputedStyle(svg);\n\t\tconst text = style.getPropertyValue(\"color\");\n\t\tconst back = style.getPropertyValue(\"--mtdsc-logo-background\");\n\t\tconst icon = svg.outerHTML\n\t\t\t.replace(/\\n+/g, \" \") // Prevent line breaks\n\t\t\t.replace(/(fill|width|height|xmlns)=\"[^\"]+\"/gi, \"\")\n\t\t\t.replace(\"<svg\", `<svg width=\"40\" height=\"40\" fill=\"${text}\"`);\n\n\t\tdocument.head.appendChild(\n\t\t\ttag(\"link\", {\n\t\t\t\thref: `data:image/svg+xml,${encodeURIComponent(`<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 55 55'><rect fill='${isDot ? \"none\" : back}' width='51' height='51' x='2' y='2' stroke='${text}' stroke-dasharray='0.09 6.38' stroke-linecap='round' stroke-opacity='${isDot ? 0.6 : 0}' stroke-width='2.3' rx='25.5'/><g transform=\"translate(7.5 7.5)\">${icon}</g></svg>`)}`,\n\t\t\t\trel: \"icon\",\n\t\t\t}),\n\t\t);\n\t}\n}\n\nonLoaded(() => [onMutation(handleLogoMutation, \"class\")]);\n"],"names":["CSS_LOGO","styles","LOGOS","isBrowser","handleLogoMutation","logo","svg","icon","isDot","style","text","back","tag","onLoaded","onMutation"],"mappings":";;AAGA,MAAMA,IAAWC,EAAO,KAAK,MAAM,GAAG,EAAE,CAAC,GACnCC,IAAQC,EAAA,IAAc,SAAS,uBAAuBH,CAAQ,IAAI,CAAA;AAExE,SAASI,IAAqB;AAC7B,QAAMC,IAAOH,EAAM,CAAC,GACdI,IAAMD,GAAM;AAElB,MAAIC,aAAe,eAAe;AACjC,eAAWC,KAAQ,SAAS,KAAK,iBAAiB,mBAAmB;AACpEA,MAAAA,EAAK,aAAa,OAAO,UAAU;AAEpC,UAAMC,IAAQH,GAAM,aAAa,UAAU,GACrCI,IAAQ,OAAO,iBAAiBH,CAAG,GACnCI,IAAOD,EAAM,iBAAiB,OAAO,GACrCE,IAAOF,EAAM,iBAAiB,yBAAyB,GACvDF,IAAOD,EAAI,UACf,QAAQ,QAAQ,GAAG,EACnB,QAAQ,uCAAuC,EAAE,EACjD,QAAQ,QAAQ,qCAAqCI,CAAI,GAAG;AAE9D,aAAS,KAAK;AAAA,MACbE,EAAI,QAAQ;AAAA,QACX,MAAM,sBAAsB,mBAAmB,2EAA2EJ,IAAQ,SAASG,CAAI,gDAAgDD,CAAI,yEAAyEF,IAAQ,MAAM,CAAC,qEAAqED,CAAI,YAAY,CAAC;AAAA,QACjX,KAAK;AAAA,MAAA,CACL;AAAA,IAAA;AAAA,EAEH;AACD;AAEAM,EAAS,MAAM,CAACC,EAAWV,GAAoB,OAAO,CAAC,CAAC;"}