@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.
- package/mtds/alert/alert.js +8 -9
- package/mtds/alert/alert.js.map +1 -1
- package/mtds/analytics/analytics.js +104 -165
- package/mtds/analytics/analytics.js.map +1 -1
- package/mtds/app/app-observer.js +28 -74
- package/mtds/app/app-observer.js.map +1 -1
- package/mtds/app/app-toggle.js +26 -16
- package/mtds/app/app-toggle.js.map +1 -1
- package/mtds/app/app-toggle2.js +10 -4
- package/mtds/app/app-toggle2.js.map +1 -1
- package/mtds/app/app.js +32 -36
- package/mtds/app/app.js.map +1 -1
- package/mtds/atlas/atlas-element.d.ts +27 -0
- package/mtds/atlas/atlas-element.js +63 -84
- package/mtds/atlas/atlas-element.js.map +1 -1
- package/mtds/atlas/atlas-marker.js +28 -48
- package/mtds/atlas/atlas-marker.js.map +1 -1
- package/mtds/atlas/atlas-matgeo.d.ts +3 -8
- package/mtds/atlas/atlas-matgeo.js +36 -66
- package/mtds/atlas/atlas-matgeo.js.map +1 -1
- package/mtds/atlas/atlas-wms.js +11 -21
- package/mtds/atlas/atlas-wms.js.map +1 -1
- package/mtds/atlas/atlas.css.js +2 -2
- package/mtds/atlas/atlas.css.js.map +1 -1
- package/mtds/atlas/atlas.js +23 -23
- package/mtds/atlas/atlas.js.map +1 -1
- package/mtds/atlas/atlas.stories.d.ts +1 -0
- package/mtds/atlas/cluster.js +697 -1576
- package/mtds/atlas/cluster.js.map +1 -1
- package/mtds/atlas.iife.js +4 -4
- package/mtds/atlas.js +11 -10
- package/mtds/avatar/avatar.js +8 -8
- package/mtds/avatar/avatar.js.map +1 -1
- package/mtds/badge/badge.js +7 -7
- package/mtds/badge/badge.js.map +1 -1
- package/mtds/breadcrumbs/breadcrumbs-observer.js +9 -10
- package/mtds/breadcrumbs/breadcrumbs-observer.js.map +1 -1
- package/mtds/breadcrumbs/breadcrumbs.js +13 -14
- package/mtds/breadcrumbs/breadcrumbs.js.map +1 -1
- package/mtds/button/button.js +14 -16
- package/mtds/button/button.js.map +1 -1
- package/mtds/card/card.js +12 -14
- package/mtds/card/card.js.map +1 -1
- package/mtds/chart/chart-axis.js +15 -27
- package/mtds/chart/chart-axis.js.map +1 -1
- package/mtds/chart/chart-bars.js +13 -15
- package/mtds/chart/chart-bars.js.map +1 -1
- package/mtds/chart/chart-element.js +48 -83
- package/mtds/chart/chart-element.js.map +1 -1
- package/mtds/chart/chart-lines.js +32 -54
- package/mtds/chart/chart-lines.js.map +1 -1
- package/mtds/chart/chart-pies.js +14 -34
- package/mtds/chart/chart-pies.js.map +1 -1
- package/mtds/chart/chart.css.js +2 -2
- package/mtds/chart/chart.css.js.map +1 -1
- package/mtds/chart/chart.js +12 -12
- package/mtds/chart/chart.js.map +1 -1
- package/mtds/chip/chip.js +8 -8
- package/mtds/chip/chip.js.map +1 -1
- package/mtds/chip/chip.stories.d.ts +1 -0
- package/mtds/details/details.js +12 -14
- package/mtds/details/details.js.map +1 -1
- package/mtds/dialog/dialog-observer.js +22 -35
- package/mtds/dialog/dialog-observer.js.map +1 -1
- package/mtds/dialog/dialog.js +12 -12
- package/mtds/dialog/dialog.js.map +1 -1
- package/mtds/divider/divider.js +10 -10
- package/mtds/divider/divider.js.map +1 -1
- package/mtds/errorsummary/errorsummary-observer.js +8 -11
- package/mtds/errorsummary/errorsummary-observer.js.map +1 -1
- package/mtds/errorsummary/errorsummary.js +11 -11
- package/mtds/errorsummary/errorsummary.js.map +1 -1
- package/mtds/external/@turf/boolean-point-in-polygon/dist/esm/index.js +19 -27
- package/mtds/external/@turf/boolean-point-in-polygon/dist/esm/index.js.map +1 -1
- package/mtds/external/@turf/helpers/dist/esm/index.js +16 -29
- package/mtds/external/@turf/helpers/dist/esm/index.js.map +1 -1
- package/mtds/external/@turf/invariant/dist/esm/index.js +13 -20
- package/mtds/external/@turf/invariant/dist/esm/index.js.map +1 -1
- package/mtds/external/leaflet/dist/leaflet-src.js +3096 -6004
- package/mtds/external/leaflet/dist/leaflet-src.js.map +1 -1
- package/mtds/external/leaflet/dist/leaflet.css.js +2 -2
- package/mtds/external/leaflet/dist/leaflet.css.js.map +1 -1
- package/mtds/external/point-in-polygon-hao/dist/esm/index.js +16 -46
- package/mtds/external/point-in-polygon-hao/dist/esm/index.js.map +1 -1
- package/mtds/external/robust-predicates/esm/orient2d.js +19 -163
- package/mtds/external/robust-predicates/esm/orient2d.js.map +1 -1
- package/mtds/external/robust-predicates/esm/util.js +25 -85
- package/mtds/external/robust-predicates/esm/util.js.map +1 -1
- package/mtds/field/field-observer.js +53 -119
- package/mtds/field/field-observer.js.map +1 -1
- package/mtds/field/field.d.ts +0 -1
- package/mtds/field/field.js +145 -177
- package/mtds/field/field.js.map +1 -1
- package/mtds/fieldset/fieldset-observer.js +14 -24
- package/mtds/fieldset/fieldset-observer.js.map +1 -1
- package/mtds/fieldset/fieldset.d.ts +3 -9
- package/mtds/fieldset/fieldset.js +20 -23
- package/mtds/fieldset/fieldset.js.map +1 -1
- package/mtds/fileupload/fileupload.js +8 -9
- package/mtds/fileupload/fileupload.js.map +1 -1
- package/mtds/fileupload/fileupload.stories.d.ts +1 -0
- package/mtds/helptext/helptext.js +15 -15
- package/mtds/helptext/helptext.js.map +1 -1
- package/mtds/illustrations/index.json +2 -2
- package/mtds/index.iife.js +15 -15
- package/mtds/index.js +27 -26
- package/mtds/index.js.map +1 -1
- package/mtds/input/input.js +28 -30
- package/mtds/input/input.js.map +1 -1
- package/mtds/law/law-helper.js +77 -143
- package/mtds/law/law-helper.js.map +1 -1
- package/mtds/law/law.js +6 -6
- package/mtds/law/law.js.map +1 -1
- package/mtds/layout/layout.js +10 -13
- package/mtds/layout/layout.js.map +1 -1
- package/mtds/link/link.js +7 -8
- package/mtds/link/link.js.map +1 -1
- package/mtds/logo/logo-observer.js +12 -18
- package/mtds/logo/logo-observer.js.map +1 -1
- package/mtds/logo/logo.js +8 -8
- package/mtds/logo/logo.js.map +1 -1
- package/mtds/package.json.js +2 -2
- package/mtds/pagination/pagination-helper.js +11 -17
- package/mtds/pagination/pagination-helper.js.map +1 -1
- package/mtds/pagination/pagination.js +30 -30
- package/mtds/pagination/pagination.js.map +1 -1
- package/mtds/popover/popover-observer.js +33 -45
- package/mtds/popover/popover-observer.js.map +1 -1
- package/mtds/popover/popover.js +12 -13
- package/mtds/popover/popover.js.map +1 -1
- package/mtds/progress/progress.js +8 -8
- package/mtds/progress/progress.js.map +1 -1
- package/mtds/react-atlas.js +13 -12
- package/mtds/react-types.d.ts +1 -0
- package/mtds/react.js +80 -80
- package/mtds/skeleton/skeleton.js +8 -8
- package/mtds/skeleton/skeleton.js.map +1 -1
- package/mtds/spinner/spinner.js +8 -8
- package/mtds/spinner/spinner.js.map +1 -1
- package/mtds/steps/steps.js +7 -7
- package/mtds/steps/steps.js.map +1 -1
- package/mtds/styles.css +1 -4591
- package/mtds/styles.json +43 -43
- package/mtds/styles.module.css.js +112 -167
- package/mtds/styles.module.css.js.map +1 -1
- package/mtds/table/table-observer.js +19 -22
- package/mtds/table/table-observer.js.map +1 -1
- package/mtds/table/table.d.ts +7 -0
- package/mtds/table/table.js +43 -18
- package/mtds/table/table.js.map +1 -1
- package/mtds/tabs/tabs.js +21 -25
- package/mtds/tabs/tabs.js.map +1 -1
- package/mtds/tag/tag.js +8 -8
- package/mtds/tag/tag.js.map +1 -1
- package/mtds/tailwind.css +6 -25
- package/mtds/toast/toast-helper.js +20 -35
- package/mtds/toast/toast-helper.js.map +1 -1
- package/mtds/toast/toast-observer.js +15 -30
- package/mtds/toast/toast-observer.js.map +1 -1
- package/mtds/toast/toast.js +37 -45
- package/mtds/toast/toast.js.map +1 -1
- package/mtds/togglegroup/togglegroup-observer.js +10 -15
- package/mtds/togglegroup/togglegroup-observer.js.map +1 -1
- package/mtds/togglegroup/togglegroup.js +24 -21
- package/mtds/togglegroup/togglegroup.js.map +1 -1
- package/mtds/tooltip/tooltip-observer.js +32 -48
- package/mtds/tooltip/tooltip-observer.js.map +1 -1
- package/mtds/typography/typography.js +19 -28
- package/mtds/typography/typography.js.map +1 -1
- package/mtds/utils.js +89 -129
- package/mtds/utils.js.map +1 -1
- package/mtds/validation/validation-observer.d.ts +1 -0
- package/mtds/validation/validation-observer.js +31 -0
- package/mtds/validation/validation-observer.js.map +1 -0
- package/mtds/validation/validation.js +12 -12
- package/mtds/validation/validation.js.map +1 -1
- package/package.json +8 -6
package/mtds/input/input.js
CHANGED
|
@@ -1,48 +1,46 @@
|
|
|
1
|
-
import { jsx } from "react/jsx-runtime";
|
|
2
|
-
import
|
|
3
|
-
import { forwardRef } from "react";
|
|
4
|
-
import
|
|
5
|
-
const
|
|
6
|
-
return /* @__PURE__ */
|
|
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:
|
|
10
|
-
suppressHydrationWarning:
|
|
11
|
-
type,
|
|
12
|
-
ref,
|
|
13
|
-
...
|
|
9
|
+
className: s(o.input, t),
|
|
10
|
+
suppressHydrationWarning: !0,
|
|
11
|
+
type: r,
|
|
12
|
+
ref: i,
|
|
13
|
+
...e
|
|
14
14
|
}
|
|
15
15
|
);
|
|
16
|
-
})
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
return /* @__PURE__ */ jsx(
|
|
16
|
+
}), x = a(
|
|
17
|
+
function({ className: t, ...r }, e) {
|
|
18
|
+
return /* @__PURE__ */ n(
|
|
20
19
|
"select",
|
|
21
20
|
{
|
|
22
|
-
className:
|
|
23
|
-
suppressHydrationWarning:
|
|
24
|
-
ref,
|
|
25
|
-
...
|
|
21
|
+
className: s(o.input, t),
|
|
22
|
+
suppressHydrationWarning: !0,
|
|
23
|
+
ref: e,
|
|
24
|
+
...r
|
|
26
25
|
}
|
|
27
26
|
);
|
|
28
27
|
}
|
|
29
|
-
)
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
return /* @__PURE__ */ jsx(
|
|
28
|
+
), d = a(
|
|
29
|
+
function({ className: t, ...r }, e) {
|
|
30
|
+
return /* @__PURE__ */ n(
|
|
33
31
|
"textarea",
|
|
34
32
|
{
|
|
35
|
-
className:
|
|
36
|
-
suppressHydrationWarning:
|
|
37
|
-
ref,
|
|
38
|
-
...
|
|
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
|
package/mtds/input/input.js.map
CHANGED
|
@@ -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,
|
|
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;"}
|
package/mtds/law/law-helper.js
CHANGED
|
@@ -1,160 +1,94 @@
|
|
|
1
|
-
import { attr } from "../utils.js";
|
|
2
|
-
const
|
|
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
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
)
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
(
|
|
29
|
-
)
|
|
30
|
-
|
|
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
|
|
38
|
-
|
|
39
|
-
|
|
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
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
};
|
|
47
|
-
const
|
|
48
|
-
|
|
49
|
-
|
|
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
|
|
55
|
-
}
|
|
56
|
-
const
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
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:
|
|
92
|
-
url:
|
|
93
|
-
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
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
const
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
const
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
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: (
|
|
129
|
-
const [
|
|
130
|
-
|
|
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: (
|
|
134
|
-
const
|
|
135
|
-
|
|
136
|
-
|
|
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: (
|
|
147
|
-
const
|
|
148
|
-
|
|
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
|
|
4
|
-
const
|
|
5
|
-
return /* @__PURE__ */
|
|
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
|
package/mtds/law/law.js.map
CHANGED
|
@@ -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,
|
|
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;"}
|
package/mtds/layout/layout.js
CHANGED
|
@@ -1,17 +1,14 @@
|
|
|
1
|
-
import { jsx } from "react/jsx-runtime";
|
|
2
|
-
import
|
|
3
|
-
import { forwardRef } from "react";
|
|
4
|
-
import
|
|
5
|
-
const
|
|
6
|
-
|
|
7
|
-
|
|
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,
|
|
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
|
|
3
|
-
import { forwardRef } from "react";
|
|
4
|
-
import
|
|
5
|
-
const
|
|
6
|
-
|
|
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
|
package/mtds/link/link.js.map
CHANGED
|
@@ -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,
|
|
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
|
|
2
|
-
import { isBrowser, onLoaded, onMutation, tag } from "../utils.js";
|
|
3
|
-
const
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
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
|
-
|
|
18
|
-
href: `data:image/svg+xml,${encodeURIComponent(`<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 55 55'><rect fill='${
|
|
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
|
-
|
|
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,
|
|
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;"}
|