{ "version": 3, "sources": ["apps/business-center-client/src/app/launch-app-button/launch-app-url.ts"], "sourcesContent": ["import { inject, InjectionToken } from '@angular/core';\nimport { combineLatest, filter, map, Observable, shareReplay, startWith, switchMap } from 'rxjs';\nimport { SideNavigationContainer } from '@vendasta/atlas';\nimport { ActivatedRoute, NavigationEnd, Router } from '@angular/router';\nimport { AccountGroupService } from '../account-group';\nimport { FeatureFlagService } from '../core/feature-flag.service';\nimport { BusinessNavDataService } from '@vendasta/business-nav';\nimport { NavigationData } from '../navigation/navigation.interface';\n\n/**\n * The URL to the external app associated with the current route.\n */\nexport const LaunchAppUrlToken = new InjectionToken>(\n 'the url to the external app associated with the current route',\n {\n factory: () => {\n const accountGroupService = inject(AccountGroupService);\n const featureFlagService = inject(FeatureFlagService);\n const navDataService = inject(BusinessNavDataService);\n const router = inject(Router);\n const route = inject(ActivatedRoute);\n\n const routeData$: Observable = router.events.pipe(\n filter((event) => event instanceof NavigationEnd),\n startWith(null),\n map(() => mergeData(route)),\n shareReplay({ bufferSize: 1, refCount: true }),\n );\n\n const launchAppUrlFromRouteData$ = routeData$.pipe(map((data) => data.appUrl));\n\n const launchAppUrlForCurrentPage$: Observable = combineLatest([\n navDataService.navigationItems$.pipe(\n map((navItems): SideNavigationContainer[] => {\n return navItems\n .filter((navItem) => Boolean(navItem.sideNavigationContainer))\n .map((navItem) => navItem.sideNavigationContainer);\n }),\n ),\n router.events.pipe(\n filter((event) => event instanceof NavigationEnd),\n map((event: NavigationEnd) => event.url),\n startWith(router.routerState.snapshot.url),\n ),\n ]).pipe(\n map(([navContainers, currentPath]) => {\n const navContainerForCurrentPage = navContainers.find((navContainer) => {\n navContainer.sideNavigationItems.some((navItem) => {\n return navItem.sideNavigationLink.path === currentPath;\n });\n });\n return navContainerForCurrentPage?.url || null;\n }),\n shareReplay({ bufferSize: 1, refCount: true }),\n );\n\n const featureFlagsEnabled$ = accountGroupService.currentAccountGroup$.pipe(\n switchMap((ag) => featureFlagService.checkFeatureFlag(ag.partnerId, ag.marketId, 'bc_single_nav')),\n shareReplay({ bufferSize: 1, refCount: false }),\n );\n\n return combineLatest([\n launchAppUrlFromRouteData$.pipe(startWith('')),\n launchAppUrlForCurrentPage$.pipe(startWith('')),\n featureFlagsEnabled$,\n ]).pipe(\n map(([appUrlFromRouteData, launchAppUrlForCurrentPage, featureFlagEnabled]) => {\n if (appUrlFromRouteData) return appUrlFromRouteData;\n if (featureFlagEnabled && launchAppUrlForCurrentPage) return appUrlFromRouteData;\n return '';\n }),\n startWith(''),\n );\n },\n },\n);\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 }\n\n route.children.forEach((childRoute) => mergeData(childRoute, data));\n\n return data;\n}\n"], "mappings": "yYA6EA,SAASA,EAAUC,EAAuBC,EAAuB,CAAA,EAAE,CACjE,GAAID,EAAME,UAAUD,KAAM,CACxB,GAAM,CAAEE,OAAAA,EAAQC,oBAAAA,EAAqBC,YAAAA,EAAaC,YAAAA,CAAW,EAAKN,EAAME,SAASD,KAEjFA,EAAKI,YAAcE,IAAA,GAAKN,EAAKI,aAAgBA,GAC7CJ,EAAKE,OAASA,EACVG,IAAaL,EAAKK,YAAcA,GAEpCL,EAAKG,oBAAsBG,IAAA,GAAKN,EAAKG,qBAAwBA,EAC/D,CAEAJ,OAAAA,EAAMQ,SAASC,QAASC,GAAeX,EAAUW,EAAYT,CAAI,CAAC,EAE3DA,CACT,CA3FA,IAYaU,EAZbC,EAAAC,EAAA,KAAAC,IACAC,IAEAC,IACAC,IACAC,IACAC,IAMaR,EAAoB,IAAIS,EACnC,gEACA,CACEC,QAASA,IAAK,CACZ,IAAMC,EAAsBC,EAAOC,CAAmB,EAChDC,EAAqBF,EAAOG,CAAkB,EAC9CC,EAAiBJ,EAAOK,CAAsB,EAC9CC,EAASN,EAAOO,CAAM,EACtB9B,EAAQuB,EAAOQ,CAAc,EAS7BC,EAPyCH,EAAOI,OAAOC,KAC3DC,EAAQC,GAAUA,aAAiBC,CAAa,EAChDC,EAAU,IAAI,EACdC,EAAI,IAAMxC,EAAUC,CAAK,CAAC,EAC1BwC,EAAY,CAAEC,WAAY,EAAGC,SAAU,EAAI,CAAE,CAAC,EAGFR,KAAKK,EAAKtC,GAASA,EAAKE,MAAM,CAAC,EAEvEwC,EAAyDC,EAAc,CAC3EjB,EAAekB,iBAAiBX,KAC9BK,EAAKO,GACIA,EACJX,OAAQY,GAAYC,EAAQD,EAAQE,uBAAwB,EAC5DV,IAAKQ,GAAYA,EAAQE,uBAAuB,CACpD,CAAC,EAEJpB,EAAOI,OAAOC,KACZC,EAAQC,GAAUA,aAAiBC,CAAa,EAChDE,EAAKH,GAAyBA,EAAMc,GAAG,EACvCZ,EAAUT,EAAOsB,YAAYjD,SAASgD,GAAG,CAAC,CAC3C,CACF,EAAEhB,KACDK,EAAI,CAAC,CAACa,EAAeC,CAAW,IACKD,EAAcE,KAAMC,GAAgB,CACrEA,EAAaC,oBAAoBC,KAAMV,GAC9BA,EAAQW,mBAAmBC,OAASN,CAC5C,CACH,CAAC,GACkCH,KAAO,IAC3C,EACDV,EAAY,CAAEC,WAAY,EAAGC,SAAU,EAAI,CAAE,CAAC,EAG1CkB,EAAuBtC,EAAoBuC,qBAAqB3B,KACpE4B,EAAWC,GAAOtC,EAAmBuC,iBAAiBD,EAAGE,UAAWF,EAAGG,SAAU,eAAe,CAAC,EACjG1B,EAAY,CAAEC,WAAY,EAAGC,SAAU,EAAK,CAAE,CAAC,EAGjD,OAAOE,EAAc,CACnBZ,EAA2BE,KAAKI,EAAU,EAAE,CAAC,EAC7CK,EAA4BT,KAAKI,EAAU,EAAE,CAAC,EAC9CsB,CAAoB,CACrB,EAAE1B,KACDK,EAAI,CAAC,CAAC4B,EAAqBC,EAA4BC,CAAkB,IACnEF,GACAE,GAAsBD,EAAmCD,EACtD,EACR,EACD7B,EAAU,EAAE,CAAC,CAEjB,EACD", "names": ["mergeData", "route", "data", "snapshot", "appUrl", "injectedPageContent", "pageOptions", "breadcrumbs", "__spreadValues", "children", "forEach", "childRoute", "LaunchAppUrlToken", "init_launch_app_url", "__esmMin", "init_core", "init_esm", "init_router", "init_account_group", "init_feature_flag_service", "init_src", "InjectionToken", "factory", "accountGroupService", "inject", "AccountGroupService", "featureFlagService", "FeatureFlagService", "navDataService", "BusinessNavDataService", "router", "Router", "ActivatedRoute", "launchAppUrlFromRouteData$", "events", "pipe", "filter", "event", "NavigationEnd", "startWith", "map", "shareReplay", "bufferSize", "refCount", "launchAppUrlForCurrentPage$", "combineLatest", "navigationItems$", "navItems", "navItem", "Boolean", "sideNavigationContainer", "url", "routerState", "navContainers", "currentPath", "find", "navContainer", "sideNavigationItems", "some", "sideNavigationLink", "path", "featureFlagsEnabled$", "currentAccountGroup$", "switchMap", "ag", "checkFeatureFlag", "partnerId", "marketId", "appUrlFromRouteData", "launchAppUrlForCurrentPage", "featureFlagEnabled"] }