{"version":3,"file":"6296.0cb5d8be7472efe1.js","mappings":"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","names":["i0","ctx_r0","routeId","signupForm","get","loading","error","DEFAULT_RETURN_URL","NAV_PAGE_ON_LOGIN","Routes","Free","Pro","Weddings","Events","SignupPage","_SignupPage","signupPageReturnUrl","this","returnUrl","length","constructor","formBuilder","store","userService","loadingCtrl","tokensService","analyticsService","translate","route","router","snapshot","paramMap","toUpperCase","group","username","Validators","required","UsernameValidator","isValid","email","password","PasswordValidator","token","showingTokenInput","usernameRequirements","patternDesc","passwordRequirements","backgroundPosition","sideBlocks","onDestroy$","Subject","ngOnInit","queryParams","pipe","takeUntil","subscribe","params","console","log","_b","_a","getCurrentNavigation","extras","state","TOKEN_QUERY_PARAM","tokenId","tokenId$","filter","Boolean","take","patchValue","setTimeout","combineLatest","isLoggedIn$","isLoggedIn","applyTokenToCurrentUser","signUpFromInvite","navigate","queryParamsHandling","backgroundUrl","buildSideBlocks","SIGNUP_RETURN_URL_PRO","SIGNUP_RETURN_URL_EVENTS","SIGNUP_RETURN_URL_WEDDINGS","ngOnDestroy","next","complete","isKnownRouteId","Object","values","includes","isBusy","invalid","onUsernameChange","signup","_this","_asyncToGenerator","loader","create","message","instant","present","usernameInput","value","toLowerCase","register","signUp","AuthMethod","Email","CONFIRM_AUTH_PAGE","err","name","controls","setErrors","usernameExists","dismiss","path","root","max","rootPath","ret","index","level","titlePath","subtitlePath","descriptionPath","title","subtitle","description","block","push","i1","i2","i3","i4","i5","i6","i7","i8","selectors","standalone","features","decls","vars","consts","template","rf","ctx","SignupPage_h2_2_Template","SignupPage_fs_form_input_26_Template","SignupPage_div_27_Template","NgIf","FormsModule","ReactiveFormsModule","ButtonComponent","FormInputComponent","SplitLayoutComponent","TermsPolicyModalsComponent","IonItem","IonContent","FormControlCastPipe","TranslatePipe","styles"],"ignoreList":[],"sourceRoot":"webpack:///","sources":["./src/app/pages/auth/signup/signup.page.html","./src/app/pages/auth/signup/signup.page.ts"],"sourcesContent":["<ion-content>\n <app-split-layout\n [backgroundPosition]=\"backgroundPosition\"\n [backgroundUrl]=\"backgroundUrl\"\n [sideBlocks]=\"sideBlocks\"\n [showSignupBtn]=\"false\"\n [returnUrl]=\"signupPageReturnUrl\"\n >\n <h2 *ngIf=\"isKnownRouteId\">{{ 'AUTH.PLANS.' + routeId | translate }}</h2>\n <h1>{{ 'AUTH.SIGNUP.TITLE' | translate }}</h1>\n\n <form [formGroup]=\"signupForm\" class=\"ion-padding-start\" (ngSubmit)=\"signup()\">\n <fs-form-input\n [label]=\"'AUTH.USERNAME' | translate\"\n type=\"username\"\n [control]=\"signupForm.get('username') | formControlCast\"\n [disabled]=\"loading\"\n (change)=\"onUsernameChange()\"\n ></fs-form-input>\n <div class=\"form-input_hint ion-padding-start\">\n <p class=\"italic\">{{ usernameRequirements }}</p>\n </div>\n <fs-form-input\n [label]=\"'AUTH.EMAIL' | translate\"\n type=\"email\"\n [control]=\"signupForm.get('email') | formControlCast\"\n [disabled]=\"loading\"\n class=\"ion-margin-bottom\"\n ></fs-form-input>\n <fs-form-input\n [label]=\"'AUTH.PASSWORD' | translate\"\n type=\"password\"\n [control]=\"signupForm.get('password') | formControlCast\"\n [disabled]=\"loading\"\n ></fs-form-input>\n <div class=\"form-input_hint ion-padding-start\">\n <p class=\"italic\">{{ passwordRequirements }}</p>\n </div>\n\n <!--\n MVP-1216 HOW DID YOU HEAR ABOUT FILMSTACKER?\n The field block would be prefilled with the text \"My wedding coordinator's name is...\"\n -->\n <div class=\"token\">\n <fs-button\n class=\"show-token-button\"\n buttonStyle=\"clear\"\n color=\"primary\"\n [disabled]=\"showingTokenInput\"\n (click)=\"showingTokenInput = true\"\n >\n {{ 'AUTH.SIGNUP.SHOW_TOKEN_BUTTON' | translate }}\n </fs-button>\n\n <fs-form-input *ngIf=\"showingTokenInput\"\n [label]=\"'AUTH.INVITE_REFERRAL_CODE' | translate\"\n type=\"text\"\n [control]=\"signupForm.get('token') | formControlCast\"\n [disabled]=\"loading\"\n ></fs-form-input>\n </div>\n\n <div class=\"error\" *ngIf=\"error\">\n <div><strong>{{ 'ERRORS.ERROR' | translate }}:</strong> {{ error }}</div>\n </div>\n <ion-item class=\"submit\">\n <fs-button type=\"submit\" size=\"large\" [disabled]=\"isBusy\">{{ 'AUTH.SIGNUP.ACTION' | translate }}</fs-button>\n </ion-item>\n <ion-item>\n <p class=\"indent\">\n <app-terms-policy-modals\n [agreeTo] = \"'POLICIES.AGREE_INTRO' | translate\"\n ></app-terms-policy-modals>\n </p>\n </ion-item>\n </form>\n </app-split-layout>\n</ion-content>\n","/** @format */\n\nimport { Component, OnDestroy, OnInit } from '@angular/core';\nimport { NgIf } from '@angular/common';\nimport { UntypedFormBuilder, Validators, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { Router, ActivatedRoute } from '@angular/router';\nimport { TranslateService, TranslatePipe } from '@ngx-translate/core';\nimport { LoadingController, IonContent, IonItem } from '@ionic/angular/standalone';\nimport { combineLatest, Subject } from 'rxjs';\nimport { filter, take, takeUntil } from 'rxjs/operators';\nimport { CONFIRM_AUTH_PAGE, NAV_PAGE_ON_LOGIN } from '@app/app.routes';\nimport { AnalyticsService, AuthMethod } from '@app/core/services/analytics/analytics.service';\nimport { UserService } from '@app/core/services/user.service';\nimport { ButtonComponent } from '@app/shared/components/ui/buttons/button/button.component';\nimport { UsernameValidator } from '@app/shared/validators/username';\nimport { PasswordValidator } from '@app/shared/validators/password';\nimport { SideBlock } from '@app/shared/components/layouts/split-layout/split-layout.component';\nimport { SplitLayoutComponent } from '@app/shared/components/layouts/split-layout/split-layout.component';\nimport { FormInputComponent } from '@app/shared/components/ui/form/form-input/form-input.component';\nimport { FormControlCastPipe } from '@app/shared/pipes/form-control-cast.pipe';\nimport { TermsPolicyModalsComponent } from '@app/shared/components/terms-policy-modals/terms-policy-modals.component';\nimport { TOKEN_QUERY_PARAM } from '@app/tokens/shared/tokens.model';\nimport { TokensService } from '@app/tokens/shared/services/tokens.service';\n\nimport { Store } from '@ngrx/store';\n// import { getHydrateState, selectHydrated } from '@store/reducers/hydrate.reducers';\nimport {\n SIGNUP_RETURN_URL_EVENTS,\n SIGNUP_RETURN_URL_PRO,\n SIGNUP_RETURN_URL_WEDDINGS,\n} from '@app/onboarding/shared/onboarding.model';\n\nconst DEBUG_LOGS = false;\nconst DEFAULT_RETURN_URL = `/${NAV_PAGE_ON_LOGIN}`;\n\nenum Routes {\n Free = 'FREE',\n Pro = 'PRO',\n // Teams = 'TEAMS',\n Weddings = 'WEDDINGS',\n Events = 'EVENTS',\n}\n\n// type ValidRoutes = keyof typeof Routes;\n\n@Component({\n selector: 'app-signup',\n templateUrl: './signup.page.html',\n styleUrls: ['./signup.page.scss'],\n standalone: true,\n imports: [\n NgIf,\n FormsModule,\n ReactiveFormsModule,\n ButtonComponent,\n FormInputComponent,\n SplitLayoutComponent,\n TermsPolicyModalsComponent,\n IonItem,\n IonContent,\n FormControlCastPipe,\n TranslatePipe,\n ],\n})\nexport class SignupPage implements OnInit, OnDestroy {\n routeId = (this.route.snapshot.paramMap.get('id') || '').toUpperCase();\n signupForm = this.formBuilder.group({\n username: ['', [Validators.required, UsernameValidator.isValid]],\n email: ['', [Validators.required, Validators.email]],\n password: ['', [Validators.required, PasswordValidator.isValid]],\n token: [''],\n });\n loading = false;\n error: string;\n showingTokenInput = false;\n usernameRequirements = UsernameValidator.patternDesc;\n passwordRequirements = PasswordValidator.patternDesc;\n\n backgroundUrl: string;\n backgroundPosition = 'center';\n sideBlocks: SideBlock[] = [];\n returnUrl = DEFAULT_RETURN_URL;\n\n get signupPageReturnUrl() {\n return this.returnUrl && this.returnUrl.length > 0 && this.returnUrl !== DEFAULT_RETURN_URL ? this.returnUrl : '';\n }\n\n private tokenId: string;\n private onDestroy$ = new Subject<void>();\n\n constructor(\n private formBuilder: UntypedFormBuilder,\n private store: Store,\n private userService: UserService,\n private loadingCtrl: LoadingController,\n private tokensService: TokensService,\n private analyticsService: AnalyticsService,\n private translate: TranslateService,\n private route: ActivatedRoute,\n private router: Router\n ) {}\n\n ngOnInit() {\n this.route.queryParams.pipe(takeUntil(this.onDestroy$)).subscribe((params) => {\n if (params?.returnUrl) {\n this.returnUrl = params.returnUrl;\n console.log(`[Signup] queryParams returnUrl:`, this.returnUrl);\n } else if (this.router.getCurrentNavigation()?.extras?.state) {\n this.returnUrl = this.router.getCurrentNavigation().extras.state.returnUrl || DEFAULT_RETURN_URL;\n console.log(`[Signup] navState returnUrl:`, this.returnUrl);\n }\n if (params && params[TOKEN_QUERY_PARAM]) {\n this.tokenId = params[TOKEN_QUERY_PARAM];\n }\n });\n\n // distinctUntilChanged(),takeUntil(this.onDestroy$), // taking (1) instead of takeUntil\n this.tokensService.tokenId$.pipe(filter(Boolean), take(1)).subscribe((tokenId: string) => {\n // DEBUG_LOGS && console.log(`[Signup] tokenId$: '${tokenId}'`)\n this.signupForm.patchValue({\n token: tokenId,\n });\n this.showingTokenInput = true;\n this.tokenId = tokenId;\n });\n\n /**\n * if there's a tokenId & loggedIn - send to accept token page\n * Wait for Auth to be set,\n * then nav away if already loggedIn\n * but save the Token & apply if found.\n */\n setTimeout(() => {\n combineLatest([this.userService.isLoggedIn$, this.tokensService.tokenId$])\n .pipe(take(1))\n .subscribe(([isLoggedIn, tokenId]) => {\n DEBUG_LOGS && console.log(`[Signup] result$:`, [isLoggedIn, tokenId]);\n\n if (isLoggedIn) {\n if (tokenId) {\n // apply the token & toast success\n this.tokensService.applyTokenToCurrentUser({ tokenId });\n this.analyticsService.signUpFromInvite();\n }\n this.router.navigate([this.returnUrl ? this.returnUrl : DEFAULT_RETURN_URL], {\n queryParams: {\n [TOKEN_QUERY_PARAM]: null,\n returnUrl: null,\n },\n queryParamsHandling: 'merge',\n });\n }\n });\n }, 1200);\n\n switch (this.routeId) {\n case Routes.Pro: {\n this.backgroundUrl = '/assets/images/split-pane/fs-layout-2@2.jpg';\n this.sideBlocks = this.buildSideBlocks(this.routeId);\n if (!this.returnUrl || this.returnUrl === DEFAULT_RETURN_URL) {\n this.returnUrl = SIGNUP_RETURN_URL_PRO;\n }\n break;\n }\n // case Routes.Teams: {\n // this.backgroundUrl = '/assets/images/split-pane/fs-layout-4@2.jpg';\n // this.sideBlocks = this.buildSideBlocks(this.routeId);\n // if (!this.returnUrl || this.returnUrl === DEFAULT_RETURN_URL) {\n // this.returnUrl = SIGNUP_RETURN_URL_EVENTS;\n // }\n // break;\n // }\n case Routes.Events: {\n this.backgroundUrl = '/assets/images/split-pane/fs-layout-8@2.jpg';\n this.sideBlocks = this.buildSideBlocks(this.routeId);\n if (!this.returnUrl || this.returnUrl === DEFAULT_RETURN_URL) {\n this.returnUrl = SIGNUP_RETURN_URL_EVENTS;\n }\n break;\n }\n case Routes.Weddings: {\n this.backgroundUrl = '/assets/images/events/weddings-hands@2.jpg';\n this.sideBlocks = this.buildSideBlocks(this.routeId);\n if (!this.returnUrl || this.returnUrl === DEFAULT_RETURN_URL) {\n this.returnUrl = SIGNUP_RETURN_URL_WEDDINGS;\n }\n break;\n }\n case Routes.Free: {\n this.backgroundUrl = '/assets/images/split-pane/fs-layout-3@2.jpg'; // camera, position bottom-right\n this.backgroundPosition = 'bottom right';\n this.sideBlocks = this.buildSideBlocks(this.routeId);\n if (!this.returnUrl) {\n this.returnUrl = DEFAULT_RETURN_URL;\n }\n break;\n }\n default: {\n // console.log(`[Signup] routeId: '${this.routeId}'`) // UNHANDLED\n this.backgroundUrl = '/assets/images/split-pane/fs-layout-1@2.jpg';\n this.sideBlocks = this.buildSideBlocks('');\n if (!this.returnUrl) {\n this.returnUrl = DEFAULT_RETURN_URL;\n }\n }\n }\n // await translations to be set\n setTimeout(() => {\n this.usernameRequirements = UsernameValidator.patternDesc;\n this.passwordRequirements = PasswordValidator.patternDesc;\n }, 1200);\n }\n\n ngOnDestroy() {\n this.onDestroy$.next();\n this.onDestroy$.complete();\n }\n\n get isKnownRouteId(): boolean {\n return Object.values(Routes).includes(this.routeId as Routes);\n }\n\n get isBusy(): boolean {\n return this.loading || this.signupForm.invalid;\n }\n\n onUsernameChange() {\n this.error = '';\n }\n\n async signup() {\n this.loading = true;\n const loader = await this.loadingCtrl.create({\n message: this.translate.instant('COMMON.PLEASE_WAIT'),\n });\n await loader.present();\n\n const { username: usernameInput, email, password, token } = this.signupForm.value;\n this.error = null;\n try {\n const username = usernameInput.toLowerCase();\n const tokenId = token || this.tokenId;\n await this.userService.register(username, password, { email });\n const queryParams = { username };\n if (this.returnUrl !== DEFAULT_RETURN_URL) {\n queryParams['returnUrl'] = this.returnUrl;\n }\n if (tokenId) {\n queryParams[TOKEN_QUERY_PARAM] = tokenId;\n this.analyticsService.signUpFromInvite();\n } else {\n this.analyticsService.signUp(AuthMethod.Email);\n }\n this.router.navigate([`/${CONFIRM_AUTH_PAGE}`], { queryParams });\n } catch (err) {\n if (err.name === 'UsernameExistsException') {\n this.signupForm.controls['username'].setErrors({ usernameExists: true });\n }\n this.error = err.message;\n }\n loader.dismiss();\n this.loading = false;\n }\n\n /**\n * take the translateDepth and add if they exist\n * @param root root prop(s)\n * @param path inner path (free, pro, teams, events )\n * @param max the most you want, if they exist\n * @returns SideBlock[]\n *\n *\n */\n buildSideBlocks(path = '', root = 'AUTH.SIGNUP', max = 3): SideBlock[] {\n const rootPath = `${root}${path ? '.' + path : ''}`;\n const ret: SideBlock[] = [];\n\n for (let index = 0; index < max; index++) {\n // root index items do not have _#\n const level = index > 0 ? `_${index + 1}` : ``;\n\n // playing around with observables for live reload...\n // const translations = forkJoin([\n // this.translate.get(`${rootPath}.SIDE_TITLE${level}`),\n // this.translate.get(`${rootPath}.SIDE_SUBTITLE${level}`),\n // this.translate.get(`${rootPath}.SIDE_DESCRIPTION${level}`)\n // ]);\n // translations.pipe(take(1)).subscribe((data) => {\n // //=> ['Content.Id1', 'Content.Id2'];\n // console.log(data)\n // });\n\n const titlePath = `${rootPath}.SIDE_TITLE${level}`,\n subtitlePath = `${rootPath}.SIDE_SUBTITLE${level}`,\n descriptionPath = `${rootPath}.SIDE_DESCRIPTION${level}`;\n\n const title = this.translate.instant(titlePath),\n subtitle = this.translate.instant(subtitlePath),\n description = this.translate.instant(descriptionPath);\n const block = {\n ...(title && title !== titlePath && { title }),\n ...(subtitle && subtitle !== subtitlePath && { subtitle }),\n ...(description && description !== descriptionPath && { description }),\n };\n // console.log(`buildSideBlocks:`, block)\n\n if (block) {\n ret.push(block);\n } else {\n break;\n }\n }\n return ret;\n }\n}\n"],"x_google_ignoreList":[]}