{"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":[]}