{ "version": 3, "sources": ["src/app/_services/scroll.service.ts"], "sourcesContent": ["import { ElementRef, Injectable } from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { filter, ReplaySubject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ScrollService {\n\n private scrollContainerSource = new ReplaySubject>(1);\n /**\n * Exposes the current container on the active screen that is our primary overlay area. Defaults to 'body' and changes to 'body' on page loads\n */\n public scrollContainer$ = this.scrollContainerSource.asObservable();\n\n constructor(router: Router) {\n\n router.events\n .pipe(filter(event => event instanceof NavigationEnd))\n .subscribe(() => {\n this.scrollContainerSource.next('body');\n });\n this.scrollContainerSource.next('body');\n }\n\n get scrollPosition() {\n return (window.pageYOffset\n || document.documentElement.scrollTop\n || document.body.scrollTop || 0);\n }\n\n /*\n * When in the scroll vertical position the scroll in the horizontal position is needed\n */\n get scrollPositionX() {\n return (window.pageXOffset\n || document.documentElement.scrollLeft\n || document.body.scrollLeft || 0);\n }\n\n scrollTo(top: number, el: Element | Window = window, behavior: 'auto' | 'smooth' = 'smooth') {\n el.scroll({\n top: top,\n behavior: behavior\n });\n }\n\n scrollToX(left: number, el: Element | Window = window, behavior: 'auto' | 'smooth' = 'auto') {\n el.scroll({\n left: left,\n behavior: behavior\n });\n }\n\n setScrollContainer(elem: ElementRef | undefined) {\n if (elem !== undefined) {\n this.scrollContainerSource.next(elem);\n }\n }\n}\n"], "mappings": "8GAOA,IAAaA,GAAa,IAAA,CAApB,IAAOA,EAAP,MAAOA,CAAa,CAQxBC,YAAYC,EAAc,CANlB,KAAAC,sBAAyB,IAAIC,EAAgD,CAAC,EAI/E,KAAAC,iBAAmB,KAAKF,sBAAsBG,aAAY,EAI/DJ,EAAOK,OACJC,KAAKC,EAAOC,GAASA,aAAiBC,CAAa,CAAC,EACpDC,UAAU,IAAK,CACd,KAAKT,sBAAsBU,KAAK,MAAM,CACxC,CAAC,EACH,KAAKV,sBAAsBU,KAAK,MAAM,CACxC,CAEA,IAAIC,gBAAc,CAChB,OAAQC,OAAOC,aACVC,SAASC,gBAAgBC,WACzBF,SAASG,KAAKD,WAAa,CAClC,CAKA,IAAIE,iBAAe,CACjB,OAAQN,OAAOO,aACVL,SAASC,gBAAgBK,YACzBN,SAASG,KAAKG,YAAc,CACnC,CAEAC,SAASC,EAAaC,EAAuBX,OAAQY,EAA8B,SAAQ,CACzFD,EAAGE,OAAO,CACRH,IAAKA,EACLE,SAAUA,EACX,CACH,CAEAE,UAAUC,EAAcJ,EAAuBX,OAAQY,EAA8B,OAAM,CACzFD,EAAGE,OAAO,CACRE,KAAMA,EACNH,SAAUA,EACX,CACH,CAEAI,mBAAmBC,EAAyC,CACtDA,IAASC,QACX,KAAK9B,sBAAsBU,KAAKmB,CAAI,CAExC,yCAnDWhC,GAAakC,EAAAC,CAAA,CAAA,CAAA,wBAAbnC,EAAaoC,QAAbpC,EAAaqC,UAAAC,WAFZ,MAAM,CAAA,EAEd,IAAOtC,EAAPuC,SAAOvC,CAAa,GAAA", "names": ["ScrollService", "constructor", "router", "scrollContainerSource", "ReplaySubject", "scrollContainer$", "asObservable", "events", "pipe", "filter", "event", "NavigationEnd", "subscribe", "next", "scrollPosition", "window", "pageYOffset", "document", "documentElement", "scrollTop", "body", "scrollPositionX", "pageXOffset", "scrollLeft", "scrollTo", "top", "el", "behavior", "scroll", "scrollToX", "left", "setScrollContainer", "elem", "undefined", "\u0275\u0275inject", "Router", "factory", "\u0275fac", "providedIn", "_ScrollService"] }