PageSourceSearch

https://app.ninjamock.com/chunk-5WDPULOL.js

js ninjamock.com collected 2026-10-03 20:26:18 UTC 13,238 bytes, 1 lines download raw bytes

1import{a as q}from"./chunk-4HXJEPIA.js";import"./chunk-XKMNP3QQ.js";import{a as ne}from"./chunk-765EA3RH.js";import{a as L}from"./chunk-LGZ55R3G.js";import{a as re}from"./chunk-4ORBH5TJ.js";import{a as ae,c as le}from"./chunk-GBM27UFM.js";import{a as oe}from"./chunk-DWY6Q3BL.js";import"./chunk-ERYNAFGZ.js";import{c as O,e as Y,g as Z,j as ee,r as te,t as ie}from"./chunk-LFTJJADD.js";import{a as N}from"./chunk-H24WLYT3.js";import"./chunk-C332HE7F.js";import"./chunk-BHKWWY7Y.js";import{i as A}from"./chunk-3M2LD344.js";import{d as R}from"./chunk-BHQQZ37Z.js";import"./chunk-DN2UKVAE.js";import{a as K,c as X}from"./chunk-TPR5NEYN.js";import{$ as w,Da as I,Ec as U,Gc as W,Hc as J,Ia as V,Jb as $,Pa as B,Qa as v,Ra as _,U as m,Vb as T,Wa as g,Wb as j,Xa as r,Ya as s,Yb as H,Z as y,Za as p,Zb as z,_ as x,_b as P,aa as b,bb as E,cb as k,eb as S,fc as Q,ga as u,gb as C,ib as l,ob as D,pb as M,sb as G,ta as o,vb as d,wb as f,xb as h}from"./chunk-KKN25QZQ.js";import"./chunk-HZ6M6AS2.js";var ue=["codeInput"],pe=n=>({seconds:n});function ge(n,t){if(n&1&&(r(0,"div",8),w(),r(1,"svg",17),p(2,"path",18),s(),b(),r(3,"span"),d(4),s()()),n&2){let e=t,i=l().$implicit;o(4),f(e.key?i(e.key):e.text)}}function fe(n,t){if(n&1&&(r(0,"div",9),w(),r(1,"svg",17),p(2,"path",19),s(),b(),r(3,"span"),d(4),s()()),n&2){let e=l().$implicit;o(4),f(e(t))}}function he(n,t){if(n&1&&(p(0,"span",20),d(1)),n&2){let e=l().$implicit;o(),h(" ",e("auth.verifyEmail.submitting")," ")}}function ve(n,t){if(n&1&&d(0),n&2){let e=l().$implicit;h(" ",e("auth.verifyEmail.submit")," ")}}function _e(n,t){if(n&1&&(r(0,"span",15),d(1),s()),n&2){let e=l().$implicit,i=l();o(),f(e("auth.verifyEmail.resendIn",$(1,pe,i.cooldown())))}}function ye(n,t){if(n&1){let e=S();r(0,"button",21),C("click",function(){y(e);let a=l(2);return x(a.onResend())}),d(1),s()}if(n&2){let e=l().$implicit,i=l();g("disabled",i.isResending()),o(),h(" ",i.isResending()?e("auth.verifyEmail.resending"):e("auth.verifyEmail.resend")," ")}}function xe(n,t){if(n&1){let e=S();E(0),r(1,"div",2)(2,"div",3),w(),r(3,"svg",4),p(4,"path",5),s()(),b(),r(5,"p",6),d(6),r(7,"span",7),d(8),s()()(),v(9,ge,5,1,"div",8),v(10,fe,5,1,"div",9),r(11,"form",10),C("submit",function(a){y(e);let c=l();return x(c.onSubmit(a))}),r(12,"div")(13,"label",11),d(14),s(),r(15,"input",12,0),C("input",function(a){y(e);let c=l();return x(c.onCodeInput(a))}),s()(),r(17,"button",13),v(18,he,2,1)(19,ve,1,1),s()(),r(20,"div",14),d(21),v(22,_e,2,3,"span",15)(23,ye,2,2,"button",16),s(),k()}if(n&2){let e,i,a=t.$implicit,c=l();o(6),h(" ",a("auth.verifyEmail.subtitle")," "),o(2),f(c.email()),o(),_((e=c.error())?9:-1,e),o(),_((i=c.notice())?10:-1,i),o(4),f(a("auth.verifyEmail.codeLabel")),o(),G("auth-input-invalid",!!c.error()),g("value",c.code())("disabled",c.isVerifying()),B("aria-invalid",c.error()?"true":null),o(2),g("disabled",!c.isComplete()||c.isVerifying()),o(),_(c.isVerifying()?18:19),o(3),h(" ",a("auth.verifyEmail.noCode")," "),o(),_(c.cooldown()>0?22:23)}}var se=45,F=class n{authService=m(R);languageService=m(N);analytics=m(q);acquisitionService=m(L);email=z("");verified=H();codeInput=P("codeInput");code=u("");isVerifying=u(!1);isResending=u(!1);error=u(null);notice=u(null);cooldown=u(se);isComplete=T(()=>this.code().length===6);cooldownTimer=null;hasFocused=!1;constructor(){j(()=>{let t=this.codeInput()?.nativeElement;!t||this.hasFocused||(this.hasFocused=!0,t.focus({preventScroll:!0}))})}ngOnInit(){this.startCooldown()}ngOnDestroy(){this.stopCooldown()}onCodeInput(t){let e=t.target,i=e.value.replace(/\D/g,"").slice(0,6);this.code.set(i),e.value=i,this.error.set(null)}async onSubmit(t){if(t.preventDefault(),!(!this.isComplete()||this.isVerifying())){this.error.set(null),this.notice.set(null),this.isVerifying.set(!0);try{let e=this.acquisitionService.getPayload()??void 0,i=await this.authService.verifyEmail(this.code(),e);if(i.ok){this.acquisitionService.clear(),this.verified.emit();return}this.error.set(this.describe(i.code,i.message)),this.analytics.track("signup.code_rejected",{reason:i.code?.replace(/^otp_/,"")??"unknown"}),this.code.set("");let a=this.codeInput()?.nativeElement;a&&(a.value="",a.focus({preventScroll:!0}))}finally{this.isVerifying.set(!1)}}}async onResend(){if(!(this.isResending()||this.cooldown()>0)){this.error.set(null),this.notice.set(null),this.isResending.set(!0);try{let t=await this.authService.resendVerificationCode(this.languageService.activeLang());if(t.ok){this.notice.set("auth.verifyEmail.resent"),this.startCooldown(),this.analytics.track("signup.code_requested",{resend:!0});return}this.error.set(this.describe(t.code,t.message))}finally{this.isResending.set(!1)}}}describe(t,e){switch(t){case"otp_mismatch":return{key:"auth.verifyEmail.errors.mismatch"};case"otp_expired":return{key:"auth.verifyEmail.errors.expired"};case"otp_too_many_attempts":return{key:"auth.verifyEmail.errors.tooManyAttempts"};case"otp_no_code":return{key:"auth.verifyEmail.errors.noCode"};case"verification_ticket_invalid":return{key:"auth.verifyEmail.errors.expiredSession"};default:return e?{text:e}:{key:"auth.verifyEmail.errors.unexpected"}}}startCooldown(){this.stopCooldown(),this.cooldown.set(se),this.cooldownTimer=setInterval(()=>{this.cooldown.update(t=>t-1),this.cooldown()<=0&&this.stopCooldown()},1e3)}stopCooldown(){this.cooldownTimer!==null&&(clearInterval(this.cooldownTimer),this.cooldownTimer=null)}static \u0275fac=function(e){return new(e||n)};static \u0275cmp=I({type:n,selectors:[["app-email-verification-panel"]],viewQuery:function(e,i){e&1&&D(i.codeInput,ue,5),e&2&&M()},hostAttrs:[1,"block"],inputs:{email:[1,"email"]},outputs:{verified:"verified"},decls:1,vars:0,consts:[["codeInput",""],[4,"transloco"],[1,"text-center"],[1,"mx-auto","mb-4","flex","h-12","w-12","items-center","justify-center","rounded-full","bg-brand/10"],["fill","none","stroke","currentColor","viewBox","0 0 24 24","aria-hidden","true",1,"h-6","w-6","text-brand-hover"],["stroke-linecap","round","stroke-linejoin","round","stroke-width","1.8","d","M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"],[1,"text-sm","text-ink"],[1,"font-medium","text-ink"],["role","alert",1,"auth-alert","auth-alert-error","mt-5"],["role","status",1,"auth-alert","auth-alert-success","mt-5"],[1,"mt-5","space-y-4",3,"submit"],["for","verification-code",1,"auth-label"],["id","verification-code","name","verification-code","type","text","inputmode","numeric","autocomplete","one-time-code","maxlength","6","autocapitalize","none","autocorrect","off","spellcheck","fal
1se",1,"auth-input","text-center","text-2xl","tracking-[0.5em]","font-mono",3,"input","value","disabled"],["type","submit",1,"auth-submit",3,"disabled"],[1,"mt-5","text-center","text-sm","text-ink"],[1,"text-ink"],["type","button",1,"auth-link",3,"disabled"],["fill","none","stroke","currentColor","viewBox","0 0 24 24","aria-hidden","true",1,"mt-0.5","h-4.5","w-4.5","shrink-0"],["stroke-linecap","round","stroke-linejoin","round","stroke-width","1.8","d","M12 9v2m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"],["stroke-linecap","round","stroke-linejoin","round","stroke-width","1.8","d","M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"],[1,"h-4","w-4","shrink-0","animate-spin","rounded-full","border-2","border-white/30","border-t-white"],["type","button",1,"auth-link",3,"click","disabled"]],template:function(e,i){e&1&&V(0,xe,24,14,"ng-container",1)},dependencies:[A],encapsulation:2,changeDetection:0})};var Ce=["googleButton"];function we(n,t){if(n&1){let e=S();r(0,"app-email-verification-panel",6),C("verified",function(){y(e);let a=l(2);return x(a.navigateAfterAuth())}),s()}if(n&2){let e=l(2);g("email",e.pendingEmail())}}function be(n,t){if(n&1&&(r(0,"div",7),w(),r(1,"svg",16),p(2,"path",17),s(),b(),r(3,"span"),d(4),s()()),n&2){let e=t,i=l(2).$implicit;o(4),f(e.key?i(e.key):e.text)}}function Se(n,t){if(n&1&&(p(0,"span",18),d(1)),n&2){let e=l(2).$implicit;o(),h(" ",e("auth.signup.submitting")," ")}}function Ee(n,t){if(n&1&&d(0),n&2){let e=l(2).$implicit;h(" ",e("auth.signup.submit")," ")}}function ke(n,t){if(n&1){let e=S();v(0,be,5,1,"div",7),r(1,"form",8),C("ngSubmit",function(){y(e);let a=l(2);return x(a.onSubmit())}),p(2,"app-auth-field",9)(3,"app-password-field",10),r(4,"button",11),v(5,Se,2,1)(6,Ee,1,1),s()(),r(7,"div",12),p(8,"span",13),r(9,"span",14),d(10),s(),p(11,"span",13),s(),p(12,"div",15,0)}if(n&2){let e,i=l().$implicit,a=l();_((e=a.error())?0:-1,e),o(),g("formGroup",a.form),o(),g("control",a.form.controls.email)("label",i("auth.fields.email.label"))("placeholder",i("auth.fields.email.placeholder")),o(),g("control",a.form.controls.password)("label",i("auth.fields.password.label"))("showStrength",!0)("identity",a.identity()),o(),g("disabled",a.form.invalid||a.isLoading()),o(),_(a.isLoading()?5:6),o(5),f(i("auth.shared.orContinueWith"))}}function Ie(n,t){if(n&1&&(E(0),r(1,"app-auth-shell",2),v(2,we,1,1,"app-email-verification-panel",3)(3,ke,14,12),E(4,4),d(5),r(6,"a",5),d(7),s(),k(),s(),k()),n&2){let e=t.$implicit,i=l();o(),g("title",i.awaitingCode()?e("auth.verifyEmail.title"):e("auth.signup.title"))("subtitle",(i.awaitingCode(),"")),o(),_(i.awaitingCode()?2:3),o(3),h(" ",e("auth.signup.haveAccount")," "),o(2),f(e("auth.shared.signIn"))}}var de=class n{authService=m(R);acquisitionService=m(L);router=m(W);route=m(U);googleIdentity=m(ne);analytics=m(q);languageService=m(N);fb=m(te);googleSub=null;form=this.fb.group({email:["",[O.required,O.email]],password:["",[O.required,ae(()=>this.currentIdentity())]]});currentIdentity(){return{email:this.form?.getRawValue().email}}formValue=X(this.form.valueChanges,{initialValue:this.form.getRawValue()});identity=T(()=>({email:this.formValue().email??""}));isLoading=u(!1);error=u(null);awaitingCode=u(!1);pendingEmail=u("");googleReady=u(!1);googleButton=P("googleButton");constructor(){Q(()=>{let t=this.googleButton()?.nativeElement,e=this.languageService.activeLang(),i=this.googleReady();!t||!i||this.googleIdentity.renderButton(t,{text:"signup_with",theme:"filled_black",shape:"pill",locale:e})}),this.form.controls.email.valueChanges.pipe(K()).subscribe(()=>this.revalidatePassword())}revalidatePassword(){this.form.controls.password.updateValueAndValidity({emitEvent:!1})}ngOnInit(){this.googleSub=this.googleIdentity.credential$.subscribe(t=>this.handleGoogleCredential(t)),this.googleIdentity.loadAndInitialize().then(()=>this.googleReady.set(!0)).catch(t=>console.warn("[SignupComponent] Google Identity unavailable:",t))}ngOnDestroy(){this.googleSub?.unsubscribe()}async onSubmit(){if(this.error.set(null),this.form.invalid){this.form.markAllAsTouched();return}this.isLoading.set(!0);try{let{email:t,password:e}=this.form.getRawValue(),i=await this.authService.register({email:t.trim(),password:e,language:this.languageService.activeLang()});i.ok&&i.verificationRequired?(this.pendingEmail.set(i.email??t.trim()),this.awaitingCode.set(!0),this.analytics.track("signup.code_requested",{resend:!1})):i.ok?await this.navigateAfterAuth():i.code==="email_already_registered"?this.error.set({key:"auth.signup.errors.emailAlreadyRegistered"}):this.error.set(i.message?{text:i.message}:{key:"auth.signup.errors.registrationFailed"})}catch(t){console.error("Registration error:",t),this.error.set({key:"auth.signup.errors.unexpected"})}finally{this.isLoading.set(!1)}}
1async navigateAfterAuth(){let t=this.route.snapshot.queryParamMap.get("returnUrl");t?await this.router.navigateByUrl(t):await this.router.navigate(["/dashboard/workspace"])}async handleGoogleCredential(t){this.error.set(null),this.isLoading.set(!0);try{let e=await this.authService.googleLogin(t,this.acquisitionService.getPayload()??void 0);e.ok?await this.navigateAfterAuth():this.error.set(e.message?{text:e.message}:{key:"auth.signup.errors.googleFailed"})}catch(e){console.error("Google login error:",e),this.error.set({key:"auth.signup.errors.googleFailed"})}finally{this.isLoading.set(!1)}}static \u0275fac=function(e){return new(e||n)};static \u0275cmp=I({type:n,selectors:[["app-signup"]],viewQuery:function(e,i){e&1&&D(i.googleButton,Ce,5),e&2&&M()},decls:1,vars:0,consts:[["googleButton",""],[4,"transloco"],[3,"title","subtitle"],[3,"email"],["authFooter",""],["routerLink","/login",1,"auth-link"],[3,"verified","email"],["role","alert",1,"auth-alert","auth-alert-error","mb-5"],[1,"space-y-4",3,"ngSubmit","formGroup"],["fieldId","email","type","email","autocomplete","email",3,"control","label","placeholder"],["fieldId","new-password","autocomplete","new-password",3,"control","label","showStrength","identity"],["type","submit",1,"auth-submit",3,"disabled"],[1,"my-6","flex","items-center","gap-3"],[1,"h-px","flex-1","bg-divider"],[1,"text-xs","text-ink"],[1,"w-full"],["fill","none","stroke","currentColor","viewBox","0 0 24 24","aria-hidden","true",1,"mt-0.5","h-4.5","w-4.5","shrink-0"],["stroke-linecap","round","stroke-linejoin","round","stroke-width","1.8","d","M12 9v2m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"],[1,"h-4","w-4","shrink-0","animate-spin","rounded-full","border-2","border-white/30","border-t-white"]],template:function(e,i){e&1&&V(0,Ie,8,5,"ng-container",1)},dependencies:[ie,Z,Y,ee,J,A,oe,re,le,F],encapsulation:2,changeDetection:0})};export{de as SignupComponent};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.