{"version":3,"file":"7016.8b7331d63dc79411.js","mappings":"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","names":["i0","ctx_r1","numClipsInStack","PAGE","TabsMainPage","_TabsMainPage","constructor","store","events","userService","configService","translate","this","isNaN","Number","tabsRendered","flashBadge","hideTabBar","tab1","path","title","icon","name","tab2","tab3","hide","tab4","badge","tab5","selectedTab$","Subject","onDestroy$","subscriptions","Subscription","ngOnInit","isLoggedIn$","appConfig","then","config","isWidgetActive","startPath","startPage","splash","navStart","navStartParams","id","startPageParams","ionTabsDidChange","tab","console","log","get","pipe","take","subscribe","res","select","selectMyStackClipIds","takeUntil","next","Array","isArray","length","error","warn","selectIdEdit","seenOverviewTour$","combineLatest","selectTourSeenOverview","map","selected","tourSeenOverview","startWith","ngAfterViewInit","setTimeout","event","ionViewWillEnter","subFlash","EventActions","FLASH_MYSTACK","flashMyStack","bind","subHide","TABBAR_HIDE","onHideTabbar","subShow","TABBAR_SHOW","onShowTabbar","subShowCapture","TAB_CAPTURE_SHOW","showCapture","subHideCapture","TAB_CAPTURE_HIDE","hideCapture","add","ionViewWillLeave","unsubscribe","getPlacements","children","_b","_a","tabs","tabBar","el","content","document","querySelector","ngOnDestroy","complete","setTourSeen","dispatch","viewstateActions","clearTimeout","flashTimer","SHOW_CAPTURE_TAB","i1","i2","i3","i4","i5","selectors","viewQuery","rf","ctx","$event","_r1","TabsMainPage_ion_badge_22_Template","tmp_3_0","includes","tmp_16_0","IonTabs","IonTabBar","IonTabButton","IonIcon","IonLabel","NgIf","IonBadge","AsyncPipe","styles","TABS_ROUTES","component","loadComponent","Promise","all","__webpack_require__","e","m","StudioPage","EditStudioPage","redirectTo","pathMatch","ProjectDetailPage","DiscoverPage","CapturePage","canActivate","_AuthGuard","AuthGuard","router","state","isLoggedIn","parseUrl","url","factory","ɵfac","providedIn","StackPlayPage","StackEditPage","SocialPage","ClipEditPage","CommunityPage","HelpPage"],"ignoreList":[],"sourceRoot":"webpack:///","sources":["./src/app/pages/tabs-main/tabs-main.page.html","./src/app/pages/tabs-main/tabs-main.page.ts","./src/app/tabs.routes.ts","./src/app/core/guards/auth.guard.ts"],"sourcesContent":["<!-- @format -->\n\n<ion-tabs #mainTabs (ionTabsDidChange)=\"ionTabsDidChange($event)\">\n <ion-tab-bar class=\"floating-tabs\" slot=\"bottom\" [class.tabbar-hidden]=\"hideTabBar\">\n <div class=\"floating-tabs__bar\">\n <ion-tab-button\n [tab]=\"tab1.path\"\n [class.tab-hidden]=\"tab1.hide\"\n [class.tab-selected]=\"(selectedTab$ | async)?.includes(tab1.name)\"\n >\n <ion-icon [name]=\"tab1.icon\"></ion-icon>\n <ion-label>{{ tab1.title }}</ion-label>\n </ion-tab-button>\n\n <ion-tab-button [tab]=\"tab2.path\" [class.tab-hidden]=\"tab2.hide\">\n <ion-icon [name]=\"tab2.icon\"></ion-icon>\n <ion-label>{{ tab2.title }}</ion-label>\n </ion-tab-button>\n\n <ion-tab-button [tab]=\"tab3.path\" [class.tab-hidden]=\"tab3.hide\">\n <ion-icon [name]=\"tab3.icon\"></ion-icon>\n <ion-label>{{ tab3.title }}</ion-label>\n </ion-tab-button>\n\n <ion-tab-button \n [tab]=\"tab4.path\" \n class=\"flashy\" \n [class.flash-badge]=\"flashBadge\"\n [class.tab-selected]=\"(selectedTab$ | async)?.includes(tab4.name)\"\n >\n <ion-icon [name]=\"tab4.icon\"></ion-icon>\n <ion-label>{{ tab4.title }}</ion-label>\n <ion-badge *ngIf=\"!isNaN(numClipsInStack)\">{{ numClipsInStack }}</ion-badge>\n </ion-tab-button>\n\n <ion-tab-button [tab]=\"tab5.path\" [class.tab-hidden]=\"tab5.hide || (isLoggedIn$ | async) !== true\">\n <ion-icon [name]=\"tab5.icon\"></ion-icon>\n <ion-label>{{ tab5.title }}</ion-label>\n </ion-tab-button>\n </div>\n </ion-tab-bar>\n</ion-tabs>\n\n<div id=\"tab-portal-container\" class=\"floating-fab\"></div>\n\n<!-- to be re-implemented (showing up at strange times)\n<fs-tutorial-tour\n *ngIf=\"tabs && tabsRendered && ((seenOverviewTour$ | async) !== true) && ((appConfig | async)?.isWidgetActive !== true)\"\n [placements]=\"getPlacements()\"\n (tourCancel)=\"setTourSeen()\"\n (tourComplete)=\"setTourSeen()\"\n></fs-tutorial-tour> -->\n","/** @format */\n\nimport { Component, OnDestroy, OnInit, ViewChild, AfterViewInit } from '@angular/core';\nimport { NgIf, AsyncPipe } from '@angular/common';\nimport { IonTabs, IonTabBar, IonTabButton, IonIcon, IonLabel, IonBadge } from '@ionic/angular/standalone';\nimport { TranslateService } from '@ngx-translate/core';\nimport { combineLatest, Observable, Subject, Subscription } from 'rxjs';\nimport { map, startWith, takeUntil, take } from 'rxjs/operators';\nimport { Store } from '@ngrx/store';\nimport { State } from '@store/reducers';\nimport * as viewstateActions from '@store/actions/viewstate.actions';\nimport { selectTourSeenOverview } from '@store/selectors/viewstate.selectors';\nimport { selectMyStackClipIds } from '@store/selectors/mystack.selectors';\nimport { selectIdEdit } from '@store/selectors/stacks.selectors';\nimport { SHOW_CAPTURE_TAB } from '@app/app.config';\nimport { AppConfig } from '@app/core/config/config.model';\nimport { ConfigService } from '@app/core/config/config.service';\nimport { UserService } from '@app/core/services/user.service';\nimport { EventActions, EventsService } from '@app/core/services/events.service';\n\nconst DEBUG_LOGS = false;\nconst PAGE = '[TabsMain]';\n\ninterface TabDef {\n path: string;\n title: string;\n icon: string;\n badge?: number | null;\n hide?: boolean;\n name?: string; // for determining the selected\n}\n\n@Component({\n selector: 'app-tabs-main',\n templateUrl: './tabs-main.page.html',\n styleUrls: ['./tabs-main.page.scss'],\n standalone: true,\n imports: [IonTabs, IonTabBar, IonTabButton, IonIcon, IonLabel, NgIf, IonBadge, AsyncPipe],\n})\nexport class TabsMainPage implements OnInit, OnDestroy, AfterViewInit {\n @ViewChild('mainTabs') tabs: IonTabs;\n\n seenOverviewTour$: Observable<boolean>; // = of(true); // init to true\n\n isNaN = Number.isNaN;\n tabsRendered = false;\n flashBadge = false;\n hideTabBar = false;\n numClipsInStack = 0;\n tab1: TabDef = {\n path: 'discover',\n title: 'Discover', // will be translated onInit\n icon: 'navigate',\n name: 'discover',\n };\n tab2: TabDef = {\n path: 'play',\n title: 'Watch', // will be translated onInit\n icon: 'videocam',\n };\n tab3: TabDef = {\n path: 'capture',\n title: 'Capture', // will be translated onInit\n icon: 'camera',\n hide: true,\n };\n tab4: TabDef = {\n /**\n * this path is modified in mystack store selector\n * if there's stackId then edit/id, else edit/\n */\n path: 'edit',\n title: 'Editor', // will be translated onInit (was 'Stack' but changed to 'Editor' MVP-1116)\n icon: 'layers',\n badge: this.numClipsInStack,\n name: 'edit',\n };\n tab5: TabDef = {\n path: 'studio',\n title: 'Studio', // will be translated onInit\n icon: 'home',\n hide: false,\n };\n\n appConfig: Promise<AppConfig>;\n selectedTab$ = new Subject<string>();\n isLoggedIn$: Observable<boolean>;\n private onDestroy$ = new Subject<void>();\n private subscriptions = new Subscription();\n private flashTimer;\n\n constructor(\n private store: Store<State>,\n private events: EventsService,\n private userService: UserService,\n private configService: ConfigService,\n private translate: TranslateService\n ) {}\n\n ngOnInit() {\n this.isLoggedIn$ = this.userService.isLoggedIn$;\n this.appConfig = this.configService.appConfig;\n this.appConfig.then((config) => {\n if (config.isWidgetActive) {\n DEBUG_LOGS && console.log(`${PAGE} Widget config:`, config);\n this.tab3.hide = true; // hide capture\n this.tab5.hide = true; // hide studio\n let startPath = '';\n if (\n config.startPage &&\n config.startPage === 'splash' &&\n config.splash.navStart &&\n config.splash.navStart === 'project' &&\n config.splash.navStartParams &&\n config.splash.navStartParams.id\n ) {\n startPath = 'discover/project/' + config.splash.navStartParams.id;\n } else if (\n config.startPage &&\n config.startPage === 'project' &&\n config.startPageParams &&\n config.startPageParams.id\n ) {\n startPath = 'discover/project/' + config.startPageParams.id;\n } else if (config.startPage) {\n startPath = config.startPage;\n }\n if (startPath) {\n // console.log(`${PAGE} Widget config startPath:`, startPath);\n this.tab1.path = startPath;\n this.ionTabsDidChange({ tab: startPath });\n } else {\n console.log(`${PAGE} Widget config NO startPath:`, startPath);\n }\n }\n });\n\n // translations\n this.translate\n .get(['COMMON.DISCOVER', 'COMMON.WATCH', 'COMMON.CAPTURE', 'COMMON.EDITOR', 'COMMON.STUDIO'])\n .pipe(take(1))\n .subscribe((res) => {\n this.tab1.title = res['COMMON.DISCOVER'];\n this.tab2.title = res['COMMON.WATCH'];\n this.tab3.title = res['COMMON.CAPTURE'];\n this.tab4.title = res['COMMON.EDITOR'];\n this.tab5.title = res['COMMON.STUDIO'];\n });\n\n // this.mystackClipIds =\n this.store\n .select(selectMyStackClipIds)\n .pipe(takeUntil(this.onDestroy$))\n .subscribe({\n next: (next) => {\n if (Array.isArray(next) && next.length > 0) {\n this.numClipsInStack = next.length;\n } else {\n this.numClipsInStack = 0;\n }\n },\n error: (error) => {\n console.warn(`${PAGE} getMyStackClipIds ERROR:`, error);\n this.numClipsInStack = 0;\n },\n });\n\n /**\n *\n * this path is modified in mystack store selector\n * if there's stackId then edit/id, else edit/\n *\n * tab4: TabDef = {\n * path: 'edit',\n *\n * - changed from: selectMyStackStackId\n * - MVP-1146 change: video is no longer a route segment 2022-10-13\n */\n this.store\n .select(selectIdEdit)\n .pipe(takeUntil(this.onDestroy$))\n .subscribe({\n next: (id) => {\n if (id?.length > 0) {\n this.tab4.path = `edit/${id}`;\n } else {\n this.tab4.path = 'edit';\n }\n DEBUG_LOGS && console.log(`selectIdEdit = '${id}' tab4.path = '${this.tab4.path}'`);\n },\n error: (error) => {\n console.warn(`${PAGE} getMyStackStackId ERROR:`, error);\n this.tab4.path = 'edit';\n },\n });\n\n /**\n * @todo maybe simplify\n * refactored to combineLatest\n */\n this.seenOverviewTour$ = combineLatest([this.selectedTab$, this.store.select(selectTourSeenOverview)]).pipe(\n map(([selected, tourSeenOverview]) => {\n DEBUG_LOGS &&\n console.log(`seenOverviewTour: `, {\n test: selected === 'player' || tourSeenOverview,\n selected,\n tourSeenOverview,\n });\n return selected === 'player' || tourSeenOverview;\n }),\n startWith(true) // does this work?\n );\n }\n\n ngAfterViewInit() {\n /**\n * walk around to give the tour the right x and y coordinates after the page transition has ended\n * ...we need time to complete any rendering, hydration of viewstate.tourSeenOverview\n * @note isWidgetActive is already compensated for in the template\n */\n setTimeout(() => {\n this.tabsRendered = true;\n }, 4400); // need to wait for hydration of store - why is this not working?\n }\n\n ionTabsDidChange(event: { tab: string }): void {\n if (event && event.tab) {\n DEBUG_LOGS &&\n console.log(`ionTabsDidChange`, {\n event: event.tab,\n selected: this.tabs.getSelected(),\n });\n this.selectedTab$.next(event.tab);\n }\n }\n\n ionViewWillEnter() {\n // Runs when the page is about to enter and become the active page\n const subFlash = this.events.subscribe(EventActions.FLASH_MYSTACK, this.flashMyStack.bind(this));\n const subHide = this.events.subscribe(EventActions.TABBAR_HIDE, this.onHideTabbar.bind(this));\n const subShow = this.events.subscribe(EventActions.TABBAR_SHOW, this.onShowTabbar.bind(this));\n const subShowCapture = this.events.subscribe(EventActions.TAB_CAPTURE_SHOW, this.showCapture.bind(this));\n const subHideCapture = this.events.subscribe(EventActions.TAB_CAPTURE_HIDE, this.hideCapture.bind(this));\n this.subscriptions.add(subFlash);\n this.subscriptions.add(subHide);\n this.subscriptions.add(subShow);\n this.subscriptions.add(subShowCapture);\n this.subscriptions.add(subHideCapture);\n }\n\n ionViewWillLeave() {\n // Runs when the page has finished leaving and is no longer the active page.\n this.subscriptions.unsubscribe();\n }\n\n // used for the tutorial tour.\n getPlacements() {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const children = ((this.tabs.tabBar as any)?.el.children[0] as any)?.children;\n return [\n {\n title: 'DISCOVER',\n content: 'Be inspired. Discover what our community is making. Maybe start your filmstack from their filmstack.',\n el: () => children[0],\n },\n {\n title: 'WATCH',\n content: 'As you watch filmstacks created by others, add clips to your stack to craft your story.',\n el: () => children[1],\n },\n {\n title: 'CAPTURE',\n content: 'Capture video from your device or upload from YouTube.',\n el: () => children[2],\n },\n {\n title: 'STACK',\n content:\n 'Edit and arrange clips by drag-and-drop to your desired order then publish to share your filmstack with the world!',\n el: () => children[3],\n },\n // {\n // title: 'MENU',\n // content:\n // 'Check out our support section that is loaded with resources to help you make great films. Find additional shortcuts too.',\n // el: () => document.querySelector('app-tabs-main ion-menu-toggle[menu=\"main-menu\"]'),\n // },\n /**\n * @todo update the placement for the new tab5 location\n */\n {\n title: 'STUDIO',\n content:\n 'Sign up to access your studio. It has everything you need to organize your filmstacks into projects and grow your crew.',\n el: () => document.querySelector('app-tabs-main ion-menu-toggle[menu=\"user-menu\"]'),\n },\n ];\n }\n\n ngOnDestroy() {\n this.onDestroy$.next();\n this.onDestroy$.complete();\n }\n\n setTourSeen() {\n this.store.dispatch(viewstateActions.tourSeenOverview());\n }\n\n private flashMyStack() {\n this.flashBadge = true;\n clearTimeout(this.flashTimer);\n this.flashTimer = setTimeout(() => {\n this.flashBadge = false;\n }, 1000);\n }\n\n private onHideTabbar() {\n this.hideTabBar = true;\n }\n\n private onShowTabbar() {\n this.hideTabBar = false;\n }\n\n private showCapture() {\n if (SHOW_CAPTURE_TAB) {\n this.tab2.hide = false;\n } else {\n console.log(`${PAGE} showCapture... disabled in config`);\n }\n // renameTab1: if (typeof newName === 'string' && newName.toLowerCase().includes('capture')) {\n }\n\n private hideCapture() {\n this.tab2.hide = true;\n }\n}\n","import { Routes } from \"@angular/router\";\nimport { TabsMainPage } from './pages/tabs-main/tabs-main.page';\nimport { AuthGuard } from \"./core/guards/auth.guard\";\n\nexport const TABS_ROUTES: Routes = [\n {\n path: '',\n component: TabsMainPage,\n children: [\n {\n path: 'studio',\n children: [\n {\n path: '',\n loadComponent: () => \n import('./studio/studio.page')\n .then((m) => m.StudioPage),\n },\n {\n path: 'settings',\n loadComponent: () => \n import('./studio/edit-studio/edit-studio.page')\n .then((m) => m.EditStudioPage),\n },\n ]\n },\n { path: 'studio/edit', redirectTo: '/stack/studio/settings', pathMatch: 'full' },\n { path: 'discover/project/:id/edit', redirectTo: '/project/:id/edit', pathMatch: 'full' },\n {\n path: 'discover/project/:id',\n loadComponent: () => \n import('./projects/project-detail/project-detail.page')\n .then((m) => m.ProjectDetailPage),\n },\n {\n path: 'discover',\n children: [\n {\n path: '',\n loadComponent: () => \n import('./pages/discover/discover.page')\n .then((m) => m.DiscoverPage),\n },\n {\n path: ':segment',\n loadComponent: () => \n import('./pages/discover/discover.page')\n .then((m) => m.DiscoverPage),\n },\n ]\n },\n {\n path: 'capture',\n children: [\n {\n path: '',\n loadComponent: () => \n import('./pages/capture/capture.page')\n .then((m) => m.CapturePage),\n },\n {\n path: ':segment',\n loadComponent: () => \n import('./pages/capture/capture.page')\n .then((m) => m.CapturePage),\n }\n ],\n canActivate: [AuthGuard],\n },\n { \n path: 'play/:projectId/:stackId', \n loadComponent: () => \n import('./stacks/stack-play/stack-play.page')\n .then((m) => m.StackPlayPage),\n },\n { \n path: 'play', \n loadComponent: () => \n import('./stacks/stack-play/stack-play.page')\n .then((m) => m.StackPlayPage),\n },\n // Stack/Theater forward to Stack Player\n { path: 'theater/:projectId/:stackId', redirectTo: 'play/:projectId/:stackId', pathMatch: 'full' },\n { path: 'player/:projectId/:stackId', redirectTo: 'play/:projectId/:stackId', pathMatch: 'full' },\n \n // { path: 'edit/:projectId/:stackId', component: StackEditPage }, // @todo v2\n {\n path: 'edit',\n children: [\n {\n path: '',\n loadComponent: () => \n import('./stacks/stack-edit/stack-edit.page')\n .then((m) => m.StackEditPage),\n },\n {\n path: ':projectId',\n loadComponent: () => \n import('./stacks/stack-edit/stack-edit.page')\n .then((m) => m.StackEditPage),\n },\n {\n path: ':projectId/:stackId',\n loadComponent: () => \n import('./stacks/stack-edit/stack-edit.page')\n .then((m) => m.StackEditPage),\n },\n // /** @deprecated segment MVP-1146 */\n // path: ':projectId/:stackId/:segment',\n ],\n },\n { path: 'editor', redirectTo: 'edit', pathMatch: 'prefix' },\n \n {\n path: 'social',\n children: [\n {\n path: '',\n loadComponent: () => \n import('./pages/social/social.page')\n .then((m) => m.SocialPage),\n },\n ],\n },\n \n /*\n * Routes not within Tabs, but show Tabbar\n */\n // but, not home route\n { path: 'home', redirectTo: '/home', pathMatch: 'full' },\n // {\n // path: 'home',\n // loadComponent: () => \n // import('./pages/home/home.page')\n // .then((m) => m.HomePage),\n // },\n {\n path: 'clip',\n children: [\n {\n path: ':projectId/:id/:segment',\n loadComponent: () => \n import('./pages/clip-edit/clip-edit.page')\n .then((m) => m.ClipEditPage),\n },\n {\n path: ':projectId/:id',\n loadComponent: () => \n import('./pages/clip-edit/clip-edit.page')\n .then((m) => m.ClipEditPage),\n },\n {\n path: ':projectId',\n loadComponent: () => \n import('./pages/clip-edit/clip-edit.page')\n .then((m) => m.ClipEditPage),\n },\n {\n path: '',\n loadComponent: () => \n import('./pages/clip-edit/clip-edit.page')\n .then((m) => m.ClipEditPage),\n } \n ]\n \n },\n {\n path: 'community',\n children: [\n {\n path: '',\n loadComponent: () => \n import('./pages/community/community.page')\n .then(m => m.CommunityPage)\n },\n // handle the route within the component\n {\n path: '**',\n loadComponent: () => \n import('./pages/community/community.page')\n .then(m => m.CommunityPage)\n }\n ],\n },\n {\n path: 'help',\n loadComponent: () => \n import('./pages/help/help.page').then((m) => m.HelpPage),\n },\n {\n path: '',\n redirectTo: '/stack/discover',\n pathMatch: 'full',\n },\n ],\n },\n];\n","/** @format */\n\nimport { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, Router, RouterStateSnapshot } from '@angular/router';\nimport { map, take } from 'rxjs/operators';\nimport { UserService } from '@app/core/services/user.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AuthGuard {\n constructor(private userService: UserService, private router: Router) {}\n\n canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\n return this.userService.isLoggedIn$.pipe(\n take(1),\n map((isLoggedIn) => {\n if (!isLoggedIn) {\n return this.router.parseUrl(`/login?returnUrl=${state.url}`);\n } else {\n return true;\n }\n })\n );\n }\n}\n"],"x_google_ignoreList":[]}