{"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(<HTMLElement>document.querySelector('nav .nx-breadcrumb__list'));\r\n\r\n        this.body = document.body;\r\n        this.btnBackToTop = <HTMLElement>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":""}