@mattilsynet/design 2.2.1 → 2.2.3
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/analytics/analytics.js +25 -30
- package/mtds/analytics/analytics.js.map +1 -1
- package/mtds/chart/chart-axis.d.ts +10 -0
- package/mtds/chart/chart-axis.js +21 -0
- package/mtds/chart/chart-axis.js.map +1 -0
- package/mtds/chart/chart-bars.d.ts +2 -0
- package/mtds/chart/chart-bars.js +24 -0
- package/mtds/chart/chart-bars.js.map +1 -0
- package/mtds/chart/chart-element.d.ts +14 -15
- package/mtds/chart/chart-element.js +64 -102
- package/mtds/chart/chart-element.js.map +1 -1
- package/mtds/chart/chart-lines.d.ts +8 -0
- package/mtds/chart/chart-lines.js +44 -0
- package/mtds/chart/chart-lines.js.map +1 -0
- package/mtds/chart/chart-pies.d.ts +4 -0
- package/mtds/chart/chart-pies.js +17 -0
- package/mtds/chart/chart-pies.js.map +1 -0
- package/mtds/chart/chart.css.js +310 -0
- package/mtds/chart/chart.css.js.map +1 -0
- package/mtds/chart/chart.d.ts +14 -4
- package/mtds/chart/chart.stories.d.ts +15 -0
- package/mtds/details/details.d.ts +6 -2
- package/mtds/details/details.js.map +1 -1
- package/mtds/illustrations/bucket-feed.svg +1 -0
- package/mtds/illustrations/index.json +20 -0
- package/mtds/illustrations/supplement-group.svg +1 -0
- package/mtds/illustrations/supplement-jar.svg +1 -0
- package/mtds/illustrations/supplement-tube.svg +1 -0
- package/mtds/index.d.ts +4 -4
- package/mtds/index.iife.js +157 -172
- package/mtds/logo/logo-observer.js +11 -11
- package/mtds/logo/logo-observer.js.map +1 -1
- package/mtds/map/map.stories.d.ts +10 -0
- package/mtds/package.json.js +1 -1
- package/mtds/popover/popover-observer.js +20 -18
- package/mtds/popover/popover-observer.js.map +1 -1
- package/mtds/styles.css +1 -1
- package/mtds/styles.json +41 -41
- package/mtds/styles.module.css.js +35 -35
- package/mtds/tailwind.css +1 -0
- package/mtds/toast/toast-helper.d.ts +12 -0
- package/mtds/toast/toast-helper.js +22 -8
- package/mtds/toast/toast-helper.js.map +1 -1
- package/mtds/toast/toast.d.ts +12 -0
- package/mtds/toast/toast.js +35 -21
- package/mtds/toast/toast.js.map +1 -1
- package/mtds/toast/toast.stories.d.ts +1 -0
- package/mtds/tooltip/tooltip-observer.js +15 -15
- package/mtds/tooltip/tooltip-observer.js.map +1 -1
- package/mtds/utils.d.ts +13 -0
- package/mtds/utils.js +65 -58
- package/mtds/utils.js.map +1 -1
- package/package.json +7 -6
- package/mtds/chart/chart.module.css.js +0 -325
- package/mtds/chart/chart.module.css.js.map +0 -1
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { onLoaded as
|
|
3
|
-
const
|
|
4
|
-
function
|
|
1
|
+
import a from "../styles.module.css.js";
|
|
2
|
+
import { onLoaded as c, onMutation as d, tag as g } from "../utils.js";
|
|
3
|
+
const h = a.logo.split(" ")[0];
|
|
4
|
+
function m([t]) {
|
|
5
5
|
if (t?.isConnected && t?.firstElementChild instanceof SVGSVGElement) {
|
|
6
|
-
for (const
|
|
7
|
-
|
|
8
|
-
const e = t.firstElementChild, o = t?.hasAttribute("data-env"), n = window.getComputedStyle(e), i = n.getPropertyValue("color"), r = n.getPropertyValue("--mtds-logo-color"),
|
|
6
|
+
for (const s of document.head.querySelectorAll("link[rel~='icon']"))
|
|
7
|
+
s.setAttribute("rel", "disabled");
|
|
8
|
+
const e = t.firstElementChild, o = t?.hasAttribute("data-env"), n = window.getComputedStyle(e), i = n.getPropertyValue("color"), r = n.getPropertyValue("--mtds-logo-color"), l = e.outerHTML.replace(/\n+/g, " ").replace(/(fill|width|height|xmlns)="[^"]+"/gi, "").replace("<svg", `<svg width="40" height="40" fill="${i}"`);
|
|
9
9
|
document.head.appendChild(
|
|
10
|
-
|
|
11
|
-
href: `data:image/svg+xml,${encodeURIComponent(`<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 55 55'><rect fill='${o ? "none" : r}' width='51' height='51' x='2' y='2' stroke='${i}' 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)">${
|
|
10
|
+
g("link", {
|
|
11
|
+
href: `data:image/svg+xml,${encodeURIComponent(`<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 55 55'><rect fill='${o ? "none" : r}' width='51' height='51' x='2' y='2' stroke='${i}' 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)">${l}</g></svg>`)}`,
|
|
12
12
|
rel: "icon"
|
|
13
13
|
})
|
|
14
14
|
);
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
|
-
|
|
18
|
-
() => d(document.documentElement,
|
|
17
|
+
c(
|
|
18
|
+
() => d(document.documentElement, h, m)
|
|
19
19
|
);
|
|
20
20
|
//# 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 { onLoaded, onMutation } from \"../utils\";\n\nconst CSS_LOGO = styles.logo.split(\" \")[0];\n\nfunction handleLogoMutation([logo]: HTMLCollectionOf<HTMLElement>) {\n\tif (logo?.isConnected && logo?.firstElementChild 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 svg = logo.firstElementChild;\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(\"--mtds-logo-color\");\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\
|
|
1
|
+
{"version":3,"file":"logo-observer.js","sources":["../../designsystem/logo/logo-observer.ts"],"sourcesContent":["import styles from \"../styles.module.css\";\nimport { onLoaded, onMutation, tag } from \"../utils\";\n\nconst CSS_LOGO = styles.logo.split(\" \")[0];\n\nfunction handleLogoMutation([logo]: HTMLCollectionOf<HTMLElement>) {\n\tif (logo?.isConnected && logo?.firstElementChild 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 svg = logo.firstElementChild;\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(\"--mtds-logo-color\");\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(() =>\n\tonMutation(document.documentElement, CSS_LOGO, handleLogoMutation),\n);\n"],"names":["CSS_LOGO","styles","handleLogoMutation","logo","icon","svg","isDot","style","text","back","tag","onLoaded","onMutation"],"mappings":";;AAGA,MAAMA,IAAWC,EAAO,KAAK,MAAM,GAAG,EAAE,CAAC;AAEzC,SAASC,EAAmB,CAACC,CAAI,GAAkC;AAClE,MAAIA,GAAM,eAAeA,GAAM,6BAA6B,eAAe;AAC1E,eAAWC,KAAQ,SAAS,KAAK,iBAAiB,mBAAmB;AACpEA,MAAAA,EAAK,aAAa,OAAO,UAAU;AAEpC,UAAMC,IAAMF,EAAK,mBACXG,IAAQH,GAAM,aAAa,UAAU,GACrCI,IAAQ,OAAO,iBAAiBF,CAAG,GACnCG,IAAOD,EAAM,iBAAiB,OAAO,GACrCE,IAAOF,EAAM,iBAAiB,mBAAmB,GACjDH,IAAOC,EAAI,UACf,QAAQ,QAAQ,GAAG,EACnB,QAAQ,uCAAuC,EAAE,EACjD,QAAQ,QAAQ,qCAAqCG,CAAI,GAAG;AAE9D,aAAS,KAAK;AAAA,MACbE,EAAI,QAAQ;AAAA,QACX,MAAM,sBAAsB,mBAAmB,2EAA2EJ,IAAQ,SAASG,CAAI,gDAAgDD,CAAI,yEAAyEF,IAAQ,MAAM,CAAC,qEAAqEF,CAAI,YAAY,CAAC;AAAA,QACjX,KAAK;AAAA,MAAA,CACL;AAAA,IAAA;AAAA,EAEH;AACD;AAEAO;AAAA,EAAS,MACRC,EAAW,SAAS,iBAAiBZ,GAAUE,CAAkB;AAClE;"}
|
package/mtds/package.json.js
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import { flip as
|
|
2
|
-
import
|
|
3
|
-
import { onLoaded as
|
|
4
|
-
const
|
|
1
|
+
import { flip as f, shift as g, size as m } from "../external/@floating-ui/dom/dist/floating-ui.dom.js";
|
|
2
|
+
import u from "../styles.module.css.js";
|
|
3
|
+
import { onLoaded as v, on as c, QUICK_EVENT as p, attr as a, anchorPosition as d } from "../utils.js";
|
|
4
|
+
const r = u.popover.split(" ")[0], l = "_mtds-popover-auto";
|
|
5
5
|
function h({ target: o, newState: t }) {
|
|
6
|
-
if (o instanceof HTMLElement && o.classList.contains(
|
|
7
|
-
const
|
|
6
|
+
if (o instanceof HTMLElement && o.classList.contains(r)) {
|
|
7
|
+
const s = t === "closed", n = a(o, "data-overscroll") === "contain", e = o.getRootNode()?.querySelector(
|
|
8
8
|
`[popovertarget="${o.id}"]`
|
|
9
9
|
);
|
|
10
|
-
|
|
11
|
-
placement:
|
|
12
|
-
middleware: [
|
|
13
|
-
n ?
|
|
10
|
+
s ? d(o, !1) : e && d(o, e, {
|
|
11
|
+
placement: a(o, "data-position") || "bottom",
|
|
12
|
+
middleware: [f(), g({ padding: 10 })].concat(
|
|
13
|
+
n ? m({
|
|
14
14
|
padding: 10,
|
|
15
15
|
apply({ availableHeight: i }) {
|
|
16
16
|
o.style.maxHeight = `${Math.max(50, i)}px`;
|
|
@@ -20,19 +20,21 @@ function h({ target: o, newState: t }) {
|
|
|
20
20
|
});
|
|
21
21
|
}
|
|
22
22
|
}
|
|
23
|
-
function
|
|
24
|
-
t === "open" && o instanceof HTMLElement && o.classList.contains(
|
|
23
|
+
function E({ target: o, newState: t }) {
|
|
24
|
+
t === "open" && o instanceof HTMLElement && o.classList.contains(r) && a(o, "popover") !== "manual" && (o.classList.add(l), a(o, "popover", "manual"));
|
|
25
25
|
}
|
|
26
|
-
function
|
|
27
|
-
const t = o?.closest?.("a,
|
|
26
|
+
function L(o) {
|
|
27
|
+
const t = o.target?.closest?.("a,button"), s = t && a(t, "popovertarget"), n = s ? document.getElementById(s) : t?.closest(`.${r}`);
|
|
28
28
|
for (const e of document.getElementsByClassName(l))
|
|
29
|
-
e.contains(o)
|
|
29
|
+
!e.contains(o.target) && n !== e && e.hidePopover();
|
|
30
30
|
if (n && t) {
|
|
31
|
-
|
|
31
|
+
o.preventDefault();
|
|
32
|
+
const e = a(t, "popovertargetaction"), i = e === "show" || (e === "hide" ? !1 : void 0);
|
|
33
|
+
if (t instanceof HTMLButtonElement && !e && n.contains(t)) return;
|
|
32
34
|
n instanceof HTMLElement && n.isConnected && n.togglePopover && n.togglePopover(i);
|
|
33
35
|
}
|
|
34
36
|
}
|
|
35
|
-
|
|
36
|
-
c(document, "click",
|
|
37
|
+
v(() => {
|
|
38
|
+
c(document, "click", L), c(document, "toggle", h, p), c(document, "beforetoggle", E, p);
|
|
37
39
|
});
|
|
38
40
|
//# sourceMappingURL=popover-observer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"popover-observer.js","sources":["../../designsystem/popover/popover-observer.ts"],"sourcesContent":["import { flip, type Placement, shift, size } from \"@floating-ui/dom\";\nimport styles from \"../styles.module.css\";\nimport { anchorPosition, attr, on, onLoaded, QUICK_EVENT } from \"../utils\";\n\nconst CSS_POPOVER = styles.popover.split(\" \")[0];\nconst CSS_AUTO = `_mtds-popover-auto`;\n\ntype EventToggle = Event & Partial<ToggleEvent>;\n\nfunction handlePopoverToggle({ target: el, newState }: EventToggle) {\n\tif (el instanceof HTMLElement && el.classList.contains(CSS_POPOVER)) {\n\t\tconst isClosing = newState === \"closed\";\n\t\tconst isContain = attr(el, \"data-overscroll\") === \"contain\";\n\t\tconst anchor = (el.getRootNode() as ShadowRoot)?.querySelector<HTMLElement>(\n\t\t\t`[popovertarget=\"${el.id}\"]`,\n\t\t);\n\n\t\tif (isClosing) anchorPosition(el, false);\n\t\telse if (anchor)\n\t\t\tanchorPosition(el, anchor, {\n\t\t\t\tplacement: (attr(el, \"data-position\") || \"bottom\") as Placement,\n\t\t\t\tmiddleware: [flip(), shift({ padding: 10 })].concat(\n\t\t\t\t\tisContain\n\t\t\t\t\t\t? size({\n\t\t\t\t\t\t\t\tpadding: 10,\n\t\t\t\t\t\t\t\tapply({ availableHeight }) {\n\t\t\t\t\t\t\t\t\tel.style.maxHeight = `${Math.max(50, availableHeight)}px`;\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t: [],\n\t\t\t\t),\n\t\t\t});\n\t}\n}\n\nfunction handlePopoverBeforetoggle({ target: el, newState }: EventToggle) {\n\tif (\n\t\tnewState === \"open\" &&\n\t\tel instanceof HTMLElement &&\n\t\tel.classList.contains(CSS_POPOVER) &&\n\t\tattr(el, \"popover\") !== \"manual\"\n\t) {\n\t\tel.classList.add(CSS_AUTO);\n\t\tattr(el, \"popover\", \"manual\"); // Make manual to prevent closing when clicking scrollbar\n\t}\n}\n\n// Polyfill popovertarget for <a> (not supported by native)\n// and automatically assume popovertarget is the closest parent popover\n// but respect the popovertarget and popovertargetaction attribute\nfunction handlePopoverLinkClick(
|
|
1
|
+
{"version":3,"file":"popover-observer.js","sources":["../../designsystem/popover/popover-observer.ts"],"sourcesContent":["import { flip, type Placement, shift, size } from \"@floating-ui/dom\";\nimport styles from \"../styles.module.css\";\nimport { anchorPosition, attr, on, onLoaded, QUICK_EVENT } from \"../utils\";\n\nconst CSS_POPOVER = styles.popover.split(\" \")[0];\nconst CSS_AUTO = `_mtds-popover-auto`;\n\ntype EventToggle = Event & Partial<ToggleEvent>;\n\nfunction handlePopoverToggle({ target: el, newState }: EventToggle) {\n\tif (el instanceof HTMLElement && el.classList.contains(CSS_POPOVER)) {\n\t\tconst isClosing = newState === \"closed\";\n\t\tconst isContain = attr(el, \"data-overscroll\") === \"contain\";\n\t\tconst anchor = (el.getRootNode() as ShadowRoot)?.querySelector<HTMLElement>(\n\t\t\t`[popovertarget=\"${el.id}\"]`,\n\t\t);\n\n\t\tif (isClosing) anchorPosition(el, false);\n\t\telse if (anchor)\n\t\t\tanchorPosition(el, anchor, {\n\t\t\t\tplacement: (attr(el, \"data-position\") || \"bottom\") as Placement,\n\t\t\t\tmiddleware: [flip(), shift({ padding: 10 })].concat(\n\t\t\t\t\tisContain\n\t\t\t\t\t\t? size({\n\t\t\t\t\t\t\t\tpadding: 10,\n\t\t\t\t\t\t\t\tapply({ availableHeight }) {\n\t\t\t\t\t\t\t\t\tel.style.maxHeight = `${Math.max(50, availableHeight)}px`;\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t: [],\n\t\t\t\t),\n\t\t\t});\n\t}\n}\n\nfunction handlePopoverBeforetoggle({ target: el, newState }: EventToggle) {\n\tif (\n\t\tnewState === \"open\" &&\n\t\tel instanceof HTMLElement &&\n\t\tel.classList.contains(CSS_POPOVER) &&\n\t\tattr(el, \"popover\") !== \"manual\"\n\t) {\n\t\tel.classList.add(CSS_AUTO);\n\t\tattr(el, \"popover\", \"manual\"); // Make manual to prevent closing when clicking scrollbar\n\t}\n}\n\n// Polyfill popovertarget for <a> (not supported by native)\n// and automatically assume popovertarget is the closest parent popover\n// but respect the popovertarget and popovertargetaction attribute\nfunction handlePopoverLinkClick(event: Event) {\n\tconst el = (event.target as Element)?.closest?.(\"a,button\");\n\tconst id = el && attr(el, \"popovertarget\");\n\tconst pop = id ? document.getElementById(id) : el?.closest(`.${CSS_POPOVER}`);\n\n\t// Manually close popovers where click was outside\n\tfor (const open of document.getElementsByClassName(CSS_AUTO))\n\t\tif (!open.contains(event.target as Node) && pop !== open)\n\t\t\t(open as HTMLElement).hidePopover();\n\n\tif (pop && el) {\n\t\tevent.preventDefault(); // Prevent browser popover API\n\t\tconst action = attr(el, \"popovertargetaction\");\n\t\tconst open = action === \"show\" || (action === \"hide\" ? false : undefined);\n\n\t\t// Popover can be disconneted by click handler deeper down in the DOM three before reaching document\n\t\tif (el instanceof HTMLButtonElement && !action && pop.contains(el)) return; // Require \"popovertargetaction\" attribute to make buttons inside popover toggle\n\t\tif (pop instanceof HTMLElement && pop.isConnected && pop.togglePopover)\n\t\t\tpop.togglePopover(open);\n\t}\n}\n\nonLoaded(() => {\n\ton(document, \"click\", handlePopoverLinkClick); // Allow `<a>` to use `popovertarget` as well\n\ton(document, \"toggle\", handlePopoverToggle, QUICK_EVENT); // Use capture since toggle does not bubble\n\ton(document, \"beforetoggle\", handlePopoverBeforetoggle, QUICK_EVENT); // Use capture since toggle does not bubble\n});\n"],"names":["CSS_POPOVER","styles","CSS_AUTO","handlePopoverToggle","el","newState","isClosing","isContain","attr","anchor","anchorPosition","flip","shift","size","availableHeight","handlePopoverBeforetoggle","handlePopoverLinkClick","event","id","pop","open","action","onLoaded","on","QUICK_EVENT"],"mappings":";;;AAIA,MAAMA,IAAcC,EAAO,QAAQ,MAAM,GAAG,EAAE,CAAC,GACzCC,IAAW;AAIjB,SAASC,EAAoB,EAAE,QAAQC,GAAI,UAAAC,KAAyB;AACnE,MAAID,aAAc,eAAeA,EAAG,UAAU,SAASJ,CAAW,GAAG;AACpE,UAAMM,IAAYD,MAAa,UACzBE,IAAYC,EAAKJ,GAAI,iBAAiB,MAAM,WAC5CK,IAAUL,EAAG,YAAA,GAA8B;AAAA,MAChD,mBAAmBA,EAAG,EAAE;AAAA,IAAA;AAGzB,IAAIE,IAAWI,EAAeN,GAAI,EAAK,IAC9BK,KACRC,EAAeN,GAAIK,GAAQ;AAAA,MAC1B,WAAYD,EAAKJ,GAAI,eAAe,KAAK;AAAA,MACzC,YAAY,CAACO,EAAA,GAAQC,EAAM,EAAE,SAAS,GAAA,CAAI,CAAC,EAAE;AAAA,QAC5CL,IACGM,EAAK;AAAA,UACL,SAAS;AAAA,UACT,MAAM,EAAE,iBAAAC,KAAmB;AAC1B,YAAAV,EAAG,MAAM,YAAY,GAAG,KAAK,IAAI,IAAIU,CAAe,CAAC;AAAA,UACtD;AAAA,QAAA,CACA,IACA,CAAA;AAAA,MAAC;AAAA,IACL,CACA;AAAA,EACH;AACD;AAEA,SAASC,EAA0B,EAAE,QAAQX,GAAI,UAAAC,KAAyB;AACzE,EACCA,MAAa,UACbD,aAAc,eACdA,EAAG,UAAU,SAASJ,CAAW,KACjCQ,EAAKJ,GAAI,SAAS,MAAM,aAExBA,EAAG,UAAU,IAAIF,CAAQ,GACzBM,EAAKJ,GAAI,WAAW,QAAQ;AAE9B;AAKA,SAASY,EAAuBC,GAAc;AAC7C,QAAMb,IAAMa,EAAM,QAAoB,UAAU,UAAU,GACpDC,IAAKd,KAAMI,EAAKJ,GAAI,eAAe,GACnCe,IAAMD,IAAK,SAAS,eAAeA,CAAE,IAAId,GAAI,QAAQ,IAAIJ,CAAW,EAAE;AAG5E,aAAWoB,KAAQ,SAAS,uBAAuBlB,CAAQ;AAC1D,IAAI,CAACkB,EAAK,SAASH,EAAM,MAAc,KAAKE,MAAQC,KAClDA,EAAqB,YAAA;AAExB,MAAID,KAAOf,GAAI;AACd,IAAAa,EAAM,eAAA;AACN,UAAMI,IAASb,EAAKJ,GAAI,qBAAqB,GACvCgB,IAAOC,MAAW,WAAWA,MAAW,SAAS,KAAQ;AAG/D,QAAIjB,aAAc,qBAAqB,CAACiB,KAAUF,EAAI,SAASf,CAAE,EAAG;AACpE,IAAIe,aAAe,eAAeA,EAAI,eAAeA,EAAI,iBACxDA,EAAI,cAAcC,CAAI;AAAA,EACxB;AACD;AAEAE,EAAS,MAAM;AACd,EAAAC,EAAG,UAAU,SAASP,CAAsB,GAC5CO,EAAG,UAAU,UAAUpB,GAAqBqB,CAAW,GACvDD,EAAG,UAAU,gBAAgBR,GAA2BS,CAAW;AACpE,CAAC;"}
|