{ "version": 3, "sources": ["src/app/_services/scroll.service.ts"], "sourcesContent": ["import { ElementRef, Injectable } from '@angular/core';\r\nimport { NavigationEnd, Router } from '@angular/router';\r\nimport { filter, ReplaySubject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ScrollService {\r\n\r\n private scrollContainerSource = new ReplaySubject>(1);\r\n /**\r\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\r\n */\r\n public scrollContainer$ = this.scrollContainerSource.asObservable();\r\n\r\n constructor(router: Router) {\r\n\r\n router.events\r\n .pipe(filter(event => event instanceof NavigationEnd))\r\n .subscribe(() => {\r\n this.scrollContainerSource.next('body');\r\n });\r\n this.scrollContainerSource.next('body');\r\n }\r\n\r\n get scrollPosition() {\r\n return (window.pageYOffset\r\n || document.documentElement.scrollTop\r\n || document.body.scrollTop || 0);\r\n }\r\n\r\n /*\r\n * When in the scroll vertical position the scroll in the horizontal position is needed\r\n */\r\n get scrollPositionX() {\r\n return (window.pageXOffset\r\n || document.documentElement.scrollLeft\r\n || document.body.scrollLeft || 0);\r\n }\r\n\r\n scrollTo(top: number, el: Element | Window = window, behavior: 'auto' | 'smooth' = 'smooth') {\r\n el.scroll({\r\n top: top,\r\n behavior: behavior\r\n });\r\n }\r\n\r\n scrollToX(left: number, el: Element | Window = window, behavior: 'auto' | 'smooth' = 'auto') {\r\n el.scroll({\r\n left: left,\r\n behavior: behavior\r\n });\r\n }\r\n\r\n setScrollContainer(elem: ElementRef | undefined) {\r\n if (elem !== undefined) {\r\n this.scrollContainerSource.next(elem);\r\n }\r\n }\r\n}\r\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"] }