{ "version": 3, "sources": ["apps/business-center-client/src/app/navigation/sidepanel.service.ts"], "sourcesContent": ["import { Injectable } from '@angular/core';\nimport { NavigationEnd, Router, NavigationStart } from '@angular/router';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nexport enum Mode {\n OVER = 'over',\n PUSH = 'push',\n SIDE = 'side',\n}\n\nexport enum Size {\n SMALL = 'sml',\n REGULAR = 'reg',\n LARGE = 'lrg',\n FULLSCREEN = 'fullscreen',\n}\n\nexport enum SizePixels {\n SMALL = 75,\n REGULAR = 275,\n LARGE = 550,\n}\n\n@Injectable({ providedIn: 'root' })\nexport class SidepanelService {\n originalSize: Size;\n originalMode: Mode;\n\n private _mode: Mode;\n\n private previousUrl: string;\n\n constructor(private router: Router) {\n this.router.events\n .pipe(filter((event) => event instanceof NavigationEnd || event instanceof NavigationStart))\n .subscribe((event: NavigationEnd | NavigationStart) => {\n if (event instanceof NavigationStart) {\n this.previousUrl = event.url.split('?')[0];\n } else if (this.previousUrl !== event.url.split('?')[0]) {\n this.visible$$.next(false);\n }\n });\n }\n\n private visible$$: BehaviorSubject = new BehaviorSubject(false);\n get visible$(): Observable {\n return this.visible$$.asObservable();\n }\n\n private mode$$: BehaviorSubject = new BehaviorSubject(Mode.OVER);\n get mode$(): Observable {\n return this.mode$$.asObservable();\n }\n\n private modalMode$$: BehaviorSubject = new BehaviorSubject(true);\n get modalMode$(): Observable {\n return this.modalMode$$.asObservable();\n }\n\n size$$: BehaviorSubject = new BehaviorSubject(Size.REGULAR);\n get size$(): Observable {\n return this.size$$.asObservable();\n }\n\n private component$$: BehaviorSubject = new BehaviorSubject(null);\n get view$(): Observable {\n return this.component$$.asObservable();\n }\n\n set view(component: any) {\n this.component$$.next(component);\n }\n\n public clearView(): void {\n this.component$$.next(null);\n }\n\n set mode(mode: Mode) {\n this._mode = mode;\n // If they wanted push or side, and the screen is small and the panel is large, then go over\n if ((mode === Mode.PUSH || mode === Mode.SIDE) && isNotLarge() && this.size$$.getValue() === Size.LARGE) {\n mode = Mode.OVER;\n }\n this.mode$$.next(mode);\n }\n\n set size(size: Size) {\n this.size$$.next(size);\n }\n\n public toggleFullscreen(): void {\n const currentSize = this.size$$.getValue();\n const currentMode = this.mode$$.getValue();\n if (!this.originalSize) {\n this.originalSize = currentSize;\n }\n if (!this.originalMode) {\n this.originalMode = currentMode;\n }\n if (currentSize === Size.FULLSCREEN) {\n this.size = this.originalSize;\n this.mode = this.originalMode;\n this.originalSize = undefined;\n this.originalMode = undefined;\n } else {\n this.size = Size.FULLSCREEN;\n this.mode = Mode.OVER;\n }\n }\n\n public clearFullscreen(): void {\n if (this.originalSize) {\n this.size = this.originalSize;\n }\n if (this.originalMode) {\n this.mode = this.originalMode;\n }\n this.originalSize = undefined;\n this.originalMode = undefined;\n }\n\n public open(): void {\n this.mode = this._mode; // Ensures mode responds to size changes\n this.visible$$.next(true);\n }\n\n public close(): void {\n this.originalSize = undefined;\n this.visible$$.next(false);\n }\n\n public toggle(): void {\n this.mode = this._mode; // Ensures mode responds to size changes\n this.visible$$.next(!this.visible$$.getValue());\n }\n\n public setView(size: Size, mode: Mode, component: any, modalMode = true): void {\n this.size = size;\n this.mode = mode;\n this.view = component;\n this.modalMode$$.next(modalMode);\n }\n\n public setViewThenOpen(size: Size, mode: Mode, component: any, modalMode = true): void {\n this.setView(size, mode, component, modalMode);\n this.open();\n }\n\n public getPixels(): number {\n switch (this.size$$.getValue()) {\n case Size.LARGE:\n return SizePixels.LARGE;\n case Size.REGULAR:\n return SizePixels.REGULAR;\n case Size.SMALL:\n return SizePixels.SMALL;\n }\n return 0;\n }\n}\n\nexport function isNotLarge(): boolean {\n return window.matchMedia('(max-width: 1280px)').matches;\n}\n"], "mappings": "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", "names": ["isNotLarge", "window", "matchMedia", "matches", "Mode", "Size", "SizePixels", "SidepanelService", "init_sidepanel_service", "__esmMin", "init_router", "init_esm", "init_operators", "constructor", "router", "visible$$", "BehaviorSubject", "mode$$", "OVER", "modalMode$$", "size$$", "REGULAR", "component$$", "events", "pipe", "filter", "event", "NavigationEnd", "NavigationStart", "subscribe", "previousUrl", "url", "split", "next", "visible$", "asObservable", "mode$", "modalMode$", "size$", "view$", "view", "component", "clearView", "mode", "_mode", "PUSH", "SIDE", "getValue", "LARGE", "size", "toggleFullscreen", "currentSize", "currentMode", "originalSize", "originalMode", "FULLSCREEN", "undefined", "clearFullscreen", "open", "close", "toggle", "setView", "modalMode", "setViewThenOpen", "getPixels", "SMALL", "\u0275\u0275inject", "Router", "factory", "\u0275fac", "providedIn"] }