mp-design-system 2.0.43 → 2.0.44

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 (116) hide show
  1. package/dist/assets/img/aeris.jpg +0 -0
  2. package/dist/assets/img/article-1.jpg +0 -0
  3. package/dist/assets/img/article-2.jpg +0 -0
  4. package/dist/assets/img/blog-image-1.jpg +0 -0
  5. package/dist/assets/img/blog-page-image-1.jpg +0 -0
  6. package/dist/assets/img/blog-page-image-2.jpg +0 -0
  7. package/dist/assets/img/blog-page-image-3.jpg +0 -0
  8. package/dist/assets/img/blog-page-image-4.jpg +0 -0
  9. package/dist/assets/img/blog-page-image-5.jpg +0 -0
  10. package/dist/assets/img/blog-page-image-6.jpg +0 -0
  11. package/dist/assets/img/campaign.jpg +0 -0
  12. package/dist/assets/img/case-study-1.jpg +0 -0
  13. package/dist/assets/img/case-study-2.jpg +0 -0
  14. package/dist/assets/img/case-study-3.jpg +0 -0
  15. package/dist/assets/img/empyrean.jpg +0 -0
  16. package/dist/assets/img/epsilon.jpg +0 -0
  17. package/dist/assets/img/favicon-32x32.png +0 -0
  18. package/dist/assets/img/featured-blog-post.jpg +0 -0
  19. package/dist/assets/img/featured-event-1.jpg +0 -0
  20. package/dist/assets/img/featured-event-2.jpg +0 -0
  21. package/dist/assets/img/featured-event-3.jpg +0 -0
  22. package/dist/assets/img/flow-2.png +0 -0
  23. package/dist/assets/img/flow-diagram.png +0 -0
  24. package/dist/assets/img/flow.png +0 -0
  25. package/dist/assets/img/grid-captivate-1.jpg +0 -0
  26. package/dist/assets/img/hero-dark-desktop-image.png +0 -0
  27. package/dist/assets/img/hero-dark-mobile-image.png +0 -0
  28. package/dist/assets/img/hero-light-desktop-image.png +0 -0
  29. package/dist/assets/img/hero-light-mobile-image.png +0 -0
  30. package/dist/assets/img/homepage_1_back.webp +0 -0
  31. package/dist/assets/img/homepage_1_back_alt.webp +0 -0
  32. package/dist/assets/img/homepage_1_front_full.webp +0 -0
  33. package/dist/assets/img/homepage_2_back.webp +0 -0
  34. package/dist/assets/img/homepage_2_back_alt.webp +0 -0
  35. package/dist/assets/img/homepage_2_front_full.webp +0 -0
  36. package/dist/assets/img/itcss.svg +8 -0
  37. package/dist/assets/img/leneo.jpg +0 -0
  38. package/dist/assets/img/mastersizer.jpg +0 -0
  39. package/dist/assets/img/microcal.jpg +0 -0
  40. package/dist/assets/img/morphologi.jpg +0 -0
  41. package/dist/assets/img/omnisec.jpg +0 -0
  42. package/dist/assets/img/open-graph-image.jpg +0 -0
  43. package/dist/assets/img/product-accessory-1.jpg +0 -0
  44. package/dist/assets/img/product-accessory-2.jpg +0 -0
  45. package/dist/assets/img/product-image.jpg +0 -0
  46. package/dist/assets/img/products-1.jpg +0 -0
  47. package/dist/assets/img/products-2.jpg +0 -0
  48. package/dist/assets/img/products-3.jpg +0 -0
  49. package/dist/assets/img/products-4.jpg +0 -0
  50. package/dist/assets/img/products-5.jpg +0 -0
  51. package/dist/assets/img/products-6.jpg +0 -0
  52. package/dist/assets/img/qualityspec.jpg +0 -0
  53. package/dist/assets/img/range-product-1.jpg +0 -0
  54. package/dist/assets/img/range-product-2.jpg +0 -0
  55. package/dist/assets/img/range.jpg +0 -0
  56. package/dist/assets/img/salt.png +0 -0
  57. package/dist/assets/img/sector-1.jpg +0 -0
  58. package/dist/assets/img/sector-2.jpg +0 -0
  59. package/dist/assets/img/sector-3.jpg +0 -0
  60. package/dist/assets/img/sector-4.jpg +0 -0
  61. package/dist/assets/img/sector-5.jpg +0 -0
  62. package/dist/assets/img/slide-1.jpg +0 -0
  63. package/dist/assets/img/slide-2.jpg +0 -0
  64. package/dist/assets/img/slide-3.jpg +0 -0
  65. package/dist/assets/img/slide-4.webp +0 -0
  66. package/dist/assets/img/slide-5.webp +0 -0
  67. package/dist/assets/img/slide-6.webp +0 -0
  68. package/dist/assets/img/slide-7.webp +0 -0
  69. package/dist/assets/img/zetasizer.jpg +0 -0
  70. package/dist/assets/js/app.js +813 -0
  71. package/dist/assets/js/app.js.map +7 -0
  72. package/dist/assets/js/mp-academy.js +813 -0
  73. package/dist/assets/js/mp-academy.js.map +7 -0
  74. package/dist/assets/js/mp-brand.js +813 -0
  75. package/dist/assets/js/mp-brand.js.map +7 -0
  76. package/dist/assets/js/mp-events.js +813 -0
  77. package/dist/assets/js/mp-events.js.map +7 -0
  78. package/dist/assets/js/mp-mystore.js +813 -0
  79. package/dist/assets/js/mp-mystore.js.map +7 -0
  80. package/dist/assets/js/mp-support.js +813 -0
  81. package/dist/assets/js/mp-support.js.map +7 -0
  82. package/dist/assets/js/mp-www.js +875 -0
  83. package/dist/assets/js/mp-www.js.map +7 -0
  84. package/dist/assets/js/mp-www2.js +813 -0
  85. package/dist/assets/js/mp-www2.js.map +7 -0
  86. package/dist/assets/svg/crop-diagram-1.svg +1 -0
  87. package/dist/assets/svg/crop-diagram-2.svg +1 -0
  88. package/dist/assets/svg/icon-globe-alt--white.svg +4 -0
  89. package/dist/assets/svg/icon-globe-alt.svg +4 -0
  90. package/dist/assets/svg/icon-live-webinars--white.svg +6 -0
  91. package/dist/assets/svg/icon-live-webinars.svg +6 -0
  92. package/dist/assets/svg/icon-recorded-webinars--white.svg +4 -0
  93. package/dist/assets/svg/icon-recorded-webinars.svg +4 -0
  94. package/dist/assets/svg/icon-user-training--white.svg +5 -0
  95. package/dist/assets/svg/icon-user-training.svg +5 -0
  96. package/dist/assets/svg/imaging-matrix.svg +56 -0
  97. package/dist/assets/svg/large-envelope.svg +1 -0
  98. package/dist/assets/svg/large-globe.svg +1 -0
  99. package/dist/assets/svg/large-student.svg +1 -0
  100. package/dist/assets/svg/logo-black.svg +1 -0
  101. package/dist/assets/svg/logo-color-white-text.svg +1 -0
  102. package/dist/assets/svg/logo-simple.svg +1 -0
  103. package/dist/assets/svg/logo-small.svg +1 -0
  104. package/dist/assets/svg/logo-spacing-horizontal.svg +1 -0
  105. package/dist/assets/svg/logo-spacing-vertical.svg +1 -0
  106. package/dist/assets/svg/logo-stacked.svg +1 -0
  107. package/dist/assets/svg/logo-white.svg +1 -0
  108. package/dist/assets/svg/logo-x.svg +1 -0
  109. package/dist/assets/svg/logo.svg +1 -0
  110. package/dist/assets/svg/placeholder.svg +1 -0
  111. package/dist/assets/svg/sprite.svg +50 -0
  112. package/dist/assets/svg/typography-spacing.svg +2345 -0
  113. package/dist/assets/video/revontium-hero-bg.mp4 +0 -0
  114. package/dist/assets/video/revontium-training.mp4 +0 -0
  115. package/dist/assets/video/revontium-video.mp4 +0 -0
  116. package/package.json +3 -2
@@ -0,0 +1,875 @@
1
+ (() => {
2
+ // src/assets/js/imports/accordion.js
3
+ function Accordion() {
4
+ const accordions = Array.from(document.querySelectorAll(".c-accordion__title"));
5
+ accordions.forEach(setupAccordions);
6
+ }
7
+ function setupAccordions(title) {
8
+ title.addEventListener("click", titleClick());
9
+ }
10
+ function titleClick() {
11
+ return (event) => {
12
+ var item = event.currentTarget.parentElement;
13
+ item.classList.toggle("c-accordion__item--open");
14
+ };
15
+ }
16
+ var accordion_default = Accordion;
17
+
18
+ // src/assets/js/imports/carousel.js
19
+ function Carousel() {
20
+ let current = 0;
21
+ const bgSlides = document.querySelectorAll(".c-hero__image-bg");
22
+ const fgSlides = document.querySelectorAll(".c-hero__image-fg");
23
+ if (fgSlides.length > 0) {
24
+ setInterval(() => {
25
+ for (var bgSlide of bgSlides) {
26
+ bgSlide.style.opacity = 0;
27
+ }
28
+ current = current != bgSlides.length - 1 ? current + 1 : 0;
29
+ bgSlides[current].style.opacity = 1;
30
+ for (var fgSlide of fgSlides) {
31
+ fgSlide.style.opacity = 0;
32
+ }
33
+ fgSlides[current].style.opacity = 1;
34
+ }, 5e3);
35
+ }
36
+ }
37
+ var carousel_default = Carousel;
38
+
39
+ // src/assets/js/imports/clear-form.js
40
+ function ClearForm() {
41
+ const formClear = document.getElementById("clearForm");
42
+ if (formClear) {
43
+ formClear.addEventListener("click", function() {
44
+ const fields = this.closest("form").elements;
45
+ fields.forEach((field) => {
46
+ if (field.value != "") {
47
+ if (field.type.toLowerCase() == "text" || field.type.toLowerCase() == "email" || field.type.toLowerCase() == "tel" || field.type.toLowerCase() == "select-one" || field.type.toLowerCase() == "textarea") {
48
+ field.value = "";
49
+ return;
50
+ } else if (field.type.toLowerCase() == "checkbox") {
51
+ field.checked = false;
52
+ return;
53
+ }
54
+ }
55
+ });
56
+ });
57
+ }
58
+ ;
59
+ }
60
+ var clear_form_default = ClearForm;
61
+
62
+ // src/assets/js/imports/comparison.js
63
+ function Comparison() {
64
+ document.querySelectorAll(".c-comparison-table").forEach(extractMobileComparison);
65
+ }
66
+ function extractMobileComparison(container) {
67
+ const parent = container.parentNode.parentNode;
68
+ const body = parent.querySelector(".c-comparison-table tbody");
69
+ const head = parent.querySelector(".c-comparison-table thead");
70
+ const mobile = parent.parentElement.querySelector(".c-comparison-table__mobile");
71
+ if (!body || !head || !mobile) return;
72
+ const productsInfo = Array.from(head.children[0].children).filter((x, i) => i).map((x) => ({ info: x.innerHTML }));
73
+ const productsButtons = Array.from(head.children[1].children).filter((x, i) => i).map((x) => ({ buttons: x.innerHTML }));
74
+ const products = productsInfo.map((info, index) => ({ ...info, ...productsButtons[index], table: [] }));
75
+ Array.from(body.children).forEach((row) => {
76
+ if (row.classList.contains("c-comparison-table__title")) {
77
+ products.forEach((x) => {
78
+ x.table.push({ type: "title", title: row.children[0].textContent });
79
+ });
80
+ } else {
81
+ const cells = Array.from(row.children);
82
+ const firstCell = cells.shift();
83
+ cells.forEach((el, index) => {
84
+ products[index].table.push({
85
+ type: "row",
86
+ key: firstCell.textContent,
87
+ value: el.innerHTML
88
+ });
89
+ });
90
+ }
91
+ });
92
+ products.forEach((product) => {
93
+ const el = createMobileProduct(product);
94
+ mobile.appendChild(el);
95
+ });
96
+ }
97
+ function createMobileProduct(product) {
98
+ const parent = document.createElement("article");
99
+ parent.innerHTML = `${product.info}${product.buttons}
100
+ <table class="c-comparison-table">
101
+ ${product.table.map((x) => {
102
+ if (x.type === "title") {
103
+ return `<tr class="c-comparison-table__title"><th><span>${x.title}</span></th><th></th></tr>`;
104
+ } else {
105
+ return `<tr>
106
+ <td>${x.key}</td>
107
+ <td>${x.value}</td>
108
+ </tr>`;
109
+ }
110
+ }).join("")}
111
+ </table>`;
112
+ return parent;
113
+ }
114
+ var comparison_default = Comparison;
115
+
116
+ // src/assets/js/imports/facet.js
117
+ function Facet() {
118
+ const facetAccordions = Array.from(document.querySelectorAll(".c-facet__toggle"));
119
+ facetAccordions.forEach(setupFacetAccordions);
120
+ }
121
+ function setupFacetAccordions(toggle) {
122
+ toggle.addEventListener("click", titleClick2());
123
+ }
124
+ function titleClick2() {
125
+ return (event) => {
126
+ event.preventDefault();
127
+ var toggle = event.currentTarget;
128
+ var facet = toggle.parentElement;
129
+ facet.classList.toggle("c-facet--open");
130
+ const expanded = facet.classList.contains("c-facet--open") ? "true" : "false";
131
+ toggle.setAttribute("aria-expanded", expanded);
132
+ };
133
+ }
134
+ var facet_default = Facet;
135
+
136
+ // src/assets/js/imports/gallery.js
137
+ function Gallery() {
138
+ const mainSlides = document.querySelectorAll(".c-gallery__main .c-gallery__slide");
139
+ const thumbnailSlides = document.querySelectorAll(".c-gallery__thumbnails .c-gallery__slide");
140
+ thumbnailSlides.forEach((thumbnailSlide) => thumbnailSlide.addEventListener("click", function(e) {
141
+ thumbnailSlides.forEach(function(thumbnail) {
142
+ if (thumbnail != e.target.parentNode) {
143
+ thumbnail.classList.remove("active");
144
+ }
145
+ });
146
+ e.target.parentNode.classList.add("active");
147
+ mainSlides.forEach(function(mainSlide) {
148
+ if (mainSlide.dataset.slide == thumbnailSlide.dataset.slide) {
149
+ mainSlide.classList.add("active");
150
+ } else {
151
+ mainSlide.classList.remove("active");
152
+ }
153
+ });
154
+ }));
155
+ mainSlides.forEach(function(mainSlide) {
156
+ if (!mainSlide.classList.contains("c-gallery__video")) {
157
+ mainSlide.addEventListener("click", lightboxTrigger);
158
+ }
159
+ });
160
+ function lightboxTrigger() {
161
+ const lightbox = document.querySelector(".c-gallery__main").cloneNode(true);
162
+ lightbox.classList.remove("c-gallery__main");
163
+ lightbox.classList.add("c-lightbox");
164
+ lightbox.querySelectorAll(".c-gallery__slide").forEach(function(slide) {
165
+ if (slide.classList.contains("c-gallery__video")) {
166
+ slide.remove();
167
+ }
168
+ if (!slide.classList.contains("c-gallery__video")) {
169
+ var slideImg = slide.querySelector("img");
170
+ if (slideImg.srcset != "") {
171
+ slideImg.removeAttribute("srcset");
172
+ }
173
+ var slideImgSrc = slideImg.getAttribute("src");
174
+ if (slideImgSrc) {
175
+ if (slideImgSrc.indexOf("?") !== -1) {
176
+ slideImg.setAttribute("src", slideImgSrc.split("?")[0] + "?quality=90&width=2176");
177
+ } else {
178
+ slideImg.setAttribute("src", slideImgSrc + "?quality=90&width=2176");
179
+ }
180
+ } else {
181
+ console.log(slideImg);
182
+ console.log("has no src defined...");
183
+ }
184
+ }
185
+ slide.classList.add("c-lightbox__slide");
186
+ slide.classList.remove("c-gallery__slide");
187
+ });
188
+ document.body.appendChild(lightbox);
189
+ lightbox.insertAdjacentHTML("beforeend", '<a class="c-lightbox__prev"></a><a class="c-lightbox__next"></a>');
190
+ lightbox.querySelector(".c-lightbox__prev").addEventListener("click", function() {
191
+ const lightboxActive = lightbox.querySelector(".active");
192
+ const prevImage = lightbox.querySelector('[data-slide="' + (parseInt(lightboxActive.dataset.slide) - 1) + '"]');
193
+ if (prevImage != null) {
194
+ lightboxActive.classList.remove("active");
195
+ prevImage.classList.add("active");
196
+ }
197
+ });
198
+ lightbox.querySelector(".c-lightbox__next").addEventListener("click", function() {
199
+ const lightboxActive = lightbox.querySelector(".active");
200
+ const nextImage = lightbox.querySelector('[data-slide="' + (parseInt(lightboxActive.dataset.slide) + 1) + '"]');
201
+ if (nextImage != null) {
202
+ lightboxActive.classList.remove("active");
203
+ nextImage.classList.add("active");
204
+ }
205
+ });
206
+ lightbox.addEventListener("click", function(e) {
207
+ if (e.target !== e.currentTarget) {
208
+ return;
209
+ } else {
210
+ lightbox.remove();
211
+ }
212
+ });
213
+ }
214
+ }
215
+ var gallery_default = Gallery;
216
+
217
+ // src/assets/js/imports/utilities.js
218
+ function shuffle(array) {
219
+ const arr = [...array];
220
+ for (let i = arr.length - 1; i > 0; i--) {
221
+ let j = Math.floor(Math.random() * (i + 1));
222
+ [arr[i], arr[j]] = [arr[j], arr[i]];
223
+ }
224
+ return arr;
225
+ }
226
+ function userPrefersReducedMotion() {
227
+ const QUERY = "(prefers-reduced-motion: no-preference)";
228
+ const mediaQueryList = window.matchMedia(QUERY);
229
+ const prefersReducedMotion = !mediaQueryList.matches;
230
+ return prefersReducedMotion;
231
+ }
232
+ var debounce = (func, limit) => {
233
+ let wait = false;
234
+ return () => {
235
+ if (wait) return;
236
+ func();
237
+ wait = true;
238
+ setTimeout(() => wait = false, limit);
239
+ };
240
+ };
241
+ var lerp = (x, y, a) => x * (1 - a) + y * a;
242
+ var clamp = (a, min = 0, max = 1) => Math.min(max, Math.max(min, a));
243
+ var invlerp = (x, y, a) => clamp((a - x) / (y - x));
244
+ var range = (x1, y1, x2, y2, a) => lerp(x2, y2, invlerp(x1, y1, a));
245
+
246
+ // src/assets/js/imports/hero-pattern.js
247
+ function HeroPattern() {
248
+ let time = 0;
249
+ const c = document.querySelector(".c-hero__canvas");
250
+ if (!c) return;
251
+ const ctx = c.getContext("2d");
252
+ const sineColour = "rgb(19,170,19)";
253
+ const reduceMotion = userPrefersReducedMotion();
254
+ const crossGap = 147;
255
+ const minimumOpacity = 0;
256
+ const maximumOpacity = 0.5;
257
+ const crossSpeed = 0.25;
258
+ let width;
259
+ let height;
260
+ let across;
261
+ let down;
262
+ let crosses = [];
263
+ let totalPoints;
264
+ function draw() {
265
+ time = time + 5e-3;
266
+ ctx.clearRect(0, 0, c.width, c.height);
267
+ ctx.beginPath();
268
+ for (let cnt = c.width; cnt > 0; cnt--) {
269
+ ctx.lineTo(cnt, c.height * 0.5 - Math.cos(time + cnt / 5 * 0.03) * (height * 0.3));
270
+ }
271
+ ctx.lineWidth = 0.5;
272
+ ctx.strokeStyle = sineColour;
273
+ ctx.stroke();
274
+ crosses.forEach((cross) => {
275
+ drawCross(cross.x, cross.y, range(0, crosses.length, minimumOpacity, maximumOpacity, cross.counter));
276
+ cross.counter += cross.direction;
277
+ if (cross.counter >= crosses.length) cross.direction = -1 * crossSpeed;
278
+ if (cross.counter < 0) cross.direction = crossSpeed;
279
+ });
280
+ if (!reduceMotion) {
281
+ window.requestAnimationFrame(draw);
282
+ }
283
+ }
284
+ function onResize() {
285
+ width = c.scrollWidth;
286
+ height = c.scrollHeight;
287
+ ctx.canvas.width = width;
288
+ ctx.canvas.height = height;
289
+ across = Math.ceil(width / crossGap);
290
+ down = Math.ceil(height / crossGap);
291
+ totalPoints = (across + 1) * (down + 1);
292
+ const ids = shuffle(Array.from({ length: totalPoints }, (_, i) => i));
293
+ crosses = [];
294
+ for (let x = 0; x <= across; x++) {
295
+ for (let y = 0; y <= down; y++) {
296
+ crosses.push({
297
+ counter: ids.shift(),
298
+ direction: Math.random() > 0.5 ? crossSpeed : -1 * crossSpeed,
299
+ x: crossGap * (x + 1) - crossGap / 1,
300
+ y: crossGap * (y + 1) - crossGap / 2
301
+ });
302
+ }
303
+ }
304
+ }
305
+ function drawCross(x, y, opacity) {
306
+ ctx.beginPath();
307
+ ctx.moveTo(x - 14, y);
308
+ ctx.lineTo(x + 14, y);
309
+ ctx.strokeStyle = `rgba(255, 255, 255, ${opacity}`;
310
+ ctx.moveTo(x, y - 14);
311
+ ctx.lineTo(x, y + 14);
312
+ ctx.stroke();
313
+ }
314
+ window.addEventListener("resize", onResize);
315
+ onResize();
316
+ draw();
317
+ }
318
+ var hero_pattern_default = HeroPattern;
319
+
320
+ // src/assets/js/imports/hero-video.js
321
+ function HeroVideo() {
322
+ document.addEventListener("DOMContentLoaded", () => {
323
+ const videoBackground = document.getElementById("videoBackground");
324
+ if (typeof videoBackground != "undefined" && videoBackground != null) {
325
+ let checkVideos = function() {
326
+ if (lightboxContainer.classList.contains("u-hidden")) {
327
+ if (videoBackground.paused) {
328
+ videoBackground.play();
329
+ }
330
+ if (!lightboxVideo.paused) {
331
+ lightboxVideo.pause();
332
+ }
333
+ } else {
334
+ if (!videoBackground.paused) {
335
+ videoBackground.pause();
336
+ }
337
+ }
338
+ };
339
+ const reducedMotion = window.matchMedia("(prefers-reduced-motion: reduce)");
340
+ if (!reducedMotion || reducedMotion.matches) {
341
+ videoBackground.pause();
342
+ }
343
+ const lightboxTrigger = document.getElementById("playVideo");
344
+ const lightboxContainer = document.getElementById("lightboxVideo");
345
+ const lightboxVideo = lightboxContainer.querySelector(".c-lightbox__video");
346
+ lightboxTrigger.addEventListener("click", (e) => {
347
+ videoBackground.pause();
348
+ lightboxContainer.classList.remove("u-hidden");
349
+ checkVideos();
350
+ });
351
+ lightboxContainer.addEventListener("click", (e) => {
352
+ if (!e.target.classList.contains("c-lightbox__video")) {
353
+ videoBackground.setAttribute("autoplay", "");
354
+ lightboxContainer.classList.add("u-hidden");
355
+ checkVideos();
356
+ }
357
+ });
358
+ window.addEventListener("keydown", function(e) {
359
+ if (e.key == "Escape") {
360
+ videoBackground.setAttribute("autoplay", "");
361
+ lightboxContainer.classList.add("u-hidden");
362
+ checkVideos();
363
+ }
364
+ });
365
+ }
366
+ });
367
+ }
368
+ var hero_video_default = HeroVideo;
369
+
370
+ // src/assets/js/imports/hotspot-image.js
371
+ function HotspotImage() {
372
+ setTimeout(function() {
373
+ const tooltips = document.querySelectorAll(".c-hotspot-image__button");
374
+ tooltips.forEach((button) => {
375
+ button.addEventListener("click", handleTooltipToggle);
376
+ });
377
+ document.addEventListener("keydown", handleKeyDown);
378
+ document.addEventListener("click", handleClickOutside);
379
+ }, 2e3);
380
+ }
381
+ function handleTooltipToggle(event) {
382
+ event.preventDefault();
383
+ const button = event.currentTarget;
384
+ const tooltipId = button.getAttribute("aria-controls");
385
+ const tooltip = document.getElementById(tooltipId);
386
+ if (tooltip.classList.contains("c-hotspot-image__tooltip--open")) {
387
+ closeTooltip(button, tooltip);
388
+ } else {
389
+ openTooltip(button, tooltip);
390
+ }
391
+ }
392
+ function openTooltip(button, tooltip) {
393
+ tooltip.classList.add("c-hotspot-image__tooltip--open");
394
+ tooltip.setAttribute("aria-hidden", "false");
395
+ button.setAttribute("aria-expanded", "true");
396
+ document.addEventListener("click", handleClickOutside);
397
+ }
398
+ function closeTooltip(button, tooltip) {
399
+ tooltip.classList.remove("c-hotspot-image__tooltip--open");
400
+ tooltip.setAttribute("aria-hidden", "true");
401
+ button.setAttribute("aria-expanded", "false");
402
+ document.removeEventListener("click", handleClickOutside);
403
+ }
404
+ function handleKeyDown(event) {
405
+ if (event.key === "Escape") {
406
+ const activeTooltip = document.querySelector(
407
+ ".c-hotspot-image__tooltip--open"
408
+ );
409
+ if (activeTooltip) {
410
+ const button = document.querySelector(
411
+ `[aria-controls="${activeTooltip.id}"]`
412
+ );
413
+ closeTooltip(button, activeTooltip);
414
+ }
415
+ }
416
+ }
417
+ function handleClickOutside(event) {
418
+ const activeTooltip = document.querySelector(
419
+ ".c-hotspot-image__tooltip--open"
420
+ );
421
+ if (activeTooltip && !activeTooltip.contains(event.target) && !event.target.closest(".c-hotspot-image__button")) {
422
+ const button = document.querySelector(
423
+ `[aria-controls="${activeTooltip.id}"]`
424
+ );
425
+ closeTooltip(button, activeTooltip);
426
+ }
427
+ }
428
+ var hotspot_image_default = HotspotImage;
429
+
430
+ // src/assets/js/imports/internal-nav.js
431
+ function InternalNav() {
432
+ const internalNav = document.querySelector(".c-internal-nav--sticky");
433
+ if (!internalNav) {
434
+ return;
435
+ }
436
+ const observerOptions = {
437
+ root: null,
438
+ rootMargin: "0px",
439
+ threshold: 1
440
+ };
441
+ const intersectionCallback = (entries, observer2) => {
442
+ const isIntersecting = entries[0].isIntersecting;
443
+ internalNav.classList.toggle("c-internal-nav--stuck", !isIntersecting);
444
+ };
445
+ const observer = new IntersectionObserver(intersectionCallback, observerOptions);
446
+ observer.observe(internalNav);
447
+ let internalNavHeight = internalNav.offsetHeight;
448
+ const updateInternalNavHeight = () => {
449
+ internalNavHeight = internalNav.offsetHeight;
450
+ const anchors = Array.from(internalNav.querySelectorAll("a"));
451
+ anchors.forEach((anchor) => {
452
+ const id = anchor.getAttribute("href").replace("#", "");
453
+ const target = document.getElementById(id);
454
+ if (target) {
455
+ target.style.scrollMarginTop = `${internalNavHeight}px`;
456
+ }
457
+ });
458
+ };
459
+ window.addEventListener("resize", updateInternalNavHeight);
460
+ updateInternalNavHeight();
461
+ }
462
+ var internal_nav_default = InternalNav;
463
+
464
+ // src/assets/js/imports/mobile-nav.js
465
+ function MobileNav() {
466
+ const openButton = document.querySelector(".c-navicon--open");
467
+ const closeButton = document.querySelector(".c-navicon--close");
468
+ const overlay = document.querySelector(".c-header__overlay");
469
+ if (!openButton || !closeButton || !overlay) return;
470
+ if (!overlay.id) overlay.id = "overlay-menu";
471
+ openButton.setAttribute("aria-controls", overlay.id);
472
+ openButton.setAttribute("aria-expanded", "false");
473
+ overlay.setAttribute("aria-hidden", "true");
474
+ setupNavToggle(openButton, closeButton, overlay);
475
+ }
476
+ function setupNavToggle(openButton, closeButton, overlay) {
477
+ const focusableSelectors = 'a[href], button:not([disabled]), input:not([disabled]), textarea:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex="-1"])';
478
+ const focusableElements = () => overlay.querySelectorAll(focusableSelectors);
479
+ const trapFocus = (e) => {
480
+ const elements = focusableElements();
481
+ if (!elements.length) return;
482
+ const first = elements[0];
483
+ const last = elements[elements.length - 1];
484
+ if (e.key === "Tab") {
485
+ if (e.shiftKey && document.activeElement === first) {
486
+ e.preventDefault();
487
+ last.focus();
488
+ } else if (!e.shiftKey && document.activeElement === last) {
489
+ e.preventDefault();
490
+ first.focus();
491
+ }
492
+ }
493
+ };
494
+ const onOpen = () => {
495
+ openButton.setAttribute("aria-expanded", "true");
496
+ overlay.setAttribute("aria-hidden", "false");
497
+ overlay.setAttribute("aria-modal", "true");
498
+ overlay.classList.add("active");
499
+ document.body.classList.add("u-no-scroll");
500
+ document.addEventListener("keydown", onEscapePress);
501
+ document.addEventListener("keydown", trapFocus);
502
+ const firstFocusable = focusableElements()[0];
503
+ if (firstFocusable) firstFocusable.focus();
504
+ };
505
+ const onClose = () => {
506
+ openButton.setAttribute("aria-expanded", "false");
507
+ overlay.setAttribute("aria-hidden", "true");
508
+ overlay.removeAttribute("aria-modal");
509
+ overlay.classList.remove("active");
510
+ document.body.classList.remove("u-no-scroll");
511
+ document.removeEventListener("keydown", onEscapePress);
512
+ document.removeEventListener("keydown", trapFocus);
513
+ openButton.focus();
514
+ };
515
+ const onEscapePress = (event) => {
516
+ if (event.key === "Escape" && overlay.classList.contains("active")) {
517
+ onClose();
518
+ }
519
+ };
520
+ openButton.addEventListener("click", () => onOpen());
521
+ closeButton.addEventListener("click", () => onClose());
522
+ }
523
+ var mobile_nav_default = MobileNav;
524
+
525
+ // src/assets/js/imports/off-canvas.js
526
+ function OffCanvas() {
527
+ const toggles = document.querySelectorAll(".c-off-canvas__toggle");
528
+ if (toggles.length) {
529
+ toggles.forEach((toggle) => {
530
+ handleOffCanvas(toggle, isVisible(toggle));
531
+ toggle.addEventListener("click", () => toggleOffCanvas(toggle));
532
+ });
533
+ window.addEventListener("resize", () => {
534
+ toggles.forEach((toggle) => {
535
+ handleOffCanvas(toggle, isVisible(toggle));
536
+ });
537
+ });
538
+ }
539
+ }
540
+ function isVisible(element) {
541
+ const style = window.getComputedStyle(element);
542
+ return style.display !== "none" && style.visibility !== "hidden";
543
+ }
544
+ function handleOffCanvas(toggle, isVisible2) {
545
+ const target = document.getElementById(toggle.getAttribute("data-target"));
546
+ if (isVisible2 === true) {
547
+ createOffCanvas(target);
548
+ } else {
549
+ removeOffCanvas(target);
550
+ }
551
+ }
552
+ function createOffCanvas(target) {
553
+ target.classList.add("c-off-canvas");
554
+ target.setAttribute("tabindex", "-1");
555
+ target.setAttribute("aria-hidden", "true");
556
+ const targetHeader = target.querySelector('[data-off-canvas="header"]');
557
+ const targetMain = target.querySelector('[data-off-canvas="main"]');
558
+ const targetFooter = target.querySelector('[data-off-canvas="footer"]');
559
+ const targetHeaderContent = targetHeader !== null ? targetHeader.outerHTML : "";
560
+ const targetMainContent = targetMain !== null ? targetMain.outerHTML : "";
561
+ const targetFooterContent = targetFooter !== null ? targetFooter.outerHTML : "";
562
+ target.innerHTML = `
563
+ <div class="c-off-canvas__backdrop" role="presentation"></div>
564
+ <div class="c-off-canvas__content" role="dialog" aria-modal="true" aria-labelledby="offCanvasHeader">
565
+ <header id="offCanvasHeader" class="c-off-canvas__header">${targetHeaderContent}</header>
566
+ <main class="c-off-canvas__main">${targetMainContent}</main>
567
+ <footer class="c-off-canvas__footer">
568
+ ${targetFooterContent}
569
+ <button class="mp c-twi c-twi--left c-off-canvas__close" data-off-canvas-close="true" onclick="return false">
570
+ <span>Cancel</span>
571
+ <svg role="img" aria-hidden="true" focusable="false" class="mp c-icon c-icon--cross">
572
+ <use xlink:href="/static/svg/sprite.svg#cross"></use>
573
+ </svg>
574
+ </button>
575
+ </footer>
576
+ </div>
577
+ `;
578
+ }
579
+ function removeOffCanvas(target) {
580
+ target.classList.remove("c-off-canvas", "c-off-canvas--active");
581
+ target.removeAttribute("tabindex");
582
+ target.removeAttribute("aria-hidden");
583
+ const targetBackdrop = target.querySelector(".c-off-canvas__backdrop");
584
+ if (targetBackdrop) {
585
+ targetBackdrop.remove();
586
+ }
587
+ const targetContent = target.querySelector(".c-off-canvas__content");
588
+ if (targetContent) {
589
+ while (targetContent.firstChild) {
590
+ target.insertBefore(targetContent.firstChild, targetContent);
591
+ }
592
+ target.removeChild(targetContent);
593
+ }
594
+ const targetHeader = target.querySelector(".c-off-canvas__header");
595
+ if (targetHeader) {
596
+ while (targetHeader.firstChild) {
597
+ target.insertBefore(targetHeader.firstChild, targetHeader);
598
+ }
599
+ target.removeChild(targetHeader);
600
+ }
601
+ const targetMain = target.querySelector(".c-off-canvas__main");
602
+ if (targetMain) {
603
+ while (targetMain.firstChild) {
604
+ target.insertBefore(targetMain.firstChild, targetMain);
605
+ }
606
+ target.removeChild(targetMain);
607
+ }
608
+ const targetFooter = target.querySelector(".c-off-canvas__footer");
609
+ if (targetFooter) {
610
+ while (targetFooter.firstChild) {
611
+ target.insertBefore(targetFooter.firstChild, targetFooter);
612
+ }
613
+ target.removeChild(targetFooter);
614
+ }
615
+ const targetClose = target.querySelector(".c-off-canvas__close");
616
+ if (targetClose) {
617
+ targetClose.remove();
618
+ }
619
+ }
620
+ function toggleOffCanvas(toggle) {
621
+ const target = document.getElementById(toggle.getAttribute("data-target"));
622
+ if (!target.classList.contains("c-off-canvas--active")) {
623
+ openOffCanvas(toggle, target);
624
+ } else if (target.classList.contains("c-off-canvas--active")) {
625
+ closeOffCanvas(target);
626
+ }
627
+ }
628
+ function openOffCanvas(toggle, target) {
629
+ toggle.setAttribute("aria-expanded", "true");
630
+ target.classList.add("c-off-canvas--active");
631
+ target.setAttribute("aria-hidden", "false");
632
+ const offCanvasBackdrop = target.querySelector(".c-off-canvas__backdrop");
633
+ if (offCanvasBackdrop) {
634
+ offCanvasBackdrop.addEventListener("click", handleBackdropClick);
635
+ }
636
+ const offCanvasCloseElements = target.querySelectorAll('[data-off-canvas-close="true"]');
637
+ if (offCanvasCloseElements.length > 0) {
638
+ offCanvasCloseElements.forEach((offCanvasClose) => {
639
+ offCanvasClose.addEventListener("click", handleCloseClick);
640
+ });
641
+ }
642
+ document.addEventListener("keydown", handleKeyDown2, { once: true });
643
+ document.body.style.overflowY = "hidden";
644
+ const allOffCanvasElementsExceptCurrent = Array.from(document.querySelectorAll(".c-off-canvas")).filter((offCanvas) => offCanvas !== target);
645
+ if (allOffCanvasElementsExceptCurrent.length > 0) {
646
+ allOffCanvasElementsExceptCurrent.forEach((offCanvas) => {
647
+ closeOffCanvas(offCanvas);
648
+ });
649
+ }
650
+ }
651
+ function closeOffCanvas(target) {
652
+ document.querySelector('[data-target="' + target.id + '"').setAttribute("aria-expanded", "false");
653
+ target.classList.remove("c-off-canvas--active");
654
+ target.setAttribute("aria-hidden", "true");
655
+ document.body.style.overflowY = "";
656
+ }
657
+ function handleBackdropClick() {
658
+ const offCanvas = this.closest(".c-off-canvas");
659
+ closeOffCanvas(offCanvas);
660
+ }
661
+ function handleKeyDown2(event) {
662
+ if (event.key === "Escape") {
663
+ const activeOffCanvas = document.querySelector(".c-off-canvas--active");
664
+ if (activeOffCanvas) {
665
+ closeOffCanvas(activeOffCanvas);
666
+ }
667
+ }
668
+ }
669
+ function handleCloseClick() {
670
+ const offCanvas = this.closest(".c-off-canvas");
671
+ closeOffCanvas(offCanvas);
672
+ }
673
+ var off_canvas_default = OffCanvas;
674
+
675
+ // src/assets/js/imports/responsive-table.js
676
+ var ResponsiveTable = () => {
677
+ const tables = Array.from(document.querySelectorAll(".c-table--responsive"));
678
+ tables.forEach(createResponsiveTable);
679
+ function createResponsiveTable(table) {
680
+ const headers = table.querySelectorAll("thead > :first-child th");
681
+ const breakPoint = Number(table.getAttribute("data-columns")) || 2;
682
+ if (headers.length < breakPoint) {
683
+ table.classList.remove("c-table--responsive");
684
+ return;
685
+ }
686
+ ;
687
+ Array.from(table.querySelectorAll("tbody tr")).forEach((row) => {
688
+ Array.from(headers).map((x) => x.textContent).forEach((header, index) => {
689
+ if (row.children[index]) {
690
+ row.children[index].setAttribute("data-responsive-title", header);
691
+ }
692
+ });
693
+ });
694
+ }
695
+ };
696
+ var responsive_table_default = ResponsiveTable;
697
+
698
+ // src/assets/js/imports/scrollbar-width.js
699
+ function ScrollbarWidth() {
700
+ setScrollbarWidth();
701
+ window.addEventListener("resize", debounce(setScrollbarWidth, 250));
702
+ }
703
+ function setScrollbarWidth() {
704
+ document.documentElement.style.setProperty(
705
+ "--scrollbarWidth",
706
+ window.innerWidth - document.body.clientWidth + "px"
707
+ );
708
+ }
709
+ var scrollbar_width_default = ScrollbarWidth;
710
+
711
+ // src/assets/js/imports/scroll-spy.js
712
+ function ScrollSpy() {
713
+ const internalNav = document.querySelector(".c-internal-nav--sticky");
714
+ const internalNavHeight = internalNav ? internalNav.offsetHeight : 0;
715
+ const spies = Array.from(document.querySelectorAll(".c-scroll-spy"));
716
+ spies.forEach((spy) => {
717
+ setup(spy, internalNavHeight);
718
+ });
719
+ }
720
+ function setup(element, internalNavHeight) {
721
+ const anchors = Array.from(element.querySelectorAll("a"));
722
+ const observer = new IntersectionObserver(observation(anchors));
723
+ anchors.forEach((anchor) => {
724
+ const id = anchor.getAttribute("href").replace("#", "");
725
+ const target = document.getElementById(id);
726
+ if (!target) return;
727
+ observer.observe(target);
728
+ });
729
+ const currentTop = parseFloat(window.getComputedStyle(element).top);
730
+ element.style.top = `${currentTop + internalNavHeight}px`;
731
+ }
732
+ function observation(anchors) {
733
+ return (results) => {
734
+ const firstObservation = results.find((x) => x.isIntersecting);
735
+ if (firstObservation) {
736
+ anchors.forEach((x) => {
737
+ x.classList.toggle(
738
+ "c-scroll-spy-active",
739
+ x.getAttribute("href") === "#" + firstObservation.target.id
740
+ );
741
+ });
742
+ }
743
+ };
744
+ }
745
+ var scroll_spy_default = ScrollSpy;
746
+
747
+ // src/assets/js/imports/tabs.js
748
+ var resizeTimeout;
749
+ function Tabs() {
750
+ const tabs = Array.from(document.querySelectorAll(".c-tabs--anchor, .c-tabs--mobile-accordion"));
751
+ tabs.forEach((parent) => {
752
+ setupTabs(parent);
753
+ window.addEventListener("resize", () => {
754
+ clearTimeout(resizeTimeout);
755
+ resizeTimeout = setTimeout(() => handleResize(parent), 100);
756
+ });
757
+ });
758
+ }
759
+ function setupTabs(parent) {
760
+ const controls = Array.from(parent.querySelectorAll(".c-tabs__control"));
761
+ const contents = Array.from(parent.querySelectorAll(".c-tab"));
762
+ const persist = parent.classList.contains("c-tabs--persist");
763
+ if (!controls.length || !contents.length) return;
764
+ handleResize(parent);
765
+ controls.forEach((control) => {
766
+ control.addEventListener("click", controlClick(controls, contents, persist));
767
+ });
768
+ if (persist && window.location.hash) {
769
+ const control = parent.querySelector('[href="' + window.location.hash + '"]');
770
+ if (control) control.dispatchEvent(new Event("click"));
771
+ }
772
+ }
773
+ function handleResize(parent) {
774
+ const isAccordion = parent.classList.contains("c-tabs--mobile-accordion");
775
+ const isMobile = window.innerWidth <= 880;
776
+ if (parent.dataset.viewMode === (isMobile ? "accordion" : "tabs")) {
777
+ return;
778
+ }
779
+ parent.dataset.viewMode = isMobile ? "accordion" : "tabs";
780
+ if (isAccordion && isMobile) {
781
+ restructureForAccordion(parent);
782
+ } else if (isAccordion && !isMobile) {
783
+ restoreToTabs(parent);
784
+ }
785
+ }
786
+ function restructureForAccordion(parent) {
787
+ const controlElements = Array.from(parent.querySelectorAll(".c-tabs__control"));
788
+ const tabElements = Array.from(parent.querySelectorAll(".c-tab"));
789
+ const controlsElement = parent.querySelector(".c-tabs__controls");
790
+ if (controlsElement) {
791
+ controlsElement.remove();
792
+ }
793
+ controlElements.forEach((control, index) => {
794
+ const content = tabElements[index];
795
+ if (content) {
796
+ const tabWrapper = document.createElement("div");
797
+ tabWrapper.classList.add("c-tabs__content");
798
+ tabWrapper.appendChild(control);
799
+ tabWrapper.appendChild(content);
800
+ parent.appendChild(tabWrapper);
801
+ }
802
+ });
803
+ }
804
+ function restoreToTabs(parent) {
805
+ const controls = Array.from(parent.querySelectorAll(".c-tabs__control"));
806
+ const contents = Array.from(parent.querySelectorAll(".c-tab"));
807
+ if (!controls.length || !contents.length) return;
808
+ parent.innerHTML = `
809
+ <nav class="c-tabs__controls">
810
+ <ul class="c-tabs__controls-list">
811
+ ${controls.map((control) => `<li>${control.outerHTML}</li>`).join("")}
812
+ </ul>
813
+ </nav>
814
+ <div class="c-tabs__content">
815
+ ${contents.map((content) => content.outerHTML).join("")}
816
+ </div>
817
+ `;
818
+ setTimeout(() => setupTabs(parent), 0);
819
+ }
820
+ function controlClick(controls, contents, persist) {
821
+ return (event) => {
822
+ const control = event.currentTarget;
823
+ const contentId = control.getAttribute("href")?.replace("#", "");
824
+ const content = contents.find((x) => x.id === contentId);
825
+ if (!content) return true;
826
+ event.preventDefault();
827
+ if (persist) {
828
+ history.pushState(null, null, control.getAttribute("href"));
829
+ }
830
+ if (window.innerWidth <= 880) {
831
+ const isActive = content.classList.contains("c-tab--active");
832
+ controls.forEach((c) => c.classList.remove("c-tabs__control--active"));
833
+ contents.forEach((c) => c.classList.remove("c-tab--active"));
834
+ if (!isActive) {
835
+ control.classList.add("c-tabs__control--active");
836
+ content.classList.add("c-tab--active");
837
+ }
838
+ } else {
839
+ controls.forEach((c) => c.classList.toggle("c-tabs__control--active", c === control));
840
+ contents.forEach((c) => c.classList.toggle("c-tab--active", c === content));
841
+ }
842
+ };
843
+ }
844
+ var tabs_default = Tabs;
845
+
846
+ // src/assets/js/mp-www.js
847
+ function initializeApp() {
848
+ if (window.NodeList && !NodeList.prototype.forEach) {
849
+ NodeList.prototype.forEach = Array.prototype.forEach;
850
+ }
851
+ if (window.HTMLCollection && !HTMLCollection.prototype.forEach) {
852
+ HTMLCollection.prototype.forEach = Array.prototype.forEach;
853
+ }
854
+ accordion_default();
855
+ carousel_default();
856
+ clear_form_default();
857
+ comparison_default();
858
+ facet_default();
859
+ gallery_default();
860
+ hero_pattern_default();
861
+ hero_video_default();
862
+ hotspot_image_default();
863
+ internal_nav_default();
864
+ mobile_nav_default();
865
+ off_canvas_default();
866
+ responsive_table_default();
867
+ scrollbar_width_default();
868
+ scroll_spy_default();
869
+ tabs_default();
870
+ }
871
+ if (typeof window !== "undefined") {
872
+ initializeApp();
873
+ }
874
+ })();
875
+ //# sourceMappingURL=mp-www.js.map