{"version":3,"sources":["webpack:///./modules/HeaderLanguageSelector.ts","webpack:///./modules/LazyLoadingModule.ts"],"names":["__webpack_require__","r","__webpack_exports__","_LazyLoadingModule__WEBPACK_IMPORTED_MODULE_0__","HeaderLanguageSelector","element","this","Eucerin","isDesktop","init","cloneDesktopMarkupToMobile","setup","selector","Array","from","document","querySelectorAll","filter","node","dataset","moduleInitialized","forEach","prototype","droplistBtn","querySelector","headerLanguageButton","languageSelectorElement","classList","add","onClick","isTablet","isMobile","onHover","closeOnOutsideClick","_this","addEventListener","e","currentTarget","closest","toggle","remove","window","event","target","mobileMarkup","desktopMarkup","replaceMarkup","innerHTML","once","onclick","parentNode","_helpers_DOMHelpers__WEBPACK_IMPORTED_MODULE_0__","LazyLoadingModule","eagerLoading","load","ajaxUrl","getAttribute","replace","body","fetchAndUpdate","once_1","onmouseover","url","fetch","then","res","ok","text","updateModule","htmlResponseElement","createHtmlElement","targetAttribute","searchTargetPlaceholders","insertModule","outerHTML","content","removeAttribute","initModules","str","wrapper","Object"],"mappings":"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","file":"./modules/HeaderLanguageSelector.9b17dca7.js","sourcesContent":["import LazyLoadingModule from \"./LazyLoadingModule\";\r\n\r\nconst moduleSelector = '[data-module=\"HeaderLanguageSelector\"]';\r\nexport default class HeaderLanguageSelector {\r\n droplistBtn: HTMLElement;\r\n headerLanguageButton: HTMLElement;\r\n mobileMarkup;\r\n desktopMarkup;\r\n desktopModule;\r\n languageSelectorElement;\r\n static setup(selector: string = moduleSelector): void {\r\n Array.from(document.querySelectorAll(selector)).filter((node: HTMLElement) => !node.dataset.moduleInitialized).forEach((element: HTMLElement) => {\r\n new HeaderLanguageSelector(element);\r\n element.dataset.moduleInitialized = 'true';\r\n });\r\n }\r\n\r\n constructor(public element: HTMLElement) {\r\n if (Eucerin.isDesktop) {\r\n this.init();\r\n } else {\r\n this.cloneDesktopMarkupToMobile();\r\n }\r\n }\r\n\r\n private init() {\r\n if (Eucerin.isDesktop) {\r\n this.droplistBtn = document.querySelector(\".desktop-language-selector .droplist-btn\");\r\n this.headerLanguageButton = document.querySelector(\".desktop-language-selector .language-selector-button\");\r\n this.languageSelectorElement = document.querySelector(\".desktop-language-selector .header-language-selector\");\r\n } else {\r\n this.droplistBtn = document.querySelector(\".mobile-language-selector .droplist-btn\");\r\n this.headerLanguageButton = document.querySelector(\".mobile-language-selector .language-selector-button\");\r\n this.languageSelectorElement = document.querySelector(\".mobile-language-selector .header-language-selector\");\r\n document.querySelector(\".uk-offcanvas-bar\") ? document.querySelector(\".uk-offcanvas-bar\").classList.add(\"language-selector-rendered\") : \"\";\r\n }\r\n if (!this.droplistBtn) return;\r\n this.onClick();\r\n !Eucerin.isTablet && !Eucerin.isMobile ? this.onHover() : \"\";\r\n this.closeOnOutsideClick();\r\n }\r\n\r\n private onClick() {\r\n this.droplistBtn.addEventListener(\"click\", (e) => {\r\n const target = e.currentTarget as HTMLBRElement;\r\n target.closest(\".droplist-content\").classList.toggle(\"opened\");\r\n })\r\n this.headerLanguageButton.addEventListener(\"click\", () => {\r\n this.languageSelectorElement.classList.toggle(\"opened-language-layer\");\r\n if (Eucerin.isDesktop) {\r\n document.querySelector(\".desktop-language-selector\").classList.toggle(\"language-selector-opened\")\r\n document.querySelector(\"body\").classList.toggle(\"language-selector-active\")\r\n };\r\n })\r\n }\r\n\r\n private onHover() {\r\n this.headerLanguageButton.closest(\".header-language-selector\").addEventListener(\"mouseover\", () => {\r\n this.languageSelectorElement.classList.add(\"opened-language-layer\");\r\n if (Eucerin.isDesktop) {\r\n document.querySelector(\".desktop-language-selector\") && document.querySelector(\".desktop-language-selector\").classList.add(\"language-selector-opened\")\r\n document.querySelector(\"body\").classList.add(\"language-selector-active\")\r\n };\r\n })\r\n this.headerLanguageButton.closest(\".header-language-selector\").addEventListener(\"mouseleave\", () => {\r\n this.languageSelectorElement.classList.remove(\"opened-language-layer\");\r\n if (Eucerin.isDesktop) {\r\n document.querySelector(\".desktop-language-selector\") && document.querySelector(\".desktop-language-selector\").classList.remove(\"language-selector-opened\")\r\n document.querySelector(\"body\").classList.remove(\"language-selector-active\")\r\n };\r\n })\r\n }\r\n\r\n private closeOnOutsideClick() {\r\n window.addEventListener(\"click\", (event: any) => {\r\n const target = event.target;\r\n if (!target.closest(\".language-selector-button\") && !target.closest(\".droplist-btn\")) {\r\n this.languageSelectorElement.classList.remove(\"opened-language-layer\");\r\n this.languageSelectorElement.querySelector(\".droplist-content\").classList.remove(\"opened\");\r\n }\r\n })\r\n }\r\n\r\n private cloneDesktopMarkupToMobile() {\r\n this.mobileMarkup = document.querySelector(\".mobile-language-selector\");\r\n this.desktopMarkup = document.querySelector(\".desktop-language-selector\") && document.querySelector(\".desktop-language-selector .header-language-selector\");\r\n if (this.mobileMarkup && this.desktopMarkup) {\r\n this.replaceMarkup();\r\n }\r\n }\r\n\r\n static once = false;\r\n\r\n private replaceMarkup() {\r\n this.mobileMarkup.innerHTML = `
${this.desktopMarkup.innerHTML}`\r\n this.init();\r\n if (HeaderLanguageSelector.once && this.languageSelectorElement) {\r\n this.languageSelectorElement.classList.toggle(\"opened-language-layer\");\r\n }\r\n\r\n if (HeaderLanguageSelector.once) return;\r\n HeaderLanguageSelector.once = true;\r\n\r\n const desktopMarkup = this.desktopMarkup;\r\n this.mobileMarkup.onclick = () => {\r\n if (!desktopMarkup.parentNode) return;\r\n new LazyLoadingModule(desktopMarkup.parentNode, true);\r\n this.desktopMarkup.parentNode.dataset.moduleInitialized = 'true';\r\n };\r\n }\r\n}\r\n\r\nnew HeaderLanguageSelector.setup();","import { createDiv } from \"../helpers/DOMHelpers\";\r\n\r\nconst moduleSelector = '[data-module=\"LazyLoadingModule\"]';\r\n\r\nexport default class LazyLoadingModule {\r\n ajaxUrl: string;\r\n\r\n static setup(selector: string = moduleSelector): void {\r\n Array.from(document.querySelectorAll(selector)).filter((node: HTMLElement) => !node.dataset.moduleInitialized).forEach((element: HTMLElement) => {\r\n new LazyLoadingModule(element);\r\n element.dataset.moduleInitialized = 'true';\r\n });\r\n }\r\n\r\n constructor(public element: HTMLElement, public eagerLoading: boolean = false) {\r\n const load = () => {\r\n this.ajaxUrl = this.element.getAttribute(\"data-ajax-url\");\r\n this.ajaxUrl = this.ajaxUrl.replace('{contextitemid}', document.body.getAttribute('data-item-id'));\r\n this.fetchAndUpdate(this.ajaxUrl)\r\n }\r\n if (this.element.getAttribute(\"data-onmouseover\") && !eagerLoading) {\r\n let once = false;\r\n element.onmouseover = () => {\r\n if (once) return;\r\n once = true;\r\n load();\r\n }\r\n }\r\n else {\r\n load();\r\n }\r\n }\r\n\r\n private fetchAndUpdate(url: string): void {\r\n fetch(url)\r\n .then((res) => res.ok ? res.text() : null)\r\n .then((text) => text && this.updateModule(text))\r\n }\r\n\r\n private updateModule(text) {\r\n let htmlResponseElement = this.createHtmlElement(text);\r\n if(htmlResponseElement.querySelector(\"[target-placeholder]\")){\r\n htmlResponseElement.querySelectorAll(\"[target-placeholder]\").forEach((element: HTMLElement) => {\r\n const targetAttribute = element.getAttribute(\"target-placeholder\")\r\n this.searchTargetPlaceholders(document.querySelector(`[placeholder=\"${targetAttribute}\"]`), element);\r\n element.remove();\r\n });\r\n this.insertModule(this.element, htmlResponseElement.outerHTML)\r\n } else {\r\n this.insertModule(this.element, text)\r\n }\r\n }\r\n\r\n private searchTargetPlaceholders(target, content) {\r\n if (!target) return;\r\n content.removeAttribute(\"hidden\") \r\n content.removeAttribute(\"target-placeholder\");\r\n this.insertModule(target, content.outerHTML)\r\n }\r\n\r\n private insertModule(target , res){\r\n target.outerHTML = res;\r\n Eucerin.initModules();\r\n }\r\n\r\n private createHtmlElement(str: string): HTMLElement {\r\n const wrapper = createDiv('');\r\n wrapper.innerHTML = str;\r\n return wrapper;\r\n }\r\n}\r\n\r\nnew LazyLoadingModule.setup();"],"sourceRoot":""}