Files
hedena_gold/apps/user-app/dist/assets/LoginRegisterView-D7zpNvDl.js
T
s.esmaeiliandCursor 7bbdc6cbda Commit release build artifacts for admin, user-app, and API.
Refresh hashed frontend bundles and the API release bundle after build:release.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-16 00:05:48 +03:30

2 lines
13 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import{d as R,i as F,S as H,o as se,Z as K,b as v,c as w,w as W,$ as ae,e as a,f as L,g as E,F as j,r as ne,J as V,H as J,a0 as le,V as oe,G as Z,m as c,D as m,h as l,x as P,E as z,t as D,U as B,a1 as ue,R as M,z as U,a2 as A,s as ie,_ as G,Q as re,W as ce}from"./index-DFI27khJ.js";import{P as Q}from"./PageBar-B1e5h7eE.js";import{a as X,F as $,I as S,T as de}from"./index-CdlnEuQW.js";import"./FormItemContext-D-QJuxQQ.js";import"./classCallCheck-C_t8FQBJ.js";import"./raf-nDFcuFT6.js";const pe={class:"otp-single-input"},me=["type","placeholder","disabled"],he={key:0},fe=["innerHTML"],_e=R({__name:"SingleOtpInput",props:{inputType:{default:"tel"},value:{},separator:{},focus:{type:Boolean},inputClasses:{},shouldAutoFocus:{type:Boolean},isLastChild:{type:Boolean},placeholder:{},disabled:{type:Boolean}},emits:["on-change","on-keydown","on-paste","on-focus","on-blur"],setup(i,{emit:b}){const d=i,h=b,o=F(d.value||""),u=F(null),n=()=>(o.value=o.value.toString(),o.value.length>1&&(o.value=o.value.slice(0,1)),h("on-change",o.value)),r=t=>t>=48&&t<=57||t>=96&&t<=105,f=t=>{d.disabled&&t.preventDefault();const p=t||window.event,x=p.which?p.which:p.keyCode;r(x)||[8,9,13,37,39,46,86].includes(x)?h("on-keydown",t):p.preventDefault()},g=t=>h("on-paste",t),s=()=>(u.value.select(),h("on-focus")),y=()=>h("on-blur");return H(()=>d.value,(t,p)=>{t!==p&&(o.value=t??"")}),H(()=>d.focus,(t,p)=>{p!==t&&u.value&&d.focus&&(u.value.focus(),u.value.select())}),se(()=>{!d.focus||!d.shouldAutoFocus||K(()=>{var t,p;(t=u.value)==null||t.focus(),(p=u.value)==null||p.select()})}),(t,p)=>(v(),w("div",pe,[W(a("input",{type:i.inputType,placeholder:i.placeholder,disabled:i.disabled,ref_key:"input",ref:u,min:"0",max:"9",maxlength:"1",pattern:"[0-9]","onUpdate:modelValue":p[0]||(p[0]=x=>o.value=x),class:L(i.inputClasses),onInput:n,onKeydown:f,onPaste:g,onFocus:s,onBlur:y},null,42,me),[[ae,o.value]]),!i.isLastChild&&i.separator?(v(),w("span",he,[a("span",{innerHTML:i.separator},null,8,fe)])):E("",!0)]))}}),ve={class:"flex ltr justify-around w-full"},ge=8,ye=37,be=39,we=46,ke=R({__name:"OtpInput",props:{defaultFocus:{type:Boolean},numInputs:{default:4},separator:{},inputClasses:{},inputType:{},shouldAutoFocus:{type:Boolean,default:!1},placeholder:{},disabled:{type:Boolean,default:!1}},emits:["on-change","on-complete"],setup(i,{emit:b}){const d=i,h=b,o=F(0),u=F([]),n=F([]),r=e=>{d.defaultFocus&&e<d.numInputs&&!u.value[e]?o.value=u.value.length:o.value=e},f=()=>{o.value=-1},g=()=>u.value.join("").length===d.numInputs?h("on-complete",u.value.join("")):"Wait until the user enters the required number of characters",s=e=>{o.value=Math.max(Math.min(d.numInputs-1,e),0)},y=()=>s(o.value+1),t=()=>s(o.value-1),p=e=>{n.value=Object.assign([],u.value),typeof e=="string"&&e===""?u.value.splice(o.value,1):u.value[o.value]=e,n.value.join("")!==u.value.join("")&&(h("on-change",u.value.join("")),g())},x=e=>{var q;e.preventDefault();const k=(((q=e.clipboardData)==null?void 0:q.getData("text/plain"))??"").slice(0,d.numInputs-o.value).split("");if(d.inputType==="number"&&!k.join("").match(/^\d+$/))return"Invalid pasted data";const T=u.value.slice(0,o.value).concat(k);return T.slice(0,d.numInputs).forEach((ee,te)=>{u.value[te]=ee}),s(T.slice(0,d.numInputs).length),g()},N=e=>{p(e),y()},_=e=>{switch(e.keyCode){case ge:e.preventDefault(),p(""),t();break;case we:e.preventDefault(),p("");break;case ye:e.preventDefault(),t();break;case be:e.preventDefault(),y();break}};return(e,O)=>(v(),w("div",null,[a("div",ve,[(v(!0),w(j,null,ne(i.numInputs,(k,I)=>(v(),V(_e,{key:I,focus:o.value===I,value:u.value[I],separator:i.separator,"input-type":i.inputType,"input-classes":i.inputClasses,"is-last-child":I===i.numInputs-1,"should-auto-focus":i.shouldAutoFocus,placeholder:i.placeholder,disabled:i.disabled,onOnChange:N,onOnKeydown:_,onOnPaste:x,onOnFocus:T=>r(I),onOnBlur:f},null,8,["focus","value","separator","input-type","input-classes","is-last-child","should-auto-focus","placeholder","disabled","onOnFocus"]))),128))])]))}}),xe=i=>` مقدار ${i} نا معتبر است `,Y=i=>({pattern:/^(\+98|0098|98|0)?9\d{9}$/g,message:xe(i)}),C=i=>({required:!0,message:` لطفا ${i} را وارد کنید `}),Oe={class:"auth"},Ie={class:"auth__hero"},$e=["alt"],Ce={class:"auth__title"},Fe={class:"auth__sub"},Se={class:"auth__steps","aria-label":"مراحل ورود"},De={class:"auth__island"},Te={class:"auth__phoneChip"},Be={key:0,class:"auth__timer"},Ee={key:1,class:"auth__timer is-ready"},Re=["disabled"],Le={key:0,class:"auth__ctaSpin","aria-hidden":"true"},Ue={class:"auth__switch"},Ae=R({__name:"LoginView",emits:["register"],setup(i,{emit:b}){const d=b,h=J(),o=le(),u=oe(),n=M({username:void 0}),r=M({step:1,loading:!1,defaultFocus:!1}),f=F(0),g=()=>{f.value>0&&setTimeout(()=>{f.value>0&&(f.value-=1,g())},1e3)};function s(){r.step=1,r.defaultFocus=!1,f.value=0}const y=async()=>{try{r.loading=!0,await U.requestOtp(String(n.username??"")),r.step=2,f.value=120,g(),await K(()=>{r.defaultFocus=!0})}catch(_){const e=_ instanceof Error&&/\((?:429|404|403)\)/.test(_.message)?p(_):null;A.error(e??"خطا در ارسال کد. لطفاً دوباره تلاش کنید.")}finally{r.loading=!1}},t=async _=>{try{r.loading=!0;const e=await U.verifyOtp(String(n.username??""),_),{token:O,customer:k}=e;if(u.login(O,k.id,k.mobile),e.iamBootstrapUrl){window.location.assign(e.iamBootstrapUrl);return}try{const T=await U.getExpertIdentity();u.setSalesExpert(T.isSalesExpert)}catch{u.setSalesExpert(!1)}const I=typeof o.query.redirect=="string"?o.query.redirect:void 0;await h.replace(I??{name:"home"}),A.success("با موفقیت وارد شدید")}catch(e){A.error(e instanceof Error&&/\(429\)/.test(e.message)?p(e)??"تعداد تلاش‌ها بیش از حد مجاز است.":"کد وارد شده صحیح نیست")}finally{r.loading=!1}};function p(_){const e=_.message.match(/\{.*\}/);if(!e)return null;try{const O=JSON.parse(e[0]);return typeof O.message=="string"?O.message:null}catch{return null}}const x=_=>_<10?"0"+_:_,N=ie(()=>r.step===1?"دریافت کد ورود":"ارسال مجدد کد");return(_,e)=>{const O=Z("container");return v(),w("div",Oe,[c(Q,{title:"ورود","back-to":"home"}),c(O,{class:"auth__body"},{default:m(()=>[a("section",Ie,[a("img",{src:z,alt:l(P).name,class:"auth__logo"},null,8,$e),a("h2",Ce,"ورود به "+D(l(P).name),1),a("p",Fe,D(r.step===1?"با شماره موبایل وارد شوید؛ کد یکبارمصرف پیامک می‌شود.":"کد ۴ رقمی پیامک‌شده را وارد کنید."),1),a("ol",Se,[a("li",{class:L(["auth__step",{"is-on":r.step===1,"is-done":r.step>1}])},[...e[2]||(e[2]=[a("span",{class:"auth__stepNum"},"۱",-1),a("span",null,"شماره",-1)])],2),e[4]||(e[4]=a("li",{class:"auth__stepLine","aria-hidden":"true"},null,-1)),a("li",{class:L(["auth__step",{"is-on":r.step===2}])},[...e[3]||(e[3]=[a("span",{class:"auth__stepNum"},"۲",-1),a("span",null,"کد تأیید",-1)])],2)])]),a("section",De,[r.step===2?(v(),w(j,{key:0},[a("div",Te,[a("span",null,D(n.username),1),a("button",{type:"button",class:"auth__editPhone",onClick:s},"ویرایش")]),c(ke,{class:"auth__otp","input-classes":"otp-input",inputType:"tel","num-inputs":4,"should-auto-focus":!0,defaultFocus:r.defaultFocus,onOnComplete:t},null,8,["defaultFocus"]),f.value>0?(v(),w("p",Be,[e[5]||(e[5]=B(" ارسال مجدد تا ",-1)),a("strong",null,D(x(f.value)),1),e[6]||(e[6]=B(" ثانیه ",-1))])):(v(),w("p",Ee,"می‌توانید کد را دوباره دریافت کنید"))],64)):E("",!0),c(l(X),{model:n,layout:"vertical",onFinish:y,class:"auth__form"},{default:m(()=>[W(c(l($),{name:"username",label:"شماره موبایل",rules:[l(C)("شماره موبایل"),l(Y)("شماره موبایل")]},{default:m(()=>[c(l(S),{type:"tel",inputmode:"numeric",dir:"ltr",placeholder:"09123456789",autocomplete:"tel",value:n.username,"onUpdate:value":e[0]||(e[0]=k=>n.username=k),class:"auth__phoneInput"},null,8,["value"])]),_:1},8,["rules"]),[[ue,r.step===1]]),a("button",{type:"submit",class:L(["auth__cta",{"is-loading":r.loading}]),disabled:r.loading||f.value>0&&r.step===2},[r.loading?(v(),w("span",Le)):E("",!0),B(" "+D(N.value),1)],10,Re)]),_:1},8,["model"])]),a("p",Ue,[e[7]||(e[7]=B(" حساب ندارید؟ ",-1)),a("button",{type:"button",onClick:e[1]||(e[1]=k=>d("register",!0))},"ثبت‌نام فروشگاه")])]),_:1})])}}}),Pe=G(Ae,[["__scopeId","data-v-9dd3076d"]]),Me="/assets/registerDelay-C2Zjomix.svg",Ne={class:"auth"},Ve={class:"auth__hero"},je=["alt"],qe={class:"auth__sub"},He={class:"auth__island"},Ke={class:"auth__island"},We=["disabled"],Je={class:"auth__switch"},Ze=["src"],ze=R({__name:"RegisterView",emits:["register"],setup(i,{emit:b}){const d=b,h=J(),o=M({loading:!1}),u=F(!1),n=M({fname:void 0,lname:void 0,mobile:void 0,store_name:void 0,phone:void 0,address:void 0,city:void 0}),r=async()=>{try{o.loading=!0,await U.register({fname:String(n.fname??""),lname:String(n.lname??""),mobile:String(n.mobile??""),store_name:String(n.store_name??""),phone:String(n.phone??""),address:String(n.address??""),city:String(n.city??"")}),u.value=!0}catch(g){A.error(f(g)??"خطا در ثبت اطلاعات. لطفاً دوباره تلاش کنید.")}finally{o.loading=!1}};function f(g){const s=g instanceof Error?g.message.match(/\{.*\}/):null;if(!s)return null;try{const y=JSON.parse(s[0]);return Array.isArray(y.message)?y.message[0]??null:y.message??null}catch{return null}}return(g,s)=>{const y=Z("container");return v(),w("div",Ne,[c(Q,{title:"ثبت‌نام","back-to":"home"}),c(re,{spinning:o.loading,tip:"در حال ثبت اطلاعات"},{default:m(()=>[c(y,{class:"auth__body"},{default:m(()=>[a("section",Ve,[a("img",{src:z,alt:l(P).name,class:"auth__logo"},null,8,je),s[10]||(s[10]=a("h2",{class:"auth__title"},"ساخت حساب فروشگاه",-1)),a("p",qe," پس از ثبت، کارشناسان "+D(l(P).name)+" اطلاعات را بررسی می‌کنند و سپس می‌توانید وارد شوید. ",1)]),c(l(X),{model:n,layout:"vertical",onFinish:r,class:"auth__form"},{default:m(()=>[a("section",He,[s[11]||(s[11]=a("header",{class:"auth__groupHead"},[a("h3",null,"اطلاعات شخصی"),a("p",null,"نام و شمارهٔ تماس مالک فروشگاه")],-1)),c(l($),{name:"fname",label:"نام",rules:l(C)("نام")},{default:m(()=>[c(l(S),{value:n.fname,"onUpdate:value":s[0]||(s[0]=t=>n.fname=t),autocomplete:"given-name",placeholder:"مثلاً علی"},null,8,["value"])]),_:1},8,["rules"]),c(l($),{name:"lname",label:"نام خانوادگی",rules:l(C)("نام خانوادگی")},{default:m(()=>[c(l(S),{value:n.lname,"onUpdate:value":s[1]||(s[1]=t=>n.lname=t),autocomplete:"family-name",placeholder:"مثلاً محمدی"},null,8,["value"])]),_:1},8,["rules"]),c(l($),{name:"mobile",label:"شماره موبایل",rules:[l(Y)("شماره موبایل"),l(C)("شماره موبایل")],class:"auth__itemLast"},{default:m(()=>[c(l(S),{value:n.mobile,"onUpdate:value":s[2]||(s[2]=t=>n.mobile=t),type:"tel",inputmode:"numeric",dir:"ltr",placeholder:"09123456789",autocomplete:"tel",class:"auth__ltr"},null,8,["value"])]),_:1},8,["rules"])]),a("section",Ke,[s[12]||(s[12]=a("header",{class:"auth__groupHead"},[a("h3",null,"اطلاعات فروشگاه"),a("p",null,"برای تأیید و ارسال سفارش‌ها لازم است")],-1)),c(l($),{name:"store_name",label:"نام فروشگاه",rules:l(C)("نام فروشگاه")},{default:m(()=>[c(l(S),{value:n.store_name,"onUpdate:value":s[3]||(s[3]=t=>n.store_name=t),placeholder:"نام تابلو یا واحد صنفی"},null,8,["value"])]),_:1},8,["rules"]),c(l($),{name:"phone",label:"تلفن فروشگاه",rules:[l(C)("تلفن فروشگاه")]},{default:m(()=>[c(l(S),{value:n.phone,"onUpdate:value":s[4]||(s[4]=t=>n.phone=t),type:"tel",inputmode:"numeric",dir:"ltr",placeholder:"021xxxxxxx",class:"auth__ltr"},null,8,["value"])]),_:1},8,["rules"]),c(l($),{name:"city",label:"شهر",rules:l(C)("شهر")},{default:m(()=>[c(l(S),{value:n.city,"onUpdate:value":s[5]||(s[5]=t=>n.city=t),placeholder:"مثلاً تهران"},null,8,["value"])]),_:1},8,["rules"]),c(l($),{name:"address",label:"آدرس پستی",rules:l(C)("آدرس"),class:"auth__itemLast"},{default:m(()=>[c(l(de),{value:n.address,"onUpdate:value":s[6]||(s[6]=t=>n.address=t),rows:3,placeholder:"آدرس کامل برای هماهنگی ارسال"},null,8,["value"])]),_:1},8,["rules"])]),a("button",{type:"submit",class:"auth__cta",disabled:o.loading}," ثبت درخواست عضویت ",8,We)]),_:1},8,["model"]),a("p",Je,[s[13]||(s[13]=B(" قبلاً ثبت‌نام کرده‌اید؟ ",-1)),a("button",{type:"button",onClick:s[7]||(s[7]=t=>d("register",!1))},"ورود به حساب")])]),_:1})]),_:1},8,["spinning"]),c(ce,{timeOut:-1,show:u.value,"onUpdate:show":s[9]||(s[9]=t=>u.value=t),closeOnClickOverlay:!1},{img:m(()=>[a("img",{src:l(Me),alt:"",class:"opacity-80"},null,8,Ze)]),title:m(()=>[...s[14]||(s[14]=[a("div",null," ثبت‌نام شما ثبت شد. پس از تأیید کارشناسان می‌توانید با همین شماره وارد شوید. ",-1)])]),button:m(()=>[a("div",{class:"text-center",onClick:s[8]||(s[8]=t=>l(h).push({name:"home"}))},"متوجه شدم")]),_:1},8,["show"])])}}}),Ge=G(ze,[["__scopeId","data-v-069f6683"]]),at=R({__name:"LoginRegisterView",setup(i){const b=F(!1),d=h=>b.value=h;return(h,o)=>(v(),w(j,null,[b.value?E("",!0):(v(),V(Pe,{key:0,onRegister:d})),b.value?(v(),V(Ge,{key:1,onRegister:d})):E("",!0)],64))}});export{at as default};