{"version":3,"file":"9118.6941c95b185ac04d.js","mappings":"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","names":["i0","ctx_r1","getPriceMonthly","getPriceYearly","planItem","plan","description","tmp_6_0","meta","translatePath","undefined","PlanItemComponent_ng_container_0_ng_container_4_div_2_Template","PlanItemComponent_ng_container_0_ng_container_4_div_3_Template","PlanItemComponent_ng_container_0_ng_container_4_div_4_Template","PlanItemComponent_ng_container_0_ng_container_4_p_5_Template","PlanItemComponent_ng_container_0_ng_container_4_ng_template_6_Template","_r1","navSignup","emit","signupPath","PlanItemComponent_ng_container_0_ng_container_4_div_12_Template","defaultPlanDescription_r3","isProPlan","isActivePro","signupTranslatePath","PlanItemComponent_ng_container_0_ng_container_4_Template","tmp_3_0","enableBilling","billingDisabled_r4","PlanItemComponent","_PlanItemComponent","constructor","this","EventEmitter","ENABLE_BILLING","_a","planId","ChargebeePlanId","Pro","_e","_d","_c","_b","prices","find","p","periodUnit","price","toString","Teams","Weddings","SIGNUP_RETURN_URL_PRO","SIGNUP_RETURN_URL_EVENTS","SIGNUP_RETURN_URL_WEDDINGS","selectors","inputs","outputs","standalone","features","decls","vars","consts","template","rf","ctx","PlanItemComponent_ng_container_0_Template","PlanItemComponent_ng_template_1_Template","PlanItemComponent_ng_template_3_Template","id","loadingContent_r5","NgIf","TranslatePipe","IonButton","IonSpinner","styles","$event","_r2","ctx_r2","proPlan","_r4","weddingsPlan","_r5","teamsPlan","PlansModalComponent","_PlansModalComponent","vm","OnboardingTypes","onboardingService","store","router","subscriptionVm$","select","selectSubscriptionStatus","minutes$","selectMinutes","isPro$","selectIsPro","minutesEnabled","ENABLE_BILLING_MINUTES","onDestroy$","Subject","ngOnInit","combineLatest","selectPlans","getUserSubscriptionState","pipe","takeUntil","subscribe","plans","subscriptionLevel","subscriptionStatus","SubscriptionStatus","Active","SubscriptionLevel","length","getPlanFromOnboardingType","getMetaForRoute","console","warn","log","error","ngOnDestroy","next","complete","route","navigateByUrl","modal","dismiss","i1","i2","i3","viewQuery","BaseModalComponent","PlansModalComponent_fs_plan_item_10_Template","PlansModalComponent_fs_plan_item_11_Template","PlansModalComponent_fs_plan_item_12_Template","modal_r6","ButtonComponent","IonIcon","OnboardingService","_OnboardingService","publishService","translate","routeOnboardingType$","events","filter","event","NavigationEnd","map","_","firstChild","mergeMap","data","ROUTE_DATA_PROP","shareReplay","routeOnboardingMeta$","routeId","getTranslatePath","actionUrl","backgroundUrl","backgroundPosition","None","createCollabStacksForWedding","userId","username","projectId","_this","_asyncToGenerator","input","credits","privacy","STACK_PRIVACY","PUBLIC","playlist","isCollaborative","title","instant","poster","receptionStack","createStackDraft","factory","ɵfac","providedIn"],"ignoreList":[],"sourceRoot":"webpack:///","sources":["./src/app/billing/shared/components/plan-item/plan-item.component.html","./src/app/billing/shared/components/plan-item/plan-item.component.ts","./src/app/billing/shared/components/plans-modal/plans-modal.component.html","./src/app/billing/shared/components/plans-modal/plans-modal.component.ts","./src/app/onboarding/shared/services/onboarding.service.ts"],"sourcesContent":["<ng-container *ngIf=\"planItem?.plan?.id else loadingContent\">\n  <h2 class=\"ion-text-center\">\n    {{ (planItem?.meta?.translatePath ?? '') + 'SIGNUP_TITLE' | translate }}\n  </h2>\n  <ng-container *ngIf=\"enableBilling else billingDisabled\">\n    <!-- <h1>\n      <ng-container *ngIf=\"planItem?.tiers?.length > 0 else defaultBillingTitle\">\n        {{ (planItem?.meta?.translatePath ?? '') + 'SIGNUP_SUBTITLE_TIERED' | translate }}\n      </ng-container>\n      <ng-template #defaultBillingTitle>\n        {{ (planItem?.meta?.translatePath ?? '') + 'SIGNUP_SUBTITLE' | translate }}\n      </ng-template>\n    </h1> -->\n    <div class=\"cost\">\n      <div *ngIf=\"getPriceMonthly\" class=\"monthly\">\n        <sup>$</sup>{{getPriceMonthly}}<sup>/{{ 'COMMON.MONTH_ABBR' | translate }}</sup>\n      </div>\n      <div *ngIf=\"getPriceMonthly && getPriceYearly\" class=\"or\">{{ 'COMMON.OR' | translate }}</div>\n      <div *ngIf=\"getPriceYearly\" class=\"monthly\">\n        <sup>$</sup>{{getPriceYearly}}<sup>/{{ 'COMMON.YEAR_ABBR' | translate }}</sup>\n      </div>\n    </div>\n    <p *ngIf=\"planItem?.plan?.description else defaultPlanDescription\">\n      {{ planItem?.plan.description }}\n    </p>\n    <ng-template #defaultPlanDescription>\n      <p>\n        {{ (planItem?.meta?.translatePath ?? '') + 'SIGNUP_BODY_1' | translate }}\n      </p>\n    </ng-template>\n\n    <div class=\"actions ion-text-center\">\n      <!-- <ion-button *ngIf=\"(isPro$ | async) !== true\" fill=\"outline\" (click)=\"navSignup(proSignupRoute)\"> -->\n      <ion-button fill=\"outline\" [disabled]=\"isProPlan && isActivePro\" (click)=\"navSignup.emit(signupPath)\">\n        {{ signupTranslatePath | translate }}\n      </ion-button>\n      <div *ngIf=\"isProPlan && isActivePro\" class=\"bold orange\">\n        {{ 'BILLING.ALREADY_PRO' | translate }}\n      </div>\n    </div>\n  </ng-container>\n</ng-container>\n\n<ng-template #loadingContent>\n  <div class=\"ion-text-center\">\n    <ion-spinner></ion-spinner>&nbsp;{{ 'COMMON.LOADING' | translate }}\n  </div>\n</ng-template>\n\n<ng-template #billingDisabled>\n  <div class=\"ion-text-center\">\n    Sorry, Billing is Disabled.\n  </div>\n</ng-template>\n","/** @format */\n\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { NgIf } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { IonButton, IonSpinner } from '@ionic/angular/standalone';\nimport { ENABLE_BILLING } from '@app/app.config';\nimport { ChargebeePlanId } from '@app/billing/shared/billing.model';\nimport {\n  PlanItem,\n  SIGNUP_RETURN_URL_EVENTS,\n  SIGNUP_RETURN_URL_PRO,\n  SIGNUP_RETURN_URL_WEDDINGS,\n} from '@app/onboarding/shared/onboarding.model';\n\n@Component({\n  selector: 'fs-plan-item',\n  templateUrl: './plan-item.component.html',\n  styleUrls: ['./plan-item.component.scss'],\n  standalone: true,\n  imports: [NgIf, TranslatePipe, IonButton, IonSpinner],\n})\nexport class PlanItemComponent {\n  @Input() planItem: PlanItem;\n  @Input() isActivePro = false;\n\n  @Output() navSignup = new EventEmitter<string>();\n\n  enableBilling = ENABLE_BILLING;\n\n  get isProPlan(): boolean {\n    return this.planItem?.planId === ChargebeePlanId.Pro;\n  }\n\n  get getPriceMonthly(): string {\n    return this.planItem?.plan?.prices?.find((p) => p?.periodUnit === 'month')?.price?.toString();\n  }\n  get getPriceYearly(): string {\n    return this.planItem?.plan?.prices?.find((p) => p?.periodUnit === 'year')?.price?.toString();\n  }\n\n  get signupTranslatePath(): string {\n    switch (this.planItem?.planId) {\n      case ChargebeePlanId.Pro:\n        return 'AUTH.PLANS.SIGN_UP_PRO';\n      case ChargebeePlanId.Teams:\n        return 'AUTH.PLANS.SIGN_UP_EVENT';\n      case ChargebeePlanId.Weddings:\n        return 'AUTH.PLANS.SIGN_UP_WEDDING';\n    }\n  }\n  get signupPath(): string {\n    switch (this.planItem?.planId) {\n      case ChargebeePlanId.Pro:\n        return SIGNUP_RETURN_URL_PRO;\n      case ChargebeePlanId.Teams:\n        return SIGNUP_RETURN_URL_EVENTS;\n      case ChargebeePlanId.Weddings:\n        return SIGNUP_RETURN_URL_WEDDINGS;\n    }\n  }\n}\n","<fs-base-modal #modal mode=\"light\">\n  <div class=\"plans container\" style=\"height: 100%;\">\n    <h1>{{ 'ONBOARDING.SIGNUP_SUBTITLE' | translate }}</h1>\n    <p>{{ 'ONBOARDING.COMMON.PLANS_DESC'  | translate }}</p>\n\n    <div class=\"plans__list ion-padding-top\">\n      <fs-plan-item *ngIf=\"proPlan\" [planItem]=\"proPlan\" [isActivePro]=\"isActivePro\" (navSignup)=\"navSignup($event)\" [class.is-pro]=\"isActivePro\" class=\"plans__item plans__item__pro\"></fs-plan-item>\n      <fs-plan-item *ngIf=\"weddingsPlan\" [planItem]=\"weddingsPlan\" (navSignup)=\"navSignup($event)\" class=\"plans__item featured\"></fs-plan-item>\n      <fs-plan-item *ngIf=\"teamsPlan\" [planItem]=\"teamsPlan\" (navSignup)=\"navSignup($event)\" class=\"plans__item\"></fs-plan-item>\n    </div>\n       \n    <p class=\"ion-text-wrap ion-padding-bottom ion-margin-bottom\" style=\"line-height: 3em;\">\n      <ion-button class=\"btn-link-inline with-icon ion-text-wrap\" fill=\"clear\" href=\"https://filmstacker.com/plans-pricing\" target=\"_filmstacker\">\n        {{ 'AUTH.PLANS.LEARN_MORE' | translate }}\n        <ion-icon slot=\"end\" name=\"open-outline\"></ion-icon>\n      </ion-button>\n      <span class=\"float-right\">\n        <fs-button buttonStyle=\"clear\" (click)=\"modal.dismiss()\">{{ 'COMMON.CANCEL' | translate }}</fs-button>\n      </span>\n    </p>  \n  </div>\n</fs-base-modal>\n","/** @format */\n\nimport { Component, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { NgIf } from '@angular/common';\nimport { Router } from '@angular/router';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { Observable, Subject, combineLatest, takeUntil } from 'rxjs';\nimport { IonButton, IonIcon } from '@ionic/angular/standalone';\nimport { Store } from '@ngrx/store';\nimport {\n  selectMinutes,\n  selectSubscriptionStatus,\n  SubscriptionViewModel,\n  selectIsPro,\n  selectPlans,\n} from '@app/billing/store/billing.selectors';\nimport { getUserSubscriptionState } from '@store/selectors/user.selectors';\nimport { ChargebeePlanId, SubscriptionLevel, SubscriptionStatus } from '@app/billing/shared/billing.model';\nimport { OnboardingTypes, PlanItem, getPlanFromOnboardingType } from '@app/onboarding/shared/onboarding.model';\nimport { OnboardingService } from '@app/onboarding/shared/services/onboarding.service';\nimport { BaseModalComponent } from '@app/shared/components/ui/modal/base-modal.component';\nimport { ButtonComponent } from '@app/shared/components/ui/buttons/button/button.component';\nimport { PlanItemComponent } from '../plan-item/plan-item.component';\nimport { ENABLE_BILLING_MINUTES } from '@app/app.config';\n\n@Component({\n  selector: 'fs-plans-modal',\n  templateUrl: './plans-modal.component.html',\n  styleUrls: ['./plans-modal.component.scss'],\n  standalone: true,\n  imports: [NgIf, TranslatePipe, BaseModalComponent, PlanItemComponent, ButtonComponent, IonButton, IonIcon],\n})\nexport class PlansModalComponent implements OnInit, OnDestroy {\n  /** @todo HostedPage - move to environment */\n  // @Input() userId = '';\n  // @Input() planId: ChargebeePlanId = ChargebeePlanId.Pro;\n  // @Input() priceId = '';\n  // @Input() referralCode = '';\n  // @Input() projectId = '';\n  // @Input() projectTitle = '';\n  // @Input() eventDate = '';\n  // @Input() successRedirectPath = getSuccessPath('' as any);\n\n  subscriptionVm$: Observable<SubscriptionViewModel> = this.store.select(selectSubscriptionStatus);\n  minutes$: Observable<number> = this.store.select(selectMinutes);\n  isPro$: Observable<boolean> = this.store.select(selectIsPro);\n\n  minutesEnabled = ENABLE_BILLING_MINUTES;\n  // enableBilling = ENABLE_BILLING;\n\n  @ViewChild('modal', { static: false, read: BaseModalComponent })\n  modal: BaseModalComponent;\n\n  isActivePro = false;\n\n  get proPlan(): PlanItem | undefined {\n    return this.vm[OnboardingTypes.Pro];\n  }\n  get teamsPlan(): PlanItem | undefined {\n    return this.vm[OnboardingTypes.Teams];\n  }\n  get weddingsPlan(): PlanItem | undefined {\n    return this.vm[OnboardingTypes.Weddings];\n  }\n  private vm: { [id: string]: PlanItem | undefined } = {};\n\n  private onDestroy$ = new Subject<void>();\n\n  constructor(\n    // private chargebeeService: ChargebeeService,\n    // private billingService: BillingService,\n    private onboardingService: OnboardingService,\n    private store: Store,\n    private router: Router\n  ) {}\n\n  ngOnInit(): void {\n    // billingService.loadPlans happens in app.component.initializeApp\n\n    combineLatest([\n      // this.onboardingService.routeOnboardingMeta$,\n      this.store.select(selectPlans),\n      this.store.select(getUserSubscriptionState),\n    ])\n      .pipe(takeUntil(this.onDestroy$))\n      .subscribe(\n        ([\n          // { routeId, translatePath = '', actionUrl = '', backgroundUrl = '', backgroundPosition = '' },\n          /* eslint-disable @typescript-eslint/no-unused-vars */\n          { plans, addons },\n          { userId, subscriptionId, subscriptionLevel, subscriptionStatus, subscriptionMinutes },\n          /* eslint-enable @typescript-eslint/no-unused-vars */\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 + 'signup';// this component, used in login-form onsuccess\n          // this.backgroundUrl = backgroundUrl;\n          // this.backgroundPosition = backgroundPosition;\n\n          try {\n            // this.metaPlanOptions = [];\n            if (subscriptionStatus === SubscriptionStatus.Active) {\n              // we have an active sub - do we highlight what you are?\n              this.isActivePro = subscriptionLevel === SubscriptionLevel.Pro;\n            }\n            // plans\n            if (plans?.length > 0) {\n              // const { planId, plan, isProPlan, tiers } = getPlanFromOnboardingType(routeId, plans);\n              // this component with set order of Pro, Weddings, Events\n              for (const plan of plans) {\n                switch (plan?.id) {\n                  case ChargebeePlanId.Pro:\n                    this.vm[OnboardingTypes.Pro] = {\n                      ...getPlanFromOnboardingType(OnboardingTypes.Pro, plans),\n                      meta: this.onboardingService.getMetaForRoute(OnboardingTypes.Pro),\n                    };\n                    break;\n                  case ChargebeePlanId.Teams:\n                    this.vm[OnboardingTypes.Teams] = {\n                      ...getPlanFromOnboardingType(OnboardingTypes.Teams, plans),\n                      meta: this.onboardingService.getMetaForRoute(OnboardingTypes.Teams),\n                    };\n                    break;\n                  case ChargebeePlanId.Weddings:\n                    this.vm[OnboardingTypes.Weddings] = {\n                      ...getPlanFromOnboardingType(OnboardingTypes.Weddings, plans),\n                      meta: this.onboardingService.getMetaForRoute(OnboardingTypes.Weddings),\n                    };\n                    break;\n                  default:\n                    console.warn('unknown plan id?', plan);\n                }\n              }\n              console.log(this.vm);\n            } else {\n              // no plans? reset, loading?\n            }\n          } catch (error) {\n            console.warn(error);\n          }\n        }\n      );\n  }\n\n  ngOnDestroy() {\n    this.onDestroy$.next();\n    this.onDestroy$.complete();\n  }\n\n  navSignup(route) {\n    this.router.navigateByUrl(route);\n    this.modal.dismiss();\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"],"x_google_ignoreList":[]}