{"version":3,"file":"./modules/Breadcrumb.xxxxxxxx.js","mappings":"6IAGA,MAAMA,EAAiB,6BAER,MAAMC,EAMjB,YAAOC,CAAMC,EAAmBH,GAC5BI,MAAMC,KAAKC,SAASC,iBAAiBJ,IAAWK,QAAQC,IAAuBA,EAAKC,QAAQC,oBAAmBC,SAASC,IACpH,IAAIZ,EAAWY,GACfA,EAAQH,QAAQC,kBAAoB,MAAM,GAElD,CAEA,WAAAG,CAAmBD,GAAA,KAAAA,QAAAA,GACf,QAAiCP,SAASS,cAAc,6BAExDC,KAAKC,KAAOX,SAASW,KACrBD,KAAKE,aAA4BF,KAAKH,QAAQE,cAAc,mBAC5DC,KAAKG,MACT,CAEA,IAAAA,G,MAcI,OAbAC,OAAOC,gBAAgB,UAAWC,GAAMN,KAAKO,SAASD,IAAIE,QACzC,QAAjB,EAAAR,KAAKE,oBAAY,SAAEO,iBAAiB,SAAUC,IAC1C,GAAoBC,MAAjBX,KAAKY,SAAuB,CACP,KAAM,gCAC1BC,GAAcC,MAAMC,IAChBf,KAAKY,SAAW,IAAIG,EAAOC,QAC3BhB,KAAKiB,UAAUP,EAAM,G,MAGzBV,KAAKiB,UAAUP,E,IAEpB,GAEIV,IACX,CAEA,QAAAO,CAASD,GACLN,KAAKkB,qBACT,CAEA,SAAAD,CAAUP,GACNA,EAAMS,iBACNnB,KAAKC,KAAKmB,UAAUC,IAAI,gBACxB,IACIC,EAAWtB,KAAKuB,eAAiB,EADtB,GAGfvB,KAAKY,SAASY,iBAAiBxB,KAAKC,KAAMqB,EAAU,IAAI,KACpDtB,KAAKC,KAAKmB,UAAUK,OAAO,gBAC3BzB,KAAKE,aAAakB,UAAUC,IAAI,uBAAuB,GAE/D,CAEA,YAAAE,GACI,OAAOjC,SAASoC,gBAAgBC,WAAarC,SAASW,KAAK2B,cAAcD,WAAarC,SAASW,KAAK0B,SACxG,CAEQ,kBAAAE,GAGJ,OAD8B7B,KAAKH,QAAQiC,wBAAwBC,KACnC,GAAKvB,OAAOwB,YAAc,GAAKxB,OAAOyB,QAAU,CACpF,CAEQ,mBAAAf,GACJlB,KAAKH,QAAQuB,UAAUK,OAAO,yBAC9BzB,KAAKH,QAAQ+B,cAAcR,UAAUK,OAAO,aAExCzB,KAAK6B,uBACL7B,KAAKH,QAAQ+B,cAAcR,UAAUC,IAAI,aACzCrB,KAAKH,QAAQuB,UAAUC,IAAI,yBAC3BrB,KAAKkC,kBAEb,CAEQ,eAAAA,GACAlC,KAAKuB,eAAiB,MAAQjC,SAASS,cAAc,QAAQqB,UAAUe,SAAS,oBAChFnC,KAAKE,aAAakB,UAAUK,OAAO,wBAEnCzB,KAAKE,aAAakB,UAAUC,IAAI,uBAExC,EAgBApC,EAAWC,MAAMF,E","sources":["webpack:///./modules/Breadcrumb.ts"],"sourcesContent":["\r\nimport { horizontalScrolling } from '../helpers/helperFunctions';\r\n\r\nconst moduleSelector = '[data-module=\"Breadcrumb\"]';\r\n\r\nexport default class Breadcrumb {\r\n\r\n body: HTMLElement;\r\n btnBackToTop: HTMLElement;\r\n scrollTo: any;\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 Breadcrumb(element);\r\n element.dataset.moduleInitialized = 'true';\r\n });\r\n }\r\n\r\n constructor(public element: HTMLElement) {\r\n horizontalScrolling(document.querySelector('nav .nx-breadcrumb__list'));\r\n\r\n this.body = document.body;\r\n this.btnBackToTop = this.element.querySelector('.nx-back-to-top');\r\n this.init();\r\n }\r\n\r\n init(): Breadcrumb {\r\n NiveaX.addToEventStore('scroll', (e) => this.onScroll(e), window);\r\n this.btnBackToTop?.addEventListener('click', (event) => {\r\n if(this.scrollTo == undefined) {\r\n const getScrollTo = () => import(/* webpackChunkName: \"ScrollTo\" */'../ScrollTo');\r\n getScrollTo().then((module) => {\r\n this.scrollTo = new module.default();\r\n this.backToTop(event);\r\n });\r\n } else {\r\n this.backToTop(event);\r\n }\r\n }, false);\r\n\r\n return this;\r\n }\r\n\r\n onScroll(e) {\r\n this.setStickyBreadcrumb();\r\n }\r\n\r\n backToTop(event) {\r\n event.preventDefault();\r\n this.body.classList.add('nx-scrolling');\r\n let friction = 0.6;\r\n let duration = this.getScrollTop() / 2 * friction;\r\n\r\n this.scrollTo.animateScrollTop(this.body, duration, 10, () => {\r\n this.body.classList.remove('nx-scrolling');\r\n this.btnBackToTop.classList.add('nx-back-to-top--hide');\r\n });\r\n }\r\n\r\n getScrollTop() {\r\n return document.documentElement.scrollTop || document.body.parentElement.scrollTop || document.body.scrollTop;\r\n }\r\n\r\n private isStickyBreadcrumb(): boolean {\r\n \r\n const firstScrollElementTop = this.element.getBoundingClientRect().top;\r\n return firstScrollElementTop <= 0 || window.pageXOffset < 0 || window.scrollY < 0;\r\n }\r\n\r\n private setStickyBreadcrumb() {\r\n this.element.classList.remove('nx-breadcrumb--sticky');\r\n this.element.parentElement.classList.remove('nx-sticky');\r\n\r\n if (this.isStickyBreadcrumb()) {\r\n this.element.parentElement.classList.add('nx-sticky');\r\n this.element.classList.add('nx-breadcrumb--sticky');\r\n this.showToTopButton(); \r\n }\r\n }\r\n\r\n private showToTopButton() {\r\n if (this.getScrollTop() > 100 && !document.querySelector('html').classList.contains('nx-u-lock-screen')) {\r\n this.btnBackToTop.classList.remove('nx-back-to-top--hide');\r\n } else {\r\n this.btnBackToTop.classList.add('nx-back-to-top--hide');\r\n }\r\n }\r\n}\r\n\r\n// Hot Module Replacement\r\nif (module.hot) {\r\n let nodesCache: HMRNodes[] = Array.from(document.querySelectorAll(moduleSelector)).map((element: Node) => ({ nodeToReplace: element, nodeOrigin: element.cloneNode(true) }));\r\n\r\n Breadcrumb.setup(moduleSelector);\r\n\r\n module.hot.accept(() => {\r\n Breadcrumb.setup(moduleSelector);\r\n });\r\n module.hot.dispose(() => {\r\n nodesCache.forEach(({ nodeToReplace, nodeOrigin }) => { nodeToReplace = nodeToReplace.parentElement.replaceChild(nodeOrigin.cloneNode(true), nodeToReplace) });\r\n });\r\n} else {\r\n Breadcrumb.setup(moduleSelector);\r\n}\r\n"],"names":["moduleSelector","Breadcrumb","setup","selector","Array","from","document","querySelectorAll","filter","node","dataset","moduleInitialized","forEach","element","constructor","querySelector","this","body","btnBackToTop","init","NiveaX","addToEventStore","e","onScroll","window","addEventListener","event","undefined","scrollTo","getScrollTo","then","module","default","backToTop","setStickyBreadcrumb","preventDefault","classList","add","duration","getScrollTop","animateScrollTop","remove","documentElement","scrollTop","parentElement","isStickyBreadcrumb","getBoundingClientRect","top","pageXOffset","scrollY","showToTopButton","contains"],"sourceRoot":""}