{"version":3,"sources":["webpack:///./modules/LazyLoadingModule.ts"],"names":["__webpack_require__","r","__webpack_exports__","_helpers_DOMHelpers__WEBPACK_IMPORTED_MODULE_0__","LazyLoadingModule","element","eagerLoading","_this","this","load","ajaxUrl","getAttribute","replace","document","body","fetchAndUpdate","once_1","onmouseover","setup","selector","Array","from","querySelectorAll","filter","node","dataset","moduleInitialized","forEach","prototype","url","fetch","then","res","ok","text","updateModule","htmlResponseElement","createHtmlElement","querySelector","targetAttribute","searchTargetPlaceholders","remove","insertModule","outerHTML","target","content","removeAttribute","Eucerin","initModules","str","wrapper","Object","innerHTML"],"mappings":"0FAAAA,EAAAC,EAAAC,GAAA,IAAAC,EAAAH,EAAA,GAIAI,EAAA,WAUI,SAAAA,EAAmBC,EAA6BC,GAAhD,IAAAC,EAAAC,UAAgD,IAAAF,OAAA,GAA7BE,KAAAH,UAA6BG,KAAAF,eAC5C,IAAMG,EAAO,WACTF,EAAKG,QAAUH,EAAKF,QAAQM,aAAa,iBACzCJ,EAAKG,QAAUH,EAAKG,QAAQE,QAAQ,kBAAmBC,SAASC,KAAKH,aAAa,iBAClFJ,EAAKQ,eAAeR,EAAKG,UAE7B,GAAIF,KAAKH,QAAQM,aAAa,sBAAwBL,EAAc,CAChE,IAAIU,GAAO,EACXX,EAAQY,YAAc,WACdD,IACJA,GAAO,EACPP,WAIJA,IAyCZ,OA/DWL,EAAAc,MAAP,SAAaC,QAAA,IAAAA,MALM,qCAMfC,MAAMC,KAAKR,SAASS,iBAAiBH,IAAWI,OAAO,SAACC,GAAsB,OAACA,EAAKC,QAAQC,oBAAmBC,QAAQ,SAACtB,GACpH,IAAID,EAAkBC,GACtBA,EAAQoB,QAAQC,kBAAoB,UAuBpCtB,EAAAwB,UAAAb,eAAR,SAAuBc,GAAvB,IAAAtB,EAAAC,KACIsB,MAAMD,GACDE,KAAK,SAACC,GAAQ,OAAAA,EAAIC,GAAKD,EAAIE,OAAS,OACpCH,KAAK,SAACG,GAAS,OAAAA,GAAQ3B,EAAK4B,aAAaD,MAG1C9B,EAAAwB,UAAAO,aAAR,SAAqBD,GAArB,IAAA3B,EAAAC,KACQ4B,EAAsB5B,KAAK6B,kBAAkBH,GAC9CE,EAAoBE,cAAc,yBACjCF,EAAoBd,iBAAiB,wBAAwBK,QAAQ,SAACtB,GAClE,IAAMkC,EAAkBlC,EAAQM,aAAa,sBAC7CJ,EAAKiC,yBAAyB3B,SAASyB,cAAc,iBAAiBC,EAAe,MAAOlC,GAC5FA,EAAQoC,WAEZjC,KAAKkC,aAAalC,KAAKH,QAAS+B,EAAoBO,YAEpDnC,KAAKkC,aAAalC,KAAKH,QAAS6B,IAIhC9B,EAAAwB,UAAAY,yBAAR,SAAiCI,EAAQC,GAChCD,IACLC,EAAQC,gBAAgB,UACxBD,EAAQC,gBAAgB,sBACxBtC,KAAKkC,aAAaE,EAAQC,EAAQF,aAG9BvC,EAAAwB,UAAAc,aAAR,SAAqBE,EAASZ,GAC1BY,EAAOD,UAAYX,EACnBe,QAAQC,eAGJ5C,EAAAwB,UAAAS,kBAAR,SAA0BY,GACtB,IAAMC,EAAUC,OAAAhD,EAAA,EAAAgD,CAAU,IAE1B,OADAD,EAAQE,UAAYH,EACCC,GAE7B9C,EAlEA,eAoEA,IAAIA,EAAkBc","file":"./modules/LazyLoadingModule.09005fc2.js","sourcesContent":["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":""}