{"version":3,"sources":["webpack:///./modules/BackToTopBtn.ts"],"names":["__webpack_require__","r","__webpack_exports__","BackToTopBtn","element","_this","this","closest","querySelector","topPos","getBoundingClientRect","top","window","scrollY","addEventListener","scrollFunction","scrollToSmoothly","setup","selector","Array","from","document","querySelectorAll","filter","node","dataset","moduleInitialized","forEach","prototype","pageYOffset","classList","add","remove","pos","time","currentPos","start","requestAnimationFrame","step","currentTime","progress","scrollTo"],"mappings":"0FAAAA,EAAAC,EAAAC,GAAA,IAEAC,EAAA,WAQI,SAAAA,EAAmBC,GAAnB,IAAAC,EAAAC,KACI,GADeA,KAAAF,WACXE,KAAKF,QAAQG,QAAQ,QAAQC,cAAc,aAA/C,CACA,IAAMC,EAASH,KAAKF,QAAQG,QAAQ,QAAQG,wBAAwBC,IAAMC,OAAOC,QACjFD,OAAOE,iBAAiB,SAAU,WAC9BT,EAAKU,mBAETT,KAAKF,QAAQU,iBAAiB,QAAS,WACnCT,EAAKW,iBAAiBP,EAAQ,QA4B1C,OA1CWN,EAAAc,MAAP,SAAaC,QAAA,IAAAA,MAHM,gCAIfC,MAAMC,KAAKC,SAASC,iBAAiBJ,IAAWK,OAAO,SAACC,GAAsB,OAACA,EAAKC,QAAQC,oBAAmBC,QAAQ,SAACvB,GACpH,IAAID,EAAaC,GACjBA,EAAQqB,QAAQC,kBAAoB,UAepCvB,EAAAyB,UAAAb,eAAR,WACIH,OAAOiB,YAAc,IAAMvB,KAAKF,QAAQ0B,UAAUC,IAAI,WAAazB,KAAKF,QAAQ0B,UAAUE,OAAO,YAG7F7B,EAAAyB,UAAAZ,iBAAR,SAAyBiB,EAAKC,GAC1B,IAAIC,EAAavB,OAAOiB,YACpBO,EAAQ,KACA,MAARF,IAAcA,EAAO,KACzBD,GAAOA,EAAKC,GAAQA,EACpBtB,OAAOyB,sBAAsB,SAASC,EAAKC,GAEvC,IAAIC,EAAWD,GADfH,EAASA,GAAQG,GAEbJ,EAAaF,EACbrB,OAAO6B,SAAS,GAAKR,EAAME,GAAcK,EAAWN,EAAQC,GAE5DvB,OAAO6B,SAAS,EAAGN,GAAeA,EAAaF,GAAOO,EAAWN,GAEjEM,EAAWN,EACXtB,OAAOyB,sBAAsBC,GAE7B1B,OAAO6B,SAAS,EAAGR,MAInC9B,EA3CA,eA6CA,IAAIA,EAAac","file":"./modules/BackToTopBtn.af49bfb0.js","sourcesContent":["const moduleSelector = '[data-module=\"BackToTopBtn\"]';\r\n\r\nexport default class BackToTopBtn {\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 BackToTopBtn(element);\r\n element.dataset.moduleInitialized = 'true';\r\n });\r\n }\r\n\r\n constructor(public element: HTMLElement) {\r\n if (this.element.closest(\"body\").querySelector(\".checkout\")) return\r\n const topPos = this.element.closest(\"body\").getBoundingClientRect().top + window.scrollY\r\n window.addEventListener(\"scroll\", () => {\r\n this.scrollFunction();\r\n });\r\n this.element.addEventListener('click', () => {\r\n this.scrollToSmoothly(topPos, 150);\r\n })\r\n }\r\n\r\n private scrollFunction() {\r\n window.pageYOffset > 100 ? this.element.classList.add(\"visible\") : this.element.classList.remove(\"visible\");\r\n }\r\n\r\n private scrollToSmoothly(pos, time) {\r\n var currentPos = window.pageYOffset;\r\n var start = null;\r\n if (time == null) time = 500;\r\n pos = +pos, time = +time;\r\n window.requestAnimationFrame(function step(currentTime) {\r\n start = !start ? currentTime : start;\r\n var progress = currentTime - start;\r\n if (currentPos < pos) {\r\n window.scrollTo(0, ((pos - currentPos) * progress / time) + currentPos);\r\n } else {\r\n window.scrollTo(0, currentPos - ((currentPos - pos) * progress / time));\r\n }\r\n if (progress < time) {\r\n window.requestAnimationFrame(step);\r\n } else {\r\n window.scrollTo(0, pos);\r\n }\r\n });\r\n }\r\n}\r\n\r\nnew BackToTopBtn.setup();"],"sourceRoot":""}