PageSourceSearch

https://www.koenigssee.de/_assets/1798f66a72c0609b2ee5b404d10475ff…/Structures/MainNav.7438459ab77712e8c22d.js

js koenigssee.de collected 2026-10-02 10:16:05 UTC 26,806 bytes, 753 lines download raw bytes

1/******/ (() => { // webpackBootstrap
2/******/ 	var __webpack_modules__ = ({
3
4/***/ 8611:
5/***/ ((module) => {
6
7module.exports = (function imxQuery() {
8
9  /**
10   * get the total top offset of an object to the window object, not only to the next positioned object
11   * @param {object} targetNode
12   * @returns {Number}
13   */
14  var offsetTop = function(targetNode) {
15    var stopElement = document.querySelector('body');
16    var offsetTopValue = targetNode.getBoundingClientRect().top - stopElement.getBoundingClientRect().top;
17
18    return offsetTopValue;
19  };
20
21  /**
22   * get the total left offset of an object to the window object, not only to the next positioned object
23   * @param {object} targetNode
24   * @returns {Number}
25   */
26  var offsetLeft = function(targetNode) {
27    var stopElement = document.querySelector('body');
28    var offsetLeftValue = targetNode.getBoundingClientRect().left - stopElement.getBoundingClientRect().left;
29
30    return offsetLeftValue;
31  };
32
33
34  /**
35   * animated scrolling to a specific position
36   * @param {int} positionX
37   * @param {int} positionY
38   * @param {int} duration
39   * @returns null
40   */
41  var scrollTo = function(positionX, positionY, duration) {
42    var _getCurrentScrollPositions = function() {
43      return {
44        x: window.pageXOffset,
45        y: window.pageYOffset
46      };
47    };
48
49    var _isTargetPositionReached = function() {
50      var currentScrollPosition = _getCurrentScrollPositions();
51      var flags = {
52        x: false,
53        y: false
54      };
55
56      if(scrollSteps.x < 0) {
57        if(currentScrollPosition.x + scrollSteps.x <= positionX) {
58          flags.x = true;
59        }
60      }else {
61        if(currentScrollPosition.x + scrollSteps.x >= positionX) {
62          flags.x = true;
63        }
64      }
65
66      if(scrollSteps.y < 0) {
67        if(currentScrollPosition.y + scrollSteps.y <= positionY) {
68          flags.y = true;
69        }
70      }else {
71        if(currentScrollPosition.y + scrollSteps.y >= positionY) {
72          flags.y = true;
73        }
74      }
75
76      if(flags.x && flags.y) {
77        return true;
78      }else {
79        return false;
80      }
81    };
82
83    var intervalGap = 15;
84    var currentScrollPosition = _getCurrentScrollPositions();
85
86    var scrollSteps = {
87      x: (positionX - currentScrollPosition.x) / (duration / intervalGap),
88      y: (positionY - currentScrollPosition.y) / (duration / intervalGap)
89    };
90
91    var scrollInterval = setInterval(function() {
92
93      if(_isTargetPositionReached()) {
94        clearInterval(scrollInterval);
95        window.scrollTo(positionX, positionY);
96      }else {
97        window.scrollBy(scrollSteps.x, scrollSteps.y);
98      }
99    }, intervalGap);
100  };
101
102  /**
103   * animated scrolling inside an element
104   * @param {int} positionX
105   * @param {int} positionY
106   * @param {int} duration
107   * @param {HTMLElement} target
108   * @returns null
109   */
110  var scrollElementTo = function(positionX, positionY, duration, target) {
111    var _getCurrentScrollPositions = function() {
112      return {
113        x: target.scrollLeft,
114        y: target.scrollTop
115      };
116    };
117
118    var _isTargetPositionReached = function() {
119      var currentScrollPosition = _getCurrentScrollPositions();
120      var flags = {
121        x: false,
122        y: false
123      };
124
125      if(scrollSteps.x < 0) {
126        if(currentScrollPosition.x + scrollSteps.x <= positionX) {
127          flags.x = true;
128        }
129      }else {
130        if(currentScrollPosition.x + scrollSteps.x >= positionX) {
131          flags.x = true;
132        }
133      }
134
135      if(scrollSteps.y < 0) {
136        if(currentScrollPosition.y + scrollSteps.y <= positionY) {
137          flags.y = true;
138        }
139      }else {
140        if(currentScrollPosition.y + scrollSteps.y >= positionY) {
141          flags.y = true;
142        }
143      }
144
145      if(flags.x && flags.y) {
146        return true;
147      }else {
148        return false;
149      }
150    };
151
152    var intervalGap = 15;
153    var currentScrollPosition = _getCurrentScrollPositions();
154
155    var scrollSteps = {
156      x: (positionX - currentScrollPosition.x) / (duration / intervalGap),
157      y: (positionY - currentScrollPosition.y) / (duration / intervalGap)
158    };
159
160    var scrollInterval = setInterval(function() {
161
162      if(_isTargetPositionReached()) {
163        clearInterval(scrollInterval);
164
165        target.scrollLeft = positionX;
166        target.scrollTop += positionY;
167      }else {
168        target.scrollLeft += scrollSteps.x;
169        target.scrollTop += scrollSteps.y;
170      }
171    }, intervalGap);
172  };
173
174  /**
175   * wrapper to access html5 data set (use this for ie10 compatibility)
176   * @param {htlmnode} object
177   * @param {string} value
178   * @returns {mixed}
179   */
180  var accessDataset = function(object, value) {
181    if(object.dataset) {
182      return object.dataset[value];
183    }else {
184      return object.getAttribute('data-' + value);
185    }
186  };
187
188  /**
189   * extend an object with another object, adding missing fields, overwriting existing fields
190   * @param {object} objectForExtension
191   * @param {object} extensionObject
192   * @returns {object}
193   */
194  var extendObject = function(objectForExtension, extensionObject) {
195    for(var property in extensionObject) {
196      if(!objectForExtension.hasOwnProperty(property)) {
197        objectForExtension[property] = extensionObject[property];
198      }
199    }
200    return objectForExtension;
201  };
202
203  var documentReady = function(callback) {
204
205    let checkLess = false;
206    if(typeof (less) !== 'undefined') {
207      if(typeof (less.pageLoadFinished) === 'object') {
208        checkLess = true;
209      }
210    }
211
212    var lessComplete = function() {
213      if(checkLess) {
214        less.pageLoadFinished.then(() => {
215          setTimeout(callback);
216        });
217      }else {
218        setTimeout(callback);
219      }
220    };
221
222    var loadComplete = function() {
223      document.removeEventListener('DOMContentLoaded', loadComplete);
224      window.removeEventListener('load', loadComplete);
225
226      lessComplete();
227    };
228
229    if(document.readyState === 'complete') {
230      lessComplete();
231    }else {
232      document.addEventListener('DOMContentLoaded', loadComplete);
233      window.addEventListener('load', loadComplete);
234    }
235  };
236
237  return {
238    offsetTop: offsetTop,
239    offsetLeft: offsetLeft,
240    scrollTo: scrollTo,
241    scrollElementTo: scrollElementTo,
242    accessDataset: accessDataset,
243    extendObject: extendObject,
244    documentReady: documentReady
245  };
246})();
247
248
249/***/ }),
250
251/***/ 8507:
252/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
253
254"use strict";
255/* harmony export */ __webpack_require__.d(__webpack_exports__, {
256/* harmony export */   h: () => (/* binding */ MainNavHelper)
257/* harmony export */ });
258class MainNavHelper {
259  constructor(rootNode) {
260    this.rootNode = rootNode;
261    this._init();
262  }
263  _init() {
264    this.lvl1ClassName = 'mainNav__lvl1';
265    this.lvl2ClassName = 'mainNav__lvl2';
266    this.lvl3ClassName = 'mainNav__lvl3';
267    this.lvl1ItemClassName = 'mainNav__lvl1__item';
268    this.lvl2ItemClassName = 'mainNav__lvl2__item';
269    this.lvl1TitleClassName = 'mainNav__lvl1__item__title';
270    this.lvl2TitleClassName = 'mainNav__lvl2__item__title';
271    this.lvl3TitleClassName = 'mainNav__lvl3__item__title__text';
272    this.lvl1ActiveClassName = '-js-mainNav--lvl1';
273    this.lvl2ActiveClassName = '-js-mainNav--lvl2';
274    this.lvl1ItemActiveClassName = '-js-mainNav__lvl1__item--active';
275    this.lvl2ItemActiveClassName = '-js-mainNav__lvl2__item--active';
276    this.breadcrumbLinkClassName = 'mainNav__breadcrumb__link';
277    this.breadcrumbListItemLinkClassName = 'mainNav__breadcrumb__list__item__link';
278  }
279  getActiveFirstFocusable() {
280    const activeLevel = this.getActiveLevel();
281    return activeLevel.querySelector(`.${this.lvl1TitleClassName}, .${this.lvl2TitleClassName}, .${this.lvl3TitleClassName}`);
282  }
283  setActiveLvlClass() {
284    const activeLevel = this.getActiveLevel();
285    if (activeLevel.classList.contains(this.lvl2ClassName)) {
286      this.rootNode.classList.add(this.lvl1ActiveClassName);
287    } else if (activeLevel.classList.contains(this.lvl3ClassName)) {
288      this.rootNode.classList.add(this.lvl1ActiveClassName);
289      this.rootNode.classList.add(this.lvl2ActiveClassName);
290    }
291  }
292  getActiveLevel() {
293    let activeLevel = this.rootNode.querySelector(`.${this.lvl1ItemActiveClassName} .${this.lvl2ItemActiveClassName} .${this.lvl3ClassName}`);
294    if (!activeLevel) {
295      activeLevel = this.rootNode.querySelector(`.${this.lvl1ItemActiveClassName} .${this.lvl2ClassName}`);
296    }
297    if (!activeLevel) {
298      activeLevel = this.rootNode.querySelector(`.${this.lvl1ClassName}`);
299    }
300    return activeLevel;
301  }
302  getFocusableItems() {
303    return this.rootNode.querySelectorAll(`.${this.lvl1TitleClassName}, .${this.lvl2TitleClassName}, .${this.lvl3TitleClassName}, .${this.breadcrumbLinkClassName}, .${this.breadcrumbListItemLinkClassName}`);
304  }
305  closeLvl2() {
306    const lvl2Collection = this.rootNode.querySelectorAll(`.${this.lvl2ItemClassName}`);
307    for (let lvl2 of lvl2Collection) {
308      lvl2.classList.remove(this.lvl2ItemActiveClassName);
309    }
310    this.rootNode.classList.remove(this.lvl2ActiveClassName);
311  }
312  closeLvl1() {
313    const lvl1Collection = this.rootNode.querySelectorAll(`.${this.lvl1ItemClassName}`);
314    for (let lvl1 of lvl1Collection) {
315      lvl1.classList.remove(this.lvl1ItemActiveClassName);
316    }
317    this.rootNode.classList.remove(this.lvl1ActiveClassName);
318  }
319}
320
321/***/ })
322
323/******/ 	});
324/************************************************************************/
325/******/ 	// The module cache
326/******/ 	var __webpack_module_cache__ = {};
327/******/ 	
328/******/ 	// The require function
329/******/ 	function __webpack_require__(moduleId) {
330/******/ 		// Check if module is in cache
331/******/ 		var cachedModule = __webpack_module_cache__[moduleId];
332/******/ 		if (cachedModule !== undefined) {
333/******/ 			return cachedModule.exports;
334/******/ 		}
335/******/ 		// Create a new module (and put it into the cache)
336/******/ 		var module = __webpack_module_cache__[moduleId] = {
337/******/ 			// no module.id needed
338/******/ 			// no module.loaded needed
339/******/ 			exports: {}
340/******/ 		};
341/******/ 	
342/******/ 		// Execute the module function
343/******/ 		__webpack_modules__[moduleId](module, module.exports, __webpack_require__);
344/******/ 	
345/******/ 		// Return the exports of the module
346/******/ 		return module.exports;
347/******/ 	}
348/******/ 	
349/************************************************************************/
350/******/ 	/* webpack/runtime/compat get default export */
351/******/ 	(() => {
352/******/ 		// getDefaultExport function for compatibility with non-harmony modules
353/******/ 		__webpack_require__.n = (module) => {
vendor: 1,163 bytes, lines 354-383
354/******/ 			var getter = module && module.__esModule ?
355/******/ 				() => (module['default']) :
356/******/ 				() => (module);
357/******/ 			__webpack_require__.d(getter, { a: getter });
358/******/ 			return getter;
359/******/ 		};
360/******/ 	})();
361/******/ 	
362/******/ 	/* webpack/runtime/define property getters */
363/******/ 	(() => {
364/******/ 		// define getter functions for harmony exports
365/******/ 		__webpack_require__.d = (exports, definition) => {
366/******/ 			for(var key in definition) {
367/******/ 				if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
368/******/ 					Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
369/******/ 				}
370/******/ 			}
371/******/ 		};
372/******/ 	})();
373/******/ 	
374/******/ 	/* webpack/runtime/hasOwnProperty shorthand */
375/******/ 	(() => {
376/******/ 		__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
377/******/ 	})();
378/******/ 	
379/************************************************************************/
380var __webpack_exports__ = {};
381// This entry need to be wrapped in an IIFE because it need to be in strict mode.
382(() => {
383"use strict";
384// extracted by mini-css-extract-plugin
385
386})();
387
388// This entry need to be wrapped in an IIFE because it need to be in strict mode.
389(() => {
390"use strict";
391/* harmony import */ var imxquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8611);
392/* harmony import */ var imxquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(imxquery__WEBPACK_IMPORTED_MODULE_0__);
393/* harmony import */ var _helper_MainNavHelper__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(8507);
394
395
396(() => {
397  /**
398   * registers a main nav level
399   *
400   * @param {Element} node
401   * @param {HTMLCollection} lvl2Collection
402   * @param {Element} mainNav
403   */
404  const _registerMainNav = (node, lvl2Collection, mainNav) => {
405    const button = node.querySelector(`.${titleClassName}`);
406    const mainNavHelper = new _helper_MainNavHelper__WEBPACK_IMPORTED_MODULE_1__/* .MainNavHelper */ .h(mainNav);
407    button.addEventListener('click', event => {
408      const target = event.target;
409      if (target.closest('a')) {
410        return;
411      }
412      const isActive = node.classList.contains(activeClassName);
413      if (!isActive) {
414        mainNavHelper.closeLvl2();
415        mainNav.classList.add(lvl2ActiveClassName);
416        node.classList.add(activeClassName);
417        const nextLvlFocusable = node.querySelector(`.${breadcrumbItemLinkClassName}`);
418        nextLvlFocusable?.focus();
419      } else {
420        node.classList.remove(activeClassName);
421        mainNav.classList.remove(lvl2ActiveClassName);
422      }
423    });
424  };
425  const lvl2ItemClassName = 'mainNav__lvl2__item';
426  const titleClassName = 'mainNav__lvl2__item__title';
427  const mainNavIdName = 'mainNav';
428  const lvl2ActiveClassName = '-js-mainNav--lvl2';
429  const activeClassName = '-js-mainNav__lvl2__item--active';
430  const breadcrumbItemLinkClassName = 'mainNav__breadcrumb__list__item__link';
431  imxquery__WEBPACK_IMPORTED_MODULE_0___default().documentReady(() => {
432    const mainNav = document.getElementById(mainNavIdName);
433    const lvl2Collection = mainNav.querySelectorAll(`.${lvl2ItemClassName}`);
434    for (let lvl2 of lvl2Collection) {
435      _registerMainNav(lvl2, lvl2Collection, mainNav);
436    }
437  });
438})();
439})();
440
441// This entry need to be wrapped in an IIFE because it need to be in strict mode.
442(() => {
443"use strict";
444/* harmony import */ var imxquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8611);
445/* harmony import */ var imxquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(imxquery__WEBPACK_IMPORTED_MODULE_0__);
446/* harmony import */ var _helper_MainNavHelper__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(8507);
447
448
449(() => {
450  /**
451   * registers a main nav level
452   *
453   * @param {Element} node
454   * @param {HTMLCollection} lvl1Collection
455   * @param {Element} mainNav
456   */
457  const _registerMainNav = (node, lvl1Collection, mainNav) => {
458    const button = node.querySelector(`.${titleClassName}`);
459    const mainNavHelper = new _helper_MainNavHelper__WEBPACK_IMPORTED_MODULE_1__/* .MainNavHelper */ .h(mainNav);
460    button.addEventListener('click', event => {
461      const target = event.target;
462      if (target.closest('a')) {
463        return;
464      }
465      const isActive = node.classList.contains(activeClassName);
466      if (!isActive) {
467        mainNavHelper.closeLvl1();
468        mainNav.classList.add(lvl1ActiveClassName);
469        node.classList.add(activeClassName);
470        const nextLvlFocusable = node.querySelector(`.${breadcrumbItemLinkClassName}`);
471        nextLvlFocusable?.focus();
472      } else {
473        node.classList.remove(activeClassName);
474        mainNav.classList.remove(lvl1ActiveClassName);
475      }
476    });
477  };
478  const lvl1ItemClassName = 'mainNav__lvl1__item';
479  const titleClassName = 'mainNav__lvl1__item__title';
480  const mainNavIdName = 'mainNav';
481  const lvl1ActiveClassName = '-js-mainNav--lvl1';
482  const activeClassName = '-js-mainNav__lvl1__item--active';
483  const breadcrumbItemLinkClassName = 'mainNav__breadcrumb__list__item__link';
484  imxquery__WEBPACK_IMPORTED_MODULE_0___default().documentReady(() => {
485    const mainNav = document.getElementById(mainNavIdName);
486    const lvl1Collection = mainNav.querySelectorAll(`.${lvl1ItemClassName}`);
487    for (let lvl1 of lvl1Collection) {
488      _registerMainNav(lvl1, lvl1Collection, mainNav);
489    }
490  });
491})();
492})();
493
494// This entry need to be wrapped in an IIFE because it need to be in strict mode.
495(() => {
496"use strict";
497/* harmony import */ var imxquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8611);
498/* harmony import */ var imxquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(imxquery__WEBPACK_IMPORTED_MODULE_0__);
499/* harmony import */ var _helper_MainNavHelper__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(8507);
500
501
502(() => {
503  /**
504   * registers a main nav level
505   *
506   * @param {HTMLElement} node
507   * @param {HTMLCollection} linkCollection
508   * @param {HTMLElement} mainNav
509   */
510  const _registerLevel = (node, linkCollection, mainNav) => {
511    const breadcrumb = node.querySelector(`:scope > .${breadcrumbClassName}`);
512    const breadcrumbLinks = breadcrumb?.querySelectorAll(`.${breadcrumbLinkClassName}, .${breadcrumbItemLinkClassName}`) ?? [];
513    const keyboardAbleItems = [...breadcrumbLinks, ...linkCollection];
514    const pageHeaderHeaderLinkNode = mainNav.parentElement.querySelector(`.${pageHeaderHeaderClassName}`).querySelector('a, button');
515    const pageHeaderFooterLinkNode = mainNav.parentElement.querySelector(`.${pageHeaderFooterClassName}`).querySelector('a, button');
516    const teaserNode = mainNav.querySelector(`.${mainNavTeaserClassName}`);
517    const mainNavHelper = new _helper_MainNavHelper__WEBPACK_IMPORTED_MODULE_1__/* .MainNavHelper */ .h(mainNav);
518    keyboardAbleItems.forEach((link, index) => {
519      link.addEventListener('keydown', event => {
520        if (event.key === 'Tab') {
521          event.preventDefault();
522          event.shiftKey ? pageHeaderHeaderLinkNode?.focus() : pageHeaderFooterLinkNode?.focus();
523        }
524        /* if arrow up or down */
525        if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {
526          event.preventDefault();
527          const target = index + (event.key === 'ArrowUp' ? -1 : 1);
528          if (target >= 0 && target < keyboardAbleItems.length) {
529            keyboardAbleItems[target].focus();
530          }
531        }
532      });
533    });
534    const handleFooterTeaserTab = event => {
535      if (event.key === 'Tab' && event.shiftKey) {
536        event.preventDefault();
537        mainNavHelper.getActiveFirstFocusable()?.focus();
538      }
539    };
540    if (teaserNode) teaserNode.addEventListener('keydown', handleFooterTeaserTab);
541    if (pageHeaderFooterLinkNode) pageHeaderFooterLinkNode.addEventListener('keydown', handleFooterTeaserTab);
542  };
543  /**
544   * registers a main nav level
545   *
546   * @param {Element} mainNav
547   */
548  const _registerMainNav = mainNav => {
549    const lvl1Collection = mainNav.querySelectorAll(`.${lvl1ClassName}`);
550    const lvl2Collection = mainNav.querySelectorAll(`.${lvl2ClassName}`);
551    const lvl3Collection = mainNav.querySelectorAll(`.${lvl3ClassName}`);
552    for (let lvl1 of lvl1Collection) {
553      const linkCollection = lvl1.querySelectorAll(`.${lvl1TitleClassName}`);
554      _registerLevel(lvl1, linkCollection, mainNav);
555    }
556    for (let lvl2 of lvl2Collection) {
557      const linkCollection = lvl2.querySelectorAll(`.${lvl2TitleClassName}`);
558      _registerLevel(lvl2, linkCollection, mainNav);
559    }
560    for (let lvl3 of lvl3Collection) {
561      const linkCollection = lvl3.querySelectorAll(`.${lvl3TitleClassName}`);
562      _registerLevel(lvl3, linkCollection, mainNav);
563    }
564  };
565  const mainNavIdName = 'mainNav';
566  const lvl1ClassName = 'mainNav__lvl1';
567  const lvl2ClassName = 'mainNav__lvl2';
568  const lvl3ClassName = 'mainNav__lvl3';
569  const lvl3TitleClassName = 'mainNav__lvl3__item__title__text';
570  const lvl1TitleClassName = 'mainNav__lvl1__item__title';
571  const lvl2TitleClassName = 'mainNav__lvl2__item__title';
572  const breadcrumbClassName = 'mainNav__breadcrumb';
573  const breadcrumbLinkClassName = 'mainNav__breadcrumb__link';
574  const breadcrumbItemLinkClassName = 'mainNav__breadcrumb__list__item__link';
575  const pageHeaderHeaderClassName = 'pageHeader__overlay__header';
576  const pageHeaderFooterClassName = 'pageHeader__footer';
577  const mainNavTeaserClassName = 'mainNav__teaser';
578  imxquery__WEBPACK_IMPORTED_MODULE_0___default().documentReady(() => {
579    const mainNav = document.getElementById(mainNavIdName);
580    if (mainNav) {
581      _registerMainNav(mainNav);
582    }
583  });
584})();
585})();
586
587// This entry need to be wrapped in an IIFE because it need to be in strict mode.
588(() => {
589"use strict";
590/* harmony import */ var imxquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8611);
591/* harmony import */ var imxquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(imxquery__WEBPACK_IMPORTED_MODULE_0__);
592
593(() => {
594  /**
595   * registers a main nav
596   *
597   * @param {Element} mainNav
598   */
599  const _registerMainNav = mainNav => {
600    const slot = mainNav.querySelector(`.${slotClassName}`);
601    const config = {
602      attributes: true,
603      childList: true,
604      subtree: true
605    };
606    const getVisibleLevel = () => {
607      if (mainNav.classList.contains(lvl2ActiveClassName)) {
608        return mainNav.querySelector('.mainNav__lvl2__item.-js-mainNav__lvl2__item--active .mainNav__lvl3');
609      } else if (mainNav.classList.contains(lvl1ActiveClassName)) {
610        return mainNav.querySelector('.mainNav__lvl1__item.-js-mainNav__lvl1__item--active .mainNav__lvl2');
611      } else {
612        return mainNav.querySelector('.mainNav__lvl1');
613      }
614    };
615    const callback = mutationList => {
616      for (const mutation of mutationList) {
617        const visibleLevel = getVisibleLevel();
618        slot.style.height = `${visibleLevel.offsetHeight}px`;
619      }
620    };
621    const observer = new MutationObserver(callback);
622    observer.observe(mainNav, config);
623    let prevWidth = 0;
624    const resizeObserver = new ResizeObserver(entries => {
625      for (const entry of entries) {
626        const width = entry.borderBoxSize?.[0].inlineSize;
627        if (typeof width === 'number' && width !== prevWidth) {
628          prevWidth = width;
629          callback(entries);
630        }
631      }
632    });
633    resizeObserver.observe(document.body);
634  };
635  const lvl1ActiveClassName = '-js-mainNav--lvl1';
636  const lvl2ActiveClassName = '-js-mainNav--lvl2';
637  const mainNavIdName = 'mainNav';
638  const slotClassName = 'slot';
639  imxquery__WEBPACK_IMPORTED_MODULE_0___default().documentReady(() => {
640    const mainNav = document.getElementById(mainNavIdName);
641    _registerMainNav(mainNav);
642  });
643})();
644})();
645
646// This entry need to be wrapped in an IIFE because it need to be in strict mode.
647(() => {
648"use strict";
649/* harmony import */ var imxquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8611);
650/* harmony import */ var imxquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(imxquery__WEBPACK_IMPORTED_MODULE_0__);
651/* harmony import */ var _helper_MainNavHelper__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(8507);
652
653
654(() => {
655  /**
656   * registers a main nav level
657   *
658   * @param {Element} breadcrumb
659   * @param {HTMLCollection} lvl1Collection
660   * @param {HTMLCollection} lvl2Collection
661   * @param {Element} mainNav
662   */
663  const _registerBreadcrumb = (breadcrumb, lvl1Collection, lvl2Collection, mainNav) => {
664    const breadcrumbList = breadcrumb.querySelectorAll(`.${breadcrumbItemClassName}`);
665    const firstBreadcrumb = breadcrumbList[0];
666    const secondBreadcrumb = breadcrumbList[1];
667    const mainNavHelper = new _helper_MainNavHelper__WEBPACK_IMPORTED_MODULE_1__/* .MainNavHelper */ .h(mainNav);
668    if (firstBreadcrumb) {
669      const firstLink = firstBreadcrumb.querySelector(`.${breadcrumbLinkClassName}`);
670      const closeFirst = () => {
671        mainNavHelper.closeLvl2();
672        mainNavHelper.closeLvl1();
673      };
674      firstLink.addEventListener('click', () => closeFirst());
675      firstLink.addEventListener('keypress', event => {
676        if (event.key === 'Enter') {
677          closeFirst();
678          mainNavHelper.getActiveFirstFocusable()?.focus();
679        }
680      });
681    }
682    if (secondBreadcrumb) {
683      const secondLink = secondBreadcrumb.querySelector(`.${breadcrumbLinkClassName}`);
684      const closeSecond = () => {
685        mainNavHelper.closeLvl2();
686      };
687      secondLink.addEventListener('click', () => closeSecond());
688      secondLink.addEventListener('keypress', event => {
689        if (event.key === 'Enter') {
690          closeSecond();
691          mainNavHelper.getActiveFirstFocusable()?.focus();
692        }
693      });
694    }
695  };
696  /**
697   * registers a main nav level
698   *
699   * @param {Element} mainNav
700   */
701  const _registerMainNav = mainNav => {
702    const lvl1Collection = mainNav.querySelectorAll(`.${lvl1ItemClassName}`);
703    const lvl2Collection = mainNav.querySelectorAll(`.${lvl2ItemClassName}`);
704    const breadcrumbCollection = mainNav.querySelectorAll(`.${breadcrumbClassName}`);
705    for (let breadcrumb of breadcrumbCollection) {
706      _registerBreadcrumb(breadcrumb, lvl1Collection, lvl2Collection, mainNav);
707    }
708  };
709  const mainNavIdName = 'mainNav';
710  const lvl1ItemClassName = 'mainNav__lvl1__item';
711  const lvl2ItemClassName = 'mainNav__lvl2__item';
712  const breadcrumbClassName = 'mainNav__breadcrumb';
713  const breadcrumbItemClassName = 'mainNav__breadcrumb__list__item';
714  const breadcrumbLinkClassName = 'mainNav__breadcrumb__list__item__link';
715  imxquery__WEBPACK_IMPORTED_MODULE_0___default().documentReady(() => {
716    const mainNav = document.getElementById(mainNavIdName);
717    if (mainNav) {
718      _registerMainNav(mainNav);
719    }
720  });
721})();
722})();
723
724// This entry need to be wrapped in an IIFE because it need to be in strict mode.
725(() => {
726"use strict";
727/* harmony import */ var imxquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8611);
728/* harmony import */ var imxquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(imxquery__WEBPACK_IMPORTED_MODULE_0__);
729/* harmony import */ var _helper_MainNavHelper__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(8507);
730
731
732(() => {
733  /**
734   * registers a main nav level
735   *
736   * @param {Element} mainNav
737   */
738  const _registerMainNav = mainNav => {
739    const mainNavHelper = new _helper_MainNavHelper__WEBPACK_IMPORTED_MODULE_1__/* .MainNavHelper */ .h(mainNav);
740    mainNavHelper.setActiveLvlClass();
741  };
742  const mainNavIdName = 'mainNav';
743  imxquery__WEBPACK_IMPORTED_MODULE_0___default().documentReady(() => {
744    const mainNav = document.getElementById(mainNavIdName);
745    if (mainNav) {
746      _registerMainNav(mainNav);
747    }
748  });
749})();
750})();
751
752/******/ })()
753;

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.