{"version":3,"file":"4508.8443006def4c84e2.js","mappings":"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","names":["i0","_c0","OnboardingInviteComponent_ng_template_4_ion_spinner_4_Template","OnboardingInviteComponent_ng_template_4_ng_template_5_Template","ctx_r1","loading","doneLoading_r1","$event","_r3","onSuccess","project_r4","OnboardingInviteComponent_ng_container_6_app_add_member_1_Template","id","noProject_r5","_c1","routeProjectDetail","projectId","OnboardingInviteComponent","_OnboardingInviteComponent","this","route","snapshot","paramMap","get","constructor","store","onboardingService","projectService","title","translatePath","TRANSLATE_ROOT","actionUrl","backgroundUrl","backgroundPosition","isProPlan","planId","ChargebeePlanId","Free","PROJECT_DETAIL_ROUTE","onDestroy$","Subject","ngOnInit","_this","setTimeout","project$","getProjectPreview","pipe","take","subscribe","proj","combineLatest","routeOnboardingMeta$","select","selectPlans","takeUntil","_ref","_asyncToGenerator","routeId","plans","length","plan","getPlanFromOnboardingType","_x","apply","arguments","ngOnDestroy","next","complete","event","console","log","checkoutButtonClick","onboarding","checkoutButton","i1","i2","i3","i4","selectors","standalone","features","decls","vars","consts","template","rf","ctx","OnboardingInviteComponent_ng_template_4_Template","OnboardingInviteComponent_ng_container_6_Template","NgIf","RouterLink","AsyncPipe","TranslatePipe","AddMemberComponent","TopNavbarComponent","IonContent","IonHeader","IonSpinner","IonButton","styles","OnboardingService","_OnboardingService","publishService","translate","router","routeOnboardingType$","events","filter","NavigationEnd","map","_","firstChild","mergeMap","data","ROUTE_DATA_PROP","shareReplay","getMetaForRoute","getTranslatePath","OnboardingTypes","Weddings","Teams","None","createCollabStacksForWedding","userId","username","warn","input","credits","privacy","STACK_PRIVACY","PUBLIC","playlist","isCollaborative","instant","poster","receptionStack","createStackDraft","error","factory","ɵfac","providedIn","ctx_r0","returnUrl","_r2","openHomePage","dismiss","CommunityRulesPage","_CommunityRulesPage","navCtrl","viewCtrl","isModal","allowClickHome","queryParams","params","_b","_a","getCurrentNavigation","extras","state","navigateForward","HOMEPAGE","inputs","CommunityRulesPage_ion_header_0_Template","CommunityRulesPage_ng_template_1_Template","CommunityRulesPage_ion_footer_15_Template","CommunityRulesPage_ng_template_16_Template","modalHeader_r4","pageFooter_r5","IonToolbar","IonTitle","IonButtons","IonFooter","FooterComponent","_FooterComponent","theme","copyrightYear","Date","getFullYear","FooterComponent_ng_container_4_Template","FooterComponent_ng_container_5_Template","NgSwitch","NgSwitchCase","NgSwitchDefault"],"ignoreList":[],"sourceRoot":"webpack:///","sources":["./src/app/onboarding/onboarding-invite/onboarding-invite.component.html","./src/app/onboarding/onboarding-invite/onboarding-invite.component.ts","./src/app/onboarding/shared/services/onboarding.service.ts","./src/app/pages/community-rules/community-rules.page.html","./src/app/pages/community-rules/community-rules.page.ts","./src/app/shared/components/footer/footer.component.html","./src/app/shared/components/footer/footer.component.ts"],"sourcesContent":["<ion-header>\n  <app-top-navbar [title]=\"title\">\n    <!-- SLOT: anything added here will go below the ion-navbar -->\n  </app-top-navbar>\n</ion-header>\n\n<ion-content class=\"light\">\n  <div class=\"container ion-padding ion-margin-top diet-limit-width\">\n\n    <ng-template #noProject>\n      <div class=\"ion-text-center ion-padding-horizontal\">\n        <h2 class=\"ion-text-left ion-padding-bottom\">\n          {{ 'ONBOARDING.INVITE_TITLE' | translate }}\n        </h2>\n        <ion-spinner *ngIf=\"loading else doneLoading\"></ion-spinner>\n        <ng-template #doneLoading>\n          <p>\n            {{ 'PROJECT.NOT_FOUND' | translate }}\n          </p>\n           <ion-button [routerLink]=\"['/stack/studio']\" fill=\"outline\">\n            {{ 'STUDIO.RETURN' | translate }}\n          </ion-button>\n        </ng-template>\n      </div>\n    </ng-template>\n\n    <ng-container *ngIf=\"project$ | async as project; else noProject\">\n      <app-add-member *ngIf=\"project?.id else noProject\" \n        [project]=\"project\" (addSuccess)=\"onSuccess($event)\"></app-add-member>\n      \n      <div class=\"ion-text-center ion-padding ion-margin\">\n        <ion-button [disabled]=\"!project?.id\" [routerLink]=\"[routeProjectDetail, projectId]\" fill=\"outline\">\n          {{ 'PROJECT.RETURN_TO_PROJECT' | translate }}\n        </ion-button>\n      </div>\n    </ng-container>\n\n  </div>\n\n</ion-content>","/** @format */\n\nimport { Component, OnDestroy, OnInit } from '@angular/core';\nimport { NgIf, AsyncPipe } from '@angular/common';\nimport { ActivatedRoute, RouterLink } from '@angular/router';\nimport { IonHeader, IonContent, IonSpinner, IonButton } from '@ionic/angular/standalone';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { combineLatest, Observable, Subject } from 'rxjs';\nimport { take, takeUntil } from 'rxjs/operators';\nimport { Store } from '@ngrx/store';\nimport { State } from '@app/billing/store/billing.reducer';\nimport { selectPlans } from '@app/billing/store/billing.selectors';\nimport { ChargebeePlanId, Plan } from '@app/billing/shared/billing.model';\nimport { CheckoutButtonComponent } from '@app/billing/shared/components/checkout-button/checkout-button.component';\nimport { getPlanFromOnboardingType, TRANSLATE_ROOT } from '../shared/onboarding.model';\nimport { OnboardingService } from '../shared/services/onboarding.service';\nimport { TopNavbarComponent } from '@app/shared/components/top-navbar/top-navbar.component';\nimport { Project } from '@app/projects/shared/project.model';\nimport { ProjectService } from '@app/projects/shared/services/project.service';\nimport { PROJECT_DETAIL_ROUTE } from '@app/app.routes';\nimport { AddMemberComponent } from '@app/project-members/add-member/add-member.component';\n\nconst DEBUG_LOGS = false;\n\n@Component({\n  selector: 'app-onboarding-invite',\n  templateUrl: './onboarding-invite.component.html',\n  styleUrls: ['./onboarding-invite.component.scss'],\n  standalone: true,\n  imports: [\n    NgIf,\n    RouterLink,\n    AsyncPipe,\n    TranslatePipe,\n    AddMemberComponent,\n    TopNavbarComponent,\n    IonContent,\n    IonHeader,\n    IonSpinner,\n    IonButton,\n  ],\n})\nexport class OnboardingInviteComponent implements OnInit, OnDestroy {\n  title = '';\n  translatePath = TRANSLATE_ROOT;\n  actionUrl = '/invite'; // change me\n  routeId: string;\n  backgroundUrl = '/assets/images/events/crowd-filming@2.jpg';\n  backgroundPosition = 'center';\n\n  isProPlan = false;\n  planId: ChargebeePlanId = ChargebeePlanId.Free;\n  plan: Plan;\n\n  get projectId() {\n    return this.route.snapshot.paramMap.get('projectId');\n  }\n\n  project$: Observable<Project>;\n  loading = true;\n  routeProjectDetail = `/${PROJECT_DETAIL_ROUTE}`;\n\n  private onDestroy$ = new Subject<void>();\n\n  constructor(\n    private store: Store<State>,\n    private onboardingService: OnboardingService,\n    private projectService: ProjectService,\n    private route: ActivatedRoute\n  ) {}\n\n  ngOnInit(): void {\n    // billingService.loadPlans happens in app.component.initializeApp\n\n    setTimeout(() => {\n      // wait for myProjects to load...\n      this.loading = false;\n      if (this.projectId) {\n        this.project$ = this.projectService.getProjectPreview(this.projectId);\n        this.project$.pipe(take(1)).subscribe((proj) => {\n          this.title = proj?.title ?? '';\n          // this.backgroundUrl = proj && proj.hero ? proj.hero : this.defaultBackgroundUrl;\n        });\n      }\n    }, 3600);\n\n    combineLatest([this.onboardingService.routeOnboardingMeta$, this.store.select(selectPlans)])\n      .pipe(takeUntil(this.onDestroy$))\n      .subscribe(\n        async ([\n          { routeId, translatePath = '', actionUrl = '', backgroundUrl = '', backgroundPosition = '' },\n          // eslint-disable-next-line @typescript-eslint/no-unused-vars\n          { plans, addons },\n        ]) => {\n          if (!routeId) return; // not the current route or metadata not available\n          this.routeId = routeId;\n          this.translatePath = translatePath;\n          this.actionUrl = actionUrl + 'invite'; // used for the login-form\n          this.backgroundUrl = backgroundUrl;\n          this.backgroundPosition = backgroundPosition;\n\n          if (plans?.length > 0) {\n            const { planId, plan, isProPlan } = getPlanFromOnboardingType(routeId, plans);\n            this.planId = planId;\n            this.plan = plan;\n\n            DEBUG_LOGS && console.log(`[Invite]`, { routeId });\n            this.isProPlan = isProPlan;\n          }\n        }\n      );\n  }\n\n  ngOnDestroy() {\n    this.onDestroy$.next();\n    this.onDestroy$.complete();\n  }\n\n  onSuccess(event) {\n    console.log(`Invite Success. Route?`, event);\n  }\n\n  /**\n   * ref: billing button click\n   */\n  checkoutButtonClick(onboarding, checkoutButton: CheckoutButtonComponent) {\n    console.log(`signupContinue:`, { onboarding, checkoutButton, plan: this.plan });\n    // if (!checkoutButton || !checkoutButton.linkElement || typeof checkoutButton.linkElement.click !== 'function') {\n    //   throw new Error(`Not able to linkElement.click?`)\n    //   // checkoutButton.linkElement.click();\n    // }\n    // if (!checkoutButton || typeof checkoutButton.clickLink !== 'function') {\n    //   throw new Error(`Not able to linkElement.click?`);\n    // }\n    // checkoutButton.linkElement.click();\n  }\n}\n","/** @format */\n\nimport { Injectable } from '@angular/core';\nimport { ActivatedRoute, NavigationEnd, Router } from '@angular/router';\nimport { Observable } from 'rxjs';\nimport { filter, map, mergeMap, shareReplay } from 'rxjs/operators';\nimport { TranslateService } from '@ngx-translate/core';\nimport { OnboardingTypes, OnboardingMeta, getTranslatePath, ROUTE_DATA_PROP } from '../onboarding.model';\nimport { STACK_PRIVACY, Stack, StackDraftPublishInput } from '@app/shared/models/stack.model';\nimport { PublishStackService } from '@app/core/services/publish-stack.service';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class OnboardingService {\n  /**\n   * use with takeUntil(this.onDestroy$),\n   * @todo consider where this should live\n   */\n  routeOnboardingType$: Observable<OnboardingTypes> = this.router.events.pipe(\n    filter((event) => event instanceof NavigationEnd),\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    map((_) => this.route),\n    map((route) => {\n      while (route.firstChild) {\n        route = route.firstChild;\n      }\n      return route;\n    }),\n    mergeMap((route) => route.data),\n    map((data) => data[ROUTE_DATA_PROP]),\n    shareReplay(1)\n  );\n\n  /**\n   * use with takeUntil(this.onDestroy$),\n   */\n  routeOnboardingMeta$: Observable<OnboardingMeta> = this.routeOnboardingType$.pipe(\n    map((routeId: OnboardingTypes) => this.getMetaForRoute(routeId)),\n    shareReplay(1)\n  );\n\n  constructor(\n    private publishService: PublishStackService,\n    private translate: TranslateService,\n    private router: Router,\n    private route: ActivatedRoute\n  ) {}\n\n  getMetaForRoute(routeId: string): OnboardingMeta {\n    const translatePath = getTranslatePath(routeId);\n    switch (routeId) {\n      case OnboardingTypes.Weddings:\n        return {\n          routeId,\n          translatePath,\n          actionUrl: `/events/weddings/`,\n          backgroundUrl: '/assets/images/events/weddings-bride@2.jpg',\n          backgroundPosition: 'bottom right',\n        };\n      case OnboardingTypes.Teams:\n        return {\n          routeId,\n          translatePath,\n          actionUrl: `/events/`,\n          backgroundUrl: '/assets/images/events/crowd-filming@2.jpg',\n          backgroundPosition: 'center',\n        };\n      case OnboardingTypes.Pro:\n      case OnboardingTypes.Projects:\n      case OnboardingTypes.None:\n      default:\n        return {\n          routeId: (routeId as OnboardingTypes) || OnboardingTypes.None,\n          translatePath,\n          actionUrl: `/pro/`,\n          backgroundUrl: '/assets/images/events/crowd-filming@2.jpg',\n          backgroundPosition: 'center',\n          // this.sideBlocks = this.buildSideBlocks('');\n        };\n    }\n  }\n\n  /**\n   * On successful signup, create 2 collab drafts for Guests [MVP-1367]\n   * The owner should be the person who just signed up\n   * 1: Reception\n   *    poster: https://app.filmstacker.com/assets/images/events/weddings-jump@1.jpg\n   * 2: Ceremony (created second so it shows up first?)\n   *    poster: https://app.filmstacker.com/assets/images/events/weddings-hands@1.jpg\n   */\n  async createCollabStacksForWedding({ userId, username, projectId }): Promise<Array<Stack>> {\n    console.warn('create the collab stacks!', { userId, username, projectId });\n    try {\n      const input: StackDraftPublishInput = {\n        userId,\n        credits: username,\n        projectId,\n        privacy: STACK_PRIVACY.PUBLIC,\n        playlist: [],\n        isCollaborative: 1,\n        title: this.translate.instant('ONBOARDING.COMMON.STACK_TITLE_RECEPTION'),\n        poster: 'https://app.filmstacker.com/assets/images/events/weddings-jump@1.jpg',\n      };\n      const receptionStack = await this.publishService.createStackDraft(input);\n      // ok, now the Ceremony\n      input.title = this.translate.instant('ONBOARDING.COMMON.STACK_TITLE_CEREMONY');\n      input.poster = 'https://app.filmstacker.com/assets/images/events/weddings-hands@1.jpg';\n      const ceremonyStack = await this.publishService.createStackDraft(input);\n      return [receptionStack, ceremonyStack];\n    } catch (error) {\n      console.error(error);\n      throw error;\n    }\n  }\n}\n","<ion-header *ngIf=\"!isModal; else modalHeader;\">\n  <app-top-navbar [title]=\"title\" [backButtonReturnUrl]=\"returnUrl\">\n    <!-- SLOT: anything added here will go below the ion-navbar -->\n  </app-top-navbar>\n</ion-header>\n\n<ng-template #modalHeader>\n  <ion-header>\n    <ion-toolbar color=\"dark\">\n      <ion-title>\n        <ion-button fill=\"clear\" class=\"toolbar-title__logo\" (click)=\"openHomePage()\">\n          <img src=\"/assets/images/logos/filmstackerLogo.png\" alt=\"Filmstacker\" />\n        </ion-button>\n      </ion-title>\n      <ion-buttons slot=\"end\">\n        <ion-button fill=\"clear\" color=\"primary\" (click)=\"dismiss()\">{{ 'COMMON.CLOSE' | translate }}</ion-button>\n      </ion-buttons>\n    </ion-toolbar>\n  </ion-header>\n</ng-template>\n\n<ion-content forceOverflow=\"false\">\n  <div class=\"iframe-container\">\n    <iframe id=\"FilmstackerRules\" height=\"100%\" name=\"filmstacker-rules\" style=\"width:100%;border:none;padding:0;\"\n      title=\"Filmstacker {{ 'COMMON.COMMUNITY_RULES' | translate }}\" src=\"https://filmstacker.com/policies/rules.html\">\n      <p>{{ 'ERRORS.IFRAMES_NOT_SUPPORTED' | translate }}</p>\n      <p>\n        {{ 'COMMON.OPEN_NEW_PAGE' | translate }}: <a href=\"https://filmstacker.com/policies/rules.html\"\n          target=\"_blank\">https://filmstacker.com/policies/rules.html</a>\n      </p>\n    </iframe>\n  </div>\n</ion-content>\n\n<ion-footer *ngIf=\"isModal else pageFooter\" class=\"ion-text-center ion-padding\">\n  <ion-button (click)=\"dismiss()\">{{ 'COMMON.CLOSE' | translate }}</ion-button>\n</ion-footer>\n\n<ng-template #pageFooter>\n  <ion-footer>\n    <app-footer class=\"no-bottom-spacer\"></app-footer>\n  </ion-footer>\n</ng-template>","/** @format */\n\nimport { Component, OnInit, Input, OnDestroy } from '@angular/core';\nimport { NgIf } from '@angular/common';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport {\n  ModalController,\n  NavController,\n  IonHeader,\n  IonToolbar,\n  IonTitle,\n  IonButton,\n  IonButtons,\n  IonContent,\n  IonFooter,\n} from '@ionic/angular/standalone';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { HOMEPAGE } from '@app/app.config';\nimport { FooterComponent } from '@app/shared/components/footer/footer.component';\nimport { TopNavbarComponent } from '@app/shared/components/top-navbar/top-navbar.component';\n\nconst DEBUG_LOGS = false;\nconst PAGE = '[CommunityRules]'; // eslint-disable-line @typescript-eslint/no-unused-vars\n\n@Component({\n  selector: 'app-community-rules',\n  templateUrl: './community-rules.page.html',\n  styleUrls: ['./community-rules.page.scss'],\n  standalone: true,\n  imports: [\n    NgIf,\n    IonHeader,\n    TopNavbarComponent,\n    IonToolbar,\n    IonTitle,\n    IonButton,\n    IonButtons,\n    IonContent,\n    IonFooter,\n    FooterComponent,\n    TranslatePipe,\n  ],\n})\nexport class CommunityRulesPage implements OnInit, OnDestroy {\n  @Input() isModal: boolean = false;\n  @Input() allowClickHome: boolean = true;\n\n  returnUrl = '';\n  title: string = 'Community Rules';\n\n  private onDestroy$ = new Subject<void>();\n\n  constructor(\n    private navCtrl: NavController,\n    private viewCtrl: ModalController,\n    private route: ActivatedRoute,\n    private router: Router\n  ) {}\n\n  ngOnInit() {\n    this.route.queryParams.pipe(takeUntil(this.onDestroy$)).subscribe((params) => {\n      DEBUG_LOGS && console.log(`queryParams route:`, this.route);\n      if (params?.returnUrl) {\n        this.returnUrl = params.returnUrl;\n        DEBUG_LOGS && console.log(`queryParams returnUrl:`, this.returnUrl);\n      } else if (this.router.getCurrentNavigation()?.extras?.state) {\n        this.returnUrl = this.router.getCurrentNavigation().extras.state.returnUrl || '';\n        DEBUG_LOGS && console.log(`navState returnUrl:`, this.returnUrl);\n      }\n    });\n  }\n\n  ngOnDestroy() {\n    this.onDestroy$.next();\n    this.onDestroy$.complete();\n  }\n\n  openHomePage() {\n    this.dismiss();\n    if (this.allowClickHome) {\n      this.navCtrl.navigateForward(`/${HOMEPAGE}`);\n    }\n  }\n\n  dismiss() {\n    this.viewCtrl.dismiss();\n  }\n}\n","<!-- @format -->\n\n<footer>\n  <div class=\"footer container\">\n    <div class=\"footer__side footer__side--left\">\n      <div [ngSwitch]=\"theme\">\n        <ng-container *ngSwitchCase=\"'light'\">\n          <!-- if light theme, use blue logo -->\n          <img class=\"logo\" src=\"/assets/images/logos/Filmstacker-logo-teal.png\" alt=\"Filmstacker\" />\n        </ng-container>\n        <ng-container *ngSwitchDefault>\n          <img class=\"logo\" src=\"/assets/images/filmstacker-logo.png\" alt=\"Filmstacker\" />\n        </ng-container>\n      </div>\n    </div>\n    <div class=\"footer__side\">\n      <div class=\"footer__side__item\">\n        <a routerLink=\"/about\">{{ 'COMMON.ABOUT' | translate }}</a>\n      </div>\n      <!-- <div class=\"footer__side__item\">\n        <a routerLink=\"/support\">{{ 'COMMON.SUPPORT' | translate }}</a>\n      </div> -->\n      <div class=\"footer__side__item\">\n        <a routerLink=\"/community-rules\">{{ 'COMMON.COMMUNITY_GUIDELINES' | translate }}</a>\n      </div>\n      <div class=\"footer__side__item\">\n        <a routerLink=\"/privacy\">{{ 'POLICIES.PRIVACY_POLICY' | translate }}</a>\n      </div>\n      <div class=\"footer__side__item\">\n        <a routerLink=\"/terms\">{{ 'POLICIES.TERMS_USE' | translate }}</a>\n      </div>\n      <div class=\"footer__side__item\">&copy;{{ copyrightYear }} Filmstacker Inc. {{ 'POLICIES.RIGHTS_RESERVED' | translate }}.</div>\n    </div>\n  </div>\n  <div class=\"tab-bottom-spacer\"></div>\n</footer>\n","/** @format */\n\nimport { Component, Input } from '@angular/core';\nimport { NgSwitch, NgSwitchCase, NgSwitchDefault } from '@angular/common';\nimport { RouterLink } from '@angular/router';\nimport { TranslatePipe } from '@ngx-translate/core';\n\n@Component({\n  selector: 'app-footer',\n  templateUrl: './footer.component.html',\n  styleUrls: ['./footer.component.scss'],\n  standalone: true,\n  imports: [NgSwitch, NgSwitchCase, NgSwitchDefault, RouterLink, TranslatePipe],\n})\nexport class FooterComponent {\n  /** manages which logo */\n  @Input() theme: 'light' | 'dark' = 'dark';\n\n  copyrightYear = new Date().getFullYear();\n}\n"],"x_google_ignoreList":[]}