@pnx-mixtape/mxds 0.1.0-rc.4 → 0.1.0-rc.5

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 (199) hide show
  1. package/.claude/skills/create-mxds-component/SKILL.md +77 -0
  2. package/DESIGN.md +595 -0
  3. package/README.md +1 -2
  4. package/dist/build/accordion.entry.js +2 -1
  5. package/dist/build/autocomplete.entry.js +1 -1
  6. package/dist/build/back-to-top.css +1 -0
  7. package/dist/build/back-to-top.entry.js +1 -0
  8. package/dist/build/button.css +1 -1
  9. package/dist/build/card.css +1 -1
  10. package/dist/build/chunks/Accordion-D2wp8hBG.js +44 -0
  11. package/dist/build/chunks/AccordionGroup-BYtoAFxg.js +47 -0
  12. package/dist/build/chunks/AccordionMobile-D3sTeiM5.js +26 -0
  13. package/dist/build/chunks/Autocomplete-kRo8RNbC.js +135 -0
  14. package/dist/build/chunks/BackToTop-4M-Wl7z3.js +64 -0
  15. package/dist/build/chunks/ClosableAlert-yy84gae6.js +55 -0
  16. package/dist/build/chunks/CookieConsent-wd8gQ2Oe.js +18 -0
  17. package/dist/build/chunks/Dialog-DWoXW-7Z.js +48 -0
  18. package/dist/build/chunks/DropMenu-CSTZq0Zt.js +68 -0
  19. package/dist/build/chunks/FeedbackForm-BochXEDx.js +64 -0
  20. package/dist/build/chunks/Gallery-Rkfv7Mbb.js +165 -0
  21. package/dist/build/chunks/GlobalToggle-CzlkpLpc.js +82 -0
  22. package/dist/build/chunks/InPageNavigation-D1Kk-rCm.js +86 -0
  23. package/dist/build/chunks/Navigation-CDQnN61h.js +147 -0
  24. package/dist/build/chunks/Popover-CiTAftNU.js +30 -0
  25. package/dist/build/chunks/Sticky-DoVndENm.js +51 -0
  26. package/dist/build/chunks/Tabs-BDlxCDNh.js +160 -0
  27. package/dist/build/chunks/Translate-bmM38j6z.js +46 -0
  28. package/dist/build/chunks/cookie-compliance-CG6x-TcV.js +119 -0
  29. package/dist/build/chunks/enums-BrHxPZZ_.js +36 -0
  30. package/dist/build/chunks/polyfills-D-qh1a_2.js +33 -0
  31. package/dist/build/chunks/utilities-Dd-08SW6.js +255 -0
  32. package/dist/build/content-block.css +1 -1
  33. package/dist/build/cookie-consent.entry.js +1 -1
  34. package/dist/build/dialog.entry.js +1 -1
  35. package/dist/build/drop-menu.entry.js +1 -1
  36. package/dist/build/elements.js +147 -1
  37. package/dist/build/feedback-form.css +1 -0
  38. package/dist/build/feedback-form.entry.js +1 -0
  39. package/dist/build/filters.entry.js +145 -1
  40. package/dist/build/gallery.entry.js +1 -1
  41. package/dist/build/global-alert.entry.js +1 -1
  42. package/dist/build/header.css +1 -1
  43. package/dist/build/header.entry.js +1 -1
  44. package/dist/build/icon.css +1 -1
  45. package/dist/build/in-page-navigation.entry.js +1 -1
  46. package/dist/build/navigation.entry.js +1 -1
  47. package/dist/build/pagination.css +1 -1
  48. package/dist/build/popover.entry.js +1 -1
  49. package/dist/build/react.js +2270 -1
  50. package/dist/build/sticky.entry.js +1 -1
  51. package/dist/build/tabs.entry.js +1 -1
  52. package/dist/build/translate.css +1 -0
  53. package/dist/build/translate.entry.js +1 -0
  54. package/dist/build/utility-list.entry.js +53 -1
  55. package/dist/types/Component/BackToTop/BackToTop.d.ts +20 -0
  56. package/dist/types/Component/BackToTop/BackToTop.d.ts.map +1 -0
  57. package/dist/types/Component/BackToTop/Elements/BackToTop.d.ts +27 -0
  58. package/dist/types/Component/BackToTop/Elements/BackToTop.d.ts.map +1 -0
  59. package/dist/types/Component/BackToTop/back-to-top.entry.d.ts +2 -0
  60. package/dist/types/Component/BackToTop/back-to-top.entry.d.ts.map +1 -0
  61. package/dist/types/Component/DropMenu/DropMenu.d.ts +2 -1
  62. package/dist/types/Component/DropMenu/DropMenu.d.ts.map +1 -1
  63. package/dist/types/Component/Tabs/Components/TabDropMenu.d.ts.map +1 -1
  64. package/dist/types/Component/Tabs/Elements/Tabs.d.ts.map +1 -1
  65. package/dist/types/Component/Translate/Elements/Translate.d.ts +23 -0
  66. package/dist/types/Component/Translate/Elements/Translate.d.ts.map +1 -0
  67. package/dist/types/Component/Translate/Translate.d.ts +37 -0
  68. package/dist/types/Component/Translate/Translate.d.ts.map +1 -0
  69. package/dist/types/Component/Translate/languages.d.ts +11 -0
  70. package/dist/types/Component/Translate/languages.d.ts.map +1 -0
  71. package/dist/types/Component/Translate/translate.entry.d.ts +2 -0
  72. package/dist/types/Component/Translate/translate.entry.d.ts.map +1 -0
  73. package/dist/types/Form/FeedbackForm/Elements/FeedbackForm.d.ts +37 -0
  74. package/dist/types/Form/FeedbackForm/Elements/FeedbackForm.d.ts.map +1 -0
  75. package/dist/types/Form/FeedbackForm/FeedbackForm.d.ts +36 -0
  76. package/dist/types/Form/FeedbackForm/FeedbackForm.d.ts.map +1 -0
  77. package/dist/types/Form/FeedbackForm/feedback-form.entry.d.ts +2 -0
  78. package/dist/types/Form/FeedbackForm/feedback-form.entry.d.ts.map +1 -0
  79. package/dist/types/Utility/Elements/google-translate-widget.d.ts +91 -0
  80. package/dist/types/Utility/Elements/google-translate-widget.d.ts.map +1 -0
  81. package/dist/types/Utility/utilities.d.ts +2 -0
  82. package/dist/types/Utility/utilities.d.ts.map +1 -1
  83. package/dist/types/elements.d.ts +3 -0
  84. package/dist/types/elements.d.ts.map +1 -1
  85. package/dist/types/enums.d.ts +3 -1
  86. package/dist/types/enums.d.ts.map +1 -1
  87. package/dist/types/react.d.ts +3 -0
  88. package/dist/types/react.d.ts.map +1 -1
  89. package/docs/API.md +1215 -0
  90. package/docs/CSSGuidelines.md +891 -0
  91. package/docs/CodeQuality.md +940 -0
  92. package/docs/ComponentArchitecture.md +714 -0
  93. package/docs/Contributing.md +626 -0
  94. package/docs/MemoryManagement.md +598 -0
  95. package/docs/Migrations.md +6 -0
  96. package/docs/README.md +100 -0
  97. package/docs/Security.md +444 -0
  98. package/docs/Testing.md +739 -0
  99. package/docs/Troubleshooting.md +674 -0
  100. package/package.json +6 -3
  101. package/src/Atom/Button/Button.tsx +1 -1
  102. package/src/Atom/Button/__snapshots__/Button.stories.tsx.snap +2 -2
  103. package/src/Atom/Button/_buttons.css +1 -0
  104. package/src/Atom/Icon/README.md +1 -1
  105. package/src/Atom/Icon/_icon.css +1 -0
  106. package/src/Atom/Icon/images/thumb.svg +1 -0
  107. package/src/Atom/Media/__snapshots__/Media.stories.ts.snap +4 -9
  108. package/src/Atom/Media/media.twig +4 -5
  109. package/src/Component/BackToTop/BackToTop.stories.ts +127 -0
  110. package/src/Component/BackToTop/BackToTop.stories.tsx +53 -0
  111. package/src/Component/BackToTop/BackToTop.tsx +120 -0
  112. package/src/Component/BackToTop/Elements/BackToTop.ts +119 -0
  113. package/src/Component/BackToTop/README.md +164 -0
  114. package/src/Component/BackToTop/__snapshots__/BackToTop.stories.ts.snap +24 -0
  115. package/src/Component/BackToTop/__snapshots__/BackToTop.stories.tsx.snap +3 -0
  116. package/src/Component/BackToTop/back-to-top.css +70 -0
  117. package/src/Component/BackToTop/back-to-top.entry.js +1 -0
  118. package/src/Component/BackToTop/back-to-top.twig +26 -0
  119. package/src/Component/Card/Components/CardContent.tsx +1 -1
  120. package/src/Component/Card/Components/CardMedia.tsx +1 -1
  121. package/src/Component/Card/__snapshots__/Card.stories.tsx.snap +3 -3
  122. package/src/Component/Card/card.css +1 -1
  123. package/src/Component/Carousel/Carousel.stories.ts +66 -36
  124. package/src/Component/Carousel/__snapshots__/Carousel.stories.tsx.snap +5 -5
  125. package/src/Component/ContentBlock/Components/ContentBlockMedia.tsx +1 -1
  126. package/src/Component/ContentBlock/content-block.css +1 -1
  127. package/src/Component/DropMenu/DropMenu.stories.ts +21 -2
  128. package/src/Component/DropMenu/DropMenu.tsx +14 -4
  129. package/src/Component/DropMenu/__snapshots__/DropMenu.stories.ts.snap +3 -3
  130. package/src/Component/DropMenu/__snapshots__/DropMenu.stories.tsx.snap +2 -2
  131. package/src/Component/DropMenu/drop-menu.twig +7 -1
  132. package/src/Component/HeroBanner/__snapshots__/HeroBanner.stories.tsx.snap +1 -1
  133. package/src/Component/InPageNavigation/__snapshots__/InPageNavigation.stories.ts.snap +48 -13
  134. package/src/Component/InPageNavigation/in-page-navigation.twig +4 -6
  135. package/src/Component/ListItem/Components/ListItemMedia.tsx +1 -1
  136. package/src/Component/Pagination/Pagination.stories.ts +57 -27
  137. package/src/Component/Pagination/pagination.css +16 -7
  138. package/src/Component/Popover/__snapshots__/Popover.stories.tsx.snap +3 -3
  139. package/src/Component/Tabs/Components/TabDropMenu.tsx +7 -1
  140. package/src/Component/Tabs/Elements/Tabs.ts +13 -3
  141. package/src/Component/Tabs/Tabs.stories.ts +33 -12
  142. package/src/Component/Tabs/Tabs.stories.tsx +28 -14
  143. package/src/Component/Tabs/__snapshots__/Tabs.stories.ts.snap +3 -3
  144. package/src/Component/Tabs/__snapshots__/Tabs.stories.tsx.snap +2 -2
  145. package/src/Component/Translate/Elements/Translate.ts +76 -0
  146. package/src/Component/Translate/README.md +283 -0
  147. package/src/Component/Translate/Translate.stories.ts +87 -0
  148. package/src/Component/Translate/Translate.stories.tsx +77 -0
  149. package/src/Component/Translate/Translate.tsx +213 -0
  150. package/src/Component/Translate/__snapshots__/Translate.stories.ts.snap +18 -0
  151. package/src/Component/Translate/__snapshots__/Translate.stories.tsx.snap +3 -0
  152. package/src/Component/Translate/languages.ts +39 -0
  153. package/src/Component/Translate/translate.css +62 -0
  154. package/src/Component/Translate/translate.entry.js +1 -0
  155. package/src/Component/Translate/translate.twig +44 -0
  156. package/src/Form/Autocomplete/Autocomplete.stories.tsx +2 -1
  157. package/src/Form/FeedbackForm/Elements/FeedbackForm.ts +122 -0
  158. package/src/Form/FeedbackForm/FeedbackForm.stories.ts +99 -0
  159. package/src/Form/FeedbackForm/FeedbackForm.stories.tsx +73 -0
  160. package/src/Form/FeedbackForm/FeedbackForm.tsx +196 -0
  161. package/src/Form/FeedbackForm/README.md +233 -0
  162. package/src/Form/FeedbackForm/__snapshots__/FeedbackForm.stories.ts.snap +125 -0
  163. package/src/Form/FeedbackForm/__snapshots__/FeedbackForm.stories.tsx.snap +5 -0
  164. package/src/Form/FeedbackForm/feedback-form.css +74 -0
  165. package/src/Form/FeedbackForm/feedback-form.entry.js +1 -0
  166. package/src/Form/FeedbackForm/feedback-form.twig +80 -0
  167. package/src/Layout/Header/Components/GlobalToggle.tsx +1 -1
  168. package/src/Layout/Header/Header.stories.ts +53 -48
  169. package/src/Layout/Header/Header.stories.tsx +35 -22
  170. package/src/Layout/Header/Header.tsx +2 -2
  171. package/src/Layout/Header/__snapshots__/Header.stories.ts.snap +14 -10
  172. package/src/Layout/Header/__snapshots__/Header.stories.tsx.snap +2 -2
  173. package/src/Layout/Header/_toggles.css +7 -7
  174. package/src/Layout/Page/__snapshots__/Page.stories.tsx.snap +1 -1
  175. package/src/Utility/Elements/google-translate-widget.ts +293 -0
  176. package/src/Utility/global.d.ts +4 -0
  177. package/src/Utility/utilities.ts +2 -0
  178. package/src/elements.ts +3 -0
  179. package/src/enums.ts +2 -0
  180. package/src/react.ts +3 -0
  181. package/dist/build/chunks/Accordion-GN0sME4W.js +0 -1
  182. package/dist/build/chunks/AccordionGroup-Bzqp5__q.js +0 -1
  183. package/dist/build/chunks/AccordionMobile-DG5jSe8Q.js +0 -1
  184. package/dist/build/chunks/Autocomplete-B4RtkAyh.js +0 -1
  185. package/dist/build/chunks/ClosableAlert-DEhj8Nxm.js +0 -1
  186. package/dist/build/chunks/CookieConsent-BkCMRVST.js +0 -1
  187. package/dist/build/chunks/Dialog-Haahn-Yn.js +0 -1
  188. package/dist/build/chunks/DropMenu-1baQc8Yc.js +0 -1
  189. package/dist/build/chunks/Gallery-D8NGXy2Q.js +0 -1
  190. package/dist/build/chunks/GlobalToggle-B52fdBQu.js +0 -1
  191. package/dist/build/chunks/InPageNavigation-Dyn2TR-N.js +0 -1
  192. package/dist/build/chunks/Navigation-hOrfLq7h.js +0 -1
  193. package/dist/build/chunks/Popover-Cxg-s5Jn.js +0 -1
  194. package/dist/build/chunks/Sticky-BGCuuEJK.js +0 -1
  195. package/dist/build/chunks/Tabs-DYy1YTdU.js +0 -15
  196. package/dist/build/chunks/cookie-compliance-Bbm-0vpj.js +0 -1
  197. package/dist/build/chunks/enums-DLV_1NAf.js +0 -1
  198. package/dist/build/chunks/polyfills-C7pRt54M.js +0 -1
  199. package/dist/build/chunks/utilities-_Bq3TxAQ.js +0 -1
@@ -0,0 +1,160 @@
1
+ import { s as e, t } from "./utilities-Dd-08SW6.js";
2
+ import { t as n } from "./DropMenu-CSTZq0Zt.js";
3
+ import { PopoverPlacementModifier as r } from "@pnx-mixtape/ids-shape";
4
+ //#region src/Component/Tabs/Elements/Tabs.ts
5
+ var i = class extends HTMLElement {
6
+ internals_;
7
+ controller;
8
+ tabs;
9
+ mq;
10
+ locationHash;
11
+ tabFocus = 0;
12
+ tabListClasses;
13
+ dropTriggerClasses;
14
+ dropMenuId;
15
+ constructor() {
16
+ super(), this.internals_ = this.attachInternals(), this.controller = new AbortController(), this.mq = this.getAttribute("mq") || "(max-width: 720px)";
17
+ }
18
+ connectedCallback() {
19
+ if (!this.panels) return;
20
+ this.locationHash = window.location.hash, this.tabFocus = 0, this.tabs = /* @__PURE__ */ new Map(), this.panels.forEach((e) => {
21
+ let n = e.id, r = `<button type="button" role="tab" aria-controls="${n}" aria-selected="false">${e.getAttribute("aria-label")}</button>`, i = t(r);
22
+ this.tabList.appendChild(i);
23
+ let a = t(r);
24
+ this.dropMenuMenu.appendChild(a), n && e && a && this.tabs.set(n, {
25
+ panel: e,
26
+ tab: i,
27
+ button: a
28
+ });
29
+ });
30
+ let { signal: e } = this.controller;
31
+ this.handleBreakpoint(this.breakpoint), this.breakpoint.addEventListener("change", this.handleBreakpoint, { signal: e });
32
+ let n = this.locationHash ? this.querySelector(this.locationHash) : null;
33
+ n ? this.active = n.id : this.active ||= this.panels[0].id;
34
+ }
35
+ disconnectedCallback() {
36
+ this.controller.abort();
37
+ }
38
+ handleBreakpoint = ({ matches: e }) => {
39
+ let { signal: t } = this.controller;
40
+ this.dropMenuTrigger.toggleAttribute("hidden", !e), this.tabList.toggleAttribute("hidden", e), e ? (this.dropMenuMenu.addEventListener("drop-menu-select", this.handleDropMenuSelect, { signal: t }), this.tabList.removeEventListener("click", this.handleClick), this.tabList.removeEventListener("keydown", this.handleKeydown)) : (this.tabList.addEventListener("click", this.handleClick, { signal: t }), this.tabList.addEventListener("keydown", this.handleKeydown, { signal: t }), this.dropMenuMenu.removeEventListener("drop-menu-select", this.handleDropMenuSelect));
41
+ };
42
+ handleKeydown = (e) => {
43
+ let { key: t, target: n } = e, r = [...this.triggers], i = r.indexOf(n);
44
+ if (i === -1) return;
45
+ let a = 0;
46
+ switch (t) {
47
+ case "ArrowRight":
48
+ a = (i + 1) % r.length;
49
+ break;
50
+ case "ArrowLeft":
51
+ a = (i - 1 + r.length) % r.length;
52
+ break;
53
+ case "Home":
54
+ a = 0;
55
+ break;
56
+ case "End":
57
+ a = r.length - 1;
58
+ break;
59
+ default: return;
60
+ }
61
+ e.preventDefault(), e.stopPropagation(), r[a].focus();
62
+ };
63
+ handleClick = (e) => {
64
+ let t = e.target;
65
+ if (!(t instanceof HTMLButtonElement)) return;
66
+ e.preventDefault();
67
+ let n = t.getAttribute("aria-controls");
68
+ this.handleTabChange(n);
69
+ };
70
+ handleDropMenuSelect = (e) => {
71
+ let t = e.detail.target;
72
+ if (!(t instanceof HTMLButtonElement)) return;
73
+ let n = t.getAttribute("aria-controls");
74
+ this.handleTabChange(n);
75
+ };
76
+ handleTabChange = (e) => {
77
+ this.active = e, this.handleUrlParams(e);
78
+ let { panel: t, tab: n, button: r } = this.tabs.get(e);
79
+ t.focus({ preventScroll: !0 });
80
+ let i = new CustomEvent("tab-toggle", {
81
+ bubbles: !0,
82
+ cancelable: !0,
83
+ detail: {
84
+ id: e,
85
+ tab: n,
86
+ button: r,
87
+ panel: t
88
+ }
89
+ });
90
+ this.dispatchEvent(i);
91
+ };
92
+ get dropMenu() {
93
+ let i = this.querySelector("mx-dropmenu");
94
+ if (i) return i;
95
+ this.dropTriggerClasses = this.getAttribute("dropTriggerClasses") || "mx-button mx-icon mx-icon--chevron-down mx-icon--end", this.dropMenuId = this.id ? `${this.id}-drop-menu` : e("tab-drop-menu");
96
+ let a = `${this.dropMenuId}-target`, o = `${a}-description`, s = `${this.dropMenuId}-description`, c = new n();
97
+ c.setAttribute("closeOnClick", "true");
98
+ let l = t(`<button
99
+ id="${a}"
100
+ class="mx-popover__trigger ${this.dropTriggerClasses}"
101
+ popovertarget="${this.dropMenuId}"
102
+ style="anchor-name: --${this.dropMenuId}"
103
+ aria-describedby="${o}"
104
+ hidden
105
+ ></button>`), u = t(`<span id="${o}" class="sr-only" aria-hidden="true">Select a tab</span>`), d = t(`<span id="${s}" class="sr-only" aria-hidden="true">Selecting a tab updates the content below. Press escape to close.</span>`), f = t(`<div
106
+ class="mx-popover mx-drop-menu"
107
+ id="${this.dropMenuId}"
108
+ aria-labelledby="${a}"
109
+ aria-describedby="${s}"
110
+ style="position-anchor: --${this.dropMenuId}"
111
+ data-placement="${r.BOTTOM_START}"
112
+ popover
113
+ role="tablist"
114
+ ></div>`);
115
+ return c.append(l, u, d, f), this.prepend(c), c;
116
+ }
117
+ get dropMenuMenu() {
118
+ return this.dropMenu.querySelector("[popover][role=\"tablist\"]");
119
+ }
120
+ get dropMenuTrigger() {
121
+ return this.dropMenu.querySelector("[popovertarget]");
122
+ }
123
+ get tabList() {
124
+ this.tabListClasses = this.getAttribute("tabListClasses") || "mx-tabs__list";
125
+ let e = this.querySelector("[role=\"tablist\"]:not([popover])");
126
+ if (e) return e;
127
+ let n = t(`<div class="${this.tabListClasses}" role="tablist" hidden></div>`);
128
+ return this.prepend(n), n;
129
+ }
130
+ get triggers() {
131
+ let e = this.tabList.querySelectorAll("[role=\"tab\"]");
132
+ if (!e.length) throw Error(`${this.localName} must contain [role="tab"]`);
133
+ return e;
134
+ }
135
+ get panels() {
136
+ let e = this.querySelectorAll("[data-tab]");
137
+ if (!e.length) throw Error(`${this.localName} must contain [data-tab]`);
138
+ return e.forEach((e) => {
139
+ e.setAttribute("role", "tabpanel"), e.setAttribute("tabindex", "-1"), e.setAttribute("aria-label", e.getAttribute("data-tab"));
140
+ }), e;
141
+ }
142
+ get active() {
143
+ return this.querySelector("[aria-selected=\"true\"]");
144
+ }
145
+ get breakpoint() {
146
+ return window.matchMedia(this.mq);
147
+ }
148
+ set active(e) {
149
+ this.tabs.forEach(({ tab: t, button: n, panel: r }, i) => {
150
+ i === e ? (t.setAttribute("aria-selected", "true"), n.setAttribute("aria-selected", "true"), t.setAttribute("tabindex", "0"), r.removeAttribute("inert"), this.dropMenuTrigger.textContent = t.textContent) : (t.setAttribute("aria-selected", "false"), n.setAttribute("aria-selected", "false"), t.setAttribute("tabindex", "-1"), r.setAttribute("inert", ""));
151
+ });
152
+ }
153
+ handleUrlParams = (e) => {
154
+ let t = new URLSearchParams(window.location.search);
155
+ t.get("tab") !== e && (t.set("tab", e), window.history.replaceState({}, "", `${window.location.pathname}?${t.toString()}`));
156
+ };
157
+ };
158
+ customElements.get("mx-tabs") || customElements.define("mx-tabs", i);
159
+ //#endregion
160
+ export { i as t };
@@ -0,0 +1,46 @@
1
+ import { l as e } from "./utilities-Dd-08SW6.js";
2
+ import { t } from "./DropMenu-CSTZq0Zt.js";
3
+ //#region src/Component/Translate/Elements/Translate.ts
4
+ var n = class extends t {
5
+ widget;
6
+ async connectedCallback() {
7
+ if (await super.connectedCallback(), !this.container) return;
8
+ this.widget = new e(this, {
9
+ defaultLanguage: this.dataset.defaultLanguage || "en",
10
+ blockedPaths: (this.dataset.blockedPaths || "").split(",").map((e) => e.trim()).filter(Boolean),
11
+ scriptUrl: this.dataset.scriptUrl,
12
+ storageKey: this.dataset.storageKey,
13
+ updateTriggerLabel: this.dataset.updateTriggerLabel !== "false",
14
+ notice: this.dataset.noticeContent ? {
15
+ content: this.dataset.noticeContent,
16
+ blockedContent: this.dataset.noticeBlockedContent,
17
+ anchorSelector: this.dataset.noticeAnchor,
18
+ position: this.dataset.noticePosition
19
+ } : void 0,
20
+ onLanguageChange: (e) => this.dispatchLifecycleEvent("translate-language-change", e)
21
+ }), this.widget.init();
22
+ let { signal: t } = this.controller;
23
+ this.container.addEventListener("drop-menu-select", this.handleLanguageSelect, { signal: t }), this.container.addEventListener("toggle", (e) => {
24
+ let { newState: t } = e;
25
+ this.dispatchLifecycleEvent(t === "open" ? "translate-open" : "translate-close");
26
+ }, { signal: t });
27
+ }
28
+ disconnectedCallback() {
29
+ super.disconnectedCallback(), this.widget?.destroy();
30
+ }
31
+ handleLanguageSelect = (e) => {
32
+ let { target: t } = e.detail;
33
+ if (!(t instanceof HTMLAnchorElement)) return;
34
+ let n = t.dataset.language;
35
+ n && this.widget?.setLanguage(n);
36
+ };
37
+ dispatchLifecycleEvent(e, t) {
38
+ this.dispatchEvent(new CustomEvent(e, {
39
+ bubbles: !0,
40
+ detail: t ? { code: t } : {}
41
+ }));
42
+ }
43
+ };
44
+ customElements.get("mx-translate") || customElements.define("mx-translate", n);
45
+ //#endregion
46
+ export { n as t };
@@ -0,0 +1,119 @@
1
+ import e from "js-cookie";
2
+ //#region src/Utility/Elements/validators.ts
3
+ var t = {
4
+ url: (e, t = ["http:", "https:"]) => {
5
+ try {
6
+ let n = new URL(e);
7
+ return t.includes(n.protocol);
8
+ } catch {
9
+ return !1;
10
+ }
11
+ },
12
+ email: (e) => typeof e == "string" && /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e),
13
+ number: (e, t, n) => {
14
+ let r = Number(e);
15
+ return !(isNaN(r) || t !== void 0 && r < t || n !== void 0 && r > n);
16
+ },
17
+ integer: (e, t, n) => {
18
+ let r = Number(e);
19
+ return !(isNaN(r) || !Number.isInteger(r) || t !== void 0 && r < t || n !== void 0 && r > n);
20
+ },
21
+ string: (e, t, n) => !(typeof e != "string" || t !== void 0 && e.length < t || n !== void 0 && e.length > n),
22
+ notEmpty: (e) => typeof e == "string" && e.trim().length > 0,
23
+ pattern: (e, t) => typeof e == "string" && (t.lastIndex = 0, t.test(e)),
24
+ oneOf: (e, t) => t.includes(e),
25
+ array: (e, t, n) => !(!Array.isArray(e) || t !== void 0 && e.length < t || n !== void 0 && e.length > n),
26
+ json: (e) => {
27
+ if (typeof e != "string") return !1;
28
+ try {
29
+ return JSON.parse(e), !0;
30
+ } catch {
31
+ return !1;
32
+ }
33
+ },
34
+ date: (e, t, n) => {
35
+ let r = e instanceof Date ? e : new Date(e);
36
+ return !(isNaN(r.getTime()) || t && r < t || n && r > n);
37
+ },
38
+ hexColor: (e) => typeof e == "string" && /^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/.test(e)
39
+ }, n = class n {
40
+ banner;
41
+ acceptBtn;
42
+ moreBtn;
43
+ rejectBtn;
44
+ controller;
45
+ bots;
46
+ cookieName;
47
+ waitRemove;
48
+ trackingCookiesNames;
49
+ hostname;
50
+ timeout;
51
+ defaultCookieSettings;
52
+ constructor(e) {
53
+ this.banner = e, this.acceptBtn = e.querySelector("[data-cookie-accept]"), this.moreBtn = e.querySelector("[data-cookie-more]"), this.rejectBtn = e.querySelector("[data-cookie-reject]"), this.controller = new AbortController(), this.bots = /bot|crawler|spider|crawling/i, this.cookieName = "has-cookie-consent";
54
+ let n = this.banner.dataset.waitRemove;
55
+ this.waitRemove = n && t.integer(n, 0) ? parseInt(n, 10) : 0, this.trackingCookiesNames = [
56
+ "__utma",
57
+ "__utmb",
58
+ "__utmc",
59
+ "__utmt",
60
+ "__utmv",
61
+ "__utmz",
62
+ "_ga",
63
+ "_gat",
64
+ "_gid"
65
+ ];
66
+ }
67
+ init = () => {
68
+ this.hostname = document.location.hostname.replace(/^www\./, ""), this.defaultCookieSettings = {
69
+ path: "/",
70
+ expires: 365,
71
+ sameSite: "Lax"
72
+ };
73
+ let e = this.bots.test(navigator.userAgent), t = navigator.doNotTrack || navigator.msDoNotTrack || window.doNotTrack;
74
+ e || !(t == null || t && t !== "yes" && t !== 1 && t !== "1") || this.hasConsent() === !1 ? this.removeBanner(0) : this.hasConsent() !== !0 && this.showBanner();
75
+ };
76
+ showBanner = () => {
77
+ let { signal: e } = this.controller;
78
+ this.banner.removeAttribute("inert"), this.moreBtn && this.moreBtn.addEventListener("click", () => this.deleteCookie(), { signal: e }), this.acceptBtn && this.acceptBtn.addEventListener("click", this.accept, { signal: e }), this.rejectBtn && this.rejectBtn.addEventListener("click", this.reject, { signal: e }), window.CookieCompliance = this;
79
+ };
80
+ reject = () => {
81
+ this.removeBanner(this.waitRemove), this.setCookie("false"), this.trackingCookiesNames.forEach((e) => this.deleteCookie(e));
82
+ };
83
+ accept = () => {
84
+ this.removeBanner(this.waitRemove), this.setCookie("true");
85
+ };
86
+ hasConsent = () => {
87
+ let t = e.get(this.cookieName);
88
+ return t === "true" || t !== "false" && null;
89
+ };
90
+ setCookie = (t) => {
91
+ e.set(this.cookieName, t, this.defaultCookieSettings), e.set(this.cookieName, t, {
92
+ domain: `.${this.hostname}`,
93
+ ...this.defaultCookieSettings
94
+ });
95
+ };
96
+ deleteCookie = (t = this.cookieName) => {
97
+ e.remove(t, this.defaultCookieSettings), e.remove(t, {
98
+ domain: `.${this.hostname}`,
99
+ ...this.defaultCookieSettings
100
+ });
101
+ };
102
+ removeBanner = (e) => {
103
+ this.timeout = setTimeout(() => {
104
+ this.banner && this.banner.parentNode && (this.banner.parentNode.removeChild(this.banner), this.destroy());
105
+ }, e);
106
+ };
107
+ destroy() {
108
+ clearTimeout(this.timeout), this.controller.abort(), this.controller = new AbortController(), window.CookieCompliance === this && (window.CookieCompliance = void 0);
109
+ }
110
+ static create({ context: e = null } = {}) {
111
+ let [t] = window.once("cookie-compliance", "#cookie-compliance", e || document);
112
+ if (t) {
113
+ let e = new n(t);
114
+ e.init(), window.CookieCompliance = e;
115
+ }
116
+ }
117
+ };
118
+ //#endregion
119
+ export { t as n, n as t };
@@ -0,0 +1,36 @@
1
+ //#region src/enums.ts
2
+ var e = [], t = 400, n = /* @__PURE__ */ function(e) {
3
+ return e.LEFT = "left", e.RIGHT = "right", e;
4
+ }({}), r = /* @__PURE__ */ function(e) {
5
+ return e.DIV = "div", e.LI = "li", e.ARTICLE = "article", e.ASIDE = "aside", e.SECTION = "section", e;
6
+ }({}), i = /* @__PURE__ */ function(e) {
7
+ return e.P = "p", e.DIV = "div", e.STRONG = "strong", e.ITALIC = "em", e;
8
+ }({}), a = /* @__PURE__ */ function(e) {
9
+ return e.HEADLINE = "mx-headline", e.EYEBROW = "mx-text--eyebrow", e.EMBELLISHED = "mx-text--embellished", e.RESET = "mx-spacing--reset", e.RESETTOP = "mx-spacing--top-reset", e.RESETBOTTOM = "mx-spacing--bottom-reset", e;
10
+ }({}), o = /* @__PURE__ */ function(e) {
11
+ return e.SECTION = "mx-text--eyebrow", e.EMBELLISHED = "mx-text--embellished", e.XXXL = "mx-text--xxxl", e.XXL = "mx-text--xxl", e.XL = "mx-text--xl", e.L = "mx-text--l", e.M = "mx-text--m", e.S = "mx-text--s", e.XS = "mx-text--xs", e.LEDE = "mx-text--lede", e.META = "mx-text--meta", e.PRIMARY = "mx-text--primary", e.ACCENT = "mx-text--accent", e.ALT = "mx-text--alt", e;
12
+ }({}), s = /* @__PURE__ */ function(e) {
13
+ return e.NOTES = "mx-list--notes", e.REFS = "mx-list--refs", e.STATS = "mx-list--stats", e.COLUMNS = "mx-list--columns", e.SUMMARY = "mx-list--summary", e;
14
+ }({}), c = /* @__PURE__ */ function(e) {
15
+ return e.ARROW_DOWN = "arrow-down", e.ARROW_LEFT = "arrow-left", e.ARROW_UP = "arrow-up", e.ARROW_RIGHT = "arrow-right", e.CHEVRON_DOWN = "chevron-down", e.CHEVRON_LEFT = "chevron-left", e.CHEVRON_RIGHT = "chevron-right", e.CHEVRON_UP = "chevron-up", e.BLUESKY = "bluesky", e.CLOSE = "close", e.COLLAPSE = "collapse", e.DOWNLOAD = "download", e.DRUPAL = "drupal", e.ERROR = "error", e.EXPAND = "expand", e.EXTERNAL = "external-link", e.FACEBOOK = "facebook", e.GOOGLE = "google", e.INFO = "info", e.FILE = "file", e.INSTAGRAM = "instagram", e.LINKEDIN = "linkedin", e.MASTODON = "mastodon", e.MENU = "menu", e.SEARCH = "search", e.SUCCESS = "success", e.TWITTER = "twitter", e.WARNING = "warning", e.YOUTUBE = "youtube", e.EMAIL = "email", e.HEART = "heart-selected", e.EMPTY_HEART = "heart-unselected", e.LINK = "link", e.LOCK = "lock", e.LOGIN = "login", e.MORE = "more", e.EDIT = "pencil", e.PHONE = "phone", e.PIN = "pin", e.PRINT = "print", e.RESTART = "restart", e.STAR = "star-selected", e.EMPTY_STAR = "star-unselected", e.TICK = "tick", e.TRASH = "trash", e.USER = "user", e.SHARE = "share", e.QUESTION = "question", e.THUMB = "thumb", e.GLOBE = "globe", e;
16
+ }({}), l = /* @__PURE__ */ function(e) {
17
+ return e.NARROW = "narrow", e.FEATURE = "feature", e.FULL = "full", e;
18
+ }({}), u = /* @__PURE__ */ function(e) {
19
+ return e.FLOW = "flow", e.GROUP = "group", e;
20
+ }({}), d = /* @__PURE__ */ function(e) {
21
+ return e.DEFAULT = "", e.REVERSE = "sidebar-rev", e.REVERSE_L = "sidebar-rev-lg", e;
22
+ }({}), f = /* @__PURE__ */ function(e) {
23
+ return e.PRIMARY = "primary", e.ACCENT = "accent", e.ALT = "alt", e.REVERSE = "reverse", e.RESET = "reset", e.BOX = "box", e.IMAGE = "image", e;
24
+ }({}), p = /* @__PURE__ */ function(e) {
25
+ return e.FLUSH = "flush", e.STRIPED = "striped", e.SMALL = "small", e.BORDERED = "bordered", e;
26
+ }({}), m = /* @__PURE__ */ function(e) {
27
+ return e.DEFAULT = "default", e.VALID = "valid", e.INVALID = "invalid", e;
28
+ }({}), h = /* @__PURE__ */ function(e) {
29
+ return e.INFO = "info", e.SUCCESS = "success", e.WARNING = "warning", e.ERROR = "error", e.FEATURED = "featured", e;
30
+ }({}), g = /* @__PURE__ */ function(e) {
31
+ return e.DEFAULT = "default", e.CENTERED = "centered", e.LINED = "lined", e;
32
+ }({}), _ = /* @__PURE__ */ function(e) {
33
+ return e.TWITTER = "twitter", e.FACEBOOK = "facebook", e.LINKEDIN = "linkedin", e;
34
+ }({});
35
+ //#endregion
36
+ export { o as _, e as a, c, u as d, d as f, h as g, p as h, t as i, s as l, g as m, r as n, m as o, _ as p, f as r, a as s, n as t, l as u, i as v };
@@ -0,0 +1,33 @@
1
+ //#region src/Component/Popover/polyfills.js
2
+ var e, t = class {
3
+ constructor(e) {
4
+ this.popover = e, this.trigger = document.querySelector(`[popovertarget="${e.getAttribute("id")}"]`), this.init();
5
+ }
6
+ init = async () => {
7
+ this.trigger && this.popover && (this.supportsPopover() || await this.ensurePopoverPolyfill(), this.supportsAnchor() || (this.controller = new AbortController(), this.popover.addEventListener("toggle", this.positionPopover, { signal: this.controller.signal })));
8
+ };
9
+ supportsAnchor = () => "anchorName" in document.documentElement.style;
10
+ supportsPopover = () => "popover" in HTMLElement.prototype;
11
+ ensurePopoverPolyfill = () => (e ||= import("@oddbird/popover-polyfill"), e);
12
+ positionPopover = async ({ newState: e }) => {
13
+ if (e === "open") {
14
+ let { computePosition: e, flip: t, shift: n } = await import("@floating-ui/dom");
15
+ requestAnimationFrame(() => {
16
+ e(this.trigger, this.popover, {
17
+ placement: this.placement || "top",
18
+ middleware: [t({ padding: 10 }), n({ padding: 10 })]
19
+ }).then(({ x: e, y: t }) => {
20
+ this.popover.style.insetInlineStart = `${e}px`, this.popover.style.insetBlockStart = `${t}px`;
21
+ });
22
+ });
23
+ }
24
+ };
25
+ destroy() {
26
+ this.controller.abort();
27
+ }
28
+ get placement() {
29
+ return this.popover.getAttribute("data-placement");
30
+ }
31
+ };
32
+ //#endregion
33
+ export { t as default };
@@ -0,0 +1,255 @@
1
+ import { n as e } from "./cookie-compliance-CG6x-TcV.js";
2
+ //#region src/Utility/Elements/disclosure-widget.ts
3
+ var t = class {
4
+ options;
5
+ context;
6
+ trigger;
7
+ element;
8
+ id;
9
+ isOpen;
10
+ attached;
11
+ constructor(e, t, n, r = document) {
12
+ if (!e) throw Error("toggle is required.");
13
+ if (!t) throw Error("element is required.");
14
+ let i = {
15
+ attribute: "inert",
16
+ shouldPreventDefault: !0,
17
+ setInitialAttribute: !0,
18
+ clickEvent: "click"
19
+ };
20
+ this.options = {
21
+ ...i,
22
+ ...n
23
+ }, this.context = r || document, this.trigger = e, this.element = t, this.id = this.element.id || this.generatedId();
24
+ }
25
+ init = () => {
26
+ if (Object.prototype.hasOwnProperty.call(this.trigger, "disclosureWidget")) return;
27
+ let { attribute: e, setInitialAttribute: t } = this.options;
28
+ this.trigger.disclosureWidget = this, t && this.element.setAttribute(e, ""), this.attach();
29
+ };
30
+ handleToggle = () => {
31
+ let { attribute: e, setInitialAttribute: t } = this.options;
32
+ this.element.toggleAttribute(e);
33
+ let n = this.element.hasAttribute(e);
34
+ this.isOpen = t ? !n : n, this.trigger.setAttribute("aria-expanded", String(this.isOpen));
35
+ let r = new CustomEvent("disclosure-toggle", {
36
+ bubbles: !0,
37
+ cancelable: !0,
38
+ detail: {
39
+ isOpen: this.isOpen,
40
+ id: this.id,
41
+ options: this.options,
42
+ target: this.element
43
+ }
44
+ });
45
+ this.trigger.dispatchEvent(r);
46
+ };
47
+ handleMouse = (e) => {
48
+ let { currentTarget: t, type: n, relatedTarget: r } = e;
49
+ if (n === "mouseover" || n === "mouseout") {
50
+ let e = this.trigger.parentNode;
51
+ if (e !== t || e.contains(r)) return;
52
+ } else if (this.trigger !== t) return;
53
+ let { shouldPreventDefault: i } = this.options;
54
+ this.handleToggle(), i && (e.preventDefault(), e.stopPropagation());
55
+ };
56
+ handleKeyboard = (e) => {
57
+ let { key: t, target: n } = e;
58
+ if (this.trigger !== n) return;
59
+ let { isOpen: r } = this, { shouldPreventDefault: i } = this.options;
60
+ switch (t) {
61
+ case "ArrowDown":
62
+ case "Enter":
63
+ r || this.handleToggle(), i && (e.preventDefault(), e.stopPropagation());
64
+ break;
65
+ case "ArrowUp":
66
+ case "Escape": r && this.handleToggle(), i && (e.preventDefault(), e.stopPropagation());
67
+ }
68
+ };
69
+ attach = () => {
70
+ if (this.attached) return;
71
+ let { clickEvent: e } = this.options;
72
+ if (e === "mouseover") {
73
+ let e = this.trigger.parentNode;
74
+ e.addEventListener("mouseover", this.handleMouse), e.addEventListener("mouseout", this.handleMouse);
75
+ } else this.trigger.addEventListener("click", this.handleMouse);
76
+ this.trigger.addEventListener("keydown", this.handleKeyboard), this.trigger.setAttribute("aria-expanded", "false"), this.trigger.hasAttribute("aria-controls") || this.trigger.setAttribute("aria-controls", this.id), this.attached = !0;
77
+ };
78
+ detach = () => {
79
+ if (!this.attached) return;
80
+ this.isOpen && this.handleToggle();
81
+ let { clickEvent: e } = this.options;
82
+ if (e === "mouseover") {
83
+ let e = this.trigger.parentNode;
84
+ e.removeEventListener("mouseover", this.handleMouse), e.removeEventListener("mouseout", this.handleMouse);
85
+ } else this.trigger.removeEventListener("click", this.handleMouse);
86
+ this.trigger.removeEventListener("keydown", this.handleKeyboard), this.trigger.removeAttribute("aria-expanded"), this.attached = !1;
87
+ };
88
+ generatedId = () => {
89
+ let e = this.trigger?.textContent?.trim();
90
+ return e ? o(e) : "";
91
+ };
92
+ }, n = "https://translate.google.com/translate_a/element.js?cb=translateInit", r = "googtrans", i = "mx-translate-google-element", a = class {
93
+ root;
94
+ config;
95
+ controller;
96
+ pendingCode;
97
+ noticeEl;
98
+ blockedNoticeEl;
99
+ constructor(e, t) {
100
+ this.root = e, this.config = {
101
+ defaultLanguage: t.defaultLanguage,
102
+ blockedPaths: t.blockedPaths ?? [],
103
+ scriptUrl: t.scriptUrl ?? n,
104
+ storageKey: t.storageKey ?? r,
105
+ updateTriggerLabel: t.updateTriggerLabel ?? !0,
106
+ notice: t.notice,
107
+ onOpen: t.onOpen,
108
+ onClose: t.onClose,
109
+ onLanguageChange: t.onLanguageChange
110
+ };
111
+ }
112
+ init() {
113
+ this.controller = new AbortController(), window.addEventListener("pageshow", this.handlePageshow, { signal: this.controller.signal });
114
+ let e = this.getStoredLanguage();
115
+ e && e !== this.config.defaultLanguage && (this.updateActiveItem(e), this.config.updateTriggerLabel && this.updateTriggerLabel(e), this.updateNotice(e), this.isPathBlocked() || (this.pendingCode = e, this.loadScript().then(() => this.driveSelect(e)).catch(() => {})));
116
+ }
117
+ destroy() {
118
+ this.controller?.abort(), this.noticeEl?.remove(), this.blockedNoticeEl?.remove();
119
+ }
120
+ setLanguage(e) {
121
+ this.updateActiveItem(e), this.config.updateTriggerLabel && this.updateTriggerLabel(e), this.updateNotice(e), !this.isPathBlocked() && (this.persist(e), this.pendingCode = e, this.loadScript().then(() => this.driveSelect(e)).catch(() => {}), this.config.onLanguageChange?.(e));
122
+ }
123
+ getCurrentLanguage() {
124
+ return this.getStoredLanguage() ?? this.config.defaultLanguage;
125
+ }
126
+ isPathBlocked(e = window.location.pathname) {
127
+ return this.config.blockedPaths.some((t) => e.startsWith(t));
128
+ }
129
+ getStoredLanguage() {
130
+ try {
131
+ return window.localStorage.getItem(this.config.storageKey)?.split("/")[2] || null;
132
+ } catch {
133
+ return null;
134
+ }
135
+ }
136
+ persist(e) {
137
+ try {
138
+ window.localStorage.setItem(this.config.storageKey, `/${this.config.defaultLanguage}/${e}`);
139
+ } catch {}
140
+ }
141
+ getLanguageItem(e) {
142
+ return this.root.querySelector(`[data-language="${e}"]`);
143
+ }
144
+ updateActiveItem(e) {
145
+ this.root.querySelectorAll("[data-language]").forEach((t) => {
146
+ t.dataset.language === e ? t.setAttribute("aria-current", "true") : t.removeAttribute("aria-current");
147
+ });
148
+ }
149
+ updateTriggerLabel(e) {
150
+ let t = this.root.querySelector("[popovertarget]");
151
+ if (!t) return;
152
+ let n = t.dataset.label || "Language", r = this.getLanguageItem(e)?.textContent?.trim() ?? e;
153
+ t.setAttribute("aria-label", `${n}: ${r}`);
154
+ let i = t.querySelector(".mx-translate__code");
155
+ i && (i.textContent = e.toUpperCase());
156
+ }
157
+ createNotice() {
158
+ if (!this.config.notice || this.noticeEl) return;
159
+ let { anchorSelector: e, position: t, content: n, blockedContent: r } = this.config.notice, i = e ? document.querySelector(e) : document.body;
160
+ if (!i) return;
161
+ let a = t ?? (e ? "afterend" : "afterbegin");
162
+ this.noticeEl = l(`<div class="mx-global-alert mx-global-alert--light mx-page mx-translate__notice" role="status" aria-live="polite" aria-atomic="true" data-translate-notice hidden><div class="mx-global-alert__inner"><div class="mx-global-alert__content">${n}</div></div></div>`), this.noticeEl && i.insertAdjacentElement(a, this.noticeEl), r && (this.blockedNoticeEl = l(`<div class="mx-global-alert mx-global-alert--critical mx-page mx-translate__notice" role="alert" aria-live="assertive" aria-atomic="true" data-translate-notice-blocked hidden><div class="mx-global-alert__inner"><div class="mx-global-alert__content">${r}</div></div></div>`), this.blockedNoticeEl && i.insertAdjacentElement(a, this.blockedNoticeEl));
163
+ }
164
+ updateNotice(e) {
165
+ if (!this.config.notice) return;
166
+ this.createNotice();
167
+ let t = e !== this.config.defaultLanguage, n = this.isPathBlocked();
168
+ this.noticeEl?.toggleAttribute("hidden", !(t && !n)), this.blockedNoticeEl?.toggleAttribute("hidden", !(t && n));
169
+ }
170
+ loadScript() {
171
+ return window.mxTranslateScriptPromise || (window.mxTranslateScriptPromise = new Promise((e, t) => {
172
+ window.translateInit = () => {
173
+ new window.google.translate.TranslateElement({
174
+ pageLanguage: this.config.defaultLanguage,
175
+ autoDisplay: !1
176
+ }, this.getMountPoint()), e();
177
+ };
178
+ let n = document.createElement("script");
179
+ n.src = this.config.scriptUrl, n.addEventListener("error", () => t(/* @__PURE__ */ Error("Failed to load Google Translate"))), document.body.appendChild(n);
180
+ })), window.mxTranslateScriptPromise;
181
+ }
182
+ getMountPoint() {
183
+ let e = document.getElementById(i);
184
+ return e || (e = document.createElement("div"), e.id = i, e.style.display = "none", document.body.appendChild(e)), i;
185
+ }
186
+ waitForComboBoxOption(e, t = 20) {
187
+ return new Promise((n) => {
188
+ let r = (t) => {
189
+ let i = document.querySelector(".goog-te-combo");
190
+ i?.querySelector(`option[value="${e}"]`) ? n(i) : t <= 0 ? n(null) : setTimeout(() => r(t - 1), 100);
191
+ };
192
+ r(t);
193
+ });
194
+ }
195
+ async driveSelect(e) {
196
+ let t = await this.waitForComboBoxOption(e);
197
+ this.pendingCode === e && t && (t.value = e, t.dispatchEvent(new Event("change")));
198
+ }
199
+ handlePageshow = (e) => {
200
+ if (!e.persisted) return;
201
+ window.mxTranslateScriptPromise = void 0;
202
+ let t = this.getStoredLanguage();
203
+ t && t !== this.config.defaultLanguage && !this.isPathBlocked() && (this.pendingCode = t, this.loadScript().then(() => this.driveSelect(t)).catch(() => {}));
204
+ };
205
+ }, o = (t, n = 20) => {
206
+ if (!e.notEmpty(t)) return "";
207
+ let r = t.toLowerCase().trim().replace(/\s+/g, "-").replace(/[^-a-z0-9]/g, "").replace(/[\n\r]+|[\s]{2,}/g, "");
208
+ return [...[
209
+ ,
210
+ ,
211
+ ,
212
+ ,
213
+ ,
214
+ ,
215
+ ].keys()].forEach(() => {
216
+ r.charAt(0).match(/[a-z]/g) || (r = r.substring(1));
217
+ }), e.integer(n, 1) && (r = r.substring(0, n)), r;
218
+ }, s = (t) => e.notEmpty(t) ? t.trim().replace(/(?:^\w|[A-Z]|\b\w|\s+)/g, (e, t) => +e == 0 ? "" : t === 0 ? e.toLowerCase() : e.toUpperCase()).replace(/[^\w\s]/gi, "") : "", c = (e, t) => {
219
+ if (typeof e != "string" || !e || !Array.isArray(t)) return !1;
220
+ try {
221
+ let { hostname: n } = new URL(e);
222
+ return window.location.hostname === n || t.includes(n);
223
+ } catch {
224
+ return !1;
225
+ }
226
+ }, l = (e) => {
227
+ try {
228
+ return new DOMParser().parseFromString(e, "text/html").body.firstElementChild;
229
+ } catch {
230
+ return null;
231
+ }
232
+ }, u = (e, t = !1, n = !1) => {
233
+ let r = new ResizeObserver((i) => {
234
+ i.forEach(({ contentBoxSize: i, borderBoxSize: a }) => {
235
+ let [{ inlineSize: o, blockSize: s }] = n ? i : a;
236
+ e.style.setProperty("--inline-size", `${o.toFixed(1)}px`), e.style.setProperty("--block-size", `${s.toFixed(1)}px`), t && r.unobserve(e);
237
+ });
238
+ });
239
+ r.observe(e);
240
+ }, d = (e, t, n, r = []) => {
241
+ let { target: i, clientY: a, clientX: o } = e, s = i instanceof HTMLOptionElement || i instanceof HTMLSelectElement;
242
+ if ((r?.filter((e) => e === i || e.contains(i))).length || s) return;
243
+ let c = new IntersectionObserver(([{ boundingClientRect: e }]) => {
244
+ let { top: t, height: r, width: i, left: s } = e;
245
+ t <= a && a <= t + r && s <= o && o <= s + i || n(), c.disconnect();
246
+ });
247
+ c.observe(t);
248
+ }, f = (e, t) => {
249
+ let { key: n } = e;
250
+ n === "Escape" && t();
251
+ }, p = (e, t) => {
252
+ Object.hasOwn(window, "Drupal") && Object.hasOwn(Drupal, "behaviors") ? Drupal.behaviors[t] = { attach: e } : window.addEventListener("DOMContentLoaded", e.bind(document, document));
253
+ };
254
+ //#endregion
255
+ export { c as a, s as c, d as i, a as l, u as n, p as o, f as r, o as s, l as t, t as u };
@@ -1 +1 @@
1
- @layer popover-polyfill,design-system.defaults,design-system.atoms,design-system.layout,design-system.utilities;@layer design-system.components{.mx-content-block{gap:var(--content-block-gap,var(--gap));display:grid;& .mx-link-list{inline-size:100%}}.mx-content-block__media{inline-size:100%;margin:auto;display:grid;position:relative;& img{aspect-ratio:var(--ratio);border-radius:var(--border-radius);object-fit:cover;display:block}& .mx-skeleton--bg{aspect-ratio:var(--ratio)}}}
1
+ @layer popover-polyfill,design-system.defaults,design-system.atoms,design-system.layout,design-system.utilities;@layer design-system.components{.mx-content-block{gap:var(--content-block-gap,var(--gap));display:grid;& .mx-link-list{inline-size:100%}}.mx-content-block__media{inline-size:100%;margin:auto;display:grid;position:relative;& img{aspect-ratio:var(--ratio);border-radius:var(--border-radius);object-fit:cover;display:block}& .skeleton--bg{aspect-ratio:var(--ratio)}}}
@@ -1 +1 @@
1
- import"./chunks/CookieConsent-BkCMRVST.js";
1
+ import "./chunks/CookieConsent-wd8gQ2Oe.js";
@@ -1 +1 @@
1
- import"./chunks/Dialog-Haahn-Yn.js";
1
+ import "./chunks/Dialog-DWoXW-7Z.js";
@@ -1 +1 @@
1
- import"./chunks/DropMenu-1baQc8Yc.js";
1
+ import "./chunks/DropMenu-CSTZq0Zt.js";