{ "version": 3, "sources": ["apps/business-center-client/src/app/navigation/navigation.service.ts"], "sourcesContent": ["import { Injectable } from '@angular/core';\nimport { ActivatedRoute, NavigationEnd, NavigationStart, Router } from '@angular/router';\nimport { Breadcrumbs } from '@vendasta/uikit';\nimport {\n asyncScheduler,\n BehaviorSubject,\n combineLatest,\n distinctUntilChanged,\n filter,\n map,\n Observable,\n observeOn,\n shareReplay,\n startWith,\n} from 'rxjs';\nimport { NavActionButton, NavigationData } from './navigation.interface';\n\nfunction mergeData(route: ActivatedRoute, data: NavigationData = {}): NavigationData {\n if (route.snapshot?.data) {\n const { appUrl, injectedPageContent, pageOptions, breadcrumbs } = route.snapshot.data;\n\n data.pageOptions = { ...data.pageOptions, ...pageOptions };\n data.appUrl = appUrl;\n if (breadcrumbs) data.breadcrumbs = breadcrumbs;\n\n data.injectedPageContent = { ...data.injectedPageContent, ...injectedPageContent };\n data.title = data.title || route.snapshot.data.title;\n }\n\n route.children.forEach((childRoute) => mergeData(childRoute, data));\n\n return data;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class NavigationService {\n private actionButtons$$: BehaviorSubject = new BehaviorSubject([]);\n\n readonly routeData$: Observable = this.router.events.pipe(\n filter((event) => event instanceof NavigationEnd),\n startWith(null),\n map(() => mergeData(this.route)),\n shareReplay({ bufferSize: 1, refCount: false }),\n );\n\n private readonly breadcrumbs$$ = new BehaviorSubject([]);\n public readonly breadcrumbs$ = combineLatest([\n this.routeData$.pipe(map((data) => data.breadcrumbs)),\n this.breadcrumbs$$.pipe(observeOn(asyncScheduler)),\n ]).pipe(\n map(([dataBreadcrumbs, breadcrumbs]) => {\n return dataBreadcrumbs?.length ? dataBreadcrumbs : breadcrumbs;\n }),\n );\n\n private readonly pageOptions$ = this.routeData$.pipe(map((data) => data.pageOptions));\n public readonly displayDateSelector$ = this.pageOptions$.pipe(map((opts) => opts.displayDateSelector));\n public readonly displayPrintButton$ = this.pageOptions$.pipe(map((opts) => opts.displayPrintButton));\n public readonly displayComposeButton$ = this.pageOptions$.pipe(map((opts) => opts.displayComposeButton));\n public readonly displayFilterButton$ = this.pageOptions$.pipe(map((opts) => opts.displayFilterButton));\n public readonly displayFilterContainer$ = this.pageOptions$.pipe(map((opts) => opts.displayFilterContainer));\n public readonly displayFullScreen$ = this.pageOptions$.pipe(map((opts) => opts.displayFullScreen));\n public readonly subtractToolbarOffset$ = this.pageOptions$.pipe(map((opts) => opts.subtractToolbarOffset));\n public readonly hideNavToolbar$ = this.pageOptions$.pipe(map((opts) => opts.hideNavToolbar));\n\n private readonly dataActionButtons$ = this.routeData$.pipe(map((data) => data.injectedPageContent?.actionButtons));\n public readonly actionButtons$ = combineLatest([this.dataActionButtons$, this.actionButtons$$]).pipe(\n map(([dataButtons, actionButtons]) => [...(dataButtons || []), ...actionButtons]),\n );\n\n constructor(\n private readonly router: Router,\n private readonly route: ActivatedRoute,\n ) {\n this.router.events\n .pipe(\n filter((event) => event instanceof NavigationStart),\n distinctUntilChanged((prev, curr) => prev['url'] === curr['url']),\n )\n .subscribe(() => this.actionButtons$$.next([]));\n }\n\n setBreadcrumbs(breadcrumbs: Breadcrumbs[]): void {\n this.breadcrumbs$$.next(breadcrumbs);\n }\n\n setActionButtons(actionButtons: NavActionButton[]): void {\n this.actionButtons$$.next(actionButtons);\n }\n}\n"], "mappings": "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", "names": ["mergeData", "route", "data", "snapshot", "appUrl", "injectedPageContent", "pageOptions", "breadcrumbs", "__spreadValues", "title", "children", "forEach", "childRoute", "NavigationService", "init_navigation_service", "__esmMin", "init_router", "init_esm", "constructor", "router", "actionButtons$$", "BehaviorSubject", "routeData$", "events", "pipe", "filter", "event", "NavigationEnd", "startWith", "map", "shareReplay", "bufferSize", "refCount", "breadcrumbs$$", "breadcrumbs$", "combineLatest", "observeOn", "asyncScheduler", "dataBreadcrumbs", "length", "pageOptions$", "displayDateSelector$", "opts", "displayDateSelector", "displayPrintButton$", "displayPrintButton", "displayComposeButton$", "displayComposeButton", "displayFilterButton$", "displayFilterButton", "displayFilterContainer$", "displayFilterContainer", "displayFullScreen$", "displayFullScreen", "subtractToolbarOffset$", "subtractToolbarOffset", "hideNavToolbar$", "hideNavToolbar", "dataActionButtons$", "actionButtons", "actionButtons$", "dataButtons", "NavigationStart", "distinctUntilChanged", "prev", "curr", "subscribe", "next", "setBreadcrumbs", "setActionButtons", "\u0275\u0275inject", "Router", "ActivatedRoute", "factory", "\u0275fac", "providedIn"] }