diff --git a/apps/admin-panel/dist/assets/AccountingSyncButton.vue_vue_type_script_setup_true_lang-DQT4x2vG.js b/apps/admin-panel/dist/assets/AccountingSyncButton.vue_vue_type_script_setup_true_lang-BgmQz3-B.js similarity index 98% rename from apps/admin-panel/dist/assets/AccountingSyncButton.vue_vue_type_script_setup_true_lang-DQT4x2vG.js rename to apps/admin-panel/dist/assets/AccountingSyncButton.vue_vue_type_script_setup_true_lang-BgmQz3-B.js index 7001bf7..4d59785 100644 --- a/apps/admin-panel/dist/assets/AccountingSyncButton.vue_vue_type_script_setup_true_lang-DQT4x2vG.js +++ b/apps/admin-panel/dist/assets/AccountingSyncButton.vue_vue_type_script_setup_true_lang-BgmQz3-B.js @@ -1 +1 @@ -import{c as O,I as x,d as j,x as B,y as m,o as C,a as A,w as y,f as $,t as E,h as P,i as L,m as u,a9 as v,M as b,G as M,r as N}from"./index-C9T3Vski.js";var V={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M168 504.2c1-43.7 10-86.1 26.9-126 17.3-41 42.1-77.7 73.7-109.4S337 212.3 378 195c42.4-17.9 87.4-27 133.9-27s91.5 9.1 133.8 27A341.5 341.5 0 01755 268.8c9.9 9.9 19.2 20.4 27.8 31.4l-60.2 47a8 8 0 003 14.1l175.7 43c5 1.2 9.9-2.6 9.9-7.7l.8-180.9c0-6.7-7.7-10.5-12.9-6.3l-56.4 44.1C765.8 155.1 646.2 92 511.8 92 282.7 92 96.3 275.6 92 503.8a8 8 0 008 8.2h60c4.4 0 7.9-3.5 8-7.8zm756 7.8h-60c-4.4 0-7.9 3.5-8 7.8-1 43.7-10 86.1-26.9 126-17.3 41-42.1 77.8-73.7 109.4A342.45 342.45 0 01512.1 856a342.24 342.24 0 01-243.2-100.8c-9.9-9.9-19.2-20.4-27.8-31.4l60.2-47a8 8 0 00-3-14.1l-175.7-43c-5-1.2-9.9 2.6-9.9 7.7l-.7 181c0 6.7 7.7 10.5 12.9 6.3l56.4-44.1C258.2 868.9 377.8 932 512.2 932c229.2 0 415.5-183.7 419.8-411.8a8 8 0 00-8-8.2z"}}]},name:"sync",theme:"outlined"};function g(o){for(var t=1;te&&typeof e=="object"?Object.entries(e).map(([s,a])=>`${_[s]??s}: ${a}`).join("، "):"";B(async()=>{try{const{data:e}=await m.get("admin/accounting-status");c.value=!!(e!=null&&e.connected),p.value=(e==null?void 0:e.provider)??null}catch{c.value=!1}});async function w(){var e,s;i.value=!0;try{const{data:a}=await m.post(n.endpoint),k=Object.entries(a.results).map(([f,l])=>v("p",{style:l.ok?"":"color:#d4380d"},`${h[f]??f}: ${l.ok?S(l.summary)||"انجام شد":`خطا — ${l.error}`}`));(a.ok?b.success:b.warning)({title:a.ok?"سینک با حسابداری انجام شد":"سینک با حسابداری کامل انجام نشد",content:v("div",k),okText:"باشه"}),r("done")}catch(a){M.error(((s=(e=a==null?void 0:a.response)==null?void 0:e.data)==null?void 0:s.message)||"سینک با حسابداری انجام نشد")}finally{i.value=!1}}return(e,s)=>{const a=N("a-button");return c.value?(C(),A(a,{key:0,loading:i.value,onClick:w},{icon:y(()=>[O(P(d))]),default:y(()=>[$(" سینک با "+E(p.value||"حسابداری"),1)]),_:1},8,["loading"])):L("",!0)}}});export{I as _}; +import{c as O,I as x,d as j,x as B,y as m,o as C,a as A,w as y,f as $,t as E,h as P,i as L,m as u,a9 as v,M as b,G as M,r as N}from"./index-CuIWfDbM.js";var V={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M168 504.2c1-43.7 10-86.1 26.9-126 17.3-41 42.1-77.7 73.7-109.4S337 212.3 378 195c42.4-17.9 87.4-27 133.9-27s91.5 9.1 133.8 27A341.5 341.5 0 01755 268.8c9.9 9.9 19.2 20.4 27.8 31.4l-60.2 47a8 8 0 003 14.1l175.7 43c5 1.2 9.9-2.6 9.9-7.7l.8-180.9c0-6.7-7.7-10.5-12.9-6.3l-56.4 44.1C765.8 155.1 646.2 92 511.8 92 282.7 92 96.3 275.6 92 503.8a8 8 0 008 8.2h60c4.4 0 7.9-3.5 8-7.8zm756 7.8h-60c-4.4 0-7.9 3.5-8 7.8-1 43.7-10 86.1-26.9 126-17.3 41-42.1 77.8-73.7 109.4A342.45 342.45 0 01512.1 856a342.24 342.24 0 01-243.2-100.8c-9.9-9.9-19.2-20.4-27.8-31.4l60.2-47a8 8 0 00-3-14.1l-175.7-43c-5-1.2-9.9 2.6-9.9 7.7l-.7 181c0 6.7 7.7 10.5 12.9 6.3l56.4-44.1C258.2 868.9 377.8 932 512.2 932c229.2 0 415.5-183.7 419.8-411.8a8 8 0 00-8-8.2z"}}]},name:"sync",theme:"outlined"};function g(o){for(var t=1;te&&typeof e=="object"?Object.entries(e).map(([s,a])=>`${_[s]??s}: ${a}`).join("، "):"";B(async()=>{try{const{data:e}=await m.get("admin/accounting-status");c.value=!!(e!=null&&e.connected),p.value=(e==null?void 0:e.provider)??null}catch{c.value=!1}});async function w(){var e,s;i.value=!0;try{const{data:a}=await m.post(n.endpoint),k=Object.entries(a.results).map(([f,l])=>v("p",{style:l.ok?"":"color:#d4380d"},`${h[f]??f}: ${l.ok?S(l.summary)||"انجام شد":`خطا — ${l.error}`}`));(a.ok?b.success:b.warning)({title:a.ok?"سینک با حسابداری انجام شد":"سینک با حسابداری کامل انجام نشد",content:v("div",k),okText:"باشه"}),r("done")}catch(a){M.error(((s=(e=a==null?void 0:a.response)==null?void 0:e.data)==null?void 0:s.message)||"سینک با حسابداری انجام نشد")}finally{i.value=!1}}return(e,s)=>{const a=N("a-button");return c.value?(C(),A(a,{key:0,loading:i.value,onClick:w},{icon:y(()=>[O(P(d))]),default:y(()=>[$(" سینک با "+E(p.value||"حسابداری"),1)]),_:1},8,["loading"])):L("",!0)}}});export{I as _}; diff --git a/apps/admin-panel/dist/assets/Add-BjGFcwMZ.js b/apps/admin-panel/dist/assets/Add-BjGFcwMZ.js new file mode 100644 index 0000000..2f10dd5 --- /dev/null +++ b/apps/admin-panel/dist/assets/Add-BjGFcwMZ.js @@ -0,0 +1 @@ +import{_ as o}from"./Add.vue_vue_type_script_setup_true_lang-GQn7yiQq.js";import"./index-CuIWfDbM.js";import"./select--BgT6D7O.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-DXuLuiBZ.js";import"./ImageUploadInput.vue_vue_type_script_setup_true_lang-Bb4hJ8Y2.js";export{o as default}; diff --git a/apps/admin-panel/dist/assets/Add-su3cMDjW.js b/apps/admin-panel/dist/assets/Add-su3cMDjW.js deleted file mode 100644 index b3b3e14..0000000 --- a/apps/admin-panel/dist/assets/Add-su3cMDjW.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as o}from"./Add.vue_vue_type_script_setup_true_lang-UtZ_MoEU.js";import"./index-C9T3Vski.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-Du4lPDHl.js";import"./ImageUploadInput.vue_vue_type_script_setup_true_lang-Bjo3vw78.js";export{o as default}; diff --git a/apps/admin-panel/dist/assets/Add.vue_vue_type_script_setup_true_lang-GQn7yiQq.js b/apps/admin-panel/dist/assets/Add.vue_vue_type_script_setup_true_lang-GQn7yiQq.js new file mode 100644 index 0000000..3a9ea3f --- /dev/null +++ b/apps/admin-panel/dist/assets/Add.vue_vue_type_script_setup_true_lang-GQn7yiQq.js @@ -0,0 +1 @@ +import{d as P,n as Q,x as W,y,a as b,w as o,h as X,k as Y,m as j,z,s as M,r as s,o as v,c as l,f as m,p as N,b as E,e as F,F as T,H as Z,G as A,l as ee,t as D}from"./index-CuIWfDbM.js";import{o as te}from"./select--BgT6D7O.js";import{_ as ae}from"./BaseFormModal.vue_vue_type_style_index_0_lang-DXuLuiBZ.js";import{_ as g}from"./ImageUploadInput.vue_vue_type_script_setup_true_lang-Bb4hJ8Y2.js";const le={class:"grid-2"},oe={class:"grid-2"},se=P({__name:"Add",props:{open:{type:Boolean},id:{}},emits:["update:open","success"],setup(U,{emit:G}){const V=U,k=G,c=V.open!==void 0,H=Y(),L=ee(),p=c?V.id:H.params.id,f=j(!1),x=j([]),t=z({type:1,title:"",parent_id_id:void 0,image:"",icon:"",meta:"",body_html:""}),d=z({}),n=M(()=>t.type===1?"(سایت)":t.type===2?"(موبایل)":""),$=M(()=>x.value.filter(i=>i.type===t.type&&i.id!==p));Q(()=>t.type,()=>{t.parent_id_id&&!$.value.some(i=>i.id===t.parent_id_id)&&(t.parent_id_id=void 0)});function B(i,e){return te(e).includes(i)}function h(){return Object.keys(d).forEach(i=>delete d[i]),t.type||(d.type="لطفا نوع نمایش دسته بندی را انتخاب کنید"),t.title||(d.title="لطفا مقدار را وارد کنید"),Object.keys(d).length===0}async function w(){var i,e;if(h())try{f.value=!0,p?await y.put(`category/${p}`,{...t,id:p}):await y.post("category/",t),A.info("اطلاعات با موفقیت به ثبت رسید."),c?(k("success"),k("update:open",!1)):L.push("/category/list")}catch(r){A.error(((e=(i=r==null?void 0:r.response)==null?void 0:i.data)==null?void 0:e.message)??"خطا در ثبت اطلاعات.")}finally{f.value=!1}}return W(async()=>{try{const{data:i}=await y.get("admin/categories/tree");x.value=i}catch(i){console.log(i)}if(p)try{const{data:i}=await y.get(`admin/categories/${p}`);Object.assign(t,{type:i.type??1,title:i.title??"",parent_id_id:i.parent_id_id??void 0,image:i.image??"",icon:i.icon??"",meta:i.meta??"",body_html:i.body_html??""})}catch(i){console.log(i)}}),(i,e)=>{const r=s("a-radio"),R=s("a-radio-group"),u=s("a-form-item"),_=s("a-input"),C=s("a-select-option"),O=s("a-select"),S=s("a-textarea"),q=s("a-button"),I=s("a-card"),J=s("a-form"),K=s("a-spin");return c?(v(),b(ae,{key:0,open:!!U.open,id:X(p),"add-title":`دسته بندی ${n.value}`,"edit-title":`دسته بندی ${n.value}`,loading:f.value,submitting:f.value,width:"lg","onUpdate:open":e[7]||(e[7]=a=>i.$emit("update:open",a)),onSubmit:w},{default:o(()=>[l(u,{label:"نوع نمایش","validate-status":d.type?"error":"",help:d.type},{default:o(()=>[l(R,{value:t.type,"onUpdate:value":e[0]||(e[0]=a=>t.type=a)},{default:o(()=>[l(r,{value:1},{default:o(()=>[...e[15]||(e[15]=[m("سایت",-1)])]),_:1}),l(r,{value:2},{default:o(()=>[...e[16]||(e[16]=[m("اپلیکشن موبایل",-1)])]),_:1})]),_:1},8,["value"])]),_:1},8,["validate-status","help"]),N("div",le,[l(u,{label:`عنوان ${n.value}`,"validate-status":d.title?"error":"",help:d.title},{default:o(()=>[l(_,{value:t.title,"onUpdate:value":e[1]||(e[1]=a=>t.title=a)},null,8,["value"])]),_:1},8,["label","validate-status","help"]),l(u,{label:`پدر دسته ${n.value}`},{default:o(()=>[l(O,{value:t.parent_id_id,"onUpdate:value":e[2]||(e[2]=a=>t.parent_id_id=a),"allow-clear":"","show-search":"",placeholder:"انتخاب کنید","filter-option":B},{default:o(()=>[(v(!0),E(T,null,F($.value,a=>(v(),b(C,{key:a.id,value:a.id},{default:o(()=>[m(D(a.title),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),l(u,{label:`تصویر شاخص ${n.value}`},{default:o(()=>[l(g,{modelValue:t.image,"onUpdate:modelValue":e[3]||(e[3]=a=>t.image=a),purpose:"category.image",placeholder:"تصویر"},null,8,["modelValue"])]),_:1},8,["label"]),l(u,{label:`آیکون ${n.value}`},{default:o(()=>[l(g,{modelValue:t.icon,"onUpdate:modelValue":e[4]||(e[4]=a=>t.icon=a),purpose:"category.icon",placeholder:"آیکون"},null,8,["modelValue"])]),_:1},8,["label"]),l(u,{label:`متا تگ ${n.value}`},{default:o(()=>[l(_,{value:t.meta,"onUpdate:value":e[5]||(e[5]=a=>t.meta=a)},null,8,["value"])]),_:1},8,["label"])]),l(u,{label:`شرح دسته ${n.value}`},{default:o(()=>[l(S,{value:t.body_html,"onUpdate:value":e[6]||(e[6]=a=>t.body_html=a),"auto-size":{minRows:3,maxRows:8}},null,8,["value"])]),_:1},8,["label"])]),_:1},8,["open","id","add-title","edit-title","loading","submitting"])):(v(),b(K,{key:1,spinning:f.value},{default:o(()=>[l(J,{layout:"vertical",onSubmit:Z(w,["prevent"])},{default:o(()=>[l(I,{title:`دسته بندی ${n.value}`,class:"mb-base page-card"},{default:o(()=>[l(u,{label:"نوع نمایش","validate-status":d.type?"error":"",help:d.type},{default:o(()=>[l(R,{value:t.type,"onUpdate:value":e[8]||(e[8]=a=>t.type=a)},{default:o(()=>[l(r,{value:1},{default:o(()=>[...e[17]||(e[17]=[m("سایت",-1)])]),_:1}),l(r,{value:2},{default:o(()=>[...e[18]||(e[18]=[m("اپلیکشن موبایل",-1)])]),_:1})]),_:1},8,["value"])]),_:1},8,["validate-status","help"]),N("div",oe,[l(u,{label:`عنوان ${n.value}`,"validate-status":d.title?"error":"",help:d.title},{default:o(()=>[l(_,{value:t.title,"onUpdate:value":e[9]||(e[9]=a=>t.title=a)},null,8,["value"])]),_:1},8,["label","validate-status","help"]),l(u,{label:`پدر دسته ${n.value}`},{default:o(()=>[l(O,{value:t.parent_id_id,"onUpdate:value":e[10]||(e[10]=a=>t.parent_id_id=a),"allow-clear":"","show-search":"",placeholder:"انتخاب کنید","filter-option":B},{default:o(()=>[(v(!0),E(T,null,F($.value,a=>(v(),b(C,{key:a.id,value:a.id},{default:o(()=>[m(D(a.title),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),l(u,{label:`تصویر شاخص ${n.value}`},{default:o(()=>[l(g,{modelValue:t.image,"onUpdate:modelValue":e[11]||(e[11]=a=>t.image=a),purpose:"category.image",placeholder:"تصویر"},null,8,["modelValue"])]),_:1},8,["label"]),l(u,{label:`آیکون ${n.value}`},{default:o(()=>[l(g,{modelValue:t.icon,"onUpdate:modelValue":e[12]||(e[12]=a=>t.icon=a),purpose:"category.icon",placeholder:"آیکون"},null,8,["modelValue"])]),_:1},8,["label"]),l(u,{label:`متا تگ ${n.value}`},{default:o(()=>[l(_,{value:t.meta,"onUpdate:value":e[13]||(e[13]=a=>t.meta=a)},null,8,["value"])]),_:1},8,["label"])]),l(u,{label:`شرح دسته ${n.value}`},{default:o(()=>[l(S,{value:t.body_html,"onUpdate:value":e[14]||(e[14]=a=>t.body_html=a),"auto-size":{minRows:3,maxRows:8}},null,8,["value"])]),_:1},8,["label"]),l(q,{type:"primary",class:"form-submit",onClick:w},{default:o(()=>[...e[19]||(e[19]=[m("ثبت اطلاعات",-1)])]),_:1})]),_:1},8,["title"])]),_:1})]),_:1},8,["spinning"]))}}});export{se as _}; diff --git a/apps/admin-panel/dist/assets/Add.vue_vue_type_script_setup_true_lang-UtZ_MoEU.js b/apps/admin-panel/dist/assets/Add.vue_vue_type_script_setup_true_lang-UtZ_MoEU.js deleted file mode 100644 index 62dcb45..0000000 --- a/apps/admin-panel/dist/assets/Add.vue_vue_type_script_setup_true_lang-UtZ_MoEU.js +++ /dev/null @@ -1 +0,0 @@ -import{d as P,n as Q,x as W,y as b,a as g,w as o,h as X,k as Y,m as j,z,s as M,r,o as v,c as l,f as m,p as N,b as h,e as E,F,H as Z,G as A,l as ee,t as D}from"./index-C9T3Vski.js";import{_ as te}from"./BaseFormModal.vue_vue_type_style_index_0_lang-Du4lPDHl.js";import{_ as c}from"./ImageUploadInput.vue_vue_type_script_setup_true_lang-Bjo3vw78.js";const ae={class:"grid-2"},le={class:"grid-2"},ue=P({__name:"Add",props:{open:{type:Boolean},id:{}},emits:["update:open","success"],setup(V,{emit:G}){const k=V,x=G,$=k.open!==void 0,H=Y(),L=ee(),p=$?k.id:H.params.id,f=j(!1),B=j([]),t=z({type:1,title:"",parent_id_id:void 0,image:"",icon:"",meta:"",body_html:""}),d=z({}),i=M(()=>t.type===1?"(سایت)":t.type===2?"(موبایل)":""),w=M(()=>B.value.filter(n=>n.type===t.type&&n.id!==p));Q(()=>t.type,()=>{t.parent_id_id&&!w.value.some(n=>n.id===t.parent_id_id)&&(t.parent_id_id=void 0)});function R(n,e){var s,_;return String(((_=(s=e==null?void 0:e.children)==null?void 0:s[0])==null?void 0:_.children)??"").includes(n)}function T(){return Object.keys(d).forEach(n=>delete d[n]),t.type||(d.type="لطفا نوع نمایش دسته بندی را انتخاب کنید"),t.title||(d.title="لطفا مقدار را وارد کنید"),Object.keys(d).length===0}async function U(){var n,e;if(T())try{f.value=!0,p?await b.put(`category/${p}`,{...t,id:p}):await b.post("category/",t),A.info("اطلاعات با موفقیت به ثبت رسید."),$?(x("success"),x("update:open",!1)):L.push("/category/list")}catch(s){A.error(((e=(n=s==null?void 0:s.response)==null?void 0:n.data)==null?void 0:e.message)??"خطا در ثبت اطلاعات.")}finally{f.value=!1}}return W(async()=>{try{const{data:n}=await b.get("admin/categories/tree");B.value=n}catch(n){console.log(n)}if(p)try{const{data:n}=await b.get(`admin/categories/${p}`);Object.assign(t,{type:n.type??1,title:n.title??"",parent_id_id:n.parent_id_id??void 0,image:n.image??"",icon:n.icon??"",meta:n.meta??"",body_html:n.body_html??""})}catch(n){console.log(n)}}),(n,e)=>{const s=r("a-radio"),_=r("a-radio-group"),u=r("a-form-item"),y=r("a-input"),S=r("a-select-option"),C=r("a-select"),O=r("a-textarea"),q=r("a-button"),I=r("a-card"),J=r("a-form"),K=r("a-spin");return $?(v(),g(te,{key:0,open:!!V.open,id:X(p),"add-title":`دسته بندی ${i.value}`,"edit-title":`دسته بندی ${i.value}`,loading:f.value,submitting:f.value,width:"lg","onUpdate:open":e[7]||(e[7]=a=>n.$emit("update:open",a)),onSubmit:U},{default:o(()=>[l(u,{label:"نوع نمایش","validate-status":d.type?"error":"",help:d.type},{default:o(()=>[l(_,{value:t.type,"onUpdate:value":e[0]||(e[0]=a=>t.type=a)},{default:o(()=>[l(s,{value:1},{default:o(()=>[...e[15]||(e[15]=[m("سایت",-1)])]),_:1}),l(s,{value:2},{default:o(()=>[...e[16]||(e[16]=[m("اپلیکشن موبایل",-1)])]),_:1})]),_:1},8,["value"])]),_:1},8,["validate-status","help"]),N("div",ae,[l(u,{label:`عنوان ${i.value}`,"validate-status":d.title?"error":"",help:d.title},{default:o(()=>[l(y,{value:t.title,"onUpdate:value":e[1]||(e[1]=a=>t.title=a)},null,8,["value"])]),_:1},8,["label","validate-status","help"]),l(u,{label:`پدر دسته ${i.value}`},{default:o(()=>[l(C,{value:t.parent_id_id,"onUpdate:value":e[2]||(e[2]=a=>t.parent_id_id=a),"allow-clear":"","show-search":"",placeholder:"انتخاب کنید","filter-option":R},{default:o(()=>[(v(!0),h(F,null,E(w.value,a=>(v(),g(S,{key:a.id,value:a.id},{default:o(()=>[m(D(a.title),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),l(u,{label:`تصویر شاخص ${i.value}`},{default:o(()=>[l(c,{modelValue:t.image,"onUpdate:modelValue":e[3]||(e[3]=a=>t.image=a),purpose:"category.image",placeholder:"تصویر"},null,8,["modelValue"])]),_:1},8,["label"]),l(u,{label:`آیکون ${i.value}`},{default:o(()=>[l(c,{modelValue:t.icon,"onUpdate:modelValue":e[4]||(e[4]=a=>t.icon=a),purpose:"category.icon",placeholder:"آیکون"},null,8,["modelValue"])]),_:1},8,["label"]),l(u,{label:`متا تگ ${i.value}`},{default:o(()=>[l(y,{value:t.meta,"onUpdate:value":e[5]||(e[5]=a=>t.meta=a)},null,8,["value"])]),_:1},8,["label"])]),l(u,{label:`شرح دسته ${i.value}`},{default:o(()=>[l(O,{value:t.body_html,"onUpdate:value":e[6]||(e[6]=a=>t.body_html=a),"auto-size":{minRows:3,maxRows:8}},null,8,["value"])]),_:1},8,["label"])]),_:1},8,["open","id","add-title","edit-title","loading","submitting"])):(v(),g(K,{key:1,spinning:f.value},{default:o(()=>[l(J,{layout:"vertical",onSubmit:Z(U,["prevent"])},{default:o(()=>[l(I,{title:`دسته بندی ${i.value}`,class:"mb-base page-card"},{default:o(()=>[l(u,{label:"نوع نمایش","validate-status":d.type?"error":"",help:d.type},{default:o(()=>[l(_,{value:t.type,"onUpdate:value":e[8]||(e[8]=a=>t.type=a)},{default:o(()=>[l(s,{value:1},{default:o(()=>[...e[17]||(e[17]=[m("سایت",-1)])]),_:1}),l(s,{value:2},{default:o(()=>[...e[18]||(e[18]=[m("اپلیکشن موبایل",-1)])]),_:1})]),_:1},8,["value"])]),_:1},8,["validate-status","help"]),N("div",le,[l(u,{label:`عنوان ${i.value}`,"validate-status":d.title?"error":"",help:d.title},{default:o(()=>[l(y,{value:t.title,"onUpdate:value":e[9]||(e[9]=a=>t.title=a)},null,8,["value"])]),_:1},8,["label","validate-status","help"]),l(u,{label:`پدر دسته ${i.value}`},{default:o(()=>[l(C,{value:t.parent_id_id,"onUpdate:value":e[10]||(e[10]=a=>t.parent_id_id=a),"allow-clear":"","show-search":"",placeholder:"انتخاب کنید","filter-option":R},{default:o(()=>[(v(!0),h(F,null,E(w.value,a=>(v(),g(S,{key:a.id,value:a.id},{default:o(()=>[m(D(a.title),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),l(u,{label:`تصویر شاخص ${i.value}`},{default:o(()=>[l(c,{modelValue:t.image,"onUpdate:modelValue":e[11]||(e[11]=a=>t.image=a),purpose:"category.image",placeholder:"تصویر"},null,8,["modelValue"])]),_:1},8,["label"]),l(u,{label:`آیکون ${i.value}`},{default:o(()=>[l(c,{modelValue:t.icon,"onUpdate:modelValue":e[12]||(e[12]=a=>t.icon=a),purpose:"category.icon",placeholder:"آیکون"},null,8,["modelValue"])]),_:1},8,["label"]),l(u,{label:`متا تگ ${i.value}`},{default:o(()=>[l(y,{value:t.meta,"onUpdate:value":e[13]||(e[13]=a=>t.meta=a)},null,8,["value"])]),_:1},8,["label"])]),l(u,{label:`شرح دسته ${i.value}`},{default:o(()=>[l(O,{value:t.body_html,"onUpdate:value":e[14]||(e[14]=a=>t.body_html=a),"auto-size":{minRows:3,maxRows:8}},null,8,["value"])]),_:1},8,["label"]),l(q,{type:"primary",class:"form-submit",onClick:U},{default:o(()=>[...e[19]||(e[19]=[m("ثبت اطلاعات",-1)])]),_:1})]),_:1},8,["title"])]),_:1})]),_:1},8,["spinning"]))}}});export{ue as _}; diff --git a/apps/admin-panel/dist/assets/AddBranches-DU8yZZ7h.js b/apps/admin-panel/dist/assets/AddBranches-DU8yZZ7h.js deleted file mode 100644 index 7ad9373..0000000 --- a/apps/admin-panel/dist/assets/AddBranches-DU8yZZ7h.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as o}from"./AddBranches.vue_vue_type_script_setup_true_lang-Bih_hMrV.js";import"./index-C9T3Vski.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-Du4lPDHl.js";export{o as default}; diff --git a/apps/admin-panel/dist/assets/AddBranches-DbAUL4Wv.js b/apps/admin-panel/dist/assets/AddBranches-DbAUL4Wv.js new file mode 100644 index 0000000..5662165 --- /dev/null +++ b/apps/admin-panel/dist/assets/AddBranches-DbAUL4Wv.js @@ -0,0 +1 @@ +import{_ as o}from"./AddBranches.vue_vue_type_script_setup_true_lang-tTVzu-ki.js";import"./index-CuIWfDbM.js";import"./select--BgT6D7O.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-DXuLuiBZ.js";export{o as default}; diff --git a/apps/admin-panel/dist/assets/AddBranches.vue_vue_type_script_setup_true_lang-Bih_hMrV.js b/apps/admin-panel/dist/assets/AddBranches.vue_vue_type_script_setup_true_lang-Bih_hMrV.js deleted file mode 100644 index 28e20f1..0000000 --- a/apps/admin-panel/dist/assets/AddBranches.vue_vue_type_script_setup_true_lang-Bih_hMrV.js +++ /dev/null @@ -1 +0,0 @@ -import{d as L,x as T,y as c,a as v,w as l,h as R,k as q,m as S,z as C,r as i,o as p,p as O,c as n,b as $,e as j,f as g,t as z,F as M,H as I,G as N,l as J}from"./index-C9T3Vski.js";import{_ as K}from"./BaseFormModal.vue_vue_type_style_index_0_lang-Du4lPDHl.js";const P={class:"grid-2"},Q={class:"grid-2"},Y=L({__name:"AddBranches",props:{open:{type:Boolean},id:{}},emits:["update:open","success"],setup(h,{emit:V}){const y=h,w=V,f=y.open!==void 0,E=q(),F=J(),r=f?y.id:E.params.id,m=S(!1),_=S([]),t=C({name:"",phone:"",address:"",user_id:void 0}),d=C({});function k(s,e){var o,u;return String(((u=(o=e==null?void 0:e.children)==null?void 0:o[0])==null?void 0:u.children)??"").includes(s)}async function b(){var s,e;if(Object.keys(d).forEach(o=>delete d[o]),!t.name){d.name="لطفا مقدار را وارد کنید";return}try{m.value=!0,r?await c.put(`branch/${r}`,t):await c.post("branch",t),N.info("اطلاعات با موفقیت به ثبت رسید."),r||Object.assign(t,{name:"",phone:"",address:"",user_id:void 0}),f?(w("success"),w("update:open",!1)):F.push("/branch/list")}catch(o){N.error(((e=(s=o==null?void 0:o.response)==null?void 0:s.data)==null?void 0:e.message)??"خطا در ثبت اطلاعات.")}finally{m.value=!1}}return T(async()=>{try{const{data:s}=await c.get("user/list");_.value=s}catch(s){console.log(s)}if(r)try{const{data:s}=await c.get(`branch/${r}`);Object.assign(t,{name:s.name??"",phone:s.phone??"",address:s.address??"",user_id:s.user_id??void 0})}catch(s){console.log(s)}}),(s,e)=>{const o=i("a-input"),u=i("a-form-item"),U=i("a-select-option"),x=i("a-select"),B=i("a-textarea"),A=i("a-button"),D=i("a-card"),G=i("a-form"),H=i("a-spin");return f?(p(),v(K,{key:0,open:!!h.open,id:R(r),"add-title":"افزودن شعبه","edit-title":"ویرایش شعبه",loading:m.value,submitting:m.value,"onUpdate:open":e[4]||(e[4]=a=>s.$emit("update:open",a)),onSubmit:b},{default:l(()=>[O("div",P,[n(u,{label:"نام شعبه","validate-status":d.name?"error":"",help:d.name},{default:l(()=>[n(o,{value:t.name,"onUpdate:value":e[0]||(e[0]=a=>t.name=a)},null,8,["value"])]),_:1},8,["validate-status","help"]),n(u,{label:"تلفن شعبه"},{default:l(()=>[n(o,{value:t.phone,"onUpdate:value":e[1]||(e[1]=a=>t.phone=a)},null,8,["value"])]),_:1}),n(u,{label:"مدیر"},{default:l(()=>[n(x,{value:t.user_id,"onUpdate:value":e[2]||(e[2]=a=>t.user_id=a),"show-search":"","allow-clear":"",placeholder:"انتخاب کنید","filter-option":k},{default:l(()=>[(p(!0),$(M,null,j(_.value,a=>(p(),v(U,{key:a.id,value:a.id},{default:l(()=>[g(z(a.name),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1})]),n(u,{label:"آدرس"},{default:l(()=>[n(B,{value:t.address,"onUpdate:value":e[3]||(e[3]=a=>t.address=a),"auto-size":{minRows:2,maxRows:5}},null,8,["value"])]),_:1})]),_:1},8,["open","id","loading","submitting"])):(p(),v(H,{key:1,spinning:m.value},{default:l(()=>[n(G,{layout:"vertical",onSubmit:I(b,["prevent"])},{default:l(()=>[n(D,{title:R(r)?"ویرایش شعبه":"افزودن شعبه",class:"mb-base page-card"},{default:l(()=>[O("div",Q,[n(u,{label:"نام شعبه","validate-status":d.name?"error":"",help:d.name},{default:l(()=>[n(o,{value:t.name,"onUpdate:value":e[5]||(e[5]=a=>t.name=a)},null,8,["value"])]),_:1},8,["validate-status","help"]),n(u,{label:"تلفن شعبه"},{default:l(()=>[n(o,{value:t.phone,"onUpdate:value":e[6]||(e[6]=a=>t.phone=a)},null,8,["value"])]),_:1}),n(u,{label:"مدیر"},{default:l(()=>[n(x,{value:t.user_id,"onUpdate:value":e[7]||(e[7]=a=>t.user_id=a),"show-search":"","allow-clear":"",placeholder:"انتخاب کنید","filter-option":k},{default:l(()=>[(p(!0),$(M,null,j(_.value,a=>(p(),v(U,{key:a.id,value:a.id},{default:l(()=>[g(z(a.name),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1})]),n(u,{label:"آدرس"},{default:l(()=>[n(B,{value:t.address,"onUpdate:value":e[8]||(e[8]=a=>t.address=a),"auto-size":{minRows:2,maxRows:5}},null,8,["value"])]),_:1}),n(A,{type:"primary",class:"form-submit",onClick:b},{default:l(()=>[...e[9]||(e[9]=[g("ثبت اطلاعات",-1)])]),_:1})]),_:1},8,["title"])]),_:1})]),_:1},8,["spinning"]))}}});export{Y as _}; diff --git a/apps/admin-panel/dist/assets/AddBranches.vue_vue_type_script_setup_true_lang-tTVzu-ki.js b/apps/admin-panel/dist/assets/AddBranches.vue_vue_type_script_setup_true_lang-tTVzu-ki.js new file mode 100644 index 0000000..15e28c1 --- /dev/null +++ b/apps/admin-panel/dist/assets/AddBranches.vue_vue_type_script_setup_true_lang-tTVzu-ki.js @@ -0,0 +1 @@ +import{d as H,x as L,y as c,a as v,w as s,h as R,k as q,m as C,z as O,r as i,o as p,p as S,c as n,b as $,e as j,f as g,t as z,F as M,H as I,G as N,l as J}from"./index-CuIWfDbM.js";import{o as K}from"./select--BgT6D7O.js";import{_ as P}from"./BaseFormModal.vue_vue_type_style_index_0_lang-DXuLuiBZ.js";const Q={class:"grid-2"},W={class:"grid-2"},ee=H({__name:"AddBranches",props:{open:{type:Boolean},id:{}},emits:["update:open","success"],setup(y,{emit:V}){const h=y,w=V,f=h.open!==void 0,E=q(),F=J(),r=f?h.id:E.params.id,m=C(!1),_=C([]),t=O({name:"",phone:"",address:"",user_id:void 0}),d=O({});function k(o,e){return K(e).includes(o)}async function b(){var o,e;if(Object.keys(d).forEach(l=>delete d[l]),!t.name){d.name="لطفا مقدار را وارد کنید";return}try{m.value=!0,r?await c.put(`branch/${r}`,t):await c.post("branch",t),N.info("اطلاعات با موفقیت به ثبت رسید."),r||Object.assign(t,{name:"",phone:"",address:"",user_id:void 0}),f?(w("success"),w("update:open",!1)):F.push("/branch/list")}catch(l){N.error(((e=(o=l==null?void 0:l.response)==null?void 0:o.data)==null?void 0:e.message)??"خطا در ثبت اطلاعات.")}finally{m.value=!1}}return L(async()=>{try{const{data:o}=await c.get("user/list");_.value=o}catch(o){console.log(o)}if(r)try{const{data:o}=await c.get(`branch/${r}`);Object.assign(t,{name:o.name??"",phone:o.phone??"",address:o.address??"",user_id:o.user_id??void 0})}catch(o){console.log(o)}}),(o,e)=>{const l=i("a-input"),u=i("a-form-item"),x=i("a-select-option"),U=i("a-select"),B=i("a-textarea"),T=i("a-button"),A=i("a-card"),D=i("a-form"),G=i("a-spin");return f?(p(),v(P,{key:0,open:!!y.open,id:R(r),"add-title":"افزودن شعبه","edit-title":"ویرایش شعبه",loading:m.value,submitting:m.value,"onUpdate:open":e[4]||(e[4]=a=>o.$emit("update:open",a)),onSubmit:b},{default:s(()=>[S("div",Q,[n(u,{label:"نام شعبه","validate-status":d.name?"error":"",help:d.name},{default:s(()=>[n(l,{value:t.name,"onUpdate:value":e[0]||(e[0]=a=>t.name=a)},null,8,["value"])]),_:1},8,["validate-status","help"]),n(u,{label:"تلفن شعبه"},{default:s(()=>[n(l,{value:t.phone,"onUpdate:value":e[1]||(e[1]=a=>t.phone=a)},null,8,["value"])]),_:1}),n(u,{label:"مدیر"},{default:s(()=>[n(U,{value:t.user_id,"onUpdate:value":e[2]||(e[2]=a=>t.user_id=a),"show-search":"","allow-clear":"",placeholder:"انتخاب کنید","filter-option":k},{default:s(()=>[(p(!0),$(M,null,j(_.value,a=>(p(),v(x,{key:a.id,value:a.id},{default:s(()=>[g(z(a.name),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1})]),n(u,{label:"آدرس"},{default:s(()=>[n(B,{value:t.address,"onUpdate:value":e[3]||(e[3]=a=>t.address=a),"auto-size":{minRows:2,maxRows:5}},null,8,["value"])]),_:1})]),_:1},8,["open","id","loading","submitting"])):(p(),v(G,{key:1,spinning:m.value},{default:s(()=>[n(D,{layout:"vertical",onSubmit:I(b,["prevent"])},{default:s(()=>[n(A,{title:R(r)?"ویرایش شعبه":"افزودن شعبه",class:"mb-base page-card"},{default:s(()=>[S("div",W,[n(u,{label:"نام شعبه","validate-status":d.name?"error":"",help:d.name},{default:s(()=>[n(l,{value:t.name,"onUpdate:value":e[5]||(e[5]=a=>t.name=a)},null,8,["value"])]),_:1},8,["validate-status","help"]),n(u,{label:"تلفن شعبه"},{default:s(()=>[n(l,{value:t.phone,"onUpdate:value":e[6]||(e[6]=a=>t.phone=a)},null,8,["value"])]),_:1}),n(u,{label:"مدیر"},{default:s(()=>[n(U,{value:t.user_id,"onUpdate:value":e[7]||(e[7]=a=>t.user_id=a),"show-search":"","allow-clear":"",placeholder:"انتخاب کنید","filter-option":k},{default:s(()=>[(p(!0),$(M,null,j(_.value,a=>(p(),v(x,{key:a.id,value:a.id},{default:s(()=>[g(z(a.name),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1})]),n(u,{label:"آدرس"},{default:s(()=>[n(B,{value:t.address,"onUpdate:value":e[8]||(e[8]=a=>t.address=a),"auto-size":{minRows:2,maxRows:5}},null,8,["value"])]),_:1}),n(T,{type:"primary",class:"form-submit",onClick:b},{default:s(()=>[...e[9]||(e[9]=[g("ثبت اطلاعات",-1)])]),_:1})]),_:1},8,["title"])]),_:1})]),_:1},8,["spinning"]))}}});export{ee as _}; diff --git a/apps/admin-panel/dist/assets/AddCustomer-4pjOTaMU.js b/apps/admin-panel/dist/assets/AddCustomer-4pjOTaMU.js new file mode 100644 index 0000000..25700ed --- /dev/null +++ b/apps/admin-panel/dist/assets/AddCustomer-4pjOTaMU.js @@ -0,0 +1 @@ +import{c as h,I as w,d as x,u as z,m as B,b as l,p as n,w as I,F as v,e as P,a as m,g as k,i as p,k as R,s as A,r as F,o as i,h as b,R as H,l as V,q as j,t as y,L as M,_ as N}from"./index-CuIWfDbM.js";import{_ as D}from"./bulkCustomer.vue_vue_type_script_setup_true_lang-DEtGbCJP.js";import{R as U}from"./ReagentCustomer-HYOR5FLS.js";import{S as $}from"./singleCustomer-CKYyRyfm.js";import{S as q}from"./ShopOutlined--nD1gJHu.js";import{U as E}from"./UserOutlined-aZ-mQgwc.js";import"./select--BgT6D7O.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-DXuLuiBZ.js";import"./ImageUploadInput.vue_vue_type_script_setup_true_lang-Bb4hJ8Y2.js";import"./CityTreeSelect.vue_vue_type_script_setup_true_lang-Be--_CeP.js";import"./DateInput-CJzwI_r_.js";import"./index-CPTngTRs.js";import"./EnvironmentOutlined-BBvjB5-8.js";import"./PercentageOutlined-Cooaq8mh.js";import"./SafetyCertificateOutlined-DWQ69biy.js";import"./CameraOutlined-Dx8LoT1m.js";var L={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-40 632H136V232h752v560zM610.3 476h123.4c1.3 0 2.3-3.6 2.3-8v-48c0-4.4-1-8-2.3-8H610.3c-1.3 0-2.3 3.6-2.3 8v48c0 4.4 1 8 2.3 8zm4.8 144h185.7c3.9 0 7.1-3.6 7.1-8v-48c0-4.4-3.2-8-7.1-8H615.1c-3.9 0-7.1 3.6-7.1 8v48c0 4.4 3.2 8 7.1 8zM224 673h43.9c4.2 0 7.6-3.3 7.9-7.5 3.8-50.5 46-90.5 97.2-90.5s93.4 40 97.2 90.5c.3 4.2 3.7 7.5 7.9 7.5H522a8 8 0 008-8.4c-2.8-53.3-32-99.7-74.6-126.1a111.8 111.8 0 0029.1-75.5c0-61.9-49.9-112-111.4-112s-111.4 50.1-111.4 112c0 29.1 11 55.5 29.1 75.5a158.09 158.09 0 00-74.6 126.1c-.4 4.6 3.2 8.4 7.8 8.4zm149-262c28.5 0 51.7 23.3 51.7 52s-23.2 52-51.7 52-51.7-23.3-51.7-52 23.2-52 51.7-52z"}}]},name:"idcard",theme:"outlined"};function g(a){for(var e=1;e!!o.hasPermission(c),d=A(()=>{const c=[];return u("persons.create.client")&&c.push({key:"omde",title:"مشتری عمده",hint:"مغازه‌دار، بنکدار و خریدار عمده",icon:q}),u("persons.create.seller")&&c.push({key:"reagent",title:"کارشناس فروش",hint:"کارشناس با کمیسیون و سقف اعتبار",icon:_}),o.isSuperAdmin&&c.push({key:"tak",title:"مشتری تک",hint:"مشتری خرده‌فروشی حضوری",icon:E}),c}),O={omde:D,reagent:U,tak:$};function C(){window.history.length>1?t.back():t.push("/customer/omde-list")}return(c,f)=>{const S=F("a-button");return i(),l("div",G,[n("header",J,[h(S,{class:"pf-head__back",shape:"circle",onClick:C},{icon:I(()=>[h(b(H))]),_:1}),f[0]||(f[0]=n("div",{class:"pf-head__text"},[n("h1",null,"افزودن شخص"),n("p",null,"نوع شخص را انتخاب و اطلاعات او را تکمیل کنید.")],-1))]),u("persons.create")&&d.value.length?(i(),l(v,{key:0},[n("div",Q,[(i(!0),l(v,null,P(d.value,r=>(i(),l("button",{key:r.key,type:"button",role:"tab",class:j(["kind-card",{"is-on":s.value===r.key}]),"aria-selected":s.value===r.key,onClick:K=>s.value=r.key},[n("span",X,[(i(),m(k(r.icon)))]),n("span",Y,[n("b",null,y(r.title),1),n("small",null,y(r.hint),1)]),s.value===r.key?(i(),m(b(M),{key:0,class:"kind-card__check"})):p("",!0)],10,W))),128))]),d.value.some(r=>r.key===s.value)?(i(),m(k(O[s.value]),{key:s.value})):p("",!0)],64)):p("",!0)])}}}),fe=N(Z,[["__scopeId","data-v-09902473"]]);export{fe as default}; diff --git a/apps/admin-panel/dist/assets/AddCustomer-Bu_rmAI_.js b/apps/admin-panel/dist/assets/AddCustomer-Bu_rmAI_.js deleted file mode 100644 index 77246cd..0000000 --- a/apps/admin-panel/dist/assets/AddCustomer-Bu_rmAI_.js +++ /dev/null @@ -1 +0,0 @@ -import{c as h,I as w,d as x,u as z,m as B,b as l,p as n,w as I,F as v,e as P,a as m,g as k,i as p,k as R,s as A,r as F,o as i,h as b,R as H,l as V,q as j,t as y,L as M,_ as N}from"./index-C9T3Vski.js";import{_ as D}from"./bulkCustomer.vue_vue_type_script_setup_true_lang-DMrGU5vL.js";import{R as U}from"./ReagentCustomer-psdi2cEz.js";import{S as $}from"./singleCustomer-B931OwFF.js";import{S as q}from"./ShopOutlined-BBtTJF4e.js";import{U as E}from"./UserOutlined-Csu4xHRr.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-Du4lPDHl.js";import"./ImageUploadInput.vue_vue_type_script_setup_true_lang-Bjo3vw78.js";import"./CityTreeSelect.vue_vue_type_script_setup_true_lang-82fzpZxR.js";import"./DateInput-CCBYpdHy.js";import"./index-m6pCHaEa.js";import"./EnvironmentOutlined-D8YNH9-a.js";import"./PercentageOutlined-CxUloK5J.js";import"./SafetyCertificateOutlined-DS5dQeR2.js";import"./CameraOutlined-C6gLi8-9.js";var L={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-40 632H136V232h752v560zM610.3 476h123.4c1.3 0 2.3-3.6 2.3-8v-48c0-4.4-1-8-2.3-8H610.3c-1.3 0-2.3 3.6-2.3 8v48c0 4.4 1 8 2.3 8zm4.8 144h185.7c3.9 0 7.1-3.6 7.1-8v-48c0-4.4-3.2-8-7.1-8H615.1c-3.9 0-7.1 3.6-7.1 8v48c0 4.4 3.2 8 7.1 8zM224 673h43.9c4.2 0 7.6-3.3 7.9-7.5 3.8-50.5 46-90.5 97.2-90.5s93.4 40 97.2 90.5c.3 4.2 3.7 7.5 7.9 7.5H522a8 8 0 008-8.4c-2.8-53.3-32-99.7-74.6-126.1a111.8 111.8 0 0029.1-75.5c0-61.9-49.9-112-111.4-112s-111.4 50.1-111.4 112c0 29.1 11 55.5 29.1 75.5a158.09 158.09 0 00-74.6 126.1c-.4 4.6 3.2 8.4 7.8 8.4zm149-262c28.5 0 51.7 23.3 51.7 52s-23.2 52-51.7 52-51.7-23.3-51.7-52 23.2-52 51.7-52z"}}]},name:"idcard",theme:"outlined"};function g(r){for(var e=1;e!!o.hasPermission(c),d=A(()=>{const c=[];return u("persons.create.client")&&c.push({key:"omde",title:"مشتری عمده",hint:"مغازه‌دار، بنکدار و خریدار عمده",icon:q}),u("persons.create.seller")&&c.push({key:"reagent",title:"کارشناس فروش",hint:"کارشناس با کمیسیون و سقف اعتبار",icon:_}),o.isSuperAdmin&&c.push({key:"tak",title:"مشتری تک",hint:"مشتری خرده‌فروشی حضوری",icon:E}),c}),O={omde:D,reagent:U,tak:$};function C(){window.history.length>1?t.back():t.push("/customer/omde-list")}return(c,f)=>{const S=F("a-button");return i(),l("div",G,[n("header",J,[h(S,{class:"pf-head__back",shape:"circle",onClick:C},{icon:I(()=>[h(b(H))]),_:1}),f[0]||(f[0]=n("div",{class:"pf-head__text"},[n("h1",null,"افزودن شخص"),n("p",null,"نوع شخص را انتخاب و اطلاعات او را تکمیل کنید.")],-1))]),u("persons.create")&&d.value.length?(i(),l(v,{key:0},[n("div",Q,[(i(!0),l(v,null,P(d.value,a=>(i(),l("button",{key:a.key,type:"button",role:"tab",class:j(["kind-card",{"is-on":s.value===a.key}]),"aria-selected":s.value===a.key,onClick:K=>s.value=a.key},[n("span",X,[(i(),m(k(a.icon)))]),n("span",Y,[n("b",null,y(a.title),1),n("small",null,y(a.hint),1)]),s.value===a.key?(i(),m(b(M),{key:0,class:"kind-card__check"})):p("",!0)],10,W))),128))]),d.value.some(a=>a.key===s.value)?(i(),m(k(O[s.value]),{key:s.value})):p("",!0)],64)):p("",!0)])}}}),_e=N(Z,[["__scopeId","data-v-09902473"]]);export{_e as default}; diff --git a/apps/admin-panel/dist/assets/AddInvoice-CuzOOF2n.js b/apps/admin-panel/dist/assets/AddInvoice-CuzOOF2n.js deleted file mode 100644 index 2ba817d..0000000 --- a/apps/admin-panel/dist/assets/AddInvoice-CuzOOF2n.js +++ /dev/null @@ -1 +0,0 @@ -import{Y as it,d as nt,x as st,y as q,a as f,w as n,h as b,k as ot,m as M,z as K,r as u,o as l,c as o,f as m,p as I,$ as L,b as C,t as S,F as B,i as P,e as Q,H as lt,s as dt,G as V,l as rt,_ as ct}from"./index-C9T3Vski.js";import{_ as ut}from"./BaseFormModal.vue_vue_type_style_index_0_lang-Du4lPDHl.js";import{a as mt,b as p,X as Y}from"./model-B4TWAN58.js";import"./filters-D6Nzbpog.js";import"./index-m6pCHaEa.js";import"./SettingOutlined-BizkfqvN.js";function pt(){const e=new mt("admin/products/list","لیست محصولات");return e.add(new p("id","کد").filterNumber()),e.add(new p("ProductImage","تصویر محصول").renderSlot("image").noSort()),e.add(new p("title","نام محصول").filterText()),e.add(new p("min_gram","وزن").filterNumber().noSort()),e.add(new p("brand.title","برند").filterText()),e.add(new p("category.collection.title","دسته بندی").filterText()),e.add(new p("product_code","کد محصول").filterText()),e.add(new p("max_gram","حداکثر وزن").filterNumber().hidden().noSort()),e.add(new p("op","عملیات").noSort().renderSlot("op")),e}const W="admin_invoice_items",_t=it("invoiceCart",{state:()=>({items:[]}),actions:{setItems(e){this.items=e,localStorage.setItem(W,JSON.stringify(e))},add(e){var x;const _=this.items.findIndex(w=>w.pid==e.pid&&w.vid==e.vid),y=(((x=e.product)==null?void 0:x.variants_all)??[]).filter(w=>w.id===e.vid)[0];e.vid&&y&&!y.is_pre_order&&y.qty===0||(_==-1?this.items.push(e):(this.items[_].product=e.product,this.items[_].qty=e.qty),this.setItems(this.items))},remove(e){const _=this.items.findIndex(g=>g.pid==e.pid&&g.vid==e.vid);_>-1&&this.items.splice(_,1),this.setItems(this.items)},updateItemQuantity(e){this.items[e.index].qty=e.quantity,this.setItems(this.items)},clear(){this.items=[],this.setItems(this.items)},init(){try{this.items=JSON.parse(localStorage.getItem(W)??"[]")||[]}catch{this.items=[]}}}}),ft=["src"],ht={key:1,class:"flex items-center"},vt=["src"],bt={class:"grid-3 mt-4"},gt=["src"],yt={key:1,class:"flex items-center"},xt=["src"],wt={class:"grid-3"},X="/img/no-items.png",kt=nt({__name:"AddInvoice",props:{open:{type:Boolean},id:{}},emits:["update:open","success"],setup(e,{emit:_}){const g=e,y=_,x=g.open!==void 0,w=ot(),Z=rt(),h=_t(),N=x?g.id:w.params.id,$=M(!1),j=pt(),z=M(null),O=M([]),d=K({branch_id:void 0,note:""}),v=K({}),k=dt(()=>h.items),A=[{title:"حذف",dataIndex:"delete",width:60,align:"center"},{title:"کد محصول",dataIndex:"pid",align:"center",width:120},{title:"محصول",dataIndex:"product"},{title:"وزن",dataIndex:"weight",align:"center"}];function E(i){var a,s,r;return((a=i==null?void 0:i.thumb)==null?void 0:a.full)??((r=(s=i==null?void 0:i.ProductImage)==null?void 0:s[0])==null?void 0:r.image)??X}function F(i){h.add({pid:i.id,qty:1,product:i}),V.info("اضافه شد")}function J(i,a){var s,r;return String(((r=(s=a==null?void 0:a.children)==null?void 0:s[0])==null?void 0:r.children)??"").includes(i)}async function U(){var i,a;if(Object.keys(v).forEach(s=>delete v[s]),!d.branch_id){v.branch_id="مقدار را وارد نمایید";return}try{$.value=!0;const s=k.value.map(r=>r.pid);N?await q.put(`branch/product/${N}`,{...d,products:s}):await q.post("branch/product",{...d,products:s}),V.info("عملیات با موفقیت انجام شد"),h.clear(),x?(y("success"),y("update:open",!1)):Z.push("/invoice/list")}catch(s){V.error(((a=(i=s==null?void 0:s.response)==null?void 0:i.data)==null?void 0:a.message)??"خطا در ثبت اطلاعات.")}finally{$.value=!1}}return st(async()=>{h.init();try{const{data:i}=await q.get("branch/list");O.value=i}catch(i){console.log(i)}if(N)try{const{data:i}=await q.get(`branch/product/${N}`);d.branch_id=i.branch_id,d.note=i.note??"",h.setItems((i.products??[]).map(a=>({pid:a.id,qty:1,product:{id:a.id,title:a.title,min_gram:a.grams}})))}catch(i){console.log(i)}}),(i,a)=>{const s=u("a-button"),r=u("a-card"),R=u("a-table"),D=u("a-select-option"),G=u("a-select"),T=u("a-form-item"),H=u("a-input"),tt=u("a-form"),et=u("a-spin");return x?(l(),f(ut,{key:0,open:!!e.open,id:b(N),"add-title":"افزودن فاکتور","edit-title":"ویرایش فاکتور",loading:$.value,submitting:$.value,width:"xl","ok-text":"ثبت تغییرات","onUpdate:open":a[2]||(a[2]=t=>i.$emit("update:open",t)),onSubmit:U},{default:n(()=>[o(r,{title:"لیست محصولات"},{default:n(()=>[o(Y,{ref_key:"tblProducts",ref:z,model:b(j),"mobile-cards":""},{image:n(({record:t})=>[I("img",{width:"90px",height:"90px",style:{"object-fit":"scale-down"},src:t.thumb&&t.thumb.full?t.thumb.full:X},null,8,ft)]),op:n(({record:t})=>[o(s,{size:"small",type:"primary",onClick:c=>F(t)},{default:n(()=>[...a[5]||(a[5]=[m("افزودن",-1)])]),_:1},8,["onClick"])]),_:1},8,["model"])]),_:1}),k.value.length>0?(l(),f(r,{key:0,title:"ثبت سفارش",class:"mt-5 table-scroll"},{default:n(()=>[o(R,{columns:A,"data-source":k.value,bordered:"",pagination:!1,"row-key":"pid"},{bodyCell:n(({column:t,record:c})=>[t.dataIndex==="delete"?(l(),f(b(L),{key:0,class:"cursor-pointer",onClick:at=>b(h).remove(c)},null,8,["onClick"])):t.dataIndex==="product"?(l(),C("div",ht,[I("img",{src:E(c.product),width:"50px"},null,8,vt),m(" "+S(c.product.title),1)])):t.dataIndex==="weight"?(l(),C(B,{key:2},[m(S(c.product.min_gram??"-"),1)],64)):P("",!0)]),_:1},8,["data-source"]),I("div",bt,[o(T,{label:"نام شعبه","validate-status":v.branch_id?"error":"",help:v.branch_id},{default:n(()=>[o(G,{value:d.branch_id,"onUpdate:value":a[0]||(a[0]=t=>d.branch_id=t),"show-search":"",placeholder:"انتخاب کنید","filter-option":J},{default:n(()=>[(l(!0),C(B,null,Q(O.value,t=>(l(),f(D,{key:t.id,value:t.id},{default:n(()=>[m(S(t.name),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["validate-status","help"]),o(T,{label:"توضیحات"},{default:n(()=>[o(H,{value:d.note,"onUpdate:value":a[1]||(a[1]=t=>d.note=t)},null,8,["value"])]),_:1})])]),_:1})):P("",!0)]),_:1},8,["open","id","loading","submitting"])):(l(),f(et,{key:1,spinning:$.value},{default:n(()=>[o(r,{title:"لیست محصولات",class:"page-card"},{default:n(()=>[o(Y,{ref_key:"tblProducts",ref:z,model:b(j),"mobile-cards":""},{image:n(({record:t})=>[I("img",{width:"90px",height:"90px",style:{"object-fit":"scale-down"},src:t.thumb&&t.thumb.full?t.thumb.full:X},null,8,gt)]),op:n(({record:t})=>[o(s,{size:"small",type:"primary",onClick:c=>F(t)},{default:n(()=>[...a[6]||(a[6]=[m("افزودن",-1)])]),_:1},8,["onClick"])]),_:1},8,["model"]),k.value.length>0?(l(),f(r,{key:0,title:"ثبت سفارش",class:"mt-5 table-scroll"},{default:n(()=>[o(R,{columns:A,"data-source":k.value,bordered:"",pagination:!1,"row-key":"pid"},{bodyCell:n(({column:t,record:c})=>[t.dataIndex==="delete"?(l(),f(b(L),{key:0,class:"cursor-pointer",onClick:at=>b(h).remove(c)},null,8,["onClick"])):t.dataIndex==="product"?(l(),C("div",yt,[I("img",{src:E(c.product),width:"50px"},null,8,xt),m(" "+S(c.product.title),1)])):t.dataIndex==="weight"?(l(),C(B,{key:2},[m(S(c.product.min_gram??"-"),1)],64)):P("",!0)]),_:1},8,["data-source"]),o(tt,{layout:"vertical",class:"mt-4",onSubmit:lt(U,["prevent"])},{default:n(()=>[I("div",wt,[o(T,{label:"نام شعبه","validate-status":v.branch_id?"error":"",help:v.branch_id},{default:n(()=>[o(G,{value:d.branch_id,"onUpdate:value":a[3]||(a[3]=t=>d.branch_id=t),"show-search":"",placeholder:"انتخاب کنید","filter-option":J},{default:n(()=>[(l(!0),C(B,null,Q(O.value,t=>(l(),f(D,{key:t.id,value:t.id},{default:n(()=>[m(S(t.name),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["validate-status","help"]),o(T,{label:"توضیحات"},{default:n(()=>[o(H,{value:d.note,"onUpdate:value":a[4]||(a[4]=t=>d.note=t)},null,8,["value"])]),_:1})]),o(s,{type:"primary",class:"form-submit",disabled:k.value.length<1,onClick:U},{default:n(()=>[...a[7]||(a[7]=[m(" ثبت تغییرات ",-1)])]),_:1},8,["disabled"])]),_:1})]),_:1})):P("",!0)]),_:1})]),_:1},8,["spinning"]))}}}),qt=ct(kt,[["__scopeId","data-v-a752a6ce"]]);export{qt as default}; diff --git a/apps/admin-panel/dist/assets/AddInvoice-DbwyBxeJ.css b/apps/admin-panel/dist/assets/AddInvoice-DbwyBxeJ.css deleted file mode 100644 index b996b43..0000000 --- a/apps/admin-panel/dist/assets/AddInvoice-DbwyBxeJ.css +++ /dev/null @@ -1 +0,0 @@ -.mt-4[data-v-a752a6ce]{margin-top:1rem}.mt-5[data-v-a752a6ce]{margin-top:1.25rem} diff --git a/apps/admin-panel/dist/assets/AddInvoice-ZsR8qaoD.css b/apps/admin-panel/dist/assets/AddInvoice-ZsR8qaoD.css new file mode 100644 index 0000000..b837dbe --- /dev/null +++ b/apps/admin-panel/dist/assets/AddInvoice-ZsR8qaoD.css @@ -0,0 +1 @@ +.mt-4[data-v-42197ac4]{margin-top:1rem}.mt-5[data-v-42197ac4]{margin-top:1.25rem} diff --git a/apps/admin-panel/dist/assets/AddInvoice-vwiAoHQ3.js b/apps/admin-panel/dist/assets/AddInvoice-vwiAoHQ3.js new file mode 100644 index 0000000..b34d3d8 --- /dev/null +++ b/apps/admin-panel/dist/assets/AddInvoice-vwiAoHQ3.js @@ -0,0 +1 @@ +import{Y as it,d as nt,x as st,y as q,a as f,w as n,h as b,k as ot,m as M,z as K,r as u,o as l,c as s,f as m,p as I,$ as L,b as C,t as S,F as B,i as P,e as Q,H as lt,s as dt,G as V,l as rt,_ as ct}from"./index-CuIWfDbM.js";import{o as ut}from"./select--BgT6D7O.js";import{_ as mt}from"./BaseFormModal.vue_vue_type_style_index_0_lang-DXuLuiBZ.js";import{a as pt,b as p,X as Y}from"./model-D_9omyEY.js";import"./filters-Cvt98RIq.js";import"./index-CPTngTRs.js";import"./SettingOutlined-BehgjsnT.js";function _t(){const e=new pt("admin/products/list","لیست محصولات");return e.add(new p("id","کد").filterNumber()),e.add(new p("ProductImage","تصویر محصول").renderSlot("image").noSort()),e.add(new p("title","نام محصول").filterText()),e.add(new p("min_gram","وزن").filterNumber().noSort()),e.add(new p("brand.title","برند").filterText()),e.add(new p("category.collection.title","دسته بندی").filterText()),e.add(new p("product_code","کد محصول").filterText()),e.add(new p("max_gram","حداکثر وزن").filterNumber().hidden().noSort()),e.add(new p("op","عملیات").noSort().renderSlot("op")),e}const W="admin_invoice_items",ft=it("invoiceCart",{state:()=>({items:[]}),actions:{setItems(e){this.items=e,localStorage.setItem(W,JSON.stringify(e))},add(e){var x;const _=this.items.findIndex(w=>w.pid==e.pid&&w.vid==e.vid),y=(((x=e.product)==null?void 0:x.variants_all)??[]).filter(w=>w.id===e.vid)[0];e.vid&&y&&!y.is_pre_order&&y.qty===0||(_==-1?this.items.push(e):(this.items[_].product=e.product,this.items[_].qty=e.qty),this.setItems(this.items))},remove(e){const _=this.items.findIndex(g=>g.pid==e.pid&&g.vid==e.vid);_>-1&&this.items.splice(_,1),this.setItems(this.items)},updateItemQuantity(e){this.items[e.index].qty=e.quantity,this.setItems(this.items)},clear(){this.items=[],this.setItems(this.items)},init(){try{this.items=JSON.parse(localStorage.getItem(W)??"[]")||[]}catch{this.items=[]}}}}),ht=["src"],vt={key:1,class:"flex items-center"},bt=["src"],gt={class:"grid-3 mt-4"},yt=["src"],xt={key:1,class:"flex items-center"},wt=["src"],kt={class:"grid-3"},X="/img/no-items.png",It=nt({__name:"AddInvoice",props:{open:{type:Boolean},id:{}},emits:["update:open","success"],setup(e,{emit:_}){const g=e,y=_,x=g.open!==void 0,w=ot(),Z=rt(),h=ft(),N=x?g.id:w.params.id,T=M(!1),j=_t(),z=M(null),O=M([]),d=K({branch_id:void 0,note:""}),v=K({}),k=dt(()=>h.items),A=[{title:"حذف",dataIndex:"delete",width:60,align:"center"},{title:"کد محصول",dataIndex:"pid",align:"center",width:120},{title:"محصول",dataIndex:"product"},{title:"وزن",dataIndex:"weight",align:"center"}];function E(i){var a,o,c;return((a=i==null?void 0:i.thumb)==null?void 0:a.full)??((c=(o=i==null?void 0:i.ProductImage)==null?void 0:o[0])==null?void 0:c.image)??X}function F(i){h.add({pid:i.id,qty:1,product:i}),V.info("اضافه شد")}function J(i,a){return ut(a).includes(i)}async function U(){var i,a;if(Object.keys(v).forEach(o=>delete v[o]),!d.branch_id){v.branch_id="مقدار را وارد نمایید";return}try{T.value=!0;const o=k.value.map(c=>c.pid);N?await q.put(`branch/product/${N}`,{...d,products:o}):await q.post("branch/product",{...d,products:o}),V.info("عملیات با موفقیت انجام شد"),h.clear(),x?(y("success"),y("update:open",!1)):Z.push("/invoice/list")}catch(o){V.error(((a=(i=o==null?void 0:o.response)==null?void 0:i.data)==null?void 0:a.message)??"خطا در ثبت اطلاعات.")}finally{T.value=!1}}return st(async()=>{h.init();try{const{data:i}=await q.get("branch/list");O.value=i}catch(i){console.log(i)}if(N)try{const{data:i}=await q.get(`branch/product/${N}`);d.branch_id=i.branch_id,d.note=i.note??"",h.setItems((i.products??[]).map(a=>({pid:a.id,qty:1,product:{id:a.id,title:a.title,min_gram:a.grams}})))}catch(i){console.log(i)}}),(i,a)=>{const o=u("a-button"),c=u("a-card"),R=u("a-table"),D=u("a-select-option"),G=u("a-select"),$=u("a-form-item"),H=u("a-input"),tt=u("a-form"),et=u("a-spin");return x?(l(),f(mt,{key:0,open:!!e.open,id:b(N),"add-title":"افزودن فاکتور","edit-title":"ویرایش فاکتور",loading:T.value,submitting:T.value,width:"xl","ok-text":"ثبت تغییرات","onUpdate:open":a[2]||(a[2]=t=>i.$emit("update:open",t)),onSubmit:U},{default:n(()=>[s(c,{title:"لیست محصولات"},{default:n(()=>[s(Y,{ref_key:"tblProducts",ref:z,model:b(j),"mobile-cards":""},{image:n(({record:t})=>[I("img",{width:"90px",height:"90px",style:{"object-fit":"scale-down"},src:t.thumb&&t.thumb.full?t.thumb.full:X},null,8,ht)]),op:n(({record:t})=>[s(o,{size:"small",type:"primary",onClick:r=>F(t)},{default:n(()=>[...a[5]||(a[5]=[m("افزودن",-1)])]),_:1},8,["onClick"])]),_:1},8,["model"])]),_:1}),k.value.length>0?(l(),f(c,{key:0,title:"ثبت سفارش",class:"mt-5 table-scroll"},{default:n(()=>[s(R,{columns:A,"data-source":k.value,bordered:"",pagination:!1,"row-key":"pid"},{bodyCell:n(({column:t,record:r})=>[t.dataIndex==="delete"?(l(),f(b(L),{key:0,class:"cursor-pointer",onClick:at=>b(h).remove(r)},null,8,["onClick"])):t.dataIndex==="product"?(l(),C("div",vt,[I("img",{src:E(r.product),width:"50px"},null,8,bt),m(" "+S(r.product.title),1)])):t.dataIndex==="weight"?(l(),C(B,{key:2},[m(S(r.product.min_gram??"-"),1)],64)):P("",!0)]),_:1},8,["data-source"]),I("div",gt,[s($,{label:"نام شعبه","validate-status":v.branch_id?"error":"",help:v.branch_id},{default:n(()=>[s(G,{value:d.branch_id,"onUpdate:value":a[0]||(a[0]=t=>d.branch_id=t),"show-search":"",placeholder:"انتخاب کنید","filter-option":J},{default:n(()=>[(l(!0),C(B,null,Q(O.value,t=>(l(),f(D,{key:t.id,value:t.id},{default:n(()=>[m(S(t.name),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["validate-status","help"]),s($,{label:"توضیحات"},{default:n(()=>[s(H,{value:d.note,"onUpdate:value":a[1]||(a[1]=t=>d.note=t)},null,8,["value"])]),_:1})])]),_:1})):P("",!0)]),_:1},8,["open","id","loading","submitting"])):(l(),f(et,{key:1,spinning:T.value},{default:n(()=>[s(c,{title:"لیست محصولات",class:"page-card"},{default:n(()=>[s(Y,{ref_key:"tblProducts",ref:z,model:b(j),"mobile-cards":""},{image:n(({record:t})=>[I("img",{width:"90px",height:"90px",style:{"object-fit":"scale-down"},src:t.thumb&&t.thumb.full?t.thumb.full:X},null,8,yt)]),op:n(({record:t})=>[s(o,{size:"small",type:"primary",onClick:r=>F(t)},{default:n(()=>[...a[6]||(a[6]=[m("افزودن",-1)])]),_:1},8,["onClick"])]),_:1},8,["model"]),k.value.length>0?(l(),f(c,{key:0,title:"ثبت سفارش",class:"mt-5 table-scroll"},{default:n(()=>[s(R,{columns:A,"data-source":k.value,bordered:"",pagination:!1,"row-key":"pid"},{bodyCell:n(({column:t,record:r})=>[t.dataIndex==="delete"?(l(),f(b(L),{key:0,class:"cursor-pointer",onClick:at=>b(h).remove(r)},null,8,["onClick"])):t.dataIndex==="product"?(l(),C("div",xt,[I("img",{src:E(r.product),width:"50px"},null,8,wt),m(" "+S(r.product.title),1)])):t.dataIndex==="weight"?(l(),C(B,{key:2},[m(S(r.product.min_gram??"-"),1)],64)):P("",!0)]),_:1},8,["data-source"]),s(tt,{layout:"vertical",class:"mt-4",onSubmit:lt(U,["prevent"])},{default:n(()=>[I("div",kt,[s($,{label:"نام شعبه","validate-status":v.branch_id?"error":"",help:v.branch_id},{default:n(()=>[s(G,{value:d.branch_id,"onUpdate:value":a[3]||(a[3]=t=>d.branch_id=t),"show-search":"",placeholder:"انتخاب کنید","filter-option":J},{default:n(()=>[(l(!0),C(B,null,Q(O.value,t=>(l(),f(D,{key:t.id,value:t.id},{default:n(()=>[m(S(t.name),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["validate-status","help"]),s($,{label:"توضیحات"},{default:n(()=>[s(H,{value:d.note,"onUpdate:value":a[4]||(a[4]=t=>d.note=t)},null,8,["value"])]),_:1})]),s(o,{type:"primary",class:"form-submit",disabled:k.value.length<1,onClick:U},{default:n(()=>[...a[7]||(a[7]=[m(" ثبت تغییرات ",-1)])]),_:1},8,["disabled"])]),_:1})]),_:1})):P("",!0)]),_:1})]),_:1},8,["spinning"]))}}}),Pt=ct(It,[["__scopeId","data-v-42197ac4"]]);export{Pt as default}; diff --git a/apps/admin-panel/dist/assets/AddProduct-Bl-1Lqf-.css b/apps/admin-panel/dist/assets/AddProduct-Bl-1Lqf-.css deleted file mode 100644 index f0e7a42..0000000 --- a/apps/admin-panel/dist/assets/AddProduct-Bl-1Lqf-.css +++ /dev/null @@ -1 +0,0 @@ -.gallery-upload[data-v-79ab0f30]{display:flex;flex-direction:column;gap:12px}.gallery-upload__zone[data-v-79ab0f30]{padding:18px 12px}.gallery-upload__icon[data-v-79ab0f30]{font-size:16px;color:#1c2d56;opacity:.75}.gallery-upload__title[data-v-79ab0f30]{margin:8px 0 2px;font-weight:500;font-size:14px;color:#101828}.gallery-upload__hint[data-v-79ab0f30]{margin:0;font-size:12px;color:#8a94a6}.gallery-upload__grid[data-v-79ab0f30]{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:10px}.tile[data-v-79ab0f30]{position:relative;aspect-ratio:1;border-radius:12px;overflow:hidden;border:1px solid #eef0f5;background:#f5f7fb}.tile img[data-v-79ab0f30]{width:100%;height:100%;object-fit:cover;display:block}.tile.is-uploading img[data-v-79ab0f30]{filter:brightness(.6)}.tile__progress[data-v-79ab0f30]{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center}.tile__overlay[data-v-79ab0f30]{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;gap:8px;background:#10182880;opacity:0;transition:opacity .2s ease}.tile:hover .tile__overlay[data-v-79ab0f30],.tile:focus-within .tile__overlay[data-v-79ab0f30]{opacity:1}.tile__btn[data-v-79ab0f30]{width:32px;height:32px;display:grid;place-items:center;border:none;border-radius:9px;background:#ffffffeb;color:#1c2d56;font-size:15px;cursor:pointer;transition:transform .15s ease}.tile__btn[data-v-79ab0f30]:hover{transform:scale(1.08)}.tile__btn--danger[data-v-79ab0f30]{color:#ea5455}@media (hover: none){.tile__overlay[data-v-79ab0f30]{opacity:1;align-items:flex-end;justify-content:flex-end;padding:6px;gap:4px;background:linear-gradient(to top,rgba(16,24,40,.55),transparent 55%)}.tile__btn[data-v-79ab0f30]{width:28px;height:28px;font-size:13px}}.gallery-upload__meta[data-v-79ab0f30]{display:flex;align-items:center;gap:14px;font-size:12px;color:#8a94a6}.gallery-upload__pending[data-v-79ab0f30]{display:inline-flex;align-items:center;gap:6px;color:#1c2d56}.product-form-page[data-v-461486f5]{--c-primary: #1c2d56;--ink: #101828;--muted: #8a94a6;--line: #eef0f5;min-width:0}.pf-table__title[data-v-461486f5]{font-weight:500;color:var(--ink)}.pf-table__ops[data-v-461486f5]{display:flex;gap:2px}.muted[data-v-461486f5]{color:var(--muted)}.variant-thumb[data-v-461486f5]{width:44px;height:44px;object-fit:cover;border-radius:10px;display:inline-block;border:1px solid var(--line)}.variant-thumb--empty[data-v-461486f5]{display:inline-flex;align-items:center;justify-content:center;border:1px dashed #d9dde5;background:#fafbfd;color:#b4bccb;font-size:16px}.variant-form[data-v-461486f5]{display:grid;grid-template-columns:120px minmax(0,1fr);gap:20px;align-items:start}.variant-form__media[data-v-461486f5]{display:flex;flex-direction:column;align-items:flex-start;gap:4px}.variant-form__gallery-btn[data-v-461486f5]{padding-inline:0}.variant-form__hint[data-v-461486f5]{margin:12px 0 0;font-size:12px;color:var(--muted)}.variant-gallery[data-v-461486f5]{display:grid;grid-template-columns:repeat(4,64px);gap:8px;max-height:232px;overflow-y:auto}.variant-gallery__item[data-v-461486f5]{width:64px;height:64px;padding:2px;border:2px solid #e3e7ef;border-radius:10px;background:#fff;cursor:pointer;overflow:hidden}.variant-gallery__item[data-v-461486f5]:hover{border-color:#b4bccb}.variant-gallery__item.is-on[data-v-461486f5]{border-color:#1c2d56}.variant-gallery__item img[data-v-461486f5]{width:100%;height:100%;object-fit:cover;border-radius:7px;display:block}@media (max-width: 575px){.variant-form[data-v-461486f5]{grid-template-columns:minmax(0,1fr);gap:12px}}.product-editor-page[data-v-461486f5]{display:flex;flex-direction:column;gap:16px;min-width:0}.page-top-header[data-v-461486f5]{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:2px 4px}.page-title-wrap[data-v-461486f5]{display:flex;flex-direction:column;gap:4px}.title-with-badge[data-v-461486f5]{display:flex;align-items:center;flex-wrap:wrap;gap:10px}.page-title[data-v-461486f5]{margin:0;font-size:20px;font-weight:600;color:#1c2d56;line-height:1.3}.product-name-badge[data-v-461486f5]{margin:0;font-size:13px;font-weight:500;border-radius:6px}.accounting-badge[data-v-461486f5]{margin:0;font-size:12px;border-radius:6px}.page-subtitle[data-v-461486f5]{margin:0;font-size:13px;color:#8c8c8c}.header-actions[data-v-461486f5]{display:flex;align-items:center;gap:10px}.back-btn[data-v-461486f5]{display:inline-flex;align-items:center;gap:6px;height:38px;border-radius:8px;color:#595959;font-size:13px}.header-save-btn[data-v-461486f5]{background:#1c2d56;border-color:#1c2d56;height:38px;padding:0 18px;border-radius:8px;font-size:13px;font-weight:600}.header-save-btn[data-v-461486f5]:hover{background:#2b427a!important;border-color:#2b427a!important}.product-grid-layout[data-v-461486f5]{display:grid;grid-template-columns:1fr 340px;gap:20px;align-items:start}.layout-main[data-v-461486f5],.layout-sidebar[data-v-461486f5]{display:flex;flex-direction:column;gap:20px;min-width:0}.form-section[data-v-461486f5]{background:#fff;border:1px solid #edf0f5;border-radius:12px;padding:20px 22px 24px;box-shadow:0 1px 2px #1c2d5605}.form-section-head[data-v-461486f5]{display:flex;align-items:center;gap:12px;padding-bottom:14px;margin-bottom:20px;border-bottom:1px solid #f0f2f5}.form-section-head.has-action[data-v-461486f5]{justify-content:space-between}.head-info[data-v-461486f5]{display:flex;align-items:center;gap:12px}.section-icon-badge[data-v-461486f5]{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:10px;background:#1c2d560d;color:#1c2d56;font-size:18px;flex-shrink:0}.section-title-wrap[data-v-461486f5]{display:flex;flex-direction:column;gap:2px}.section-title[data-v-461486f5]{margin:0;font-size:15px;font-weight:600;color:#1c2d56;line-height:1.3}.section-subtitle[data-v-461486f5]{margin:0;font-size:12px;color:#8c8c8c;line-height:1.4}.form-grid-2[data-v-461486f5]{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 20px}.full-width-item[data-v-461486f5]{grid-column:1 / -1}.form-grid-2[data-v-461486f5] .ant-form-item,.sidebar-section[data-v-461486f5] .ant-form-item{margin-bottom:0}.sidebar-section[data-v-461486f5]{padding:18px}.sidebar-item[data-v-461486f5]{margin-bottom:16px}.switch-row[data-v-461486f5]{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;border-radius:8px;background:#fafbfc;border:1px solid #f0f2f5}.switch-info[data-v-461486f5]{display:flex;flex-direction:column;gap:2px}.switch-title[data-v-461486f5]{font-size:13px;font-weight:600;color:#262626}.switch-subtitle[data-v-461486f5]{font-size:11px;color:#8c8c8c}.featured-images-grid[data-v-461486f5]{display:grid;grid-template-columns:1fr 1fr;gap:12px}.featured-upload-card[data-v-461486f5]{display:flex;flex-direction:column;align-items:center;gap:8px;padding:12px;background:#fafbfc;border:1px dashed #d9d9d9;border-radius:8px;transition:all .2s ease}.featured-upload-card[data-v-461486f5]:hover{border-color:#1c2d56;background:#fff}.featured-label[data-v-461486f5]{font-size:12px;font-weight:500;color:#595959}.gallery-tabs[data-v-461486f5]{margin-bottom:14px}.gallery-segmented[data-v-461486f5]{width:100%;display:flex}.gallery-segmented[data-v-461486f5] .ant-radio-button-wrapper{flex:1;text-align:center;font-size:12px}.gallery-grid[data-v-461486f5]{display:flex;flex-wrap:wrap;gap:10px}.gallery-item[data-v-461486f5]{flex-shrink:0}.add-variant-btn[data-v-461486f5]{background:#1c2d56;border-color:#1c2d56;border-radius:6px;font-size:13px}.add-variant-btn[data-v-461486f5]:hover{background:#2b427a!important;border-color:#2b427a!important}.table-container[data-v-461486f5]{border:1px solid #edf0f5;border-radius:8px;overflow:hidden}.variants-table[data-v-461486f5] .ant-table-thead>tr>th{background:#fafbfc;font-size:12px;font-weight:600;color:#595959}.variant-thumb[data-v-461486f5]{width:42px;height:42px;object-fit:cover;border-radius:6px;border:1px solid #e8e8e8;display:inline-block}.variant-thumb--empty[data-v-461486f5]{display:inline-flex;align-items:center;justify-content:center;background:#fafafa;color:#bfbfbf;border:1px dashed #d9d9d9;font-size:14px}.variant-title-cell[data-v-461486f5]{font-weight:600;color:#262626;font-size:13px}.weight-cell[data-v-461486f5]{color:#1c2d56;font-weight:500;font-size:13px}.wage-cell[data-v-461486f5]{color:#28c76f;font-weight:600;font-size:13px}.qty-badge[data-v-461486f5]{display:inline-block;padding:2px 8px;background:#f5f5f5;border-radius:4px;font-size:12px;color:#595959}.status-tag[data-v-461486f5]{margin:0;border-radius:4px;font-size:11px}.table-actions[data-v-461486f5]{display:inline-flex;align-items:center;gap:4px}.action-btn[data-v-461486f5]{border-radius:4px}.edit-btn[data-v-461486f5]{color:#1c2d56}.edit-btn[data-v-461486f5]:hover{background:#1c2d5614}.delete-btn[data-v-461486f5]{color:#ea5455}.delete-btn[data-v-461486f5]:hover{background:#ea545514}.variants-empty[data-v-461486f5]{padding:24px 16px;text-align:center}.empty-title[data-v-461486f5]{margin:0 0 4px;font-size:14px;font-weight:600;color:#262626}.empty-desc[data-v-461486f5]{margin:0 0 16px;font-size:12px;color:#8c8c8c}.empty-add-btn[data-v-461486f5]{border-radius:6px;color:#1c2d56;border-color:#1c2d56}.form-actions-bar[data-v-461486f5]{display:flex;align-items:center;gap:12px;margin-top:20px;padding-top:20px;border-top:1px solid #edf0f5}.submit-btn[data-v-461486f5]{background:#1c2d56;border-color:#1c2d56;height:42px;padding:0 24px;font-size:14px;font-weight:600;border-radius:8px}.submit-btn[data-v-461486f5]:hover{background:#2b427a!important;border-color:#2b427a!important}.cancel-btn[data-v-461486f5]{height:42px;padding:0 20px;font-size:14px;border-radius:8px;color:#595959}.vmodal-header[data-v-461486f5]{display:flex;align-items:center;gap:12px;padding:0 0 10px;border-bottom:1px solid #edf2f7}.vmodal-header__icon[data-v-461486f5]{width:36px;height:36px;border-radius:8px;background:#1c2d5614;color:#1c2d56;display:flex;align-items:center;justify-content:center;font-size:18px;flex-shrink:0}.vmodal-header__text h3[data-v-461486f5]{margin:0;font-size:15px;font-weight:700;color:#1a202c;line-height:1.2}.vmodal-header__text p[data-v-461486f5]{margin:2px 0 0;font-size:11.5px;color:#718096}.vmodal-form[data-v-461486f5]{padding-top:8px}.vmodal-cols[data-v-461486f5]{display:grid;grid-template-columns:1.05fr .95fr;gap:12px;align-items:stretch}.vmodal-col[data-v-461486f5]{display:flex;flex-direction:column;gap:10px}.vmodal-card[data-v-461486f5]{background:#fafafa;border:1px solid #f0f0f0;border-radius:8px;padding:10px 14px}.vmodal-card__head[data-v-461486f5]{font-size:12.5px;font-weight:700;color:#2d3748;margin-bottom:8px;padding-bottom:4px;border-bottom:1px dashed #e2e8f0;position:relative;padding-right:10px}.vmodal-card__head[data-v-461486f5]:before{content:"";position:absolute;right:0;top:50%;transform:translateY(-50%);width:3px;height:12px;background:#1c2d56;border-radius:2px}.vmodal-grid[data-v-461486f5]{display:grid;gap:8px}.vmodal-grid--2[data-v-461486f5]{grid-template-columns:repeat(2,minmax(0,1fr))}.vmodal-item[data-v-461486f5]{margin-bottom:6px}.vmodal-item[data-v-461486f5]:last-child{margin-bottom:0}.vmodal-item[data-v-461486f5] .ant-form-item-label{padding-bottom:2px!important}.vmodal-item[data-v-461486f5] .ant-form-item-label>label{font-size:11.5px;font-weight:600;color:#4a5568;height:auto}.vmodal-switches[data-v-461486f5]{display:flex;gap:10px;margin-top:6px;padding-top:6px;border-top:1px dashed #e2e8f0}.vmodal-switch-box[data-v-461486f5]{flex:1;display:flex;align-items:center;justify-content:space-between;padding:6px 10px;background:#fff;border:1px solid #e2e8f0;border-radius:6px;cursor:pointer;margin:0}.vmodal-switch-box[data-v-461486f5]:hover{border-color:#cbd5e0}.vmodal-switch-label[data-v-461486f5]{font-size:11.5px;font-weight:600;color:#2d3748}.color-opt[data-v-461486f5]{display:flex;align-items:center;gap:6px}.color-opt__dot[data-v-461486f5]{width:10px;height:10px;border-radius:50%;border:1px solid rgba(0,0,0,.2);display:inline-block}.color-opt__dot--0[data-v-461486f5]{background:#fdfdfd}.color-opt__dot--1[data-v-461486f5]{background:gold}.color-opt__dot--2[data-v-461486f5]{background:#795548}.color-opt__dot--3[data-v-461486f5]{background:#b76e79}.vmodal-picker[data-v-461486f5]{display:flex;flex-wrap:wrap;gap:8px;max-height:125px;overflow-y:auto;padding:2px}.vmodal-picker__item[data-v-461486f5]{position:relative;width:54px;height:54px;padding:2px;border:1.5px solid #e2e8f0;border-radius:6px;background:#fff;cursor:pointer;overflow:hidden;transition:all .15s ease;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:10px;color:#a0aec0}.vmodal-picker__item[data-v-461486f5]:hover{border-color:#1c2d56}.vmodal-picker__item img[data-v-461486f5]{width:100%;height:100%;object-fit:cover;border-radius:4px;display:block}.vmodal-picker__item.is-active[data-v-461486f5]{border-color:#1c2d56;box-shadow:0 0 0 2px #1c2d5633}.vmodal-picker__check[data-v-461486f5]{position:absolute;top:2px;right:2px;width:14px;height:14px;background:#1c2d56;color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:8px}.vmodal-picker-empty[data-v-461486f5]{font-size:11px;color:#8c8c8c;padding:8px;text-align:center;background:#fff;border:1px dashed #e2e8f0;border-radius:6px}.vmodal-footer[data-v-461486f5]{display:flex;align-items:center;justify-content:flex-end;gap:8px;padding-top:10px;margin-top:8px;border-top:1px solid #edf2f7}.vmodal-footer__cancel[data-v-461486f5]{border-radius:6px;min-width:80px}.vmodal-footer__submit[data-v-461486f5]{border-radius:6px;background:#1c2d56;border-color:#1c2d56;min-width:110px;font-weight:600}.vmodal-footer__submit[data-v-461486f5]:hover{background:#2b427a!important;border-color:#2b427a!important}@media (max-width: 1199px){.product-grid-layout[data-v-461486f5]{grid-template-columns:1fr}.layout-sidebar[data-v-461486f5]{order:2}}@media (max-width: 575px){.page-top-header[data-v-461486f5]{flex-direction:column;align-items:flex-start}.header-actions[data-v-461486f5]{width:100%;flex-direction:column}.back-btn[data-v-461486f5],.header-save-btn[data-v-461486f5]{width:100%;justify-content:center}.form-grid-2[data-v-461486f5],.form-grid-3[data-v-461486f5]{grid-template-columns:1fr;gap:12px}.form-section[data-v-461486f5]{padding:16px 14px}.form-actions-bar[data-v-461486f5]{flex-direction:column}.submit-btn[data-v-461486f5],.cancel-btn[data-v-461486f5]{width:100%}} diff --git a/apps/admin-panel/dist/assets/AddProduct-DnGFaytI.css b/apps/admin-panel/dist/assets/AddProduct-DnGFaytI.css new file mode 100644 index 0000000..f15da54 --- /dev/null +++ b/apps/admin-panel/dist/assets/AddProduct-DnGFaytI.css @@ -0,0 +1 @@ +.gallery-upload[data-v-79ab0f30]{display:flex;flex-direction:column;gap:12px}.gallery-upload__zone[data-v-79ab0f30]{padding:18px 12px}.gallery-upload__icon[data-v-79ab0f30]{font-size:16px;color:#1c2d56;opacity:.75}.gallery-upload__title[data-v-79ab0f30]{margin:8px 0 2px;font-weight:500;font-size:14px;color:#101828}.gallery-upload__hint[data-v-79ab0f30]{margin:0;font-size:12px;color:#8a94a6}.gallery-upload__grid[data-v-79ab0f30]{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:10px}.tile[data-v-79ab0f30]{position:relative;aspect-ratio:1;border-radius:12px;overflow:hidden;border:1px solid #eef0f5;background:#f5f7fb}.tile img[data-v-79ab0f30]{width:100%;height:100%;object-fit:cover;display:block}.tile.is-uploading img[data-v-79ab0f30]{filter:brightness(.6)}.tile__progress[data-v-79ab0f30]{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center}.tile__overlay[data-v-79ab0f30]{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;gap:8px;background:#10182880;opacity:0;transition:opacity .2s ease}.tile:hover .tile__overlay[data-v-79ab0f30],.tile:focus-within .tile__overlay[data-v-79ab0f30]{opacity:1}.tile__btn[data-v-79ab0f30]{width:32px;height:32px;display:grid;place-items:center;border:none;border-radius:9px;background:#ffffffeb;color:#1c2d56;font-size:15px;cursor:pointer;transition:transform .15s ease}.tile__btn[data-v-79ab0f30]:hover{transform:scale(1.08)}.tile__btn--danger[data-v-79ab0f30]{color:#ea5455}@media (hover: none){.tile__overlay[data-v-79ab0f30]{opacity:1;align-items:flex-end;justify-content:flex-end;padding:6px;gap:4px;background:linear-gradient(to top,rgba(16,24,40,.55),transparent 55%)}.tile__btn[data-v-79ab0f30]{width:28px;height:28px;font-size:13px}}.gallery-upload__meta[data-v-79ab0f30]{display:flex;align-items:center;gap:14px;font-size:12px;color:#8a94a6}.gallery-upload__pending[data-v-79ab0f30]{display:inline-flex;align-items:center;gap:6px;color:#1c2d56}.product-form-page[data-v-babe245a]{--c-primary: #1c2d56;--ink: #101828;--muted: #8a94a6;--line: #eef0f5;min-width:0}.pf-table__title[data-v-babe245a]{font-weight:500;color:var(--ink)}.pf-table__ops[data-v-babe245a]{display:flex;gap:2px}.muted[data-v-babe245a]{color:var(--muted)}.variant-thumb[data-v-babe245a]{width:44px;height:44px;object-fit:cover;border-radius:10px;display:inline-block;border:1px solid var(--line)}.variant-thumb--empty[data-v-babe245a]{display:inline-flex;align-items:center;justify-content:center;border:1px dashed #d9dde5;background:#fafbfd;color:#b4bccb;font-size:16px}.variant-form[data-v-babe245a]{display:grid;grid-template-columns:120px minmax(0,1fr);gap:20px;align-items:start}.variant-form__media[data-v-babe245a]{display:flex;flex-direction:column;align-items:flex-start;gap:4px}.variant-form__gallery-btn[data-v-babe245a]{padding-inline:0}.variant-form__hint[data-v-babe245a]{margin:12px 0 0;font-size:12px;color:var(--muted)}.variant-gallery[data-v-babe245a]{display:grid;grid-template-columns:repeat(4,64px);gap:8px;max-height:232px;overflow-y:auto}.variant-gallery__item[data-v-babe245a]{width:64px;height:64px;padding:2px;border:2px solid #e3e7ef;border-radius:10px;background:#fff;cursor:pointer;overflow:hidden}.variant-gallery__item[data-v-babe245a]:hover{border-color:#b4bccb}.variant-gallery__item.is-on[data-v-babe245a]{border-color:#1c2d56}.variant-gallery__item img[data-v-babe245a]{width:100%;height:100%;object-fit:cover;border-radius:7px;display:block}@media (max-width: 575px){.variant-form[data-v-babe245a]{grid-template-columns:minmax(0,1fr);gap:12px}}.product-editor-page[data-v-babe245a]{display:flex;flex-direction:column;gap:16px;min-width:0}.page-top-header[data-v-babe245a]{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:2px 4px}.page-title-wrap[data-v-babe245a]{display:flex;flex-direction:column;gap:4px}.title-with-badge[data-v-babe245a]{display:flex;align-items:center;flex-wrap:wrap;gap:10px}.page-title[data-v-babe245a]{margin:0;font-size:20px;font-weight:600;color:#1c2d56;line-height:1.3}.product-name-badge[data-v-babe245a]{margin:0;font-size:13px;font-weight:500;border-radius:6px}.accounting-badge[data-v-babe245a]{margin:0;font-size:12px;border-radius:6px}.page-subtitle[data-v-babe245a]{margin:0;font-size:13px;color:#8c8c8c}.header-actions[data-v-babe245a]{display:flex;align-items:center;gap:10px}.back-btn[data-v-babe245a]{display:inline-flex;align-items:center;gap:6px;height:38px;border-radius:8px;color:#595959;font-size:13px}.header-save-btn[data-v-babe245a]{background:#1c2d56;border-color:#1c2d56;height:38px;padding:0 18px;border-radius:8px;font-size:13px;font-weight:600}.header-save-btn[data-v-babe245a]:hover{background:#2b427a!important;border-color:#2b427a!important}.product-grid-layout[data-v-babe245a]{display:grid;grid-template-columns:1fr 340px;gap:20px;align-items:start}.layout-main[data-v-babe245a],.layout-sidebar[data-v-babe245a]{display:flex;flex-direction:column;gap:20px;min-width:0}.form-section[data-v-babe245a]{background:#fff;border:1px solid #edf0f5;border-radius:12px;padding:20px 22px 24px;box-shadow:0 1px 2px #1c2d5605}.form-section-head[data-v-babe245a]{display:flex;align-items:center;gap:12px;padding-bottom:14px;margin-bottom:20px;border-bottom:1px solid #f0f2f5}.form-section-head.has-action[data-v-babe245a]{justify-content:space-between}.head-info[data-v-babe245a]{display:flex;align-items:center;gap:12px}.section-icon-badge[data-v-babe245a]{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:10px;background:#1c2d560d;color:#1c2d56;font-size:18px;flex-shrink:0}.section-title-wrap[data-v-babe245a]{display:flex;flex-direction:column;gap:2px}.section-title[data-v-babe245a]{margin:0;font-size:15px;font-weight:600;color:#1c2d56;line-height:1.3}.section-subtitle[data-v-babe245a]{margin:0;font-size:12px;color:#8c8c8c;line-height:1.4}.form-grid-2[data-v-babe245a]{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 20px}.full-width-item[data-v-babe245a]{grid-column:1 / -1}.form-grid-2[data-v-babe245a] .ant-form-item,.sidebar-section[data-v-babe245a] .ant-form-item{margin-bottom:0}.sidebar-section[data-v-babe245a]{padding:18px}.sidebar-item[data-v-babe245a]{margin-bottom:16px}.switch-row[data-v-babe245a]{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;border-radius:8px;background:#fafbfc;border:1px solid #f0f2f5}.switch-info[data-v-babe245a]{display:flex;flex-direction:column;gap:2px}.switch-title[data-v-babe245a]{font-size:13px;font-weight:600;color:#262626}.switch-subtitle[data-v-babe245a]{font-size:11px;color:#8c8c8c}.featured-images-grid[data-v-babe245a]{display:grid;grid-template-columns:1fr 1fr;gap:12px}.featured-upload-card[data-v-babe245a]{display:flex;flex-direction:column;align-items:center;gap:8px;padding:12px;background:#fafbfc;border:1px dashed #d9d9d9;border-radius:8px;transition:all .2s ease}.featured-upload-card[data-v-babe245a]:hover{border-color:#1c2d56;background:#fff}.featured-label[data-v-babe245a]{font-size:12px;font-weight:500;color:#595959}.gallery-tabs[data-v-babe245a]{margin-bottom:14px}.gallery-segmented[data-v-babe245a]{width:100%;display:flex}.gallery-segmented[data-v-babe245a] .ant-radio-button-wrapper{flex:1;text-align:center;font-size:12px}.gallery-grid[data-v-babe245a]{display:flex;flex-wrap:wrap;gap:10px}.gallery-item[data-v-babe245a]{flex-shrink:0}.add-variant-btn[data-v-babe245a]{background:#1c2d56;border-color:#1c2d56;border-radius:6px;font-size:13px}.add-variant-btn[data-v-babe245a]:hover{background:#2b427a!important;border-color:#2b427a!important}.table-container[data-v-babe245a]{border:1px solid #edf0f5;border-radius:8px;overflow:hidden}.variants-table[data-v-babe245a] .ant-table-thead>tr>th{background:#fafbfc;font-size:12px;font-weight:600;color:#595959}.variant-thumb[data-v-babe245a]{width:42px;height:42px;object-fit:cover;border-radius:6px;border:1px solid #e8e8e8;display:inline-block}.variant-thumb--empty[data-v-babe245a]{display:inline-flex;align-items:center;justify-content:center;background:#fafafa;color:#bfbfbf;border:1px dashed #d9d9d9;font-size:14px}.variant-title-cell[data-v-babe245a]{font-weight:600;color:#262626;font-size:13px}.weight-cell[data-v-babe245a]{color:#1c2d56;font-weight:500;font-size:13px}.wage-cell[data-v-babe245a]{color:#28c76f;font-weight:600;font-size:13px}.qty-badge[data-v-babe245a]{display:inline-block;padding:2px 8px;background:#f5f5f5;border-radius:4px;font-size:12px;color:#595959}.status-tag[data-v-babe245a]{margin:0;border-radius:4px;font-size:11px}.table-actions[data-v-babe245a]{display:inline-flex;align-items:center;gap:4px}.action-btn[data-v-babe245a]{border-radius:4px}.edit-btn[data-v-babe245a]{color:#1c2d56}.edit-btn[data-v-babe245a]:hover{background:#1c2d5614}.delete-btn[data-v-babe245a]{color:#ea5455}.delete-btn[data-v-babe245a]:hover{background:#ea545514}.variants-empty[data-v-babe245a]{padding:24px 16px;text-align:center}.empty-title[data-v-babe245a]{margin:0 0 4px;font-size:14px;font-weight:600;color:#262626}.empty-desc[data-v-babe245a]{margin:0 0 16px;font-size:12px;color:#8c8c8c}.empty-add-btn[data-v-babe245a]{border-radius:6px;color:#1c2d56;border-color:#1c2d56}.form-actions-bar[data-v-babe245a]{display:flex;align-items:center;gap:12px;margin-top:20px;padding-top:20px;border-top:1px solid #edf0f5}.submit-btn[data-v-babe245a]{background:#1c2d56;border-color:#1c2d56;height:42px;padding:0 24px;font-size:14px;font-weight:600;border-radius:8px}.submit-btn[data-v-babe245a]:hover{background:#2b427a!important;border-color:#2b427a!important}.cancel-btn[data-v-babe245a]{height:42px;padding:0 20px;font-size:14px;border-radius:8px;color:#595959}.vmodal-header[data-v-babe245a]{display:flex;align-items:center;gap:12px;padding:0 0 10px;border-bottom:1px solid #edf2f7}.vmodal-header__icon[data-v-babe245a]{width:36px;height:36px;border-radius:8px;background:#1c2d5614;color:#1c2d56;display:flex;align-items:center;justify-content:center;font-size:18px;flex-shrink:0}.vmodal-header__text h3[data-v-babe245a]{margin:0;font-size:15px;font-weight:700;color:#1a202c;line-height:1.2}.vmodal-header__text p[data-v-babe245a]{margin:2px 0 0;font-size:11.5px;color:#718096}.vmodal-form[data-v-babe245a]{padding-top:8px}.vmodal-cols[data-v-babe245a]{display:grid;grid-template-columns:1.05fr .95fr;gap:12px;align-items:stretch}.vmodal-col[data-v-babe245a]{display:flex;flex-direction:column;gap:10px}.vmodal-card[data-v-babe245a]{background:#fafafa;border:1px solid #f0f0f0;border-radius:8px;padding:10px 14px}.vmodal-card__head[data-v-babe245a]{font-size:12.5px;font-weight:700;color:#2d3748;margin-bottom:8px;padding-bottom:4px;border-bottom:1px dashed #e2e8f0;position:relative;padding-right:10px}.vmodal-card__head[data-v-babe245a]:before{content:"";position:absolute;right:0;top:50%;transform:translateY(-50%);width:3px;height:12px;background:#1c2d56;border-radius:2px}.vmodal-grid[data-v-babe245a]{display:grid;gap:8px}.vmodal-grid--2[data-v-babe245a]{grid-template-columns:repeat(2,minmax(0,1fr))}.vmodal-item[data-v-babe245a]{margin-bottom:6px}.vmodal-item[data-v-babe245a]:last-child{margin-bottom:0}.vmodal-item[data-v-babe245a] .ant-form-item-label{padding-bottom:2px!important}.vmodal-item[data-v-babe245a] .ant-form-item-label>label{font-size:11.5px;font-weight:600;color:#4a5568;height:auto}.vmodal-switches[data-v-babe245a]{display:flex;gap:10px;margin-top:6px;padding-top:6px;border-top:1px dashed #e2e8f0}.vmodal-switch-box[data-v-babe245a]{flex:1;display:flex;align-items:center;justify-content:space-between;padding:6px 10px;background:#fff;border:1px solid #e2e8f0;border-radius:6px;cursor:pointer;margin:0}.vmodal-switch-box[data-v-babe245a]:hover{border-color:#cbd5e0}.vmodal-switch-label[data-v-babe245a]{font-size:11.5px;font-weight:600;color:#2d3748}.color-opt[data-v-babe245a]{display:flex;align-items:center;gap:6px}.color-opt__dot[data-v-babe245a]{width:10px;height:10px;border-radius:50%;border:1px solid rgba(0,0,0,.2);display:inline-block}.color-opt__dot--0[data-v-babe245a]{background:#fdfdfd}.color-opt__dot--1[data-v-babe245a]{background:gold}.color-opt__dot--2[data-v-babe245a]{background:#795548}.color-opt__dot--3[data-v-babe245a]{background:#b76e79}.vmodal-picker[data-v-babe245a]{display:flex;flex-wrap:wrap;gap:8px;max-height:125px;overflow-y:auto;padding:2px}.vmodal-picker__item[data-v-babe245a]{position:relative;width:54px;height:54px;padding:2px;border:1.5px solid #e2e8f0;border-radius:6px;background:#fff;cursor:pointer;overflow:hidden;transition:all .15s ease;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:10px;color:#a0aec0}.vmodal-picker__item[data-v-babe245a]:hover{border-color:#1c2d56}.vmodal-picker__item img[data-v-babe245a]{width:100%;height:100%;object-fit:cover;border-radius:4px;display:block}.vmodal-picker__item.is-active[data-v-babe245a]{border-color:#1c2d56;box-shadow:0 0 0 2px #1c2d5633}.vmodal-picker__check[data-v-babe245a]{position:absolute;top:2px;right:2px;width:14px;height:14px;background:#1c2d56;color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:8px}.vmodal-picker-empty[data-v-babe245a]{font-size:11px;color:#8c8c8c;padding:8px;text-align:center;background:#fff;border:1px dashed #e2e8f0;border-radius:6px}.vmodal-footer[data-v-babe245a]{display:flex;align-items:center;justify-content:flex-end;gap:8px;padding-top:10px;margin-top:8px;border-top:1px solid #edf2f7}.vmodal-footer__cancel[data-v-babe245a]{border-radius:6px;min-width:80px}.vmodal-footer__submit[data-v-babe245a]{border-radius:6px;background:#1c2d56;border-color:#1c2d56;min-width:110px;font-weight:600}.vmodal-footer__submit[data-v-babe245a]:hover{background:#2b427a!important;border-color:#2b427a!important}@media (max-width: 1199px){.product-grid-layout[data-v-babe245a]{grid-template-columns:1fr}.layout-sidebar[data-v-babe245a]{order:2}}@media (max-width: 575px){.page-top-header[data-v-babe245a]{flex-direction:column;align-items:flex-start}.header-actions[data-v-babe245a]{width:100%;flex-direction:column}.back-btn[data-v-babe245a],.header-save-btn[data-v-babe245a]{width:100%;justify-content:center}.form-grid-2[data-v-babe245a],.form-grid-3[data-v-babe245a]{grid-template-columns:1fr;gap:12px}.form-section[data-v-babe245a]{padding:16px 14px}.form-actions-bar[data-v-babe245a]{flex-direction:column}.submit-btn[data-v-babe245a],.cancel-btn[data-v-babe245a]{width:100%}}@media (max-width: 767px){.pf-variant-modal .ant-modal[data-v-babe245a]{max-width:calc(100vw - 16px);width:calc(100vw - 16px)!important;margin:0 auto}.vmodal-cols[data-v-babe245a]{grid-template-columns:1fr}.vmodal-form[data-v-babe245a]{max-height:calc(100vh - 190px);overflow-y:auto}.vmodal-grid--2[data-v-babe245a]{grid-template-columns:1fr}} diff --git a/apps/admin-panel/dist/assets/AddProduct-vqd1_hig.js b/apps/admin-panel/dist/assets/AddProduct-r48hWej-.js similarity index 98% rename from apps/admin-panel/dist/assets/AddProduct-vqd1_hig.js rename to apps/admin-panel/dist/assets/AddProduct-r48hWej-.js index 2a8964a..51a8079 100644 --- a/apps/admin-panel/dist/assets/AddProduct-vqd1_hig.js +++ b/apps/admin-panel/dist/assets/AddProduct-r48hWej-.js @@ -1 +1 @@ -import{c as a,I as ne,d as Ue,n as je,N as ze,o as i,b as d,w as s,p as l,h as _,t as x,F as j,e as W,i as P,O as Re,f as w,m as V,s as fe,G as K,U as Me,r as $,q as J,Q as xe,D as $e,y as q,_ as Ce,u as Ne,x as Ee,k as qe,z as se,R as Be,a as S,H as De,S as Fe,P as ge,T as Te,E as He,V as Ge,W as oe,l as We}from"./index-C9T3Vski.js";import{_ as ye}from"./ImageUploadInput.vue_vue_type_script_setup_true_lang-Bjo3vw78.js";import{A as be}from"./AppstoreOutlined-lwgIJvjh.js";import{P as ie}from"./PictureOutlined-BBgbZIZs.js";var Je={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M518.3 459a8 8 0 00-12.6 0l-112 141.7a7.98 7.98 0 006.3 12.9h73.9V856c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V613.7H624c6.7 0 10.4-7.7 6.3-12.9L518.3 459z"}},{tag:"path",attrs:{d:"M811.4 366.7C765.6 245.9 648.9 160 512.2 160S258.8 245.8 213 366.6C127.3 389.1 64 467.2 64 560c0 110.5 89.5 200 199.9 200H304c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8h-40.1c-33.7 0-65.4-13.4-89-37.7-23.5-24.2-36-56.8-34.9-90.6.9-26.4 9.9-51.2 26.2-72.1 16.7-21.3 40.1-36.8 66.1-43.7l37.9-9.9 13.9-36.6c8.6-22.8 20.6-44.1 35.7-63.4a245.6 245.6 0 0152.4-49.9c41.1-28.9 89.5-44.2 140-44.2s98.9 15.3 140 44.2c19.9 14 37.5 30.8 52.4 49.9 15.1 19.3 27.1 40.7 35.7 63.4l13.8 36.5 37.8 10C846.1 454.5 884 503.8 884 560c0 33.1-12.9 64.3-36.3 87.7a123.07 123.07 0 01-87.6 36.3H720c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h40.1C870.5 760 960 670.5 960 560c0-92.7-63.1-170.7-148.6-193.3z"}}]},name:"cloud-upload",theme:"outlined"};function he(v){for(var u=1;u[]},purpose:{default:void 0},placeholder:{default:"افزودن تصاویر گالری"}},emits:["update:modelValue"],setup(v,{emit:u}){const r=v,m=u,c=V([]),z=V(!1),R=V(""),Q=()=>c.value.filter(n=>n.status==="done"&&n.url).map(n=>n.url),F=fe(()=>c.value.filter(n=>n.status==="done").length),X=fe(()=>c.value.filter(n=>n.status==="uploading").length);function Y(){m("update:modelValue",Q())}je(()=>r.modelValue,n=>{if(JSON.stringify(Q())===JSON.stringify(n??[]))return;const g=c.value.filter(o=>o.status==="uploading");c.value=[...(n??[]).map(o=>({uid:o,status:"done",url:o,percent:100})),...g]},{immediate:!0});function ee(n){return n.type.startsWith("image/")?!0:(K.error(`«${n.name}» تصویر نیست`),Me.LIST_IGNORE)}let T=0;const p=[];function B(n){return new Promise((g,o)=>{const C=()=>{T++,n().then(g,o).finally(()=>{var A;T--,(A=p.shift())==null||A()})};Tc.value.find(g=>g.uid===n);function H({file:n}){const g=n.uid??`${Date.now()}-${Math.random().toString(36).slice(2,8)}`;c.value.push({uid:g,status:"uploading",preview:URL.createObjectURL(n),percent:0}),B(async()=>{if(!D(g))return null;const o=new FormData;o.append("file",n),r.purpose&&o.append("purpose",r.purpose);const{data:C}=await q.post("file/create",o,{onUploadProgress:A=>{const O=D(g);O&&A.total&&(O.percent=Math.round(A.loaded/A.total*100))}});return C}).then(o=>{const C=D(g);!C||!(o!=null&&o.url)||(C.preview&&URL.revokeObjectURL(C.preview),Object.assign(C,{status:"done",url:o.url,preview:void 0,percent:100}),Y())}).catch(o=>{var A,O;const C=((O=(A=o==null?void 0:o.response)==null?void 0:A.data)==null?void 0:O.message)??`بارگذاری «${n.name}» ناموفق بود`;K.error(C),G(g)})}function G(n){const g=c.value.findIndex(C=>C.uid===n);if(g===-1)return;const[o]=c.value.splice(g,1);o.preview&&URL.revokeObjectURL(o.preview)}function Z(n){G(n),Y()}function M(n){R.value=n.url??n.preview??"",z.value=!0}return ze(()=>{c.value.forEach(n=>n.preview&&URL.revokeObjectURL(n.preview))}),(n,g)=>{const o=$("a-upload-dragger"),C=$("a-progress"),A=$("a-modal");return i(),d("div",et,[a(o,{accept:"image/*",multiple:"","show-upload-list":!1,"custom-request":H,"before-upload":ee},{default:s(()=>[l("div",tt,[a(_(de),{class:"gallery-upload__icon"}),l("p",lt,x(v.placeholder),1),g[1]||(g[1]=l("p",{class:"gallery-upload__hint"}," تصاویر را اینجا بکشید و رها کنید یا کلیک کنید — انتخاب چند تصویر به‌صورت همزمان امکان‌پذیر است ",-1))])]),_:1}),c.value.length?(i(),d("div",at,[(i(!0),d(j,null,W(c.value,O=>(i(),d("div",{key:O.uid,class:J(["tile",{"is-uploading":O.status==="uploading"}])},[l("img",{src:O.url??O.preview,alt:""},null,8,st),O.status==="uploading"?(i(),d("div",ot,[a(C,{type:"circle",percent:O.percent,size:40,"stroke-width":8,"stroke-color":"#fff","trail-color":"rgba(255,255,255,.3)","show-info":!1},null,8,["percent"])])):(i(),d("div",it,[l("button",{type:"button",class:"tile__btn",title:"نمایش",onClick:le=>M(O)},[a(_(xe))],8,nt),l("button",{type:"button",class:"tile__btn tile__btn--danger",title:"حذف",onClick:le=>Z(O.uid)},[a(_($e))],8,dt)]))],2))),128))])):P("",!0),c.value.length?(i(),d("div",rt,[l("span",null,x(F.value)+" تصویر",1),X.value?(i(),d("span",ut,[a(_(Re)),w(" در حال بارگذاری "+x(X.value)+" تصویر… ",1)])):P("",!0)])):P("",!0),a(A,{open:z.value,footer:null,onCancel:g[0]||(g[0]=O=>z.value=!1)},{default:s(()=>[l("img",{src:R.value,style:{width:"100%"},alt:""},null,8,ct)]),_:1},8,["open"])])}}}),Oe=Ce(_t,[["__scopeId","data-v-79ab0f30"]]),vt={id:"page-user-view",class:"pf-page product-form-page"},mt={class:"pf-head"},ft={class:"pf-head__text"},gt={class:"pf-layout"},yt={class:"pf-main"},bt={class:"pf-section"},ht={class:"pf-section__head"},kt={class:"pf-section__icon"},wt={key:0,class:"pf-section"},Ot={class:"pf-section__head"},Ut={class:"pf-section__icon"},xt={key:1,class:"table-scroll"},$t=["src"],Ct={key:1,class:"variant-thumb variant-thumb--empty"},It={key:1,class:"pf-table__title"},St={key:0},Pt={key:1,class:"muted"},Vt={key:0},At={key:1,class:"muted"},Lt={key:0},jt={key:1,class:"muted"},zt={key:0},Rt={key:1,class:"muted"},Mt={key:6,class:"pf-table__ops"},Nt={class:"pf-section"},Et={class:"pf-section__head"},qt={class:"pf-section__icon"},Bt={class:"pf-side"},Dt={class:"pf-section"},Ft={class:"pf-section__head"},Tt={class:"pf-section__icon"},Ht={class:"pf-section"},Gt={class:"pf-section__head"},Wt={class:"pf-section__icon"},Jt={class:"pf-section"},Qt={class:"pf-section__head"},Xt={class:"pf-section__icon"},Yt={class:"pf-uploads"},Zt={class:"pf-actions"},Kt={class:"pf-actions__hint"},el={class:"vmodal-header"},tl={class:"vmodal-header__icon"},ll={class:"vmodal-header__text"},al={class:"vmodal-cols"},sl={class:"vmodal-col"},ol={class:"vmodal-card"},il={class:"vmodal-grid vmodal-grid--2"},nl={class:"vmodal-grid vmodal-grid--2"},dl={class:"color-opt"},rl={class:"vmodal-switches"},ul={class:"vmodal-switch-box"},cl={class:"vmodal-switch-box"},pl={class:"vmodal-card"},_l={class:"vmodal-grid vmodal-grid--2"},vl={class:"vmodal-col"},ml={class:"vmodal-card"},fl={key:0,class:"vmodal-picker"},gl=["onClick"],yl=["src"],bl={key:0,class:"vmodal-picker__check"},hl={key:1,class:"vmodal-picker-empty"},kl={class:"vmodal-card"},wl={class:"vmodal-footer"},Ol=Ue({__name:"AddProduct",setup(v){const u=qe(),r=We(),m=Ne(),c=h=>!!m.hasPermission(h),z=u.params.id,R=V(!1),Q=V(void 0),F=V(!1),X=V([]),Y=V([]),ee=V([]),T=V([]),p=se({title:"",product_code:"",show_type:3,category_id:void 0,brand_id:void 0,ciny_ids:[],tags:[],body_html:"",is_active:!0,indicator_id:null,mobile_pic:null}),B=se({}),D=V([]),H=V([]),G=V([]),Z=V([]),M=V([]),n=V(!1),g=V(null),o=se({__key:"",title:"",grams:void 0,percentage_pay:void 0,qty:0,is_active:!0,is_pre_order:!1,color:void 0,color_str:void 0,rial_pay:void 0,details:"",description:"",image_id:null,image_url:null});function C(h){o.image_id=h?h.id:null,o.image_url=h?h.url:null}const A=[{title:"تصویر",dataIndex:"image",width:68,align:"center"},{title:"عنوان تنوع",dataIndex:"title"},{title:"وزن",dataIndex:"grams",align:"right"},{title:"رنگ",dataIndex:"color",align:"center"},{title:"اجرت",dataIndex:"percentage_pay",align:"right"},{title:"اجرت ریالی",dataIndex:"rial_pay",align:"right"},{title:"موجودی",dataIndex:"qty",align:"center"},{title:"وضعیت",dataIndex:"is_active",align:"center"},{title:"پیش‌سفارش",dataIndex:"is_pre_order",align:"center"},{title:"عملیات",dataIndex:"op",width:84,align:"center"}];function O(h,e){h&&e!==void 0?(g.value=e,Object.assign(o,h)):(g.value=null,Object.assign(o,{__key:`v-${Date.now()}-${Math.random().toString(36).slice(2,7)}`,id:void 0,title:"",grams:void 0,percentage_pay:Q.value,qty:0,is_active:!0,is_pre_order:!1,color:void 0,color_str:void 0,rial_pay:void 0,details:"",description:"",image_id:null,image_url:null})),n.value=!0}function le(){if(!o.title){K.error("عنوان تنوع الزامی است");return}const h=Z.value.find(k=>k.id===o.color);o.color_str=h?h.title:null;const e={...o};g.value===null?M.value.push(e):M.value[g.value]=e,n.value=!1}function ce(){window.history.length>1?r.back():r.push("/apps/product/list")}function Ie(){return Object.keys(B).forEach(h=>delete B[h]),p.title||(B.title="لطفا مقدار را وارد کنید"),Object.keys(B).length===0}async function pe(){var h,e;if(Ie())try{F.value=!0;const k={...p,cats:p.category_id?[p.category_id]:[],images:D.value,images_mobile:H.value,variants:M.value.map(U=>({id:U.id,title:U.title,grams:U.grams,percentage_pay:U.percentage_pay,qty:U.qty,is_active:U.is_active,is_pre_order:U.is_pre_order,color:U.color??null,rial_pay:U.rial_pay??null,details:U.details||null,description:U.description||null,image_id:U.image_id??null}))};z?await q.put(`product/update/${z}`,k):await q.post("product/create",k),K.info("اطلاعات با موفقیت به ثبت رسید."),r.push("/apps/product/list")}catch(k){K.error(((e=(h=k==null?void 0:k.response)==null?void 0:h.data)==null?void 0:e.message)??"خطا در ثبت اطلاعات.")}finally{F.value=!1}}return Ee(async()=>{var h,e,k,U;try{const[f,y,b,L,N]=await Promise.all([q.get("brand"),q.post("category"),m.isSuperAdmin?q.get("admin/products/collections"):Promise.resolve({data:[]}),q.get("admin/products/colors").catch(()=>({data:[]})),q.get("const/__list__tags").catch(()=>({data:[]}))]);X.value=f.data,Y.value=(y.data.rows??y.data).map(E=>({id:E.id,title:E.type_str?`${E.title} (${E.type_str}) `:E.title,type:E.type})),ee.value=b.data,Z.value=L.data??[],T.value=Array.isArray(N.data)?N.data.map(String):[]}catch(f){console.log(f)}if(z)try{const{data:f}=await q.get(`product/show/${z}`);R.value=!!((h=f.accounting)!=null&&h.locked),Q.value=((e=f.accounting)==null?void 0:e.sale_wage_percent)!=null?Number(f.accounting.sale_wage_percent):void 0,Object.assign(p,{title:f.title??"",product_code:f.product_code??"",show_type:f.show_type??3,category_id:((k=f.category)==null?void 0:k.id)??void 0,brand_id:((U=f.brand)==null?void 0:U.id)??void 0,ciny_ids:f.ciny_ids??[],tags:Array.isArray(f.tags)?f.tags:[],body_html:f.body_html??"",is_active:f.is_active??!0,indicator_id:f.indicator_id??null,mobile_pic:f.mobile_pic??null}),D.value=f.images_gallery??[],H.value=f.images_mobile??[],G.value=f.gallery??[],M.value=(f.variants_all??[]).map((y,b)=>{var L;return{__key:y.id??`v-${b}`,id:y.id,title:y.title,grams:Number(y.grams),percentage_pay:Number(y.percentage_pay),qty:y.qty,is_active:y.is_active,is_pre_order:y.is_pre_order,color:y.color!=null?Number(y.color):void 0,color_str:y.color_str??null,rial_pay:y.rial_pay!=null?Number(y.rial_pay):void 0,details:y.details??"",description:y.description??"",image_id:y.image_id??null,image_url:((L=y.image)==null?void 0:L.url)??null}})}catch(f){console.log(f)}}),(h,e)=>{const k=$("a-button"),U=$("a-tag"),f=$("a-alert"),y=$("a-input"),b=$("a-form-item"),L=$("a-select-option"),N=$("a-select"),E=$("a-textarea"),Se=$("a-empty"),_e=$("a-tooltip"),Pe=$("a-table"),ae=$("a-switch"),ve=$("a-form"),Ve=$("a-spin"),te=$("a-input-number"),Ae=$("a-modal");return i(),d("div",vt,[a(Ve,{spinning:F.value},{default:s(()=>[l("header",mt,[a(k,{class:"pf-head__back",shape:"circle",onClick:ce},{icon:s(()=>[a(_(Be))]),_:1}),l("div",ft,[l("h1",null,x(_(z)?"ویرایش محصول":"افزودن محصول"),1),e[28]||(e[28]=l("p",null,"اطلاعات، تنوع‌ها و تصاویر محصول را تکمیل کنید.",-1))]),_(z)?(i(),S(U,{key:0,color:p.is_active?"green":"default",class:"pf-head__status"},{default:s(()=>[w(x(p.is_active?"فعال":"غیر فعال"),1)]),_:1},8,["color"])):P("",!0)]),a(ve,{layout:"vertical",class:"pf-form",onSubmit:De(pe,["prevent"])},{default:s(()=>[l("div",gt,[l("div",yt,[l("section",bt,[l("div",ht,[l("span",kt,[a(_(Fe))]),e[29]||(e[29]=l("div",null,[l("h3",null,"اطلاعات پایه"),l("p",null,"نام، کد و توضیحات محصول")],-1))]),R.value?(i(),S(f,{key:0,class:"pf-alert",type:"info","show-icon":"",message:"این محصول به نرم‌افزار حسابداری متصل است؛ نام و کد محصول از آنجا خوانده می‌شود."})):P("",!0),a(b,{label:"نام محصول",required:"","validate-status":B.title?"error":"",help:B.title||(R.value?"از نرم‌افزار حسابداری — برای تغییر، آن را در حسابداری ویرایش کنید":void 0)},{default:s(()=>[a(y,{value:p.title,"onUpdate:value":e[0]||(e[0]=t=>p.title=t),placeholder:"مثلاً: گردنبند طلا",disabled:R.value},null,8,["value","disabled"])]),_:1},8,["validate-status","help"]),l("div",{class:J({"pf-grid-2":_(m).isSuperAdmin})},[a(b,{label:"کد محصول",class:J({"mb-0":!_(m).isSuperAdmin}),help:R.value?"از نرم‌افزار حسابداری":void 0},{default:s(()=>[a(y,{value:p.product_code,"onUpdate:value":e[1]||(e[1]=t=>p.product_code=t),disabled:R.value},null,8,["value","disabled"])]),_:1},8,["class","help"]),_(m).isSuperAdmin?(i(),S(b,{key:0,label:"نوع نمایش"},{default:s(()=>[a(N,{value:p.show_type,"onUpdate:value":e[2]||(e[2]=t=>p.show_type=t)},{default:s(()=>[a(L,{value:1},{default:s(()=>[...e[30]||(e[30]=[w("سایت",-1)])]),_:1}),a(L,{value:2},{default:s(()=>[...e[31]||(e[31]=[w("گوشی",-1)])]),_:1}),a(L,{value:3},{default:s(()=>[...e[32]||(e[32]=[w("سایت و گوشی",-1)])]),_:1})]),_:1},8,["value"])]),_:1})):P("",!0)],2),_(m).isSuperAdmin?(i(),S(b,{key:1,label:"شرح محصول (سایت)",class:"mb-0"},{default:s(()=>[a(E,{value:p.body_html,"onUpdate:value":e[3]||(e[3]=t=>p.body_html=t),"auto-size":{minRows:5,maxRows:12},placeholder:"توضیحات محصول برای نمایش در سایت"},null,8,["value"])]),_:1})):P("",!0)]),c("product.list.variants")?(i(),d("section",wt,[l("div",Ot,[l("span",Ut,[a(_(be))]),e[34]||(e[34]=l("div",null,[l("h3",null,"تنوع ها"),l("p",null,"وزن، اجرت و موجودی هر مدل از محصول")],-1)),c("product.list.variants.add")?(i(),S(k,{key:0,type:"primary",class:"pf-section__action",onClick:e[4]||(e[4]=t=>O())},{icon:s(()=>[a(_(ge))]),default:s(()=>[e[33]||(e[33]=w(" افزودن تنوع ",-1))]),_:1})):P("",!0)]),M.value.length?(i(),d("div",xt,[a(Pe,{class:"pf-table",columns:A,"data-source":M.value,pagination:!1,scroll:{x:"max-content"},size:"middle","row-key":"__key"},{bodyCell:s(({column:t,record:I,index:me})=>[t.dataIndex==="image"?(i(),d(j,{key:0},[I.image_url?(i(),d("img",{key:0,src:I.image_url,class:"variant-thumb",alt:""},null,8,$t)):(i(),d("span",Ct,[a(_(ie))]))],64)):t.dataIndex==="title"?(i(),d("span",It,x(I.title),1)):t.dataIndex==="grams"?(i(),d(j,{key:2},[I.grams!=null?(i(),d("span",St,[w(x(I.grams)+" ",1),e[36]||(e[36]=l("small",{class:"muted"},"گرم",-1))])):(i(),d("span",Pt,"—"))],64)):t.dataIndex==="color"?(i(),d(j,{key:3},[I.color_str?(i(),d("span",Vt,x(I.color_str),1)):(i(),d("span",At,"—"))],64)):t.dataIndex==="percentage_pay"?(i(),d(j,{key:4},[I.percentage_pay!=null?(i(),d("span",Lt,[w(x(I.percentage_pay),1),e[37]||(e[37]=l("small",{class:"muted"},"٪",-1))])):(i(),d("span",jt,"—"))],64)):t.dataIndex==="rial_pay"?(i(),d(j,{key:5},[I.rial_pay!=null?(i(),d("span",zt,[w(x(Number(I.rial_pay).toLocaleString("fa-IR"))+" ",1),e[38]||(e[38]=l("small",{class:"muted"},"ریال",-1))])):(i(),d("span",Rt,"—"))],64)):t.dataIndex==="op"?(i(),d("div",Mt,[c("product.list.variants.edit")?(i(),S(_e,{key:0,title:"ویرایش"},{default:s(()=>[a(k,{type:"text",size:"small",onClick:Le=>O(I,me)},{icon:s(()=>[a(_(He),{class:"text-primary"})]),_:1},8,["onClick"])]),_:2},1024)):P("",!0),c("product.list.variants.remove")?(i(),S(_e,{key:1,title:"حذف"},{default:s(()=>[a(k,{type:"text",size:"small",danger:"",onClick:Le=>M.value.splice(me,1)},{icon:s(()=>[a(_($e))]),_:1},8,["onClick"])]),_:2},1024)):P("",!0)])):t.dataIndex==="is_active"?(i(),S(U,{key:7,color:I.is_active?"green":"red"},{default:s(()=>[w(x(I.is_active?"فعال":"غیر فعال"),1)]),_:2},1032,["color"])):t.dataIndex==="is_pre_order"?(i(),S(U,{key:8,color:I.is_pre_order?"blue":""},{default:s(()=>[w(x(I.is_pre_order?"بله":"خیر"),1)]),_:2},1032,["color"])):P("",!0)]),_:1},8,["data-source"])])):(i(),S(Se,{key:0,image:_(Te).PRESENTED_IMAGE_SIMPLE,description:"هنوز تنوعی برای این محصول ثبت نشده است."},{default:s(()=>[c("product.list.variants.add")?(i(),S(k,{key:0,onClick:e[5]||(e[5]=t=>O())},{icon:s(()=>[a(_(ge))]),default:s(()=>[e[35]||(e[35]=w(" افزودن اولین تنوع ",-1))]),_:1})):P("",!0)]),_:1},8,["image"]))])):P("",!0),l("section",Nt,[l("div",Et,[l("span",qt,[a(_(ie))]),l("div",null,[e[39]||(e[39]=l("h3",null,"گالری تصاویر",-1)),l("p",null,x(_(m).isSuperAdmin?"تصاویر جداگانه برای نمایش در سایت و اپلیکیشن موبایل":"تصاویر نمایش در اپلیکیشن موبایل"),1)])]),_(m).isSuperAdmin?(i(),d(j,{key:0},[a(b,{label:"گالری تصاویر سایت"},{default:s(()=>[a(Oe,{modelValue:D.value,"onUpdate:modelValue":e[6]||(e[6]=t=>D.value=t),purpose:"product.gallery",placeholder:"افزودن تصاویر گالری سایت"},null,8,["modelValue"])]),_:1}),e[40]||(e[40]=l("div",{class:"pf-divider"},null,-1))],64)):P("",!0),a(b,{label:"گالری تصاویر موبایل",class:"mb-0"},{default:s(()=>[a(Oe,{modelValue:H.value,"onUpdate:modelValue":e[7]||(e[7]=t=>H.value=t),purpose:"product.gallery_mobile",placeholder:"افزودن تصاویر گالری موبایل"},null,8,["modelValue"])]),_:1})])]),l("aside",Bt,[l("section",Dt,[l("div",Ft,[l("span",Tt,[a(_(xe))]),e[41]||(e[41]=l("div",null,[l("h3",null,"وضعیت نمایش"),l("p",null,"نمایش یا عدم نمایش محصول برای مشتریان")],-1))]),a(b,{label:"نمایش محصول",extra:p.is_active?"محصول برای مشتریان قابل مشاهده است":"محصول پنهان است",class:"mb-0"},{default:s(()=>[a(ae,{checked:p.is_active,"onUpdate:checked":e[8]||(e[8]=t=>p.is_active=t)},null,8,["checked"])]),_:1},8,["extra"])]),l("section",Ht,[l("div",Gt,[l("span",Wt,[a(_(ue))]),e[42]||(e[42]=l("div",null,[l("h3",null,"دسته‌بندی"),l("p",null,"دسته، برند، سینی و برچسب‌های محصول")],-1))]),a(b,{label:"دسته بندی"},{default:s(()=>[a(N,{value:p.category_id,"onUpdate:value":e[9]||(e[9]=t=>p.category_id=t),"allow-clear":"","show-search":"","option-filter-prop":"label",placeholder:"انتخاب کنید"},{default:s(()=>[(i(!0),d(j,null,W(Y.value,t=>(i(),S(L,{key:t.id,value:t.id,label:t.title},{default:s(()=>[w(x(t.title),1)]),_:2},1032,["value","label"]))),128))]),_:1},8,["value"])]),_:1}),a(b,{label:"برند"},{default:s(()=>[a(N,{value:p.brand_id,"onUpdate:value":e[10]||(e[10]=t=>p.brand_id=t),"allow-clear":"","show-search":"","option-filter-prop":"label",placeholder:"انتخاب کنید"},{default:s(()=>[(i(!0),d(j,null,W(X.value,t=>(i(),S(L,{key:t.id,value:t.id,label:t.title},{default:s(()=>[w(x(t.title),1)]),_:2},1032,["value","label"]))),128))]),_:1},8,["value"])]),_:1}),_(m).isSuperAdmin?(i(),S(b,{key:0,label:"سینی ها"},{default:s(()=>[a(N,{value:p.ciny_ids,"onUpdate:value":e[11]||(e[11]=t=>p.ciny_ids=t),mode:"multiple","allow-clear":"","option-filter-prop":"label",placeholder:"انتخاب کنید"},{default:s(()=>[(i(!0),d(j,null,W(ee.value,t=>(i(),S(L,{key:t.id,value:t.id,label:t.title},{default:s(()=>[w(x(t.title),1)]),_:2},1032,["value","label"]))),128))]),_:1},8,["value"])]),_:1})):P("",!0),a(b,{label:"برچسب ها",class:"mb-0"},{default:s(()=>[a(N,{value:p.tags,"onUpdate:value":e[12]||(e[12]=t=>p.tags=t),mode:"multiple","allow-clear":"","option-filter-prop":"label",placeholder:"انتخاب از فهرست برچسب‌ها",options:T.value.map(t=>({value:t,label:t}))},null,8,["value","options"])]),_:1})]),l("section",Jt,[l("div",Qt,[l("span",Xt,[a(_(re))]),e[43]||(e[43]=l("div",null,[l("h3",null,"تصویر شاخص"),l("p",null,"تصویر اصلی در لیست محصولات")],-1))]),l("div",Yt,[_(m).isSuperAdmin?(i(),S(b,{key:0,label:"سایت",class:"mb-0"},{default:s(()=>[a(ye,{modelValue:p.indicator_id,"onUpdate:modelValue":e[13]||(e[13]=t=>p.indicator_id=t),purpose:"product.indicator",placeholder:"تصویر شاخص"},null,8,["modelValue"])]),_:1})):P("",!0),a(b,{label:"موبایل",class:"mb-0"},{default:s(()=>[a(ye,{modelValue:p.mobile_pic,"onUpdate:modelValue":e[14]||(e[14]=t=>p.mobile_pic=t),purpose:"product.indicator_mobile",placeholder:"تصویر شاخص موبایل"},null,8,["modelValue"])]),_:1})])])])]),l("div",Zt,[l("span",Kt,[a(_(Ge)),e[44]||(e[44]=w(" تغییرات تنوع‌ها و تصاویر پس از «ثبت اطلاعات» ذخیره می‌شوند. ",-1))]),a(k,{onClick:ce},{default:s(()=>[...e[45]||(e[45]=[w("انصراف",-1)])]),_:1}),a(k,{type:"primary",class:"form-submit",loading:F.value,onClick:pe},{icon:s(()=>[a(_(oe))]),default:s(()=>[e[46]||(e[46]=w(" ثبت اطلاعات ",-1))]),_:1},8,["loading"])])]),_:1})]),_:1},8,["spinning"]),a(Ae,{open:n.value,"onUpdate:open":e[27]||(e[27]=t=>n.value=t),width:860,"wrap-class-name":"pf-variant-modal",footer:null,"destroy-on-close":!0,centered:""},{title:s(()=>[l("div",el,[l("div",tl,[a(_(be))]),l("div",ll,[l("h3",null,x(g.value===null?"افزودن تنوع جدید":"ویرایش تنوع"),1),e[47]||(e[47]=l("p",null,"مشخصات، قیمت‌گذاری و تصویر این تنوع را وارد کنید.",-1))])])]),default:s(()=>[a(ve,{layout:"vertical",class:"vmodal-form"},{default:s(()=>[l("div",al,[l("div",sl,[l("div",ol,[e[50]||(e[50]=l("div",{class:"vmodal-card__head"},"مشخصات اصلی",-1)),l("div",il,[a(b,{label:"عنوان تنوع",required:"",class:"vmodal-item"},{default:s(()=>[a(y,{value:o.title,"onUpdate:value":e[15]||(e[15]=t=>o.title=t),placeholder:"مثلاً: ۵ گرمی"},null,8,["value"])]),_:1}),a(b,{label:"وزن خام",class:"vmodal-item"},{default:s(()=>[a(te,{value:o.grams,"onUpdate:value":e[16]||(e[16]=t=>o.grams=t),class:"w-full",step:.001,"addon-after":"گرم",placeholder:"۰.۰۰۰"},null,8,["value"])]),_:1})]),l("div",nl,[a(b,{label:"تعداد موجودی",class:"vmodal-item"},{default:s(()=>[a(te,{value:o.qty,"onUpdate:value":e[17]||(e[17]=t=>o.qty=t),class:"w-full",min:0,placeholder:"۰"},null,8,["value"])]),_:1}),a(b,{label:"رنگ طلا",class:"vmodal-item"},{default:s(()=>[a(N,{value:o.color,"onUpdate:value":e[18]||(e[18]=t=>o.color=t),placeholder:"انتخاب رنگ","allow-clear":""},{default:s(()=>[(i(!0),d(j,null,W(Z.value,t=>(i(),S(L,{key:t.id,value:t.id},{default:s(()=>[l("div",dl,[l("span",{class:J(["color-opt__dot",`color-opt__dot--${t.id}`])},null,2),l("span",null,x(t.title),1)])]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1})]),l("div",rl,[l("label",ul,[e[48]||(e[48]=l("span",{class:"vmodal-switch-label"},"فعال برای فروش",-1)),a(ae,{checked:o.is_active,"onUpdate:checked":e[19]||(e[19]=t=>o.is_active=t),size:"small"},null,8,["checked"])]),l("label",cl,[e[49]||(e[49]=l("span",{class:"vmodal-switch-label"},"پیش‌سفارش",-1)),a(ae,{checked:o.is_pre_order,"onUpdate:checked":e[20]||(e[20]=t=>o.is_pre_order=t),size:"small"},null,8,["checked"])])])]),l("div",pl,[e[51]||(e[51]=l("div",{class:"vmodal-card__head"},"اجرت و قیمت‌گذاری",-1)),l("div",_l,[a(b,{label:"اجرت درصدی",class:"vmodal-item"},{default:s(()=>[a(te,{value:o.percentage_pay,"onUpdate:value":e[21]||(e[21]=t=>o.percentage_pay=t),class:"w-full",step:.1,"addon-after":"٪",placeholder:"۰"},null,8,["value"])]),_:1}),a(b,{label:"اجرت ریالی",class:"vmodal-item"},{default:s(()=>[a(te,{value:o.rial_pay,"onUpdate:value":e[22]||(e[22]=t=>o.rial_pay=t),class:"w-full",step:5e4,"addon-after":"ریال",placeholder:"۰",formatter:t=>t?`${t}`.replace(/\B(?=(\d{3})+(?!\d))/g,","):"",parser:t=>t?t.replace(/,/g,""):""},null,8,["value","formatter","parser"])]),_:1})])])]),l("div",vl,[l("div",ml,[e[53]||(e[53]=l("div",{class:"vmodal-card__head"},"تصویر اختصاصی تنوع",-1)),G.value.length?(i(),d("div",fl,[l("button",{type:"button",class:J(["vmodal-picker__item",{"is-active":!o.image_id}]),title:"بدون تصویر",onClick:e[23]||(e[23]=t=>C(null))},[a(_(ie)),e[52]||(e[52]=l("span",null,"بدون عکس",-1))],2),(i(!0),d(j,null,W(G.value,t=>(i(),d("button",{key:t.id,type:"button",class:J(["vmodal-picker__item",{"is-active":o.image_id===t.id}]),onClick:I=>C(t)},[l("img",{src:t.url,alt:""},null,8,yl),o.image_id===t.id?(i(),d("div",bl,[a(_(oe))])):P("",!0)],10,gl))),128))])):(i(),d("div",hl," تصویری در گالری ثبت نشده است (می‌توانید در بخش گالری محصول تصویر بارگذاری کنید). "))]),l("div",kl,[e[54]||(e[54]=l("div",{class:"vmodal-card__head"},"توضیحات تکمیلی",-1)),a(b,{label:"توضیح مختصر",class:"vmodal-item"},{default:s(()=>[a(y,{value:o.details,"onUpdate:value":e[24]||(e[24]=t=>o.details=t),placeholder:"مثلاً: طراحی مات با تراش برلیان"},null,8,["value"])]),_:1}),a(b,{label:"توضیحات کامل",class:"vmodal-item mb-0"},{default:s(()=>[a(E,{value:o.description,"onUpdate:value":e[25]||(e[25]=t=>o.description=t),style:{height:"95px","min-height":"95px","max-height":"95px",resize:"none"},placeholder:"ویژگی‌های خاص این تنوع..."},null,8,["value"])]),_:1})])])]),l("div",wl,[a(k,{class:"vmodal-footer__cancel",onClick:e[26]||(e[26]=t=>n.value=!1)},{default:s(()=>[...e[55]||(e[55]=[w(" انصراف ",-1)])]),_:1}),a(k,{type:"primary",class:"vmodal-footer__submit",onClick:le},{icon:s(()=>[a(_(oe))]),default:s(()=>[w(" "+x(g.value===null?"افزودن تنوع":"ذخیره تغییرات"),1)]),_:1})])]),_:1})]),_:1},8,["open"])])}}}),Il=Ce(Ol,[["__scopeId","data-v-461486f5"]]);export{Il as default}; +import{c as a,I as ne,d as Ue,n as je,N as ze,o as i,b as d,w as s,p as l,h as _,t as x,F as j,e as W,i as P,O as Re,f as w,m as V,s as fe,G as K,U as Me,r as $,q as J,Q as xe,D as $e,y as q,_ as Ce,u as Ne,x as Ee,k as qe,z as se,R as Be,a as S,H as De,S as Fe,P as ge,T as Te,E as He,V as Ge,W as oe,l as We}from"./index-CuIWfDbM.js";import{_ as ye}from"./ImageUploadInput.vue_vue_type_script_setup_true_lang-Bb4hJ8Y2.js";import{A as be}from"./AppstoreOutlined-6RRW3vIa.js";import{P as ie}from"./PictureOutlined-CixWElmx.js";var Je={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M518.3 459a8 8 0 00-12.6 0l-112 141.7a7.98 7.98 0 006.3 12.9h73.9V856c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V613.7H624c6.7 0 10.4-7.7 6.3-12.9L518.3 459z"}},{tag:"path",attrs:{d:"M811.4 366.7C765.6 245.9 648.9 160 512.2 160S258.8 245.8 213 366.6C127.3 389.1 64 467.2 64 560c0 110.5 89.5 200 199.9 200H304c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8h-40.1c-33.7 0-65.4-13.4-89-37.7-23.5-24.2-36-56.8-34.9-90.6.9-26.4 9.9-51.2 26.2-72.1 16.7-21.3 40.1-36.8 66.1-43.7l37.9-9.9 13.9-36.6c8.6-22.8 20.6-44.1 35.7-63.4a245.6 245.6 0 0152.4-49.9c41.1-28.9 89.5-44.2 140-44.2s98.9 15.3 140 44.2c19.9 14 37.5 30.8 52.4 49.9 15.1 19.3 27.1 40.7 35.7 63.4l13.8 36.5 37.8 10C846.1 454.5 884 503.8 884 560c0 33.1-12.9 64.3-36.3 87.7a123.07 123.07 0 01-87.6 36.3H720c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h40.1C870.5 760 960 670.5 960 560c0-92.7-63.1-170.7-148.6-193.3z"}}]},name:"cloud-upload",theme:"outlined"};function he(v){for(var u=1;u[]},purpose:{default:void 0},placeholder:{default:"افزودن تصاویر گالری"}},emits:["update:modelValue"],setup(v,{emit:u}){const r=v,m=u,c=V([]),z=V(!1),R=V(""),Q=()=>c.value.filter(n=>n.status==="done"&&n.url).map(n=>n.url),F=fe(()=>c.value.filter(n=>n.status==="done").length),X=fe(()=>c.value.filter(n=>n.status==="uploading").length);function Y(){m("update:modelValue",Q())}je(()=>r.modelValue,n=>{if(JSON.stringify(Q())===JSON.stringify(n??[]))return;const g=c.value.filter(o=>o.status==="uploading");c.value=[...(n??[]).map(o=>({uid:o,status:"done",url:o,percent:100})),...g]},{immediate:!0});function ee(n){return n.type.startsWith("image/")?!0:(K.error(`«${n.name}» تصویر نیست`),Me.LIST_IGNORE)}let T=0;const p=[];function B(n){return new Promise((g,o)=>{const C=()=>{T++,n().then(g,o).finally(()=>{var A;T--,(A=p.shift())==null||A()})};Tc.value.find(g=>g.uid===n);function H({file:n}){const g=n.uid??`${Date.now()}-${Math.random().toString(36).slice(2,8)}`;c.value.push({uid:g,status:"uploading",preview:URL.createObjectURL(n),percent:0}),B(async()=>{if(!D(g))return null;const o=new FormData;o.append("file",n),r.purpose&&o.append("purpose",r.purpose);const{data:C}=await q.post("file/create",o,{onUploadProgress:A=>{const O=D(g);O&&A.total&&(O.percent=Math.round(A.loaded/A.total*100))}});return C}).then(o=>{const C=D(g);!C||!(o!=null&&o.url)||(C.preview&&URL.revokeObjectURL(C.preview),Object.assign(C,{status:"done",url:o.url,preview:void 0,percent:100}),Y())}).catch(o=>{var A,O;const C=((O=(A=o==null?void 0:o.response)==null?void 0:A.data)==null?void 0:O.message)??`بارگذاری «${n.name}» ناموفق بود`;K.error(C),G(g)})}function G(n){const g=c.value.findIndex(C=>C.uid===n);if(g===-1)return;const[o]=c.value.splice(g,1);o.preview&&URL.revokeObjectURL(o.preview)}function Z(n){G(n),Y()}function M(n){R.value=n.url??n.preview??"",z.value=!0}return ze(()=>{c.value.forEach(n=>n.preview&&URL.revokeObjectURL(n.preview))}),(n,g)=>{const o=$("a-upload-dragger"),C=$("a-progress"),A=$("a-modal");return i(),d("div",et,[a(o,{accept:"image/*",multiple:"","show-upload-list":!1,"custom-request":H,"before-upload":ee},{default:s(()=>[l("div",tt,[a(_(de),{class:"gallery-upload__icon"}),l("p",lt,x(v.placeholder),1),g[1]||(g[1]=l("p",{class:"gallery-upload__hint"}," تصاویر را اینجا بکشید و رها کنید یا کلیک کنید — انتخاب چند تصویر به‌صورت همزمان امکان‌پذیر است ",-1))])]),_:1}),c.value.length?(i(),d("div",at,[(i(!0),d(j,null,W(c.value,O=>(i(),d("div",{key:O.uid,class:J(["tile",{"is-uploading":O.status==="uploading"}])},[l("img",{src:O.url??O.preview,alt:""},null,8,st),O.status==="uploading"?(i(),d("div",ot,[a(C,{type:"circle",percent:O.percent,size:40,"stroke-width":8,"stroke-color":"#fff","trail-color":"rgba(255,255,255,.3)","show-info":!1},null,8,["percent"])])):(i(),d("div",it,[l("button",{type:"button",class:"tile__btn",title:"نمایش",onClick:le=>M(O)},[a(_(xe))],8,nt),l("button",{type:"button",class:"tile__btn tile__btn--danger",title:"حذف",onClick:le=>Z(O.uid)},[a(_($e))],8,dt)]))],2))),128))])):P("",!0),c.value.length?(i(),d("div",rt,[l("span",null,x(F.value)+" تصویر",1),X.value?(i(),d("span",ut,[a(_(Re)),w(" در حال بارگذاری "+x(X.value)+" تصویر… ",1)])):P("",!0)])):P("",!0),a(A,{open:z.value,footer:null,onCancel:g[0]||(g[0]=O=>z.value=!1)},{default:s(()=>[l("img",{src:R.value,style:{width:"100%"},alt:""},null,8,ct)]),_:1},8,["open"])])}}}),Oe=Ce(_t,[["__scopeId","data-v-79ab0f30"]]),vt={id:"page-user-view",class:"pf-page product-form-page"},mt={class:"pf-head"},ft={class:"pf-head__text"},gt={class:"pf-layout"},yt={class:"pf-main"},bt={class:"pf-section"},ht={class:"pf-section__head"},kt={class:"pf-section__icon"},wt={key:0,class:"pf-section"},Ot={class:"pf-section__head"},Ut={class:"pf-section__icon"},xt={key:1,class:"table-scroll"},$t=["src"],Ct={key:1,class:"variant-thumb variant-thumb--empty"},It={key:1,class:"pf-table__title"},St={key:0},Pt={key:1,class:"muted"},Vt={key:0},At={key:1,class:"muted"},Lt={key:0},jt={key:1,class:"muted"},zt={key:0},Rt={key:1,class:"muted"},Mt={key:6,class:"pf-table__ops"},Nt={class:"pf-section"},Et={class:"pf-section__head"},qt={class:"pf-section__icon"},Bt={class:"pf-side"},Dt={class:"pf-section"},Ft={class:"pf-section__head"},Tt={class:"pf-section__icon"},Ht={class:"pf-section"},Gt={class:"pf-section__head"},Wt={class:"pf-section__icon"},Jt={class:"pf-section"},Qt={class:"pf-section__head"},Xt={class:"pf-section__icon"},Yt={class:"pf-uploads"},Zt={class:"pf-actions"},Kt={class:"pf-actions__hint"},el={class:"vmodal-header"},tl={class:"vmodal-header__icon"},ll={class:"vmodal-header__text"},al={class:"vmodal-cols"},sl={class:"vmodal-col"},ol={class:"vmodal-card"},il={class:"vmodal-grid vmodal-grid--2"},nl={class:"vmodal-grid vmodal-grid--2"},dl={class:"color-opt"},rl={class:"vmodal-switches"},ul={class:"vmodal-switch-box"},cl={class:"vmodal-switch-box"},pl={class:"vmodal-card"},_l={class:"vmodal-grid vmodal-grid--2"},vl={class:"vmodal-col"},ml={class:"vmodal-card"},fl={key:0,class:"vmodal-picker"},gl=["onClick"],yl=["src"],bl={key:0,class:"vmodal-picker__check"},hl={key:1,class:"vmodal-picker-empty"},kl={class:"vmodal-card"},wl={class:"vmodal-footer"},Ol=Ue({__name:"AddProduct",setup(v){const u=qe(),r=We(),m=Ne(),c=h=>!!m.hasPermission(h),z=u.params.id,R=V(!1),Q=V(void 0),F=V(!1),X=V([]),Y=V([]),ee=V([]),T=V([]),p=se({title:"",product_code:"",show_type:3,category_id:void 0,brand_id:void 0,ciny_ids:[],tags:[],body_html:"",is_active:!0,indicator_id:null,mobile_pic:null}),B=se({}),D=V([]),H=V([]),G=V([]),Z=V([]),M=V([]),n=V(!1),g=V(null),o=se({__key:"",title:"",grams:void 0,percentage_pay:void 0,qty:0,is_active:!0,is_pre_order:!1,color:void 0,color_str:void 0,rial_pay:void 0,details:"",description:"",image_id:null,image_url:null});function C(h){o.image_id=h?h.id:null,o.image_url=h?h.url:null}const A=[{title:"تصویر",dataIndex:"image",width:68,align:"center"},{title:"عنوان تنوع",dataIndex:"title"},{title:"وزن",dataIndex:"grams",align:"right"},{title:"رنگ",dataIndex:"color",align:"center"},{title:"اجرت",dataIndex:"percentage_pay",align:"right"},{title:"اجرت ریالی",dataIndex:"rial_pay",align:"right"},{title:"موجودی",dataIndex:"qty",align:"center"},{title:"وضعیت",dataIndex:"is_active",align:"center"},{title:"پیش‌سفارش",dataIndex:"is_pre_order",align:"center"},{title:"عملیات",dataIndex:"op",width:84,align:"center"}];function O(h,e){h&&e!==void 0?(g.value=e,Object.assign(o,h)):(g.value=null,Object.assign(o,{__key:`v-${Date.now()}-${Math.random().toString(36).slice(2,7)}`,id:void 0,title:"",grams:void 0,percentage_pay:Q.value,qty:0,is_active:!0,is_pre_order:!1,color:void 0,color_str:void 0,rial_pay:void 0,details:"",description:"",image_id:null,image_url:null})),n.value=!0}function le(){if(!o.title){K.error("عنوان تنوع الزامی است");return}const h=Z.value.find(k=>k.id===o.color);o.color_str=h?h.title:null;const e={...o};g.value===null?M.value.push(e):M.value[g.value]=e,n.value=!1}function ce(){window.history.length>1?r.back():r.push("/apps/product/list")}function Ie(){return Object.keys(B).forEach(h=>delete B[h]),p.title||(B.title="لطفا مقدار را وارد کنید"),Object.keys(B).length===0}async function pe(){var h,e;if(Ie())try{F.value=!0;const k={...p,cats:p.category_id?[p.category_id]:[],images:D.value,images_mobile:H.value,variants:M.value.map(U=>({id:U.id,title:U.title,grams:U.grams,percentage_pay:U.percentage_pay,qty:U.qty,is_active:U.is_active,is_pre_order:U.is_pre_order,color:U.color??null,rial_pay:U.rial_pay??null,details:U.details||null,description:U.description||null,image_id:U.image_id??null}))};z?await q.put(`product/update/${z}`,k):await q.post("product/create",k),K.info("اطلاعات با موفقیت به ثبت رسید."),r.push("/apps/product/list")}catch(k){K.error(((e=(h=k==null?void 0:k.response)==null?void 0:h.data)==null?void 0:e.message)??"خطا در ثبت اطلاعات.")}finally{F.value=!1}}return Ee(async()=>{var h,e,k,U;try{const[f,y,b,L,N]=await Promise.all([q.get("brand"),q.post("category"),m.isSuperAdmin?q.get("admin/products/collections"):Promise.resolve({data:[]}),q.get("admin/products/colors").catch(()=>({data:[]})),q.get("const/__list__tags").catch(()=>({data:[]}))]);X.value=f.data,Y.value=(y.data.rows??y.data).map(E=>({id:E.id,title:E.type_str?`${E.title} (${E.type_str}) `:E.title,type:E.type})),ee.value=b.data,Z.value=L.data??[],T.value=Array.isArray(N.data)?N.data.map(String):[]}catch(f){console.log(f)}if(z)try{const{data:f}=await q.get(`product/show/${z}`);R.value=!!((h=f.accounting)!=null&&h.locked),Q.value=((e=f.accounting)==null?void 0:e.sale_wage_percent)!=null?Number(f.accounting.sale_wage_percent):void 0,Object.assign(p,{title:f.title??"",product_code:f.product_code??"",show_type:f.show_type??3,category_id:((k=f.category)==null?void 0:k.id)??void 0,brand_id:((U=f.brand)==null?void 0:U.id)??void 0,ciny_ids:f.ciny_ids??[],tags:Array.isArray(f.tags)?f.tags:[],body_html:f.body_html??"",is_active:f.is_active??!0,indicator_id:f.indicator_id??null,mobile_pic:f.mobile_pic??null}),D.value=f.images_gallery??[],H.value=f.images_mobile??[],G.value=f.gallery??[],M.value=(f.variants_all??[]).map((y,b)=>{var L;return{__key:y.id??`v-${b}`,id:y.id,title:y.title,grams:Number(y.grams),percentage_pay:Number(y.percentage_pay),qty:y.qty,is_active:y.is_active,is_pre_order:y.is_pre_order,color:y.color!=null?Number(y.color):void 0,color_str:y.color_str??null,rial_pay:y.rial_pay!=null?Number(y.rial_pay):void 0,details:y.details??"",description:y.description??"",image_id:y.image_id??null,image_url:((L=y.image)==null?void 0:L.url)??null}})}catch(f){console.log(f)}}),(h,e)=>{const k=$("a-button"),U=$("a-tag"),f=$("a-alert"),y=$("a-input"),b=$("a-form-item"),L=$("a-select-option"),N=$("a-select"),E=$("a-textarea"),Se=$("a-empty"),_e=$("a-tooltip"),Pe=$("a-table"),ae=$("a-switch"),ve=$("a-form"),Ve=$("a-spin"),te=$("a-input-number"),Ae=$("a-modal");return i(),d("div",vt,[a(Ve,{spinning:F.value},{default:s(()=>[l("header",mt,[a(k,{class:"pf-head__back",shape:"circle",onClick:ce},{icon:s(()=>[a(_(Be))]),_:1}),l("div",ft,[l("h1",null,x(_(z)?"ویرایش محصول":"افزودن محصول"),1),e[28]||(e[28]=l("p",null,"اطلاعات، تنوع‌ها و تصاویر محصول را تکمیل کنید.",-1))]),_(z)?(i(),S(U,{key:0,color:p.is_active?"green":"default",class:"pf-head__status"},{default:s(()=>[w(x(p.is_active?"فعال":"غیر فعال"),1)]),_:1},8,["color"])):P("",!0)]),a(ve,{layout:"vertical",class:"pf-form",onSubmit:De(pe,["prevent"])},{default:s(()=>[l("div",gt,[l("div",yt,[l("section",bt,[l("div",ht,[l("span",kt,[a(_(Fe))]),e[29]||(e[29]=l("div",null,[l("h3",null,"اطلاعات پایه"),l("p",null,"نام، کد و توضیحات محصول")],-1))]),R.value?(i(),S(f,{key:0,class:"pf-alert",type:"info","show-icon":"",message:"این محصول به نرم‌افزار حسابداری متصل است؛ نام و کد محصول از آنجا خوانده می‌شود."})):P("",!0),a(b,{label:"نام محصول",required:"","validate-status":B.title?"error":"",help:B.title||(R.value?"از نرم‌افزار حسابداری — برای تغییر، آن را در حسابداری ویرایش کنید":void 0)},{default:s(()=>[a(y,{value:p.title,"onUpdate:value":e[0]||(e[0]=t=>p.title=t),placeholder:"مثلاً: گردنبند طلا",disabled:R.value},null,8,["value","disabled"])]),_:1},8,["validate-status","help"]),l("div",{class:J({"pf-grid-2":_(m).isSuperAdmin})},[a(b,{label:"کد محصول",class:J({"mb-0":!_(m).isSuperAdmin}),help:R.value?"از نرم‌افزار حسابداری":void 0},{default:s(()=>[a(y,{value:p.product_code,"onUpdate:value":e[1]||(e[1]=t=>p.product_code=t),disabled:R.value},null,8,["value","disabled"])]),_:1},8,["class","help"]),_(m).isSuperAdmin?(i(),S(b,{key:0,label:"نوع نمایش"},{default:s(()=>[a(N,{value:p.show_type,"onUpdate:value":e[2]||(e[2]=t=>p.show_type=t)},{default:s(()=>[a(L,{value:1},{default:s(()=>[...e[30]||(e[30]=[w("سایت",-1)])]),_:1}),a(L,{value:2},{default:s(()=>[...e[31]||(e[31]=[w("گوشی",-1)])]),_:1}),a(L,{value:3},{default:s(()=>[...e[32]||(e[32]=[w("سایت و گوشی",-1)])]),_:1})]),_:1},8,["value"])]),_:1})):P("",!0)],2),_(m).isSuperAdmin?(i(),S(b,{key:1,label:"شرح محصول (سایت)",class:"mb-0"},{default:s(()=>[a(E,{value:p.body_html,"onUpdate:value":e[3]||(e[3]=t=>p.body_html=t),"auto-size":{minRows:5,maxRows:12},placeholder:"توضیحات محصول برای نمایش در سایت"},null,8,["value"])]),_:1})):P("",!0)]),c("product.list.variants")?(i(),d("section",wt,[l("div",Ot,[l("span",Ut,[a(_(be))]),e[34]||(e[34]=l("div",null,[l("h3",null,"تنوع ها"),l("p",null,"وزن، اجرت و موجودی هر مدل از محصول")],-1)),c("product.list.variants.add")?(i(),S(k,{key:0,type:"primary",class:"pf-section__action",onClick:e[4]||(e[4]=t=>O())},{icon:s(()=>[a(_(ge))]),default:s(()=>[e[33]||(e[33]=w(" افزودن تنوع ",-1))]),_:1})):P("",!0)]),M.value.length?(i(),d("div",xt,[a(Pe,{class:"pf-table",columns:A,"data-source":M.value,pagination:!1,scroll:{x:"max-content"},size:"middle","row-key":"__key"},{bodyCell:s(({column:t,record:I,index:me})=>[t.dataIndex==="image"?(i(),d(j,{key:0},[I.image_url?(i(),d("img",{key:0,src:I.image_url,class:"variant-thumb",alt:""},null,8,$t)):(i(),d("span",Ct,[a(_(ie))]))],64)):t.dataIndex==="title"?(i(),d("span",It,x(I.title),1)):t.dataIndex==="grams"?(i(),d(j,{key:2},[I.grams!=null?(i(),d("span",St,[w(x(I.grams)+" ",1),e[36]||(e[36]=l("small",{class:"muted"},"گرم",-1))])):(i(),d("span",Pt,"—"))],64)):t.dataIndex==="color"?(i(),d(j,{key:3},[I.color_str?(i(),d("span",Vt,x(I.color_str),1)):(i(),d("span",At,"—"))],64)):t.dataIndex==="percentage_pay"?(i(),d(j,{key:4},[I.percentage_pay!=null?(i(),d("span",Lt,[w(x(I.percentage_pay),1),e[37]||(e[37]=l("small",{class:"muted"},"٪",-1))])):(i(),d("span",jt,"—"))],64)):t.dataIndex==="rial_pay"?(i(),d(j,{key:5},[I.rial_pay!=null?(i(),d("span",zt,[w(x(Number(I.rial_pay).toLocaleString("fa-IR"))+" ",1),e[38]||(e[38]=l("small",{class:"muted"},"ریال",-1))])):(i(),d("span",Rt,"—"))],64)):t.dataIndex==="op"?(i(),d("div",Mt,[c("product.list.variants.edit")?(i(),S(_e,{key:0,title:"ویرایش"},{default:s(()=>[a(k,{type:"text",size:"small",onClick:Le=>O(I,me)},{icon:s(()=>[a(_(He),{class:"text-primary"})]),_:1},8,["onClick"])]),_:2},1024)):P("",!0),c("product.list.variants.remove")?(i(),S(_e,{key:1,title:"حذف"},{default:s(()=>[a(k,{type:"text",size:"small",danger:"",onClick:Le=>M.value.splice(me,1)},{icon:s(()=>[a(_($e))]),_:1},8,["onClick"])]),_:2},1024)):P("",!0)])):t.dataIndex==="is_active"?(i(),S(U,{key:7,color:I.is_active?"green":"red"},{default:s(()=>[w(x(I.is_active?"فعال":"غیر فعال"),1)]),_:2},1032,["color"])):t.dataIndex==="is_pre_order"?(i(),S(U,{key:8,color:I.is_pre_order?"blue":""},{default:s(()=>[w(x(I.is_pre_order?"بله":"خیر"),1)]),_:2},1032,["color"])):P("",!0)]),_:1},8,["data-source"])])):(i(),S(Se,{key:0,image:_(Te).PRESENTED_IMAGE_SIMPLE,description:"هنوز تنوعی برای این محصول ثبت نشده است."},{default:s(()=>[c("product.list.variants.add")?(i(),S(k,{key:0,onClick:e[5]||(e[5]=t=>O())},{icon:s(()=>[a(_(ge))]),default:s(()=>[e[35]||(e[35]=w(" افزودن اولین تنوع ",-1))]),_:1})):P("",!0)]),_:1},8,["image"]))])):P("",!0),l("section",Nt,[l("div",Et,[l("span",qt,[a(_(ie))]),l("div",null,[e[39]||(e[39]=l("h3",null,"گالری تصاویر",-1)),l("p",null,x(_(m).isSuperAdmin?"تصاویر جداگانه برای نمایش در سایت و اپلیکیشن موبایل":"تصاویر نمایش در اپلیکیشن موبایل"),1)])]),_(m).isSuperAdmin?(i(),d(j,{key:0},[a(b,{label:"گالری تصاویر سایت"},{default:s(()=>[a(Oe,{modelValue:D.value,"onUpdate:modelValue":e[6]||(e[6]=t=>D.value=t),purpose:"product.gallery",placeholder:"افزودن تصاویر گالری سایت"},null,8,["modelValue"])]),_:1}),e[40]||(e[40]=l("div",{class:"pf-divider"},null,-1))],64)):P("",!0),a(b,{label:"گالری تصاویر موبایل",class:"mb-0"},{default:s(()=>[a(Oe,{modelValue:H.value,"onUpdate:modelValue":e[7]||(e[7]=t=>H.value=t),purpose:"product.gallery_mobile",placeholder:"افزودن تصاویر گالری موبایل"},null,8,["modelValue"])]),_:1})])]),l("aside",Bt,[l("section",Dt,[l("div",Ft,[l("span",Tt,[a(_(xe))]),e[41]||(e[41]=l("div",null,[l("h3",null,"وضعیت نمایش"),l("p",null,"نمایش یا عدم نمایش محصول برای مشتریان")],-1))]),a(b,{label:"نمایش محصول",extra:p.is_active?"محصول برای مشتریان قابل مشاهده است":"محصول پنهان است",class:"mb-0"},{default:s(()=>[a(ae,{checked:p.is_active,"onUpdate:checked":e[8]||(e[8]=t=>p.is_active=t)},null,8,["checked"])]),_:1},8,["extra"])]),l("section",Ht,[l("div",Gt,[l("span",Wt,[a(_(ue))]),e[42]||(e[42]=l("div",null,[l("h3",null,"دسته‌بندی"),l("p",null,"دسته، برند، سینی و برچسب‌های محصول")],-1))]),a(b,{label:"دسته بندی"},{default:s(()=>[a(N,{value:p.category_id,"onUpdate:value":e[9]||(e[9]=t=>p.category_id=t),"allow-clear":"","show-search":"","option-filter-prop":"label",placeholder:"انتخاب کنید"},{default:s(()=>[(i(!0),d(j,null,W(Y.value,t=>(i(),S(L,{key:t.id,value:t.id,label:t.title},{default:s(()=>[w(x(t.title),1)]),_:2},1032,["value","label"]))),128))]),_:1},8,["value"])]),_:1}),a(b,{label:"برند"},{default:s(()=>[a(N,{value:p.brand_id,"onUpdate:value":e[10]||(e[10]=t=>p.brand_id=t),"allow-clear":"","show-search":"","option-filter-prop":"label",placeholder:"انتخاب کنید"},{default:s(()=>[(i(!0),d(j,null,W(X.value,t=>(i(),S(L,{key:t.id,value:t.id,label:t.title},{default:s(()=>[w(x(t.title),1)]),_:2},1032,["value","label"]))),128))]),_:1},8,["value"])]),_:1}),_(m).isSuperAdmin?(i(),S(b,{key:0,label:"سینی ها"},{default:s(()=>[a(N,{value:p.ciny_ids,"onUpdate:value":e[11]||(e[11]=t=>p.ciny_ids=t),mode:"multiple","allow-clear":"","option-filter-prop":"label",placeholder:"انتخاب کنید"},{default:s(()=>[(i(!0),d(j,null,W(ee.value,t=>(i(),S(L,{key:t.id,value:t.id,label:t.title},{default:s(()=>[w(x(t.title),1)]),_:2},1032,["value","label"]))),128))]),_:1},8,["value"])]),_:1})):P("",!0),a(b,{label:"برچسب ها",class:"mb-0"},{default:s(()=>[a(N,{value:p.tags,"onUpdate:value":e[12]||(e[12]=t=>p.tags=t),mode:"multiple","allow-clear":"","option-filter-prop":"label",placeholder:"انتخاب از فهرست برچسب‌ها",options:T.value.map(t=>({value:t,label:t}))},null,8,["value","options"])]),_:1})]),l("section",Jt,[l("div",Qt,[l("span",Xt,[a(_(re))]),e[43]||(e[43]=l("div",null,[l("h3",null,"تصویر شاخص"),l("p",null,"تصویر اصلی در لیست محصولات")],-1))]),l("div",Yt,[_(m).isSuperAdmin?(i(),S(b,{key:0,label:"سایت",class:"mb-0"},{default:s(()=>[a(ye,{modelValue:p.indicator_id,"onUpdate:modelValue":e[13]||(e[13]=t=>p.indicator_id=t),purpose:"product.indicator",placeholder:"تصویر شاخص"},null,8,["modelValue"])]),_:1})):P("",!0),a(b,{label:"موبایل",class:"mb-0"},{default:s(()=>[a(ye,{modelValue:p.mobile_pic,"onUpdate:modelValue":e[14]||(e[14]=t=>p.mobile_pic=t),purpose:"product.indicator_mobile",placeholder:"تصویر شاخص موبایل"},null,8,["modelValue"])]),_:1})])])])]),l("div",Zt,[l("span",Kt,[a(_(Ge)),e[44]||(e[44]=w(" تغییرات تنوع‌ها و تصاویر پس از «ثبت اطلاعات» ذخیره می‌شوند. ",-1))]),a(k,{onClick:ce},{default:s(()=>[...e[45]||(e[45]=[w("انصراف",-1)])]),_:1}),a(k,{type:"primary",class:"form-submit",loading:F.value,onClick:pe},{icon:s(()=>[a(_(oe))]),default:s(()=>[e[46]||(e[46]=w(" ثبت اطلاعات ",-1))]),_:1},8,["loading"])])]),_:1})]),_:1},8,["spinning"]),a(Ae,{open:n.value,"onUpdate:open":e[27]||(e[27]=t=>n.value=t),width:860,"wrap-class-name":"pf-variant-modal",footer:null,"destroy-on-close":!0,centered:""},{title:s(()=>[l("div",el,[l("div",tl,[a(_(be))]),l("div",ll,[l("h3",null,x(g.value===null?"افزودن تنوع جدید":"ویرایش تنوع"),1),e[47]||(e[47]=l("p",null,"مشخصات، قیمت‌گذاری و تصویر این تنوع را وارد کنید.",-1))])])]),default:s(()=>[a(ve,{layout:"vertical",class:"vmodal-form"},{default:s(()=>[l("div",al,[l("div",sl,[l("div",ol,[e[50]||(e[50]=l("div",{class:"vmodal-card__head"},"مشخصات اصلی",-1)),l("div",il,[a(b,{label:"عنوان تنوع",required:"",class:"vmodal-item"},{default:s(()=>[a(y,{value:o.title,"onUpdate:value":e[15]||(e[15]=t=>o.title=t),placeholder:"مثلاً: ۵ گرمی"},null,8,["value"])]),_:1}),a(b,{label:"وزن خام",class:"vmodal-item"},{default:s(()=>[a(te,{value:o.grams,"onUpdate:value":e[16]||(e[16]=t=>o.grams=t),class:"w-full",step:.001,"addon-after":"گرم",placeholder:"۰.۰۰۰"},null,8,["value"])]),_:1})]),l("div",nl,[a(b,{label:"تعداد موجودی",class:"vmodal-item"},{default:s(()=>[a(te,{value:o.qty,"onUpdate:value":e[17]||(e[17]=t=>o.qty=t),class:"w-full",min:0,placeholder:"۰"},null,8,["value"])]),_:1}),a(b,{label:"رنگ طلا",class:"vmodal-item"},{default:s(()=>[a(N,{value:o.color,"onUpdate:value":e[18]||(e[18]=t=>o.color=t),placeholder:"انتخاب رنگ","allow-clear":""},{default:s(()=>[(i(!0),d(j,null,W(Z.value,t=>(i(),S(L,{key:t.id,value:t.id},{default:s(()=>[l("div",dl,[l("span",{class:J(["color-opt__dot",`color-opt__dot--${t.id}`])},null,2),l("span",null,x(t.title),1)])]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1})]),l("div",rl,[l("label",ul,[e[48]||(e[48]=l("span",{class:"vmodal-switch-label"},"فعال برای فروش",-1)),a(ae,{checked:o.is_active,"onUpdate:checked":e[19]||(e[19]=t=>o.is_active=t),size:"small"},null,8,["checked"])]),l("label",cl,[e[49]||(e[49]=l("span",{class:"vmodal-switch-label"},"پیش‌سفارش",-1)),a(ae,{checked:o.is_pre_order,"onUpdate:checked":e[20]||(e[20]=t=>o.is_pre_order=t),size:"small"},null,8,["checked"])])])]),l("div",pl,[e[51]||(e[51]=l("div",{class:"vmodal-card__head"},"اجرت و قیمت‌گذاری",-1)),l("div",_l,[a(b,{label:"اجرت درصدی",class:"vmodal-item"},{default:s(()=>[a(te,{value:o.percentage_pay,"onUpdate:value":e[21]||(e[21]=t=>o.percentage_pay=t),class:"w-full",step:.1,"addon-after":"٪",placeholder:"۰"},null,8,["value"])]),_:1}),a(b,{label:"اجرت ریالی",class:"vmodal-item"},{default:s(()=>[a(te,{value:o.rial_pay,"onUpdate:value":e[22]||(e[22]=t=>o.rial_pay=t),class:"w-full",step:5e4,"addon-after":"ریال",placeholder:"۰",formatter:t=>t?`${t}`.replace(/\B(?=(\d{3})+(?!\d))/g,","):"",parser:t=>t?t.replace(/,/g,""):""},null,8,["value","formatter","parser"])]),_:1})])])]),l("div",vl,[l("div",ml,[e[53]||(e[53]=l("div",{class:"vmodal-card__head"},"تصویر اختصاصی تنوع",-1)),G.value.length?(i(),d("div",fl,[l("button",{type:"button",class:J(["vmodal-picker__item",{"is-active":!o.image_id}]),title:"بدون تصویر",onClick:e[23]||(e[23]=t=>C(null))},[a(_(ie)),e[52]||(e[52]=l("span",null,"بدون عکس",-1))],2),(i(!0),d(j,null,W(G.value,t=>(i(),d("button",{key:t.id,type:"button",class:J(["vmodal-picker__item",{"is-active":o.image_id===t.id}]),onClick:I=>C(t)},[l("img",{src:t.url,alt:""},null,8,yl),o.image_id===t.id?(i(),d("div",bl,[a(_(oe))])):P("",!0)],10,gl))),128))])):(i(),d("div",hl," تصویری در گالری ثبت نشده است (می‌توانید در بخش گالری محصول تصویر بارگذاری کنید). "))]),l("div",kl,[e[54]||(e[54]=l("div",{class:"vmodal-card__head"},"توضیحات تکمیلی",-1)),a(b,{label:"توضیح مختصر",class:"vmodal-item"},{default:s(()=>[a(y,{value:o.details,"onUpdate:value":e[24]||(e[24]=t=>o.details=t),placeholder:"مثلاً: طراحی مات با تراش برلیان"},null,8,["value"])]),_:1}),a(b,{label:"توضیحات کامل",class:"vmodal-item mb-0"},{default:s(()=>[a(E,{value:o.description,"onUpdate:value":e[25]||(e[25]=t=>o.description=t),style:{height:"95px","min-height":"95px","max-height":"95px",resize:"none"},placeholder:"ویژگی‌های خاص این تنوع..."},null,8,["value"])]),_:1})])])]),l("div",wl,[a(k,{class:"vmodal-footer__cancel",onClick:e[26]||(e[26]=t=>n.value=!1)},{default:s(()=>[...e[55]||(e[55]=[w(" انصراف ",-1)])]),_:1}),a(k,{type:"primary",class:"vmodal-footer__submit",onClick:le},{icon:s(()=>[a(_(oe))]),default:s(()=>[w(" "+x(g.value===null?"افزودن تنوع":"ذخیره تغییرات"),1)]),_:1})])]),_:1})]),_:1},8,["open"])])}}}),Il=Ce(Ol,[["__scopeId","data-v-babe245a"]]);export{Il as default}; diff --git a/apps/admin-panel/dist/assets/AddWorkshop-BCAZal60.js b/apps/admin-panel/dist/assets/AddWorkshop-BCAZal60.js deleted file mode 100644 index d6f73d6..0000000 --- a/apps/admin-panel/dist/assets/AddWorkshop-BCAZal60.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as o}from"./AddWorkshop.vue_vue_type_script_setup_true_lang-CeG9w0ns.js";import"./index-C9T3Vski.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-Du4lPDHl.js";export{o as default}; diff --git a/apps/admin-panel/dist/assets/AddWorkshop-w6-wM1qw.js b/apps/admin-panel/dist/assets/AddWorkshop-w6-wM1qw.js new file mode 100644 index 0000000..08ed60a --- /dev/null +++ b/apps/admin-panel/dist/assets/AddWorkshop-w6-wM1qw.js @@ -0,0 +1 @@ +import{_ as o}from"./AddWorkshop.vue_vue_type_script_setup_true_lang-CzFwzleM.js";import"./index-CuIWfDbM.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-DXuLuiBZ.js";export{o as default}; diff --git a/apps/admin-panel/dist/assets/AddWorkshop.vue_vue_type_script_setup_true_lang-CeG9w0ns.js b/apps/admin-panel/dist/assets/AddWorkshop.vue_vue_type_script_setup_true_lang-CzFwzleM.js similarity index 97% rename from apps/admin-panel/dist/assets/AddWorkshop.vue_vue_type_script_setup_true_lang-CeG9w0ns.js rename to apps/admin-panel/dist/assets/AddWorkshop.vue_vue_type_script_setup_true_lang-CzFwzleM.js index 07f1463..9fe0b50 100644 --- a/apps/admin-panel/dist/assets/AddWorkshop.vue_vue_type_script_setup_true_lang-CeG9w0ns.js +++ b/apps/admin-panel/dist/assets/AddWorkshop.vue_vue_type_script_setup_true_lang-CzFwzleM.js @@ -1 +1 @@ -import{d as N,x as O,y as v,a as b,w as n,h as g,k as S,m as V,z as y,r as p,o as U,p as x,c as o,f as A,H as E,G as c,l as G}from"./index-C9T3Vski.js";import{_ as H}from"./BaseFormModal.vue_vue_type_style_index_0_lang-Du4lPDHl.js";const T={class:"grid-3"},W={class:"grid-3"},F=N({__name:"AddWorkshop",props:{open:{type:Boolean},id:{}},emits:["update:open","success"],setup(f,{emit:R}){const h=f,w=R,_=h.open!==void 0,B=S(),C=G(),d=_?h.id:B.params.id,i=V(!1),e=y({workshop_name:"",workshop_phone:"",workshop_address:"",user_fname:"",user_lname:"",user_phone:""}),u=y({});async function m(){var t,a;if(Object.keys(u).forEach(l=>delete u[l]),e.workshop_name||(u.workshop_name="لطفا مقدار را وارد کنید"),(e.user_fname||e.user_lname)&&!e.user_phone&&(u.user_phone="موبایل سرپرست کارگاه الزامی است"),!Object.keys(u).length)try{i.value=!0,d?await v.put(`workshop/${d}`,e):await v.post("workshop",e),c.info("اطلاعات با موفقیت به ثبت رسید."),_?(w("success"),w("update:open",!1)):C.push("/workshop/list")}catch(l){c.error(((a=(t=l==null?void 0:l.response)==null?void 0:t.data)==null?void 0:a.message)??"خطا در ثبت اطلاعات.")}finally{i.value=!1}}return O(async()=>{if(d)try{const{data:t}=await v.get(`workshop/${d}`);Object.assign(e,{workshop_name:t.workshop_name??t.name??"",workshop_phone:t.workshop_phone??t.phone??"",workshop_address:t.workshop_address??t.address??"",user_fname:t.user_fname??"",user_lname:t.user_lname??"",user_phone:t.user_phone??""})}catch(t){console.log(t)}}),(t,a)=>{const l=p("a-input"),r=p("a-form-item"),k=p("a-textarea"),$=p("a-button"),j=p("a-card"),z=p("a-form"),M=p("a-spin");return _?(U(),b(H,{key:0,open:!!f.open,id:g(d),"add-title":"افزودن کارگاه","edit-title":"ویرایش کارگاه",loading:i.value,submitting:i.value,width:"lg","onUpdate:open":a[6]||(a[6]=s=>t.$emit("update:open",s)),onSubmit:m},{default:n(()=>[x("div",T,[o(r,{label:"نام کارگاه","validate-status":u.workshop_name?"error":"",help:u.workshop_name},{default:n(()=>[o(l,{value:e.workshop_name,"onUpdate:value":a[0]||(a[0]=s=>e.workshop_name=s)},null,8,["value"])]),_:1},8,["validate-status","help"]),o(r,{label:"تلفن کارگاه"},{default:n(()=>[o(l,{value:e.workshop_phone,"onUpdate:value":a[1]||(a[1]=s=>e.workshop_phone=s)},null,8,["value"])]),_:1}),o(r,{label:"نام سرپرست کارگاه"},{default:n(()=>[o(l,{value:e.user_fname,"onUpdate:value":a[2]||(a[2]=s=>e.user_fname=s)},null,8,["value"])]),_:1}),o(r,{label:"نام خانوادگی سرپرست کارگاه"},{default:n(()=>[o(l,{value:e.user_lname,"onUpdate:value":a[3]||(a[3]=s=>e.user_lname=s)},null,8,["value"])]),_:1}),o(r,{label:"موبایل سرپرست کارگاه","validate-status":u.user_phone?"error":"",help:u.user_phone},{default:n(()=>[o(l,{value:e.user_phone,"onUpdate:value":a[4]||(a[4]=s=>e.user_phone=s)},null,8,["value"])]),_:1},8,["validate-status","help"])]),o(r,{label:"آدرس"},{default:n(()=>[o(k,{value:e.workshop_address,"onUpdate:value":a[5]||(a[5]=s=>e.workshop_address=s),"auto-size":{minRows:2,maxRows:5}},null,8,["value"])]),_:1})]),_:1},8,["open","id","loading","submitting"])):(U(),b(M,{key:1,spinning:i.value},{default:n(()=>[o(z,{layout:"vertical",onSubmit:E(m,["prevent"])},{default:n(()=>[o(j,{title:g(d)?"ویرایش کارگاه":"افزودن کارگاه",class:"mb-base page-card"},{default:n(()=>[x("div",W,[o(r,{label:"نام کارگاه","validate-status":u.workshop_name?"error":"",help:u.workshop_name},{default:n(()=>[o(l,{value:e.workshop_name,"onUpdate:value":a[7]||(a[7]=s=>e.workshop_name=s)},null,8,["value"])]),_:1},8,["validate-status","help"]),o(r,{label:"تلفن کارگاه"},{default:n(()=>[o(l,{value:e.workshop_phone,"onUpdate:value":a[8]||(a[8]=s=>e.workshop_phone=s)},null,8,["value"])]),_:1}),o(r,{label:"نام سرپرست کارگاه"},{default:n(()=>[o(l,{value:e.user_fname,"onUpdate:value":a[9]||(a[9]=s=>e.user_fname=s)},null,8,["value"])]),_:1}),o(r,{label:"نام خانوادگی سرپرست کارگاه"},{default:n(()=>[o(l,{value:e.user_lname,"onUpdate:value":a[10]||(a[10]=s=>e.user_lname=s)},null,8,["value"])]),_:1}),o(r,{label:"موبایل سرپرست کارگاه","validate-status":u.user_phone?"error":"",help:u.user_phone},{default:n(()=>[o(l,{value:e.user_phone,"onUpdate:value":a[11]||(a[11]=s=>e.user_phone=s)},null,8,["value"])]),_:1},8,["validate-status","help"])]),o(r,{label:"آدرس"},{default:n(()=>[o(k,{value:e.workshop_address,"onUpdate:value":a[12]||(a[12]=s=>e.workshop_address=s),"auto-size":{minRows:2,maxRows:5}},null,8,["value"])]),_:1}),o($,{type:"primary",class:"form-submit",onClick:m},{default:n(()=>[...a[13]||(a[13]=[A("ثبت اطلاعات",-1)])]),_:1})]),_:1},8,["title"])]),_:1})]),_:1},8,["spinning"]))}}});export{F as _}; +import{d as N,x as O,y as v,a as b,w as n,h as g,k as S,m as V,z as y,r as p,o as U,p as x,c as o,f as A,H as E,G as c,l as G}from"./index-CuIWfDbM.js";import{_ as H}from"./BaseFormModal.vue_vue_type_style_index_0_lang-DXuLuiBZ.js";const T={class:"grid-3"},W={class:"grid-3"},F=N({__name:"AddWorkshop",props:{open:{type:Boolean},id:{}},emits:["update:open","success"],setup(f,{emit:R}){const h=f,w=R,_=h.open!==void 0,B=S(),C=G(),d=_?h.id:B.params.id,i=V(!1),e=y({workshop_name:"",workshop_phone:"",workshop_address:"",user_fname:"",user_lname:"",user_phone:""}),u=y({});async function m(){var t,a;if(Object.keys(u).forEach(l=>delete u[l]),e.workshop_name||(u.workshop_name="لطفا مقدار را وارد کنید"),(e.user_fname||e.user_lname)&&!e.user_phone&&(u.user_phone="موبایل سرپرست کارگاه الزامی است"),!Object.keys(u).length)try{i.value=!0,d?await v.put(`workshop/${d}`,e):await v.post("workshop",e),c.info("اطلاعات با موفقیت به ثبت رسید."),_?(w("success"),w("update:open",!1)):C.push("/workshop/list")}catch(l){c.error(((a=(t=l==null?void 0:l.response)==null?void 0:t.data)==null?void 0:a.message)??"خطا در ثبت اطلاعات.")}finally{i.value=!1}}return O(async()=>{if(d)try{const{data:t}=await v.get(`workshop/${d}`);Object.assign(e,{workshop_name:t.workshop_name??t.name??"",workshop_phone:t.workshop_phone??t.phone??"",workshop_address:t.workshop_address??t.address??"",user_fname:t.user_fname??"",user_lname:t.user_lname??"",user_phone:t.user_phone??""})}catch(t){console.log(t)}}),(t,a)=>{const l=p("a-input"),r=p("a-form-item"),k=p("a-textarea"),$=p("a-button"),j=p("a-card"),z=p("a-form"),M=p("a-spin");return _?(U(),b(H,{key:0,open:!!f.open,id:g(d),"add-title":"افزودن کارگاه","edit-title":"ویرایش کارگاه",loading:i.value,submitting:i.value,width:"lg","onUpdate:open":a[6]||(a[6]=s=>t.$emit("update:open",s)),onSubmit:m},{default:n(()=>[x("div",T,[o(r,{label:"نام کارگاه","validate-status":u.workshop_name?"error":"",help:u.workshop_name},{default:n(()=>[o(l,{value:e.workshop_name,"onUpdate:value":a[0]||(a[0]=s=>e.workshop_name=s)},null,8,["value"])]),_:1},8,["validate-status","help"]),o(r,{label:"تلفن کارگاه"},{default:n(()=>[o(l,{value:e.workshop_phone,"onUpdate:value":a[1]||(a[1]=s=>e.workshop_phone=s)},null,8,["value"])]),_:1}),o(r,{label:"نام سرپرست کارگاه"},{default:n(()=>[o(l,{value:e.user_fname,"onUpdate:value":a[2]||(a[2]=s=>e.user_fname=s)},null,8,["value"])]),_:1}),o(r,{label:"نام خانوادگی سرپرست کارگاه"},{default:n(()=>[o(l,{value:e.user_lname,"onUpdate:value":a[3]||(a[3]=s=>e.user_lname=s)},null,8,["value"])]),_:1}),o(r,{label:"موبایل سرپرست کارگاه","validate-status":u.user_phone?"error":"",help:u.user_phone},{default:n(()=>[o(l,{value:e.user_phone,"onUpdate:value":a[4]||(a[4]=s=>e.user_phone=s)},null,8,["value"])]),_:1},8,["validate-status","help"])]),o(r,{label:"آدرس"},{default:n(()=>[o(k,{value:e.workshop_address,"onUpdate:value":a[5]||(a[5]=s=>e.workshop_address=s),"auto-size":{minRows:2,maxRows:5}},null,8,["value"])]),_:1})]),_:1},8,["open","id","loading","submitting"])):(U(),b(M,{key:1,spinning:i.value},{default:n(()=>[o(z,{layout:"vertical",onSubmit:E(m,["prevent"])},{default:n(()=>[o(j,{title:g(d)?"ویرایش کارگاه":"افزودن کارگاه",class:"mb-base page-card"},{default:n(()=>[x("div",W,[o(r,{label:"نام کارگاه","validate-status":u.workshop_name?"error":"",help:u.workshop_name},{default:n(()=>[o(l,{value:e.workshop_name,"onUpdate:value":a[7]||(a[7]=s=>e.workshop_name=s)},null,8,["value"])]),_:1},8,["validate-status","help"]),o(r,{label:"تلفن کارگاه"},{default:n(()=>[o(l,{value:e.workshop_phone,"onUpdate:value":a[8]||(a[8]=s=>e.workshop_phone=s)},null,8,["value"])]),_:1}),o(r,{label:"نام سرپرست کارگاه"},{default:n(()=>[o(l,{value:e.user_fname,"onUpdate:value":a[9]||(a[9]=s=>e.user_fname=s)},null,8,["value"])]),_:1}),o(r,{label:"نام خانوادگی سرپرست کارگاه"},{default:n(()=>[o(l,{value:e.user_lname,"onUpdate:value":a[10]||(a[10]=s=>e.user_lname=s)},null,8,["value"])]),_:1}),o(r,{label:"موبایل سرپرست کارگاه","validate-status":u.user_phone?"error":"",help:u.user_phone},{default:n(()=>[o(l,{value:e.user_phone,"onUpdate:value":a[11]||(a[11]=s=>e.user_phone=s)},null,8,["value"])]),_:1},8,["validate-status","help"])]),o(r,{label:"آدرس"},{default:n(()=>[o(k,{value:e.workshop_address,"onUpdate:value":a[12]||(a[12]=s=>e.workshop_address=s),"auto-size":{minRows:2,maxRows:5}},null,8,["value"])]),_:1}),o($,{type:"primary",class:"form-submit",onClick:m},{default:n(()=>[...a[13]||(a[13]=[A("ثبت اطلاعات",-1)])]),_:1})]),_:1},8,["title"])]),_:1})]),_:1},8,["spinning"]))}}});export{F as _}; diff --git a/apps/admin-panel/dist/assets/AgentDetail-I4vedLK5.js b/apps/admin-panel/dist/assets/AgentDetail-BKfKoisk.js similarity index 96% rename from apps/admin-panel/dist/assets/AgentDetail-I4vedLK5.js rename to apps/admin-panel/dist/assets/AgentDetail-BKfKoisk.js index 6b43bee..1df0295 100644 --- a/apps/admin-panel/dist/assets/AgentDetail-I4vedLK5.js +++ b/apps/admin-panel/dist/assets/AgentDetail-BKfKoisk.js @@ -1 +1 @@ -import{d as D,x as S,y as A,a as b,w as a,k as F,m as y,r as d,o as i,c as l,f as n,t as s,p as E,b as p,F as f,h as I,i as k,_ as M}from"./index-C9T3Vski.js";import{j as h}from"./filters-D6Nzbpog.js";import"./index-m6pCHaEa.js";const R={class:"stats mt-4"},T=D({__name:"AgentDetail",setup($){const j=F().params.id,m=y(!1),o=y(void 0),C=[{title:"نام",dataIndex:"name"},{title:"موبایل",dataIndex:"mobile"},{title:"شهر",dataIndex:"city"},{title:"نوع",dataIndex:"type_str"},{title:"وضعیت",dataIndex:"active"},{title:"تاریخ ثبت",dataIndex:"caj"}],w=[{title:"شماره سفارش",dataIndex:"name"},{title:"مشتری",dataIndex:"customer"},{title:"وزن",dataIndex:"w"},{title:"وضعیت",dataIndex:"status"},{title:"تاریخ",dataIndex:"caj"}];return S(async()=>{try{m.value=!0;const{data:_}=await A.get(`admin/customers-omde/reagent/${j}`);o.value=_}catch(_){console.log(_)}finally{m.value=!1}}),(_,G)=>{const c=d("a-descriptions-item"),u=d("a-tag"),z=d("a-descriptions"),B=d("a-card"),v=d("a-table"),x=d("a-tab-pane"),N=d("a-tabs"),V=d("a-spin");return i(),b(V,{spinning:m.value},{default:a(()=>[l(B,{title:"مشاهده اطلاعات کارشناس فروش",class:"page-card"},{default:a(()=>[l(z,{bordered:"",size:"small",column:{xxl:3,xl:3,lg:3,md:2,sm:2,xs:1}},{default:a(()=>[l(c,{label:"نام"},{default:a(()=>{var e;return[n(s(((e=o.value)==null?void 0:e.name)??"-"),1)]}),_:1}),l(c,{label:"موبایل"},{default:a(()=>{var e;return[n(s(((e=o.value)==null?void 0:e.mobile)??"-"),1)]}),_:1}),l(c,{label:"شعبه"},{default:a(()=>{var e,t;return[n(s(((t=(e=o.value)==null?void 0:e.branch)==null?void 0:t.name)??"-"),1)]}),_:1}),l(c,{label:"درصد کمیسیون"},{default:a(()=>{var e;return[n(s(((e=o.value)==null?void 0:e.percent)??"-"),1)]}),_:1}),l(c,{label:"وضعیت"},{default:a(()=>{var e;return[l(u,{color:((e=o.value)==null?void 0:e.active)===1?"green":"red"},{default:a(()=>{var t;return[n(s(((t=o.value)==null?void 0:t.active)===1?"فعال":"غیر فعال"),1)]}),_:1},8,["color"])]}),_:1}),l(c,{label:"میزان فروش (گرم)"},{default:a(()=>{var e;return[n(s(((e=o.value)==null?void 0:e.grams_sell)??0),1)]}),_:1})]),_:1}),E("div",R,[l(u,{color:"blue"},{default:a(()=>{var e,t;return[n("مشتریان معرفی‌شده: "+s(((t=(e=o.value)==null?void 0:e.referred_customers)==null?void 0:t.length)??0),1)]}),_:1}),l(u,{color:"green"},{default:a(()=>{var e,t;return[n("سفارش‌های ثبت‌شده: "+s(((t=(e=o.value)==null?void 0:e.orders)==null?void 0:t.length)??0),1)]}),_:1})])]),_:1}),l(N,{class:"mt-4 detail-tabs","default-active-key":"referred"},{default:a(()=>[l(x,{key:"referred",tab:"مشتریان معرفی‌شده"},{default:a(()=>{var e;return[l(v,{size:"small","data-source":(e=o.value)==null?void 0:e.referred_customers,columns:C,pagination:{pageSize:10},"row-key":"id"},{bodyCell:a(({column:t,record:r})=>{var g;return[t.dataIndex==="active"?(i(),b(u,{key:0,color:r.active===1?"green":"red"},{default:a(()=>[n(s(r.active===1?"فعال":"غیر فعال"),1)]),_:2},1032,["color"])):t.dataIndex==="city"?(i(),p(f,{key:1},[n(s(((g=r.city)==null?void 0:g.title)??"-"),1)],64)):t.dataIndex==="caj"?(i(),p(f,{key:2},[n(s(I(h)(r.caj)),1)],64)):k("",!0)]}),_:1},8,["data-source"])]}),_:1}),l(x,{key:"orders",tab:"سفارش‌های مشتریان"},{default:a(()=>{var e;return[l(v,{size:"small","data-source":(e=o.value)==null?void 0:e.orders,columns:w,pagination:{pageSize:10},"row-key":"id"},{bodyCell:a(({column:t,record:r})=>[t.dataIndex==="caj"?(i(),p(f,{key:0},[n(s(I(h)(r.caj)),1)],64)):k("",!0)]),_:1},8,["data-source"])]}),_:1})]),_:1})]),_:1},8,["spinning"])}}}),L=M(T,[["__scopeId","data-v-eef9d79c"]]);export{L as default}; +import{d as D,x as S,y as A,a as b,w as a,k as F,m as y,r as d,o as i,c as l,f as n,t as s,p as E,b as p,F as f,h as I,i as k,_ as M}from"./index-CuIWfDbM.js";import{j as h}from"./filters-Cvt98RIq.js";import"./index-CPTngTRs.js";const R={class:"stats mt-4"},T=D({__name:"AgentDetail",setup($){const j=F().params.id,m=y(!1),o=y(void 0),C=[{title:"نام",dataIndex:"name"},{title:"موبایل",dataIndex:"mobile"},{title:"شهر",dataIndex:"city"},{title:"نوع",dataIndex:"type_str"},{title:"وضعیت",dataIndex:"active"},{title:"تاریخ ثبت",dataIndex:"caj"}],w=[{title:"شماره سفارش",dataIndex:"name"},{title:"مشتری",dataIndex:"customer"},{title:"وزن",dataIndex:"w"},{title:"وضعیت",dataIndex:"status"},{title:"تاریخ",dataIndex:"caj"}];return S(async()=>{try{m.value=!0;const{data:_}=await A.get(`admin/customers-omde/reagent/${j}`);o.value=_}catch(_){console.log(_)}finally{m.value=!1}}),(_,G)=>{const c=d("a-descriptions-item"),u=d("a-tag"),z=d("a-descriptions"),B=d("a-card"),v=d("a-table"),x=d("a-tab-pane"),N=d("a-tabs"),V=d("a-spin");return i(),b(V,{spinning:m.value},{default:a(()=>[l(B,{title:"مشاهده اطلاعات کارشناس فروش",class:"page-card"},{default:a(()=>[l(z,{bordered:"",size:"small",column:{xxl:3,xl:3,lg:3,md:2,sm:2,xs:1}},{default:a(()=>[l(c,{label:"نام"},{default:a(()=>{var e;return[n(s(((e=o.value)==null?void 0:e.name)??"-"),1)]}),_:1}),l(c,{label:"موبایل"},{default:a(()=>{var e;return[n(s(((e=o.value)==null?void 0:e.mobile)??"-"),1)]}),_:1}),l(c,{label:"شعبه"},{default:a(()=>{var e,t;return[n(s(((t=(e=o.value)==null?void 0:e.branch)==null?void 0:t.name)??"-"),1)]}),_:1}),l(c,{label:"درصد کمیسیون"},{default:a(()=>{var e;return[n(s(((e=o.value)==null?void 0:e.percent)??"-"),1)]}),_:1}),l(c,{label:"وضعیت"},{default:a(()=>{var e;return[l(u,{color:((e=o.value)==null?void 0:e.active)===1?"green":"red"},{default:a(()=>{var t;return[n(s(((t=o.value)==null?void 0:t.active)===1?"فعال":"غیر فعال"),1)]}),_:1},8,["color"])]}),_:1}),l(c,{label:"میزان فروش (گرم)"},{default:a(()=>{var e;return[n(s(((e=o.value)==null?void 0:e.grams_sell)??0),1)]}),_:1})]),_:1}),E("div",R,[l(u,{color:"blue"},{default:a(()=>{var e,t;return[n("مشتریان معرفی‌شده: "+s(((t=(e=o.value)==null?void 0:e.referred_customers)==null?void 0:t.length)??0),1)]}),_:1}),l(u,{color:"green"},{default:a(()=>{var e,t;return[n("سفارش‌های ثبت‌شده: "+s(((t=(e=o.value)==null?void 0:e.orders)==null?void 0:t.length)??0),1)]}),_:1})])]),_:1}),l(N,{class:"mt-4 detail-tabs","default-active-key":"referred"},{default:a(()=>[l(x,{key:"referred",tab:"مشتریان معرفی‌شده"},{default:a(()=>{var e;return[l(v,{size:"small","data-source":(e=o.value)==null?void 0:e.referred_customers,columns:C,pagination:{pageSize:10},"row-key":"id"},{bodyCell:a(({column:t,record:r})=>{var g;return[t.dataIndex==="active"?(i(),b(u,{key:0,color:r.active===1?"green":"red"},{default:a(()=>[n(s(r.active===1?"فعال":"غیر فعال"),1)]),_:2},1032,["color"])):t.dataIndex==="city"?(i(),p(f,{key:1},[n(s(((g=r.city)==null?void 0:g.title)??"-"),1)],64)):t.dataIndex==="caj"?(i(),p(f,{key:2},[n(s(I(h)(r.caj)),1)],64)):k("",!0)]}),_:1},8,["data-source"])]}),_:1}),l(x,{key:"orders",tab:"سفارش‌های مشتریان"},{default:a(()=>{var e;return[l(v,{size:"small","data-source":(e=o.value)==null?void 0:e.orders,columns:w,pagination:{pageSize:10},"row-key":"id"},{bodyCell:a(({column:t,record:r})=>[t.dataIndex==="caj"?(i(),p(f,{key:0},[n(s(I(h)(r.caj)),1)],64)):k("",!0)]),_:1},8,["data-source"])]}),_:1})]),_:1})]),_:1},8,["spinning"])}}}),L=M(T,[["__scopeId","data-v-eef9d79c"]]);export{L as default}; diff --git a/apps/admin-panel/dist/assets/AppstoreOutlined-lwgIJvjh.js b/apps/admin-panel/dist/assets/AppstoreOutlined-6RRW3vIa.js similarity index 95% rename from apps/admin-panel/dist/assets/AppstoreOutlined-lwgIJvjh.js rename to apps/admin-panel/dist/assets/AppstoreOutlined-6RRW3vIa.js index 9ae18dc..52f1462 100644 --- a/apps/admin-panel/dist/assets/AppstoreOutlined-lwgIJvjh.js +++ b/apps/admin-panel/dist/assets/AppstoreOutlined-6RRW3vIa.js @@ -1 +1 @@ -import{c as i,I as u}from"./index-C9T3Vski.js";var l={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M464 144H160c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16zm-52 268H212V212h200v200zm452-268H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16zm-52 268H612V212h200v200zM464 544H160c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V560c0-8.8-7.2-16-16-16zm-52 268H212V612h200v200zm452-268H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V560c0-8.8-7.2-16-16-16zm-52 268H612V612h200v200z"}}]},name:"appstore",theme:"outlined"};function a(r){for(var t=1;t(s(),a(e,{title:t(o),model:t(r)},null,8,["title","model"]))}});export{j as default}; diff --git a/apps/admin-panel/dist/assets/BankerList-DME3NFhp.js b/apps/admin-panel/dist/assets/BankerList-DME3NFhp.js new file mode 100644 index 0000000..f584388 --- /dev/null +++ b/apps/admin-panel/dist/assets/BankerList-DME3NFhp.js @@ -0,0 +1 @@ +import{b as m,O as i,a as e}from"./OmdeCustomerList-hz8XVJlR.js";import{d as p,a,h as t,o as s}from"./index-CuIWfDbM.js";import"./index-CPTngTRs.js";import"./model-D_9omyEY.js";import"./filters-Cvt98RIq.js";import"./SettingOutlined-BehgjsnT.js";import"./ListPageHeader.vue_vue_type_script_setup_true_lang-ReVXBl8h.js";import"./AccountingSyncButton.vue_vue_type_script_setup_true_lang-BgmQz3-B.js";import"./bulkCustomer.vue_vue_type_script_setup_true_lang-DEtGbCJP.js";import"./select--BgT6D7O.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-DXuLuiBZ.js";import"./ImageUploadInput.vue_vue_type_script_setup_true_lang-Bb4hJ8Y2.js";import"./CityTreeSelect.vue_vue_type_script_setup_true_lang-Be--_CeP.js";import"./DateInput-CJzwI_r_.js";import"./UserOutlined-aZ-mQgwc.js";import"./ShopOutlined--nD1gJHu.js";import"./EnvironmentOutlined-BBvjB5-8.js";import"./PercentageOutlined-Cooaq8mh.js";import"./SafetyCertificateOutlined-DWQ69biy.js";import"./UnorderedListOutlined-DOoZELHj.js";const q=p({__name:"BankerList",setup(n){const o=i.banker.title,r=m("banker");return(l,c)=>(s(),a(e,{title:t(o),model:t(r)},null,8,["title","model"]))}});export{q as default}; diff --git a/apps/admin-panel/dist/assets/BaseFormModal.vue_vue_type_style_index_0_lang-Du4lPDHl.js b/apps/admin-panel/dist/assets/BaseFormModal.vue_vue_type_style_index_0_lang-DXuLuiBZ.js similarity index 94% rename from apps/admin-panel/dist/assets/BaseFormModal.vue_vue_type_style_index_0_lang-Du4lPDHl.js rename to apps/admin-panel/dist/assets/BaseFormModal.vue_vue_type_style_index_0_lang-DXuLuiBZ.js index cab2cdb..25f3300 100644 --- a/apps/admin-panel/dist/assets/BaseFormModal.vue_vue_type_style_index_0_lang-Du4lPDHl.js +++ b/apps/admin-panel/dist/assets/BaseFormModal.vue_vue_type_style_index_0_lang-DXuLuiBZ.js @@ -1 +1 @@ -import{d as r,a as g,w as a,r as o,o as k,c as i,a8 as w}from"./index-C9T3Vski.js";const b=r({__name:"BaseFormModal",props:{open:{type:Boolean},id:{default:void 0},addTitle:{},editTitle:{},loading:{type:Boolean,default:!1},submitting:{type:Boolean,default:!1},width:{default:"md"},okText:{default:"ثبت اطلاعات"}},emits:["update:open","submit","cancel"],setup(e,{emit:d}){const n=d,s={sm:520,md:720,lg:900,xl:1140};function m(t){n("update:open",t)}function c(){n("update:open",!1),n("cancel")}return(t,l)=>{const f=o("a-form"),u=o("a-spin"),p=o("a-modal");return k(),g(p,{open:e.open,title:e.id?e.editTitle:e.addTitle,width:s[e.width],"confirm-loading":e.submitting,"ok-text":e.okText,"cancel-text":"انصراف","mask-closable":!1,"wrap-class-name":"base-form-modal","onUpdate:open":m,onOk:l[0]||(l[0]=x=>t.$emit("submit")),onCancel:c},{default:a(()=>[i(u,{spinning:e.loading},{default:a(()=>[i(f,{layout:"vertical"},{default:a(()=>[w(t.$slots,"default")]),_:3})]),_:3},8,["spinning"])]),_:3},8,["open","title","width","confirm-loading","ok-text"])}}});export{b as _}; +import{d as r,a as g,w as a,r as o,o as k,c as i,a8 as w}from"./index-CuIWfDbM.js";const b=r({__name:"BaseFormModal",props:{open:{type:Boolean},id:{default:void 0},addTitle:{},editTitle:{},loading:{type:Boolean,default:!1},submitting:{type:Boolean,default:!1},width:{default:"md"},okText:{default:"ثبت اطلاعات"}},emits:["update:open","submit","cancel"],setup(e,{emit:d}){const n=d,s={sm:520,md:720,lg:900,xl:1140};function m(t){n("update:open",t)}function c(){n("update:open",!1),n("cancel")}return(t,l)=>{const f=o("a-form"),u=o("a-spin"),p=o("a-modal");return k(),g(p,{open:e.open,title:e.id?e.editTitle:e.addTitle,width:s[e.width],"confirm-loading":e.submitting,"ok-text":e.okText,"cancel-text":"انصراف","mask-closable":!1,"wrap-class-name":"base-form-modal","onUpdate:open":m,onOk:l[0]||(l[0]=x=>t.$emit("submit")),onCancel:c},{default:a(()=>[i(u,{spinning:e.loading},{default:a(()=>[i(f,{layout:"vertical"},{default:a(()=>[w(t.$slots,"default")]),_:3})]),_:3},8,["spinning"])]),_:3},8,["open","title","width","confirm-loading","ok-text"])}}});export{b as _}; diff --git a/apps/admin-panel/dist/assets/CameraOutlined-C6gLi8-9.js b/apps/admin-panel/dist/assets/CameraOutlined-Dx8LoT1m.js similarity index 94% rename from apps/admin-panel/dist/assets/CameraOutlined-C6gLi8-9.js rename to apps/admin-panel/dist/assets/CameraOutlined-Dx8LoT1m.js index f9585fa..83dbcb3 100644 --- a/apps/admin-panel/dist/assets/CameraOutlined-C6gLi8-9.js +++ b/apps/admin-panel/dist/assets/CameraOutlined-Dx8LoT1m.js @@ -1 +1 @@ -import{c as i,I as u}from"./index-C9T3Vski.js";var o={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M864 248H728l-32.4-90.8a32.07 32.07 0 00-30.2-21.2H358.6c-13.5 0-25.6 8.5-30.1 21.2L296 248H160c-44.2 0-80 35.8-80 80v456c0 44.2 35.8 80 80 80h704c44.2 0 80-35.8 80-80V328c0-44.2-35.8-80-80-80zm8 536c0 4.4-3.6 8-8 8H160c-4.4 0-8-3.6-8-8V328c0-4.4 3.6-8 8-8h186.7l17.1-47.8 22.9-64.2h250.5l22.9 64.2 17.1 47.8H864c4.4 0 8 3.6 8 8v456zM512 384c-88.4 0-160 71.6-160 160s71.6 160 160 160 160-71.6 160-160-71.6-160-160-160zm0 256c-53 0-96-43-96-96s43-96 96-96 96 43 96 96-43 96-96 96z"}}]},name:"camera",theme:"outlined"};function c(r){for(var e=1;e=0}async function f(){try{const{data:e}=await d.post("change/percent/count",{category_id:t.category_id,brand_id:t.brand_id});p.value=e.count}catch(e){console.log("e ==> ",e)}}async function L(){if(t.percent===void 0||t.percent===null){E.error("لطفا اجرت درصدی را وارد کنید");return}try{_.value=!0;const{data:e}=await d.post("change/all",{percent:t.percent,category_id:t.category_id,brand_id:t.brand_id});k.success({title:"تغییرات با موفقیت اعمال شد",okText:"بستن"}),p.value=e.updated}catch(e){k.success({title:"خطا در اعمال تغییرات"}),console.log(e)}finally{_.value=!1}}return $(async()=>{try{const[e,a]=await Promise.all([d.get("brand"),d.post("category")]);g.value=e.data,y.value=(a.data.rows??a.data).map(s=>({id:s.id,title:s.type_str?`${s.title} (${s.type_str}) `:s.title}))}catch(e){console.log(e)}f()}),(e,a)=>{const s=r("a-select-option"),w=r("a-select"),i=r("a-form-item"),M=r("a-input"),N=r("a-input-number"),T=r("a-button"),U=r("a-popconfirm"),V=r("a-form"),F=r("a-card");return c(),m("div",G,[n(F,{title:"تغییر درصد محصولات",class:"page-card"},{default:l(()=>[n(V,{layout:"vertical"},{default:l(()=>[D("div",S,[n(i,{label:"دسته بندی"},{default:l(()=>[n(w,{value:t.category_id,"onUpdate:value":a[0]||(a[0]=o=>t.category_id=o),"allow-clear":"","show-search":"",placeholder:"انتخاب کنید","filter-option":b,onChange:f},{default:l(()=>[(c(!0),m(h,null,C(y.value,o=>(c(),x(s,{key:o.id,value:o.id},{default:l(()=>[v(B(o.title),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1}),n(i,{label:"برند"},{default:l(()=>[n(w,{value:t.brand_id,"onUpdate:value":a[1]||(a[1]=o=>t.brand_id=o),"allow-clear":"","show-search":"",placeholder:"انتخاب کنید","filter-option":b,onChange:f},{default:l(()=>[(c(!0),m(h,null,C(g.value,o=>(c(),x(s,{key:o.id,value:o.id},{default:l(()=>[v(B(o.title),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1}),n(i,{label:"تعداد یافت شده"},{default:l(()=>[n(M,{value:p.value,disabled:""},null,8,["value"])]),_:1}),n(i,{label:"اجرت درصدی"},{default:l(()=>[n(N,{value:t.percent,"onUpdate:value":a[2]||(a[2]=o=>t.percent=o),class:"w-full",step:.1},null,8,["value"])]),_:1})]),n(U,{title:"آیا از اعمال تغییرات مطمئن هستید؟","ok-text":"بله","cancel-text":"خیر",onConfirm:L},{default:l(()=>[n(T,{type:"primary",class:"form-submit",loading:_.value},{default:l(()=>[...a[3]||(a[3]=[v("اعمال تغییرات",-1)])]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1})])}}});export{H as default}; diff --git a/apps/admin-panel/dist/assets/ChangePercent-D6cLdOBj.js b/apps/admin-panel/dist/assets/ChangePercent-D6cLdOBj.js deleted file mode 100644 index 3ce1163..0000000 --- a/apps/admin-panel/dist/assets/ChangePercent-D6cLdOBj.js +++ /dev/null @@ -1 +0,0 @@ -import{d as P,x as S,y as u,b as v,c as n,w as l,m as _,r as s,z as T,o as d,p as $,F as w,e as C,f as g,G as z,M as k,a as x,t as B}from"./index-C9T3Vski.js";const D={id:"page-user-list"},E={class:"grid-3"},q=P({__name:"ChangePercent",setup(G){const y=_([]),b=_([]),p=_("-"),f=_(!1),a=T({category_id:void 0,brand_id:void 0,percent:void 0});function h(t,e){var r,c;return String(((c=(r=e==null?void 0:e.children)==null?void 0:r[0])==null?void 0:c.children)??"").toLowerCase().indexOf(t.toLowerCase())>=0}async function m(){try{const{data:t}=await u.post("change/percent/count",{category_id:a.category_id,brand_id:a.brand_id});p.value=t.count}catch(t){console.log("e ==> ",t)}}async function L(){if(a.percent===void 0||a.percent===null){z.error("لطفا اجرت درصدی را وارد کنید");return}try{f.value=!0;const{data:t}=await u.post("change/all",{percent:a.percent,category_id:a.category_id,brand_id:a.brand_id});k.success({title:"تغییرات با موفقیت اعمال شد",okText:"بستن"}),p.value=t.updated}catch(t){k.success({title:"خطا در اعمال تغییرات"}),console.log(t)}finally{f.value=!1}}return S(async()=>{try{const[t,e]=await Promise.all([u.get("brand"),u.post("category")]);y.value=t.data,b.value=(e.data.rows??e.data).map(r=>({id:r.id,title:r.type_str?`${r.title} (${r.type_str}) `:r.title}))}catch(t){console.log(t)}m()}),(t,e)=>{const r=s("a-select-option"),c=s("a-select"),i=s("a-form-item"),M=s("a-input"),N=s("a-input-number"),U=s("a-button"),V=s("a-popconfirm"),F=s("a-form"),O=s("a-card");return d(),v("div",D,[n(O,{title:"تغییر درصد محصولات",class:"page-card"},{default:l(()=>[n(F,{layout:"vertical"},{default:l(()=>[$("div",E,[n(i,{label:"دسته بندی"},{default:l(()=>[n(c,{value:a.category_id,"onUpdate:value":e[0]||(e[0]=o=>a.category_id=o),"allow-clear":"","show-search":"",placeholder:"انتخاب کنید","filter-option":h,onChange:m},{default:l(()=>[(d(!0),v(w,null,C(b.value,o=>(d(),x(r,{key:o.id,value:o.id},{default:l(()=>[g(B(o.title),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1}),n(i,{label:"برند"},{default:l(()=>[n(c,{value:a.brand_id,"onUpdate:value":e[1]||(e[1]=o=>a.brand_id=o),"allow-clear":"","show-search":"",placeholder:"انتخاب کنید","filter-option":h,onChange:m},{default:l(()=>[(d(!0),v(w,null,C(y.value,o=>(d(),x(r,{key:o.id,value:o.id},{default:l(()=>[g(B(o.title),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1}),n(i,{label:"تعداد یافت شده"},{default:l(()=>[n(M,{value:p.value,disabled:""},null,8,["value"])]),_:1}),n(i,{label:"اجرت درصدی"},{default:l(()=>[n(N,{value:a.percent,"onUpdate:value":e[2]||(e[2]=o=>a.percent=o),class:"w-full",step:.1},null,8,["value"])]),_:1})]),n(V,{title:"آیا از اعمال تغییرات مطمئن هستید؟","ok-text":"بله","cancel-text":"خیر",onConfirm:L},{default:l(()=>[n(U,{type:"primary",class:"form-submit",loading:f.value},{default:l(()=>[...e[3]||(e[3]=[g("اعمال تغییرات",-1)])]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1})])}}});export{q as default}; diff --git a/apps/admin-panel/dist/assets/CityTreeSelect.vue_vue_type_script_setup_true_lang-82fzpZxR.js b/apps/admin-panel/dist/assets/CityTreeSelect.vue_vue_type_script_setup_true_lang-Be--_CeP.js similarity index 95% rename from apps/admin-panel/dist/assets/CityTreeSelect.vue_vue_type_script_setup_true_lang-82fzpZxR.js rename to apps/admin-panel/dist/assets/CityTreeSelect.vue_vue_type_script_setup_true_lang-Be--_CeP.js index be4d6cc..e8cc9b2 100644 --- a/apps/admin-panel/dist/assets/CityTreeSelect.vue_vue_type_script_setup_true_lang-82fzpZxR.js +++ b/apps/admin-panel/dist/assets/CityTreeSelect.vue_vue_type_script_setup_true_lang-Be--_CeP.js @@ -1 +1 @@ -import{d as m,o as k,a as w,s as u,r as _}from"./index-C9T3Vski.js";const p=" › ",g=m({__name:"CityTreeSelect",props:{value:{},cities:{},parentPicker:{type:Boolean},excludeId:{},placeholder:{}},emits:["update:value","change"],setup(o,{emit:h}){const c=o,r=h,d=u(()=>{const e=new Set(c.cities.map(n=>n.id)),l=new Map;for(const n of c.cities){const t=n.parent&&e.has(n.parent)&&n.parent!==n.id?n.parent:null;l.has(t)||l.set(t,[]),l.get(t).push(n)}const a=new Set,i=n=>(l.get(n)??[]).filter(t=>!a.has(t.id)&&!(c.parentPicker&&t.id===c.excludeId)).map(t=>(a.add(t.id),{id:t.id,title:t.title,children:i(t.id)}));return i(null)});function s(e,l,a=""){return e.flatMap(i=>{const n=[...l,i.title],t=n.join(p);return[{value:i.id,label:t,search:a?`${a}${p}${t}`:t},...s(i.children,n,a)]})}const v=u(()=>c.parentPicker?s(d.value,[]):d.value.map(e=>e.children.length?{key:e.id,label:e.title,options:s(e.children,[],e.title)}:{value:e.id,label:e.title,search:e.title}));function f(e){r("update:value",e??void 0),r("change",e??void 0)}return(e,l)=>{const a=_("a-select");return k(),w(a,{value:o.value??void 0,options:v.value,"show-search":"","allow-clear":"","option-filter-prop":"search",placeholder:o.placeholder??"شهر را انتخاب کنید",class:"w-full","onUpdate:value":f},null,8,["value","options","placeholder"])}}});export{g as _}; +import{d as m,o as k,a as w,s as u,r as _}from"./index-CuIWfDbM.js";const p=" › ",g=m({__name:"CityTreeSelect",props:{value:{},cities:{},parentPicker:{type:Boolean},excludeId:{},placeholder:{}},emits:["update:value","change"],setup(o,{emit:h}){const c=o,r=h,d=u(()=>{const e=new Set(c.cities.map(n=>n.id)),l=new Map;for(const n of c.cities){const t=n.parent&&e.has(n.parent)&&n.parent!==n.id?n.parent:null;l.has(t)||l.set(t,[]),l.get(t).push(n)}const a=new Set,i=n=>(l.get(n)??[]).filter(t=>!a.has(t.id)&&!(c.parentPicker&&t.id===c.excludeId)).map(t=>(a.add(t.id),{id:t.id,title:t.title,children:i(t.id)}));return i(null)});function s(e,l,a=""){return e.flatMap(i=>{const n=[...l,i.title],t=n.join(p);return[{value:i.id,label:t,search:a?`${a}${p}${t}`:t},...s(i.children,n,a)]})}const v=u(()=>c.parentPicker?s(d.value,[]):d.value.map(e=>e.children.length?{key:e.id,label:e.title,options:s(e.children,[],e.title)}:{value:e.id,label:e.title,search:e.title}));function f(e){r("update:value",e??void 0),r("change",e??void 0)}return(e,l)=>{const a=_("a-select");return k(),w(a,{value:o.value??void 0,options:v.value,"show-search":"","allow-clear":"","option-filter-prop":"search",placeholder:o.placeholder??"شهر را انتخاب کنید",class:"w-full","onUpdate:value":f},null,8,["value","options","placeholder"])}}});export{g as _}; diff --git a/apps/admin-panel/dist/assets/Comments-84or1_Dw.js b/apps/admin-panel/dist/assets/Comments-CWF3WkAj.js similarity index 91% rename from apps/admin-panel/dist/assets/Comments-84or1_Dw.js rename to apps/admin-panel/dist/assets/Comments-CWF3WkAj.js index 6856c2a..f2452b4 100644 --- a/apps/admin-panel/dist/assets/Comments-84or1_Dw.js +++ b/apps/admin-panel/dist/assets/Comments-CWF3WkAj.js @@ -1 +1 @@ -import{_ as F}from"./brand-icon-COpT6LnI.js";import{a as H,b as p,X as J}from"./model-B4TWAN58.js";import{_ as V}from"./TooltipBtn.vue_vue_type_script_setup_true_lang-4rxU9Kz6.js";import{u as z,d as K,b as N,c as m,w as o,r as u,o as i,h as C,p as a,a as d,i as y,f as c,t as w,Z as Q,G as _,m as S,s as X,j as W,y as B,_ as Y}from"./index-C9T3Vski.js";import{U as ee}from"./UserOutlined-Csu4xHRr.js";import"./filters-D6Nzbpog.js";import"./index-m6pCHaEa.js";import"./SettingOutlined-BizkfqvN.js";import"./icons-1fD-iiAA.js";import"./UnorderedListOutlined-Bl0oFRyr.js";import"./PercentageOutlined-CxUloK5J.js";import"./UserAddOutlined-BlPGjUCi.js";import"./CreditCardOutlined-BxTC_oHD.js";import"./AppstoreOutlined-lwgIJvjh.js";import"./TeamOutlined-j5HKaunb.js";import"./CameraOutlined-C6gLi8-9.js";function te(){const x=z(),r=new H("admin/comments/list","لیست دیدگاه ها");return r.add(new p("product_id","شناسه محصول").filterNumber().hidden()),r.add(new p("product.title","نام محصول").filterNumber().renderSlot("productName")),r.add(new p("customer.id","شناسه نویسنده دیدگاه").filterNumber().hidden()),r.add(new p("customer","نام نویسنده ").filterText().renderSlot("customer")),r.add(new p("reply","پاسخ").renderSlot("reply").noSort()),r.add(new p("sts","وضعیت").renderSlot("sts").noSort()),x.roles&&x.roles.includes("comment.state")&&r.add(new p("changeState","تغییر وضعیت").renderSlot("changeState").noSort()),r.add(new p("opt","عملیات").noSort().renderSlot("opt")),r}const oe={id:"page-user-list"},ne=["href"],se=["onClick"],le=["onClick"],ae={class:"flex"},me={key:0,class:"comments-list"},ie={class:"comment-item"},re={class:"img"},ue={class:"comment-body"},de={class:"time"},ce={class:"comment-item"},pe={class:"comment-body"},_e={key:0,class:"time"},ve=K({__name:"Comments",setup(x){const r=z(),v=n=>!!r.hasPermission(n),D=te(),h=S(null),l=S(void 0),k=S(!1),$=S(""),b=S(""),I=X(()=>{var n;return $.value!==(((n=l.value)==null?void 0:n.comment)??"")}),E=X(()=>{var n,e,s;return b.value!==(((s=(e=(n=l.value)==null?void 0:n.reply)==null?void 0:e[0])==null?void 0:s.comment)??"")});function L(n){var s,f;const e=String(((s=n.product)==null?void 0:s.title)??"").split(" ").join("-");return`${W.siteUrl}/product/${e}/${(f=n.product)==null?void 0:f.id}`}async function T(n,e){var s;try{await B.post("comment/sts",{id:n,sts:e}),_.info("تغییرات ثبت شد "),(s=h.value)==null||s.fetch()}catch{_.error("خطا در تغییر وضعیت")}}function O(n){var e,s;l.value=n,$.value=n.comment??"",b.value=((s=(e=n.reply)==null?void 0:e[0])==null?void 0:s.comment)??"",k.value=!0}async function P(n){var e;try{await B.delete(`comment/${n}`),_.info("دیدگاه حذف شد"),(e=h.value)==null||e.fetch()}catch{_.error("خطا در حذف")}}async function G(n){var e;try{await B.post("comment",{product_id:n.product_id,customer_id:n.customer_id,comment:b.value,reply_to:n.id}),_.info("تغییرات ثبت شد "),k.value=!1,(e=h.value)==null||e.fetch()}catch{_.error("خطا در ثبت تغییرات")}}return(n,e)=>{const s=u("a-tag"),f=u("a-menu-item"),M=u("a-menu"),Z=u("a-dropdown"),U=u("a-textarea"),j=u("a-form-item"),R=u("a-button"),q=u("a-modal"),A=u("a-card");return i(),N("div",oe,[m(A,{title:"لیست دیدگاه ها",class:"page-card"},{default:o(()=>[m(J,{ref_key:"tbl",ref:h,model:C(D),"mobile-cards":""},{customer:o(({text:t})=>[c(w(t&&t.fname&&t.lname?`${t.fname} ${t.lname}`:"بدون نام"),1)]),productName:o(({record:t})=>[a("a",{href:L(t),target:"_blank"},w(t.product.title),9,ne)]),sts:o(({text:t})=>[t==1?(i(),d(s,{key:0},{default:o(()=>[...e[6]||(e[6]=[c("در انتظار تایید",-1)])]),_:1})):t==2?(i(),d(s,{key:1,color:"green"},{default:o(()=>[...e[7]||(e[7]=[c("تایید شده",-1)])]),_:1})):(i(),d(s,{key:2,color:"red"},{default:o(()=>[...e[8]||(e[8]=[c("عدم تایید",-1)])]),_:1}))]),reply:o(({text:t})=>[t&&t.length>0&&t[0].comment!==null?(i(),d(s,{key:0,color:"green"},{default:o(()=>[...e[9]||(e[9]=[c(" پاسخ داده شده ",-1)])]),_:1})):(i(),d(s,{key:1},{default:o(()=>[...e[10]||(e[10]=[c("بدون پاسخ",-1)])]),_:1}))]),changeState:o(({record:t})=>[v("comment.state")?(i(),d(Z,{key:0},{overlay:o(()=>[m(M,null,{default:o(()=>[m(f,null,{default:o(()=>[a("div",{onClick:g=>t.sts!==2?T(t.id,2):C(_).error("حالت فعلی تایید می باشد")}," تایید ",8,se)]),_:2},1024),m(f,{class:"red"},{default:o(()=>[a("div",{onClick:g=>t.sts!==3?T(t.id,3):C(_).error("حالت فعلی عدم تایید می باشد")}," عدم تایید ",8,le)]),_:2},1024)]),_:2},1024)]),default:o(()=>[m(s,{style:{cursor:"pointer"},color:t.sts===1?"":t.sts===2?"green":t.sts===3?"red":"",onClick:e[0]||(e[0]=g=>g.preventDefault())},{default:o(()=>[c(w(t.sts===1?"در انتظار تایید":t.sts===2?"تایید":"عدم تایید")+" ",1),m(C(Q))]),_:2},1032,["color"])]),_:2},1024)):y("",!0)]),opt:o(({record:t})=>[a("div",ae,[v("comment.view")?(i(),d(V,{key:0,"icon-class":"w-5 h-5 text-primary",class:"mr-3",icon:"EyeIcon",title:"مشاهده دیدگاه",onClick:g=>O(t)},null,8,["onClick"])):y("",!0),v("comment.remove")?(i(),d(V,{key:1,"icon-class":"w-5 h-5 text-danger",class:"mr-3",icon:"TrashIcon","pop-title":"دیدگاه حذف شود؟",onClick:g=>P(t.id)},null,8,["onClick"])):y("",!0)])]),_:1},8,["model"]),m(q,{open:k.value,"onUpdate:open":e[5]||(e[5]=t=>k.value=t),title:"مشاهده دیدگاه",width:"80%","wrap-class-name":"detail-modal"},{footer:o(()=>[m(R,{onClick:e[4]||(e[4]=t=>k.value=!1)},{default:o(()=>[...e[14]||(e[14]=[c("بستن",-1)])]),_:1})]),default:o(()=>[l.value?(i(),N("div",me,[a("ul",null,[a("li",ie,[a("span",re,[m(C(ee),{style:{"font-size":"48px",color:"#1c2d56"}})]),a("div",ue,[a("h5",null,w(l.value.customer&&l.value.customer.fname&&l.value.customer.lname?`${l.value.customer.fname} ${l.value.customer.lname}`:"بدون نام"),1),a("span",de," ارسال شده در تاریخ : "+w(l.value.caj?String(l.value.caj).split("-")[0]:null),1),m(j,{style:{width:"100%"}},{default:o(()=>[m(U,{value:$.value,"onUpdate:value":e[1]||(e[1]=t=>$.value=t),disabled:!v("comment.view.edit"),"auto-size":{minRows:3,maxRows:5}},null,8,["value","disabled"])]),_:1})]),a("ul",null,[a("li",ce,[e[13]||(e[13]=a("img",{src:F,alt:"comment author",class:"img border"},null,-1)),a("div",pe,[e[12]||(e[12]=a("h5",null,"ادمین",-1)),l.value.reply&&l.value.reply[0]?(i(),N("span",_e," ارسال شده در تاریخ : "+w(l.value.reply[0].caj?String(l.value.reply[0].caj).split("-")[0]:""),1)):y("",!0),m(j,{style:{width:"100%"}},{default:o(()=>[m(U,{value:b.value,"onUpdate:value":e[2]||(e[2]=t=>b.value=t),disabled:!v("comment.view.edit"),"auto-size":{minRows:3,maxRows:5}},null,8,["value","disabled"])]),_:1}),(E.value||I.value)&&v("comment.view.edit")?(i(),d(R,{key:1,class:"mr-4",onClick:e[3]||(e[3]=t=>G(l.value))},{default:o(()=>[...e[11]||(e[11]=[c(" ثبت تغییرات ",-1)])]),_:1})):y("",!0)])])])])])])):y("",!0)]),_:1},8,["open"])]),_:1})])}}}),Re=Y(ve,[["__scopeId","data-v-a75e1991"]]);export{Re as default}; +import{_ as F}from"./brand-icon-COpT6LnI.js";import{a as H,b as p,X as J}from"./model-D_9omyEY.js";import{_ as V}from"./TooltipBtn.vue_vue_type_script_setup_true_lang-D0mVo7Ou.js";import{u as z,d as K,b as N,c as m,w as o,r as u,o as i,h as C,p as a,a as d,i as y,f as c,t as w,Z as Q,G as _,m as S,s as X,j as W,y as B,_ as Y}from"./index-CuIWfDbM.js";import{U as ee}from"./UserOutlined-aZ-mQgwc.js";import"./filters-Cvt98RIq.js";import"./index-CPTngTRs.js";import"./SettingOutlined-BehgjsnT.js";import"./icons-BWdsnUVP.js";import"./UnorderedListOutlined-DOoZELHj.js";import"./PercentageOutlined-Cooaq8mh.js";import"./UserAddOutlined-BBmLFe8z.js";import"./CreditCardOutlined-BRF7XcYB.js";import"./AppstoreOutlined-6RRW3vIa.js";import"./TeamOutlined-CqxRZks7.js";import"./CameraOutlined-Dx8LoT1m.js";function te(){const x=z(),r=new H("admin/comments/list","لیست دیدگاه ها");return r.add(new p("product_id","شناسه محصول").filterNumber().hidden()),r.add(new p("product.title","نام محصول").filterNumber().renderSlot("productName")),r.add(new p("customer.id","شناسه نویسنده دیدگاه").filterNumber().hidden()),r.add(new p("customer","نام نویسنده ").filterText().renderSlot("customer")),r.add(new p("reply","پاسخ").renderSlot("reply").noSort()),r.add(new p("sts","وضعیت").renderSlot("sts").noSort()),x.roles&&x.roles.includes("comment.state")&&r.add(new p("changeState","تغییر وضعیت").renderSlot("changeState").noSort()),r.add(new p("opt","عملیات").noSort().renderSlot("opt")),r}const oe={id:"page-user-list"},ne=["href"],se=["onClick"],le=["onClick"],ae={class:"flex"},me={key:0,class:"comments-list"},ie={class:"comment-item"},re={class:"img"},ue={class:"comment-body"},de={class:"time"},ce={class:"comment-item"},pe={class:"comment-body"},_e={key:0,class:"time"},ve=K({__name:"Comments",setup(x){const r=z(),v=n=>!!r.hasPermission(n),D=te(),h=S(null),l=S(void 0),k=S(!1),$=S(""),b=S(""),I=X(()=>{var n;return $.value!==(((n=l.value)==null?void 0:n.comment)??"")}),E=X(()=>{var n,e,s;return b.value!==(((s=(e=(n=l.value)==null?void 0:n.reply)==null?void 0:e[0])==null?void 0:s.comment)??"")});function L(n){var s,f;const e=String(((s=n.product)==null?void 0:s.title)??"").split(" ").join("-");return`${W.siteUrl}/product/${e}/${(f=n.product)==null?void 0:f.id}`}async function T(n,e){var s;try{await B.post("comment/sts",{id:n,sts:e}),_.info("تغییرات ثبت شد "),(s=h.value)==null||s.fetch()}catch{_.error("خطا در تغییر وضعیت")}}function O(n){var e,s;l.value=n,$.value=n.comment??"",b.value=((s=(e=n.reply)==null?void 0:e[0])==null?void 0:s.comment)??"",k.value=!0}async function P(n){var e;try{await B.delete(`comment/${n}`),_.info("دیدگاه حذف شد"),(e=h.value)==null||e.fetch()}catch{_.error("خطا در حذف")}}async function G(n){var e;try{await B.post("comment",{product_id:n.product_id,customer_id:n.customer_id,comment:b.value,reply_to:n.id}),_.info("تغییرات ثبت شد "),k.value=!1,(e=h.value)==null||e.fetch()}catch{_.error("خطا در ثبت تغییرات")}}return(n,e)=>{const s=u("a-tag"),f=u("a-menu-item"),M=u("a-menu"),Z=u("a-dropdown"),U=u("a-textarea"),j=u("a-form-item"),R=u("a-button"),q=u("a-modal"),A=u("a-card");return i(),N("div",oe,[m(A,{title:"لیست دیدگاه ها",class:"page-card"},{default:o(()=>[m(J,{ref_key:"tbl",ref:h,model:C(D),"mobile-cards":""},{customer:o(({text:t})=>[c(w(t&&t.fname&&t.lname?`${t.fname} ${t.lname}`:"بدون نام"),1)]),productName:o(({record:t})=>[a("a",{href:L(t),target:"_blank"},w(t.product.title),9,ne)]),sts:o(({text:t})=>[t==1?(i(),d(s,{key:0},{default:o(()=>[...e[6]||(e[6]=[c("در انتظار تایید",-1)])]),_:1})):t==2?(i(),d(s,{key:1,color:"green"},{default:o(()=>[...e[7]||(e[7]=[c("تایید شده",-1)])]),_:1})):(i(),d(s,{key:2,color:"red"},{default:o(()=>[...e[8]||(e[8]=[c("عدم تایید",-1)])]),_:1}))]),reply:o(({text:t})=>[t&&t.length>0&&t[0].comment!==null?(i(),d(s,{key:0,color:"green"},{default:o(()=>[...e[9]||(e[9]=[c(" پاسخ داده شده ",-1)])]),_:1})):(i(),d(s,{key:1},{default:o(()=>[...e[10]||(e[10]=[c("بدون پاسخ",-1)])]),_:1}))]),changeState:o(({record:t})=>[v("comment.state")?(i(),d(Z,{key:0},{overlay:o(()=>[m(M,null,{default:o(()=>[m(f,null,{default:o(()=>[a("div",{onClick:g=>t.sts!==2?T(t.id,2):C(_).error("حالت فعلی تایید می باشد")}," تایید ",8,se)]),_:2},1024),m(f,{class:"red"},{default:o(()=>[a("div",{onClick:g=>t.sts!==3?T(t.id,3):C(_).error("حالت فعلی عدم تایید می باشد")}," عدم تایید ",8,le)]),_:2},1024)]),_:2},1024)]),default:o(()=>[m(s,{style:{cursor:"pointer"},color:t.sts===1?"":t.sts===2?"green":t.sts===3?"red":"",onClick:e[0]||(e[0]=g=>g.preventDefault())},{default:o(()=>[c(w(t.sts===1?"در انتظار تایید":t.sts===2?"تایید":"عدم تایید")+" ",1),m(C(Q))]),_:2},1032,["color"])]),_:2},1024)):y("",!0)]),opt:o(({record:t})=>[a("div",ae,[v("comment.view")?(i(),d(V,{key:0,"icon-class":"w-5 h-5 text-primary",class:"mr-3",icon:"EyeIcon",title:"مشاهده دیدگاه",onClick:g=>O(t)},null,8,["onClick"])):y("",!0),v("comment.remove")?(i(),d(V,{key:1,"icon-class":"w-5 h-5 text-danger",class:"mr-3",icon:"TrashIcon","pop-title":"دیدگاه حذف شود؟",onClick:g=>P(t.id)},null,8,["onClick"])):y("",!0)])]),_:1},8,["model"]),m(q,{open:k.value,"onUpdate:open":e[5]||(e[5]=t=>k.value=t),title:"مشاهده دیدگاه",width:"80%","wrap-class-name":"detail-modal"},{footer:o(()=>[m(R,{onClick:e[4]||(e[4]=t=>k.value=!1)},{default:o(()=>[...e[14]||(e[14]=[c("بستن",-1)])]),_:1})]),default:o(()=>[l.value?(i(),N("div",me,[a("ul",null,[a("li",ie,[a("span",re,[m(C(ee),{style:{"font-size":"48px",color:"#1c2d56"}})]),a("div",ue,[a("h5",null,w(l.value.customer&&l.value.customer.fname&&l.value.customer.lname?`${l.value.customer.fname} ${l.value.customer.lname}`:"بدون نام"),1),a("span",de," ارسال شده در تاریخ : "+w(l.value.caj?String(l.value.caj).split("-")[0]:null),1),m(j,{style:{width:"100%"}},{default:o(()=>[m(U,{value:$.value,"onUpdate:value":e[1]||(e[1]=t=>$.value=t),disabled:!v("comment.view.edit"),"auto-size":{minRows:3,maxRows:5}},null,8,["value","disabled"])]),_:1})]),a("ul",null,[a("li",ce,[e[13]||(e[13]=a("img",{src:F,alt:"comment author",class:"img border"},null,-1)),a("div",pe,[e[12]||(e[12]=a("h5",null,"ادمین",-1)),l.value.reply&&l.value.reply[0]?(i(),N("span",_e," ارسال شده در تاریخ : "+w(l.value.reply[0].caj?String(l.value.reply[0].caj).split("-")[0]:""),1)):y("",!0),m(j,{style:{width:"100%"}},{default:o(()=>[m(U,{value:b.value,"onUpdate:value":e[2]||(e[2]=t=>b.value=t),disabled:!v("comment.view.edit"),"auto-size":{minRows:3,maxRows:5}},null,8,["value","disabled"])]),_:1}),(E.value||I.value)&&v("comment.view.edit")?(i(),d(R,{key:1,class:"mr-4",onClick:e[3]||(e[3]=t=>G(l.value))},{default:o(()=>[...e[11]||(e[11]=[c(" ثبت تغییرات ",-1)])]),_:1})):y("",!0)])])])])])])):y("",!0)]),_:1},8,["open"])]),_:1})])}}}),Re=Y(ve,[["__scopeId","data-v-a75e1991"]]);export{Re as default}; diff --git a/apps/admin-panel/dist/assets/Const-g9kcjAq3.js b/apps/admin-panel/dist/assets/Const-ClhpuA-u.js similarity index 97% rename from apps/admin-panel/dist/assets/Const-g9kcjAq3.js rename to apps/admin-panel/dist/assets/Const-ClhpuA-u.js index 26c63a4..9439a89 100644 --- a/apps/admin-panel/dist/assets/Const-g9kcjAq3.js +++ b/apps/admin-panel/dist/assets/Const-ClhpuA-u.js @@ -1 +1 @@ -import{d as _e,u as fe,x as ye,y as p,a as v,w as n,i as m,m as i,r as u,o,c as a,p as _,f as y,b as w,h as C,E as R,D as z,F as S,e as W,t as A,P as ge,G as d,_ as ke}from"./index-C9T3Vski.js";import{u as be}from"./useDeleteHandler-D_sYZzLs.js";import{_ as Ce}from"./ImageUploadInput.vue_vue_type_script_setup_true_lang-Bjo3vw78.js";const xe={class:"row"},we={class:"row"},he={class:"mt-4 tags"},Be={class:"slider-toolbar"},Ee={class:"slider-count"},Ie={class:"row"},$e={key:1,class:"slider-grid"},Pe={class:"slide-card__head"},Ue={class:"slide-card__title"},Ve={class:"slide-card__media"},Se={class:"row"},Ae=_e({__name:"Const",setup(Te){const T=fe(),x=e=>!!T.hasPermission(e),D=i(!1),F=i([]),h=i(""),E=i(!1),I=i(""),G=i(void 0),X=[{title:"عنوان",dataIndex:"title"},{title:"عملیات",dataIndex:"op"}],g=i([]),$=i(""),k=i([]),H=i([]),b=i(""),B=i(!1),M=i(void 0),Y=[{title:"عنوان",dataIndex:"title"},{title:"عملیات",dataIndex:"op"}];async function P(){const{data:e}=await p.get("brand");F.value=e}async function L(){var e,t;if(h.value.trim())try{await p.post("brand/create",{title:h.value.trim()}),h.value="",await P(),d.success("برند اضافه شد")}catch(s){d.error(((t=(e=s==null?void 0:s.response)==null?void 0:e.data)==null?void 0:t.message)??"خطا در افزودن برند")}}function Z(e){G.value=e.id,I.value=e.title,E.value=!0}async function ee(){var e,t;try{await p.put(`brand/${G.value}`,{title:I.value}),E.value=!1,await P(),d.success("تغییرات ثبت شد")}catch(s){d.error(((t=(e=s==null?void 0:s.response)==null?void 0:e.data)==null?void 0:t.message)??"خطا در ویرایش")}}const{remove:te}=be({onSuccess:P,successMessage:"برند حذف شد",fallbackErrorMessage:"خطا در حذف برند"});function ae(e){return te(`brand/${e}`)}function j(){const e=$.value.trim();e&&(g.value.includes(e)||g.value.push(e),$.value="")}function se(e){g.value.splice(e,1)}async function ne(){var e,t;try{await p.put("const/__list__tags",{val:g.value}),d.success("برچسب ها ذخیره شد")}catch(s){d.error(((t=(e=s==null?void 0:s.response)==null?void 0:e.data)==null?void 0:t.message)??"خطا در ذخیره")}}function le(){k.value.push({image:"",link:""})}function oe(e){k.value.splice(e,1)}async function ie(){var e,t;try{await p.put("const/slider",{val:k.value}),d.success("اسلایدر ذخیره شد")}catch(s){d.error(((t=(e=s==null?void 0:s.response)==null?void 0:e.data)==null?void 0:t.message)??"خطا در ذخیره")}}async function N(){const{data:e}=await p.post("ciny",{page:1,limit:200});H.value=e.rows??e}async function q(){var e,t;if(b.value.trim())try{B.value?await p.put(`ciny/${M.value}`,{title:b.value.trim()}):await p.post("ciny/create",{title:b.value.trim()}),J(),await N(),d.success("عملیات انجام شد")}catch(s){d.error(((t=(e=s==null?void 0:s.response)==null?void 0:e.data)==null?void 0:t.message)??"خطا")}}function re(e){B.value=!0,M.value=e.id,b.value=e.title}function J(){B.value=!1,M.value=void 0,b.value=""}async function ce(e){var t,s;try{await p.delete(`ciny/${e}`),await N(),d.success("حذف شد")}catch(r){d.error(((s=(t=r==null?void 0:r.response)==null?void 0:t.data)==null?void 0:s.message)??"خطا در حذف")}}return ye(async()=>{try{D.value=!0,await Promise.all([P(),T.isSuperAdmin?N():Promise.resolve()]);const[e,t]=await Promise.all([p.get("const/__list__tags"),p.get("const/slider")]);g.value=Array.isArray(e.data)?e.data:[],k.value=Array.isArray(t.data)?t.data:[]}catch(e){console.log(e)}finally{D.value=!1}}),(e,t)=>{const s=u("a-input"),r=u("a-button"),U=u("a-tooltip"),O=u("a-popconfirm"),K=u("a-table"),V=u("a-tab-pane"),ue=u("a-tag"),Q=u("a-empty"),de=u("a-tabs"),pe=u("a-spin"),ve=u("a-modal"),me=u("a-card");return x("config.statics")?(o(),v(me,{key:0,title:"مدیریت ثابت ها",class:"page-card table-scroll"},{default:n(()=>[a(pe,{spinning:D.value},{default:n(()=>[a(de,null,{default:n(()=>[a(V,{key:"brands",tab:"برند ها"},{default:n(()=>[_("div",xe,[a(s,{value:h.value,"onUpdate:value":t[0]||(t[0]=l=>h.value=l),placeholder:"نام برند",style:{"max-width":"260px"},onPressEnter:L},null,8,["value"]),x("config.statics.brand.create")?(o(),v(r,{key:0,type:"primary",onClick:L},{default:n(()=>[...t[5]||(t[5]=[y(" افزودن ",-1)])]),_:1})):m("",!0)]),a(K,{class:"mt-4",size:"small","data-source":F.value,columns:X,pagination:!1,"row-key":"id"},{bodyCell:n(({column:l,record:c})=>[l.dataIndex==="op"?(o(),w(S,{key:0},[x("config.statics.brand.edit")?(o(),v(U,{key:0,title:"ویرایش"},{default:n(()=>[a(C(R),{class:"cursor-pointer mx-1 text-primary",onClick:f=>Z(c)},null,8,["onClick"])]),_:2},1024)):m("",!0),x("config.statics.brand.remove")?(o(),v(U,{key:1,title:"حذف"},{default:n(()=>[a(O,{"ok-text":"بله","cancel-text":"خیر",title:"آیا مطمئن هستید؟",onConfirm:f=>ae(c.id)},{default:n(()=>[a(C(z),{class:"cursor-pointer mx-1 text-danger"})]),_:1},8,["onConfirm"])]),_:2},1024)):m("",!0)],64)):m("",!0)]),_:1},8,["data-source"])]),_:1}),a(V,{key:"tags",tab:"برچسب ها"},{default:n(()=>[_("div",we,[a(s,{value:$.value,"onUpdate:value":t[1]||(t[1]=l=>$.value=l),placeholder:"برچسب",style:{"max-width":"260px"},onPressEnter:j},null,8,["value"]),x("config.statics.tags.create")?(o(),v(r,{key:0,type:"primary",onClick:j},{default:n(()=>[...t[6]||(t[6]=[y(" افزودن ",-1)])]),_:1})):m("",!0)]),_("div",he,[(o(!0),w(S,null,W(g.value,(l,c)=>(o(),v(ue,{key:c,closable:x("config.statics.tags.remove"),onClose:f=>se(c)},{default:n(()=>[y(A(l),1)]),_:2},1032,["closable","onClose"]))),128)),g.value.length===0?(o(),v(Q,{key:0,description:"برچسبی ثبت نشده است"})):m("",!0)]),a(r,{class:"mt-4",type:"primary",onClick:ne},{default:n(()=>[...t[7]||(t[7]=[y("ذخیره برچسب ها",-1)])]),_:1})]),_:1}),a(V,{key:"slider",tab:"اسلایدر موبایل"},{default:n(()=>[_("div",Be,[_("span",Ee,A(k.value.length)+" اسلاید",1),_("div",Ie,[a(r,{onClick:le},{icon:n(()=>[a(C(ge))]),default:n(()=>[t[8]||(t[8]=y(" افزودن اسلاید ",-1))]),_:1}),a(r,{type:"primary",onClick:ie},{default:n(()=>[...t[9]||(t[9]=[y("ذخیره اسلایدر",-1)])]),_:1})])]),k.value.length===0?(o(),v(Q,{key:0,description:"اسلایدی ثبت نشده است"})):(o(),w("div",$e,[(o(!0),w(S,null,W(k.value,(l,c)=>(o(),w("div",{key:c,class:"slide-card"},[_("div",Pe,[_("span",Ue,"اسلاید "+A(c+1),1),a(O,{"ok-text":"بله","cancel-text":"خیر",title:"این اسلاید حذف شود؟",onConfirm:f=>oe(c)},{default:n(()=>[a(r,{type:"text",danger:"",size:"small",title:"حذف"},{icon:n(()=>[a(C(z))]),_:1})]),_:1},8,["onConfirm"])]),_("div",Ve,[a(Ce,{modelValue:l.image,"onUpdate:modelValue":f=>l.image=f,purpose:"slider",placeholder:"تصویر اسلاید"},null,8,["modelValue","onUpdate:modelValue"])]),a(s,{value:l.link,"onUpdate:value":f=>l.link=f,placeholder:"لینک"},null,8,["value","onUpdate:value"])]))),128))]))]),_:1}),C(T).isSuperAdmin?(o(),v(V,{key:"collections",tab:"سینی ها"},{default:n(()=>[_("div",Se,[a(s,{value:b.value,"onUpdate:value":t[2]||(t[2]=l=>b.value=l),placeholder:"نام سینی",style:{"max-width":"260px"},onPressEnter:q},null,8,["value"]),a(r,{type:"primary",onClick:q},{default:n(()=>[y(A(B.value?"ویرایش":"ثبت")+" سینی ",1)]),_:1}),B.value?(o(),v(r,{key:0,onClick:J},{default:n(()=>[...t[10]||(t[10]=[y("انصراف",-1)])]),_:1})):m("",!0)]),a(K,{class:"mt-4",size:"small","data-source":H.value,columns:Y,pagination:!1,"row-key":"id"},{bodyCell:n(({column:l,record:c})=>[l.dataIndex==="op"?(o(),w(S,{key:0},[a(U,{title:"ویرایش"},{default:n(()=>[a(C(R),{class:"cursor-pointer mx-1 text-primary",onClick:f=>re(c)},null,8,["onClick"])]),_:2},1024),a(U,{title:"حذف"},{default:n(()=>[a(O,{"ok-text":"بله","cancel-text":"خیر",title:"آیا مطمئن هستید؟",onConfirm:f=>ce(c.id)},{default:n(()=>[a(C(z),{class:"cursor-pointer mx-1 text-danger"})]),_:1},8,["onConfirm"])]),_:2},1024)],64)):m("",!0)]),_:1},8,["data-source"])]),_:1})):m("",!0)]),_:1})]),_:1},8,["spinning"]),a(ve,{open:E.value,"onUpdate:open":t[4]||(t[4]=l=>E.value=l),title:"ویرایش برند",onOk:ee},{default:n(()=>[a(s,{value:I.value,"onUpdate:value":t[3]||(t[3]=l=>I.value=l)},null,8,["value"])]),_:1},8,["open"])]),_:1})):m("",!0)}}}),Oe=ke(Ae,[["__scopeId","data-v-b55e5eb0"]]);export{Oe as default}; +import{d as _e,u as fe,x as ye,y as p,a as v,w as n,i as m,m as i,r as u,o,c as a,p as _,f as y,b as w,h as C,E as R,D as z,F as S,e as W,t as A,P as ge,G as d,_ as ke}from"./index-CuIWfDbM.js";import{u as be}from"./useDeleteHandler-c5WtaKjp.js";import{_ as Ce}from"./ImageUploadInput.vue_vue_type_script_setup_true_lang-Bb4hJ8Y2.js";const xe={class:"row"},we={class:"row"},he={class:"mt-4 tags"},Be={class:"slider-toolbar"},Ee={class:"slider-count"},Ie={class:"row"},$e={key:1,class:"slider-grid"},Pe={class:"slide-card__head"},Ue={class:"slide-card__title"},Ve={class:"slide-card__media"},Se={class:"row"},Ae=_e({__name:"Const",setup(Te){const T=fe(),x=e=>!!T.hasPermission(e),D=i(!1),F=i([]),h=i(""),E=i(!1),I=i(""),G=i(void 0),X=[{title:"عنوان",dataIndex:"title"},{title:"عملیات",dataIndex:"op"}],g=i([]),$=i(""),k=i([]),H=i([]),b=i(""),B=i(!1),M=i(void 0),Y=[{title:"عنوان",dataIndex:"title"},{title:"عملیات",dataIndex:"op"}];async function P(){const{data:e}=await p.get("brand");F.value=e}async function L(){var e,t;if(h.value.trim())try{await p.post("brand/create",{title:h.value.trim()}),h.value="",await P(),d.success("برند اضافه شد")}catch(s){d.error(((t=(e=s==null?void 0:s.response)==null?void 0:e.data)==null?void 0:t.message)??"خطا در افزودن برند")}}function Z(e){G.value=e.id,I.value=e.title,E.value=!0}async function ee(){var e,t;try{await p.put(`brand/${G.value}`,{title:I.value}),E.value=!1,await P(),d.success("تغییرات ثبت شد")}catch(s){d.error(((t=(e=s==null?void 0:s.response)==null?void 0:e.data)==null?void 0:t.message)??"خطا در ویرایش")}}const{remove:te}=be({onSuccess:P,successMessage:"برند حذف شد",fallbackErrorMessage:"خطا در حذف برند"});function ae(e){return te(`brand/${e}`)}function j(){const e=$.value.trim();e&&(g.value.includes(e)||g.value.push(e),$.value="")}function se(e){g.value.splice(e,1)}async function ne(){var e,t;try{await p.put("const/__list__tags",{val:g.value}),d.success("برچسب ها ذخیره شد")}catch(s){d.error(((t=(e=s==null?void 0:s.response)==null?void 0:e.data)==null?void 0:t.message)??"خطا در ذخیره")}}function le(){k.value.push({image:"",link:""})}function oe(e){k.value.splice(e,1)}async function ie(){var e,t;try{await p.put("const/slider",{val:k.value}),d.success("اسلایدر ذخیره شد")}catch(s){d.error(((t=(e=s==null?void 0:s.response)==null?void 0:e.data)==null?void 0:t.message)??"خطا در ذخیره")}}async function N(){const{data:e}=await p.post("ciny",{page:1,limit:200});H.value=e.rows??e}async function q(){var e,t;if(b.value.trim())try{B.value?await p.put(`ciny/${M.value}`,{title:b.value.trim()}):await p.post("ciny/create",{title:b.value.trim()}),J(),await N(),d.success("عملیات انجام شد")}catch(s){d.error(((t=(e=s==null?void 0:s.response)==null?void 0:e.data)==null?void 0:t.message)??"خطا")}}function re(e){B.value=!0,M.value=e.id,b.value=e.title}function J(){B.value=!1,M.value=void 0,b.value=""}async function ce(e){var t,s;try{await p.delete(`ciny/${e}`),await N(),d.success("حذف شد")}catch(r){d.error(((s=(t=r==null?void 0:r.response)==null?void 0:t.data)==null?void 0:s.message)??"خطا در حذف")}}return ye(async()=>{try{D.value=!0,await Promise.all([P(),T.isSuperAdmin?N():Promise.resolve()]);const[e,t]=await Promise.all([p.get("const/__list__tags"),p.get("const/slider")]);g.value=Array.isArray(e.data)?e.data:[],k.value=Array.isArray(t.data)?t.data:[]}catch(e){console.log(e)}finally{D.value=!1}}),(e,t)=>{const s=u("a-input"),r=u("a-button"),U=u("a-tooltip"),O=u("a-popconfirm"),K=u("a-table"),V=u("a-tab-pane"),ue=u("a-tag"),Q=u("a-empty"),de=u("a-tabs"),pe=u("a-spin"),ve=u("a-modal"),me=u("a-card");return x("config.statics")?(o(),v(me,{key:0,title:"مدیریت ثابت ها",class:"page-card table-scroll"},{default:n(()=>[a(pe,{spinning:D.value},{default:n(()=>[a(de,null,{default:n(()=>[a(V,{key:"brands",tab:"برند ها"},{default:n(()=>[_("div",xe,[a(s,{value:h.value,"onUpdate:value":t[0]||(t[0]=l=>h.value=l),placeholder:"نام برند",style:{"max-width":"260px"},onPressEnter:L},null,8,["value"]),x("config.statics.brand.create")?(o(),v(r,{key:0,type:"primary",onClick:L},{default:n(()=>[...t[5]||(t[5]=[y(" افزودن ",-1)])]),_:1})):m("",!0)]),a(K,{class:"mt-4",size:"small","data-source":F.value,columns:X,pagination:!1,"row-key":"id"},{bodyCell:n(({column:l,record:c})=>[l.dataIndex==="op"?(o(),w(S,{key:0},[x("config.statics.brand.edit")?(o(),v(U,{key:0,title:"ویرایش"},{default:n(()=>[a(C(R),{class:"cursor-pointer mx-1 text-primary",onClick:f=>Z(c)},null,8,["onClick"])]),_:2},1024)):m("",!0),x("config.statics.brand.remove")?(o(),v(U,{key:1,title:"حذف"},{default:n(()=>[a(O,{"ok-text":"بله","cancel-text":"خیر",title:"آیا مطمئن هستید؟",onConfirm:f=>ae(c.id)},{default:n(()=>[a(C(z),{class:"cursor-pointer mx-1 text-danger"})]),_:1},8,["onConfirm"])]),_:2},1024)):m("",!0)],64)):m("",!0)]),_:1},8,["data-source"])]),_:1}),a(V,{key:"tags",tab:"برچسب ها"},{default:n(()=>[_("div",we,[a(s,{value:$.value,"onUpdate:value":t[1]||(t[1]=l=>$.value=l),placeholder:"برچسب",style:{"max-width":"260px"},onPressEnter:j},null,8,["value"]),x("config.statics.tags.create")?(o(),v(r,{key:0,type:"primary",onClick:j},{default:n(()=>[...t[6]||(t[6]=[y(" افزودن ",-1)])]),_:1})):m("",!0)]),_("div",he,[(o(!0),w(S,null,W(g.value,(l,c)=>(o(),v(ue,{key:c,closable:x("config.statics.tags.remove"),onClose:f=>se(c)},{default:n(()=>[y(A(l),1)]),_:2},1032,["closable","onClose"]))),128)),g.value.length===0?(o(),v(Q,{key:0,description:"برچسبی ثبت نشده است"})):m("",!0)]),a(r,{class:"mt-4",type:"primary",onClick:ne},{default:n(()=>[...t[7]||(t[7]=[y("ذخیره برچسب ها",-1)])]),_:1})]),_:1}),a(V,{key:"slider",tab:"اسلایدر موبایل"},{default:n(()=>[_("div",Be,[_("span",Ee,A(k.value.length)+" اسلاید",1),_("div",Ie,[a(r,{onClick:le},{icon:n(()=>[a(C(ge))]),default:n(()=>[t[8]||(t[8]=y(" افزودن اسلاید ",-1))]),_:1}),a(r,{type:"primary",onClick:ie},{default:n(()=>[...t[9]||(t[9]=[y("ذخیره اسلایدر",-1)])]),_:1})])]),k.value.length===0?(o(),v(Q,{key:0,description:"اسلایدی ثبت نشده است"})):(o(),w("div",$e,[(o(!0),w(S,null,W(k.value,(l,c)=>(o(),w("div",{key:c,class:"slide-card"},[_("div",Pe,[_("span",Ue,"اسلاید "+A(c+1),1),a(O,{"ok-text":"بله","cancel-text":"خیر",title:"این اسلاید حذف شود؟",onConfirm:f=>oe(c)},{default:n(()=>[a(r,{type:"text",danger:"",size:"small",title:"حذف"},{icon:n(()=>[a(C(z))]),_:1})]),_:1},8,["onConfirm"])]),_("div",Ve,[a(Ce,{modelValue:l.image,"onUpdate:modelValue":f=>l.image=f,purpose:"slider",placeholder:"تصویر اسلاید"},null,8,["modelValue","onUpdate:modelValue"])]),a(s,{value:l.link,"onUpdate:value":f=>l.link=f,placeholder:"لینک"},null,8,["value","onUpdate:value"])]))),128))]))]),_:1}),C(T).isSuperAdmin?(o(),v(V,{key:"collections",tab:"سینی ها"},{default:n(()=>[_("div",Se,[a(s,{value:b.value,"onUpdate:value":t[2]||(t[2]=l=>b.value=l),placeholder:"نام سینی",style:{"max-width":"260px"},onPressEnter:q},null,8,["value"]),a(r,{type:"primary",onClick:q},{default:n(()=>[y(A(B.value?"ویرایش":"ثبت")+" سینی ",1)]),_:1}),B.value?(o(),v(r,{key:0,onClick:J},{default:n(()=>[...t[10]||(t[10]=[y("انصراف",-1)])]),_:1})):m("",!0)]),a(K,{class:"mt-4",size:"small","data-source":H.value,columns:Y,pagination:!1,"row-key":"id"},{bodyCell:n(({column:l,record:c})=>[l.dataIndex==="op"?(o(),w(S,{key:0},[a(U,{title:"ویرایش"},{default:n(()=>[a(C(R),{class:"cursor-pointer mx-1 text-primary",onClick:f=>re(c)},null,8,["onClick"])]),_:2},1024),a(U,{title:"حذف"},{default:n(()=>[a(O,{"ok-text":"بله","cancel-text":"خیر",title:"آیا مطمئن هستید؟",onConfirm:f=>ce(c.id)},{default:n(()=>[a(C(z),{class:"cursor-pointer mx-1 text-danger"})]),_:1},8,["onConfirm"])]),_:2},1024)],64)):m("",!0)]),_:1},8,["data-source"])]),_:1})):m("",!0)]),_:1})]),_:1},8,["spinning"]),a(ve,{open:E.value,"onUpdate:open":t[4]||(t[4]=l=>E.value=l),title:"ویرایش برند",onOk:ee},{default:n(()=>[a(s,{value:I.value,"onUpdate:value":t[3]||(t[3]=l=>I.value=l)},null,8,["value"])]),_:1},8,["open"])]),_:1})):m("",!0)}}}),Oe=ke(Ae,[["__scopeId","data-v-b55e5eb0"]]);export{Oe as default}; diff --git a/apps/admin-panel/dist/assets/CreditCardOutlined-BxTC_oHD.js b/apps/admin-panel/dist/assets/CreditCardOutlined-BRF7XcYB.js similarity index 93% rename from apps/admin-panel/dist/assets/CreditCardOutlined-BxTC_oHD.js rename to apps/admin-panel/dist/assets/CreditCardOutlined-BRF7XcYB.js index ed96e1b..d1ebb44 100644 --- a/apps/admin-panel/dist/assets/CreditCardOutlined-BxTC_oHD.js +++ b/apps/admin-panel/dist/assets/CreditCardOutlined-BRF7XcYB.js @@ -1 +1 @@ -import{c as u,I as l}from"./index-C9T3Vski.js";var d={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-792 72h752v120H136V232zm752 560H136V440h752v352zm-237-64h165c4.4 0 8-3.6 8-8v-72c0-4.4-3.6-8-8-8H651c-4.4 0-8 3.6-8 8v72c0 4.4 3.6 8 8 8z"}}]},name:"credit-card",theme:"outlined"};function c(r){for(var t=1;tnew Me(u).setAlpha(l).toRgbString(),J=(u,l)=>new Me(u).lighten(l).toHexString(),mt=u=>{const l=Ue(u,{theme:"dark"});return{1:l[0],2:l[1],3:l[2],4:l[3],5:l[6],6:l[5],7:l[4],8:l[6],9:l[5],10:l[4]}},pt=(u,l)=>{const d=u||"#000",r=l||"#fff";return{colorBgBase:d,colorTextBase:r,colorText:U(r,.85),colorTextSecondary:U(r,.65),colorTextTertiary:U(r,.45),colorTextQuaternary:U(r,.25),colorFill:U(r,.18),colorFillSecondary:U(r,.12),colorFillTertiary:U(r,.08),colorFillQuaternary:U(r,.04),colorBgElevated:J(d,12),colorBgContainer:J(d,8),colorBgLayout:J(d,0),colorBgSpotlight:J(d,26),colorBorder:J(d,26),colorBorderSecondary:J(d,19)}},_t=(u,l)=>{const d=Object.keys(qe).map(E=>{const f=Ue(u[E],{theme:"dark"});return new Array(10).fill(1).reduce((k,_,$)=>(k[`${E}-${$+1}`]=f[$],k),{})}).reduce((E,f)=>(E=D(D({},E),f),E),{}),r=l??ue(u);return D(D(D({},r),d),Ke(u,{generateColorPalettes:mt,generateNeutralColorPalettes:pt}))};function gt(u){const{sizeUnit:l,sizeStep:d}=u,r=d-2;return{sizeXXL:l*(r+10),sizeXL:l*(r+6),sizeLG:l*(r+2),sizeMD:l*(r+2),sizeMS:l*(r+1),size:l*r,sizeSM:l*r,sizeXS:l*(r-1),sizeXXS:l*(r-1)}}const yt=(u,l)=>{const d=l??ue(u),r=d.fontSizeSM,E=d.controlHeight-4;return D(D(D(D(D({},d),gt(l??u)),Ze(r)),{controlHeight:E}),et(D(D({},d),{controlHeight:E})))};function bt(){const[u,l,d]=tt();return{theme:u,token:l,hashId:d}}const Ye={defaultConfig:je,defaultSeed:je.token,useToken:bt,defaultAlgorithm:ue,darkAlgorithm:_t,compactAlgorithm:yt},ft={class:"acc-head"},kt={class:"acc-body"},ht={class:"acc-code"},Et={class:"code",dir:"ltr"},xt={class:"origin"},It={key:1,class:"muted"},St={class:"balances"},Ct={class:"balance"},Tt={class:"line"},Nt={class:"line"},Rt={class:"hint"},Dt={class:"balance"},wt={class:"line"},At={class:"line"},Ot={key:0,class:"last-job"},$t={key:0,class:"warn"},Pt={class:"link-form"},jt={class:"label"},zt={class:"link-row"},Bt=Fe({__name:"CustomerAccountingCard",props:{customerId:{}},setup(u){const l=u,d={LINKED:"جفت با موبایل",IMPORTED:"وارد شده از حسابداری",PUSHED:"ساخته شده از اپ",MANUAL:"دستی"},r={PENDING:"در صف",SENDING:"در حال ارسال",SENT:"ارسال شد",FAILED:"ناموفق",NEEDS_REVIEW:"نیاز به بررسی",RESOLVED:"حل‌شده"},E={PENDING:"default",SENDING:"processing",SENT:"success",FAILED:"error",NEEDS_REVIEW:"warning",RESOLVED:"success"},f=Ve(),{token:k}=Ye.useToken(),_=A(null),$=A(!1),i=A(""),L=O(()=>({"--acc-bg":k.value.colorBgContainer,"--acc-border":k.value.colorBorderSecondary,"--acc-fill":k.value.colorFillQuaternary,"--acc-text":k.value.colorText,"--acc-text-2":k.value.colorTextSecondary,"--acc-text-3":k.value.colorTextTertiary,"--acc-error":k.value.colorError,"--acc-success":k.value.colorSuccess})),V=O(()=>!!f.hasPermission("config.accounting")&&_.value&&_.value.provider!=="none"),T=O(()=>{var y,o;return(o=(y=_.value)==null?void 0:y.jobs)==null?void 0:o[0]}),P=(y,o)=>y==null?"—":Number(y).toLocaleString("fa-IR",{maximumFractionDigits:o}),j=y=>Number(y)>0?"debt":Number(y)<0?"credit":"",Z=y=>y?rt(y).format("jYYYY/jMM/jDD HH:mm"):"";async function Y(){if(f.hasPermission("config.accounting")){$.value=!0;try{const{data:y}=await B.get(`admin/accounting/customers/${l.customerId}`);_.value=y}catch{_.value=null}finally{$.value=!1}}}async function ee(){var y,o;try{await B.post("admin/accounting/links",{entityType:"CUSTOMER",entityId:l.customerId,externalCode:i.value.trim()}),ze.success("لینک شد"),i.value="",Y()}catch(M){ze.error(((o=(y=M==null?void 0:M.response)==null?void 0:y.data)==null?void 0:o.message)??"خطا")}}async function ie(){var y;(y=_.value)!=null&&y.link&&(await B.delete(`admin/accounting/links/${_.value.link.id}`),Y())}return Ge(Y),(y,o)=>{var G;const M=C("a-tag"),x=C("a-badge"),te=C("a-input"),q=C("a-button"),X=C("a-popconfirm"),re=C("a-spin");return V.value?(n(),p("section",{key:0,class:"acc-card",style:He(L.value)},[e("header",ft,[o[4]||(o[4]=e("h2",null,"حسابداری",-1)),(G=_.value)!=null&&G.link?(n(),R(M,{key:0,color:"success"},{default:m(()=>[...o[2]||(o[2]=[c("لینک شده",-1)])]),_:1})):(n(),R(M,{key:1,color:"warning"},{default:m(()=>[...o[3]||(o[3]=[c("لینک نشده",-1)])]),_:1}))]),b(re,{spinning:$.value},{default:m(()=>{var ae,le,se,K,t,a,w,N,z,oe,H,W;return[e("div",kt,[e("div",ht,[o[5]||(o[5]=e("span",{class:"label"},"کد حساب",-1)),(ae=_.value)!=null&&ae.link?(n(),p(S,{key:0},[e("span",Et,s(_.value.link.externalCode),1),e("span",xt,s(d[_.value.link.origin]??_.value.link.origin),1)],64)):(n(),p("span",It,"—"))]),e("div",St,[e("div",Ct,[o[10]||(o[10]=e("div",{class:"label"},"مانده‌ی حسابداری",-1)),(le=_.value)!=null&&le.accounting?(n(),p(S,{key:0},[e("div",Tt,[e("span",{class:F(j(_.value.accounting.gold))},s(P(_.value.accounting.gold,3)),3),o[6]||(o[6]=e("small",null,"گرم",-1))]),e("div",Nt,[e("span",{class:F(j(_.value.accounting.rial))},s(P(_.value.accounting.rial,0)),3),o[7]||(o[7]=e("small",null,"ریال",-1))]),e("div",Rt,s(Z(_.value.accounting.at)),1)],64)):(n(),p(S,{key:1},[o[8]||(o[8]=e("div",{class:"line muted"},"—",-1)),o[9]||(o[9]=e("div",{class:"hint"},"هنوز دریافت نشده",-1))],64))]),e("div",Dt,[o[13]||(o[13]=e("div",{class:"label"},"مانده‌ی دفتر اپ",-1)),e("div",wt,[e("span",{class:F(j((K=(se=_.value)==null?void 0:se.internal)==null?void 0:K.gold))},s(P((a=(t=_.value)==null?void 0:t.internal)==null?void 0:a.gold,3)),3),o[11]||(o[11]=e("small",null,"گرم",-1))]),e("div",At,[e("span",{class:F(j((N=(w=_.value)==null?void 0:w.internal)==null?void 0:N.rial))},s(P((oe=(z=_.value)==null?void 0:z.internal)==null?void 0:oe.rial,0)),3),o[12]||(o[12]=e("small",null,"ریال",-1))]),o[14]||(o[14]=e("div",{class:"hint"},"مبنای سقف اعتبار",-1))])]),T.value?(n(),p("div",Ot,[b(x,{status:E[T.value.status]??"default"},null,8,["status"]),c(" آخرین ارسال: "+s(r[T.value.status]??T.value.status)+" — "+s(Z(T.value.updatedAt))+" ",1),T.value.lastError?(n(),p("div",$t,s(T.value.lastError),1)):h("",!0)])):h("",!0),e("div",Pt,[e("div",jt,s((H=_.value)!=null&&H.link?"تغییر لینک":"لینک دستی"),1),e("div",zt,[b(te,{value:i.value,"onUpdate:value":o[0]||(o[0]=ne=>i.value=ne),dir:"ltr",placeholder:"کد حساب در حسابداری",onPressEnter:o[1]||(o[1]=ne=>i.value.trim()&&ee())},null,8,["value"]),b(q,{type:"primary",ghost:"",disabled:!i.value.trim(),onClick:ee},{default:m(()=>[...o[15]||(o[15]=[c("لینک",-1)])]),_:1},8,["disabled"])]),(W=_.value)!=null&&W.link?(n(),R(X,{key:0,title:"لینک حذف شود؟",onConfirm:ie},{default:m(()=>[b(q,{type:"link",danger:"",size:"small",class:"unlink"},{default:m(()=>[...o[16]||(o[16]=[c("حذف لینک فعلی",-1)])]),_:1})]),_:1})):h("",!0)])])]}),_:1},8,["spinning"])],4)):h("",!0)}}}),Lt=We(Bt,[["__scopeId","data-v-17e381b4"]]),Mt={class:"panel hero"},Ut={class:"hero-main"},Ft={class:"hero-text"},Vt={class:"hero-eyebrow"},Gt={class:"hero-name"},Ht={class:"hero-tags"},Wt={class:"hero-meta"},Yt={key:0,class:"meta-item"},Xt={dir:"ltr"},Qt={key:1,class:"meta-item"},Jt={key:2,class:"meta-item"},qt={key:3,class:"meta-item"},Kt={class:"hero-actions"},Zt={class:"kpis"},ea={class:"panel kpi"},ta={class:"kpi-foot"},aa={class:"panel kpi"},la={class:"kpi-foot"},sa={class:"panel kpi"},oa={class:"kpi-value"},na={class:"kpi-foot"},ia={key:1,class:"kpi-foot"},ra={class:"panel kpi"},ua={class:"kpi-value"},da={class:"panel kpi"},ca={class:"kpi-value"},va={class:"kpi-foot"},ma={class:"layout"},pa={class:"panel layout-main"},_a={class:"tab-count"},ga={key:0,class:"mono",dir:"ltr"},ya={class:"tab-count"},ba={class:"unit"},fa={key:3,class:"note"},ka={class:"tab-count"},ha={class:"tab-count"},Ea={key:0,dir:"ltr"},xa={class:"layout-side"},Ia={class:"panel"},Sa={class:"facts"},Ca=["dir"],Ta={key:0,class:"panel"},Na={class:"facts"},Ra=Fe({__name:"CustomerDetail",props:{title:{default:"مشاهده اطلاعات مشتری"},showWallet:{type:Boolean,default:!1},showActivity:{type:Boolean,default:!1},defaultTab:{default:"orders"},editRoute:{default:void 0}},setup(u){const l=u,d=at(),r=nt(),E=Ve(),{token:f}=Ye.useToken(),k=d.params.id,_=A(!1),$=A(l.defaultTab),i=A(void 0),L=A(void 0),V=A([]),T=A([]),P=A([]),j=A([]),Z=O(()=>({"--cd-bg":f.value.colorBgContainer,"--cd-border":f.value.colorBorderSecondary,"--cd-text":f.value.colorText,"--cd-text-2":f.value.colorTextSecondary,"--cd-text-3":f.value.colorTextTertiary,"--cd-fill":f.value.colorFillQuaternary,"--cd-primary":f.value.colorPrimary,"--cd-primary-bg":f.value.colorPrimaryBg,"--cd-error":f.value.colorError,"--cd-success":f.value.colorSuccess,"--cd-warning":f.value.colorWarning})),Y={SUSPENDED:{label:"معلق (عبور از سقف)",color:"error"},PLACED:{label:"ثبت سفارش",color:"default"},ADMIN_APPROVED:{label:"تأیید مدیر",color:"processing"},SOURCING:{label:"در حال تأمین",color:"processing"},PREPARING:{label:"در حال آماده‌سازی",color:"processing"},DELIVERED_TO_AGENT:{label:"تحویل مسئول فروش",color:"cyan"},DELIVERED_TO_CUSTOMER:{label:"تحویل مشتری",color:"success"},CANCELLED:{label:"لغو شده",color:"default"}},ee={ORDER_STOCK:"سفارش کالای موجود",ORDER_PRE_ORDER:"پیش‌سفارش",REPAYMENT_MELTED_GOLD:"تسویه با آبشده",REPAYMENT_TRANSFER:"تسویه با واریز",REPAYMENT_CHEQUE:"تسویه با چک",REPAYMENT_CASH:"تسویه نقدی",WALLET_BONUS:"پاداش کیف پول",ADJUSTMENT:"اصلاحیه"},ie=[{title:"شماره سفارش",dataIndex:"name"},{title:"وضعیت",dataIndex:"status"},{title:"وزن",dataIndex:"w"},{title:"تعداد آیتم",dataIndex:"items_count",align:"center"},{title:"شعبه",dataIndex:"branch"},{title:"تاریخ",dataIndex:"caj"}],y=[{title:"نوع",dataIndex:"type"},{title:"مقدار",dataIndex:"value"},{title:"وضعیت",dataIndex:"confirmed"},{title:"توضیحات",dataIndex:"note",ellipsis:!0},{title:"تاریخ",dataIndex:"caj"}],o=[{title:"مقدار",dataIndex:"value"},{title:"تاریخ اعطا",dataIndex:"caj"},{title:"انقضا",dataIndex:"expires_at"}],M=[{title:"عملیات",dataIndex:"action"},{title:"جزئیات",dataIndex:"detail"},{title:"تاریخ",dataIndex:"caj"}],x=(t,a)=>t==null||t===""||Number.isNaN(Number(t))?"—":Number(t).toLocaleString("fa-IR",{maximumFractionDigits:a}),te=t=>Number(t)>0?"debt":Number(t)<0?"credit":"",q=t=>t==null?"":Number(t)>0?"بدهکار":Number(t)<0?"بستانکار":"تسویه",X=(t,a)=>a>t?{pageSize:t,size:"small",showSizeChanger:!1}:!1,re=O(()=>{var t;return(((t=i.value)==null?void 0:t.name)??"").trim().charAt(0)||"؟"}),G=O(()=>{var w,N;const t=Number((w=i.value)==null?void 0:w.gram_level);if(!t||t<=0)return null;const a=Math.max(Number((N=i.value)==null?void 0:N.remain)||0,0);return Math.min(Math.round(a/t*100),100)}),ae=O(()=>{const t=G.value??0;return t>=90?f.value.colorError:t>=70?f.value.colorWarning:f.value.colorPrimary}),le=O(()=>{if(!l.editRoute||!r.hasRoute(l.editRoute))return!1;const t=r.resolve({name:l.editRoute,params:{id:k}}).meta;return t.superAdminOnly&&!E.isSuperAdmin?!1:!t.role||!!E.hasPermission(t.role)}),se=O(()=>{var a;const t=i.value;return[{label:"موبایل",value:t==null?void 0:t.mobile,ltr:!0},{label:"تلفن ثابت",value:t==null?void 0:t.phone,ltr:!0},{label:"کد ملی",value:t==null?void 0:t.national_code,ltr:!0},{label:"تاریخ تولد",value:t!=null&&t.birth_date?Q(t.birth_date):null},{label:"شهر",value:(a=t==null?void 0:t.city)==null?void 0:a.title},{label:"آدرس",value:t==null?void 0:t.address}]}),K=O(()=>{var a;const t=i.value;return[{label:"نام فروشگاه",value:t==null?void 0:t.store_name},{label:"پاساژ",value:t==null?void 0:t.pasazh_name},{label:"منطقه",value:t==null?void 0:t.zone},{label:"کد عضویت",value:t==null?void 0:t.mcode},{label:"کارشناس فروش",value:(a=t==null?void 0:t.reagent)==null?void 0:a.name},{label:"درصد اجرت",value:(t==null?void 0:t.percent)!==null&&(t==null?void 0:t.percent)!==void 0&&(t==null?void 0:t.percent)!==""?`${x(t.percent,2)}٪`:null}].filter(w=>w.value)});return Ge(async()=>{try{_.value=!0;const[t,a,w,N]=await Promise.all([B.get(`customer/${k}`),B.get(`major/dashboard/${k}`).catch(()=>({data:void 0})),B.get(`admin/customers-omde/${k}/orders`).catch(()=>({data:[]})),B.get(`admin/customers-omde/${k}/documents`).catch(()=>({data:[]}))]);if(i.value=t.data,L.value=a.data,V.value=w.data,T.value=N.data,l.showWallet){const z=await B.get(`admin/customers-omde/${k}/wallet`).catch(()=>({data:[]}));P.value=z.data}if(l.showActivity){const z=await B.get(`log/ago/${k}`).catch(()=>({data:[]}));j.value=z.data}}catch(t){console.log(t)}finally{_.value=!1}}),(t,a)=>{const w=C("a-avatar"),N=C("a-tag"),z=C("a-button"),oe=C("a-progress"),H=C("a-table"),W=C("a-tab-pane"),ne=C("a-badge"),Xe=C("a-tabs"),Qe=C("a-spin");return n(),R(Qe,{spinning:_.value},{default:m(()=>{var ce,ve,me,pe,_e,ge,ye,be,fe,ke,he,Ee,xe,Ie,Se,Ce,Te,Ne,Re,De,we,Ae,Oe;return[e("div",{class:"customer-detail",style:He(Z.value)},[e("section",Mt,[e("div",Ut,[b(w,{size:64,src:(ve=(ce=i.value)==null?void 0:ce.image)==null?void 0:ve.image,class:"hero-avatar"},{default:m(()=>[c(s(re.value),1)]),_:1},8,["src"]),e("div",Ft,[e("div",Vt,s(u.title),1),e("h1",Gt,s(((me=i.value)==null?void 0:me.name)||"—"),1),e("div",Ht,[i.value?(n(),R(N,{key:0,color:i.value.active===1?"success":"error"},{default:m(()=>[c(s(i.value.active===1?"فعال":"غیرفعال"),1)]),_:1},8,["color"])):h("",!0),i.value?(n(),R(N,{key:1,color:i.value.sts===1?"processing":"warning"},{default:m(()=>[c(s(i.value.sts===1?"مجاز به سفارش":"عدم سفارش"),1)]),_:1},8,["color"])):h("",!0),(pe=i.value)!=null&&pe.type_str?(n(),R(N,{key:2},{default:m(()=>[c(s(i.value.type_str),1)]),_:1})):h("",!0),((_e=i.value)==null?void 0:_e.is_archive)===1?(n(),R(N,{key:3,color:"default"},{default:m(()=>[...a[3]||(a[3]=[c("بایگانی‌شده",-1)])]),_:1})):h("",!0)]),e("div",Wt,[(ge=i.value)!=null&&ge.mobile?(n(),p("span",Yt,[b(I(de)),e("span",Xt,s(i.value.mobile),1)])):h("",!0),(be=(ye=i.value)==null?void 0:ye.city)!=null&&be.title?(n(),p("span",Qt,[b(I(ut)),c(" "+s(i.value.city.title),1)])):h("",!0),(ke=(fe=i.value)==null?void 0:fe.reagent)!=null&&ke.name?(n(),p("span",Jt,[b(I(dt)),c(" کارشناس فروش: "+s(i.value.reagent.name),1)])):h("",!0),(he=i.value)!=null&&he.caj?(n(),p("span",qt,[b(I(lt)),c(" عضویت از "+s(I(Q)(i.value.caj)),1)])):h("",!0)])])]),e("div",Kt,[b(z,{onClick:a[0]||(a[0]=v=>I(r).back())},{icon:m(()=>[b(I(st))]),default:m(()=>[a[4]||(a[4]=c(" بازگشت ",-1))]),_:1}),le.value?(n(),R(z,{key:0,type:"primary",onClick:a[1]||(a[1]=v=>I(r).push({name:u.editRoute,params:{id:I(k)}}))},{icon:m(()=>[b(I(ot))]),default:m(()=>[a[5]||(a[5]=c(" ویرایش مشتری ",-1))]),_:1})):h("",!0)])]),e("section",Zt,[e("div",ea,[a[7]||(a[7]=e("div",{class:"kpi-label"},"بدهی طلایی",-1)),e("div",{class:F(["kpi-value",te((Ee=i.value)==null?void 0:Ee.remain)])},[c(s(x((xe=i.value)==null?void 0:xe.remain,3)),1),a[6]||(a[6]=e("small",null,"گرم",-1))],2),e("div",ta,s(q((Ie=i.value)==null?void 0:Ie.remain)),1)]),e("div",aa,[a[9]||(a[9]=e("div",{class:"kpi-label"},"بدهی ریالی",-1)),e("div",{class:F(["kpi-value",te((Se=i.value)==null?void 0:Se.rial_remain)])},[c(s(x((Ce=i.value)==null?void 0:Ce.rial_remain,0)),1),a[8]||(a[8]=e("small",null,"ریال",-1))],2),e("div",la,s(q((Te=i.value)==null?void 0:Te.rial_remain)),1)]),e("div",sa,[a[11]||(a[11]=e("div",{class:"kpi-label"},"سقف اعتبار",-1)),e("div",oa,[c(s(x((Ne=i.value)==null?void 0:Ne.gram_level,3)),1),a[10]||(a[10]=e("small",null,"گرم",-1))]),G.value!==null?(n(),p(S,{key:0},[b(oe,{percent:G.value,"stroke-color":ae.value,"show-info":!1,size:"small",class:"kpi-progress"},null,8,["percent","stroke-color"]),e("div",na,s(x(G.value,0))+"٪ از سقف استفاده شده",1)],64)):(n(),p("div",ia,"سقفی تعیین نشده"))]),e("div",ra,[a[13]||(a[13]=e("div",{class:"kpi-label"},"میزان فروش",-1)),e("div",ua,[c(s(x((Re=L.value)==null?void 0:Re.grams_sell,3)),1),a[12]||(a[12]=e("small",null,"گرم",-1))]),a[14]||(a[14]=e("div",{class:"kpi-foot"},"مجموع وزن سفارش‌ها",-1))]),e("div",da,[a[15]||(a[15]=e("div",{class:"kpi-label"},"سفارش‌ها",-1)),e("div",ca,s(x(((De=L.value)==null?void 0:De.total_order)??V.value.length,0)),1),e("div",va,[e("span",{class:F({"text-warning":Number((we=L.value)==null?void 0:we.open_order)>0})},s(x((Ae=L.value)==null?void 0:Ae.open_order,0))+" باز ",3),c(" · "+s(x(((Oe=L.value)==null?void 0:Oe.ledger_entries)??T.value.length,0))+" سند ",1)])])]),e("div",ma,[e("section",pa,[b(Xe,{"active-key":$.value,"onUpdate:activeKey":a[2]||(a[2]=v=>$.value=v),class:"detail-tabs"},{default:m(()=>[b(W,{key:"orders"},{tab:m(()=>[a[16]||(a[16]=c(" سفارش‌ها ",-1)),e("span",_a,s(x(V.value.length,0)),1)]),default:m(()=>[b(H,{size:"middle","data-source":V.value,columns:ie,pagination:X(10,V.value.length),locale:{emptyText:"سفارشی برای این مشتری ثبت نشده است"},"row-key":"id"},{bodyCell:m(({column:v,record:g})=>{var $e;return[v.dataIndex==="name"?(n(),p("span",ga,s(g.name),1)):v.dataIndex==="w"?(n(),p(S,{key:1},[c(s(x(g.w,3))+" ",1),a[17]||(a[17]=e("span",{class:"unit"},"گرم",-1))],64)):v.dataIndex==="status"?(n(),R(N,{key:2,color:($e=Y[g.status])==null?void 0:$e.color},{default:m(()=>{var Pe;return[c(s(((Pe=Y[g.status])==null?void 0:Pe.label)??g.status??"—"),1)]}),_:2},1032,["color"])):v.dataIndex==="branch"?(n(),p(S,{key:3},[c(s(g.branch??"—"),1)],64)):v.dataIndex==="caj"?(n(),p(S,{key:4},[c(s(I(Q)(g.caj)),1)],64)):h("",!0)]}),_:1},8,["data-source","pagination"])]),_:1}),b(W,{key:"documents"},{tab:m(()=>[a[18]||(a[18]=c(" سندهای مالی ",-1)),e("span",ya,s(x(T.value.length,0)),1)]),default:m(()=>[b(H,{size:"middle","data-source":T.value,columns:y,pagination:X(10,T.value.length),locale:{emptyText:"سندی برای این مشتری ثبت نشده است"},"row-key":"id"},{bodyCell:m(({column:v,record:g})=>[v.dataIndex==="type"?(n(),p(S,{key:0},[c(s(ee[g.type]??g.type),1)],64)):v.dataIndex==="value"?(n(),p(S,{key:1},[e("span",{class:F(g.direction==="DEBIT"?"debt":g.direction==="CREDIT"?"credit":"")},s(g.direction==="CREDIT"?"−":g.direction==="DEBIT"?"+":"")+s(x(g.value,g.currency==="RIAL"?0:3)),3),e("span",ba,s(g.currency==="RIAL"?"ریال":"گرم"),1)],64)):v.dataIndex==="confirmed"?(n(),R(ne,{key:2,status:g.confirmed===1?"success":"default",text:g.confirmed===1?"تایید شده":"تایید نشده"},null,8,["status","text"])):v.dataIndex==="note"?(n(),p("span",fa,s(g.note||"—"),1)):v.dataIndex==="caj"?(n(),p(S,{key:4},[c(s(I(Q)(g.caj)),1)],64)):h("",!0)]),_:1},8,["data-source","pagination"])]),_:1}),u.showWallet?(n(),R(W,{key:"wallet"},{tab:m(()=>[a[19]||(a[19]=c(" کیف پول ",-1)),e("span",ka,s(x(P.value.length,0)),1)]),default:m(()=>[b(H,{size:"middle","data-source":P.value,columns:o,pagination:X(10,P.value.length),locale:{emptyText:"اعتباری در کیف پول ثبت نشده است"},"row-key":"id"},{bodyCell:m(({column:v,record:g})=>[v.dataIndex==="value"?(n(),p(S,{key:0},[c(s(x(g.value,3))+" ",1),a[20]||(a[20]=e("span",{class:"unit"},"گرم",-1))],64)):v.dataIndex==="caj"?(n(),p(S,{key:1},[c(s(I(Q)(g.caj)),1)],64)):v.dataIndex==="expires_at"?(n(),p(S,{key:2},[c(s(g.expires_at?I(Q)(g.expires_at):"—"),1)],64)):h("",!0)]),_:1},8,["data-source","pagination"])]),_:1})):h("",!0),u.showActivity?(n(),R(W,{key:"activity"},{tab:m(()=>[a[21]||(a[21]=c(" فعالیت‌ها ",-1)),e("span",ha,s(x(j.value.length,0)),1)]),default:m(()=>[b(H,{size:"middle","data-source":j.value,columns:M,pagination:X(15,j.value.length),locale:{emptyText:"فعالیتی ثبت نشده است"},"row-key":"id"},{bodyCell:m(({column:v,record:g})=>[v.dataIndex==="caj"?(n(),p("span",Ea,s(I(it)(g.caj)),1)):h("",!0)]),_:1},8,["data-source","pagination"])]),_:1})):h("",!0)]),_:1},8,["active-key"])]),e("aside",xa,[e("section",Ia,[a[22]||(a[22]=e("h2",{class:"panel-title"},"اطلاعات هویتی و تماس",-1)),e("dl",Sa,[(n(!0),p(S,null,Be(se.value,v=>(n(),p("div",{key:v.label,class:"fact"},[e("dt",null,s(v.label),1),e("dd",{dir:v.ltr?"ltr":void 0},s(v.value||"—"),9,Ca)]))),128))])]),K.value.length?(n(),p("section",Ta,[a[23]||(a[23]=e("h2",{class:"panel-title"},"اطلاعات کسب‌وکار",-1)),e("dl",Na,[(n(!0),p(S,null,Be(K.value,v=>(n(),p("div",{key:v.label,class:"fact"},[e("dt",null,s(v.label),1),e("dd",null,s(v.value),1)]))),128))])])):h("",!0),b(Lt,{"customer-id":I(k)},null,8,["customer-id"])])])],4)]}),_:1},8,["spinning"])}}}),Pa=We(Ra,[["__scopeId","data-v-46230ed7"]]);export{Pa as C}; +import{c as b,I as Je,aa as Me,ab as Ue,ac as qe,ad as D,ae as ue,af as Ke,ag as Ze,ah as et,ai as je,aj as tt,d as Fe,u as Ve,x as Ge,o as n,b as p,p as e,a as R,w as m,f as c,F as S,t as s,q as F,i as h,A as He,m as A,s as O,y as B,G as ze,r as C,_ as We,k as at,h as I,C as lt,R as st,E as ot,e as Be,l as nt}from"./index-CuIWfDbM.js";import{j as Q,b as it}from"./filters-Cvt98RIq.js";import{m as rt}from"./index-CPTngTRs.js";import{E as ut}from"./EnvironmentOutlined-BBvjB5-8.js";import{U as dt}from"./UserOutlined-aZ-mQgwc.js";var ct={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M877.1 238.7L770.6 132.3c-13-13-30.4-20.3-48.8-20.3s-35.8 7.2-48.8 20.3L558.3 246.8c-13 13-20.3 30.5-20.3 48.9 0 18.5 7.2 35.8 20.3 48.9l89.6 89.7a405.46 405.46 0 01-86.4 127.3c-36.7 36.9-79.6 66-127.2 86.6l-89.6-89.7c-13-13-30.4-20.3-48.8-20.3a68.2 68.2 0 00-48.8 20.3L132.3 673c-13 13-20.3 30.5-20.3 48.9 0 18.5 7.2 35.8 20.3 48.9l106.4 106.4c22.2 22.2 52.8 34.9 84.2 34.9 6.5 0 12.8-.5 19.2-1.6 132.4-21.8 263.8-92.3 369.9-198.3C818 606 888.4 474.6 910.4 342.1c6.3-37.6-6.3-76.3-33.3-103.4zm-37.6 91.5c-19.5 117.9-82.9 235.5-178.4 331s-213 158.9-330.9 178.4c-14.8 2.5-30-2.5-40.8-13.2L184.9 721.9 295.7 611l119.8 120 .9.9 21.6-8a481.29 481.29 0 00285.7-285.8l8-21.6-120.8-120.7 110.8-110.9 104.5 104.5c10.8 10.8 15.8 26 13.3 40.8z"}}]},name:"phone",theme:"outlined"};function Le(u){for(var l=1;lnew Me(u).setAlpha(l).toRgbString(),J=(u,l)=>new Me(u).lighten(l).toHexString(),mt=u=>{const l=Ue(u,{theme:"dark"});return{1:l[0],2:l[1],3:l[2],4:l[3],5:l[6],6:l[5],7:l[4],8:l[6],9:l[5],10:l[4]}},pt=(u,l)=>{const d=u||"#000",r=l||"#fff";return{colorBgBase:d,colorTextBase:r,colorText:U(r,.85),colorTextSecondary:U(r,.65),colorTextTertiary:U(r,.45),colorTextQuaternary:U(r,.25),colorFill:U(r,.18),colorFillSecondary:U(r,.12),colorFillTertiary:U(r,.08),colorFillQuaternary:U(r,.04),colorBgElevated:J(d,12),colorBgContainer:J(d,8),colorBgLayout:J(d,0),colorBgSpotlight:J(d,26),colorBorder:J(d,26),colorBorderSecondary:J(d,19)}},_t=(u,l)=>{const d=Object.keys(qe).map(E=>{const f=Ue(u[E],{theme:"dark"});return new Array(10).fill(1).reduce((k,_,$)=>(k[`${E}-${$+1}`]=f[$],k),{})}).reduce((E,f)=>(E=D(D({},E),f),E),{}),r=l??ue(u);return D(D(D({},r),d),Ke(u,{generateColorPalettes:mt,generateNeutralColorPalettes:pt}))};function gt(u){const{sizeUnit:l,sizeStep:d}=u,r=d-2;return{sizeXXL:l*(r+10),sizeXL:l*(r+6),sizeLG:l*(r+2),sizeMD:l*(r+2),sizeMS:l*(r+1),size:l*r,sizeSM:l*r,sizeXS:l*(r-1),sizeXXS:l*(r-1)}}const yt=(u,l)=>{const d=l??ue(u),r=d.fontSizeSM,E=d.controlHeight-4;return D(D(D(D(D({},d),gt(l??u)),Ze(r)),{controlHeight:E}),et(D(D({},d),{controlHeight:E})))};function bt(){const[u,l,d]=tt();return{theme:u,token:l,hashId:d}}const Ye={defaultConfig:je,defaultSeed:je.token,useToken:bt,defaultAlgorithm:ue,darkAlgorithm:_t,compactAlgorithm:yt},ft={class:"acc-head"},kt={class:"acc-body"},ht={class:"acc-code"},Et={class:"code",dir:"ltr"},xt={class:"origin"},It={key:1,class:"muted"},St={class:"balances"},Ct={class:"balance"},Tt={class:"line"},Nt={class:"line"},Rt={class:"hint"},Dt={class:"balance"},wt={class:"line"},At={class:"line"},Ot={key:0,class:"last-job"},$t={key:0,class:"warn"},Pt={class:"link-form"},jt={class:"label"},zt={class:"link-row"},Bt=Fe({__name:"CustomerAccountingCard",props:{customerId:{}},setup(u){const l=u,d={LINKED:"جفت با موبایل",IMPORTED:"وارد شده از حسابداری",PUSHED:"ساخته شده از اپ",MANUAL:"دستی"},r={PENDING:"در صف",SENDING:"در حال ارسال",SENT:"ارسال شد",FAILED:"ناموفق",NEEDS_REVIEW:"نیاز به بررسی",RESOLVED:"حل‌شده"},E={PENDING:"default",SENDING:"processing",SENT:"success",FAILED:"error",NEEDS_REVIEW:"warning",RESOLVED:"success"},f=Ve(),{token:k}=Ye.useToken(),_=A(null),$=A(!1),i=A(""),L=O(()=>({"--acc-bg":k.value.colorBgContainer,"--acc-border":k.value.colorBorderSecondary,"--acc-fill":k.value.colorFillQuaternary,"--acc-text":k.value.colorText,"--acc-text-2":k.value.colorTextSecondary,"--acc-text-3":k.value.colorTextTertiary,"--acc-error":k.value.colorError,"--acc-success":k.value.colorSuccess})),V=O(()=>!!f.hasPermission("config.accounting")&&_.value&&_.value.provider!=="none"),T=O(()=>{var y,o;return(o=(y=_.value)==null?void 0:y.jobs)==null?void 0:o[0]}),P=(y,o)=>y==null?"—":Number(y).toLocaleString("fa-IR",{maximumFractionDigits:o}),j=y=>Number(y)>0?"debt":Number(y)<0?"credit":"",Z=y=>y?rt(y).format("jYYYY/jMM/jDD HH:mm"):"";async function Y(){if(f.hasPermission("config.accounting")){$.value=!0;try{const{data:y}=await B.get(`admin/accounting/customers/${l.customerId}`);_.value=y}catch{_.value=null}finally{$.value=!1}}}async function ee(){var y,o;try{await B.post("admin/accounting/links",{entityType:"CUSTOMER",entityId:l.customerId,externalCode:i.value.trim()}),ze.success("لینک شد"),i.value="",Y()}catch(M){ze.error(((o=(y=M==null?void 0:M.response)==null?void 0:y.data)==null?void 0:o.message)??"خطا")}}async function ie(){var y;(y=_.value)!=null&&y.link&&(await B.delete(`admin/accounting/links/${_.value.link.id}`),Y())}return Ge(Y),(y,o)=>{var G;const M=C("a-tag"),x=C("a-badge"),te=C("a-input"),q=C("a-button"),X=C("a-popconfirm"),re=C("a-spin");return V.value?(n(),p("section",{key:0,class:"acc-card",style:He(L.value)},[e("header",ft,[o[4]||(o[4]=e("h2",null,"حسابداری",-1)),(G=_.value)!=null&&G.link?(n(),R(M,{key:0,color:"success"},{default:m(()=>[...o[2]||(o[2]=[c("لینک شده",-1)])]),_:1})):(n(),R(M,{key:1,color:"warning"},{default:m(()=>[...o[3]||(o[3]=[c("لینک نشده",-1)])]),_:1}))]),b(re,{spinning:$.value},{default:m(()=>{var ae,le,se,K,t,a,w,N,z,oe,H,W;return[e("div",kt,[e("div",ht,[o[5]||(o[5]=e("span",{class:"label"},"کد حساب",-1)),(ae=_.value)!=null&&ae.link?(n(),p(S,{key:0},[e("span",Et,s(_.value.link.externalCode),1),e("span",xt,s(d[_.value.link.origin]??_.value.link.origin),1)],64)):(n(),p("span",It,"—"))]),e("div",St,[e("div",Ct,[o[10]||(o[10]=e("div",{class:"label"},"مانده‌ی حسابداری",-1)),(le=_.value)!=null&&le.accounting?(n(),p(S,{key:0},[e("div",Tt,[e("span",{class:F(j(_.value.accounting.gold))},s(P(_.value.accounting.gold,3)),3),o[6]||(o[6]=e("small",null,"گرم",-1))]),e("div",Nt,[e("span",{class:F(j(_.value.accounting.rial))},s(P(_.value.accounting.rial,0)),3),o[7]||(o[7]=e("small",null,"ریال",-1))]),e("div",Rt,s(Z(_.value.accounting.at)),1)],64)):(n(),p(S,{key:1},[o[8]||(o[8]=e("div",{class:"line muted"},"—",-1)),o[9]||(o[9]=e("div",{class:"hint"},"هنوز دریافت نشده",-1))],64))]),e("div",Dt,[o[13]||(o[13]=e("div",{class:"label"},"مانده‌ی دفتر اپ",-1)),e("div",wt,[e("span",{class:F(j((K=(se=_.value)==null?void 0:se.internal)==null?void 0:K.gold))},s(P((a=(t=_.value)==null?void 0:t.internal)==null?void 0:a.gold,3)),3),o[11]||(o[11]=e("small",null,"گرم",-1))]),e("div",At,[e("span",{class:F(j((N=(w=_.value)==null?void 0:w.internal)==null?void 0:N.rial))},s(P((oe=(z=_.value)==null?void 0:z.internal)==null?void 0:oe.rial,0)),3),o[12]||(o[12]=e("small",null,"ریال",-1))]),o[14]||(o[14]=e("div",{class:"hint"},"مبنای سقف اعتبار",-1))])]),T.value?(n(),p("div",Ot,[b(x,{status:E[T.value.status]??"default"},null,8,["status"]),c(" آخرین ارسال: "+s(r[T.value.status]??T.value.status)+" — "+s(Z(T.value.updatedAt))+" ",1),T.value.lastError?(n(),p("div",$t,s(T.value.lastError),1)):h("",!0)])):h("",!0),e("div",Pt,[e("div",jt,s((H=_.value)!=null&&H.link?"تغییر لینک":"لینک دستی"),1),e("div",zt,[b(te,{value:i.value,"onUpdate:value":o[0]||(o[0]=ne=>i.value=ne),dir:"ltr",placeholder:"کد حساب در حسابداری",onPressEnter:o[1]||(o[1]=ne=>i.value.trim()&&ee())},null,8,["value"]),b(q,{type:"primary",ghost:"",disabled:!i.value.trim(),onClick:ee},{default:m(()=>[...o[15]||(o[15]=[c("لینک",-1)])]),_:1},8,["disabled"])]),(W=_.value)!=null&&W.link?(n(),R(X,{key:0,title:"لینک حذف شود؟",onConfirm:ie},{default:m(()=>[b(q,{type:"link",danger:"",size:"small",class:"unlink"},{default:m(()=>[...o[16]||(o[16]=[c("حذف لینک فعلی",-1)])]),_:1})]),_:1})):h("",!0)])])]}),_:1},8,["spinning"])],4)):h("",!0)}}}),Lt=We(Bt,[["__scopeId","data-v-17e381b4"]]),Mt={class:"panel hero"},Ut={class:"hero-main"},Ft={class:"hero-text"},Vt={class:"hero-eyebrow"},Gt={class:"hero-name"},Ht={class:"hero-tags"},Wt={class:"hero-meta"},Yt={key:0,class:"meta-item"},Xt={dir:"ltr"},Qt={key:1,class:"meta-item"},Jt={key:2,class:"meta-item"},qt={key:3,class:"meta-item"},Kt={class:"hero-actions"},Zt={class:"kpis"},ea={class:"panel kpi"},ta={class:"kpi-foot"},aa={class:"panel kpi"},la={class:"kpi-foot"},sa={class:"panel kpi"},oa={class:"kpi-value"},na={class:"kpi-foot"},ia={key:1,class:"kpi-foot"},ra={class:"panel kpi"},ua={class:"kpi-value"},da={class:"panel kpi"},ca={class:"kpi-value"},va={class:"kpi-foot"},ma={class:"layout"},pa={class:"panel layout-main"},_a={class:"tab-count"},ga={key:0,class:"mono",dir:"ltr"},ya={class:"tab-count"},ba={class:"unit"},fa={key:3,class:"note"},ka={class:"tab-count"},ha={class:"tab-count"},Ea={key:0,dir:"ltr"},xa={class:"layout-side"},Ia={class:"panel"},Sa={class:"facts"},Ca=["dir"],Ta={key:0,class:"panel"},Na={class:"facts"},Ra=Fe({__name:"CustomerDetail",props:{title:{default:"مشاهده اطلاعات مشتری"},showWallet:{type:Boolean,default:!1},showActivity:{type:Boolean,default:!1},defaultTab:{default:"orders"},editRoute:{default:void 0}},setup(u){const l=u,d=at(),r=nt(),E=Ve(),{token:f}=Ye.useToken(),k=d.params.id,_=A(!1),$=A(l.defaultTab),i=A(void 0),L=A(void 0),V=A([]),T=A([]),P=A([]),j=A([]),Z=O(()=>({"--cd-bg":f.value.colorBgContainer,"--cd-border":f.value.colorBorderSecondary,"--cd-text":f.value.colorText,"--cd-text-2":f.value.colorTextSecondary,"--cd-text-3":f.value.colorTextTertiary,"--cd-fill":f.value.colorFillQuaternary,"--cd-primary":f.value.colorPrimary,"--cd-primary-bg":f.value.colorPrimaryBg,"--cd-error":f.value.colorError,"--cd-success":f.value.colorSuccess,"--cd-warning":f.value.colorWarning})),Y={SUSPENDED:{label:"معلق (عبور از سقف)",color:"error"},PLACED:{label:"ثبت سفارش",color:"default"},ADMIN_APPROVED:{label:"تأیید مدیر",color:"processing"},SOURCING:{label:"در حال تأمین",color:"processing"},PREPARING:{label:"در حال آماده‌سازی",color:"processing"},DELIVERED_TO_AGENT:{label:"تحویل مسئول فروش",color:"cyan"},DELIVERED_TO_CUSTOMER:{label:"تحویل مشتری",color:"success"},CANCELLED:{label:"لغو شده",color:"default"}},ee={ORDER_STOCK:"سفارش کالای موجود",ORDER_PRE_ORDER:"پیش‌سفارش",REPAYMENT_MELTED_GOLD:"تسویه با آبشده",REPAYMENT_TRANSFER:"تسویه با واریز",REPAYMENT_CHEQUE:"تسویه با چک",REPAYMENT_CASH:"تسویه نقدی",WALLET_BONUS:"پاداش کیف پول",ADJUSTMENT:"اصلاحیه"},ie=[{title:"شماره سفارش",dataIndex:"name"},{title:"وضعیت",dataIndex:"status"},{title:"وزن",dataIndex:"w"},{title:"تعداد آیتم",dataIndex:"items_count",align:"center"},{title:"شعبه",dataIndex:"branch"},{title:"تاریخ",dataIndex:"caj"}],y=[{title:"نوع",dataIndex:"type"},{title:"مقدار",dataIndex:"value"},{title:"وضعیت",dataIndex:"confirmed"},{title:"توضیحات",dataIndex:"note",ellipsis:!0},{title:"تاریخ",dataIndex:"caj"}],o=[{title:"مقدار",dataIndex:"value"},{title:"تاریخ اعطا",dataIndex:"caj"},{title:"انقضا",dataIndex:"expires_at"}],M=[{title:"عملیات",dataIndex:"action"},{title:"جزئیات",dataIndex:"detail"},{title:"تاریخ",dataIndex:"caj"}],x=(t,a)=>t==null||t===""||Number.isNaN(Number(t))?"—":Number(t).toLocaleString("fa-IR",{maximumFractionDigits:a}),te=t=>Number(t)>0?"debt":Number(t)<0?"credit":"",q=t=>t==null?"":Number(t)>0?"بدهکار":Number(t)<0?"بستانکار":"تسویه",X=(t,a)=>a>t?{pageSize:t,size:"small",showSizeChanger:!1}:!1,re=O(()=>{var t;return(((t=i.value)==null?void 0:t.name)??"").trim().charAt(0)||"؟"}),G=O(()=>{var w,N;const t=Number((w=i.value)==null?void 0:w.gram_level);if(!t||t<=0)return null;const a=Math.max(Number((N=i.value)==null?void 0:N.remain)||0,0);return Math.min(Math.round(a/t*100),100)}),ae=O(()=>{const t=G.value??0;return t>=90?f.value.colorError:t>=70?f.value.colorWarning:f.value.colorPrimary}),le=O(()=>{if(!l.editRoute||!r.hasRoute(l.editRoute))return!1;const t=r.resolve({name:l.editRoute,params:{id:k}}).meta;return t.superAdminOnly&&!E.isSuperAdmin?!1:!t.role||!!E.hasPermission(t.role)}),se=O(()=>{var a;const t=i.value;return[{label:"موبایل",value:t==null?void 0:t.mobile,ltr:!0},{label:"تلفن ثابت",value:t==null?void 0:t.phone,ltr:!0},{label:"کد ملی",value:t==null?void 0:t.national_code,ltr:!0},{label:"تاریخ تولد",value:t!=null&&t.birth_date?Q(t.birth_date):null},{label:"شهر",value:(a=t==null?void 0:t.city)==null?void 0:a.title},{label:"آدرس",value:t==null?void 0:t.address}]}),K=O(()=>{var a;const t=i.value;return[{label:"نام فروشگاه",value:t==null?void 0:t.store_name},{label:"پاساژ",value:t==null?void 0:t.pasazh_name},{label:"منطقه",value:t==null?void 0:t.zone},{label:"کد عضویت",value:t==null?void 0:t.mcode},{label:"کارشناس فروش",value:(a=t==null?void 0:t.reagent)==null?void 0:a.name},{label:"درصد اجرت",value:(t==null?void 0:t.percent)!==null&&(t==null?void 0:t.percent)!==void 0&&(t==null?void 0:t.percent)!==""?`${x(t.percent,2)}٪`:null}].filter(w=>w.value)});return Ge(async()=>{try{_.value=!0;const[t,a,w,N]=await Promise.all([B.get(`customer/${k}`),B.get(`major/dashboard/${k}`).catch(()=>({data:void 0})),B.get(`admin/customers-omde/${k}/orders`).catch(()=>({data:[]})),B.get(`admin/customers-omde/${k}/documents`).catch(()=>({data:[]}))]);if(i.value=t.data,L.value=a.data,V.value=w.data,T.value=N.data,l.showWallet){const z=await B.get(`admin/customers-omde/${k}/wallet`).catch(()=>({data:[]}));P.value=z.data}if(l.showActivity){const z=await B.get(`log/ago/${k}`).catch(()=>({data:[]}));j.value=z.data}}catch(t){console.log(t)}finally{_.value=!1}}),(t,a)=>{const w=C("a-avatar"),N=C("a-tag"),z=C("a-button"),oe=C("a-progress"),H=C("a-table"),W=C("a-tab-pane"),ne=C("a-badge"),Xe=C("a-tabs"),Qe=C("a-spin");return n(),R(Qe,{spinning:_.value},{default:m(()=>{var ce,ve,me,pe,_e,ge,ye,be,fe,ke,he,Ee,xe,Ie,Se,Ce,Te,Ne,Re,De,we,Ae,Oe;return[e("div",{class:"customer-detail",style:He(Z.value)},[e("section",Mt,[e("div",Ut,[b(w,{size:64,src:(ve=(ce=i.value)==null?void 0:ce.image)==null?void 0:ve.image,class:"hero-avatar"},{default:m(()=>[c(s(re.value),1)]),_:1},8,["src"]),e("div",Ft,[e("div",Vt,s(u.title),1),e("h1",Gt,s(((me=i.value)==null?void 0:me.name)||"—"),1),e("div",Ht,[i.value?(n(),R(N,{key:0,color:i.value.active===1?"success":"error"},{default:m(()=>[c(s(i.value.active===1?"فعال":"غیرفعال"),1)]),_:1},8,["color"])):h("",!0),i.value?(n(),R(N,{key:1,color:i.value.sts===1?"processing":"warning"},{default:m(()=>[c(s(i.value.sts===1?"مجاز به سفارش":"عدم سفارش"),1)]),_:1},8,["color"])):h("",!0),(pe=i.value)!=null&&pe.type_str?(n(),R(N,{key:2},{default:m(()=>[c(s(i.value.type_str),1)]),_:1})):h("",!0),((_e=i.value)==null?void 0:_e.is_archive)===1?(n(),R(N,{key:3,color:"default"},{default:m(()=>[...a[3]||(a[3]=[c("بایگانی‌شده",-1)])]),_:1})):h("",!0)]),e("div",Wt,[(ge=i.value)!=null&&ge.mobile?(n(),p("span",Yt,[b(I(de)),e("span",Xt,s(i.value.mobile),1)])):h("",!0),(be=(ye=i.value)==null?void 0:ye.city)!=null&&be.title?(n(),p("span",Qt,[b(I(ut)),c(" "+s(i.value.city.title),1)])):h("",!0),(ke=(fe=i.value)==null?void 0:fe.reagent)!=null&&ke.name?(n(),p("span",Jt,[b(I(dt)),c(" کارشناس فروش: "+s(i.value.reagent.name),1)])):h("",!0),(he=i.value)!=null&&he.caj?(n(),p("span",qt,[b(I(lt)),c(" عضویت از "+s(I(Q)(i.value.caj)),1)])):h("",!0)])])]),e("div",Kt,[b(z,{onClick:a[0]||(a[0]=v=>I(r).back())},{icon:m(()=>[b(I(st))]),default:m(()=>[a[4]||(a[4]=c(" بازگشت ",-1))]),_:1}),le.value?(n(),R(z,{key:0,type:"primary",onClick:a[1]||(a[1]=v=>I(r).push({name:u.editRoute,params:{id:I(k)}}))},{icon:m(()=>[b(I(ot))]),default:m(()=>[a[5]||(a[5]=c(" ویرایش مشتری ",-1))]),_:1})):h("",!0)])]),e("section",Zt,[e("div",ea,[a[7]||(a[7]=e("div",{class:"kpi-label"},"بدهی طلایی",-1)),e("div",{class:F(["kpi-value",te((Ee=i.value)==null?void 0:Ee.remain)])},[c(s(x((xe=i.value)==null?void 0:xe.remain,3)),1),a[6]||(a[6]=e("small",null,"گرم",-1))],2),e("div",ta,s(q((Ie=i.value)==null?void 0:Ie.remain)),1)]),e("div",aa,[a[9]||(a[9]=e("div",{class:"kpi-label"},"بدهی ریالی",-1)),e("div",{class:F(["kpi-value",te((Se=i.value)==null?void 0:Se.rial_remain)])},[c(s(x((Ce=i.value)==null?void 0:Ce.rial_remain,0)),1),a[8]||(a[8]=e("small",null,"ریال",-1))],2),e("div",la,s(q((Te=i.value)==null?void 0:Te.rial_remain)),1)]),e("div",sa,[a[11]||(a[11]=e("div",{class:"kpi-label"},"سقف اعتبار",-1)),e("div",oa,[c(s(x((Ne=i.value)==null?void 0:Ne.gram_level,3)),1),a[10]||(a[10]=e("small",null,"گرم",-1))]),G.value!==null?(n(),p(S,{key:0},[b(oe,{percent:G.value,"stroke-color":ae.value,"show-info":!1,size:"small",class:"kpi-progress"},null,8,["percent","stroke-color"]),e("div",na,s(x(G.value,0))+"٪ از سقف استفاده شده",1)],64)):(n(),p("div",ia,"سقفی تعیین نشده"))]),e("div",ra,[a[13]||(a[13]=e("div",{class:"kpi-label"},"میزان فروش",-1)),e("div",ua,[c(s(x((Re=L.value)==null?void 0:Re.grams_sell,3)),1),a[12]||(a[12]=e("small",null,"گرم",-1))]),a[14]||(a[14]=e("div",{class:"kpi-foot"},"مجموع وزن سفارش‌ها",-1))]),e("div",da,[a[15]||(a[15]=e("div",{class:"kpi-label"},"سفارش‌ها",-1)),e("div",ca,s(x(((De=L.value)==null?void 0:De.total_order)??V.value.length,0)),1),e("div",va,[e("span",{class:F({"text-warning":Number((we=L.value)==null?void 0:we.open_order)>0})},s(x((Ae=L.value)==null?void 0:Ae.open_order,0))+" باز ",3),c(" · "+s(x(((Oe=L.value)==null?void 0:Oe.ledger_entries)??T.value.length,0))+" سند ",1)])])]),e("div",ma,[e("section",pa,[b(Xe,{"active-key":$.value,"onUpdate:activeKey":a[2]||(a[2]=v=>$.value=v),class:"detail-tabs"},{default:m(()=>[b(W,{key:"orders"},{tab:m(()=>[a[16]||(a[16]=c(" سفارش‌ها ",-1)),e("span",_a,s(x(V.value.length,0)),1)]),default:m(()=>[b(H,{size:"middle","data-source":V.value,columns:ie,pagination:X(10,V.value.length),locale:{emptyText:"سفارشی برای این مشتری ثبت نشده است"},"row-key":"id"},{bodyCell:m(({column:v,record:g})=>{var $e;return[v.dataIndex==="name"?(n(),p("span",ga,s(g.name),1)):v.dataIndex==="w"?(n(),p(S,{key:1},[c(s(x(g.w,3))+" ",1),a[17]||(a[17]=e("span",{class:"unit"},"گرم",-1))],64)):v.dataIndex==="status"?(n(),R(N,{key:2,color:($e=Y[g.status])==null?void 0:$e.color},{default:m(()=>{var Pe;return[c(s(((Pe=Y[g.status])==null?void 0:Pe.label)??g.status??"—"),1)]}),_:2},1032,["color"])):v.dataIndex==="branch"?(n(),p(S,{key:3},[c(s(g.branch??"—"),1)],64)):v.dataIndex==="caj"?(n(),p(S,{key:4},[c(s(I(Q)(g.caj)),1)],64)):h("",!0)]}),_:1},8,["data-source","pagination"])]),_:1}),b(W,{key:"documents"},{tab:m(()=>[a[18]||(a[18]=c(" سندهای مالی ",-1)),e("span",ya,s(x(T.value.length,0)),1)]),default:m(()=>[b(H,{size:"middle","data-source":T.value,columns:y,pagination:X(10,T.value.length),locale:{emptyText:"سندی برای این مشتری ثبت نشده است"},"row-key":"id"},{bodyCell:m(({column:v,record:g})=>[v.dataIndex==="type"?(n(),p(S,{key:0},[c(s(ee[g.type]??g.type),1)],64)):v.dataIndex==="value"?(n(),p(S,{key:1},[e("span",{class:F(g.direction==="DEBIT"?"debt":g.direction==="CREDIT"?"credit":"")},s(g.direction==="CREDIT"?"−":g.direction==="DEBIT"?"+":"")+s(x(g.value,g.currency==="RIAL"?0:3)),3),e("span",ba,s(g.currency==="RIAL"?"ریال":"گرم"),1)],64)):v.dataIndex==="confirmed"?(n(),R(ne,{key:2,status:g.confirmed===1?"success":"default",text:g.confirmed===1?"تایید شده":"تایید نشده"},null,8,["status","text"])):v.dataIndex==="note"?(n(),p("span",fa,s(g.note||"—"),1)):v.dataIndex==="caj"?(n(),p(S,{key:4},[c(s(I(Q)(g.caj)),1)],64)):h("",!0)]),_:1},8,["data-source","pagination"])]),_:1}),u.showWallet?(n(),R(W,{key:"wallet"},{tab:m(()=>[a[19]||(a[19]=c(" کیف پول ",-1)),e("span",ka,s(x(P.value.length,0)),1)]),default:m(()=>[b(H,{size:"middle","data-source":P.value,columns:o,pagination:X(10,P.value.length),locale:{emptyText:"اعتباری در کیف پول ثبت نشده است"},"row-key":"id"},{bodyCell:m(({column:v,record:g})=>[v.dataIndex==="value"?(n(),p(S,{key:0},[c(s(x(g.value,3))+" ",1),a[20]||(a[20]=e("span",{class:"unit"},"گرم",-1))],64)):v.dataIndex==="caj"?(n(),p(S,{key:1},[c(s(I(Q)(g.caj)),1)],64)):v.dataIndex==="expires_at"?(n(),p(S,{key:2},[c(s(g.expires_at?I(Q)(g.expires_at):"—"),1)],64)):h("",!0)]),_:1},8,["data-source","pagination"])]),_:1})):h("",!0),u.showActivity?(n(),R(W,{key:"activity"},{tab:m(()=>[a[21]||(a[21]=c(" فعالیت‌ها ",-1)),e("span",ha,s(x(j.value.length,0)),1)]),default:m(()=>[b(H,{size:"middle","data-source":j.value,columns:M,pagination:X(15,j.value.length),locale:{emptyText:"فعالیتی ثبت نشده است"},"row-key":"id"},{bodyCell:m(({column:v,record:g})=>[v.dataIndex==="caj"?(n(),p("span",Ea,s(I(it)(g.caj)),1)):h("",!0)]),_:1},8,["data-source","pagination"])]),_:1})):h("",!0)]),_:1},8,["active-key"])]),e("aside",xa,[e("section",Ia,[a[22]||(a[22]=e("h2",{class:"panel-title"},"اطلاعات هویتی و تماس",-1)),e("dl",Sa,[(n(!0),p(S,null,Be(se.value,v=>(n(),p("div",{key:v.label,class:"fact"},[e("dt",null,s(v.label),1),e("dd",{dir:v.ltr?"ltr":void 0},s(v.value||"—"),9,Ca)]))),128))])]),K.value.length?(n(),p("section",Ta,[a[23]||(a[23]=e("h2",{class:"panel-title"},"اطلاعات کسب‌وکار",-1)),e("dl",Na,[(n(!0),p(S,null,Be(K.value,v=>(n(),p("div",{key:v.label,class:"fact"},[e("dt",null,s(v.label),1),e("dd",null,s(v.value),1)]))),128))])])):h("",!0),b(Lt,{"customer-id":I(k)},null,8,["customer-id"])])])],4)]}),_:1},8,["spinning"])}}}),Pa=We(Ra,[["__scopeId","data-v-46230ed7"]]);export{Pa as C}; diff --git a/apps/admin-panel/dist/assets/Dashboard-BYSpDtqA.js b/apps/admin-panel/dist/assets/Dashboard-Dlp4nbOK.js similarity index 98% rename from apps/admin-panel/dist/assets/Dashboard-BYSpDtqA.js rename to apps/admin-panel/dist/assets/Dashboard-Dlp4nbOK.js index 2fcd167..07d1b60 100644 --- a/apps/admin-panel/dist/assets/Dashboard-BYSpDtqA.js +++ b/apps/admin-panel/dist/assets/Dashboard-Dlp4nbOK.js @@ -1 +1 @@ -import{j as M,p as j}from"./filters-D6Nzbpog.js";import{c as h,I,d as Ne,v as Pe,u as Te,x as Ae,y as Be,a as b,w as S,m as K,z as Re,r as O,o as d,p as e,h as g,C as je,t as o,f as v,i as P,q as ee,b as y,A as T,F as L,e as te,B as He,s as c,_ as Ie}from"./index-C9T3Vski.js";import{U as De,D as Fe}from"./UserAddOutlined-BlPGjUCi.js";import{C as Ge}from"./CreditCardOutlined-BxTC_oHD.js";import"./index-m6pCHaEa.js";var $e={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M926 164H94c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V196c0-17.7-14.3-32-32-32zm-40 632H134V236h752v560zm-658.9-82.3c3.1 3.1 8.2 3.1 11.3 0l172.5-172.5 114.4 114.5c3.1 3.1 8.2 3.1 11.3 0l297-297.2c3.1-3.1 3.1-8.2 0-11.3l-36.8-36.8a8.03 8.03 0 00-11.3 0L531 565 416.6 450.5a8.03 8.03 0 00-11.3 0l-214.9 215a8.03 8.03 0 000 11.3l36.7 36.9z"}}]},name:"fund",theme:"outlined"};function se(r){for(var n=1;np.isSuperAdmin),ne=c(()=>a.isMobile?240:300),oe=c(()=>a.isMobile?220:240),re=c(()=>a.isMobile?260:320),l=Re({customerCount:0,allgram:0,ordercount:0,reagent:[],lastOrder:[],sumLastOrder:0,sumLastOrderMonth:0,ordersTrend:[],statusBreakdown:[],channelBreakdown:[],topProducts:[],goldPricePerGram:null,totalCustomerDebtGrams:0}),B=[C,k],ie=[H,C,C,H,H,k,k,Kt],z={fontFamily:"inherit",parentHeightOffset:0,toolbar:{show:!1}},R={borderColor:"#eef0f5",strokeDashArray:4},de=[{title:"شماره سفارش",dataIndex:"name"},{title:"مشتری",dataIndex:"customer"},{title:"وزن",dataIndex:"w"},{title:"وضعیت",dataIndex:"sts_str"},{title:"تاریخ",dataIndex:"caj"}];function G(s){return{success:"green",warning:"orange",danger:"red",primary:"blue"}[s]??""}function m(s){return j(s??0)||"0"}const ce=c(()=>M(new Date().toISOString())),ue=c(()=>l.goldPricePerGram?`${j(Math.round(Number(l.goldPricePerGram)))} تومان`:"—"),$=c(()=>j(Number(l.totalCustomerDebtGrams??0).toFixed(2))),E=c(()=>{const s=Number(l.sumLastOrder??0),t=Number(l.sumLastOrderMonth??0);return s>0?(t/s).toFixed(2):"0"}),W=c(()=>(l.ordersTrend??[]).map(s=>s.total)),pe={chart:{...z,sparkline:{enabled:!0},animations:{enabled:!1}},colors:[k],stroke:{curve:"smooth",width:2},fill:{type:"gradient",gradient:{opacityFrom:.35,opacityTo:0}},tooltip:{enabled:!1}},w=K("area"),_e=[{label:"ناحیه‌ای",value:"area"},{label:"ستونی",value:"bar"}],he=c(()=>(l.ordersTrend??[]).reduce((s,t)=>s+Number(t.retail??0),0)),me=c(()=>(l.ordersTrend??[]).reduce((s,t)=>s+Number(t.wholesale??0),0)),be=c(()=>{const s=l.ordersTrend??[],t={name:"عمده فروشی",data:s.map(_=>_.wholesale)};return u.value?[{name:"تک فروشی",data:s.map(_=>_.retail)},t]:[t]}),ge=c(()=>({chart:{...z,stacked:w.value==="bar"},colors:u.value?[C,k]:[k],dataLabels:{enabled:!1},stroke:w.value==="area"?{curve:"smooth",width:2.5}:{width:0},fill:w.value==="area"?{type:"gradient",gradient:{opacityFrom:.3,opacityTo:.02}}:{opacity:1},plotOptions:{bar:{columnWidth:"55%",borderRadius:3,borderRadiusApplication:"end"}},legend:{show:!1},grid:{...R,padding:a.isMobile?{left:4,right:4}:{}},markers:{size:0,hover:{size:5}},xaxis:{categories:(l.ordersTrend??[]).map(s=>String(M(s.date)??"").slice(5)),tickAmount:a.isMobile?6:10,axisBorder:{show:!1},axisTicks:{show:!1},labels:{rotate:0,hideOverlappingLabels:!0,style:{colors:x,fontSize:a.isMobile?"10px":"12px"}}},yaxis:{labels:{style:{colors:x,fontSize:a.isMobile?"10px":"12px"},formatter:s=>String(Math.round(s))}},tooltip:{shared:!0,intersect:!1,x:{formatter:(s,t)=>{var _;return M((_=(l.ordersTrend??[])[t==null?void 0:t.dataPointIndex])==null?void 0:_.date)}}}})),U=c(()=>(l.channelBreakdown??[]).map(s=>Number(s.count??0))),fe=c(()=>({chart:{...z},labels:(l.channelBreakdown??[]).map(s=>s.label),colors:B,legend:{show:!1},dataLabels:{enabled:!1},stroke:{width:3,colors:["#fff"]},plotOptions:{pie:{donut:{size:"74%",labels:{show:!0,name:{fontSize:"13px",color:x,offsetY:18},value:{fontSize:"16px",fontWeight:500,color:C,offsetY:-14},total:{show:!0,label:"کل سفارش‌ها",color:x,fontSize:"13px",formatter:s=>String(s.globals.seriesTotals.reduce((t,_)=>t+_,0))}}}}}})),ve=c(()=>(l.statusBreakdown??[]).reduce((s,t)=>s+Number(t.count??0),0)),V=c(()=>[{name:"تعداد",data:(l.statusBreakdown??[]).map(s=>Number(s.count??0))}]),ye=c(()=>{var s;return Math.max(200,(((s=l.statusBreakdown)==null?void 0:s.length)??0)*(a.isMobile?38:44)+40)}),Oe=c(()=>({chart:{...z},colors:ie,plotOptions:{bar:{horizontal:!0,distributed:!0,borderRadius:6,borderRadiusApplication:"end",barHeight:"58%"}},legend:{show:!1},dataLabels:{enabled:!0,textAnchor:"start",offsetX:8,style:{colors:["#fff"],fontWeight:500,fontSize:"12px"}},grid:{...R,xaxis:{lines:{show:!0}},yaxis:{lines:{show:!1}}},xaxis:{categories:(l.statusBreakdown??[]).map(s=>s.label),axisBorder:{show:!1},axisTicks:{show:!1},labels:{style:{colors:x,fontSize:"11px"}}},yaxis:{labels:{maxWidth:a.isMobile?110:160,style:{colors:"#475467",fontSize:"12px",fontWeight:500}}},tooltip:{y:{formatter:s=>`${s} سفارش`}}})),ke=c(()=>Math.max(1,...(l.reagent??[]).map(s=>Number(s.grams_sell??0))));function we(s){return Math.max(2,Math.round(Number(s.grams_sell??0)/ke.value*100))}const Y=c(()=>[{name:"وزن فروخته‌شده (گرم)",data:(l.topProducts??[]).map(s=>Number(s.weight??0))}]),xe=c(()=>({chart:{...z},plotOptions:{bar:a.isMobile?{horizontal:!0,borderRadius:6,borderRadiusApplication:"end",barHeight:"60%"}:{borderRadius:8,borderRadiusApplication:"end",columnWidth:"45%"}},colors:[k],fill:{type:"gradient",gradient:{shade:"light",type:"vertical",shadeIntensity:.2,opacityFrom:1,opacityTo:.75}},dataLabels:{enabled:!1},grid:R,xaxis:{categories:(l.topProducts??[]).map(s=>s.title),axisBorder:{show:!1},axisTicks:{show:!1},labels:{trim:!0,style:{colors:x,fontSize:a.isMobile?"10px":"12px"}}},yaxis:{labels:{maxWidth:a.isMobile?120:160,style:{colors:x,fontSize:a.isMobile?"11px":"12px"}}},tooltip:{y:{formatter:s=>`${s} گرم`}}}));return Ae(async()=>{try{n.value=!0;const{data:s}=await Be.get("dashboard/overview");Object.assign(l,s),l.reagent=[...l.reagent??[]].sort((t,_)=>Number(_.grams_sell)-Number(t.grams_sell)),l.lastOrder=[...l.lastOrder??[]].sort((t,_)=>Number(_.w)-Number(t.w))}catch(s){console.error(s)}finally{n.value=!1}}),(s,t)=>{const _=O("apexchart"),Se=O("a-segmented"),N=O("a-empty"),X=O("a-tag"),Ce=O("a-list-item"),ze=O("a-list"),Me=O("a-table"),Le=O("a-spin");return d(),b(Le,{spinning:n.value},{default:S(()=>{var q,J,Q,Z;return[e("div",Xe,[e("header",qe,[t[1]||(t[1]=e("div",null,[e("h1",{class:"dash-head__title"},"داشبورد"),e("p",{class:"dash-head__sub"},"خلاصه عملکرد فروش در ۳۰ روز گذشته")],-1)),e("div",Je,[h(g(je)),e("span",null,o(ce.value),1)])]),e("section",Qe,[e("div",Ze,[e("div",Ke,[e("span",et,[h(g(F))]),t[2]||(t[2]=e("span",{class:"kpi__label"},"تعداد سفارشات (۳۰ روز گذشته)",-1))]),e("div",tt,[v(o(m(l.ordercount)),1),t[3]||(t[3]=e("small",null,"سفارش",-1))]),W.value.length?(d(),b(_,{key:0,class:"kpi__spark",type:"area",height:"56",options:pe,series:[{name:"سفارش",data:W.value}]},null,8,["series"])):P("",!0)]),e("div",st,[e("div",at,[e("span",lt,[h(g(A))]),t[4]||(t[4]=e("span",{class:"kpi__label"},"طلای فروش رفته (۳۰ روز گذشته)",-1))]),e("div",nt,[v(o(m(l.allgram)),1),t[5]||(t[5]=e("small",null,"گرم",-1))]),e("div",ot,[t[6]||(t[6]=v(" میانگین هر سفارش تحویل‌شده: ",-1)),e("b",null,o(E.value)+" گرم",1)])]),e("div",rt,[e("div",it,[e("span",dt,[h(g(De))]),t[7]||(t[7]=e("span",{class:"kpi__label"},"مشتریان جدید (۳۰ روز گذشته)",-1))]),e("div",ct,[v(o(m(l.customerCount)),1),t[8]||(t[8]=e("small",null,"نفر",-1))]),e("div",ut,[t[9]||(t[9]=v(" مجموع بدهی طلای مشتریان: ",-1)),e("b",null,o($.value)+" گرم",1)])]),e("div",pt,[e("div",_t,[e("span",ht,[h(g(Fe))]),t[10]||(t[10]=e("span",{class:"kpi__label"},"نرخ هر گرم طلای ۱۸ عیار",-1))]),e("div",mt,o(ue.value),1),e("div",bt,[t[11]||(t[11]=v(" سفارشات تحویل‌شده (۳۰ روز گذشته): ",-1)),e("b",null,o(m(l.sumLastOrder))+" سفارش",1)])])]),e("section",{class:ee(["row",u.value?"row--main":"row--single"])},[e("div",gt,[e("div",ft,[e("div",null,[t[12]||(t[12]=e("h3",{class:"panel__title"},"روند سفارش‌ها",-1)),e("p",vt,o(u.value?"۳۰ روز گذشته، تفکیک تک و عمده":"۳۰ روز گذشته"),1)]),h(Se,{value:w.value,"onUpdate:value":t[0]||(t[0]=i=>w.value=i),options:_e,size:"small"},null,8,["value"])]),e("div",yt,[u.value?(d(),y("div",Ot,[e("span",{class:"dot",style:T({background:C})},null,4),t[13]||(t[13]=e("span",null,"تک فروشی",-1)),e("b",null,o(m(he.value)),1)])):P("",!0),e("div",kt,[e("span",{class:"dot",style:T({background:k})},null,4),t[14]||(t[14]=e("span",null,"عمده فروشی",-1)),e("b",null,o(m(me.value)),1)])]),(d(),b(_,{key:w.value,type:w.value,height:ne.value,options:ge.value,series:be.value},null,8,["type","height","options","series"]))]),u.value?(d(),y("div",wt,[t[15]||(t[15]=e("div",{class:"panel__head"},[e("div",null,[e("h3",{class:"panel__title"},"تفکیک عمده / تک"),e("p",{class:"panel__sub"},"۳۰ روز گذشته")])],-1)),U.value.some(i=>i>0)?(d(),y(L,{key:0},[h(_,{type:"donut",height:oe.value,options:fe.value,series:U.value},null,8,["height","options","series"]),e("ul",xt,[(d(!0),y(L,null,te(l.channelBreakdown,(i,f)=>(d(),y("li",{key:i.channel},[e("span",{class:"dot",style:T({background:B[f%B.length]})},null,4),e("span",St,o(i.label),1),e("span",Ct,o(m(i.grams))+" گرم",1),e("b",null,o(m(i.count)),1)]))),128))])],64)):(d(),b(N,{key:1,description:"داده‌ای برای نمایش وجود ندارد"}))])):P("",!0)],2),e("section",zt,[e("div",Mt,[e("div",Lt,[t[16]||(t[16]=e("div",null,[e("h3",{class:"panel__title"},"وضعیت سفارشات"),e("p",{class:"panel__sub"},"۳۰ روز گذشته")],-1)),e("span",Nt,o(m(ve.value))+" سفارش",1)]),V.value[0].data.length?(d(),b(_,{key:0,type:"bar",height:ye.value,options:Oe.value,series:V.value},null,8,["height","options","series"])):(d(),b(N,{key:1,description:"داده‌ای برای نمایش وجود ندارد"}))]),e("div",Pt,[t[21]||(t[21]=e("div",{class:"panel__head"},[e("div",null,[e("h3",{class:"panel__title"},"میزان فروش"),e("p",{class:"panel__sub"},"۳۰ روز گذشته")])],-1)),e("ul",Tt,[e("li",null,[e("span",At,[h(g(He))]),t[17]||(t[17]=e("span",{class:"metric-list__label"},"تعداد سفارش (۳۰ روز)",-1)),e("b",null,o(m(l.sumLastOrder)),1)]),e("li",null,[e("span",Bt,[h(g(A))]),t[18]||(t[18]=e("span",{class:"metric-list__label"},"مجموع وزن (۳۰ روز)",-1)),e("b",null,o(m(l.sumLastOrderMonth))+" گرم",1)]),e("li",null,[e("span",Rt,[h(g(D))]),t[19]||(t[19]=e("span",{class:"metric-list__label"},"میانگین هر سفارش",-1)),e("b",null,o(E.value)+" گرم",1)]),e("li",null,[e("span",jt,[h(g(Ge))]),t[20]||(t[20]=e("span",{class:"metric-list__label"},"مجموع بدهی طلای مشتریان",-1)),e("b",null,o($.value)+" گرم",1)])])])]),e("section",Ht,[e("div",It,[t[22]||(t[22]=e("div",{class:"panel__head"},[e("div",null,[e("h3",{class:"panel__title"},"عملکرد کارشناسان فروش"),e("p",{class:"panel__sub"},"بر اساس گرم فروخته‌شده")])],-1)),(q=l.reagent)!=null&&q.length?(d(),y("ol",Dt,[(d(!0),y(L,null,te(l.reagent,(i,f)=>(d(),y("li",{key:i.id??f},[e("span",{class:ee(["rank-list__pos",{"is-top":f<3}])},o(f+1),3),e("div",Ft,[e("div",Gt,[e("span",$t,o(i.name),1),e("b",null,o(m(i.grams_sell))+" گرم",1)]),e("div",Et,[e("span",{style:T({width:`${we(i)}%`})},null,4)]),e("span",Wt,o(m(i.order_count))+" سفارش",1)])]))),128))])):(d(),b(N,{key:1,description:"داده‌ای برای نمایش وجود ندارد"}))]),e("div",Ut,[t[23]||(t[23]=e("div",{class:"panel__head"},[e("div",null,[e("h3",{class:"panel__title"},"محصولات پرفروش"),e("p",{class:"panel__sub"},"۳۰ روز گذشته، بر اساس وزن")])],-1)),(J=Y.value[0])!=null&&J.data.length?(d(),b(_,{key:0,type:"bar",height:re.value,options:xe.value,series:Y.value},null,8,["height","options","series"])):(d(),b(N,{key:1,description:"داده‌ای برای نمایش وجود ندارد"}))])]),e("section",Vt,[e("div",Yt,[t[24]||(t[24]=e("div",null,[e("h3",{class:"panel__title"},"سفارشات هفته جاری"),e("p",{class:"panel__sub"},"مرتب‌شده بر اساس وزن")],-1)),e("span",Xt,o(m(((Q=l.lastOrder)==null?void 0:Q.length)??0))+" سفارش",1)]),g(a).isMobile?(d(),b(ze,{key:0,class:"order-list","data-source":l.lastOrder,pagination:((Z=l.lastOrder)==null?void 0:Z.length)>10?{pageSize:10,size:"small",align:"center"}:!1,"row-key":"id"},{renderItem:S(({item:i})=>[h(Ce,{class:"order-item"},{default:S(()=>[e("div",qt,[e("span",Jt,o(i.name),1),h(X,{color:G(i.statusColor),class:"order-item__tag"},{default:S(()=>[v(o(i.sts_str),1)]),_:2},1032,["color"])]),e("div",Qt,o(i.customer),1),e("div",Zt,[e("span",null,o(i.w)+" گرم",1),e("span",null,o(g(M)(i.caj)),1)])]),_:2},1024)]),_:1},8,["data-source","pagination"])):(d(),b(Me,{key:1,class:"dash-table",size:"middle","data-source":l.lastOrder,columns:de,pagination:{pageSize:10},scroll:{x:"max-content"},"row-key":"id"},{bodyCell:S(({column:i,record:f})=>[i.dataIndex==="sts_str"?(d(),b(X,{key:0,color:G(f.statusColor)},{default:S(()=>[v(o(f.sts_str),1)]),_:2},1032,["color"])):i.dataIndex==="caj"?(d(),y(L,{key:1},[v(o(g(M)(f.caj)),1)],64)):i.dataIndex==="w"?(d(),y(L,{key:2},[v(o(f.w)+" گرم",1)],64)):P("",!0)]),_:1},8,["data-source"]))])])]}),_:1},8,["spinning"])}}}),os=Ie(es,[["__scopeId","data-v-00f0eac8"]]);export{os as default}; +import{j as M,p as j}from"./filters-Cvt98RIq.js";import{c as h,I,d as Ne,v as Pe,u as Te,x as Ae,y as Be,a as b,w as S,m as K,z as Re,r as O,o as d,p as e,h as g,C as je,t as o,f as v,i as P,q as ee,b as y,A as T,F as L,e as te,B as He,s as c,_ as Ie}from"./index-CuIWfDbM.js";import{U as De,D as Fe}from"./UserAddOutlined-BBmLFe8z.js";import{C as Ge}from"./CreditCardOutlined-BRF7XcYB.js";import"./index-CPTngTRs.js";var $e={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M926 164H94c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V196c0-17.7-14.3-32-32-32zm-40 632H134V236h752v560zm-658.9-82.3c3.1 3.1 8.2 3.1 11.3 0l172.5-172.5 114.4 114.5c3.1 3.1 8.2 3.1 11.3 0l297-297.2c3.1-3.1 3.1-8.2 0-11.3l-36.8-36.8a8.03 8.03 0 00-11.3 0L531 565 416.6 450.5a8.03 8.03 0 00-11.3 0l-214.9 215a8.03 8.03 0 000 11.3l36.7 36.9z"}}]},name:"fund",theme:"outlined"};function se(r){for(var n=1;np.isSuperAdmin),ne=c(()=>a.isMobile?240:300),oe=c(()=>a.isMobile?220:240),re=c(()=>a.isMobile?260:320),l=Re({customerCount:0,allgram:0,ordercount:0,reagent:[],lastOrder:[],sumLastOrder:0,sumLastOrderMonth:0,ordersTrend:[],statusBreakdown:[],channelBreakdown:[],topProducts:[],goldPricePerGram:null,totalCustomerDebtGrams:0}),B=[C,k],ie=[H,C,C,H,H,k,k,Kt],z={fontFamily:"inherit",parentHeightOffset:0,toolbar:{show:!1}},R={borderColor:"#eef0f5",strokeDashArray:4},de=[{title:"شماره سفارش",dataIndex:"name"},{title:"مشتری",dataIndex:"customer"},{title:"وزن",dataIndex:"w"},{title:"وضعیت",dataIndex:"sts_str"},{title:"تاریخ",dataIndex:"caj"}];function G(s){return{success:"green",warning:"orange",danger:"red",primary:"blue"}[s]??""}function m(s){return j(s??0)||"0"}const ce=c(()=>M(new Date().toISOString())),ue=c(()=>l.goldPricePerGram?`${j(Math.round(Number(l.goldPricePerGram)))} تومان`:"—"),$=c(()=>j(Number(l.totalCustomerDebtGrams??0).toFixed(2))),E=c(()=>{const s=Number(l.sumLastOrder??0),t=Number(l.sumLastOrderMonth??0);return s>0?(t/s).toFixed(2):"0"}),W=c(()=>(l.ordersTrend??[]).map(s=>s.total)),pe={chart:{...z,sparkline:{enabled:!0},animations:{enabled:!1}},colors:[k],stroke:{curve:"smooth",width:2},fill:{type:"gradient",gradient:{opacityFrom:.35,opacityTo:0}},tooltip:{enabled:!1}},w=K("area"),_e=[{label:"ناحیه‌ای",value:"area"},{label:"ستونی",value:"bar"}],he=c(()=>(l.ordersTrend??[]).reduce((s,t)=>s+Number(t.retail??0),0)),me=c(()=>(l.ordersTrend??[]).reduce((s,t)=>s+Number(t.wholesale??0),0)),be=c(()=>{const s=l.ordersTrend??[],t={name:"عمده فروشی",data:s.map(_=>_.wholesale)};return u.value?[{name:"تک فروشی",data:s.map(_=>_.retail)},t]:[t]}),ge=c(()=>({chart:{...z,stacked:w.value==="bar"},colors:u.value?[C,k]:[k],dataLabels:{enabled:!1},stroke:w.value==="area"?{curve:"smooth",width:2.5}:{width:0},fill:w.value==="area"?{type:"gradient",gradient:{opacityFrom:.3,opacityTo:.02}}:{opacity:1},plotOptions:{bar:{columnWidth:"55%",borderRadius:3,borderRadiusApplication:"end"}},legend:{show:!1},grid:{...R,padding:a.isMobile?{left:4,right:4}:{}},markers:{size:0,hover:{size:5}},xaxis:{categories:(l.ordersTrend??[]).map(s=>String(M(s.date)??"").slice(5)),tickAmount:a.isMobile?6:10,axisBorder:{show:!1},axisTicks:{show:!1},labels:{rotate:0,hideOverlappingLabels:!0,style:{colors:x,fontSize:a.isMobile?"10px":"12px"}}},yaxis:{labels:{style:{colors:x,fontSize:a.isMobile?"10px":"12px"},formatter:s=>String(Math.round(s))}},tooltip:{shared:!0,intersect:!1,x:{formatter:(s,t)=>{var _;return M((_=(l.ordersTrend??[])[t==null?void 0:t.dataPointIndex])==null?void 0:_.date)}}}})),U=c(()=>(l.channelBreakdown??[]).map(s=>Number(s.count??0))),fe=c(()=>({chart:{...z},labels:(l.channelBreakdown??[]).map(s=>s.label),colors:B,legend:{show:!1},dataLabels:{enabled:!1},stroke:{width:3,colors:["#fff"]},plotOptions:{pie:{donut:{size:"74%",labels:{show:!0,name:{fontSize:"13px",color:x,offsetY:18},value:{fontSize:"16px",fontWeight:500,color:C,offsetY:-14},total:{show:!0,label:"کل سفارش‌ها",color:x,fontSize:"13px",formatter:s=>String(s.globals.seriesTotals.reduce((t,_)=>t+_,0))}}}}}})),ve=c(()=>(l.statusBreakdown??[]).reduce((s,t)=>s+Number(t.count??0),0)),V=c(()=>[{name:"تعداد",data:(l.statusBreakdown??[]).map(s=>Number(s.count??0))}]),ye=c(()=>{var s;return Math.max(200,(((s=l.statusBreakdown)==null?void 0:s.length)??0)*(a.isMobile?38:44)+40)}),Oe=c(()=>({chart:{...z},colors:ie,plotOptions:{bar:{horizontal:!0,distributed:!0,borderRadius:6,borderRadiusApplication:"end",barHeight:"58%"}},legend:{show:!1},dataLabels:{enabled:!0,textAnchor:"start",offsetX:8,style:{colors:["#fff"],fontWeight:500,fontSize:"12px"}},grid:{...R,xaxis:{lines:{show:!0}},yaxis:{lines:{show:!1}}},xaxis:{categories:(l.statusBreakdown??[]).map(s=>s.label),axisBorder:{show:!1},axisTicks:{show:!1},labels:{style:{colors:x,fontSize:"11px"}}},yaxis:{labels:{maxWidth:a.isMobile?110:160,style:{colors:"#475467",fontSize:"12px",fontWeight:500}}},tooltip:{y:{formatter:s=>`${s} سفارش`}}})),ke=c(()=>Math.max(1,...(l.reagent??[]).map(s=>Number(s.grams_sell??0))));function we(s){return Math.max(2,Math.round(Number(s.grams_sell??0)/ke.value*100))}const Y=c(()=>[{name:"وزن فروخته‌شده (گرم)",data:(l.topProducts??[]).map(s=>Number(s.weight??0))}]),xe=c(()=>({chart:{...z},plotOptions:{bar:a.isMobile?{horizontal:!0,borderRadius:6,borderRadiusApplication:"end",barHeight:"60%"}:{borderRadius:8,borderRadiusApplication:"end",columnWidth:"45%"}},colors:[k],fill:{type:"gradient",gradient:{shade:"light",type:"vertical",shadeIntensity:.2,opacityFrom:1,opacityTo:.75}},dataLabels:{enabled:!1},grid:R,xaxis:{categories:(l.topProducts??[]).map(s=>s.title),axisBorder:{show:!1},axisTicks:{show:!1},labels:{trim:!0,style:{colors:x,fontSize:a.isMobile?"10px":"12px"}}},yaxis:{labels:{maxWidth:a.isMobile?120:160,style:{colors:x,fontSize:a.isMobile?"11px":"12px"}}},tooltip:{y:{formatter:s=>`${s} گرم`}}}));return Ae(async()=>{try{n.value=!0;const{data:s}=await Be.get("dashboard/overview");Object.assign(l,s),l.reagent=[...l.reagent??[]].sort((t,_)=>Number(_.grams_sell)-Number(t.grams_sell)),l.lastOrder=[...l.lastOrder??[]].sort((t,_)=>Number(_.w)-Number(t.w))}catch(s){console.error(s)}finally{n.value=!1}}),(s,t)=>{const _=O("apexchart"),Se=O("a-segmented"),N=O("a-empty"),X=O("a-tag"),Ce=O("a-list-item"),ze=O("a-list"),Me=O("a-table"),Le=O("a-spin");return d(),b(Le,{spinning:n.value},{default:S(()=>{var q,J,Q,Z;return[e("div",Xe,[e("header",qe,[t[1]||(t[1]=e("div",null,[e("h1",{class:"dash-head__title"},"داشبورد"),e("p",{class:"dash-head__sub"},"خلاصه عملکرد فروش در ۳۰ روز گذشته")],-1)),e("div",Je,[h(g(je)),e("span",null,o(ce.value),1)])]),e("section",Qe,[e("div",Ze,[e("div",Ke,[e("span",et,[h(g(F))]),t[2]||(t[2]=e("span",{class:"kpi__label"},"تعداد سفارشات (۳۰ روز گذشته)",-1))]),e("div",tt,[v(o(m(l.ordercount)),1),t[3]||(t[3]=e("small",null,"سفارش",-1))]),W.value.length?(d(),b(_,{key:0,class:"kpi__spark",type:"area",height:"56",options:pe,series:[{name:"سفارش",data:W.value}]},null,8,["series"])):P("",!0)]),e("div",st,[e("div",at,[e("span",lt,[h(g(A))]),t[4]||(t[4]=e("span",{class:"kpi__label"},"طلای فروش رفته (۳۰ روز گذشته)",-1))]),e("div",nt,[v(o(m(l.allgram)),1),t[5]||(t[5]=e("small",null,"گرم",-1))]),e("div",ot,[t[6]||(t[6]=v(" میانگین هر سفارش تحویل‌شده: ",-1)),e("b",null,o(E.value)+" گرم",1)])]),e("div",rt,[e("div",it,[e("span",dt,[h(g(De))]),t[7]||(t[7]=e("span",{class:"kpi__label"},"مشتریان جدید (۳۰ روز گذشته)",-1))]),e("div",ct,[v(o(m(l.customerCount)),1),t[8]||(t[8]=e("small",null,"نفر",-1))]),e("div",ut,[t[9]||(t[9]=v(" مجموع بدهی طلای مشتریان: ",-1)),e("b",null,o($.value)+" گرم",1)])]),e("div",pt,[e("div",_t,[e("span",ht,[h(g(Fe))]),t[10]||(t[10]=e("span",{class:"kpi__label"},"نرخ هر گرم طلای ۱۸ عیار",-1))]),e("div",mt,o(ue.value),1),e("div",bt,[t[11]||(t[11]=v(" سفارشات تحویل‌شده (۳۰ روز گذشته): ",-1)),e("b",null,o(m(l.sumLastOrder))+" سفارش",1)])])]),e("section",{class:ee(["row",u.value?"row--main":"row--single"])},[e("div",gt,[e("div",ft,[e("div",null,[t[12]||(t[12]=e("h3",{class:"panel__title"},"روند سفارش‌ها",-1)),e("p",vt,o(u.value?"۳۰ روز گذشته، تفکیک تک و عمده":"۳۰ روز گذشته"),1)]),h(Se,{value:w.value,"onUpdate:value":t[0]||(t[0]=i=>w.value=i),options:_e,size:"small"},null,8,["value"])]),e("div",yt,[u.value?(d(),y("div",Ot,[e("span",{class:"dot",style:T({background:C})},null,4),t[13]||(t[13]=e("span",null,"تک فروشی",-1)),e("b",null,o(m(he.value)),1)])):P("",!0),e("div",kt,[e("span",{class:"dot",style:T({background:k})},null,4),t[14]||(t[14]=e("span",null,"عمده فروشی",-1)),e("b",null,o(m(me.value)),1)])]),(d(),b(_,{key:w.value,type:w.value,height:ne.value,options:ge.value,series:be.value},null,8,["type","height","options","series"]))]),u.value?(d(),y("div",wt,[t[15]||(t[15]=e("div",{class:"panel__head"},[e("div",null,[e("h3",{class:"panel__title"},"تفکیک عمده / تک"),e("p",{class:"panel__sub"},"۳۰ روز گذشته")])],-1)),U.value.some(i=>i>0)?(d(),y(L,{key:0},[h(_,{type:"donut",height:oe.value,options:fe.value,series:U.value},null,8,["height","options","series"]),e("ul",xt,[(d(!0),y(L,null,te(l.channelBreakdown,(i,f)=>(d(),y("li",{key:i.channel},[e("span",{class:"dot",style:T({background:B[f%B.length]})},null,4),e("span",St,o(i.label),1),e("span",Ct,o(m(i.grams))+" گرم",1),e("b",null,o(m(i.count)),1)]))),128))])],64)):(d(),b(N,{key:1,description:"داده‌ای برای نمایش وجود ندارد"}))])):P("",!0)],2),e("section",zt,[e("div",Mt,[e("div",Lt,[t[16]||(t[16]=e("div",null,[e("h3",{class:"panel__title"},"وضعیت سفارشات"),e("p",{class:"panel__sub"},"۳۰ روز گذشته")],-1)),e("span",Nt,o(m(ve.value))+" سفارش",1)]),V.value[0].data.length?(d(),b(_,{key:0,type:"bar",height:ye.value,options:Oe.value,series:V.value},null,8,["height","options","series"])):(d(),b(N,{key:1,description:"داده‌ای برای نمایش وجود ندارد"}))]),e("div",Pt,[t[21]||(t[21]=e("div",{class:"panel__head"},[e("div",null,[e("h3",{class:"panel__title"},"میزان فروش"),e("p",{class:"panel__sub"},"۳۰ روز گذشته")])],-1)),e("ul",Tt,[e("li",null,[e("span",At,[h(g(He))]),t[17]||(t[17]=e("span",{class:"metric-list__label"},"تعداد سفارش (۳۰ روز)",-1)),e("b",null,o(m(l.sumLastOrder)),1)]),e("li",null,[e("span",Bt,[h(g(A))]),t[18]||(t[18]=e("span",{class:"metric-list__label"},"مجموع وزن (۳۰ روز)",-1)),e("b",null,o(m(l.sumLastOrderMonth))+" گرم",1)]),e("li",null,[e("span",Rt,[h(g(D))]),t[19]||(t[19]=e("span",{class:"metric-list__label"},"میانگین هر سفارش",-1)),e("b",null,o(E.value)+" گرم",1)]),e("li",null,[e("span",jt,[h(g(Ge))]),t[20]||(t[20]=e("span",{class:"metric-list__label"},"مجموع بدهی طلای مشتریان",-1)),e("b",null,o($.value)+" گرم",1)])])])]),e("section",Ht,[e("div",It,[t[22]||(t[22]=e("div",{class:"panel__head"},[e("div",null,[e("h3",{class:"panel__title"},"عملکرد کارشناسان فروش"),e("p",{class:"panel__sub"},"بر اساس گرم فروخته‌شده")])],-1)),(q=l.reagent)!=null&&q.length?(d(),y("ol",Dt,[(d(!0),y(L,null,te(l.reagent,(i,f)=>(d(),y("li",{key:i.id??f},[e("span",{class:ee(["rank-list__pos",{"is-top":f<3}])},o(f+1),3),e("div",Ft,[e("div",Gt,[e("span",$t,o(i.name),1),e("b",null,o(m(i.grams_sell))+" گرم",1)]),e("div",Et,[e("span",{style:T({width:`${we(i)}%`})},null,4)]),e("span",Wt,o(m(i.order_count))+" سفارش",1)])]))),128))])):(d(),b(N,{key:1,description:"داده‌ای برای نمایش وجود ندارد"}))]),e("div",Ut,[t[23]||(t[23]=e("div",{class:"panel__head"},[e("div",null,[e("h3",{class:"panel__title"},"محصولات پرفروش"),e("p",{class:"panel__sub"},"۳۰ روز گذشته، بر اساس وزن")])],-1)),(J=Y.value[0])!=null&&J.data.length?(d(),b(_,{key:0,type:"bar",height:re.value,options:xe.value,series:Y.value},null,8,["height","options","series"])):(d(),b(N,{key:1,description:"داده‌ای برای نمایش وجود ندارد"}))])]),e("section",Vt,[e("div",Yt,[t[24]||(t[24]=e("div",null,[e("h3",{class:"panel__title"},"سفارشات هفته جاری"),e("p",{class:"panel__sub"},"مرتب‌شده بر اساس وزن")],-1)),e("span",Xt,o(m(((Q=l.lastOrder)==null?void 0:Q.length)??0))+" سفارش",1)]),g(a).isMobile?(d(),b(ze,{key:0,class:"order-list","data-source":l.lastOrder,pagination:((Z=l.lastOrder)==null?void 0:Z.length)>10?{pageSize:10,size:"small",align:"center"}:!1,"row-key":"id"},{renderItem:S(({item:i})=>[h(Ce,{class:"order-item"},{default:S(()=>[e("div",qt,[e("span",Jt,o(i.name),1),h(X,{color:G(i.statusColor),class:"order-item__tag"},{default:S(()=>[v(o(i.sts_str),1)]),_:2},1032,["color"])]),e("div",Qt,o(i.customer),1),e("div",Zt,[e("span",null,o(i.w)+" گرم",1),e("span",null,o(g(M)(i.caj)),1)])]),_:2},1024)]),_:1},8,["data-source","pagination"])):(d(),b(Me,{key:1,class:"dash-table",size:"middle","data-source":l.lastOrder,columns:de,pagination:{pageSize:10},scroll:{x:"max-content"},"row-key":"id"},{bodyCell:S(({column:i,record:f})=>[i.dataIndex==="sts_str"?(d(),b(X,{key:0,color:G(f.statusColor)},{default:S(()=>[v(o(f.sts_str),1)]),_:2},1032,["color"])):i.dataIndex==="caj"?(d(),y(L,{key:1},[v(o(g(M)(f.caj)),1)],64)):i.dataIndex==="w"?(d(),y(L,{key:2},[v(o(f.w)+" گرم",1)],64)):P("",!0)]),_:1},8,["data-source"]))])])]}),_:1},8,["spinning"])}}}),os=Ie(es,[["__scopeId","data-v-00f0eac8"]]);export{os as default}; diff --git a/apps/admin-panel/dist/assets/DateInput-CCBYpdHy.js b/apps/admin-panel/dist/assets/DateInput-CJzwI_r_.js similarity index 89% rename from apps/admin-panel/dist/assets/DateInput-CCBYpdHy.js rename to apps/admin-panel/dist/assets/DateInput-CJzwI_r_.js index bf994fe..6d4c266 100644 --- a/apps/admin-panel/dist/assets/DateInput-CCBYpdHy.js +++ b/apps/admin-panel/dist/assets/DateInput-CJzwI_r_.js @@ -1 +1 @@ -import{m}from"./index-m6pCHaEa.js";import{d as _,n as V,o as r,a as Y,w as h,c as D,b,t as j,i as M,m as i,s as x,r as d,_ as y}from"./index-C9T3Vski.js";const k={key:0,class:"hint"},C=_({__name:"DateInput",props:{label:{},modelValue:{},placeholder:{default:"مثال: ۱۴۰۳/۰۵/۱۲"}},emits:["update:modelValue"],setup(o,{emit:p}){const n=o,c=p,t=i(void 0),a=i(""),v=x(()=>{if(t.value!==void 0)return t.value;if(!n.modelValue)return"";const e=m(n.modelValue);return e.isValid()?e.format("jYYYY/jMM/jDD"):""});V(()=>n.modelValue,()=>{t.value=void 0});function f(e){if(t.value=e,!e){a.value="",c("update:modelValue",void 0);return}const u=e.replace(/[۰-۹]/g,s=>String("۰۱۲۳۴۵۶۷۸۹".indexOf(s))),l=m(u,"jYYYY/jMM/jDD");l.isValid()?(a.value="",c("update:modelValue",l.format("YYYY-MM-DD"))):a.value="تاریخ معتبر نیست"}return(e,u)=>{const l=d("a-input"),s=d("a-form-item");return r(),Y(s,{label:o.label},{default:h(()=>[D(l,{value:v.value,placeholder:o.placeholder,"allow-clear":"","onUpdate:value":f},null,8,["value","placeholder"]),a.value?(r(),b("small",k,j(a.value),1)):M("",!0)]),_:1},8,["label"])}}}),I=y(C,[["__scopeId","data-v-3863c3bc"]]);export{I as D}; +import{m}from"./index-CPTngTRs.js";import{d as _,n as V,o as r,a as Y,w as h,c as D,b,t as j,i as M,m as i,s as x,r as d,_ as y}from"./index-CuIWfDbM.js";const k={key:0,class:"hint"},C=_({__name:"DateInput",props:{label:{},modelValue:{},placeholder:{default:"مثال: ۱۴۰۳/۰۵/۱۲"}},emits:["update:modelValue"],setup(o,{emit:p}){const n=o,c=p,t=i(void 0),a=i(""),v=x(()=>{if(t.value!==void 0)return t.value;if(!n.modelValue)return"";const e=m(n.modelValue);return e.isValid()?e.format("jYYYY/jMM/jDD"):""});V(()=>n.modelValue,()=>{t.value=void 0});function f(e){if(t.value=e,!e){a.value="",c("update:modelValue",void 0);return}const u=e.replace(/[۰-۹]/g,s=>String("۰۱۲۳۴۵۶۷۸۹".indexOf(s))),l=m(u,"jYYYY/jMM/jDD");l.isValid()?(a.value="",c("update:modelValue",l.format("YYYY-MM-DD"))):a.value="تاریخ معتبر نیست"}return(e,u)=>{const l=d("a-input"),s=d("a-form-item");return r(),Y(s,{label:o.label},{default:h(()=>[D(l,{value:v.value,placeholder:o.placeholder,"allow-clear":"","onUpdate:value":f},null,8,["value","placeholder"]),a.value?(r(),b("small",k,j(a.value),1)):M("",!0)]),_:1},8,["label"])}}}),I=y(C,[["__scopeId","data-v-3863c3bc"]]);export{I as D}; diff --git a/apps/admin-panel/dist/assets/Edit-GrGMWZFB.js b/apps/admin-panel/dist/assets/Edit-GrGMWZFB.js new file mode 100644 index 0000000..030c7b3 --- /dev/null +++ b/apps/admin-panel/dist/assets/Edit-GrGMWZFB.js @@ -0,0 +1 @@ +import{_ as o}from"./Add.vue_vue_type_script_setup_true_lang-GQn7yiQq.js";import{d as t,a as r,o as e}from"./index-CuIWfDbM.js";import"./select--BgT6D7O.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-DXuLuiBZ.js";import"./ImageUploadInput.vue_vue_type_script_setup_true_lang-Bb4hJ8Y2.js";const f=t({__name:"Edit",setup(a){return(m,p)=>(e(),r(o))}});export{f as default}; diff --git a/apps/admin-panel/dist/assets/Edit-zdHd1rSg.js b/apps/admin-panel/dist/assets/Edit-zdHd1rSg.js deleted file mode 100644 index 3763496..0000000 --- a/apps/admin-panel/dist/assets/Edit-zdHd1rSg.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as o}from"./Add.vue_vue_type_script_setup_true_lang-UtZ_MoEU.js";import{d as t,a as e,o as r}from"./index-C9T3Vski.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-Du4lPDHl.js";import"./ImageUploadInput.vue_vue_type_script_setup_true_lang-Bjo3vw78.js";const i=t({__name:"Edit",setup(a){return(_,m)=>(r(),e(o))}});export{i as default}; diff --git a/apps/admin-panel/dist/assets/EditBranches-BF5D0IM-.js b/apps/admin-panel/dist/assets/EditBranches-BF5D0IM-.js new file mode 100644 index 0000000..f0b0b63 --- /dev/null +++ b/apps/admin-panel/dist/assets/EditBranches-BF5D0IM-.js @@ -0,0 +1 @@ +import{_ as o}from"./AddBranches.vue_vue_type_script_setup_true_lang-tTVzu-ki.js";import{d as e,a as r,o as t}from"./index-CuIWfDbM.js";import"./select--BgT6D7O.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-DXuLuiBZ.js";const i=e({__name:"EditBranches",setup(a){return(n,s)=>(t(),r(o))}});export{i as default}; diff --git a/apps/admin-panel/dist/assets/EditBranches-WiGJ4Cid.js b/apps/admin-panel/dist/assets/EditBranches-WiGJ4Cid.js deleted file mode 100644 index 1d13f1a..0000000 --- a/apps/admin-panel/dist/assets/EditBranches-WiGJ4Cid.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e}from"./AddBranches.vue_vue_type_script_setup_true_lang-Bih_hMrV.js";import{d as o,a,o as r}from"./index-C9T3Vski.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-Du4lPDHl.js";const p=o({__name:"EditBranches",setup(t){return(n,s)=>(r(),a(e))}});export{p as default}; diff --git a/apps/admin-panel/dist/assets/EditBulkCustomer-CjmYWWAE.js b/apps/admin-panel/dist/assets/EditBulkCustomer-CjmYWWAE.js deleted file mode 100644 index a2062ec..0000000 --- a/apps/admin-panel/dist/assets/EditBulkCustomer-CjmYWWAE.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as o}from"./bulkCustomer.vue_vue_type_script_setup_true_lang-DMrGU5vL.js";import{d as r,a as t,o as m}from"./index-C9T3Vski.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-Du4lPDHl.js";import"./ImageUploadInput.vue_vue_type_script_setup_true_lang-Bjo3vw78.js";import"./CityTreeSelect.vue_vue_type_script_setup_true_lang-82fzpZxR.js";import"./DateInput-CCBYpdHy.js";import"./index-m6pCHaEa.js";import"./UserOutlined-Csu4xHRr.js";import"./ShopOutlined-BBtTJF4e.js";import"./EnvironmentOutlined-D8YNH9-a.js";import"./PercentageOutlined-CxUloK5J.js";import"./SafetyCertificateOutlined-DS5dQeR2.js";const C=r({__name:"EditBulkCustomer",setup(p){return(i,a)=>(m(),t(o,{class:"page-card"}))}});export{C as default}; diff --git a/apps/admin-panel/dist/assets/EditBulkCustomer-kgIfXULj.js b/apps/admin-panel/dist/assets/EditBulkCustomer-kgIfXULj.js new file mode 100644 index 0000000..00c6cf4 --- /dev/null +++ b/apps/admin-panel/dist/assets/EditBulkCustomer-kgIfXULj.js @@ -0,0 +1 @@ +import{_ as o}from"./bulkCustomer.vue_vue_type_script_setup_true_lang-DEtGbCJP.js";import{d as r,a as t,o as m}from"./index-CuIWfDbM.js";import"./select--BgT6D7O.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-DXuLuiBZ.js";import"./ImageUploadInput.vue_vue_type_script_setup_true_lang-Bb4hJ8Y2.js";import"./CityTreeSelect.vue_vue_type_script_setup_true_lang-Be--_CeP.js";import"./DateInput-CJzwI_r_.js";import"./index-CPTngTRs.js";import"./UserOutlined-aZ-mQgwc.js";import"./ShopOutlined--nD1gJHu.js";import"./EnvironmentOutlined-BBvjB5-8.js";import"./PercentageOutlined-Cooaq8mh.js";import"./SafetyCertificateOutlined-DWQ69biy.js";const g=r({__name:"EditBulkCustomer",setup(p){return(i,a)=>(m(),t(o,{class:"page-card"}))}});export{g as default}; diff --git a/apps/admin-panel/dist/assets/EditInvoice-ByAezxDX.js b/apps/admin-panel/dist/assets/EditInvoice-ByAezxDX.js new file mode 100644 index 0000000..d05aa5f --- /dev/null +++ b/apps/admin-panel/dist/assets/EditInvoice-ByAezxDX.js @@ -0,0 +1 @@ +import o from"./AddInvoice-vwiAoHQ3.js";import{d as t,a as r,o as e}from"./index-CuIWfDbM.js";import"./select--BgT6D7O.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-DXuLuiBZ.js";import"./model-D_9omyEY.js";import"./filters-Cvt98RIq.js";import"./index-CPTngTRs.js";import"./SettingOutlined-BehgjsnT.js";const l=t({__name:"EditInvoice",setup(p){return(i,m)=>(e(),r(o))}});export{l as default}; diff --git a/apps/admin-panel/dist/assets/EditInvoice-C-LQY9JQ.js b/apps/admin-panel/dist/assets/EditInvoice-C-LQY9JQ.js deleted file mode 100644 index d60a9aa..0000000 --- a/apps/admin-panel/dist/assets/EditInvoice-C-LQY9JQ.js +++ /dev/null @@ -1 +0,0 @@ -import o from"./AddInvoice-CuzOOF2n.js";import{d as t,a as r,o as e}from"./index-C9T3Vski.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-Du4lPDHl.js";import"./model-B4TWAN58.js";import"./filters-D6Nzbpog.js";import"./index-m6pCHaEa.js";import"./SettingOutlined-BizkfqvN.js";const u=t({__name:"EditInvoice",setup(p){return(i,m)=>(e(),r(o))}});export{u as default}; diff --git a/apps/admin-panel/dist/assets/EditProduct-CAmy4CHb.js b/apps/admin-panel/dist/assets/EditProduct-CAmy4CHb.js deleted file mode 100644 index 12e80c7..0000000 --- a/apps/admin-panel/dist/assets/EditProduct-CAmy4CHb.js +++ /dev/null @@ -1 +0,0 @@ -import o from"./AddProduct-vqd1_hig.js";import{d as t,b as e,c as r,o as c}from"./index-C9T3Vski.js";import"./ImageUploadInput.vue_vue_type_script_setup_true_lang-Bjo3vw78.js";import"./AppstoreOutlined-lwgIJvjh.js";import"./PictureOutlined-BBgbZIZs.js";const u=t({__name:"EditProduct",setup(a){return(m,n)=>(c(),e("div",null,[r(o)]))}});export{u as default}; diff --git a/apps/admin-panel/dist/assets/EditProduct-LurNZlNq.js b/apps/admin-panel/dist/assets/EditProduct-LurNZlNq.js new file mode 100644 index 0000000..040552d --- /dev/null +++ b/apps/admin-panel/dist/assets/EditProduct-LurNZlNq.js @@ -0,0 +1 @@ +import o from"./AddProduct-r48hWej-.js";import{d as t,b as e,c as r,o as c}from"./index-CuIWfDbM.js";import"./ImageUploadInput.vue_vue_type_script_setup_true_lang-Bb4hJ8Y2.js";import"./AppstoreOutlined-6RRW3vIa.js";import"./PictureOutlined-CixWElmx.js";const u=t({__name:"EditProduct",setup(a){return(m,n)=>(c(),e("div",null,[r(o)]))}});export{u as default}; diff --git a/apps/admin-panel/dist/assets/EditReagent-CbP03n0b.js b/apps/admin-panel/dist/assets/EditReagent-CbP03n0b.js deleted file mode 100644 index 915c268..0000000 --- a/apps/admin-panel/dist/assets/EditReagent-CbP03n0b.js +++ /dev/null @@ -1 +0,0 @@ -import{R as t}from"./ReagentCustomer-psdi2cEz.js";import{d as o,a as r,o as e}from"./index-C9T3Vski.js";import"./CityTreeSelect.vue_vue_type_script_setup_true_lang-82fzpZxR.js";import"./ImageUploadInput.vue_vue_type_script_setup_true_lang-Bjo3vw78.js";import"./UserOutlined-Csu4xHRr.js";import"./ShopOutlined-BBtTJF4e.js";import"./EnvironmentOutlined-D8YNH9-a.js";import"./CameraOutlined-C6gLi8-9.js";import"./PercentageOutlined-CxUloK5J.js";const g=o({__name:"EditReagent",setup(a){return(p,m)=>(e(),r(t,{class:"page-card"}))}});export{g as default}; diff --git a/apps/admin-panel/dist/assets/EditReagent-CtSia1u-.js b/apps/admin-panel/dist/assets/EditReagent-CtSia1u-.js new file mode 100644 index 0000000..afefac7 --- /dev/null +++ b/apps/admin-panel/dist/assets/EditReagent-CtSia1u-.js @@ -0,0 +1 @@ +import{R as t}from"./ReagentCustomer-HYOR5FLS.js";import{d as o,a as r,o as e}from"./index-CuIWfDbM.js";import"./CityTreeSelect.vue_vue_type_script_setup_true_lang-Be--_CeP.js";import"./ImageUploadInput.vue_vue_type_script_setup_true_lang-Bb4hJ8Y2.js";import"./UserOutlined-aZ-mQgwc.js";import"./ShopOutlined--nD1gJHu.js";import"./EnvironmentOutlined-BBvjB5-8.js";import"./CameraOutlined-Dx8LoT1m.js";import"./PercentageOutlined-Cooaq8mh.js";const g=o({__name:"EditReagent",setup(a){return(p,m)=>(e(),r(t,{class:"page-card"}))}});export{g as default}; diff --git a/apps/admin-panel/dist/assets/EditSingleCustomer-CiBSDI3W.js b/apps/admin-panel/dist/assets/EditSingleCustomer-CiBSDI3W.js deleted file mode 100644 index 627341f..0000000 --- a/apps/admin-panel/dist/assets/EditSingleCustomer-CiBSDI3W.js +++ /dev/null @@ -1 +0,0 @@ -import{S as o}from"./singleCustomer-B931OwFF.js";import{d as r,a as e,o as t}from"./index-C9T3Vski.js";import"./CityTreeSelect.vue_vue_type_script_setup_true_lang-82fzpZxR.js";import"./DateInput-CCBYpdHy.js";import"./index-m6pCHaEa.js";import"./UserOutlined-Csu4xHRr.js";const u=r({__name:"EditSingleCustomer",setup(a){return(m,p)=>(t(),e(o,{class:"page-card"}))}});export{u as default}; diff --git a/apps/admin-panel/dist/assets/EditSingleCustomer-Dtewptpz.js b/apps/admin-panel/dist/assets/EditSingleCustomer-Dtewptpz.js new file mode 100644 index 0000000..d91df3c --- /dev/null +++ b/apps/admin-panel/dist/assets/EditSingleCustomer-Dtewptpz.js @@ -0,0 +1 @@ +import{S as o}from"./singleCustomer-CKYyRyfm.js";import{d as r,a as e,o as t}from"./index-CuIWfDbM.js";import"./CityTreeSelect.vue_vue_type_script_setup_true_lang-Be--_CeP.js";import"./DateInput-CJzwI_r_.js";import"./index-CPTngTRs.js";import"./UserOutlined-aZ-mQgwc.js";const u=r({__name:"EditSingleCustomer",setup(a){return(m,p)=>(t(),e(o,{class:"page-card"}))}});export{u as default}; diff --git a/apps/admin-panel/dist/assets/EditWorkshop-3JbFw7DS.js b/apps/admin-panel/dist/assets/EditWorkshop-3JbFw7DS.js new file mode 100644 index 0000000..3223848 --- /dev/null +++ b/apps/admin-panel/dist/assets/EditWorkshop-3JbFw7DS.js @@ -0,0 +1 @@ +import{_ as o}from"./AddWorkshop.vue_vue_type_script_setup_true_lang-CzFwzleM.js";import{d as e,a as r,o as t}from"./index-CuIWfDbM.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-DXuLuiBZ.js";const m=e({__name:"EditWorkshop",setup(a){return(s,_)=>(t(),r(o))}});export{m as default}; diff --git a/apps/admin-panel/dist/assets/EditWorkshop-BXaHV3ua.js b/apps/admin-panel/dist/assets/EditWorkshop-BXaHV3ua.js deleted file mode 100644 index a182c2c..0000000 --- a/apps/admin-panel/dist/assets/EditWorkshop-BXaHV3ua.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as o}from"./AddWorkshop.vue_vue_type_script_setup_true_lang-CeG9w0ns.js";import{d as e,a as r,o as t}from"./index-C9T3Vski.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-Du4lPDHl.js";const m=e({__name:"EditWorkshop",setup(a){return(s,_)=>(t(),r(o))}});export{m as default}; diff --git a/apps/admin-panel/dist/assets/EnvironmentOutlined-D8YNH9-a.js b/apps/admin-panel/dist/assets/EnvironmentOutlined-BBvjB5-8.js similarity index 96% rename from apps/admin-panel/dist/assets/EnvironmentOutlined-D8YNH9-a.js rename to apps/admin-panel/dist/assets/EnvironmentOutlined-BBvjB5-8.js index 222f46a..9e87208 100644 --- a/apps/admin-panel/dist/assets/EnvironmentOutlined-D8YNH9-a.js +++ b/apps/admin-panel/dist/assets/EnvironmentOutlined-BBvjB5-8.js @@ -1 +1 @@ -import{c as o,I as u}from"./index-C9T3Vski.js";var l={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M854.6 289.1a362.49 362.49 0 00-79.9-115.7 370.83 370.83 0 00-118.2-77.8C610.7 76.6 562.1 67 512 67c-50.1 0-98.7 9.6-144.5 28.5-44.3 18.3-84 44.5-118.2 77.8A363.6 363.6 0 00169.4 289c-19.5 45-29.4 92.8-29.4 142 0 70.6 16.9 140.9 50.1 208.7 26.7 54.5 64 107.6 111 158.1 80.3 86.2 164.5 138.9 188.4 153a43.9 43.9 0 0022.4 6.1c7.8 0 15.5-2 22.4-6.1 23.9-14.1 108.1-66.8 188.4-153 47-50.4 84.3-103.6 111-158.1C867.1 572 884 501.8 884 431.1c0-49.2-9.9-97-29.4-142zM512 880.2c-65.9-41.9-300-207.8-300-449.1 0-77.9 31.1-151.1 87.6-206.3C356.3 169.5 431.7 139 512 139s155.7 30.5 212.4 85.9C780.9 280 812 353.2 812 431.1c0 241.3-234.1 407.2-300 449.1zm0-617.2c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm79.2 255.2A111.6 111.6 0 01512 551c-29.9 0-58-11.7-79.2-32.8A111.6 111.6 0 01400 439c0-29.9 11.7-58 32.8-79.2C454 338.6 482.1 327 512 327c29.9 0 58 11.6 79.2 32.8C612.4 381 624 409.1 624 439c0 29.9-11.6 58-32.8 79.2z"}}]},name:"environment",theme:"outlined"};function c(n){for(var e=1;e[e(a,{type:"primary",onClick:t[0]||(t[0]=f=>r.$router.push("/"))},{default:o(()=>[...t[1]||(t[1]=[l("بازگشت به خانه",-1)])]),_:1})]),_:1})])}const x=_(p,[["render",i],["__scopeId","data-v-82a95474"]]);export{x as default}; +import{_,b as c,c as e,w as o,f as l,r as s,o as u}from"./index-CuIWfDbM.js";const p={},d={class:"full-page-msg"};function i(r,t){const a=s("a-button"),n=s("a-result");return u(),c("div",d,[e(n,{status:"404",title:"صفحه مورد نظر یافت نشد","sub-title":"آدرسی که وارد کرده‌اید وجود ندارد."},{extra:o(()=>[e(a,{type:"primary",onClick:t[0]||(t[0]=f=>r.$router.push("/"))},{default:o(()=>[...t[1]||(t[1]=[l("بازگشت به خانه",-1)])]),_:1})]),_:1})])}const x=_(p,[["render",i],["__scopeId","data-v-82a95474"]]);export{x as default}; diff --git a/apps/admin-panel/dist/assets/Error500-luonCp1d.js b/apps/admin-panel/dist/assets/Error500-Dg828I-c.js similarity index 89% rename from apps/admin-panel/dist/assets/Error500-luonCp1d.js rename to apps/admin-panel/dist/assets/Error500-Dg828I-c.js index c45a01c..bbd07d9 100644 --- a/apps/admin-panel/dist/assets/Error500-luonCp1d.js +++ b/apps/admin-panel/dist/assets/Error500-Dg828I-c.js @@ -1 +1 @@ -import{_,b as c,c as e,w as o,f as l,r as s,o as u}from"./index-C9T3Vski.js";const p={},d={class:"full-page-msg"};function i(r,t){const a=s("a-button"),n=s("a-result");return u(),c("div",d,[e(n,{status:"500",title:"خطای سرور","sub-title":"مشکلی در سرور رخ داده است. لطفاً بعداً تلاش کنید."},{extra:o(()=>[e(a,{type:"primary",onClick:t[0]||(t[0]=f=>r.$router.push("/"))},{default:o(()=>[...t[1]||(t[1]=[l("بازگشت به خانه",-1)])]),_:1})]),_:1})])}const x=_(p,[["render",i],["__scopeId","data-v-1080291a"]]);export{x as default}; +import{_,b as c,c as e,w as o,f as l,r as s,o as u}from"./index-CuIWfDbM.js";const p={},d={class:"full-page-msg"};function i(r,t){const a=s("a-button"),n=s("a-result");return u(),c("div",d,[e(n,{status:"500",title:"خطای سرور","sub-title":"مشکلی در سرور رخ داده است. لطفاً بعداً تلاش کنید."},{extra:o(()=>[e(a,{type:"primary",onClick:t[0]||(t[0]=f=>r.$router.push("/"))},{default:o(()=>[...t[1]||(t[1]=[l("بازگشت به خانه",-1)])]),_:1})]),_:1})])}const x=_(p,[["render",i],["__scopeId","data-v-1080291a"]]);export{x as default}; diff --git a/apps/admin-panel/dist/assets/FacilityList.vue_vue_type_script_setup_true_lang-B_mHvw0Q.js b/apps/admin-panel/dist/assets/FacilityList.vue_vue_type_script_setup_true_lang-CJ5yGUm_.js similarity index 93% rename from apps/admin-panel/dist/assets/FacilityList.vue_vue_type_script_setup_true_lang-B_mHvw0Q.js rename to apps/admin-panel/dist/assets/FacilityList.vue_vue_type_script_setup_true_lang-CJ5yGUm_.js index 18d5d8d..2f6cc77 100644 --- a/apps/admin-panel/dist/assets/FacilityList.vue_vue_type_script_setup_true_lang-B_mHvw0Q.js +++ b/apps/admin-panel/dist/assets/FacilityList.vue_vue_type_script_setup_true_lang-CJ5yGUm_.js @@ -1 +1 @@ -import{d as E,a as i,w as l,r as x,o as s,c as d,ak as P,p as w,h as u,E as y,W as B,$ as L,a8 as S,m as v,y as A,G as $,l as I}from"./index-C9T3Vski.js";import{X as N}from"./model-B4TWAN58.js";import{_ as V}from"./ListPageHeader.vue_vue_type_script_setup_true_lang-BDf2BWcO.js";const X={class:"flex gap-2"},U=E({__name:"FacilityList",props:{title:{},model:{},editPath:{},activePath:{},addRid:{},addLabel:{}},setup(a){const k=a,h=I(),m=v(null),c=v(!1),f=v(void 0);function _(){f.value=void 0,c.value=!0}function b(e){f.value=e,c.value=!0}function g(e){c.value=e}function O(){var e;(e=m.value)==null||e.fetch()}function R(e){h.push(`${k.editPath}/${e}`)}async function C(e){var o,n,r;try{await A.get(`${k.activePath}/${e}`),$.success("تغییرات ثبت شد"),(o=m.value)==null||o.fetch()}catch(t){$.error(((r=(n=t==null?void 0:t.response)==null?void 0:n.data)==null?void 0:r.message)??"خطا در تغییر وضعیت")}}return(e,o)=>{const n=x("a-tooltip"),r=x("a-card");return s(),i(r,{title:a.title,class:"page-card"},{default:l(()=>[d(N,{ref_key:"tbl",ref:m,model:a.model,"mobile-cards":""},P({actions:l(({record:t})=>[w("div",X,[a.addRid?(s(),i(n,{key:0,title:"ویرایش"},{default:l(()=>[d(u(y),{class:"cursor-pointer mx-1 text-primary",onClick:p=>b(t.id)},null,8,["onClick"])]),_:2},1024)):(s(),i(n,{key:1,title:"ویرایش"},{default:l(()=>[d(u(y),{class:"cursor-pointer mx-1 text-primary",onClick:p=>R(t.id)},null,8,["onClick"])]),_:2},1024)),d(n,{title:"وضعیت"},{default:l(()=>[t.is_active?(s(),i(u(B),{key:0,class:"cursor-pointer mx-1 text-success",onClick:p=>C(t.id)},null,8,["onClick"])):(s(),i(u(L),{key:1,class:"cursor-pointer mx-1 text-danger",onClick:p=>C(t.id)},null,8,["onClick"]))]),_:2},1024)])]),_:2},[a.addRid?{name:"add",fn:l(()=>[d(V,{rid:a.addRid,"add-label":a.addLabel,onAdd:o[0]||(o[0]=t=>_())},null,8,["rid","add-label"])]),key:"0"}:void 0]),1032,["model"]),S(e.$slots,"form",{open:c.value,editingId:f.value,onUpdateOpen:g,onSuccess:O})]),_:3},8,["title"])}}});export{U as _}; +import{d as E,a as i,w as l,r as x,o as s,c as d,ak as P,p as w,h as u,E as y,W as B,$ as L,a8 as S,m as v,y as A,G as $,l as I}from"./index-CuIWfDbM.js";import{X as N}from"./model-D_9omyEY.js";import{_ as V}from"./ListPageHeader.vue_vue_type_script_setup_true_lang-ReVXBl8h.js";const X={class:"flex gap-2"},U=E({__name:"FacilityList",props:{title:{},model:{},editPath:{},activePath:{},addRid:{},addLabel:{}},setup(a){const k=a,h=I(),m=v(null),c=v(!1),f=v(void 0);function _(){f.value=void 0,c.value=!0}function b(e){f.value=e,c.value=!0}function g(e){c.value=e}function O(){var e;(e=m.value)==null||e.fetch()}function R(e){h.push(`${k.editPath}/${e}`)}async function C(e){var o,n,r;try{await A.get(`${k.activePath}/${e}`),$.success("تغییرات ثبت شد"),(o=m.value)==null||o.fetch()}catch(t){$.error(((r=(n=t==null?void 0:t.response)==null?void 0:n.data)==null?void 0:r.message)??"خطا در تغییر وضعیت")}}return(e,o)=>{const n=x("a-tooltip"),r=x("a-card");return s(),i(r,{title:a.title,class:"page-card"},{default:l(()=>[d(N,{ref_key:"tbl",ref:m,model:a.model,"mobile-cards":""},P({actions:l(({record:t})=>[w("div",X,[a.addRid?(s(),i(n,{key:0,title:"ویرایش"},{default:l(()=>[d(u(y),{class:"cursor-pointer mx-1 text-primary",onClick:p=>b(t.id)},null,8,["onClick"])]),_:2},1024)):(s(),i(n,{key:1,title:"ویرایش"},{default:l(()=>[d(u(y),{class:"cursor-pointer mx-1 text-primary",onClick:p=>R(t.id)},null,8,["onClick"])]),_:2},1024)),d(n,{title:"وضعیت"},{default:l(()=>[t.is_active?(s(),i(u(B),{key:0,class:"cursor-pointer mx-1 text-success",onClick:p=>C(t.id)},null,8,["onClick"])):(s(),i(u(L),{key:1,class:"cursor-pointer mx-1 text-danger",onClick:p=>C(t.id)},null,8,["onClick"]))]),_:2},1024)])]),_:2},[a.addRid?{name:"add",fn:l(()=>[d(V,{rid:a.addRid,"add-label":a.addLabel,onAdd:o[0]||(o[0]=t=>_())},null,8,["rid","add-label"])]),key:"0"}:void 0]),1032,["model"]),S(e.$slots,"form",{open:c.value,editingId:f.value,onUpdateOpen:g,onSuccess:O})]),_:3},8,["title"])}}});export{U as _}; diff --git a/apps/admin-panel/dist/assets/FullPage-C_F8b-zn.js b/apps/admin-panel/dist/assets/FullPage-DAalmhOT.js similarity index 70% rename from apps/admin-panel/dist/assets/FullPage-C_F8b-zn.js rename to apps/admin-panel/dist/assets/FullPage-DAalmhOT.js index d543795..af40f20 100644 --- a/apps/admin-panel/dist/assets/FullPage-C_F8b-zn.js +++ b/apps/admin-panel/dist/assets/FullPage-DAalmhOT.js @@ -1 +1 @@ -import{_ as o,b as t,c,r,o as s}from"./index-C9T3Vski.js";const n={},a={class:"layout--full-page"};function _(l,u){const e=r("router-view");return s(),t("div",a,[c(e)])}const i=o(n,[["render",_]]);export{i as default}; +import{_ as o,b as t,c,r,o as s}from"./index-CuIWfDbM.js";const n={},a={class:"layout--full-page"};function _(l,u){const e=r("router-view");return s(),t("div",a,[c(e)])}const i=o(n,[["render",_]]);export{i as default}; diff --git a/apps/admin-panel/dist/assets/IamCallback-DhJEaFs9.js b/apps/admin-panel/dist/assets/IamCallback-C9ayzLUP.js similarity index 85% rename from apps/admin-panel/dist/assets/IamCallback-DhJEaFs9.js rename to apps/admin-panel/dist/assets/IamCallback-C9ayzLUP.js index 45429e3..66da925 100644 --- a/apps/admin-panel/dist/assets/IamCallback-DhJEaFs9.js +++ b/apps/admin-panel/dist/assets/IamCallback-C9ayzLUP.js @@ -1 +1 @@ -import{d as r,x as c,y as n,b as i,l as m,o as d}from"./index-C9T3Vski.js";import{u as _}from"./auth-CIh5zA9X.js";const l={style:{"min-height":"100vh",display:"grid","place-items":"center"}},h=r({__name:"IamCallback",setup(p){const t=m(),o=_();return c(async()=>{const e=new URLSearchParams(window.location.search);if(sessionStorage.removeItem("gb_admin_iam_sso_checked"),e.get("error")||!e.get("code")||!e.get("state")){sessionStorage.setItem("gb_admin_iam_sso_skip","1"),await t.replace("/auth/login");return}try{const{data:s}=await n.post("admin/auth/sso/callback",{code:e.get("code"),state:e.get("state")}),a={...s};delete a.roles,delete a.ut,o.inject(a),await t.replace("/dashboard/ecommerce")}catch{sessionStorage.setItem("gb_admin_iam_sso_skip","1"),await t.replace("/auth/login")}}),(e,s)=>(d(),i("div",l,"در حال ورود..."))}});export{h as default}; +import{d as r,x as c,y as n,b as i,l as m,o as d}from"./index-CuIWfDbM.js";import{u as _}from"./auth-N_Kcbhfe.js";const l={style:{"min-height":"100vh",display:"grid","place-items":"center"}},h=r({__name:"IamCallback",setup(p){const t=m(),o=_();return c(async()=>{const e=new URLSearchParams(window.location.search);if(sessionStorage.removeItem("gb_admin_iam_sso_checked"),e.get("error")||!e.get("code")||!e.get("state")){sessionStorage.setItem("gb_admin_iam_sso_skip","1"),await t.replace("/auth/login");return}try{const{data:s}=await n.post("admin/auth/sso/callback",{code:e.get("code"),state:e.get("state")}),a={...s};delete a.roles,delete a.ut,o.inject(a),await t.replace("/dashboard/ecommerce")}catch{sessionStorage.setItem("gb_admin_iam_sso_skip","1"),await t.replace("/auth/login")}}),(e,s)=>(d(),i("div",l,"در حال ورود..."))}});export{h as default}; diff --git a/apps/admin-panel/dist/assets/ImageUploadInput.vue_vue_type_script_setup_true_lang-Bjo3vw78.js b/apps/admin-panel/dist/assets/ImageUploadInput.vue_vue_type_script_setup_true_lang-Bb4hJ8Y2.js similarity index 96% rename from apps/admin-panel/dist/assets/ImageUploadInput.vue_vue_type_script_setup_true_lang-Bjo3vw78.js rename to apps/admin-panel/dist/assets/ImageUploadInput.vue_vue_type_script_setup_true_lang-Bb4hJ8Y2.js index 728749b..7ee9c5b 100644 --- a/apps/admin-panel/dist/assets/ImageUploadInput.vue_vue_type_script_setup_true_lang-Bjo3vw78.js +++ b/apps/admin-panel/dist/assets/ImageUploadInput.vue_vue_type_script_setup_true_lang-Bb4hJ8Y2.js @@ -1 +1 @@ -import{d as B,n as P,o as u,b as r,c as m,w as h,a as N,h as b,P as D,p as y,t as I,i as R,m as i,s as S,y as U,G as q,r as f}from"./index-C9T3Vski.js";const z={class:"image-upload"},E={key:0},F={key:1},G={style:{"margin-top":"8px"}},L=["src"],$=B({__name:"ImageUploadInput",props:{modelValue:{default:null},purpose:{default:void 0},placeholder:{default:"بارگذاری"}},emits:["update:modelValue","ok"],setup(g,{emit:w}){const s=g,p=w,c=i(!1),d=i(!1),v=i(""),o=i([]);P(()=>s.modelValue,e=>{var a;e?((a=o.value[0])==null?void 0:a.url)!==e&&(o.value=[{uid:e,name:e.split("/").pop()??"file",status:"done",url:e}]):o.value=[]},{immediate:!0});const V=S(()=>s.placeholder);async function k({file:e}){var l,n;const a=new FormData;a.append("file",e),s.purpose&&a.append("purpose",s.purpose),c.value=!0;try{const{data:t}=await U.post("file/create",a);p("update:modelValue",t.url),p("ok",t)}catch(t){const _=((n=(l=t==null?void 0:t.response)==null?void 0:l.data)==null?void 0:n.message)??"بارگذاری فایل ناموفق بود";q.error(_)}finally{c.value=!1}}function x(){return p("update:modelValue",null),!0}function C(e){v.value=e.url,d.value=!0}return(e,a)=>{const l=f("a-spin"),n=f("a-upload"),t=f("a-modal");return u(),r("div",z,[m(n,{"file-list":o.value,"list-type":"picture-card","max-count":1,accept:"image/*","custom-request":k,onRemove:x,onPreview:C},{default:h(()=>[o.value.length===0?(u(),r("div",E,[c.value?(u(),N(l,{key:0,size:"small"})):(u(),r("div",F,[m(b(D)),y("div",G,I(V.value),1)]))])):R("",!0)]),_:1},8,["file-list"]),m(t,{open:d.value,footer:null,onCancel:a[0]||(a[0]=_=>d.value=!1)},{default:h(()=>[y("img",{src:v.value,style:{width:"100%"},alt:""},null,8,L)]),_:1},8,["open"])])}}});export{$ as _}; +import{d as B,n as P,o as u,b as r,c as m,w as h,a as N,h as b,P as D,p as y,t as I,i as R,m as i,s as S,y as U,G as q,r as f}from"./index-CuIWfDbM.js";const z={class:"image-upload"},E={key:0},F={key:1},G={style:{"margin-top":"8px"}},L=["src"],$=B({__name:"ImageUploadInput",props:{modelValue:{default:null},purpose:{default:void 0},placeholder:{default:"بارگذاری"}},emits:["update:modelValue","ok"],setup(g,{emit:w}){const s=g,p=w,c=i(!1),d=i(!1),v=i(""),o=i([]);P(()=>s.modelValue,e=>{var a;e?((a=o.value[0])==null?void 0:a.url)!==e&&(o.value=[{uid:e,name:e.split("/").pop()??"file",status:"done",url:e}]):o.value=[]},{immediate:!0});const V=S(()=>s.placeholder);async function k({file:e}){var l,n;const a=new FormData;a.append("file",e),s.purpose&&a.append("purpose",s.purpose),c.value=!0;try{const{data:t}=await U.post("file/create",a);p("update:modelValue",t.url),p("ok",t)}catch(t){const _=((n=(l=t==null?void 0:t.response)==null?void 0:l.data)==null?void 0:n.message)??"بارگذاری فایل ناموفق بود";q.error(_)}finally{c.value=!1}}function x(){return p("update:modelValue",null),!0}function C(e){v.value=e.url,d.value=!0}return(e,a)=>{const l=f("a-spin"),n=f("a-upload"),t=f("a-modal");return u(),r("div",z,[m(n,{"file-list":o.value,"list-type":"picture-card","max-count":1,accept:"image/*","custom-request":k,onRemove:x,onPreview:C},{default:h(()=>[o.value.length===0?(u(),r("div",E,[c.value?(u(),N(l,{key:0,size:"small"})):(u(),r("div",F,[m(b(D)),y("div",G,I(V.value),1)]))])):R("",!0)]),_:1},8,["file-list"]),m(t,{open:d.value,footer:null,onCancel:a[0]||(a[0]=_=>d.value=!1)},{default:h(()=>[y("img",{src:v.value,style:{width:"100%"},alt:""},null,8,L)]),_:1},8,["open"])])}}});export{$ as _}; diff --git a/apps/admin-panel/dist/assets/List-BbWC9Lv8.js b/apps/admin-panel/dist/assets/List-BbWC9Lv8.js new file mode 100644 index 0000000..d8fedc3 --- /dev/null +++ b/apps/admin-panel/dist/assets/List-BbWC9Lv8.js @@ -0,0 +1 @@ +import{a as $,b as s,X as B}from"./model-D_9omyEY.js";import{_ as E}from"./ListPageHeader.vue_vue_type_script_setup_true_lang-ReVXBl8h.js";import{_ as D}from"./Add.vue_vue_type_script_setup_true_lang-GQn7yiQq.js";import{d as X,u as M,b as O,c as i,w as o,r as u,o as c,h as m,a as f,E as T,i as b,D as V,p as w,m as _}from"./index-CuIWfDbM.js";import{u as A}from"./useDeleteHandler-c5WtaKjp.js";import"./filters-Cvt98RIq.js";import"./index-CPTngTRs.js";import"./SettingOutlined-BehgjsnT.js";import"./select--BgT6D7O.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-DXuLuiBZ.js";import"./ImageUploadInput.vue_vue_type_script_setup_true_lang-Bb4hJ8Y2.js";function I(){const t=new $("admin/categories/list","لیست دسته بندی");return t.add(new s("id","شماره").filterNumber()),t.add(new s("image","تصویر").noSort().renderSlot("image")),t.add(new s("type_str","نوع نمایش")),t.add(new s("title","عنوان دسته").filterNumber()),t.add(new s("parent.title","پدر دسته").filterNumber()),t.add(new s("opt","عملیات").noSort().renderSlot("opt")),t}const P={id:"page-user-list"},U=["src"],j="/img/no-items.png",Y=X({__name:"List",setup(t){const k=M(),g=n=>!!k.hasPermission(n),y=I(),p=_(null),r=_(!1),l=_(void 0),{remove:x}=A({onSuccess:()=>{var n;return(n=p.value)==null?void 0:n.fetch()},successMessage:"دسته حذف شد",successType:"info",fallbackErrorMessage:"خطا در حذف دسته"});function C(){l.value=void 0,r.value=!0}function S(n){l.value=n,r.value=!0}return(n,a)=>{const v=u("a-tooltip"),h=u("a-popconfirm"),N=u("a-card");return c(),O("div",P,[i(N,{title:"لیست دسته بندی ها",class:"page-card"},{default:o(()=>[i(B,{ref_key:"tbl",ref:p,model:m(y),"mobile-cards":""},{add:o(()=>[i(E,{rid:"collection.create","add-label":"افزودن دسته",onAdd:C})]),image:o(({text:e})=>[w("img",{width:"90px",height:"90px",style:{"object-fit":"scale-down"},src:e&&e.image?e.image:j},null,8,U)]),opt:o(({record:e})=>[g("collection.list.edit")?(c(),f(v,{key:0,title:"ویرایش"},{default:o(()=>[i(m(T),{class:"cursor-pointer mx-1 text-primary",onClick:d=>S(e.id)},null,8,["onClick"])]),_:2},1024)):b("",!0),g("collection.list.remove")?(c(),f(v,{key:1,title:"حذف"},{default:o(()=>[i(h,{placement:"top","ok-text":"بله","cancel-text":"خیر",onConfirm:d=>m(x)(`category/${e.id}`)},{title:o(()=>[...a[2]||(a[2]=[w("p",null,"آیا مطمئن به حذف دسته مورد نظر هستید ؟",-1)])]),default:o(()=>[i(m(V),{class:"cursor-pointer mx-1 text-danger"})]),_:1},8,["onConfirm"])]),_:2},1024)):b("",!0)]),_:1},8,["model"]),(c(),f(D,{key:l.value??"new",open:r.value,id:l.value,"onUpdate:open":a[0]||(a[0]=e=>r.value=e),onSuccess:a[1]||(a[1]=e=>{var d;return(d=p.value)==null?void 0:d.fetch()})},null,8,["open","id"]))]),_:1})])}}});export{Y as default}; diff --git a/apps/admin-panel/dist/assets/List-CG4Z6bu4.js b/apps/admin-panel/dist/assets/List-CG4Z6bu4.js deleted file mode 100644 index 88b3cea..0000000 --- a/apps/admin-panel/dist/assets/List-CG4Z6bu4.js +++ /dev/null @@ -1 +0,0 @@ -import{a as $,b as s,X as B}from"./model-B4TWAN58.js";import{_ as E}from"./ListPageHeader.vue_vue_type_script_setup_true_lang-BDf2BWcO.js";import{_ as D}from"./Add.vue_vue_type_script_setup_true_lang-UtZ_MoEU.js";import{d as X,u as M,b as O,c as i,w as o,r as u,o as c,h as m,a as f,E as T,i as b,D as V,p as w,m as _}from"./index-C9T3Vski.js";import{u as A}from"./useDeleteHandler-D_sYZzLs.js";import"./filters-D6Nzbpog.js";import"./index-m6pCHaEa.js";import"./SettingOutlined-BizkfqvN.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-Du4lPDHl.js";import"./ImageUploadInput.vue_vue_type_script_setup_true_lang-Bjo3vw78.js";function I(){const t=new $("admin/categories/list","لیست دسته بندی");return t.add(new s("id","شماره").filterNumber()),t.add(new s("image","تصویر").noSort().renderSlot("image")),t.add(new s("type_str","نوع نمایش")),t.add(new s("title","عنوان دسته").filterNumber()),t.add(new s("parent.title","پدر دسته").filterNumber()),t.add(new s("opt","عملیات").noSort().renderSlot("opt")),t}const P={id:"page-user-list"},U=["src"],j="/img/no-items.png",W=X({__name:"List",setup(t){const k=M(),g=n=>!!k.hasPermission(n),y=I(),p=_(null),r=_(!1),l=_(void 0),{remove:x}=A({onSuccess:()=>{var n;return(n=p.value)==null?void 0:n.fetch()},successMessage:"دسته حذف شد",successType:"info",fallbackErrorMessage:"خطا در حذف دسته"});function C(){l.value=void 0,r.value=!0}function S(n){l.value=n,r.value=!0}return(n,a)=>{const v=u("a-tooltip"),h=u("a-popconfirm"),N=u("a-card");return c(),O("div",P,[i(N,{title:"لیست دسته بندی ها",class:"page-card"},{default:o(()=>[i(B,{ref_key:"tbl",ref:p,model:m(y),"mobile-cards":""},{add:o(()=>[i(E,{rid:"collection.create","add-label":"افزودن دسته",onAdd:C})]),image:o(({text:e})=>[w("img",{width:"90px",height:"90px",style:{"object-fit":"scale-down"},src:e&&e.image?e.image:j},null,8,U)]),opt:o(({record:e})=>[g("collection.list.edit")?(c(),f(v,{key:0,title:"ویرایش"},{default:o(()=>[i(m(T),{class:"cursor-pointer mx-1 text-primary",onClick:d=>S(e.id)},null,8,["onClick"])]),_:2},1024)):b("",!0),g("collection.list.remove")?(c(),f(v,{key:1,title:"حذف"},{default:o(()=>[i(h,{placement:"top","ok-text":"بله","cancel-text":"خیر",onConfirm:d=>m(x)(`category/${e.id}`)},{title:o(()=>[...a[2]||(a[2]=[w("p",null,"آیا مطمئن به حذف دسته مورد نظر هستید ؟",-1)])]),default:o(()=>[i(m(V),{class:"cursor-pointer mx-1 text-danger"})]),_:1},8,["onConfirm"])]),_:2},1024)):b("",!0)]),_:1},8,["model"]),(c(),f(D,{key:l.value??"new",open:r.value,id:l.value,"onUpdate:open":a[0]||(a[0]=e=>r.value=e),onSuccess:a[1]||(a[1]=e=>{var d;return(d=p.value)==null?void 0:d.fetch()})},null,8,["open","id"]))]),_:1})])}}});export{W as default}; diff --git a/apps/admin-panel/dist/assets/List-DuiptuLt.js b/apps/admin-panel/dist/assets/List-CoXqHG4E.js similarity index 90% rename from apps/admin-panel/dist/assets/List-DuiptuLt.js rename to apps/admin-panel/dist/assets/List-CoXqHG4E.js index dc0a1bf..d508bd5 100644 --- a/apps/admin-panel/dist/assets/List-DuiptuLt.js +++ b/apps/admin-panel/dist/assets/List-CoXqHG4E.js @@ -1 +1 @@ -import{u as q,d as ee,b as v,c,w as s,s as E,r as R,o as n,h as U,H as te,t as k,i as h,p as B,a as T,f as w,F as D,m as f,y as S,G as o,X as ae,_ as re}from"./index-C9T3Vski.js";import{a as ie,b as m,X as se}from"./model-B4TWAN58.js";import{_ as $}from"./TooltipBtn.vue_vue_type_script_setup_true_lang-4rxU9Kz6.js";import{O as ne,a as oe}from"./OrderStatusTimeline-DQxbBFjr.js";import{a as le}from"./filters-D6Nzbpog.js";import"./SettingOutlined-BizkfqvN.js";import"./icons-1fD-iiAA.js";import"./UnorderedListOutlined-Bl0oFRyr.js";import"./PercentageOutlined-CxUloK5J.js";import"./UserAddOutlined-BlPGjUCi.js";import"./CreditCardOutlined-BxTC_oHD.js";import"./AppstoreOutlined-lwgIJvjh.js";import"./TeamOutlined-j5HKaunb.js";import"./UserOutlined-Csu4xHRr.js";import"./CameraOutlined-C6gLi8-9.js";import"./PictureOutlined-BBgbZIZs.js";import"./index-m6pCHaEa.js";import"./SafetyCertificateOutlined-DS5dQeR2.js";function de(){const l=new ie("admin/orders/list","لیست سفارش های تک فروشی");l.add(new m("id","شماره").filterNumber()),l.add(new m("customer.fname","نام مشتری").filterKey("customer.fullName").filterText()),l.add(new m("customer.lname","نام خانوادگی").filterKey("customer.fullName").filterText()),l.add(new m("total_price","جمع کل سفارش").renderSlot("total_price").filterText()),l.add(new m("items","تعداد آیتم ها").renderSlot("items_len").noSort()),l.add(new m("caj","تاریخ ثبت").filterKey("createdAt").filterDate().noSort()),l.add(new m("uaj","تاریخ ویرایش").hidden().filterKey("updatedAt").filterDate().noSort()),l.add(new m("user","ثبت کننده").renderSlot("user").noSort());const I=q();return I.roles&&I.roles.includes("order.tamin.state")&&(l.add(new m("sts_str","وضعیت").renderSlot("sts").noSort()),l.add(new m("branch.name","نام شعبه").filterText().noSort())),l.add(new m("opt","عملیات").noSort().renderSlot("opt")),l}const ue={id:"page-user-list"},ce={class:"flex"},me={key:0},ve={key:0},fe={key:1},pe={key:0},ye=["onClick"],we={key:1},ge={class:"flex justify-between flex-wrap gap-2"},_e={class:"flex gap-2 flex-wrap"},be=ee({__name:"List",setup(l){const I=q(),g=a=>!!I.hasPermission(a),A=de(),_=f(null),r=f(void 0),N=f(""),x=f(!1),b=f(!1),p=f(!1),O=f(!1),V=f(""),L=f(1),X=E(()=>ae()),P=E(()=>g("order.list.view.edit"));async function F(a){a.branch_id||(r.value=await C(a.id),b.value=!0)}async function C(a){const{data:e}=await S.get(`admin/orders/${a}`);return e}async function K(a){var e,i;try{await S.post("single/order-sts/edit",{orderId:(e=r.value)==null?void 0:e.id,status:a.status,note:a.note}),b.value=!1,o.info("ویرایش موفق آمیز"),(i=_.value)==null||i.fetch()}catch{o.error("خطا در ویرایش")}}async function M(a){var e,i;try{await S.post("single/order-sts/edit",{orderId:(e=r.value)==null?void 0:e.id,status:a.status,note:a.note,remove:!0}),b.value=!1,o.info("ویرایش موفق آمیز"),(i=_.value)==null||i.fetch()}catch{o.error("خطا در ویرایش")}}function j(){x.value=!1,p.value=!1}function G(){if(N.value)try{r.value=JSON.parse(N.value)}catch{}p.value=!1}function J(a){var e;if((e=r.value)!=null&&e.items){if(r.value.items.length<=1){o.warning("حداقل یک آیتم باید در سفارش بماند");return}r.value.items.splice(a,1)}}function H(a){const e=a.variantId.trim();if(!e){o.warning("یک تنوع انتخاب کنید");return}r.value&&(r.value.items.push({productVariantId:e,title:a.title??"آیتم جدید",variant_title:a.variantTitle??e,qty:a.qty||1,grams:a.grams??0,flatRialCharge:a.flatRialCharge??0,wagePercent:a.wagePercent,rash:a.grams??0,image:a.image??null}),V.value="",L.value=1)}async function Q(){var e,i,d,u;if(!((e=r.value)!=null&&e.id))return;const a=(r.value.items??[]).filter(t=>t.productVariantId).map(t=>({productVariantId:t.productVariantId,quantity:Number(t.qty)||1,grams:Number(t.grams)||void 0,flatRialCharge:Number(t.flatRialCharge)||0,rashWeightGrams:t.rash!=null?Number(t.rash):void 0,wagePercent:t.wagePercent!=null?Number(t.wagePercent):void 0,discountPercent:t.discountPercent!=null?Number(t.discountPercent):void 0}));if(!a.length){o.error("حداقل یک آیتم لازم است");return}O.value=!0;try{await S.post("admin/orders/edit/propose",{orderId:r.value.id,items:a}),o.success("پیشنهاد ویرایش ثبت شد؛ پیامک برای مشتری ارسال می‌شود"),p.value=!1,r.value=await C(r.value.id),N.value=JSON.stringify(r.value),(i=_.value)==null||i.fetch()}catch(t){o.error(((u=(d=t==null?void 0:t.response)==null?void 0:d.data)==null?void 0:u.message)??"خطا در ثبت ویرایش")}finally{O.value=!1}}async function W(){var a,e,i,d;if((a=r.value)!=null&&a.id)try{await S.post("admin/orders/edit/force-apply",{orderId:r.value.id}),o.success("ویرایش به‌صورت اجباری اعمال شد"),r.value=await C(r.value.id),(e=_.value)==null||e.fetch()}catch(u){o.error(((d=(i=u==null?void 0:u.response)==null?void 0:i.data)==null?void 0:d.message)??"خطا در اعمال")}}async function Y(){var a,e,i,d;if((a=r.value)!=null&&a.id)try{await S.post("admin/orders/edit/discard",{orderId:r.value.id}),o.success("پیشنهاد ویرایش لغو شد"),r.value=await C(r.value.id),(e=_.value)==null||e.fetch()}catch(u){o.error(((d=(i=u==null?void 0:u.response)==null?void 0:i.data)==null?void 0:d.message)??"خطا در لغو")}}async function z(a){r.value=await C(a.id),N.value=JSON.stringify(r.value),p.value=!1,x.value=!0}async function Z(a){o.warning("خروجی PDF هنوز در بک‌اند جدید پیاده‌سازی نشده است")}return(a,e)=>{const i=R("a-button"),d=R("a-modal"),u=R("a-card");return n(),v("div",ue,[c(u,{title:X.value?"لیست سفارش":"لیست سفارش های تک فروشی",class:"page-card"},{default:s(()=>[c(se,{ref_key:"tbl",ref:_,model:U(A),"mobile-cards":""},{opt:s(({record:t})=>[B("div",ce,[g("order.list.view")?(n(),T($,{key:0,"icon-class":"w-5 h-5 text-primary",class:"mr-3",icon:"ListIcon",title:"مشاهده سفارش",onClick:y=>z(t)},null,8,["onClick"])):h("",!0),g("order.list.pdf")?(n(),T($,{key:1,"icon-class":"w-5 h-5 text-danger",class:"mr-3",icon:"FileIcon",title:"دانلود pdf",onClick:y=>Z(t.id)},null,8,["onClick"])):h("",!0)])]),items_len:s(({text:t})=>[t?(n(),v("div",me,k(t.length),1)):h("",!0)]),user:s(({text:t,record:y})=>[t?(n(),v("div",ve,k(t.name),1)):(n(),v("div",fe,k(y.customer.fname+" "+y.customer.lname),1))]),total_price:s(({text:t})=>[t?(n(),v("div",pe,k(U(le)(t)),1)):h("",!0)]),sts:s(({text:t,record:y})=>[g("order.list.sts")?(n(),v("a",{key:0,href:"",onClick:te(ke=>F(y),["prevent"])},k(t),9,ye)):(n(),v("span",we,k(t),1))]),_:1},8,["model"]),c(d,{open:b.value,"onUpdate:open":e[1]||(e[1]=t=>b.value=t),title:"وضعیت سفارش",width:"480px","wrap-class-name":"detail-modal"},{footer:s(()=>[c(i,{onClick:e[0]||(e[0]=t=>b.value=!1)},{default:s(()=>[...e[6]||(e[6]=[w("بستن",-1)])]),_:1})]),default:s(()=>[r.value?(n(),T(ne,{key:0,activity:r.value.activity||[],"can-submit":g("order.list.sts.submit"),"can-remove":g("order.list.sts.remove"),onSubmit:K,onRemove:M},null,8,["activity","can-submit","can-remove"])):h("",!0)]),_:1},8,["open"]),c(d,{open:x.value,"onUpdate:open":e[5]||(e[5]=t=>x.value=t),title:"مشاهده سفارش",width:p.value&&P.value?1120:760,"wrap-class-name":"detail-modal order-detail-modal","body-style":{maxHeight:"78vh",overflowY:"auto"}},{footer:s(()=>{var t;return[B("div",ge,[c(i,{onClick:j},{default:s(()=>[...e[7]||(e[7]=[w("بستن",-1)])]),_:1}),B("div",_e,[((t=r.value)==null?void 0:t.revisionStatus)==="AWAITING_CUSTOMER"&&P.value?(n(),v(D,{key:0},[c(i,{onClick:Y},{default:s(()=>[...e[8]||(e[8]=[w("لغو پیشنهاد",-1)])]),_:1}),c(i,{type:"primary",danger:"",onClick:W},{default:s(()=>[...e[9]||(e[9]=[w("اعمال اجباری",-1)])]),_:1})],64)):P.value?(n(),v(D,{key:1},[p.value?(n(),v(D,{key:1},[c(i,{onClick:G},{default:s(()=>[...e[11]||(e[11]=[w("انصراف",-1)])]),_:1}),c(i,{type:"primary",danger:"",loading:O.value,onClick:Q},{default:s(()=>[...e[12]||(e[12]=[w(" ارسال برای تأیید مشتری ",-1)])]),_:1},8,["loading"])],64)):(n(),T(i,{key:0,type:"primary",onClick:e[4]||(e[4]=y=>p.value=!0)},{default:s(()=>[...e[10]||(e[10]=[w("شروع ویرایش",-1)])]),_:1}))],64)):h("",!0)])])]}),default:s(()=>[c(oe,{order:r.value,"edit-mode":p.value&&P.value,"add-variant-id":V.value,"onUpdate:addVariantId":e[2]||(e[2]=t=>V.value=t),"add-qty":L.value,"onUpdate:addQty":e[3]||(e[3]=t=>L.value=t),onRemoveLine:J,onAddLine:H},null,8,["order","edit-mode","add-variant-id","add-qty"])]),_:1},8,["open","width"])]),_:1},8,["title"])])}}}),Ae=re(be,[["__scopeId","data-v-b4230ec1"]]);export{Ae as default}; +import{u as q,d as ee,b as v,c,w as s,s as E,r as R,o as n,h as U,H as te,t as k,i as h,p as B,a as T,f as w,F as D,m as f,y as S,G as o,X as ae,_ as re}from"./index-CuIWfDbM.js";import{a as ie,b as m,X as se}from"./model-D_9omyEY.js";import{_ as $}from"./TooltipBtn.vue_vue_type_script_setup_true_lang-D0mVo7Ou.js";import{O as ne,a as oe}from"./OrderStatusTimeline-e__KlfQg.js";import{a as le}from"./filters-Cvt98RIq.js";import"./SettingOutlined-BehgjsnT.js";import"./icons-BWdsnUVP.js";import"./UnorderedListOutlined-DOoZELHj.js";import"./PercentageOutlined-Cooaq8mh.js";import"./UserAddOutlined-BBmLFe8z.js";import"./CreditCardOutlined-BRF7XcYB.js";import"./AppstoreOutlined-6RRW3vIa.js";import"./TeamOutlined-CqxRZks7.js";import"./UserOutlined-aZ-mQgwc.js";import"./CameraOutlined-Dx8LoT1m.js";import"./PictureOutlined-CixWElmx.js";import"./index-CPTngTRs.js";import"./SafetyCertificateOutlined-DWQ69biy.js";function de(){const l=new ie("admin/orders/list","لیست سفارش های تک فروشی");l.add(new m("id","شماره").filterNumber()),l.add(new m("customer.fname","نام مشتری").filterKey("customer.fullName").filterText()),l.add(new m("customer.lname","نام خانوادگی").filterKey("customer.fullName").filterText()),l.add(new m("total_price","جمع کل سفارش").renderSlot("total_price").filterText()),l.add(new m("items","تعداد آیتم ها").renderSlot("items_len").noSort()),l.add(new m("caj","تاریخ ثبت").filterKey("createdAt").filterDate().noSort()),l.add(new m("uaj","تاریخ ویرایش").hidden().filterKey("updatedAt").filterDate().noSort()),l.add(new m("user","ثبت کننده").renderSlot("user").noSort());const I=q();return I.roles&&I.roles.includes("order.tamin.state")&&(l.add(new m("sts_str","وضعیت").renderSlot("sts").noSort()),l.add(new m("branch.name","نام شعبه").filterText().noSort())),l.add(new m("opt","عملیات").noSort().renderSlot("opt")),l}const ue={id:"page-user-list"},ce={class:"flex"},me={key:0},ve={key:0},fe={key:1},pe={key:0},ye=["onClick"],we={key:1},ge={class:"flex justify-between flex-wrap gap-2"},_e={class:"flex gap-2 flex-wrap"},be=ee({__name:"List",setup(l){const I=q(),g=a=>!!I.hasPermission(a),A=de(),_=f(null),r=f(void 0),N=f(""),x=f(!1),b=f(!1),p=f(!1),O=f(!1),V=f(""),L=f(1),X=E(()=>ae()),P=E(()=>g("order.list.view.edit"));async function F(a){a.branch_id||(r.value=await C(a.id),b.value=!0)}async function C(a){const{data:e}=await S.get(`admin/orders/${a}`);return e}async function K(a){var e,i;try{await S.post("single/order-sts/edit",{orderId:(e=r.value)==null?void 0:e.id,status:a.status,note:a.note}),b.value=!1,o.info("ویرایش موفق آمیز"),(i=_.value)==null||i.fetch()}catch{o.error("خطا در ویرایش")}}async function M(a){var e,i;try{await S.post("single/order-sts/edit",{orderId:(e=r.value)==null?void 0:e.id,status:a.status,note:a.note,remove:!0}),b.value=!1,o.info("ویرایش موفق آمیز"),(i=_.value)==null||i.fetch()}catch{o.error("خطا در ویرایش")}}function j(){x.value=!1,p.value=!1}function G(){if(N.value)try{r.value=JSON.parse(N.value)}catch{}p.value=!1}function J(a){var e;if((e=r.value)!=null&&e.items){if(r.value.items.length<=1){o.warning("حداقل یک آیتم باید در سفارش بماند");return}r.value.items.splice(a,1)}}function H(a){const e=a.variantId.trim();if(!e){o.warning("یک تنوع انتخاب کنید");return}r.value&&(r.value.items.push({productVariantId:e,title:a.title??"آیتم جدید",variant_title:a.variantTitle??e,qty:a.qty||1,grams:a.grams??0,flatRialCharge:a.flatRialCharge??0,wagePercent:a.wagePercent,rash:a.grams??0,image:a.image??null}),V.value="",L.value=1)}async function Q(){var e,i,d,u;if(!((e=r.value)!=null&&e.id))return;const a=(r.value.items??[]).filter(t=>t.productVariantId).map(t=>({productVariantId:t.productVariantId,quantity:Number(t.qty)||1,grams:Number(t.grams)||void 0,flatRialCharge:Number(t.flatRialCharge)||0,rashWeightGrams:t.rash!=null?Number(t.rash):void 0,wagePercent:t.wagePercent!=null?Number(t.wagePercent):void 0,discountPercent:t.discountPercent!=null?Number(t.discountPercent):void 0}));if(!a.length){o.error("حداقل یک آیتم لازم است");return}O.value=!0;try{await S.post("admin/orders/edit/propose",{orderId:r.value.id,items:a}),o.success("پیشنهاد ویرایش ثبت شد؛ پیامک برای مشتری ارسال می‌شود"),p.value=!1,r.value=await C(r.value.id),N.value=JSON.stringify(r.value),(i=_.value)==null||i.fetch()}catch(t){o.error(((u=(d=t==null?void 0:t.response)==null?void 0:d.data)==null?void 0:u.message)??"خطا در ثبت ویرایش")}finally{O.value=!1}}async function W(){var a,e,i,d;if((a=r.value)!=null&&a.id)try{await S.post("admin/orders/edit/force-apply",{orderId:r.value.id}),o.success("ویرایش به‌صورت اجباری اعمال شد"),r.value=await C(r.value.id),(e=_.value)==null||e.fetch()}catch(u){o.error(((d=(i=u==null?void 0:u.response)==null?void 0:i.data)==null?void 0:d.message)??"خطا در اعمال")}}async function Y(){var a,e,i,d;if((a=r.value)!=null&&a.id)try{await S.post("admin/orders/edit/discard",{orderId:r.value.id}),o.success("پیشنهاد ویرایش لغو شد"),r.value=await C(r.value.id),(e=_.value)==null||e.fetch()}catch(u){o.error(((d=(i=u==null?void 0:u.response)==null?void 0:i.data)==null?void 0:d.message)??"خطا در لغو")}}async function z(a){r.value=await C(a.id),N.value=JSON.stringify(r.value),p.value=!1,x.value=!0}async function Z(a){o.warning("خروجی PDF هنوز در بک‌اند جدید پیاده‌سازی نشده است")}return(a,e)=>{const i=R("a-button"),d=R("a-modal"),u=R("a-card");return n(),v("div",ue,[c(u,{title:X.value?"لیست سفارش":"لیست سفارش های تک فروشی",class:"page-card"},{default:s(()=>[c(se,{ref_key:"tbl",ref:_,model:U(A),"mobile-cards":""},{opt:s(({record:t})=>[B("div",ce,[g("order.list.view")?(n(),T($,{key:0,"icon-class":"w-5 h-5 text-primary",class:"mr-3",icon:"ListIcon",title:"مشاهده سفارش",onClick:y=>z(t)},null,8,["onClick"])):h("",!0),g("order.list.pdf")?(n(),T($,{key:1,"icon-class":"w-5 h-5 text-danger",class:"mr-3",icon:"FileIcon",title:"دانلود pdf",onClick:y=>Z(t.id)},null,8,["onClick"])):h("",!0)])]),items_len:s(({text:t})=>[t?(n(),v("div",me,k(t.length),1)):h("",!0)]),user:s(({text:t,record:y})=>[t?(n(),v("div",ve,k(t.name),1)):(n(),v("div",fe,k(y.customer.fname+" "+y.customer.lname),1))]),total_price:s(({text:t})=>[t?(n(),v("div",pe,k(U(le)(t)),1)):h("",!0)]),sts:s(({text:t,record:y})=>[g("order.list.sts")?(n(),v("a",{key:0,href:"",onClick:te(ke=>F(y),["prevent"])},k(t),9,ye)):(n(),v("span",we,k(t),1))]),_:1},8,["model"]),c(d,{open:b.value,"onUpdate:open":e[1]||(e[1]=t=>b.value=t),title:"وضعیت سفارش",width:"480px","wrap-class-name":"detail-modal"},{footer:s(()=>[c(i,{onClick:e[0]||(e[0]=t=>b.value=!1)},{default:s(()=>[...e[6]||(e[6]=[w("بستن",-1)])]),_:1})]),default:s(()=>[r.value?(n(),T(ne,{key:0,activity:r.value.activity||[],"can-submit":g("order.list.sts.submit"),"can-remove":g("order.list.sts.remove"),onSubmit:K,onRemove:M},null,8,["activity","can-submit","can-remove"])):h("",!0)]),_:1},8,["open"]),c(d,{open:x.value,"onUpdate:open":e[5]||(e[5]=t=>x.value=t),title:"مشاهده سفارش",width:p.value&&P.value?1120:760,"wrap-class-name":"detail-modal order-detail-modal","body-style":{maxHeight:"78vh",overflowY:"auto"}},{footer:s(()=>{var t;return[B("div",ge,[c(i,{onClick:j},{default:s(()=>[...e[7]||(e[7]=[w("بستن",-1)])]),_:1}),B("div",_e,[((t=r.value)==null?void 0:t.revisionStatus)==="AWAITING_CUSTOMER"&&P.value?(n(),v(D,{key:0},[c(i,{onClick:Y},{default:s(()=>[...e[8]||(e[8]=[w("لغو پیشنهاد",-1)])]),_:1}),c(i,{type:"primary",danger:"",onClick:W},{default:s(()=>[...e[9]||(e[9]=[w("اعمال اجباری",-1)])]),_:1})],64)):P.value?(n(),v(D,{key:1},[p.value?(n(),v(D,{key:1},[c(i,{onClick:G},{default:s(()=>[...e[11]||(e[11]=[w("انصراف",-1)])]),_:1}),c(i,{type:"primary",danger:"",loading:O.value,onClick:Q},{default:s(()=>[...e[12]||(e[12]=[w(" ارسال برای تأیید مشتری ",-1)])]),_:1},8,["loading"])],64)):(n(),T(i,{key:0,type:"primary",onClick:e[4]||(e[4]=y=>p.value=!0)},{default:s(()=>[...e[10]||(e[10]=[w("شروع ویرایش",-1)])]),_:1}))],64)):h("",!0)])])]}),default:s(()=>[c(oe,{order:r.value,"edit-mode":p.value&&P.value,"add-variant-id":V.value,"onUpdate:addVariantId":e[2]||(e[2]=t=>V.value=t),"add-qty":L.value,"onUpdate:addQty":e[3]||(e[3]=t=>L.value=t),onRemoveLine:J,onAddLine:H},null,8,["order","edit-mode","add-variant-id","add-qty"])]),_:1},8,["open","width"])]),_:1},8,["title"])])}}}),Ae=re(be,[["__scopeId","data-v-b4230ec1"]]);export{Ae as default}; diff --git a/apps/admin-panel/dist/assets/ListBranches-j6HPMiyF.js b/apps/admin-panel/dist/assets/ListBranches-j6HPMiyF.js deleted file mode 100644 index f9a6a58..0000000 --- a/apps/admin-panel/dist/assets/ListBranches-j6HPMiyF.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as m}from"./FacilityList.vue_vue_type_script_setup_true_lang-B_mHvw0Q.js";import{_ as c}from"./AddBranches.vue_vue_type_script_setup_true_lang-Bih_hMrV.js";import{a as p,b as t}from"./model-B4TWAN58.js";import{d as l,a as n,w as f,h as _,o}from"./index-C9T3Vski.js";import"./ListPageHeader.vue_vue_type_script_setup_true_lang-BDf2BWcO.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-Du4lPDHl.js";import"./filters-D6Nzbpog.js";import"./index-m6pCHaEa.js";import"./SettingOutlined-BizkfqvN.js";function u(){const e=new p("admin/branches/list","لیست شعب");return e.add(new t("name","نام").filterText()),e.add(new t("address","آدرس").filterText()),e.add(new t("phone","شماره تلفن").filterNumber()),e.add(new t("user.name","مدیر شعبه").filterNumber().noSort()),e.add(new t("op","عملیات").noSort().renderSlot("actions")),e}const N=l({__name:"ListBranches",setup(e){const r=u();return(h,b)=>(o(),n(m,{title:"لیست شعب",model:_(r),"edit-path":"/branch/edit","active-path":"branch/active","add-rid":"branch.create","add-label":"افزودن شعبه"},{form:f(({open:d,editingId:a,onUpdateOpen:i,onSuccess:s})=>[(o(),n(c,{key:a??"new",open:d,id:a,"onUpdate:open":i,onSuccess:s},null,8,["open","id","onUpdate:open","onSuccess"]))]),_:1},8,["model"]))}});export{N as default}; diff --git a/apps/admin-panel/dist/assets/ListBranches-yjRFBIa3.js b/apps/admin-panel/dist/assets/ListBranches-yjRFBIa3.js new file mode 100644 index 0000000..8d867a7 --- /dev/null +++ b/apps/admin-panel/dist/assets/ListBranches-yjRFBIa3.js @@ -0,0 +1 @@ +import{_ as m}from"./FacilityList.vue_vue_type_script_setup_true_lang-CJ5yGUm_.js";import{_ as c}from"./AddBranches.vue_vue_type_script_setup_true_lang-tTVzu-ki.js";import{a as p,b as t}from"./model-D_9omyEY.js";import{d as l,a as o,w as f,h as _,o as r}from"./index-CuIWfDbM.js";import"./ListPageHeader.vue_vue_type_script_setup_true_lang-ReVXBl8h.js";import"./select--BgT6D7O.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-DXuLuiBZ.js";import"./filters-Cvt98RIq.js";import"./index-CPTngTRs.js";import"./SettingOutlined-BehgjsnT.js";function u(){const e=new p("admin/branches/list","لیست شعب");return e.add(new t("name","نام").filterText()),e.add(new t("address","آدرس").filterText()),e.add(new t("phone","شماره تلفن").filterNumber()),e.add(new t("user.name","مدیر شعبه").filterNumber().noSort()),e.add(new t("op","عملیات").noSort().renderSlot("actions")),e}const U=l({__name:"ListBranches",setup(e){const n=u();return(h,b)=>(r(),o(m,{title:"لیست شعب",model:_(n),"edit-path":"/branch/edit","active-path":"branch/active","add-rid":"branch.create","add-label":"افزودن شعبه"},{form:f(({open:i,editingId:a,onUpdateOpen:d,onSuccess:s})=>[(r(),o(c,{key:a??"new",open:i,id:a,"onUpdate:open":d,onSuccess:s},null,8,["open","id","onUpdate:open","onSuccess"]))]),_:1},8,["model"]))}});export{U as default}; diff --git a/apps/admin-panel/dist/assets/ListInvoice-C46B-gEE.js b/apps/admin-panel/dist/assets/ListInvoice-C46B-gEE.js new file mode 100644 index 0000000..a08b466 --- /dev/null +++ b/apps/admin-panel/dist/assets/ListInvoice-C46B-gEE.js @@ -0,0 +1 @@ +import{a as M,b as d,X as V}from"./model-D_9omyEY.js";import{_ as h}from"./ListPageHeader.vue_vue_type_script_setup_true_lang-ReVXBl8h.js";import z from"./AddInvoice-vwiAoHQ3.js";import{j as K}from"./filters-Cvt98RIq.js";import{u as U}from"./useDeleteHandler-c5WtaKjp.js";import{d as H,b as g,c as e,w as t,r as s,o as x,h as p,p as y,Q,E as R,D as q,f as r,t as u,a as C,m as _,y as F,_ as G}from"./index-CuIWfDbM.js";import"./SettingOutlined-BehgjsnT.js";import"./select--BgT6D7O.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-DXuLuiBZ.js";import"./index-CPTngTRs.js";function J(){const n=new M("admin/invoices/list","لیست فاکتورها");return n.add(new d("id","ردیف").filterNumber()),n.add(new d("name","نام مشتری").filterKey("branch.name").filterText()),n.add(new d("sum_weight","جمع کل سفارش").filterNumber().noSort()),n.add(new d("count_item","تعداد آیتم ها").filterNumber().noSort()),n.add(new d("caj","تاریخ ثبت").filterKey("createdAt").filterDate().noSort()),n.add(new d("allocator_user.name","ثبت کننده").renderSlot("user").noSort()),n.add(new d("note","توضیحات").filterText().noSort()),n.add(new d("op","عملیات").noSort().renderSlot("actions")),n}const P={id:"page-user-list"},W={class:"flex gap-2"},Y={key:0},Z=H({__name:"ListInvoice",setup(n){const S=J(),w=_(null),f=_(!1),l=_(void 0),v=_(!1),b=_(void 0);function I(){b.value=void 0,v.value=!0}function $(c){b.value=c,v.value=!0}const D=[{title:"کد محصول",dataIndex:"product_code"},{title:"نام محصول",dataIndex:"title"},{title:"وزن",dataIndex:"grams"}];async function E(c){const{data:o}=await F.get(`branch/product/${c.id}`);l.value=o,f.value=!0}const{remove:N}=U({onSuccess:()=>{var c;return(c=w.value)==null?void 0:c.fetch()},successMessage:"فاکتور حذف شد",fallbackErrorMessage:"خطا در حذف فاکتور"});return(c,o)=>{const k=s("a-tooltip"),T=s("a-popconfirm"),m=s("a-descriptions-item"),j=s("a-descriptions"),A=s("a-table"),B=s("a-empty"),O=s("a-button"),X=s("a-modal"),L=s("a-card");return x(),g("div",P,[e(L,{title:"لیست فاکتورها",class:"page-card"},{default:t(()=>[e(V,{ref_key:"tbl",ref:w,model:p(S),"mobile-cards":""},{add:t(()=>[e(h,{rid:"invoice.create","add-label":"افزودن فاکتور",onAdd:I})]),user:t(({record:a})=>{var i;return[r(u(((i=a.allocator_user)==null?void 0:i.name)??"-"),1)]}),actions:t(({record:a})=>[y("div",W,[e(k,{title:"مشاهده"},{default:t(()=>[e(p(Q),{class:"cursor-pointer mx-1 text-success",onClick:i=>E(a)},null,8,["onClick"])]),_:2},1024),e(k,{title:"ویرایش"},{default:t(()=>[e(p(R),{class:"cursor-pointer mx-1 text-primary",onClick:i=>$(a.id)},null,8,["onClick"])]),_:2},1024),e(k,{title:"حذف"},{default:t(()=>[e(T,{placement:"top","ok-text":"بله","cancel-text":"خیر",onConfirm:i=>p(N)(`branch/product/${a.id}`)},{title:t(()=>[...o[4]||(o[4]=[y("p",null,"آیا مطمئن به حذف فاکتور مورد نظر هستید ؟",-1)])]),default:t(()=>[e(p(q),{class:"cursor-pointer mx-1 text-danger"})]),_:1},8,["onConfirm"])]),_:2},1024)])]),_:1},8,["model"]),e(X,{open:f.value,"onUpdate:open":o[1]||(o[1]=a=>f.value=a),title:"مشاهده فاکتور",width:"70%","wrap-class-name":"detail-modal"},{footer:t(()=>[e(O,{onClick:o[0]||(o[0]=a=>f.value=!1)},{default:t(()=>[...o[5]||(o[5]=[r("بستن",-1)])]),_:1})]),default:t(()=>[l.value?(x(),g("div",Y,[e(j,{bordered:"",size:"small",column:{xxl:2,xl:2,lg:2,md:2,sm:2,xs:1}},{default:t(()=>[e(m,{label:"شعبه"},{default:t(()=>[r(u(l.value.name),1)]),_:1}),e(m,{label:"ثبت کننده"},{default:t(()=>{var a;return[r(u(((a=l.value.allocator_user)==null?void 0:a.name)??"-"),1)]}),_:1}),e(m,{label:"تاریخ ثبت"},{default:t(()=>[r(u(p(K)(l.value.caj)),1)]),_:1}),e(m,{label:"تعداد آیتم"},{default:t(()=>[r(u(l.value.count_item),1)]),_:1}),e(m,{label:"جمع وزن"},{default:t(()=>[r(u(l.value.sum_weight),1)]),_:1}),e(m,{label:"توضیحات"},{default:t(()=>[r(u(l.value.note??"-"),1)]),_:1})]),_:1}),e(A,{class:"mt-4",size:"small","data-source":l.value.products,columns:D,pagination:!1,"row-key":"id"},null,8,["data-source"])])):(x(),C(B,{key:1}))]),_:1},8,["open"]),(x(),C(z,{key:b.value??"new",open:v.value,id:b.value,"onUpdate:open":o[2]||(o[2]=a=>v.value=a),onSuccess:o[3]||(o[3]=a=>{var i;return(i=w.value)==null?void 0:i.fetch()})},null,8,["open","id"]))]),_:1})])}}}),ce=G(Z,[["__scopeId","data-v-7869d72f"]]);export{ce as default}; diff --git a/apps/admin-panel/dist/assets/ListInvoice-CEdZfwfN.js b/apps/admin-panel/dist/assets/ListInvoice-CEdZfwfN.js deleted file mode 100644 index 132c238..0000000 --- a/apps/admin-panel/dist/assets/ListInvoice-CEdZfwfN.js +++ /dev/null @@ -1 +0,0 @@ -import{a as M,b as d,X as V}from"./model-B4TWAN58.js";import{_ as h}from"./ListPageHeader.vue_vue_type_script_setup_true_lang-BDf2BWcO.js";import z from"./AddInvoice-CuzOOF2n.js";import{j as K}from"./filters-D6Nzbpog.js";import{u as U}from"./useDeleteHandler-D_sYZzLs.js";import{d as H,b as g,c as e,w as t,r as s,o as x,h as p,p as y,Q,E as R,D as q,f as r,t as u,a as C,m as _,y as F,_ as G}from"./index-C9T3Vski.js";import"./SettingOutlined-BizkfqvN.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-Du4lPDHl.js";import"./index-m6pCHaEa.js";function J(){const n=new M("admin/invoices/list","لیست فاکتورها");return n.add(new d("id","ردیف").filterNumber()),n.add(new d("name","نام مشتری").filterKey("branch.name").filterText()),n.add(new d("sum_weight","جمع کل سفارش").filterNumber().noSort()),n.add(new d("count_item","تعداد آیتم ها").filterNumber().noSort()),n.add(new d("caj","تاریخ ثبت").filterKey("createdAt").filterDate().noSort()),n.add(new d("allocator_user.name","ثبت کننده").renderSlot("user").noSort()),n.add(new d("note","توضیحات").filterText().noSort()),n.add(new d("op","عملیات").noSort().renderSlot("actions")),n}const P={id:"page-user-list"},W={class:"flex gap-2"},Y={key:0},Z=H({__name:"ListInvoice",setup(n){const S=J(),w=_(null),f=_(!1),l=_(void 0),v=_(!1),b=_(void 0);function I(){b.value=void 0,v.value=!0}function $(c){b.value=c,v.value=!0}const D=[{title:"کد محصول",dataIndex:"product_code"},{title:"نام محصول",dataIndex:"title"},{title:"وزن",dataIndex:"grams"}];async function E(c){const{data:o}=await F.get(`branch/product/${c.id}`);l.value=o,f.value=!0}const{remove:N}=U({onSuccess:()=>{var c;return(c=w.value)==null?void 0:c.fetch()},successMessage:"فاکتور حذف شد",fallbackErrorMessage:"خطا در حذف فاکتور"});return(c,o)=>{const k=s("a-tooltip"),T=s("a-popconfirm"),m=s("a-descriptions-item"),j=s("a-descriptions"),A=s("a-table"),B=s("a-empty"),O=s("a-button"),X=s("a-modal"),L=s("a-card");return x(),g("div",P,[e(L,{title:"لیست فاکتورها",class:"page-card"},{default:t(()=>[e(V,{ref_key:"tbl",ref:w,model:p(S),"mobile-cards":""},{add:t(()=>[e(h,{rid:"invoice.create","add-label":"افزودن فاکتور",onAdd:I})]),user:t(({record:a})=>{var i;return[r(u(((i=a.allocator_user)==null?void 0:i.name)??"-"),1)]}),actions:t(({record:a})=>[y("div",W,[e(k,{title:"مشاهده"},{default:t(()=>[e(p(Q),{class:"cursor-pointer mx-1 text-success",onClick:i=>E(a)},null,8,["onClick"])]),_:2},1024),e(k,{title:"ویرایش"},{default:t(()=>[e(p(R),{class:"cursor-pointer mx-1 text-primary",onClick:i=>$(a.id)},null,8,["onClick"])]),_:2},1024),e(k,{title:"حذف"},{default:t(()=>[e(T,{placement:"top","ok-text":"بله","cancel-text":"خیر",onConfirm:i=>p(N)(`branch/product/${a.id}`)},{title:t(()=>[...o[4]||(o[4]=[y("p",null,"آیا مطمئن به حذف فاکتور مورد نظر هستید ؟",-1)])]),default:t(()=>[e(p(q),{class:"cursor-pointer mx-1 text-danger"})]),_:1},8,["onConfirm"])]),_:2},1024)])]),_:1},8,["model"]),e(X,{open:f.value,"onUpdate:open":o[1]||(o[1]=a=>f.value=a),title:"مشاهده فاکتور",width:"70%","wrap-class-name":"detail-modal"},{footer:t(()=>[e(O,{onClick:o[0]||(o[0]=a=>f.value=!1)},{default:t(()=>[...o[5]||(o[5]=[r("بستن",-1)])]),_:1})]),default:t(()=>[l.value?(x(),g("div",Y,[e(j,{bordered:"",size:"small",column:{xxl:2,xl:2,lg:2,md:2,sm:2,xs:1}},{default:t(()=>[e(m,{label:"شعبه"},{default:t(()=>[r(u(l.value.name),1)]),_:1}),e(m,{label:"ثبت کننده"},{default:t(()=>{var a;return[r(u(((a=l.value.allocator_user)==null?void 0:a.name)??"-"),1)]}),_:1}),e(m,{label:"تاریخ ثبت"},{default:t(()=>[r(u(p(K)(l.value.caj)),1)]),_:1}),e(m,{label:"تعداد آیتم"},{default:t(()=>[r(u(l.value.count_item),1)]),_:1}),e(m,{label:"جمع وزن"},{default:t(()=>[r(u(l.value.sum_weight),1)]),_:1}),e(m,{label:"توضیحات"},{default:t(()=>[r(u(l.value.note??"-"),1)]),_:1})]),_:1}),e(A,{class:"mt-4",size:"small","data-source":l.value.products,columns:D,pagination:!1,"row-key":"id"},null,8,["data-source"])])):(x(),C(B,{key:1}))]),_:1},8,["open"]),(x(),C(z,{key:b.value??"new",open:v.value,id:b.value,"onUpdate:open":o[2]||(o[2]=a=>v.value=a),onSuccess:o[3]||(o[3]=a=>{var i;return(i=w.value)==null?void 0:i.fetch()})},null,8,["open","id"]))]),_:1})])}}}),re=G(Z,[["__scopeId","data-v-7869d72f"]]);export{re as default}; diff --git a/apps/admin-panel/dist/assets/ListPageHeader.vue_vue_type_script_setup_true_lang-BDf2BWcO.js b/apps/admin-panel/dist/assets/ListPageHeader.vue_vue_type_script_setup_true_lang-ReVXBl8h.js similarity index 87% rename from apps/admin-panel/dist/assets/ListPageHeader.vue_vue_type_script_setup_true_lang-BDf2BWcO.js rename to apps/admin-panel/dist/assets/ListPageHeader.vue_vue_type_script_setup_true_lang-ReVXBl8h.js index dbfd9de..7b41523 100644 --- a/apps/admin-panel/dist/assets/ListPageHeader.vue_vue_type_script_setup_true_lang-BDf2BWcO.js +++ b/apps/admin-panel/dist/assets/ListPageHeader.vue_vue_type_script_setup_true_lang-ReVXBl8h.js @@ -1 +1 @@ -import{d,u as i,o as u,a as m,w as s,f as c,t as l,c as f,h as p,P as C,i as P,r as b}from"./index-C9T3Vski.js";const _=d({__name:"ListPageHeader",props:{rid:{default:void 0},addLabel:{default:"افزودن"}},emits:["add"],setup(e){const o=i(),n=t=>!!o.hasPermission(t);return(t,a)=>{const r=b("a-button");return!e.rid||n(e.rid)?(u(),m(r,{key:0,type:"primary",onClick:a[0]||(a[0]=k=>t.$emit("add"))},{icon:s(()=>[f(p(C))]),default:s(()=>[c(" "+l(e.addLabel),1)]),_:1})):P("",!0)}}});export{_}; +import{d,u as i,o as u,a as m,w as s,f as c,t as l,c as f,h as p,P as C,i as P,r as b}from"./index-CuIWfDbM.js";const _=d({__name:"ListPageHeader",props:{rid:{default:void 0},addLabel:{default:"افزودن"}},emits:["add"],setup(e){const o=i(),n=t=>!!o.hasPermission(t);return(t,a)=>{const r=b("a-button");return!e.rid||n(e.rid)?(u(),m(r,{key:0,type:"primary",onClick:a[0]||(a[0]=k=>t.$emit("add"))},{icon:s(()=>[f(p(C))]),default:s(()=>[c(" "+l(e.addLabel),1)]),_:1})):P("",!0)}}});export{_}; diff --git a/apps/admin-panel/dist/assets/ListUser-Dn_cWc7q.js b/apps/admin-panel/dist/assets/ListUser-C1Zucffo.js similarity index 84% rename from apps/admin-panel/dist/assets/ListUser-Dn_cWc7q.js rename to apps/admin-panel/dist/assets/ListUser-C1Zucffo.js index 5f32750..e4a2f81 100644 --- a/apps/admin-panel/dist/assets/ListUser-Dn_cWc7q.js +++ b/apps/admin-panel/dist/assets/ListUser-C1Zucffo.js @@ -1 +1 @@ -import{a as D,b as a,X as E}from"./model-B4TWAN58.js";import{_ as U}from"./ListPageHeader.vue_vue_type_script_setup_true_lang-BDf2BWcO.js";import $ from"./UserCreate-CsSpfDYW.js";import{d as M,u as V,x as X,y as h,b as O,c as r,w as n,m as c,r as _,o as m,h as p,a as v,E as A,i as y,D as K,p as L,f as P,t as H}from"./index-C9T3Vski.js";import{u as I}from"./useDeleteHandler-D_sYZzLs.js";import"./filters-D6Nzbpog.js";import"./index-m6pCHaEa.js";import"./SettingOutlined-BizkfqvN.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-Du4lPDHl.js";function j(){const o=new D("admin/users/list","لیست مدیران");return o.add(new a("id","کد مدیر")),o.add(new a("fname","نام").filterKey("fullName").filterText()),o.add(new a("lname","نام خانوادگی").filterKey("fullName").filterText()),o.add(new a("mobile","موبایل").filterText()),o.add(new a("ut","نوع کاربر").filterNumber().renderSlot("ut")),o.add(new a("op","عملیات").noSort().renderSlot("op")),o}const q={id:"page-user-list"},ee=M({__name:"ListUser",setup(o){const k=V(),x=e=>!!k.hasPermission(e),w=j(),f=c(null),b=c([]),l=c(!1),i=c(void 0);function g(e){var t;return e==null?"-":((t=b.value.find(d=>d.id===Number(e)))==null?void 0:t.title)??String(e)}function C(){i.value=void 0,l.value=!0}function T(e){i.value=e.id,l.value=!0}const{remove:N}=I({onSuccess:()=>{var e;return(e=f.value)==null?void 0:e.fetch()},successMessage:"کاربر حذف شد",fallbackErrorMessage:"خطا در حذف کاربر"});return X(async()=>{try{const{data:e}=await h.get("const/__list__ut");b.value=e}catch(e){console.log(e)}}),(e,t)=>{const d=_("a-tooltip"),S=_("a-popconfirm"),B=_("a-card");return m(),O("div",q,[r(B,{title:"لیست مدیران",class:"page-card"},{default:n(()=>[r(E,{ref_key:"tbl",ref:f,model:p(w),"mobile-cards":""},{add:n(()=>[r(U,{rid:"user.list.create","add-label":"افزودن کاربر",onAdd:C})]),ut:n(({text:s})=>[P(H(g(s)),1)]),op:n(({record:s})=>[x("user.list.edit")?(m(),v(d,{key:0,title:"ویرایش"},{default:n(()=>[r(p(A),{class:"cursor-pointer mx-1 text-primary",onClick:u=>T(s)},null,8,["onClick"])]),_:2},1024)):y("",!0),x("user.list.remove")?(m(),v(d,{key:1,title:"حذف"},{default:n(()=>[r(S,{placement:"top","ok-text":"بله","cancel-text":"خیر",onConfirm:u=>p(N)(`users/${s.id}`)},{title:n(()=>[...t[2]||(t[2]=[L("p",null,"آیا مطمئن به حذف کاربر مورد نظر هستید ؟",-1)])]),default:n(()=>[r(p(K),{class:"cursor-pointer mx-1 text-danger"})]),_:1},8,["onConfirm"])]),_:2},1024)):y("",!0)]),_:1},8,["model"]),(m(),v($,{key:i.value??"new",open:l.value,id:i.value,"onUpdate:open":t[0]||(t[0]=s=>l.value=s),onSuccess:t[1]||(t[1]=s=>{var u;return(u=f.value)==null?void 0:u.fetch()})},null,8,["open","id"]))]),_:1})])}}});export{ee as default}; +import{a as D,b as a,X as E}from"./model-D_9omyEY.js";import{_ as U}from"./ListPageHeader.vue_vue_type_script_setup_true_lang-ReVXBl8h.js";import $ from"./UserCreate-CAC2S8Dh.js";import{d as M,u as V,x as X,y as h,b as O,c as r,w as n,m as c,r as _,o as m,h as p,a as v,E as A,i as y,D as K,p as L,f as P,t as H}from"./index-CuIWfDbM.js";import{u as I}from"./useDeleteHandler-c5WtaKjp.js";import"./filters-Cvt98RIq.js";import"./index-CPTngTRs.js";import"./SettingOutlined-BehgjsnT.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-DXuLuiBZ.js";function j(){const o=new D("admin/users/list","لیست مدیران");return o.add(new a("id","کد مدیر")),o.add(new a("fname","نام").filterKey("fullName").filterText()),o.add(new a("lname","نام خانوادگی").filterKey("fullName").filterText()),o.add(new a("mobile","موبایل").filterText()),o.add(new a("ut","نوع کاربر").filterNumber().renderSlot("ut")),o.add(new a("op","عملیات").noSort().renderSlot("op")),o}const q={id:"page-user-list"},ee=M({__name:"ListUser",setup(o){const k=V(),x=e=>!!k.hasPermission(e),w=j(),f=c(null),b=c([]),l=c(!1),i=c(void 0);function g(e){var t;return e==null?"-":((t=b.value.find(d=>d.id===Number(e)))==null?void 0:t.title)??String(e)}function C(){i.value=void 0,l.value=!0}function T(e){i.value=e.id,l.value=!0}const{remove:N}=I({onSuccess:()=>{var e;return(e=f.value)==null?void 0:e.fetch()},successMessage:"کاربر حذف شد",fallbackErrorMessage:"خطا در حذف کاربر"});return X(async()=>{try{const{data:e}=await h.get("const/__list__ut");b.value=e}catch(e){console.log(e)}}),(e,t)=>{const d=_("a-tooltip"),S=_("a-popconfirm"),B=_("a-card");return m(),O("div",q,[r(B,{title:"لیست مدیران",class:"page-card"},{default:n(()=>[r(E,{ref_key:"tbl",ref:f,model:p(w),"mobile-cards":""},{add:n(()=>[r(U,{rid:"user.list.create","add-label":"افزودن کاربر",onAdd:C})]),ut:n(({text:s})=>[P(H(g(s)),1)]),op:n(({record:s})=>[x("user.list.edit")?(m(),v(d,{key:0,title:"ویرایش"},{default:n(()=>[r(p(A),{class:"cursor-pointer mx-1 text-primary",onClick:u=>T(s)},null,8,["onClick"])]),_:2},1024)):y("",!0),x("user.list.remove")?(m(),v(d,{key:1,title:"حذف"},{default:n(()=>[r(S,{placement:"top","ok-text":"بله","cancel-text":"خیر",onConfirm:u=>p(N)(`users/${s.id}`)},{title:n(()=>[...t[2]||(t[2]=[L("p",null,"آیا مطمئن به حذف کاربر مورد نظر هستید ؟",-1)])]),default:n(()=>[r(p(K),{class:"cursor-pointer mx-1 text-danger"})]),_:1},8,["onConfirm"])]),_:2},1024)):y("",!0)]),_:1},8,["model"]),(m(),v($,{key:i.value??"new",open:l.value,id:i.value,"onUpdate:open":t[0]||(t[0]=s=>l.value=s),onSuccess:t[1]||(t[1]=s=>{var u;return(u=f.value)==null?void 0:u.fetch()})},null,8,["open","id"]))]),_:1})])}}});export{ee as default}; diff --git a/apps/admin-panel/dist/assets/ListWorkshop-CMWnryq4.js b/apps/admin-panel/dist/assets/ListWorkshop-C35LOBaQ.js similarity index 65% rename from apps/admin-panel/dist/assets/ListWorkshop-CMWnryq4.js rename to apps/admin-panel/dist/assets/ListWorkshop-C35LOBaQ.js index 5b26eed..7ff79d9 100644 --- a/apps/admin-panel/dist/assets/ListWorkshop-CMWnryq4.js +++ b/apps/admin-panel/dist/assets/ListWorkshop-C35LOBaQ.js @@ -1 +1 @@ -import{_ as d}from"./FacilityList.vue_vue_type_script_setup_true_lang-B_mHvw0Q.js";import{_ as m}from"./AddWorkshop.vue_vue_type_script_setup_true_lang-CeG9w0ns.js";import{a as c,b as e}from"./model-B4TWAN58.js";import{d as l,a as r,w as f,h as _,o as a}from"./index-C9T3Vski.js";import"./ListPageHeader.vue_vue_type_script_setup_true_lang-BDf2BWcO.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-Du4lPDHl.js";import"./filters-D6Nzbpog.js";import"./index-m6pCHaEa.js";import"./SettingOutlined-BizkfqvN.js";function h(){const o=new c("admin/workshops/list","لیست کارگاه ها");return o.add(new e("name","نام").filterText()),o.add(new e("address","آدرس").filterText()),o.add(new e("phone","شماره تلفن").filterNumber()),o.add(new e("op","عملیات").noSort().renderSlot("actions")),o}const U=l({__name:"ListWorkshop",setup(o){const n=h();return(w,u)=>(a(),r(d,{title:"لیست کارگاه ها",model:_(n),"edit-path":"/workshop/edit","active-path":"workshop/active","add-rid":"workshop.create","add-label":"افزودن کارگاه"},{form:f(({open:s,editingId:t,onUpdateOpen:i,onSuccess:p})=>[(a(),r(m,{key:t??"new",open:s,id:t,"onUpdate:open":i,onSuccess:p},null,8,["open","id","onUpdate:open","onSuccess"]))]),_:1},8,["model"]))}});export{U as default}; +import{_ as d}from"./FacilityList.vue_vue_type_script_setup_true_lang-CJ5yGUm_.js";import{_ as m}from"./AddWorkshop.vue_vue_type_script_setup_true_lang-CzFwzleM.js";import{a as c,b as e}from"./model-D_9omyEY.js";import{d as l,a as r,w as f,h as _,o as a}from"./index-CuIWfDbM.js";import"./ListPageHeader.vue_vue_type_script_setup_true_lang-ReVXBl8h.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-DXuLuiBZ.js";import"./filters-Cvt98RIq.js";import"./index-CPTngTRs.js";import"./SettingOutlined-BehgjsnT.js";function h(){const o=new c("admin/workshops/list","لیست کارگاه ها");return o.add(new e("name","نام").filterText()),o.add(new e("address","آدرس").filterText()),o.add(new e("phone","شماره تلفن").filterNumber()),o.add(new e("op","عملیات").noSort().renderSlot("actions")),o}const U=l({__name:"ListWorkshop",setup(o){const n=h();return(w,u)=>(a(),r(d,{title:"لیست کارگاه ها",model:_(n),"edit-path":"/workshop/edit","active-path":"workshop/active","add-rid":"workshop.create","add-label":"افزودن کارگاه"},{form:f(({open:s,editingId:t,onUpdateOpen:i,onSuccess:p})=>[(a(),r(m,{key:t??"new",open:s,id:t,"onUpdate:open":i,onSuccess:p},null,8,["open","id","onUpdate:open","onSuccess"]))]),_:1},8,["model"]))}});export{U as default}; diff --git a/apps/admin-panel/dist/assets/LockOutlined-DIFpMdwT.js b/apps/admin-panel/dist/assets/LockOutlined-V3haYHlA.js similarity index 94% rename from apps/admin-panel/dist/assets/LockOutlined-DIFpMdwT.js rename to apps/admin-panel/dist/assets/LockOutlined-V3haYHlA.js index a391e17..8996abb 100644 --- a/apps/admin-panel/dist/assets/LockOutlined-DIFpMdwT.js +++ b/apps/admin-panel/dist/assets/LockOutlined-V3haYHlA.js @@ -1 +1 @@ -import{c as i,I as l}from"./index-C9T3Vski.js";var u={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M832 464h-68V240c0-70.7-57.3-128-128-128H388c-70.7 0-128 57.3-128 128v224h-68c-17.7 0-32 14.3-32 32v384c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V496c0-17.7-14.3-32-32-32zM332 240c0-30.9 25.1-56 56-56h248c30.9 0 56 25.1 56 56v224H332V240zm460 600H232V536h560v304zM484 701v53c0 4.4 3.6 8 8 8h40c4.4 0 8-3.6 8-8v-53a48.01 48.01 0 10-56 0z"}}]},name:"lock",theme:"outlined"};function a(r){for(var t=1;tP.value?l.value?l.value.length<8?"مقدار ورودی صحیح نیست":"":"وارد کردن موبایل الزامی است":""),m=O(()=>L.value?n.value?n.value.length<5?"مقدار ورودی صحیح نیست":"":"وارد کردن رمز عبور الزامی است":""),C=O(()=>!g.value&&!m.value&&l.value!==""&&n.value!=="");async function h(){if(!(!C.value||p.value)){p.value=!0;try{await o.login({phone:l.value,password:n.value}),await a.push("/dashboard/ecommerce")}catch(c){console.log(c),q.error("خطا در ورود")}finally{p.value=!1}}}return(c,e)=>{const y=f("a-input"),M=f("a-form-item"),z=f("a-input-password"),A=f("a-button"),D=f("a-form");return x(),$("div",ne,[e[14]||(e[14]=j('',2)),t("div",re,[(x(),$(T,null,F(14,d=>t("i",{key:d,style:U(k(d))},null,4)),64))]),t("main",ie,[t("section",de,[t("div",ce,[e[4]||(e[4]=t("div",{class:"logo-chip"},[t("img",{src:E,alt:""})],-1)),t("span",ue,B(i(_).nameEn),1)]),e[8]||(e[8]=j('

مدیریت هوشمند کسب‌وکار طلا

سفارش‌ها، مشتریان، محصولات و حسابداری؛ همه در یک پنل.

999.9
',3)),t("ul",pe,[t("li",null,[r(i(w)),e[5]||(e[5]=b(" گزارش لحظه‌ای",-1))]),t("li",null,[r(i(Z)),e[6]||(e[6]=b(" مدیریت مشتریان",-1))]),t("li",null,[r(i(K)),e[7]||(e[7]=b(" پیگیری سفارش",-1))])])]),t("section",fe,[t("div",ve,[t("div",be,[t("div",ge,[t("img",{src:E,alt:i(_).nameEn},null,8,me)]),e[9]||(e[9]=t("span",{class:"eyebrow"},[t("span",{class:"dot"}),b("پنل مدیریت")],-1))]),e[12]||(e[12]=t("h1",{class:"title"},"ورود به محیط مدیریت",-1)),e[13]||(e[13]=t("p",{class:"subtitle"},"لطفا شماره تلفن همراه خود به همراه رمز عبور وارد کنید.",-1)),r(D,{layout:"vertical",class:"login-form",onSubmit:I(h,["prevent"])},{default:u(()=>[r(M,{label:"موبایل","validate-status":g.value?"error":"",help:g.value},{default:u(()=>[r(y,{value:l.value,"onUpdate:value":e[0]||(e[0]=d=>l.value=d),autocomplete:"off",inputmode:"numeric",placeholder:"09xxxxxxxxx",class:"ltr-input",onBlur:e[1]||(e[1]=d=>P.value=!0)},{prefix:u(()=>[r(i(S),{class:"field-icon"})]),_:1},8,["value"])]),_:1},8,["validate-status","help"]),r(M,{label:"رمز عبور","validate-status":m.value?"error":"",help:m.value},{default:u(()=>[r(z,{value:n.value,"onUpdate:value":e[2]||(e[2]=d=>n.value=d),placeholder:"••••••",class:"ltr-input",onBlur:e[3]||(e[3]=d=>L.value=!0),onPressEnter:h},{prefix:u(()=>[r(i(te),{class:"field-icon"})]),_:1},8,["value"])]),_:1},8,["validate-status","help"]),r(A,{type:"primary",block:"",class:"submit-btn",disabled:!C.value,loading:p.value,onClick:h},{default:u(()=>[e[10]||(e[10]=t("span",null,"ورود",-1)),p.value?W("",!0):(x(),J(i(R),{key:0,class:"btn-arrow"}))]),_:1},8,["disabled","loading"])]),_:1}),t("p",he,[r(i(ee)),e[11]||(e[11]=t("span",null,"اتصال شما رمزنگاری شده و امن است",-1))])])])]),t("footer",ye,"© "+B(i(_).nameEn),1)])}}}),Ce=X(_e,[["__scopeId","data-v-1eb36c3e"]]);export{Ce as default}; +import{c as r,I as N,d as H,b as $,am as j,p as t,F as T,e as F,t as B,h as i,j as _,f as b,w as u,H as I,r as f,o as x,A as U,a as J,an as R,i as W,m as v,s as O,G as q,l as Q,_ as X}from"./index-CuIWfDbM.js";import{_ as E}from"./brand-icon-COpT6LnI.js";import{u as Y}from"./auth-N_Kcbhfe.js";import{T as Z,S as K}from"./TeamOutlined-CqxRZks7.js";import{S as ee}from"./SafetyCertificateOutlined-DWQ69biy.js";import{L as te}from"./LockOutlined-V3haYHlA.js";var ae={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M888 792H200V168c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v688c0 4.4 3.6 8 8 8h752c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM305.8 637.7c3.1 3.1 8.1 3.1 11.3 0l138.3-137.6L583 628.5c3.1 3.1 8.2 3.1 11.3 0l275.4-275.3c3.1-3.1 3.1-8.2 0-11.3l-39.6-39.6a8.03 8.03 0 00-11.3 0l-230 229.9L461.4 404a8.03 8.03 0 00-11.3 0L266.3 586.7a8.03 8.03 0 000 11.3l39.5 39.7z"}}]},name:"line-chart",theme:"outlined"};function G(s){for(var a=1;aP.value?l.value?l.value.length<8?"مقدار ورودی صحیح نیست":"":"وارد کردن موبایل الزامی است":""),m=O(()=>L.value?n.value?n.value.length<5?"مقدار ورودی صحیح نیست":"":"وارد کردن رمز عبور الزامی است":""),C=O(()=>!g.value&&!m.value&&l.value!==""&&n.value!=="");async function h(){if(!(!C.value||p.value)){p.value=!0;try{await o.login({phone:l.value,password:n.value}),await a.push("/dashboard/ecommerce")}catch(c){console.log(c),q.error("خطا در ورود")}finally{p.value=!1}}}return(c,e)=>{const y=f("a-input"),M=f("a-form-item"),z=f("a-input-password"),A=f("a-button"),D=f("a-form");return x(),$("div",ne,[e[14]||(e[14]=j('',2)),t("div",re,[(x(),$(T,null,F(14,d=>t("i",{key:d,style:U(k(d))},null,4)),64))]),t("main",ie,[t("section",de,[t("div",ce,[e[4]||(e[4]=t("div",{class:"logo-chip"},[t("img",{src:E,alt:""})],-1)),t("span",ue,B(i(_).nameEn),1)]),e[8]||(e[8]=j('

مدیریت هوشمند کسب‌وکار طلا

سفارش‌ها، مشتریان، محصولات و حسابداری؛ همه در یک پنل.

999.9
',3)),t("ul",pe,[t("li",null,[r(i(w)),e[5]||(e[5]=b(" گزارش لحظه‌ای",-1))]),t("li",null,[r(i(Z)),e[6]||(e[6]=b(" مدیریت مشتریان",-1))]),t("li",null,[r(i(K)),e[7]||(e[7]=b(" پیگیری سفارش",-1))])])]),t("section",fe,[t("div",ve,[t("div",be,[t("div",ge,[t("img",{src:E,alt:i(_).nameEn},null,8,me)]),e[9]||(e[9]=t("span",{class:"eyebrow"},[t("span",{class:"dot"}),b("پنل مدیریت")],-1))]),e[12]||(e[12]=t("h1",{class:"title"},"ورود به محیط مدیریت",-1)),e[13]||(e[13]=t("p",{class:"subtitle"},"لطفا شماره تلفن همراه خود به همراه رمز عبور وارد کنید.",-1)),r(D,{layout:"vertical",class:"login-form",onSubmit:I(h,["prevent"])},{default:u(()=>[r(M,{label:"موبایل","validate-status":g.value?"error":"",help:g.value},{default:u(()=>[r(y,{value:l.value,"onUpdate:value":e[0]||(e[0]=d=>l.value=d),autocomplete:"off",inputmode:"numeric",placeholder:"09xxxxxxxxx",class:"ltr-input",onBlur:e[1]||(e[1]=d=>P.value=!0)},{prefix:u(()=>[r(i(S),{class:"field-icon"})]),_:1},8,["value"])]),_:1},8,["validate-status","help"]),r(M,{label:"رمز عبور","validate-status":m.value?"error":"",help:m.value},{default:u(()=>[r(z,{value:n.value,"onUpdate:value":e[2]||(e[2]=d=>n.value=d),placeholder:"••••••",class:"ltr-input",onBlur:e[3]||(e[3]=d=>L.value=!0),onPressEnter:h},{prefix:u(()=>[r(i(te),{class:"field-icon"})]),_:1},8,["value"])]),_:1},8,["validate-status","help"]),r(A,{type:"primary",block:"",class:"submit-btn",disabled:!C.value,loading:p.value,onClick:h},{default:u(()=>[e[10]||(e[10]=t("span",null,"ورود",-1)),p.value?W("",!0):(x(),J(i(R),{key:0,class:"btn-arrow"}))]),_:1},8,["disabled","loading"])]),_:1}),t("p",he,[r(i(ee)),e[11]||(e[11]=t("span",null,"اتصال شما رمزنگاری شده و امن است",-1))])])])]),t("footer",ye,"© "+B(i(_).nameEn),1)])}}}),Ce=X(_e,[["__scopeId","data-v-1eb36c3e"]]);export{Ce as default}; diff --git a/apps/admin-panel/dist/assets/Main-BMz1b_vd.js b/apps/admin-panel/dist/assets/Main-Dy3ytVrQ.js similarity index 97% rename from apps/admin-panel/dist/assets/Main-BMz1b_vd.js rename to apps/admin-panel/dist/assets/Main-Dy3ytVrQ.js index 267c8cf..1a8e8ba 100644 --- a/apps/admin-panel/dist/assets/Main-BMz1b_vd.js +++ b/apps/admin-panel/dist/assets/Main-Dy3ytVrQ.js @@ -1 +1 @@ -import{c as m,I as K,d as U,u as D,r as d,o as a,a as p,w as i,b as A,e as T,F as B,f as N,t as S,g as J,h,i as x,j as re,k as R,l as te,m as H,n as V,p as _,q as se,s as P,_ as E,v as oe}from"./index-C9T3Vski.js";import{_ as ie}from"./brand-icon-COpT6LnI.js";import{r as Q}from"./icons-1fD-iiAA.js";import{u as ae}from"./auth-CIh5zA9X.js";import{U as le}from"./UserOutlined-Csu4xHRr.js";import{S as ue}from"./SafetyCertificateOutlined-DS5dQeR2.js";import"./SettingOutlined-BizkfqvN.js";import"./UnorderedListOutlined-Bl0oFRyr.js";import"./PercentageOutlined-CxUloK5J.js";import"./UserAddOutlined-BlPGjUCi.js";import"./CreditCardOutlined-BxTC_oHD.js";import"./AppstoreOutlined-lwgIJvjh.js";import"./TeamOutlined-j5HKaunb.js";import"./CameraOutlined-C6gLi8-9.js";var ce={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M868 732h-70.3c-4.8 0-9.3 2.1-12.3 5.8-7 8.5-14.5 16.7-22.4 24.5a353.84 353.84 0 01-112.7 75.9A352.8 352.8 0 01512.4 866c-47.9 0-94.3-9.4-137.9-27.8a353.84 353.84 0 01-112.7-75.9 353.28 353.28 0 01-76-112.5C167.3 606.2 158 559.9 158 512s9.4-94.2 27.8-137.8c17.8-42.1 43.4-80 76-112.5s70.5-58.1 112.7-75.9c43.6-18.4 90-27.8 137.9-27.8 47.9 0 94.3 9.3 137.9 27.8 42.2 17.8 80.1 43.4 112.7 75.9 7.9 7.9 15.3 16.1 22.4 24.5 3 3.7 7.6 5.8 12.3 5.8H868c6.3 0 10.2-7 6.7-12.3C798 160.5 663.8 81.6 511.3 82 271.7 82.6 79.6 277.1 82 516.4 84.4 751.9 276.2 942 512.4 942c152.1 0 285.7-78.8 362.3-197.7 3.4-5.3-.4-12.3-6.7-12.3zm88.9-226.3L815 393.7c-5.3-4.2-13-.4-13 6.3v76H488c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h314v76c0 6.7 7.8 10.5 13 6.3l141.9-112a8 8 0 000-12.6z"}}]},name:"logout",theme:"outlined"};function X(n){for(var t=1;t{const M=d("NavMenuNode",!0),w=d("a-sub-menu"),f=d("a-menu-item");return n.node.submenu?(a(),p(w,{key:n.menuKey,"popup-class-name":"nav-popup"},{icon:i(()=>[n.node.icon?(a(),p(J(h(Q)(n.node.icon)),{key:0})):x("",!0)]),title:i(()=>[N(S(n.node.i18n||n.node.name),1)]),default:i(()=>[(a(!0),A(B,null,T(s(n.node.submenu),(O,L)=>(a(),p(M,{key:O.url||`${n.menuKey}-${L}`,node:O,"menu-key":O.url||`${n.menuKey}-${L}`},null,8,["node","menu-key"]))),128))]),_:1})):(a(),p(f,{key:n.menuKey},{icon:i(()=>[n.node.icon?(a(),p(J(h(Q)(n.node.icon)),{key:0})):x("",!0)]),default:i(()=>[N(" "+S(n.node.i18n||n.node.name),1)]),_:1}))}}}),be={key:0,class:"nav-brand"},ye={class:"nav-title"},he=U({__name:"VerticalNavMenu",props:{title:{default:re.name},collapsed:{type:Boolean,default:!1}},setup(n){const t=R(),e=te(),s=D();function o(r){return r.superAdminOnly&&!s.isSuperAdmin?!1:r.permissionId?!!s.hasPermission(r.permissionId):!0}function I(r){return(r??[]).filter(o)}function M(r){return r.header?I(r.items).length>0:r.submenu?I(r.submenu).length>0:!0}const w=P(()=>ve().filter(r=>o(r)&&M(r))),f=(r,l)=>`sub-${r.name??""}-${l}`;function O(r,l,b){for(let y=0;yt.path,r=>{v.value=[r];const l=L(r);for(const b of l)u.value.includes(b)||(u.value=[...u.value,b])});function j({key:r}){const l=String(r);l.startsWith("/")&&l!==t.path&&e.push(l)}return(r,l)=>{const b=d("a-menu-item-group"),y=d("a-menu"),g=d("a-layout-sider");return a(),p(g,{collapsed:n.collapsed,trigger:null,collapsible:"",width:"260",class:"vertical-nav-menu",theme:"light"},{default:i(()=>[_("div",{class:se(["nav-header",{"is-collapsed":n.collapsed}])},[l[2]||(l[2]=_("span",{class:"nav-logo"},[_("img",{src:ie,alt:""})],-1)),n.collapsed?x("",!0):(a(),A("span",be,[_("span",ye,S(n.title),1),l[1]||(l[1]=_("span",{class:"nav-subtitle"},"پنل مدیریت",-1))]))],2),m(y,{class:"nav-menu",mode:"inline",theme:"light","inline-collapsed":n.collapsed,"selected-keys":v.value,"open-keys":u.value,"onUpdate:openKeys":l[0]||(l[0]=c=>u.value=c),onClick:j},{default:i(()=>[(a(!0),A(B,null,T(w.value,(c,k)=>(a(),A(B,{key:c.url||c.header||k},[c.header?(a(),p(b,{key:0,title:c.i18n||c.header},{default:i(()=>[(a(!0),A(B,null,T(I(c.items),($,z)=>(a(),p(ee,{key:$.url||`${k}-${z}`,node:$,"menu-key":$.url||f($,z)},null,8,["node","menu-key"]))),128))]),_:2},1032,["title"])):(a(),p(ee,{key:1,node:c,"menu-key":c.url||f(c,k)},null,8,["node","menu-key"]))],64))),128))]),_:1},8,["inline-collapsed","selected-keys","open-keys"])]),_:1},8,["collapsed"])}}}),ne=E(he,[["__scopeId","data-v-f8bc07d5"]]),Ie={class:"nav-left"},Oe={class:"page-title"},ke={key:1},we={class:"nav-right"},Se={class:"user-chip"},Me={class:"user-name"},Le={class:"user-card"},$e={class:"user-card__head"},Ce={class:"user-card__id"},Ne={class:"user-card__name"},Pe={class:"user-card__mobile"},Ae=U({__name:"TheNavbar",props:{collapsed:{type:Boolean}},emits:["toggle-sidebar"],setup(n){const t=R(),e=te(),s=ae(),o=D(),I=P(()=>{var v;return((v=t.meta)==null?void 0:v.pageTitle)??""}),M=P(()=>{var v;return(v=t.meta)==null?void 0:v.breadcrumb}),w=P(()=>{var v,u;return((v=s.user)==null?void 0:v.name)??((u=s.user)==null?void 0:u.fullName)??"کاربر"}),f=P(()=>w.value.trim().charAt(0)||"ک"),O=P(()=>!!o.hasPermission("user.permission"));async function L(){await s.logout()||e.push("/auth/login")}return(v,u)=>{const j=d("a-button"),r=d("router-link"),l=d("a-breadcrumb-item"),b=d("a-breadcrumb"),y=d("a-avatar"),g=d("a-divider"),c=d("a-menu-item"),k=d("a-menu"),$=d("a-dropdown"),z=d("a-layout-header");return a(),p(z,{class:"the-navbar"},{default:i(()=>[_("div",Ie,[m(j,{type:"text",onClick:u[0]||(u[0]=C=>v.$emit("toggle-sidebar"))},{default:i(()=>[n.collapsed?(a(),p(h(q),{key:0})):(a(),p(h(W),{key:1}))]),_:1}),_("span",Oe,S(I.value),1),M.value?(a(),p(b,{key:0,class:"breadcrumb"},{default:i(()=>[(a(!0),A(B,null,T(M.value,(C,F)=>(a(),p(l,{key:F},{default:i(()=>[C.url&&!C.active?(a(),p(r,{key:0,to:C.url},{default:i(()=>[N(S(C.title),1)]),_:2},1032,["to"])):(a(),A("span",ke,S(C.title),1))]),_:2},1024))),128))]),_:1})):x("",!0)]),_("div",we,[m($,{trigger:"click",placement:"bottomRight","overlay-class-name":"user-dropdown-overlay"},{overlay:i(()=>{var C;return[_("div",Le,[_("div",$e,[m(y,{size:"large",style:{"background-color":"#1c2d56"}},{default:i(()=>[N(S(f.value),1)]),_:1}),_("div",Ce,[_("span",Ne,S(w.value),1),_("span",Pe,S((C=h(s).user)==null?void 0:C.mobile),1)])]),m(g,{class:"user-card__divider"}),m(k,{class:"user-card__menu"},{default:i(()=>[m(c,{key:"my-data",onClick:u[1]||(u[1]=F=>h(e).push("/my-data"))},{default:i(()=>[m(h(le)),u[3]||(u[3]=N(" اطلاعات من ",-1))]),_:1}),O.value?(a(),p(c,{key:"permission",onClick:u[2]||(u[2]=F=>h(e).push("/permission"))},{default:i(()=>[m(h(ue)),u[4]||(u[4]=N(" دسترسی ها ",-1))]),_:1})):x("",!0)]),_:1}),m(g,{class:"user-card__divider"}),m(k,{class:"user-card__menu"},{default:i(()=>[m(c,{key:"logout",onClick:L},{default:i(()=>[m(h(G)),u[5]||(u[5]=N(" خروج ",-1))]),_:1})]),_:1})])]}),default:i(()=>[_("span",Se,[m(y,{size:"small",style:{"background-color":"#1c2d56"}},{default:i(()=>[N(S(f.value),1)]),_:1}),_("span",Me,S(w.value),1)])]),_:1})])]),_:1})}}}),je=E(Ae,[["__scopeId","data-v-5cc2d870"]]),Be={class:"content-wrapper"},xe={class:"content-area__content"},ze=U({__name:"Main",setup(n){const t=R(),e=oe(),s=P(()=>e.sidebarCollapsed);function o(){e.isSmallScreen?e.setMobileNavOpen(!e.mobileNavOpen):e.setSidebarCollapsed(!s.value)}const I=P(()=>{var f;return!!((f=t.meta)!=null&&f.no_scroll)}),M=H(void 0);function w(f){M.value=f}return V(()=>t.path,()=>{M.value=void 0,e.setMobileNavOpen(!1)}),V(()=>e.isSmallScreen,f=>{f||e.setMobileNavOpen(!1)}),(f,O)=>{const L=d("a-drawer"),v=d("router-view"),u=d("a-layout-content"),j=d("a-layout");return a(),p(j,{class:se(["layout--main",{"no-scroll":I.value}])},{default:i(()=>[h(e).isSmallScreen?(a(),p(L,{key:1,open:h(e).mobileNavOpen,placement:"right",width:260,closable:!1,"root-class-name":"mobile-nav-drawer",onClose:O[0]||(O[0]=r=>h(e).setMobileNavOpen(!1))},{default:i(()=>[m(ne)]),_:1},8,["open"])):(a(),p(ne,{key:0,collapsed:s.value,"show-toggle":"",onToggle:o},null,8,["collapsed"])),m(j,null,{default:i(()=>[m(je,{collapsed:h(e).isSmallScreen?!h(e).mobileNavOpen:s.value,onToggleSidebar:o},null,8,["collapsed"]),m(u,{id:"content-area"},{default:i(()=>[_("div",Be,[_("div",xe,[m(v,{onChangeRouteTitle:w})])])]),_:1})]),_:1})]),_:1},8,["class"])}}}),Xe=E(ze,[["__scopeId","data-v-c1ea4b9d"]]);export{Xe as default}; +import{c as m,I as K,d as U,u as D,r as d,o as a,a as p,w as i,b as A,e as T,F as B,f as N,t as S,g as J,h,i as x,j as re,k as R,l as te,m as H,n as V,p as _,q as se,s as P,_ as E,v as oe}from"./index-CuIWfDbM.js";import{_ as ie}from"./brand-icon-COpT6LnI.js";import{r as Q}from"./icons-BWdsnUVP.js";import{u as ae}from"./auth-N_Kcbhfe.js";import{U as le}from"./UserOutlined-aZ-mQgwc.js";import{S as ue}from"./SafetyCertificateOutlined-DWQ69biy.js";import"./SettingOutlined-BehgjsnT.js";import"./UnorderedListOutlined-DOoZELHj.js";import"./PercentageOutlined-Cooaq8mh.js";import"./UserAddOutlined-BBmLFe8z.js";import"./CreditCardOutlined-BRF7XcYB.js";import"./AppstoreOutlined-6RRW3vIa.js";import"./TeamOutlined-CqxRZks7.js";import"./CameraOutlined-Dx8LoT1m.js";var ce={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M868 732h-70.3c-4.8 0-9.3 2.1-12.3 5.8-7 8.5-14.5 16.7-22.4 24.5a353.84 353.84 0 01-112.7 75.9A352.8 352.8 0 01512.4 866c-47.9 0-94.3-9.4-137.9-27.8a353.84 353.84 0 01-112.7-75.9 353.28 353.28 0 01-76-112.5C167.3 606.2 158 559.9 158 512s9.4-94.2 27.8-137.8c17.8-42.1 43.4-80 76-112.5s70.5-58.1 112.7-75.9c43.6-18.4 90-27.8 137.9-27.8 47.9 0 94.3 9.3 137.9 27.8 42.2 17.8 80.1 43.4 112.7 75.9 7.9 7.9 15.3 16.1 22.4 24.5 3 3.7 7.6 5.8 12.3 5.8H868c6.3 0 10.2-7 6.7-12.3C798 160.5 663.8 81.6 511.3 82 271.7 82.6 79.6 277.1 82 516.4 84.4 751.9 276.2 942 512.4 942c152.1 0 285.7-78.8 362.3-197.7 3.4-5.3-.4-12.3-6.7-12.3zm88.9-226.3L815 393.7c-5.3-4.2-13-.4-13 6.3v76H488c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h314v76c0 6.7 7.8 10.5 13 6.3l141.9-112a8 8 0 000-12.6z"}}]},name:"logout",theme:"outlined"};function X(n){for(var t=1;t{const M=d("NavMenuNode",!0),w=d("a-sub-menu"),f=d("a-menu-item");return n.node.submenu?(a(),p(w,{key:n.menuKey,"popup-class-name":"nav-popup"},{icon:i(()=>[n.node.icon?(a(),p(J(h(Q)(n.node.icon)),{key:0})):x("",!0)]),title:i(()=>[N(S(n.node.i18n||n.node.name),1)]),default:i(()=>[(a(!0),A(B,null,T(s(n.node.submenu),(O,L)=>(a(),p(M,{key:O.url||`${n.menuKey}-${L}`,node:O,"menu-key":O.url||`${n.menuKey}-${L}`},null,8,["node","menu-key"]))),128))]),_:1})):(a(),p(f,{key:n.menuKey},{icon:i(()=>[n.node.icon?(a(),p(J(h(Q)(n.node.icon)),{key:0})):x("",!0)]),default:i(()=>[N(" "+S(n.node.i18n||n.node.name),1)]),_:1}))}}}),be={key:0,class:"nav-brand"},ye={class:"nav-title"},he=U({__name:"VerticalNavMenu",props:{title:{default:re.name},collapsed:{type:Boolean,default:!1}},setup(n){const t=R(),e=te(),s=D();function o(r){return r.superAdminOnly&&!s.isSuperAdmin?!1:r.permissionId?!!s.hasPermission(r.permissionId):!0}function I(r){return(r??[]).filter(o)}function M(r){return r.header?I(r.items).length>0:r.submenu?I(r.submenu).length>0:!0}const w=P(()=>ve().filter(r=>o(r)&&M(r))),f=(r,l)=>`sub-${r.name??""}-${l}`;function O(r,l,b){for(let y=0;yt.path,r=>{v.value=[r];const l=L(r);for(const b of l)u.value.includes(b)||(u.value=[...u.value,b])});function j({key:r}){const l=String(r);l.startsWith("/")&&l!==t.path&&e.push(l)}return(r,l)=>{const b=d("a-menu-item-group"),y=d("a-menu"),g=d("a-layout-sider");return a(),p(g,{collapsed:n.collapsed,trigger:null,collapsible:"",width:"260",class:"vertical-nav-menu",theme:"light"},{default:i(()=>[_("div",{class:se(["nav-header",{"is-collapsed":n.collapsed}])},[l[2]||(l[2]=_("span",{class:"nav-logo"},[_("img",{src:ie,alt:""})],-1)),n.collapsed?x("",!0):(a(),A("span",be,[_("span",ye,S(n.title),1),l[1]||(l[1]=_("span",{class:"nav-subtitle"},"پنل مدیریت",-1))]))],2),m(y,{class:"nav-menu",mode:"inline",theme:"light","inline-collapsed":n.collapsed,"selected-keys":v.value,"open-keys":u.value,"onUpdate:openKeys":l[0]||(l[0]=c=>u.value=c),onClick:j},{default:i(()=>[(a(!0),A(B,null,T(w.value,(c,k)=>(a(),A(B,{key:c.url||c.header||k},[c.header?(a(),p(b,{key:0,title:c.i18n||c.header},{default:i(()=>[(a(!0),A(B,null,T(I(c.items),($,z)=>(a(),p(ee,{key:$.url||`${k}-${z}`,node:$,"menu-key":$.url||f($,z)},null,8,["node","menu-key"]))),128))]),_:2},1032,["title"])):(a(),p(ee,{key:1,node:c,"menu-key":c.url||f(c,k)},null,8,["node","menu-key"]))],64))),128))]),_:1},8,["inline-collapsed","selected-keys","open-keys"])]),_:1},8,["collapsed"])}}}),ne=E(he,[["__scopeId","data-v-f8bc07d5"]]),Ie={class:"nav-left"},Oe={class:"page-title"},ke={key:1},we={class:"nav-right"},Se={class:"user-chip"},Me={class:"user-name"},Le={class:"user-card"},$e={class:"user-card__head"},Ce={class:"user-card__id"},Ne={class:"user-card__name"},Pe={class:"user-card__mobile"},Ae=U({__name:"TheNavbar",props:{collapsed:{type:Boolean}},emits:["toggle-sidebar"],setup(n){const t=R(),e=te(),s=ae(),o=D(),I=P(()=>{var v;return((v=t.meta)==null?void 0:v.pageTitle)??""}),M=P(()=>{var v;return(v=t.meta)==null?void 0:v.breadcrumb}),w=P(()=>{var v,u;return((v=s.user)==null?void 0:v.name)??((u=s.user)==null?void 0:u.fullName)??"کاربر"}),f=P(()=>w.value.trim().charAt(0)||"ک"),O=P(()=>!!o.hasPermission("user.permission"));async function L(){await s.logout()||e.push("/auth/login")}return(v,u)=>{const j=d("a-button"),r=d("router-link"),l=d("a-breadcrumb-item"),b=d("a-breadcrumb"),y=d("a-avatar"),g=d("a-divider"),c=d("a-menu-item"),k=d("a-menu"),$=d("a-dropdown"),z=d("a-layout-header");return a(),p(z,{class:"the-navbar"},{default:i(()=>[_("div",Ie,[m(j,{type:"text",onClick:u[0]||(u[0]=C=>v.$emit("toggle-sidebar"))},{default:i(()=>[n.collapsed?(a(),p(h(q),{key:0})):(a(),p(h(W),{key:1}))]),_:1}),_("span",Oe,S(I.value),1),M.value?(a(),p(b,{key:0,class:"breadcrumb"},{default:i(()=>[(a(!0),A(B,null,T(M.value,(C,F)=>(a(),p(l,{key:F},{default:i(()=>[C.url&&!C.active?(a(),p(r,{key:0,to:C.url},{default:i(()=>[N(S(C.title),1)]),_:2},1032,["to"])):(a(),A("span",ke,S(C.title),1))]),_:2},1024))),128))]),_:1})):x("",!0)]),_("div",we,[m($,{trigger:"click",placement:"bottomRight","overlay-class-name":"user-dropdown-overlay"},{overlay:i(()=>{var C;return[_("div",Le,[_("div",$e,[m(y,{size:"large",style:{"background-color":"#1c2d56"}},{default:i(()=>[N(S(f.value),1)]),_:1}),_("div",Ce,[_("span",Ne,S(w.value),1),_("span",Pe,S((C=h(s).user)==null?void 0:C.mobile),1)])]),m(g,{class:"user-card__divider"}),m(k,{class:"user-card__menu"},{default:i(()=>[m(c,{key:"my-data",onClick:u[1]||(u[1]=F=>h(e).push("/my-data"))},{default:i(()=>[m(h(le)),u[3]||(u[3]=N(" اطلاعات من ",-1))]),_:1}),O.value?(a(),p(c,{key:"permission",onClick:u[2]||(u[2]=F=>h(e).push("/permission"))},{default:i(()=>[m(h(ue)),u[4]||(u[4]=N(" دسترسی ها ",-1))]),_:1})):x("",!0)]),_:1}),m(g,{class:"user-card__divider"}),m(k,{class:"user-card__menu"},{default:i(()=>[m(c,{key:"logout",onClick:L},{default:i(()=>[m(h(G)),u[5]||(u[5]=N(" خروج ",-1))]),_:1})]),_:1})])]}),default:i(()=>[_("span",Se,[m(y,{size:"small",style:{"background-color":"#1c2d56"}},{default:i(()=>[N(S(f.value),1)]),_:1}),_("span",Me,S(w.value),1)])]),_:1})])]),_:1})}}}),je=E(Ae,[["__scopeId","data-v-5cc2d870"]]),Be={class:"content-wrapper"},xe={class:"content-area__content"},ze=U({__name:"Main",setup(n){const t=R(),e=oe(),s=P(()=>e.sidebarCollapsed);function o(){e.isSmallScreen?e.setMobileNavOpen(!e.mobileNavOpen):e.setSidebarCollapsed(!s.value)}const I=P(()=>{var f;return!!((f=t.meta)!=null&&f.no_scroll)}),M=H(void 0);function w(f){M.value=f}return V(()=>t.path,()=>{M.value=void 0,e.setMobileNavOpen(!1)}),V(()=>e.isSmallScreen,f=>{f||e.setMobileNavOpen(!1)}),(f,O)=>{const L=d("a-drawer"),v=d("router-view"),u=d("a-layout-content"),j=d("a-layout");return a(),p(j,{class:se(["layout--main",{"no-scroll":I.value}])},{default:i(()=>[h(e).isSmallScreen?(a(),p(L,{key:1,open:h(e).mobileNavOpen,placement:"right",width:260,closable:!1,"root-class-name":"mobile-nav-drawer",onClose:O[0]||(O[0]=r=>h(e).setMobileNavOpen(!1))},{default:i(()=>[m(ne)]),_:1},8,["open"])):(a(),p(ne,{key:0,collapsed:s.value,"show-toggle":"",onToggle:o},null,8,["collapsed"])),m(j,null,{default:i(()=>[m(je,{collapsed:h(e).isSmallScreen?!h(e).mobileNavOpen:s.value,onToggleSidebar:o},null,8,["collapsed"]),m(u,{id:"content-area"},{default:i(()=>[_("div",Be,[_("div",xe,[m(v,{onChangeRouteTitle:w})])])]),_:1})]),_:1})]),_:1},8,["class"])}}}),Xe=E(ze,[["__scopeId","data-v-c1ea4b9d"]]);export{Xe as default}; diff --git a/apps/admin-panel/dist/assets/Maintenance-i-vsIiRb.js b/apps/admin-panel/dist/assets/Maintenance-BZj1Y9_T.js similarity index 88% rename from apps/admin-panel/dist/assets/Maintenance-i-vsIiRb.js rename to apps/admin-panel/dist/assets/Maintenance-BZj1Y9_T.js index a4d71dd..932b905 100644 --- a/apps/admin-panel/dist/assets/Maintenance-i-vsIiRb.js +++ b/apps/admin-panel/dist/assets/Maintenance-BZj1Y9_T.js @@ -1 +1 @@ -import{_ as c,b as _,c as e,w as o,f as l,r as s,o as u}from"./index-C9T3Vski.js";const i={},p={class:"full-page-msg"};function d(n,t){const a=s("a-button"),r=s("a-result");return u(),_("div",p,[e(r,{status:"info",title:"در دست تعمیر","sub-title":"این بخش موقتاً در دسترس نیست."},{extra:o(()=>[e(a,{type:"primary",onClick:t[0]||(t[0]=f=>n.$router.push("/"))},{default:o(()=>[...t[1]||(t[1]=[l("بازگشت به خانه",-1)])]),_:1})]),_:1})])}const x=c(i,[["render",d],["__scopeId","data-v-4e6c833c"]]);export{x as default}; +import{_ as c,b as _,c as e,w as o,f as l,r as s,o as u}from"./index-CuIWfDbM.js";const i={},p={class:"full-page-msg"};function d(n,t){const a=s("a-button"),r=s("a-result");return u(),_("div",p,[e(r,{status:"info",title:"در دست تعمیر","sub-title":"این بخش موقتاً در دسترس نیست."},{extra:o(()=>[e(a,{type:"primary",onClick:t[0]||(t[0]=f=>n.$router.push("/"))},{default:o(()=>[...t[1]||(t[1]=[l("بازگشت به خانه",-1)])]),_:1})]),_:1})])}const x=c(i,[["render",d],["__scopeId","data-v-4e6c833c"]]);export{x as default}; diff --git a/apps/admin-panel/dist/assets/MakeOrder-CURJu9sW.css b/apps/admin-panel/dist/assets/MakeOrder-CURJu9sW.css deleted file mode 100644 index a362728..0000000 --- a/apps/admin-panel/dist/assets/MakeOrder-CURJu9sW.css +++ /dev/null @@ -1 +0,0 @@ -.flex-1[data-v-4a9a9c66]{flex:1}.gap-8[data-v-4a9a9c66]{gap:2rem}.mr-3[data-v-4a9a9c66]{margin-left:.75rem}@media (max-width: 575px){.make-detail[data-v-4a9a9c66]{flex-direction:column;gap:12px}.make-detail>.flex[data-v-4a9a9c66]{min-width:0}} diff --git a/apps/admin-panel/dist/assets/MakeOrder-CVDhxNHn.js b/apps/admin-panel/dist/assets/MakeOrder-CVDhxNHn.js deleted file mode 100644 index 4244f3b..0000000 --- a/apps/admin-panel/dist/assets/MakeOrder-CVDhxNHn.js +++ /dev/null @@ -1 +0,0 @@ -import{u as V,d as q,b as p,c as n,w as l,r as m,o as s,h as J,H as Q,t as c,p as w,a as _,i as v,f,F as Y,e as Z,m as h,s as N,y as U,G as B,_ as ee}from"./index-C9T3Vski.js";import{a as te,b as d,X as oe}from"./model-B4TWAN58.js";import{_ as D}from"./TooltipBtn.vue_vue_type_script_setup_true_lang-4rxU9Kz6.js";import{j as ae}from"./filters-D6Nzbpog.js";import"./SettingOutlined-BizkfqvN.js";import"./icons-1fD-iiAA.js";import"./UnorderedListOutlined-Bl0oFRyr.js";import"./PercentageOutlined-CxUloK5J.js";import"./UserAddOutlined-BlPGjUCi.js";import"./CreditCardOutlined-BxTC_oHD.js";import"./AppstoreOutlined-lwgIJvjh.js";import"./TeamOutlined-j5HKaunb.js";import"./UserOutlined-Csu4xHRr.js";import"./CameraOutlined-C6gLi8-9.js";import"./index-m6pCHaEa.js";function le(){const T=V(),r=new te("admin/pre-orders/list","سفارش های ساختنی");return r.add(new d("customer.id","شماره").filterKey("id").filterNumber()),r.add(new d("customer.fname","نام مشتری").filterKey("customer.fullName").filterText()),r.add(new d("customer.lname","نام خانوادگی").filterKey("customer.fullName").filterText()),r.add(new d("color","رنگ محصول").filterKey("colorName").filterText()),r.add(new d("size","سایز محصول").filterKey("sizeSpec").filterText()),r.add(new d("color_mina","رنگ مینا").filterKey("minaColor").filterText()),r.add(new d("color_stone","رنگ سنگ").filterKey("stoneColor").filterText()),r.add(new d("sum","تعداد").filterText()),r.add(new d("time_creat_fa","تاریخ ثبت").filterKey("createdAt").filterDate().noSort()),r.add(new d("time_update_fa","تاریخ ویرایش").hidden().filterKey("updatedAt").filterDate().noSort()),r.add(new d("customer.name","ثبت کننده").renderSlot("name").noSort()),T.roles&&T.roles.includes("order.tamin.state")&&r.add(new d("sts_str_fa","وضعیت").renderSlot("sts").noSort()),r.add(new d("opt","عملیات").noSort().renderSlot("opt")),r}const se={id:"page-user-list"},ne={class:"flex"},re=["onClick"],ie={key:1},de={key:0},ue={class:"flex"},ce={class:"flex gap-8 make-detail"},me=["src"],_e={class:"flex"},ve={key:0},pe={key:0},fe={key:0},ke=q({__name:"MakeOrder",setup(T){const r=V(),k=a=>!!r.hasPermission(a),X=le(),K=h(null),t=h(void 0),C=h(!1),i=h(!1),I=h([]),j=a=>a?ae(a):"",L=N(()=>i.value?"CheckIcon":"EditIcon"),z=N(()=>{var a,e;return((e=(a=t.value)==null?void 0:a.customer)==null?void 0:e.name)??"-"}),A=N(()=>{var a,e;return((e=(a=t.value)==null?void 0:a.customer)==null?void 0:e.mobile)??"-"});async function E(){try{const{data:a}=await U.post("workshop/table",{page:1,limit:100});I.value=(a.rows??[]).map(e=>({id:e.id,name:e.name}))}catch(a){console.log(a)}}async function M(a){const{data:e}=await U.get(`admin/pre-orders/${a.id}`);t.value=e,C.value=!0,E()}async function F(){var a,e,u,b,x,y,O;if(!i.value){i.value=!0;return}try{await U.put(`custom-order/${(a=t.value)==null?void 0:a.id}`,{color:(e=t.value)==null?void 0:e.color,color_mina:(u=t.value)==null?void 0:u.color_mina,color_stone:(b=t.value)==null?void 0:b.color_stone}),i.value=!1,B.info("ویرایش موفق آمیز"),(x=K.value)==null||x.fetch()}catch(g){B.error(((O=(y=g==null?void 0:g.response)==null?void 0:y.data)==null?void 0:O.message)??"خطا در ویرایش")}}function P(){var a;(a=K.value)==null||a.fetch(),i.value=!1}return(a,e)=>{const u=m("a-descriptions-item"),b=m("a-descriptions"),x=m("a-empty"),y=m("a-input"),O=m("a-tag"),g=m("a-input-number"),W=m("a-select-option"),G=m("a-select"),$=m("a-card"),H=m("a-button"),R=m("a-modal");return s(),p("div",se,[n($,{title:"سفارش های ساختنی",class:"page-card"},{default:l(()=>[n(oe,{ref_key:"tbl",ref:K,model:J(X),"mobile-cards":""},{name:l(({record:o})=>{var S;return[f(c((S=o.customer)==null?void 0:S.name),1)]}),opt:l(({record:o})=>[w("div",ne,[k("order.makeOrder.view")?(s(),_(D,{key:0,"icon-class":"w-5 h-5 text-primary",class:"mr-3",icon:"ListIcon",title:"مشاهده سفارش",onClick:S=>M(o)},null,8,["onClick"])):v("",!0)])]),sts:l(({record:o})=>[k("order.makeOrder.state")?(s(),p("a",{key:0,href:"",onClick:Q(S=>M(o),["prevent"])},c(o.sts_str_fa),9,re)):(s(),p("span",ie,c(o.sts_str_fa),1))]),_:1},8,["model"]),n(R,{open:C.value,"onUpdate:open":e[6]||(e[6]=o=>C.value=o),title:"مشاهده سفارش",width:"80%","wrap-class-name":"detail-modal",onCancel:P},{footer:l(()=>[n(H,{onClick:e[5]||(e[5]=o=>C.value=!1)},{default:l(()=>[...e[8]||(e[8]=[f("باشه",-1)])]),_:1})]),default:l(()=>[t.value?(s(),p("div",de,[n(b,null,{default:l(()=>[n(u,{label:"مشتری"},{default:l(()=>[f(c(z.value),1)]),_:1}),n(u,{label:"تلفن همراه"},{default:l(()=>[f(c(A.value),1)]),_:1}),n(u,{label:"تاریخ ثبت"},{default:l(()=>[f(c(j(t.value.time_creat_fa)||"-"),1)]),_:1}),n(u,{label:"وضعیت"},{default:l(()=>[f(c(t.value.sts_str_fa||"-"),1)]),_:1})]),_:1}),n($,null,{title:l(()=>[w("div",ue,[e[7]||(e[7]=w("div",{class:"flex-1"},"آیتم های سفارش",-1)),w("div",null,[k("order.makeOrder.view.edit")?(s(),_(D,{key:0,"icon-class":"w-5 h-5 text-success",title:"ویرایش",icon:L.value,onClick:F},null,8,["icon"])):v("",!0)])])]),default:l(()=>[w("div",ce,[w("div",null,[t.value.designImageUrl?(s(),p("img",{key:0,src:t.value.designImageUrl,width:"90px",height:"90px",style:{"object-fit":"scale-down"}},null,8,me)):(s(),_(x,{key:1,image:void 0,description:"بدون تصویر"}))]),w("div",_e,[n(b,null,{default:l(()=>[n(u,{label:"رنگ محصول"},{default:l(()=>[i.value?v("",!0):(s(),p("div",ve,c(t.value.color||"-"),1)),i.value&&k("order.makeOrder.view.edit")?(s(),_(y,{key:1,value:t.value.color,"onUpdate:value":e[0]||(e[0]=o=>t.value.color=o)},null,8,["value"])):v("",!0)]),_:1}),n(u,{label:"رنگ مینا"},{default:l(()=>[i.value?v("",!0):(s(),p("div",pe,c(t.value.color_mina||"-"),1)),i.value&&k("order.makeOrder.view.edit")?(s(),_(y,{key:1,value:t.value.color_mina,"onUpdate:value":e[1]||(e[1]=o=>t.value.color_mina=o)},null,8,["value"])):v("",!0)]),_:1}),n(u,{label:"رنگ سنگ"},{default:l(()=>[i.value?v("",!0):(s(),p("div",fe,c(t.value.color_stone||"-"),1)),i.value&&k("order.makeOrder.view.edit")?(s(),_(y,{key:1,value:t.value.color_stone,"onUpdate:value":e[2]||(e[2]=o=>t.value.color_stone=o)},null,8,["value"])):v("",!0)]),_:1}),n(u,{label:"تعداد"},{default:l(()=>[i.value?v("",!0):(s(),_(O,{key:0,color:"orange"},{default:l(()=>[f(c(t.value.sum||0),1)]),_:1})),i.value&&k("order.makeOrder.view.edit")?(s(),_(g,{key:1,value:t.value.sum,"onUpdate:value":e[3]||(e[3]=o=>t.value.sum=o),class:"w-full"},null,8,["value"])):v("",!0)]),_:1}),n(u,{label:"انتخاب کارگاه"},{default:l(()=>[n(G,{value:t.value.workshop_id,"onUpdate:value":e[4]||(e[4]=o=>t.value.workshop_id=o),placeholder:"لطفا یک کارگاه را انتخاب کنید",style:{"min-width":"200px"}},{default:l(()=>[(s(!0),p(Y,null,Z(I.value,o=>(s(),_(W,{key:o.id,value:o.id},{default:l(()=>[f(c(o.name),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1})]),_:1})])])]),_:1})])):(s(),_(x,{key:1}))]),_:1},8,["open"])]),_:1})])}}}),$e=ee(ke,[["__scopeId","data-v-4a9a9c66"]]);export{$e as default}; diff --git a/apps/admin-panel/dist/assets/MakeOrder-DOwP9BUX.css b/apps/admin-panel/dist/assets/MakeOrder-DOwP9BUX.css new file mode 100644 index 0000000..0c59360 --- /dev/null +++ b/apps/admin-panel/dist/assets/MakeOrder-DOwP9BUX.css @@ -0,0 +1 @@ +.flex-1[data-v-bb2f59e2]{flex:1}.gap-8[data-v-bb2f59e2]{gap:2rem}.mr-3[data-v-bb2f59e2]{margin-left:.75rem}@media (max-width: 575px){.make-detail[data-v-bb2f59e2]{flex-direction:column;gap:12px}.make-detail>.flex[data-v-bb2f59e2]{min-width:0}} diff --git a/apps/admin-panel/dist/assets/MakeOrder-DcmMw-Ed.js b/apps/admin-panel/dist/assets/MakeOrder-DcmMw-Ed.js new file mode 100644 index 0000000..6dff4d7 --- /dev/null +++ b/apps/admin-panel/dist/assets/MakeOrder-DcmMw-Ed.js @@ -0,0 +1 @@ +import{u as X,d as q,b as p,c as n,w as l,r as m,o as s,h as J,H as Q,t as c,p as w,a as _,i as v,f,F as Y,e as Z,m as h,s as U,y as I,G as D,_ as ee}from"./index-CuIWfDbM.js";import{a as te,b as d,X as oe}from"./model-D_9omyEY.js";import{_ as V}from"./TooltipBtn.vue_vue_type_script_setup_true_lang-D0mVo7Ou.js";import{j as ae}from"./filters-Cvt98RIq.js";import"./SettingOutlined-BehgjsnT.js";import"./icons-BWdsnUVP.js";import"./UnorderedListOutlined-DOoZELHj.js";import"./PercentageOutlined-Cooaq8mh.js";import"./UserAddOutlined-BBmLFe8z.js";import"./CreditCardOutlined-BRF7XcYB.js";import"./AppstoreOutlined-6RRW3vIa.js";import"./TeamOutlined-CqxRZks7.js";import"./UserOutlined-aZ-mQgwc.js";import"./CameraOutlined-Dx8LoT1m.js";import"./index-CPTngTRs.js";function le(){const K=X(),r=new te("admin/pre-orders/list","سفارش های ساختنی");return r.add(new d("customer.id","شماره").filterKey("id").filterNumber()),r.add(new d("customer.fname","نام مشتری").filterKey("customer.fullName").filterText()),r.add(new d("customer.lname","نام خانوادگی").filterKey("customer.fullName").filterText()),r.add(new d("color","رنگ محصول").filterKey("colorName").filterText()),r.add(new d("size","سایز محصول").filterKey("sizeSpec").filterText()),r.add(new d("color_mina","رنگ مینا").filterKey("minaColor").filterText()),r.add(new d("color_stone","رنگ سنگ").filterKey("stoneColor").filterText()),r.add(new d("sum","تعداد").filterText()),r.add(new d("time_creat_fa","تاریخ ثبت").filterKey("createdAt").filterDate().noSort()),r.add(new d("time_update_fa","تاریخ ویرایش").hidden().filterKey("updatedAt").filterDate().noSort()),r.add(new d("customer.name","ثبت کننده").renderSlot("name").noSort()),K.roles&&K.roles.includes("order.tamin.state")&&r.add(new d("sts_str_fa","وضعیت").renderSlot("sts").noSort()),r.add(new d("opt","عملیات").noSort().renderSlot("opt")),r}const se={id:"page-user-list"},ne={class:"flex"},re=["onClick"],ie={key:1},de={key:0},ue={class:"flex"},ce={class:"flex gap-8 make-detail"},me=["src"],_e={class:"flex"},ve={key:0},pe={key:0},fe={key:0},ke=q({__name:"MakeOrder",setup(K){const r=X(),k=a=>!!r.hasPermission(a),j=le(),N=h(null),t=h(void 0),C=h(!1),i=h(!1),M=h([]),L=a=>a?ae(a):"",z=U(()=>i.value?"CheckIcon":"EditIcon"),A=U(()=>{var a,e;return((e=(a=t.value)==null?void 0:a.customer)==null?void 0:e.name)??"-"}),E=U(()=>{var a,e;return((e=(a=t.value)==null?void 0:a.customer)==null?void 0:e.mobile)??"-"});async function F(){try{const{data:a}=await I.post("workshop/table",{page:1,limit:100});M.value=(a.rows??[]).map(e=>({id:e.id,name:e.name}))}catch(a){console.log(a)}}async function $(a){const{data:e}=await I.get(`admin/pre-orders/${a.id}`);t.value=e,C.value=!0,F()}async function P(){var a,e,u,b,x,y,O,S;if(!i.value){i.value=!0;return}try{await I.put(`custom-order/${(a=t.value)==null?void 0:a.id}`,{color:(e=t.value)==null?void 0:e.color,color_mina:(u=t.value)==null?void 0:u.color_mina,color_stone:(b=t.value)==null?void 0:b.color_stone,sum:(x=t.value)==null?void 0:x.sum}),i.value=!1,D.info("ویرایش موفق آمیز"),(y=N.value)==null||y.fetch()}catch(g){D.error(((S=(O=g==null?void 0:g.response)==null?void 0:O.data)==null?void 0:S.message)??"خطا در ویرایش")}}function W(){var a;(a=N.value)==null||a.fetch(),i.value=!1}return(a,e)=>{const u=m("a-descriptions-item"),b=m("a-descriptions"),x=m("a-empty"),y=m("a-input"),O=m("a-tag"),S=m("a-input-number"),g=m("a-select-option"),G=m("a-select"),B=m("a-card"),H=m("a-button"),R=m("a-modal");return s(),p("div",se,[n(B,{title:"سفارش های ساختنی",class:"page-card"},{default:l(()=>[n(oe,{ref_key:"tbl",ref:N,model:J(j),"mobile-cards":""},{name:l(({record:o})=>{var T;return[f(c((T=o.customer)==null?void 0:T.name),1)]}),opt:l(({record:o})=>[w("div",ne,[k("order.makeOrder.view")?(s(),_(V,{key:0,"icon-class":"w-5 h-5 text-primary",class:"mr-3",icon:"ListIcon",title:"مشاهده سفارش",onClick:T=>$(o)},null,8,["onClick"])):v("",!0)])]),sts:l(({record:o})=>[k("order.makeOrder.state")?(s(),p("a",{key:0,href:"",onClick:Q(T=>$(o),["prevent"])},c(o.sts_str_fa),9,re)):(s(),p("span",ie,c(o.sts_str_fa),1))]),_:1},8,["model"]),n(R,{open:C.value,"onUpdate:open":e[6]||(e[6]=o=>C.value=o),title:"مشاهده سفارش",width:"80%","wrap-class-name":"detail-modal",onCancel:W},{footer:l(()=>[n(H,{onClick:e[5]||(e[5]=o=>C.value=!1)},{default:l(()=>[...e[8]||(e[8]=[f("باشه",-1)])]),_:1})]),default:l(()=>[t.value?(s(),p("div",de,[n(b,null,{default:l(()=>[n(u,{label:"مشتری"},{default:l(()=>[f(c(A.value),1)]),_:1}),n(u,{label:"تلفن همراه"},{default:l(()=>[f(c(E.value),1)]),_:1}),n(u,{label:"تاریخ ثبت"},{default:l(()=>[f(c(L(t.value.time_creat_fa)||"-"),1)]),_:1}),n(u,{label:"وضعیت"},{default:l(()=>[f(c(t.value.sts_str_fa||"-"),1)]),_:1})]),_:1}),n(B,null,{title:l(()=>[w("div",ue,[e[7]||(e[7]=w("div",{class:"flex-1"},"آیتم های سفارش",-1)),w("div",null,[k("order.makeOrder.view.edit")?(s(),_(V,{key:0,"icon-class":"w-5 h-5 text-success",title:"ویرایش",icon:z.value,onClick:P},null,8,["icon"])):v("",!0)])])]),default:l(()=>[w("div",ce,[w("div",null,[t.value.designImageUrl?(s(),p("img",{key:0,src:t.value.designImageUrl,width:"90px",height:"90px",style:{"object-fit":"scale-down"}},null,8,me)):(s(),_(x,{key:1,image:void 0,description:"بدون تصویر"}))]),w("div",_e,[n(b,null,{default:l(()=>[n(u,{label:"رنگ محصول"},{default:l(()=>[i.value?v("",!0):(s(),p("div",ve,c(t.value.color||"-"),1)),i.value&&k("order.makeOrder.view.edit")?(s(),_(y,{key:1,value:t.value.color,"onUpdate:value":e[0]||(e[0]=o=>t.value.color=o)},null,8,["value"])):v("",!0)]),_:1}),n(u,{label:"رنگ مینا"},{default:l(()=>[i.value?v("",!0):(s(),p("div",pe,c(t.value.color_mina||"-"),1)),i.value&&k("order.makeOrder.view.edit")?(s(),_(y,{key:1,value:t.value.color_mina,"onUpdate:value":e[1]||(e[1]=o=>t.value.color_mina=o)},null,8,["value"])):v("",!0)]),_:1}),n(u,{label:"رنگ سنگ"},{default:l(()=>[i.value?v("",!0):(s(),p("div",fe,c(t.value.color_stone||"-"),1)),i.value&&k("order.makeOrder.view.edit")?(s(),_(y,{key:1,value:t.value.color_stone,"onUpdate:value":e[2]||(e[2]=o=>t.value.color_stone=o)},null,8,["value"])):v("",!0)]),_:1}),n(u,{label:"تعداد"},{default:l(()=>[i.value?v("",!0):(s(),_(O,{key:0,color:"orange"},{default:l(()=>[f(c(t.value.sum||0),1)]),_:1})),i.value&&k("order.makeOrder.view.edit")?(s(),_(S,{key:1,value:t.value.sum,"onUpdate:value":e[3]||(e[3]=o=>t.value.sum=o),class:"w-full"},null,8,["value"])):v("",!0)]),_:1}),n(u,{label:"انتخاب کارگاه"},{default:l(()=>[n(G,{value:t.value.workshop_id,"onUpdate:value":e[4]||(e[4]=o=>t.value.workshop_id=o),placeholder:"لطفا یک کارگاه را انتخاب کنید",style:{"min-width":"200px"}},{default:l(()=>[(s(!0),p(Y,null,Z(M.value,o=>(s(),_(g,{key:o.id,value:o.id},{default:l(()=>[f(c(o.name),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1})]),_:1})])])]),_:1})])):(s(),_(x,{key:1}))]),_:1},8,["open"])]),_:1})])}}}),$e=ee(ke,[["__scopeId","data-v-bb2f59e2"]]);export{$e as default}; diff --git a/apps/admin-panel/dist/assets/NotAuthorized-BRSMpGLt.js b/apps/admin-panel/dist/assets/NotAuthorized-D1EQlimu.js similarity index 89% rename from apps/admin-panel/dist/assets/NotAuthorized-BRSMpGLt.js rename to apps/admin-panel/dist/assets/NotAuthorized-D1EQlimu.js index 5717e9c..0263b7d 100644 --- a/apps/admin-panel/dist/assets/NotAuthorized-BRSMpGLt.js +++ b/apps/admin-panel/dist/assets/NotAuthorized-D1EQlimu.js @@ -1 +1 @@ -import{_,b as c,c as e,w as o,f as l,r as s,o as u}from"./index-C9T3Vski.js";const p={},d={class:"full-page-msg"};function i(n,t){const r=s("a-button"),a=s("a-result");return u(),c("div",d,[e(a,{status:"403",title:"دسترسی غیرمجاز","sub-title":"شما دسترسی لازم برای مشاهده این صفحه را ندارید."},{extra:o(()=>[e(r,{type:"primary",onClick:t[0]||(t[0]=f=>n.$router.push("/"))},{default:o(()=>[...t[1]||(t[1]=[l("بازگشت به خانه",-1)])]),_:1})]),_:1})])}const b=_(p,[["render",i],["__scopeId","data-v-8b21c139"]]);export{b as default}; +import{_,b as c,c as e,w as o,f as l,r as s,o as u}from"./index-CuIWfDbM.js";const p={},d={class:"full-page-msg"};function i(n,t){const r=s("a-button"),a=s("a-result");return u(),c("div",d,[e(a,{status:"403",title:"دسترسی غیرمجاز","sub-title":"شما دسترسی لازم برای مشاهده این صفحه را ندارید."},{extra:o(()=>[e(r,{type:"primary",onClick:t[0]||(t[0]=f=>n.$router.push("/"))},{default:o(()=>[...t[1]||(t[1]=[l("بازگشت به خانه",-1)])]),_:1})]),_:1})])}const b=_(p,[["render",i],["__scopeId","data-v-8b21c139"]]);export{b as default}; diff --git a/apps/admin-panel/dist/assets/OmdeArchivedList-CO5mnnTL.js b/apps/admin-panel/dist/assets/OmdeArchivedList-CO5mnnTL.js deleted file mode 100644 index ed056b2..0000000 --- a/apps/admin-panel/dist/assets/OmdeArchivedList-CO5mnnTL.js +++ /dev/null @@ -1 +0,0 @@ -import{b as i,O as m,a as e}from"./OmdeCustomerList-CUnRtzSY.js";import{d as p,a as s,h as t,o as a}from"./index-C9T3Vski.js";import"./index-m6pCHaEa.js";import"./model-B4TWAN58.js";import"./filters-D6Nzbpog.js";import"./SettingOutlined-BizkfqvN.js";import"./ListPageHeader.vue_vue_type_script_setup_true_lang-BDf2BWcO.js";import"./AccountingSyncButton.vue_vue_type_script_setup_true_lang-DQT4x2vG.js";import"./bulkCustomer.vue_vue_type_script_setup_true_lang-DMrGU5vL.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-Du4lPDHl.js";import"./ImageUploadInput.vue_vue_type_script_setup_true_lang-Bjo3vw78.js";import"./CityTreeSelect.vue_vue_type_script_setup_true_lang-82fzpZxR.js";import"./DateInput-CCBYpdHy.js";import"./UserOutlined-Csu4xHRr.js";import"./ShopOutlined-BBtTJF4e.js";import"./EnvironmentOutlined-D8YNH9-a.js";import"./PercentageOutlined-CxUloK5J.js";import"./SafetyCertificateOutlined-DS5dQeR2.js";import"./UnorderedListOutlined-Bl0oFRyr.js";const U=p({__name:"OmdeArchivedList",setup(d){const o=m.archived.title,r=i("archived");return(l,c)=>(a(),s(e,{title:t(o),model:t(r)},null,8,["title","model"]))}});export{U as default}; diff --git a/apps/admin-panel/dist/assets/OmdeArchivedList-DUyxnhff.js b/apps/admin-panel/dist/assets/OmdeArchivedList-DUyxnhff.js new file mode 100644 index 0000000..fabc277 --- /dev/null +++ b/apps/admin-panel/dist/assets/OmdeArchivedList-DUyxnhff.js @@ -0,0 +1 @@ +import{b as i,O as m,a as e}from"./OmdeCustomerList-hz8XVJlR.js";import{d as p,a as s,h as t,o as a}from"./index-CuIWfDbM.js";import"./index-CPTngTRs.js";import"./model-D_9omyEY.js";import"./filters-Cvt98RIq.js";import"./SettingOutlined-BehgjsnT.js";import"./ListPageHeader.vue_vue_type_script_setup_true_lang-ReVXBl8h.js";import"./AccountingSyncButton.vue_vue_type_script_setup_true_lang-BgmQz3-B.js";import"./bulkCustomer.vue_vue_type_script_setup_true_lang-DEtGbCJP.js";import"./select--BgT6D7O.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-DXuLuiBZ.js";import"./ImageUploadInput.vue_vue_type_script_setup_true_lang-Bb4hJ8Y2.js";import"./CityTreeSelect.vue_vue_type_script_setup_true_lang-Be--_CeP.js";import"./DateInput-CJzwI_r_.js";import"./UserOutlined-aZ-mQgwc.js";import"./ShopOutlined--nD1gJHu.js";import"./EnvironmentOutlined-BBvjB5-8.js";import"./PercentageOutlined-Cooaq8mh.js";import"./SafetyCertificateOutlined-DWQ69biy.js";import"./UnorderedListOutlined-DOoZELHj.js";const g=p({__name:"OmdeArchivedList",setup(d){const o=m.archived.title,r=i("archived");return(l,c)=>(a(),s(e,{title:t(o),model:t(r)},null,8,["title","model"]))}});export{g as default}; diff --git a/apps/admin-panel/dist/assets/OmdeCustomerList-CUnRtzSY.js b/apps/admin-panel/dist/assets/OmdeCustomerList-hz8XVJlR.js similarity index 96% rename from apps/admin-panel/dist/assets/OmdeCustomerList-CUnRtzSY.js rename to apps/admin-panel/dist/assets/OmdeCustomerList-hz8XVJlR.js index 139c9cb..ab97632 100644 --- a/apps/admin-panel/dist/assets/OmdeCustomerList-CUnRtzSY.js +++ b/apps/admin-panel/dist/assets/OmdeCustomerList-hz8XVJlR.js @@ -1 +1 @@ -import{m as ke}from"./index-m6pCHaEa.js";import{c as a,I as Se,u as J,d as be,x as Oe,y as $,z as $e,b,ak as q,w as o,r as C,o as d,f as A,t as v,p as l,i as w,h as y,Z as Te,a as p,E as je,Q as Ie,S as De,q as T,g as N,W as H,e as Ne,m as j,al as Be,G as x,l as Ee,_ as Ae}from"./index-C9T3Vski.js";import{a as He,b as r,X as Me}from"./model-B4TWAN58.js";import{_ as Le}from"./ListPageHeader.vue_vue_type_script_setup_true_lang-BDf2BWcO.js";import{_ as Ve}from"./AccountingSyncButton.vue_vue_type_script_setup_true_lang-DQT4x2vG.js";import{_ as Pe}from"./bulkCustomer.vue_vue_type_script_setup_true_lang-DMrGU5vL.js";import{S as ze}from"./SettingOutlined-BizkfqvN.js";import{U as Re,S as M}from"./UnorderedListOutlined-Bl0oFRyr.js";var Ue={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M624 706.3h-74.1V464c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v242.3H400c-6.7 0-10.4 7.7-6.3 12.9l112 141.7a8 8 0 0012.6 0l112-141.7c4.1-5.2.4-12.9-6.3-12.9z"}},{tag:"path",attrs:{d:"M811.4 366.7C765.6 245.9 648.9 160 512.2 160S258.8 245.8 213 366.6C127.3 389.1 64 467.2 64 560c0 110.5 89.5 200 199.9 200H304c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8h-40.1c-33.7 0-65.4-13.4-89-37.7-23.5-24.2-36-56.8-34.9-90.6.9-26.4 9.9-51.2 26.2-72.1 16.7-21.3 40.1-36.8 66.1-43.7l37.9-9.9 13.9-36.6c8.6-22.8 20.6-44.1 35.7-63.4a245.6 245.6 0 0152.4-49.9c41.1-28.9 89.5-44.2 140-44.2s98.9 15.3 140 44.2c19.9 14 37.5 30.8 52.4 49.9 15.1 19.3 27.1 40.7 35.7 63.4l13.8 36.5 37.8 10C846.1 454.5 884 503.8 884 560c0 33.1-12.9 64.3-36.3 87.7a123.07 123.07 0 01-87.6 36.3H720c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h40.1C870.5 760 960 670.5 960 560c0-92.7-63.1-170.7-148.6-193.3z"}}]},name:"cloud-download",theme:"outlined"};function G(c){for(var u=1;u_.key==="acc_remain"))return;const f=c.cols.findIndex(_=>_.key==="rial_remain");for(const _ of c.cols)_.key==="remain"&&(_.title="بدهی داخل اپ (گرم)"),_.key==="rial_remain"&&(_.title="بدهی داخل اپ (ریال)");c.cols.splice(f+1,0,new r("acc_remain",`مانده‌ی ${u} (گرم)`).filterNumber().renderSlot("acc_gold"),new r("acc_rial_remain",`مانده‌ی ${u} (ریال)`).filterNumber().renderSlot("acc_rial"))}const Qe={id:"page-user-list"},qe={key:0,class:"list-count"},Ge={class:"text-danger"},Je={key:0},We={key:1},Ze={key:0,class:"acc-none"},Ke={class:"flex"},et={class:"cursor-pointer flex items-center"},tt={class:"flex gap-2"},nt={class:"flex gap-2"},st={class:"flex gap-2"},ot={class:"flex gap-2"},it={class:"flex gap-2"},at={class:"flex gap-2"},lt={key:0,class:"text-danger text-xs"},rt={class:"flex gap-2"},ct={class:"flex gap-2"},ut={class:"flex gap-2"},dt=be({__name:"OmdeCustomerList",props:{title:{},model:{},showAddButton:{type:Boolean,default:!1},accountingSync:{type:Boolean,default:!1}},setup(c){const u=c,f=Ee(),_=J(),s=e=>!!_.hasPermission(e),h=j(null),I=j(!1),D=j(void 0),S=j(void 0);function W(e){const n=e;S.value={count:n&&n.count?n.count:void 0,total:n&&n.total?n.total:void 0}}const Z=[{slot:"acc_gold",field:"acc_remain",places:3},{slot:"acc_rial",field:"acc_rial_remain",places:0}],K=e=>Number(e)>0?"acc-debt":Number(e)<0?"acc-credit":"";function ee(e,n){const m=Number(e);return m?`${Math.abs(m).toLocaleString("fa-IR",{maximumFractionDigits:n})} ${m>0?"بدهکار":"بستانکار"}`:"۰"}const te=e=>ke(e).format("jYYYY/jMM/jDD HH:mm");Oe(async()=>{try{const{data:e}=await $.get("admin/accounting-status");e!=null&&e.connected&&e.provider&&Ye($e(u.model),e.provider)}catch{}});function ne(e,n){const m=String(e.key);return m==="5"||m==="6"||m==="7"||m==="8"||m==="9"}function se(e){switch(e.sts_verify_step_one){case 1:return"در انتظار تایید ورود مشتری";case 2:return"رد ورود مشتری";case 3:return"تایید ورود مشتری"}}function V(e){switch(e.sts_verify_step_one){case 1:return"HelpCircleIcon";case 2:return"SlashIcon";case 3:return"CheckIcon"}}function oe(e){switch(e.sts_verify_step_two){case 1:return"در انتظار فعال سازی";case 2:return"غیر فعال سازی";case 3:return"فعال سازی"}}function P(e){switch(e.sts_verify_step_two){case 1:return"HelpCircleIcon";case 2:return"SlashIcon";case 3:return"CheckIcon"}}function z(e){return e==="HelpCircleIcon"?Be:e==="CheckIcon"?H:M}function R(e){return e==="HelpCircleIcon"?"text-primary":e==="CheckIcon"?"text-success":"text-danger"}async function B(e,n){var m;try{await $.post("major/verify",e),x.info("تغییرات ثبت شد "),(m=h.value)==null||m.fetch()}catch{x.error(n)}}const U=e=>B({customer_id:e,sts_verify_step_one:2},"خطا در تغییر وضعیت اولیه مشتری"),F=e=>Q(e,"sts_verify_step_one"),X=e=>B({customer_id:e,sts_verify_step_two:2},"خطا در تغییر وضعیت سفارش مشتری"),Y=e=>Q(e,"sts_verify_step_two"),k=j({open:!1,saving:!1,id:"",step:"sts_verify_step_one",reason:""});function Q(e,n){k.value={open:!0,saving:!1,id:e,step:n,reason:""}}async function ie(){const e=k.value;e.saving=!0,await B({customer_id:e.id,[e.step]:3,reason:e.reason.trim()||null},e.step==="sts_verify_step_one"?"خطا در تغییر وضعیت اولیه مشتری":"خطا در تغییر وضعیت سفارش مشتری"),e.saving=!1,e.open=!1}function ae(e){return e.sts_verify_step_one===1?U(e.id):e.sts_verify_step_one===2?F(e.id):U(e.id)}function le(e){if(e.sts_verify_step_one===1)return F(e.id)}function re(e){return e.sts_verify_step_two===1?X(e.id):e.sts_verify_step_two===2?Y(e.id):X(e.id)}function ce(e){if(e.sts_verify_step_two===1)return Y(e.id)}async function ue(e){var n;try{await $.post("customer/toggle-active",{id:e.id}),x.info("تغییرات ثبت شد "),await((n=h.value)==null?void 0:n.fetch())}catch{x.error("خطا در تغییر وضعیت")}}async function de(e){var n;try{await $.post("customer/toggle-sts",{id:e.id,sts:e.sts}),x.info("تغییرات ثبت شد "),await((n=h.value)==null?void 0:n.fetch())}catch{x.error("خطا در تغییر وضعیت")}}async function fe(e){var n;try{await $.get(`major/archive/${e}`),x.info("تغییرات ثبت شد "),await((n=h.value)==null?void 0:n.fetch())}catch{x.error("خطا در بایگانی")}}function _e(e){u.showAddButton?(D.value=e,I.value=!0):f.push(`/bulkCustomer/edit/${e}`)}function me(){D.value=void 0,I.value=!0}function pe(e){f.push(`/bulkCustomer/view/${e}`)}function ve(e){f.push(`/bulkCustomer/view/${e.id}?tab=orders`)}function ye(e){f.push(`/bulkCustomer/view/${e.id}?tab=documents`)}return(e,n)=>{const m=C("a-tag"),E=C("a-tooltip"),g=C("a-menu-item"),O=C("a-popconfirm"),we=C("a-menu"),ge=C("a-dropdown"),Ce=C("a-textarea"),xe=C("a-modal"),he=C("a-card");return d(),b("div",Qe,[a(he,{title:c.title,class:"page-card"},q({default:o(()=>[S.value&&S.value.count&&S.value.total?(d(),b("div",qe,[A(v(S.value.total)+" رکورد یافت شد - ",1),l("span",Ge,v(S.value.count)+" رکورد غیر فعال",1)])):w("",!0),a(Me,{ref_key:"tbl",ref:h,model:c.model,"mobile-cards":"",onQuery:W},q({city:o(({record:t})=>[t.city&&t.city.title?(d(),b("div",Je,v(t.city.title),1)):(d(),b("div",We,"-"))]),sts:o(({record:t})=>[a(m,{color:t.sts===1?"green":"red"},{default:o(()=>[A(v(t.sts_str),1)]),_:2},1032,["color"])]),active:o(({record:t})=>[a(m,{color:t.active===1?"green":"red"},{default:o(()=>[A(v(t.active===1?"فعال":"غیر فعال"),1)]),_:2},1032,["color"])]),opt:o(({record:t})=>[l("div",Ke,[a(ge,null,{overlay:o(()=>[a(we,{onClick:i=>ne(i,t.id)},{default:o(()=>[s("persons.list.client.omde.edit")?(d(),p(g,{key:"1",onClick:i=>_e(t.id)},{default:o(()=>[l("div",tt,[a(y(je),{class:"cursor-pointer w-5 ml-1"}),n[5]||(n[5]=l("div",null,"ویرایش",-1))])]),_:1},8,["onClick"])):w("",!0),s("persons.list.client.omde.view")?(d(),p(g,{key:"2",onClick:i=>pe(t.id)},{default:o(()=>[l("div",nt,[a(y(Ie),{class:"cursor-pointer w-5 ml-1"}),n[6]||(n[6]=l("div",null,"مشاهده اطلاعات",-1))])]),_:1},8,["onClick"])):w("",!0),s("persons.list.client.omde.view.orders")?(d(),p(g,{key:"3",onClick:i=>ve(t)},{default:o(()=>[l("div",st,[a(y(Re),{class:"cursor-pointer w-5 ml-1"}),n[7]||(n[7]=l("div",null,"مشاهده سفارش",-1))])]),_:1},8,["onClick"])):w("",!0),s("persons.list.client.omde.view.documents")?(d(),p(g,{key:"4",onClick:i=>ye(t)},{default:o(()=>[l("div",ot,[a(y(De),{class:"cursor-pointer w-5 ml-1"}),n[8]||(n[8]=l("div",null,"سند های مالی",-1))])]),_:1},8,["onClick"])):w("",!0),s("persons.list.client.omde.able")?(d(),p(g,{key:"7"},{default:o(()=>[a(O,{"ok-text":"بله","cancel-text":"خیر",title:"آیا مطمئن هستید؟",onConfirm:i=>fe(t.id)},{default:o(()=>[l("div",it,[a(y(L),{class:"cursor-pointer w-5 ml-1"}),n[9]||(n[9]=l("div",null,"بایگانی کردن",-1))])]),_:1},8,["onConfirm"])]),_:2},1024)):w("",!0),a(g,{key:"8"},{default:o(()=>[a(O,{"ok-text":t.sts_verify_step_one===1?"تایید":"بله","cancel-text":t.sts_verify_step_one===1?"رد":"خیر",title:t.sts_verify_step_one===1?"وضعیت تایید اولیه مشتری به چه نحوی تغییر یابد؟":"آیا از تغییر وضعیت مشتری اطمینان دارید؟",onConfirm:i=>ae(t),onCancel:i=>le(t)},{default:o(()=>[l("div",at,[(d(),p(N(z(V(t))),{class:T(["cursor-pointer w-5 ml-1",R(V(t))])},null,8,["class"])),l("div",null,[l("div",null,v(se(t)),1),t.verificationStep==="REJECTED"?(d(),b("div",lt," رد شده"+v(t.verification_rejection_reason?`: ${t.verification_rejection_reason}`:""),1)):w("",!0)])])]),_:2},1032,["ok-text","cancel-text","title","onConfirm","onCancel"])]),_:2},1024),a(g,{disabled:t.sts_verify_step_one!==2,key:"9"},{default:o(()=>[a(O,{"ok-text":t.sts_verify_step_two===1?"تایید":"بله","cancel-text":t.sts_verify_step_two===1?"رد":"خیر",title:t.sts_verify_step_two===1?"وضعیت تایید سفارش مشتری به چه نحوی تغییر یابد؟":"آیا از تغییر وضعیت سفارش مشتری اطمینان دارید؟",onConfirm:i=>re(t),onCancel:i=>ce(t)},{default:o(()=>[l("div",rt,[(d(),p(N(z(P(t))),{class:T(["cursor-pointer w-5 ml-1",R(P(t))])},null,8,["class"])),l("div",null,v(oe(t)),1)])]),_:2},1032,["ok-text","cancel-text","title","onConfirm","onCancel"])]),_:2},1032,["disabled"]),s("persons.list.client.omde.able.order")?(d(),p(g,{disabled:t.sts_verify_step_one!==2,key:"5"},{default:o(()=>[a(O,{"ok-text":"بله","cancel-text":"خیر",title:"آیا مطمئن هستید؟",onConfirm:i=>de(t)},{default:o(()=>[l("div",ct,[(d(),p(N(t.sts===1?y(H):y(M)),{class:T(["cursor-pointer w-5 ml-1",t.sts===1?"text-success":"text-danger"])},null,8,["class"])),l("div",null,v(t.sts===1?"معلق کردن سفارش":"فعال کردن سفارش"),1)])]),_:2},1032,["onConfirm"])]),_:2},1032,["disabled"])):w("",!0),s("persons.list.client.omde.able")?(d(),p(g,{disabled:t.sts_verify_step_one!==2,key:"6"},{default:o(()=>[a(O,{"ok-text":"بله","cancel-text":"خیر",title:"آیا مطمئن هستید؟",onConfirm:i=>ue(t)},{default:o(()=>[l("div",ut,[(d(),p(N(t.sts===1?y(H):y(M)),{class:T(["cursor-pointer w-5 ml-1",t.active===1?"text-success":"text-danger"])},null,8,["class"])),l("div",null,v(t.active===1?"معلق کردن حساب کاربری":" فعال کردن حساب کاربری"),1)])]),_:2},1032,["onConfirm"])]),_:2},1032,["disabled"])):w("",!0)]),_:2},1032,["onClick"])]),default:o(()=>[l("div",et,[a(y(Te)),a(y(ze),{class:"cursor-pointer w-5 ml-1"})])]),_:2},1024)])]),_:2},[c.showAddButton?{name:"add",fn:o(()=>[a(Le,{rid:"persons.create.client","add-label":"افزودن مشتری عمده",onAdd:me})]),key:"0"}:void 0,Ne(Z,t=>({name:t.slot,fn:o(({record:i})=>[i[t.field]===null||i[t.field]===void 0?(d(),b("span",Ze,"—")):(d(),p(E,{key:1,title:i.acc_at?`به‌روزرسانی: ${te(i.acc_at)}`:void 0},{default:o(()=>[l("span",{class:T(K(i[t.field]))},v(ee(i[t.field],t.places)),3)]),_:2},1032,["title"]))])}))]),1032,["model"]),a(xe,{open:k.value.open,title:"رد مدارک مشتری","ok-text":"ثبت رد","cancel-text":"انصراف","ok-button-props":{danger:!0},"confirm-loading":k.value.saving,onOk:ie,onCancel:n[2]||(n[2]=t=>k.value.open=!1)},{default:o(()=>[n[10]||(n[10]=l("p",null,"دلیل رد (اختیاری) — در پرونده‌ی مشتری ثبت می‌شود.",-1)),a(Ce,{value:k.value.reason,"onUpdate:value":n[1]||(n[1]=t=>k.value.reason=t),rows:3,maxlength:500,placeholder:"مثلاً: تصویر کارت ملی خوانا نیست"},null,8,["value"])]),_:1},8,["open","confirm-loading"]),c.showAddButton?(d(),p(Pe,{key:D.value??"new","as-modal":"",open:I.value,id:D.value,"onUpdate:open":n[3]||(n[3]=t=>I.value=t),onSuccess:n[4]||(n[4]=t=>{var i;return(i=h.value)==null?void 0:i.fetch()})},null,8,["open","id"])):w("",!0)]),_:2},[c.accountingSync?{name:"extra",fn:o(()=>[a(Ve,{endpoint:"admin/customers-omde/accounting-sync",onDone:n[0]||(n[0]=t=>{var i;return(i=h.value)==null?void 0:i.fetch()})})]),key:"0"}:void 0]),1032,["title"])])}}}),xt=Ae(dt,[["__scopeId","data-v-287c42bd"]]);export{Xe as O,xt as a,Ct as b}; +import{m as ke}from"./index-CPTngTRs.js";import{c as a,I as Se,u as J,d as be,x as Oe,y as $,z as $e,b,ak as q,w as o,r as C,o as d,f as A,t as v,p as l,i as w,h as y,Z as Te,a as p,E as je,Q as Ie,S as De,q as T,g as N,W as H,e as Ne,m as j,al as Be,G as x,l as Ee,_ as Ae}from"./index-CuIWfDbM.js";import{a as He,b as r,X as Me}from"./model-D_9omyEY.js";import{_ as Le}from"./ListPageHeader.vue_vue_type_script_setup_true_lang-ReVXBl8h.js";import{_ as Ve}from"./AccountingSyncButton.vue_vue_type_script_setup_true_lang-BgmQz3-B.js";import{_ as Pe}from"./bulkCustomer.vue_vue_type_script_setup_true_lang-DEtGbCJP.js";import{S as ze}from"./SettingOutlined-BehgjsnT.js";import{U as Re,S as M}from"./UnorderedListOutlined-DOoZELHj.js";var Ue={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M624 706.3h-74.1V464c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v242.3H400c-6.7 0-10.4 7.7-6.3 12.9l112 141.7a8 8 0 0012.6 0l112-141.7c4.1-5.2.4-12.9-6.3-12.9z"}},{tag:"path",attrs:{d:"M811.4 366.7C765.6 245.9 648.9 160 512.2 160S258.8 245.8 213 366.6C127.3 389.1 64 467.2 64 560c0 110.5 89.5 200 199.9 200H304c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8h-40.1c-33.7 0-65.4-13.4-89-37.7-23.5-24.2-36-56.8-34.9-90.6.9-26.4 9.9-51.2 26.2-72.1 16.7-21.3 40.1-36.8 66.1-43.7l37.9-9.9 13.9-36.6c8.6-22.8 20.6-44.1 35.7-63.4a245.6 245.6 0 0152.4-49.9c41.1-28.9 89.5-44.2 140-44.2s98.9 15.3 140 44.2c19.9 14 37.5 30.8 52.4 49.9 15.1 19.3 27.1 40.7 35.7 63.4l13.8 36.5 37.8 10C846.1 454.5 884 503.8 884 560c0 33.1-12.9 64.3-36.3 87.7a123.07 123.07 0 01-87.6 36.3H720c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h40.1C870.5 760 960 670.5 960 560c0-92.7-63.1-170.7-148.6-193.3z"}}]},name:"cloud-download",theme:"outlined"};function G(c){for(var u=1;u_.key==="acc_remain"))return;const f=c.cols.findIndex(_=>_.key==="rial_remain");for(const _ of c.cols)_.key==="remain"&&(_.title="بدهی داخل اپ (گرم)"),_.key==="rial_remain"&&(_.title="بدهی داخل اپ (ریال)");c.cols.splice(f+1,0,new r("acc_remain",`مانده‌ی ${u} (گرم)`).filterNumber().renderSlot("acc_gold"),new r("acc_rial_remain",`مانده‌ی ${u} (ریال)`).filterNumber().renderSlot("acc_rial"))}const Qe={id:"page-user-list"},qe={key:0,class:"list-count"},Ge={class:"text-danger"},Je={key:0},We={key:1},Ze={key:0,class:"acc-none"},Ke={class:"flex"},et={class:"cursor-pointer flex items-center"},tt={class:"flex gap-2"},nt={class:"flex gap-2"},st={class:"flex gap-2"},ot={class:"flex gap-2"},it={class:"flex gap-2"},at={class:"flex gap-2"},lt={key:0,class:"text-danger text-xs"},rt={class:"flex gap-2"},ct={class:"flex gap-2"},ut={class:"flex gap-2"},dt=be({__name:"OmdeCustomerList",props:{title:{},model:{},showAddButton:{type:Boolean,default:!1},accountingSync:{type:Boolean,default:!1}},setup(c){const u=c,f=Ee(),_=J(),s=e=>!!_.hasPermission(e),h=j(null),I=j(!1),D=j(void 0),S=j(void 0);function W(e){const n=e;S.value={count:n&&n.count?n.count:void 0,total:n&&n.total?n.total:void 0}}const Z=[{slot:"acc_gold",field:"acc_remain",places:3},{slot:"acc_rial",field:"acc_rial_remain",places:0}],K=e=>Number(e)>0?"acc-debt":Number(e)<0?"acc-credit":"";function ee(e,n){const m=Number(e);return m?`${Math.abs(m).toLocaleString("fa-IR",{maximumFractionDigits:n})} ${m>0?"بدهکار":"بستانکار"}`:"۰"}const te=e=>ke(e).format("jYYYY/jMM/jDD HH:mm");Oe(async()=>{try{const{data:e}=await $.get("admin/accounting-status");e!=null&&e.connected&&e.provider&&Ye($e(u.model),e.provider)}catch{}});function ne(e,n){const m=String(e.key);return m==="5"||m==="6"||m==="7"||m==="8"||m==="9"}function se(e){switch(e.sts_verify_step_one){case 1:return"در انتظار تایید ورود مشتری";case 2:return"رد ورود مشتری";case 3:return"تایید ورود مشتری"}}function V(e){switch(e.sts_verify_step_one){case 1:return"HelpCircleIcon";case 2:return"SlashIcon";case 3:return"CheckIcon"}}function oe(e){switch(e.sts_verify_step_two){case 1:return"در انتظار فعال سازی";case 2:return"غیر فعال سازی";case 3:return"فعال سازی"}}function P(e){switch(e.sts_verify_step_two){case 1:return"HelpCircleIcon";case 2:return"SlashIcon";case 3:return"CheckIcon"}}function z(e){return e==="HelpCircleIcon"?Be:e==="CheckIcon"?H:M}function R(e){return e==="HelpCircleIcon"?"text-primary":e==="CheckIcon"?"text-success":"text-danger"}async function B(e,n){var m;try{await $.post("major/verify",e),x.info("تغییرات ثبت شد "),(m=h.value)==null||m.fetch()}catch{x.error(n)}}const U=e=>B({customer_id:e,sts_verify_step_one:2},"خطا در تغییر وضعیت اولیه مشتری"),F=e=>Q(e,"sts_verify_step_one"),X=e=>B({customer_id:e,sts_verify_step_two:2},"خطا در تغییر وضعیت سفارش مشتری"),Y=e=>Q(e,"sts_verify_step_two"),k=j({open:!1,saving:!1,id:"",step:"sts_verify_step_one",reason:""});function Q(e,n){k.value={open:!0,saving:!1,id:e,step:n,reason:""}}async function ie(){const e=k.value;e.saving=!0,await B({customer_id:e.id,[e.step]:3,reason:e.reason.trim()||null},e.step==="sts_verify_step_one"?"خطا در تغییر وضعیت اولیه مشتری":"خطا در تغییر وضعیت سفارش مشتری"),e.saving=!1,e.open=!1}function ae(e){return e.sts_verify_step_one===1?U(e.id):e.sts_verify_step_one===2?F(e.id):U(e.id)}function le(e){if(e.sts_verify_step_one===1)return F(e.id)}function re(e){return e.sts_verify_step_two===1?X(e.id):e.sts_verify_step_two===2?Y(e.id):X(e.id)}function ce(e){if(e.sts_verify_step_two===1)return Y(e.id)}async function ue(e){var n;try{await $.post("customer/toggle-active",{id:e.id}),x.info("تغییرات ثبت شد "),await((n=h.value)==null?void 0:n.fetch())}catch{x.error("خطا در تغییر وضعیت")}}async function de(e){var n;try{await $.post("customer/toggle-sts",{id:e.id,sts:e.sts}),x.info("تغییرات ثبت شد "),await((n=h.value)==null?void 0:n.fetch())}catch{x.error("خطا در تغییر وضعیت")}}async function fe(e){var n;try{await $.get(`major/archive/${e}`),x.info("تغییرات ثبت شد "),await((n=h.value)==null?void 0:n.fetch())}catch{x.error("خطا در بایگانی")}}function _e(e){u.showAddButton?(D.value=e,I.value=!0):f.push(`/bulkCustomer/edit/${e}`)}function me(){D.value=void 0,I.value=!0}function pe(e){f.push(`/bulkCustomer/view/${e}`)}function ve(e){f.push(`/bulkCustomer/view/${e.id}?tab=orders`)}function ye(e){f.push(`/bulkCustomer/view/${e.id}?tab=documents`)}return(e,n)=>{const m=C("a-tag"),E=C("a-tooltip"),g=C("a-menu-item"),O=C("a-popconfirm"),we=C("a-menu"),ge=C("a-dropdown"),Ce=C("a-textarea"),xe=C("a-modal"),he=C("a-card");return d(),b("div",Qe,[a(he,{title:c.title,class:"page-card"},q({default:o(()=>[S.value&&S.value.count&&S.value.total?(d(),b("div",qe,[A(v(S.value.total)+" رکورد یافت شد - ",1),l("span",Ge,v(S.value.count)+" رکورد غیر فعال",1)])):w("",!0),a(Me,{ref_key:"tbl",ref:h,model:c.model,"mobile-cards":"",onQuery:W},q({city:o(({record:t})=>[t.city&&t.city.title?(d(),b("div",Je,v(t.city.title),1)):(d(),b("div",We,"-"))]),sts:o(({record:t})=>[a(m,{color:t.sts===1?"green":"red"},{default:o(()=>[A(v(t.sts_str),1)]),_:2},1032,["color"])]),active:o(({record:t})=>[a(m,{color:t.active===1?"green":"red"},{default:o(()=>[A(v(t.active===1?"فعال":"غیر فعال"),1)]),_:2},1032,["color"])]),opt:o(({record:t})=>[l("div",Ke,[a(ge,null,{overlay:o(()=>[a(we,{onClick:i=>ne(i,t.id)},{default:o(()=>[s("persons.list.client.omde.edit")?(d(),p(g,{key:"1",onClick:i=>_e(t.id)},{default:o(()=>[l("div",tt,[a(y(je),{class:"cursor-pointer w-5 ml-1"}),n[5]||(n[5]=l("div",null,"ویرایش",-1))])]),_:1},8,["onClick"])):w("",!0),s("persons.list.client.omde.view")?(d(),p(g,{key:"2",onClick:i=>pe(t.id)},{default:o(()=>[l("div",nt,[a(y(Ie),{class:"cursor-pointer w-5 ml-1"}),n[6]||(n[6]=l("div",null,"مشاهده اطلاعات",-1))])]),_:1},8,["onClick"])):w("",!0),s("persons.list.client.omde.view.orders")?(d(),p(g,{key:"3",onClick:i=>ve(t)},{default:o(()=>[l("div",st,[a(y(Re),{class:"cursor-pointer w-5 ml-1"}),n[7]||(n[7]=l("div",null,"مشاهده سفارش",-1))])]),_:1},8,["onClick"])):w("",!0),s("persons.list.client.omde.view.documents")?(d(),p(g,{key:"4",onClick:i=>ye(t)},{default:o(()=>[l("div",ot,[a(y(De),{class:"cursor-pointer w-5 ml-1"}),n[8]||(n[8]=l("div",null,"سند های مالی",-1))])]),_:1},8,["onClick"])):w("",!0),s("persons.list.client.omde.able")?(d(),p(g,{key:"7"},{default:o(()=>[a(O,{"ok-text":"بله","cancel-text":"خیر",title:"آیا مطمئن هستید؟",onConfirm:i=>fe(t.id)},{default:o(()=>[l("div",it,[a(y(L),{class:"cursor-pointer w-5 ml-1"}),n[9]||(n[9]=l("div",null,"بایگانی کردن",-1))])]),_:1},8,["onConfirm"])]),_:2},1024)):w("",!0),a(g,{key:"8"},{default:o(()=>[a(O,{"ok-text":t.sts_verify_step_one===1?"تایید":"بله","cancel-text":t.sts_verify_step_one===1?"رد":"خیر",title:t.sts_verify_step_one===1?"وضعیت تایید اولیه مشتری به چه نحوی تغییر یابد؟":"آیا از تغییر وضعیت مشتری اطمینان دارید؟",onConfirm:i=>ae(t),onCancel:i=>le(t)},{default:o(()=>[l("div",at,[(d(),p(N(z(V(t))),{class:T(["cursor-pointer w-5 ml-1",R(V(t))])},null,8,["class"])),l("div",null,[l("div",null,v(se(t)),1),t.verificationStep==="REJECTED"?(d(),b("div",lt," رد شده"+v(t.verification_rejection_reason?`: ${t.verification_rejection_reason}`:""),1)):w("",!0)])])]),_:2},1032,["ok-text","cancel-text","title","onConfirm","onCancel"])]),_:2},1024),a(g,{disabled:t.sts_verify_step_one!==2,key:"9"},{default:o(()=>[a(O,{"ok-text":t.sts_verify_step_two===1?"تایید":"بله","cancel-text":t.sts_verify_step_two===1?"رد":"خیر",title:t.sts_verify_step_two===1?"وضعیت تایید سفارش مشتری به چه نحوی تغییر یابد؟":"آیا از تغییر وضعیت سفارش مشتری اطمینان دارید؟",onConfirm:i=>re(t),onCancel:i=>ce(t)},{default:o(()=>[l("div",rt,[(d(),p(N(z(P(t))),{class:T(["cursor-pointer w-5 ml-1",R(P(t))])},null,8,["class"])),l("div",null,v(oe(t)),1)])]),_:2},1032,["ok-text","cancel-text","title","onConfirm","onCancel"])]),_:2},1032,["disabled"]),s("persons.list.client.omde.able.order")?(d(),p(g,{disabled:t.sts_verify_step_one!==2,key:"5"},{default:o(()=>[a(O,{"ok-text":"بله","cancel-text":"خیر",title:"آیا مطمئن هستید؟",onConfirm:i=>de(t)},{default:o(()=>[l("div",ct,[(d(),p(N(t.sts===1?y(H):y(M)),{class:T(["cursor-pointer w-5 ml-1",t.sts===1?"text-success":"text-danger"])},null,8,["class"])),l("div",null,v(t.sts===1?"معلق کردن سفارش":"فعال کردن سفارش"),1)])]),_:2},1032,["onConfirm"])]),_:2},1032,["disabled"])):w("",!0),s("persons.list.client.omde.able")?(d(),p(g,{disabled:t.sts_verify_step_one!==2,key:"6"},{default:o(()=>[a(O,{"ok-text":"بله","cancel-text":"خیر",title:"آیا مطمئن هستید؟",onConfirm:i=>ue(t)},{default:o(()=>[l("div",ut,[(d(),p(N(t.sts===1?y(H):y(M)),{class:T(["cursor-pointer w-5 ml-1",t.active===1?"text-success":"text-danger"])},null,8,["class"])),l("div",null,v(t.active===1?"معلق کردن حساب کاربری":" فعال کردن حساب کاربری"),1)])]),_:2},1032,["onConfirm"])]),_:2},1032,["disabled"])):w("",!0)]),_:2},1032,["onClick"])]),default:o(()=>[l("div",et,[a(y(Te)),a(y(ze),{class:"cursor-pointer w-5 ml-1"})])]),_:2},1024)])]),_:2},[c.showAddButton?{name:"add",fn:o(()=>[a(Le,{rid:"persons.create.client","add-label":"افزودن مشتری عمده",onAdd:me})]),key:"0"}:void 0,Ne(Z,t=>({name:t.slot,fn:o(({record:i})=>[i[t.field]===null||i[t.field]===void 0?(d(),b("span",Ze,"—")):(d(),p(E,{key:1,title:i.acc_at?`به‌روزرسانی: ${te(i.acc_at)}`:void 0},{default:o(()=>[l("span",{class:T(K(i[t.field]))},v(ee(i[t.field],t.places)),3)]),_:2},1032,["title"]))])}))]),1032,["model"]),a(xe,{open:k.value.open,title:"رد مدارک مشتری","ok-text":"ثبت رد","cancel-text":"انصراف","ok-button-props":{danger:!0},"confirm-loading":k.value.saving,onOk:ie,onCancel:n[2]||(n[2]=t=>k.value.open=!1)},{default:o(()=>[n[10]||(n[10]=l("p",null,"دلیل رد (اختیاری) — در پرونده‌ی مشتری ثبت می‌شود.",-1)),a(Ce,{value:k.value.reason,"onUpdate:value":n[1]||(n[1]=t=>k.value.reason=t),rows:3,maxlength:500,placeholder:"مثلاً: تصویر کارت ملی خوانا نیست"},null,8,["value"])]),_:1},8,["open","confirm-loading"]),c.showAddButton?(d(),p(Pe,{key:D.value??"new","as-modal":"",open:I.value,id:D.value,"onUpdate:open":n[3]||(n[3]=t=>I.value=t),onSuccess:n[4]||(n[4]=t=>{var i;return(i=h.value)==null?void 0:i.fetch()})},null,8,["open","id"])):w("",!0)]),_:2},[c.accountingSync?{name:"extra",fn:o(()=>[a(Ve,{endpoint:"admin/customers-omde/accounting-sync",onDone:n[0]||(n[0]=t=>{var i;return(i=h.value)==null?void 0:i.fetch()})})]),key:"0"}:void 0]),1032,["title"])])}}}),xt=Ae(dt,[["__scopeId","data-v-287c42bd"]]);export{Xe as O,xt as a,Ct as b}; diff --git a/apps/admin-panel/dist/assets/OmdeList-BPQg9z5E.js b/apps/admin-panel/dist/assets/OmdeList-BPQg9z5E.js new file mode 100644 index 0000000..af2f1de --- /dev/null +++ b/apps/admin-panel/dist/assets/OmdeList-BPQg9z5E.js @@ -0,0 +1 @@ +import{b as i,O as r,a as e}from"./OmdeCustomerList-hz8XVJlR.js";import{d as p,a as s,h as t,o as a}from"./index-CuIWfDbM.js";import"./index-CPTngTRs.js";import"./model-D_9omyEY.js";import"./filters-Cvt98RIq.js";import"./SettingOutlined-BehgjsnT.js";import"./ListPageHeader.vue_vue_type_script_setup_true_lang-ReVXBl8h.js";import"./AccountingSyncButton.vue_vue_type_script_setup_true_lang-BgmQz3-B.js";import"./bulkCustomer.vue_vue_type_script_setup_true_lang-DEtGbCJP.js";import"./select--BgT6D7O.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-DXuLuiBZ.js";import"./ImageUploadInput.vue_vue_type_script_setup_true_lang-Bb4hJ8Y2.js";import"./CityTreeSelect.vue_vue_type_script_setup_true_lang-Be--_CeP.js";import"./DateInput-CJzwI_r_.js";import"./UserOutlined-aZ-mQgwc.js";import"./ShopOutlined--nD1gJHu.js";import"./EnvironmentOutlined-BBvjB5-8.js";import"./PercentageOutlined-Cooaq8mh.js";import"./SafetyCertificateOutlined-DWQ69biy.js";import"./UnorderedListOutlined-DOoZELHj.js";const j=p({__name:"OmdeList",setup(n){const o=r.omde.title,m=i("omde");return(l,c)=>(a(),s(e,{title:t(o),model:t(m),"accounting-sync":""},null,8,["title","model"]))}});export{j as default}; diff --git a/apps/admin-panel/dist/assets/OmdeList-Bv_RjTnU.js b/apps/admin-panel/dist/assets/OmdeList-Bv_RjTnU.js deleted file mode 100644 index d1d5b41..0000000 --- a/apps/admin-panel/dist/assets/OmdeList-Bv_RjTnU.js +++ /dev/null @@ -1 +0,0 @@ -import{u as A,d as z,b as v,c as m,w as o,r as R,o as u,h as Z,f as y,t as S,H as ee,i as C,p as E,a as O,F as $,m as f,s as te,G as d,y as g,_ as ae}from"./index-C9T3Vski.js";import{a as re,b as c,X as ie}from"./model-B4TWAN58.js";import{_ as q}from"./TooltipBtn.vue_vue_type_script_setup_true_lang-4rxU9Kz6.js";import{O as se,a as oe}from"./OrderStatusTimeline-DQxbBFjr.js";import"./filters-D6Nzbpog.js";import"./index-m6pCHaEa.js";import"./SettingOutlined-BizkfqvN.js";import"./icons-1fD-iiAA.js";import"./UnorderedListOutlined-Bl0oFRyr.js";import"./PercentageOutlined-CxUloK5J.js";import"./UserAddOutlined-BlPGjUCi.js";import"./CreditCardOutlined-BxTC_oHD.js";import"./AppstoreOutlined-lwgIJvjh.js";import"./TeamOutlined-j5HKaunb.js";import"./UserOutlined-Csu4xHRr.js";import"./CameraOutlined-C6gLi8-9.js";import"./PictureOutlined-BBgbZIZs.js";import"./SafetyCertificateOutlined-DS5dQeR2.js";function ne(){const k=A();Object.keys(k.cityFilters).length<1&&k.getCities();const n=new re("admin/orders/wholesale/list","لیست سفارش های عمده");return n.add(new c("id","شماره").filterNumber()),n.add(new c("customer.name","مشتری").filterKey("customer.fullName").filterText()),n.add(new c("customer.mobile","موبایل").filterText().hidden().noSort()),n.add(new c("input","جمع کل سفارش").filterKey("totalGoldWeightGrams").filterText()),n.add(new c("discount","جمع کل تخفیف (درصد)").filterText()),n.add(new c("customer.city_id","شهر").hidden().renderSlot("city")),n.add(new c("items","تعداد آیتم ها").renderSlot("items_len").noSort()),n.add(new c("caj","تاریخ ثبت").filterKey("createdAt").filterDate().noSort()),n.add(new c("uaj","تاریخ ویرایش").hidden().filterKey("updatedAt").filterDate().noSort()),k.roles&&k.roles.includes("order.omde.state")&&n.add(new c("sts","وضعیت").renderSlot("sts_str").noSort().filterKey("status").filterSelect({0:"معلق",1:"ثبت سفارش",2:"تایید مدیر سیستم",3:"در حال تامین",4:"در حال آماده سازی ",5:"تحویل مسئول فروش",6:"تحویل مشتری "})),n.add(new c("confirmed","وضعیت تایید مشتری").renderSlot("confirmed_str").noSort().filterSelect({1:"تایید شده",2:"در انتظار تایید"})),n.add(new c("opt","عملیات").noSort().renderSlot("opt")),n}const le={id:"page-user-list"},de={key:0},ue={key:1},ce={class:"flex"},me={key:0},ve=["onClick"],fe={key:1},pe={class:"flex justify-between flex-wrap gap-2"},ye={class:"flex gap-2 flex-wrap"},we=z({__name:"OmdeList",setup(k){const n=A(),_=a=>!!n.hasPermission(a),B=ne(),w=f(null),r=f(void 0),x=f(""),I=f(!1),h=f(!1),p=f(!1),T=f(!1),P=f(""),V=f(1),N=te(()=>_("order.omde.view.edit"));function D(a){return n.cityFilters[a]??"-"}async function b(a){const{data:e}=await g.get(`admin/orders/${a}`);return e}async function U(a){r.value=await b(a.id),x.value=JSON.stringify(r.value),p.value=!1,I.value=!0}function G(){I.value=!1,p.value=!1}function K(){if(x.value)try{r.value=JSON.parse(x.value)}catch{}p.value=!1}function j(a){var e;if((e=r.value)!=null&&e.items){if(r.value.items.length<=1){d.warning("حداقل یک آیتم باید در سفارش بماند");return}r.value.items.splice(a,1)}}function F(a){const e=a.variantId.trim();if(!e){d.warning("یک تنوع انتخاب کنید");return}r.value&&(r.value.items.push({productVariantId:e,title:a.title??"آیتم جدید",variant_title:a.variantTitle??e,qty:a.qty||1,grams:a.grams??0,flatRialCharge:a.flatRialCharge??0,wagePercent:a.wagePercent,rash:a.grams??0,image:a.image??null}),P.value="",V.value=1)}async function M(){var e,i,s,l;if(!((e=r.value)!=null&&e.id))return;const a=(r.value.items??[]).filter(t=>t.productVariantId).map(t=>({productVariantId:t.productVariantId,quantity:Number(t.qty)||1,grams:Number(t.grams)||void 0,flatRialCharge:Number(t.flatRialCharge)||0,rashWeightGrams:t.rash!=null?Number(t.rash):void 0,wagePercent:t.wagePercent!=null?Number(t.wagePercent):void 0,discountPercent:t.discountPercent!=null?Number(t.discountPercent):void 0}));if(!a.length){d.error("حداقل یک آیتم لازم است");return}T.value=!0;try{await g.post("admin/orders/edit/propose",{orderId:r.value.id,items:a}),d.success("پیشنهاد ویرایش ثبت شد؛ پیامک برای مشتری ارسال می‌شود"),p.value=!1,r.value=await b(r.value.id),x.value=JSON.stringify(r.value),(i=w.value)==null||i.fetch()}catch(t){d.error(((l=(s=t==null?void 0:t.response)==null?void 0:s.data)==null?void 0:l.message)??"خطا در ثبت ویرایش")}finally{T.value=!1}}async function X(){var a,e,i,s;if((a=r.value)!=null&&a.id)try{await g.post("admin/orders/edit/force-apply",{orderId:r.value.id}),d.success("ویرایش به‌صورت اجباری اعمال شد"),r.value=await b(r.value.id),(e=w.value)==null||e.fetch()}catch(l){d.error(((s=(i=l==null?void 0:l.response)==null?void 0:i.data)==null?void 0:s.message)??"خطا در اعمال")}}async function J(){var a,e,i,s;if((a=r.value)!=null&&a.id)try{await g.post("admin/orders/edit/discard",{orderId:r.value.id}),d.success("پیشنهاد ویرایش لغو شد"),r.value=await b(r.value.id),(e=w.value)==null||e.fetch()}catch(l){d.error(((s=(i=l==null?void 0:l.response)==null?void 0:i.data)==null?void 0:s.message)??"خطا در لغو")}}async function W(a){r.value=await b(a.id),h.value=!0}async function H(a){var e,i;try{await g.post("order-sts/edit",{orderId:(e=r.value)==null?void 0:e.id,status:a.status,note:a.note}),h.value=!1,d.info("ویرایش موفق آمیز"),(i=w.value)==null||i.fetch()}catch{d.error("خطا در ویرایش")}}async function Q(a){var e,i,s,l;try{await g.post("order-sts/edit",{orderId:(e=r.value)==null?void 0:e.id,status:a.status,remove:!0}),h.value=!1,d.info("ویرایش موفق آمیز"),(i=w.value)==null||i.fetch()}catch(t){d.error(((l=(s=t==null?void 0:t.response)==null?void 0:s.data)==null?void 0:l.message)??"خطا در ویرایش")}}function Y(a){g.post("delete-order",{id:a.id}).then(()=>{var e;d.info("سفارش با موفقیت حذف گردید"),(e=w.value)==null||e.fetch()}).catch(e=>{var i,s;console.log(e),d.error(((s=(i=e==null?void 0:e.response)==null?void 0:i.data)==null?void 0:s.message)??"خطا در حذف")})}return(a,e)=>{const i=R("a-button"),s=R("a-modal"),l=R("a-card");return u(),v("div",le,[m(l,{title:"لیست سفارش های عمده",class:"page-card"},{default:o(()=>[m(ie,{ref_key:"tbl",ref:w,model:Z(B),"mobile-cards":""},{city:o(({text:t})=>[t?(u(),v("div",de,S(D(t)),1)):(u(),v("div",ue,"-"))]),opt:o(({record:t})=>[E("div",ce,[_("order.omde.view")?(u(),O(q,{key:0,"icon-class":"w-5 h-5 text-primary",class:"mr-3",icon:"ListIcon",title:"مشاهده سفارش",onClick:L=>U(t)},null,8,["onClick"])):C("",!0),_("order.omde.remove")?(u(),O(q,{key:1,"icon-class":"w-5 h-5 text-danger",class:"mr-3",icon:"TrashIcon",title:"حذف","pop-title":"آیا مطمئن به حدف رکورد مورد نظر هستید؟",onClick:L=>Y(t)},null,8,["onClick"])):C("",!0)])]),items_len:o(({text:t})=>[t?(u(),v("div",me,S(t.length),1)):C("",!0)]),sts_str:o(({record:t})=>[_("order.omde.state")?(u(),v("a",{key:0,href:"",onClick:ee(L=>W(t),["prevent"])},S(t.sts_str),9,ve)):(u(),v("span",fe,S(t.sts_str),1))]),confirmed_str:o(({record:t})=>[y(S(t.confirmed_str),1)]),_:1},8,["model"]),m(s,{open:h.value,"onUpdate:open":e[1]||(e[1]=t=>h.value=t),title:"وضعیت سفارش",width:"480px","wrap-class-name":"detail-modal"},{footer:o(()=>[m(i,{onClick:e[0]||(e[0]=t=>h.value=!1)},{default:o(()=>[...e[6]||(e[6]=[y("بستن",-1)])]),_:1})]),default:o(()=>[r.value?(u(),O(se,{key:0,activity:r.value.activity||[],"can-submit":_("order.omde.state.submit"),"can-remove":_("order.omde.state.remove"),onSubmit:H,onRemove:Q},null,8,["activity","can-submit","can-remove"])):C("",!0)]),_:1},8,["open"]),m(s,{open:I.value,"onUpdate:open":e[5]||(e[5]=t=>I.value=t),title:"مشاهده سفارش",width:p.value&&N.value?1120:760,"wrap-class-name":"detail-modal order-detail-modal","body-style":{maxHeight:"78vh",overflowY:"auto"}},{footer:o(()=>{var t;return[E("div",pe,[m(i,{onClick:G},{default:o(()=>[...e[7]||(e[7]=[y("بستن",-1)])]),_:1}),E("div",ye,[((t=r.value)==null?void 0:t.revisionStatus)==="AWAITING_CUSTOMER"&&N.value?(u(),v($,{key:0},[m(i,{onClick:J},{default:o(()=>[...e[8]||(e[8]=[y("لغو پیشنهاد",-1)])]),_:1}),m(i,{type:"primary",danger:"",onClick:X},{default:o(()=>[...e[9]||(e[9]=[y("اعمال اجباری",-1)])]),_:1})],64)):N.value?(u(),v($,{key:1},[p.value?(u(),v($,{key:1},[m(i,{onClick:K},{default:o(()=>[...e[11]||(e[11]=[y("انصراف",-1)])]),_:1}),m(i,{type:"primary",danger:"",loading:T.value,onClick:M},{default:o(()=>[...e[12]||(e[12]=[y(" ارسال برای تأیید مشتری ",-1)])]),_:1},8,["loading"])],64)):(u(),O(i,{key:0,type:"primary",onClick:e[4]||(e[4]=L=>p.value=!0)},{default:o(()=>[...e[10]||(e[10]=[y("شروع ویرایش",-1)])]),_:1}))],64)):C("",!0)])])]}),default:o(()=>[m(oe,{order:r.value,"edit-mode":p.value&&N.value,"add-variant-id":P.value,"onUpdate:addVariantId":e[2]||(e[2]=t=>P.value=t),"add-qty":V.value,"onUpdate:addQty":e[3]||(e[3]=t=>V.value=t),onRemoveLine:j,onAddLine:F},null,8,["order","edit-mode","add-variant-id","add-qty"])]),_:1},8,["open","width"])]),_:1})])}}}),qe=ae(we,[["__scopeId","data-v-6331c401"]]);export{qe as default}; diff --git a/apps/admin-panel/dist/assets/OmdeList-D6Hbka2-.css b/apps/admin-panel/dist/assets/OmdeList-D6Hbka2-.css deleted file mode 100644 index de8dad1..0000000 --- a/apps/admin-panel/dist/assets/OmdeList-D6Hbka2-.css +++ /dev/null @@ -1 +0,0 @@ -.flex-col[data-v-6331c401]{flex-direction:column}.flex-1[data-v-6331c401]{flex:1}.justify-between[data-v-6331c401]{justify-content:space-between}.mr-3[data-v-6331c401]{margin-left:.75rem} diff --git a/apps/admin-panel/dist/assets/OmdeList-DdMSdBOz.css b/apps/admin-panel/dist/assets/OmdeList-DdMSdBOz.css new file mode 100644 index 0000000..667c459 --- /dev/null +++ b/apps/admin-panel/dist/assets/OmdeList-DdMSdBOz.css @@ -0,0 +1 @@ +.flex-col[data-v-86056b29]{flex-direction:column}.flex-1[data-v-86056b29]{flex:1}.justify-between[data-v-86056b29]{justify-content:space-between}.mr-3[data-v-86056b29]{margin-left:.75rem}.line-edit[data-v-86056b29]{display:flex;flex-wrap:wrap;align-items:flex-end;gap:12px;padding:10px 12px;margin-bottom:8px;border:1px dashed var(--ant-color-border, #d9d9d9);border-radius:8px}.line-edit label[data-v-86056b29]{display:flex;flex-direction:column;gap:4px;font-size:12px} diff --git a/apps/admin-panel/dist/assets/OmdeList-DjtyuZa4.js b/apps/admin-panel/dist/assets/OmdeList-DjtyuZa4.js deleted file mode 100644 index 5cae8d4..0000000 --- a/apps/admin-panel/dist/assets/OmdeList-DjtyuZa4.js +++ /dev/null @@ -1 +0,0 @@ -import{b as i,O as r,a as e}from"./OmdeCustomerList-CUnRtzSY.js";import{d as p,a as s,h as t,o as a}from"./index-C9T3Vski.js";import"./index-m6pCHaEa.js";import"./model-B4TWAN58.js";import"./filters-D6Nzbpog.js";import"./SettingOutlined-BizkfqvN.js";import"./ListPageHeader.vue_vue_type_script_setup_true_lang-BDf2BWcO.js";import"./AccountingSyncButton.vue_vue_type_script_setup_true_lang-DQT4x2vG.js";import"./bulkCustomer.vue_vue_type_script_setup_true_lang-DMrGU5vL.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-Du4lPDHl.js";import"./ImageUploadInput.vue_vue_type_script_setup_true_lang-Bjo3vw78.js";import"./CityTreeSelect.vue_vue_type_script_setup_true_lang-82fzpZxR.js";import"./DateInput-CCBYpdHy.js";import"./UserOutlined-Csu4xHRr.js";import"./ShopOutlined-BBtTJF4e.js";import"./EnvironmentOutlined-D8YNH9-a.js";import"./PercentageOutlined-CxUloK5J.js";import"./SafetyCertificateOutlined-DS5dQeR2.js";import"./UnorderedListOutlined-Bl0oFRyr.js";const U=p({__name:"OmdeList",setup(n){const o=r.omde.title,m=i("omde");return(l,c)=>(a(),s(e,{title:t(o),model:t(m),"accounting-sync":""},null,8,["title","model"]))}});export{U as default}; diff --git a/apps/admin-panel/dist/assets/OmdeList-DwZ5G-mD.js b/apps/admin-panel/dist/assets/OmdeList-DwZ5G-mD.js new file mode 100644 index 0000000..9342e10 --- /dev/null +++ b/apps/admin-panel/dist/assets/OmdeList-DwZ5G-mD.js @@ -0,0 +1 @@ +import{u as q,d as z,b as v,c as m,w as n,r as L,o as c,h as Z,f as y,t as S,H as ee,i as C,p as E,a as O,F as K,m as f,s as te,G as d,y as g,_ as ae}from"./index-CuIWfDbM.js";import{a as re,b as u,X as ie}from"./model-D_9omyEY.js";import{_ as $}from"./TooltipBtn.vue_vue_type_script_setup_true_lang-D0mVo7Ou.js";import{O as se,a as oe}from"./OrderStatusTimeline-e__KlfQg.js";import"./filters-Cvt98RIq.js";import"./index-CPTngTRs.js";import"./SettingOutlined-BehgjsnT.js";import"./icons-BWdsnUVP.js";import"./UnorderedListOutlined-DOoZELHj.js";import"./PercentageOutlined-Cooaq8mh.js";import"./UserAddOutlined-BBmLFe8z.js";import"./CreditCardOutlined-BRF7XcYB.js";import"./AppstoreOutlined-6RRW3vIa.js";import"./TeamOutlined-CqxRZks7.js";import"./UserOutlined-aZ-mQgwc.js";import"./CameraOutlined-Dx8LoT1m.js";import"./PictureOutlined-CixWElmx.js";import"./SafetyCertificateOutlined-DWQ69biy.js";function ne(){const b=q();Object.keys(b.cityFilters).length<1&&b.getCities();const s=new re("admin/orders/wholesale/list","لیست سفارش های عمده");return s.add(new u("id","شماره").filterNumber()),s.add(new u("customer.name","مشتری").filterKey("customer.fullName").filterText()),s.add(new u("customer.mobile","موبایل").filterText().hidden().noSort()),s.add(new u("input","جمع کل سفارش").filterKey("totalGoldWeightGrams").filterText()),s.add(new u("wage","اجرت (گرم)").filterKey("wageWeightGrams").filterText().noSort()),s.add(new u("rial_input","اجرت ریالی (ریال)").filterKey("flatRialCharge").filterText()),s.add(new u("discount","جمع کل تخفیف (درصد)").noSort()),s.add(new u("customer.city_id","شهر").hidden().renderSlot("city")),s.add(new u("items","تعداد آیتم ها").renderSlot("items_len").noSort()),s.add(new u("caj","تاریخ ثبت").filterKey("createdAt").filterDate().noSort()),s.add(new u("uaj","تاریخ ویرایش").hidden().filterKey("updatedAt").filterDate().noSort()),b.roles&&b.roles.includes("order.omde.state")&&s.add(new u("sts","وضعیت").renderSlot("sts_str").noSort().filterKey("status").filterSelect({0:"معلق",1:"ثبت سفارش",2:"تایید مدیر سیستم",3:"در حال تامین",4:"در حال آماده سازی ",5:"تحویل مسئول فروش",6:"تحویل مشتری "})),s.add(new u("confirmed","وضعیت تایید مشتری").renderSlot("confirmed_str").noSort().filterSelect({1:"تایید شده",2:"در انتظار تایید"})),s.add(new u("opt","عملیات").noSort().renderSlot("opt")),s}const le={id:"page-user-list"},de={key:0},ue={key:1},ce={class:"flex"},me={key:0},ve=["onClick"],fe={key:1},pe={class:"flex justify-between flex-wrap gap-2"},ye={class:"flex gap-2 flex-wrap"},we=z({__name:"OmdeList",setup(b){const s=q(),_=a=>!!s.hasPermission(a),A=ne(),w=f(null),r=f(void 0),x=f(""),I=f(!1),h=f(!1),p=f(!1),T=f(!1),P=f(""),V=f(1),N=te(()=>_("order.omde.view.edit"));function B(a){return s.cityFilters[a]??"-"}async function k(a){const{data:e}=await g.get(`admin/orders/${a}`);return e}async function D(a){r.value=await k(a.id),x.value=JSON.stringify(r.value),p.value=!1,I.value=!0}function G(){I.value=!1,p.value=!1}function U(){if(x.value)try{r.value=JSON.parse(x.value)}catch{}p.value=!1}function j(a){var e;if((e=r.value)!=null&&e.items){if(r.value.items.length<=1){d.warning("حداقل یک آیتم باید در سفارش بماند");return}r.value.items.splice(a,1)}}function F(a){const e=a.variantId.trim();if(!e){d.warning("یک تنوع انتخاب کنید");return}r.value&&(r.value.items.push({productVariantId:e,title:a.title??"آیتم جدید",variant_title:a.variantTitle??e,qty:a.qty||1,grams:a.grams??0,flatRialCharge:a.flatRialCharge??0,wagePercent:a.wagePercent,rash:a.grams??0,image:a.image??null}),P.value="",V.value=1)}async function M(){var e,i,o,l;if(!((e=r.value)!=null&&e.id))return;const a=(r.value.items??[]).filter(t=>t.productVariantId).map(t=>({productVariantId:t.productVariantId,quantity:Number(t.qty)||1,grams:Number(t.grams)||void 0,flatRialCharge:Number(t.flatRialCharge)||0,rashWeightGrams:t.rash!=null?Number(t.rash):void 0,wagePercent:t.wagePercent!=null?Number(t.wagePercent):void 0,discountPercent:t.discountPercent!=null?Number(t.discountPercent):void 0}));if(!a.length){d.error("حداقل یک آیتم لازم است");return}T.value=!0;try{await g.post("admin/orders/edit/propose",{orderId:r.value.id,items:a}),d.success("پیشنهاد ویرایش ثبت شد؛ پیامک برای مشتری ارسال می‌شود"),p.value=!1,r.value=await k(r.value.id),x.value=JSON.stringify(r.value),(i=w.value)==null||i.fetch()}catch(t){d.error(((l=(o=t==null?void 0:t.response)==null?void 0:o.data)==null?void 0:l.message)??"خطا در ثبت ویرایش")}finally{T.value=!1}}async function W(){var a,e,i,o;if((a=r.value)!=null&&a.id)try{await g.post("admin/orders/edit/force-apply",{orderId:r.value.id}),d.success("ویرایش به‌صورت اجباری اعمال شد"),r.value=await k(r.value.id),(e=w.value)==null||e.fetch()}catch(l){d.error(((o=(i=l==null?void 0:l.response)==null?void 0:i.data)==null?void 0:o.message)??"خطا در اعمال")}}async function X(){var a,e,i,o;if((a=r.value)!=null&&a.id)try{await g.post("admin/orders/edit/discard",{orderId:r.value.id}),d.success("پیشنهاد ویرایش لغو شد"),r.value=await k(r.value.id),(e=w.value)==null||e.fetch()}catch(l){d.error(((o=(i=l==null?void 0:l.response)==null?void 0:i.data)==null?void 0:o.message)??"خطا در لغو")}}async function J(a){r.value=await k(a.id),h.value=!0}async function H(a){var e,i;try{await g.post("order-sts/edit",{orderId:(e=r.value)==null?void 0:e.id,status:a.status,note:a.note}),h.value=!1,d.info("ویرایش موفق آمیز"),(i=w.value)==null||i.fetch()}catch{d.error("خطا در ویرایش")}}async function Q(a){var e,i,o,l;try{await g.post("order-sts/edit",{orderId:(e=r.value)==null?void 0:e.id,status:a.status,remove:!0}),h.value=!1,d.info("ویرایش موفق آمیز"),(i=w.value)==null||i.fetch()}catch(t){d.error(((l=(o=t==null?void 0:t.response)==null?void 0:o.data)==null?void 0:l.message)??"خطا در ویرایش")}}function Y(a){g.post("delete-order",{id:a.id}).then(()=>{var e;d.info("سفارش با موفقیت حذف گردید"),(e=w.value)==null||e.fetch()}).catch(e=>{var i,o;console.log(e),d.error(((o=(i=e==null?void 0:e.response)==null?void 0:i.data)==null?void 0:o.message)??"خطا در حذف")})}return(a,e)=>{const i=L("a-button"),o=L("a-modal"),l=L("a-card");return c(),v("div",le,[m(l,{title:"لیست سفارش های عمده",class:"page-card"},{default:n(()=>[m(ie,{ref_key:"tbl",ref:w,model:Z(A),"mobile-cards":""},{city:n(({text:t})=>[t?(c(),v("div",de,S(B(t)),1)):(c(),v("div",ue,"-"))]),opt:n(({record:t})=>[E("div",ce,[_("order.omde.view")?(c(),O($,{key:0,"icon-class":"w-5 h-5 text-primary",class:"mr-3",icon:"ListIcon",title:"مشاهده سفارش",onClick:R=>D(t)},null,8,["onClick"])):C("",!0),_("order.omde.remove")?(c(),O($,{key:1,"icon-class":"w-5 h-5 text-danger",class:"mr-3",icon:"TrashIcon",title:"حذف","pop-title":"آیا مطمئن به حدف رکورد مورد نظر هستید؟",onClick:R=>Y(t)},null,8,["onClick"])):C("",!0)])]),items_len:n(({text:t})=>[t?(c(),v("div",me,S(t.length),1)):C("",!0)]),sts_str:n(({record:t})=>[_("order.omde.state")?(c(),v("a",{key:0,href:"",onClick:ee(R=>J(t),["prevent"])},S(t.sts_str),9,ve)):(c(),v("span",fe,S(t.sts_str),1))]),confirmed_str:n(({record:t})=>[y(S(t.confirmed_str),1)]),_:1},8,["model"]),m(o,{open:h.value,"onUpdate:open":e[1]||(e[1]=t=>h.value=t),title:"وضعیت سفارش",width:"480px","wrap-class-name":"detail-modal"},{footer:n(()=>[m(i,{onClick:e[0]||(e[0]=t=>h.value=!1)},{default:n(()=>[...e[6]||(e[6]=[y("بستن",-1)])]),_:1})]),default:n(()=>[r.value?(c(),O(se,{key:0,activity:r.value.activity||[],"can-submit":_("order.omde.state.submit"),"can-remove":_("order.omde.state.remove"),onSubmit:H,onRemove:Q},null,8,["activity","can-submit","can-remove"])):C("",!0)]),_:1},8,["open"]),m(o,{open:I.value,"onUpdate:open":e[5]||(e[5]=t=>I.value=t),title:"مشاهده سفارش",width:p.value&&N.value?1120:760,"wrap-class-name":"detail-modal order-detail-modal","body-style":{maxHeight:"78vh",overflowY:"auto"}},{footer:n(()=>{var t;return[E("div",pe,[m(i,{onClick:G},{default:n(()=>[...e[7]||(e[7]=[y("بستن",-1)])]),_:1}),E("div",ye,[((t=r.value)==null?void 0:t.revisionStatus)==="AWAITING_CUSTOMER"&&N.value?(c(),v(K,{key:0},[m(i,{onClick:X},{default:n(()=>[...e[8]||(e[8]=[y("لغو پیشنهاد",-1)])]),_:1}),m(i,{type:"primary",danger:"",onClick:W},{default:n(()=>[...e[9]||(e[9]=[y("اعمال اجباری",-1)])]),_:1})],64)):N.value?(c(),v(K,{key:1},[p.value?(c(),v(K,{key:1},[m(i,{onClick:U},{default:n(()=>[...e[11]||(e[11]=[y("انصراف",-1)])]),_:1}),m(i,{type:"primary",danger:"",loading:T.value,onClick:M},{default:n(()=>[...e[12]||(e[12]=[y(" ارسال برای تأیید مشتری ",-1)])]),_:1},8,["loading"])],64)):(c(),O(i,{key:0,type:"primary",onClick:e[4]||(e[4]=R=>p.value=!0)},{default:n(()=>[...e[10]||(e[10]=[y("شروع ویرایش",-1)])]),_:1}))],64)):C("",!0)])])]}),default:n(()=>[m(oe,{order:r.value,"edit-mode":p.value&&N.value,"add-variant-id":P.value,"onUpdate:addVariantId":e[2]||(e[2]=t=>P.value=t),"add-qty":V.value,"onUpdate:addQty":e[3]||(e[3]=t=>V.value=t),onRemoveLine:j,onAddLine:F},null,8,["order","edit-mode","add-variant-id","add-qty"])]),_:1},8,["open","width"])]),_:1})])}}}),$e=ae(we,[["__scopeId","data-v-86056b29"]]);export{$e as default}; diff --git a/apps/admin-panel/dist/assets/OmdeNonVerifiedList-Cz-xbvxD.js b/apps/admin-panel/dist/assets/OmdeNonVerifiedList-Cz-xbvxD.js new file mode 100644 index 0000000..12ee00a --- /dev/null +++ b/apps/admin-panel/dist/assets/OmdeNonVerifiedList-Cz-xbvxD.js @@ -0,0 +1 @@ +import{b as r,O as e,a as m}from"./OmdeCustomerList-hz8XVJlR.js";import{d as p,a as n,h as t,o as s}from"./index-CuIWfDbM.js";import"./index-CPTngTRs.js";import"./model-D_9omyEY.js";import"./filters-Cvt98RIq.js";import"./SettingOutlined-BehgjsnT.js";import"./ListPageHeader.vue_vue_type_script_setup_true_lang-ReVXBl8h.js";import"./AccountingSyncButton.vue_vue_type_script_setup_true_lang-BgmQz3-B.js";import"./bulkCustomer.vue_vue_type_script_setup_true_lang-DEtGbCJP.js";import"./select--BgT6D7O.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-DXuLuiBZ.js";import"./ImageUploadInput.vue_vue_type_script_setup_true_lang-Bb4hJ8Y2.js";import"./CityTreeSelect.vue_vue_type_script_setup_true_lang-Be--_CeP.js";import"./DateInput-CJzwI_r_.js";import"./UserOutlined-aZ-mQgwc.js";import"./ShopOutlined--nD1gJHu.js";import"./EnvironmentOutlined-BBvjB5-8.js";import"./PercentageOutlined-Cooaq8mh.js";import"./SafetyCertificateOutlined-DWQ69biy.js";import"./UnorderedListOutlined-DOoZELHj.js";const g=p({__name:"OmdeNonVerifiedList",setup(a){const o=e.nonVerified.title,i=r("nonVerified");return(d,l)=>(s(),n(m,{title:t(o),model:t(i)},null,8,["title","model"]))}});export{g as default}; diff --git a/apps/admin-panel/dist/assets/OmdeNonVerifiedList-D3F2qm6p.js b/apps/admin-panel/dist/assets/OmdeNonVerifiedList-D3F2qm6p.js deleted file mode 100644 index 5c75f23..0000000 --- a/apps/admin-panel/dist/assets/OmdeNonVerifiedList-D3F2qm6p.js +++ /dev/null @@ -1 +0,0 @@ -import{b as r,O as e,a as m}from"./OmdeCustomerList-CUnRtzSY.js";import{d as p,a as n,h as t,o as s}from"./index-C9T3Vski.js";import"./index-m6pCHaEa.js";import"./model-B4TWAN58.js";import"./filters-D6Nzbpog.js";import"./SettingOutlined-BizkfqvN.js";import"./ListPageHeader.vue_vue_type_script_setup_true_lang-BDf2BWcO.js";import"./AccountingSyncButton.vue_vue_type_script_setup_true_lang-DQT4x2vG.js";import"./bulkCustomer.vue_vue_type_script_setup_true_lang-DMrGU5vL.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-Du4lPDHl.js";import"./ImageUploadInput.vue_vue_type_script_setup_true_lang-Bjo3vw78.js";import"./CityTreeSelect.vue_vue_type_script_setup_true_lang-82fzpZxR.js";import"./DateInput-CCBYpdHy.js";import"./UserOutlined-Csu4xHRr.js";import"./ShopOutlined-BBtTJF4e.js";import"./EnvironmentOutlined-D8YNH9-a.js";import"./PercentageOutlined-CxUloK5J.js";import"./SafetyCertificateOutlined-DS5dQeR2.js";import"./UnorderedListOutlined-Bl0oFRyr.js";const U=p({__name:"OmdeNonVerifiedList",setup(a){const o=e.nonVerified.title,i=r("nonVerified");return(d,l)=>(s(),n(m,{title:t(o),model:t(i)},null,8,["title","model"]))}});export{U as default}; diff --git a/apps/admin-panel/dist/assets/OrderStatusTimeline-DQxbBFjr.js b/apps/admin-panel/dist/assets/OrderStatusTimeline-e__KlfQg.js similarity index 98% rename from apps/admin-panel/dist/assets/OrderStatusTimeline-DQxbBFjr.js rename to apps/admin-panel/dist/assets/OrderStatusTimeline-e__KlfQg.js index 2eeba03..8fd059c 100644 --- a/apps/admin-panel/dist/assets/OrderStatusTimeline-DQxbBFjr.js +++ b/apps/admin-panel/dist/assets/OrderStatusTimeline-e__KlfQg.js @@ -1 +1 @@ -import{c as p,I as K,d as yt,m as R,n as F,o,b as l,q as T,a as P,i as f,p as a,t as v,w as g,f as b,F as z,e as H,s as w,G as q,r as C,h as D,z as At,y as ut,_ as gt,a0 as Nt,B as It,A as Y,g as _t,D as $t}from"./index-C9T3Vski.js";import{j as Rt,a as Tt}from"./filters-D6Nzbpog.js";import{P as vt}from"./PictureOutlined-BBgbZIZs.js";import{m as wt}from"./index-m6pCHaEa.js";import{G as Lt,I as Bt}from"./icons-1fD-iiAA.js";import{S as Ft}from"./SafetyCertificateOutlined-DS5dQeR2.js";var Vt={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M380 704h264c4.4 0 8-3.6 8-8v-84c0-4.4-3.6-8-8-8h-40c-4.4 0-8 3.6-8 8v36H428v-36c0-4.4-3.6-8-8-8h-40c-4.4 0-8 3.6-8 8v84c0 4.4 3.6 8 8 8zm340-123a40 40 0 1080 0 40 40 0 10-80 0zm239-167.6L935.3 372a8 8 0 00-10.9-2.9l-50.7 29.6-78.3-216.2a63.9 63.9 0 00-60.9-44.4H301.2c-34.7 0-65.5 22.4-76.2 55.5l-74.6 205.2-50.8-29.6a8 8 0 00-10.9 2.9L65 413.4c-2.2 3.8-.9 8.6 2.9 10.8l60.4 35.2-14.5 40c-1.2 3.2-1.8 6.6-1.8 10v348.2c0 15.7 11.8 28.4 26.3 28.4h67.6c12.3 0 23-9.3 25.6-22.3l7.7-37.7h545.6l7.7 37.7c2.7 13 13.3 22.3 25.6 22.3h67.6c14.5 0 26.3-12.7 26.3-28.4V509.4c0-3.4-.6-6.8-1.8-10l-14.5-40 60.3-35.2a8 8 0 003-10.8zM840 517v237H184V517l15.6-43h624.8l15.6 43zM292.7 218.1l.5-1.3.4-1.3c1.1-3.3 4.1-5.5 7.6-5.5h427.6l75.4 208H220l72.7-199.9zM224 581a40 40 0 1080 0 40 40 0 10-80 0z"}}]},name:"car",theme:"outlined"};function mt(n){for(var i=1;i{var t;return(((t=y.value)==null?void 0:t.variants_all)??[]).filter(m=>m.is_active!==!1)}),J=w(()=>E.value.trim()||d.value?"محصولی پیدا نشد":"برای شروع، محصول را جستجو کنید یا یک دسته انتخاب کنید");function G(e){const t=parseFloat(String(e));return Number.isFinite(t)?t%1===0?String(t):t.toFixed(3):String(e??"—")}function u(e){var t,m,$;return((t=e.thumb)==null?void 0:t.full)||(($=(m=e.images)==null?void 0:m[0])==null?void 0:$.url)||null}async function M(){try{const{data:e}=await ut.get("product/categories"),t=Array.isArray(e)?e:Array.isArray(e==null?void 0:e.rows)?e.rows:[];B.value=t.map(m=>({id:String(m.id),title:String(m.title??"").trim()})).filter(m=>m.id&&m.title)}catch(e){console.log(e),B.value=[]}}async function N(e=E.value){A.value=!0;try{const t=[{field:"isActive",op:"=",value:!0}];d.value&&t.push({field:"categoryId",op:"=",value:d.value});const{data:m}=await ut.post("products",{page:1,limit:24,search:String(e??"").trim()||void 0,filters:t});O.value=Array.isArray(m==null?void 0:m.rows)?m.rows:[]}catch(t){console.log(t),q.error("دریافت لیست محصولات ممکن نشد")}finally{A.value=!1}}function bt(e){E.value=e,N(e)}function at(e){d.value!==e&&(d.value=e,X(),N())}function kt(e){y.value=e,c.value="";const t=(e.variants_all??[]).find(m=>m.is_active!==!1);t&&(c.value=String(t.id))}function X(){y.value=null,c.value=""}function st(e,t){return String(e.id||e.productVariantId||t)}function nt(e){k[e]=!0}F(()=>{var e;return(e=r.order)==null?void 0:e.id},()=>{for(const e of Object.keys(k))delete k[e]}),F(()=>r.addVariantId,e=>{e!==void 0&&(c.value=e)}),F(()=>r.addQty,e=>{e!==void 0&&(L.value=e)}),F(c,e=>_("update:addVariantId",e)),F(L,e=>_("update:addQty",Number(e)||1)),F(E,e=>{h&&clearTimeout(h),h=setTimeout(()=>{N(e)},320)}),F(()=>r.editMode,e=>{e?(M(),N("")):(X(),O.value=[],E.value="",d.value=null,B.value=[])});const ot=w(()=>{var m;const e=(m=r.order)==null?void 0:m.customer;return e&&(`${e.fname??""} ${e.lname??""}`.trim()||e.fullName)||"—"}),Ct=w(()=>{const e=ot.value.split(/\s+/).filter(Boolean);return!e.length||e[0]==="—"?"؟":e.slice(0,2).map(t=>t[0]).join("")});function Ot(e){return e?Rt(e):"—"}function lt(e){const t=parseFloat(String(e));return Number.isFinite(t)?t%1===0?String(t):t.toFixed(2):String(e??"—")}function Et(){var $;const e=String(c.value??"").trim();if(!e){q.warning("یک تنوع انتخاب کنید");return}if(!y.value){q.warning("اول یک محصول انتخاب کنید");return}const t=U.value.find(V=>String(V.id)===e),m=(($=t==null?void 0:t.image)==null?void 0:$.url)||u(y.value);_("add-line",{variantId:e,qty:Number(L.value)||1,title:y.value.title??"محصول",variantTitle:(t==null?void 0:t.title)??e,grams:(t==null?void 0:t.grams)!=null?Number(t.grams):0,wagePercent:(t==null?void 0:t.percentage_pay)!=null?Number(t.percentage_pay):void 0,flatRialCharge:(t==null?void 0:t.rial_pay)!=null?Number(t.rial_pay):0,image:m??null}),q.success("آیتم به سفارش اضافه شد")}return(e,t)=>{var rt,it,ct;const m=C("a-alert"),$=C("a-tag"),V=C("a-input-number"),j=C("a-form-item"),Z=C("a-button"),Q=C("a-empty"),St=C("a-input-search"),Dt=C("a-spin");return n.order?(o(),l("div",{key:0,class:T(["od",{"od--edit":n.editMode}])},[n.order.revisionStatus==="AWAITING_CUSTOMER"?(o(),P(m,{key:0,type:"warning","show-icon":"",class:"od__alert",message:n.order.confirmed_str||"در انتظار تأیید مشتری",description:"تا تأیید مشتری (یا اعمال/لغو توسط شما) ارقام فعلی سفارش تغییر نمی‌کند. پیامک برای مشتری ارسال شده است."},null,8,["message"])):f("",!0),a("section",Ht,[a("div",Gt,[a("div",Qt,v(Ct.value),1),a("div",qt,[a("h3",Yt,v(ot.value),1),(rt=n.order.customer)!=null&&rt.phone?(o(),l("a",{key:0,class:"od__phone",href:`tel:${n.order.customer.phone}`},v(n.order.customer.phone),9,Wt)):f("",!0)])]),a("div",Jt,[a("div",Xt,[t[3]||(t[3]=a("span",{class:"od__metaLabel"},"تاریخ ثبت",-1)),a("span",Zt,v(Ot(n.order.caj)),1)]),a("div",Kt,[t[4]||(t[4]=a("span",{class:"od__metaLabel"},"وضعیت",-1)),p($,{color:"blue"},{default:g(()=>[b(v(n.order.sts_str),1)]),_:1})]),n.order.orderNumber?(o(),l("div",te,[t[5]||(t[5]=a("span",{class:"od__metaLabel"},"شماره سفارش",-1)),a("span",ee,v(n.order.orderNumber),1)])):f("",!0)])]),a("div",ae,[a("section",se,[a("header",ne,[t[6]||(t[6]=a("h4",{class:"od__itemsTitle"},"آیتم‌های سفارش",-1)),a("span",oe,v(((it=n.order.items)==null?void 0:it.length)||0)+" قلم",1)]),(ct=n.order.items)!=null&&ct.length?(o(),l("ul",le,[(o(!0),l(z,null,H(n.order.items,(s,I)=>(o(),l("li",{key:s.id||I,class:"od__row"},[a("div",re,[s.image&&!k[st(s,I)]?(o(),l("img",{key:0,src:s.image,alt:s.title||"",onError:S=>nt(st(s,I))},null,40,ie)):(o(),l("div",ce,[p(D(vt))]))]),a("div",de,[a("div",ue,[a("h5",_e,v(s.title||"محصول"),1),s.variant_title?(o(),l("span",ve,v(s.variant_title),1)):f("",!0)]),n.editMode?(o(),l("div",ge,[p(j,{label:"وزن (گرم)",class:"od__field"},{default:g(()=>[p(V,{value:s.grams,"onUpdate:value":S=>s.grams=S,min:0,class:"w-full"},null,8,["value","onUpdate:value"])]),_:2},1024),p(j,{label:"تعداد",class:"od__field"},{default:g(()=>[p(V,{value:s.qty,"onUpdate:value":S=>s.qty=S,min:1,class:"w-full"},null,8,["value","onUpdate:value"])]),_:2},1024),p(j,{label:"اجرت ریالی",class:"od__field"},{default:g(()=>[p(V,{value:s.flatRialCharge,"onUpdate:value":S=>s.flatRialCharge=S,min:0,class:"w-full"},null,8,["value","onUpdate:value"])]),_:2},1024),p(Z,{size:"small",danger:"",class:"od__remove",onClick:S=>_("remove-line",I)},{default:g(()=>[...t[10]||(t[10]=[b(" حذف آیتم ",-1)])]),_:1},8,["onClick"])])):(o(),l("div",me,[a("span",pe,[a("b",null,v(s.qty),1),t[7]||(t[7]=b(" عدد ",-1))]),a("span",fe,[a("b",null,v(G(s.grams)),1),t[8]||(t[8]=b(" گرم ",-1))]),s.wagePercent!=null?(o(),l("span",he,[a("b",null,v(lt(s.wagePercent)),1),t[9]||(t[9]=b(" ٪ اجرت ",-1))])):f("",!0),Number(s.flatRialCharge)>0?(o(),l("span",ye,[a("b",null,v(D(Tt)(s.flatRialCharge)),1)])):f("",!0)]))])]))),128))])):(o(),P(Q,{key:1,description:"آیتمی در این سفارش نیست"}))]),n.editMode?(o(),l("aside",be,[a("header",ke,[t[11]||(t[11]=a("div",null,[a("h4",{class:"od__pickerTitle"},"افزودن به سفارش"),a("p",{class:"od__pickerHint"},"اول محصول را پیدا کنید، بعد تنوع را انتخاب کنید")],-1)),a("ol",Ce,[a("li",{class:T({"is-active":!y.value,"is-done":!!y.value})},"۱ محصول",2),a("li",{class:T({"is-active":!!y.value})},"۲ تنوع",2)])]),p(j,{label:"جستجوی محصول",class:"od__field"},{default:g(()=>[p(St,{value:E.value,"onUpdate:value":t[0]||(t[0]=s=>E.value=s),"allow-clear":"",placeholder:"نام یا کد محصول…",loading:A.value,"enter-button":"جستجو",onSearch:bt},null,8,["value","loading"])]),_:1}),B.value.length?(o(),l("div",Oe,[a("button",{type:"button",class:T(["od__catChip",{"is-active":!d.value}]),role:"tab","aria-selected":!d.value,onClick:t[1]||(t[1]=s=>at(null))}," همه ",10,Ee),(o(!0),l(z,null,H(B.value,s=>(o(),l("button",{key:s.id,type:"button",class:T(["od__catChip",{"is-active":d.value===s.id}]),role:"tab","aria-selected":d.value===s.id,onClick:I=>at(s.id)},v(s.title),11,Se))),128))])):f("",!0),p(Dt,{spinning:A.value},{default:g(()=>[O.value.length?(o(),l("div",De,[(o(!0),l(z,null,H(O.value,s=>{var I,S,dt;return o(),l("button",{key:s.id,type:"button",class:T(["od__productCard",{"is-selected":((I=y.value)==null?void 0:I.id)===s.id}]),role:"option","aria-selected":((S=y.value)==null?void 0:S.id)===s.id,onClick:Pt=>kt(s)},[a("div",Ae,[u(s)&&!k[`p-${s.id}`]?(o(),l("img",{key:0,src:u(s),alt:s.title,onError:Pt=>nt(`p-${s.id}`)},null,40,Ne)):(o(),l("div",Ie,[p(D(vt))]))]),a("div",$e,[a("span",Re,v(s.title),1),a("span",Te,[b(v(s.variants_count??((dt=s.variants_all)==null?void 0:dt.length)??0)+" تنوع ",1),s.product_code?(o(),l(z,{key:0},[b(" · "+v(s.product_code),1)],64)):f("",!0)])])],10,Pe)}),128))])):A.value?f("",!0):(o(),P(Q,{key:1,class:"od__pickerEmpty",description:J.value},null,8,["description"]))]),_:1},8,["spinning"]),y.value?(o(),l("div",we,[a("div",Le,[a("h5",Be,"تنوع‌های «"+v(y.value.title)+"»",1),p(Z,{type:"link",size:"small",onClick:X},{default:g(()=>[...t[12]||(t[12]=[b("عوض کردن محصول",-1)])]),_:1})]),U.value.length?(o(),l("div",Fe,[(o(!0),l(z,null,H(U.value,s=>(o(),l("button",{key:s.id,type:"button",class:T(["od__variantCard",{"is-selected":c.value===String(s.id)}]),role:"option","aria-selected":c.value===String(s.id),onClick:I=>c.value=String(s.id)},[a("div",ze,[a("span",Ue,v(s.title||"تنوع"),1),c.value===String(s.id)?(o(),P($,{key:0,color:"blue"},{default:g(()=>[...t[13]||(t[13]=[b("انتخاب‌شده",-1)])]),_:1})):f("",!0)]),a("div",Me,[a("span",null,[a("b",null,v(G(s.grams)),1),t[14]||(t[14]=b(" گرم",-1))]),s.percentage_pay!=null?(o(),l("span",je,[a("b",null,v(lt(s.percentage_pay)),1),t[15]||(t[15]=b("٪ اجرت",-1))])):f("",!0),s.sku?(o(),l("span",xe,v(s.sku),1)):f("",!0)])],10,Ve))),128))])):(o(),P(Q,{key:1,description:"این محصول تنوع فعالی ندارد"})),a("div",He,[p(j,{label:"تعداد",class:"od__field od__addQty"},{default:g(()=>[p(V,{value:L.value,"onUpdate:value":t[2]||(t[2]=s=>L.value=s),min:1,class:"w-full"},null,8,["value"])]),_:1}),p(Z,{type:"primary",class:"od__addBtn",disabled:!c.value,onClick:Et},{default:g(()=>[...t[16]||(t[16]=[b(" افزودن به سفارش ",-1)])]),_:1},8,["disabled"])])])):f("",!0)])):f("",!0)])],2)):(o(),P(Q,{key:1}))}}}),ya=gt(Ge,[["__scopeId","data-v-4545ac5a"]]),Qe={SUSPENDED:"معلق",PLACED:"ثبت سفارش",ADMIN_APPROVED:"تایید مدیر",SOURCING:"در حال تامین",PREPARING:"آماده‌سازی",DELIVERED_TO_AGENT:"تحویل نماینده",DELIVERED_TO_CUSTOMER:"تحویل مشتری",CANCELLED:"لغو شده"},qe={SUSPENDED:{font:"#A16207",background:"#A162071F"},PLACED:{font:"#3B82F6",background:"#3B82F61F"},ADMIN_APPROVED:{font:"#6366F1",background:"#6366F11F"},SOURCING:{font:"#EAB308",background:"#EAB3081F"},PREPARING:{font:"#F97316",background:"#F973161F"},DELIVERED_TO_AGENT:{font:"#06B6D4",background:"#06B6D41F"},DELIVERED_TO_CUSTOMER:{font:"#22C55E",background:"#22C55E1F"},CANCELLED:{font:"#DC2626",background:"#DC26261F"}},Ye={SUSPENDED:et,PLACED:W,ADMIN_APPROVED:Ft,SOURCING:Bt,PREPARING:Lt,DELIVERED_TO_AGENT:tt,DELIVERED_TO_CUSTOMER:It,CANCELLED:Nt},We={font:"#64748B",background:"#64748B1F"};function x(n){return qe[n]??We}function Je(n){return Qe[n]??n}function ht(n){return Ye[n]??W}const Xe={key:0,class:"ost"},Ze={class:"ost__banner"},Ke={class:"ost__rail"},ta={class:"ost__axis","aria-hidden":"true"},ea={class:"ost__main"},aa={class:"ost__row"},sa={class:"ost__copy"},na={class:"ost__status"},oa={key:0,class:"ost__note"},la={class:"ost__meta"},ra={key:0,class:"ost__when",dir:"ltr"},ia={key:1,class:"ost__when is-wait"},ca={key:2,class:"ost__when is-wait"},da={key:0,class:"ost__submit"},ua=yt({__name:"OrderStatusTimeline",props:{activity:{},canSubmit:{type:Boolean},canRemove:{type:Boolean}},emits:["submit","remove"],setup(n,{emit:i}){const r=n,_=i,c=w(()=>r.activity??[]),L=w(()=>{let d=-1;return c.value.forEach((h,k)=>{h.proceed&&(d=k)}),d}),A=w(()=>c.value.map((d,h)=>{let k="pending";return d.proceed&&(k=h===L.value?"current":"done"),{...d,state:k}})),O=w(()=>A.value.find(d=>d.state==="current")??null);function E(d){return Je(d.status)||d.title||d.status}function y(d){return wt(d).format("jYYYY/jMM/jDD - HH:mm")}function B(d){if(d.state==="pending")return;const h=x(d.status);return{color:h.font,borderColor:h.font}}return(d,h)=>{const k=C("a-button"),U=C("a-popconfirm"),J=C("a-input"),G=C("a-empty");return c.value.length?(o(),l("div",Xe,[a("header",Ze,[h[0]||(h[0]=a("span",{class:"ost__chip"},"وضعیت",-1)),h[1]||(h[1]=a("span",{class:"ost__dash","aria-hidden":"true"},null,-1)),O.value?(o(),l("span",{key:0,class:"ost__badge",style:Y({background:D(x)(O.value.status).background,color:D(x)(O.value.status).font})},[(o(),P(_t(D(ht)(O.value.status)))),b(" "+v(E(O.value)),1)],4)):f("",!0)]),a("ol",Ke,[(o(!0),l(z,null,H(A.value,(u,M)=>(o(),l("li",{key:u.status||M,class:T(["ost__node",[`is-${u.state}`]])},[a("div",ta,[u.state==="current"?(o(),l("span",{key:0,class:"ost__halo",style:Y({color:D(x)(u.status).font})},null,4)):f("",!0),a("span",{class:"ost__marker",style:Y(B(u))},[(o(),P(_t(D(ht)(u.status))))],4),M0?(o(),P(U,{key:3,"ok-text":"بله","cancel-text":"بی‌خیال",placement:"topLeft",onConfirm:N=>_("remove",u)},{title:g(()=>[...h[2]||(h[2]=[a("p",null,"آیا مطمئن به حذف وضعیت مورد نظر هستید ؟",-1)])]),default:g(()=>[p(k,{danger:"",ghost:"",size:"small",class:"ost__iconBtn","aria-label":"حذف وضعیت"},{icon:g(()=>[p(D($t))]),_:1})]),_:1},8,["onConfirm"])):f("",!0)])]),!u.proceed&&n.canSubmit?(o(),l("div",da,[p(J,{value:u.note,"onUpdate:value":N=>u.note=N,size:"small",placeholder:"یادداشت","allow-clear":"",onPressEnter:N=>_("submit",u)},null,8,["value","onUpdate:value","onPressEnter"]),p(k,{size:"small",type:"primary",onClick:N=>_("submit",u)},{default:g(()=>[...h[3]||(h[3]=[b("ثبت وضعیت",-1)])]),_:1},8,["onClick"])])):f("",!0)])],2))),128))])])):(o(),P(G,{key:1,description:"مسیری برای این سفارش ثبت نشده است."}))}}}),ga=gt(ua,[["__scopeId","data-v-73d1808b"]]);export{ga as O,ya as a}; +import{c as p,I as K,d as yt,m as R,n as F,o,b as l,q as T,a as P,i as f,p as a,t as v,w as g,f as b,F as z,e as H,s as w,G as q,r as C,h as D,z as At,y as ut,_ as gt,a0 as Nt,B as It,A as Y,g as _t,D as $t}from"./index-CuIWfDbM.js";import{j as Rt,a as Tt}from"./filters-Cvt98RIq.js";import{P as vt}from"./PictureOutlined-CixWElmx.js";import{m as wt}from"./index-CPTngTRs.js";import{G as Lt,I as Bt}from"./icons-BWdsnUVP.js";import{S as Ft}from"./SafetyCertificateOutlined-DWQ69biy.js";var Vt={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M380 704h264c4.4 0 8-3.6 8-8v-84c0-4.4-3.6-8-8-8h-40c-4.4 0-8 3.6-8 8v36H428v-36c0-4.4-3.6-8-8-8h-40c-4.4 0-8 3.6-8 8v84c0 4.4 3.6 8 8 8zm340-123a40 40 0 1080 0 40 40 0 10-80 0zm239-167.6L935.3 372a8 8 0 00-10.9-2.9l-50.7 29.6-78.3-216.2a63.9 63.9 0 00-60.9-44.4H301.2c-34.7 0-65.5 22.4-76.2 55.5l-74.6 205.2-50.8-29.6a8 8 0 00-10.9 2.9L65 413.4c-2.2 3.8-.9 8.6 2.9 10.8l60.4 35.2-14.5 40c-1.2 3.2-1.8 6.6-1.8 10v348.2c0 15.7 11.8 28.4 26.3 28.4h67.6c12.3 0 23-9.3 25.6-22.3l7.7-37.7h545.6l7.7 37.7c2.7 13 13.3 22.3 25.6 22.3h67.6c14.5 0 26.3-12.7 26.3-28.4V509.4c0-3.4-.6-6.8-1.8-10l-14.5-40 60.3-35.2a8 8 0 003-10.8zM840 517v237H184V517l15.6-43h624.8l15.6 43zM292.7 218.1l.5-1.3.4-1.3c1.1-3.3 4.1-5.5 7.6-5.5h427.6l75.4 208H220l72.7-199.9zM224 581a40 40 0 1080 0 40 40 0 10-80 0z"}}]},name:"car",theme:"outlined"};function mt(n){for(var i=1;i{var t;return(((t=y.value)==null?void 0:t.variants_all)??[]).filter(m=>m.is_active!==!1)}),J=w(()=>E.value.trim()||d.value?"محصولی پیدا نشد":"برای شروع، محصول را جستجو کنید یا یک دسته انتخاب کنید");function G(e){const t=parseFloat(String(e));return Number.isFinite(t)?t%1===0?String(t):t.toFixed(3):String(e??"—")}function u(e){var t,m,$;return((t=e.thumb)==null?void 0:t.full)||(($=(m=e.images)==null?void 0:m[0])==null?void 0:$.url)||null}async function M(){try{const{data:e}=await ut.get("product/categories"),t=Array.isArray(e)?e:Array.isArray(e==null?void 0:e.rows)?e.rows:[];B.value=t.map(m=>({id:String(m.id),title:String(m.title??"").trim()})).filter(m=>m.id&&m.title)}catch(e){console.log(e),B.value=[]}}async function N(e=E.value){A.value=!0;try{const t=[{field:"isActive",op:"=",value:!0}];d.value&&t.push({field:"categoryId",op:"=",value:d.value});const{data:m}=await ut.post("products",{page:1,limit:24,search:String(e??"").trim()||void 0,filters:t});O.value=Array.isArray(m==null?void 0:m.rows)?m.rows:[]}catch(t){console.log(t),q.error("دریافت لیست محصولات ممکن نشد")}finally{A.value=!1}}function bt(e){E.value=e,N(e)}function at(e){d.value!==e&&(d.value=e,X(),N())}function kt(e){y.value=e,c.value="";const t=(e.variants_all??[]).find(m=>m.is_active!==!1);t&&(c.value=String(t.id))}function X(){y.value=null,c.value=""}function st(e,t){return String(e.id||e.productVariantId||t)}function nt(e){k[e]=!0}F(()=>{var e;return(e=r.order)==null?void 0:e.id},()=>{for(const e of Object.keys(k))delete k[e]}),F(()=>r.addVariantId,e=>{e!==void 0&&(c.value=e)}),F(()=>r.addQty,e=>{e!==void 0&&(L.value=e)}),F(c,e=>_("update:addVariantId",e)),F(L,e=>_("update:addQty",Number(e)||1)),F(E,e=>{h&&clearTimeout(h),h=setTimeout(()=>{N(e)},320)}),F(()=>r.editMode,e=>{e?(M(),N("")):(X(),O.value=[],E.value="",d.value=null,B.value=[])});const ot=w(()=>{var m;const e=(m=r.order)==null?void 0:m.customer;return e&&(`${e.fname??""} ${e.lname??""}`.trim()||e.fullName)||"—"}),Ct=w(()=>{const e=ot.value.split(/\s+/).filter(Boolean);return!e.length||e[0]==="—"?"؟":e.slice(0,2).map(t=>t[0]).join("")});function Ot(e){return e?Rt(e):"—"}function lt(e){const t=parseFloat(String(e));return Number.isFinite(t)?t%1===0?String(t):t.toFixed(2):String(e??"—")}function Et(){var $;const e=String(c.value??"").trim();if(!e){q.warning("یک تنوع انتخاب کنید");return}if(!y.value){q.warning("اول یک محصول انتخاب کنید");return}const t=U.value.find(V=>String(V.id)===e),m=(($=t==null?void 0:t.image)==null?void 0:$.url)||u(y.value);_("add-line",{variantId:e,qty:Number(L.value)||1,title:y.value.title??"محصول",variantTitle:(t==null?void 0:t.title)??e,grams:(t==null?void 0:t.grams)!=null?Number(t.grams):0,wagePercent:(t==null?void 0:t.percentage_pay)!=null?Number(t.percentage_pay):void 0,flatRialCharge:(t==null?void 0:t.rial_pay)!=null?Number(t.rial_pay):0,image:m??null}),q.success("آیتم به سفارش اضافه شد")}return(e,t)=>{var rt,it,ct;const m=C("a-alert"),$=C("a-tag"),V=C("a-input-number"),j=C("a-form-item"),Z=C("a-button"),Q=C("a-empty"),St=C("a-input-search"),Dt=C("a-spin");return n.order?(o(),l("div",{key:0,class:T(["od",{"od--edit":n.editMode}])},[n.order.revisionStatus==="AWAITING_CUSTOMER"?(o(),P(m,{key:0,type:"warning","show-icon":"",class:"od__alert",message:n.order.confirmed_str||"در انتظار تأیید مشتری",description:"تا تأیید مشتری (یا اعمال/لغو توسط شما) ارقام فعلی سفارش تغییر نمی‌کند. پیامک برای مشتری ارسال شده است."},null,8,["message"])):f("",!0),a("section",Ht,[a("div",Gt,[a("div",Qt,v(Ct.value),1),a("div",qt,[a("h3",Yt,v(ot.value),1),(rt=n.order.customer)!=null&&rt.phone?(o(),l("a",{key:0,class:"od__phone",href:`tel:${n.order.customer.phone}`},v(n.order.customer.phone),9,Wt)):f("",!0)])]),a("div",Jt,[a("div",Xt,[t[3]||(t[3]=a("span",{class:"od__metaLabel"},"تاریخ ثبت",-1)),a("span",Zt,v(Ot(n.order.caj)),1)]),a("div",Kt,[t[4]||(t[4]=a("span",{class:"od__metaLabel"},"وضعیت",-1)),p($,{color:"blue"},{default:g(()=>[b(v(n.order.sts_str),1)]),_:1})]),n.order.orderNumber?(o(),l("div",te,[t[5]||(t[5]=a("span",{class:"od__metaLabel"},"شماره سفارش",-1)),a("span",ee,v(n.order.orderNumber),1)])):f("",!0)])]),a("div",ae,[a("section",se,[a("header",ne,[t[6]||(t[6]=a("h4",{class:"od__itemsTitle"},"آیتم‌های سفارش",-1)),a("span",oe,v(((it=n.order.items)==null?void 0:it.length)||0)+" قلم",1)]),(ct=n.order.items)!=null&&ct.length?(o(),l("ul",le,[(o(!0),l(z,null,H(n.order.items,(s,I)=>(o(),l("li",{key:s.id||I,class:"od__row"},[a("div",re,[s.image&&!k[st(s,I)]?(o(),l("img",{key:0,src:s.image,alt:s.title||"",onError:S=>nt(st(s,I))},null,40,ie)):(o(),l("div",ce,[p(D(vt))]))]),a("div",de,[a("div",ue,[a("h5",_e,v(s.title||"محصول"),1),s.variant_title?(o(),l("span",ve,v(s.variant_title),1)):f("",!0)]),n.editMode?(o(),l("div",ge,[p(j,{label:"وزن (گرم)",class:"od__field"},{default:g(()=>[p(V,{value:s.grams,"onUpdate:value":S=>s.grams=S,min:0,class:"w-full"},null,8,["value","onUpdate:value"])]),_:2},1024),p(j,{label:"تعداد",class:"od__field"},{default:g(()=>[p(V,{value:s.qty,"onUpdate:value":S=>s.qty=S,min:1,class:"w-full"},null,8,["value","onUpdate:value"])]),_:2},1024),p(j,{label:"اجرت ریالی",class:"od__field"},{default:g(()=>[p(V,{value:s.flatRialCharge,"onUpdate:value":S=>s.flatRialCharge=S,min:0,class:"w-full"},null,8,["value","onUpdate:value"])]),_:2},1024),p(Z,{size:"small",danger:"",class:"od__remove",onClick:S=>_("remove-line",I)},{default:g(()=>[...t[10]||(t[10]=[b(" حذف آیتم ",-1)])]),_:1},8,["onClick"])])):(o(),l("div",me,[a("span",pe,[a("b",null,v(s.qty),1),t[7]||(t[7]=b(" عدد ",-1))]),a("span",fe,[a("b",null,v(G(s.grams)),1),t[8]||(t[8]=b(" گرم ",-1))]),s.wagePercent!=null?(o(),l("span",he,[a("b",null,v(lt(s.wagePercent)),1),t[9]||(t[9]=b(" ٪ اجرت ",-1))])):f("",!0),Number(s.flatRialCharge)>0?(o(),l("span",ye,[a("b",null,v(D(Tt)(s.flatRialCharge)),1)])):f("",!0)]))])]))),128))])):(o(),P(Q,{key:1,description:"آیتمی در این سفارش نیست"}))]),n.editMode?(o(),l("aside",be,[a("header",ke,[t[11]||(t[11]=a("div",null,[a("h4",{class:"od__pickerTitle"},"افزودن به سفارش"),a("p",{class:"od__pickerHint"},"اول محصول را پیدا کنید، بعد تنوع را انتخاب کنید")],-1)),a("ol",Ce,[a("li",{class:T({"is-active":!y.value,"is-done":!!y.value})},"۱ محصول",2),a("li",{class:T({"is-active":!!y.value})},"۲ تنوع",2)])]),p(j,{label:"جستجوی محصول",class:"od__field"},{default:g(()=>[p(St,{value:E.value,"onUpdate:value":t[0]||(t[0]=s=>E.value=s),"allow-clear":"",placeholder:"نام یا کد محصول…",loading:A.value,"enter-button":"جستجو",onSearch:bt},null,8,["value","loading"])]),_:1}),B.value.length?(o(),l("div",Oe,[a("button",{type:"button",class:T(["od__catChip",{"is-active":!d.value}]),role:"tab","aria-selected":!d.value,onClick:t[1]||(t[1]=s=>at(null))}," همه ",10,Ee),(o(!0),l(z,null,H(B.value,s=>(o(),l("button",{key:s.id,type:"button",class:T(["od__catChip",{"is-active":d.value===s.id}]),role:"tab","aria-selected":d.value===s.id,onClick:I=>at(s.id)},v(s.title),11,Se))),128))])):f("",!0),p(Dt,{spinning:A.value},{default:g(()=>[O.value.length?(o(),l("div",De,[(o(!0),l(z,null,H(O.value,s=>{var I,S,dt;return o(),l("button",{key:s.id,type:"button",class:T(["od__productCard",{"is-selected":((I=y.value)==null?void 0:I.id)===s.id}]),role:"option","aria-selected":((S=y.value)==null?void 0:S.id)===s.id,onClick:Pt=>kt(s)},[a("div",Ae,[u(s)&&!k[`p-${s.id}`]?(o(),l("img",{key:0,src:u(s),alt:s.title,onError:Pt=>nt(`p-${s.id}`)},null,40,Ne)):(o(),l("div",Ie,[p(D(vt))]))]),a("div",$e,[a("span",Re,v(s.title),1),a("span",Te,[b(v(s.variants_count??((dt=s.variants_all)==null?void 0:dt.length)??0)+" تنوع ",1),s.product_code?(o(),l(z,{key:0},[b(" · "+v(s.product_code),1)],64)):f("",!0)])])],10,Pe)}),128))])):A.value?f("",!0):(o(),P(Q,{key:1,class:"od__pickerEmpty",description:J.value},null,8,["description"]))]),_:1},8,["spinning"]),y.value?(o(),l("div",we,[a("div",Le,[a("h5",Be,"تنوع‌های «"+v(y.value.title)+"»",1),p(Z,{type:"link",size:"small",onClick:X},{default:g(()=>[...t[12]||(t[12]=[b("عوض کردن محصول",-1)])]),_:1})]),U.value.length?(o(),l("div",Fe,[(o(!0),l(z,null,H(U.value,s=>(o(),l("button",{key:s.id,type:"button",class:T(["od__variantCard",{"is-selected":c.value===String(s.id)}]),role:"option","aria-selected":c.value===String(s.id),onClick:I=>c.value=String(s.id)},[a("div",ze,[a("span",Ue,v(s.title||"تنوع"),1),c.value===String(s.id)?(o(),P($,{key:0,color:"blue"},{default:g(()=>[...t[13]||(t[13]=[b("انتخاب‌شده",-1)])]),_:1})):f("",!0)]),a("div",Me,[a("span",null,[a("b",null,v(G(s.grams)),1),t[14]||(t[14]=b(" گرم",-1))]),s.percentage_pay!=null?(o(),l("span",je,[a("b",null,v(lt(s.percentage_pay)),1),t[15]||(t[15]=b("٪ اجرت",-1))])):f("",!0),s.sku?(o(),l("span",xe,v(s.sku),1)):f("",!0)])],10,Ve))),128))])):(o(),P(Q,{key:1,description:"این محصول تنوع فعالی ندارد"})),a("div",He,[p(j,{label:"تعداد",class:"od__field od__addQty"},{default:g(()=>[p(V,{value:L.value,"onUpdate:value":t[2]||(t[2]=s=>L.value=s),min:1,class:"w-full"},null,8,["value"])]),_:1}),p(Z,{type:"primary",class:"od__addBtn",disabled:!c.value,onClick:Et},{default:g(()=>[...t[16]||(t[16]=[b(" افزودن به سفارش ",-1)])]),_:1},8,["disabled"])])])):f("",!0)])):f("",!0)])],2)):(o(),P(Q,{key:1}))}}}),ya=gt(Ge,[["__scopeId","data-v-4545ac5a"]]),Qe={SUSPENDED:"معلق",PLACED:"ثبت سفارش",ADMIN_APPROVED:"تایید مدیر",SOURCING:"در حال تامین",PREPARING:"آماده‌سازی",DELIVERED_TO_AGENT:"تحویل نماینده",DELIVERED_TO_CUSTOMER:"تحویل مشتری",CANCELLED:"لغو شده"},qe={SUSPENDED:{font:"#A16207",background:"#A162071F"},PLACED:{font:"#3B82F6",background:"#3B82F61F"},ADMIN_APPROVED:{font:"#6366F1",background:"#6366F11F"},SOURCING:{font:"#EAB308",background:"#EAB3081F"},PREPARING:{font:"#F97316",background:"#F973161F"},DELIVERED_TO_AGENT:{font:"#06B6D4",background:"#06B6D41F"},DELIVERED_TO_CUSTOMER:{font:"#22C55E",background:"#22C55E1F"},CANCELLED:{font:"#DC2626",background:"#DC26261F"}},Ye={SUSPENDED:et,PLACED:W,ADMIN_APPROVED:Ft,SOURCING:Bt,PREPARING:Lt,DELIVERED_TO_AGENT:tt,DELIVERED_TO_CUSTOMER:It,CANCELLED:Nt},We={font:"#64748B",background:"#64748B1F"};function x(n){return qe[n]??We}function Je(n){return Qe[n]??n}function ht(n){return Ye[n]??W}const Xe={key:0,class:"ost"},Ze={class:"ost__banner"},Ke={class:"ost__rail"},ta={class:"ost__axis","aria-hidden":"true"},ea={class:"ost__main"},aa={class:"ost__row"},sa={class:"ost__copy"},na={class:"ost__status"},oa={key:0,class:"ost__note"},la={class:"ost__meta"},ra={key:0,class:"ost__when",dir:"ltr"},ia={key:1,class:"ost__when is-wait"},ca={key:2,class:"ost__when is-wait"},da={key:0,class:"ost__submit"},ua=yt({__name:"OrderStatusTimeline",props:{activity:{},canSubmit:{type:Boolean},canRemove:{type:Boolean}},emits:["submit","remove"],setup(n,{emit:i}){const r=n,_=i,c=w(()=>r.activity??[]),L=w(()=>{let d=-1;return c.value.forEach((h,k)=>{h.proceed&&(d=k)}),d}),A=w(()=>c.value.map((d,h)=>{let k="pending";return d.proceed&&(k=h===L.value?"current":"done"),{...d,state:k}})),O=w(()=>A.value.find(d=>d.state==="current")??null);function E(d){return Je(d.status)||d.title||d.status}function y(d){return wt(d).format("jYYYY/jMM/jDD - HH:mm")}function B(d){if(d.state==="pending")return;const h=x(d.status);return{color:h.font,borderColor:h.font}}return(d,h)=>{const k=C("a-button"),U=C("a-popconfirm"),J=C("a-input"),G=C("a-empty");return c.value.length?(o(),l("div",Xe,[a("header",Ze,[h[0]||(h[0]=a("span",{class:"ost__chip"},"وضعیت",-1)),h[1]||(h[1]=a("span",{class:"ost__dash","aria-hidden":"true"},null,-1)),O.value?(o(),l("span",{key:0,class:"ost__badge",style:Y({background:D(x)(O.value.status).background,color:D(x)(O.value.status).font})},[(o(),P(_t(D(ht)(O.value.status)))),b(" "+v(E(O.value)),1)],4)):f("",!0)]),a("ol",Ke,[(o(!0),l(z,null,H(A.value,(u,M)=>(o(),l("li",{key:u.status||M,class:T(["ost__node",[`is-${u.state}`]])},[a("div",ta,[u.state==="current"?(o(),l("span",{key:0,class:"ost__halo",style:Y({color:D(x)(u.status).font})},null,4)):f("",!0),a("span",{class:"ost__marker",style:Y(B(u))},[(o(),P(_t(D(ht)(u.status))))],4),M0?(o(),P(U,{key:3,"ok-text":"بله","cancel-text":"بی‌خیال",placement:"topLeft",onConfirm:N=>_("remove",u)},{title:g(()=>[...h[2]||(h[2]=[a("p",null,"آیا مطمئن به حذف وضعیت مورد نظر هستید ؟",-1)])]),default:g(()=>[p(k,{danger:"",ghost:"",size:"small",class:"ost__iconBtn","aria-label":"حذف وضعیت"},{icon:g(()=>[p(D($t))]),_:1})]),_:1},8,["onConfirm"])):f("",!0)])]),!u.proceed&&n.canSubmit?(o(),l("div",da,[p(J,{value:u.note,"onUpdate:value":N=>u.note=N,size:"small",placeholder:"یادداشت","allow-clear":"",onPressEnter:N=>_("submit",u)},null,8,["value","onUpdate:value","onPressEnter"]),p(k,{size:"small",type:"primary",onClick:N=>_("submit",u)},{default:g(()=>[...h[3]||(h[3]=[b("ثبت وضعیت",-1)])]),_:1},8,["onClick"])])):f("",!0)])],2))),128))])])):(o(),P(G,{key:1,description:"مسیری برای این سفارش ثبت نشده است."}))}}}),ga=gt(ua,[["__scopeId","data-v-73d1808b"]]);export{ga as O,ya as a}; diff --git a/apps/admin-panel/dist/assets/PercentageOutlined-CxUloK5J.js b/apps/admin-panel/dist/assets/PercentageOutlined-Cooaq8mh.js similarity index 94% rename from apps/admin-panel/dist/assets/PercentageOutlined-CxUloK5J.js rename to apps/admin-panel/dist/assets/PercentageOutlined-Cooaq8mh.js index 0096ab8..63a3886 100644 --- a/apps/admin-panel/dist/assets/PercentageOutlined-CxUloK5J.js +++ b/apps/admin-panel/dist/assets/PercentageOutlined-Cooaq8mh.js @@ -1 +1 @@ -import{c as l,I as u}from"./index-C9T3Vski.js";var o={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M855.7 210.8l-42.4-42.4a8.03 8.03 0 00-11.3 0L168.3 801.9a8.03 8.03 0 000 11.3l42.4 42.4c3.1 3.1 8.2 3.1 11.3 0L855.6 222c3.2-3 3.2-8.1.1-11.2zM304 448c79.4 0 144-64.6 144-144s-64.6-144-144-144-144 64.6-144 144 64.6 144 144 144zm0-216c39.7 0 72 32.3 72 72s-32.3 72-72 72-72-32.3-72-72 32.3-72 72-72zm416 344c-79.4 0-144 64.6-144 144s64.6 144 144 144 144-64.6 144-144-64.6-144-144-144zm0 216c-39.7 0-72-32.3-72-72s32.3-72 72-72 72 32.3 72 72-32.3 72-72 72z"}}]},name:"percentage",theme:"outlined"};function c(r){for(var e=1;e!!f.hasPermission(t),n=c(U),k=c(""),u=c([]),V=c(!0),I=c([]),s=ee({}),a=D(()=>n.value===P),F=D(()=>{var e;let t=I.value;return p("user.permission.create")||(t=t.filter(i=>String(i.id)!==P)),((e=x.user)==null?void 0:e.ut)!==N&&(t=t.filter(i=>i.id!==N)),t});function A(t){return t.filter(e=>!T.has(e.key)).map(e=>e.children?{...e,children:A(e.children)}:e)}const L=D(()=>{var e;const t=((e=x.user)==null?void 0:e.ut)===N?B:B.filter(i=>i.key!=="custom");return f.isSuperAdmin?t:A(t)}),h=c([]);function w(t){if(f.isSuperAdmin){u.value=t,h.value=[];return}u.value=t.filter(e=>!T.has(e)),h.value=t.filter(e=>T.has(e))}async function C(){try{const{data:t}=await v.get("const/__list__ut");I.value=t}catch(t){console.log(t)}}async function g(t){if(!t){w([]);return}if(t===P){w([]);return}try{const{data:e}=await v.get(`roles/${t}`);w(e)}catch{S.error("خطا در دریافت اطلاعات")}}async function M(){var t,e;if(Object.keys(s).forEach(i=>delete s[i]),!n.value){s.ut="لطفاسطح دسترسی را انتخاب کنید";return}if(a.value&&!k.value){s.user="لطفا نام سطح دسترسی را وارد کنید";return}try{let i=n.value;if(a.value){const{data:_}=await v.post("const",{key:"__list__ut",val:k.value});i=String(_.id)}await v.post("roles/create",{ut:i,roles:[...new Set([...u.value,...h.value])]}),await C(),a.value&&(n.value=i,k.value="",await g(i)),S.success("عملیات با موفقیت انجام شد")}catch(i){S.error(((e=(t=i==null?void 0:i.response)==null?void 0:t.data)==null?void 0:e.message)??"خطا در ثبت اطلاعات")}}return W(async()=>{await C(),n.value=U,await g(U)}),(t,e)=>{const i=o("a-select-option"),_=o("a-select"),b=o("a-form-item"),Y=o("a-input"),H=o("a-tree"),R=o("a-button"),j=o("a-card"),z=o("a-form");return d(),m(z,{layout:"vertical",onSubmit:$(M,["prevent"])},{default:r(()=>[y(j,{id:"rid",title:"دسترسی ها",class:"page-card"},{default:r(()=>[q("div",le,[y(b,{label:"سطح کاربر","validate-status":s.ut?"error":"",help:s.ut},{default:r(()=>[y(_,{value:n.value,"onUpdate:value":e[0]||(e[0]=l=>n.value=l),"allow-clear":"",onChange:g},{default:r(()=>[(d(!0),J(Z,null,Q(F.value,l=>(d(),m(i,{key:l.id,value:String(l.id)},{default:r(()=>[E(X(l.title),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["validate-status","help"]),a.value&&p("user.permission.create")?(d(),m(b,{key:0,label:"نام سطح دسترسی","validate-status":s.user?"error":"",help:s.user},{default:r(()=>[y(Y,{value:k.value,"onUpdate:value":e[1]||(e[1]=l=>k.value=l),"allow-clear":""},null,8,["value"])]),_:1},8,["validate-status","help"])):O("",!0),y(b,{label:"نقش ها",class:"tree-item"},{default:r(()=>[y(H,{"checked-keys":u.value,"onUpdate:checkedKeys":e[2]||(e[2]=l=>u.value=l),"check-strictly":!1,checkable:"",style:{width:"100%"},"tree-data":L.value,"field-names":{title:"title",key:"key",children:"children"},"auto-expand-parent":V.value},null,8,["checked-keys","tree-data","auto-expand-parent"])]),_:1})]),!a.value&&p("user.permission.edit")?(d(),m(R,{key:0,type:"primary",class:"form-submit","html-type":"submit"},{default:r(()=>[...e[3]||(e[3]=[E(" ثبت تغییرات ",-1)])]),_:1})):O("",!0),a.value&&p("user.permission.create")?(d(),m(R,{key:1,type:"primary",class:"form-submit","html-type":"submit"},{default:r(()=>[...e[4]||(e[4]=[E(" افزودن ",-1)])]),_:1})):O("",!0)]),_:1})]),_:1})}}}),ae=te(re,[["__scopeId","data-v-e837c6b0"]]);export{ae as default}; +import{d as G,u as K,x as W,a as m,w as r,H as $,m as c,y as v,G as S,r as o,o as d,c as y,p as q,b as J,e as Q,f as E,t as X,F as Z,i as O,z as ee,s as D,_ as te}from"./index-CuIWfDbM.js";import{u as ie}from"./auth-N_Kcbhfe.js";const B=[{title:"پیشخوان",key:"dashboard.view"},{title:"اشخاص",key:"persons",children:[{title:"اضافه کردن شخص",key:"persons.create",children:[{title:"افزودن کارشناس فروش",key:"persons.create.seller"},{title:"افزودن مشتری عمده",key:"persons.create.client"},{title:"افزودن مشتری تک",key:"persons.create.single"}]},{title:"لیست کارشناسان فروش",key:"persons.list.sellers",children:[{title:"ویرایش اطلاعات کارشناس فروش",key:"persons.list.sellers.edit"},{title:"مشاهده سفارشات کارشناس فروش",key:"persons.list.sellers.view.orders"},{title:"مشاهده اسناد مالی کارشناس فروش",key:"persons.list.sellers.view.documents"},{title:"توقف سفارش کارشناس فروش",key:"persons.list.sellers.unable.order"},{title:"فعال سازی سفارش کارشناس فروش",key:"persons.list.sellers.able.order"},{title:"فعال سازی حساب کاربری کارشناس فروش",key:"persons.list.sellers.able"},{title:"غیر فعال سازی حساب کاربری کارشناس فروش",key:"persons.list.sellers.unable"}]},{title:"لیست مشتریان عمده",key:"persons.list.client.omde",children:[{title:"مشاهده اطلاعات مشتریان عمده",key:"persons.list.client.omde.view"},{title:"ویرایش اطلاعات مشتری عمده",key:"persons.list.client.omde.edit"},{title:"مشاهده سفارشات مشتری عمده",key:"persons.list.client.omde.view.orders"},{title:"مشاهده اسناد مالی مشتری عمده",key:"persons.list.client.omde.view.documents"},{title:"توقف سفارش مشتری عمده",key:"persons.list.client.omde.unable.order"},{title:"فعال سازی سفارش مشتری عمده",key:"persons.list.client.omde.able.order"},{title:"فعال سازی مشتری عمده",key:"persons.list.client.omde.able"},{title:"غیر فعال سازی مشتری عمده",key:"persons.list.client.omde.unable"}]},{title:"لیست مشتریان تک",key:"persons.list.client.single",children:[{title:"مشاهده اطلاعات مشتریان تک",key:"persons.list.client.single.view"},{title:"ویرایش اطلاعات مشتری تک",key:"persons.list.client.single.edit"},{title:"مشاهده اطلاعات مشتری تک",key:"persons.list.client.single.view"}]}]},{title:"شعب",key:"branch",children:[{title:"افزودن شعب",key:"branch.create"},{title:" لیست شعب",key:"branch.list"}]},{title:"کارگاه",key:"workshop",children:[{title:"افزودن کارگاه",key:"workshop.create"},{title:" لیست کارگاه ها",key:"workshop.list"}]},{title:"محصولات",key:"product",children:[{title:"افزودن محصول",key:"product.create"},{title:"لیست محصولات",key:"product.list",children:[{title:"مشاهده لیست محصولات",key:"product.list.view"},{title:"ویرایش اطلاعات محصول",key:"product.list.edit"},{title:"مشاهده اطلاعات جامع محصول",key:"product.list.view"},{title:"تنوع های محصول",key:"product.list.variants",children:[{title:"مشاهده تنوع های محصول",key:"product.list.variants.view"},{title:"ویرایش تنوع محصول",key:"product.list.variants.edit"},{title:"حذف تنوع محصول",key:"product.list.variants.remove"},{title:"افزودن تنوع محصول",key:"product.list.variants.add"}]},{title:"حذف محصول",key:"product.list.remove"},{title:"تغییر دسته ای",key:"product.list.group.edit"}]},{title:"تغییر درصد محصولات",key:"product.percent"}]},{title:"سفارشات",key:"order",children:[{title:"لیست سفارشات",key:"order.list",children:[{title:"مشاهده لیست سفارشات",key:"order.list.view"},{title:"وضعیت سفارش",key:"order.list.sts",children:[{title:"مشاهده وضعیت سفارش",key:"order.list.sts.view"},{title:"حذف وضعیت",key:"order.list.sts.remove"},{title:"ثبت وضعیت",key:"order.list.sts.submit"}]},{title:"مشاهده سفارش",key:"order.list.view"},{title:"ویرایش سفارش",key:"order.list.view.edit"},{title:"دریافت pdf",key:"order.list.pdf"}]},{title:"سفارشات عمده",key:"order.omde",children:[{title:"وضعیت سفارش",key:"order.omde.state",children:[{title:"مشاهده وضعیت سفارش",key:"order.omde.state.view"},{title:"ثبت وضعیت سفارش",key:"order.omde.state.submit"},{title:"حذف وضعیت سفارش",key:"order.omde.state.remove"}]},{title:"مشاهده سفارش",key:"order.omde.view"},{title:"ویرایش سفارش",key:"order.omde.view.edit"},{title:"حذف آیتم از سفارش",key:"order.omde.view.remove"},{title:"حذف سفارش",key:"order.omde.remove"},{title:"دریافت pdf سفارش",key:"order.omde.get"}]},{title:"سفارشات ساختنی",key:"order.makeOrder",children:[{title:"وضعیت سفارش",key:"order.makeOrder.state",children:[{title:"مشاهده وضعیت سفارش",key:"order.makeOrder.state.view"},{title:"ثبت وضعیت سفارش",key:"order.makeOrder.state.submit"},{title:"حذف وضعیت سفارش",key:"order.makeOrder.state.remove"}]},{title:"مشاهده سفارش",key:"order.makeOrder.view"},{title:"ویرایش سفارش",key:"order.makeOrder.view.edit"},{title:"حذف آیتم از سفارش",key:"order.makeOrder.view.remove"},{title:"حذف سفارش",key:"order.makeOrder.remove"},{title:"دریافت pdf سفارش",key:"order.makeOrder.get"}]},{title:"لیست تامین",key:"order.tamin",children:[{title:"مشاهده لیست تامین",key:"order.tamin.view"},{title:"وضعیت سفارش",key:"order.tamin.state",children:[{title:"مشاهده وضعیت سفارش",key:"order.tamin.state.view"},{title:"ثبت وضعیت سفارش",key:"order.tamin.state.submit"},{title:"حذف وضعیت سفارش",key:"order.tamin.state.remove"}]},{title:"مشاهده سفارش",key:"order.tamin.view"},{title:"ویرایش سفارش",key:"order.tamin.view.edit"}]},{title:"ثبت سفارش تک",key:"order.create"}]},{title:"مدیران",key:"user",children:[{title:"افزودن مدیر",key:"user.create"},{title:"لیست مدیران",key:"user.list",children:[{title:"مشاهده لیست مدیران",key:"user.list.view"},{title:"ویرایش مدیر",key:"user.list.edit"},{title:"حذف مدیر",key:"user.list.remove"},{title:"افزودن مدیر",key:"user.list.create"}]},{title:"دسترسی ها",key:"user.permission",children:[{title:"ویرایش دسترسی",key:"user.permission.edit"},{title:"افزودن دسترسی",key:"user.permission.create"}]}]},{title:"دسته بندی ها",key:"collection",children:[{title:"افزودن دسته بندی",key:"collection.create"},{title:" لیست دسته بندی ها",key:"collection.list",children:[{title:"مشاهده لیست دسته بندی ها",key:"collection.list.view"},{title:"ویرایش دسته",key:"collection.list.edit"},{title:"حذف دسته",key:"collection.list.remove"}]}]},{title:"اسناد مالی",key:"document",children:[{title:" لیست اسناد مالی",key:"document.list",children:[{title:"مشاهده لیست اسناد مالی",key:"document.list.view"},{title:"ویرایش سند مالی",key:"document.list.edit"},{title:"حذف سند مالی",key:"document.list.remove"},{title:"رد کردن سند مالی",key:"document.list.deny"},{title:"تأیید کردن سند مالی",key:"document.list.confirm"},{title:"دریافت pdf سند مالی",key:"document.list.get"}]},{title:"وارد کردن سند مالی مشتری",key:"document.create"}]},{title:"استثناعات تخفیف",key:"offersIgnore"},{title:"تخفیفات",key:"offers",children:[{title:" لیست تخفیفات",key:"offers.list",children:[{title:"مشاهده لیست تخفیفات",key:"offers.list.view"},{title:"ویرایش تخفیف عمده",key:"offers.list.edit"},{title:"ویرایش تخفیف تک",key:"offers.list.tak.edit"},{title:"حذف تخفیف عمده",key:"offers.list.remove"},{title:"حذف تخفیف تک",key:"offers.list.tak.remove"}]},{title:"تعریف تخفیف عمده",key:"offers.create"},{title:"تعریف تخفیف تک",key:"offers.create.tak"},{title:"تخفیف اتوماتیک",key:"offers.autopromotion"}]},{title:"فاکتور انتقال",key:"invoice",children:[{title:"افزودن فاکتور",key:"invoice.create"},{title:" لیست فاکتورها",key:"invoice.list"}]},{title:"گزارشات",key:"report",children:[{title:"گزارش تجمیعی سفارشات و اسناد مالی",key:"report.order.item"},{title:"گزارش محصولات",key:"report.product"}]},{title:"شهرها",key:"cities",children:[{title:"افزودن شهر",key:"cities.create"},{title:"لیست شهرها",key:"cities.list",children:[{title:"مشاهده لیست شهرها",key:"cities.list.view"},{title:"حذف شهر",key:"cities.list.remove"},{title:"مشاهده شهر",key:"cities.list.view"},{title:"ویرایش شهر",key:"cities.list.view.edit"}]}]},{title:"دیدگاه ها",key:"comment",children:[{title:"مشاهده لیست دیدگاه ها",key:"comment.view.all"},{title:"تغییر وضعیت دیدگاه",key:"comment.state"},{title:"مشاهده دیدگاه",key:"comment.view"},{title:"ویرایش دیدگاه",key:"comment.view.edit"},{title:"حذف دیدگاه",key:"comment.remove"}]},{title:"پیامک",key:"sms",children:[{title:"ارسال پیامک",key:"sms.create",children:[{title:"ارسال برای یک شماره تلفن",key:"sms.create.single"},{title:"ارسال برای همه کاربران",key:"sms.create.all"},{title:"ارسال برای کارشناسان فروش",key:"sms.create.reagent"},{title:"ارسال برای مشتریان عمده",key:"sms.create.omde"},{title:"ارسال برای چند شماره تلفن",key:"sms.create.multiple"}]},{title:"لیست پیامک های ارسال شده",key:"sms.list"}]},{title:"کیف پول",key:"wallet",children:[{title:"لیست کیف پول های شارژ شده",key:"wallet.list"},{title:"شارژ کیف پول",key:"wallet.charge"},{title:"تغییر درصد شارژ کیف پول",key:"wallet.percent"}]},{title:"نوتیفیکیشن",key:"notify",children:[{title:"ارسال نوتیفیکیشن",key:"notify.create",children:[{title:"ارسال برای کارشناسان فروش",key:"notify.create.multiple.reagent"},{title:"ارسال برای یک مشتری",key:"notify.create.single.customer"},{title:"ارسال برای مشتریان عمده",key:"notify.create.multiple.omde"},{title:"ارسال برای همه مشتریان",key:"notify.create.multiple.customer"},{title:"ارسال برای یک مدیر",key:"notify.create.single.admin"},{title:"ارسال برای همه مدیران",key:"notify.create.multiple.admin"}]},{title:"لیست نوتیفیکیشن های دریافتی",key:"notify.me"}]},{title:"پیکربندی",key:"config",children:[{title:"مدیریت ثابت ها",key:"config.statics",children:[{title:"برند ها",key:"config.statics.brand",children:[{title:"افزودن برند",key:"config.statics.brand.create"},{title:"ویرایش برند",key:"config.statics.brand.edit"},{title:"حذف برند",key:"config.statics.brand.remove"}]},{title:"برچسب ها",key:"config.statics.tags",children:[{title:"افزودن برچسب",key:"config.statics.tags.create"},{title:"ویرایش برچسب",key:"config.statics.tags.edit"},{title:"حذف برچسب",key:"config.statics.tags.remove"}]},{title:"اسلایدر موبایل",key:"custom.config.statics.slider"}]},{title:"مدیریت کیف پول",key:"config.wallet"},{title:"گزارش",key:"config.report"},{title:"اتصال حسابداری",key:"config.accounting"},{title:"اجرت",key:"config.wage"}]},{title:"آمار",key:"statics"},{title:"خبرنامه",key:"newsletters.newsletters"},{title:"سفارشی",key:"custom",children:[{title:"برچسب بنر اول سایت",key:"custom.config.statics.tags.banner.ids"}]}],T=new Set(["persons.create.single","persons.list.client.single","persons.list.client.single.view","persons.list.client.single.edit","branch","branch.create","branch.list","workshop","workshop.create","workshop.list","order.create","order.list","order.list.view","order.list.sts","order.list.sts.view","order.list.sts.remove","order.list.sts.submit","order.list.view.edit","order.list.pdf","offers.create.tak","offers.list.tak.edit","offers.list.tak.remove","config.wallet"]),le={class:"grid-2"},P="84",U="85",N=104,re=G({__name:"Permission",setup(se){const f=K(),x=ie(),p=t=>!!f.hasPermission(t),n=c(U),k=c(""),u=c([]),V=c(!0),I=c([]),s=ee({}),a=D(()=>n.value===P),F=D(()=>{var e;let t=I.value;return p("user.permission.create")||(t=t.filter(i=>String(i.id)!==P)),((e=x.user)==null?void 0:e.ut)!==N&&(t=t.filter(i=>i.id!==N)),t});function A(t){return t.filter(e=>!T.has(e.key)).map(e=>e.children?{...e,children:A(e.children)}:e)}const L=D(()=>{var e;const t=((e=x.user)==null?void 0:e.ut)===N?B:B.filter(i=>i.key!=="custom");return f.isSuperAdmin?t:A(t)}),h=c([]);function w(t){if(f.isSuperAdmin){u.value=t,h.value=[];return}u.value=t.filter(e=>!T.has(e)),h.value=t.filter(e=>T.has(e))}async function C(){try{const{data:t}=await v.get("const/__list__ut");I.value=t}catch(t){console.log(t)}}async function g(t){if(!t){w([]);return}if(t===P){w([]);return}try{const{data:e}=await v.get(`roles/${t}`);w(e)}catch{S.error("خطا در دریافت اطلاعات")}}async function M(){var t,e;if(Object.keys(s).forEach(i=>delete s[i]),!n.value){s.ut="لطفاسطح دسترسی را انتخاب کنید";return}if(a.value&&!k.value){s.user="لطفا نام سطح دسترسی را وارد کنید";return}try{let i=n.value;if(a.value){const{data:_}=await v.post("const",{key:"__list__ut",val:k.value});i=String(_.id)}await v.post("roles/create",{ut:i,roles:[...new Set([...u.value,...h.value])]}),await C(),a.value&&(n.value=i,k.value="",await g(i)),S.success("عملیات با موفقیت انجام شد")}catch(i){S.error(((e=(t=i==null?void 0:i.response)==null?void 0:t.data)==null?void 0:e.message)??"خطا در ثبت اطلاعات")}}return W(async()=>{await C(),n.value=U,await g(U)}),(t,e)=>{const i=o("a-select-option"),_=o("a-select"),b=o("a-form-item"),Y=o("a-input"),H=o("a-tree"),R=o("a-button"),j=o("a-card"),z=o("a-form");return d(),m(z,{layout:"vertical",onSubmit:$(M,["prevent"])},{default:r(()=>[y(j,{id:"rid",title:"دسترسی ها",class:"page-card"},{default:r(()=>[q("div",le,[y(b,{label:"سطح کاربر","validate-status":s.ut?"error":"",help:s.ut},{default:r(()=>[y(_,{value:n.value,"onUpdate:value":e[0]||(e[0]=l=>n.value=l),"allow-clear":"",onChange:g},{default:r(()=>[(d(!0),J(Z,null,Q(F.value,l=>(d(),m(i,{key:l.id,value:String(l.id)},{default:r(()=>[E(X(l.title),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["validate-status","help"]),a.value&&p("user.permission.create")?(d(),m(b,{key:0,label:"نام سطح دسترسی","validate-status":s.user?"error":"",help:s.user},{default:r(()=>[y(Y,{value:k.value,"onUpdate:value":e[1]||(e[1]=l=>k.value=l),"allow-clear":""},null,8,["value"])]),_:1},8,["validate-status","help"])):O("",!0),y(b,{label:"نقش ها",class:"tree-item"},{default:r(()=>[y(H,{"checked-keys":u.value,"onUpdate:checkedKeys":e[2]||(e[2]=l=>u.value=l),"check-strictly":!1,checkable:"",style:{width:"100%"},"tree-data":L.value,"field-names":{title:"title",key:"key",children:"children"},"auto-expand-parent":V.value},null,8,["checked-keys","tree-data","auto-expand-parent"])]),_:1})]),!a.value&&p("user.permission.edit")?(d(),m(R,{key:0,type:"primary",class:"form-submit","html-type":"submit"},{default:r(()=>[...e[3]||(e[3]=[E(" ثبت تغییرات ",-1)])]),_:1})):O("",!0),a.value&&p("user.permission.create")?(d(),m(R,{key:1,type:"primary",class:"form-submit","html-type":"submit"},{default:r(()=>[...e[4]||(e[4]=[E(" افزودن ",-1)])]),_:1})):O("",!0)]),_:1})]),_:1})}}}),ae=te(re,[["__scopeId","data-v-e837c6b0"]]);export{ae as default}; diff --git a/apps/admin-panel/dist/assets/PictureOutlined-BBgbZIZs.js b/apps/admin-panel/dist/assets/PictureOutlined-CixWElmx.js similarity index 94% rename from apps/admin-panel/dist/assets/PictureOutlined-BBgbZIZs.js rename to apps/admin-panel/dist/assets/PictureOutlined-CixWElmx.js index 3d334ce..ef8a4e1 100644 --- a/apps/admin-panel/dist/assets/PictureOutlined-BBgbZIZs.js +++ b/apps/admin-panel/dist/assets/PictureOutlined-CixWElmx.js @@ -1 +1 @@ -import{c as u,I as l}from"./index-C9T3Vski.js";var o={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-40 632H136v-39.9l138.5-164.3 150.1 178L658.1 489 888 761.6V792zm0-129.8L664.2 396.8c-3.2-3.8-9-3.8-12.2 0L424.6 666.4l-144-170.7c-3.2-3.8-9-3.8-12.2 0L136 652.7V232h752v430.2zM304 456a88 88 0 100-176 88 88 0 000 176zm0-116c15.5 0 28 12.5 28 28s-12.5 28-28 28-28-12.5-28-28 12.5-28 28-28z"}}]},name:"picture",theme:"outlined"};function a(r){for(var t=1;t!!x.hasPermission(l),N=ot(x.isSuperAdmin),h=b(null),w=b([]),V=Q(()=>Z()),y=b(!1),u=b(void 0),E=[{title:"عنوان",dataIndex:"title"},{title:"وزن",dataIndex:"grams"},{title:"اجرت درصدی",dataIndex:"percentage_pay"},{title:"تعداد",dataIndex:"qty"}];async function S(l){const{data:a}=await W.get(`admin/products/${l.id}`);u.value=a,y.value=!0}const{remove:L}=st({onSuccess:()=>{var l;return(l=h.value)==null?void 0:l.fetch()},successMessage:"محصول حذف شد",successType:"info",fallbackErrorMessage:"خطا در حذف محصول"});function M(l){return L(`delete/product/${l}`,{method:"post"})}const I=l=>{var a,p;return Number(((a=l.accounting_stock)==null?void 0:a.weight)??((p=l.accounting_stock)==null?void 0:p.count)??0)};function O(l){D.push(`/apps/product/edit/${l}`)}return(l,a)=>{const p=m("a-tag"),C=m("a-tooltip"),z=m("a-popconfirm"),f=m("a-descriptions-item"),R=m("a-descriptions"),T=m("a-table"),U=m("a-empty"),X=m("a-button"),q=m("a-modal"),A=m("a-card");return o(),c("div",nt,[n(A,{title:"لیست محصولات",class:"page-card"},{extra:e(()=>[k("product.list")?(o(),d(at,{key:0,endpoint:"admin/products/accounting-sync",onDone:a[0]||(a[0]=t=>{var s;return(s=h.value)==null?void 0:s.fetch()})})):_("",!0)]),default:e(()=>[P("h6",lt,"تعداد "+r(w.value.length)+" محصول انتخاب شده است.",1),n(et,{ref_key:"tblProducts",ref:h,modelValue:w.value,"onUpdate:modelValue":a[1]||(a[1]=t=>w.value=t),model:v(N),"has-selection":!0,"mobile-cards":""},{image:e(({record:t})=>[t.ProductImage&&t.ProductImage.length?(o(),c("img",{key:0,src:t.ProductImage[0].image,class:"product-thumb",alt:""},null,8,ut)):(o(),c("span",it,"-"))]),tags:e(({record:t})=>{var s;return[(s=t.tags)!=null&&s.length?(o(),c("div",ct,[(o(!0),c($,null,B(t.tags,g=>(o(),d(p,{key:g},{default:e(()=>[i(r(g),1)]),_:2},1024))),128))])):(o(),c("span",rt,"—"))]}),show_type:e(({record:t})=>[i(r(t.show_type_str),1)]),accounting:e(({record:t})=>[t.accounting_stock?(o(),c("div",dt,[a[4]||(a[4]=i(" موجودی: ",-1)),P("span",{class:K(I(t)<=0?"text-danger":"")},r(t.accounting_stock.weight!=null?`${Number(t.accounting_stock.weight)} گرم`:`${Number(t.accounting_stock.count)} عدد`),3)])):_("",!0),!t.ProductImage||!t.ProductImage.length?(o(),d(p,{key:1,color:"orange"},{default:e(()=>[...a[5]||(a[5]=[i("بدون تصویر — در اپ پنهان",-1)])]),_:1})):t.accounting_stock&&I(t)<=0?(o(),d(p,{key:2,color:"red"},{default:e(()=>[...a[6]||(a[6]=[i("ناموجود در حسابداری",-1)])]),_:1})):_("",!0)]),op:e(({record:t})=>[V.value?_("",!0):(o(),c("div",mt,[k("product.list.edit")?(o(),d(C,{key:0,title:"ویرایش"},{default:e(()=>[n(v(J),{class:"cursor-pointer mx-1 text-primary",onClick:s=>O(t.id)},null,8,["onClick"])]),_:2},1024)):_("",!0),k("product.list.view")?(o(),d(C,{key:1,title:"اطلاعات جامع"},{default:e(()=>[n(v(j),{class:"cursor-pointer mx-1 text-warning",onClick:s=>S(t)},null,8,["onClick"])]),_:2},1024)):_("",!0),k("product.list.remove")?(o(),d(C,{key:2,title:"حذف"},{default:e(()=>[n(z,{placement:"top","ok-text":"بله","cancel-text":"خیر",onConfirm:s=>M(t.id)},{title:e(()=>[...a[7]||(a[7]=[P("p",null,"آیا مطمئن به حذف محصول مورد نظر هستید ؟",-1)])]),default:e(()=>[n(v(G),{class:"cursor-pointer mx-1 text-danger"})]),_:1},8,["onConfirm"])]),_:2},1024)):_("",!0)]))]),_:1},8,["modelValue","model"]),n(q,{open:y.value,"onUpdate:open":a[3]||(a[3]=t=>y.value=t),title:"اطلاعات جامع محصول",width:"70%","wrap-class-name":"detail-modal"},{footer:e(()=>[n(X,{onClick:a[2]||(a[2]=t=>y.value=!1)},{default:e(()=>[...a[8]||(a[8]=[i("بستن",-1)])]),_:1})]),default:e(()=>{var t;return[u.value?(o(),c("div",_t,[n(R,{bordered:"",size:"small",column:{xxl:2,xl:2,lg:2,md:2,sm:2,xs:1}},{default:e(()=>[n(f,{label:"نام محصول"},{default:e(()=>[i(r(u.value.title),1)]),_:1}),n(f,{label:"کد محصول"},{default:e(()=>[i(r(u.value.product_code||"-"),1)]),_:1}),n(f,{label:"برند"},{default:e(()=>{var s;return[i(r(((s=u.value.brand)==null?void 0:s.title)||"-"),1)]}),_:1}),n(f,{label:"دسته بندی"},{default:e(()=>{var s;return[i(r(((s=u.value.category)==null?void 0:s.title)||"-"),1)]}),_:1}),n(f,{label:"برچسب‌ها"},{default:e(()=>{var s;return[(s=u.value.tags)!=null&&s.length?(o(!0),c($,{key:0},B(u.value.tags,g=>(o(),d(p,{key:g},{default:e(()=>[i(r(g),1)]),_:2},1024))),128)):(o(),c("span",pt,"-"))]}),_:1}),v(x).isSuperAdmin?(o(),d(f,{key:0,label:"نوع نمایش"},{default:e(()=>[i(r(u.value.show_type_str),1)]),_:1})):_("",!0),n(f,{label:"تعداد تنوع"},{default:e(()=>{var s;return[i(r(((s=u.value.variants_all)==null?void 0:s.length)??u.value.variants_count??0),1)]}),_:1})]),_:1}),(t=u.value.variants_all)!=null&&t.length?(o(),d(T,{key:0,class:"mt-4",size:"small","data-source":u.value.variants_all,columns:E,pagination:!1,"row-key":"id"},null,8,["data-source"])):_("",!0)])):(o(),d(U,{key:1}))]}),_:1},8,["open"])]),_:1})])}}}),Pt=tt(ft,[["__scopeId","data-v-78418fa2"]]);export{Pt as default}; +import{d as F,u as H,b as c,c as n,w as e,r as m,o,p as P,t as r,h as v,a as d,E as J,i as _,J as j,D as G,f as i,q as K,F as $,e as B,m as b,s as Q,y as W,l as Y,X as Z,_ as tt}from"./index-CuIWfDbM.js";import{X as et}from"./model-D_9omyEY.js";import{_ as at}from"./AccountingSyncButton.vue_vue_type_script_setup_true_lang-BgmQz3-B.js";import{b as ot}from"./productListModel-CFcqDeGA.js";import{u as st}from"./useDeleteHandler-c5WtaKjp.js";import"./filters-Cvt98RIq.js";import"./index-CPTngTRs.js";import"./SettingOutlined-BehgjsnT.js";const nt={id:"page-user-list"},lt={class:"selected-count"},ut=["src"],it={key:1},ct={key:0,class:"product-tags"},rt={key:1,class:"text-muted"},dt={key:0,class:"acc-stock"},mt={key:0,class:"w-48 flex"},_t={key:0},pt={key:1},ft=F({__name:"ProductList",setup(gt){const D=Y(),x=H(),k=l=>!!x.hasPermission(l),N=ot(x.isSuperAdmin),h=b(null),w=b([]),V=Q(()=>Z()),y=b(!1),u=b(void 0),E=[{title:"عنوان",dataIndex:"title"},{title:"وزن",dataIndex:"grams"},{title:"اجرت درصدی",dataIndex:"percentage_pay"},{title:"تعداد",dataIndex:"qty"}];async function S(l){const{data:a}=await W.get(`admin/products/${l.id}`);u.value=a,y.value=!0}const{remove:L}=st({onSuccess:()=>{var l;return(l=h.value)==null?void 0:l.fetch()},successMessage:"محصول حذف شد",successType:"info",fallbackErrorMessage:"خطا در حذف محصول"});function M(l){return L(`delete/product/${l}`,{method:"post"})}const I=l=>{var a,p;return Number(((a=l.accounting_stock)==null?void 0:a.weight)??((p=l.accounting_stock)==null?void 0:p.count)??0)};function O(l){D.push(`/apps/product/edit/${l}`)}return(l,a)=>{const p=m("a-tag"),C=m("a-tooltip"),z=m("a-popconfirm"),f=m("a-descriptions-item"),R=m("a-descriptions"),T=m("a-table"),U=m("a-empty"),X=m("a-button"),q=m("a-modal"),A=m("a-card");return o(),c("div",nt,[n(A,{title:"لیست محصولات",class:"page-card"},{extra:e(()=>[k("product.list")?(o(),d(at,{key:0,endpoint:"admin/products/accounting-sync",onDone:a[0]||(a[0]=t=>{var s;return(s=h.value)==null?void 0:s.fetch()})})):_("",!0)]),default:e(()=>[P("h6",lt,"تعداد "+r(w.value.length)+" محصول انتخاب شده است.",1),n(et,{ref_key:"tblProducts",ref:h,modelValue:w.value,"onUpdate:modelValue":a[1]||(a[1]=t=>w.value=t),model:v(N),"has-selection":!0,"mobile-cards":""},{image:e(({record:t})=>[t.ProductImage&&t.ProductImage.length?(o(),c("img",{key:0,src:t.ProductImage[0].image,class:"product-thumb",alt:""},null,8,ut)):(o(),c("span",it,"-"))]),tags:e(({record:t})=>{var s;return[(s=t.tags)!=null&&s.length?(o(),c("div",ct,[(o(!0),c($,null,B(t.tags,g=>(o(),d(p,{key:g},{default:e(()=>[i(r(g),1)]),_:2},1024))),128))])):(o(),c("span",rt,"—"))]}),show_type:e(({record:t})=>[i(r(t.show_type_str),1)]),accounting:e(({record:t})=>[t.accounting_stock?(o(),c("div",dt,[a[4]||(a[4]=i(" موجودی: ",-1)),P("span",{class:K(I(t)<=0?"text-danger":"")},r(t.accounting_stock.weight!=null?`${Number(t.accounting_stock.weight)} گرم`:`${Number(t.accounting_stock.count)} عدد`),3)])):_("",!0),!t.ProductImage||!t.ProductImage.length?(o(),d(p,{key:1,color:"orange"},{default:e(()=>[...a[5]||(a[5]=[i("بدون تصویر — در اپ پنهان",-1)])]),_:1})):t.accounting_stock&&I(t)<=0?(o(),d(p,{key:2,color:"red"},{default:e(()=>[...a[6]||(a[6]=[i("ناموجود در حسابداری",-1)])]),_:1})):_("",!0)]),op:e(({record:t})=>[V.value?_("",!0):(o(),c("div",mt,[k("product.list.edit")?(o(),d(C,{key:0,title:"ویرایش"},{default:e(()=>[n(v(J),{class:"cursor-pointer mx-1 text-primary",onClick:s=>O(t.id)},null,8,["onClick"])]),_:2},1024)):_("",!0),k("product.list.view")?(o(),d(C,{key:1,title:"اطلاعات جامع"},{default:e(()=>[n(v(j),{class:"cursor-pointer mx-1 text-warning",onClick:s=>S(t)},null,8,["onClick"])]),_:2},1024)):_("",!0),k("product.list.remove")?(o(),d(C,{key:2,title:"حذف"},{default:e(()=>[n(z,{placement:"top","ok-text":"بله","cancel-text":"خیر",onConfirm:s=>M(t.id)},{title:e(()=>[...a[7]||(a[7]=[P("p",null,"آیا مطمئن به حذف محصول مورد نظر هستید ؟",-1)])]),default:e(()=>[n(v(G),{class:"cursor-pointer mx-1 text-danger"})]),_:1},8,["onConfirm"])]),_:2},1024)):_("",!0)]))]),_:1},8,["modelValue","model"]),n(q,{open:y.value,"onUpdate:open":a[3]||(a[3]=t=>y.value=t),title:"اطلاعات جامع محصول",width:"70%","wrap-class-name":"detail-modal"},{footer:e(()=>[n(X,{onClick:a[2]||(a[2]=t=>y.value=!1)},{default:e(()=>[...a[8]||(a[8]=[i("بستن",-1)])]),_:1})]),default:e(()=>{var t;return[u.value?(o(),c("div",_t,[n(R,{bordered:"",size:"small",column:{xxl:2,xl:2,lg:2,md:2,sm:2,xs:1}},{default:e(()=>[n(f,{label:"نام محصول"},{default:e(()=>[i(r(u.value.title),1)]),_:1}),n(f,{label:"کد محصول"},{default:e(()=>[i(r(u.value.product_code||"-"),1)]),_:1}),n(f,{label:"برند"},{default:e(()=>{var s;return[i(r(((s=u.value.brand)==null?void 0:s.title)||"-"),1)]}),_:1}),n(f,{label:"دسته بندی"},{default:e(()=>{var s;return[i(r(((s=u.value.category)==null?void 0:s.title)||"-"),1)]}),_:1}),n(f,{label:"برچسب‌ها"},{default:e(()=>{var s;return[(s=u.value.tags)!=null&&s.length?(o(!0),c($,{key:0},B(u.value.tags,g=>(o(),d(p,{key:g},{default:e(()=>[i(r(g),1)]),_:2},1024))),128)):(o(),c("span",pt,"-"))]}),_:1}),v(x).isSuperAdmin?(o(),d(f,{key:0,label:"نوع نمایش"},{default:e(()=>[i(r(u.value.show_type_str),1)]),_:1})):_("",!0),n(f,{label:"تعداد تنوع"},{default:e(()=>{var s;return[i(r(((s=u.value.variants_all)==null?void 0:s.length)??u.value.variants_count??0),1)]}),_:1})]),_:1}),(t=u.value.variants_all)!=null&&t.length?(o(),d(T,{key:0,class:"mt-4",size:"small","data-source":u.value.variants_all,columns:E,pagination:!1,"row-key":"id"},null,8,["data-source"])):_("",!0)])):(o(),d(U,{key:1}))]}),_:1},8,["open"])]),_:1})])}}}),Pt=tt(ft,[["__scopeId","data-v-78418fa2"]]);export{Pt as default}; diff --git a/apps/admin-panel/dist/assets/PromotionForm-0qEJgxJk.js b/apps/admin-panel/dist/assets/PromotionForm-0qEJgxJk.js new file mode 100644 index 0000000..9478885 --- /dev/null +++ b/apps/admin-panel/dist/assets/PromotionForm-0qEJgxJk.js @@ -0,0 +1 @@ +import{d as h,x as ee,y as U,a as s,h as O,w as a,k as te,m as C,z as q,G,r as p,o as d,p as H,c as o,f as r,i as m,b as y,e as b,F as w,H as le,l as ae,t as g,_ as oe}from"./index-CuIWfDbM.js";import{o as ue}from"./select--BgT6D7O.js";import{_ as de}from"./BaseFormModal.vue_vue_type_style_index_0_lang-DXuLuiBZ.js";const ne={class:"grid-4 grid-4--tight"},ie={class:"grid-4 grid-4--tight"},re=h({__name:"PromotionForm",props:{title:{default:"تعریف تخفیف"},allowCustomerScope:{type:Boolean,default:!0},open:{type:Boolean},id:{}},emits:["update:open","success"],setup(_,{emit:I}){const M=_,P=I,B=M.open!==void 0,A=te(),J=ae(),k=B?M.id:A.params.id,Y=C(!1),D=C([]),R=C([]),N=C([]),j=C([]),l=q({type:1,title:"",description:"",discount_percent:void 0,use_only:1,is_active:!0,start:void 0,end:void 0,product_id:void 0,category_id:void 0,customer_id:void 0,brand_id:void 0}),v=q({});function V(){l.product_id=void 0,l.category_id=void 0,l.customer_id=void 0,l.brand_id=void 0}function c(u,e){return ue(e).toLowerCase().includes(u.toLowerCase())}function K(){return Object.keys(v).forEach(u=>delete v[u]),l.title||(v.title="لطفا مقدار را وارد کنید"),(l.discount_percent===void 0||l.discount_percent===null)&&(v.discount_percent="لطفا مقدار را وارد کنید"),Object.keys(v).length===0}async function F(){var u,e;if(K())try{Y.value=!0,k?await U.put(`product/variant/promotion/${k}`,l):await U.post("product/variant/promotion",l),G.info("اطلاعات با موفقیت به ثبت رسید."),B?(P("success"),P("update:open",!1)):J.push("/major/promotion/list")}catch(i){G.error(((e=(u=i==null?void 0:i.response)==null?void 0:u.data)==null?void 0:e.message)??"خطا در ثبت اطلاعات.")}finally{Y.value=!1}}return ee(async()=>{try{const[u,e,i]=await Promise.all([U.post("products",{page:1,limit:500}),U.post("category",{page:1,limit:500}),U.get("brand")]);D.value=u.data.rows??[],R.value=e.data.rows??[],j.value=i.data??[]}catch(u){console.log(u)}if(M.allowCustomerScope)try{const{data:u}=await U.get("query/customer");N.value=u}catch(u){console.log(u)}if(k)try{const{data:u}=await U.get(`admin/promotions/${k}`);Object.assign(l,{type:u.type??1,title:u.title??"",description:u.description??"",discount_percent:u.discount_percent!==null?Number(u.discount_percent):void 0,use_only:u.use_only??1,is_active:u.is_active??!0,start:u.start?String(u.start).slice(0,10):void 0,end:u.end?String(u.end).slice(0,10):void 0,product_id:u.product_id??void 0,category_id:u.category_id??void 0,customer_id:u.customer_id??void 0,brand_id:u.brand_id??void 0})}catch(u){console.log(u)}}),(u,e)=>{const i=p("a-select-option"),f=p("a-select"),n=p("a-form-item"),$=p("a-input"),z=p("a-input-number"),x=p("a-date-picker"),S=p("a-radio"),L=p("a-radio-group"),T=p("a-switch"),E=p("a-textarea"),Q=p("a-button"),W=p("a-card"),X=p("a-form"),Z=p("a-spin");return B?(d(),s(de,{key:0,open:!!_.open,id:O(k),"add-title":_.title,"edit-title":_.title,loading:Y.value,submitting:Y.value,width:"lg","onUpdate:open":e[12]||(e[12]=t=>u.$emit("update:open",t)),onSubmit:F},{default:a(()=>[H("div",ne,[o(n,{label:"نوع تخفیف"},{default:a(()=>[o(f,{value:l.type,"onUpdate:value":e[0]||(e[0]=t=>l.type=t),disabled:!!O(k),onChange:V},{default:a(()=>[o(i,{value:1},{default:a(()=>[...e[25]||(e[25]=[r("محصولات",-1)])]),_:1}),o(i,{value:2},{default:a(()=>[...e[26]||(e[26]=[r("دسته بندی",-1)])]),_:1}),_.allowCustomerScope?(d(),s(i,{key:0,value:3},{default:a(()=>[...e[27]||(e[27]=[r("مشتری",-1)])]),_:1})):m("",!0),o(i,{value:4},{default:a(()=>[...e[28]||(e[28]=[r("برند",-1)])]),_:1})]),_:1},8,["value","disabled"])]),_:1}),o(n,{label:"عنوان","validate-status":v.title?"error":"",help:v.title},{default:a(()=>[o($,{value:l.title,"onUpdate:value":e[1]||(e[1]=t=>l.title=t)},null,8,["value"])]),_:1},8,["validate-status","help"]),l.type===1?(d(),s(n,{key:0,label:"محصول"},{default:a(()=>[o(f,{value:l.product_id,"onUpdate:value":e[2]||(e[2]=t=>l.product_id=t),"show-search":"","allow-clear":"","filter-option":c,placeholder:"انتخاب کنید"},{default:a(()=>[(d(!0),y(w,null,b(D.value,t=>(d(),s(i,{key:t.id,value:t.id},{default:a(()=>[r(g(t.title),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1})):m("",!0),l.type===2?(d(),s(n,{key:1,label:"دسته بندی"},{default:a(()=>[o(f,{value:l.category_id,"onUpdate:value":e[3]||(e[3]=t=>l.category_id=t),"show-search":"","allow-clear":"","filter-option":c,placeholder:"انتخاب کنید"},{default:a(()=>[(d(!0),y(w,null,b(R.value,t=>(d(),s(i,{key:t.id,value:t.id},{default:a(()=>[r(g(t.title),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1})):m("",!0),l.type===3&&_.allowCustomerScope?(d(),s(n,{key:2,label:"مشتری"},{default:a(()=>[o(f,{value:l.customer_id,"onUpdate:value":e[4]||(e[4]=t=>l.customer_id=t),"show-search":"","allow-clear":"","filter-option":c,placeholder:"انتخاب کنید"},{default:a(()=>[(d(!0),y(w,null,b(N.value,t=>(d(),s(i,{key:t.id,value:t.id},{default:a(()=>[r(g(t.name),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1})):m("",!0),l.type===4?(d(),s(n,{key:3,label:"برند"},{default:a(()=>[o(f,{value:l.brand_id,"onUpdate:value":e[5]||(e[5]=t=>l.brand_id=t),"show-search":"","allow-clear":"","filter-option":c,placeholder:"انتخاب کنید"},{default:a(()=>[(d(!0),y(w,null,b(j.value,t=>(d(),s(i,{key:t.id,value:t.id},{default:a(()=>[r(g(t.title),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1})):m("",!0),o(n,{label:"درصد تخفیف","validate-status":v.discount_percent?"error":"",help:v.discount_percent},{default:a(()=>[o(z,{value:l.discount_percent,"onUpdate:value":e[6]||(e[6]=t=>l.discount_percent=t),class:"w-full",min:0,max:100},null,8,["value"])]),_:1},8,["validate-status","help"]),o(n,{label:"تاریخ شروع"},{default:a(()=>[o(x,{value:l.start,"onUpdate:value":e[7]||(e[7]=t=>l.start=t),class:"w-full","value-format":"YYYY-MM-DD"},null,8,["value"])]),_:1}),o(n,{label:"تاریخ پایان"},{default:a(()=>[o(x,{value:l.end,"onUpdate:value":e[8]||(e[8]=t=>l.end=t),class:"w-full","value-format":"YYYY-MM-DD"},null,8,["value"])]),_:1}),o(n,{label:"قابلیت استفاده"},{default:a(()=>[o(L,{value:l.use_only,"onUpdate:value":e[9]||(e[9]=t=>l.use_only=t)},{default:a(()=>[o(S,{value:1},{default:a(()=>[...e[29]||(e[29]=[r(" فقط یکبار",-1)])]),_:1}),o(S,{value:2},{default:a(()=>[...e[30]||(e[30]=[r("تا تاریخ پایان",-1)])]),_:1})]),_:1},8,["value"])]),_:1}),o(n,{label:"وضعیت تخفیف"},{default:a(()=>[o(T,{checked:l.is_active,"onUpdate:checked":e[10]||(e[10]=t=>l.is_active=t)},null,8,["checked"])]),_:1})]),o(n,{label:"توضیحات"},{default:a(()=>[o(E,{value:l.description,"onUpdate:value":e[11]||(e[11]=t=>l.description=t),"auto-size":{minRows:3,maxRows:6}},null,8,["value"])]),_:1})]),_:1},8,["open","id","add-title","edit-title","loading","submitting"])):(d(),s(Z,{key:1,spinning:Y.value},{default:a(()=>[o(X,{layout:"vertical",onSubmit:le(F,["prevent"])},{default:a(()=>[o(W,{title:_.title,class:"mb-base page-card"},{default:a(()=>[H("div",ie,[o(n,{label:"نوع تخفیف"},{default:a(()=>[o(f,{value:l.type,"onUpdate:value":e[13]||(e[13]=t=>l.type=t),disabled:!!O(k),onChange:V},{default:a(()=>[o(i,{value:1},{default:a(()=>[...e[31]||(e[31]=[r("محصولات",-1)])]),_:1}),o(i,{value:2},{default:a(()=>[...e[32]||(e[32]=[r("دسته بندی",-1)])]),_:1}),_.allowCustomerScope?(d(),s(i,{key:0,value:3},{default:a(()=>[...e[33]||(e[33]=[r("مشتری",-1)])]),_:1})):m("",!0),o(i,{value:4},{default:a(()=>[...e[34]||(e[34]=[r("برند",-1)])]),_:1})]),_:1},8,["value","disabled"])]),_:1}),o(n,{label:"عنوان","validate-status":v.title?"error":"",help:v.title},{default:a(()=>[o($,{value:l.title,"onUpdate:value":e[14]||(e[14]=t=>l.title=t)},null,8,["value"])]),_:1},8,["validate-status","help"]),l.type===1?(d(),s(n,{key:0,label:"محصول"},{default:a(()=>[o(f,{value:l.product_id,"onUpdate:value":e[15]||(e[15]=t=>l.product_id=t),"show-search":"","allow-clear":"","filter-option":c,placeholder:"انتخاب کنید"},{default:a(()=>[(d(!0),y(w,null,b(D.value,t=>(d(),s(i,{key:t.id,value:t.id},{default:a(()=>[r(g(t.title),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1})):m("",!0),l.type===2?(d(),s(n,{key:1,label:"دسته بندی"},{default:a(()=>[o(f,{value:l.category_id,"onUpdate:value":e[16]||(e[16]=t=>l.category_id=t),"show-search":"","allow-clear":"","filter-option":c,placeholder:"انتخاب کنید"},{default:a(()=>[(d(!0),y(w,null,b(R.value,t=>(d(),s(i,{key:t.id,value:t.id},{default:a(()=>[r(g(t.title),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1})):m("",!0),l.type===3&&_.allowCustomerScope?(d(),s(n,{key:2,label:"مشتری"},{default:a(()=>[o(f,{value:l.customer_id,"onUpdate:value":e[17]||(e[17]=t=>l.customer_id=t),"show-search":"","allow-clear":"","filter-option":c,placeholder:"انتخاب کنید"},{default:a(()=>[(d(!0),y(w,null,b(N.value,t=>(d(),s(i,{key:t.id,value:t.id},{default:a(()=>[r(g(t.name),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1})):m("",!0),l.type===4?(d(),s(n,{key:3,label:"برند"},{default:a(()=>[o(f,{value:l.brand_id,"onUpdate:value":e[18]||(e[18]=t=>l.brand_id=t),"show-search":"","allow-clear":"","filter-option":c,placeholder:"انتخاب کنید"},{default:a(()=>[(d(!0),y(w,null,b(j.value,t=>(d(),s(i,{key:t.id,value:t.id},{default:a(()=>[r(g(t.title),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1})):m("",!0),o(n,{label:"درصد تخفیف","validate-status":v.discount_percent?"error":"",help:v.discount_percent},{default:a(()=>[o(z,{value:l.discount_percent,"onUpdate:value":e[19]||(e[19]=t=>l.discount_percent=t),class:"w-full",min:0,max:100},null,8,["value"])]),_:1},8,["validate-status","help"]),o(n,{label:"تاریخ شروع"},{default:a(()=>[o(x,{value:l.start,"onUpdate:value":e[20]||(e[20]=t=>l.start=t),class:"w-full","value-format":"YYYY-MM-DD"},null,8,["value"])]),_:1}),o(n,{label:"تاریخ پایان"},{default:a(()=>[o(x,{value:l.end,"onUpdate:value":e[21]||(e[21]=t=>l.end=t),class:"w-full","value-format":"YYYY-MM-DD"},null,8,["value"])]),_:1}),o(n,{label:"قابلیت استفاده"},{default:a(()=>[o(L,{value:l.use_only,"onUpdate:value":e[22]||(e[22]=t=>l.use_only=t)},{default:a(()=>[o(S,{value:1},{default:a(()=>[...e[35]||(e[35]=[r(" فقط یکبار",-1)])]),_:1}),o(S,{value:2},{default:a(()=>[...e[36]||(e[36]=[r("تا تاریخ پایان",-1)])]),_:1})]),_:1},8,["value"])]),_:1}),o(n,{label:"وضعیت تخفیف"},{default:a(()=>[o(T,{checked:l.is_active,"onUpdate:checked":e[23]||(e[23]=t=>l.is_active=t)},null,8,["checked"])]),_:1})]),o(n,{label:"توضیحات"},{default:a(()=>[o(E,{value:l.description,"onUpdate:value":e[24]||(e[24]=t=>l.description=t),"auto-size":{minRows:3,maxRows:6}},null,8,["value"])]),_:1}),o(Q,{type:"primary",class:"form-submit",onClick:F},{default:a(()=>[...e[37]||(e[37]=[r("ثبت اطلاعات",-1)])]),_:1})]),_:1},8,["title"])]),_:1})]),_:1},8,["spinning"]))}}}),fe=oe(re,[["__scopeId","data-v-30a94998"]]);export{fe as P}; diff --git a/apps/admin-panel/dist/assets/PromotionForm-52rIR-eP.js b/apps/admin-panel/dist/assets/PromotionForm-52rIR-eP.js deleted file mode 100644 index eb2b66a..0000000 --- a/apps/admin-panel/dist/assets/PromotionForm-52rIR-eP.js +++ /dev/null @@ -1 +0,0 @@ -import{d as h,x as ee,y as U,a as s,h as O,w as a,k as te,m as C,z as q,G,r as v,o as d,p as H,c as o,f as r,i as m,b as y,e as b,F as w,H as le,l as ae,t as g,_ as oe}from"./index-C9T3Vski.js";import{_ as ue}from"./BaseFormModal.vue_vue_type_style_index_0_lang-Du4lPDHl.js";const de={class:"grid-4 grid-4--tight"},ne={class:"grid-4 grid-4--tight"},ie=h({__name:"PromotionForm",props:{title:{default:"تعریف تخفیف"},allowCustomerScope:{type:Boolean,default:!0},open:{type:Boolean},id:{}},emits:["update:open","success"],setup(_,{emit:I}){const M=_,P=I,B=M.open!==void 0,A=te(),J=ae(),k=B?M.id:A.params.id,Y=C(!1),D=C([]),R=C([]),N=C([]),j=C([]),l=q({type:1,title:"",description:"",discount_percent:void 0,use_only:1,is_active:!0,start:void 0,end:void 0,product_id:void 0,category_id:void 0,customer_id:void 0,brand_id:void 0}),p=q({});function V(){l.product_id=void 0,l.category_id=void 0,l.customer_id=void 0,l.brand_id=void 0}function c(u,e){var n,f;return String(((f=(n=e==null?void 0:e.children)==null?void 0:n[0])==null?void 0:f.children)??"").toLowerCase().includes(u.toLowerCase())}function K(){return Object.keys(p).forEach(u=>delete p[u]),l.title||(p.title="لطفا مقدار را وارد کنید"),(l.discount_percent===void 0||l.discount_percent===null)&&(p.discount_percent="لطفا مقدار را وارد کنید"),Object.keys(p).length===0}async function F(){var u,e;if(K())try{Y.value=!0,k?await U.put(`product/variant/promotion/${k}`,l):await U.post("product/variant/promotion",l),G.info("اطلاعات با موفقیت به ثبت رسید."),B?(P("success"),P("update:open",!1)):J.push("/major/promotion/list")}catch(n){G.error(((e=(u=n==null?void 0:n.response)==null?void 0:u.data)==null?void 0:e.message)??"خطا در ثبت اطلاعات.")}finally{Y.value=!1}}return ee(async()=>{try{const[u,e,n]=await Promise.all([U.post("products",{page:1,limit:500}),U.post("category",{page:1,limit:500}),U.get("brand")]);D.value=u.data.rows??[],R.value=e.data.rows??[],j.value=n.data??[]}catch(u){console.log(u)}if(M.allowCustomerScope)try{const{data:u}=await U.get("query/customer");N.value=u}catch(u){console.log(u)}if(k)try{const{data:u}=await U.get(`admin/promotions/${k}`);Object.assign(l,{type:u.type??1,title:u.title??"",description:u.description??"",discount_percent:u.discount_percent!==null?Number(u.discount_percent):void 0,use_only:u.use_only??1,is_active:u.is_active??!0,start:u.start?String(u.start).slice(0,10):void 0,end:u.end?String(u.end).slice(0,10):void 0,product_id:u.product_id??void 0,category_id:u.category_id??void 0,customer_id:u.customer_id??void 0,brand_id:u.brand_id??void 0})}catch(u){console.log(u)}}),(u,e)=>{const n=v("a-select-option"),f=v("a-select"),i=v("a-form-item"),$=v("a-input"),z=v("a-input-number"),S=v("a-date-picker"),x=v("a-radio"),L=v("a-radio-group"),E=v("a-switch"),T=v("a-textarea"),Q=v("a-button"),W=v("a-card"),X=v("a-form"),Z=v("a-spin");return B?(d(),s(ue,{key:0,open:!!_.open,id:O(k),"add-title":_.title,"edit-title":_.title,loading:Y.value,submitting:Y.value,width:"lg","onUpdate:open":e[12]||(e[12]=t=>u.$emit("update:open",t)),onSubmit:F},{default:a(()=>[H("div",de,[o(i,{label:"نوع تخفیف"},{default:a(()=>[o(f,{value:l.type,"onUpdate:value":e[0]||(e[0]=t=>l.type=t),disabled:!!O(k),onChange:V},{default:a(()=>[o(n,{value:1},{default:a(()=>[...e[25]||(e[25]=[r("محصولات",-1)])]),_:1}),o(n,{value:2},{default:a(()=>[...e[26]||(e[26]=[r("دسته بندی",-1)])]),_:1}),_.allowCustomerScope?(d(),s(n,{key:0,value:3},{default:a(()=>[...e[27]||(e[27]=[r("مشتری",-1)])]),_:1})):m("",!0),o(n,{value:4},{default:a(()=>[...e[28]||(e[28]=[r("برند",-1)])]),_:1})]),_:1},8,["value","disabled"])]),_:1}),o(i,{label:"عنوان","validate-status":p.title?"error":"",help:p.title},{default:a(()=>[o($,{value:l.title,"onUpdate:value":e[1]||(e[1]=t=>l.title=t)},null,8,["value"])]),_:1},8,["validate-status","help"]),l.type===1?(d(),s(i,{key:0,label:"محصول"},{default:a(()=>[o(f,{value:l.product_id,"onUpdate:value":e[2]||(e[2]=t=>l.product_id=t),"show-search":"","allow-clear":"","filter-option":c,placeholder:"انتخاب کنید"},{default:a(()=>[(d(!0),y(w,null,b(D.value,t=>(d(),s(n,{key:t.id,value:t.id},{default:a(()=>[r(g(t.title),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1})):m("",!0),l.type===2?(d(),s(i,{key:1,label:"دسته بندی"},{default:a(()=>[o(f,{value:l.category_id,"onUpdate:value":e[3]||(e[3]=t=>l.category_id=t),"show-search":"","allow-clear":"","filter-option":c,placeholder:"انتخاب کنید"},{default:a(()=>[(d(!0),y(w,null,b(R.value,t=>(d(),s(n,{key:t.id,value:t.id},{default:a(()=>[r(g(t.title),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1})):m("",!0),l.type===3&&_.allowCustomerScope?(d(),s(i,{key:2,label:"مشتری"},{default:a(()=>[o(f,{value:l.customer_id,"onUpdate:value":e[4]||(e[4]=t=>l.customer_id=t),"show-search":"","allow-clear":"","filter-option":c,placeholder:"انتخاب کنید"},{default:a(()=>[(d(!0),y(w,null,b(N.value,t=>(d(),s(n,{key:t.id,value:t.id},{default:a(()=>[r(g(t.name),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1})):m("",!0),l.type===4?(d(),s(i,{key:3,label:"برند"},{default:a(()=>[o(f,{value:l.brand_id,"onUpdate:value":e[5]||(e[5]=t=>l.brand_id=t),"show-search":"","allow-clear":"","filter-option":c,placeholder:"انتخاب کنید"},{default:a(()=>[(d(!0),y(w,null,b(j.value,t=>(d(),s(n,{key:t.id,value:t.id},{default:a(()=>[r(g(t.title),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1})):m("",!0),o(i,{label:"درصد تخفیف","validate-status":p.discount_percent?"error":"",help:p.discount_percent},{default:a(()=>[o(z,{value:l.discount_percent,"onUpdate:value":e[6]||(e[6]=t=>l.discount_percent=t),class:"w-full",min:0,max:100},null,8,["value"])]),_:1},8,["validate-status","help"]),o(i,{label:"تاریخ شروع"},{default:a(()=>[o(S,{value:l.start,"onUpdate:value":e[7]||(e[7]=t=>l.start=t),class:"w-full","value-format":"YYYY-MM-DD"},null,8,["value"])]),_:1}),o(i,{label:"تاریخ پایان"},{default:a(()=>[o(S,{value:l.end,"onUpdate:value":e[8]||(e[8]=t=>l.end=t),class:"w-full","value-format":"YYYY-MM-DD"},null,8,["value"])]),_:1}),o(i,{label:"قابلیت استفاده"},{default:a(()=>[o(L,{value:l.use_only,"onUpdate:value":e[9]||(e[9]=t=>l.use_only=t)},{default:a(()=>[o(x,{value:1},{default:a(()=>[...e[29]||(e[29]=[r(" فقط یکبار",-1)])]),_:1}),o(x,{value:2},{default:a(()=>[...e[30]||(e[30]=[r("تا تاریخ پایان",-1)])]),_:1})]),_:1},8,["value"])]),_:1}),o(i,{label:"وضعیت تخفیف"},{default:a(()=>[o(E,{checked:l.is_active,"onUpdate:checked":e[10]||(e[10]=t=>l.is_active=t)},null,8,["checked"])]),_:1})]),o(i,{label:"توضیحات"},{default:a(()=>[o(T,{value:l.description,"onUpdate:value":e[11]||(e[11]=t=>l.description=t),"auto-size":{minRows:3,maxRows:6}},null,8,["value"])]),_:1})]),_:1},8,["open","id","add-title","edit-title","loading","submitting"])):(d(),s(Z,{key:1,spinning:Y.value},{default:a(()=>[o(X,{layout:"vertical",onSubmit:le(F,["prevent"])},{default:a(()=>[o(W,{title:_.title,class:"mb-base page-card"},{default:a(()=>[H("div",ne,[o(i,{label:"نوع تخفیف"},{default:a(()=>[o(f,{value:l.type,"onUpdate:value":e[13]||(e[13]=t=>l.type=t),disabled:!!O(k),onChange:V},{default:a(()=>[o(n,{value:1},{default:a(()=>[...e[31]||(e[31]=[r("محصولات",-1)])]),_:1}),o(n,{value:2},{default:a(()=>[...e[32]||(e[32]=[r("دسته بندی",-1)])]),_:1}),_.allowCustomerScope?(d(),s(n,{key:0,value:3},{default:a(()=>[...e[33]||(e[33]=[r("مشتری",-1)])]),_:1})):m("",!0),o(n,{value:4},{default:a(()=>[...e[34]||(e[34]=[r("برند",-1)])]),_:1})]),_:1},8,["value","disabled"])]),_:1}),o(i,{label:"عنوان","validate-status":p.title?"error":"",help:p.title},{default:a(()=>[o($,{value:l.title,"onUpdate:value":e[14]||(e[14]=t=>l.title=t)},null,8,["value"])]),_:1},8,["validate-status","help"]),l.type===1?(d(),s(i,{key:0,label:"محصول"},{default:a(()=>[o(f,{value:l.product_id,"onUpdate:value":e[15]||(e[15]=t=>l.product_id=t),"show-search":"","allow-clear":"","filter-option":c,placeholder:"انتخاب کنید"},{default:a(()=>[(d(!0),y(w,null,b(D.value,t=>(d(),s(n,{key:t.id,value:t.id},{default:a(()=>[r(g(t.title),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1})):m("",!0),l.type===2?(d(),s(i,{key:1,label:"دسته بندی"},{default:a(()=>[o(f,{value:l.category_id,"onUpdate:value":e[16]||(e[16]=t=>l.category_id=t),"show-search":"","allow-clear":"","filter-option":c,placeholder:"انتخاب کنید"},{default:a(()=>[(d(!0),y(w,null,b(R.value,t=>(d(),s(n,{key:t.id,value:t.id},{default:a(()=>[r(g(t.title),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1})):m("",!0),l.type===3&&_.allowCustomerScope?(d(),s(i,{key:2,label:"مشتری"},{default:a(()=>[o(f,{value:l.customer_id,"onUpdate:value":e[17]||(e[17]=t=>l.customer_id=t),"show-search":"","allow-clear":"","filter-option":c,placeholder:"انتخاب کنید"},{default:a(()=>[(d(!0),y(w,null,b(N.value,t=>(d(),s(n,{key:t.id,value:t.id},{default:a(()=>[r(g(t.name),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1})):m("",!0),l.type===4?(d(),s(i,{key:3,label:"برند"},{default:a(()=>[o(f,{value:l.brand_id,"onUpdate:value":e[18]||(e[18]=t=>l.brand_id=t),"show-search":"","allow-clear":"","filter-option":c,placeholder:"انتخاب کنید"},{default:a(()=>[(d(!0),y(w,null,b(j.value,t=>(d(),s(n,{key:t.id,value:t.id},{default:a(()=>[r(g(t.title),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1})):m("",!0),o(i,{label:"درصد تخفیف","validate-status":p.discount_percent?"error":"",help:p.discount_percent},{default:a(()=>[o(z,{value:l.discount_percent,"onUpdate:value":e[19]||(e[19]=t=>l.discount_percent=t),class:"w-full",min:0,max:100},null,8,["value"])]),_:1},8,["validate-status","help"]),o(i,{label:"تاریخ شروع"},{default:a(()=>[o(S,{value:l.start,"onUpdate:value":e[20]||(e[20]=t=>l.start=t),class:"w-full","value-format":"YYYY-MM-DD"},null,8,["value"])]),_:1}),o(i,{label:"تاریخ پایان"},{default:a(()=>[o(S,{value:l.end,"onUpdate:value":e[21]||(e[21]=t=>l.end=t),class:"w-full","value-format":"YYYY-MM-DD"},null,8,["value"])]),_:1}),o(i,{label:"قابلیت استفاده"},{default:a(()=>[o(L,{value:l.use_only,"onUpdate:value":e[22]||(e[22]=t=>l.use_only=t)},{default:a(()=>[o(x,{value:1},{default:a(()=>[...e[35]||(e[35]=[r(" فقط یکبار",-1)])]),_:1}),o(x,{value:2},{default:a(()=>[...e[36]||(e[36]=[r("تا تاریخ پایان",-1)])]),_:1})]),_:1},8,["value"])]),_:1}),o(i,{label:"وضعیت تخفیف"},{default:a(()=>[o(E,{checked:l.is_active,"onUpdate:checked":e[23]||(e[23]=t=>l.is_active=t)},null,8,["checked"])]),_:1})]),o(i,{label:"توضیحات"},{default:a(()=>[o(T,{value:l.description,"onUpdate:value":e[24]||(e[24]=t=>l.description=t),"auto-size":{minRows:3,maxRows:6}},null,8,["value"])]),_:1}),o(Q,{type:"primary",class:"form-submit",onClick:F},{default:a(()=>[...e[37]||(e[37]=[r("ثبت اطلاعات",-1)])]),_:1})]),_:1},8,["title"])]),_:1})]),_:1},8,["spinning"]))}}}),ve=oe(ie,[["__scopeId","data-v-ff6809ef"]]);export{ve as P}; diff --git a/apps/admin-panel/dist/assets/PromotionForm-BbHzArCn.css b/apps/admin-panel/dist/assets/PromotionForm-BbHzArCn.css deleted file mode 100644 index 647daeb..0000000 --- a/apps/admin-panel/dist/assets/PromotionForm-BbHzArCn.css +++ /dev/null @@ -1 +0,0 @@ -.grid-4--tight[data-v-ff6809ef]{gap:.5rem} diff --git a/apps/admin-panel/dist/assets/PromotionForm-CMK9v6id.css b/apps/admin-panel/dist/assets/PromotionForm-CMK9v6id.css new file mode 100644 index 0000000..9ea88dd --- /dev/null +++ b/apps/admin-panel/dist/assets/PromotionForm-CMK9v6id.css @@ -0,0 +1 @@ +.grid-4--tight[data-v-30a94998]{gap:.5rem} diff --git a/apps/admin-panel/dist/assets/ReagentCustomer-psdi2cEz.js b/apps/admin-panel/dist/assets/ReagentCustomer-HYOR5FLS.js similarity index 94% rename from apps/admin-panel/dist/assets/ReagentCustomer-psdi2cEz.js rename to apps/admin-panel/dist/assets/ReagentCustomer-HYOR5FLS.js index 2d1de33..ee6b8f6 100644 --- a/apps/admin-panel/dist/assets/ReagentCustomer-psdi2cEz.js +++ b/apps/admin-panel/dist/assets/ReagentCustomer-HYOR5FLS.js @@ -1 +1 @@ -import{d as j,x as q,y as g,a as I,w as i,k as J,m as R,z as O,r as _,o as A,c as l,p as t,h as m,V as B,f as U,W as P,H as F,l as M,G as S,_ as T}from"./index-C9T3Vski.js";import{_ as D}from"./CityTreeSelect.vue_vue_type_script_setup_true_lang-82fzpZxR.js";import{_ as G}from"./ImageUploadInput.vue_vue_type_script_setup_true_lang-Bjo3vw78.js";import{U as H}from"./UserOutlined-Csu4xHRr.js";import{S as L}from"./ShopOutlined-BBtTJF4e.js";import{E as Q}from"./EnvironmentOutlined-D8YNH9-a.js";import{C as W}from"./CameraOutlined-C6gLi8-9.js";import{P as X}from"./PercentageOutlined-CxUloK5J.js";const K={class:"pf-layout"},Y={class:"pf-main"},Z={class:"pf-section"},ee={class:"pf-section__head"},ae={class:"pf-section__icon"},se={class:"pf-grid-2"},te={class:"pf-section"},le={class:"pf-section__head"},ne={class:"pf-section__icon"},oe={class:"pf-grid-3"},ie={class:"pf-section"},de={class:"pf-section__head"},re={class:"pf-section__icon"},ue={class:"pf-side"},pe={class:"pf-section"},me={class:"pf-section__head"},_e={class:"pf-section__icon"},ce={class:"avatar-slot"},fe={class:"pf-section"},ve={class:"pf-section__head"},ge={class:"pf-section__icon"},be={class:"pf-actions"},we={class:"pf-actions__hint"},h="لطفا مقدار را وارد کنید",ye=j({__name:"ReagentCustomer",setup(he){const E=J(),C=M(),p=E.params.id,b=R(!1),a=O({fname:"",lname:"",password:"",mobile:"",mcode:"",store_name:"",pasazh_name:"",address:"",percent:void 0,ncode:"",phone:"",city_id:void 0,gram_level:void 0,image_id:"",image_url:null}),x=R([]),d=O({}),N=O({});function $(r=[]){const e={};for(const[s,n]of Object.entries(a))r.includes(s)||JSON.stringify(n)!==JSON.stringify(N[s])&&(e[s]=n);return e}function z(r){a.image_id=r.id??""}async function V(r){var s;if(a.city_id=r,!r)return;let e=(s=x.value.find(n=>n.id===r))==null?void 0:s.percent;if(!e)try{const{data:n}=await g.get(`cities/get-percent-aux/${r}`);e=n}catch(n){console.log(n);return}a.percent=e==null?void 0:Number(e)}async function k(){var r,e,s,n,w,y;if(Object.keys(d).forEach(u=>delete d[u]),a.fname||(d.fname=h),a.lname||(d.lname=h),a.mobile||(d.mobile=h),!p&&!a.password&&(d.password=h),!Object.keys(d).length)try{b.value=!0;const{image_url:u,...c}=a,f=p?$(["image_url","password"]):c;p&&a.password&&(f.password=a.password);const v={...f,role:"SALES_EXPERT"};(!p||"fname"in f||"lname"in f)&&(v.name=`${a.fname} ${a.lname}`.trim()),p?await g.put(`users/${p}`,v):await g.post("users",v),S.info("اطلاعات با موفقیت به ثبت رسید."),C.go(-1)}catch(u){const c=(n=(s=(e=(r=u==null?void 0:u.response)==null?void 0:r.data)==null?void 0:e.errors)==null?void 0:s.mobile)==null?void 0:n[0];S.error(c??((y=(w=u==null?void 0:u.response)==null?void 0:w.data)==null?void 0:y.message)??"خطا در ثبت اطلاعات.")}finally{b.value=!1}}return q(async()=>{var r,e;try{const{data:s}=await g.post("cities/list",{page:1,limit:500});x.value=(s.rows??[]).map(n=>({id:n.id,title:n.title??n.name,parent:n.parent??null,percent:n.percent===null||n.percent===void 0?null:Number(n.percent)}))}catch(s){console.log(s)}if(p)try{const{data:s}=await g.get(`admin/users/${p}`);Object.assign(a,{fname:s.fname??"",lname:s.lname??"",mobile:s.mobile??"",address:s.address??"",percent:s.percent===null?void 0:Number(s.percent),ncode:s.ncode??"",phone:s.phone??"",city_id:s.city_id??void 0,gram_level:s.gram_level===null||s.gram_level===void 0?void 0:Number(s.gram_level),image_id:((r=s.image)==null?void 0:r.id)??"",image_url:((e=s.image)==null?void 0:e.image)??null,store_name:s.store_name??"",pasazh_name:s.pasazh_name??"",mcode:s.mcode??""}),Object.assign(N,JSON.parse(JSON.stringify(a)))}catch(s){console.log(s)}}),(r,e)=>{const s=_("a-input"),n=_("a-form-item"),w=_("a-input-password"),y=_("a-textarea"),u=_("a-input-number"),c=_("a-button"),f=_("a-form"),v=_("a-spin");return A(),I(v,{spinning:b.value},{default:i(()=>[l(f,{layout:"vertical",class:"pf-form",onSubmit:F(k,["prevent"])},{default:i(()=>[t("div",K,[t("div",Y,[t("section",Z,[t("div",ee,[t("span",ae,[l(m(H))]),e[15]||(e[15]=t("div",null,[t("h3",null,"اطلاعات پایه"),t("p",null,"مشخصات هویتی و اطلاعات ورود کارشناس")],-1))]),t("div",se,[l(n,{label:"نام ",required:"","validate-status":d.fname?"error":"",help:d.fname},{default:i(()=>[l(s,{value:a.fname,"onUpdate:value":e[0]||(e[0]=o=>a.fname=o)},null,8,["value"])]),_:1},8,["validate-status","help"]),l(n,{label:"نام خانوادگی",required:"","validate-status":d.lname?"error":"",help:d.lname},{default:i(()=>[l(s,{value:a.lname,"onUpdate:value":e[1]||(e[1]=o=>a.lname=o)},null,8,["value"])]),_:1},8,["validate-status","help"]),l(n,{label:"کد ملی"},{default:i(()=>[l(s,{value:a.ncode,"onUpdate:value":e[2]||(e[2]=o=>a.ncode=o),class:"ltr-input",inputmode:"numeric"},null,8,["value"])]),_:1}),l(n,{label:"تلفن"},{default:i(()=>[l(s,{value:a.phone,"onUpdate:value":e[3]||(e[3]=o=>a.phone=o),class:"ltr-input",inputmode:"tel"},null,8,["value"])]),_:1}),l(n,{label:"شماره تلفن همراه",required:"","validate-status":d.mobile?"error":"",help:d.mobile,class:"mb-0"},{default:i(()=>[l(s,{value:a.mobile,"onUpdate:value":e[4]||(e[4]=o=>a.mobile=o),class:"ltr-input",inputmode:"tel",placeholder:"09xxxxxxxxx"},null,8,["value"])]),_:1},8,["validate-status","help"]),l(n,{label:"رمز عبور",required:!m(p),"validate-status":d.password?"error":"",help:d.password,class:"mb-0"},{default:i(()=>[l(w,{value:a.password,"onUpdate:value":e[5]||(e[5]=o=>a.password=o)},null,8,["value"])]),_:1},8,["required","validate-status","help"])])]),t("section",te,[t("div",le,[t("span",ne,[l(m(L))]),e[16]||(e[16]=t("div",null,[t("h3",null,"اطلاعات تجاری"),t("p",null,"کد و مشخصات فروشگاه")],-1))]),t("div",oe,[l(n,{label:"کد مشتری",class:"mb-0"},{default:i(()=>[l(s,{value:a.mcode,"onUpdate:value":e[6]||(e[6]=o=>a.mcode=o)},null,8,["value"])]),_:1}),l(n,{label:"نام مغازه",class:"mb-0"},{default:i(()=>[l(s,{value:a.store_name,"onUpdate:value":e[7]||(e[7]=o=>a.store_name=o)},null,8,["value"])]),_:1}),l(n,{label:"نام پاساژ",class:"mb-0"},{default:i(()=>[l(s,{value:a.pasazh_name,"onUpdate:value":e[8]||(e[8]=o=>a.pasazh_name=o)},null,8,["value"])]),_:1})])]),t("section",ie,[t("div",de,[t("span",re,[l(m(Q))]),e[17]||(e[17]=t("div",null,[t("h3",null,"آدرس"),t("p",null,"انتخاب شهر، درصد کمیسیون را بر اساس همان شهر پر می‌کند")],-1))]),l(n,{label:"شهر"},{default:i(()=>[l(D,{value:a.city_id,cities:x.value,placeholder:"شهر را انتخاب نمایید",onChange:V},null,8,["value","cities"])]),_:1}),l(n,{label:"آدرس",class:"mb-0"},{default:i(()=>[l(y,{value:a.address,"onUpdate:value":e[9]||(e[9]=o=>a.address=o),"auto-size":{minRows:3,maxRows:5}},null,8,["value"])]),_:1})])]),t("aside",ue,[t("section",pe,[t("div",me,[t("span",_e,[l(m(W))]),e[18]||(e[18]=t("div",null,[t("h3",null,"عکس پروفایل"),t("p",null,"تصویر نمایش داده‌شده برای کارشناس")],-1))]),t("div",ce,[l(G,{modelValue:a.image_url,"onUpdate:modelValue":[e[10]||(e[10]=o=>a.image_url=o),e[11]||(e[11]=o=>{o||(a.image_id="")})],purpose:"reagent.avatar",placeholder:"عکس",onOk:z},null,8,["modelValue"])])]),t("section",fe,[t("div",ve,[t("span",ge,[l(m(X))]),e[19]||(e[19]=t("div",null,[t("h3",null,"کمیسیون و اعتبار"),t("p",null,"درصد کمیسیون و سقف اعتبار")],-1))]),l(n,{label:"درصد کمیسیون"},{default:i(()=>[l(u,{value:a.percent,"onUpdate:value":e[12]||(e[12]=o=>a.percent=o),class:"w-full",step:.1,"addon-after":"٪"},null,8,["value"])]),_:1}),l(n,{label:"سقف اعتبار",class:"mb-0"},{default:i(()=>[l(u,{value:a.gram_level,"onUpdate:value":e[13]||(e[13]=o=>a.gram_level=o),class:"w-full","addon-after":"گرم"},null,8,["value"])]),_:1})])])]),t("div",be,[t("span",we,[l(m(B)),e[20]||(e[20]=U(" فیلدهای ستاره‌دار الزامی هستند.",-1))]),l(c,{onClick:e[14]||(e[14]=o=>m(C).go(-1))},{default:i(()=>[...e[21]||(e[21]=[U("انصراف",-1)])]),_:1}),l(c,{type:"primary",class:"form-submit",loading:b.value,onClick:k},{icon:i(()=>[l(m(P))]),default:i(()=>[e[22]||(e[22]=U(" ثبت اطلاعات ",-1))]),_:1},8,["loading"])])]),_:1})]),_:1},8,["spinning"])}}}),Ee=T(ye,[["__scopeId","data-v-78564364"]]);export{Ee as R}; +import{d as j,x as q,y as g,a as I,w as i,k as J,m as R,z as O,r as _,o as A,c as l,p as t,h as m,V as B,f as U,W as P,H as F,l as M,G as S,_ as T}from"./index-CuIWfDbM.js";import{_ as D}from"./CityTreeSelect.vue_vue_type_script_setup_true_lang-Be--_CeP.js";import{_ as G}from"./ImageUploadInput.vue_vue_type_script_setup_true_lang-Bb4hJ8Y2.js";import{U as H}from"./UserOutlined-aZ-mQgwc.js";import{S as L}from"./ShopOutlined--nD1gJHu.js";import{E as Q}from"./EnvironmentOutlined-BBvjB5-8.js";import{C as W}from"./CameraOutlined-Dx8LoT1m.js";import{P as X}from"./PercentageOutlined-Cooaq8mh.js";const K={class:"pf-layout"},Y={class:"pf-main"},Z={class:"pf-section"},ee={class:"pf-section__head"},ae={class:"pf-section__icon"},se={class:"pf-grid-2"},te={class:"pf-section"},le={class:"pf-section__head"},ne={class:"pf-section__icon"},oe={class:"pf-grid-3"},ie={class:"pf-section"},de={class:"pf-section__head"},re={class:"pf-section__icon"},ue={class:"pf-side"},pe={class:"pf-section"},me={class:"pf-section__head"},_e={class:"pf-section__icon"},ce={class:"avatar-slot"},fe={class:"pf-section"},ve={class:"pf-section__head"},ge={class:"pf-section__icon"},be={class:"pf-actions"},we={class:"pf-actions__hint"},h="لطفا مقدار را وارد کنید",ye=j({__name:"ReagentCustomer",setup(he){const E=J(),C=M(),p=E.params.id,b=R(!1),a=O({fname:"",lname:"",password:"",mobile:"",mcode:"",store_name:"",pasazh_name:"",address:"",percent:void 0,ncode:"",phone:"",city_id:void 0,gram_level:void 0,image_id:"",image_url:null}),x=R([]),d=O({}),N=O({});function $(r=[]){const e={};for(const[s,n]of Object.entries(a))r.includes(s)||JSON.stringify(n)!==JSON.stringify(N[s])&&(e[s]=n);return e}function z(r){a.image_id=r.id??""}async function V(r){var s;if(a.city_id=r,!r)return;let e=(s=x.value.find(n=>n.id===r))==null?void 0:s.percent;if(!e)try{const{data:n}=await g.get(`cities/get-percent-aux/${r}`);e=n}catch(n){console.log(n);return}a.percent=e==null?void 0:Number(e)}async function k(){var r,e,s,n,w,y;if(Object.keys(d).forEach(u=>delete d[u]),a.fname||(d.fname=h),a.lname||(d.lname=h),a.mobile||(d.mobile=h),!p&&!a.password&&(d.password=h),!Object.keys(d).length)try{b.value=!0;const{image_url:u,...c}=a,f=p?$(["image_url","password"]):c;p&&a.password&&(f.password=a.password);const v={...f,role:"SALES_EXPERT"};(!p||"fname"in f||"lname"in f)&&(v.name=`${a.fname} ${a.lname}`.trim()),p?await g.put(`users/${p}`,v):await g.post("users",v),S.info("اطلاعات با موفقیت به ثبت رسید."),C.go(-1)}catch(u){const c=(n=(s=(e=(r=u==null?void 0:u.response)==null?void 0:r.data)==null?void 0:e.errors)==null?void 0:s.mobile)==null?void 0:n[0];S.error(c??((y=(w=u==null?void 0:u.response)==null?void 0:w.data)==null?void 0:y.message)??"خطا در ثبت اطلاعات.")}finally{b.value=!1}}return q(async()=>{var r,e;try{const{data:s}=await g.post("cities/list",{page:1,limit:500});x.value=(s.rows??[]).map(n=>({id:n.id,title:n.title??n.name,parent:n.parent??null,percent:n.percent===null||n.percent===void 0?null:Number(n.percent)}))}catch(s){console.log(s)}if(p)try{const{data:s}=await g.get(`admin/users/${p}`);Object.assign(a,{fname:s.fname??"",lname:s.lname??"",mobile:s.mobile??"",address:s.address??"",percent:s.percent===null?void 0:Number(s.percent),ncode:s.ncode??"",phone:s.phone??"",city_id:s.city_id??void 0,gram_level:s.gram_level===null||s.gram_level===void 0?void 0:Number(s.gram_level),image_id:((r=s.image)==null?void 0:r.id)??"",image_url:((e=s.image)==null?void 0:e.image)??null,store_name:s.store_name??"",pasazh_name:s.pasazh_name??"",mcode:s.mcode??""}),Object.assign(N,JSON.parse(JSON.stringify(a)))}catch(s){console.log(s)}}),(r,e)=>{const s=_("a-input"),n=_("a-form-item"),w=_("a-input-password"),y=_("a-textarea"),u=_("a-input-number"),c=_("a-button"),f=_("a-form"),v=_("a-spin");return A(),I(v,{spinning:b.value},{default:i(()=>[l(f,{layout:"vertical",class:"pf-form",onSubmit:F(k,["prevent"])},{default:i(()=>[t("div",K,[t("div",Y,[t("section",Z,[t("div",ee,[t("span",ae,[l(m(H))]),e[15]||(e[15]=t("div",null,[t("h3",null,"اطلاعات پایه"),t("p",null,"مشخصات هویتی و اطلاعات ورود کارشناس")],-1))]),t("div",se,[l(n,{label:"نام ",required:"","validate-status":d.fname?"error":"",help:d.fname},{default:i(()=>[l(s,{value:a.fname,"onUpdate:value":e[0]||(e[0]=o=>a.fname=o)},null,8,["value"])]),_:1},8,["validate-status","help"]),l(n,{label:"نام خانوادگی",required:"","validate-status":d.lname?"error":"",help:d.lname},{default:i(()=>[l(s,{value:a.lname,"onUpdate:value":e[1]||(e[1]=o=>a.lname=o)},null,8,["value"])]),_:1},8,["validate-status","help"]),l(n,{label:"کد ملی"},{default:i(()=>[l(s,{value:a.ncode,"onUpdate:value":e[2]||(e[2]=o=>a.ncode=o),class:"ltr-input",inputmode:"numeric"},null,8,["value"])]),_:1}),l(n,{label:"تلفن"},{default:i(()=>[l(s,{value:a.phone,"onUpdate:value":e[3]||(e[3]=o=>a.phone=o),class:"ltr-input",inputmode:"tel"},null,8,["value"])]),_:1}),l(n,{label:"شماره تلفن همراه",required:"","validate-status":d.mobile?"error":"",help:d.mobile,class:"mb-0"},{default:i(()=>[l(s,{value:a.mobile,"onUpdate:value":e[4]||(e[4]=o=>a.mobile=o),class:"ltr-input",inputmode:"tel",placeholder:"09xxxxxxxxx"},null,8,["value"])]),_:1},8,["validate-status","help"]),l(n,{label:"رمز عبور",required:!m(p),"validate-status":d.password?"error":"",help:d.password,class:"mb-0"},{default:i(()=>[l(w,{value:a.password,"onUpdate:value":e[5]||(e[5]=o=>a.password=o)},null,8,["value"])]),_:1},8,["required","validate-status","help"])])]),t("section",te,[t("div",le,[t("span",ne,[l(m(L))]),e[16]||(e[16]=t("div",null,[t("h3",null,"اطلاعات تجاری"),t("p",null,"کد و مشخصات فروشگاه")],-1))]),t("div",oe,[l(n,{label:"کد مشتری",class:"mb-0"},{default:i(()=>[l(s,{value:a.mcode,"onUpdate:value":e[6]||(e[6]=o=>a.mcode=o)},null,8,["value"])]),_:1}),l(n,{label:"نام مغازه",class:"mb-0"},{default:i(()=>[l(s,{value:a.store_name,"onUpdate:value":e[7]||(e[7]=o=>a.store_name=o)},null,8,["value"])]),_:1}),l(n,{label:"نام پاساژ",class:"mb-0"},{default:i(()=>[l(s,{value:a.pasazh_name,"onUpdate:value":e[8]||(e[8]=o=>a.pasazh_name=o)},null,8,["value"])]),_:1})])]),t("section",ie,[t("div",de,[t("span",re,[l(m(Q))]),e[17]||(e[17]=t("div",null,[t("h3",null,"آدرس"),t("p",null,"انتخاب شهر، درصد کمیسیون را بر اساس همان شهر پر می‌کند")],-1))]),l(n,{label:"شهر"},{default:i(()=>[l(D,{value:a.city_id,cities:x.value,placeholder:"شهر را انتخاب نمایید",onChange:V},null,8,["value","cities"])]),_:1}),l(n,{label:"آدرس",class:"mb-0"},{default:i(()=>[l(y,{value:a.address,"onUpdate:value":e[9]||(e[9]=o=>a.address=o),"auto-size":{minRows:3,maxRows:5}},null,8,["value"])]),_:1})])]),t("aside",ue,[t("section",pe,[t("div",me,[t("span",_e,[l(m(W))]),e[18]||(e[18]=t("div",null,[t("h3",null,"عکس پروفایل"),t("p",null,"تصویر نمایش داده‌شده برای کارشناس")],-1))]),t("div",ce,[l(G,{modelValue:a.image_url,"onUpdate:modelValue":[e[10]||(e[10]=o=>a.image_url=o),e[11]||(e[11]=o=>{o||(a.image_id="")})],purpose:"reagent.avatar",placeholder:"عکس",onOk:z},null,8,["modelValue"])])]),t("section",fe,[t("div",ve,[t("span",ge,[l(m(X))]),e[19]||(e[19]=t("div",null,[t("h3",null,"کمیسیون و اعتبار"),t("p",null,"درصد کمیسیون و سقف اعتبار")],-1))]),l(n,{label:"درصد کمیسیون"},{default:i(()=>[l(u,{value:a.percent,"onUpdate:value":e[12]||(e[12]=o=>a.percent=o),class:"w-full",step:.1,"addon-after":"٪"},null,8,["value"])]),_:1}),l(n,{label:"سقف اعتبار",class:"mb-0"},{default:i(()=>[l(u,{value:a.gram_level,"onUpdate:value":e[13]||(e[13]=o=>a.gram_level=o),class:"w-full","addon-after":"گرم"},null,8,["value"])]),_:1})])])]),t("div",be,[t("span",we,[l(m(B)),e[20]||(e[20]=U(" فیلدهای ستاره‌دار الزامی هستند.",-1))]),l(c,{onClick:e[14]||(e[14]=o=>m(C).go(-1))},{default:i(()=>[...e[21]||(e[21]=[U("انصراف",-1)])]),_:1}),l(c,{type:"primary",class:"form-submit",loading:b.value,onClick:k},{icon:i(()=>[l(m(P))]),default:i(()=>[e[22]||(e[22]=U(" ثبت اطلاعات ",-1))]),_:1},8,["loading"])])]),_:1})]),_:1},8,["spinning"])}}}),Ee=T(ye,[["__scopeId","data-v-78564364"]]);export{Ee as R}; diff --git a/apps/admin-panel/dist/assets/ReagentList-Czb_sG4J.js b/apps/admin-panel/dist/assets/ReagentList-DFuil1Fc.js similarity index 83% rename from apps/admin-panel/dist/assets/ReagentList-Czb_sG4J.js rename to apps/admin-panel/dist/assets/ReagentList-DFuil1Fc.js index e17b3a2..697fc9d 100644 --- a/apps/admin-panel/dist/assets/ReagentList-Czb_sG4J.js +++ b/apps/admin-panel/dist/assets/ReagentList-DFuil1Fc.js @@ -1 +1 @@ -import{u as g,d as B,b as _,c as d,w as o,r as v,o as n,h as V,p as X,a as r,i as l,f as k,t as w,m as E,l as I,y as j,G as b}from"./index-C9T3Vski.js";import{a as A,b as s,X as D}from"./model-B4TWAN58.js";import{_ as m}from"./TooltipBtn.vue_vue_type_script_setup_true_lang-4rxU9Kz6.js";import{_ as R}from"./ListPageHeader.vue_vue_type_script_setup_true_lang-BDf2BWcO.js";import"./filters-D6Nzbpog.js";import"./index-m6pCHaEa.js";import"./SettingOutlined-BizkfqvN.js";import"./icons-1fD-iiAA.js";import"./UnorderedListOutlined-Bl0oFRyr.js";import"./PercentageOutlined-CxUloK5J.js";import"./UserAddOutlined-BlPGjUCi.js";import"./CreditCardOutlined-BxTC_oHD.js";import"./AppstoreOutlined-lwgIJvjh.js";import"./TeamOutlined-j5HKaunb.js";import"./UserOutlined-Csu4xHRr.js";import"./CameraOutlined-C6gLi8-9.js";function F(){const c=g();Object.keys(c.cityFilters).length<1&&c.getCities();const e=new A("admin/customers-omde/reagent/list","لیست کارشناسان فروش");return e.add(new s("id","کد").filterNumber()),e.add(new s("lname","نام خانوادگی").filterText().hidden()),e.add(new s("name","نام و نام خانوادگی").filterText()),e.add(new s("name","نام").filterText().hidden()),e.add(new s("mobile","موبایل").filterText().noSort()),e.add(new s("city_id","شهر").hidden().renderSlot("city").filterKey("city_id").filterSelect(c.cityFilters)),e.add(new s("gram_level","سطح اعتبار").filterNumber().noSort()),e.add(new s("percent","درصد").filterNumber().noSort()),e.add(new s("remain","بدهی گرمی").filterNumber().noSort()),e.add(new s("rial_remain","بدهی ریالی").filterNumber().noSort()),e.add(new s("grams_sell","میزان فروش").filterNumber().noSort()),e.add(new s("caj","تاریخ ثبت").filterDate().noSort()),e.add(new s("uaj","بروزرسانی").hidden().filterDate().noSort()),e.add(new s("sts_str","وضعیت ثبت سفارش").renderSlot("sts").noSort()),e.add(new s("active","وضعیت حساب کاربری").renderSlot("active").noSort().filterSelect({1:"فعال","-1":"غیر فعال"})),e.add(new s("opt","عملیات").noSort().renderSlot("opt")),e}const L={id:"page-user-list"},P={key:0},G={key:1},K={class:"flex"},ne=B({__name:"ReagentList",setup(c){const e=I(),S=g(),a=i=>!!S.hasPermission(i),x=F(),y=E(null);async function h(i){var u;try{await j.put(`users/${i.id}`,{is_active:i.active!==1}),b.info("تغییرات ثبت شد "),await((u=y.value)==null?void 0:u.fetch())}catch{b.error("خطا در تغییر وضعیت")}}function C(){e.push("/reagent/add")}function N(i){e.push(`/reagent/edit/${i}`)}function $(i){e.push(`/reagent/view/${i}`)}return(i,u)=>{const p=v("a-tag"),T=v("a-card");return n(),_("div",L,[d(T,{title:"لیست کارشناسان فروش",class:"page-card"},{default:o(()=>[d(D,{ref_key:"tbl",ref:y,model:V(x),"mobile-cards":""},{add:o(()=>[a("persons.create.seller")?(n(),r(R,{key:0,rid:"persons.create.seller","add-label":"افزودن کارشناس فروش",onAdd:C})):l("",!0)]),city:o(({record:t})=>[t.city&&t.city.title?(n(),_("div",P,w(t.city.title),1)):(n(),_("div",G,"-"))]),sts:o(({record:t})=>[d(p,{color:t.sts===1?"green":"red"},{default:o(()=>[k(w(t.sts_str),1)]),_:2},1032,["color"])]),active:o(({record:t})=>[d(p,{color:t.active===1?"green":"red"},{default:o(()=>[k(w(t.active===1?"فعال":"غیر فعال"),1)]),_:2},1032,["color"])]),opt:o(({record:t})=>[X("div",K,[a("persons.list.sellers.edit")?(n(),r(m,{key:0,"icon-class":"w-5 h-5 text-primary",class:"ml-3",icon:"EditIcon",title:"ویرایش",onClick:f=>N(t.id)},null,8,["onClick"])):l("",!0),a("persons.list.sellers.view")?(n(),r(m,{key:1,"icon-class":"w-5 h-5 text-success",class:"ml-3",icon:"EyeIcon",title:"مشاهده اطلاعات",onClick:f=>$(t.id)},null,8,["onClick"])):l("",!0),t.active==1&&a("persons.list.sellers.unable")?(n(),r(m,{key:2,"icon-class":"w-5 h-5 text-danger",class:"ml-3",icon:"XIcon",title:"غیر فعال کردن حساب کاربری","pop-title":"آیا مطمئن هستید؟",onClick:f=>h(t)},null,8,["onClick"])):l("",!0),t.active!==1&&a("persons.list.sellers.able")?(n(),r(m,{key:3,"icon-class":"w-5 h-5 text-success",class:"ml-3",icon:"CheckIcon",title:"فعال سازی حساب کاربری","pop-title":"آیا مطمئن هستید؟",onClick:f=>h(t)},null,8,["onClick"])):l("",!0)])]),_:1},8,["model"])]),_:1})])}}});export{ne as default}; +import{u as g,d as B,b as _,c as d,w as o,r as v,o as n,h as V,p as X,a as r,i as l,f as k,t as w,m as E,l as I,y as j,G as b}from"./index-CuIWfDbM.js";import{a as A,b as s,X as D}from"./model-D_9omyEY.js";import{_ as m}from"./TooltipBtn.vue_vue_type_script_setup_true_lang-D0mVo7Ou.js";import{_ as R}from"./ListPageHeader.vue_vue_type_script_setup_true_lang-ReVXBl8h.js";import"./filters-Cvt98RIq.js";import"./index-CPTngTRs.js";import"./SettingOutlined-BehgjsnT.js";import"./icons-BWdsnUVP.js";import"./UnorderedListOutlined-DOoZELHj.js";import"./PercentageOutlined-Cooaq8mh.js";import"./UserAddOutlined-BBmLFe8z.js";import"./CreditCardOutlined-BRF7XcYB.js";import"./AppstoreOutlined-6RRW3vIa.js";import"./TeamOutlined-CqxRZks7.js";import"./UserOutlined-aZ-mQgwc.js";import"./CameraOutlined-Dx8LoT1m.js";function F(){const c=g();Object.keys(c.cityFilters).length<1&&c.getCities();const e=new A("admin/customers-omde/reagent/list","لیست کارشناسان فروش");return e.add(new s("id","کد").filterNumber()),e.add(new s("lname","نام خانوادگی").filterText().hidden()),e.add(new s("name","نام و نام خانوادگی").filterText()),e.add(new s("name","نام").filterText().hidden()),e.add(new s("mobile","موبایل").filterText().noSort()),e.add(new s("city_id","شهر").hidden().renderSlot("city").filterKey("city_id").filterSelect(c.cityFilters)),e.add(new s("gram_level","سطح اعتبار").filterNumber().noSort()),e.add(new s("percent","درصد").filterNumber().noSort()),e.add(new s("remain","بدهی گرمی").filterNumber().noSort()),e.add(new s("rial_remain","بدهی ریالی").filterNumber().noSort()),e.add(new s("grams_sell","میزان فروش").filterNumber().noSort()),e.add(new s("caj","تاریخ ثبت").filterDate().noSort()),e.add(new s("uaj","بروزرسانی").hidden().filterDate().noSort()),e.add(new s("sts_str","وضعیت ثبت سفارش").renderSlot("sts").noSort()),e.add(new s("active","وضعیت حساب کاربری").renderSlot("active").noSort().filterSelect({1:"فعال","-1":"غیر فعال"})),e.add(new s("opt","عملیات").noSort().renderSlot("opt")),e}const L={id:"page-user-list"},P={key:0},G={key:1},K={class:"flex"},ne=B({__name:"ReagentList",setup(c){const e=I(),S=g(),a=i=>!!S.hasPermission(i),x=F(),y=E(null);async function h(i){var u;try{await j.put(`users/${i.id}`,{is_active:i.active!==1}),b.info("تغییرات ثبت شد "),await((u=y.value)==null?void 0:u.fetch())}catch{b.error("خطا در تغییر وضعیت")}}function C(){e.push("/reagent/add")}function N(i){e.push(`/reagent/edit/${i}`)}function $(i){e.push(`/reagent/view/${i}`)}return(i,u)=>{const p=v("a-tag"),T=v("a-card");return n(),_("div",L,[d(T,{title:"لیست کارشناسان فروش",class:"page-card"},{default:o(()=>[d(D,{ref_key:"tbl",ref:y,model:V(x),"mobile-cards":""},{add:o(()=>[a("persons.create.seller")?(n(),r(R,{key:0,rid:"persons.create.seller","add-label":"افزودن کارشناس فروش",onAdd:C})):l("",!0)]),city:o(({record:t})=>[t.city&&t.city.title?(n(),_("div",P,w(t.city.title),1)):(n(),_("div",G,"-"))]),sts:o(({record:t})=>[d(p,{color:t.sts===1?"green":"red"},{default:o(()=>[k(w(t.sts_str),1)]),_:2},1032,["color"])]),active:o(({record:t})=>[d(p,{color:t.active===1?"green":"red"},{default:o(()=>[k(w(t.active===1?"فعال":"غیر فعال"),1)]),_:2},1032,["color"])]),opt:o(({record:t})=>[X("div",K,[a("persons.list.sellers.edit")?(n(),r(m,{key:0,"icon-class":"w-5 h-5 text-primary",class:"ml-3",icon:"EditIcon",title:"ویرایش",onClick:f=>N(t.id)},null,8,["onClick"])):l("",!0),a("persons.list.sellers.view")?(n(),r(m,{key:1,"icon-class":"w-5 h-5 text-success",class:"ml-3",icon:"EyeIcon",title:"مشاهده اطلاعات",onClick:f=>$(t.id)},null,8,["onClick"])):l("",!0),t.active==1&&a("persons.list.sellers.unable")?(n(),r(m,{key:2,"icon-class":"w-5 h-5 text-danger",class:"ml-3",icon:"XIcon",title:"غیر فعال کردن حساب کاربری","pop-title":"آیا مطمئن هستید؟",onClick:f=>h(t)},null,8,["onClick"])):l("",!0),t.active!==1&&a("persons.list.sellers.able")?(n(),r(m,{key:3,"icon-class":"w-5 h-5 text-success",class:"ml-3",icon:"CheckIcon",title:"فعال سازی حساب کاربری","pop-title":"آیا مطمئن هستید؟",onClick:f=>h(t)},null,8,["onClick"])):l("",!0)])]),_:1},8,["model"])]),_:1})])}}});export{ne as default}; diff --git a/apps/admin-panel/dist/assets/SafetyCertificateOutlined-DS5dQeR2.js b/apps/admin-panel/dist/assets/SafetyCertificateOutlined-DWQ69biy.js similarity index 95% rename from apps/admin-panel/dist/assets/SafetyCertificateOutlined-DS5dQeR2.js rename to apps/admin-panel/dist/assets/SafetyCertificateOutlined-DWQ69biy.js index ab0cb08..8f57c1e 100644 --- a/apps/admin-panel/dist/assets/SafetyCertificateOutlined-DS5dQeR2.js +++ b/apps/admin-panel/dist/assets/SafetyCertificateOutlined-DWQ69biy.js @@ -1 +1 @@ -import{c as f,I as l}from"./index-C9T3Vski.js";var u={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M866.9 169.9L527.1 54.1C523 52.7 517.5 52 512 52s-11 .7-15.1 2.1L157.1 169.9c-8.3 2.8-15.1 12.4-15.1 21.2v482.4c0 8.8 5.7 20.4 12.6 25.9L499.3 968c3.5 2.7 8 4.1 12.6 4.1s9.2-1.4 12.6-4.1l344.7-268.6c6.9-5.4 12.6-17 12.6-25.9V191.1c.2-8.8-6.6-18.3-14.9-21.2zM810 654.3L512 886.5 214 654.3V226.7l298-101.6 298 101.6v427.6zm-405.8-201c-3-4.1-7.8-6.6-13-6.6H336c-6.5 0-10.3 7.4-6.5 12.7l126.4 174a16.1 16.1 0 0026 0l212.6-292.7c3.8-5.3 0-12.7-6.5-12.7h-55.2c-5.1 0-10 2.5-13 6.6L468.9 542.4l-64.7-89.1z"}}]},name:"safety-certificate",theme:"outlined"};function c(r){for(var t=1;t(a(),s(m,{title:t(o),model:t(e)},null,8,["title","model"]))}});export{q as default}; diff --git a/apps/admin-panel/dist/assets/ShopkeeperList-Dnuzz4fz.js b/apps/admin-panel/dist/assets/ShopkeeperList-Dnuzz4fz.js deleted file mode 100644 index f81ef50..0000000 --- a/apps/admin-panel/dist/assets/ShopkeeperList-Dnuzz4fz.js +++ /dev/null @@ -1 +0,0 @@ -import{b as r,O as p,a as m}from"./OmdeCustomerList-CUnRtzSY.js";import{d as i,a as s,h as t,o as a}from"./index-C9T3Vski.js";import"./index-m6pCHaEa.js";import"./model-B4TWAN58.js";import"./filters-D6Nzbpog.js";import"./SettingOutlined-BizkfqvN.js";import"./ListPageHeader.vue_vue_type_script_setup_true_lang-BDf2BWcO.js";import"./AccountingSyncButton.vue_vue_type_script_setup_true_lang-DQT4x2vG.js";import"./bulkCustomer.vue_vue_type_script_setup_true_lang-DMrGU5vL.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-Du4lPDHl.js";import"./ImageUploadInput.vue_vue_type_script_setup_true_lang-Bjo3vw78.js";import"./CityTreeSelect.vue_vue_type_script_setup_true_lang-82fzpZxR.js";import"./DateInput-CCBYpdHy.js";import"./UserOutlined-Csu4xHRr.js";import"./ShopOutlined-BBtTJF4e.js";import"./EnvironmentOutlined-D8YNH9-a.js";import"./PercentageOutlined-CxUloK5J.js";import"./SafetyCertificateOutlined-DS5dQeR2.js";import"./UnorderedListOutlined-Bl0oFRyr.js";const j=i({__name:"ShopkeeperList",setup(l){const o=p.shopkeeper.title,e=r("shopkeeper");return(n,c)=>(a(),s(m,{title:t(o),model:t(e)},null,8,["title","model"]))}});export{j as default}; diff --git a/apps/admin-panel/dist/assets/SingleCustomer-DA-x6ajs.js b/apps/admin-panel/dist/assets/SingleCustomer-CNavZnHq.js similarity index 92% rename from apps/admin-panel/dist/assets/SingleCustomer-DA-x6ajs.js rename to apps/admin-panel/dist/assets/SingleCustomer-CNavZnHq.js index 1cfec2d..7ebd230 100644 --- a/apps/admin-panel/dist/assets/SingleCustomer-DA-x6ajs.js +++ b/apps/admin-panel/dist/assets/SingleCustomer-CNavZnHq.js @@ -1 +1 @@ -import{d as G,u as L,a as m,w as t,s as M,r as l,o as p,c as o,h as f,E as Q,i as w,Q as R,p as W,f as j,m as d,G as b,y as q,l as z,X as A,_ as D}from"./index-C9T3Vski.js";import{a as H,b as u,X as J}from"./model-B4TWAN58.js";import{C as Y}from"./CreditCardOutlined-BxTC_oHD.js";import"./filters-D6Nzbpog.js";import"./index-m6pCHaEa.js";import"./SettingOutlined-BizkfqvN.js";function Z(){const a=new H("admin/customers-omde/single/list","لیست مشتریان تک");return a.add(new u("id","کد").filterNumber()),a.add(new u("fname","نام").filterKey("fullName").filterText()),a.add(new u("lname","نام خانوادگی").filterKey("fullName").filterText().noSort()),a.add(new u("phone","تلفن تماس").filterKey("mobile").filterText().noSort()),a.add(new u("email","ایمیل").filterText().noSort()),a.add(new u("branch.name","نام شعبه").filterText().noSort()),a.add(new u("op","عملیات").noSort().renderSlot("op")),a}const ee={class:"charge-grid"},te=G({__name:"SingleCustomer",setup(a){const _=z(),y=L(),v=e=>!!y.hasPermission(e),k=Z(),S=d(null),h=M(()=>A()),c=d(!1),g=d(!1),r=d(void 0),C=d(void 0);function T(e){C.value=e,r.value=void 0,c.value=!0}function N(){r.value=void 0,c.value=!1}async function V(){var e,n;if(!C.value||!r.value){b.error("لطفا مقدار را وارد کنید");return}try{g.value=!0,await q.post("wallet/charge",{customer_id:C.value,value:r.value}),b.info("عملیات با موفقیت انجام شد"),c.value=!1,r.value=void 0,await _.push("/wallet")}catch(s){console.log(s),b.error(((n=(e=s==null?void 0:s.response)==null?void 0:e.data)==null?void 0:n.message)??"خطا در ثبت اطلاعات.")}finally{g.value=!1}}function B(e){_.push(`/singleCustomer/edit/${e}`)}function X(e){_.push(`/singleCustomer/view/${e}`)}return(e,n)=>{const s=l("a-tooltip"),$=l("a-input-number"),E=l("a-form-item"),K=l("a-button"),O=l("a-popconfirm"),U=l("a-form"),I=l("a-spin"),P=l("a-modal"),F=l("a-card");return p(),m(F,{title:h.value?"لیست مشتریان":"لیست مشتریان تک فروشی",class:"page-card"},{default:t(()=>[o(J,{ref_key:"tbl",ref:S,model:f(k),"mobile-cards":""},{op:t(({record:i})=>[o(s,{title:"ویرایش"},{default:t(()=>[o(f(Q),{class:"cursor-pointer mx-1 text-primary",onClick:x=>B(i.id)},null,8,["onClick"])]),_:2},1024),v("wallet.charge")&&!h.value?(p(),m(s,{key:0,title:"شارژ کیف پول"},{default:t(()=>[o(f(Y),{class:"cursor-pointer mx-1",style:{color:"#d48806"},onClick:x=>T(i.id)},null,8,["onClick"])]),_:2},1024)):w("",!0),v("wallet.charge")?(p(),m(s,{key:1,title:"مشاهده اطلاعات"},{default:t(()=>[o(f(R),{class:"cursor-pointer mx-1 text-success",onClick:x=>X(i.id)},null,8,["onClick"])]),_:2},1024)):w("",!0)]),_:1},8,["model"]),v("wallet.charge")?(p(),m(P,{key:0,open:c.value,"onUpdate:open":n[1]||(n[1]=i=>c.value=i),footer:null,title:"شارژ کیف پول"},{default:t(()=>[o(I,{spinning:g.value},{default:t(()=>[o(U,{layout:"vertical"},{default:t(()=>[W("div",ee,[o(E,{label:"میزان شارژ"},{default:t(()=>[o($,{value:r.value,"onUpdate:value":n[0]||(n[0]=i=>r.value=i),class:"w-full"},null,8,["value"])]),_:1}),o(O,{style:{"margin-bottom":"24px"},title:"آیا از شارژ کیف پول مطمعن هستید؟","ok-text":"بله","cancel-text":"خیر",onConfirm:V,onCancel:N},{default:t(()=>[o(K,{type:"primary"},{default:t(()=>[...n[2]||(n[2]=[j("ثبت",-1)])]),_:1})]),_:1})])]),_:1})]),_:1},8,["spinning"])]),_:1},8,["open"])):w("",!0)]),_:1},8,["title"])}}}),ie=D(te,[["__scopeId","data-v-9bf82b76"]]);export{ie as default}; +import{d as G,u as L,a as m,w as t,s as M,r as l,o as p,c as o,h as f,E as Q,i as w,Q as R,p as W,f as j,m as d,G as b,y as q,l as z,X as A,_ as D}from"./index-CuIWfDbM.js";import{a as H,b as u,X as J}from"./model-D_9omyEY.js";import{C as Y}from"./CreditCardOutlined-BRF7XcYB.js";import"./filters-Cvt98RIq.js";import"./index-CPTngTRs.js";import"./SettingOutlined-BehgjsnT.js";function Z(){const a=new H("admin/customers-omde/single/list","لیست مشتریان تک");return a.add(new u("id","کد").filterNumber()),a.add(new u("fname","نام").filterKey("fullName").filterText()),a.add(new u("lname","نام خانوادگی").filterKey("fullName").filterText().noSort()),a.add(new u("phone","تلفن تماس").filterKey("mobile").filterText().noSort()),a.add(new u("email","ایمیل").filterText().noSort()),a.add(new u("branch.name","نام شعبه").filterText().noSort()),a.add(new u("op","عملیات").noSort().renderSlot("op")),a}const ee={class:"charge-grid"},te=G({__name:"SingleCustomer",setup(a){const _=z(),y=L(),v=e=>!!y.hasPermission(e),k=Z(),S=d(null),h=M(()=>A()),c=d(!1),g=d(!1),r=d(void 0),C=d(void 0);function T(e){C.value=e,r.value=void 0,c.value=!0}function N(){r.value=void 0,c.value=!1}async function V(){var e,n;if(!C.value||!r.value){b.error("لطفا مقدار را وارد کنید");return}try{g.value=!0,await q.post("wallet/charge",{customer_id:C.value,value:r.value}),b.info("عملیات با موفقیت انجام شد"),c.value=!1,r.value=void 0,await _.push("/wallet")}catch(s){console.log(s),b.error(((n=(e=s==null?void 0:s.response)==null?void 0:e.data)==null?void 0:n.message)??"خطا در ثبت اطلاعات.")}finally{g.value=!1}}function B(e){_.push(`/singleCustomer/edit/${e}`)}function X(e){_.push(`/singleCustomer/view/${e}`)}return(e,n)=>{const s=l("a-tooltip"),$=l("a-input-number"),E=l("a-form-item"),K=l("a-button"),O=l("a-popconfirm"),U=l("a-form"),I=l("a-spin"),P=l("a-modal"),F=l("a-card");return p(),m(F,{title:h.value?"لیست مشتریان":"لیست مشتریان تک فروشی",class:"page-card"},{default:t(()=>[o(J,{ref_key:"tbl",ref:S,model:f(k),"mobile-cards":""},{op:t(({record:i})=>[o(s,{title:"ویرایش"},{default:t(()=>[o(f(Q),{class:"cursor-pointer mx-1 text-primary",onClick:x=>B(i.id)},null,8,["onClick"])]),_:2},1024),v("wallet.charge")&&!h.value?(p(),m(s,{key:0,title:"شارژ کیف پول"},{default:t(()=>[o(f(Y),{class:"cursor-pointer mx-1",style:{color:"#d48806"},onClick:x=>T(i.id)},null,8,["onClick"])]),_:2},1024)):w("",!0),v("wallet.charge")?(p(),m(s,{key:1,title:"مشاهده اطلاعات"},{default:t(()=>[o(f(R),{class:"cursor-pointer mx-1 text-success",onClick:x=>X(i.id)},null,8,["onClick"])]),_:2},1024)):w("",!0)]),_:1},8,["model"]),v("wallet.charge")?(p(),m(P,{key:0,open:c.value,"onUpdate:open":n[1]||(n[1]=i=>c.value=i),footer:null,title:"شارژ کیف پول"},{default:t(()=>[o(I,{spinning:g.value},{default:t(()=>[o(U,{layout:"vertical"},{default:t(()=>[W("div",ee,[o(E,{label:"میزان شارژ"},{default:t(()=>[o($,{value:r.value,"onUpdate:value":n[0]||(n[0]=i=>r.value=i),class:"w-full"},null,8,["value"])]),_:1}),o(O,{style:{"margin-bottom":"24px"},title:"آیا از شارژ کیف پول مطمعن هستید؟","ok-text":"بله","cancel-text":"خیر",onConfirm:V,onCancel:N},{default:t(()=>[o(K,{type:"primary"},{default:t(()=>[...n[2]||(n[2]=[j("ثبت",-1)])]),_:1})]),_:1})])]),_:1})]),_:1},8,["spinning"])]),_:1},8,["open"])):w("",!0)]),_:1},8,["title"])}}}),ie=D(te,[["__scopeId","data-v-9bf82b76"]]);export{ie as default}; diff --git a/apps/admin-panel/dist/assets/TaminList-Bdw9wOZC.js b/apps/admin-panel/dist/assets/TaminList-Bdw9wOZC.js deleted file mode 100644 index 10fb73d..0000000 --- a/apps/admin-panel/dist/assets/TaminList-Bdw9wOZC.js +++ /dev/null @@ -1 +0,0 @@ -import{u as B,d as I,b as v,c as l,w as s,r as k,o as u,h as O,f as h,t as _,H as V,i as x,p as X,a as C,m as w,y as T,G as y,_ as U}from"./index-C9T3Vski.js";import{a as j,b as r,X as A}from"./model-B4TWAN58.js";import{_ as M}from"./TooltipBtn.vue_vue_type_script_setup_true_lang-4rxU9Kz6.js";import{O as P,a as R}from"./OrderStatusTimeline-DQxbBFjr.js";import"./filters-D6Nzbpog.js";import"./index-m6pCHaEa.js";import"./SettingOutlined-BizkfqvN.js";import"./icons-1fD-iiAA.js";import"./UnorderedListOutlined-Bl0oFRyr.js";import"./PercentageOutlined-CxUloK5J.js";import"./UserAddOutlined-BlPGjUCi.js";import"./CreditCardOutlined-BxTC_oHD.js";import"./AppstoreOutlined-lwgIJvjh.js";import"./TeamOutlined-j5HKaunb.js";import"./UserOutlined-Csu4xHRr.js";import"./CameraOutlined-C6gLi8-9.js";import"./PictureOutlined-BBgbZIZs.js";import"./SafetyCertificateOutlined-DS5dQeR2.js";function W(){const S=B(),o=new j("admin/orders/tamin/list","لیست سفارش های عمده");return o.add(new r("id","شماره").filterNumber()),o.add(new r("customer.name","مشتری").filterKey("customer.fullName").filterText()),o.add(new r("customer.mobile","موبایل").filterText().hidden().noSort()),o.add(new r("input","ورودی").filterKey("totalGoldWeightGrams").filterText()),o.add(new r("wage","اجرت").filterKey("wageWeightGrams").filterText().noSort()),o.add(new r("items","تعداد آیتم ها").renderSlot("items_len").noSort()),o.add(new r("caj","تاریخ ثبت").filterKey("createdAt").filterDate().noSort()),o.add(new r("uaj","تاریخ ویرایش").hidden().filterKey("updatedAt").filterDate().noSort()),S.roles&&S.roles.includes("order.tamin.state")&&o.add(new r("sts","وضعیت").renderSlot("sts_str").noSort().filterSelect()),o.add(new r("confirmed","وضعیت تایید مشتری").renderSlot("confirmed_str").noSort().filterSelect({1:"تایید شده",2:"در انتظار تایید"})),o.add(new r("opt","عملیات").noSort().renderSlot("opt")),o}const E={id:"page-user-list"},H={class:"flex"},q={key:0},z=["onClick"],F={key:1},J=I({__name:"TaminList",setup(S){const o=B(),c=a=>!!o.hasPermission(a),N=W(),b=w(null),i=w(void 0),f=w(!1),d=w(!1);async function g(a){const{data:e}=await T.get(`admin/orders/${a}`);return e}async function $(a){i.value=await g(a.id),f.value=!0}async function D(a){i.value=await g(a.id),d.value=!0}async function K(a){var e,n;try{await T.post("order-sts/edit",{orderId:(e=i.value)==null?void 0:e.id,status:a.status,note:a.note}),d.value=!1,y.info("ویرایش موفق آمیز"),(n=b.value)==null||n.fetch()}catch{y.error("خطا در ویرایش")}}async function L(a){var e,n,m,p;try{await T.post("order-sts/edit",{orderId:(e=i.value)==null?void 0:e.id,status:a.status,remove:!0}),d.value=!1,y.info("ویرایش موفق آمیز"),(n=b.value)==null||n.fetch()}catch(t){y.error(((p=(m=t==null?void 0:t.response)==null?void 0:m.data)==null?void 0:p.message)??"خطا در ویرایش")}}return(a,e)=>{const n=k("a-button"),m=k("a-modal"),p=k("a-card");return u(),v("div",E,[l(p,{title:"لیست سفارش های عمده",class:"page-card"},{default:s(()=>[l(A,{ref_key:"tbl",ref:b,model:O(N),"mobile-cards":""},{opt:s(({record:t})=>[X("div",H,[c("order.tamin.view")?(u(),C(M,{key:0,"icon-class":"w-5 h-5 text-primary",class:"mr-3",icon:"ListIcon",title:"مشاهده سفارش",onClick:G=>$(t)},null,8,["onClick"])):x("",!0)])]),items_len:s(({text:t})=>[t?(u(),v("div",q,_(t.length),1)):x("",!0)]),sts_str:s(({record:t})=>[c("order.tamin.state")?(u(),v("a",{key:0,href:"",onClick:V(G=>D(t),["prevent"])},_(t.sts_str),9,z)):(u(),v("span",F,_(t.sts_str),1))]),confirmed_str:s(({record:t})=>[h(_(t.confirmed_str),1)]),_:1},8,["model"]),l(m,{open:d.value,"onUpdate:open":e[1]||(e[1]=t=>d.value=t),title:"وضعیت سفارش",width:"480px","wrap-class-name":"detail-modal"},{footer:s(()=>[l(n,{onClick:e[0]||(e[0]=t=>d.value=!1)},{default:s(()=>[...e[4]||(e[4]=[h("بستن",-1)])]),_:1})]),default:s(()=>[i.value?(u(),C(P,{key:0,activity:i.value.activity||[],"can-submit":c("order.tamin.state.submit"),"can-remove":c("order.tamin.state.remove"),onSubmit:K,onRemove:L},null,8,["activity","can-submit","can-remove"])):x("",!0)]),_:1},8,["open"]),l(m,{open:f.value,"onUpdate:open":e[3]||(e[3]=t=>f.value=t),title:"مشاهده سفارش",width:"720px","wrap-class-name":"detail-modal"},{footer:s(()=>[l(n,{onClick:e[2]||(e[2]=t=>f.value=!1)},{default:s(()=>[...e[5]||(e[5]=[h("باشه",-1)])]),_:1})]),default:s(()=>[l(R,{order:i.value},null,8,["order"])]),_:1},8,["open"])]),_:1})])}}}),ve=U(J,[["__scopeId","data-v-8a3f7aba"]]);export{ve as default}; diff --git a/apps/admin-panel/dist/assets/TaminList-Bj3tB-Tk.css b/apps/admin-panel/dist/assets/TaminList-Bj3tB-Tk.css new file mode 100644 index 0000000..d86f121 --- /dev/null +++ b/apps/admin-panel/dist/assets/TaminList-Bj3tB-Tk.css @@ -0,0 +1 @@ +.flex-col[data-v-94c4b16c]{flex-direction:column}.flex-1[data-v-94c4b16c]{flex:1}.mr-3[data-v-94c4b16c]{margin-left:.75rem} diff --git a/apps/admin-panel/dist/assets/TaminList-CDSG2cQ_.css b/apps/admin-panel/dist/assets/TaminList-CDSG2cQ_.css deleted file mode 100644 index 6718bf6..0000000 --- a/apps/admin-panel/dist/assets/TaminList-CDSG2cQ_.css +++ /dev/null @@ -1 +0,0 @@ -.flex-col[data-v-8a3f7aba]{flex-direction:column}.flex-1[data-v-8a3f7aba]{flex:1}.mr-3[data-v-8a3f7aba]{margin-left:.75rem} diff --git a/apps/admin-panel/dist/assets/TaminList-DKlA-3xq.js b/apps/admin-panel/dist/assets/TaminList-DKlA-3xq.js new file mode 100644 index 0000000..dc7833a --- /dev/null +++ b/apps/admin-panel/dist/assets/TaminList-DKlA-3xq.js @@ -0,0 +1 @@ +import{u as B,d as I,b as v,c as l,w as r,r as k,o as u,h as O,f as h,t as _,H as V,i as x,p as X,a as C,m as w,y as T,G as y,_ as R}from"./index-CuIWfDbM.js";import{a as U,b as s,X as j}from"./model-D_9omyEY.js";import{_ as A}from"./TooltipBtn.vue_vue_type_script_setup_true_lang-D0mVo7Ou.js";import{O as M,a as P}from"./OrderStatusTimeline-e__KlfQg.js";import"./filters-Cvt98RIq.js";import"./index-CPTngTRs.js";import"./SettingOutlined-BehgjsnT.js";import"./icons-BWdsnUVP.js";import"./UnorderedListOutlined-DOoZELHj.js";import"./PercentageOutlined-Cooaq8mh.js";import"./UserAddOutlined-BBmLFe8z.js";import"./CreditCardOutlined-BRF7XcYB.js";import"./AppstoreOutlined-6RRW3vIa.js";import"./TeamOutlined-CqxRZks7.js";import"./UserOutlined-aZ-mQgwc.js";import"./CameraOutlined-Dx8LoT1m.js";import"./PictureOutlined-CixWElmx.js";import"./SafetyCertificateOutlined-DWQ69biy.js";function W(){const S=B(),o=new U("admin/orders/tamin/list","لیست سفارش های عمده");return o.add(new s("id","شماره").filterNumber()),o.add(new s("customer.name","مشتری").filterKey("customer.fullName").filterText()),o.add(new s("customer.mobile","موبایل").filterText().hidden().noSort()),o.add(new s("input","ورودی").filterKey("totalGoldWeightGrams").filterText()),o.add(new s("wage","اجرت (گرم)").filterKey("wageWeightGrams").filterText().noSort()),o.add(new s("rial_input","اجرت ریالی (ریال)").filterKey("flatRialCharge").filterText()),o.add(new s("items","تعداد آیتم ها").renderSlot("items_len").noSort()),o.add(new s("caj","تاریخ ثبت").filterKey("createdAt").filterDate().noSort()),o.add(new s("uaj","تاریخ ویرایش").hidden().filterKey("updatedAt").filterDate().noSort()),S.roles&&S.roles.includes("order.tamin.state")&&o.add(new s("sts","وضعیت").renderSlot("sts_str").noSort().filterSelect()),o.add(new s("confirmed","وضعیت تایید مشتری").renderSlot("confirmed_str").noSort().filterSelect({1:"تایید شده",2:"در انتظار تایید"})),o.add(new s("opt","عملیات").noSort().renderSlot("opt")),o}const E={id:"page-user-list"},H={class:"flex"},q={key:0},z=["onClick"],F={key:1},J=I({__name:"TaminList",setup(S){const o=B(),c=a=>!!o.hasPermission(a),K=W(),b=w(null),i=w(void 0),f=w(!1),d=w(!1);async function g(a){const{data:e}=await T.get(`admin/orders/${a}`);return e}async function N(a){i.value=await g(a.id),f.value=!0}async function $(a){i.value=await g(a.id),d.value=!0}async function D(a){var e,n;try{await T.post("order-sts/edit",{orderId:(e=i.value)==null?void 0:e.id,status:a.status,note:a.note}),d.value=!1,y.info("ویرایش موفق آمیز"),(n=b.value)==null||n.fetch()}catch{y.error("خطا در ویرایش")}}async function L(a){var e,n,m,p;try{await T.post("order-sts/edit",{orderId:(e=i.value)==null?void 0:e.id,status:a.status,remove:!0}),d.value=!1,y.info("ویرایش موفق آمیز"),(n=b.value)==null||n.fetch()}catch(t){y.error(((p=(m=t==null?void 0:t.response)==null?void 0:m.data)==null?void 0:p.message)??"خطا در ویرایش")}}return(a,e)=>{const n=k("a-button"),m=k("a-modal"),p=k("a-card");return u(),v("div",E,[l(p,{title:"لیست سفارش های عمده",class:"page-card"},{default:r(()=>[l(j,{ref_key:"tbl",ref:b,model:O(K),"mobile-cards":""},{opt:r(({record:t})=>[X("div",H,[c("order.tamin.view")?(u(),C(A,{key:0,"icon-class":"w-5 h-5 text-primary",class:"mr-3",icon:"ListIcon",title:"مشاهده سفارش",onClick:G=>N(t)},null,8,["onClick"])):x("",!0)])]),items_len:r(({text:t})=>[t?(u(),v("div",q,_(t.length),1)):x("",!0)]),sts_str:r(({record:t})=>[c("order.tamin.state")?(u(),v("a",{key:0,href:"",onClick:V(G=>$(t),["prevent"])},_(t.sts_str),9,z)):(u(),v("span",F,_(t.sts_str),1))]),confirmed_str:r(({record:t})=>[h(_(t.confirmed_str),1)]),_:1},8,["model"]),l(m,{open:d.value,"onUpdate:open":e[1]||(e[1]=t=>d.value=t),title:"وضعیت سفارش",width:"480px","wrap-class-name":"detail-modal"},{footer:r(()=>[l(n,{onClick:e[0]||(e[0]=t=>d.value=!1)},{default:r(()=>[...e[4]||(e[4]=[h("بستن",-1)])]),_:1})]),default:r(()=>[i.value?(u(),C(M,{key:0,activity:i.value.activity||[],"can-submit":c("order.tamin.state.submit"),"can-remove":c("order.tamin.state.remove"),onSubmit:D,onRemove:L},null,8,["activity","can-submit","can-remove"])):x("",!0)]),_:1},8,["open"]),l(m,{open:f.value,"onUpdate:open":e[3]||(e[3]=t=>f.value=t),title:"مشاهده سفارش",width:"720px","wrap-class-name":"detail-modal"},{footer:r(()=>[l(n,{onClick:e[2]||(e[2]=t=>f.value=!1)},{default:r(()=>[...e[5]||(e[5]=[h("باشه",-1)])]),_:1})]),default:r(()=>[l(P,{order:i.value},null,8,["order"])]),_:1},8,["open"])]),_:1})])}}}),ve=R(J,[["__scopeId","data-v-94c4b16c"]]);export{ve as default}; diff --git a/apps/admin-panel/dist/assets/TeamOutlined-j5HKaunb.js b/apps/admin-panel/dist/assets/TeamOutlined-CqxRZks7.js similarity index 97% rename from apps/admin-panel/dist/assets/TeamOutlined-j5HKaunb.js rename to apps/admin-panel/dist/assets/TeamOutlined-CqxRZks7.js index d0abbc7..c7a021f 100644 --- a/apps/admin-panel/dist/assets/TeamOutlined-j5HKaunb.js +++ b/apps/admin-panel/dist/assets/TeamOutlined-CqxRZks7.js @@ -1 +1 @@ -import{c as u,I as l}from"./index-C9T3Vski.js";var p={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M832 312H696v-16c0-101.6-82.4-184-184-184s-184 82.4-184 184v16H192c-17.7 0-32 14.3-32 32v536c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V344c0-17.7-14.3-32-32-32zm-432-16c0-61.9 50.1-112 112-112s112 50.1 112 112v16H400v-16zm392 544H232V384h96v88c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-88h224v88c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-88h96v456z"}}]},name:"shopping",theme:"outlined"};function c(r){for(var e=1;eC(p.icon)??k);function c(){u("click")}return(B,T)=>{const d=r("a-popconfirm"),f=r("a-tooltip");return t(),l("div",null,[_(f,{title:o.title},{default:s(()=>[o.popTitle?(t(),e(d,{key:0,"ok-text":"بله","cancel-text":"خیر",title:o.popTitle,onConfirm:c},{default:s(()=>[(t(),e(i(n.value),{class:a(["cursor-pointer",o.iconClass])},null,8,["class"]))]),_:1},8,["title"])):(t(),l("div",h,[(t(),e(i(n.value),{class:a(["cursor-pointer",o.iconClass]),onClick:c},null,8,["class"]))]))]),_:1},8,["title"])])}}});export{b as _}; +import{r as C}from"./icons-BWdsnUVP.js";import{U as k}from"./UnorderedListOutlined-DOoZELHj.js";import{d as v,o as t,b as l,c as _,w as s,a as e,g as i,q as a,s as x,r}from"./index-CuIWfDbM.js";const h={key:1},b=v({__name:"TooltipBtn",props:{title:{},popTitle:{},icon:{},iconClass:{default:"w-5 h-5"}},emits:["click"],setup(o,{emit:m}){const p=o,u=m,n=x(()=>C(p.icon)??k);function c(){u("click")}return(B,T)=>{const d=r("a-popconfirm"),f=r("a-tooltip");return t(),l("div",null,[_(f,{title:o.title},{default:s(()=>[o.popTitle?(t(),e(d,{key:0,"ok-text":"بله","cancel-text":"خیر",title:o.popTitle,onConfirm:c},{default:s(()=>[(t(),e(i(n.value),{class:a(["cursor-pointer",o.iconClass])},null,8,["class"]))]),_:1},8,["title"])):(t(),l("div",h,[(t(),e(i(n.value),{class:a(["cursor-pointer",o.iconClass]),onClick:c},null,8,["class"]))]))]),_:1},8,["title"])])}}});export{b as _}; diff --git a/apps/admin-panel/dist/assets/UnorderedListOutlined-Bl0oFRyr.js b/apps/admin-panel/dist/assets/UnorderedListOutlined-DOoZELHj.js similarity index 97% rename from apps/admin-panel/dist/assets/UnorderedListOutlined-Bl0oFRyr.js rename to apps/admin-panel/dist/assets/UnorderedListOutlined-DOoZELHj.js index 75997af..e9fdbbe 100644 --- a/apps/admin-panel/dist/assets/UnorderedListOutlined-Bl0oFRyr.js +++ b/apps/admin-panel/dist/assets/UnorderedListOutlined-DOoZELHj.js @@ -1 +1 @@ -import{c as o,I as u}from"./index-C9T3Vski.js";var s={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372 0-89 31.3-170.8 83.5-234.8l523.3 523.3C682.8 852.7 601 884 512 884zm288.5-137.2L277.2 223.5C341.2 171.3 423 140 512 140c205.4 0 372 166.6 372 372 0 89-31.3 170.8-83.5 234.8z"}}]},name:"stop",theme:"outlined"};function c(r){for(var t=1;tdelete l[n]),e.fname||(l.fname=f),e.lname||(l.lname=f),e.mobile||(l.mobile=f),(e.ut===void 0||e.ut===null)&&(l.ut=f),!d&&!e.role&&(l.role=f),!d&&!e.password&&(l.password=f),e.password&&e.password!==e.password_confirmation&&(l.password_confirmation="رمز عبور و تأیید آن یکسان نیستند"),Object.keys(l).length===0}async function S(){var n,t;if(z())try{_.value=!0;const u={name:`${e.fname} ${e.lname}`.trim(),mobile:e.mobile,ut:e.ut};(!d||e.role!==void 0)&&(u.role=e.role),e.password&&(u.password=e.password),d?await c.put(`users/${d}`,u):await c.post("users",u),D.info("اطلاعات با موفقیت به ثبت رسید."),x?(O("success"),O("update:open",!1)):T.push("/user/list")}catch(u){D.error(((t=(n=u==null?void 0:u.response)==null?void 0:n.data)==null?void 0:t.message)??"خطا در ثبت اطلاعات.")}finally{_.value=!1}}return q(async()=>{try{const[{data:n},{data:t}]=await Promise.all([c.get("const/__list__ut"),c.get("admin/users/role-options")]);B.value=n,$.value=t}catch(n){console.log(n)}if(d)try{const{data:n}=await c.get(`admin/users/${d}`),t=String(n.name??"").trim().split(" ");Object.assign(e,{fname:t[0]??"",lname:t.slice(1).join(" "),mobile:n.mobile??"",ut:n.ut??void 0,role:n.role??void 0,password:"",password_confirmation:""})}catch(n){console.log(n)}}),(n,t)=>{const u=p("a-input"),r=p("a-form-item"),w=p("a-select-option"),y=p("a-select"),g=p("a-input-password"),G=p("a-button"),H=p("a-card"),L=p("a-form"),P=p("a-spin");return x?(i(),v(X,{key:0,open:!!E.open,id:U(d),"add-title":"افزودن مدیر","edit-title":"ویرایش مدیر",loading:_.value,submitting:_.value,"onUpdate:open":t[7]||(t[7]=a=>n.$emit("update:open",a)),onSubmit:S},{default:s(()=>[V("div",Y,[o(r,{label:"نام","validate-status":l.fname?"error":"",help:l.fname},{default:s(()=>[o(u,{value:e.fname,"onUpdate:value":t[0]||(t[0]=a=>e.fname=a)},null,8,["value"])]),_:1},8,["validate-status","help"]),o(r,{label:"نام خانوادگی","validate-status":l.lname?"error":"",help:l.lname},{default:s(()=>[o(u,{value:e.lname,"onUpdate:value":t[1]||(t[1]=a=>e.lname=a)},null,8,["value"])]),_:1},8,["validate-status","help"]),o(r,{label:"شماره موبایل","validate-status":l.mobile?"error":"",help:l.mobile},{default:s(()=>[o(u,{value:e.mobile,"onUpdate:value":t[2]||(t[2]=a=>e.mobile=a)},null,8,["value"])]),_:1},8,["validate-status","help"]),o(r,{label:"نوع کاربری","validate-status":l.ut?"error":"",help:l.ut},{default:s(()=>[o(y,{value:e.ut,"onUpdate:value":t[3]||(t[3]=a=>e.ut=a),"allow-clear":"",placeholder:"انتخاب کنید"},{default:s(()=>[(i(!0),m(C,null,h(B.value,a=>(i(),v(w,{key:a.id,value:a.id},{default:s(()=>[b(k(a.title),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["validate-status","help"]),o(r,{label:"نقش","validate-status":l.role?"error":"",help:l.role},{default:s(()=>[o(y,{value:e.role,"onUpdate:value":t[4]||(t[4]=a=>e.role=a),placeholder:"انتخاب کنید"},{default:s(()=>[(i(!0),m(C,null,h($.value,a=>(i(),v(w,{key:a.value,value:a.value},{default:s(()=>[b(k(a.title),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["validate-status","help"]),o(r,{label:"رمز عبور","validate-status":l.password?"error":"",help:l.password},{default:s(()=>[o(g,{value:e.password,"onUpdate:value":t[5]||(t[5]=a=>e.password=a)},null,8,["value"])]),_:1},8,["validate-status","help"]),o(r,{label:"تأیید رمز عبور","validate-status":l.password_confirmation?"error":"",help:l.password_confirmation},{default:s(()=>[o(g,{value:e.password_confirmation,"onUpdate:value":t[6]||(t[6]=a=>e.password_confirmation=a)},null,8,["value"])]),_:1},8,["validate-status","help"])]),U(d)?(i(),m("p",Z,"برای تغییر ندادن رمز عبور، هر دو فیلد رمز را خالی بگذارید.")):M("",!0)]),_:1},8,["open","id","loading","submitting"])):(i(),v(P,{key:1,spinning:_.value},{default:s(()=>[o(L,{layout:"vertical",onSubmit:J(S,["prevent"])},{default:s(()=>[o(H,{title:U(d)?"ویرایش مدیر":"افزودن مدیر",class:"mb-base page-card"},{default:s(()=>[V("div",ee,[o(r,{label:"نام","validate-status":l.fname?"error":"",help:l.fname},{default:s(()=>[o(u,{value:e.fname,"onUpdate:value":t[8]||(t[8]=a=>e.fname=a)},null,8,["value"])]),_:1},8,["validate-status","help"]),o(r,{label:"نام خانوادگی","validate-status":l.lname?"error":"",help:l.lname},{default:s(()=>[o(u,{value:e.lname,"onUpdate:value":t[9]||(t[9]=a=>e.lname=a)},null,8,["value"])]),_:1},8,["validate-status","help"]),o(r,{label:"شماره موبایل","validate-status":l.mobile?"error":"",help:l.mobile},{default:s(()=>[o(u,{value:e.mobile,"onUpdate:value":t[10]||(t[10]=a=>e.mobile=a)},null,8,["value"])]),_:1},8,["validate-status","help"]),o(r,{label:"نوع کاربری","validate-status":l.ut?"error":"",help:l.ut},{default:s(()=>[o(y,{value:e.ut,"onUpdate:value":t[11]||(t[11]=a=>e.ut=a),"allow-clear":"",placeholder:"انتخاب کنید"},{default:s(()=>[(i(!0),m(C,null,h(B.value,a=>(i(),v(w,{key:a.id,value:a.id},{default:s(()=>[b(k(a.title),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["validate-status","help"]),o(r,{label:"نقش","validate-status":l.role?"error":"",help:l.role},{default:s(()=>[o(y,{value:e.role,"onUpdate:value":t[12]||(t[12]=a=>e.role=a),placeholder:"انتخاب کنید"},{default:s(()=>[(i(!0),m(C,null,h($.value,a=>(i(),v(w,{key:a.value,value:a.value},{default:s(()=>[b(k(a.title),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["validate-status","help"]),o(r,{label:"رمز عبور","validate-status":l.password?"error":"",help:l.password},{default:s(()=>[o(g,{value:e.password,"onUpdate:value":t[13]||(t[13]=a=>e.password=a)},null,8,["value"])]),_:1},8,["validate-status","help"]),o(r,{label:"تأیید رمز عبور","validate-status":l.password_confirmation?"error":"",help:l.password_confirmation},{default:s(()=>[o(g,{value:e.password_confirmation,"onUpdate:value":t[14]||(t[14]=a=>e.password_confirmation=a)},null,8,["value"])]),_:1},8,["validate-status","help"])]),U(d)?(i(),m("p",ae,"برای تغییر ندادن رمز عبور، هر دو فیلد رمز را خالی بگذارید.")):M("",!0),o(G,{type:"primary",class:"form-submit",onClick:S},{default:s(()=>[...t[15]||(t[15]=[b("ثبت اطلاعات",-1)])]),_:1})]),_:1},8,["title"])]),_:1})]),_:1},8,["spinning"]))}}}),se=W(te,[["__scopeId","data-v-5e70913d"]]);export{se as default}; +import{d as Q,x as q,y as c,a as v,w as s,h as U,k as A,m as j,z as R,r as p,o as i,p as V,c as o,b as m,e as h,f as b,t as k,F as C,i as M,H as J,G as D,l as K,_ as W}from"./index-CuIWfDbM.js";import{_ as X}from"./BaseFormModal.vue_vue_type_style_index_0_lang-DXuLuiBZ.js";const Y={class:"grid-3"},Z={key:0,class:"hint"},ee={class:"grid-3"},ae={key:0,class:"hint"},f="لطفا مقدار را وارد کنید",te=Q({__name:"UserCreate",props:{open:{type:Boolean},id:{}},emits:["update:open","success"],setup(E,{emit:F}){const N=E,O=F,x=N.open!==void 0,I=A(),T=K(),d=x?N.id:I.params.id,_=j(!1),B=j([]),$=j([]),e=R({fname:"",lname:"",mobile:"",ut:void 0,role:void 0,password:"",password_confirmation:""}),l=R({});function z(){return Object.keys(l).forEach(n=>delete l[n]),e.fname||(l.fname=f),e.lname||(l.lname=f),e.mobile||(l.mobile=f),(e.ut===void 0||e.ut===null)&&(l.ut=f),!d&&!e.role&&(l.role=f),!d&&!e.password&&(l.password=f),e.password&&e.password!==e.password_confirmation&&(l.password_confirmation="رمز عبور و تأیید آن یکسان نیستند"),Object.keys(l).length===0}async function S(){var n,t;if(z())try{_.value=!0;const u={name:`${e.fname} ${e.lname}`.trim(),mobile:e.mobile,ut:e.ut};(!d||e.role!==void 0)&&(u.role=e.role),e.password&&(u.password=e.password),d?await c.put(`users/${d}`,u):await c.post("users",u),D.info("اطلاعات با موفقیت به ثبت رسید."),x?(O("success"),O("update:open",!1)):T.push("/user/list")}catch(u){D.error(((t=(n=u==null?void 0:u.response)==null?void 0:n.data)==null?void 0:t.message)??"خطا در ثبت اطلاعات.")}finally{_.value=!1}}return q(async()=>{try{const[{data:n},{data:t}]=await Promise.all([c.get("const/__list__ut"),c.get("admin/users/role-options")]);B.value=n,$.value=t}catch(n){console.log(n)}if(d)try{const{data:n}=await c.get(`admin/users/${d}`),t=String(n.name??"").trim().split(" ");Object.assign(e,{fname:t[0]??"",lname:t.slice(1).join(" "),mobile:n.mobile??"",ut:n.ut??void 0,role:n.role??void 0,password:"",password_confirmation:""})}catch(n){console.log(n)}}),(n,t)=>{const u=p("a-input"),r=p("a-form-item"),w=p("a-select-option"),y=p("a-select"),g=p("a-input-password"),G=p("a-button"),H=p("a-card"),L=p("a-form"),P=p("a-spin");return x?(i(),v(X,{key:0,open:!!E.open,id:U(d),"add-title":"افزودن مدیر","edit-title":"ویرایش مدیر",loading:_.value,submitting:_.value,"onUpdate:open":t[7]||(t[7]=a=>n.$emit("update:open",a)),onSubmit:S},{default:s(()=>[V("div",Y,[o(r,{label:"نام","validate-status":l.fname?"error":"",help:l.fname},{default:s(()=>[o(u,{value:e.fname,"onUpdate:value":t[0]||(t[0]=a=>e.fname=a)},null,8,["value"])]),_:1},8,["validate-status","help"]),o(r,{label:"نام خانوادگی","validate-status":l.lname?"error":"",help:l.lname},{default:s(()=>[o(u,{value:e.lname,"onUpdate:value":t[1]||(t[1]=a=>e.lname=a)},null,8,["value"])]),_:1},8,["validate-status","help"]),o(r,{label:"شماره موبایل","validate-status":l.mobile?"error":"",help:l.mobile},{default:s(()=>[o(u,{value:e.mobile,"onUpdate:value":t[2]||(t[2]=a=>e.mobile=a)},null,8,["value"])]),_:1},8,["validate-status","help"]),o(r,{label:"نوع کاربری","validate-status":l.ut?"error":"",help:l.ut},{default:s(()=>[o(y,{value:e.ut,"onUpdate:value":t[3]||(t[3]=a=>e.ut=a),"allow-clear":"",placeholder:"انتخاب کنید"},{default:s(()=>[(i(!0),m(C,null,h(B.value,a=>(i(),v(w,{key:a.id,value:a.id},{default:s(()=>[b(k(a.title),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["validate-status","help"]),o(r,{label:"نقش","validate-status":l.role?"error":"",help:l.role},{default:s(()=>[o(y,{value:e.role,"onUpdate:value":t[4]||(t[4]=a=>e.role=a),placeholder:"انتخاب کنید"},{default:s(()=>[(i(!0),m(C,null,h($.value,a=>(i(),v(w,{key:a.value,value:a.value},{default:s(()=>[b(k(a.title),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["validate-status","help"]),o(r,{label:"رمز عبور","validate-status":l.password?"error":"",help:l.password},{default:s(()=>[o(g,{value:e.password,"onUpdate:value":t[5]||(t[5]=a=>e.password=a)},null,8,["value"])]),_:1},8,["validate-status","help"]),o(r,{label:"تأیید رمز عبور","validate-status":l.password_confirmation?"error":"",help:l.password_confirmation},{default:s(()=>[o(g,{value:e.password_confirmation,"onUpdate:value":t[6]||(t[6]=a=>e.password_confirmation=a)},null,8,["value"])]),_:1},8,["validate-status","help"])]),U(d)?(i(),m("p",Z,"برای تغییر ندادن رمز عبور، هر دو فیلد رمز را خالی بگذارید.")):M("",!0)]),_:1},8,["open","id","loading","submitting"])):(i(),v(P,{key:1,spinning:_.value},{default:s(()=>[o(L,{layout:"vertical",onSubmit:J(S,["prevent"])},{default:s(()=>[o(H,{title:U(d)?"ویرایش مدیر":"افزودن مدیر",class:"mb-base page-card"},{default:s(()=>[V("div",ee,[o(r,{label:"نام","validate-status":l.fname?"error":"",help:l.fname},{default:s(()=>[o(u,{value:e.fname,"onUpdate:value":t[8]||(t[8]=a=>e.fname=a)},null,8,["value"])]),_:1},8,["validate-status","help"]),o(r,{label:"نام خانوادگی","validate-status":l.lname?"error":"",help:l.lname},{default:s(()=>[o(u,{value:e.lname,"onUpdate:value":t[9]||(t[9]=a=>e.lname=a)},null,8,["value"])]),_:1},8,["validate-status","help"]),o(r,{label:"شماره موبایل","validate-status":l.mobile?"error":"",help:l.mobile},{default:s(()=>[o(u,{value:e.mobile,"onUpdate:value":t[10]||(t[10]=a=>e.mobile=a)},null,8,["value"])]),_:1},8,["validate-status","help"]),o(r,{label:"نوع کاربری","validate-status":l.ut?"error":"",help:l.ut},{default:s(()=>[o(y,{value:e.ut,"onUpdate:value":t[11]||(t[11]=a=>e.ut=a),"allow-clear":"",placeholder:"انتخاب کنید"},{default:s(()=>[(i(!0),m(C,null,h(B.value,a=>(i(),v(w,{key:a.id,value:a.id},{default:s(()=>[b(k(a.title),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["validate-status","help"]),o(r,{label:"نقش","validate-status":l.role?"error":"",help:l.role},{default:s(()=>[o(y,{value:e.role,"onUpdate:value":t[12]||(t[12]=a=>e.role=a),placeholder:"انتخاب کنید"},{default:s(()=>[(i(!0),m(C,null,h($.value,a=>(i(),v(w,{key:a.value,value:a.value},{default:s(()=>[b(k(a.title),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["validate-status","help"]),o(r,{label:"رمز عبور","validate-status":l.password?"error":"",help:l.password},{default:s(()=>[o(g,{value:e.password,"onUpdate:value":t[13]||(t[13]=a=>e.password=a)},null,8,["value"])]),_:1},8,["validate-status","help"]),o(r,{label:"تأیید رمز عبور","validate-status":l.password_confirmation?"error":"",help:l.password_confirmation},{default:s(()=>[o(g,{value:e.password_confirmation,"onUpdate:value":t[14]||(t[14]=a=>e.password_confirmation=a)},null,8,["value"])]),_:1},8,["validate-status","help"])]),U(d)?(i(),m("p",ae,"برای تغییر ندادن رمز عبور، هر دو فیلد رمز را خالی بگذارید.")):M("",!0),o(G,{type:"primary",class:"form-submit",onClick:S},{default:s(()=>[...t[15]||(t[15]=[b("ثبت اطلاعات",-1)])]),_:1})]),_:1},8,["title"])]),_:1})]),_:1},8,["spinning"]))}}}),se=W(te,[["__scopeId","data-v-5e70913d"]]);export{se as default}; diff --git a/apps/admin-panel/dist/assets/UserEdit-C2ssJRW5.js b/apps/admin-panel/dist/assets/UserEdit-C2ssJRW5.js deleted file mode 100644 index 5a0b36f..0000000 --- a/apps/admin-panel/dist/assets/UserEdit-C2ssJRW5.js +++ /dev/null @@ -1 +0,0 @@ -import e from"./UserCreate-CsSpfDYW.js";import{d as r,a as o,o as t}from"./index-C9T3Vski.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-Du4lPDHl.js";const _=r({__name:"UserEdit",setup(a){return(s,n)=>(t(),o(e))}});export{_ as default}; diff --git a/apps/admin-panel/dist/assets/UserEdit-Ctgu46hW.js b/apps/admin-panel/dist/assets/UserEdit-Ctgu46hW.js new file mode 100644 index 0000000..bd0fdd3 --- /dev/null +++ b/apps/admin-panel/dist/assets/UserEdit-Ctgu46hW.js @@ -0,0 +1 @@ +import e from"./UserCreate-CAC2S8Dh.js";import{d as r,a as o,o as t}from"./index-CuIWfDbM.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-DXuLuiBZ.js";const _=r({__name:"UserEdit",setup(a){return(s,n)=>(t(),o(e))}});export{_ as default}; diff --git a/apps/admin-panel/dist/assets/UserOutlined-Csu4xHRr.js b/apps/admin-panel/dist/assets/UserOutlined-aZ-mQgwc.js similarity index 95% rename from apps/admin-panel/dist/assets/UserOutlined-Csu4xHRr.js rename to apps/admin-panel/dist/assets/UserOutlined-aZ-mQgwc.js index 90c07fb..9b8352c 100644 --- a/apps/admin-panel/dist/assets/UserOutlined-Csu4xHRr.js +++ b/apps/admin-panel/dist/assets/UserOutlined-aZ-mQgwc.js @@ -1 +1 @@ -import{c as u,I as l}from"./index-C9T3Vski.js";var o={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M858.5 763.6a374 374 0 00-80.6-119.5 375.63 375.63 0 00-119.5-80.6c-.4-.2-.8-.3-1.2-.5C719.5 518 760 444.7 760 362c0-137-111-248-248-248S264 225 264 362c0 82.7 40.5 156 102.8 201.1-.4.2-.8.3-1.2.5-44.8 18.9-85 46-119.5 80.6a375.63 375.63 0 00-80.6 119.5A371.7 371.7 0 00136 901.8a8 8 0 008 8.2h60c4.4 0 7.9-3.5 8-7.8 2-77.2 33-149.5 87.8-204.3 56.7-56.7 132-87.9 212.2-87.9s155.5 31.2 212.2 87.9C779 752.7 810 825 812 902.2c.1 4.4 3.6 7.8 8 7.8h60a8 8 0 008-8.2c-1-47.8-10.9-94.3-29.5-138.2zM512 534c-45.9 0-89.1-17.9-121.6-50.4S340 407.9 340 362c0-45.9 17.9-89.1 50.4-121.6S466.1 190 512 190s89.1 17.9 121.6 50.4S684 316.1 684 362c0 45.9-17.9 89.1-50.4 121.6S557.9 534 512 534z"}}]},name:"user",theme:"outlined"};function c(r){for(var e=1;e(r(),o(t,{title:"مشاهده اطلاعات مشتری عمده","show-activity":!0,"show-wallet":!1,"edit-route":"bulkCustomer-edit"}))}});export{_ as default}; diff --git a/apps/admin-panel/dist/assets/ViewOmdeCustomer-Bcz-RlKZ.js b/apps/admin-panel/dist/assets/ViewOmdeCustomer-Bcz-RlKZ.js new file mode 100644 index 0000000..c4871c0 --- /dev/null +++ b/apps/admin-panel/dist/assets/ViewOmdeCustomer-Bcz-RlKZ.js @@ -0,0 +1 @@ +import{C as t}from"./CustomerDetail-BSLGyXe8.js";import{d as e,a as o,o as r}from"./index-CuIWfDbM.js";import"./filters-Cvt98RIq.js";import"./index-CPTngTRs.js";import"./EnvironmentOutlined-BBvjB5-8.js";import"./UserOutlined-aZ-mQgwc.js";const _=e({__name:"ViewOmdeCustomer",setup(a){return(i,m)=>(r(),o(t,{title:"مشاهده اطلاعات مشتری عمده","show-activity":!0,"show-wallet":!1,"edit-route":"bulkCustomer-edit"}))}});export{_ as default}; diff --git a/apps/admin-panel/dist/assets/ViewSingleCustomer-DBxv4PII.js b/apps/admin-panel/dist/assets/ViewSingleCustomer-DBxv4PII.js new file mode 100644 index 0000000..4c96838 --- /dev/null +++ b/apps/admin-panel/dist/assets/ViewSingleCustomer-DBxv4PII.js @@ -0,0 +1 @@ +import{C as t}from"./CustomerDetail-BSLGyXe8.js";import{d as e,a as o,o as r}from"./index-CuIWfDbM.js";import"./filters-Cvt98RIq.js";import"./index-CPTngTRs.js";import"./EnvironmentOutlined-BBvjB5-8.js";import"./UserOutlined-aZ-mQgwc.js";const _=e({__name:"ViewSingleCustomer",setup(i){return(s,a)=>(r(),o(t,{title:"مشاهده اطلاعات مشتری","show-wallet":!0,"show-activity":!1,"edit-route":"singleCustomer-edit"}))}});export{_ as default}; diff --git a/apps/admin-panel/dist/assets/ViewSingleCustomer-DeOwrnjc.js b/apps/admin-panel/dist/assets/ViewSingleCustomer-DeOwrnjc.js deleted file mode 100644 index ed644e7..0000000 --- a/apps/admin-panel/dist/assets/ViewSingleCustomer-DeOwrnjc.js +++ /dev/null @@ -1 +0,0 @@ -import{C as t}from"./CustomerDetail-CNcF_ewE.js";import{d as e,a as o,o as r}from"./index-C9T3Vski.js";import"./filters-D6Nzbpog.js";import"./index-m6pCHaEa.js";import"./EnvironmentOutlined-D8YNH9-a.js";import"./UserOutlined-Csu4xHRr.js";const _=e({__name:"ViewSingleCustomer",setup(i){return(s,a)=>(r(),o(t,{title:"مشاهده اطلاعات مشتری","show-wallet":!0,"show-activity":!1,"edit-route":"singleCustomer-edit"}))}});export{_ as default}; diff --git a/apps/admin-panel/dist/assets/accounting-CV0dCHMN.js b/apps/admin-panel/dist/assets/accounting-CiNdGIQr.js similarity index 99% rename from apps/admin-panel/dist/assets/accounting-CV0dCHMN.js rename to apps/admin-panel/dist/assets/accounting-CiNdGIQr.js index 91753f7..aa948d0 100644 --- a/apps/admin-panel/dist/assets/accounting-CV0dCHMN.js +++ b/apps/admin-panel/dist/assets/accounting-CiNdGIQr.js @@ -1 +1 @@ -import{m as Je}from"./index-m6pCHaEa.js";import{c as a,I as Ut,d as mt,n as Qe,o,b as c,p as n,a as x,g as Nt,f as u,t as v,w as l,i as _,F as D,e as Oe,q as Le,h as U,J as ht,s as M,z as ne,m as h,y as j,G as B,r as f,K as vt,L as Tt,_ as pt,u as $t,x as Dt,j as T}from"./index-C9T3Vski.js";import{L as It}from"./LockOutlined-DIFpMdwT.js";import{S as qe}from"./SafetyCertificateOutlined-DS5dQeR2.js";var Mt={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm192 472c0 4.4-3.6 8-8 8H328c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h368c4.4 0 8 3.6 8 8v48z"}}]},name:"minus-circle",theme:"filled"};function ct(C){for(var A=1;Ap.form.provider==="none"?null:p.form.provider),Z=M(()=>{var r;return((r=p.overview)==null?void 0:r.config)??null}),Y=r=>{var t;return(t=Z.value)==null?void 0:t[r]},oe=M(()=>{var r;return!!(i.value&&((r=Y(i.value))!=null&&r.tokenSet))}),O=M(()=>!!i.value&&/^https:\/\//i.test(p.form[i.value].baseUrl||"")),m=(r,t)=>{var g,y,N,I,ae;return JSON.stringify(t==="none"?{provider:t}:{provider:t,baseUrl:((g=r[t])==null?void 0:g.baseUrl)??"",caCert:((y=r[t])==null?void 0:y.caCert)??"",timeoutMs:(N=r[t])==null?void 0:N.timeoutMs,dbName:t==="tahesab"?(I=r.tahesab)==null?void 0:I.dbName:void 0,balanceOwesWhen:t==="zarrin"?(ae=r.zarrin)==null?void 0:ae.balanceOwesWhen:void 0})},X=M(()=>{var r;return Z.value?p.form.provider!==Z.value.provider?!0:i.value?m(p.form,i.value)!==m(Z.value,i.value)||!!((r=p.tokens[i.value])!=null&&r.trim()):!1:!1}),$e=M(()=>!!Z.value&&Z.value.provider!=="none"&&Z.value.provider!==p.form.provider),be=r=>r?Je(r).format("jYYYY/jMM/jDD ساعت HH:mm"):"",G=M(()=>{const r=p.overview;if(!r)return{tone:"off",icon:Pe,title:"…",text:"",rows:[]};const t=r.config;if(t.provider==="none")return{tone:"off",icon:Pe,title:"اتصال خاموش است",text:"هیچ اطلاعاتی با نرم‌افزار حسابداری رد و بدل نمی‌شود."};const g=W[t.provider];if(r.inactiveReason)return{tone:"bad",icon:vt,title:`اتصال به ${g} کار نمی‌کند`,text:r.inactiveReason};const y=r.realtime;if(y!=null&&y.lastError)return{tone:"bad",icon:vt,title:`${g}: ارتباط برقرار نیست`,text:y.lastError};const I=[{label:"آدرس",value:t[t.provider].baseUrl,ltr:!0}];return t.provider==="tahesab"&&I.push({label:"دیتابیس",value:t.tahesab.dbName,ltr:!0}),y!=null&&y.lastOkAt&&I.push({label:"آخرین ارتباط موفق",value:be(y.lastOkAt)}),{tone:"ok",icon:Tt,title:`متصل به ${g}`,text:"",rows:I}}),ee=ne({tahesab:!1,zarrin:!1});function ce(){i.value&&(p.tokens[i.value]="",ee[i.value]=!1)}Qe(()=>p.overview,()=>{ee.tahesab=!1,ee.zarrin=!1,S.value=null});const _e=M({get:()=>i.value?Math.round((p.form[i.value].timeoutMs??2e4)/1e3):20,set:r=>{i.value&&(p.form[i.value].timeoutMs=Math.max(3,Math.min(120,Number(r)||20))*1e3)}}),H=h(!1),S=h(null),ye=r=>{var t;return((t=r.match(/CN=([^\n,]+)/))==null?void 0:t[1])??r.replace(/\n/g,", ")},ie=r=>r?Je(new Date(r)).format("jYYYY/jMM/jDD"):"—",re=M(()=>{var r;return!!i.value&&(p.form[i.value].caCert||"")!==(((r=Y(i.value))==null?void 0:r.caCert)||"")}),q=M(()=>{var r;return i.value?re.value?S.value&&S.value.pem===p.form[i.value].caCert?S.value:null:((r=Y(i.value))==null?void 0:r.caInfo)??null:null});async function ue(){var r,t;if(i.value){H.value=!0;try{const{data:g}=await j.post("admin/accounting/certificate",{baseUrl:p.form[i.value].baseUrl});S.value=g,p.form[i.value].caCert&&g.pem.trim()===p.form[i.value].caCert.trim()?B.success("گواهی سرور همان گواهی تأییدشده است"):p.form[i.value].caCert&&(p.form[i.value].caCert="")}catch(g){B.error(((t=(r=g==null?void 0:g.response)==null?void 0:r.data)==null?void 0:t.message)??"گواهی دریافت نشد")}finally{H.value=!1}}}function te(){!i.value||!S.value||(p.form[i.value].caCert=S.value.pem)}const ke=h(!1),z=h(null),De=h(""),Ie=()=>i.value?JSON.stringify([p.form.provider,p.form[i.value],p.tokens[i.value]]):"",Me=M(()=>!!z.value&&De.value!==Ie()),We=M(()=>{var r;return!!i.value&&!!p.form[i.value].baseUrl&&(oe.value||!!((r=p.tokens[i.value])!=null&&r.trim()))});Qe(i,()=>z.value=null);async function de(){var t,g;if(!i.value)return;const r=i.value;ke.value=!0;try{const y={baseUrl:p.form[r].baseUrl,timeoutMs:p.form[r].timeoutMs,caCert:p.form[r].caCert,token:p.tokens[r]||void 0};r==="tahesab"?y.dbName=p.form.tahesab.dbName:y.balanceOwesWhen=p.form.zarrin.balanceOwesWhen,De.value=Ie();const{data:N}=await j.post("admin/accounting/test",{provider:r,connection:y});z.value=N}catch(y){const N=(g=(t=y==null?void 0:y.response)==null?void 0:t.data)==null?void 0:g.message;z.value={ok:!1,error:Array.isArray(N)?N.join("، "):N??"خطا در تست اتصال"}}finally{ke.value=!1}}const Fe={version:{label:"نسخه",ltr:!0},dbType:{label:"نوع دیتابیس",ltr:!0},dbName:{label:"دیتابیس",ltr:!0},customerGroups:{label:"گروه‌های حساب"},message:{label:"پیام سرور"}},J=M(()=>{var g,y;const r=((g=z.value)==null?void 0:g.info)??{},t=Object.entries(Fe).filter(([N])=>r[N]!==void 0&&r[N]!==null&&r[N]!=="").map(([N,I])=>({label:I.label,value:String(r[N]),ltr:I.ltr}));return t.push({label:"زمان پاسخ",value:`${(((y=z.value)==null?void 0:y.ms)??0).toLocaleString("fa-IR")} میلی‌ثانیه`,ltr:!1}),t}),Se=M(()=>{var r,t;return i.value==="tahesab"&&!!((t=(r=z.value)==null?void 0:r.info)!=null&&t.dbName)&&String(z.value.info.dbName).toLowerCase()!==String(p.form.tahesab.dbName||"").toLowerCase()});return(r,t)=>{var Ne,je,le;const g=f("a-tag"),y=f("a-alert"),N=f("a-input"),I=f("a-form-item"),ae=f("a-select-option"),xe=f("a-select"),L=f("a-button"),Ue=f("a-popconfirm"),F=f("a-space"),Re=f("a-input-password"),Q=f("a-form"),ze=f("a-input-number"),me=f("a-collapse-panel"),ge=f("a-collapse"),Ke=f("a-textarea");return o(),c("div",zt,[n("div",{class:Le(["status",`status--${G.value.tone}`])},[(o(),x(Nt(G.value.icon),{class:"status__icon"})),n("div",jt,[n("div",At,[u(v(G.value.title)+" ",1),X.value?(o(),x(g,{key:0,color:"orange",class:"status__tag"},{default:l(()=>[...t[11]||(t[11]=[u("تغییرات ذخیره نشده",-1)])]),_:1})):_("",!0)]),G.value.text?(o(),c("div",Gt,v(G.value.text),1)):_("",!0),(Ne=G.value.rows)!=null&&Ne.length?(o(),c("dl",Lt,[(o(!0),c(D,null,Oe(G.value.rows,b=>(o(),c(D,{key:b.label},[n("dt",null,v(b.label),1),n("dd",{dir:b.ltr?"ltr":void 0,class:Le({latin:b.ltr})},v(b.value),11,Pt)],64))),128))])):_("",!0)])],2),n("section",Bt,[t[13]||(t[13]=n("h3",{class:"step__title"},[n("span",{class:"step__no"},"۱"),u("نرم‌افزار حسابداری")],-1)),n("div",Wt,[(o(),c(D,null,Oe(Be,b=>n("button",{key:b.value,type:"button",role:"radio","aria-checked":C.form.provider===b.value,class:Le(["choice",{"choice--on":C.form.provider===b.value}]),onClick:Ce=>C.form.provider=b.value},[t[12]||(t[12]=n("span",{class:"choice__dot"},null,-1)),n("span",Kt,v(b.label),1),n("span",Vt,v(b.desc),1)],10,Ft)),64))]),$e.value?(o(),x(y,{key:0,class:"mt",type:"info","show-icon":"",message:"با ذخیره، نرم‌افزار عوض می‌شود",description:"کارهای در صف نرم‌افزار قبلی متوقف می‌مانند (پاک نمی‌شوند) و لینک‌های هر نرم‌افزار جدا نگه داشته می‌شوند؛ برگشت بی‌خطر است."})):_("",!0)]),i.value?(o(),c(D,{key:0},[n("section",Yt,[n("h3",Ht,[t[14]||(t[14]=n("span",{class:"step__no"},"۲",-1)),u("اطلاعات اتصال به "+v(W[i.value]),1)]),a(Q,{layout:"vertical",class:"grid"},{default:l(()=>[a(I,{label:"آدرس وب‌سرویس",required:""},{default:l(()=>[a(N,{value:C.form[i.value].baseUrl,"onUpdate:value":t[0]||(t[0]=b=>C.form[i.value].baseUrl=b),dir:"ltr",class:"ltr",placeholder:i.value==="tahesab"?"https://192.168.1.10:8081":"http://192.168.1.10:8000/ZarrinService/accounting"},null,8,["value","placeholder"]),n("div",qt,"آدرسی که وب‌سرویس "+v(W[i.value])+" روی آن در دسترس است، با پورت.",1)]),_:1}),i.value==="tahesab"?(o(),x(I,{key:0,label:"نام دیتابیس (DBname)",required:""},{default:l(()=>[a(N,{value:C.form.tahesab.dbName,"onUpdate:value":t[1]||(t[1]=b=>C.form.tahesab.dbName=b),dir:"ltr",class:"ltr",placeholder:"TahesabDB"},null,8,["value"]),t[15]||(t[15]=n("div",{class:"help"},"نام دقیق دیتابیس همین شرکت. یک سرور ممکن است چند دیتابیس داشته باشد؛ بعد از تست، نام را در نتیجه چک کنید.",-1))]),_:1})):(o(),x(I,{key:1,label:"علامت مانده‌ی بدهکار"},{default:l(()=>[a(xe,{value:C.form.zarrin.balanceOwesWhen,"onUpdate:value":t[2]||(t[2]=b=>C.form.zarrin.balanceOwesWhen=b)},{default:l(()=>[a(ae,{value:"negative"},{default:l(()=>[...t[16]||(t[16]=[u("منفی یعنی بدهکار",-1)])]),_:1}),a(ae,{value:"positive"},{default:l(()=>[...t[17]||(t[17]=[u("مثبت یعنی بدهکار",-1)])]),_:1})]),_:1},8,["value"]),t[18]||(t[18]=n("div",{class:"help"},"در زرین منفی یعنی بدهکار (روی نصب واقعی بررسی شد)؛ تغییرش ندهید مگر نصب شما خلاف این باشد.",-1))]),_:1})),a(I,{label:"توکن وب‌سرویس",required:"",class:"grid__full"},{default:l(()=>{var b;return[oe.value&&!ee[i.value]?(o(),c("div",Jt,[a(U(It),{class:"token__icon"}),(b=Y(i.value))!=null&&b.tokenReadable?(o(),c("span",Qt,"توکن ذخیره شده است و نمایش داده نمی‌شود.")):(o(),c("span",Zt,"توکن ذخیره‌شده قابل‌خواندن نیست؛ دوباره وارد کنید.")),a(F,{class:"token__actions"},{default:l(()=>[a(L,{size:"small",onClick:t[3]||(t[3]=Ce=>ee[i.value]=!0)},{default:l(()=>[...t[19]||(t[19]=[u("تغییر توکن",-1)])]),_:1}),a(Ue,{title:"توکن حذف شود؟ تا توکن جدید وارد نشود اتصال کار نمی‌کند.","ok-text":"حذف","cancel-text":"انصراف",onConfirm:t[4]||(t[4]=Ce=>V("clearToken",i.value))},{default:l(()=>[a(L,{size:"small",danger:""},{default:l(()=>[...t[20]||(t[20]=[u("حذف",-1)])]),_:1})]),_:1})]),_:1})])):(o(),c(D,{key:1},[a(Re,{value:C.tokens[i.value],"onUpdate:value":t[5]||(t[5]=Ce=>C.tokens[i.value]=Ce),dir:"ltr",class:"ltr",autocomplete:"new-password",placeholder:"توکن را اینجا وارد کنید"},null,8,["value"]),n("div",Xt,[t[21]||(t[21]=u(" بعد از ذخیره، توکن رمز می‌شود و دیگر نمایش داده نمی‌شود. ",-1)),oe.value?(o(),c("a",{key:0,class:"link",onClick:ce},"انصراف و نگه‌داشتن توکن فعلی")):_("",!0)])],64))]}),_:1})]),_:1}),a(ge,{ghost:"",class:"advanced"},{default:l(()=>[a(me,{key:"adv",header:"تنظیمات پیشرفته"},{default:l(()=>[a(Q,{layout:"vertical"},{default:l(()=>[a(I,{label:"حداکثر زمان انتظار برای پاسخ"},{default:l(()=>[a(ze,{value:_e.value,"onUpdate:value":t[6]||(t[6]=b=>_e.value=b),min:3,max:120,"addon-after":"ثانیه"},null,8,["value"]),t[22]||(t[22]=n("div",{class:"help"},"اگر سرور حسابداری کند است بیشترش کنید. پیش‌فرض ۲۰ ثانیه.",-1))]),_:1})]),_:1})]),_:1})]),_:1})]),O.value?(o(),c("section",ea,[t[41]||(t[41]=n("h3",{class:"step__title"},[n("span",{class:"step__no"},"۳"),u("گواهی امنیتی سرور")],-1)),n("p",ta," اتصال همیشه رمزنگاری‌شده و بررسی‌شده است. نصب‌های معمول "+v(W[i.value])+" گواهی خودساخته دارند؛ در این حالت یک بار گواهی سرور را بررسی و تأیید کنید. ",1),C.form[i.value].caCert?(o(),c("div",aa,[a(U(qe),{class:"cert__icon"}),n("div",la,[n("div",sa,[t[25]||(t[25]=u(" گواهی سرور تأیید شده است ",-1)),re.value?(o(),x(g,{key:0,color:"orange"},{default:l(()=>[...t[23]||(t[23]=[u("ذخیره نشده",-1)])]),_:1})):_("",!0),(je=q.value)!=null&&je.expired?(o(),x(g,{key:1,color:"red"},{default:l(()=>[...t[24]||(t[24]=[u("منقضی شده",-1)])]),_:1})):_("",!0)]),q.value?(o(),c("dl",na,[t[26]||(t[26]=n("dt",null,"صادرشده برای",-1)),n("dd",oa,v(ye(q.value.subject)),1),t[27]||(t[27]=n("dt",null,"معتبر تا",-1)),n("dd",null,v(ie(q.value.validTo)),1),t[28]||(t[28]=n("dt",null,"اثرانگشت",-1)),n("dd",ia,v(q.value.fingerprint256),1)])):(o(),c("div",ra,"مشخصات گواهی بعد از ذخیره نمایش داده می‌شود."))]),a(F,{direction:"vertical",class:"cert__actions"},{default:l(()=>[a(L,{size:"small",loading:H.value,onClick:ue},{default:l(()=>[...t[29]||(t[29]=[u("بررسی دوباره",-1)])]),_:1},8,["loading"]),a(L,{size:"small",danger:"",onClick:t[7]||(t[7]=b=>C.form[i.value].caCert="")},{default:l(()=>[...t[30]||(t[30]=[u("برداشتن",-1)])]),_:1})]),_:1})])):S.value&&!S.value.trustedBySystem?(o(),c("div",ua,[a(U(ht),{class:"cert__icon"}),n("div",da,[t[34]||(t[34]=n("div",{class:"cert__title"},"این گواهی را تأیید می‌کنید؟",-1)),t[35]||(t[35]=n("div",{class:"help"},"اثرانگشت زیر را با گواهی نصب‌شده روی سرور حسابداری مقایسه کنید. اگر یکی است تأیید کنید.",-1)),n("dl",va,[t[31]||(t[31]=n("dt",null,"صادرشده برای",-1)),n("dd",ca,v(ye(S.value.subject)),1),t[32]||(t[32]=n("dt",null,"معتبر تا",-1)),n("dd",null,v(ie(S.value.validTo)),1),t[33]||(t[33]=n("dt",null,"اثرانگشت",-1)),n("dd",ma,v(S.value.fingerprint256),1)]),S.value.expired?(o(),x(y,{key:0,type:"error","show-icon":"",message:"این گواهی منقضی شده است.",class:"mt"})):_("",!0)]),a(F,{direction:"vertical",class:"cert__actions"},{default:l(()=>[a(L,{type:"primary",size:"small",onClick:te},{default:l(()=>[...t[36]||(t[36]=[u("تأیید گواهی",-1)])]),_:1}),a(L,{size:"small",onClick:t[8]||(t[8]=b=>S.value=null)},{default:l(()=>[...t[37]||(t[37]=[u("انصراف",-1)])]),_:1})]),_:1})])):(le=S.value)!=null&&le.trustedBySystem?(o(),c("div",pa,[a(U(qe),{class:"cert__icon"}),t[38]||(t[38]=n("div",{class:"cert__body"},[n("div",{class:"cert__title"},"گواهی سرور معتبر است"),n("div",{class:"help"},"این سرور گواهی معتبر عمومی دارد؛ کاری لازم نیست.")],-1))])):(o(),c("div",fa,[a(U(qe),{class:"cert__icon cert__icon--muted"}),t[40]||(t[40]=n("div",{class:"cert__body"},[n("div",{class:"cert__title"},"گواهی‌ای تأیید نشده"),n("div",{class:"help"},"اگر «تست اتصال» خطای گواهی داد، اینجا گواهی سرور را بررسی کنید.")],-1)),a(L,{loading:H.value,disabled:!C.form[i.value].baseUrl,onClick:ue},{default:l(()=>[...t[39]||(t[39]=[u("بررسی گواهی سرور",-1)])]),_:1},8,["loading","disabled"])])),a(ge,{ghost:"",class:"advanced"},{default:l(()=>[a(me,{key:"pem",header:"وارد کردن دستی گواهی (PEM)"},{default:l(()=>[a(Ke,{value:C.form[i.value].caCert,"onUpdate:value":t[9]||(t[9]=b=>C.form[i.value].caCert=b),dir:"ltr",class:"ltr mono",rows:5,placeholder:"-----BEGIN CERTIFICATE-----"},null,8,["value"])]),_:1})]),_:1})])):_("",!0)],64)):_("",!0),i.value&&z.value?(o(),c("section",ba,[z.value.ok?(o(),x(y,{key:0,type:"success","show-icon":"",message:`اتصال به ${W[i.value]} برقرار است`},{description:l(()=>[n("dl",_a,[(o(!0),c(D,null,Oe(J.value,b=>(o(),c(D,{key:b.label},[n("dt",null,v(b.label),1),n("dd",{dir:b.ltr?"ltr":void 0,class:Le({latin:b.ltr})},v(b.value),11,ya)],64))),128))]),Se.value?(o(),c("div",ka,[t[42]||(t[42]=u(" دیتابیسی که وصل شد ",-1)),n("bdi",ga,v(z.value.info.dbName),1),t[43]||(t[43]=u(" است، نه ",-1)),n("bdi",Ca,v(C.form.tahesab.dbName),1),t[44]||(t[44]=u(". نام دیتابیس را چک کنید. ",-1))])):_("",!0),Me.value?(o(),c("div",wa,"این نتیجه برای مقادیر قبلی است؛ دوباره تست کنید.")):_("",!0)]),_:1},8,["message"])):(o(),x(y,{key:1,type:"error","show-icon":"",message:"اتصال برقرار نشد"},{description:l(()=>[n("div",null,v(z.value.error),1),Me.value?(o(),c("div",Ea,"این نتیجه برای مقادیر قبلی است؛ دوباره تست کنید.")):_("",!0)]),_:1}))])):_("",!0),n("div",Oa,[n("span",Sa,[X.value?(o(),c(D,{key:0},[u("تغییرات هنوز ذخیره نشده‌اند.")],64)):i.value?(o(),c(D,{key:1},[u("«تست اتصال» مقادیر همین فرم را امتحان می‌کند، حتی پیش از ذخیره.")],64)):_("",!0)]),a(F,null,{default:l(()=>[i.value?(o(),x(L,{key:0,loading:ke.value,disabled:!We.value,onClick:de},{default:l(()=>[...t[45]||(t[45]=[u("تست اتصال",-1)])]),_:1},8,["loading","disabled"])):_("",!0),a(L,{type:"primary",loading:C.saving,disabled:!X.value,onClick:t[10]||(t[10]=b=>V("save"))},{default:l(()=>[...t[46]||(t[46]=[u("ذخیره",-1)])]),_:1},8,["loading","disabled"])]),_:1})])])}}}),Ua=pt(xa,[["__scopeId","data-v-a7739f0b"]]),Na={key:0},ha={key:0},Ta={key:1},$a={key:2,class:"warn"},Da={key:2},Ia={key:0,class:"hint"},Ma={key:0,class:"warn"},Ra={key:1},za={class:"grid-2 mt-4"},ja={class:"hint mb-4"},Aa={key:0},Ga={class:"grid-2"},La={class:"grid-2"},Pa={key:1,class:"hint mb-4"},Ba={key:2,class:"hint mb-4"},Wa={key:0,class:"hint"},Fa={key:4,class:"warn small"},Ka={class:"grid-2"},Va={dir:"ltr"},Ya={dir:"ltr"},Ha={class:"hint"},qa=mt({__name:"accounting",setup(C){const A=$t(),p=s=>!!A.hasPermission(s),V={PENDING:"در صف",SENDING:"در حال ارسال",SENT:"ارسال شد",FAILED:"ناموفق",NEEDS_REVIEW:"نیاز به بررسی",RESOLVED:"حل‌شده"},W={PENDING:"default",SENDING:"processing",SENT:"success",FAILED:"error",NEEDS_REVIEW:"warning",RESOLVED:"default"},Be={CUSTOMER_PUSH:"ارسال مشتری",PRODUCT_PUSH:"ساخت کارساخته",ORDER_DOCUMENT:"سند سفارش",ORDER_DOCUMENT_DELETE:"حذف سند سفارش"},i={CUSTOMER_NO_MOBILE:"حساب بدون موبایل",CUSTOMER_DUPLICATE_MOBILE:"موبایل تکراری",CUSTOMER_LINK_CONFLICT:"تداخل لینک",PRODUCT_DUPLICATE_TITLE:"عنوان تکراری محصول",PRODUCT_CODE_TAKEN:"کد محصول تکراری"},Z={LINKED:"جفت با موبایل/نام",IMPORTED:"وارد شده از حسابداری",PUSHED:`ساخته شده از ${T.name}`,MANUAL:"دستی"},Y=h(!1),oe=h("connection"),O=h(null),m=ne({provider:"none",tahesab:{baseUrl:"",dbName:"TahesabDB",timeoutMs:2e4,caCert:""},zarrin:{baseUrl:"",balanceOwesWhen:"negative",timeoutMs:2e4,caCert:""},features:{customers:!1,balances:!1,report:!1,products:!1,documents:!1},intervals:{customersMinutes:60,balancesMinutes:10,productsMinutes:30},mapping:{karat:750},report:{windowDays:365},documents:{triggerStatus:"DELIVERED_TO_AGENT"}}),X=ne({tahesab:"",zarrin:""}),$e=h("none"),be=M(()=>$e.value!=="none"),G=ne({customerGroups:[],karSakhteGroups:[],karSakhteTypes:[]}),ee=h([]),ce=h([]),_e=h(!1),H=s=>s?`${s.id}|${s.name}`:void 0,S=s=>{if(!s)return null;const e=s.indexOf("|");return{id:s.slice(0,e),name:s.slice(e+1)}},ye=(s,e)=>{const k=[...s];for(const w of e)w&&!k.some(K=>K.id===w.id&&K.name===w.name)&&k.push(w);return k.map(w=>({value:H(w),label:w.id?`${w.name} (${w.id})`:w.name}))},ie=h([]),re=h(),q=h(),ue=h(),te=ne({}),ke=M(()=>ye(G.customerGroups,[...ie.value.map(S),S(re.value)])),z=M(()=>ye(G.karSakhteGroups,[S(q.value),...Object.values(te).map(S)])),De=M(()=>ye(G.karSakhteTypes,[S(ue.value)])),Ie=[{value:"PLACED",label:"ثبت سفارش"},{value:"ADMIN_APPROVED",label:"تأیید مدیر"},{value:"SOURCING",label:"در حال تأمین"},{value:"PREPARING",label:"در حال آماده‌سازی"},{value:"DELIVERED_TO_AGENT",label:"تحویل مسئول فروش"},{value:"DELIVERED_TO_CUSTOMER",label:"تحویل مشتری"}],Me=[{key:"customers",label:"سینک مشتریان (ورود/لینک با موبایل، ساخت پس از احراز هویت)",interval:"customersMinutes",job:"customers"},{key:"balances",label:"سینک مانده (نمایش به مشتری)",interval:"balancesMinutes",job:"balances"},{key:"report",label:"گزارش مشتری از حسابداری",interval:null,job:null},{key:"products",label:"کارساخته ↔ محصول و قفل ناموجود",interval:"productsMinutes",job:"products"},{key:"documents",label:"ثبت سند سفارش (موقت)",interval:null,job:"outbox"}],We=[{title:"قابلیت",dataIndex:"label",key:"label"},{title:"فعال",key:"on",width:80},{title:"بازه",key:"interval",width:170},{title:"وضعیت",key:"state"},{title:"",key:"run",width:110}],de=s=>{var e,k,w;return(w=(k=(e=O.value)==null?void 0:e.state)==null?void 0:k.jobs)==null?void 0:w[s]},Fe=s=>Object.entries(s).map(([e,k])=>`${e}: ${k}`).join("، "),J=ne({rows:[],total:0,page:1,limit:25}),Se=h(),r=[{title:"زمان",key:"createdAt",width:150},{title:"نوع",key:"kind",width:120},{title:"مورد",key:"entity"},{title:"وضعیت",key:"status",width:140},{title:"خطا",key:"error"},{title:"",key:"actions",width:190}],t=M(()=>{var k;const s=((k=O.value)==null?void 0:k.outbox)??{},e=(s.FAILED??0)+(s.NEEDS_REVIEW??0);return e?` (${e})`:""}),g=ne({rows:[],total:0,page:1,limit:25}),y=ne({rows:[],total:0,page:1,limit:25}),N=h("CUSTOMER"),I=h(""),ae=ne({rows:[],scope:null}),xe=h(""),L=h(""),Ue=h(!1),F=s=>s?Je(s).format("jYYYY/jMM/jDD HH:mm"):"—",Re=s=>s==null?"—":JSON.stringify(s,null,2),Q=(s,e)=>{var w,K;const k=(K=(w=s==null?void 0:s.response)==null?void 0:w.data)==null?void 0:K.message;return Array.isArray(k)?k.join("، "):k??e};function ze(s){var e;m.provider=s.provider,$e.value=s.provider;for(const k of["tahesab","zarrin"])m[k].baseUrl=s[k].baseUrl,m[k].timeoutMs=s[k].timeoutMs,m[k].caCert=s[k].caCert??"";m.tahesab.dbName=s.tahesab.dbName,m.zarrin.balanceOwesWhen=s.zarrin.balanceOwesWhen,Object.assign(m.features,s.features),Object.assign(m.intervals,s.intervals),m.mapping.karat=s.mapping.karat,m.report.windowDays=s.report.windowDays,m.documents.triggerStatus=((e=s.documents)==null?void 0:e.triggerStatus)??"DELIVERED_TO_AGENT",ie.value=(s.mapping.importCustomerGroups??[]).map(H),re.value=H(s.mapping.newCustomerGroup),q.value=H(s.mapping.newKarSakhteGroup),ue.value=H(s.mapping.newKarSakhteType);for(const k of Object.keys(te))delete te[k];for(const k of s.mapping.categoryGroups??[])te[k.categoryId]=H(k.group)}async function me(){try{Y.value=!0;const{data:s}=await j.get("admin/accounting");O.value=s,ze(s.config)}catch(s){B.error(Q(s,"خطا در دریافت تنظیمات"))}finally{Y.value=!1}}async function ge(){const s={provider:m.provider,tahesab:{baseUrl:m.tahesab.baseUrl,dbName:m.tahesab.dbName,timeoutMs:m.tahesab.timeoutMs,caCert:m.tahesab.caCert},zarrin:{baseUrl:m.zarrin.baseUrl,balanceOwesWhen:m.zarrin.balanceOwesWhen,timeoutMs:m.zarrin.timeoutMs,caCert:m.zarrin.caCert},features:m.features,intervals:m.intervals,report:m.report,documents:m.documents,mapping:{karat:m.mapping.karat,importCustomerGroups:ie.value.map(S).filter(Boolean),newCustomerGroup:S(re.value),newKarSakhteGroup:S(q.value),newKarSakhteType:S(ue.value),categoryGroups:Object.entries(te).filter(([,e])=>!!e).map(([e,k])=>({categoryId:e,group:S(k)}))}};for(const e of["tahesab","zarrin"])X[e].trim()&&(s[e].token=X[e].trim());try{Y.value=!0;const{data:e}=await j.put("admin/accounting/config",s);O.value=e,ze(e.config),X.tahesab="",X.zarrin="",B.success("تنظیمات ذخیره شد")}catch(e){B.error(Q(e,"خطا در ذخیره"))}finally{Y.value=!1}}async function Ke(s){try{const{data:e}=await j.put("admin/accounting/config",{[s]:{token:null}});O.value=e,B.success("توکن حذف شد")}catch(e){B.error(Q(e,"خطا"))}}async function Ne(){_e.value=!0,ce.value=[];try{const{data:s}=await j.get("admin/accounting/options",{params:{provider:m.provider}});G.customerGroups=s.customerGroups.items,G.karSakhteGroups=s.karSakhteGroups.items,G.karSakhteTypes=s.karSakhteTypes.items,ee.value=s.categories;for(const e of[s.customerGroups,s.karSakhteGroups,s.karSakhteTypes])e.ok||ce.value.push(e.error)}catch(s){ce.value=[Q(s,"تنظیمات اتصال را اول ذخیره کنید")]}finally{_e.value=!1}}async function je(s){try{const{data:e}=await j.post(`admin/accounting/run/${s}`);e.started?B.success("همگام‌سازی شروع شد؛ نتیجه چند لحظه بعد در همین صفحه دیده می‌شود"):B.warning(e.message),setTimeout(me,4e3)}catch(e){B.error(Q(e,"خطا"))}}async function le(s=1){const{data:e}=await j.get("admin/accounting/outbox",{params:{page:s,status:Se.value}});Object.assign(J,e)}async function b(s){try{await j.post(`admin/accounting/outbox/${s}/retry`),B.success("دوباره در صف قرار گرفت"),le(J.page)}catch(e){B.error(Q(e,"خطا"))}}async function Ce(s){await j.post(`admin/accounting/outbox/${s}/resolve`,{}),le(J.page)}async function Ve(s=1){const{data:e}=await j.get("admin/accounting/issues",{params:{page:s}});Object.assign(g,e)}async function ft(s){await j.post(`admin/accounting/issues/${s}/resolve`),Ve(g.page),me()}async function he(s=1){const{data:e}=await j.get("admin/accounting/links",{params:{page:s,entityType:N.value,q:I.value||void 0}});Object.assign(y,e)}async function bt(s){await j.delete(`admin/accounting/links/${s}`),he(y.page)}async function _t(){Ue.value=!0;try{const{data:s}=await j.get("admin/accounting/movement",{params:{from:xe.value||void 0,to:L.value||void 0}});Object.assign(ae,s)}catch(s){B.error(Q(s,"خطا در دریافت گردش"))}finally{Ue.value=!1}}return Qe(oe,s=>{s==="outbox"&&le(1),s==="issues"&&Ve(1),s==="links"&&he(1),s==="mapping"&&m.provider!=="none"&&ee.value.length===0&&Ne()}),Dt(me),(s,e)=>{const k=f("a-tag"),w=f("a-button"),K=f("a-space"),ve=f("a-alert"),pe=f("a-tab-pane"),yt=f("a-switch"),Ye=f("a-input-number"),Ze=f("a-select-option"),fe=f("a-select"),we=f("a-table"),Ee=f("a-form-item"),kt=f("a-collapse-panel"),gt=f("a-collapse"),Xe=f("a-divider"),$=f("a-table-column"),Ct=f("a-form"),He=f("a-popconfirm"),et=f("a-radio-button"),wt=f("a-radio-group"),Et=f("a-input-search"),tt=f("a-input"),Ot=f("a-tabs"),St=f("a-spin"),xt=f("a-card");return o(),c("div",null,[p("config.accounting")?(o(),x(xt,{key:0,title:"اتصال به نرم‌افزار حسابداری",class:"page-card table-scroll"},{extra:l(()=>[a(K,null,{default:l(()=>{var Te;return[(Te=O.value)!=null&&Te.busy?(o(),x(k,{key:0,color:"processing"},{default:l(()=>[...e[17]||(e[17]=[u("همگام‌سازی در حال اجرا",-1)])]),_:1})):_("",!0),a(w,{size:"small",onClick:me},{default:l(()=>[...e[18]||(e[18]=[u("تازه‌سازی",-1)])]),_:1})]}),_:1})]),default:l(()=>{var Te,at,lt,st,nt,ot,it,rt;return[O.value&&O.value.config.secretKeySource!=="ACCOUNTING_SECRET_KEY"?(o(),x(ve,{key:0,type:"warning","show-icon":"",class:"mb-4",message:"متغیر ACCOUNTING_SECRET_KEY روی سرور تنظیم نشده است",description:"توکن با کلیدی مشتق از JWT_SECRET رمز می‌شود؛ اگر JWT_SECRET عوض شود باید توکن را دوباره وارد کنید."})):_("",!0),(Te=O.value)!=null&&Te.inactiveReason&&O.value.config.provider!=="none"&&oe.value!=="connection"?(o(),x(ve,{key:1,type:"error","show-icon":"",class:"mb-4",message:"همگام‌سازی انجام نمی‌شود",description:O.value.inactiveReason},null,8,["description"])):be.value&&!((nt=(st=(lt=(at=O.value)==null?void 0:at.config)==null?void 0:lt.mapping)==null?void 0:st.importCustomerGroups)!=null&&nt.length)&&((rt=(it=(ot=O.value)==null?void 0:ot.config)==null?void 0:it.features)!=null&&rt.customers)?(o(),x(ve,{key:2,type:"warning","show-icon":"",class:"mb-4",message:"سینک مشتری اجرا نمی‌شود",description:"هیچ گروه مشتری برای ورود انتخاب نشده است؛ در تب «نگاشت» گروه‌هایی را که واقعاً مشتری هستند انتخاب و ذخیره کنید."})):_("",!0),a(St,{spinning:Y.value},{default:l(()=>[a(Ot,{"active-key":oe.value,"onUpdate:activeKey":e[16]||(e[16]=Ae=>oe.value=Ae)},{default:l(()=>{var Ae;return[a(pe,{key:"connection",tab:"اتصال"},{default:l(()=>[a(Ua,{overview:O.value,form:m,tokens:X,saving:Y.value,onSave:ge,onClearToken:Ke},null,8,["overview","form","tokens","saving"])]),_:1}),a(pe,{key:"features",tab:"قابلیت‌ها و زمان‌بندی"},{default:l(()=>{var d,E,Ge,ut;return[m.provider==="zarrin"?(o(),x(ve,{key:0,type:"info","show-icon":"",class:"mb-4",message:"درایور زرین روی نصب واقعی تست نشده است",description:"طبق تصمیم مالک، پیش از استفاده‌ی واقعی یک دوره‌ی آزمایشی با اسناد موقت لازم است (علامت مانده و فیلد هزینه‌ی سنگ را بررسی کنید)."})):_("",!0),be.value&&((E=(d=O.value)==null?void 0:d.config)!=null&&E.provider)&&(m.features.balances||m.features.products)?(o(),x(ve,{key:1,type:(ut=(Ge=O.value)==null?void 0:Ge.realtime)!=null&&ut.lastError?"warning":"success","show-icon":"",class:"mb-4",message:"همگام‌سازی لحظه‌ای"},{description:l(()=>{var se,R,P,dt;return[(R=(se=O.value)==null?void 0:se.realtime)!=null&&R.lastOkAt?(o(),c("div",Na,[u(" تغییرات حسابداری چند ثانیه یک‌بار بررسی می‌شود؛ آخرین بررسی: "+v(F(O.value.realtime.lastOkAt))+". ",1),O.value.realtime.lastChangeAt?(o(),c("span",ha,"آخرین تغییر دریافت‌شده: "+v(F(O.value.realtime.lastChangeAt))+".",1)):_("",!0)])):(o(),c("div",Ta,"هنوز بررسی انجام نشده است (چند ثانیه بعد از روشن‌شدن شروع می‌شود).")),(dt=(P=O.value)==null?void 0:P.realtime)!=null&&dt.lastError?(o(),c("div",$a,"خطای آخرین بررسی: "+v(O.value.realtime.lastError),1)):_("",!0),e[19]||(e[19]=n("div",{class:"hint"}," سفارش و ویرایش مشتری بلافاصله ارسال می‌شود و موجودی هنگام ثبت سفارش مستقیم از حسابداری خوانده می‌شود؛ اگر حسابداری آن لحظه پاسخ ندهد، آخرین موجودی معلوم ملاک است. بازه‌های «دقیقه»ی زیر فقط شبکه‌ی اطمینان‌اند (مشتری جدید، ویرایش یا حذف در حسابداری). ",-1))]}),_:1},8,["type"])):_("",!0),a(we,{"data-source":Me,columns:We,pagination:!1,"row-key":"key",size:"middle"},{bodyCell:l(({column:se,record:R})=>[se.key==="on"?(o(),x(yt,{key:0,checked:m.features[R.key],"onUpdate:checked":P=>m.features[R.key]=P},null,8,["checked","onUpdate:checked"])):se.key==="interval"?(o(),c(D,{key:1},[R.interval?(o(),x(Ye,{key:0,value:m.intervals[R.interval],"onUpdate:value":P=>m.intervals[R.interval]=P,min:1,max:1440,"addon-after":"دقیقه"},null,8,["value","onUpdate:value"])):R.key==="documents"?(o(),x(fe,{key:1,value:m.documents.triggerStatus,"onUpdate:value":e[0]||(e[0]=P=>m.documents.triggerStatus=P),style:{"min-width":"220px"},title:"سند (موقت / پیش‌فاکتور) وقتی سفارش به این وضعیت برسد ثبت می‌شود"},{default:l(()=>[(o(),c(D,null,Oe(Ie,P=>a(Ze,{key:P.value,value:P.value},{default:l(()=>[u("ثبت در: "+v(P.label),1)]),_:2},1032,["value"])),64))]),_:1},8,["value"])):(o(),c("span",Da,"—"))],64)):se.key==="state"?(o(),c(D,{key:2},[R.job&&de(R.job)?(o(),c("div",Ia,[u(" آخرین اجرا: "+v(F(de(R.job).lastRunAt))+" ",1),de(R.job).lastError?(o(),c("span",Ma," — خطا: "+v(de(R.job).lastError),1)):de(R.job).summary?(o(),c("span",Ra," — "+v(Fe(de(R.job).summary)),1)):_("",!0)])):_("",!0)],64)):se.key==="run"?(o(),c(D,{key:3},[R.job?(o(),x(w,{key:0,size:"small",disabled:!be.value,onClick:P=>je(R.job)},{default:l(()=>[...e[20]||(e[20]=[u("سینک الان",-1)])]),_:1},8,["disabled","onClick"])):_("",!0)],64)):_("",!0)]),_:1}),n("div",za,[a(Ee,{label:"بازه‌ی گزارش مشتری (روز)"},{default:l(()=>[a(Ye,{value:m.report.windowDays,"onUpdate:value":e[1]||(e[1]=se=>m.report.windowDays=se),min:7,max:3650,class:"w-full"},null,8,["value"])]),_:1})]),n("div",ja," اسناد سفارش همیشه «موقت» ثبت می‌شوند و تا حسابدار نهایی نکند روی مانده‌ی حسابداری اثر ندارند. سقف اعتبار سفارش همچنان با دفتر داخلی "+v(U(T).name)+" چک می‌شود. ",1),a(w,{type:"primary",onClick:ge},{default:l(()=>[...e[21]||(e[21]=[u("ذخیره",-1)])]),_:1})]}),_:1}),a(pe,{key:"mapping",tab:"نگاشت"},{default:l(()=>[a(gt,{ghost:"",class:"mb-4"},{default:l(()=>[a(kt,{key:"guide",header:"راهنمای این تب: نگاشت چیست و چطور پر می‌شود؟"},{default:l(()=>[n("p",null,[u(" در این صفحه «"+v(U(T).name)+"» یعنی همین سامانه: ",1),e[22]||(e[22]=n("b",null,"اپ مشتری",-1)),e[23]||(e[23]=u(" (جایی که مشتری ثبت‌نام، احراز هویت و سفارش می‌کند و مانده‌اش را می‌بیند) و ",-1)),e[24]||(e[24]=n("b",null,"پنل مدیریت",-1)),e[25]||(e[25]=u(" (همین پنل، جایی که محصول و دسته‌بندی تعریف می‌شود). «حسابداری» یعنی نرم‌افزار حسابداری مغازه (ته‌حساب یا زرین). ",-1))]),n("p",null,v(U(T).name)+" و حسابداری هر کدام گروه‌بندی خودشان را دارند. این تب می‌گوید هر چیز در "+v(U(T).name)+" با کدام گروه در حسابداری متناظر است؛ خودِ مشتری‌ها و محصول‌ها اینجا وصل نمی‌شوند (آن‌ها در تب «لینک‌ها» دیده می‌شوند). ",1),n("ol",null,[e[29]||(e[29]=n("li",null,"تنظیمات تب «اتصال» را ذخیره کنید، بعد «دریافت گروه‌ها از حسابداری» را بزنید تا فهرست‌ها از حسابداری پر شوند.",-1)),n("li",null,[n("b",null,"گروه‌های حسابی که مشتری "+v(U(T).name)+" حساب می‌شوند:",1),e[26]||(e[26]=u(" در حسابداری صندوق، کارمند و سرمایه‌گذار هم «حساب» هستند. فقط گروه‌هایی را انتخاب کنید که واقعاً مشتری‌اند؛ سینک مشتری فقط حساب‌های این گروه‌ها را با شماره موبایل به کاربران اپ مشتری وصل می‌کند. اگر خالی بماند سینک مشتری اجرا نمی‌شود. ",-1))]),e[30]||(e[30]=n("li",null,[n("b",null,"گروه مشتری جدید:"),u(" وقتی کاربری در اپ مشتری احراز هویت شود و در حسابداری حساب نداشته باشد، حسابش در این گروه ساخته می‌شود. اگر تعیین نشود، ساخت حساب در «لاگ ارسال» با وضعیت «نیاز به بررسی» می‌ماند. ")],-1)),n("li",null,[e[27]||(e[27]=n("b",null,"عیار پایه:",-1)),u(" عیار وزن‌هایی که در "+v(U(T).name)+" ثبت می‌شود (وزن محصول‌ها و سفارش‌ها؛ معمولاً ۷۵۰ = ۱۸ عیار). در سند سفارش، وزن با همین عیار به حسابداری می‌رود؛ در ته‌حساب اجرت هم روی آن اعمال می‌شود (مثلاً ۷۵۰ با اجرت ۱۰٪ می‌شود ۸۲۵). ",1)]),m.provider==="zarrin"?(o(),c("li",Aa,[e[28]||(e[28]=n("b",null,"کارساخته (فقط زرین):",-1)),u(" وقتی در پنل مدیریت "+v(U(T).name)+" محصول جدیدی تعریف شود، برایش یک «کارساخته» در زرین ساخته می‌شود. «نوع» تعیین می‌کند گرمی است یا تعدادی، و «گروه ساخته» جای آن در زرین است. در جدول پایین برای هر دسته‌بندی محصولِ "+v(U(T).name)+" می‌توانید گروه جدا بدهید؛ دسته‌ای که «پیش‌فرض» بماند در «گروه ساخته‌ی پیش‌فرض» می‌رود. اگر نوع یا گروه خالی باشد، ساخت کارساخته در «لاگ ارسال» منتظر بررسی می‌ماند. ",1)])):_("",!0)]),e[31]||(e[31]=n("p",{class:"hint"}," تغییر این تنظیمات فقط روی موارد بعدی اثر دارد؛ حساب‌ها و کارساخته‌هایی که قبلاً ساخته شده‌اند جابه‌جا نمی‌شوند. در آخر «ذخیره» را بزنید. ",-1))]),_:1})]),_:1}),a(K,{class:"mb-4"},{default:l(()=>[a(w,{disabled:m.provider==="none",loading:_e.value,onClick:Ne},{default:l(()=>[...e[32]||(e[32]=[u("دریافت گروه‌ها از حسابداری",-1)])]),_:1},8,["disabled","loading"]),(o(!0),c(D,null,Oe(ce.value,d=>(o(),c("span",{key:d,class:"warn"},v(d),1))),128))]),_:1}),a(Ct,{layout:"vertical"},{default:l(()=>[a(Xe,{orientation:"right"},{default:l(()=>[...e[33]||(e[33]=[u("حساب مشتری‌ها",-1)])]),_:1}),a(ve,{type:"info","show-icon":"",class:"mb-4",message:`این بخش تعیین می‌کند کدام حساب‌های حسابداری به کاربران اپ مشتری ${U(T).name} وصل شوند`},{description:l(()=>[n("div",null," هر حسابی که در گروه‌های انتخاب‌شده باشد و موبایلش با یک کاربر اپ مشتری "+v(U(T).name)+" یکی باشد، به آن کاربر وصل می‌شود و مانده‌اش در اپ مشتری نمایش داده می‌شود. صندوق، کارمند و سرمایه‌گذار را انتخاب نکنید. ",1),e[34]||(e[34]=n("div",null," مثال: «بنکدار» و «مغازه‌دار» را در فیلد اول انتخاب کنید و در فیلد دوم «مغازه‌دار» را بگذارید. در این حالت کسی که در اپ مشتری ثبت‌نام و احراز هویت کند و در حسابداری حساب نداشته باشد، در گروه «مغازه‌دار» برایش حساب ساخته می‌شود. ",-1))]),_:1},8,["message"]),n("div",Ga,[a(Ee,{label:`گروه‌های حسابی که مشتری ${U(T).name} حساب می‌شوند`,extra:"فقط گروه‌هایی که مشتری‌اند؛ خالی = سینک مشتری اجرا نمی‌شود"},{default:l(()=>[a(fe,{value:ie.value,"onUpdate:value":e[2]||(e[2]=d=>ie.value=d),mode:"multiple",options:ke.value,"allow-clear":"",placeholder:"هیچ گروهی انتخاب نشده"},null,8,["value","options"])]),_:1},8,["label"]),a(Ee,{label:"گروه حسابداریِ مشتری تازه‌ی اپ مشتری",extra:"کاربری که در اپ مشتری احراز هویت شده و در حسابداری حساب ندارد، در این گروه برایش حساب ساخته می‌شود"},{default:l(()=>[a(fe,{value:re.value,"onUpdate:value":e[3]||(e[3]=d=>re.value=d),options:ke.value,"allow-clear":""},null,8,["value","options"])]),_:1}),a(Ee,{label:`عیار پایه‌ی وزن‌های ${U(T).name}`,extra:`عیار وزن محصول‌ها و سفارش‌ها در ${U(T).name}؛ ۷۵۰ یعنی ۱۸ عیار`},{default:l(()=>[a(Ye,{value:m.mapping.karat,"onUpdate:value":e[4]||(e[4]=d=>m.mapping.karat=d),min:1,max:1e3,class:"w-full"},null,8,["value"])]),_:1},8,["label","extra"])]),m.provider==="zarrin"?(o(),c(D,{key:0},[a(Xe,{orientation:"right"},{default:l(()=>[...e[35]||(e[35]=[u("کارساخته (زرین)",-1)])]),_:1}),a(ve,{type:"info","show-icon":"",class:"mb-4",message:`هر محصولی که در پنل مدیریت ${U(T).name} (بخش محصولات) تعریف می‌کنید، در زرین یک «کارساخته» می‌شود`},{description:l(()=>[e[36]||(e[36]=n("div",null,[u(" زرین برای ساختن کارساخته دو چیز لازم دارد: "),n("b",null,"نوع"),u(" (گرمی یا تعدادی) و "),n("b",null,"گروه ساخته"),u(" (کارساخته در کدام پوشه‌ی زرین قرار بگیرد). این بخش این دو را به‌جای شما انتخاب می‌کند تا لازم نباشد برای هر محصول جداگانه در زرین کاری انجام دهید. ")],-1)),n("div",null," ستون «دسته‌بندی محصول در "+v(U(T).name)+"» همان دسته‌بندی‌هایی است که در پنل مدیریت برای محصولات تعریف کرده‌اید. مثال: اگر روبه‌روی «انگشتر» گروه «انگشتر» زرین را بگذارید، هر محصول تازه در دسته‌ی انگشتر "+v(U(T).name)+"، در گروه انگشترِ زرین ساخته می‌شود. دسته‌هایی که «پیش‌فرض» بمانند در «گروه ساخته‌ی پیش‌فرض» می‌روند. ",1),n("div",null," اگر نوع یا گروه خالی باشد، محصول در "+v(U(T).name)+" ساخته می‌شود ولی ساخت کارساخته در «لاگ ارسال» منتظر می‌ماند تا آن را تعیین کنید و «تلاش دوباره» بزنید. محصول‌هایی که از قبل به کارساخته وصل شده‌اند تغییری نمی‌کنند. ",1)]),_:1},8,["message"]),n("div",La,[a(Ee,{label:"نوع کارساخته‌ی جدید (گرمی/تعدادی…)",extra:`برای محصول تازه‌ای که در پنل مدیریت ${U(T).name} تعریف می‌شود`},{default:l(()=>[a(fe,{value:ue.value,"onUpdate:value":e[5]||(e[5]=d=>ue.value=d),options:De.value,"allow-clear":""},null,8,["value","options"])]),_:1},8,["extra"]),a(Ee,{label:"گروه ساخته‌ی پیش‌فرض",extra:"برای دسته‌هایی که در جدول زیر «پیش‌فرض» مانده‌اند"},{default:l(()=>[a(fe,{value:q.value,"onUpdate:value":e[6]||(e[6]=d=>q.value=d),options:z.value,"allow-clear":""},null,8,["value","options"])]),_:1})]),a(we,{"data-source":ee.value,pagination:!1,"row-key":"id",size:"small",class:"mb-4"},{default:l(()=>[a($,{title:`دسته‌بندی محصول در ${U(T).name}`,"data-index":"title"},null,8,["title"]),a($,{title:"گروه ساخته در زرین"},{default:l(({record:d})=>[a(fe,{value:te[d.id],"onUpdate:value":E=>te[d.id]=E,options:z.value,"allow-clear":"",class:"w-full",placeholder:"پیش‌فرض"},null,8,["value","onUpdate:value","options"])]),_:1})]),_:1},8,["data-source"])],64)):m.provider==="tahesab"?(o(),c("div",Pa," ته‌حساب در API خود ساخت کارساخته ندارد: نام کار با اولین سند سفارش در ته‌حساب ساخته می‌شود و از آن به بعد به محصول لینک می‌شود. ")):_("",!0),ce.value.length?(o(),c("div",Ba," اگر فهرستی خالی است، یعنی دریافت آن از حسابداری خطا داده (پیام قرمز بالای صفحه). اتصال را بررسی کنید و دوباره «دریافت گروه‌ها» را بزنید. ")):_("",!0),a(w,{type:"primary",onClick:ge},{default:l(()=>[...e[37]||(e[37]=[u("ذخیره",-1)])]),_:1})]),_:1})]),_:1}),a(pe,{key:"outbox",tab:`لاگ ارسال${t.value}`},{default:l(()=>[a(K,{class:"mb-4"},{default:l(()=>[a(fe,{value:Se.value,"onUpdate:value":e[7]||(e[7]=d=>Se.value=d),style:{width:"180px"},"allow-clear":"",placeholder:"همه‌ی وضعیت‌ها",onChange:e[8]||(e[8]=d=>le(1))},{default:l(()=>[(o(),c(D,null,Oe(V,(d,E)=>a(Ze,{key:E,value:E},{default:l(()=>[u(v(d),1)]),_:2},1032,["value"])),64))]),_:1},8,["value"]),a(w,{onClick:e[9]||(e[9]=d=>le(J.page))},{default:l(()=>[...e[38]||(e[38]=[u("تازه‌سازی",-1)])]),_:1})]),_:1}),a(we,{"data-source":J.rows,columns:r,"row-key":"id",size:"small",pagination:{current:J.page,pageSize:J.limit,total:J.total,onChange:le}},{bodyCell:l(({column:d,record:E})=>[d.key==="createdAt"?(o(),c(D,{key:0},[u(v(F(E.createdAt)),1)],64)):d.key==="kind"?(o(),c(D,{key:1},[u(v(Be[E.kind]??E.kind),1)],64)):d.key==="entity"?(o(),c(D,{key:2},[u(v(E.entityLabel??E.entityId),1)],64)):d.key==="status"?(o(),c(D,{key:3},[a(k,{color:W[E.status]},{default:l(()=>[u(v(V[E.status]??E.status),1)]),_:2},1032,["color"]),E.provider!==m.provider?(o(),c("span",Wa," ("+v(E.provider)+")",1)):_("",!0)],64)):d.key==="error"?(o(),c("span",Fa,v(E.lastError),1)):d.key==="actions"?(o(),x(K,{key:5},{default:l(()=>[["FAILED","NEEDS_REVIEW","PENDING"].includes(E.status)?(o(),x(He,{key:0,title:"پیش از تلاش دوباره، مطمئن شوید سند در حسابداری ثبت نشده است. ادامه؟",onConfirm:Ge=>b(E.id)},{default:l(()=>[a(w,{size:"small"},{default:l(()=>[...e[39]||(e[39]=[u("تلاش دوباره",-1)])]),_:1})]),_:1},8,["onConfirm"])):_("",!0),["FAILED","NEEDS_REVIEW","PENDING"].includes(E.status)?(o(),x(He,{key:1,title:"این ردیف «حل‌شده» علامت بخورد (دستی در حسابداری رسیدگی شده)؟",onConfirm:Ge=>Ce(E.id)},{default:l(()=>[a(w,{size:"small"},{default:l(()=>[...e[40]||(e[40]=[u("حل‌شده",-1)])]),_:1})]),_:1},8,["onConfirm"])):_("",!0)]),_:2},1024)):_("",!0)]),expandedRowRender:l(({record:d})=>[n("div",Ka,[n("div",null,[e[41]||(e[41]=n("b",null,"درخواست",-1)),n("pre",Va,v(Re(d.lastRequest)),1)]),n("div",null,[e[42]||(e[42]=n("b",null,"پاسخ",-1)),n("pre",Ya,v(Re(d.lastResponse)),1)])]),n("div",Ha,"کد مرجع: "+v(d.externalRef??"—")+" | تلاش: "+v(d.attempts)+" | تلاش بعدی: "+v(F(d.nextAttemptAt)),1)]),_:1},8,["data-source","pagination"])]),_:1},8,["tab"]),a(pe,{key:"issues",tab:`مغایرت‌ها${(Ae=O.value)!=null&&Ae.openIssues?` (${O.value.openIssues})`:""}`},{default:l(()=>[a(we,{"data-source":g.rows,"row-key":"id",size:"small",pagination:{current:g.page,pageSize:g.limit,total:g.total,onChange:Ve}},{default:l(()=>[a($,{title:"تاریخ"},{default:l(({record:d})=>[u(v(F(d.updatedAt)),1)]),_:1}),a($,{title:"نرم‌افزار","data-index":"provider"}),a($,{title:"نوع"},{default:l(({record:d})=>[u(v(i[d.kind]??d.kind),1)]),_:1}),a($,{title:"کد حسابداری","data-index":"externalCode"}),a($,{title:"شرح","data-index":"message"}),a($,{title:""},{default:l(({record:d})=>[a(w,{size:"small",onClick:E=>ft(d.id)},{default:l(()=>[...e[43]||(e[43]=[u("رسیدگی شد",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1},8,["data-source","pagination"])]),_:1},8,["tab"]),a(pe,{key:"links",tab:"لینک‌ها"},{default:l(()=>[a(K,{class:"mb-4"},{default:l(()=>[a(wt,{value:N.value,"onUpdate:value":e[10]||(e[10]=d=>N.value=d),onChange:e[11]||(e[11]=d=>he(1))},{default:l(()=>[a(et,{value:"CUSTOMER"},{default:l(()=>[...e[44]||(e[44]=[u("مشتری",-1)])]),_:1}),a(et,{value:"PRODUCT"},{default:l(()=>[...e[45]||(e[45]=[u("کارساخته",-1)])]),_:1})]),_:1},8,["value"]),a(Et,{value:I.value,"onUpdate:value":e[12]||(e[12]=d=>I.value=d),placeholder:"کد یا نام در حسابداری",style:{width:"240px"},onSearch:e[13]||(e[13]=d=>he(1))},null,8,["value"])]),_:1}),a(we,{"data-source":y.rows,"row-key":"id",size:"small",pagination:{current:y.page,pageSize:y.limit,total:y.total,onChange:he}},{default:l(()=>[a($,{title:"کد حسابداری","data-index":"externalCode"}),a($,{title:"نام در حسابداری","data-index":"externalName"}),a($,{title:`شناسه در ${U(T).name}`,"data-index":"entityId"},null,8,["title"]),a($,{title:"منشأ"},{default:l(({record:d})=>[u(v(Z[d.origin]??d.origin),1)]),_:1}),a($,{title:"آخرین سینک"},{default:l(({record:d})=>[u(v(F(d.syncedAt)),1)]),_:1}),a($,{title:""},{default:l(({record:d})=>[a(He,{title:"لینک حذف شود؟ در سینک بعدی دوباره با موبایل/نام جفت می‌شود.",onConfirm:E=>bt(d.id)},{default:l(()=>[a(w,{size:"small",danger:""},{default:l(()=>[...e[46]||(e[46]=[u("حذف لینک",-1)])]),_:1})]),_:1},8,["onConfirm"])]),_:1})]),_:1},8,["data-source","pagination"])]),_:1}),a(pe,{key:"movement",tab:"گردش کارساخته"},{default:l(()=>[a(K,{class:"mb-4"},{default:l(()=>[a(tt,{value:xe.value,"onUpdate:value":e[14]||(e[14]=d=>xe.value=d),dir:"ltr",placeholder:"از ۱۴۰۵/۰۷/۰۱",style:{width:"150px"}},null,8,["value"]),a(tt,{value:L.value,"onUpdate:value":e[15]||(e[15]=d=>L.value=d),dir:"ltr",placeholder:"تا ۱۴۰۵/۰۷/۳۰",style:{width:"150px"}},null,8,["value"]),a(w,{disabled:!be.value,loading:Ue.value,onClick:_t},{default:l(()=>[...e[47]||(e[47]=[u("نمایش",-1)])]),_:1},8,["disabled","loading"])]),_:1}),ae.scope==="recent-documents"?(o(),x(ve,{key:0,type:"info","show-icon":"",class:"mb-4",message:"ته‌حساب گزارش گردش همه‌ی حساب‌ها را ندارد؛ این فهرست از آخرین ۱۰۰۰ سند ثبت‌شده ساخته شده است."})):_("",!0),a(we,{"data-source":ae.rows,"row-key":(d,E)=>E,size:"small"},{default:l(()=>[a($,{title:"تاریخ","data-index":"date"}),a($,{title:"کارساخته","data-index":"itemName"}),a($,{title:"شرح","data-index":"description"}),a($,{title:"وزن","data-index":"weight"}),a($,{title:"تعداد","data-index":"count"}),a($,{title:"مبلغ","data-index":"amount"})]),_:1},8,["data-source","row-key"])]),_:1})]}),_:1},8,["active-key"])]),_:1},8,["spinning"])]}),_:1})):_("",!0)])}}}),el=pt(qa,[["__scopeId","data-v-cc33ab94"]]);export{el as default}; +import{m as Je}from"./index-CPTngTRs.js";import{c as a,I as Ut,d as mt,n as Qe,o,b as c,p as n,a as x,g as Nt,f as u,t as v,w as l,i as _,F as D,e as Oe,q as Le,h as U,J as ht,s as M,z as ne,m as h,y as j,G as B,r as f,K as vt,L as Tt,_ as pt,u as $t,x as Dt,j as T}from"./index-CuIWfDbM.js";import{L as It}from"./LockOutlined-V3haYHlA.js";import{S as qe}from"./SafetyCertificateOutlined-DWQ69biy.js";var Mt={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm192 472c0 4.4-3.6 8-8 8H328c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h368c4.4 0 8 3.6 8 8v48z"}}]},name:"minus-circle",theme:"filled"};function ct(C){for(var A=1;Ap.form.provider==="none"?null:p.form.provider),Z=M(()=>{var r;return((r=p.overview)==null?void 0:r.config)??null}),Y=r=>{var t;return(t=Z.value)==null?void 0:t[r]},oe=M(()=>{var r;return!!(i.value&&((r=Y(i.value))!=null&&r.tokenSet))}),O=M(()=>!!i.value&&/^https:\/\//i.test(p.form[i.value].baseUrl||"")),m=(r,t)=>{var g,y,N,I,ae;return JSON.stringify(t==="none"?{provider:t}:{provider:t,baseUrl:((g=r[t])==null?void 0:g.baseUrl)??"",caCert:((y=r[t])==null?void 0:y.caCert)??"",timeoutMs:(N=r[t])==null?void 0:N.timeoutMs,dbName:t==="tahesab"?(I=r.tahesab)==null?void 0:I.dbName:void 0,balanceOwesWhen:t==="zarrin"?(ae=r.zarrin)==null?void 0:ae.balanceOwesWhen:void 0})},X=M(()=>{var r;return Z.value?p.form.provider!==Z.value.provider?!0:i.value?m(p.form,i.value)!==m(Z.value,i.value)||!!((r=p.tokens[i.value])!=null&&r.trim()):!1:!1}),$e=M(()=>!!Z.value&&Z.value.provider!=="none"&&Z.value.provider!==p.form.provider),be=r=>r?Je(r).format("jYYYY/jMM/jDD ساعت HH:mm"):"",G=M(()=>{const r=p.overview;if(!r)return{tone:"off",icon:Pe,title:"…",text:"",rows:[]};const t=r.config;if(t.provider==="none")return{tone:"off",icon:Pe,title:"اتصال خاموش است",text:"هیچ اطلاعاتی با نرم‌افزار حسابداری رد و بدل نمی‌شود."};const g=W[t.provider];if(r.inactiveReason)return{tone:"bad",icon:vt,title:`اتصال به ${g} کار نمی‌کند`,text:r.inactiveReason};const y=r.realtime;if(y!=null&&y.lastError)return{tone:"bad",icon:vt,title:`${g}: ارتباط برقرار نیست`,text:y.lastError};const I=[{label:"آدرس",value:t[t.provider].baseUrl,ltr:!0}];return t.provider==="tahesab"&&I.push({label:"دیتابیس",value:t.tahesab.dbName,ltr:!0}),y!=null&&y.lastOkAt&&I.push({label:"آخرین ارتباط موفق",value:be(y.lastOkAt)}),{tone:"ok",icon:Tt,title:`متصل به ${g}`,text:"",rows:I}}),ee=ne({tahesab:!1,zarrin:!1});function ce(){i.value&&(p.tokens[i.value]="",ee[i.value]=!1)}Qe(()=>p.overview,()=>{ee.tahesab=!1,ee.zarrin=!1,S.value=null});const _e=M({get:()=>i.value?Math.round((p.form[i.value].timeoutMs??2e4)/1e3):20,set:r=>{i.value&&(p.form[i.value].timeoutMs=Math.max(3,Math.min(120,Number(r)||20))*1e3)}}),H=h(!1),S=h(null),ye=r=>{var t;return((t=r.match(/CN=([^\n,]+)/))==null?void 0:t[1])??r.replace(/\n/g,", ")},ie=r=>r?Je(new Date(r)).format("jYYYY/jMM/jDD"):"—",re=M(()=>{var r;return!!i.value&&(p.form[i.value].caCert||"")!==(((r=Y(i.value))==null?void 0:r.caCert)||"")}),q=M(()=>{var r;return i.value?re.value?S.value&&S.value.pem===p.form[i.value].caCert?S.value:null:((r=Y(i.value))==null?void 0:r.caInfo)??null:null});async function ue(){var r,t;if(i.value){H.value=!0;try{const{data:g}=await j.post("admin/accounting/certificate",{baseUrl:p.form[i.value].baseUrl});S.value=g,p.form[i.value].caCert&&g.pem.trim()===p.form[i.value].caCert.trim()?B.success("گواهی سرور همان گواهی تأییدشده است"):p.form[i.value].caCert&&(p.form[i.value].caCert="")}catch(g){B.error(((t=(r=g==null?void 0:g.response)==null?void 0:r.data)==null?void 0:t.message)??"گواهی دریافت نشد")}finally{H.value=!1}}}function te(){!i.value||!S.value||(p.form[i.value].caCert=S.value.pem)}const ke=h(!1),z=h(null),De=h(""),Ie=()=>i.value?JSON.stringify([p.form.provider,p.form[i.value],p.tokens[i.value]]):"",Me=M(()=>!!z.value&&De.value!==Ie()),We=M(()=>{var r;return!!i.value&&!!p.form[i.value].baseUrl&&(oe.value||!!((r=p.tokens[i.value])!=null&&r.trim()))});Qe(i,()=>z.value=null);async function de(){var t,g;if(!i.value)return;const r=i.value;ke.value=!0;try{const y={baseUrl:p.form[r].baseUrl,timeoutMs:p.form[r].timeoutMs,caCert:p.form[r].caCert,token:p.tokens[r]||void 0};r==="tahesab"?y.dbName=p.form.tahesab.dbName:y.balanceOwesWhen=p.form.zarrin.balanceOwesWhen,De.value=Ie();const{data:N}=await j.post("admin/accounting/test",{provider:r,connection:y});z.value=N}catch(y){const N=(g=(t=y==null?void 0:y.response)==null?void 0:t.data)==null?void 0:g.message;z.value={ok:!1,error:Array.isArray(N)?N.join("، "):N??"خطا در تست اتصال"}}finally{ke.value=!1}}const Fe={version:{label:"نسخه",ltr:!0},dbType:{label:"نوع دیتابیس",ltr:!0},dbName:{label:"دیتابیس",ltr:!0},customerGroups:{label:"گروه‌های حساب"},message:{label:"پیام سرور"}},J=M(()=>{var g,y;const r=((g=z.value)==null?void 0:g.info)??{},t=Object.entries(Fe).filter(([N])=>r[N]!==void 0&&r[N]!==null&&r[N]!=="").map(([N,I])=>({label:I.label,value:String(r[N]),ltr:I.ltr}));return t.push({label:"زمان پاسخ",value:`${(((y=z.value)==null?void 0:y.ms)??0).toLocaleString("fa-IR")} میلی‌ثانیه`,ltr:!1}),t}),Se=M(()=>{var r,t;return i.value==="tahesab"&&!!((t=(r=z.value)==null?void 0:r.info)!=null&&t.dbName)&&String(z.value.info.dbName).toLowerCase()!==String(p.form.tahesab.dbName||"").toLowerCase()});return(r,t)=>{var Ne,je,le;const g=f("a-tag"),y=f("a-alert"),N=f("a-input"),I=f("a-form-item"),ae=f("a-select-option"),xe=f("a-select"),L=f("a-button"),Ue=f("a-popconfirm"),F=f("a-space"),Re=f("a-input-password"),Q=f("a-form"),ze=f("a-input-number"),me=f("a-collapse-panel"),ge=f("a-collapse"),Ke=f("a-textarea");return o(),c("div",zt,[n("div",{class:Le(["status",`status--${G.value.tone}`])},[(o(),x(Nt(G.value.icon),{class:"status__icon"})),n("div",jt,[n("div",At,[u(v(G.value.title)+" ",1),X.value?(o(),x(g,{key:0,color:"orange",class:"status__tag"},{default:l(()=>[...t[11]||(t[11]=[u("تغییرات ذخیره نشده",-1)])]),_:1})):_("",!0)]),G.value.text?(o(),c("div",Gt,v(G.value.text),1)):_("",!0),(Ne=G.value.rows)!=null&&Ne.length?(o(),c("dl",Lt,[(o(!0),c(D,null,Oe(G.value.rows,b=>(o(),c(D,{key:b.label},[n("dt",null,v(b.label),1),n("dd",{dir:b.ltr?"ltr":void 0,class:Le({latin:b.ltr})},v(b.value),11,Pt)],64))),128))])):_("",!0)])],2),n("section",Bt,[t[13]||(t[13]=n("h3",{class:"step__title"},[n("span",{class:"step__no"},"۱"),u("نرم‌افزار حسابداری")],-1)),n("div",Wt,[(o(),c(D,null,Oe(Be,b=>n("button",{key:b.value,type:"button",role:"radio","aria-checked":C.form.provider===b.value,class:Le(["choice",{"choice--on":C.form.provider===b.value}]),onClick:Ce=>C.form.provider=b.value},[t[12]||(t[12]=n("span",{class:"choice__dot"},null,-1)),n("span",Kt,v(b.label),1),n("span",Vt,v(b.desc),1)],10,Ft)),64))]),$e.value?(o(),x(y,{key:0,class:"mt",type:"info","show-icon":"",message:"با ذخیره، نرم‌افزار عوض می‌شود",description:"کارهای در صف نرم‌افزار قبلی متوقف می‌مانند (پاک نمی‌شوند) و لینک‌های هر نرم‌افزار جدا نگه داشته می‌شوند؛ برگشت بی‌خطر است."})):_("",!0)]),i.value?(o(),c(D,{key:0},[n("section",Yt,[n("h3",Ht,[t[14]||(t[14]=n("span",{class:"step__no"},"۲",-1)),u("اطلاعات اتصال به "+v(W[i.value]),1)]),a(Q,{layout:"vertical",class:"grid"},{default:l(()=>[a(I,{label:"آدرس وب‌سرویس",required:""},{default:l(()=>[a(N,{value:C.form[i.value].baseUrl,"onUpdate:value":t[0]||(t[0]=b=>C.form[i.value].baseUrl=b),dir:"ltr",class:"ltr",placeholder:i.value==="tahesab"?"https://192.168.1.10:8081":"http://192.168.1.10:8000/ZarrinService/accounting"},null,8,["value","placeholder"]),n("div",qt,"آدرسی که وب‌سرویس "+v(W[i.value])+" روی آن در دسترس است، با پورت.",1)]),_:1}),i.value==="tahesab"?(o(),x(I,{key:0,label:"نام دیتابیس (DBname)",required:""},{default:l(()=>[a(N,{value:C.form.tahesab.dbName,"onUpdate:value":t[1]||(t[1]=b=>C.form.tahesab.dbName=b),dir:"ltr",class:"ltr",placeholder:"TahesabDB"},null,8,["value"]),t[15]||(t[15]=n("div",{class:"help"},"نام دقیق دیتابیس همین شرکت. یک سرور ممکن است چند دیتابیس داشته باشد؛ بعد از تست، نام را در نتیجه چک کنید.",-1))]),_:1})):(o(),x(I,{key:1,label:"علامت مانده‌ی بدهکار"},{default:l(()=>[a(xe,{value:C.form.zarrin.balanceOwesWhen,"onUpdate:value":t[2]||(t[2]=b=>C.form.zarrin.balanceOwesWhen=b)},{default:l(()=>[a(ae,{value:"negative"},{default:l(()=>[...t[16]||(t[16]=[u("منفی یعنی بدهکار",-1)])]),_:1}),a(ae,{value:"positive"},{default:l(()=>[...t[17]||(t[17]=[u("مثبت یعنی بدهکار",-1)])]),_:1})]),_:1},8,["value"]),t[18]||(t[18]=n("div",{class:"help"},"در زرین منفی یعنی بدهکار (روی نصب واقعی بررسی شد)؛ تغییرش ندهید مگر نصب شما خلاف این باشد.",-1))]),_:1})),a(I,{label:"توکن وب‌سرویس",required:"",class:"grid__full"},{default:l(()=>{var b;return[oe.value&&!ee[i.value]?(o(),c("div",Jt,[a(U(It),{class:"token__icon"}),(b=Y(i.value))!=null&&b.tokenReadable?(o(),c("span",Qt,"توکن ذخیره شده است و نمایش داده نمی‌شود.")):(o(),c("span",Zt,"توکن ذخیره‌شده قابل‌خواندن نیست؛ دوباره وارد کنید.")),a(F,{class:"token__actions"},{default:l(()=>[a(L,{size:"small",onClick:t[3]||(t[3]=Ce=>ee[i.value]=!0)},{default:l(()=>[...t[19]||(t[19]=[u("تغییر توکن",-1)])]),_:1}),a(Ue,{title:"توکن حذف شود؟ تا توکن جدید وارد نشود اتصال کار نمی‌کند.","ok-text":"حذف","cancel-text":"انصراف",onConfirm:t[4]||(t[4]=Ce=>V("clearToken",i.value))},{default:l(()=>[a(L,{size:"small",danger:""},{default:l(()=>[...t[20]||(t[20]=[u("حذف",-1)])]),_:1})]),_:1})]),_:1})])):(o(),c(D,{key:1},[a(Re,{value:C.tokens[i.value],"onUpdate:value":t[5]||(t[5]=Ce=>C.tokens[i.value]=Ce),dir:"ltr",class:"ltr",autocomplete:"new-password",placeholder:"توکن را اینجا وارد کنید"},null,8,["value"]),n("div",Xt,[t[21]||(t[21]=u(" بعد از ذخیره، توکن رمز می‌شود و دیگر نمایش داده نمی‌شود. ",-1)),oe.value?(o(),c("a",{key:0,class:"link",onClick:ce},"انصراف و نگه‌داشتن توکن فعلی")):_("",!0)])],64))]}),_:1})]),_:1}),a(ge,{ghost:"",class:"advanced"},{default:l(()=>[a(me,{key:"adv",header:"تنظیمات پیشرفته"},{default:l(()=>[a(Q,{layout:"vertical"},{default:l(()=>[a(I,{label:"حداکثر زمان انتظار برای پاسخ"},{default:l(()=>[a(ze,{value:_e.value,"onUpdate:value":t[6]||(t[6]=b=>_e.value=b),min:3,max:120,"addon-after":"ثانیه"},null,8,["value"]),t[22]||(t[22]=n("div",{class:"help"},"اگر سرور حسابداری کند است بیشترش کنید. پیش‌فرض ۲۰ ثانیه.",-1))]),_:1})]),_:1})]),_:1})]),_:1})]),O.value?(o(),c("section",ea,[t[41]||(t[41]=n("h3",{class:"step__title"},[n("span",{class:"step__no"},"۳"),u("گواهی امنیتی سرور")],-1)),n("p",ta," اتصال همیشه رمزنگاری‌شده و بررسی‌شده است. نصب‌های معمول "+v(W[i.value])+" گواهی خودساخته دارند؛ در این حالت یک بار گواهی سرور را بررسی و تأیید کنید. ",1),C.form[i.value].caCert?(o(),c("div",aa,[a(U(qe),{class:"cert__icon"}),n("div",la,[n("div",sa,[t[25]||(t[25]=u(" گواهی سرور تأیید شده است ",-1)),re.value?(o(),x(g,{key:0,color:"orange"},{default:l(()=>[...t[23]||(t[23]=[u("ذخیره نشده",-1)])]),_:1})):_("",!0),(je=q.value)!=null&&je.expired?(o(),x(g,{key:1,color:"red"},{default:l(()=>[...t[24]||(t[24]=[u("منقضی شده",-1)])]),_:1})):_("",!0)]),q.value?(o(),c("dl",na,[t[26]||(t[26]=n("dt",null,"صادرشده برای",-1)),n("dd",oa,v(ye(q.value.subject)),1),t[27]||(t[27]=n("dt",null,"معتبر تا",-1)),n("dd",null,v(ie(q.value.validTo)),1),t[28]||(t[28]=n("dt",null,"اثرانگشت",-1)),n("dd",ia,v(q.value.fingerprint256),1)])):(o(),c("div",ra,"مشخصات گواهی بعد از ذخیره نمایش داده می‌شود."))]),a(F,{direction:"vertical",class:"cert__actions"},{default:l(()=>[a(L,{size:"small",loading:H.value,onClick:ue},{default:l(()=>[...t[29]||(t[29]=[u("بررسی دوباره",-1)])]),_:1},8,["loading"]),a(L,{size:"small",danger:"",onClick:t[7]||(t[7]=b=>C.form[i.value].caCert="")},{default:l(()=>[...t[30]||(t[30]=[u("برداشتن",-1)])]),_:1})]),_:1})])):S.value&&!S.value.trustedBySystem?(o(),c("div",ua,[a(U(ht),{class:"cert__icon"}),n("div",da,[t[34]||(t[34]=n("div",{class:"cert__title"},"این گواهی را تأیید می‌کنید؟",-1)),t[35]||(t[35]=n("div",{class:"help"},"اثرانگشت زیر را با گواهی نصب‌شده روی سرور حسابداری مقایسه کنید. اگر یکی است تأیید کنید.",-1)),n("dl",va,[t[31]||(t[31]=n("dt",null,"صادرشده برای",-1)),n("dd",ca,v(ye(S.value.subject)),1),t[32]||(t[32]=n("dt",null,"معتبر تا",-1)),n("dd",null,v(ie(S.value.validTo)),1),t[33]||(t[33]=n("dt",null,"اثرانگشت",-1)),n("dd",ma,v(S.value.fingerprint256),1)]),S.value.expired?(o(),x(y,{key:0,type:"error","show-icon":"",message:"این گواهی منقضی شده است.",class:"mt"})):_("",!0)]),a(F,{direction:"vertical",class:"cert__actions"},{default:l(()=>[a(L,{type:"primary",size:"small",onClick:te},{default:l(()=>[...t[36]||(t[36]=[u("تأیید گواهی",-1)])]),_:1}),a(L,{size:"small",onClick:t[8]||(t[8]=b=>S.value=null)},{default:l(()=>[...t[37]||(t[37]=[u("انصراف",-1)])]),_:1})]),_:1})])):(le=S.value)!=null&&le.trustedBySystem?(o(),c("div",pa,[a(U(qe),{class:"cert__icon"}),t[38]||(t[38]=n("div",{class:"cert__body"},[n("div",{class:"cert__title"},"گواهی سرور معتبر است"),n("div",{class:"help"},"این سرور گواهی معتبر عمومی دارد؛ کاری لازم نیست.")],-1))])):(o(),c("div",fa,[a(U(qe),{class:"cert__icon cert__icon--muted"}),t[40]||(t[40]=n("div",{class:"cert__body"},[n("div",{class:"cert__title"},"گواهی‌ای تأیید نشده"),n("div",{class:"help"},"اگر «تست اتصال» خطای گواهی داد، اینجا گواهی سرور را بررسی کنید.")],-1)),a(L,{loading:H.value,disabled:!C.form[i.value].baseUrl,onClick:ue},{default:l(()=>[...t[39]||(t[39]=[u("بررسی گواهی سرور",-1)])]),_:1},8,["loading","disabled"])])),a(ge,{ghost:"",class:"advanced"},{default:l(()=>[a(me,{key:"pem",header:"وارد کردن دستی گواهی (PEM)"},{default:l(()=>[a(Ke,{value:C.form[i.value].caCert,"onUpdate:value":t[9]||(t[9]=b=>C.form[i.value].caCert=b),dir:"ltr",class:"ltr mono",rows:5,placeholder:"-----BEGIN CERTIFICATE-----"},null,8,["value"])]),_:1})]),_:1})])):_("",!0)],64)):_("",!0),i.value&&z.value?(o(),c("section",ba,[z.value.ok?(o(),x(y,{key:0,type:"success","show-icon":"",message:`اتصال به ${W[i.value]} برقرار است`},{description:l(()=>[n("dl",_a,[(o(!0),c(D,null,Oe(J.value,b=>(o(),c(D,{key:b.label},[n("dt",null,v(b.label),1),n("dd",{dir:b.ltr?"ltr":void 0,class:Le({latin:b.ltr})},v(b.value),11,ya)],64))),128))]),Se.value?(o(),c("div",ka,[t[42]||(t[42]=u(" دیتابیسی که وصل شد ",-1)),n("bdi",ga,v(z.value.info.dbName),1),t[43]||(t[43]=u(" است، نه ",-1)),n("bdi",Ca,v(C.form.tahesab.dbName),1),t[44]||(t[44]=u(". نام دیتابیس را چک کنید. ",-1))])):_("",!0),Me.value?(o(),c("div",wa,"این نتیجه برای مقادیر قبلی است؛ دوباره تست کنید.")):_("",!0)]),_:1},8,["message"])):(o(),x(y,{key:1,type:"error","show-icon":"",message:"اتصال برقرار نشد"},{description:l(()=>[n("div",null,v(z.value.error),1),Me.value?(o(),c("div",Ea,"این نتیجه برای مقادیر قبلی است؛ دوباره تست کنید.")):_("",!0)]),_:1}))])):_("",!0),n("div",Oa,[n("span",Sa,[X.value?(o(),c(D,{key:0},[u("تغییرات هنوز ذخیره نشده‌اند.")],64)):i.value?(o(),c(D,{key:1},[u("«تست اتصال» مقادیر همین فرم را امتحان می‌کند، حتی پیش از ذخیره.")],64)):_("",!0)]),a(F,null,{default:l(()=>[i.value?(o(),x(L,{key:0,loading:ke.value,disabled:!We.value,onClick:de},{default:l(()=>[...t[45]||(t[45]=[u("تست اتصال",-1)])]),_:1},8,["loading","disabled"])):_("",!0),a(L,{type:"primary",loading:C.saving,disabled:!X.value,onClick:t[10]||(t[10]=b=>V("save"))},{default:l(()=>[...t[46]||(t[46]=[u("ذخیره",-1)])]),_:1},8,["loading","disabled"])]),_:1})])])}}}),Ua=pt(xa,[["__scopeId","data-v-a7739f0b"]]),Na={key:0},ha={key:0},Ta={key:1},$a={key:2,class:"warn"},Da={key:2},Ia={key:0,class:"hint"},Ma={key:0,class:"warn"},Ra={key:1},za={class:"grid-2 mt-4"},ja={class:"hint mb-4"},Aa={key:0},Ga={class:"grid-2"},La={class:"grid-2"},Pa={key:1,class:"hint mb-4"},Ba={key:2,class:"hint mb-4"},Wa={key:0,class:"hint"},Fa={key:4,class:"warn small"},Ka={class:"grid-2"},Va={dir:"ltr"},Ya={dir:"ltr"},Ha={class:"hint"},qa=mt({__name:"accounting",setup(C){const A=$t(),p=s=>!!A.hasPermission(s),V={PENDING:"در صف",SENDING:"در حال ارسال",SENT:"ارسال شد",FAILED:"ناموفق",NEEDS_REVIEW:"نیاز به بررسی",RESOLVED:"حل‌شده"},W={PENDING:"default",SENDING:"processing",SENT:"success",FAILED:"error",NEEDS_REVIEW:"warning",RESOLVED:"default"},Be={CUSTOMER_PUSH:"ارسال مشتری",PRODUCT_PUSH:"ساخت کارساخته",ORDER_DOCUMENT:"سند سفارش",ORDER_DOCUMENT_DELETE:"حذف سند سفارش"},i={CUSTOMER_NO_MOBILE:"حساب بدون موبایل",CUSTOMER_DUPLICATE_MOBILE:"موبایل تکراری",CUSTOMER_LINK_CONFLICT:"تداخل لینک",PRODUCT_DUPLICATE_TITLE:"عنوان تکراری محصول",PRODUCT_CODE_TAKEN:"کد محصول تکراری"},Z={LINKED:"جفت با موبایل/نام",IMPORTED:"وارد شده از حسابداری",PUSHED:`ساخته شده از ${T.name}`,MANUAL:"دستی"},Y=h(!1),oe=h("connection"),O=h(null),m=ne({provider:"none",tahesab:{baseUrl:"",dbName:"TahesabDB",timeoutMs:2e4,caCert:""},zarrin:{baseUrl:"",balanceOwesWhen:"negative",timeoutMs:2e4,caCert:""},features:{customers:!1,balances:!1,report:!1,products:!1,documents:!1},intervals:{customersMinutes:60,balancesMinutes:10,productsMinutes:30},mapping:{karat:750},report:{windowDays:365},documents:{triggerStatus:"DELIVERED_TO_AGENT"}}),X=ne({tahesab:"",zarrin:""}),$e=h("none"),be=M(()=>$e.value!=="none"),G=ne({customerGroups:[],karSakhteGroups:[],karSakhteTypes:[]}),ee=h([]),ce=h([]),_e=h(!1),H=s=>s?`${s.id}|${s.name}`:void 0,S=s=>{if(!s)return null;const e=s.indexOf("|");return{id:s.slice(0,e),name:s.slice(e+1)}},ye=(s,e)=>{const k=[...s];for(const w of e)w&&!k.some(K=>K.id===w.id&&K.name===w.name)&&k.push(w);return k.map(w=>({value:H(w),label:w.id?`${w.name} (${w.id})`:w.name}))},ie=h([]),re=h(),q=h(),ue=h(),te=ne({}),ke=M(()=>ye(G.customerGroups,[...ie.value.map(S),S(re.value)])),z=M(()=>ye(G.karSakhteGroups,[S(q.value),...Object.values(te).map(S)])),De=M(()=>ye(G.karSakhteTypes,[S(ue.value)])),Ie=[{value:"PLACED",label:"ثبت سفارش"},{value:"ADMIN_APPROVED",label:"تأیید مدیر"},{value:"SOURCING",label:"در حال تأمین"},{value:"PREPARING",label:"در حال آماده‌سازی"},{value:"DELIVERED_TO_AGENT",label:"تحویل مسئول فروش"},{value:"DELIVERED_TO_CUSTOMER",label:"تحویل مشتری"}],Me=[{key:"customers",label:"سینک مشتریان (ورود/لینک با موبایل، ساخت پس از احراز هویت)",interval:"customersMinutes",job:"customers"},{key:"balances",label:"سینک مانده (نمایش به مشتری)",interval:"balancesMinutes",job:"balances"},{key:"report",label:"گزارش مشتری از حسابداری",interval:null,job:null},{key:"products",label:"کارساخته ↔ محصول و قفل ناموجود",interval:"productsMinutes",job:"products"},{key:"documents",label:"ثبت سند سفارش (موقت)",interval:null,job:"outbox"}],We=[{title:"قابلیت",dataIndex:"label",key:"label"},{title:"فعال",key:"on",width:80},{title:"بازه",key:"interval",width:170},{title:"وضعیت",key:"state"},{title:"",key:"run",width:110}],de=s=>{var e,k,w;return(w=(k=(e=O.value)==null?void 0:e.state)==null?void 0:k.jobs)==null?void 0:w[s]},Fe=s=>Object.entries(s).map(([e,k])=>`${e}: ${k}`).join("، "),J=ne({rows:[],total:0,page:1,limit:25}),Se=h(),r=[{title:"زمان",key:"createdAt",width:150},{title:"نوع",key:"kind",width:120},{title:"مورد",key:"entity"},{title:"وضعیت",key:"status",width:140},{title:"خطا",key:"error"},{title:"",key:"actions",width:190}],t=M(()=>{var k;const s=((k=O.value)==null?void 0:k.outbox)??{},e=(s.FAILED??0)+(s.NEEDS_REVIEW??0);return e?` (${e})`:""}),g=ne({rows:[],total:0,page:1,limit:25}),y=ne({rows:[],total:0,page:1,limit:25}),N=h("CUSTOMER"),I=h(""),ae=ne({rows:[],scope:null}),xe=h(""),L=h(""),Ue=h(!1),F=s=>s?Je(s).format("jYYYY/jMM/jDD HH:mm"):"—",Re=s=>s==null?"—":JSON.stringify(s,null,2),Q=(s,e)=>{var w,K;const k=(K=(w=s==null?void 0:s.response)==null?void 0:w.data)==null?void 0:K.message;return Array.isArray(k)?k.join("، "):k??e};function ze(s){var e;m.provider=s.provider,$e.value=s.provider;for(const k of["tahesab","zarrin"])m[k].baseUrl=s[k].baseUrl,m[k].timeoutMs=s[k].timeoutMs,m[k].caCert=s[k].caCert??"";m.tahesab.dbName=s.tahesab.dbName,m.zarrin.balanceOwesWhen=s.zarrin.balanceOwesWhen,Object.assign(m.features,s.features),Object.assign(m.intervals,s.intervals),m.mapping.karat=s.mapping.karat,m.report.windowDays=s.report.windowDays,m.documents.triggerStatus=((e=s.documents)==null?void 0:e.triggerStatus)??"DELIVERED_TO_AGENT",ie.value=(s.mapping.importCustomerGroups??[]).map(H),re.value=H(s.mapping.newCustomerGroup),q.value=H(s.mapping.newKarSakhteGroup),ue.value=H(s.mapping.newKarSakhteType);for(const k of Object.keys(te))delete te[k];for(const k of s.mapping.categoryGroups??[])te[k.categoryId]=H(k.group)}async function me(){try{Y.value=!0;const{data:s}=await j.get("admin/accounting");O.value=s,ze(s.config)}catch(s){B.error(Q(s,"خطا در دریافت تنظیمات"))}finally{Y.value=!1}}async function ge(){const s={provider:m.provider,tahesab:{baseUrl:m.tahesab.baseUrl,dbName:m.tahesab.dbName,timeoutMs:m.tahesab.timeoutMs,caCert:m.tahesab.caCert},zarrin:{baseUrl:m.zarrin.baseUrl,balanceOwesWhen:m.zarrin.balanceOwesWhen,timeoutMs:m.zarrin.timeoutMs,caCert:m.zarrin.caCert},features:m.features,intervals:m.intervals,report:m.report,documents:m.documents,mapping:{karat:m.mapping.karat,importCustomerGroups:ie.value.map(S).filter(Boolean),newCustomerGroup:S(re.value),newKarSakhteGroup:S(q.value),newKarSakhteType:S(ue.value),categoryGroups:Object.entries(te).filter(([,e])=>!!e).map(([e,k])=>({categoryId:e,group:S(k)}))}};for(const e of["tahesab","zarrin"])X[e].trim()&&(s[e].token=X[e].trim());try{Y.value=!0;const{data:e}=await j.put("admin/accounting/config",s);O.value=e,ze(e.config),X.tahesab="",X.zarrin="",B.success("تنظیمات ذخیره شد")}catch(e){B.error(Q(e,"خطا در ذخیره"))}finally{Y.value=!1}}async function Ke(s){try{const{data:e}=await j.put("admin/accounting/config",{[s]:{token:null}});O.value=e,B.success("توکن حذف شد")}catch(e){B.error(Q(e,"خطا"))}}async function Ne(){_e.value=!0,ce.value=[];try{const{data:s}=await j.get("admin/accounting/options",{params:{provider:m.provider}});G.customerGroups=s.customerGroups.items,G.karSakhteGroups=s.karSakhteGroups.items,G.karSakhteTypes=s.karSakhteTypes.items,ee.value=s.categories;for(const e of[s.customerGroups,s.karSakhteGroups,s.karSakhteTypes])e.ok||ce.value.push(e.error)}catch(s){ce.value=[Q(s,"تنظیمات اتصال را اول ذخیره کنید")]}finally{_e.value=!1}}async function je(s){try{const{data:e}=await j.post(`admin/accounting/run/${s}`);e.started?B.success("همگام‌سازی شروع شد؛ نتیجه چند لحظه بعد در همین صفحه دیده می‌شود"):B.warning(e.message),setTimeout(me,4e3)}catch(e){B.error(Q(e,"خطا"))}}async function le(s=1){const{data:e}=await j.get("admin/accounting/outbox",{params:{page:s,status:Se.value}});Object.assign(J,e)}async function b(s){try{await j.post(`admin/accounting/outbox/${s}/retry`),B.success("دوباره در صف قرار گرفت"),le(J.page)}catch(e){B.error(Q(e,"خطا"))}}async function Ce(s){await j.post(`admin/accounting/outbox/${s}/resolve`,{}),le(J.page)}async function Ve(s=1){const{data:e}=await j.get("admin/accounting/issues",{params:{page:s}});Object.assign(g,e)}async function ft(s){await j.post(`admin/accounting/issues/${s}/resolve`),Ve(g.page),me()}async function he(s=1){const{data:e}=await j.get("admin/accounting/links",{params:{page:s,entityType:N.value,q:I.value||void 0}});Object.assign(y,e)}async function bt(s){await j.delete(`admin/accounting/links/${s}`),he(y.page)}async function _t(){Ue.value=!0;try{const{data:s}=await j.get("admin/accounting/movement",{params:{from:xe.value||void 0,to:L.value||void 0}});Object.assign(ae,s)}catch(s){B.error(Q(s,"خطا در دریافت گردش"))}finally{Ue.value=!1}}return Qe(oe,s=>{s==="outbox"&&le(1),s==="issues"&&Ve(1),s==="links"&&he(1),s==="mapping"&&m.provider!=="none"&&ee.value.length===0&&Ne()}),Dt(me),(s,e)=>{const k=f("a-tag"),w=f("a-button"),K=f("a-space"),ve=f("a-alert"),pe=f("a-tab-pane"),yt=f("a-switch"),Ye=f("a-input-number"),Ze=f("a-select-option"),fe=f("a-select"),we=f("a-table"),Ee=f("a-form-item"),kt=f("a-collapse-panel"),gt=f("a-collapse"),Xe=f("a-divider"),$=f("a-table-column"),Ct=f("a-form"),He=f("a-popconfirm"),et=f("a-radio-button"),wt=f("a-radio-group"),Et=f("a-input-search"),tt=f("a-input"),Ot=f("a-tabs"),St=f("a-spin"),xt=f("a-card");return o(),c("div",null,[p("config.accounting")?(o(),x(xt,{key:0,title:"اتصال به نرم‌افزار حسابداری",class:"page-card table-scroll"},{extra:l(()=>[a(K,null,{default:l(()=>{var Te;return[(Te=O.value)!=null&&Te.busy?(o(),x(k,{key:0,color:"processing"},{default:l(()=>[...e[17]||(e[17]=[u("همگام‌سازی در حال اجرا",-1)])]),_:1})):_("",!0),a(w,{size:"small",onClick:me},{default:l(()=>[...e[18]||(e[18]=[u("تازه‌سازی",-1)])]),_:1})]}),_:1})]),default:l(()=>{var Te,at,lt,st,nt,ot,it,rt;return[O.value&&O.value.config.secretKeySource!=="ACCOUNTING_SECRET_KEY"?(o(),x(ve,{key:0,type:"warning","show-icon":"",class:"mb-4",message:"متغیر ACCOUNTING_SECRET_KEY روی سرور تنظیم نشده است",description:"توکن با کلیدی مشتق از JWT_SECRET رمز می‌شود؛ اگر JWT_SECRET عوض شود باید توکن را دوباره وارد کنید."})):_("",!0),(Te=O.value)!=null&&Te.inactiveReason&&O.value.config.provider!=="none"&&oe.value!=="connection"?(o(),x(ve,{key:1,type:"error","show-icon":"",class:"mb-4",message:"همگام‌سازی انجام نمی‌شود",description:O.value.inactiveReason},null,8,["description"])):be.value&&!((nt=(st=(lt=(at=O.value)==null?void 0:at.config)==null?void 0:lt.mapping)==null?void 0:st.importCustomerGroups)!=null&&nt.length)&&((rt=(it=(ot=O.value)==null?void 0:ot.config)==null?void 0:it.features)!=null&&rt.customers)?(o(),x(ve,{key:2,type:"warning","show-icon":"",class:"mb-4",message:"سینک مشتری اجرا نمی‌شود",description:"هیچ گروه مشتری برای ورود انتخاب نشده است؛ در تب «نگاشت» گروه‌هایی را که واقعاً مشتری هستند انتخاب و ذخیره کنید."})):_("",!0),a(St,{spinning:Y.value},{default:l(()=>[a(Ot,{"active-key":oe.value,"onUpdate:activeKey":e[16]||(e[16]=Ae=>oe.value=Ae)},{default:l(()=>{var Ae;return[a(pe,{key:"connection",tab:"اتصال"},{default:l(()=>[a(Ua,{overview:O.value,form:m,tokens:X,saving:Y.value,onSave:ge,onClearToken:Ke},null,8,["overview","form","tokens","saving"])]),_:1}),a(pe,{key:"features",tab:"قابلیت‌ها و زمان‌بندی"},{default:l(()=>{var d,E,Ge,ut;return[m.provider==="zarrin"?(o(),x(ve,{key:0,type:"info","show-icon":"",class:"mb-4",message:"درایور زرین روی نصب واقعی تست نشده است",description:"طبق تصمیم مالک، پیش از استفاده‌ی واقعی یک دوره‌ی آزمایشی با اسناد موقت لازم است (علامت مانده و فیلد هزینه‌ی سنگ را بررسی کنید)."})):_("",!0),be.value&&((E=(d=O.value)==null?void 0:d.config)!=null&&E.provider)&&(m.features.balances||m.features.products)?(o(),x(ve,{key:1,type:(ut=(Ge=O.value)==null?void 0:Ge.realtime)!=null&&ut.lastError?"warning":"success","show-icon":"",class:"mb-4",message:"همگام‌سازی لحظه‌ای"},{description:l(()=>{var se,R,P,dt;return[(R=(se=O.value)==null?void 0:se.realtime)!=null&&R.lastOkAt?(o(),c("div",Na,[u(" تغییرات حسابداری چند ثانیه یک‌بار بررسی می‌شود؛ آخرین بررسی: "+v(F(O.value.realtime.lastOkAt))+". ",1),O.value.realtime.lastChangeAt?(o(),c("span",ha,"آخرین تغییر دریافت‌شده: "+v(F(O.value.realtime.lastChangeAt))+".",1)):_("",!0)])):(o(),c("div",Ta,"هنوز بررسی انجام نشده است (چند ثانیه بعد از روشن‌شدن شروع می‌شود).")),(dt=(P=O.value)==null?void 0:P.realtime)!=null&&dt.lastError?(o(),c("div",$a,"خطای آخرین بررسی: "+v(O.value.realtime.lastError),1)):_("",!0),e[19]||(e[19]=n("div",{class:"hint"}," سفارش و ویرایش مشتری بلافاصله ارسال می‌شود و موجودی هنگام ثبت سفارش مستقیم از حسابداری خوانده می‌شود؛ اگر حسابداری آن لحظه پاسخ ندهد، آخرین موجودی معلوم ملاک است. بازه‌های «دقیقه»ی زیر فقط شبکه‌ی اطمینان‌اند (مشتری جدید، ویرایش یا حذف در حسابداری). ",-1))]}),_:1},8,["type"])):_("",!0),a(we,{"data-source":Me,columns:We,pagination:!1,"row-key":"key",size:"middle"},{bodyCell:l(({column:se,record:R})=>[se.key==="on"?(o(),x(yt,{key:0,checked:m.features[R.key],"onUpdate:checked":P=>m.features[R.key]=P},null,8,["checked","onUpdate:checked"])):se.key==="interval"?(o(),c(D,{key:1},[R.interval?(o(),x(Ye,{key:0,value:m.intervals[R.interval],"onUpdate:value":P=>m.intervals[R.interval]=P,min:1,max:1440,"addon-after":"دقیقه"},null,8,["value","onUpdate:value"])):R.key==="documents"?(o(),x(fe,{key:1,value:m.documents.triggerStatus,"onUpdate:value":e[0]||(e[0]=P=>m.documents.triggerStatus=P),style:{"min-width":"220px"},title:"سند (موقت / پیش‌فاکتور) وقتی سفارش به این وضعیت برسد ثبت می‌شود"},{default:l(()=>[(o(),c(D,null,Oe(Ie,P=>a(Ze,{key:P.value,value:P.value},{default:l(()=>[u("ثبت در: "+v(P.label),1)]),_:2},1032,["value"])),64))]),_:1},8,["value"])):(o(),c("span",Da,"—"))],64)):se.key==="state"?(o(),c(D,{key:2},[R.job&&de(R.job)?(o(),c("div",Ia,[u(" آخرین اجرا: "+v(F(de(R.job).lastRunAt))+" ",1),de(R.job).lastError?(o(),c("span",Ma," — خطا: "+v(de(R.job).lastError),1)):de(R.job).summary?(o(),c("span",Ra," — "+v(Fe(de(R.job).summary)),1)):_("",!0)])):_("",!0)],64)):se.key==="run"?(o(),c(D,{key:3},[R.job?(o(),x(w,{key:0,size:"small",disabled:!be.value,onClick:P=>je(R.job)},{default:l(()=>[...e[20]||(e[20]=[u("سینک الان",-1)])]),_:1},8,["disabled","onClick"])):_("",!0)],64)):_("",!0)]),_:1}),n("div",za,[a(Ee,{label:"بازه‌ی گزارش مشتری (روز)"},{default:l(()=>[a(Ye,{value:m.report.windowDays,"onUpdate:value":e[1]||(e[1]=se=>m.report.windowDays=se),min:7,max:3650,class:"w-full"},null,8,["value"])]),_:1})]),n("div",ja," اسناد سفارش همیشه «موقت» ثبت می‌شوند و تا حسابدار نهایی نکند روی مانده‌ی حسابداری اثر ندارند. سقف اعتبار سفارش همچنان با دفتر داخلی "+v(U(T).name)+" چک می‌شود. ",1),a(w,{type:"primary",onClick:ge},{default:l(()=>[...e[21]||(e[21]=[u("ذخیره",-1)])]),_:1})]}),_:1}),a(pe,{key:"mapping",tab:"نگاشت"},{default:l(()=>[a(gt,{ghost:"",class:"mb-4"},{default:l(()=>[a(kt,{key:"guide",header:"راهنمای این تب: نگاشت چیست و چطور پر می‌شود؟"},{default:l(()=>[n("p",null,[u(" در این صفحه «"+v(U(T).name)+"» یعنی همین سامانه: ",1),e[22]||(e[22]=n("b",null,"اپ مشتری",-1)),e[23]||(e[23]=u(" (جایی که مشتری ثبت‌نام، احراز هویت و سفارش می‌کند و مانده‌اش را می‌بیند) و ",-1)),e[24]||(e[24]=n("b",null,"پنل مدیریت",-1)),e[25]||(e[25]=u(" (همین پنل، جایی که محصول و دسته‌بندی تعریف می‌شود). «حسابداری» یعنی نرم‌افزار حسابداری مغازه (ته‌حساب یا زرین). ",-1))]),n("p",null,v(U(T).name)+" و حسابداری هر کدام گروه‌بندی خودشان را دارند. این تب می‌گوید هر چیز در "+v(U(T).name)+" با کدام گروه در حسابداری متناظر است؛ خودِ مشتری‌ها و محصول‌ها اینجا وصل نمی‌شوند (آن‌ها در تب «لینک‌ها» دیده می‌شوند). ",1),n("ol",null,[e[29]||(e[29]=n("li",null,"تنظیمات تب «اتصال» را ذخیره کنید، بعد «دریافت گروه‌ها از حسابداری» را بزنید تا فهرست‌ها از حسابداری پر شوند.",-1)),n("li",null,[n("b",null,"گروه‌های حسابی که مشتری "+v(U(T).name)+" حساب می‌شوند:",1),e[26]||(e[26]=u(" در حسابداری صندوق، کارمند و سرمایه‌گذار هم «حساب» هستند. فقط گروه‌هایی را انتخاب کنید که واقعاً مشتری‌اند؛ سینک مشتری فقط حساب‌های این گروه‌ها را با شماره موبایل به کاربران اپ مشتری وصل می‌کند. اگر خالی بماند سینک مشتری اجرا نمی‌شود. ",-1))]),e[30]||(e[30]=n("li",null,[n("b",null,"گروه مشتری جدید:"),u(" وقتی کاربری در اپ مشتری احراز هویت شود و در حسابداری حساب نداشته باشد، حسابش در این گروه ساخته می‌شود. اگر تعیین نشود، ساخت حساب در «لاگ ارسال» با وضعیت «نیاز به بررسی» می‌ماند. ")],-1)),n("li",null,[e[27]||(e[27]=n("b",null,"عیار پایه:",-1)),u(" عیار وزن‌هایی که در "+v(U(T).name)+" ثبت می‌شود (وزن محصول‌ها و سفارش‌ها؛ معمولاً ۷۵۰ = ۱۸ عیار). در سند سفارش، وزن با همین عیار به حسابداری می‌رود؛ در ته‌حساب اجرت هم روی آن اعمال می‌شود (مثلاً ۷۵۰ با اجرت ۱۰٪ می‌شود ۸۲۵). ",1)]),m.provider==="zarrin"?(o(),c("li",Aa,[e[28]||(e[28]=n("b",null,"کارساخته (فقط زرین):",-1)),u(" وقتی در پنل مدیریت "+v(U(T).name)+" محصول جدیدی تعریف شود، برایش یک «کارساخته» در زرین ساخته می‌شود. «نوع» تعیین می‌کند گرمی است یا تعدادی، و «گروه ساخته» جای آن در زرین است. در جدول پایین برای هر دسته‌بندی محصولِ "+v(U(T).name)+" می‌توانید گروه جدا بدهید؛ دسته‌ای که «پیش‌فرض» بماند در «گروه ساخته‌ی پیش‌فرض» می‌رود. اگر نوع یا گروه خالی باشد، ساخت کارساخته در «لاگ ارسال» منتظر بررسی می‌ماند. ",1)])):_("",!0)]),e[31]||(e[31]=n("p",{class:"hint"}," تغییر این تنظیمات فقط روی موارد بعدی اثر دارد؛ حساب‌ها و کارساخته‌هایی که قبلاً ساخته شده‌اند جابه‌جا نمی‌شوند. در آخر «ذخیره» را بزنید. ",-1))]),_:1})]),_:1}),a(K,{class:"mb-4"},{default:l(()=>[a(w,{disabled:m.provider==="none",loading:_e.value,onClick:Ne},{default:l(()=>[...e[32]||(e[32]=[u("دریافت گروه‌ها از حسابداری",-1)])]),_:1},8,["disabled","loading"]),(o(!0),c(D,null,Oe(ce.value,d=>(o(),c("span",{key:d,class:"warn"},v(d),1))),128))]),_:1}),a(Ct,{layout:"vertical"},{default:l(()=>[a(Xe,{orientation:"right"},{default:l(()=>[...e[33]||(e[33]=[u("حساب مشتری‌ها",-1)])]),_:1}),a(ve,{type:"info","show-icon":"",class:"mb-4",message:`این بخش تعیین می‌کند کدام حساب‌های حسابداری به کاربران اپ مشتری ${U(T).name} وصل شوند`},{description:l(()=>[n("div",null," هر حسابی که در گروه‌های انتخاب‌شده باشد و موبایلش با یک کاربر اپ مشتری "+v(U(T).name)+" یکی باشد، به آن کاربر وصل می‌شود و مانده‌اش در اپ مشتری نمایش داده می‌شود. صندوق، کارمند و سرمایه‌گذار را انتخاب نکنید. ",1),e[34]||(e[34]=n("div",null," مثال: «بنکدار» و «مغازه‌دار» را در فیلد اول انتخاب کنید و در فیلد دوم «مغازه‌دار» را بگذارید. در این حالت کسی که در اپ مشتری ثبت‌نام و احراز هویت کند و در حسابداری حساب نداشته باشد، در گروه «مغازه‌دار» برایش حساب ساخته می‌شود. ",-1))]),_:1},8,["message"]),n("div",Ga,[a(Ee,{label:`گروه‌های حسابی که مشتری ${U(T).name} حساب می‌شوند`,extra:"فقط گروه‌هایی که مشتری‌اند؛ خالی = سینک مشتری اجرا نمی‌شود"},{default:l(()=>[a(fe,{value:ie.value,"onUpdate:value":e[2]||(e[2]=d=>ie.value=d),mode:"multiple",options:ke.value,"allow-clear":"",placeholder:"هیچ گروهی انتخاب نشده"},null,8,["value","options"])]),_:1},8,["label"]),a(Ee,{label:"گروه حسابداریِ مشتری تازه‌ی اپ مشتری",extra:"کاربری که در اپ مشتری احراز هویت شده و در حسابداری حساب ندارد، در این گروه برایش حساب ساخته می‌شود"},{default:l(()=>[a(fe,{value:re.value,"onUpdate:value":e[3]||(e[3]=d=>re.value=d),options:ke.value,"allow-clear":""},null,8,["value","options"])]),_:1}),a(Ee,{label:`عیار پایه‌ی وزن‌های ${U(T).name}`,extra:`عیار وزن محصول‌ها و سفارش‌ها در ${U(T).name}؛ ۷۵۰ یعنی ۱۸ عیار`},{default:l(()=>[a(Ye,{value:m.mapping.karat,"onUpdate:value":e[4]||(e[4]=d=>m.mapping.karat=d),min:1,max:1e3,class:"w-full"},null,8,["value"])]),_:1},8,["label","extra"])]),m.provider==="zarrin"?(o(),c(D,{key:0},[a(Xe,{orientation:"right"},{default:l(()=>[...e[35]||(e[35]=[u("کارساخته (زرین)",-1)])]),_:1}),a(ve,{type:"info","show-icon":"",class:"mb-4",message:`هر محصولی که در پنل مدیریت ${U(T).name} (بخش محصولات) تعریف می‌کنید، در زرین یک «کارساخته» می‌شود`},{description:l(()=>[e[36]||(e[36]=n("div",null,[u(" زرین برای ساختن کارساخته دو چیز لازم دارد: "),n("b",null,"نوع"),u(" (گرمی یا تعدادی) و "),n("b",null,"گروه ساخته"),u(" (کارساخته در کدام پوشه‌ی زرین قرار بگیرد). این بخش این دو را به‌جای شما انتخاب می‌کند تا لازم نباشد برای هر محصول جداگانه در زرین کاری انجام دهید. ")],-1)),n("div",null," ستون «دسته‌بندی محصول در "+v(U(T).name)+"» همان دسته‌بندی‌هایی است که در پنل مدیریت برای محصولات تعریف کرده‌اید. مثال: اگر روبه‌روی «انگشتر» گروه «انگشتر» زرین را بگذارید، هر محصول تازه در دسته‌ی انگشتر "+v(U(T).name)+"، در گروه انگشترِ زرین ساخته می‌شود. دسته‌هایی که «پیش‌فرض» بمانند در «گروه ساخته‌ی پیش‌فرض» می‌روند. ",1),n("div",null," اگر نوع یا گروه خالی باشد، محصول در "+v(U(T).name)+" ساخته می‌شود ولی ساخت کارساخته در «لاگ ارسال» منتظر می‌ماند تا آن را تعیین کنید و «تلاش دوباره» بزنید. محصول‌هایی که از قبل به کارساخته وصل شده‌اند تغییری نمی‌کنند. ",1)]),_:1},8,["message"]),n("div",La,[a(Ee,{label:"نوع کارساخته‌ی جدید (گرمی/تعدادی…)",extra:`برای محصول تازه‌ای که در پنل مدیریت ${U(T).name} تعریف می‌شود`},{default:l(()=>[a(fe,{value:ue.value,"onUpdate:value":e[5]||(e[5]=d=>ue.value=d),options:De.value,"allow-clear":""},null,8,["value","options"])]),_:1},8,["extra"]),a(Ee,{label:"گروه ساخته‌ی پیش‌فرض",extra:"برای دسته‌هایی که در جدول زیر «پیش‌فرض» مانده‌اند"},{default:l(()=>[a(fe,{value:q.value,"onUpdate:value":e[6]||(e[6]=d=>q.value=d),options:z.value,"allow-clear":""},null,8,["value","options"])]),_:1})]),a(we,{"data-source":ee.value,pagination:!1,"row-key":"id",size:"small",class:"mb-4"},{default:l(()=>[a($,{title:`دسته‌بندی محصول در ${U(T).name}`,"data-index":"title"},null,8,["title"]),a($,{title:"گروه ساخته در زرین"},{default:l(({record:d})=>[a(fe,{value:te[d.id],"onUpdate:value":E=>te[d.id]=E,options:z.value,"allow-clear":"",class:"w-full",placeholder:"پیش‌فرض"},null,8,["value","onUpdate:value","options"])]),_:1})]),_:1},8,["data-source"])],64)):m.provider==="tahesab"?(o(),c("div",Pa," ته‌حساب در API خود ساخت کارساخته ندارد: نام کار با اولین سند سفارش در ته‌حساب ساخته می‌شود و از آن به بعد به محصول لینک می‌شود. ")):_("",!0),ce.value.length?(o(),c("div",Ba," اگر فهرستی خالی است، یعنی دریافت آن از حسابداری خطا داده (پیام قرمز بالای صفحه). اتصال را بررسی کنید و دوباره «دریافت گروه‌ها» را بزنید. ")):_("",!0),a(w,{type:"primary",onClick:ge},{default:l(()=>[...e[37]||(e[37]=[u("ذخیره",-1)])]),_:1})]),_:1})]),_:1}),a(pe,{key:"outbox",tab:`لاگ ارسال${t.value}`},{default:l(()=>[a(K,{class:"mb-4"},{default:l(()=>[a(fe,{value:Se.value,"onUpdate:value":e[7]||(e[7]=d=>Se.value=d),style:{width:"180px"},"allow-clear":"",placeholder:"همه‌ی وضعیت‌ها",onChange:e[8]||(e[8]=d=>le(1))},{default:l(()=>[(o(),c(D,null,Oe(V,(d,E)=>a(Ze,{key:E,value:E},{default:l(()=>[u(v(d),1)]),_:2},1032,["value"])),64))]),_:1},8,["value"]),a(w,{onClick:e[9]||(e[9]=d=>le(J.page))},{default:l(()=>[...e[38]||(e[38]=[u("تازه‌سازی",-1)])]),_:1})]),_:1}),a(we,{"data-source":J.rows,columns:r,"row-key":"id",size:"small",pagination:{current:J.page,pageSize:J.limit,total:J.total,onChange:le}},{bodyCell:l(({column:d,record:E})=>[d.key==="createdAt"?(o(),c(D,{key:0},[u(v(F(E.createdAt)),1)],64)):d.key==="kind"?(o(),c(D,{key:1},[u(v(Be[E.kind]??E.kind),1)],64)):d.key==="entity"?(o(),c(D,{key:2},[u(v(E.entityLabel??E.entityId),1)],64)):d.key==="status"?(o(),c(D,{key:3},[a(k,{color:W[E.status]},{default:l(()=>[u(v(V[E.status]??E.status),1)]),_:2},1032,["color"]),E.provider!==m.provider?(o(),c("span",Wa," ("+v(E.provider)+")",1)):_("",!0)],64)):d.key==="error"?(o(),c("span",Fa,v(E.lastError),1)):d.key==="actions"?(o(),x(K,{key:5},{default:l(()=>[["FAILED","NEEDS_REVIEW","PENDING"].includes(E.status)?(o(),x(He,{key:0,title:"پیش از تلاش دوباره، مطمئن شوید سند در حسابداری ثبت نشده است. ادامه؟",onConfirm:Ge=>b(E.id)},{default:l(()=>[a(w,{size:"small"},{default:l(()=>[...e[39]||(e[39]=[u("تلاش دوباره",-1)])]),_:1})]),_:1},8,["onConfirm"])):_("",!0),["FAILED","NEEDS_REVIEW","PENDING"].includes(E.status)?(o(),x(He,{key:1,title:"این ردیف «حل‌شده» علامت بخورد (دستی در حسابداری رسیدگی شده)؟",onConfirm:Ge=>Ce(E.id)},{default:l(()=>[a(w,{size:"small"},{default:l(()=>[...e[40]||(e[40]=[u("حل‌شده",-1)])]),_:1})]),_:1},8,["onConfirm"])):_("",!0)]),_:2},1024)):_("",!0)]),expandedRowRender:l(({record:d})=>[n("div",Ka,[n("div",null,[e[41]||(e[41]=n("b",null,"درخواست",-1)),n("pre",Va,v(Re(d.lastRequest)),1)]),n("div",null,[e[42]||(e[42]=n("b",null,"پاسخ",-1)),n("pre",Ya,v(Re(d.lastResponse)),1)])]),n("div",Ha,"کد مرجع: "+v(d.externalRef??"—")+" | تلاش: "+v(d.attempts)+" | تلاش بعدی: "+v(F(d.nextAttemptAt)),1)]),_:1},8,["data-source","pagination"])]),_:1},8,["tab"]),a(pe,{key:"issues",tab:`مغایرت‌ها${(Ae=O.value)!=null&&Ae.openIssues?` (${O.value.openIssues})`:""}`},{default:l(()=>[a(we,{"data-source":g.rows,"row-key":"id",size:"small",pagination:{current:g.page,pageSize:g.limit,total:g.total,onChange:Ve}},{default:l(()=>[a($,{title:"تاریخ"},{default:l(({record:d})=>[u(v(F(d.updatedAt)),1)]),_:1}),a($,{title:"نرم‌افزار","data-index":"provider"}),a($,{title:"نوع"},{default:l(({record:d})=>[u(v(i[d.kind]??d.kind),1)]),_:1}),a($,{title:"کد حسابداری","data-index":"externalCode"}),a($,{title:"شرح","data-index":"message"}),a($,{title:""},{default:l(({record:d})=>[a(w,{size:"small",onClick:E=>ft(d.id)},{default:l(()=>[...e[43]||(e[43]=[u("رسیدگی شد",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1},8,["data-source","pagination"])]),_:1},8,["tab"]),a(pe,{key:"links",tab:"لینک‌ها"},{default:l(()=>[a(K,{class:"mb-4"},{default:l(()=>[a(wt,{value:N.value,"onUpdate:value":e[10]||(e[10]=d=>N.value=d),onChange:e[11]||(e[11]=d=>he(1))},{default:l(()=>[a(et,{value:"CUSTOMER"},{default:l(()=>[...e[44]||(e[44]=[u("مشتری",-1)])]),_:1}),a(et,{value:"PRODUCT"},{default:l(()=>[...e[45]||(e[45]=[u("کارساخته",-1)])]),_:1})]),_:1},8,["value"]),a(Et,{value:I.value,"onUpdate:value":e[12]||(e[12]=d=>I.value=d),placeholder:"کد یا نام در حسابداری",style:{width:"240px"},onSearch:e[13]||(e[13]=d=>he(1))},null,8,["value"])]),_:1}),a(we,{"data-source":y.rows,"row-key":"id",size:"small",pagination:{current:y.page,pageSize:y.limit,total:y.total,onChange:he}},{default:l(()=>[a($,{title:"کد حسابداری","data-index":"externalCode"}),a($,{title:"نام در حسابداری","data-index":"externalName"}),a($,{title:`شناسه در ${U(T).name}`,"data-index":"entityId"},null,8,["title"]),a($,{title:"منشأ"},{default:l(({record:d})=>[u(v(Z[d.origin]??d.origin),1)]),_:1}),a($,{title:"آخرین سینک"},{default:l(({record:d})=>[u(v(F(d.syncedAt)),1)]),_:1}),a($,{title:""},{default:l(({record:d})=>[a(He,{title:"لینک حذف شود؟ در سینک بعدی دوباره با موبایل/نام جفت می‌شود.",onConfirm:E=>bt(d.id)},{default:l(()=>[a(w,{size:"small",danger:""},{default:l(()=>[...e[46]||(e[46]=[u("حذف لینک",-1)])]),_:1})]),_:1},8,["onConfirm"])]),_:1})]),_:1},8,["data-source","pagination"])]),_:1}),a(pe,{key:"movement",tab:"گردش کارساخته"},{default:l(()=>[a(K,{class:"mb-4"},{default:l(()=>[a(tt,{value:xe.value,"onUpdate:value":e[14]||(e[14]=d=>xe.value=d),dir:"ltr",placeholder:"از ۱۴۰۵/۰۷/۰۱",style:{width:"150px"}},null,8,["value"]),a(tt,{value:L.value,"onUpdate:value":e[15]||(e[15]=d=>L.value=d),dir:"ltr",placeholder:"تا ۱۴۰۵/۰۷/۳۰",style:{width:"150px"}},null,8,["value"]),a(w,{disabled:!be.value,loading:Ue.value,onClick:_t},{default:l(()=>[...e[47]||(e[47]=[u("نمایش",-1)])]),_:1},8,["disabled","loading"])]),_:1}),ae.scope==="recent-documents"?(o(),x(ve,{key:0,type:"info","show-icon":"",class:"mb-4",message:"ته‌حساب گزارش گردش همه‌ی حساب‌ها را ندارد؛ این فهرست از آخرین ۱۰۰۰ سند ثبت‌شده ساخته شده است."})):_("",!0),a(we,{"data-source":ae.rows,"row-key":(d,E)=>E,size:"small"},{default:l(()=>[a($,{title:"تاریخ","data-index":"date"}),a($,{title:"کارساخته","data-index":"itemName"}),a($,{title:"شرح","data-index":"description"}),a($,{title:"وزن","data-index":"weight"}),a($,{title:"تعداد","data-index":"count"}),a($,{title:"مبلغ","data-index":"amount"})]),_:1},8,["data-source","row-key"])]),_:1})]}),_:1},8,["active-key"])]),_:1},8,["spinning"])]}),_:1})):_("",!0)])}}}),el=pt(qa,[["__scopeId","data-v-cc33ab94"]]);export{el as default}; diff --git a/apps/admin-panel/dist/assets/addFinDoc-BK_gCf66.js b/apps/admin-panel/dist/assets/addFinDoc-BK_gCf66.js deleted file mode 100644 index fd60d27..0000000 --- a/apps/admin-panel/dist/assets/addFinDoc-BK_gCf66.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as o}from"./addFinDoc.vue_vue_type_script_setup_true_lang-DVg9XEpR.js";import"./index-C9T3Vski.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-Du4lPDHl.js";export{o as default}; diff --git a/apps/admin-panel/dist/assets/addFinDoc-DEQ45dH9.js b/apps/admin-panel/dist/assets/addFinDoc-DEQ45dH9.js new file mode 100644 index 0000000..21f40b0 --- /dev/null +++ b/apps/admin-panel/dist/assets/addFinDoc-DEQ45dH9.js @@ -0,0 +1 @@ +import{_ as o}from"./addFinDoc.vue_vue_type_script_setup_true_lang-DkT33edE.js";import"./index-CuIWfDbM.js";import"./select--BgT6D7O.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-DXuLuiBZ.js";export{o as default}; diff --git a/apps/admin-panel/dist/assets/addFinDoc.vue_vue_type_script_setup_true_lang-DVg9XEpR.js b/apps/admin-panel/dist/assets/addFinDoc.vue_vue_type_script_setup_true_lang-DVg9XEpR.js deleted file mode 100644 index e3e46a0..0000000 --- a/apps/admin-panel/dist/assets/addFinDoc.vue_vue_type_script_setup_true_lang-DVg9XEpR.js +++ /dev/null @@ -1 +0,0 @@ -import{d as J,x as K,y as U,a as g,w as u,h as Q,k as X,m as M,z as E,r as p,o as r,p as G,c as a,f as v,b as m,e as L,F as O,i as f,H as Y,s as V,G as j,l as Z,t as z}from"./index-C9T3Vski.js";import{_ as h}from"./BaseFormModal.vue_vue_type_style_index_0_lang-Du4lPDHl.js";const ee={class:"grid-3"},le={key:0,class:"grid-3"},ae={key:1,class:"grid-3"},te={key:2,class:"grid-3"},ue={key:3,class:"grid-3"},ne={class:"grid-3"},oe={key:0,class:"grid-3"},se={key:1,class:"grid-3"},re={key:2,class:"grid-3"},ie={key:3,class:"grid-3"},de=4.331802,me=J({__name:"addFinDoc",props:{open:{type:Boolean},id:{}},emits:["update:open","success"],setup(x,{emit:A}){const R=x,$=A,k=R.open!==void 0,D=X(),H=Z(),y=k?R.id:D.params.id,w=M(!1),c=M([]),l=E({type:2,customer_id:void 0,value:void 0,original_value:void 0,ayar:void 0,lab:"",ang:"",to:"",price:void 0,price_per_gram:void 0,account_name:"",bank_name:"",note:""}),_=E({}),C=V(()=>{const o=Number(l.original_value??0),e=Number(l.ayar??0);return!o||!e?"":(o*e/750).toFixed(4)}),F=V(()=>{const o=Number(l.price??0),e=Number(l.price_per_gram??0);return!o||!e?"":(o/(e/de)).toFixed(4)});function S(o,e){var s,b;return String(((b=(s=e==null?void 0:e.children)==null?void 0:s[0])==null?void 0:b.children)??"").toLowerCase().includes(o.toLowerCase())}function W(){return Object.keys(_).forEach(o=>delete _[o]),l.customer_id||(_.customer_id="مقدار را وارد نمایید"),Object.keys(_).length===0}async function N(){var o,e;if(W())try{w.value=!0,y?await U.put(`cash/${y}`,l):await U.post("cash",l),j.info("اطلاعات با موفقیت به ثبت رسید."),k?($("success"),$("update:open",!1)):H.push("/finical/list")}catch(s){j.error(((e=(o=s==null?void 0:s.response)==null?void 0:o.data)==null?void 0:e.message)??"خطا در ثبت اطلاعات.")}finally{w.value=!1}}return K(async()=>{var o;try{const{data:e}=await U.get("query/customer");c.value=e}catch(e){console.log(e)}if(y)try{const{data:e}=await U.get(`cash/${y}`);Object.assign(l,{type:e.type??2,customer_id:(o=e.customer)==null?void 0:o.id,value:e.value!==null?Number(e.value):void 0,original_value:e.original_value!==null?Number(e.original_value):void 0,ayar:e.ayar??void 0,lab:e.lab??"",ang:e.ang??"",to:e.to??"",price:e.price!==null?Number(e.price):void 0,price_per_gram:e.price_per_gram!==null?Number(e.price_per_gram):void 0,account_name:e.account_name??"",bank_name:e.bank_name??"",note:e.note??""})}catch(e){console.log(e)}}),(o,e)=>{const s=p("a-select-option"),b=p("a-select"),n=p("a-form-item"),i=p("a-input-number"),d=p("a-input"),B=p("a-textarea"),q=p("a-button"),P=p("a-card"),T=p("a-form"),I=p("a-spin");return k?(r(),g(h,{key:0,open:!!x.open,id:Q(y),"add-title":"ثبت سند مالی","edit-title":"ویرایش سند مالی",loading:w.value,submitting:w.value,width:"lg","onUpdate:open":e[15]||(e[15]=t=>o.$emit("update:open",t)),onSubmit:N},{default:u(()=>[G("div",ee,[a(n,{label:"نوع سند"},{default:u(()=>[a(b,{value:l.type,"onUpdate:value":e[0]||(e[0]=t=>l.type=t)},{default:u(()=>[a(s,{value:2},{default:u(()=>[...e[31]||(e[31]=[v("حواله",-1)])]),_:1}),a(s,{value:1},{default:u(()=>[...e[32]||(e[32]=[v("آب شده",-1)])]),_:1}),a(s,{value:4},{default:u(()=>[...e[33]||(e[33]=[v("پولی",-1)])]),_:1}),a(s,{value:3},{default:u(()=>[...e[34]||(e[34]=[v("چک",-1)])]),_:1})]),_:1},8,["value"])]),_:1}),a(n,{label:"مشتری","validate-status":_.customer_id?"error":"",help:_.customer_id},{default:u(()=>[a(b,{value:l.customer_id,"onUpdate:value":e[1]||(e[1]=t=>l.customer_id=t),"show-search":"","option-filter-prop":"children","filter-option":S,placeholder:"انتخاب کنید"},{default:u(()=>[(r(!0),m(O,null,L(c.value,t=>(r(),g(s,{key:t.id,value:t.id},{default:u(()=>[v(z(`${t.name} - ${t.mobile}`),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["validate-status","help"])]),l.type==1?(r(),m("div",le,[a(n,{label:"وزن (گرم)"},{default:u(()=>[a(i,{value:l.original_value,"onUpdate:value":e[2]||(e[2]=t=>l.original_value=t),class:"w-full",step:.001},null,8,["value"])]),_:1}),a(n,{label:"عیار"},{default:u(()=>[a(i,{value:l.ayar,"onUpdate:value":e[3]||(e[3]=t=>l.ayar=t),class:"w-full"},null,8,["value"])]),_:1}),a(n,{label:"نام آزمایشگاه"},{default:u(()=>[a(d,{value:l.lab,"onUpdate:value":e[4]||(e[4]=t=>l.lab=t)},null,8,["value"])]),_:1}),a(n,{label:"انگ"},{default:u(()=>[a(d,{value:l.ang,"onUpdate:value":e[5]||(e[5]=t=>l.ang=t)},null,8,["value"])]),_:1}),a(n,{label:"وزن نهایی اعمال شده"},{default:u(()=>[a(d,{value:C.value,disabled:""},null,8,["value"])]),_:1})])):f("",!0),l.type==2?(r(),m("div",ae,[a(n,{label:"وزن (گرم)"},{default:u(()=>[a(i,{value:l.value,"onUpdate:value":e[6]||(e[6]=t=>l.value=t),class:"w-full",step:.001},null,8,["value"])]),_:1}),a(n,{label:"حواله به"},{default:u(()=>[a(d,{value:l.to,"onUpdate:value":e[7]||(e[7]=t=>l.to=t)},null,8,["value"])]),_:1})])):f("",!0),l.type==3?(r(),m("div",te,[a(n,{label:"مبلغ چک"},{default:u(()=>[a(i,{value:l.price,"onUpdate:value":e[8]||(e[8]=t=>l.price=t),class:"w-full"},null,8,["value"])]),_:1}),a(n,{label:"وزن (گرم)"},{default:u(()=>[a(i,{value:l.value,"onUpdate:value":e[9]||(e[9]=t=>l.value=t),class:"w-full",step:.001},null,8,["value"])]),_:1}),a(n,{label:"نام صاحب حساب"},{default:u(()=>[a(d,{value:l.account_name,"onUpdate:value":e[10]||(e[10]=t=>l.account_name=t)},null,8,["value"])]),_:1}),a(n,{label:"نام بانک"},{default:u(()=>[a(d,{value:l.bank_name,"onUpdate:value":e[11]||(e[11]=t=>l.bank_name=t)},null,8,["value"])]),_:1})])):f("",!0),l.type==4?(r(),m("div",ue,[a(n,{label:"میزان پول"},{default:u(()=>[a(i,{value:l.price,"onUpdate:value":e[12]||(e[12]=t=>l.price=t),class:"w-full"},null,8,["value"])]),_:1}),a(n,{label:"مظنه"},{default:u(()=>[a(i,{value:l.price_per_gram,"onUpdate:value":e[13]||(e[13]=t=>l.price_per_gram=t),class:"w-full"},null,8,["value"])]),_:1}),l.price_per_gram?(r(),g(n,{key:0,label:"وزن نهایی اعمال شده"},{default:u(()=>[a(d,{value:F.value,disabled:""},null,8,["value"])]),_:1})):f("",!0)])):f("",!0),a(n,{label:"توضیحات"},{default:u(()=>[a(B,{value:l.note,"onUpdate:value":e[14]||(e[14]=t=>l.note=t),"auto-size":{minRows:3,maxRows:5}},null,8,["value"])]),_:1})]),_:1},8,["open","id","loading","submitting"])):(r(),g(I,{key:1,spinning:w.value},{default:u(()=>[a(T,{layout:"vertical",onSubmit:Y(N,["prevent"])},{default:u(()=>[a(P,{title:"ثبت سند مالی",class:"mb-base page-card"},{default:u(()=>[G("div",ne,[a(n,{label:"نوع سند"},{default:u(()=>[a(b,{value:l.type,"onUpdate:value":e[16]||(e[16]=t=>l.type=t)},{default:u(()=>[a(s,{value:2},{default:u(()=>[...e[35]||(e[35]=[v("حواله",-1)])]),_:1}),a(s,{value:1},{default:u(()=>[...e[36]||(e[36]=[v("آب شده",-1)])]),_:1}),a(s,{value:4},{default:u(()=>[...e[37]||(e[37]=[v("پولی",-1)])]),_:1}),a(s,{value:3},{default:u(()=>[...e[38]||(e[38]=[v("چک",-1)])]),_:1})]),_:1},8,["value"])]),_:1}),a(n,{label:"مشتری","validate-status":_.customer_id?"error":"",help:_.customer_id},{default:u(()=>[a(b,{value:l.customer_id,"onUpdate:value":e[17]||(e[17]=t=>l.customer_id=t),"show-search":"","option-filter-prop":"children","filter-option":S,placeholder:"انتخاب کنید"},{default:u(()=>[(r(!0),m(O,null,L(c.value,t=>(r(),g(s,{key:t.id,value:t.id},{default:u(()=>[v(z(`${t.name} - ${t.mobile}`),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["validate-status","help"])]),l.type==1?(r(),m("div",oe,[a(n,{label:"وزن (گرم)"},{default:u(()=>[a(i,{value:l.original_value,"onUpdate:value":e[18]||(e[18]=t=>l.original_value=t),class:"w-full",step:.001},null,8,["value"])]),_:1}),a(n,{label:"عیار"},{default:u(()=>[a(i,{value:l.ayar,"onUpdate:value":e[19]||(e[19]=t=>l.ayar=t),class:"w-full"},null,8,["value"])]),_:1}),a(n,{label:"نام آزمایشگاه"},{default:u(()=>[a(d,{value:l.lab,"onUpdate:value":e[20]||(e[20]=t=>l.lab=t)},null,8,["value"])]),_:1}),a(n,{label:"انگ"},{default:u(()=>[a(d,{value:l.ang,"onUpdate:value":e[21]||(e[21]=t=>l.ang=t)},null,8,["value"])]),_:1}),a(n,{label:"وزن نهایی اعمال شده"},{default:u(()=>[a(d,{value:C.value,disabled:""},null,8,["value"])]),_:1})])):f("",!0),l.type==2?(r(),m("div",se,[a(n,{label:"وزن (گرم)"},{default:u(()=>[a(i,{value:l.value,"onUpdate:value":e[22]||(e[22]=t=>l.value=t),class:"w-full",step:.001},null,8,["value"])]),_:1}),a(n,{label:"حواله به"},{default:u(()=>[a(d,{value:l.to,"onUpdate:value":e[23]||(e[23]=t=>l.to=t)},null,8,["value"])]),_:1})])):f("",!0),l.type==3?(r(),m("div",re,[a(n,{label:"مبلغ چک"},{default:u(()=>[a(i,{value:l.price,"onUpdate:value":e[24]||(e[24]=t=>l.price=t),class:"w-full"},null,8,["value"])]),_:1}),a(n,{label:"وزن (گرم)"},{default:u(()=>[a(i,{value:l.value,"onUpdate:value":e[25]||(e[25]=t=>l.value=t),class:"w-full",step:.001},null,8,["value"])]),_:1}),a(n,{label:"نام صاحب حساب"},{default:u(()=>[a(d,{value:l.account_name,"onUpdate:value":e[26]||(e[26]=t=>l.account_name=t)},null,8,["value"])]),_:1}),a(n,{label:"نام بانک"},{default:u(()=>[a(d,{value:l.bank_name,"onUpdate:value":e[27]||(e[27]=t=>l.bank_name=t)},null,8,["value"])]),_:1})])):f("",!0),l.type==4?(r(),m("div",ie,[a(n,{label:"میزان پول"},{default:u(()=>[a(i,{value:l.price,"onUpdate:value":e[28]||(e[28]=t=>l.price=t),class:"w-full"},null,8,["value"])]),_:1}),a(n,{label:"مظنه"},{default:u(()=>[a(i,{value:l.price_per_gram,"onUpdate:value":e[29]||(e[29]=t=>l.price_per_gram=t),class:"w-full"},null,8,["value"])]),_:1}),l.price_per_gram?(r(),g(n,{key:0,label:"وزن نهایی اعمال شده"},{default:u(()=>[a(d,{value:F.value,disabled:""},null,8,["value"])]),_:1})):f("",!0)])):f("",!0),a(n,{label:"توضیحات"},{default:u(()=>[a(B,{value:l.note,"onUpdate:value":e[30]||(e[30]=t=>l.note=t),"auto-size":{minRows:3,maxRows:5}},null,8,["value"])]),_:1}),a(q,{type:"primary",class:"form-submit",onClick:N},{default:u(()=>[...e[39]||(e[39]=[v("ثبت اطلاعات",-1)])]),_:1})]),_:1})]),_:1})]),_:1},8,["spinning"]))}}});export{me as _}; diff --git a/apps/admin-panel/dist/assets/addFinDoc.vue_vue_type_script_setup_true_lang-DkT33edE.js b/apps/admin-panel/dist/assets/addFinDoc.vue_vue_type_script_setup_true_lang-DkT33edE.js new file mode 100644 index 0000000..c862cab --- /dev/null +++ b/apps/admin-panel/dist/assets/addFinDoc.vue_vue_type_script_setup_true_lang-DkT33edE.js @@ -0,0 +1 @@ +import{d as J,x as K,y as U,a as b,w as u,h as Q,k as X,m as M,z as E,r as p,o as s,p as G,c as a,f as v,b as m,e as L,F as O,i as f,H as Y,s as V,G as j,l as Z,t as z}from"./index-CuIWfDbM.js";import{o as h}from"./select--BgT6D7O.js";import{_ as ee}from"./BaseFormModal.vue_vue_type_style_index_0_lang-DXuLuiBZ.js";const le={class:"grid-3"},ae={key:0,class:"grid-3"},te={key:1,class:"grid-3"},ue={key:2,class:"grid-3"},ne={key:3,class:"grid-3"},oe={class:"grid-3"},se={key:0,class:"grid-3"},ie={key:1,class:"grid-3"},re={key:2,class:"grid-3"},de={key:3,class:"grid-3"},ve=4.331802,_e=J({__name:"addFinDoc",props:{open:{type:Boolean},id:{}},emits:["update:open","success"],setup(N,{emit:A}){const R=N,$=A,k=R.open!==void 0,D=X(),H=Z(),g=k?R.id:D.params.id,y=M(!1),c=M([]),l=E({type:2,customer_id:void 0,value:void 0,original_value:void 0,ayar:void 0,lab:"",ang:"",to:"",price:void 0,price_per_gram:void 0,account_name:"",bank_name:"",note:""}),_=E({}),C=V(()=>{const o=Number(l.original_value??0),e=Number(l.ayar??0);return!o||!e?"":(o*e/750).toFixed(4)}),F=V(()=>{const o=Number(l.price??0),e=Number(l.price_per_gram??0);return!o||!e?"":(o/(e/ve)).toFixed(4)});function B(o,e){return h(e).toLowerCase().includes(o.toLowerCase())}function T(){return Object.keys(_).forEach(o=>delete _[o]),l.customer_id||(_.customer_id="مقدار را وارد نمایید"),Object.keys(_).length===0}async function x(){var o,e;if(T())try{y.value=!0,g?await U.put(`cash/${g}`,l):await U.post("cash",l),j.info("اطلاعات با موفقیت به ثبت رسید."),k?($("success"),$("update:open",!1)):H.push("/finical/list")}catch(i){j.error(((e=(o=i==null?void 0:i.response)==null?void 0:o.data)==null?void 0:e.message)??"خطا در ثبت اطلاعات.")}finally{y.value=!1}}return K(async()=>{var o;try{const{data:e}=await U.get("query/customer");c.value=e}catch(e){console.log(e)}if(g)try{const{data:e}=await U.get(`cash/${g}`);Object.assign(l,{type:e.type??2,customer_id:(o=e.customer)==null?void 0:o.id,value:e.value!==null?Number(e.value):void 0,original_value:e.original_value!==null?Number(e.original_value):void 0,ayar:e.ayar??void 0,lab:e.lab??"",ang:e.ang??"",to:e.to??"",price:e.price!==null?Number(e.price):void 0,price_per_gram:e.price_per_gram!==null?Number(e.price_per_gram):void 0,account_name:e.account_name??"",bank_name:e.bank_name??"",note:e.note??""})}catch(e){console.log(e)}}),(o,e)=>{const i=p("a-select-option"),w=p("a-select"),n=p("a-form-item"),r=p("a-input-number"),d=p("a-input"),S=p("a-textarea"),W=p("a-button"),q=p("a-card"),P=p("a-form"),I=p("a-spin");return k?(s(),b(ee,{key:0,open:!!N.open,id:Q(g),"add-title":"ثبت سند مالی","edit-title":"ویرایش سند مالی",loading:y.value,submitting:y.value,width:"lg","onUpdate:open":e[15]||(e[15]=t=>o.$emit("update:open",t)),onSubmit:x},{default:u(()=>[G("div",le,[a(n,{label:"نوع سند"},{default:u(()=>[a(w,{value:l.type,"onUpdate:value":e[0]||(e[0]=t=>l.type=t)},{default:u(()=>[a(i,{value:2},{default:u(()=>[...e[31]||(e[31]=[v("حواله",-1)])]),_:1}),a(i,{value:1},{default:u(()=>[...e[32]||(e[32]=[v("آب شده",-1)])]),_:1}),a(i,{value:4},{default:u(()=>[...e[33]||(e[33]=[v("پولی",-1)])]),_:1}),a(i,{value:3},{default:u(()=>[...e[34]||(e[34]=[v("چک",-1)])]),_:1})]),_:1},8,["value"])]),_:1}),a(n,{label:"مشتری","validate-status":_.customer_id?"error":"",help:_.customer_id},{default:u(()=>[a(w,{value:l.customer_id,"onUpdate:value":e[1]||(e[1]=t=>l.customer_id=t),"show-search":"","option-filter-prop":"children","filter-option":B,placeholder:"انتخاب کنید"},{default:u(()=>[(s(!0),m(O,null,L(c.value,t=>(s(),b(i,{key:t.id,value:t.id},{default:u(()=>[v(z(`${t.name} - ${t.mobile}`),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["validate-status","help"])]),l.type==1?(s(),m("div",ae,[a(n,{label:"وزن (گرم)"},{default:u(()=>[a(r,{value:l.original_value,"onUpdate:value":e[2]||(e[2]=t=>l.original_value=t),class:"w-full",step:.001},null,8,["value"])]),_:1}),a(n,{label:"عیار"},{default:u(()=>[a(r,{value:l.ayar,"onUpdate:value":e[3]||(e[3]=t=>l.ayar=t),class:"w-full"},null,8,["value"])]),_:1}),a(n,{label:"نام آزمایشگاه"},{default:u(()=>[a(d,{value:l.lab,"onUpdate:value":e[4]||(e[4]=t=>l.lab=t)},null,8,["value"])]),_:1}),a(n,{label:"انگ"},{default:u(()=>[a(d,{value:l.ang,"onUpdate:value":e[5]||(e[5]=t=>l.ang=t)},null,8,["value"])]),_:1}),a(n,{label:"وزن نهایی اعمال شده"},{default:u(()=>[a(d,{value:C.value,disabled:""},null,8,["value"])]),_:1})])):f("",!0),l.type==2?(s(),m("div",te,[a(n,{label:"وزن (گرم)"},{default:u(()=>[a(r,{value:l.value,"onUpdate:value":e[6]||(e[6]=t=>l.value=t),class:"w-full",step:.001},null,8,["value"])]),_:1}),a(n,{label:"حواله به"},{default:u(()=>[a(d,{value:l.to,"onUpdate:value":e[7]||(e[7]=t=>l.to=t)},null,8,["value"])]),_:1})])):f("",!0),l.type==3?(s(),m("div",ue,[a(n,{label:"مبلغ چک"},{default:u(()=>[a(r,{value:l.price,"onUpdate:value":e[8]||(e[8]=t=>l.price=t),class:"w-full"},null,8,["value"])]),_:1}),a(n,{label:"وزن (گرم)"},{default:u(()=>[a(r,{value:l.value,"onUpdate:value":e[9]||(e[9]=t=>l.value=t),class:"w-full",step:.001},null,8,["value"])]),_:1}),a(n,{label:"نام صاحب حساب"},{default:u(()=>[a(d,{value:l.account_name,"onUpdate:value":e[10]||(e[10]=t=>l.account_name=t)},null,8,["value"])]),_:1}),a(n,{label:"نام بانک"},{default:u(()=>[a(d,{value:l.bank_name,"onUpdate:value":e[11]||(e[11]=t=>l.bank_name=t)},null,8,["value"])]),_:1})])):f("",!0),l.type==4?(s(),m("div",ne,[a(n,{label:"میزان پول"},{default:u(()=>[a(r,{value:l.price,"onUpdate:value":e[12]||(e[12]=t=>l.price=t),class:"w-full"},null,8,["value"])]),_:1}),a(n,{label:"مظنه"},{default:u(()=>[a(r,{value:l.price_per_gram,"onUpdate:value":e[13]||(e[13]=t=>l.price_per_gram=t),class:"w-full"},null,8,["value"])]),_:1}),l.price_per_gram?(s(),b(n,{key:0,label:"وزن نهایی اعمال شده"},{default:u(()=>[a(d,{value:F.value,disabled:""},null,8,["value"])]),_:1})):f("",!0)])):f("",!0),a(n,{label:"توضیحات"},{default:u(()=>[a(S,{value:l.note,"onUpdate:value":e[14]||(e[14]=t=>l.note=t),"auto-size":{minRows:3,maxRows:5}},null,8,["value"])]),_:1})]),_:1},8,["open","id","loading","submitting"])):(s(),b(I,{key:1,spinning:y.value},{default:u(()=>[a(P,{layout:"vertical",onSubmit:Y(x,["prevent"])},{default:u(()=>[a(q,{title:"ثبت سند مالی",class:"mb-base page-card"},{default:u(()=>[G("div",oe,[a(n,{label:"نوع سند"},{default:u(()=>[a(w,{value:l.type,"onUpdate:value":e[16]||(e[16]=t=>l.type=t)},{default:u(()=>[a(i,{value:2},{default:u(()=>[...e[35]||(e[35]=[v("حواله",-1)])]),_:1}),a(i,{value:1},{default:u(()=>[...e[36]||(e[36]=[v("آب شده",-1)])]),_:1}),a(i,{value:4},{default:u(()=>[...e[37]||(e[37]=[v("پولی",-1)])]),_:1}),a(i,{value:3},{default:u(()=>[...e[38]||(e[38]=[v("چک",-1)])]),_:1})]),_:1},8,["value"])]),_:1}),a(n,{label:"مشتری","validate-status":_.customer_id?"error":"",help:_.customer_id},{default:u(()=>[a(w,{value:l.customer_id,"onUpdate:value":e[17]||(e[17]=t=>l.customer_id=t),"show-search":"","option-filter-prop":"children","filter-option":B,placeholder:"انتخاب کنید"},{default:u(()=>[(s(!0),m(O,null,L(c.value,t=>(s(),b(i,{key:t.id,value:t.id},{default:u(()=>[v(z(`${t.name} - ${t.mobile}`),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["validate-status","help"])]),l.type==1?(s(),m("div",se,[a(n,{label:"وزن (گرم)"},{default:u(()=>[a(r,{value:l.original_value,"onUpdate:value":e[18]||(e[18]=t=>l.original_value=t),class:"w-full",step:.001},null,8,["value"])]),_:1}),a(n,{label:"عیار"},{default:u(()=>[a(r,{value:l.ayar,"onUpdate:value":e[19]||(e[19]=t=>l.ayar=t),class:"w-full"},null,8,["value"])]),_:1}),a(n,{label:"نام آزمایشگاه"},{default:u(()=>[a(d,{value:l.lab,"onUpdate:value":e[20]||(e[20]=t=>l.lab=t)},null,8,["value"])]),_:1}),a(n,{label:"انگ"},{default:u(()=>[a(d,{value:l.ang,"onUpdate:value":e[21]||(e[21]=t=>l.ang=t)},null,8,["value"])]),_:1}),a(n,{label:"وزن نهایی اعمال شده"},{default:u(()=>[a(d,{value:C.value,disabled:""},null,8,["value"])]),_:1})])):f("",!0),l.type==2?(s(),m("div",ie,[a(n,{label:"وزن (گرم)"},{default:u(()=>[a(r,{value:l.value,"onUpdate:value":e[22]||(e[22]=t=>l.value=t),class:"w-full",step:.001},null,8,["value"])]),_:1}),a(n,{label:"حواله به"},{default:u(()=>[a(d,{value:l.to,"onUpdate:value":e[23]||(e[23]=t=>l.to=t)},null,8,["value"])]),_:1})])):f("",!0),l.type==3?(s(),m("div",re,[a(n,{label:"مبلغ چک"},{default:u(()=>[a(r,{value:l.price,"onUpdate:value":e[24]||(e[24]=t=>l.price=t),class:"w-full"},null,8,["value"])]),_:1}),a(n,{label:"وزن (گرم)"},{default:u(()=>[a(r,{value:l.value,"onUpdate:value":e[25]||(e[25]=t=>l.value=t),class:"w-full",step:.001},null,8,["value"])]),_:1}),a(n,{label:"نام صاحب حساب"},{default:u(()=>[a(d,{value:l.account_name,"onUpdate:value":e[26]||(e[26]=t=>l.account_name=t)},null,8,["value"])]),_:1}),a(n,{label:"نام بانک"},{default:u(()=>[a(d,{value:l.bank_name,"onUpdate:value":e[27]||(e[27]=t=>l.bank_name=t)},null,8,["value"])]),_:1})])):f("",!0),l.type==4?(s(),m("div",de,[a(n,{label:"میزان پول"},{default:u(()=>[a(r,{value:l.price,"onUpdate:value":e[28]||(e[28]=t=>l.price=t),class:"w-full"},null,8,["value"])]),_:1}),a(n,{label:"مظنه"},{default:u(()=>[a(r,{value:l.price_per_gram,"onUpdate:value":e[29]||(e[29]=t=>l.price_per_gram=t),class:"w-full"},null,8,["value"])]),_:1}),l.price_per_gram?(s(),b(n,{key:0,label:"وزن نهایی اعمال شده"},{default:u(()=>[a(d,{value:F.value,disabled:""},null,8,["value"])]),_:1})):f("",!0)])):f("",!0),a(n,{label:"توضیحات"},{default:u(()=>[a(S,{value:l.note,"onUpdate:value":e[30]||(e[30]=t=>l.note=t),"auto-size":{minRows:3,maxRows:5}},null,8,["value"])]),_:1}),a(W,{type:"primary",class:"form-submit",onClick:x},{default:u(()=>[...e[39]||(e[39]=[v("ثبت اطلاعات",-1)])]),_:1})]),_:1})]),_:1})]),_:1},8,["spinning"]))}}});export{_e as _}; diff --git a/apps/admin-panel/dist/assets/auth-CIh5zA9X.js b/apps/admin-panel/dist/assets/auth-N_Kcbhfe.js similarity index 94% rename from apps/admin-panel/dist/assets/auth-CIh5zA9X.js rename to apps/admin-panel/dist/assets/auth-N_Kcbhfe.js index 4c98228..f5b15b4 100644 --- a/apps/admin-panel/dist/assets/auth-CIh5zA9X.js +++ b/apps/admin-panel/dist/assets/auth-N_Kcbhfe.js @@ -1 +1 @@ -import{Y as u,y as l,a1 as c,a2 as s,a3 as a,u as n}from"./index-C9T3Vski.js";const g=u("auth",{state:()=>({userPermission:[]}),getters:{token:()=>localStorage.getItem(s),user:()=>{const e=localStorage.getItem(a);if(!e)return null;try{return JSON.parse(e)}catch{return null}},isLoggedIn(){return!!this.token}},actions:{async login(e){const{data:t}=await l.post("admin-login",e),o=n();o.getRoles((t.roles??[]).map(i=>i.rid)),o.setSuperAdmin(t.is_super_admin);const r={...t};return delete r.roles,delete r.ut,this.inject(r),t.iamBootstrapUrl&&window.location.assign(t.iamBootstrapUrl),r},inject(e){localStorage.setItem(s,e.api_token),localStorage.setItem("login","true"),localStorage.setItem(a,JSON.stringify(e))},async logout(){let e=null;try{const{data:o}=await l.get("admin/auth/sso/logout-url",{params:{return_url:c("auth/login")}});e=(o==null?void 0:o.logout_url)??null}catch{e=null}localStorage.removeItem(s),localStorage.removeItem(a),localStorage.removeItem("login"),sessionStorage.removeItem("gb_admin_iam_sso_checked");const t=n();return t.deleteRoles(),t.deleteUserInfo(),e?(window.location.assign(e),!0):!1}}});export{g as u}; +import{Y as u,y as l,a1 as c,a2 as s,a3 as a,u as n}from"./index-CuIWfDbM.js";const g=u("auth",{state:()=>({userPermission:[]}),getters:{token:()=>localStorage.getItem(s),user:()=>{const e=localStorage.getItem(a);if(!e)return null;try{return JSON.parse(e)}catch{return null}},isLoggedIn(){return!!this.token}},actions:{async login(e){const{data:t}=await l.post("admin-login",e),o=n();o.getRoles((t.roles??[]).map(i=>i.rid)),o.setSuperAdmin(t.is_super_admin);const r={...t};return delete r.roles,delete r.ut,this.inject(r),t.iamBootstrapUrl&&window.location.assign(t.iamBootstrapUrl),r},inject(e){localStorage.setItem(s,e.api_token),localStorage.setItem("login","true"),localStorage.setItem(a,JSON.stringify(e))},async logout(){let e=null;try{const{data:o}=await l.get("admin/auth/sso/logout-url",{params:{return_url:c("auth/login")}});e=(o==null?void 0:o.logout_url)??null}catch{e=null}localStorage.removeItem(s),localStorage.removeItem(a),localStorage.removeItem("login"),sessionStorage.removeItem("gb_admin_iam_sso_checked");const t=n();return t.deleteRoles(),t.deleteUserInfo(),e?(window.location.assign(e),!0):!1}}});export{g as u}; diff --git a/apps/admin-panel/dist/assets/autopromotion-Dh5EI45L.js b/apps/admin-panel/dist/assets/autopromotion-DIWf2Uyq.js similarity index 97% rename from apps/admin-panel/dist/assets/autopromotion-Dh5EI45L.js rename to apps/admin-panel/dist/assets/autopromotion-DIWf2Uyq.js index c665be4..e3542c5 100644 --- a/apps/admin-panel/dist/assets/autopromotion-Dh5EI45L.js +++ b/apps/admin-panel/dist/assets/autopromotion-DIWf2Uyq.js @@ -1 +1 @@ -import{d as k,x,y as _,a as B,w as r,H as C,m,z as f,r as n,o as N,c as s,p as V,f as z,G as v}from"./index-C9T3Vski.js";const M={class:"grid-3"},j=k({__name:"autopromotion",setup(S){const u=m(!1),l=m(!1),c=f({discount_percent:void 0}),i=f({});async function p(){var t,e;if(Object.keys(i).forEach(a=>delete i[a]),c.discount_percent===void 0||c.discount_percent===null){i.discount_percent="وارد کردن درصد تخفیف اتوماتیک الزامی است";return}try{u.value=!0,await _.post("autopromotion",{state:l.value,discount_percent:c.discount_percent}),v.success("اطلاعات با موفقیت به ثبت رسید.")}catch(a){v.error(((e=(t=a==null?void 0:a.response)==null?void 0:t.data)==null?void 0:e.message)??"خطا در ثبت اطلاعات.")}finally{u.value=!1}}return x(async()=>{try{const{data:t}=await _.get("autopromotion");l.value=!!t.state,c.discount_percent=t.discount_percent??void 0}catch(t){console.log(t)}}),(t,e)=>{const a=n("a-switch"),d=n("a-form-item"),b=n("a-input-number"),y=n("a-card"),h=n("a-spin"),g=n("a-button"),w=n("a-form");return N(),B(w,{layout:"vertical",class:"page-card",onSubmit:C(p,["prevent"])},{default:r(()=>[s(h,{spinning:u.value},{default:r(()=>[s(y,{title:"تخفیف اتوماتیک یکبار مصرف ویژه مشتریان جدید",class:"mb-base"},{default:r(()=>[V("div",M,[s(d,{label:"وضعیت تخفیف اتوماتیک"},{default:r(()=>[s(a,{checked:l.value,"onUpdate:checked":e[0]||(e[0]=o=>l.value=o),size:"default"},null,8,["checked"])]),_:1}),s(d,{label:"درصد تخفیف اتوماتیک روی محصولات","validate-status":i.discount_percent?"error":"",help:i.discount_percent},{default:r(()=>[s(b,{value:c.discount_percent,"onUpdate:value":e[1]||(e[1]=o=>c.discount_percent=o),dir:"ltr",min:0,max:100,formatter:o=>`${o}%`,parser:o=>o.replace("%",""),style:{width:"100%"}},null,8,["value","formatter","parser"])]),_:1},8,["validate-status","help"])])]),_:1})]),_:1},8,["spinning"]),s(g,{type:"primary",class:"mr-4 form-submit",onClick:p},{default:r(()=>[...e[2]||(e[2]=[z("ثبت اطلاعات",-1)])]),_:1})]),_:1})}}});export{j as default}; +import{d as k,x,y as _,a as B,w as r,H as C,m,z as f,r as n,o as N,c as s,p as V,f as z,G as v}from"./index-CuIWfDbM.js";const M={class:"grid-3"},j=k({__name:"autopromotion",setup(S){const u=m(!1),l=m(!1),c=f({discount_percent:void 0}),i=f({});async function p(){var t,e;if(Object.keys(i).forEach(a=>delete i[a]),c.discount_percent===void 0||c.discount_percent===null){i.discount_percent="وارد کردن درصد تخفیف اتوماتیک الزامی است";return}try{u.value=!0,await _.post("autopromotion",{state:l.value,discount_percent:c.discount_percent}),v.success("اطلاعات با موفقیت به ثبت رسید.")}catch(a){v.error(((e=(t=a==null?void 0:a.response)==null?void 0:t.data)==null?void 0:e.message)??"خطا در ثبت اطلاعات.")}finally{u.value=!1}}return x(async()=>{try{const{data:t}=await _.get("autopromotion");l.value=!!t.state,c.discount_percent=t.discount_percent??void 0}catch(t){console.log(t)}}),(t,e)=>{const a=n("a-switch"),d=n("a-form-item"),b=n("a-input-number"),y=n("a-card"),h=n("a-spin"),g=n("a-button"),w=n("a-form");return N(),B(w,{layout:"vertical",class:"page-card",onSubmit:C(p,["prevent"])},{default:r(()=>[s(h,{spinning:u.value},{default:r(()=>[s(y,{title:"تخفیف اتوماتیک یکبار مصرف ویژه مشتریان جدید",class:"mb-base"},{default:r(()=>[V("div",M,[s(d,{label:"وضعیت تخفیف اتوماتیک"},{default:r(()=>[s(a,{checked:l.value,"onUpdate:checked":e[0]||(e[0]=o=>l.value=o),size:"default"},null,8,["checked"])]),_:1}),s(d,{label:"درصد تخفیف اتوماتیک روی محصولات","validate-status":i.discount_percent?"error":"",help:i.discount_percent},{default:r(()=>[s(b,{value:c.discount_percent,"onUpdate:value":e[1]||(e[1]=o=>c.discount_percent=o),dir:"ltr",min:0,max:100,formatter:o=>`${o}%`,parser:o=>o.replace("%",""),style:{width:"100%"}},null,8,["value","formatter","parser"])]),_:1},8,["validate-status","help"])])]),_:1})]),_:1},8,["spinning"]),s(g,{type:"primary",class:"mr-4 form-submit",onClick:p},{default:r(()=>[...e[2]||(e[2]=[z("ثبت اطلاعات",-1)])]),_:1})]),_:1})}}});export{j as default}; diff --git a/apps/admin-panel/dist/assets/bulkCustomer.vue_vue_type_script_setup_true_lang-DEtGbCJP.js b/apps/admin-panel/dist/assets/bulkCustomer.vue_vue_type_script_setup_true_lang-DEtGbCJP.js new file mode 100644 index 0000000..1749e7e --- /dev/null +++ b/apps/admin-panel/dist/assets/bulkCustomer.vue_vue_type_script_setup_true_lang-DEtGbCJP.js @@ -0,0 +1 @@ +import{d as le,u as ae,x as te,y,a as U,h as f,w as n,H as ne,k as se,m as B,z as R,G as A,r as p,o as v,c as t,p as o,b as O,e as k,F as S,V as oe,f as b,W as ie,l as ue,s as de,t as C}from"./index-CuIWfDbM.js";import{o as re}from"./select--BgT6D7O.js";import{_ as pe}from"./BaseFormModal.vue_vue_type_style_index_0_lang-DXuLuiBZ.js";import{_ as w}from"./ImageUploadInput.vue_vue_type_script_setup_true_lang-Bb4hJ8Y2.js";import{_ as G}from"./CityTreeSelect.vue_vue_type_script_setup_true_lang-Be--_CeP.js";import{D as H}from"./DateInput-CJzwI_r_.js";import{U as me}from"./UserOutlined-aZ-mQgwc.js";import{S as ve}from"./ShopOutlined--nD1gJHu.js";import{E as fe}from"./EnvironmentOutlined-BBvjB5-8.js";import{P as _e}from"./PercentageOutlined-Cooaq8mh.js";import{S as ce}from"./SafetyCertificateOutlined-DWQ69biy.js";const be={class:"grid-4"},ge={class:"grid-4"},ye={class:"grid-2"},Ue={class:"grid-3"},we={class:"pf-layout"},he={class:"pf-main"},Ve={class:"pf-section"},xe={class:"pf-section__head"},Oe={class:"pf-section__icon"},ke={class:"pf-grid-2"},Se={class:"pf-section"},Ce={class:"pf-section__head"},Ne={class:"pf-section__icon"},ze={class:"pf-grid-2"},$e={class:"pf-section"},Be={class:"pf-section__head"},Re={class:"pf-section__icon"},je={class:"pf-side"},qe={class:"pf-section"},Ee={class:"pf-section__head"},Ie={class:"pf-section__icon"},Me={class:"pf-section"},Te={class:"pf-section__head"},Je={class:"pf-section__icon"},De={class:"pf-uploads"},Fe={class:"pf-actions"},Le={class:"pf-actions__hint"},ll=le({__name:"bulkCustomer",props:{open:{type:Boolean},id:{},asModal:{type:Boolean}},emits:["update:open","success"],setup(j,{emit:W}){const q=j,E=W,N=q.asModal===!0,K=se(),I=ue(),Q=ae(),_=N?q.id:K.params.id,g=B(!1),V=B([]),z=B([]),a=R({fname:"",lname:"",ncode:"",password:"",mobile:"",store_name:"",phone:"",pasazh_name:"",city_id:void 0,mcode:"",birth_date:"",address:"",type:void 0,reagent_id:void 0,percent:3,gram_level:void 0,national_id_image:"",business_license:"",shop_image:""}),M=[{id:2,title:"مغازه دار اپلیکیشن"},{id:3,title:"مغازه دار حضوری"},{id:4,title:"بنکدار"}],T=de(()=>Q.isSuperAdmin?M:M.filter(d=>d.id===2||d.id===Number(a.type)));function J(d,e){return re(e).includes(d)}const u=R({}),D=R({});function X(){const d={};for(const[e,i]of Object.entries(a))JSON.stringify(i)!==JSON.stringify(D[e])&&(d[e]=i);return d}async function F(d){var i;if(!d)return;let e=(i=V.value.find(s=>s.id===d))==null?void 0:i.percent;if(!Number(e))try{const{data:s}=await y.get(`cities/get-percent-aux/${d}`);e=s}catch(s){console.log(s);return}a.percent=e==null?void 0:Number(e)}function Y(){return Object.keys(u).forEach(d=>delete u[d]),a.fname||(u.fname="لطفا مقدار را وارد کنید"),a.lname||(u.lname="لطفا مقدار را وارد کنید"),a.mobile||(u.mobile="لطفا مقدار را وارد کنید"),(a.percent===void 0||a.percent===null||a.percent==="")&&(u.percent="لطفا مقدار را وارد کنید"),Object.keys(u).length===0}async function $(){var d,e,i,s,h,c;if(Y())try{g.value=!0;const r=_?X():{...a},m={...r,id:_??null,national_code:a.ncode};(!_||"fname"in r||"lname"in r)&&(m.name=`${a.fname} ${a.lname}`.trim()),_?await y.put(`customer/${_}`,m):await y.post("customer/create",m),A.info("اطلاعات با موفقیت به ثبت رسید."),N?(E("success"),E("update:open",!1)):I.go(-1)}catch(r){const m=(s=(i=(e=(d=r==null?void 0:r.response)==null?void 0:d.data)==null?void 0:e.errors)==null?void 0:i.mobile)==null?void 0:s[0];A.error(m??((c=(h=r==null?void 0:r.response)==null?void 0:h.data)==null?void 0:c.message)??"خطا در ثبت اطلاعات.")}finally{g.value=!1}}return te(async()=>{var d;try{const{data:e}=await y.get("query/reagent");z.value=e}catch(e){console.log(e)}try{const{data:e}=await y.post("cities/list");V.value=e.rows??[]}catch(e){console.log(e)}if(_)try{const{data:e}=await y.get(`customer/${_}`);Object.assign(a,{fname:e.fname??"",lname:e.lname??"",ncode:e.national_code??"",mobile:e.mobile??"",city_id:e.city_id??void 0,address:e.address??"",percent:e.percent===null||e.percent===void 0?void 0:Number(e.percent),gram_level:e.gram_level??void 0,reagent_id:((d=e.reagent)==null?void 0:d.id)??void 0,store_name:e.store_name??"",pasazh_name:e.pasazh_name??"",mcode:e.mcode??"",birth_date:e.birth_date??"",phone:e.phone??"",type:e.type??void 0,national_id_image:e.national_id_image??"",business_license:e.business_license??"",shop_image:e.shop_image??""}),Object.assign(D,JSON.parse(JSON.stringify(a)))}catch(e){console.log(e)}}),(d,e)=>{const i=p("a-input"),s=p("a-form-item"),h=p("a-input-password"),c=p("a-card"),r=p("a-select-option"),m=p("a-select"),x=p("a-input-number"),L=p("a-textarea"),P=p("a-button"),Z=p("a-spin"),ee=p("a-form");return N?(v(),U(pe,{key:0,open:!!j.open,id:f(_),"add-title":"افزودن مشتری عمده","edit-title":"ویرایش مشتری عمده",loading:g.value,submitting:g.value,width:"lg","onUpdate:open":e[19]||(e[19]=l=>d.$emit("update:open",l)),onSubmit:$},{default:n(()=>[t(c,{title:"اطلاعات پایه",class:"mb-base"},{default:n(()=>[o("div",be,[t(s,{label:"نام","validate-status":u.fname?"error":"",help:u.fname},{default:n(()=>[t(i,{value:a.fname,"onUpdate:value":e[0]||(e[0]=l=>a.fname=l)},null,8,["value"])]),_:1},8,["validate-status","help"]),t(s,{label:"نام خانوادگی","validate-status":u.lname?"error":"",help:u.lname},{default:n(()=>[t(i,{value:a.lname,"onUpdate:value":e[1]||(e[1]=l=>a.lname=l)},null,8,["value"])]),_:1},8,["validate-status","help"]),t(s,{label:"کد ملی"},{default:n(()=>[t(i,{value:a.ncode,"onUpdate:value":e[2]||(e[2]=l=>a.ncode=l)},null,8,["value"])]),_:1}),t(s,{label:"شماره تلفن همراه","validate-status":u.mobile?"error":"",help:u.mobile},{default:n(()=>[t(i,{value:a.mobile,"onUpdate:value":e[3]||(e[3]=l=>a.mobile=l)},null,8,["value"])]),_:1},8,["validate-status","help"]),t(s,{label:"رمز عبور"},{default:n(()=>[t(h,{value:a.password,"onUpdate:value":e[4]||(e[4]=l=>a.password=l)},null,8,["value"])]),_:1}),t(s,{label:"تلفن ثابت"},{default:n(()=>[t(i,{value:a.phone,"onUpdate:value":e[5]||(e[5]=l=>a.phone=l)},null,8,["value"])]),_:1})])]),_:1}),t(c,{title:"اطلاعات تجاری",class:"mb-base"},{default:n(()=>[o("div",ge,[t(s,{label:"نوع کاربری"},{default:n(()=>[t(m,{value:a.type,"onUpdate:value":e[6]||(e[6]=l=>a.type=l),"show-search":"","filter-option":J,style:{width:"100%",direction:"rtl !important"}},{default:n(()=>[(v(!0),O(S,null,k(T.value,l=>(v(),U(r,{key:l.id,value:l.id},{default:n(()=>[b(C(l.title),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1}),t(s,{label:"نام مغازه"},{default:n(()=>[t(i,{value:a.store_name,"onUpdate:value":e[7]||(e[7]=l=>a.store_name=l)},null,8,["value"])]),_:1}),t(s,{label:"نام پاساژ"},{default:n(()=>[t(i,{value:a.pasazh_name,"onUpdate:value":e[8]||(e[8]=l=>a.pasazh_name=l)},null,8,["value"])]),_:1}),t(s,{label:"کد مشتری"},{default:n(()=>[t(i,{value:a.mcode,"onUpdate:value":e[9]||(e[9]=l=>a.mcode=l)},null,8,["value"])]),_:1}),t(H,{"model-value":a.birth_date||void 0,label:"تاریخ تولد","onUpdate:modelValue":e[10]||(e[10]=l=>a.birth_date=l??"")},null,8,["model-value"]),t(s,{label:"کارشناس فروش"},{default:n(()=>[t(m,{value:a.reagent_id,"onUpdate:value":e[11]||(e[11]=l=>a.reagent_id=l),"allow-clear":"",placeholder:"انتخاب کنید"},{default:n(()=>[(v(!0),O(S,null,k(z.value,l=>(v(),U(r,{key:l.id,value:l.id},{default:n(()=>[b(C(l.name),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1}),t(s,{label:"درصد","validate-status":u.percent?"error":"",help:u.percent},{default:n(()=>[t(x,{value:a.percent,"onUpdate:value":e[12]||(e[12]=l=>a.percent=l),class:"w-full"},null,8,["value"])]),_:1},8,["validate-status","help"]),t(s,{label:"سقف اعتبار (برحسب گرم)"},{default:n(()=>[t(x,{value:a.gram_level,"onUpdate:value":e[13]||(e[13]=l=>a.gram_level=l),class:"w-full"},null,8,["value"])]),_:1})])]),_:1}),t(c,{title:"اطلاعات تکمیلی",class:"mb-base"},{default:n(()=>[o("div",ye,[t(s,{label:"شهر"},{default:n(()=>[t(G,{value:a.city_id,"onUpdate:value":e[14]||(e[14]=l=>a.city_id=l),cities:V.value,onChange:F},null,8,["value","cities"])]),_:1}),t(s,{label:"آدرس"},{default:n(()=>[t(L,{value:a.address,"onUpdate:value":e[15]||(e[15]=l=>a.address=l),"auto-size":{minRows:2,maxRows:4}},null,8,["value"])]),_:1})])]),_:1}),t(c,{title:"مدارک",class:"mb-base"},{default:n(()=>[o("div",Ue,[t(s,{label:"عکس کارت ملی"},{default:n(()=>[t(w,{modelValue:a.national_id_image,"onUpdate:modelValue":e[16]||(e[16]=l=>a.national_id_image=l),purpose:"customer.nationalId",placeholder:"عکس"},null,8,["modelValue"])]),_:1}),t(s,{label:"عکس جواز کسب"},{default:n(()=>[t(w,{modelValue:a.business_license,"onUpdate:modelValue":e[17]||(e[17]=l=>a.business_license=l),purpose:"customer.businessLicense",placeholder:"عکس"},null,8,["modelValue"])]),_:1}),t(s,{label:"عکس سردر مغازه"},{default:n(()=>[t(w,{modelValue:a.shop_image,"onUpdate:modelValue":e[18]||(e[18]=l=>a.shop_image=l),purpose:"customer.shop",placeholder:"عکس"},null,8,["modelValue"])]),_:1})])]),_:1})]),_:1},8,["open","id","loading","submitting"])):(v(),U(ee,{key:1,layout:"vertical",model:a,class:"pf-form",onSubmit:ne($,["prevent"])},{default:n(()=>[t(Z,{spinning:g.value},{default:n(()=>[o("div",we,[o("div",he,[o("section",Ve,[o("div",xe,[o("span",Oe,[t(f(me))]),e[40]||(e[40]=o("div",null,[o("h3",null,"اطلاعات پایه"),o("p",null,"مشخصات هویتی و اطلاعات ورود مشتری")],-1))]),o("div",ke,[t(s,{label:"نام",required:"","validate-status":u.fname?"error":"",help:u.fname},{default:n(()=>[t(i,{value:a.fname,"onUpdate:value":e[20]||(e[20]=l=>a.fname=l)},null,8,["value"])]),_:1},8,["validate-status","help"]),t(s,{label:"نام خانوادگی",required:"","validate-status":u.lname?"error":"",help:u.lname},{default:n(()=>[t(i,{value:a.lname,"onUpdate:value":e[21]||(e[21]=l=>a.lname=l)},null,8,["value"])]),_:1},8,["validate-status","help"]),t(s,{label:"کد ملی"},{default:n(()=>[t(i,{value:a.ncode,"onUpdate:value":e[22]||(e[22]=l=>a.ncode=l),class:"ltr-input",inputmode:"numeric"},null,8,["value"])]),_:1}),t(H,{"model-value":a.birth_date||void 0,label:"تاریخ تولد","onUpdate:modelValue":e[23]||(e[23]=l=>a.birth_date=l??"")},null,8,["model-value"]),t(s,{label:"شماره تلفن همراه",required:"","validate-status":u.mobile?"error":"",help:u.mobile},{default:n(()=>[t(i,{value:a.mobile,"onUpdate:value":e[24]||(e[24]=l=>a.mobile=l),class:"ltr-input",inputmode:"tel",placeholder:"09xxxxxxxxx"},null,8,["value"])]),_:1},8,["validate-status","help"]),t(s,{label:"رمز عبور"},{default:n(()=>[t(h,{value:a.password,"onUpdate:value":e[25]||(e[25]=l=>a.password=l)},null,8,["value"])]),_:1}),t(s,{label:"تلفن ثابت",class:"mb-0"},{default:n(()=>[t(i,{value:a.phone,"onUpdate:value":e[26]||(e[26]=l=>a.phone=l),class:"ltr-input",inputmode:"tel"},null,8,["value"])]),_:1})])]),o("section",Se,[o("div",Ce,[o("span",Ne,[t(f(ve))]),e[41]||(e[41]=o("div",null,[o("h3",null,"اطلاعات تجاری"),o("p",null,"نوع کاربری و مشخصات فروشگاه")],-1))]),o("div",ze,[t(s,{label:"نوع کاربری"},{default:n(()=>[t(m,{value:a.type,"onUpdate:value":e[27]||(e[27]=l=>a.type=l),"show-search":"",placeholder:"انتخاب کنید","filter-option":J,style:{width:"100%",direction:"rtl !important"}},{default:n(()=>[(v(!0),O(S,null,k(T.value,l=>(v(),U(r,{key:l.id,value:l.id},{default:n(()=>[b(C(l.title),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1}),t(s,{label:"کد مشتری"},{default:n(()=>[t(i,{value:a.mcode,"onUpdate:value":e[28]||(e[28]=l=>a.mcode=l)},null,8,["value"])]),_:1}),t(s,{label:"نام مغازه",class:"mb-0"},{default:n(()=>[t(i,{value:a.store_name,"onUpdate:value":e[29]||(e[29]=l=>a.store_name=l)},null,8,["value"])]),_:1}),t(s,{label:"نام پاساژ",class:"mb-0"},{default:n(()=>[t(i,{value:a.pasazh_name,"onUpdate:value":e[30]||(e[30]=l=>a.pasazh_name=l)},null,8,["value"])]),_:1})])]),o("section",$e,[o("div",Be,[o("span",Re,[t(f(fe))]),e[42]||(e[42]=o("div",null,[o("h3",null,"آدرس"),o("p",null,"انتخاب شهر، درصد را بر اساس همان شهر پر می‌کند")],-1))]),t(s,{label:"شهر"},{default:n(()=>[t(G,{value:a.city_id,"onUpdate:value":e[31]||(e[31]=l=>a.city_id=l),cities:V.value,onChange:F},null,8,["value","cities"])]),_:1}),t(s,{label:"آدرس",class:"mb-0"},{default:n(()=>[t(L,{value:a.address,"onUpdate:value":e[32]||(e[32]=l=>a.address=l),"auto-size":{minRows:3,maxRows:5}},null,8,["value"])]),_:1})])]),o("aside",je,[o("section",qe,[o("div",Ee,[o("span",Ie,[t(f(_e))]),e[43]||(e[43]=o("div",null,[o("h3",null,"کارشناس و اعتبار"),o("p",null,"کارشناس فروش، درصد و سقف اعتبار")],-1))]),t(s,{label:"کارشناس فروش"},{default:n(()=>[t(m,{value:a.reagent_id,"onUpdate:value":e[33]||(e[33]=l=>a.reagent_id=l),"allow-clear":"","show-search":"","option-filter-prop":"label",placeholder:"انتخاب کنید"},{default:n(()=>[(v(!0),O(S,null,k(z.value,l=>(v(),U(r,{key:l.id,value:l.id,label:l.name},{default:n(()=>[b(C(l.name),1)]),_:2},1032,["value","label"]))),128))]),_:1},8,["value"])]),_:1}),t(s,{label:"درصد",required:"","validate-status":u.percent?"error":"",help:u.percent},{default:n(()=>[t(x,{value:a.percent,"onUpdate:value":e[34]||(e[34]=l=>a.percent=l),class:"w-full","addon-after":"٪"},null,8,["value"])]),_:1},8,["validate-status","help"]),t(s,{label:"سقف اعتبار",class:"mb-0"},{default:n(()=>[t(x,{value:a.gram_level,"onUpdate:value":e[35]||(e[35]=l=>a.gram_level=l),class:"w-full","addon-after":"گرم"},null,8,["value"])]),_:1})]),o("section",Me,[o("div",Te,[o("span",Je,[t(f(ce))]),e[44]||(e[44]=o("div",null,[o("h3",null,"مدارک"),o("p",null,"تصویر مدارک هویتی و فروشگاه")],-1))]),o("div",De,[t(s,{label:"کارت ملی",class:"mb-0"},{default:n(()=>[t(w,{modelValue:a.national_id_image,"onUpdate:modelValue":e[36]||(e[36]=l=>a.national_id_image=l),purpose:"customer.nationalId",placeholder:"عکس"},null,8,["modelValue"])]),_:1}),t(s,{label:"جواز کسب",class:"mb-0"},{default:n(()=>[t(w,{modelValue:a.business_license,"onUpdate:modelValue":e[37]||(e[37]=l=>a.business_license=l),purpose:"customer.businessLicense",placeholder:"عکس"},null,8,["modelValue"])]),_:1}),t(s,{label:"سردر مغازه",class:"mb-0"},{default:n(()=>[t(w,{modelValue:a.shop_image,"onUpdate:modelValue":e[38]||(e[38]=l=>a.shop_image=l),purpose:"customer.shop",placeholder:"عکس"},null,8,["modelValue"])]),_:1})])])])]),o("div",Fe,[o("span",Le,[t(f(oe)),e[45]||(e[45]=b(" فیلدهای ستاره‌دار الزامی هستند.",-1))]),t(P,{onClick:e[39]||(e[39]=l=>f(I).go(-1))},{default:n(()=>[...e[46]||(e[46]=[b("انصراف",-1)])]),_:1}),t(P,{type:"primary",class:"form-submit",loading:g.value,onClick:$},{icon:n(()=>[t(f(ie))]),default:n(()=>[e[47]||(e[47]=b(" ثبت اطلاعات ",-1))]),_:1},8,["loading"])])]),_:1},8,["spinning"])]),_:1},8,["model"]))}}});export{ll as _}; diff --git a/apps/admin-panel/dist/assets/bulkCustomer.vue_vue_type_script_setup_true_lang-DMrGU5vL.js b/apps/admin-panel/dist/assets/bulkCustomer.vue_vue_type_script_setup_true_lang-DMrGU5vL.js deleted file mode 100644 index 1c20c45..0000000 --- a/apps/admin-panel/dist/assets/bulkCustomer.vue_vue_type_script_setup_true_lang-DMrGU5vL.js +++ /dev/null @@ -1 +0,0 @@ -import{d as le,u as ae,x as te,y,a as U,h as f,w as n,H as ne,k as se,m as B,z as R,G as A,r as p,o as v,c as t,p as o,b as O,e as k,F as S,V as oe,f as b,W as ie,l as ue,s as de,t as C}from"./index-C9T3Vski.js";import{_ as re}from"./BaseFormModal.vue_vue_type_style_index_0_lang-Du4lPDHl.js";import{_ as w}from"./ImageUploadInput.vue_vue_type_script_setup_true_lang-Bjo3vw78.js";import{_ as G}from"./CityTreeSelect.vue_vue_type_script_setup_true_lang-82fzpZxR.js";import{D as H}from"./DateInput-CCBYpdHy.js";import{U as pe}from"./UserOutlined-Csu4xHRr.js";import{S as me}from"./ShopOutlined-BBtTJF4e.js";import{E as ve}from"./EnvironmentOutlined-D8YNH9-a.js";import{P as fe}from"./PercentageOutlined-CxUloK5J.js";import{S as _e}from"./SafetyCertificateOutlined-DS5dQeR2.js";const ce={class:"grid-4"},be={class:"grid-4"},ge={class:"grid-2"},ye={class:"grid-3"},Ue={class:"pf-layout"},we={class:"pf-main"},he={class:"pf-section"},Ve={class:"pf-section__head"},xe={class:"pf-section__icon"},Oe={class:"pf-grid-2"},ke={class:"pf-section"},Se={class:"pf-section__head"},Ce={class:"pf-section__icon"},Ne={class:"pf-grid-2"},ze={class:"pf-section"},$e={class:"pf-section__head"},Be={class:"pf-section__icon"},Re={class:"pf-side"},je={class:"pf-section"},qe={class:"pf-section__head"},Ee={class:"pf-section__icon"},Ie={class:"pf-section"},Me={class:"pf-section__head"},Je={class:"pf-section__icon"},Te={class:"pf-uploads"},De={class:"pf-actions"},Fe={class:"pf-actions__hint"},Ze=le({__name:"bulkCustomer",props:{open:{type:Boolean},id:{},asModal:{type:Boolean}},emits:["update:open","success"],setup(j,{emit:W}){const q=j,E=W,N=q.asModal===!0,K=se(),I=ue(),Q=ae(),_=N?q.id:K.params.id,g=B(!1),V=B([]),z=B([]),a=R({fname:"",lname:"",ncode:"",password:"",mobile:"",store_name:"",phone:"",pasazh_name:"",city_id:void 0,mcode:"",birth_date:"",address:"",type:void 0,reagent_id:void 0,percent:3,gram_level:void 0,national_id_image:"",business_license:"",shop_image:""}),M=[{id:2,title:"مغازه دار اپلیکیشن"},{id:3,title:"مغازه دار حضوری"},{id:4,title:"بنکدار"}],J=de(()=>Q.isSuperAdmin?M:M.filter(d=>d.id===2||d.id===Number(a.type)));function T(d,e){var i,s;return String(((s=(i=e==null?void 0:e.children)==null?void 0:i[0])==null?void 0:s.children)??"").includes(d)}const u=R({}),D=R({});function X(){const d={};for(const[e,i]of Object.entries(a))JSON.stringify(i)!==JSON.stringify(D[e])&&(d[e]=i);return d}async function F(d){var i;if(!d)return;let e=(i=V.value.find(s=>s.id===d))==null?void 0:i.percent;if(!Number(e))try{const{data:s}=await y.get(`cities/get-percent-aux/${d}`);e=s}catch(s){console.log(s);return}a.percent=e==null?void 0:Number(e)}function Y(){return Object.keys(u).forEach(d=>delete u[d]),a.fname||(u.fname="لطفا مقدار را وارد کنید"),a.lname||(u.lname="لطفا مقدار را وارد کنید"),a.mobile||(u.mobile="لطفا مقدار را وارد کنید"),(a.percent===void 0||a.percent===null||a.percent==="")&&(u.percent="لطفا مقدار را وارد کنید"),Object.keys(u).length===0}async function $(){var d,e,i,s,h,c;if(Y())try{g.value=!0;const r=_?X():{...a},m={...r,id:_??null,national_code:a.ncode};(!_||"fname"in r||"lname"in r)&&(m.name=`${a.fname} ${a.lname}`.trim()),_?await y.put(`customer/${_}`,m):await y.post("customer/create",m),A.info("اطلاعات با موفقیت به ثبت رسید."),N?(E("success"),E("update:open",!1)):I.go(-1)}catch(r){const m=(s=(i=(e=(d=r==null?void 0:r.response)==null?void 0:d.data)==null?void 0:e.errors)==null?void 0:i.mobile)==null?void 0:s[0];A.error(m??((c=(h=r==null?void 0:r.response)==null?void 0:h.data)==null?void 0:c.message)??"خطا در ثبت اطلاعات.")}finally{g.value=!1}}return te(async()=>{var d;try{const{data:e}=await y.get("query/reagent");z.value=e}catch(e){console.log(e)}try{const{data:e}=await y.post("cities/list");V.value=e.rows??[]}catch(e){console.log(e)}if(_)try{const{data:e}=await y.get(`customer/${_}`);Object.assign(a,{fname:e.fname??"",lname:e.lname??"",ncode:e.national_code??"",mobile:e.mobile??"",city_id:e.city_id??void 0,address:e.address??"",percent:e.percent===null||e.percent===void 0?void 0:Number(e.percent),gram_level:e.gram_level??void 0,reagent_id:((d=e.reagent)==null?void 0:d.id)??void 0,store_name:e.store_name??"",pasazh_name:e.pasazh_name??"",mcode:e.mcode??"",birth_date:e.birth_date??"",phone:e.phone??"",type:e.type??void 0,national_id_image:e.national_id_image??"",business_license:e.business_license??"",shop_image:e.shop_image??""}),Object.assign(D,JSON.parse(JSON.stringify(a)))}catch(e){console.log(e)}}),(d,e)=>{const i=p("a-input"),s=p("a-form-item"),h=p("a-input-password"),c=p("a-card"),r=p("a-select-option"),m=p("a-select"),x=p("a-input-number"),L=p("a-textarea"),P=p("a-button"),Z=p("a-spin"),ee=p("a-form");return N?(v(),U(re,{key:0,open:!!j.open,id:f(_),"add-title":"افزودن مشتری عمده","edit-title":"ویرایش مشتری عمده",loading:g.value,submitting:g.value,width:"lg","onUpdate:open":e[19]||(e[19]=l=>d.$emit("update:open",l)),onSubmit:$},{default:n(()=>[t(c,{title:"اطلاعات پایه",class:"mb-base"},{default:n(()=>[o("div",ce,[t(s,{label:"نام","validate-status":u.fname?"error":"",help:u.fname},{default:n(()=>[t(i,{value:a.fname,"onUpdate:value":e[0]||(e[0]=l=>a.fname=l)},null,8,["value"])]),_:1},8,["validate-status","help"]),t(s,{label:"نام خانوادگی","validate-status":u.lname?"error":"",help:u.lname},{default:n(()=>[t(i,{value:a.lname,"onUpdate:value":e[1]||(e[1]=l=>a.lname=l)},null,8,["value"])]),_:1},8,["validate-status","help"]),t(s,{label:"کد ملی"},{default:n(()=>[t(i,{value:a.ncode,"onUpdate:value":e[2]||(e[2]=l=>a.ncode=l)},null,8,["value"])]),_:1}),t(s,{label:"شماره تلفن همراه","validate-status":u.mobile?"error":"",help:u.mobile},{default:n(()=>[t(i,{value:a.mobile,"onUpdate:value":e[3]||(e[3]=l=>a.mobile=l)},null,8,["value"])]),_:1},8,["validate-status","help"]),t(s,{label:"رمز عبور"},{default:n(()=>[t(h,{value:a.password,"onUpdate:value":e[4]||(e[4]=l=>a.password=l)},null,8,["value"])]),_:1}),t(s,{label:"تلفن ثابت"},{default:n(()=>[t(i,{value:a.phone,"onUpdate:value":e[5]||(e[5]=l=>a.phone=l)},null,8,["value"])]),_:1})])]),_:1}),t(c,{title:"اطلاعات تجاری",class:"mb-base"},{default:n(()=>[o("div",be,[t(s,{label:"نوع کاربری"},{default:n(()=>[t(m,{value:a.type,"onUpdate:value":e[6]||(e[6]=l=>a.type=l),"show-search":"","filter-option":T,style:{width:"100%",direction:"rtl !important"}},{default:n(()=>[(v(!0),O(S,null,k(J.value,l=>(v(),U(r,{key:l.id,value:l.id},{default:n(()=>[b(C(l.title),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1}),t(s,{label:"نام مغازه"},{default:n(()=>[t(i,{value:a.store_name,"onUpdate:value":e[7]||(e[7]=l=>a.store_name=l)},null,8,["value"])]),_:1}),t(s,{label:"نام پاساژ"},{default:n(()=>[t(i,{value:a.pasazh_name,"onUpdate:value":e[8]||(e[8]=l=>a.pasazh_name=l)},null,8,["value"])]),_:1}),t(s,{label:"کد مشتری"},{default:n(()=>[t(i,{value:a.mcode,"onUpdate:value":e[9]||(e[9]=l=>a.mcode=l)},null,8,["value"])]),_:1}),t(H,{"model-value":a.birth_date||void 0,label:"تاریخ تولد","onUpdate:modelValue":e[10]||(e[10]=l=>a.birth_date=l??"")},null,8,["model-value"]),t(s,{label:"کارشناس فروش"},{default:n(()=>[t(m,{value:a.reagent_id,"onUpdate:value":e[11]||(e[11]=l=>a.reagent_id=l),"allow-clear":"",placeholder:"انتخاب کنید"},{default:n(()=>[(v(!0),O(S,null,k(z.value,l=>(v(),U(r,{key:l.id,value:l.id},{default:n(()=>[b(C(l.name),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1}),t(s,{label:"درصد","validate-status":u.percent?"error":"",help:u.percent},{default:n(()=>[t(x,{value:a.percent,"onUpdate:value":e[12]||(e[12]=l=>a.percent=l),class:"w-full"},null,8,["value"])]),_:1},8,["validate-status","help"]),t(s,{label:"سقف اعتبار (برحسب گرم)"},{default:n(()=>[t(x,{value:a.gram_level,"onUpdate:value":e[13]||(e[13]=l=>a.gram_level=l),class:"w-full"},null,8,["value"])]),_:1})])]),_:1}),t(c,{title:"اطلاعات تکمیلی",class:"mb-base"},{default:n(()=>[o("div",ge,[t(s,{label:"شهر"},{default:n(()=>[t(G,{value:a.city_id,"onUpdate:value":e[14]||(e[14]=l=>a.city_id=l),cities:V.value,onChange:F},null,8,["value","cities"])]),_:1}),t(s,{label:"آدرس"},{default:n(()=>[t(L,{value:a.address,"onUpdate:value":e[15]||(e[15]=l=>a.address=l),"auto-size":{minRows:2,maxRows:4}},null,8,["value"])]),_:1})])]),_:1}),t(c,{title:"مدارک",class:"mb-base"},{default:n(()=>[o("div",ye,[t(s,{label:"عکس کارت ملی"},{default:n(()=>[t(w,{modelValue:a.national_id_image,"onUpdate:modelValue":e[16]||(e[16]=l=>a.national_id_image=l),purpose:"customer.nationalId",placeholder:"عکس"},null,8,["modelValue"])]),_:1}),t(s,{label:"عکس جواز کسب"},{default:n(()=>[t(w,{modelValue:a.business_license,"onUpdate:modelValue":e[17]||(e[17]=l=>a.business_license=l),purpose:"customer.businessLicense",placeholder:"عکس"},null,8,["modelValue"])]),_:1}),t(s,{label:"عکس سردر مغازه"},{default:n(()=>[t(w,{modelValue:a.shop_image,"onUpdate:modelValue":e[18]||(e[18]=l=>a.shop_image=l),purpose:"customer.shop",placeholder:"عکس"},null,8,["modelValue"])]),_:1})])]),_:1})]),_:1},8,["open","id","loading","submitting"])):(v(),U(ee,{key:1,layout:"vertical",model:a,class:"pf-form",onSubmit:ne($,["prevent"])},{default:n(()=>[t(Z,{spinning:g.value},{default:n(()=>[o("div",Ue,[o("div",we,[o("section",he,[o("div",Ve,[o("span",xe,[t(f(pe))]),e[40]||(e[40]=o("div",null,[o("h3",null,"اطلاعات پایه"),o("p",null,"مشخصات هویتی و اطلاعات ورود مشتری")],-1))]),o("div",Oe,[t(s,{label:"نام",required:"","validate-status":u.fname?"error":"",help:u.fname},{default:n(()=>[t(i,{value:a.fname,"onUpdate:value":e[20]||(e[20]=l=>a.fname=l)},null,8,["value"])]),_:1},8,["validate-status","help"]),t(s,{label:"نام خانوادگی",required:"","validate-status":u.lname?"error":"",help:u.lname},{default:n(()=>[t(i,{value:a.lname,"onUpdate:value":e[21]||(e[21]=l=>a.lname=l)},null,8,["value"])]),_:1},8,["validate-status","help"]),t(s,{label:"کد ملی"},{default:n(()=>[t(i,{value:a.ncode,"onUpdate:value":e[22]||(e[22]=l=>a.ncode=l),class:"ltr-input",inputmode:"numeric"},null,8,["value"])]),_:1}),t(H,{"model-value":a.birth_date||void 0,label:"تاریخ تولد","onUpdate:modelValue":e[23]||(e[23]=l=>a.birth_date=l??"")},null,8,["model-value"]),t(s,{label:"شماره تلفن همراه",required:"","validate-status":u.mobile?"error":"",help:u.mobile},{default:n(()=>[t(i,{value:a.mobile,"onUpdate:value":e[24]||(e[24]=l=>a.mobile=l),class:"ltr-input",inputmode:"tel",placeholder:"09xxxxxxxxx"},null,8,["value"])]),_:1},8,["validate-status","help"]),t(s,{label:"رمز عبور"},{default:n(()=>[t(h,{value:a.password,"onUpdate:value":e[25]||(e[25]=l=>a.password=l)},null,8,["value"])]),_:1}),t(s,{label:"تلفن ثابت",class:"mb-0"},{default:n(()=>[t(i,{value:a.phone,"onUpdate:value":e[26]||(e[26]=l=>a.phone=l),class:"ltr-input",inputmode:"tel"},null,8,["value"])]),_:1})])]),o("section",ke,[o("div",Se,[o("span",Ce,[t(f(me))]),e[41]||(e[41]=o("div",null,[o("h3",null,"اطلاعات تجاری"),o("p",null,"نوع کاربری و مشخصات فروشگاه")],-1))]),o("div",Ne,[t(s,{label:"نوع کاربری"},{default:n(()=>[t(m,{value:a.type,"onUpdate:value":e[27]||(e[27]=l=>a.type=l),"show-search":"",placeholder:"انتخاب کنید","filter-option":T,style:{width:"100%",direction:"rtl !important"}},{default:n(()=>[(v(!0),O(S,null,k(J.value,l=>(v(),U(r,{key:l.id,value:l.id},{default:n(()=>[b(C(l.title),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1}),t(s,{label:"کد مشتری"},{default:n(()=>[t(i,{value:a.mcode,"onUpdate:value":e[28]||(e[28]=l=>a.mcode=l)},null,8,["value"])]),_:1}),t(s,{label:"نام مغازه",class:"mb-0"},{default:n(()=>[t(i,{value:a.store_name,"onUpdate:value":e[29]||(e[29]=l=>a.store_name=l)},null,8,["value"])]),_:1}),t(s,{label:"نام پاساژ",class:"mb-0"},{default:n(()=>[t(i,{value:a.pasazh_name,"onUpdate:value":e[30]||(e[30]=l=>a.pasazh_name=l)},null,8,["value"])]),_:1})])]),o("section",ze,[o("div",$e,[o("span",Be,[t(f(ve))]),e[42]||(e[42]=o("div",null,[o("h3",null,"آدرس"),o("p",null,"انتخاب شهر، درصد را بر اساس همان شهر پر می‌کند")],-1))]),t(s,{label:"شهر"},{default:n(()=>[t(G,{value:a.city_id,"onUpdate:value":e[31]||(e[31]=l=>a.city_id=l),cities:V.value,onChange:F},null,8,["value","cities"])]),_:1}),t(s,{label:"آدرس",class:"mb-0"},{default:n(()=>[t(L,{value:a.address,"onUpdate:value":e[32]||(e[32]=l=>a.address=l),"auto-size":{minRows:3,maxRows:5}},null,8,["value"])]),_:1})])]),o("aside",Re,[o("section",je,[o("div",qe,[o("span",Ee,[t(f(fe))]),e[43]||(e[43]=o("div",null,[o("h3",null,"کارشناس و اعتبار"),o("p",null,"کارشناس فروش، درصد و سقف اعتبار")],-1))]),t(s,{label:"کارشناس فروش"},{default:n(()=>[t(m,{value:a.reagent_id,"onUpdate:value":e[33]||(e[33]=l=>a.reagent_id=l),"allow-clear":"","show-search":"","option-filter-prop":"label",placeholder:"انتخاب کنید"},{default:n(()=>[(v(!0),O(S,null,k(z.value,l=>(v(),U(r,{key:l.id,value:l.id,label:l.name},{default:n(()=>[b(C(l.name),1)]),_:2},1032,["value","label"]))),128))]),_:1},8,["value"])]),_:1}),t(s,{label:"درصد",required:"","validate-status":u.percent?"error":"",help:u.percent},{default:n(()=>[t(x,{value:a.percent,"onUpdate:value":e[34]||(e[34]=l=>a.percent=l),class:"w-full","addon-after":"٪"},null,8,["value"])]),_:1},8,["validate-status","help"]),t(s,{label:"سقف اعتبار",class:"mb-0"},{default:n(()=>[t(x,{value:a.gram_level,"onUpdate:value":e[35]||(e[35]=l=>a.gram_level=l),class:"w-full","addon-after":"گرم"},null,8,["value"])]),_:1})]),o("section",Ie,[o("div",Me,[o("span",Je,[t(f(_e))]),e[44]||(e[44]=o("div",null,[o("h3",null,"مدارک"),o("p",null,"تصویر مدارک هویتی و فروشگاه")],-1))]),o("div",Te,[t(s,{label:"کارت ملی",class:"mb-0"},{default:n(()=>[t(w,{modelValue:a.national_id_image,"onUpdate:modelValue":e[36]||(e[36]=l=>a.national_id_image=l),purpose:"customer.nationalId",placeholder:"عکس"},null,8,["modelValue"])]),_:1}),t(s,{label:"جواز کسب",class:"mb-0"},{default:n(()=>[t(w,{modelValue:a.business_license,"onUpdate:modelValue":e[37]||(e[37]=l=>a.business_license=l),purpose:"customer.businessLicense",placeholder:"عکس"},null,8,["modelValue"])]),_:1}),t(s,{label:"سردر مغازه",class:"mb-0"},{default:n(()=>[t(w,{modelValue:a.shop_image,"onUpdate:modelValue":e[38]||(e[38]=l=>a.shop_image=l),purpose:"customer.shop",placeholder:"عکس"},null,8,["modelValue"])]),_:1})])])])]),o("div",De,[o("span",Fe,[t(f(oe)),e[45]||(e[45]=b(" فیلدهای ستاره‌دار الزامی هستند.",-1))]),t(P,{onClick:e[39]||(e[39]=l=>f(I).go(-1))},{default:n(()=>[...e[46]||(e[46]=[b("انصراف",-1)])]),_:1}),t(P,{type:"primary",class:"form-submit",loading:g.value,onClick:$},{icon:n(()=>[t(f(ie))]),default:n(()=>[e[47]||(e[47]=b(" ثبت اطلاعات ",-1))]),_:1},8,["loading"])])]),_:1},8,["spinning"])]),_:1},8,["model"]))}}});export{Ze as _}; diff --git a/apps/admin-panel/dist/assets/cityList-B-_VsYqo.js b/apps/admin-panel/dist/assets/cityList-Di6FAlpW.js similarity index 86% rename from apps/admin-panel/dist/assets/cityList-B-_VsYqo.js rename to apps/admin-panel/dist/assets/cityList-Di6FAlpW.js index d0d0fdc..3825850 100644 --- a/apps/admin-panel/dist/assets/cityList-B-_VsYqo.js +++ b/apps/admin-panel/dist/assets/cityList-Di6FAlpW.js @@ -1 +1 @@ -import{a as z,b as c,X as A}from"./model-B4TWAN58.js";import{_ as G}from"./ListPageHeader.vue_vue_type_script_setup_true_lang-BDf2BWcO.js";import{_ as H}from"./createCity.vue_vue_type_script_setup_true_lang-CTOztHNx.js";import{d as K,u as R,b as j,c as a,w as o,r as s,o as k,h as x,a as U,E as q,i as N,D as F,p as I,f as S,t as C,m as d,z as J,y as T,G as B}from"./index-C9T3Vski.js";import{u as Q}from"./useDeleteHandler-D_sYZzLs.js";import{_ as W}from"./CityTreeSelect.vue_vue_type_script_setup_true_lang-82fzpZxR.js";import"./filters-D6Nzbpog.js";import"./index-m6pCHaEa.js";import"./SettingOutlined-BizkfqvN.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-Du4lPDHl.js";function Y(){const r=new z("admin/misc/cities/list","لیست شهر ها");return r.add(new c("title","نام شهر").filterKey("name").filterText()),r.add(new c("parent_title","والد").renderSlot("parent_title").noSort()),r.add(new c("percent","درصد مشتری عمده").renderSlot("percent").noSort()),r.add(new c("percent_aux","درصد کارشناس فروش").renderSlot("percent_aux").noSort()),r.add(new c("opt","عملیات").noSort().renderSlot("opt")),r}const Z={id:"page-user-list"},pe=K({__name:"cityList",setup(r){const D=R(),$=n=>!!D.hasPermission(n),E=Y(),m=d(null),b=d(!1),_=d(!1),y=d(void 0),l=J({title:"",parent:void 0,percent:null,percent_aux:null}),g=d([]);async function O(n){y.value=n,l.title=n.title??"",l.parent=n.parent??void 0,l.percent=n.percent===null||n.percent===void 0?null:Number(n.percent),l.percent_aux=n.percent_aux===null||n.percent_aux===void 0?null:Number(n.percent_aux);try{const{data:e}=await T.post("cities/list");g.value=e.rows??[]}catch(e){console.log(e)}_.value=!0}async function V(){var n,e,p,f;try{await T.put(`cities/${(n=y.value)==null?void 0:n.id}`,{title:l.title,parent:l.parent??null,percent:l.percent,percent_aux:l.percent_aux}),B.success("تغییرات ثبت شد"),_.value=!1,(e=m.value)==null||e.fetch()}catch(u){B.error(((f=(p=u==null?void 0:u.response)==null?void 0:p.data)==null?void 0:f.message)??"خطا در ثبت تغییرات")}}const{remove:X}=Q({onSuccess:()=>{var n;return(n=m.value)==null?void 0:n.fetch()},successMessage:"شهر حذف شد",fallbackErrorMessage:"خطا در حذف شهر"});return(n,e)=>{const p=s("a-tooltip"),f=s("a-popconfirm"),u=s("a-input"),v=s("a-form-item"),w=s("a-input-number"),M=s("a-form"),L=s("a-modal"),P=s("a-card");return k(),j("div",Z,[a(P,{title:"لیست شهر ها",class:"page-card"},{default:o(()=>[a(A,{ref_key:"citiesTable",ref:m,model:x(E),"mobile-cards":""},{add:o(()=>[a(G,{rid:"cities.create","add-label":"افزودن شهر",onAdd:e[0]||(e[0]=t=>b.value=!0)})]),parent_title:o(({text:t})=>[S(C(t??"—"),1)]),percent:o(({text:t})=>[S(C(t??"-"),1)]),percent_aux:o(({text:t})=>[S(C(t??"-"),1)]),opt:o(({record:t})=>[$("cities.list.view.edit")?(k(),U(p,{key:0,title:"ویرایش"},{default:o(()=>[a(x(q),{class:"cursor-pointer mx-1 text-primary",onClick:i=>O(t)},null,8,["onClick"])]),_:2},1024)):N("",!0),$("cities.list.remove")?(k(),U(p,{key:1,title:"حذف"},{default:o(()=>[a(f,{placement:"top","ok-text":"بله","cancel-text":"خیر",onConfirm:i=>x(X)(`cities/${t.id}`)},{title:o(()=>[...e[8]||(e[8]=[I("p",null,"آیا مطمئن به حذف شهر مورد نظر هستید ؟",-1)])]),default:o(()=>[a(x(F),{class:"cursor-pointer mx-1 text-danger"})]),_:1},8,["onConfirm"])]),_:2},1024)):N("",!0)]),_:1},8,["model"]),a(L,{open:_.value,"onUpdate:open":e[5]||(e[5]=t=>_.value=t),title:"ویرایش شهر",onOk:V},{default:o(()=>[a(M,{layout:"vertical"},{default:o(()=>[a(v,{label:"نام شهر"},{default:o(()=>[a(u,{value:l.title,"onUpdate:value":e[1]||(e[1]=t=>l.title=t)},null,8,["value"])]),_:1}),a(v,{label:"والد",help:"خالی = سرشاخه، مثل کشور"},{default:o(()=>{var t;return[a(W,{value:l.parent,"onUpdate:value":e[2]||(e[2]=i=>l.parent=i),cities:g.value,"parent-picker":"","exclude-id":(t=y.value)==null?void 0:t.id,placeholder:"والد را انتخاب کنید"},null,8,["value","cities","exclude-id"])]}),_:1}),a(v,{label:"درصد مشتری عمده"},{default:o(()=>[a(w,{value:l.percent,"onUpdate:value":e[3]||(e[3]=t=>l.percent=t),class:"w-full",step:.1},null,8,["value"])]),_:1}),a(v,{label:"درصد کارشناس فروش"},{default:o(()=>[a(w,{value:l.percent_aux,"onUpdate:value":e[4]||(e[4]=t=>l.percent_aux=t),class:"w-full",step:.1},null,8,["value"])]),_:1})]),_:1})]),_:1},8,["open"]),a(H,{open:b.value,"onUpdate:open":e[6]||(e[6]=t=>b.value=t),onSuccess:e[7]||(e[7]=t=>{var i;return(i=m.value)==null?void 0:i.fetch()})},null,8,["open"])]),_:1})])}}});export{pe as default}; +import{a as z,b as c,X as A}from"./model-D_9omyEY.js";import{_ as G}from"./ListPageHeader.vue_vue_type_script_setup_true_lang-ReVXBl8h.js";import{_ as H}from"./createCity.vue_vue_type_script_setup_true_lang-4Pxmqwde.js";import{d as K,u as R,b as j,c as a,w as o,r as s,o as k,h as x,a as U,E as q,i as N,D as F,p as I,f as S,t as C,m as d,z as J,y as T,G as B}from"./index-CuIWfDbM.js";import{u as Q}from"./useDeleteHandler-c5WtaKjp.js";import{_ as W}from"./CityTreeSelect.vue_vue_type_script_setup_true_lang-Be--_CeP.js";import"./filters-Cvt98RIq.js";import"./index-CPTngTRs.js";import"./SettingOutlined-BehgjsnT.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-DXuLuiBZ.js";function Y(){const r=new z("admin/misc/cities/list","لیست شهر ها");return r.add(new c("title","نام شهر").filterKey("name").filterText()),r.add(new c("parent_title","والد").renderSlot("parent_title").noSort()),r.add(new c("percent","درصد مشتری عمده").renderSlot("percent").noSort()),r.add(new c("percent_aux","درصد کارشناس فروش").renderSlot("percent_aux").noSort()),r.add(new c("opt","عملیات").noSort().renderSlot("opt")),r}const Z={id:"page-user-list"},pe=K({__name:"cityList",setup(r){const D=R(),$=n=>!!D.hasPermission(n),E=Y(),m=d(null),b=d(!1),_=d(!1),y=d(void 0),l=J({title:"",parent:void 0,percent:null,percent_aux:null}),g=d([]);async function O(n){y.value=n,l.title=n.title??"",l.parent=n.parent??void 0,l.percent=n.percent===null||n.percent===void 0?null:Number(n.percent),l.percent_aux=n.percent_aux===null||n.percent_aux===void 0?null:Number(n.percent_aux);try{const{data:e}=await T.post("cities/list");g.value=e.rows??[]}catch(e){console.log(e)}_.value=!0}async function V(){var n,e,p,f;try{await T.put(`cities/${(n=y.value)==null?void 0:n.id}`,{title:l.title,parent:l.parent??null,percent:l.percent,percent_aux:l.percent_aux}),B.success("تغییرات ثبت شد"),_.value=!1,(e=m.value)==null||e.fetch()}catch(u){B.error(((f=(p=u==null?void 0:u.response)==null?void 0:p.data)==null?void 0:f.message)??"خطا در ثبت تغییرات")}}const{remove:X}=Q({onSuccess:()=>{var n;return(n=m.value)==null?void 0:n.fetch()},successMessage:"شهر حذف شد",fallbackErrorMessage:"خطا در حذف شهر"});return(n,e)=>{const p=s("a-tooltip"),f=s("a-popconfirm"),u=s("a-input"),v=s("a-form-item"),w=s("a-input-number"),M=s("a-form"),L=s("a-modal"),P=s("a-card");return k(),j("div",Z,[a(P,{title:"لیست شهر ها",class:"page-card"},{default:o(()=>[a(A,{ref_key:"citiesTable",ref:m,model:x(E),"mobile-cards":""},{add:o(()=>[a(G,{rid:"cities.create","add-label":"افزودن شهر",onAdd:e[0]||(e[0]=t=>b.value=!0)})]),parent_title:o(({text:t})=>[S(C(t??"—"),1)]),percent:o(({text:t})=>[S(C(t??"-"),1)]),percent_aux:o(({text:t})=>[S(C(t??"-"),1)]),opt:o(({record:t})=>[$("cities.list.view.edit")?(k(),U(p,{key:0,title:"ویرایش"},{default:o(()=>[a(x(q),{class:"cursor-pointer mx-1 text-primary",onClick:i=>O(t)},null,8,["onClick"])]),_:2},1024)):N("",!0),$("cities.list.remove")?(k(),U(p,{key:1,title:"حذف"},{default:o(()=>[a(f,{placement:"top","ok-text":"بله","cancel-text":"خیر",onConfirm:i=>x(X)(`cities/${t.id}`)},{title:o(()=>[...e[8]||(e[8]=[I("p",null,"آیا مطمئن به حذف شهر مورد نظر هستید ؟",-1)])]),default:o(()=>[a(x(F),{class:"cursor-pointer mx-1 text-danger"})]),_:1},8,["onConfirm"])]),_:2},1024)):N("",!0)]),_:1},8,["model"]),a(L,{open:_.value,"onUpdate:open":e[5]||(e[5]=t=>_.value=t),title:"ویرایش شهر",onOk:V},{default:o(()=>[a(M,{layout:"vertical"},{default:o(()=>[a(v,{label:"نام شهر"},{default:o(()=>[a(u,{value:l.title,"onUpdate:value":e[1]||(e[1]=t=>l.title=t)},null,8,["value"])]),_:1}),a(v,{label:"والد",help:"خالی = سرشاخه، مثل کشور"},{default:o(()=>{var t;return[a(W,{value:l.parent,"onUpdate:value":e[2]||(e[2]=i=>l.parent=i),cities:g.value,"parent-picker":"","exclude-id":(t=y.value)==null?void 0:t.id,placeholder:"والد را انتخاب کنید"},null,8,["value","cities","exclude-id"])]}),_:1}),a(v,{label:"درصد مشتری عمده"},{default:o(()=>[a(w,{value:l.percent,"onUpdate:value":e[3]||(e[3]=t=>l.percent=t),class:"w-full",step:.1},null,8,["value"])]),_:1}),a(v,{label:"درصد کارشناس فروش"},{default:o(()=>[a(w,{value:l.percent_aux,"onUpdate:value":e[4]||(e[4]=t=>l.percent_aux=t),class:"w-full",step:.1},null,8,["value"])]),_:1})]),_:1})]),_:1},8,["open"]),a(H,{open:b.value,"onUpdate:open":e[6]||(e[6]=t=>b.value=t),onSuccess:e[7]||(e[7]=t=>{var i;return(i=m.value)==null?void 0:i.fetch()})},null,8,["open"])]),_:1})])}}});export{pe as default}; diff --git a/apps/admin-panel/dist/assets/create-CGtDjjLW.js b/apps/admin-panel/dist/assets/create-CGtDjjLW.js new file mode 100644 index 0000000..a48abef --- /dev/null +++ b/apps/admin-panel/dist/assets/create-CGtDjjLW.js @@ -0,0 +1 @@ +import{Y as ht,y as P,d as bt,v as xt,u as wt,x as kt,a as S,w as i,i as M,m as T,r as p,o as d,c as s,h as k,f as b,Z as It,b as x,e as V,F as I,p as z,$ as Ct,t as w,E as qt,W as Ut,H as St,z as Q,s as j,G as B,l as Nt,_ as Ot}from"./index-CuIWfDbM.js";import{o as zt}from"./select--BgT6D7O.js";import{X as Pt}from"./model-D_9omyEY.js";import{b as $t}from"./productListModel-CFcqDeGA.js";import{u as Tt}from"./auth-N_Kcbhfe.js";import"./filters-Cvt98RIq.js";import"./index-CPTngTRs.js";import"./SettingOutlined-BehgjsnT.js";const X="admin_cart_items",Vt=ht("cart",{state:()=>({items:[]}),actions:{addToCart(o){const g=this.items.findIndex(v=>v.pid==o.pid&&v.vid==o.vid),c=o.product.variants_all.filter(v=>v.id===o.vid)[0];c&&!(!c.is_pre_order&&c.qty===0)&&(g==-1?this.items.push(o):(this.items[g].product=o.product,this.items[g].qty=o.qty))},setItems(o){this.items=o,localStorage.setItem(X,JSON.stringify(o))},add(o){this.addToCart(o),this.setItems(this.items)},remove(o){const g=this.items.findIndex(c=>c.pid==o.pid&&c.vid==o.vid);g>-1&&this.items.splice(g,1),this.setItems(this.items)},updateItemQuantity(o){this.items[o.index].qty=o.quantity,this.setItems(this.items)},clear(){this.items=[],this.setItems(this.items)},async init(){try{const o=JSON.parse(localStorage.getItem(X)??"[]")||[],g=o.map(v=>v.product.id);if(g.length===0){this.setItems([]);return}const{data:c}=await P.post("product/variant",{products_id:g});if(c){const v=[];for(const N of o){const u=c.find(E=>E.id==N.product.id);u&&(!u.variants_all[0].is_pre_order&&u.variants_all[0].qty===0||v.push({vid:N.vid,pid:u.id,product:u,qty:N.qty,promotion_id:u.promotion&&u.promotion.id?u.promotion.id:null}))}this.setItems(v)}}catch(o){console.log("error in cart",o)}}}}),Bt=["src"],Et={key:1,class:"flex items-center"},Lt=["src"],Rt={key:4,class:"flex"},Mt={style:{width:"max-content"}},Qt={class:"grid-5"},jt={class:"totals"},H="/img/no-items.png",Ft=bt({__name:"create",setup(o){const g=Nt(),c=xt(),v=wt(),N=Tt(),u=Vt(),E=e=>!!v.hasPermission(e),K=$t(v.isSuperAdmin),Y=T(null),O=T(!1),F=T([]),W=T({}),Z={1:"ثبت سفارش",2:"تایید مدیر سیستم",3:"در حال تامین",4:"در حال آماده سازی",5:"ارسال",6:"تحویل مشتری"},n=Q({customer_id:void 0,sts:void 0,type:void 0,note:"",shipping_address:{reciver_fname:"",reciver_lname:"",province:"",city:"",zipcode:"",reciver_phone:"",reciver_fixed_phone:"",address:""}}),_=Q({}),tt=j(()=>{var e;return(e=N.user)==null?void 0:e.id}),y=j(()=>u.items),et=[{title:"حذف",dataIndex:"delete",width:60,align:"center"},{title:"کد محصول",dataIndex:"pid",align:"center",width:90},{title:"محصول",dataIndex:"product"},{title:"اجرت",dataIndex:"wage",align:"center"},{title:"تعداد",dataIndex:"qty",align:"center",width:140},{title:"وزن",dataIndex:"weight",align:"center",width:90},{title:"مجموع",dataIndex:"total",align:"center"}],m=Q({});function C(e){return e.product.variants_all.find(t=>t.id===e.vid)??{}}function at(e){var t,l,h;return((t=e==null?void 0:e.thumb)==null?void 0:t.full)??((h=(l=e==null?void 0:e.ProductImage)==null?void 0:l[0])==null?void 0:h.image)??H}const st=j(()=>{let e=0;for(const t of y.value)e+=Number(C(t).grams??0);return e});function it(e){return Number(C(e).grams??0)*e.qty}function nt(e){const t=y.value[e];if(!t)return 1/0;const l=Number(C(t).qty??0);return l>0?l:1/0}function ot(e,t){u.updateItemQuantity({index:e,quantity:Number(t)})}function lt(e,t){rt(e,String(t.key))}function rt(e,t){u.add({vid:t,pid:e.id,product:e,qty:1,promotion_id:e.promotion&&e.promotion.id?e.promotion.id:null}),B.info("اضافه شد")}function dt(e){const t=C(e);m.id=t.id,m.grams=Number(t.grams??0)}async function ut(){var e,t;if(!(!m.id||!m.grams))try{O.value=!0;const l=y.value.find(h=>h.vid===m.id);await P.post("add/variant",{product_id:l==null?void 0:l.pid,title:`${m.grams} گرم`,grams:m.grams}),await u.init(),m.id=void 0,m.grams=void 0}catch(l){B.error(((t=(e=l==null?void 0:l.response)==null?void 0:e.data)==null?void 0:t.message)??"خطا در ثبت وزن")}finally{O.value=!1}}function pt(e,t){return zt(t).toLowerCase().includes(e.toLowerCase())}function mt(){return Object.keys(_).forEach(e=>delete _[e]),n.customer_id||(_.customer_id="مقدار را وارد نمایید"),n.sts===void 0&&(_.sts="مقدار را وارد نمایید"),n.type===void 0&&(_.type="مقدار را وارد نمایید"),Object.keys(_).length===0}async function A(){var e,t;if(mt())try{O.value=!0;const l=y.value.map(h=>({vid:h.vid,qty:h.qty,promotion_id:h.promotion_id}));await P.post("order",{...n,reagent_id:tt.value,app:"app",order_items:l}),B.info("عملیات با موفقیت انجام شد"),u.clear(),g.push("/order/list")}catch(l){console.log(l),B.error(((t=(e=l==null?void 0:l.response)==null?void 0:e.data)==null?void 0:t.message)??"خطا در ثبت اطلاعات.")}finally{O.value=!1}}return kt(async()=>{try{const[e,t]=await Promise.all([P.get("order/type"),P.post("single-customer",{page:1,limit:500})]);W.value=e.data,F.value=t.data.rows??[]}catch(e){console.log(e)}await u.init()}),(e,t)=>{const l=p("a-button"),h=p("a-menu-item"),ct=p("a-menu"),vt=p("a-dropdown"),D=p("a-input-number"),_t=p("a-table"),L=p("a-select-option"),R=p("a-select"),f=p("a-form-item"),q=p("a-input"),G=p("a-textarea"),ft=p("a-tag"),gt=p("a-form"),J=p("a-card"),yt=p("a-spin");return E("order.create")?(d(),S(yt,{key:0,spinning:O.value},{default:i(()=>[s(J,{title:"لیست محصولات",class:"page-card"},{default:i(()=>[s(Pt,{ref_key:"tblProducts",ref:Y,model:k(K),"mobile-cards":""},{image:i(({record:a})=>[z("img",{width:"90px",height:"90px",style:{"object-fit":"scale-down"},src:a.thumb&&a.thumb.full?a.thumb.full:H},null,8,Bt)]),op:i(({record:a})=>[s(vt,null,{overlay:i(()=>[s(ct,{onClick:r=>lt(a,r)},{default:i(()=>[(d(!0),x(I,null,V(a.variants_all,r=>(d(),S(h,{key:r.id},{default:i(()=>[b(" افزودن تنوع "+w(r.title),1)]),_:2},1024))),128))]),_:2},1032,["onClick"])]),default:i(()=>[s(l,{style:{"margin-left":"8px"}},{default:i(()=>[t[13]||(t[13]=b(" افزودن ",-1)),s(k(It))]),_:1})]),_:2},1024)]),_:1},8,["model"]),y.value.length>0?(d(),S(J,{key:0,title:"ثبت سفارش",class:"mt-5"},{default:i(()=>[s(_t,{columns:et,"data-source":y.value,bordered:"",pagination:!1,"row-key":"vid",size:k(c).isMobile?"small":"middle",scroll:k(c).isSmallScreen?{x:"max-content"}:void 0},{bodyCell:i(({column:a,record:r,index:$})=>[a.dataIndex==="delete"?(d(),S(k(Ct),{key:0,class:"cursor-pointer",onClick:U=>k(u).remove(r)},null,8,["onClick"])):a.dataIndex==="product"?(d(),x("div",Et,[z("img",{src:at(r.product),width:"50px"},null,8,Lt),b(" "+w(r.product.title),1)])):a.dataIndex==="wage"?(d(),x(I,{key:2},[b(w(C(r).percentage_pay)+"٪ ",1)],64)):a.dataIndex==="qty"?(d(),S(D,{key:3,value:y.value[$].qty,"onUpdate:value":U=>y.value[$].qty=U,min:1,max:nt($),onChange:U=>ot($,U)},null,8,["value","onUpdate:value","max","onChange"])):a.dataIndex==="weight"?(d(),x("div",Rt,[!m.grams||m.id!==C(r).id?(d(),x(I,{key:0},[z("span",Mt,w(C(r).title),1),s(k(qt),{class:"cursor-pointer ml-2 text-primary",onClick:U=>dt(r)},null,8,["onClick"])],64)):(d(),x(I,{key:1},[s(D,{value:m.grams,"onUpdate:value":t[0]||(t[0]=U=>m.grams=U)},null,8,["value"]),s(k(Ut),{class:"cursor-pointer ml-2 text-success",onClick:ut})],64))])):a.dataIndex==="total"?(d(),x(I,{key:5},[b(w(it(r))+" گرم ",1)],64)):M("",!0)]),_:1},8,["data-source","size","scroll"]),s(gt,{layout:"vertical",class:"mt-4",onSubmit:St(A,["prevent"])},{default:i(()=>[z("div",Qt,[s(f,{label:"مشتری","validate-status":_.customer_id?"error":"",help:_.customer_id},{default:i(()=>[s(R,{value:n.customer_id,"onUpdate:value":t[1]||(t[1]=a=>n.customer_id=a),"show-search":"","option-filter-prop":"children","filter-option":pt},{default:i(()=>[(d(!0),x(I,null,V(F.value,a=>(d(),S(L,{key:a.id,value:a.id},{default:i(()=>[b(w(`${a.id}-${a.fname} ${a.lname}`),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["validate-status","help"]),s(f,{label:"وضعیت تحویل","validate-status":_.sts?"error":"",help:_.sts},{default:i(()=>[s(R,{value:n.sts,"onUpdate:value":t[2]||(t[2]=a=>n.sts=a)},{default:i(()=>[(d(),x(I,null,V(Z,(a,r)=>s(L,{key:r,value:Number(r)},{default:i(()=>[b(w(a),1)]),_:2},1032,["value"])),64))]),_:1},8,["value"])]),_:1},8,["validate-status","help"]),s(f,{label:"نوع فروش","validate-status":_.type?"error":"",help:_.type},{default:i(()=>[s(R,{value:n.type,"onUpdate:value":t[3]||(t[3]=a=>n.type=a)},{default:i(()=>[(d(!0),x(I,null,V(W.value,(a,r)=>(d(),S(L,{key:r,value:Number(r)},{default:i(()=>[b(w(a),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["validate-status","help"]),s(f,{label:"نام دریافت کننده"},{default:i(()=>[s(q,{value:n.shipping_address.reciver_fname,"onUpdate:value":t[4]||(t[4]=a=>n.shipping_address.reciver_fname=a)},null,8,["value"])]),_:1}),s(f,{label:"نام خانوادگی دریافت کننده"},{default:i(()=>[s(q,{value:n.shipping_address.reciver_lname,"onUpdate:value":t[5]||(t[5]=a=>n.shipping_address.reciver_lname=a)},null,8,["value"])]),_:1}),s(f,{label:"استان"},{default:i(()=>[s(q,{value:n.shipping_address.province,"onUpdate:value":t[6]||(t[6]=a=>n.shipping_address.province=a)},null,8,["value"])]),_:1}),s(f,{label:"شهر"},{default:i(()=>[s(q,{value:n.shipping_address.city,"onUpdate:value":t[7]||(t[7]=a=>n.shipping_address.city=a)},null,8,["value"])]),_:1}),s(f,{label:"کد پستی"},{default:i(()=>[s(q,{value:n.shipping_address.zipcode,"onUpdate:value":t[8]||(t[8]=a=>n.shipping_address.zipcode=a)},null,8,["value"])]),_:1}),s(f,{label:"تلفن همراه"},{default:i(()=>[s(q,{value:n.shipping_address.reciver_phone,"onUpdate:value":t[9]||(t[9]=a=>n.shipping_address.reciver_phone=a)},null,8,["value"])]),_:1}),s(f,{label:"تلفن ثابت"},{default:i(()=>[s(q,{value:n.shipping_address.reciver_fixed_phone,"onUpdate:value":t[10]||(t[10]=a=>n.shipping_address.reciver_fixed_phone=a)},null,8,["value"])]),_:1})]),s(f,{label:"توضیحات"},{default:i(()=>[s(G,{value:n.note,"onUpdate:value":t[11]||(t[11]=a=>n.note=a),"auto-size":{minRows:3,maxRows:5}},null,8,["value"])]),_:1}),s(f,{label:"آدرس"},{default:i(()=>[s(G,{value:n.shipping_address.address,"onUpdate:value":t[12]||(t[12]=a=>n.shipping_address.address=a),"auto-size":{minRows:3,maxRows:5}},null,8,["value"])]),_:1}),z("div",jt,[s(ft,{color:"blue"},{default:i(()=>[b("مجموع وزن: "+w(st.value)+" گرم",1)]),_:1})]),s(l,{type:"primary",class:"mt-4 form-submit",disabled:!y.value||y.value.length<1,onClick:A},{default:i(()=>[...t[14]||(t[14]=[b(" ثبت تغییرات ",-1)])]),_:1},8,["disabled"])]),_:1})]),_:1})):M("",!0)]),_:1})]),_:1},8,["spinning"])):M("",!0)}}}),Yt=Ot(Ft,[["__scopeId","data-v-51044ea4"]]);export{Yt as default}; diff --git a/apps/admin-panel/dist/assets/create-CWKMmAqe.js b/apps/admin-panel/dist/assets/create-CWKMmAqe.js deleted file mode 100644 index 71ae055..0000000 --- a/apps/admin-panel/dist/assets/create-CWKMmAqe.js +++ /dev/null @@ -1 +0,0 @@ -import{Y as he,y as P,d as be,v as xe,u as we,x as ke,a as U,w as i,i as Q,m as V,r as p,o as d,c as s,h as I,f as b,Z as Ie,b as x,e as B,F as C,p as z,$ as Ce,t as w,E as qe,W as Se,H as Ue,z as j,s as F,G as E,l as Ne,_ as Oe}from"./index-C9T3Vski.js";import{X as ze}from"./model-B4TWAN58.js";import{b as Pe}from"./productListModel-D3MWMWSR.js";import{u as $e}from"./auth-CIh5zA9X.js";import"./filters-D6Nzbpog.js";import"./index-m6pCHaEa.js";import"./SettingOutlined-BizkfqvN.js";const H="admin_cart_items",Ve=he("cart",{state:()=>({items:[]}),actions:{addToCart(l){const y=this.items.findIndex(_=>_.pid==l.pid&&_.vid==l.vid),v=l.product.variants_all.filter(_=>_.id===l.vid)[0];v&&!(!v.is_pre_order&&v.qty===0)&&(y==-1?this.items.push(l):(this.items[y].product=l.product,this.items[y].qty=l.qty))},setItems(l){this.items=l,localStorage.setItem(H,JSON.stringify(l))},add(l){this.addToCart(l),this.setItems(this.items)},remove(l){const y=this.items.findIndex(v=>v.pid==l.pid&&v.vid==l.vid);y>-1&&this.items.splice(y,1),this.setItems(this.items)},updateItemQuantity(l){this.items[l.index].qty=l.quantity,this.setItems(this.items)},clear(){this.items=[],this.setItems(this.items)},async init(){try{const l=JSON.parse(localStorage.getItem(H)??"[]")||[],y=l.map(_=>_.product.id);if(y.length===0){this.setItems([]);return}const{data:v}=await P.post("product/variant",{products_id:y});if(v){const _=[];for(const N of l){const u=v.find(L=>L.id==N.product.id);u&&(!u.variants_all[0].is_pre_order&&u.variants_all[0].qty===0||_.push({vid:N.vid,pid:u.id,product:u,qty:N.qty,promotion_id:u.promotion&&u.promotion.id?u.promotion.id:null}))}this.setItems(_)}}catch(l){console.log("error in cart",l)}}}}),Be=["src"],Ee={key:1,class:"flex items-center"},Le=["src"],Re={key:4,class:"flex"},Te={style:{width:"max-content"}},Me={class:"grid-5"},Qe={class:"totals"},K="/img/no-items.png",je=be({__name:"create",setup(l){const y=Ne(),v=xe(),_=we(),N=$e(),u=Ve(),L=t=>!!_.hasPermission(t),Y=Pe(_.isSuperAdmin),Z=V(null),O=V(!1),W=V([]),A=V({}),ee={1:"ثبت سفارش",2:"تایید مدیر سیستم",3:"در حال تامین",4:"در حال آماده سازی",5:"ارسال",6:"تحویل مشتری"},n=j({customer_id:void 0,sts:void 0,type:void 0,note:"",shipping_address:{reciver_fname:"",reciver_lname:"",province:"",city:"",zipcode:"",reciver_phone:"",reciver_fixed_phone:"",address:""}}),f=j({}),te=F(()=>{var t;return(t=N.user)==null?void 0:t.id}),h=F(()=>u.items),ae=[{title:"حذف",dataIndex:"delete",width:60,align:"center"},{title:"کد محصول",dataIndex:"pid",align:"center",width:90},{title:"محصول",dataIndex:"product"},{title:"اجرت",dataIndex:"wage",align:"center"},{title:"تعداد",dataIndex:"qty",align:"center",width:140},{title:"وزن",dataIndex:"weight",align:"center",width:90},{title:"مجموع",dataIndex:"total",align:"center"}],c=j({});function k(t){return t.product.variants_all.find(e=>e.id===t.vid)??{}}function se(t){var e,o,m;return((e=t==null?void 0:t.thumb)==null?void 0:e.full)??((m=(o=t==null?void 0:t.ProductImage)==null?void 0:o[0])==null?void 0:m.image)??K}const ie=F(()=>{let t=0;for(const e of h.value)t+=Number(k(e).grams??0);return t});function ne(t){return Number(k(t).grams??0)*t.qty}function oe(t){const e=h.value[t];if(!e)return 1/0;const o=Number(k(e).qty??0);return o>0?o:1/0}function le(t,e){u.updateItemQuantity({index:t,quantity:Number(e)})}function re(t,e){de(t,String(e.key))}function de(t,e){u.add({vid:e,pid:t.id,product:t,qty:1,promotion_id:t.promotion&&t.promotion.id?t.promotion.id:null}),E.info("اضافه شد")}function ue(t){const e=k(t);c.id=e.id,c.grams=Number(e.grams??0)}async function pe(){var t,e;if(!(!c.id||!c.grams))try{O.value=!0;const o=h.value.find(m=>m.vid===c.id);await P.post("add/variant",{product_id:o==null?void 0:o.pid,title:`${c.grams} گرم`,grams:c.grams}),await u.init(),c.id=void 0,c.grams=void 0}catch(o){E.error(((e=(t=o==null?void 0:o.response)==null?void 0:t.data)==null?void 0:e.message)??"خطا در ثبت وزن")}finally{O.value=!1}}function me(t,e){var o,m;return String(((m=(o=e==null?void 0:e.children)==null?void 0:o[0])==null?void 0:m.children)??"").toLowerCase().includes(t.toLowerCase())}function ce(){return Object.keys(f).forEach(t=>delete f[t]),n.customer_id||(f.customer_id="مقدار را وارد نمایید"),n.sts===void 0&&(f.sts="مقدار را وارد نمایید"),n.type===void 0&&(f.type="مقدار را وارد نمایید"),Object.keys(f).length===0}async function D(){var t,e;if(ce())try{O.value=!0;const o=h.value.map(m=>{const R=k(m);return{vid:m.vid,qty:m.qty,percent:R.percentage_pay,promotion_id:m.promotion_id}});await P.post("order",{...n,reagent_id:te.value,app:"app",order_items:o}),E.info("عملیات با موفقیت انجام شد"),u.clear(),y.push("/order/list")}catch(o){console.log(o),E.error(((e=(t=o==null?void 0:o.response)==null?void 0:t.data)==null?void 0:e.message)??"خطا در ثبت اطلاعات.")}finally{O.value=!1}}return ke(async()=>{try{const[t,e]=await Promise.all([P.get("order/type"),P.post("single-customer",{page:1,limit:500})]);A.value=t.data,W.value=e.data.rows??[]}catch(t){console.log(t)}await u.init()}),(t,e)=>{const o=p("a-button"),m=p("a-menu-item"),R=p("a-menu"),ve=p("a-dropdown"),G=p("a-input-number"),_e=p("a-table"),T=p("a-select-option"),M=p("a-select"),g=p("a-form-item"),q=p("a-input"),J=p("a-textarea"),fe=p("a-tag"),ge=p("a-form"),X=p("a-card"),ye=p("a-spin");return L("order.create")?(d(),U(ye,{key:0,spinning:O.value},{default:i(()=>[s(X,{title:"لیست محصولات",class:"page-card"},{default:i(()=>[s(ze,{ref_key:"tblProducts",ref:Z,model:I(Y),"mobile-cards":""},{image:i(({record:a})=>[z("img",{width:"90px",height:"90px",style:{"object-fit":"scale-down"},src:a.thumb&&a.thumb.full?a.thumb.full:K},null,8,Be)]),op:i(({record:a})=>[s(ve,null,{overlay:i(()=>[s(R,{onClick:r=>re(a,r)},{default:i(()=>[(d(!0),x(C,null,B(a.variants_all,r=>(d(),U(m,{key:r.id},{default:i(()=>[b(" افزودن تنوع "+w(r.title),1)]),_:2},1024))),128))]),_:2},1032,["onClick"])]),default:i(()=>[s(o,{style:{"margin-left":"8px"}},{default:i(()=>[e[13]||(e[13]=b(" افزودن ",-1)),s(I(Ie))]),_:1})]),_:2},1024)]),_:1},8,["model"]),h.value.length>0?(d(),U(X,{key:0,title:"ثبت سفارش",class:"mt-5"},{default:i(()=>[s(_e,{columns:ae,"data-source":h.value,bordered:"",pagination:!1,"row-key":"vid",size:I(v).isMobile?"small":"middle",scroll:I(v).isSmallScreen?{x:"max-content"}:void 0},{bodyCell:i(({column:a,record:r,index:$})=>[a.dataIndex==="delete"?(d(),U(I(Ce),{key:0,class:"cursor-pointer",onClick:S=>I(u).remove(r)},null,8,["onClick"])):a.dataIndex==="product"?(d(),x("div",Ee,[z("img",{src:se(r.product),width:"50px"},null,8,Le),b(" "+w(r.product.title),1)])):a.dataIndex==="wage"?(d(),x(C,{key:2},[b(w(k(r).percentage_pay)+"٪ ",1)],64)):a.dataIndex==="qty"?(d(),U(G,{key:3,value:h.value[$].qty,"onUpdate:value":S=>h.value[$].qty=S,min:1,max:oe($),onChange:S=>le($,S)},null,8,["value","onUpdate:value","max","onChange"])):a.dataIndex==="weight"?(d(),x("div",Re,[!c.grams||c.id!==k(r).id?(d(),x(C,{key:0},[z("span",Te,w(k(r).title),1),s(I(qe),{class:"cursor-pointer ml-2 text-primary",onClick:S=>ue(r)},null,8,["onClick"])],64)):(d(),x(C,{key:1},[s(G,{value:c.grams,"onUpdate:value":e[0]||(e[0]=S=>c.grams=S)},null,8,["value"]),s(I(Se),{class:"cursor-pointer ml-2 text-success",onClick:pe})],64))])):a.dataIndex==="total"?(d(),x(C,{key:5},[b(w(ne(r))+" گرم ",1)],64)):Q("",!0)]),_:1},8,["data-source","size","scroll"]),s(ge,{layout:"vertical",class:"mt-4",onSubmit:Ue(D,["prevent"])},{default:i(()=>[z("div",Me,[s(g,{label:"مشتری","validate-status":f.customer_id?"error":"",help:f.customer_id},{default:i(()=>[s(M,{value:n.customer_id,"onUpdate:value":e[1]||(e[1]=a=>n.customer_id=a),"show-search":"","option-filter-prop":"children","filter-option":me},{default:i(()=>[(d(!0),x(C,null,B(W.value,a=>(d(),U(T,{key:a.id,value:a.id},{default:i(()=>[b(w(`${a.id}-${a.fname} ${a.lname}`),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["validate-status","help"]),s(g,{label:"وضعیت تحویل","validate-status":f.sts?"error":"",help:f.sts},{default:i(()=>[s(M,{value:n.sts,"onUpdate:value":e[2]||(e[2]=a=>n.sts=a)},{default:i(()=>[(d(),x(C,null,B(ee,(a,r)=>s(T,{key:r,value:Number(r)},{default:i(()=>[b(w(a),1)]),_:2},1032,["value"])),64))]),_:1},8,["value"])]),_:1},8,["validate-status","help"]),s(g,{label:"نوع فروش","validate-status":f.type?"error":"",help:f.type},{default:i(()=>[s(M,{value:n.type,"onUpdate:value":e[3]||(e[3]=a=>n.type=a)},{default:i(()=>[(d(!0),x(C,null,B(A.value,(a,r)=>(d(),U(T,{key:r,value:Number(r)},{default:i(()=>[b(w(a),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["validate-status","help"]),s(g,{label:"نام دریافت کننده"},{default:i(()=>[s(q,{value:n.shipping_address.reciver_fname,"onUpdate:value":e[4]||(e[4]=a=>n.shipping_address.reciver_fname=a)},null,8,["value"])]),_:1}),s(g,{label:"نام خانوادگی دریافت کننده"},{default:i(()=>[s(q,{value:n.shipping_address.reciver_lname,"onUpdate:value":e[5]||(e[5]=a=>n.shipping_address.reciver_lname=a)},null,8,["value"])]),_:1}),s(g,{label:"استان"},{default:i(()=>[s(q,{value:n.shipping_address.province,"onUpdate:value":e[6]||(e[6]=a=>n.shipping_address.province=a)},null,8,["value"])]),_:1}),s(g,{label:"شهر"},{default:i(()=>[s(q,{value:n.shipping_address.city,"onUpdate:value":e[7]||(e[7]=a=>n.shipping_address.city=a)},null,8,["value"])]),_:1}),s(g,{label:"کد پستی"},{default:i(()=>[s(q,{value:n.shipping_address.zipcode,"onUpdate:value":e[8]||(e[8]=a=>n.shipping_address.zipcode=a)},null,8,["value"])]),_:1}),s(g,{label:"تلفن همراه"},{default:i(()=>[s(q,{value:n.shipping_address.reciver_phone,"onUpdate:value":e[9]||(e[9]=a=>n.shipping_address.reciver_phone=a)},null,8,["value"])]),_:1}),s(g,{label:"تلفن ثابت"},{default:i(()=>[s(q,{value:n.shipping_address.reciver_fixed_phone,"onUpdate:value":e[10]||(e[10]=a=>n.shipping_address.reciver_fixed_phone=a)},null,8,["value"])]),_:1})]),s(g,{label:"توضیحات"},{default:i(()=>[s(J,{value:n.note,"onUpdate:value":e[11]||(e[11]=a=>n.note=a),"auto-size":{minRows:3,maxRows:5}},null,8,["value"])]),_:1}),s(g,{label:"آدرس"},{default:i(()=>[s(J,{value:n.shipping_address.address,"onUpdate:value":e[12]||(e[12]=a=>n.shipping_address.address=a),"auto-size":{minRows:3,maxRows:5}},null,8,["value"])]),_:1}),z("div",Qe,[s(fe,{color:"blue"},{default:i(()=>[b("مجموع وزن: "+w(ie.value)+" گرم",1)]),_:1})]),s(o,{type:"primary",class:"mt-4 form-submit",disabled:!h.value||h.value.length<1,onClick:D},{default:i(()=>[...e[14]||(e[14]=[b(" ثبت تغییرات ",-1)])]),_:1},8,["disabled"])]),_:1})]),_:1})):Q("",!0)]),_:1})]),_:1},8,["spinning"])):Q("",!0)}}}),He=Oe(je,[["__scopeId","data-v-3a053343"]]);export{He as default}; diff --git a/apps/admin-panel/dist/assets/create-ChEWb1ne.css b/apps/admin-panel/dist/assets/create-ChEWb1ne.css deleted file mode 100644 index 10bab9b..0000000 --- a/apps/admin-panel/dist/assets/create-ChEWb1ne.css +++ /dev/null @@ -1 +0,0 @@ -.grid-5[data-v-3a053343]{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem}.ml-2[data-v-3a053343]{margin-right:.5rem}.mt-4[data-v-3a053343]{margin-top:1rem}.mt-5[data-v-3a053343]{margin-top:1.25rem}.totals[data-v-3a053343]{margin:1rem 0}@media (max-width: 575px){.grid-5[data-v-3a053343]{grid-template-columns:1fr 1fr;column-gap:12px;row-gap:0}.grid-5[data-v-3a053343]>:first-child{grid-column:1 / -1}.mt-5[data-v-3a053343],.mt-4[data-v-3a053343]{margin-top:12px}.totals[data-v-3a053343]{margin:0 0 12px}} diff --git a/apps/admin-panel/dist/assets/create-CgPuMsyQ.js b/apps/admin-panel/dist/assets/create-D17Jdy3G.js similarity index 95% rename from apps/admin-panel/dist/assets/create-CgPuMsyQ.js rename to apps/admin-panel/dist/assets/create-D17Jdy3G.js index 627fa96..b6d5e7f 100644 --- a/apps/admin-panel/dist/assets/create-CgPuMsyQ.js +++ b/apps/admin-panel/dist/assets/create-D17Jdy3G.js @@ -1 +1 @@ -import{d as z,u as K,a,w as t,m as x,r as u,o as l,c as d,H as M,p as O,f,i as p,h as P,z as A,y as D,G as B,_ as E}from"./index-C9T3Vski.js";import{a as G,b as _,X as H}from"./model-B4TWAN58.js";import"./filters-D6Nzbpog.js";import"./index-m6pCHaEa.js";import"./SettingOutlined-BizkfqvN.js";function I(){const r=new G("admin/misc/sms/list","لیست پیامک ها");return r.add(new _("id","شماره")),r.add(new _("text","متن پیامک").filterKey("body").filterText()),r.add(new _("mobile","گیرندگان").noSort()),r.add(new _("sent_count","تعداد").noSort()),r.add(new _("sender","ارسال کننده").noSort()),r.add(new _("caj","تاریخ").filterKey("createdAt").filterDate().noSort()),r}const $={class:"grid-2"},q=z({__name:"create",setup(r){const N=K(),c=y=>!!N.hasPermission(y),R=I(),g=x(null),k=x(!1),s=x(-1),m=x(""),b=x(""),o=A({});async function S(){var y,e,i;if(Object.keys(o).forEach(n=>delete o[n]),b.value||(o.text="متن پیامک الزامی است"),(s.value===-1||s.value===9)&&!m.value&&(o.mobile="شماره موبایل الزامی است"),!Object.keys(o).length)try{k.value=!0;const{data:n}=await D.post("sms",{type:s.value,mobile:m.value,text:b.value});B.success(`پیامک برای ${n.sentCount} شماره ثبت شد`),b.value="",m.value="",(y=g.value)==null||y.fetch()}catch(n){B.error(((i=(e=n==null?void 0:n.response)==null?void 0:e.data)==null?void 0:i.message)??"خطا در ارسال پیامک")}finally{k.value=!1}}return(y,e)=>{const i=u("a-select-option"),n=u("a-select"),w=u("a-form-item"),C=u("a-textarea"),T=u("a-input"),V=u("a-button"),X=u("a-form"),U=u("a-card"),j=u("a-spin");return l(),a(j,{spinning:k.value,class:"page-card"},{default:t(()=>[d(U,{title:"ارسال پیامک"},{default:t(()=>[d(X,{layout:"vertical",onSubmit:M(S,["prevent"])},{default:t(()=>[O("div",$,[d(w,{label:"ارسال برای"},{default:t(()=>[d(n,{value:s.value,"onUpdate:value":e[0]||(e[0]=v=>s.value=v)},{default:t(()=>[c("sms.create.single")?(l(),a(i,{key:0,value:-1},{default:t(()=>[...e[4]||(e[4]=[f(" شماره موبایل ",-1)])]),_:1})):p("",!0),c("sms.create.all")?(l(),a(i,{key:1,value:0},{default:t(()=>[...e[5]||(e[5]=[f(" همه مشتریان ",-1)])]),_:1})):p("",!0),c("sms.create.reagent")?(l(),a(i,{key:2,value:1},{default:t(()=>[...e[6]||(e[6]=[f(" کارشناسان فروش ",-1)])]),_:1})):p("",!0),c("sms.create.omde")?(l(),a(i,{key:3,value:2},{default:t(()=>[...e[7]||(e[7]=[f(" مشتریان عمده ",-1)])]),_:1})):p("",!0),c("sms.create.multiple")?(l(),a(i,{key:4,value:9},{default:t(()=>[...e[8]||(e[8]=[f(" شماره های موبایل ",-1)])]),_:1})):p("",!0)]),_:1},8,["value"])]),_:1}),s.value===-1||s.value===9?(l(),a(w,{key:0,label:s.value===9?"شماره های موبایل":"شماره موبایل","validate-status":o.mobile?"error":"",help:o.mobile},{default:t(()=>[s.value===9?(l(),a(C,{key:0,value:m.value,"onUpdate:value":e[1]||(e[1]=v=>m.value=v),"auto-size":{minRows:2,maxRows:6},placeholder:"هر شماره در یک خط"},null,8,["value"])):(l(),a(T,{key:1,value:m.value,"onUpdate:value":e[2]||(e[2]=v=>m.value=v)},null,8,["value"]))]),_:1},8,["label","validate-status","help"])):p("",!0)]),d(w,{label:"متن پیامک","validate-status":o.text?"error":"",help:o.text},{default:t(()=>[d(C,{value:b.value,"onUpdate:value":e[3]||(e[3]=v=>b.value=v),"auto-size":{minRows:4,maxRows:8}},null,8,["value"])]),_:1},8,["validate-status","help"]),d(V,{type:"primary",class:"form-submit",onClick:S},{default:t(()=>[...e[9]||(e[9]=[f("ارسال",-1)])]),_:1})]),_:1})]),_:1}),c("sms.list")?(l(),a(U,{key:0,title:"لیست پیامک ها",class:"mt-4"},{default:t(()=>[d(H,{ref_key:"tbl",ref:g,model:P(R),"mobile-cards":""},null,8,["model"])]),_:1})):p("",!0)]),_:1},8,["spinning"])}}}),Y=E(q,[["__scopeId","data-v-11fdeec9"]]);export{Y as default}; +import{d as z,u as K,a,w as t,m as x,r as u,o as l,c as d,H as M,p as O,f,i as p,h as P,z as A,y as D,G as B,_ as E}from"./index-CuIWfDbM.js";import{a as G,b as _,X as H}from"./model-D_9omyEY.js";import"./filters-Cvt98RIq.js";import"./index-CPTngTRs.js";import"./SettingOutlined-BehgjsnT.js";function I(){const r=new G("admin/misc/sms/list","لیست پیامک ها");return r.add(new _("id","شماره")),r.add(new _("text","متن پیامک").filterKey("body").filterText()),r.add(new _("mobile","گیرندگان").noSort()),r.add(new _("sent_count","تعداد").noSort()),r.add(new _("sender","ارسال کننده").noSort()),r.add(new _("caj","تاریخ").filterKey("createdAt").filterDate().noSort()),r}const $={class:"grid-2"},q=z({__name:"create",setup(r){const N=K(),c=y=>!!N.hasPermission(y),R=I(),g=x(null),k=x(!1),s=x(-1),m=x(""),b=x(""),o=A({});async function S(){var y,e,i;if(Object.keys(o).forEach(n=>delete o[n]),b.value||(o.text="متن پیامک الزامی است"),(s.value===-1||s.value===9)&&!m.value&&(o.mobile="شماره موبایل الزامی است"),!Object.keys(o).length)try{k.value=!0;const{data:n}=await D.post("sms",{type:s.value,mobile:m.value,text:b.value});B.success(`پیامک برای ${n.sentCount} شماره ثبت شد`),b.value="",m.value="",(y=g.value)==null||y.fetch()}catch(n){B.error(((i=(e=n==null?void 0:n.response)==null?void 0:e.data)==null?void 0:i.message)??"خطا در ارسال پیامک")}finally{k.value=!1}}return(y,e)=>{const i=u("a-select-option"),n=u("a-select"),w=u("a-form-item"),C=u("a-textarea"),T=u("a-input"),V=u("a-button"),X=u("a-form"),U=u("a-card"),j=u("a-spin");return l(),a(j,{spinning:k.value,class:"page-card"},{default:t(()=>[d(U,{title:"ارسال پیامک"},{default:t(()=>[d(X,{layout:"vertical",onSubmit:M(S,["prevent"])},{default:t(()=>[O("div",$,[d(w,{label:"ارسال برای"},{default:t(()=>[d(n,{value:s.value,"onUpdate:value":e[0]||(e[0]=v=>s.value=v)},{default:t(()=>[c("sms.create.single")?(l(),a(i,{key:0,value:-1},{default:t(()=>[...e[4]||(e[4]=[f(" شماره موبایل ",-1)])]),_:1})):p("",!0),c("sms.create.all")?(l(),a(i,{key:1,value:0},{default:t(()=>[...e[5]||(e[5]=[f(" همه مشتریان ",-1)])]),_:1})):p("",!0),c("sms.create.reagent")?(l(),a(i,{key:2,value:1},{default:t(()=>[...e[6]||(e[6]=[f(" کارشناسان فروش ",-1)])]),_:1})):p("",!0),c("sms.create.omde")?(l(),a(i,{key:3,value:2},{default:t(()=>[...e[7]||(e[7]=[f(" مشتریان عمده ",-1)])]),_:1})):p("",!0),c("sms.create.multiple")?(l(),a(i,{key:4,value:9},{default:t(()=>[...e[8]||(e[8]=[f(" شماره های موبایل ",-1)])]),_:1})):p("",!0)]),_:1},8,["value"])]),_:1}),s.value===-1||s.value===9?(l(),a(w,{key:0,label:s.value===9?"شماره های موبایل":"شماره موبایل","validate-status":o.mobile?"error":"",help:o.mobile},{default:t(()=>[s.value===9?(l(),a(C,{key:0,value:m.value,"onUpdate:value":e[1]||(e[1]=v=>m.value=v),"auto-size":{minRows:2,maxRows:6},placeholder:"هر شماره در یک خط"},null,8,["value"])):(l(),a(T,{key:1,value:m.value,"onUpdate:value":e[2]||(e[2]=v=>m.value=v)},null,8,["value"]))]),_:1},8,["label","validate-status","help"])):p("",!0)]),d(w,{label:"متن پیامک","validate-status":o.text?"error":"",help:o.text},{default:t(()=>[d(C,{value:b.value,"onUpdate:value":e[3]||(e[3]=v=>b.value=v),"auto-size":{minRows:4,maxRows:8}},null,8,["value"])]),_:1},8,["validate-status","help"]),d(V,{type:"primary",class:"form-submit",onClick:S},{default:t(()=>[...e[9]||(e[9]=[f("ارسال",-1)])]),_:1})]),_:1})]),_:1}),c("sms.list")?(l(),a(U,{key:0,title:"لیست پیامک ها",class:"mt-4"},{default:t(()=>[d(H,{ref_key:"tbl",ref:g,model:P(R),"mobile-cards":""},null,8,["model"])]),_:1})):p("",!0)]),_:1},8,["spinning"])}}}),Y=E(q,[["__scopeId","data-v-11fdeec9"]]);export{Y as default}; diff --git a/apps/admin-panel/dist/assets/create-DF-6bvjk.css b/apps/admin-panel/dist/assets/create-DF-6bvjk.css new file mode 100644 index 0000000..2d95a3f --- /dev/null +++ b/apps/admin-panel/dist/assets/create-DF-6bvjk.css @@ -0,0 +1 @@ +.grid-5[data-v-51044ea4]{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem}.ml-2[data-v-51044ea4]{margin-right:.5rem}.mt-4[data-v-51044ea4]{margin-top:1rem}.mt-5[data-v-51044ea4]{margin-top:1.25rem}.totals[data-v-51044ea4]{margin:1rem 0}@media (max-width: 575px){.grid-5[data-v-51044ea4]{grid-template-columns:1fr 1fr;column-gap:12px;row-gap:0}.grid-5[data-v-51044ea4]>:first-child{grid-column:1 / -1}.mt-5[data-v-51044ea4],.mt-4[data-v-51044ea4]{margin-top:12px}.totals[data-v-51044ea4]{margin:0 0 12px}} diff --git a/apps/admin-panel/dist/assets/create-sdJV-jnf.js b/apps/admin-panel/dist/assets/create-DrtB21nH.js similarity index 96% rename from apps/admin-panel/dist/assets/create-sdJV-jnf.js rename to apps/admin-panel/dist/assets/create-DrtB21nH.js index 8b1759f..56e44c1 100644 --- a/apps/admin-panel/dist/assets/create-sdJV-jnf.js +++ b/apps/admin-panel/dist/assets/create-DrtB21nH.js @@ -1 +1 @@ -import{d as k,a as C,w as o,m as B,r as l,o as N,c as e,H as U,p as V,f as r,z as m,y as j,G as c}from"./index-C9T3Vski.js";const z={class:"grid-2"},S=k({__name:"create",setup(O){const u=B(!1),a=m({title:"",text:"",type:0}),n=m({});async function f(){var p,t;if(Object.keys(n).forEach(s=>delete n[s]),a.title||(n.title="عنوان الزامی است"),a.text||(n.text="متن پیام الزامی است"),!Object.keys(n).length)try{u.value=!0;const{data:s}=await j.post("notify",a);c.success("نوتیفیکیشن ارسال شد"),a.title="",a.text=""}catch(s){c.error(((t=(p=s==null?void 0:s.response)==null?void 0:p.data)==null?void 0:t.message)??"خطا در ارسال")}finally{u.value=!1}}return(p,t)=>{const s=l("a-input"),d=l("a-form-item"),_=l("a-select-option"),v=l("a-select"),x=l("a-textarea"),y=l("a-button"),b=l("a-form"),g=l("a-card"),w=l("a-spin");return N(),C(w,{spinning:u.value},{default:o(()=>[e(g,{title:"ارسال نوتیفیکیشن",class:"page-card"},{default:o(()=>[e(b,{layout:"vertical",onSubmit:U(f,["prevent"])},{default:o(()=>[V("div",z,[e(d,{label:"عنوان","validate-status":n.title?"error":"",help:n.title},{default:o(()=>[e(s,{value:a.title,"onUpdate:value":t[0]||(t[0]=i=>a.title=i)},null,8,["value"])]),_:1},8,["validate-status","help"]),e(d,{label:"نوع کاربر"},{default:o(()=>[e(v,{value:a.type,"onUpdate:value":t[1]||(t[1]=i=>a.type=i)},{default:o(()=>[e(_,{value:0},{default:o(()=>[...t[3]||(t[3]=[r("همه مشتریان",-1)])]),_:1}),e(_,{value:2},{default:o(()=>[...t[4]||(t[4]=[r("مشتریان عمده",-1)])]),_:1}),e(_,{value:1},{default:o(()=>[...t[5]||(t[5]=[r("کارشناسان فروش",-1)])]),_:1})]),_:1},8,["value"])]),_:1})]),e(d,{label:"متن پیام","validate-status":n.text?"error":"",help:n.text},{default:o(()=>[e(x,{value:a.text,"onUpdate:value":t[2]||(t[2]=i=>a.text=i),"auto-size":{minRows:4,maxRows:8}},null,8,["value"])]),_:1},8,["validate-status","help"]),e(y,{type:"primary",class:"form-submit",onClick:f},{default:o(()=>[...t[6]||(t[6]=[r("ارسال",-1)])]),_:1})]),_:1})]),_:1})]),_:1},8,["spinning"])}}});export{S as default}; +import{d as k,a as C,w as o,m as B,r as l,o as N,c as e,H as U,p as V,f as r,z as m,y as j,G as c}from"./index-CuIWfDbM.js";const z={class:"grid-2"},S=k({__name:"create",setup(O){const u=B(!1),a=m({title:"",text:"",type:0}),n=m({});async function f(){var p,t;if(Object.keys(n).forEach(s=>delete n[s]),a.title||(n.title="عنوان الزامی است"),a.text||(n.text="متن پیام الزامی است"),!Object.keys(n).length)try{u.value=!0;const{data:s}=await j.post("notify",a);c.success("نوتیفیکیشن ارسال شد"),a.title="",a.text=""}catch(s){c.error(((t=(p=s==null?void 0:s.response)==null?void 0:p.data)==null?void 0:t.message)??"خطا در ارسال")}finally{u.value=!1}}return(p,t)=>{const s=l("a-input"),d=l("a-form-item"),_=l("a-select-option"),v=l("a-select"),x=l("a-textarea"),y=l("a-button"),b=l("a-form"),g=l("a-card"),w=l("a-spin");return N(),C(w,{spinning:u.value},{default:o(()=>[e(g,{title:"ارسال نوتیفیکیشن",class:"page-card"},{default:o(()=>[e(b,{layout:"vertical",onSubmit:U(f,["prevent"])},{default:o(()=>[V("div",z,[e(d,{label:"عنوان","validate-status":n.title?"error":"",help:n.title},{default:o(()=>[e(s,{value:a.title,"onUpdate:value":t[0]||(t[0]=i=>a.title=i)},null,8,["value"])]),_:1},8,["validate-status","help"]),e(d,{label:"نوع کاربر"},{default:o(()=>[e(v,{value:a.type,"onUpdate:value":t[1]||(t[1]=i=>a.type=i)},{default:o(()=>[e(_,{value:0},{default:o(()=>[...t[3]||(t[3]=[r("همه مشتریان",-1)])]),_:1}),e(_,{value:2},{default:o(()=>[...t[4]||(t[4]=[r("مشتریان عمده",-1)])]),_:1}),e(_,{value:1},{default:o(()=>[...t[5]||(t[5]=[r("کارشناسان فروش",-1)])]),_:1})]),_:1},8,["value"])]),_:1})]),e(d,{label:"متن پیام","validate-status":n.text?"error":"",help:n.text},{default:o(()=>[e(x,{value:a.text,"onUpdate:value":t[2]||(t[2]=i=>a.text=i),"auto-size":{minRows:4,maxRows:8}},null,8,["value"])]),_:1},8,["validate-status","help"]),e(y,{type:"primary",class:"form-submit",onClick:f},{default:o(()=>[...t[6]||(t[6]=[r("ارسال",-1)])]),_:1})]),_:1})]),_:1})]),_:1},8,["spinning"])}}});export{S as default}; diff --git a/apps/admin-panel/dist/assets/createCity-Bqh7Q52C.js b/apps/admin-panel/dist/assets/createCity-Bqh7Q52C.js deleted file mode 100644 index 8413b46..0000000 --- a/apps/admin-panel/dist/assets/createCity-Bqh7Q52C.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as o}from"./createCity.vue_vue_type_script_setup_true_lang-CTOztHNx.js";import"./index-C9T3Vski.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-Du4lPDHl.js";import"./CityTreeSelect.vue_vue_type_script_setup_true_lang-82fzpZxR.js";export{o as default}; diff --git a/apps/admin-panel/dist/assets/createCity-C5FzmaYB.js b/apps/admin-panel/dist/assets/createCity-C5FzmaYB.js new file mode 100644 index 0000000..67d2ae4 --- /dev/null +++ b/apps/admin-panel/dist/assets/createCity-C5FzmaYB.js @@ -0,0 +1 @@ +import{_ as o}from"./createCity.vue_vue_type_script_setup_true_lang-4Pxmqwde.js";import"./index-CuIWfDbM.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-DXuLuiBZ.js";import"./CityTreeSelect.vue_vue_type_script_setup_true_lang-Be--_CeP.js";export{o as default}; diff --git a/apps/admin-panel/dist/assets/createCity.vue_vue_type_script_setup_true_lang-CTOztHNx.js b/apps/admin-panel/dist/assets/createCity.vue_vue_type_script_setup_true_lang-4Pxmqwde.js similarity index 95% rename from apps/admin-panel/dist/assets/createCity.vue_vue_type_script_setup_true_lang-CTOztHNx.js rename to apps/admin-panel/dist/assets/createCity.vue_vue_type_script_setup_true_lang-4Pxmqwde.js index 09ec4ff..db110d9 100644 --- a/apps/admin-panel/dist/assets/createCity.vue_vue_type_script_setup_true_lang-CTOztHNx.js +++ b/apps/admin-panel/dist/assets/createCity.vue_vue_type_script_setup_true_lang-4Pxmqwde.js @@ -1 +1 @@ -import{d as R,n as z,x as E,a as y,w as n,m as g,y as w,r as p,o as k,p as U,c as a,f as G,H,z as C,G as B,l as T,k as h}from"./index-C9T3Vski.js";import{_ as q}from"./BaseFormModal.vue_vue_type_style_index_0_lang-Du4lPDHl.js";import{_ as M}from"./CityTreeSelect.vue_vue_type_script_setup_true_lang-82fzpZxR.js";const A={class:"grid-2"},D={class:"grid-2"},K=R({__name:"createCity",props:{open:{type:Boolean},id:{}},emits:["update:open","success"],setup(c,{emit:N}){const _=c,b=N,m=_.open!==void 0;h();const S=T(),r=g(!1),t=C({title:"",parent:void 0,percent:null,percent_aux:null}),f=g([]);async function x(){try{const{data:s}=await w.post("cities/list");f.value=s.rows??[]}catch(s){console.log(s)}}m?z(()=>_.open,s=>s&&x(),{immediate:!0}):E(x);const u=C({});async function v(){var s,e;if(Object.keys(u).forEach(o=>delete u[o]),!t.title){u.title="لطفا مقدار را وارد کنید";return}try{r.value=!0,await w.post("cities",{...t,parent:t.parent??null}),B.info("اطلاعات با موفقیت به ثبت رسید."),m?(Object.assign(t,{title:"",percent:null,percent_aux:null}),b("success"),b("update:open",!1)):S.push("/city/list")}catch(o){B.error(((e=(s=o==null?void 0:o.response)==null?void 0:s.data)==null?void 0:e.message)??"خطا در ثبت اطلاعات.")}finally{r.value=!1}}return(s,e)=>{const o=p("a-input"),i=p("a-form-item"),d=p("a-input-number"),V=p("a-button"),$=p("a-card"),j=p("a-form"),O=p("a-spin");return m?(k(),y(q,{key:0,open:!!c.open,id:c.id,"add-title":"افزودن شهر","edit-title":"افزودن شهر",loading:r.value,submitting:r.value,width:"sm","onUpdate:open":e[4]||(e[4]=l=>s.$emit("update:open",l)),onSubmit:v},{default:n(()=>[U("div",A,[a(i,{label:"نام شهر","validate-status":u.title?"error":"",help:u.title},{default:n(()=>[a(o,{value:t.title,"onUpdate:value":e[0]||(e[0]=l=>t.title=l)},null,8,["value"])]),_:1},8,["validate-status","help"]),a(i,{label:"والد",help:"خالی = سرشاخه، مثل کشور"},{default:n(()=>[a(M,{value:t.parent,"onUpdate:value":e[1]||(e[1]=l=>t.parent=l),cities:f.value,"parent-picker":"",placeholder:"والد را انتخاب کنید"},null,8,["value","cities"])]),_:1}),a(i,{label:"درصد مشتری عمده"},{default:n(()=>[a(d,{value:t.percent,"onUpdate:value":e[2]||(e[2]=l=>t.percent=l),class:"w-full",min:0,max:100,step:.1},null,8,["value"])]),_:1}),a(i,{label:"درصد کارشناس فروش"},{default:n(()=>[a(d,{value:t.percent_aux,"onUpdate:value":e[3]||(e[3]=l=>t.percent_aux=l),class:"w-full",min:0,max:100,step:.1},null,8,["value"])]),_:1})])]),_:1},8,["open","id","loading","submitting"])):(k(),y(O,{key:1,spinning:r.value},{default:n(()=>[a(j,{layout:"vertical",onSubmit:H(v,["prevent"])},{default:n(()=>[a($,{title:"افزودن شهر",class:"page-card"},{default:n(()=>[U("div",D,[a(i,{label:"نام شهر","validate-status":u.title?"error":"",help:u.title},{default:n(()=>[a(o,{value:t.title,"onUpdate:value":e[5]||(e[5]=l=>t.title=l)},null,8,["value"])]),_:1},8,["validate-status","help"]),a(i,{label:"والد",help:"خالی = سرشاخه، مثل کشور"},{default:n(()=>[a(M,{value:t.parent,"onUpdate:value":e[6]||(e[6]=l=>t.parent=l),cities:f.value,"parent-picker":"",placeholder:"والد را انتخاب کنید"},null,8,["value","cities"])]),_:1}),a(i,{label:"درصد مشتری عمده"},{default:n(()=>[a(d,{value:t.percent,"onUpdate:value":e[7]||(e[7]=l=>t.percent=l),class:"w-full",min:0,max:100,step:.1},null,8,["value"])]),_:1}),a(i,{label:"درصد کارشناس فروش"},{default:n(()=>[a(d,{value:t.percent_aux,"onUpdate:value":e[8]||(e[8]=l=>t.percent_aux=l),class:"w-full",min:0,max:100,step:.1},null,8,["value"])]),_:1})]),a(V,{type:"primary",class:"form-submit",onClick:v},{default:n(()=>[...e[9]||(e[9]=[G("ثبت اطلاعات",-1)])]),_:1})]),_:1})]),_:1})]),_:1},8,["spinning"]))}}});export{K as _}; +import{d as R,n as z,x as E,a as y,w as n,m as g,y as w,r as p,o as k,p as U,c as a,f as G,H,z as C,G as B,l as T,k as h}from"./index-CuIWfDbM.js";import{_ as q}from"./BaseFormModal.vue_vue_type_style_index_0_lang-DXuLuiBZ.js";import{_ as M}from"./CityTreeSelect.vue_vue_type_script_setup_true_lang-Be--_CeP.js";const A={class:"grid-2"},D={class:"grid-2"},K=R({__name:"createCity",props:{open:{type:Boolean},id:{}},emits:["update:open","success"],setup(c,{emit:N}){const _=c,b=N,m=_.open!==void 0;h();const S=T(),r=g(!1),t=C({title:"",parent:void 0,percent:null,percent_aux:null}),f=g([]);async function x(){try{const{data:s}=await w.post("cities/list");f.value=s.rows??[]}catch(s){console.log(s)}}m?z(()=>_.open,s=>s&&x(),{immediate:!0}):E(x);const u=C({});async function v(){var s,e;if(Object.keys(u).forEach(o=>delete u[o]),!t.title){u.title="لطفا مقدار را وارد کنید";return}try{r.value=!0,await w.post("cities",{...t,parent:t.parent??null}),B.info("اطلاعات با موفقیت به ثبت رسید."),m?(Object.assign(t,{title:"",percent:null,percent_aux:null}),b("success"),b("update:open",!1)):S.push("/city/list")}catch(o){B.error(((e=(s=o==null?void 0:o.response)==null?void 0:s.data)==null?void 0:e.message)??"خطا در ثبت اطلاعات.")}finally{r.value=!1}}return(s,e)=>{const o=p("a-input"),i=p("a-form-item"),d=p("a-input-number"),V=p("a-button"),$=p("a-card"),j=p("a-form"),O=p("a-spin");return m?(k(),y(q,{key:0,open:!!c.open,id:c.id,"add-title":"افزودن شهر","edit-title":"افزودن شهر",loading:r.value,submitting:r.value,width:"sm","onUpdate:open":e[4]||(e[4]=l=>s.$emit("update:open",l)),onSubmit:v},{default:n(()=>[U("div",A,[a(i,{label:"نام شهر","validate-status":u.title?"error":"",help:u.title},{default:n(()=>[a(o,{value:t.title,"onUpdate:value":e[0]||(e[0]=l=>t.title=l)},null,8,["value"])]),_:1},8,["validate-status","help"]),a(i,{label:"والد",help:"خالی = سرشاخه، مثل کشور"},{default:n(()=>[a(M,{value:t.parent,"onUpdate:value":e[1]||(e[1]=l=>t.parent=l),cities:f.value,"parent-picker":"",placeholder:"والد را انتخاب کنید"},null,8,["value","cities"])]),_:1}),a(i,{label:"درصد مشتری عمده"},{default:n(()=>[a(d,{value:t.percent,"onUpdate:value":e[2]||(e[2]=l=>t.percent=l),class:"w-full",min:0,max:100,step:.1},null,8,["value"])]),_:1}),a(i,{label:"درصد کارشناس فروش"},{default:n(()=>[a(d,{value:t.percent_aux,"onUpdate:value":e[3]||(e[3]=l=>t.percent_aux=l),class:"w-full",min:0,max:100,step:.1},null,8,["value"])]),_:1})])]),_:1},8,["open","id","loading","submitting"])):(k(),y(O,{key:1,spinning:r.value},{default:n(()=>[a(j,{layout:"vertical",onSubmit:H(v,["prevent"])},{default:n(()=>[a($,{title:"افزودن شهر",class:"page-card"},{default:n(()=>[U("div",D,[a(i,{label:"نام شهر","validate-status":u.title?"error":"",help:u.title},{default:n(()=>[a(o,{value:t.title,"onUpdate:value":e[5]||(e[5]=l=>t.title=l)},null,8,["value"])]),_:1},8,["validate-status","help"]),a(i,{label:"والد",help:"خالی = سرشاخه، مثل کشور"},{default:n(()=>[a(M,{value:t.parent,"onUpdate:value":e[6]||(e[6]=l=>t.parent=l),cities:f.value,"parent-picker":"",placeholder:"والد را انتخاب کنید"},null,8,["value","cities"])]),_:1}),a(i,{label:"درصد مشتری عمده"},{default:n(()=>[a(d,{value:t.percent,"onUpdate:value":e[7]||(e[7]=l=>t.percent=l),class:"w-full",min:0,max:100,step:.1},null,8,["value"])]),_:1}),a(i,{label:"درصد کارشناس فروش"},{default:n(()=>[a(d,{value:t.percent_aux,"onUpdate:value":e[8]||(e[8]=l=>t.percent_aux=l),class:"w-full",min:0,max:100,step:.1},null,8,["value"])]),_:1})]),a(V,{type:"primary",class:"form-submit",onClick:v},{default:n(()=>[...e[9]||(e[9]=[G("ثبت اطلاعات",-1)])]),_:1})]),_:1})]),_:1})]),_:1},8,["spinning"]))}}});export{K as _}; diff --git a/apps/admin-panel/dist/assets/filters-D6Nzbpog.js b/apps/admin-panel/dist/assets/filters-Cvt98RIq.js similarity index 86% rename from apps/admin-panel/dist/assets/filters-D6Nzbpog.js rename to apps/admin-panel/dist/assets/filters-Cvt98RIq.js index 2ccc785..a15f715 100644 --- a/apps/admin-panel/dist/assets/filters-D6Nzbpog.js +++ b/apps/admin-panel/dist/assets/filters-Cvt98RIq.js @@ -1 +1 @@ -import{m as t}from"./index-m6pCHaEa.js";function e(r){return r&&r.toString().replace(/\B(?=(\d{3})+(?!\d))/g,",")+" تومان "}function i(r){return r&&r.toString().replace(/\B(?=(\d{3})+(?!\d))/g,",")}function f(r){return r&&t(r).format("jYYYY/jMM/jDD")}function o(r){return typeof r!="string"||!/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}/.test(r)?r:t(r).format("jYYYY/jM/jD-HH:mm")}function u(r){return r&&t(r).format("jYYYY/jMM/jDD - hh:mm:ss")}export{e as a,u as b,o as g,f as j,i as p}; +import{m as t}from"./index-CPTngTRs.js";function e(r){return r&&r.toString().replace(/\B(?=(\d{3})+(?!\d))/g,",")+" تومان "}function i(r){return r&&r.toString().replace(/\B(?=(\d{3})+(?!\d))/g,",")}function f(r){return r&&t(r).format("jYYYY/jMM/jDD")}function o(r){return typeof r!="string"||!/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}/.test(r)?r:t(r).format("jYYYY/jM/jD-HH:mm")}function u(r){return r&&t(r).format("jYYYY/jMM/jDD - hh:mm:ss")}export{e as a,u as b,o as g,f as j,i as p}; diff --git a/apps/admin-panel/dist/assets/icons-1fD-iiAA.js b/apps/admin-panel/dist/assets/icons-BWdsnUVP.js similarity index 95% rename from apps/admin-panel/dist/assets/icons-1fD-iiAA.js rename to apps/admin-panel/dist/assets/icons-BWdsnUVP.js index b964259..8cd3d97 100644 --- a/apps/admin-panel/dist/assets/icons-1fD-iiAA.js +++ b/apps/admin-panel/dist/assets/icons-BWdsnUVP.js @@ -1 +1 @@ -import{c,I as l,S as j,$ as z,P as H,Q as B,W as w,E as $,D as M,a4 as C}from"./index-C9T3Vski.js";import{S as x}from"./SettingOutlined-BizkfqvN.js";import{S as _,U as A}from"./UnorderedListOutlined-Bl0oFRyr.js";import{P as D}from"./PercentageOutlined-CxUloK5J.js";import{D as E,U as L}from"./UserAddOutlined-BlPGjUCi.js";import{C as N}from"./CreditCardOutlined-BxTC_oHD.js";import{A as U}from"./AppstoreOutlined-lwgIJvjh.js";import{S as G,T}from"./TeamOutlined-j5HKaunb.js";import{U as F}from"./UserOutlined-Csu4xHRr.js";import{C as q}from"./CameraOutlined-C6gLi8-9.js";var Q={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M888 792H200V168c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v688c0 4.4 3.6 8 8 8h752c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-600-80h56c4.4 0 8-3.6 8-8V560c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v144c0 4.4 3.6 8 8 8zm152 0h56c4.4 0 8-3.6 8-8V384c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v320c0 4.4 3.6 8 8 8zm152 0h56c4.4 0 8-3.6 8-8V462c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v242c0 4.4 3.6 8 8 8zm152 0h56c4.4 0 8-3.6 8-8V304c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v400c0 4.4 3.6 8 8 8z"}}]},name:"bar-chart",theme:"outlined"};function p(r){for(var e=1;e{try{const{data:e}=await f.get("log/list/customer");p.value=e}catch(e){console.log(e)}}),(e,n)=>{const c=o("a-select-option"),r=o("a-select"),k=o("a-form-item"),C=o("a-form"),j=o("a-table"),B=o("a-card"),I=o("a-spin");return d(),v(I,{spinning:u.value},{default:t(()=>[l(B,{title:"آمار",class:"page-card table-scroll"},{default:t(()=>[l(C,{layout:"vertical"},{default:t(()=>[F("div",L,[l(k,{label:"مشتری"},{default:t(()=>[l(r,{value:s.value,"onUpdate:value":n[0]||(n[0]=a=>s.value=a),"show-search":"","allow-clear":"",placeholder:"انتخاب کنید","filter-option":b,onChange:w},{default:t(()=>[(d(!0),g(x,null,T(p.value,a=>(d(),v(c,{key:a.id,value:a.id},{default:t(()=>[y(m(a.name)+" - "+m(a.mobile),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1})])]),_:1}),l(j,{"data-source":_.value,columns:h,pagination:{pageSize:20},size:"small","row-key":"id"},{bodyCell:t(({column:a,record:N})=>[a.dataIndex==="caj"?(d(),g(x,{key:0},[y(m(D(V)(N.caj)),1)],64)):E("",!0)]),_:1},8,["data-source"])]),_:1})]),_:1},8,["spinning"])}}});export{q as default}; diff --git a/apps/admin-panel/dist/assets/index-m6pCHaEa.js b/apps/admin-panel/dist/assets/index-CPTngTRs.js similarity index 99% rename from apps/admin-panel/dist/assets/index-m6pCHaEa.js rename to apps/admin-panel/dist/assets/index-CPTngTRs.js index 05de428..2549d45 100644 --- a/apps/admin-panel/dist/assets/index-m6pCHaEa.js +++ b/apps/admin-panel/dist/assets/index-CPTngTRs.js @@ -1,4 +1,4 @@ -import{a5 as yo,a6 as Mo}from"./index-C9T3Vski.js";function Do(n){throw new Error('Could not dynamically require "'+n+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var as={exports:{}};(function(n,o){(function(u,l){n.exports=l()})(yo,function(){var u;function l(){return u.apply(null,arguments)}function h(e){u=e}function _(e){return e instanceof Array||Object.prototype.toString.call(e)==="[object Array]"}function p(e){return e!=null&&Object.prototype.toString.call(e)==="[object Object]"}function c(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function T(e){if(Object.getOwnPropertyNames)return Object.getOwnPropertyNames(e).length===0;var t;for(t in e)if(c(e,t))return!1;return!0}function F(e){return e===void 0}function C(e){return typeof e=="number"||Object.prototype.toString.call(e)==="[object Number]"}function I(e){return e instanceof Date||Object.prototype.toString.call(e)==="[object Date]"}function me(e,t){var r=[],s,a=e.length;for(s=0;s>>0,s;for(s=0;s0)for(r=0;r>>0,s;for(s=0;s0)for(r=0;r=0;return(i?r?"+":"":"-")+Math.pow(10,Math.max(0,a)).toString().substr(1)+s}var pt=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,Ve=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,Yt={},pe={};function M(e,t,r,s){var a=s;typeof s=="string"&&(a=function(){return this[s]()}),e&&(pe[e]=a),t&&(pe[t[0]]=function(){return B(a.apply(this,arguments),t[1],t[2])}),r&&(pe[r]=function(){return this.localeData().ordinal(a.apply(this,arguments),e)})}function ps(e){return e.match(/\[[\s\S]/)?e.replace(/^\[|\]$/g,""):e.replace(/\\/g,"")}function Ys(e){var t=e.match(pt),r,s;for(r=0,s=t.length;r=0&&Ve.test(e);)e=e.replace(Ve,s),Ve.lastIndex=0,r-=1;return e}var ws={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"};function gs(e){var t=this._longDateFormat[e],r=this._longDateFormat[e.toUpperCase()];return t||!r?t:(this._longDateFormat[e]=r.match(pt).map(function(s){return s==="MMMM"||s==="MM"||s==="DD"||s==="dddd"?s.slice(1):s}).join(""),this._longDateFormat[e])}var ks="Invalid date";function Ss(){return this._invalidDate}var vs="%d",Os=/\d{1,2}/;function Ts(e){return this._ordinal.replace("%d",e)}var js={future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"};function bs(e,t,r,s){var a=this._relativeTime[r];return q(a)?a(e,t,r,s):a.replace(/%d/i,e)}function xs(e,t){var r=this._relativeTime[e>0?"future":"past"];return q(r)?r(t):r.replace(/%s/i,t)}var ar={D:"date",dates:"date",date:"date",d:"day",days:"day",day:"day",e:"weekday",weekdays:"weekday",weekday:"weekday",E:"isoWeekday",isoweekdays:"isoWeekday",isoweekday:"isoWeekday",DDD:"dayOfYear",dayofyears:"dayOfYear",dayofyear:"dayOfYear",h:"hour",hours:"hour",hour:"hour",ms:"millisecond",milliseconds:"millisecond",millisecond:"millisecond",m:"minute",minutes:"minute",minute:"minute",M:"month",months:"month",month:"month",Q:"quarter",quarters:"quarter",quarter:"quarter",s:"second",seconds:"second",second:"second",gg:"weekYear",weekyears:"weekYear",weekyear:"weekYear",GG:"isoWeekYear",isoweekyears:"isoWeekYear",isoweekyear:"isoWeekYear",w:"week",weeks:"week",week:"week",W:"isoWeek",isoweeks:"isoWeek",isoweek:"isoWeek",y:"year",years:"year",year:"year"};function V(e){return typeof e=="string"?ar[e]||ar[e.toLowerCase()]:void 0}function wt(e){var t={},r,s;for(s in e)c(e,s)&&(r=V(s),r&&(t[r]=e[s]));return t}var Ps={date:9,day:11,weekday:11,isoWeekday:11,dayOfYear:4,hour:13,millisecond:16,minute:14,month:8,quarter:7,second:15,weekYear:1,isoWeekYear:1,week:5,isoWeek:5,year:1};function Ls(e){var t=[],r;for(r in e)c(e,r)&&t.push({unit:r,priority:Ps[r]});return t.sort(function(s,a){return s.priority-a.priority}),t}var nr=/\d/,H=/\d\d/,ir=/\d{3}/,gt=/\d{4}/,ze=/[+-]?\d{6}/,j=/\d\d?/,or=/\d\d\d\d?/,lr=/\d\d\d\d\d\d?/,Ze=/\d{1,3}/,kt=/\d{1,4}/,$e=/[+-]?\d{1,6}/,Ye=/\d+/,Je=/[+-]?\d+/,Ns=/Z|[+-]\d\d:?\d\d/gi,qe=/Z|[+-]\d\d(?::?\d\d)?/gi,Fs=/[+-]?\d+(\.\d{1,3})?/,be=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,we=/^[1-9]\d?/,St=/^([1-9]\d|\d)/,Be;Be={};function y(e,t,r){Be[e]=q(t)?t:function(s,a){return s&&r?r:t}}function Ws(e,t){return c(Be,e)?Be[e](t._strict,t._locale):new RegExp(Rs(e))}function Rs(e){return K(e.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,r,s,a,i){return r||s||a||i}))}function K(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function G(e){return e<0?Math.ceil(e)||0:Math.floor(e)}function g(e){var t=+e,r=0;return t!==0&&isFinite(t)&&(r=G(t)),r}var vt={};function O(e,t){var r,s=t,a;for(typeof e=="string"&&(e=[e]),C(t)&&(s=function(i,d){d[t]=g(i)}),a=e.length,r=0;r68?1900:2e3)};var ur=ge("FullYear",!0);function Hs(){return Qe(this.year())}function ge(e,t){return function(r){return r!=null?(dr(this,e,r),l.updateOffset(this,t),this):Le(this,e)}}function Le(e,t){if(!e.isValid())return NaN;var r=e._d,s=e._isUTC;switch(t){case"Milliseconds":return s?r.getUTCMilliseconds():r.getMilliseconds();case"Seconds":return s?r.getUTCSeconds():r.getSeconds();case"Minutes":return s?r.getUTCMinutes():r.getMinutes();case"Hours":return s?r.getUTCHours():r.getHours();case"Date":return s?r.getUTCDate():r.getDate();case"Day":return s?r.getUTCDay():r.getDay();case"Month":return s?r.getUTCMonth():r.getMonth();case"FullYear":return s?r.getUTCFullYear():r.getFullYear();default:return NaN}}function dr(e,t,r){var s,a,i,d,m;if(!(!e.isValid()||isNaN(r))){switch(s=e._d,a=e._isUTC,t){case"Milliseconds":return void(a?s.setUTCMilliseconds(r):s.setMilliseconds(r));case"Seconds":return void(a?s.setUTCSeconds(r):s.setSeconds(r));case"Minutes":return void(a?s.setUTCMinutes(r):s.setMinutes(r));case"Hours":return void(a?s.setUTCHours(r):s.setHours(r));case"Date":return void(a?s.setUTCDate(r):s.setDate(r));case"FullYear":break;default:return}i=r,d=e.month(),m=e.date(),m=m===29&&d===1&&!Qe(i)?28:m,a?s.setUTCFullYear(i,d,m):s.setFullYear(i,d,m)}}function As(e){return e=V(e),q(this[e])?this[e]():this}function Es(e,t){if(typeof e=="object"){e=wt(e);var r=Ls(e),s,a=r.length;for(s=0;s=0?(m=new Date(e+400,t,r,s,a,i,d),isFinite(m.getFullYear())&&m.setFullYear(e)):m=new Date(e,t,r,s,a,i,d),m}function Ne(e){var t,r;return e<100&&e>=0?(r=Array.prototype.slice.call(arguments),r[0]=e+400,t=new Date(Date.UTC.apply(null,r)),isFinite(t.getUTCFullYear())&&t.setUTCFullYear(e)):t=new Date(Date.UTC.apply(null,arguments)),t}function Xe(e,t,r){var s=7+t-r,a=(7+Ne(e,0,s).getUTCDay()-t)%7;return-a+s-1}function yr(e,t,r,s,a){var i=(7+r-s)%7,d=Xe(e,s,a),m=1+7*(t-1)+i+d,D,k;return m<=0?(D=e-1,k=Pe(D)+m):m>Pe(e)?(D=e+1,k=m-Pe(e)):(D=e,k=m),{year:D,dayOfYear:k}}function Fe(e,t,r){var s=Xe(e.year(),t,r),a=Math.floor((e.dayOfYear()-s-1)/7)+1,i,d;return a<1?(d=e.year()-1,i=a+re(d,t,r)):a>re(e.year(),t,r)?(i=a-re(e.year(),t,r),d=e.year()+1):(d=e.year(),i=a),{week:i,year:d}}function re(e,t,r){var s=Xe(e,t,r),a=Xe(e+1,t,r);return(Pe(e)-s+a)/7}M("w",["ww",2],"wo","week"),M("W",["WW",2],"Wo","isoWeek"),y("w",j,we),y("ww",j,H),y("W",j,we),y("WW",j,H),xe(["w","ww","W","WW"],function(e,t,r,s){t[s.substr(0,1)]=g(e)});function ta(e){return Fe(e,this._week.dow,this._week.doy).week}var ra={dow:0,doy:6};function sa(){return this._week.dow}function aa(){return this._week.doy}function na(e){var t=this.localeData().week(this);return e==null?t:this.add((e-t)*7,"d")}function ia(e){var t=Fe(this,1,4).week;return e==null?t:this.add((e-t)*7,"d")}M("d",0,"do","day"),M("dd",0,0,function(e){return this.localeData().weekdaysMin(this,e)}),M("ddd",0,0,function(e){return this.localeData().weekdaysShort(this,e)}),M("dddd",0,0,function(e){return this.localeData().weekdays(this,e)}),M("e",0,0,"weekday"),M("E",0,0,"isoWeekday"),y("d",j),y("e",j),y("E",j),y("dd",function(e,t){return t.weekdaysMinRegex(e)}),y("ddd",function(e,t){return t.weekdaysShortRegex(e)}),y("dddd",function(e,t){return t.weekdaysRegex(e)}),xe(["dd","ddd","dddd"],function(e,t,r,s){var a=r._locale.weekdaysParse(e,s,r._strict);a!=null?t.d=a:w(r).invalidWeekday=e}),xe(["d","e","E"],function(e,t,r,s){t[s]=g(e)});function oa(e,t){return typeof e!="string"?e:isNaN(e)?(e=t.weekdaysParse(e),typeof e=="number"?e:null):parseInt(e,10)}function la(e,t){return typeof e=="string"?t.weekdaysParse(e)%7||7:isNaN(e)?null:e}function Tt(e,t){return e.slice(t,7).concat(e.slice(0,t))}var ua="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Mr="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),da="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),fa=be,ha=be,ca=be;function _a(e,t){var r=_(this._weekdays)?this._weekdays:this._weekdays[e&&e!==!0&&this._weekdays.isFormat.test(t)?"format":"standalone"];return e===!0?Tt(r,this._week.dow):e?r[e.day()]:r}function ma(e){return e===!0?Tt(this._weekdaysShort,this._week.dow):e?this._weekdaysShort[e.day()]:this._weekdaysShort}function ya(e){return e===!0?Tt(this._weekdaysMin,this._week.dow):e?this._weekdaysMin[e.day()]:this._weekdaysMin}function Ma(e,t,r){var s,a,i,d=e.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],s=0;s<7;++s)i=J([2e3,1]).day(s),this._minWeekdaysParse[s]=this.weekdaysMin(i,"").toLocaleLowerCase(),this._shortWeekdaysParse[s]=this.weekdaysShort(i,"").toLocaleLowerCase(),this._weekdaysParse[s]=this.weekdays(i,"").toLocaleLowerCase();return r?t==="dddd"?(a=N.call(this._weekdaysParse,d),a!==-1?a:null):t==="ddd"?(a=N.call(this._shortWeekdaysParse,d),a!==-1?a:null):(a=N.call(this._minWeekdaysParse,d),a!==-1?a:null):t==="dddd"?(a=N.call(this._weekdaysParse,d),a!==-1||(a=N.call(this._shortWeekdaysParse,d),a!==-1)?a:(a=N.call(this._minWeekdaysParse,d),a!==-1?a:null)):t==="ddd"?(a=N.call(this._shortWeekdaysParse,d),a!==-1||(a=N.call(this._weekdaysParse,d),a!==-1)?a:(a=N.call(this._minWeekdaysParse,d),a!==-1?a:null)):(a=N.call(this._minWeekdaysParse,d),a!==-1||(a=N.call(this._weekdaysParse,d),a!==-1)?a:(a=N.call(this._shortWeekdaysParse,d),a!==-1?a:null))}function Da(e,t,r){var s,a,i;if(this._weekdaysParseExact)return Ma.call(this,e,t,r);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),s=0;s<7;s++){if(a=J([2e3,1]).day(s),r&&!this._fullWeekdaysParse[s]&&(this._fullWeekdaysParse[s]=new RegExp("^"+this.weekdays(a,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[s]=new RegExp("^"+this.weekdaysShort(a,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[s]=new RegExp("^"+this.weekdaysMin(a,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[s]||(i="^"+this.weekdays(a,"")+"|^"+this.weekdaysShort(a,"")+"|^"+this.weekdaysMin(a,""),this._weekdaysParse[s]=new RegExp(i.replace(".",""),"i")),r&&t==="dddd"&&this._fullWeekdaysParse[s].test(e))return s;if(r&&t==="ddd"&&this._shortWeekdaysParse[s].test(e))return s;if(r&&t==="dd"&&this._minWeekdaysParse[s].test(e))return s;if(!r&&this._weekdaysParse[s].test(e))return s}}function pa(e){if(!this.isValid())return e!=null?this:NaN;var t=Le(this,"Day");return e!=null?(e=oa(e,this.localeData()),this.add(e-t,"d")):t}function Ya(e){if(!this.isValid())return e!=null?this:NaN;var t=(this.day()+7-this.localeData()._week.dow)%7;return e==null?t:this.add(e-t,"d")}function wa(e){if(!this.isValid())return e!=null?this:NaN;if(e!=null){var t=la(e,this.localeData());return this.day(this.day()%7?t:t-7)}else return this.day()||7}function ga(e){return this._weekdaysParseExact?(c(this,"_weekdaysRegex")||jt.call(this),e?this._weekdaysStrictRegex:this._weekdaysRegex):(c(this,"_weekdaysRegex")||(this._weekdaysRegex=fa),this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex)}function ka(e){return this._weekdaysParseExact?(c(this,"_weekdaysRegex")||jt.call(this),e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(c(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=ha),this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)}function Sa(e){return this._weekdaysParseExact?(c(this,"_weekdaysRegex")||jt.call(this),e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(c(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=ca),this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)}function jt(){function e(U,oe){return oe.length-U.length}var t=[],r=[],s=[],a=[],i,d,m,D,k;for(i=0;i<7;i++)d=J([2e3,1]).day(i),m=K(this.weekdaysMin(d,"")),D=K(this.weekdaysShort(d,"")),k=K(this.weekdays(d,"")),t.push(m),r.push(D),s.push(k),a.push(m),a.push(D),a.push(k);t.sort(e),r.sort(e),s.sort(e),a.sort(e),this._weekdaysRegex=new RegExp("^("+a.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+s.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+r.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+t.join("|")+")","i")}function bt(){return this.hours()%12||12}function va(){return this.hours()||24}M("H",["HH",2],0,"hour"),M("h",["hh",2],0,bt),M("k",["kk",2],0,va),M("hmm",0,0,function(){return""+bt.apply(this)+B(this.minutes(),2)}),M("hmmss",0,0,function(){return""+bt.apply(this)+B(this.minutes(),2)+B(this.seconds(),2)}),M("Hmm",0,0,function(){return""+this.hours()+B(this.minutes(),2)}),M("Hmmss",0,0,function(){return""+this.hours()+B(this.minutes(),2)+B(this.seconds(),2)});function Dr(e,t){M(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)})}Dr("a",!0),Dr("A",!1);function pr(e,t){return t._meridiemParse}y("a",pr),y("A",pr),y("H",j,St),y("h",j,we),y("k",j,we),y("HH",j,H),y("hh",j,H),y("kk",j,H),y("hmm",or),y("hmmss",lr),y("Hmm",or),y("Hmmss",lr),O(["H","HH"],W),O(["k","kk"],function(e,t,r){var s=g(e);t[W]=s===24?0:s}),O(["a","A"],function(e,t,r){r._isPm=r._locale.isPM(e),r._meridiem=e}),O(["h","hh"],function(e,t,r){t[W]=g(e),w(r).bigHour=!0}),O("hmm",function(e,t,r){var s=e.length-2;t[W]=g(e.substr(0,s)),t[Z]=g(e.substr(s)),w(r).bigHour=!0}),O("hmmss",function(e,t,r){var s=e.length-4,a=e.length-2;t[W]=g(e.substr(0,s)),t[Z]=g(e.substr(s,2)),t[te]=g(e.substr(a)),w(r).bigHour=!0}),O("Hmm",function(e,t,r){var s=e.length-2;t[W]=g(e.substr(0,s)),t[Z]=g(e.substr(s))}),O("Hmmss",function(e,t,r){var s=e.length-4,a=e.length-2;t[W]=g(e.substr(0,s)),t[Z]=g(e.substr(s,2)),t[te]=g(e.substr(a))});function Oa(e){return(e+"").toLowerCase().charAt(0)==="p"}var Ta=/[ap]\.?m?\.?/i,ja=ge("Hours",!0);function ba(e,t,r){return e>11?r?"pm":"PM":r?"am":"AM"}var Yr={calendar:Ms,longDateFormat:ws,invalidDate:ks,ordinal:vs,dayOfMonthOrdinalParse:Os,relativeTime:js,months:Gs,monthsShort:fr,week:ra,weekdays:ua,weekdaysMin:da,weekdaysShort:Mr,meridiemParse:Ta},P={},We={},Re;function xa(e,t){var r,s=Math.min(e.length,t.length);for(r=0;r0;){if(a=Ke(i.slice(0,r).join("-")),a)return a;if(s&&s.length>=r&&xa(i,s)>=r-1)break;r--}t++}return Re}function La(e){return!!(e&&e.match("^[^/\\\\]*$"))}function Ke(e){var t=null,r;if(P[e]===void 0&&n&&n.exports&&La(e))try{t=Re._abbr,r=Do,r("./locale/"+e),de(t)}catch{P[e]=null}return P[e]}function de(e,t){var r;return e&&(F(t)?r=se(e):r=xt(e,t),r?Re=r:typeof console<"u"&&console.warn&&console.warn("Locale "+e+" not found. Did you forget to load it?")),Re._abbr}function xt(e,t){if(t!==null){var r,s=Yr;if(t.abbr=e,P[e]!=null)rr("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),s=P[e]._config;else if(t.parentLocale!=null)if(P[t.parentLocale]!=null)s=P[t.parentLocale]._config;else if(r=Ke(t.parentLocale),r!=null)s=r._config;else return We[t.parentLocale]||(We[t.parentLocale]=[]),We[t.parentLocale].push({name:e,config:t}),null;return P[e]=new Mt(yt(s,t)),We[e]&&We[e].forEach(function(a){xt(a.name,a.config)}),de(e),P[e]}else return delete P[e],null}function Na(e,t){if(t!=null){var r,s,a=Yr;P[e]!=null&&P[e].parentLocale!=null?P[e].set(yt(P[e]._config,t)):(s=Ke(e),s!=null&&(a=s._config),t=yt(a,t),s==null&&(t.abbr=e),r=new Mt(t),r.parentLocale=P[e],P[e]=r),de(e)}else P[e]!=null&&(P[e].parentLocale!=null?(P[e]=P[e].parentLocale,e===de()&&de(e)):P[e]!=null&&delete P[e]);return P[e]}function se(e){var t;if(e&&e._locale&&e._locale._abbr&&(e=e._locale._abbr),!e)return Re;if(!_(e)){if(t=Ke(e),t)return t;e=[e]}return Pa(e)}function Fa(){return Dt(P)}function Pt(e){var t,r=e._a;return r&&w(e).overflow===-2&&(t=r[ee]<0||r[ee]>11?ee:r[Q]<1||r[Q]>Ot(r[R],r[ee])?Q:r[W]<0||r[W]>24||r[W]===24&&(r[Z]!==0||r[te]!==0||r[ye]!==0)?W:r[Z]<0||r[Z]>59?Z:r[te]<0||r[te]>59?te:r[ye]<0||r[ye]>999?ye:-1,w(e)._overflowDayOfYear&&(tQ)&&(t=Q),w(e)._overflowWeeks&&t===-1&&(t=Us),w(e)._overflowWeekday&&t===-1&&(t=Is),w(e).overflow=t),e}var Wa=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,Ra=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,Ca=/Z|[+-]\d\d(?::?\d\d)?/,et=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/],["YYYYMM",/\d{6}/,!1],["YYYY",/\d{4}/,!1]],Lt=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],Ua=/^\/?Date\((-?\d+)/i,Ia=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,Ha={UT:0,GMT:0,EDT:-4*60,EST:-5*60,CDT:-5*60,CST:-6*60,MDT:-6*60,MST:-7*60,PDT:-7*60,PST:-8*60};function gr(e){var t,r,s=e._i,a=Wa.exec(s)||Ra.exec(s),i,d,m,D,k=et.length,U=Lt.length;if(a){for(w(e).iso=!0,t=0,r=k;tPe(d)||e._dayOfYear===0)&&(w(e)._overflowDayOfYear=!0),r=Ne(d,0,e._dayOfYear),e._a[ee]=r.getUTCMonth(),e._a[Q]=r.getUTCDate()),t=0;t<3&&e._a[t]==null;++t)e._a[t]=s[t]=a[t];for(;t<7;t++)e._a[t]=s[t]=e._a[t]==null?t===2?1:0:e._a[t];e._a[W]===24&&e._a[Z]===0&&e._a[te]===0&&e._a[ye]===0&&(e._nextDay=!0,e._a[W]=0),e._d=(e._useUTC?Ne:ea).apply(null,s),i=e._useUTC?e._d.getUTCDay():e._d.getDay(),e._tzm!=null&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[W]=24),e._w&&typeof e._w.d<"u"&&e._w.d!==i&&(w(e).weekdayMismatch=!0)}}function Ja(e){var t,r,s,a,i,d,m,D,k;t=e._w,t.GG!=null||t.W!=null||t.E!=null?(i=1,d=4,r=ke(t.GG,e._a[R],Fe(b(),1,4).year),s=ke(t.W,1),a=ke(t.E,1),(a<1||a>7)&&(D=!0)):(i=e._locale._week.dow,d=e._locale._week.doy,k=Fe(b(),i,d),r=ke(t.gg,e._a[R],k.year),s=ke(t.w,k.week),t.d!=null?(a=t.d,(a<0||a>6)&&(D=!0)):t.e!=null?(a=t.e+i,(t.e<0||t.e>6)&&(D=!0)):a=i),s<1||s>re(r,i,d)?w(e)._overflowWeeks=!0:D!=null?w(e)._overflowWeekday=!0:(m=yr(r,s,a,i,d),e._a[R]=m.year,e._dayOfYear=m.dayOfYear)}l.ISO_8601=function(){},l.RFC_2822=function(){};function Ft(e){if(e._f===l.ISO_8601){gr(e);return}if(e._f===l.RFC_2822){kr(e);return}e._a=[],w(e).empty=!0;var t=""+e._i,r,s,a,i,d,m=t.length,D=0,k,U;for(a=sr(e._f,e._locale).match(pt)||[],U=a.length,r=0;r0&&w(e).unusedInput.push(d),t=t.slice(t.indexOf(s)+s.length),D+=s.length),pe[i]?(s?w(e).empty=!1:w(e).unusedTokens.push(i),Cs(i,s,e)):e._strict&&!s&&w(e).unusedTokens.push(i);w(e).charsLeftOver=m-D,t.length>0&&w(e).unusedInput.push(t),e._a[W]<=12&&w(e).bigHour===!0&&e._a[W]>0&&(w(e).bigHour=void 0),w(e).parsedDateParts=e._a.slice(0),w(e).meridiem=e._meridiem,e._a[W]=qa(e._locale,e._a[W],e._meridiem),k=w(e).era,k!==null&&(e._a[R]=e._locale.erasConvertYear(k,e._a[R])),Nt(e),Pt(e)}function qa(e,t,r){var s;return r==null?t:e.meridiemHour!=null?e.meridiemHour(t,r):(e.isPM!=null&&(s=e.isPM(r),s&&t<12&&(t+=12),!s&&t===12&&(t=0)),t)}function Ba(e){var t,r,s,a,i,d,m=!1,D=e._f.length;if(D===0){w(e).invalidFormat=!0,e._d=new Date(NaN);return}for(a=0;athis?this:e:Ee()});function Or(e,t){var r,s;if(t.length===1&&_(t[0])&&(t=t[0]),!t.length)return b();for(r=t[0],s=1;sthis.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function Dn(){if(!F(this._isDSTShifted))return this._isDSTShifted;var e={},t;return mt(e,this),e=Sr(e),e._a?(t=e._isUTC?J(e._a):b(e._a),this._isDSTShifted=this.isValid()&&un(e._a,t.toArray())>0):this._isDSTShifted=!1,this._isDSTShifted}function pn(){return this.isValid()?!this._isUTC:!1}function Yn(){return this.isValid()?this._isUTC:!1}function jr(){return this.isValid()?this._isUTC&&this._offset===0:!1}var wn=/^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,gn=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function $(e,t){var r=e,s=null,a,i,d;return rt(e)?r={ms:e._milliseconds,d:e._days,M:e._months}:C(e)||!isNaN(+e)?(r={},t?r[t]=+e:r.milliseconds=+e):(s=wn.exec(e))?(a=s[1]==="-"?-1:1,r={y:0,d:g(s[Q])*a,h:g(s[W])*a,m:g(s[Z])*a,s:g(s[te])*a,ms:g(Wt(s[ye]*1e3))*a}):(s=gn.exec(e))?(a=s[1]==="-"?-1:1,r={y:Me(s[2],a),M:Me(s[3],a),w:Me(s[4],a),d:Me(s[5],a),h:Me(s[6],a),m:Me(s[7],a),s:Me(s[8],a)}):r==null?r={}:typeof r=="object"&&("from"in r||"to"in r)&&(d=kn(b(r.from),b(r.to)),r={},r.ms=d.milliseconds,r.M=d.months),i=new tt(r),rt(e)&&c(e,"_locale")&&(i._locale=e._locale),rt(e)&&c(e,"_isValid")&&(i._isValid=e._isValid),i}$.fn=tt.prototype,$.invalid=ln;function Me(e,t){var r=e&&parseFloat(e.replace(",","."));return(isNaN(r)?0:r)*t}function br(e,t){var r={};return r.months=t.month()-e.month()+(t.year()-e.year())*12,e.clone().add(r.months,"M").isAfter(t)&&--r.months,r.milliseconds=+t-+e.clone().add(r.months,"M"),r}function kn(e,t){var r;return e.isValid()&&t.isValid()?(t=Ct(t,e),e.isBefore(t)?r=br(e,t):(r=br(t,e),r.milliseconds=-r.milliseconds,r.months=-r.months),r):{milliseconds:0,months:0}}function xr(e,t){return function(r,s){var a,i;return s!==null&&!isNaN(+s)&&(rr(t,"moment()."+t+"(period, number) is deprecated. Please use moment()."+t+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),i=r,r=s,s=i),a=$(r,s),Pr(this,a,e),this}}function Pr(e,t,r,s){var a=t._milliseconds,i=Wt(t._days),d=Wt(t._months);e.isValid()&&(s=s??!0,d&&cr(e,Le(e,"Month")+d*r),i&&dr(e,"Date",Le(e,"Date")+i*r),a&&e._d.setTime(e._d.valueOf()+a*r),s&&l.updateOffset(e,i||d))}var Sn=xr(1,"add"),vn=xr(-1,"subtract");function Lr(e){return typeof e=="string"||e instanceof String}function On(e){return z(e)||I(e)||Lr(e)||C(e)||jn(e)||Tn(e)||e===null||e===void 0}function Tn(e){var t=p(e)&&!T(e),r=!1,s=["years","year","y","months","month","M","days","day","d","dates","date","D","hours","hour","h","minutes","minute","m","seconds","second","s","milliseconds","millisecond","ms"],a,i,d=s.length;for(a=0;ar.valueOf():r.valueOf()9999?Ge(r,t?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):q(Date.prototype.toISOString)?t?this.toDate().toISOString():new Date(this.valueOf()+this.utcOffset()*60*1e3).toISOString().replace("Z",Ge(r,"Z")):Ge(r,t?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")}function En(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var e="moment",t="",r,s,a,i;return this.isLocal()||(e=this.utcOffset()===0?"moment.utc":"moment.parseZone",t="Z"),r="["+e+'("]',s=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",a="-MM-DD[T]HH:mm:ss.SSS",i=t+'[")]',this.format(r+s+a+i)}function Vn(e){e||(e=this.isUtc()?l.defaultFormatUtc:l.defaultFormat);var t=Ge(this,e);return this.localeData().postformat(t)}function Gn(e,t){return this.isValid()&&(z(e)&&e.isValid()||b(e).isValid())?$({to:this,from:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()}function zn(e){return this.from(b(),e)}function Zn(e,t){return this.isValid()&&(z(e)&&e.isValid()||b(e).isValid())?$({from:this,to:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()}function $n(e){return this.to(b(),e)}function Nr(e){var t;return e===void 0?this._locale._abbr:(t=se(e),t!=null&&(this._locale=t),this)}var Fr=E("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(e){return e===void 0?this.localeData():this.locale(e)});function Wr(){return this._locale}var at=1e3,Se=60*at,nt=60*Se,Rr=(365*400+97)*24*nt;function ve(e,t){return(e%t+t)%t}function Cr(e,t,r){return e<100&&e>=0?new Date(e+400,t,r)-Rr:new Date(e,t,r).valueOf()}function Ur(e,t,r){return e<100&&e>=0?Date.UTC(e+400,t,r)-Rr:Date.UTC(e,t,r)}function Jn(e){var t,r;if(e=V(e),e===void 0||e==="millisecond"||!this.isValid())return this;switch(r=this._isUTC?Ur:Cr,e){case"year":t=r(this.year(),0,1);break;case"quarter":t=r(this.year(),this.month()-this.month()%3,1);break;case"month":t=r(this.year(),this.month(),1);break;case"week":t=r(this.year(),this.month(),this.date()-this.weekday());break;case"isoWeek":t=r(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case"day":case"date":t=r(this.year(),this.month(),this.date());break;case"hour":t=this._d.valueOf(),t-=ve(t+(this._isUTC?0:this.utcOffset()*Se),nt);break;case"minute":t=this._d.valueOf(),t-=ve(t,Se);break;case"second":t=this._d.valueOf(),t-=ve(t,at);break}return this._d.setTime(t),l.updateOffset(this,!0),this}function qn(e){var t,r;if(e=V(e),e===void 0||e==="millisecond"||!this.isValid())return this;switch(r=this._isUTC?Ur:Cr,e){case"year":t=r(this.year()+1,0,1)-1;break;case"quarter":t=r(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":t=r(this.year(),this.month()+1,1)-1;break;case"week":t=r(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":t=r(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":t=r(this.year(),this.month(),this.date()+1)-1;break;case"hour":t=this._d.valueOf(),t+=nt-ve(t+(this._isUTC?0:this.utcOffset()*Se),nt)-1;break;case"minute":t=this._d.valueOf(),t+=Se-ve(t,Se)-1;break;case"second":t=this._d.valueOf(),t+=at-ve(t,at)-1;break}return this._d.setTime(t),l.updateOffset(this,!0),this}function Bn(){return this._d.valueOf()-(this._offset||0)*6e4}function Qn(){return Math.floor(this.valueOf()/1e3)}function Xn(){return new Date(this.valueOf())}function Kn(){var e=this;return[e.year(),e.month(),e.date(),e.hour(),e.minute(),e.second(),e.millisecond()]}function ei(){var e=this;return{years:e.year(),months:e.month(),date:e.date(),hours:e.hours(),minutes:e.minutes(),seconds:e.seconds(),milliseconds:e.milliseconds()}}function ti(){return this.isValid()?this.toISOString():null}function ri(){return ct(this)}function si(){return ue({},w(this))}function ai(){return w(this).overflow}function ni(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}}M("N",0,0,"eraAbbr"),M("NN",0,0,"eraAbbr"),M("NNN",0,0,"eraAbbr"),M("NNNN",0,0,"eraName"),M("NNNNN",0,0,"eraNarrow"),M("y",["y",1],"yo","eraYear"),M("y",["yy",2],0,"eraYear"),M("y",["yyy",3],0,"eraYear"),M("y",["yyyy",4],0,"eraYear"),y("N",It),y("NN",It),y("NNN",It),y("NNNN",yi),y("NNNNN",Mi),O(["N","NN","NNN","NNNN","NNNNN"],function(e,t,r,s){var a=r._locale.erasParse(e,s,r._strict);a?w(r).era=a:w(r).invalidEra=e}),y("y",Ye),y("yy",Ye),y("yyy",Ye),y("yyyy",Ye),y("yo",Di),O(["y","yy","yyy","yyyy"],R),O(["yo"],function(e,t,r,s){var a;r._locale._eraYearOrdinalRegex&&(a=e.match(r._locale._eraYearOrdinalRegex)),r._locale.eraYearOrdinalParse?t[R]=r._locale.eraYearOrdinalParse(e,a):t[R]=parseInt(e,10)});function ii(e,t){var r,s,a,i=this._eras||se("en")._eras;for(r=0,s=i.length;r=0)return i[s]}function li(e,t){var r=e.since<=e.until?1:-1;return t===void 0?l(e.since).year():l(e.since).year()+(t-e.offset)*r}function ui(){var e,t,r,s=this.localeData().eras();for(e=0,t=s.length;ei&&(t=i),vi.call(this,e,t,r,s,a))}function vi(e,t,r,s,a){var i=yr(e,t,r,s,a),d=Ne(i.year,0,i.dayOfYear);return this.year(d.getUTCFullYear()),this.month(d.getUTCMonth()),this.date(d.getUTCDate()),this}M("Q",0,"Qo","quarter"),y("Q",nr),O("Q",function(e,t){t[ee]=(g(e)-1)*3});function Oi(e){return e==null?Math.ceil((this.month()+1)/3):this.month((e-1)*3+this.month()%3)}M("D",["DD",2],"Do","date"),y("D",j,we),y("DD",j,H),y("Do",function(e,t){return e?t._dayOfMonthOrdinalParse||t._ordinalParse:t._dayOfMonthOrdinalParseLenient}),O(["D","DD"],Q),O("Do",function(e,t){t[Q]=g(e.match(j)[0])});var Hr=ge("Date",!0);M("DDD",["DDDD",3],"DDDo","dayOfYear"),y("DDD",Ze),y("DDDD",ir),O(["DDD","DDDD"],function(e,t,r){r._dayOfYear=g(e)});function Ti(e){var t=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return e==null?t:this.add(e-t,"d")}M("m",["mm",2],0,"minute"),y("m",j,St),y("mm",j,H),O(["m","mm"],Z);var ji=ge("Minutes",!1);M("s",["ss",2],0,"second"),y("s",j,St),y("ss",j,H),O(["s","ss"],te);var bi=ge("Seconds",!1);M("S",0,0,function(){return~~(this.millisecond()/100)}),M(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),M(0,["SSS",3],0,"millisecond"),M(0,["SSSS",4],0,function(){return this.millisecond()*10}),M(0,["SSSSS",5],0,function(){return this.millisecond()*100}),M(0,["SSSSSS",6],0,function(){return this.millisecond()*1e3}),M(0,["SSSSSSS",7],0,function(){return this.millisecond()*1e4}),M(0,["SSSSSSSS",8],0,function(){return this.millisecond()*1e5}),M(0,["SSSSSSSSS",9],0,function(){return this.millisecond()*1e6}),y("S",Ze,nr),y("SS",Ze,H),y("SSS",Ze,ir);var fe,Ar;for(fe="SSSS";fe.length<=9;fe+="S")y(fe,Ye);function xi(e,t){t[ye]=g(("0."+e)*1e3)}for(fe="S";fe.length<=9;fe+="S")O(fe,xi);Ar=ge("Milliseconds",!1),M("z",0,0,"zoneAbbr"),M("zz",0,0,"zoneName");function Pi(){return this._isUTC?"UTC":""}function Li(){return this._isUTC?"Coordinated Universal Time":""}var f=je.prototype;f.add=Sn,f.calendar=Pn,f.clone=Ln,f.diff=In,f.endOf=qn,f.format=Vn,f.from=Gn,f.fromNow=zn,f.to=Zn,f.toNow=$n,f.get=As,f.invalidAt=ai,f.isAfter=Nn,f.isBefore=Fn,f.isBetween=Wn,f.isSame=Rn,f.isSameOrAfter=Cn,f.isSameOrBefore=Un,f.isValid=ri,f.lang=Fr,f.locale=Nr,f.localeData=Wr,f.max=tn,f.min=en,f.parsingFlags=si,f.set=Es,f.startOf=Jn,f.subtract=vn,f.toArray=Kn,f.toObject=ei,f.toDate=Xn,f.toISOString=An,f.inspect=En,typeof Symbol<"u"&&Symbol.for!=null&&(f[Symbol.for("nodejs.util.inspect.custom")]=function(){return"Moment<"+this.format()+">"}),f.toJSON=ti,f.toString=Hn,f.unix=Qn,f.valueOf=Bn,f.creationData=ni,f.eraName=ui,f.eraNarrow=di,f.eraAbbr=fi,f.eraYear=hi,f.year=ur,f.isLeapYear=Hs,f.weekYear=pi,f.isoWeekYear=Yi,f.quarter=f.quarters=Oi,f.month=_r,f.daysInMonth=Qs,f.week=f.weeks=na,f.isoWeek=f.isoWeeks=ia,f.weeksInYear=ki,f.weeksInWeekYear=Si,f.isoWeeksInYear=wi,f.isoWeeksInISOWeekYear=gi,f.date=Hr,f.day=f.days=pa,f.weekday=Ya,f.isoWeekday=wa,f.dayOfYear=Ti,f.hour=f.hours=ja,f.minute=f.minutes=ji,f.second=f.seconds=bi,f.millisecond=f.milliseconds=Ar,f.utcOffset=fn,f.utc=cn,f.local=_n,f.parseZone=mn,f.hasAlignedHourOffset=yn,f.isDST=Mn,f.isLocal=pn,f.isUtcOffset=Yn,f.isUtc=jr,f.isUTC=jr,f.zoneAbbr=Pi,f.zoneName=Li,f.dates=E("dates accessor is deprecated. Use date instead.",Hr),f.months=E("months accessor is deprecated. Use month instead",_r),f.years=E("years accessor is deprecated. Use year instead",ur),f.zone=E("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",hn),f.isDSTShifted=E("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",Dn);function Ni(e){return b(e*1e3)}function Fi(){return b.apply(null,arguments).parseZone()}function Er(e){return e}var v=Mt.prototype;v.calendar=Ds,v.longDateFormat=gs,v.invalidDate=Ss,v.ordinal=Ts,v.preparse=Er,v.postformat=Er,v.relativeTime=bs,v.pastFuture=xs,v.set=ys,v.eras=ii,v.erasParse=oi,v.erasConvertYear=li,v.erasAbbrRegex=_i,v.erasNameRegex=ci,v.erasNarrowRegex=mi,v.months=$s,v.monthsShort=Js,v.monthsParse=Bs,v.monthsRegex=Ks,v.monthsShortRegex=Xs,v.week=ta,v.firstDayOfYear=aa,v.firstDayOfWeek=sa,v.weekdays=_a,v.weekdaysMin=ya,v.weekdaysShort=ma,v.weekdaysParse=Da,v.weekdaysRegex=ga,v.weekdaysShortRegex=ka,v.weekdaysMinRegex=Sa,v.isPM=Oa,v.meridiem=ba;function ot(e,t,r,s){var a=se(),i=J().set(s,t);return a[r](i,e)}function Vr(e,t,r){if(C(e)&&(t=e,e=void 0),e=e||"",t!=null)return ot(e,t,r,"month");var s,a=[];for(s=0;s<12;s++)a[s]=ot(e,s,r,"month");return a}function At(e,t,r,s){typeof e=="boolean"?(C(t)&&(r=t,t=void 0),t=t||""):(t=e,r=t,e=!1,C(t)&&(r=t,t=void 0),t=t||"");var a=se(),i=e?a._week.dow:0,d,m=[];if(r!=null)return ot(t,(r+i)%7,s,"day");for(d=0;d<7;d++)m[d]=ot(t,(d+i)%7,s,"day");return m}function Wi(e,t){return Vr(e,t,"months")}function Ri(e,t){return Vr(e,t,"monthsShort")}function Ci(e,t,r){return At(e,t,r,"weekdays")}function Ui(e,t,r){return At(e,t,r,"weekdaysShort")}function Ii(e,t,r){return At(e,t,r,"weekdaysMin")}de("en",{eras:[{since:"0001-01-01",until:1/0,offset:1,name:"Anno Domini",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"Before Christ",narrow:"BC",abbr:"BC"}],dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10,r=g(e%100/10)===1?"th":t===1?"st":t===2?"nd":t===3?"rd":"th";return e+r}}),l.lang=E("moment.lang is deprecated. Use moment.locale instead.",de),l.langData=E("moment.langData is deprecated. Use moment.localeData instead.",se);var ae=Math.abs;function Hi(){var e=this._data;return this._milliseconds=ae(this._milliseconds),this._days=ae(this._days),this._months=ae(this._months),e.milliseconds=ae(e.milliseconds),e.seconds=ae(e.seconds),e.minutes=ae(e.minutes),e.hours=ae(e.hours),e.months=ae(e.months),e.years=ae(e.years),this}function Gr(e,t,r,s){var a=$(t,r);return e._milliseconds+=s*a._milliseconds,e._days+=s*a._days,e._months+=s*a._months,e._bubble()}function Ai(e,t){return Gr(this,e,t,1)}function Ei(e,t){return Gr(this,e,t,-1)}function zr(e){return e<0?Math.floor(e):Math.ceil(e)}function Vi(){var e=this._milliseconds,t=this._days,r=this._months,s=this._data,a,i,d,m,D;return e>=0&&t>=0&&r>=0||e<=0&&t<=0&&r<=0||(e+=zr(Et(r)+t)*864e5,t=0,r=0),s.milliseconds=e%1e3,a=G(e/1e3),s.seconds=a%60,i=G(a/60),s.minutes=i%60,d=G(i/60),s.hours=d%24,t+=G(d/24),D=G(Zr(t)),r+=D,t-=zr(Et(D)),m=G(r/12),r%=12,s.days=t,s.months=r,s.years=m,this}function Zr(e){return e*4800/146097}function Et(e){return e*146097/4800}function Gi(e){if(!this.isValid())return NaN;var t,r,s=this._milliseconds;if(e=V(e),e==="month"||e==="quarter"||e==="year")switch(t=this._days+s/864e5,r=this._months+Zr(t),e){case"month":return r;case"quarter":return r/3;case"year":return r/12}else switch(t=this._days+Math.round(Et(this._months)),e){case"week":return t/7+s/6048e5;case"day":return t+s/864e5;case"hour":return t*24+s/36e5;case"minute":return t*1440+s/6e4;case"second":return t*86400+s/1e3;case"millisecond":return Math.floor(t*864e5)+s;default:throw new Error("Unknown unit "+e)}}function ne(e){return function(){return this.as(e)}}var $r=ne("ms"),zi=ne("s"),Zi=ne("m"),$i=ne("h"),Ji=ne("d"),qi=ne("w"),Bi=ne("M"),Qi=ne("Q"),Xi=ne("y"),Ki=$r;function eo(){return $(this)}function to(e){return e=V(e),this.isValid()?this[e+"s"]():NaN}function De(e){return function(){return this.isValid()?this._data[e]:NaN}}var ro=De("milliseconds"),so=De("seconds"),ao=De("minutes"),no=De("hours"),io=De("days"),oo=De("months"),lo=De("years");function uo(){return G(this.days()/7)}var ie=Math.round,Oe={ss:44,s:45,m:45,h:22,d:26,w:null,M:11};function fo(e,t,r,s,a){return a.relativeTime(t||1,!!r,e,s)}function ho(e,t,r,s){var a=$(e).abs(),i=ie(a.as("s")),d=ie(a.as("m")),m=ie(a.as("h")),D=ie(a.as("d")),k=ie(a.as("M")),U=ie(a.as("w")),oe=ie(a.as("y")),he=i<=r.ss&&["s",i]||i0,he[4]=s,fo.apply(null,he)}function co(e){return e===void 0?ie:typeof e=="function"?(ie=e,!0):!1}function _o(e,t){return Oe[e]===void 0?!1:t===void 0?Oe[e]:(Oe[e]=t,e==="s"&&(Oe.ss=t-1),!0)}function mo(e,t){if(!this.isValid())return this.localeData().invalidDate();var r=!1,s=Oe,a,i;return typeof e=="object"&&(t=e,e=!1),typeof e=="boolean"&&(r=e),typeof t=="object"&&(s=Object.assign({},Oe,t),t.s!=null&&t.ss==null&&(s.ss=t.s-1)),a=this.localeData(),i=ho(this,!r,s,a),r&&(i=a.pastFuture(+this,i)),a.postformat(i)}var Vt=Math.abs;function Te(e){return(e>0)-(e<0)||+e}function lt(){if(!this.isValid())return this.localeData().invalidDate();var e=Vt(this._milliseconds)/1e3,t=Vt(this._days),r=Vt(this._months),s,a,i,d,m=this.asSeconds(),D,k,U,oe;return m?(s=G(e/60),a=G(s/60),e%=60,s%=60,i=G(r/12),r%=12,d=e?e.toFixed(3).replace(/\.?0+$/,""):"",D=m<0?"-":"",k=Te(this._months)!==Te(m)?"-":"",U=Te(this._days)!==Te(m)?"-":"",oe=Te(this._milliseconds)!==Te(m)?"-":"",D+"P"+(i?k+i+"Y":"")+(r?k+r+"M":"")+(t?U+t+"D":"")+(a||s||e?"T":"")+(a?oe+a+"H":"")+(s?oe+s+"M":"")+(e?oe+d+"S":"")):"P0D"}var S=tt.prototype;S.isValid=on,S.abs=Hi,S.add=Ai,S.subtract=Ei,S.as=Gi,S.asMilliseconds=$r,S.asSeconds=zi,S.asMinutes=Zi,S.asHours=$i,S.asDays=Ji,S.asWeeks=qi,S.asMonths=Bi,S.asQuarters=Qi,S.asYears=Xi,S.valueOf=Ki,S._bubble=Vi,S.clone=eo,S.get=to,S.milliseconds=ro,S.seconds=so,S.minutes=ao,S.hours=no,S.days=io,S.weeks=uo,S.months=oo,S.years=lo,S.humanize=mo,S.toISOString=lt,S.toString=lt,S.toJSON=lt,S.locale=Nr,S.localeData=Wr,S.toIsoString=E("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",lt),S.lang=Fr,M("X",0,0,"unix"),M("x",0,0,"valueOf"),y("x",Je),y("X",Fs),O("X",function(e,t,r){r._d=new Date(parseFloat(e)*1e3)}),O("x",function(e,t,r){r._d=new Date(g(e))});//! moment.js diff --git a/apps/admin-panel/dist/assets/index-C9T3Vski.js b/apps/admin-panel/dist/assets/index-CuIWfDbM.js similarity index 98% rename from apps/admin-panel/dist/assets/index-C9T3Vski.js rename to apps/admin-panel/dist/assets/index-CuIWfDbM.js index 046a0c9..7b4184b 100644 --- a/apps/admin-panel/dist/assets/index-C9T3Vski.js +++ b/apps/admin-panel/dist/assets/index-CuIWfDbM.js @@ -1,4 +1,4 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/Dashboard-BYSpDtqA.js","assets/filters-D6Nzbpog.js","assets/index-m6pCHaEa.js","assets/UserAddOutlined-BlPGjUCi.js","assets/CreditCardOutlined-BxTC_oHD.js","assets/Dashboard-DDxYNHoh.css","assets/myData-Dsrps5OB.js","assets/auth-CIh5zA9X.js","assets/Const-g9kcjAq3.js","assets/useDeleteHandler-D_sYZzLs.js","assets/ImageUploadInput.vue_vue_type_script_setup_true_lang-Bjo3vw78.js","assets/Const-Cg3w2iOi.css","assets/wallet-CIYgq7wX.js","assets/wallet-C3HGxzJR.css","assets/accounting-CV0dCHMN.js","assets/LockOutlined-DIFpMdwT.js","assets/SafetyCertificateOutlined-DS5dQeR2.js","assets/accounting-C1WiWzRh.css","assets/wage-B8ummm0O.js","assets/wage-BeeFFahC.css","assets/report-Dqz_8JiO.js","assets/report-Baq2jRIT.css","assets/AddProduct-vqd1_hig.js","assets/AppstoreOutlined-lwgIJvjh.js","assets/PictureOutlined-BBgbZIZs.js","assets/AddProduct-Bl-1Lqf-.css","assets/EditProduct-CAmy4CHb.js","assets/ProductList-BELR06_U.js","assets/model-B4TWAN58.js","assets/SettingOutlined-BizkfqvN.js","assets/model-BYVpc9QD.css","assets/AccountingSyncButton.vue_vue_type_script_setup_true_lang-DQT4x2vG.js","assets/productListModel-D3MWMWSR.js","assets/ProductList-D4ZJWLMm.css","assets/Add-su3cMDjW.js","assets/Add.vue_vue_type_script_setup_true_lang-UtZ_MoEU.js","assets/BaseFormModal.vue_vue_type_style_index_0_lang-Du4lPDHl.js","assets/BaseFormModal-Dd4CwqJh.css","assets/Edit-zdHd1rSg.js","assets/List-CG4Z6bu4.js","assets/ListPageHeader.vue_vue_type_script_setup_true_lang-BDf2BWcO.js","assets/addFinDoc-BK_gCf66.js","assets/addFinDoc.vue_vue_type_script_setup_true_lang-DVg9XEpR.js","assets/List-DuiptuLt.js","assets/TooltipBtn.vue_vue_type_script_setup_true_lang-4rxU9Kz6.js","assets/icons-1fD-iiAA.js","assets/UnorderedListOutlined-Bl0oFRyr.js","assets/PercentageOutlined-CxUloK5J.js","assets/TeamOutlined-j5HKaunb.js","assets/UserOutlined-Csu4xHRr.js","assets/CameraOutlined-C6gLi8-9.js","assets/OrderStatusTimeline-DQxbBFjr.js","assets/OrderStatusTimeline-nDDfaXIt.css","assets/List-vIzaRldC.css","assets/OmdeList-Bv_RjTnU.js","assets/OmdeList-D6Hbka2-.css","assets/MakeOrder-CVDhxNHn.js","assets/MakeOrder-CURJu9sW.css","assets/create-CWKMmAqe.js","assets/create-ChEWb1ne.css","assets/TaminList-Bdw9wOZC.js","assets/TaminList-CDSG2cQ_.css","assets/promotion_list-D-4sV3K8.js","assets/promotion_add_edit.vue_vue_type_script_setup_true_lang-Bdn0NdEJ.js","assets/PromotionForm-52rIR-eP.js","assets/PromotionForm-BbHzArCn.css","assets/promotion_tak_add_edit.vue_vue_type_script_setup_true_lang-CfQ1fkyJ.js","assets/promotion_list-DWgKEjg6.css","assets/promotion_add_edit-CgFIHrlC.js","assets/promotion_tak_add_edit-CPqK-9Fx.js","assets/offersIgnore-add-edit-B3lGBXKX.js","assets/offersIgnore-add-edit-C3EKEL14.css","assets/Comments-84or1_Dw.js","assets/brand-icon-COpT6LnI.js","assets/Comments-q2I8jWwp.css","assets/create-CgPuMsyQ.js","assets/create-CxWgJ0bc.css","assets/user-CZGgwdh4.js","assets/user-B-bC_c-g.css","assets/wallet-CRMlwTVz.js","assets/EditReagent-CbP03n0b.js","assets/ReagentCustomer-psdi2cEz.js","assets/CityTreeSelect.vue_vue_type_script_setup_true_lang-82fzpZxR.js","assets/ShopOutlined-BBtTJF4e.js","assets/EnvironmentOutlined-D8YNH9-a.js","assets/ReagentCustomer-BJbNfaGF.css","assets/AgentDetail-I4vedLK5.js","assets/AgentDetail-BKCHh-yo.css","assets/EditBulkCustomer-CjmYWWAE.js","assets/bulkCustomer.vue_vue_type_script_setup_true_lang-DMrGU5vL.js","assets/DateInput-CCBYpdHy.js","assets/DateInput-BFphsjxa.css","assets/ViewOmdeCustomer-BKSPOR2P.js","assets/CustomerDetail-CNcF_ewE.js","assets/CustomerDetail-DGAY9nkY.css","assets/EditSingleCustomer-CiBSDI3W.js","assets/singleCustomer-B931OwFF.js","assets/singleCustomer-D73A_q4T.css","assets/ViewSingleCustomer-DeOwrnjc.js","assets/OmdeList-DjtyuZa4.js","assets/OmdeCustomerList-CUnRtzSY.js","assets/OmdeCustomerList-qppHqBFQ.css","assets/OmdeNonVerifiedList-D3F2qm6p.js","assets/BankerList-BBecJAZf.js","assets/ShopkeeperList-Dnuzz4fz.js","assets/OmdeArchivedList-CO5mnnTL.js","assets/ReagentList-Czb_sG4J.js","assets/AddCustomer-Bu_rmAI_.js","assets/AddCustomer-B8yzj_hO.css","assets/SingleCustomer-DA-x6ajs.js","assets/SingleCustomer-DXPJhDMT.css","assets/order_item-wHl0NgIE.js","assets/order_item-L-QxFgjw.css","assets/product-Xx7JAqqz.js","assets/product-ft0Taq8s.css","assets/list-BdzfL2bH.js","assets/ListUser-Dn_cWc7q.js","assets/UserCreate-CsSpfDYW.js","assets/UserCreate-kr2EAKPI.css","assets/UserEdit-C2ssJRW5.js","assets/Permission-DZzW6sWK.js","assets/Permission-PeCa09B2.css","assets/createCity-Bqh7Q52C.js","assets/createCity.vue_vue_type_script_setup_true_lang-CTOztHNx.js","assets/cityList-B-_VsYqo.js","assets/index-B88GNRcu.js","assets/newsletters-Dp-uDvrN.js","assets/newsletters-BbmfL6_F.css","assets/AddBranches-DU8yZZ7h.js","assets/AddBranches.vue_vue_type_script_setup_true_lang-Bih_hMrV.js","assets/EditBranches-WiGJ4Cid.js","assets/ListBranches-j6HPMiyF.js","assets/FacilityList.vue_vue_type_script_setup_true_lang-B_mHvw0Q.js","assets/AddWorkshop-BCAZal60.js","assets/AddWorkshop.vue_vue_type_script_setup_true_lang-CeG9w0ns.js","assets/EditWorkshop-BXaHV3ua.js","assets/ListWorkshop-CMWnryq4.js","assets/AddInvoice-CuzOOF2n.js","assets/AddInvoice-DbwyBxeJ.css","assets/EditInvoice-C-LQY9JQ.js","assets/ListInvoice-CEdZfwfN.js","assets/ListInvoice-CARcAUSN.css","assets/Login-DK3w3wDb.js","assets/Login-DLvlSeqG.css","assets/reg-DKluouRE.js","assets/reg-ClbWC7bS.css","assets/Main-BMz1b_vd.js","assets/Main-CVJwoMQ9.css","assets/IamCallback-DhJEaFs9.js","assets/Error404-wBXgni5U.js","assets/Error404-CQyPUoKe.css","assets/Error500-luonCp1d.js","assets/Error500-Cne_2YUW.css","assets/NotAuthorized-BRSMpGLt.js","assets/NotAuthorized-B2SbXtX1.css","assets/Maintenance-i-vsIiRb.js","assets/Maintenance-Duz6NlUR.css"])))=>i.map(i=>d[i]); +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/Dashboard-Dlp4nbOK.js","assets/filters-Cvt98RIq.js","assets/index-CPTngTRs.js","assets/UserAddOutlined-BBmLFe8z.js","assets/CreditCardOutlined-BRF7XcYB.js","assets/Dashboard-DDxYNHoh.css","assets/myData-Bw7dlBDT.js","assets/auth-N_Kcbhfe.js","assets/Const-ClhpuA-u.js","assets/useDeleteHandler-c5WtaKjp.js","assets/ImageUploadInput.vue_vue_type_script_setup_true_lang-Bb4hJ8Y2.js","assets/Const-Cg3w2iOi.css","assets/wallet-Dn2Q-Ksn.js","assets/wallet-C3HGxzJR.css","assets/accounting-CiNdGIQr.js","assets/LockOutlined-V3haYHlA.js","assets/SafetyCertificateOutlined-DWQ69biy.js","assets/accounting-C1WiWzRh.css","assets/wage-jfkWWu7u.js","assets/wage-BeeFFahC.css","assets/report-BbioztMT.js","assets/report-Baq2jRIT.css","assets/ChangePercent-Befh4mBT.js","assets/select--BgT6D7O.js","assets/AddProduct-r48hWej-.js","assets/AppstoreOutlined-6RRW3vIa.js","assets/PictureOutlined-CixWElmx.js","assets/AddProduct-DnGFaytI.css","assets/EditProduct-LurNZlNq.js","assets/ProductList-Ce9z5yIO.js","assets/model-D_9omyEY.js","assets/SettingOutlined-BehgjsnT.js","assets/model-DB3OrB0q.css","assets/AccountingSyncButton.vue_vue_type_script_setup_true_lang-BgmQz3-B.js","assets/productListModel-CFcqDeGA.js","assets/ProductList-D4ZJWLMm.css","assets/Add-BjGFcwMZ.js","assets/Add.vue_vue_type_script_setup_true_lang-GQn7yiQq.js","assets/BaseFormModal.vue_vue_type_style_index_0_lang-DXuLuiBZ.js","assets/BaseFormModal-Dd4CwqJh.css","assets/Edit-GrGMWZFB.js","assets/List-BbWC9Lv8.js","assets/ListPageHeader.vue_vue_type_script_setup_true_lang-ReVXBl8h.js","assets/addFinDoc-DEQ45dH9.js","assets/addFinDoc.vue_vue_type_script_setup_true_lang-DkT33edE.js","assets/List-CoXqHG4E.js","assets/TooltipBtn.vue_vue_type_script_setup_true_lang-D0mVo7Ou.js","assets/icons-BWdsnUVP.js","assets/UnorderedListOutlined-DOoZELHj.js","assets/PercentageOutlined-Cooaq8mh.js","assets/TeamOutlined-CqxRZks7.js","assets/UserOutlined-aZ-mQgwc.js","assets/CameraOutlined-Dx8LoT1m.js","assets/OrderStatusTimeline-e__KlfQg.js","assets/OrderStatusTimeline-nDDfaXIt.css","assets/List-vIzaRldC.css","assets/OmdeList-DwZ5G-mD.js","assets/OmdeList-DdMSdBOz.css","assets/MakeOrder-DcmMw-Ed.js","assets/MakeOrder-DOwP9BUX.css","assets/create-CGtDjjLW.js","assets/create-DF-6bvjk.css","assets/TaminList-DKlA-3xq.js","assets/TaminList-Bj3tB-Tk.css","assets/promotion_list-CrT5dPh9.js","assets/promotion_add_edit.vue_vue_type_script_setup_true_lang-BcDNzdIE.js","assets/PromotionForm-0qEJgxJk.js","assets/PromotionForm-CMK9v6id.css","assets/promotion_tak_add_edit.vue_vue_type_script_setup_true_lang-DUmF7fkx.js","assets/promotion_list-DWgKEjg6.css","assets/promotion_add_edit-BpSQ8j9m.js","assets/promotion_tak_add_edit-fKo-hzti.js","assets/offersIgnore-add-edit-91QFt_p-.js","assets/offersIgnore-add-edit-C3EKEL14.css","assets/Comments-CWF3WkAj.js","assets/brand-icon-COpT6LnI.js","assets/Comments-q2I8jWwp.css","assets/create-D17Jdy3G.js","assets/create-CxWgJ0bc.css","assets/user-BY3lJe4x.js","assets/user-B-bC_c-g.css","assets/wallet-B3WVA1VR.js","assets/EditReagent-CtSia1u-.js","assets/ReagentCustomer-HYOR5FLS.js","assets/CityTreeSelect.vue_vue_type_script_setup_true_lang-Be--_CeP.js","assets/ShopOutlined--nD1gJHu.js","assets/EnvironmentOutlined-BBvjB5-8.js","assets/ReagentCustomer-BJbNfaGF.css","assets/AgentDetail-BKfKoisk.js","assets/AgentDetail-BKCHh-yo.css","assets/EditBulkCustomer-kgIfXULj.js","assets/bulkCustomer.vue_vue_type_script_setup_true_lang-DEtGbCJP.js","assets/DateInput-CJzwI_r_.js","assets/DateInput-BFphsjxa.css","assets/ViewOmdeCustomer-Bcz-RlKZ.js","assets/CustomerDetail-BSLGyXe8.js","assets/CustomerDetail-DGAY9nkY.css","assets/EditSingleCustomer-Dtewptpz.js","assets/singleCustomer-CKYyRyfm.js","assets/singleCustomer-D73A_q4T.css","assets/ViewSingleCustomer-DBxv4PII.js","assets/OmdeList-BPQg9z5E.js","assets/OmdeCustomerList-hz8XVJlR.js","assets/OmdeCustomerList-qppHqBFQ.css","assets/OmdeNonVerifiedList-Cz-xbvxD.js","assets/BankerList-DME3NFhp.js","assets/ShopkeeperList-CNr7J22i.js","assets/OmdeArchivedList-DUyxnhff.js","assets/ReagentList-DFuil1Fc.js","assets/AddCustomer-4pjOTaMU.js","assets/AddCustomer-B8yzj_hO.css","assets/SingleCustomer-CNavZnHq.js","assets/SingleCustomer-DXPJhDMT.css","assets/order_item-BFmM5TXK.js","assets/order_item-L-QxFgjw.css","assets/product-BTYL3Cka.js","assets/product-ft0Taq8s.css","assets/list-DfwcQJBp.js","assets/ListUser-C1Zucffo.js","assets/UserCreate-CAC2S8Dh.js","assets/UserCreate-kr2EAKPI.css","assets/UserEdit-Ctgu46hW.js","assets/Permission-g4pVYrJk.js","assets/Permission-PeCa09B2.css","assets/createCity-C5FzmaYB.js","assets/createCity.vue_vue_type_script_setup_true_lang-4Pxmqwde.js","assets/cityList-Di6FAlpW.js","assets/index-D7fgJeq3.js","assets/newsletters-DorV2BSu.js","assets/newsletters-BbmfL6_F.css","assets/AddBranches-DbAUL4Wv.js","assets/AddBranches.vue_vue_type_script_setup_true_lang-tTVzu-ki.js","assets/EditBranches-BF5D0IM-.js","assets/ListBranches-yjRFBIa3.js","assets/FacilityList.vue_vue_type_script_setup_true_lang-CJ5yGUm_.js","assets/AddWorkshop-w6-wM1qw.js","assets/AddWorkshop.vue_vue_type_script_setup_true_lang-CzFwzleM.js","assets/EditWorkshop-3JbFw7DS.js","assets/ListWorkshop-C35LOBaQ.js","assets/AddInvoice-vwiAoHQ3.js","assets/AddInvoice-ZsR8qaoD.css","assets/EditInvoice-ByAezxDX.js","assets/ListInvoice-C46B-gEE.js","assets/ListInvoice-CARcAUSN.css","assets/Login-BB6A0fEd.js","assets/Login-DLvlSeqG.css","assets/reg-CEcfpJmk.js","assets/reg-ClbWC7bS.css","assets/Main-Dy3ytVrQ.js","assets/Main-CVJwoMQ9.css","assets/IamCallback-C9ayzLUP.js","assets/Error404-Cs6ivAEK.js","assets/Error404-CQyPUoKe.css","assets/Error500-Dg828I-c.js","assets/Error500-Cne_2YUW.css","assets/NotAuthorized-D1EQlimu.js","assets/NotAuthorized-B2SbXtX1.css","assets/Maintenance-BZj1Y9_T.js","assets/Maintenance-Duz6NlUR.css"])))=>i.map(i=>d[i]); (function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))i(o);new MutationObserver(o=>{for(const r of o)if(r.type==="childList")for(const a of r.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&i(a)}).observe(document,{childList:!0,subtree:!0});function n(o){const r={};return o.integrity&&(r.integrity=o.integrity),o.referrerPolicy&&(r.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?r.credentials="include":o.crossOrigin==="anonymous"?r.credentials="omit":r.credentials="same-origin",r}function i(o){if(o.ep)return;o.ep=!0;const r=n(o);fetch(o.href,r)}})();/** * @vue/shared v3.5.42 * (c) 2018-present Yuxi (Evan) You and Vue contributors @@ -2466,7 +2466,7 @@ rect.legend-mouseover-inactive, `;class $N{constructor(e,n){this.w=e,this.ctx=n,this.ev=this.w.config.chart.events,this.selectedClass="apexcharts-selected",this.localeValues=this.w.globals.locale.toolbar,this.minX=e.globals.minX,this.maxX=e.globals.maxX,this.elZoom=null,this.elZoomIn=null,this.elZoomOut=null,this.elPan=null,this.elSelection=null,this.elMeasure=null,this.elZoomReset=null,this.elMenuIcon=null,this.elMenu=null,this.elMenuItems=[],this.t=null,this._drawnForZoom=null}resetControlAllowed(){const e=this.w.config.chart;if(!e.zoom||!e.zoom.enabled)return!1;const n=e.zoom.resetControl===void 0?"auto":e.zoom.resetControl;return n!=="auto"?!!n:!(e.toolbar&&e.toolbar.show&&e.toolbar.tools&&e.toolbar.tools.reset)}resetControlDue(){return!!this.w.interact.zoomed&&this.resetControlAllowed()}createToolbar(e={}){var n,i,o;const r=this.w,a=!!e.resetOnly,s=()=>We.createElementNS("http://www.w3.org/1999/xhtml","div"),l=()=>{const h=We.createElementNS("http://www.w3.org/1999/xhtml","button");return h.setAttribute("type","button"),h},c=s();if(c.setAttribute("class","apexcharts-toolbar"),c.style.top=r.config.chart.toolbar.offsetY+"px",c.style.right=-r.config.chart.toolbar.offsetX+3+"px",r.dom.elWrap.appendChild(c),this.elZoom=l(),this.elZoomIn=l(),this.elZoomOut=l(),this.elPan=l(),this.elSelection=l(),this.elMeasure=l(),this.elZoomReset=l(),this.elMenuIcon=l(),this.elMenu=s(),this.elCustomIcons=[],this.t=r.config.chart.toolbar.tools,this._drawnForZoom=null,a?(this.t={zoom:!1,zoomin:!1,zoomout:!1,selection:!1,pan:!1,measure:!1,download:!1,customIcons:[],reset:!0},this._drawnForZoom="wrap"):!this.t.reset&&this.resetControlDue()&&(this.t=vt(Ye({},this.t),{reset:!0}),this._drawnForZoom="control"),Array.isArray(this.t.customIcons))for(let h=0;h{const m=h.toLowerCase();this.t[m]&&r.config.chart.zoom.enabled&&u.push({el:p,icon:typeof this.t[m]=="string"?this.t[m]:g,title:this.localeValues[h],class:`apexcharts-${m}-icon`})};d("zoomIn",this.elZoomIn,c1e),d("zoomOut",this.elZoomOut,u1e);const f=h=>{this.t[h]&&r.config.chart[h].enabled&&u.push({el:h==="zoom"?this.elZoom:this.elSelection,icon:typeof this.t[h]=="string"?this.t[h]:h==="zoom"?s1e:d1e,title:this.localeValues[h==="zoom"?"selectionZoom":"selection"],class:`apexcharts-${h}-icon`})};f("zoom"),f("selection"),this.t.pan&&r.config.chart.zoom.enabled&&u.push({el:this.elPan,icon:typeof this.t.pan=="string"?this.t.pan:a1e,title:this.localeValues.pan,class:"apexcharts-pan-icon"}),this.t.measure&&r.config.chart.measure&&r.config.chart.measure.enabled&&u.push({el:this.elMeasure,icon:typeof this.t.measure=="string"?this.t.measure:f1e,title:this.localeValues.measure||"Measure",class:"apexcharts-measure-icon"}),d("reset",this.elZoomReset,l1e),this.t.download&&u.push({el:this.elMenuIcon,icon:typeof this.t.download=="string"?this.t.download:h1e,title:this.localeValues.menu,class:"apexcharts-menu-icon"});for(let h=0;h{h.index&&Ee.moveIndexInArray(u,p,h.index)});for(let h=0;h{d.classList.contains("exportSVG")?d.addEventListener("click",this.handleDownload.bind(this,"svg")):d.classList.contains("exportPNG")?d.addEventListener("click",this.handleDownload.bind(this,"png")):d.classList.contains("exportCSV")&&d.addEventListener("click",this.handleDownload.bind(this,"csv"))});for(let d=0;d{d.addEventListener("keydown",f=>{if(f.key==="Enter"||f.key===" "){f.preventDefault();const h=d.className;d.click(),requestAnimationFrame(()=>{const p=this.w.dom.baseEl;if(!p)return;const g=h.split(" ").find(v=>v.startsWith("apexcharts-"));if(!g)return;const m=p.querySelector(`.${g}`);m&&m.focus()})}})}),(c=this.elMenuIcon)==null||c.addEventListener("keydown",d=>{var f;(d.key==="ArrowDown"||d.key==="ArrowUp")&&(d.preventDefault(),(f=this.elMenu)!=null&&f.classList.contains("apexcharts-menu-open")||this.toggleMenu(),window.setTimeout(()=>{const h=d.key==="ArrowDown"?0:this.elMenuItems.length-1;this.elMenuItems[h]&&this.elMenuItems[h].focus()},20))}),this.elMenuItems.forEach((d,f)=>{d.addEventListener("keydown",h=>{var p;h.key==="ArrowDown"?(h.preventDefault(),(this.elMenuItems[f+1]||this.elMenuItems[0]).focus()):h.key==="ArrowUp"?(h.preventDefault(),(this.elMenuItems[f-1]||this.elMenuItems[this.elMenuItems.length-1]).focus()):h.key==="Escape"||h.key==="Tab"?(this._closeMenu(),(p=this.elMenuIcon)==null||p.focus(),h.key==="Tab"||h.preventDefault()):(h.key==="Enter"||h.key===" ")&&(h.preventDefault(),d.click())})})}toggleZoomSelection(e){this.ctx.getSyncedCharts().forEach(i=>{const o=i.ctx.toolbar,r=e==="selection"?"selectionEnabled":"zoomEnabled",a=!!i.w.globals[r];o.toggleOtherControls();const s=e==="selection"?o.elSelection:o.elZoom;a||(i.w.globals[r]=!0,s.classList.add(o.selectedClass)),s.setAttribute("aria-pressed",String(!!i.w.globals[r]))})}toggleMeasure(){var e,n,i,o;const r=this.w,a=!r.interact.measureEnabled;this.toggleOtherControls(),a&&(r.interact.measureEnabled=!0,(e=this.elMeasure)==null||e.classList.add(this.selectedClass),(i=(n=this.ctx.measure)==null?void 0:n.startMeasure)==null||i.call(n)),(o=this.elMeasure)==null||o.setAttribute("aria-pressed",String(r.interact.measureEnabled))}getToolbarIconsReference(){const e=this.w;this.elZoom||(this.elZoom=e.dom.baseEl.querySelector(".apexcharts-zoom-icon")),this.elPan||(this.elPan=e.dom.baseEl.querySelector(".apexcharts-pan-icon")),this.elSelection||(this.elSelection=e.dom.baseEl.querySelector(".apexcharts-selection-icon")),this.elMeasure||(this.elMeasure=e.dom.baseEl.querySelector(".apexcharts-measure-icon"))}enableZoomPanFromToolbar(e){this.toggleOtherControls(),e==="pan"?this.w.interact.panEnabled=!0:this.w.interact.zoomEnabled=!0;const n=e==="pan"?this.elPan:this.elZoom,i=e==="pan"?this.elZoom:this.elPan;n&&n.classList.add(this.selectedClass),i&&i.classList.remove(this.selectedClass)}togglePanning(){this.ctx.getSyncedCharts().forEach(n=>{const i=n.ctx.toolbar,o=!!n.w.interact.panEnabled;i.toggleOtherControls(),o||(n.w.interact.panEnabled=!0,i.elPan.classList.add(i.selectedClass)),i.elPan.setAttribute("aria-pressed",String(!!n.w.interact.panEnabled))})}toggleOtherControls(){var e,n,i;const o=this.w;o.interact.panEnabled=!1,o.interact.zoomEnabled=!1,o.interact.selectionEnabled=!1,o.interact.measureEnabled&&(o.interact.measureEnabled=!1,(n=(e=this.ctx.measure)==null?void 0:e.stopMeasure)==null||n.call(e),(i=this.elMeasure)==null||i.setAttribute("aria-pressed","false")),this.getToolbarIconsReference(),[this.elPan,this.elSelection,this.elZoom,this.elMeasure].forEach(a=>{a&&a.classList.remove(this.selectedClass)})}_currentXRange(){const e=this.w;return e.axisFlags.isRangeBar?{minX:e.globals.minY,maxX:e.globals.maxY}:{minX:e.globals.minX,maxX:e.globals.maxX}}handleZoomIn(){const e=this.w,{minX:n,maxX:i}=this._currentXRange();this.minX=n,this.maxX=i;const o=(n+i)/2,r=(n+o)/2,a=(i+o)/2,s=this._getNewMinXMaxX(r,a);e.interact.disableZoomIn||this.zoomUpdateOptions(s.minX,s.maxX)}handleZoomOut(){const e=this.w,{minX:n,maxX:i}=this._currentXRange();if(this.minX=n,this.maxX=i,e.config.xaxis.type==="datetime"&&new Date(n).getUTCFullYear()<1e3)return;const o=(n+i)/2,r=n-(o-n),a=i-(o-i),s=this._getNewMinXMaxX(r,a);e.interact.disableZoomOut||this.zoomUpdateOptions(s.minX,s.maxX)}_getNewMinXMaxX(e,n){const i=this.w.config.xaxis.convertedCatToNumeric;return{minX:i?Math.floor(e):e,maxX:i?Math.floor(n):n}}zoomUpdateOptions(e,n){const i=this.w;if(e===void 0&&n===void 0){this.handleZoomReset();return}if(i.config.xaxis.convertedCatToNumeric&&(e<1&&(e=1,n=i.globals.dataPoints),n-e<2))return;let o={min:e,max:n};const r=this.getBeforeZoomRange(o,void 0);r&&(o=r.xaxis);const a={xaxis:o};if(!i.globals.initialConfig)return;const s=Ee.clone(i.globals.initialConfig.yaxis);i.config.chart.group||(a.yaxis=s),this.w.interact.zoomed=!0,this.ctx.updateHelpers._updateOptions(a,!1,this.w.config.chart.animations.dynamicAnimation.enabled),this.zoomCallback(o,s)}zoomCallback(e,n){typeof this.ev.zoomed=="function"&&(this.ev.zoomed(this.ctx,{xaxis:e,yaxis:n}),this.ctx.events.fireEvent("zoomed",{xaxis:e,yaxis:n}))}getBeforeZoomRange(e,n){let i=null;return typeof this.ev.beforeZoom=="function"&&(i=this.ev.beforeZoom(this,{xaxis:e,yaxis:n})),i}toggleMenu(){window.setTimeout(()=>{var e,n,i;(e=this.elMenu)!=null&&e.classList.contains("apexcharts-menu-open")?this._closeMenu():((n=this.elMenu)==null||n.classList.add("apexcharts-menu-open"),(i=this.elMenuIcon)==null||i.setAttribute("aria-expanded","true"))},0)}_closeMenu(){var e,n;(e=this.elMenu)==null||e.classList.remove("apexcharts-menu-open"),(n=this.elMenuIcon)==null||n.setAttribute("aria-expanded","false")}handleDownload(e){const n=this.w,i=new xN(this.w,this.ctx);switch(e){case"svg":i.exportToSVG();break;case"png":i.exportToPng();break;case"csv":i.exportToCSV({series:n.config.series,columnDelimiter:n.config.chart.toolbar.export.csv.columnDelimiter});break}}clearZoomAffordance(){const e=this._drawnForZoom;if(this._drawnForZoom=null,!e||!this.elZoomReset)return;const n=this.elZoomReset.parentNode,i=e==="wrap"?n:this.elZoomReset;i&&i.parentNode&&i.parentNode.removeChild(i)}handleZoomReset(){this.ctx.getSyncedCharts().forEach(n=>{var i;const o=n.w;if(!o.interact.zoomed)return;if(o.globals.lastXAxis.min=o.globals.initialConfig.xaxis.min,o.globals.lastXAxis.max=o.globals.initialConfig.xaxis.max,n.updateHelpers.revertDefaultAxisMinMax(),typeof o.config.chart.events.beforeResetZoom=="function"){const a=o.config.chart.events.beforeResetZoom(n,o);a&&n.updateHelpers.revertDefaultAxisMinMax(a)}typeof o.config.chart.events.zoomed=="function"&&n.ctx.toolbar.zoomCallback({min:o.config.xaxis.min,max:o.config.xaxis.max});const r=n.ctx.series.emptyCollapsedSeries(Ee.clone(o.globals.initialSeries));n.updateHelpers._updateSeries(r,o.config.chart.animations.dynamicAnimation.enabled),o.interact.zoomed=!1,(i=n.ctx.toolbar)==null||i.clearZoomAffordance()})}destroy(){this.elZoom=null,this.elZoomIn=null,this.elZoomOut=null,this.elPan=null,this.elSelection=null,this.elMeasure=null,this.elZoomReset=null,this.elMenuIcon=null}}class so{static xRatio(e){const n=e.layout.gridWidth||1;return(e.globals.maxX-e.globals.minX)/n}static dataXToPx(e,n){return(n-e.globals.minX)/so.xRatio(e)}static pxToDataX(e,n){return e.globals.minX+n*so.xRatio(e)}static screenXToPlotPx(e,n){const i=e.dom.baseEl,o=i&&i.querySelector(".apexcharts-svg");if(!o)return n-e.layout.translateX;const r=o.getBoundingClientRect(),a=e.globals.svgWidth?r.width/e.globals.svgWidth:1;return(n-r.left)/(a||1)-e.layout.translateX}}const p1e=240,g1e=.05,m1e=.92,v1e=.02,b1e=16.6667,ph=15,BE=0;class y1e extends $N{constructor(e,n){super(e,n),this.w=e,this.ctx=n,this.dragged=!1,this.graphics=new Be(this.w),this.eventList=["mousedown","mouseleave","mousemove","touchstart","touchmove","mouseup","touchend"],this.clientX=0,this.clientY=0,this.startX=0,this.endX=0,this.dragX=0,this.startY=0,this.endY=0,this.dragY=0,this.moveDirection="none"}init({xyRatios:e}){const n=this.w,i=this;this.xyRatios=e,this.zoomRect=this.graphics.drawRect(0,0,0,0),this.selectionRect=this.graphics.drawRect(0,0,0,0),this.constraints=new yN(0,0,n.layout.gridWidth,n.layout.gridHeight),this.zoomRect.node.classList.add("apexcharts-zoom-rect"),this.selectionRect.node.classList.add("apexcharts-selection-rect"),n.dom.Paper.add(this.zoomRect),n.dom.Paper.add(this.selectionRect),n.config.chart.selection.type==="x"?this.slDraggableRect=this.selectionRect.draggable({minX:0,minY:0,maxX:n.layout.gridWidth,maxY:n.layout.gridHeight}).on("dragmove.namespace",this.selectionDragging.bind(this,"dragging")):n.config.chart.selection.type==="y"?this.slDraggableRect=this.selectionRect.draggable({minX:0,maxX:n.layout.gridWidth}).on("dragmove.namespace",this.selectionDragging.bind(this,"dragging")):this.slDraggableRect=this.selectionRect.draggable().on("dragmove.namespace",this.selectionDragging.bind(this,"dragging")),this.preselectedSelection(),this.hoverArea=n.dom.baseEl.querySelector(`${n.globals.chartClass} .apexcharts-svg`),this.hoverArea&&(this.hoverArea.classList.add("apexcharts-zoomable"),this.eventList.forEach(o=>{var r;(r=this.hoverArea)==null||r.addEventListener(o,i.svgMouseEvents.bind(i,e),{capture:!1,passive:!0})}),this._wheelZoomEnabled()&&this.hoverArea.addEventListener("wheel",i.mouseWheelEvent.bind(i),{capture:!1,passive:!1}),this.hoverArea.addEventListener("keydown",i.escapeResetEvent.bind(i),{capture:!1,passive:!0}),this._momentumEnabled()&&["touchstart","touchmove","touchend","touchcancel"].forEach(o=>{var r;(r=this.hoverArea)==null||r.addEventListener(o,i.momentumTouch.bind(i),{capture:!1,passive:!1})}))}destroy(){this.slDraggableRect&&(this.slDraggableRect.draggable(!1),this.slDraggableRect.off(),this.selectionRect.off()),this.selectionRect=null,this.zoomRect=null}svgMouseEvents(e,n){const i=this.w,o=this.ctx.toolbar;if(i.interact.momentum&&i.interact.momentum.busy||this._momentumEnabled()&&n.touches&&n.touches.length>1)return;const r=i.interact.zoomEnabled?i.config.chart.zoom.type:i.config.chart.selection.type,a=i.config.chart.toolbar.autoSelected;if(a!=="measure"&&(n.shiftKey?(i.interact.shiftWasPressed=!0,o.enableZoomPanFromToolbar(a==="pan"?"zoom":"pan")):i.interact.shiftWasPressed&&(o.enableZoomPanFromToolbar(a),i.interact.shiftWasPressed=!1)),!n.target)return;const s=n.target.classList;let l;if(n.target.parentNode&&n.target.parentNode!==null&&(l=n.target.parentNode.classList),!(s.contains("apexcharts-legend-marker")||s.contains("apexcharts-legend-text")||l&&l.contains("apexcharts-toolbar"))){if(this.clientX=n.type==="touchmove"||n.type==="touchstart"?n.touches[0].clientX:n.type==="touchend"?n.changedTouches[0].clientX:n.clientX,this.clientY=n.type==="touchmove"||n.type==="touchstart"?n.touches[0].clientY:n.type==="touchend"?n.changedTouches[0].clientY:n.clientY,n.type==="mousedown"&&n.which===1||n.type==="touchstart"){const u=this._gridRect();if(!u)return;this.startX=this._screenXToPlotPx(this.clientX),this.startY=this.clientY-u.top,this.dragged=!1,this.w.interact.mousedown=!0}(n.type==="mousemove"&&n.which===1||n.type==="touchmove")&&(this.dragged=!0,i.interact.panEnabled?(i.interact.selection=null,this.w.interact.mousedown&&this.panDragging({context:this,zoomtype:r,xyRatios:this.xyRatios})):(this.w.interact.mousedown&&i.interact.zoomEnabled||this.w.interact.mousedown&&i.interact.selectionEnabled)&&(this.selection=this.selectionDrawing({context:this,zoomtype:r}))),(n.type==="mouseup"||n.type==="touchend"||n.type==="mouseleave")&&this.handleMouseUp({zoomtype:r}),this.makeSelectionRectDraggable()}}handleMouseUp({zoomtype:e,isResized:n}){const i=this.w,o=this._gridRect();o&&(this.w.interact.mousedown||n)&&(this.endX=this._screenXToPlotPx(this.clientX),this.endY=this.clientY-o.top,this.dragX=Math.abs(this.endX-this.startX),this.dragY=Math.abs(this.endY-this.startY),(i.interact.zoomEnabled||i.interact.selectionEnabled)&&this.selectionDrawn({context:this,zoomtype:e})),i.interact.zoomEnabled&&this.hideSelectionRect(this.selectionRect),this.dragged=!1,this.w.interact.mousedown=!1}_incidentalZoomEnabled(e){var n,i,o;const r=this.w.config.chart;return!r.zoom||!r.zoom.enabled?!1:e!=="auto"?!!e:!!((n=r.toolbar)!=null&&n.show&&((o=(i=r.toolbar)==null?void 0:i.tools)!=null&&o.reset))}_wheelZoomEnabled(){const{zoom:e}=this.w.config.chart;return this._incidentalZoomEnabled(e&&e.allowMouseWheelZoom)}_focusForKeyboard(){var e,n;const i=this.w.dom.Paper&&this.w.dom.Paper.node;if(!(!i||typeof i.focus!="function")&&i.getAttribute("tabindex")!==null){(n=(e=this.ctx.keyboardNavigation)==null?void 0:e.notePointerFocus)==null||n.call(e);try{i.focus({preventScroll:!0})}catch{i.focus()}}}escapeResetEvent(e){if(e.key!=="Escape"&&e.key!=="Esc"||!this.w.interact.zoomed)return;const n=this.ctx.keyboardNavigation;n&&n.active||this.resetControlAllowed()&&this.handleZoomReset()}_wheel(){const e=this.w.interact;return e.wheel||(e.wheel={factor:1,clientX:0,rafId:null,endTimer:null}),e.wheel}mouseWheelEvent(e){e.preventDefault();const n=this._wheel();let i=e.deltaY;e.deltaMode===1?i*=33:e.deltaMode===2&&(i*=330),n.factor*=Math.pow(2,i/p1e),n.clientX=e.clientX,n.rafId==null&&(n.rafId=requestAnimationFrame(()=>this._applyWheelZoom())),n.endTimer&&clearTimeout(n.endTimer),n.endTimer=setTimeout(()=>this._endWheelZoom(),150)}_applyWheelZoom(){const e=this.w,n=this._wheel();n.rafId=null;const i=n.factor;if(n.factor=1,i===1||e.globals.isDestroyed)return;const o=this._gridRect();if(!o||!o.width)return;const{min:r,max:a}=this._currentXWindow(),s=a-r,l=Math.min(Math.max((n.clientX-o.left)/o.width,0),1);let c=s*i;const u=this._clampBounds();if(u){const m=e.globals.minXDiff>0&&isFinite(e.globals.minXDiff)?e.globals.minXDiff:0,v=Math.max(m*2,(u.max-u.min)*1e-6);cu.max-u.min&&(c=u.max-u.min)}let f=r+l*s-l*c,h=f+c;const p=s*1e-9;if(Math.abs(f-r)0&&n.height>0&&(this.selectionRect.select(!1).resize(!1),this.selectionRect.select({createRot:()=>{},updateRot:()=>{},createHandle:(i,o,r,a,s)=>s==="l"||s==="r"?i.circle(8).css({"stroke-width":1,stroke:"#333",fill:"#fff"}):i.circle(0),updateHandle:(i,o)=>i.center(o[0],o[1])}).resize().on("resize",()=>{var i;if(this._clampSelectionRectToPlot(),e.interact.selectionEnabled)e.interact.selection={x:parseFloat(this.selectionRect.node.getAttribute("x")),y:parseFloat(this.selectionRect.node.getAttribute("y")),width:parseFloat(this.selectionRect.node.getAttribute("width")),height:parseFloat(this.selectionRect.node.getAttribute("height"))},clearTimeout((i=this.w.globals.selectionResizeTimer)!=null?i:void 0),this.w.globals.selectionResizeTimer=window.setTimeout(()=>{this._emitSelectionFromRect()},30);else{const o=e.interact.zoomEnabled?e.config.chart.zoom.type:e.config.chart.selection.type;this.handleMouseUp({zoomtype:o,isResized:!0})}}))}preselectedSelection(){const e=this.w,n=this.xyRatios;if(!e.interact.zoomEnabled){if(typeof e.interact.selection<"u"&&e.interact.selection!==null)this.drawSelectionRect(vt(Ye({},e.interact.selection),{translateX:e.layout.translateX,translateY:e.layout.translateY}));else if(e.config.chart.selection.xaxis.min!==void 0&&e.config.chart.selection.xaxis.max!==void 0){let i=so.dataXToPx(e,e.config.chart.selection.xaxis.min),o=so.dataXToPx(e,e.config.chart.selection.xaxis.max)-i;e.axisFlags.isRangeBar&&(i=(e.config.chart.selection.xaxis.min-e.globals.yAxisScale[0].niceMin)/n.invertedYRatio,o=(e.config.chart.selection.xaxis.max-e.config.chart.selection.xaxis.min)/n.invertedYRatio);const r={x:i,y:0,width:o,height:e.layout.gridHeight,translateX:e.layout.translateX,translateY:e.layout.translateY,selectionEnabled:!0};this.drawSelectionRect(r),this.makeSelectionRectDraggable(),typeof e.config.chart.events.selection=="function"&&e.config.chart.events.selection(this.ctx,{xaxis:{min:e.config.chart.selection.xaxis.min,max:e.config.chart.selection.xaxis.max},yaxis:{}})}}}drawSelectionRect({x:e,y:n,width:i,height:o,translateX:r=0,translateY:a=0}){const s=this.w,l=this.zoomRect,c=this.selectionRect;if(this.dragged||s.interact.selection!==null){const u={transform:"translate("+r+", "+a+")"};s.interact.zoomEnabled&&this.dragged&&(i<0&&(i=1),l.attr({x:e,y:n,width:i,height:o,fill:s.config.chart.zoom.zoomedArea.fill.color,"fill-opacity":s.config.chart.zoom.zoomedArea.fill.opacity,stroke:s.config.chart.zoom.zoomedArea.stroke.color,"stroke-width":s.config.chart.zoom.zoomedArea.stroke.width,"stroke-opacity":s.config.chart.zoom.zoomedArea.stroke.opacity}),Be.setAttrs(l.node,u)),s.interact.selectionEnabled&&(c.attr({x:e,y:n,width:i>0?i:0,height:o>0?o:0,fill:s.config.chart.selection.fill.color,"fill-opacity":s.config.chart.selection.fill.opacity,stroke:s.config.chart.selection.stroke.color,"stroke-width":s.config.chart.selection.stroke.width,"stroke-dasharray":s.config.chart.selection.stroke.dashArray,"stroke-opacity":s.config.chart.selection.stroke.opacity}),Be.setAttrs(c.node,u))}}_clampSelectionRectToPlot(){const e=this.selectionRect;if(!e||!e.node)return;const n=this.w.layout.gridWidth;if(!(n>BE))return;const i=parseFloat(e.node.getAttribute("x"))||0,o=parseFloat(e.node.getAttribute("width"))||0,r=l=>Math.min(Math.max(l,BE),n),a=r(i),s=r(i+o);a===i&&s===i+o||(e.attr({x:a,width:s-a}),e._updateSelectPositions&&e._updateSelectPositions())}hideSelectionRect(e){e&&e.attr({x:0,y:0,width:0,height:0})}selectionDrawing({context:e,zoomtype:n}){const i=this.w,o=e,r=this._gridRect();if(!r)return;const a=o.startX-1,s=o.startY;let l=!1,c=!1;const u=this._screenXToPlotPx(o.clientX),d=o.clientY-r.top;let f=u-a,h=d-s,p={translateX:i.layout.translateX,translateY:i.layout.translateY};return Math.abs(f+a)>i.layout.gridWidth?f=i.layout.gridWidth-a:u<0&&(f=a),a>u&&(l=!0,f=Math.abs(f)),s>d&&(c=!0,h=Math.abs(h)),n==="x"?p={x:l?a-f:a,y:0,width:f,height:i.layout.gridHeight}:n==="y"?p={x:0,y:c?s-h:s,width:i.layout.gridWidth,height:h}:p={x:l?a-f:a,y:c?s-h:s,width:f,height:h},p=vt(Ye({},p),{translateX:i.layout.translateX,translateY:i.layout.translateY}),o.drawSelectionRect(p),o.selectionDragging("resizing"),p}selectionDragging(e,n){var i;const o=this.w;if(!n)return;n.preventDefault();const{handler:r,box:a}=n.detail,s=this.constraints;let{x:l,y:c}=a;ls.x2&&(l=s.x2-a.w),a.y2>s.y2&&(c=s.y2-a.h),r.move(l,c);const u=this.selectionRect;let d=0;e==="resizing"&&(d=30);const f=m=>parseFloat(u.node.getAttribute(m)),h={x:f("x"),y:f("y"),width:f("width"),height:f("height")};o.interact.selection=h;const p=o.config.chart.link,g=!!(p&&(p.enabled||typeof p.dimension=="function"));(typeof o.config.chart.events.selection=="function"||g)&&o.interact.selectionEnabled&&(clearTimeout((i=this.w.globals.selectionResizeTimer)!=null?i:void 0),this.w.globals.selectionResizeTimer=window.setTimeout(()=>{this._emitSelectionFromRect()},d))}_emitSelectionFromRect(){var e;const n=this.w;if(!n.interact.selectionEnabled)return;const i=n.config.chart.link,o=!!(i&&(i.enabled||typeof i.dimension=="function"));if(typeof n.config.chart.events.selection!="function"&&!o)return;const r=this._gridRect();if(!r)return;const a=this.selectionRect.node.getBoundingClientRect(),s=this.xyRatios;let l,c,u,d;const f=this._screenXToPlotPx(a.left),h=this._screenXToPlotPx(a.right);if(n.axisFlags.isRangeBar)l=n.globals.yAxisScale[0].niceMin+f*s.invertedYRatio,c=n.globals.yAxisScale[0].niceMin+h*s.invertedYRatio,u=0,d=1;else{if(!n.globals.xAxisScale)return;l=so.pxToDataX(n,f),c=so.pxToDataX(n,h),u=n.globals.yAxisScale[0].niceMin+(r.bottom-a.bottom)*s.yRatio[0],d=n.globals.yAxisScale[0].niceMax-(a.top-r.top)*s.yRatio[0]}const p={xaxis:{min:l,max:c},yaxis:{min:u,max:d}};typeof n.config.chart.events.selection=="function"&&n.config.chart.events.selection(this.ctx,p),n.config.chart.brush.enabled&&n.config.chart.events.brushScrolled!==void 0&&n.config.chart.events.brushScrolled(this.ctx,p),(e=this.ctx.linkedViews)==null||e.onSourceSelection(p.xaxis)}selectionDrawn({context:e,zoomtype:n}){var i;const o=this.w,r=e,a=this.xyRatios,s=this.ctx.toolbar,l=o.interact.zoomEnabled?r.zoomRect.node.getBoundingClientRect():r.selectionRect.node.getBoundingClientRect(),c=r._gridRect();if(!c)return;const u=this._screenXToPlotPx(l.left),d=this._screenXToPlotPx(l.right),f=l.top-c.top,h=l.bottom-c.top;let p,g;o.axisFlags.isRangeBar?(p=o.globals.yAxisScale[0].niceMin+u*a.invertedYRatio,g=o.globals.yAxisScale[0].niceMin+d*a.invertedYRatio):(p=so.pxToDataX(o,u),g=so.pxToDataX(o,d));const m=[],v=[];if(o.config.yaxis.forEach((b,y)=>{const w=o.globals.seriesYAxisMap[y][0],x=o.globals.yAxisScale[y].niceMax-a.yRatio[w]*f,$=o.globals.yAxisScale[y].niceMax-a.yRatio[w]*h;m.push(x),v.push($)}),r.dragged&&(r.dragX>10||r.dragY>10)&&p!==g){if(o.interact.zoomEnabled){if(!o.globals.initialConfig)return;let b=Ee.clone(o.globals.initialConfig.yaxis),y=Ee.clone(o.globals.initialConfig.xaxis);if(o.interact.zoomed=!0,o.config.xaxis.convertedCatToNumeric&&(p=Math.floor(p),g=Math.floor(g),p<1&&(p=1,g=o.globals.dataPoints),g-p<2&&(g=p+1)),(n==="xy"||n==="x")&&(y={min:p,max:g}),(n==="xy"||n==="y")&&b.forEach(($,S)=>{b[S].min=v[S],b[S].max=m[S]}),s){const $=s.getBeforeZoomRange(y,b);$&&(y=$.xaxis?$.xaxis:y,b=$.yaxis?$.yaxis:b)}const w={xaxis:y};o.config.chart.group||(w.yaxis=b);const x=r.ctx.updateHelpers._updateOptions(w,!1,r.w.config.chart.animations.dynamicAnimation.enabled);x&&typeof x.then=="function"?x.then(()=>r._focusForKeyboard()):r._focusForKeyboard(),typeof o.config.chart.events.zoomed=="function"&&s.zoomCallback(y,b)}else if(o.interact.selectionEnabled){let b=null,y=null;if(y={min:p,max:g},n==="xy"||n==="y"){const w=Ee.clone(o.config.yaxis);b=w,w.forEach((x,$)=>{w[$].min=v[$],w[$].max=m[$]})}o.interact.selection=r.selection,typeof o.config.chart.events.selection=="function"&&o.config.chart.events.selection(r.ctx,{xaxis:y,yaxis:b}),(i=r.ctx.linkedViews)==null||i.onSourceSelection(y)}}}panDragging({context:e}){var n;const i=this.w,o=e;if(typeof i.interact.lastClientPosition.x<"u"){const s=i.interact.lastClientPosition.x-o.clientX,l=((n=i.interact.lastClientPosition.y)!=null?n:0)-o.clientY;Math.abs(s)>Math.abs(l)&&s>0?this.moveDirection="left":Math.abs(s)>Math.abs(l)&&s<0?this.moveDirection="right":Math.abs(l)>Math.abs(s)&&l>0?this.moveDirection="up":Math.abs(l)>Math.abs(s)&&l<0&&(this.moveDirection="down")}i.interact.lastClientPosition={x:o.clientX,y:o.clientY};const r=i.axisFlags.isRangeBar?i.globals.minY:i.globals.minX,a=i.axisFlags.isRangeBar?i.globals.maxY:i.globals.maxX;o.panScrolled(r,a)}panScrolled(e,n){var i,o;const r=this.w,a=this.xyRatios;if(!r.globals.initialConfig)return;const s=Ee.clone(r.globals.initialConfig.yaxis);let l=a.xRatio,c=r.globals.minX,u=r.globals.maxX;if(r.axisFlags.isRangeBar&&(l=a.invertedYRatio,c=r.globals.minY,u=r.globals.maxY),this.moveDirection==="left"?(e=c+r.layout.gridWidth/ph*l,n=u+r.layout.gridWidth/ph*l):this.moveDirection==="right"&&(e=c-r.layout.gridWidth/ph*l,n=u-r.layout.gridWidth/ph*l),!r.axisFlags.isRangeBar){const h=(i=r.globals.dataReducerRawMinX)!=null?i:r.globals.initialMinX,p=(o=r.globals.dataReducerRawMaxX)!=null?o:r.globals.initialMaxX;(ep)&&(e=c,n=u)}const f={xaxis:{min:e,max:n}};r.config.chart.group||(f.yaxis=s),this.updateScrolledChart(f,e,n)}updateScrolledChart(e,n,i){const o=this.w;if(this.ctx.updateHelpers._updateOptions(e,!1,!1),typeof o.config.chart.events.scrolled=="function"){const r={xaxis:{min:n,max:i}};o.config.chart.events.scrolled(this.ctx,r),this.ctx.events.fireEvent("scrolled",r)}}_momentumEnabled(){return this._pinchEnabled()||this._panInertiaEnabled()}_pinchEnabled(){return this._incidentalZoomEnabled(this.w.config.chart.zoom.pinch)}_panInertiaEnabled(){const e=this.w.config.chart;return!!(e.pan&&e.pan.inertia)}_m(){const e=this.w.interact;return e.momentum||(e.momentum={busy:!1,pinch:null,panState:null,samples:[],inertiaRAF:null}),e.momentum}_currentXWindow(){const e=this.w;return e.axisFlags.isRangeBar?{min:e.globals.minY,max:e.globals.maxY}:{min:e.globals.minX,max:e.globals.maxX}}_gridRect(){const e=this.w.dom.baseEl,n=e&&e.querySelector(".apexcharts-grid");return n?n.getBoundingClientRect():null}_screenXToPlotPx(e){return so.screenXToPlotPx(this.w,e)}_clampBounds(){var e,n;const i=this.w;return i.axisFlags.isRangeBar?null:{min:(e=i.globals.dataReducerRawMinX)!=null?e:i.globals.initialMinX,max:(n=i.globals.dataReducerRawMaxX)!=null?n:i.globals.initialMaxX}}_applyXRange(e,n,i){const o=this.w;if(!o.globals.initialConfig)return!1;const r=this._currentXWindow(),a=i&&n-e>r.max-r.min,s=this._clampBounds();if(s){const c=n-e;es.max&&(n=s.max,e=n-c),es.max&&(n=Math.floor(s.max)),n-e<2)||!(n>e))return!1;const l={xaxis:{min:e,max:n}};return o.config.chart.group||(l.yaxis=Ee.clone(o.globals.initialConfig.yaxis)),i&&(o.interact.zoomed=!0),this.ctx.updateHelpers._updateOptions(l,!1,!1),{minX:e,maxX:n}}_cancelInertia(){const e=this._m();e.inertiaRAF!=null&&(cancelAnimationFrame(e.inertiaRAF),e.inertiaRAF=null)}_fireScrolled(){const e=this.w;if(typeof e.config.chart.events.scrolled!="function")return;const{min:n,max:i}=this._currentXWindow(),o={xaxis:{min:n,max:i}};e.config.chart.events.scrolled(this.ctx,o),this.ctx.events.fireEvent("scrolled",o)}_pushSample(e,n){const i=this._m().samples;for(i.push({x:e,t:n});i.length>6;)i.shift()}momentumTouch(e){const n=this.w,i=this._m(),o=e.type;if(o==="touchstart"){this._cancelInertia();const r=this._gridRect();if(!r)return;if(e.touches.length>=2&&this._pinchEnabled())e.preventDefault(),i.busy=!0,i.panState=null,this._beginPinch(e,r);else if(e.touches.length===1&&this._panInertiaEnabled()&&n.interact.panEnabled){i.busy=!0,i.pinch=null;const a=e.touches[0],s=this._currentXWindow(),l=n.layout.gridWidth||1;i.panState={startX:a.clientX,startY:a.clientY,axis:null,minX0:s.min,maxX0:s.max,ratio0:(s.max-s.min)/l},i.samples=[{x:a.clientX,t:e.timeStamp}]}return}if(o==="touchmove"){i.pinch&&e.touches.length>=2?(e.preventDefault(),this._movePinch(e)):i.panState&&e.touches.length===1&&this._movePan(e);return}i.pinch?e.touches.length<2&&this._endPinch():i.panState&&e.touches.length===0&&this._endPan(),e.touches.length===0&&(n.interact.mousedown=!1,this.dragged=!1,i.inertiaRAF==null&&!i.pinch&&!i.panState&&(i.busy=!1))}_beginPinch(e,n){const i=this.w,o=e.touches[0],r=e.touches[1],a=Math.hypot(r.clientX-o.clientX,r.clientY-o.clientY)||1,s=(o.clientX+r.clientX)/2-n.left-i.globals.barPadForNumericAxis,{min:l,max:c}=this._currentXWindow();this._m().pinch={d0:a,cx0:s,minX0:l,maxX0:c,gridWidth:i.layout.gridWidth||1}}_movePinch(e){const n=this.w,i=this._m().pinch;if(!i)return;const o=this._gridRect();if(!o)return;const r=e.touches[0],a=e.touches[1],s=Math.hypot(a.clientX-r.clientX,a.clientY-r.clientY)||1,l=(r.clientX+a.clientX)/2-o.left-n.globals.barPadForNumericAxis,c=i.maxX0-i.minX0,u=c*(i.d0/s);let f=i.minX0+i.cx0/i.gridWidth*c-l/i.gridWidth*u,h=f+u;const p=this._clampBounds();if(p){const g=n.globals.minXDiff>0&&isFinite(n.globals.minXDiff)?n.globals.minXDiff:0,m=Math.max(g*2,(p.max-p.min)*1e-6);if(h-fs){n.busy=!1,n.panState=null;return}i.axis="x"}if(i.axis!=="x")return;e.preventDefault();const a=(o.clientX-i.startX)*i.ratio0;this._pushSample(o.clientX,e.timeStamp),this._applyXRange(i.minX0-a,i.maxX0-a,!1)}_endPan(){const e=this._m(),n=e.panState;e.panState=null;let i=0;const o=e.samples;if(o.length>=2){const r=o[0],a=o[o.length-1],s=a.t-r.t;s>0&&(i=(a.x-r.x)/s)}e.samples=[],n&&n.axis==="x"&&this._panInertiaEnabled()&&Math.abs(i)>g1e?this._startInertia(i):(e.busy=!1,this._fireScrolled())}_startInertia(e){const n=this.w,i=this._m(),o=n.config.chart.pan&&n.config.chart.pan.friction,r=typeof o=="number"?Math.min(Math.max(o,.5),.999):m1e;let a=e,s=null;i.busy=!0;const l=c=>{if(n.globals.isDestroyed){i.inertiaRAF=null,i.busy=!1;return}if(s==null){s=c,i.inertiaRAF=requestAnimationFrame(l);return}const u=c-s;if(s=c,a*=Math.pow(r,u/b1e),Math.abs(a)0&&g.minX<=m.min+(m.max-m.min)*1e-6||p<0&&g.maxX>=m.max-(m.max-m.min)*1e-6)){i.inertiaRAF=null,i.busy=!1,this._fireScrolled();return}i.inertiaRAF=requestAnimationFrame(l)};i.inertiaRAF=requestAnimationFrame(l)}}Vn.registerFeatures({toolbar:$N,zoomPanSelection:y1e});let Pv=class{constructor(e){this.w=e.w,this.annoCtx=e}setOrientations(e,n=null){var i,o;const r=this.w;if(e.label.orientation==="vertical"){const a=n!==null?n:0,s=r.dom.baseEl.querySelector(`.apexcharts-xaxis-annotations .apexcharts-xaxis-annotation-label[rel='${a}']`);if(s!==null){const l=s.getBBox();s.setAttribute("x",String(parseFloat((i=s.getAttribute("x"))!=null?i:"0")-l.height+4));const c=e.label.position==="top"?l.width:-l.width;s.setAttribute("y",String(parseFloat((o=s.getAttribute("y"))!=null?o:"0")+c));const{x:u,y:d}=this.annoCtx.graphics.rotateAroundCenter(s);s.setAttribute("transform",`rotate(-90 ${u} ${d})`)}}}addBackgroundToAnno(e,n){const i=this.w;if(!e||!n.label.text||!String(n.label.text).trim())return null;const o=i.dom.baseEl.querySelector(".apexcharts-grid");if(!o)return null;const r=o.getBoundingClientRect(),a=o.getBBox(),s=r.width/a.width||1,l=e.getBoundingClientRect();let{left:c,right:u,top:d,bottom:f}=n.label.style.padding;n.label.orientation==="vertical"&&([d,f,c,u]=[c,u,d,f]);const h=r.left-a.x*s,p=r.top-a.y*s,g=(l.left-h)/s-c,m=(l.top-p)/s-d,v=this.annoCtx.graphics.drawRect(g,m,l.width/s+c+u,l.height/s+d+f,n.label.borderRadius,n.label.style.background,1,n.label.borderWidth,n.label.borderColor,0);return n.id&&v.node.classList.add(n.id),v}annotationsBackground(){const e=this.w,n=(i,o,r)=>{const a=e.dom.baseEl.querySelector(`.apexcharts-${r}-annotations .apexcharts-${r}-annotation-label[rel='${o}']`);if(a){const s=a.parentNode,l=this.addBackgroundToAnno(a,i);if(l){s==null||s.insertBefore(l.node,a);const c=a.getAttribute("x");c!==null&&Ms(l,parseFloat(c),e),i.label.mouseEnter&&l.node.addEventListener("mouseenter",i.label.mouseEnter.bind(this,i)),i.label.mouseLeave&&l.node.addEventListener("mouseleave",i.label.mouseLeave.bind(this,i)),i.label.click&&l.node.addEventListener("click",i.label.click.bind(this,i))}}};e.config.annotations.xaxis.forEach((i,o)=>n(i,o,"xaxis")),e.config.annotations.yaxis.forEach((i,o)=>n(i,o,"yaxis")),e.config.annotations.points.forEach((i,o)=>n(i,o,"point"))}usesCategoryX(){const e=this.w;return(e.config.xaxis.type==="category"||e.config.xaxis.convertedCatToNumeric)&&!this.annoCtx.invertAxis&&!e.axisFlags.dataFormatXNumeric&&!e.config.chart.sparkline.enabled}hasXDomain(){const e=this.w;return this.annoCtx.invertAxis?Ee.isNumber(e.globals.minY)&&Ee.isNumber(e.globals.yRange[0]):this.usesCategoryX()?e.labelData.labels.length>0||e.labelData.categoryLabels.length>0:Ee.isNumber(e.globals.minX)&&Ee.isNumber(e.globals.xRange)}getY1Y2(e,n){var i,o,r;const a=this.w,s=e==="y1"?n.y:n.y2,l=typeof s=="string"&&s.includes("px");let c,u=!1;if(this.annoCtx.invertAxis){const d=a.config.xaxis.convertedCatToNumeric?a.labelData.categoryLabels:a.labelData.labels,f=d.indexOf(s);if(!l&&f===-1)return{yP:0,clipped:!0};const h=a.dom.baseEl.querySelector(`.apexcharts-yaxis-texts-g text:nth-child(${f+1})`);c=h?parseFloat((i=h.getAttribute("y"))!=null?i:"0"):(a.layout.gridHeight/d.length-1)*(f+1)-a.globals.barHeight,n.seriesIndex!==void 0&&a.globals.barHeight&&(c-=a.globals.barHeight/2*(a.seriesData.series.length-1)-a.globals.barHeight*n.seriesIndex)}else{if(!a.config.yaxis[n.yAxisIndex])return{yP:0,clipped:!0};const d=a.globals.seriesYAxisMap[n.yAxisIndex],f=(o=d==null?void 0:d[0])!=null?o:null;if(f===null&&a.seriesData.series.length)return{yP:0,clipped:!0};const h=f===null?a.globals.minY:a.globals.minYArr[f],p=f===null?a.globals.maxY-a.globals.minY:a.globals.yRange[f],g=a.config.yaxis[n.yAxisIndex].logarithmic&&f!==null?new No(this.w).getLogVal(a.config.yaxis[n.yAxisIndex].logBase,s,f)/a.globals.yLogRatio[f]:(s-h)/(p/a.layout.gridHeight);c=a.layout.gridHeight-Math.min(Math.max(g,0),a.layout.gridHeight),u=g>a.layout.gridHeight||g<0,n.marker&&(n.y===void 0||n.y===null)&&(c=0),(r=a.config.yaxis[n.yAxisIndex])!=null&&r.reversed&&(c=g)}return l&&(c=parseFloat(s)),{yP:c,clipped:u}}getX1X2(e,n){const i=this.w,o=e==="x1"?n.x:n.x2,r=this.annoCtx.invertAxis?i.globals.minY:i.globals.minX,a=this.annoCtx.invertAxis?i.globals.maxY:i.globals.maxX,s=this.annoCtx.invertAxis?i.globals.yRange[0]:i.globals.xRange;let l=!1;const c=typeof o=="string"&&o.includes("px"),u=o==null&&n.marker;if(!c&&!u&&!this.hasXDomain())return{x:0,clipped:!0};let d=this.annoCtx.inversedReversedAxis?(a-o)/(s/i.layout.gridWidth):(o-r)/(s/i.layout.gridWidth);return(i.config.xaxis.type==="category"||i.config.xaxis.convertedCatToNumeric)&&!this.annoCtx.invertAxis&&!i.axisFlags.dataFormatXNumeric&&(i.config.chart.sparkline.enabled||(d=this.getStringX(o))),typeof o=="string"&&o.includes("px")&&(d=parseFloat(o)),o==null&&n.marker&&(d=i.layout.gridWidth),n.seriesIndex!==void 0&&i.globals.barWidth&&!this.annoCtx.invertAxis&&(d-=i.globals.barWidth/2*(i.seriesData.series.length-1)-i.globals.barWidth*n.seriesIndex),typeof d!="number"&&(d=0,l=!0),parseFloat(d.toFixed(10))>parseFloat(i.layout.gridWidth.toFixed(10))?(d=i.layout.gridWidth,l=!0):d<0&&(d=0,l=!0),{x:d,clipped:l}}getStringX(e){var n;const i=this.w;let o=e;if(i.config.xaxis.convertedCatToNumeric&&i.labelData.categoryLabels.length){const s=String(e);e=i.labelData.categoryLabels.findIndex(l=>String(l)===s)+1}const r=i.labelData.labels.map(s=>Array.isArray(s)?s.join(" "):s).indexOf(e),a=i.dom.baseEl.querySelector(`.apexcharts-xaxis-texts-g text:nth-child(${r+1})`);return a&&(o=parseFloat((n=a.getAttribute("x"))!=null?n:"0")),o}};class x1e{constructor(e){this.w=e.w,this.annoCtx=e,this.invertAxis=this.annoCtx.invertAxis,this.helpers=new Pv(this.annoCtx)}addXaxisAnnotation(e,n,i){const o=this.w,r=this.helpers.getX1X2("x1",e);let a=r.x;const s=r.clipped;let l=!0,c;const u=e.label.text,d=e.strokeDashArray;if(Ee.isNumber(a)){if(e.x2===null||typeof e.x2>"u"){if(!s){const f=this.annoCtx.graphics.drawLine(a+e.offsetX,0+e.offsetY,a+e.offsetX,o.layout.gridHeight+e.offsetY,e.borderColor,d,e.borderWidth);n.appendChild(f.node),e.id&&f.node.classList.add(e.id),Ms(f,a+e.offsetX,o)}}else{const f=this.helpers.getX1X2("x2",e);if(c=f.x,l=f.clipped,c{this.addXaxisAnnotation(i,n.node,o)}),n}}class w1e{constructor(e){this.w=e.w,this.annoCtx=e,this.helpers=new Pv(this.annoCtx),this.axesUtils=new d$(this.annoCtx.w,{theme:this.annoCtx.theme,timeScale:this.annoCtx.timeScale})}addYaxisAnnotation(e,n,i){const o=this.w,r=e.strokeDashArray;let a=this.helpers.getY1Y2("y1",e),s=a.yP;const l=a.clipped;let c,u=!0,d=!1;const f=e.label.text;if(e.y2===null||typeof e.y2>"u"){if(!l){d=!0;const h=this.annoCtx.graphics.drawLine(0+e.offsetX,s+e.offsetY,this._getYAxisAnnotationWidth(e),s+e.offsetY,e.borderColor,r,e.borderWidth);n.appendChild(h.node),e.id&&h.node.classList.add(e.id)}}else{if(a=this.helpers.getY1Y2("y2",e),c=a.yP,u=a.clipped,c>s){const h=s;s=c,c=h}if(!(l&&u)){d=!0;const h=this.annoCtx.graphics.drawRect(0+e.offsetX,c+e.offsetY,this._getYAxisAnnotationWidth(e),s-c,0,e.fillColor,e.opacity,1,e.borderColor,r);h.node.classList.add("apexcharts-annotation-rect"),h.attr("clip-path",`url(#gridRectMask${o.globals.cuid})`),n.appendChild(h.node),e.id&&h.node.classList.add(e.id)}}if(d){const h=e.label.position==="right"?o.layout.gridWidth:e.label.position==="center"?o.layout.gridWidth/2:0,p=this.annoCtx.graphics.drawText({x:h+e.label.offsetX,y:(c??s)+e.label.offsetY-3,text:f,textAnchor:e.label.textAnchor,fontSize:e.label.style.fontSize,fontFamily:e.label.style.fontFamily,fontWeight:e.label.style.fontWeight,foreColor:e.label.style.color,cssClass:`apexcharts-yaxis-annotation-label ${e.label.style.cssClass} ${e.id?e.id:""}`});p.attr({rel:i}),n.appendChild(p.node)}}_getYAxisAnnotationWidth(e){const n=this.w;let i=n.layout.gridWidth;return e.width.indexOf("%")>-1?i=n.layout.gridWidth*parseInt(e.width,10)/100:i=parseInt(e.width,10),i+e.offsetX}drawYAxisAnnotations(){const e=this.w,n=this.annoCtx.graphics.group({class:"apexcharts-yaxis-annotations"});return e.config.annotations.yaxis.forEach((i,o)=>{i.yAxisIndex=this.axesUtils.translateYAxisIndex(i.yAxisIndex),this.axesUtils.isYAxisHidden(i.yAxisIndex)&&this.axesUtils.yAxisAllSeriesCollapsed(i.yAxisIndex)||this.addYaxisAnnotation(i,n.node,o)}),n}}class S1e{constructor(e){this.w=e.w,this.annoCtx=e,this.helpers=new Pv(this.annoCtx)}addPointAnnotation(e,n,i){const o=this.w;if(o.globals.collapsedSeriesIndices.indexOf(e.seriesIndex)>-1)return;const r=this.helpers.getX1X2("x1",e),a=r.x,s=r.clipped,l=this.helpers.getY1Y2("y1",e),c=l.yP,u=l.clipped;if(Ee.isNumber(a)&&!(u||s)){const d={pSize:e.marker.size,pointStrokeWidth:e.marker.strokeWidth,pointFillColor:e.marker.fillColor,pointStrokeColor:e.marker.strokeColor,shape:e.marker.shape,pRadius:e.marker.radius,class:`apexcharts-point-annotation-marker ${e.marker.cssClass} ${e.id?e.id:""}`};let f=this.annoCtx.graphics.drawMarker(a+e.marker.offsetX,c+e.marker.offsetY,d);n.appendChild(f.node);const h=[f.node];Ms(f,a,o);const p=e.label.text?e.label.text:"",g=this.getConstrainedLabelX(p,a+e.label.offsetX,e.label),m=this.annoCtx.graphics.drawText({x:g,y:c+e.label.offsetY-e.marker.size-parseFloat(e.label.style.fontSize)/1.6,text:p,textAnchor:e.label.textAnchor,fontSize:e.label.style.fontSize,fontFamily:e.label.style.fontFamily,fontWeight:e.label.style.fontWeight,foreColor:e.label.style.color,cssClass:`apexcharts-point-annotation-label ${e.label.style.cssClass} ${e.id?e.id:""}`});if(m.attr({rel:i}),n.appendChild(m.node),Ms(m,a,o),e.customSVG.SVG){const v=this.annoCtx.graphics.group({class:"apexcharts-point-annotations-custom-svg "+e.customSVG.cssClass});v.attr({transform:`translate(${a+e.customSVG.offsetX}, ${c+e.customSVG.offsetY})`}),v.node.innerHTML=e.customSVG.SVG,n.appendChild(v.node),h.push(v.node)}if(e.image.path){const v=e.image.width?e.image.width:20,b=e.image.height?e.image.height:20;f=this.annoCtx.addImage({x:a+e.image.offsetX-v/2,y:c+e.image.offsetY-b/2,width:v,height:b,path:e.image.path,appendTo:".apexcharts-point-annotations"}),h.push(f.node)}e.tooltip&&e.tooltip.enabled&&h.forEach(v=>{v.addEventListener("mouseenter",()=>{this.showPointTooltip(e,v)}),v.addEventListener("mouseleave",()=>{this.hidePointTooltip()})}),e.mouseEnter&&f.node.addEventListener("mouseenter",e.mouseEnter.bind(this,e)),e.mouseLeave&&f.node.addEventListener("mouseleave",e.mouseLeave.bind(this,e)),e.click&&f.node.addEventListener("click",e.click.bind(this,e))}}getConstrainedLabelX(e,n,i){const o=this.w;if(!e)return n;const{width:r}=this.annoCtx.graphics.getTextRects(e,i.style.fontSize,i.style.fontFamily,void 0,!0,i.style.fontWeight);let a,s;switch(i.textAnchor){case"start":a=n,s=n+r;break;case"end":a=n-r,s=n;break;default:a=n-r/2,s=n+r/2}const l=i.style.padding||{};return a-=l.left||0,s+=l.right||0,a<0?n-a:s>o.layout.gridWidth?n-(s-o.layout.gridWidth):n}getPointTooltipEl(){const e=this.w;let n=e.dom.elWrap.querySelector(".apexcharts-annotation-tooltip");return n||(n=We.createElementNS("http://www.w3.org/1999/xhtml","div"),n.classList.add("apexcharts-tooltip","apexcharts-annotation-tooltip"),e.dom.elWrap.appendChild(n)),n}getPointTooltipContent(e){const n=this.w,i=e.tooltip||{};if(typeof i.formatter=="function")return i.formatter({annotation:e,seriesIndex:e.seriesIndex,id:e.id,w:n});let o=i.text!=null?i.text:e.label&&e.label.text;return Array.isArray(o)&&(o=o.join("
")),o==null?"":String(o)}showPointTooltip(e,n){const i=this.w,o=this.getPointTooltipContent(e);if(!o)return;const r=this.getPointTooltipEl();r.innerHTML=o;const a=e.tooltip.theme||i.config.tooltip.theme||"light";r.classList.remove("apexcharts-theme-light","apexcharts-theme-dark"),r.classList.add(`apexcharts-theme-${a}`),r.classList.add("apexcharts-active");const s=i.dom.elWrap.getBoundingClientRect(),l=n.getBoundingClientRect(),c=r.getBoundingClientRect(),u=e.tooltip.offsetX||0,d=e.tooltip.offsetY||0;let f=l.left-s.left+l.width/2-c.width/2,h=l.top-s.top-c.height-10;f=Math.max(0,Math.min(f,s.width-c.width)),h<0&&(h=l.top-s.top+l.height+10),r.style.left=f+u+"px",r.style.top=h+d+"px"}hidePointTooltip(){const e=this.w.dom.elWrap.querySelector(".apexcharts-annotation-tooltip");e&&e.classList.remove("apexcharts-active")}drawPointAnnotations(){const e=this.w,n=this.annoCtx.graphics.group({class:"apexcharts-point-annotations"});return e.config.annotations.points.map((i,o)=>{this.addPointAnnotation(i,n.node,o)}),n}}class C1e{constructor(e,{theme:n=null,timeScale:i=null}={}){this.w=e,this.theme=n,this.timeScale=i,this.invertAxis=void 0,this.inversedReversedAxis=void 0,this.graphics=new Be(this.w),this.w.globals.isBarHorizontal&&(this.invertAxis=!0),this.helpers=new Pv(this),this.xAxisAnnotations=new x1e(this),this.yAxisAnnotations=new w1e(this),this.pointsAnnotations=new S1e(this),this.w.globals.isBarHorizontal&&this.w.config.yaxis[0].reversed&&(this.inversedReversedAxis=!0),this.xDivision=this.w.layout.gridWidth/this.w.globals.dataPoints}drawAxesAnnotations(){const e=this.w;if(e.globals.axisCharts){const n=this.yAxisAnnotations.drawYAxisAnnotations(),i=this.xAxisAnnotations.drawXAxisAnnotations(),o=this.pointsAnnotations.drawPointAnnotations(),r=e.config.chart.animations.enabled,a=[n,i,o],s=[i.node,n.node,o.node],l=e.config.chart.type==="line"||e.config.chart.type==="area"||e.config.chart.type==="rangeArea",c=[l,!1,l];for(let u=0;u<3;u++)e.dom.elGraphical.add(a[u]),r&&!e.globals.resized&&!e.globals.dataChanged&&e.config.chart.type!=="scatter"&&e.config.chart.type!=="bubble"&&e.globals.dataPoints>1&&!c[u]&&s[u].classList.add("apexcharts-element-hidden"),e.globals.delayedElements.push({el:s[u],index:0});this.helpers.annotationsBackground()}}drawImageAnnos(){this.w.config.annotations.images.map(n=>{this.addImage(n)})}drawTextAnnos(){this.w.config.annotations.texts.map(n=>{this.addText(n)})}addXaxisAnnotation(e,n,i){this.xAxisAnnotations.addXaxisAnnotation(e,n,i)}addYaxisAnnotation(e,n,i){this.yAxisAnnotations.addYaxisAnnotation(e,n,i)}addPointAnnotation(e,n,i){this.pointsAnnotations.addPointAnnotation(e,n,i)}addText(e){const{x:n,y:i,text:o,textAnchor:r,foreColor:a,fontSize:s,fontFamily:l,fontWeight:c,cssClass:u,backgroundColor:d,borderWidth:f,strokeDashArray:h,borderRadius:p,borderColor:g,appendTo:m=".apexcharts-svg",paddingLeft:v=4,paddingRight:b=4,paddingBottom:y=2,paddingTop:w=2}=e,x=this.w,$=this.graphics.drawText({x:n,y:i,text:o,textAnchor:r||"start",fontSize:s||"12px",fontWeight:c||"regular",fontFamily:l||x.config.chart.fontFamily,foreColor:a||x.config.chart.foreColor,cssClass:"apexcharts-text "+u?u:""}),S=x.dom.baseEl.querySelector(m);S&&S.appendChild($.node);const _=$.bbox();if(o){const P=this.graphics.drawRect(_.x-v,_.y-w,_.width+v+b,_.height+y+w,p,d||"transparent",1,f,g,h);S.insertBefore(P.node,$.node)}}addImage(e){const n=this.w,{path:i,x:o=0,y:r=0,width:a=20,height:s=20,appendTo:l=".apexcharts-svg"}=e,c=n.dom.Paper.image(i);c.size(a,s).move(o,r);const u=n.dom.baseEl.querySelector(l);return u&&u.appendChild(c.node),c}addXaxisAnnotationExternal(e,n,i){return this.addAnnotationExternal({params:e,pushToMemory:n,context:i,type:"xaxis",contextMethod:i.addXaxisAnnotation}),i}addYaxisAnnotationExternal(e,n,i){return this.addAnnotationExternal({params:e,pushToMemory:n,context:i,type:"yaxis",contextMethod:i.addYaxisAnnotation}),i}addPointAnnotationExternal(e,n,i){return typeof this.invertAxis>"u"&&(this.invertAxis=i.w.globals.isBarHorizontal),this.addAnnotationExternal({params:e,pushToMemory:n,context:i,type:"point",contextMethod:i.addPointAnnotation}),i}addAnnotationExternal({params:e,pushToMemory:n,context:i,type:o,contextMethod:r}){const a=i,s=a.w,l=s.dom.baseEl.querySelector(`.apexcharts-${o}-annotations`),c=l.childNodes.length+1,u=new bN,d=Object.assign({},o==="xaxis"?u.xAxisAnnotation:o==="yaxis"?u.yAxisAnnotation:u.pointAnnotation),f=Ee.extend(d,e);switch(o){case"xaxis":this.addXaxisAnnotation(f,l,c);break;case"yaxis":this.addYaxisAnnotation(f,l,c);break;case"point":this.addPointAnnotation(f,l,c);break}const h=s.dom.baseEl.querySelector(`.apexcharts-${o}-annotations .apexcharts-${o}-annotation-label[rel='${c}']`),p=this.helpers.addBackgroundToAnno(h,f);return p&&l.insertBefore(p.node,h),n&&s.globals.memory.methodsToExec.push({context:a,id:f.id?f.id:Ee.randomId(),method:r,label:"addAnnotation",params:e}),i}_removeAnnotationTooltip(e){const n=e.dom.elWrap&&e.dom.elWrap.querySelector(".apexcharts-annotation-tooltip");n&&n.parentNode&&n.parentNode.removeChild(n)}clearAnnotations(e){const n=e.w;this._removeAnnotationTooltip(n);const i=n.dom.baseEl.querySelectorAll(".apexcharts-yaxis-annotations, .apexcharts-xaxis-annotations, .apexcharts-point-annotations");for(let o=n.globals.memory.methodsToExec.length-1;o>=0;o--)(n.globals.memory.methodsToExec[o].label==="addText"||n.globals.memory.methodsToExec[o].label==="addAnnotation")&&n.globals.memory.methodsToExec.splice(o,1);Array.prototype.forEach.call(i,o=>{for(;o.firstChild;)o.removeChild(o.firstChild)})}removeAnnotation(e,n){const i=e.w;this._removeAnnotationTooltip(i);const o=i.dom.baseEl.querySelectorAll(`.${n}`);o&&(i.globals.memory.methodsToExec.map((r,a)=>{r.id===n&&i.globals.memory.methodsToExec.splice(a,1)}),Object.keys(i.config.annotations).forEach(r=>{const a=i.config.annotations[r];Array.isArray(a)&&(i.config.annotations[r]=a.filter(s=>s.id!==n))}),Array.prototype.forEach.call(o,r=>{r.parentElement.removeChild(r)}))}}Vn.registerFeatures({annotations:C1e});class $1e{constructor(e,n){this.w=e,this.ctx=n,this.seriesIndex=0,this.dataPointIndex=0,this.active=!1,this._tooltipDismissed=!1,this._focusedEl=null,this._hoveredBarEl=null,this._enlargedScatterMarker=null,this._onKeyDown=this._onKeyDown.bind(this),this._onFocus=this._onFocus.bind(this),this._onBlur=this._onBlur.bind(this),this._onLegendClick=this._onLegendClick.bind(this),this._onPointerDown=this._onPointerDown.bind(this),this._lastPointerDownAt=0}init(){const n=this.w.dom.Paper.node;n&&(n.setAttribute("tabindex","0"),n.addEventListener("focus",this._onFocus),n.addEventListener("blur",this._onBlur),n.addEventListener("mousedown",this._onPointerDown,{capture:!0}),n.addEventListener("pointerdown",this._onPointerDown,{capture:!0}),n.addEventListener("touchstart",this._onPointerDown,{capture:!0,passive:!0}),n.addEventListener("keydown",this._onKeyDown,{passive:!1}),this.ctx.events.addEventListener("legendClick",this._onLegendClick))}destroy(){const e=this.w,n=e.dom.Paper&&e.dom.Paper.node;this.ctx.events.removeEventListener("legendClick",this._onLegendClick),n&&(n.removeEventListener("focus",this._onFocus),n.removeEventListener("blur",this._onBlur),n.removeEventListener("keydown",this._onKeyDown),n.removeEventListener("mousedown",this._onPointerDown,{capture:!0}),n.removeEventListener("pointerdown",this._onPointerDown,{capture:!0}),n.removeEventListener("touchstart",this._onPointerDown,{capture:!0}))}_onPointerDown(){this._lastPointerDownAt=Date.now()}notePointerFocus(){this._lastPointerDownAt=Date.now()}handleKey(e){}_onFocus(){this._isNavEnabled()&&(Date.now()-this._lastPointerDownAt<100||(this.active=!0,this._clampCursor(),this._snapToVisibleRange(),this._showCurrentPoint()))}_onBlur(){this.active=!1,this._tooltipDismissed=!1,this._hideFocus()}_onLegendClick(){this.active&&(this.active=!1,this._hideFocus())}_onKeyDown(e){var n,i,o;if(!(!this._isNavEnabled()||!this.active)){if(e.shiftKey&&(e.key==="ArrowRight"||e.key==="ArrowLeft")&&this._canPan()){e.preventDefault(),this._panBy(e.key==="ArrowRight"?1:-1);return}switch(e.key){case"ArrowRight":e.preventDefault(),this._move(0,1);break;case"ArrowLeft":e.preventDefault(),this._move(0,-1);break;case"ArrowUp":e.preventDefault(),this._move(-1,0);break;case"ArrowDown":e.preventDefault(),this._move(1,0);break;case"Home":e.preventDefault(),this.dataPointIndex=0,this._skipNullForward(),this._showCurrentPoint();break;case"End":e.preventDefault(),this.dataPointIndex=this._getDataPointCount(this.seriesIndex)-1,this._skipNullBackward(),this._showCurrentPoint();break;case"Enter":case" ":e.preventDefault(),this._fireClick();break;case"+":case"=":this._canZoom()&&(e.preventDefault(),(n=this.ctx.toolbar)==null||n.handleZoomIn(),this._announce("Zoomed in"));break;case"-":case"_":this._canZoom()&&(e.preventDefault(),(i=this.ctx.toolbar)==null||i.handleZoomOut(),this._announce("Zoomed out"));break;case"0":this._canZoom()&&this.w.interact.zoomed&&(e.preventDefault(),(o=this.ctx.toolbar)==null||o.handleZoomReset(),this._announce("Zoom reset"));break;case"Escape":e.preventDefault(),this._tooltipDismissed?(this.active=!1,this._tooltipDismissed=!1,this._hideFocus()):(this._tooltipDismissed=!0,this._hideFocus());break}}}_canZoom(){const e=this.w;return!!(e.globals.axisCharts&&e.config.chart.zoom&&e.config.chart.zoom.enabled)}_canPan(){return this._canZoom()}_panBy(e){const n=this.w,i=this.ctx.toolbar;if(!i)return;const o=Number(n.globals.minX),r=Number(n.globals.maxX);if(!isFinite(o)||!isFinite(r)||o===r)return;const s=(r-o)*.1*e;i.zoomUpdateOptions(o+s,r+s),this._announce(e>0?"Panned right":"Panned left")}_move(e,n){const i=this.w,o=i.config.chart.accessibility.keyboard.navigation.wrapAround;if(e!==0){const r=this.w.globals.tooltip;if(r&&r.tConfig&&r.tConfig.shared){const u=this.dataPointIndex;if(r.tooltipUtil&&r.tooltipUtil.isXoverlap(u)&&r.tooltipUtil.isInitialSeriesSameLen())return}const a=this._getSeriesCount();let s=this.seriesIndex+e,l=0;for(;l=a&&(s=o?0:a-1),!!i.globals.collapsedSeriesIndices.includes(s));)s+=e,l++;this.seriesIndex=s;const c=this._getDataPointCount(s);this.dataPointIndex>=c&&(this.dataPointIndex=c-1)}if(n!==0){const r=this._getDataPointCount(this.seriesIndex);let a=this.dataPointIndex+n;a<0&&(a=o?r-1:0),a>=r&&(a=o?0:r-1),this.dataPointIndex=a,n>0?this._skipNullForward():this._skipNullBackward(),this._isDataPointVisible(this.seriesIndex,this.dataPointIndex)||this._snapToVisibleRangeInDirection(n)}this._showCurrentPoint()}_skipNullForward(){const e=this.w,n=this.seriesIndex,i=this._getDataPointCount(n);let o=this.dataPointIndex,r=0;if(Array.isArray(e.seriesData.series[n])){for(;r0&&!o.globals.markers.batched;l?this._showScatterBubblePoint(e,n,i):c?s?i.marker.enlargePoints(n):i.tooltipPosition.moveDynamicPointOnHover(n,e):s?i.tooltipPosition.moveDynamicPointsOnHover(n):i.tooltipPosition.moveDynamicPointOnHover(n,e)}_showScatterBubblePoint(e,n,i){const o=this.w.dom.baseEl;this._enlargedScatterMarker&&(i.marker.oldPointSize(this._enlargedScatterMarker),this._enlargedScatterMarker=null);const r=o.querySelector(`.apexcharts-series[data\\:realIndex='${e}']`);if(!r)return;const a=r.querySelector(`.apexcharts-marker[rel='${n}']`);a&&(i.marker.enlargeCurrentPoint(n,a),this._enlargedScatterMarker=a)}_showTooltipNonAxis(e,n,i,o){const r=this.w;i.tooltipLabels.drawSeriesTexts({ttItems:i.ttItems,i:n,shared:!1});const a=o.getBoundingClientRect(),s=a.width||i.tooltipRect.ttWidth||0,l=a.height||i.tooltipRect.ttHeight||0,c=r.dom.baseEl.querySelector(`.apexcharts-pie-area[j='${n}']`),u=i.getSliceAnchor(c);u&&(o.style.left=u.x-s/2+"px",o.style.top=u.y-l-10+"px")}_showTooltipRadialBar(e,n,i,o){var r;const a=this.w;i.tooltipLabels.drawSeriesTexts({ttItems:i.ttItems,i:e,shared:!1});const{ttWidth:s=0,ttHeight:l=0}=i.getCachedDimensions(),c=a.dom.baseEl.querySelector(`.apexcharts-radialbar-series[data\\:realIndex='${e}'] path`);if(c){const u=parseFloat((r=c.getAttribute("data:angle"))!=null?r:"")||0,f=(a.config.plotOptions.radialBar.startAngle||0)+u/2,h=a.layout.gridWidth/2,p=a.layout.gridHeight/2,g=a.globals.radialSize||Math.min(a.layout.gridWidth,a.layout.gridHeight)/2,m=a.seriesData.series.length,v=g/Math.max(m,1),b=g-e*v,y=b-v,w=(b+y)/2,x=Ee.polarToCartesian(h,p,w,f),$=x.x+(a.layout.translateX||0),S=x.y+(a.layout.translateY||0);o.style.left=$-s/2+"px",o.style.top=S-l-10+"px"}}_showTooltipHeatTree(e,n,i,o,r){var a,s;const l=this.w;i.tooltipLabels.drawSeriesTexts({ttItems:i.ttItems,i:e,j:n,shared:!1});const c=o.getBoundingClientRect(),u=c.width||i.tooltipRect.ttWidth||0,d=c.height||i.tooltipRect.ttHeight||0,f=r==="heatmap"?"apexcharts-heatmap-rect":"apexcharts-treemap-rect",h=l.dom.baseEl.querySelector(`.${f}[i='${e}'][j='${n}']`);if(h){const p=l.dom.elWrap.getBoundingClientRect(),g=h.getBoundingClientRect(),m=g.left-p.left,v=g.top-p.top,b=g.width,y=g.height,w=parseFloat((a=h.getAttribute("cx"))!=null?a:""),x=parseFloat((s=h.getAttribute("width"))!=null?s:"");i.tooltipPosition.moveXCrosshairs(w+x/2);let $=m+b+u/2;const S=v+y/2-d/2;m+b>l.layout.gridWidth/2&&($=m-u/2),o.style.left=$+"px",o.style.top=S+"px"}}_applyFocusClass(e,n){this._removeFocusClass();const i=this._getFocusableElement(e,n)||this._getBatchedFocusEl(e);if(i){i.classList.add("apexcharts-keyboard-focused"),i.setAttribute("role","img");const o=this._buildPointLabel(e,n);o&&i.setAttribute("aria-label",o),this._focusedEl=i}}_getBatchedFocusEl(e){return this.w.globals.markers.batched?this.w.dom.baseEl.querySelector(`.apexcharts-series[data\\:realIndex='${e}'] .apexcharts-series-markers path`):null}_removeFocusClass(){this._focusedEl&&(this._focusedEl.classList.remove("apexcharts-keyboard-focused"),this._focusedEl.removeAttribute("role"),this._focusedEl.removeAttribute("aria-label"),this._focusedEl=null)}_buildPointLabel(e,n){var i,o,r,a,s,l,c,u;const d=this.w,f=d.config.chart.type,h=d.seriesData.seriesNames||[],p=d.seriesData.series||[];if(f==="pie"||f==="donut"||f==="polarArea"){const S=(o=((i=d.labelData)==null?void 0:i.labels)&&d.labelData.labels[n])!=null?o:"",_=Array.isArray(p)?p[n]:"";return S?`${S}: ${_}`:`${_}`}if(f==="radialBar"){const S=h[e]||`Series ${e+1}`,_=Array.isArray(p)?p[e]:"";return`${S}: ${_}`}const g=h[e]||`Series ${e+1}`,v=(Array.isArray(p[e])?p[e]:[])[n];let b=v==null?"":String(v);const y=(a=(r=d.formatters)==null?void 0:r.yLabelFormatters)==null?void 0:a[e];if(typeof y=="function")try{b=y(v,{seriesIndex:e,dataPointIndex:n,w:d})}catch{}let w="";const x=(s=d.labelData)==null?void 0:s.categoryLabels,$=(c=(l=d.seriesData)==null?void 0:l.seriesX)==null?void 0:c[e];if(Array.isArray(x)&&x[n]!=null)w=String(x[n]);else if(Array.isArray($)&&$[n]!=null){const S=(u=d.formatters)==null?void 0:u.xLabelFormatter;if(typeof S=="function")try{w=String(S($[n],{seriesIndex:e,dataPointIndex:n,w:d}))}catch{w=String($[n])}else w=String($[n])}return w?`${g}: ${b}, ${w}`:`${g}: ${b}`}_leaveHoveredBar(){this._hoveredBarEl&&(new Be(this.w,this.ctx).pathMouseLeave(this._hoveredBarEl,null),this._hoveredBarEl=null)}_getFocusableElement(e,n){const i=this.w,o=i.config.chart.type,r=i.dom.baseEl;return o==="pie"||o==="donut"||o==="polarArea"?r.querySelector(`.apexcharts-pie-area[j='${n}']`):o==="heatmap"?r.querySelector(`.apexcharts-heatmap-rect[i='${e}'][j='${n}']`):o==="treemap"?r.querySelector(`.apexcharts-treemap-rect[i='${e}'][j='${n}']`):o==="radialBar"?r.querySelector(`.apexcharts-radialbar-series[data\\:realIndex='${e}'] path`):o==="bar"||o==="candlestick"||o==="boxPlot"||o==="violin"||o==="rangeBar"?r.querySelector(`.apexcharts-series[data\\:realIndex='${e}'] path[j='${n}']`):r.querySelector(`.apexcharts-series[data\\:realIndex='${e}'] .apexcharts-marker[rel='${n}']`)||null}_fireClick(){const n=this.w.globals.tooltip;if(!n)return;const i={type:"mouseup",clientX:0,clientY:0};n.markerClick(i,this.seriesIndex,this.dataPointIndex)}_isNavEnabled(){const e=this.w.config.chart.accessibility;return e.enabled&&e.keyboard.enabled&&e.keyboard.navigation.enabled}_getSeriesCount(){const e=this.w,n=e.config.chart.type;return n==="pie"||n==="donut"||n==="polarArea"?1:e.seriesData.series.length}_getDataPointCount(e){const n=this.w,i=n.config.chart.type;if(i==="pie"||i==="donut"||i==="polarArea")return n.seriesData.series.length;const o=n.seriesData.series;return o[e]&&Array.isArray(o[e])?o[e].length:0}_clampCursor(){const e=this._getSeriesCount();this.seriesIndex>=e&&(this.seriesIndex=e-1),this.seriesIndex<0&&(this.seriesIndex=0);const n=this._getDataPointCount(this.seriesIndex);this.dataPointIndex>=n&&(this.dataPointIndex=n-1),this.dataPointIndex<0&&(this.dataPointIndex=0)}_snapToVisibleRange(){const e=this.w,n=e.globals,i=this.seriesIndex;if(!e.interact.zoomed)return;const o=e.seriesData.seriesX&&e.seriesData.seriesX[i];if(!o||!o.length)return;const r=n.minX,a=n.maxX;if(r===void 0||a===void 0)return;const s=o[this.dataPointIndex];if(s>=r&&s<=a)return;const l=o.length;for(let c=0;c=r&&o[c]<=a){this.dataPointIndex=c;return}}_snapToVisibleRangeInDirection(e){const n=this.w,i=n.globals,o=this.seriesIndex,r=n.seriesData.seriesX&&n.seriesData.seriesX[o];if(!r||!r.length)return;const a=i.minX,s=i.maxX;if(a===void 0||s===void 0)return;const l=r.length;if(e>=0){for(let c=0;c=a&&r[c]<=s){this.dataPointIndex=c;return}}else for(let c=l-1;c>=0;c--)if(r[c]>=a&&r[c]<=s){this.dataPointIndex=c;return}}_isDataPointVisible(e,n){const i=this.w,o=i.globals;if(!i.interact.zoomed)return!0;const r=i.seriesData.seriesX&&i.seriesData.seriesX[e];if(!r)return!0;const a=r[n];return a===void 0?!0:a>=o.minX&&a<=o.maxX}_announce(e){const n=this.w;if(!n.config.chart.accessibility.announcements.enabled)return;const i=n.dom.baseEl;if(!i)return;const o=i.querySelector(".apexcharts-sr-status");o&&(o.textContent="",setTimeout(()=>{o.textContent=e},0))}}Vn.registerFeatures({keyboardNavigation:$1e});function zE(t,e){if(!(e>0))return[];if(e===1)return[Ye({},t)];const n=t.width>=t.height,i=n?t.width:t.height,o=n?t.height:t.width,r=o>0?i/o:e;let a=Math.max(1,Math.ceil(Math.sqrt(r*e)));a>e&&(a=e);const s=Math.floor(e/a);let l=e-s*a;const c=[],u=i/a;let d=0;for(let f=0;f0?1:0);l>0&&l--;const p=h>0?o/h:0;for(let g=0;g0))return[];const i=t.width>=t.height,o=i?t.width:t.height,r=i?t.height:t.width,a=i?t.y:t.x,s=a+r,l=r>0?o/r:e;let c=Math.max(Math.ceil(Math.sqrt(l*e)),Math.ceil(o/16));c>=1||(c=1),c>e&&(c=e);const u=Math.floor(e/c);let d=e-u*c;const f=[],h=o/c;let p=i?t.x:t.y;for(let g=0;g0?1:0);d>0&&d--;const v=[],b=n(p,p+h,i);if(Array.isArray(b))for(let _=0;_T&&v.push([T,O])}v.length||v.push([a,s]);const y=v.reduce((_,P)=>_+(P[1]-P[0]),0),w=v.map(_=>y>0?(_[1]-_[0])/y*m:m/v.length),x=w.map(_=>Math.floor(_));let $=x.reduce((_,P)=>_+P,0);const S=w.map((_,P)=>({i:P,frac:_-Math.floor(_)})).sort((_,P)=>P.frac-_.frac);for(let _=0;$=1;c/=2){const u=(a&c)>0?1:0,d=(s&c)>0?1:0;if(l+=c*c*(3*u^d),d===0){u===1&&(a=c-1-a,s=c-1-s);const f=a;a=s,s=f}}return l}function gh(t,e){let n=1/0,i=1/0,o=-1/0,r=-1/0;const a=t.map(s=>{const[l,c]=e(s);return lo&&(o=l),cr&&(r=c),[l,c]});return t.map((s,l)=>({item:s,d:A1e(a[l][0],a[l][1],n,i,o,r)})).sort((s,l)=>s.d-l.d).map(s=>s.item)}function WE(t){if(!t||typeof t!="string")return null;const e=t.trim();if(e[0]==="#"){const i=e.slice(1);return i.length===3?[parseInt(i[0]+i[0],16),parseInt(i[1]+i[1],16),parseInt(i[2]+i[2],16),1]:i.length===6||i.length===8?[parseInt(i.slice(0,2),16),parseInt(i.slice(2,4),16),parseInt(i.slice(4,6),16),i.length===8?parseInt(i.slice(6,8),16)/255:1]:null}const n=e.match(/^rgba?\(([^)]+)\)$/i);if(n){const i=n[1].split(",").map(o=>parseFloat(o));return i.length<3||i.some(o=>!isFinite(o))?null:[i[0],i[1],i[2],i.length>3?i[3]:1]}return null}function jE(t,e){const n=WE(t),i=WE(e);return!n||!i?null:o=>{const r=Math.round(n[0]+(i[0]-n[0])*o),a=Math.round(n[1]+(i[1]-n[1])*o),s=Math.round(n[2]+(i[2]-n[2])*o),l=n[3]+(i[3]-n[3])*o;return l>=1?`rgb(${r},${a},${s})`:`rgba(${r},${a},${s},${l})`}}function _1e(t){return t<.5?4*t*t*t:1-Math.pow(-2*t+2,3)/2}function P1e({pieces:t,duration:e,onPieceDone:n,onAllDone:i}){let o=!1;const r=Date.now(),a=Math.max(1,e),s=(c,u)=>{const d=c.from,f=c.to,h=c.el;h.setAttribute("x",String(d.x+(f.x-d.x)*u)),h.setAttribute("y",String(d.y+(f.y-d.y)*u)),h.setAttribute("width",String(Math.max(0,d.width+(f.width-d.width)*u))),h.setAttribute("height",String(Math.max(0,d.height+(f.height-d.height)*u))),h.setAttribute("rx",String(Math.max(0,d.rx+(f.rx-d.rx)*u))),c.fill?h.setAttribute("fill",c.fill(u)):u>=1&&c.fillEnd&&h.setAttribute("fill",c.fillEnd)},l=()=>{if(o)return;const c=Date.now()-r;let u=!1;for(let d=0;d=1&&(f._done=!0,n&&n(f))}u?We.requestAnimationFrame(l):i&&i()};return We.requestAnimationFrame(l),()=>{o=!0}}const O1e=new Set(["bar","funnel","pyramid","histogram"]),T1e=new Set(["pie","donut","polarArea","radialBar","gauge"]),E1e=new Set(["unit","waffle"]),M1e=new Set(["treemap","sunburst"]),I1e=new Set(["boxPlot","violin"]),k1e=.55,P0=1500,D1e=300;function Li(t){return O1e.has(t)?"bar":T1e.has(t)?"radial":E1e.has(t)?"unit":M1e.has(t)?"partition":I1e.has(t)?"summary":null}class R1e{constructor(e,n){this.w=e,this.ctx=n,this._snapshot=null,this._ghost=null,this._pieceLayer=null,this._pieceCancel=null}canMorphTypes(e,n){if(e===n)return!1;const i=Li(e),o=Li(n);return!i||!o?!1:i==="partition"!=(o==="partition")?i!=="unit"&&o!=="unit":!0}isCompatibleSeriesShape(e,n,i){if(!Array.isArray(i)||i.length===0)return!1;const o=Li(e),r=Li(n);return r==="unit"?i.every(a=>typeof a=="number")?!0:i.every(a=>a&&typeof a=="object"&&Array.isArray(a.data)):r==="partition"?!0:r==="radial"?i.every(a=>typeof a=="number")?!0:i.length===1&&i[0]&&typeof i[0]=="object"&&Array.isArray(i[0].data):r==="bar"||r==="summary"?i.every(a=>a&&typeof a=="object"&&Array.isArray(a.data)):o!==null&&r!==null}captureBeforeDestroy({fromType:e,toType:n,newSeries:i}){if(this._snapshot=null,this._removeGhost(),this._cancelPieces(),!Ot.isBrowser())return!1;const o=this.w.config.chart.animations;if(!o||o.enabled===!1||o.chartTypeMorph&&o.chartTypeMorph.enabled===!1||o.respectReducedMotion&&u$()||!this.canMorphTypes(e,n)||!this.isCompatibleSeriesShape(e,n,i))return!1;const{marks:r,branches:a,unitDots:s}=this._captureFromDOM(e);if(!r.length)return!1;const l=this._buildMapping(r,e,n,i,a);if(l.size===0)return!1;this._snapshot={fromType:e,toType:n,mapping:l,oldLayout:{translateX:this.w.layout.translateX||0,translateY:this.w.layout.translateY||0}};const c=Li(e),u=Li(n),d=this._canProbePaths();if(u==="unit"&&(c==="bar"||c==="summary"||c==="radial"&&d)){const h=this._countUnitSeries(i);this._snapshot.pieceOut=h>0&&h<=P0}else if(c==="unit"&&(u==="bar"||u==="summary"||u==="radial"&&d)){let h=0;if(s.forEach(p=>{h+=p.length}),h>0&&h<=P0){this._snapshot.pieceIn=!0,this._snapshot.sourceDots=s;const p=[];u==="radial"?(Array.isArray(i)?i:[]).forEach((g,m)=>{p.push(`${m}:0`)}):(Array.isArray(i)?i:[]).forEach((g,m)=>{const v=g&&Array.isArray(g.data)?g.data:[];for(let b=0;b{r.querySelectorAll(s).forEach(l=>{l.parentNode&&l.parentNode.removeChild(l)})}),typeof r.querySelectorAll=="function"&&r.querySelectorAll("[id]").forEach(s=>{s.removeAttribute("id")}),(n=r.removeAttribute)==null||n.call(r,"id"),this._ghost=r}_mountGhost(){var e,n,i;const o=this._ghost;if(!o||!Ot.isBrowser())return;const r=(e=this.w.dom)==null?void 0:e.elWrap;if(!r||typeof r.appendChild!="function"){this._ghost=null;return}const a=o.style;a&&(a.position="absolute",a.left="0",a.top="0",a.background="transparent",a.pointerEvents="none",a.opacity="1"),(n=o.setAttribute)==null||n.call(o,"aria-hidden","true"),(i=o.setAttribute)==null||i.call(o,"class","apexcharts-morph-ghost"),r.appendChild(o);const s=this.getSpeed(),l=Math.max(120,Math.round(s*k1e));We.requestAnimationFrame(()=>{a&&(a.transition=`opacity ${l}ms ease-in`,a.opacity="0")}),setTimeout(()=>this._removeGhost(),l+60)}_removeGhost(){const e=this._ghost;this._ghost=null,e&&e.parentNode&&e.parentNode.removeChild(e)}_countUnitSeries(e){if(!Array.isArray(e))return 0;let n=0;for(const i of e){if(!i||typeof i!="object"||!Array.isArray(i.data))return 0;n+=i.data.length}return n}usesPieceTakeover(){return!!(this._snapshot&&this._snapshot.pieceOut)}claimsTargetMark(e,n){return!!(this._snapshot&&this._snapshot.pieceIn&&this._snapshot.mapping.has(`${e}:${n}`))}_makePieceLayer(){var e,n;const i=(e=this.w.dom)==null?void 0:e.elGraphical,o=i&&i.node;if(!o||typeof o.appendChild!="function")return null;const r=We.createElementNS("http://www.w3.org/2000/svg","g");if(!r)return null;r.setAttribute("class","apexcharts-morph-pieces"),r.setAttribute("pointer-events","none");const a=(n=this.w.globals)==null?void 0:n.cuid;return a&&r.setAttribute("clip-path",`url(#gridRectBarMask${a})`),o.appendChild(r),this._pieceLayer=r,r}_revealPieceHidden(){var e;const n=(e=this.w.globals.dom)==null?void 0:e.baseEl;!n||typeof n.querySelectorAll!="function"||n.querySelectorAll("[data-piece-hidden]").forEach(i=>{i.removeAttribute("opacity"),i.removeAttribute("data-piece-hidden")})}_cancelPieces(){this._pieceCancel&&(this._pieceCancel(),this._pieceCancel=null);const e=this._pieceLayer;this._pieceLayer=null,e&&e.parentNode&&e.parentNode.removeChild(e),this._revealPieceHidden()}_canProbePaths(){if(!Ot.isBrowser())return!1;const e=We.createElementNS("http://www.w3.org/2000/svg","path");return!!e&&typeof e.isPointInFill=="function"}_makeExtentProber(e,n,i){const r=i.ownerDocument.createElementNS("http://www.w3.org/2000/svg","path");r.setAttribute("d",e),r.setAttribute("fill","#000"),r.setAttribute("stroke","#000"),r.setAttribute("stroke-width","3"),r.setAttribute("visibility","hidden"),i.appendChild(r);const a=r.ownerSVGElement;if(typeof r.isPointInFill!="function"||!a||typeof a.createSVGPoint!="function")return i.removeChild(r),null;const s=a.createSVGPoint(),l=(d,f)=>{s.x=d,s.y=f;const h=r;return h.isPointInFill(s)||typeof h.isPointInStroke=="function"&&h.isPointInStroke(s)},c=48;return{intervalsAt:(d,f,h)=>{const p=h?n.y:n.x,g=p+(h?n.height:n.width);if(!(g>p))return null;const m=(_,P)=>h?l(P,_):l(_,P),v=[d+(f-d)*.1,(d+f)/2,f-(f-d)*.1],b=(_,P,T)=>{let O=P,M=_;for(let I=0;I<6;I++){const k=(O+M)/2;m(k,T)?M=k:O=k}return(O+M)/2},y=(g-p)/c,w=new Array(c+1).fill(null);let x=!1;for(const _ of v)for(let P=0;P<=c;P++)w[P]===null&&m(p+P*y,_)&&(w[P]=_,x=!0);if(!x)return null;const $=[];let S=-1;for(let _=0;_<=c+1;_++){const P=_<=c&&w[_]!==null;if(P&&S<0&&(S=_),!P&&S>=0){const T=_-1,O=w[S],M=S===0?p:b(p+S*y,p+(S-1)*y,O),I=T===c?g:b(p+T*y,p+(T+1)*y,w[T]);I>M&&$.push([M,I]),S=-1}}return $.length?$:null},dispose:()=>{r.parentNode&&r.parentNode.removeChild(r)}}}_separatePieces(){var e;const n=this._snapshot,i=(e=this.w.globals.dom)==null?void 0:e.baseEl;if(!n||!i)return this._revealPieceHidden();const o=new Map;let r=0;if(i.querySelectorAll(".apexcharts-unit-area").forEach(d=>{var f,h,p,g,m,v,b;const y=parseInt((f=d.getAttribute("i"))!=null?f:"",10);if(isNaN(y))return;const w=d.getAttribute("cx");let x,$,S=3;if(w!=null)x=parseFloat(w),$=parseFloat((h=d.getAttribute("cy"))!=null?h:""),S=parseFloat((p=d.getAttribute("r"))!=null?p:"3")||3;else{const P=parseFloat((g=d.getAttribute("width"))!=null?g:"0")||0,T=parseFloat((m=d.getAttribute("height"))!=null?m:"0")||0;x=parseFloat((v=d.getAttribute("x"))!=null?v:"")+P/2,$=parseFloat((b=d.getAttribute("y"))!=null?b:"")+T/2,S=Math.max(P,T)/2||3}if(!isFinite(x)||!isFinite($))return;let _=o.get(y);_||(_=[],o.set(y,_)),_.push({el:d,x,y:$,r:S,fill:d.getAttribute("fill")}),r++}),r===0||r>P0)return this._revealPieceHidden();const a=this._makePieceLayer();if(!a)return this._revealPieceHidden();const s=[],l=a.ownerDocument,c=Li(n.fromType),u=c==="summary"||c==="radial";if(Array.from(o.keys()).sort((d,f)=>d-f).forEach(d=>{var f;const h=o.get(d),p=this.getInitialBBoxFor(d),g=n.mapping.get(`${d}:0`);if(!p||!g){h.forEach(x=>{x.el.removeAttribute("opacity"),x.el.removeAttribute("data-piece-hidden")});return}const m=g.fill&&g.fill.indexOf("url(")!==0?g.fill:((f=this.w.globals.colors)==null?void 0:f[d])||h[0].fill;let v=null;if(u){const x=this.getInitialPathFor(d,0);x&&(v=this._makeExtentProber(x,p,a))}const b=v?HE(p,h.length,v.intervalsAt):zE(p,h.length);v&&v.dispose();const y=gh(b,x=>[x.x+x.width/2,x.y+x.height/2]),w=gh(h,x=>[x.x,x.y]);for(let x=0;x{const f=d.meta.dotEl;f.removeAttribute("opacity"),f.removeAttribute("data-piece-hidden"),d.el.parentNode&&d.el.parentNode.removeChild(d.el)})}_combinePieces(){var e,n;const i=this._snapshot,o=(e=this.w.globals.dom)==null?void 0:e.baseEl;if(!i||!i.sourceDots||!i.keyOrder||!o)return this._revealPieceHidden();const r=this._collectTargetMarks(i.toType);if(!r.size)return this._revealPieceHidden();const a=i.oldLayout.translateX-(this.w.layout.translateX||0),s=i.oldLayout.translateY-(this.w.layout.translateY||0),l=Array.from(i.sourceDots.keys()).sort((p,g)=>p-g),c=this._makePieceLayer();if(!c)return this._revealPieceHidden();const u=c.ownerDocument,d=[],f=Li(i.toType),h=f==="summary"||f==="radial";for(let p=0;p{_.removeAttribute("opacity"),_.removeAttribute("data-piece-hidden")});continue}const b=v.fill&&v.fill.indexOf("url(")!==0?v.fill:((n=this.w.globals.colors)==null?void 0:n[v.realIndex])||g[0].fill;let y=null;if(h){const _=v.d||v.els.map(P=>P.getAttribute("pathTo")||P.getAttribute("d")).filter(Boolean).join(" ");_&&(y=this._makeExtentProber(_,v.bbox,c))}const w=y?HE(v.bbox,g.length,y.intervalsAt):zE(v.bbox,g.length);y&&y.dispose();const x=gh(w,_=>[_.x+_.width/2,_.y+_.height/2]),$=gh(g,_=>[_.x,_.y]),S={remaining:$.length,els:v.els,tiles:[]};for(let _=0;_<$.length;_++){const P=$[_],T=x[_],O=u.createElementNS("http://www.w3.org/2000/svg","rect"),M=P.x+a-P.r,I=P.y+s-P.r;O.setAttribute("data-key",m),O.setAttribute("x",String(M)),O.setAttribute("y",String(I)),O.setAttribute("width",String(P.r*2)),O.setAttribute("height",String(P.r*2)),O.setAttribute("rx",String(P.r)),O.setAttribute("fill",String(P.fill||b)),c.appendChild(O),S.tiles.push(O),d.push({el:O,from:{x:M,y:I,width:P.r*2,height:P.r*2,rx:P.r},to:{x:T.x,y:T.y,width:T.width,height:T.height,rx:0},fill:jE(P.fill,b),fillEnd:String(b),delay:0,meta:{markState:S}})}}if(!d.length)return this._cancelPieces();this._runPieces(d,p=>{const g=p.meta.markState;g.remaining--,g.remaining===0&&(g.els.forEach(m=>{m.removeAttribute("opacity"),m.removeAttribute("data-piece-hidden")}),g.tiles.forEach(m=>{m.parentNode&&m.parentNode.removeChild(m)}))})}_runPieces(e,n){const i=this.getSpeed(),o=Math.min(D1e,i*.35),r=Math.max(180,i-o);for(let a=0;a1?a/(e.length-1)*o:0;this._pieceCancel=P1e({pieces:e,duration:r,onPieceDone:n,onAllDone:()=>{this._pieceCancel=null,this._cancelPieces()}})}_collectTargetMarks(e){var n;const i=(n=this.w.globals.dom)==null?void 0:n.baseEl,o=new Map;if(!i)return o;const r=Li(e);if(r==="radial")return i.querySelectorAll(".apexcharts-pie-series .apexcharts-pie-area").forEach((s,l)=>{const c=s.getAttribute("data:pathFinal")||s.getAttribute("d");if(!c||!c.trim())return;const u=this._pathBBox(c);u&&o.set(`${l}:0`,{realIndex:l,j:0,d:c,bbox:{x:u.minX,y:u.minY,width:u.maxX-u.minX,height:u.maxY-u.minY},fill:s.getAttribute("fill"),els:[s]})}),o;const a=r==="summary"?`.apexcharts-${e}-series`:".apexcharts-bar-series";return i.querySelectorAll(`${a} .apexcharts-series`).forEach(s=>{var l;const c=parseInt((l=s.getAttribute("data:realIndex"))!=null?l:"0",10)||0;let u=0;s.querySelectorAll("path[pathTo]").forEach(d=>{var f;const h=d.getAttribute("pathTo")||d.getAttribute("d");if(!h||!h.trim())return;const p=parseInt((f=d.getAttribute("j"))!=null?f:"",10),g=isNaN(p)?u++:p,m=this._pathBBox(h);if(!m)return;const v=`${c}:${g}`,b=o.get(v);b?(b.els.push(d),b.bbox={x:Math.min(b.bbox.x,m.minX),y:Math.min(b.bbox.y,m.minY),width:Math.max(b.bbox.x+b.bbox.width,m.maxX)-Math.min(b.bbox.x,m.minX),height:Math.max(b.bbox.y+b.bbox.height,m.maxY)-Math.min(b.bbox.y,m.minY)}):o.set(v,{realIndex:c,j:g,bbox:{x:m.minX,y:m.minY,width:m.maxX-m.minX,height:m.maxY-m.minY},fill:d.getAttribute("fill"),els:[d]})})}),o}_captureFromDOM(e){var n;const i=(n=this.w.globals.dom)==null?void 0:n.baseEl;if(!i)return{marks:[],branches:[],unitDots:new Map};const o=[],r=[],a=new Map,s=Li(e);if(s==="bar")i.querySelectorAll(".apexcharts-bar-series .apexcharts-series").forEach(c=>{var u;const d=parseInt((u=c.getAttribute("data:realIndex"))!=null?u:"0",10);c.querySelectorAll("path[pathTo]").forEach((h,p)=>{const g=h.getAttribute("pathTo")||h.getAttribute("d");g&&o.push({realIndex:d,j:p,d:g,fill:h.getAttribute("fill")})})});else if(s==="summary"){const l=new Map;i.querySelectorAll(`.apexcharts-${e}-area`).forEach(c=>{var u,d;const f=parseInt((u=c.getAttribute("j"))!=null?u:"",10);if(isNaN(f))return;const h=c.getAttribute("pathTo")||c.getAttribute("d");if(!h||!h.trim())return;const p=typeof c.closest=="function"?c.closest(".apexcharts-series"):null,g=parseInt((d=p==null?void 0:p.getAttribute("data:realIndex"))!=null?d:"0",10)||0,m=`${g}:${f}`,v=l.get(m);v?v.d+=` ${h}`:l.set(m,{realIndex:g,j:f,d:h,fill:c.getAttribute("fill")})}),Array.from(l.values()).sort((c,u)=>c.realIndex-u.realIndex||c.j-u.j).forEach(c=>o.push(c))}else if(s==="partition")if(e==="treemap"){const l=d=>{var f,h,p,g;const m=parseFloat((f=d.getAttribute("x"))!=null?f:""),v=parseFloat((h=d.getAttribute("y"))!=null?h:""),b=parseFloat((p=d.getAttribute("width"))!=null?p:""),y=parseFloat((g=d.getAttribute("height"))!=null?g:"");return[m,v,b,y].every(w=>isFinite(w))?`M ${m} ${v} L ${m+b} ${v} L ${m+b} ${v+y} L ${m} ${v+y} Z`:null};i.querySelectorAll(".apexcharts-treemap-rect").forEach(d=>{var f,h;const p=l(d);p&&o.push({realIndex:parseInt((f=d.getAttribute("i"))!=null?f:"0",10)||0,j:parseInt((h=d.getAttribute("j"))!=null?h:"0",10)||0,d:p,fill:d.getAttribute("fill"),key:d.getAttribute("data:key")||null})}),i.querySelectorAll(".apexcharts-treemap-parent-rect").forEach(d=>{const f=l(d),h=d.getAttribute("data:key");!f||!h||r.push({key:h,d:f,fill:d.getAttribute("fill")})})}else{const l=i.querySelectorAll(".apexcharts-sunburst-arc"),c=[];l.forEach(d=>{d.getAttribute("data:leaf")==="true"&&c.push(d)}),(c.length?c:Array.from(l)).forEach((d,f)=>{const h=d.getAttribute("d");!h||!h.trim()||o.push({realIndex:f,j:0,d:h,fill:d.getAttribute("fill"),key:d.getAttribute("data:key")||null})}),l.forEach(d=>{if(d.getAttribute("data:leaf")==="true")return;const f=d.getAttribute("d"),h=d.getAttribute("data:key");!f||!f.trim()||!h||r.push({key:h,d:f,fill:d.getAttribute("fill")})})}else if(s==="unit"){const l=i.querySelectorAll(".apexcharts-unit-area"),c=new Map;l.forEach(u=>{var d,f,h,p,g,m,v;const b=parseInt((d=u.getAttribute("i"))!=null?d:"",10);if(isNaN(b))return;const y=u.getAttribute("cx");let w,x,$=3;if(y!=null)w=parseFloat(y),x=parseFloat((f=u.getAttribute("cy"))!=null?f:""),$=parseFloat((h=u.getAttribute("r"))!=null?h:"3")||3;else{const P=parseFloat((p=u.getAttribute("width"))!=null?p:"0")||0,T=parseFloat((g=u.getAttribute("height"))!=null?g:"0")||0;w=parseFloat((m=u.getAttribute("x"))!=null?m:"")+P/2,x=parseFloat((v=u.getAttribute("y"))!=null?v:"")+T/2,$=Math.max(P,T)/2||3}if(!isFinite(w)||!isFinite(x))return;let S=a.get(b);S||(S=[],a.set(b,S)),S.push({x:w,y:x,r:$,fill:u.getAttribute("fill")});const _=c.get(b);if(!_){c.set(b,{minX:w,minY:x,maxX:w,maxY:x,fill:u.getAttribute("fill")});return}w<_.minX&&(_.minX=w),w>_.maxX&&(_.maxX=w),x<_.minY&&(_.minY=x),x>_.maxY&&(_.maxY=x)}),Array.from(c.keys()).sort((u,d)=>u-d).forEach(u=>{const d=c.get(u),f=2,h=d.minX-f,p=d.minY-f,g=d.maxX+f,m=d.maxY+f;o.push({realIndex:u,j:0,d:`M ${h} ${p} L ${g} ${p} L ${g} ${m} L ${h} ${m} Z`,fill:d.fill})})}else if(s==="radial")if(e==="radialBar"||e==="gauge"){const l=this.w.layout.gridWidth/2,c=Math.min(this.w.layout.gridWidth,this.w.layout.gridHeight)/2;i.querySelectorAll(".apexcharts-radial-series .apexcharts-radialbar-area").forEach(d=>{var f;const h=d.parentElement,p=parseInt((f=h==null?void 0:h.getAttribute("data:realIndex"))!=null?f:"0",10),g=d.getAttribute("d");if(!g)return;const m=parseFloat(d.getAttribute("stroke-width")||"0"),v=m>1&&this._radialArcToFilledSegment(g,m,l,c)||g;o.push({realIndex:p,j:0,d:v,fill:d.getAttribute("stroke")})})}else i.querySelectorAll(".apexcharts-pie-series .apexcharts-pie-area").forEach((c,u)=>{const d=c.getAttribute("d");d&&o.push({realIndex:u,j:0,d,fill:c.getAttribute("fill")})});return{marks:o,branches:r,unitDots:a}}_radialArcToFilledSegment(e,n,i,o){const r=e.match(/M\s*(-?[\d.]+)\s+(-?[\d.]+)\s+A\s*(-?[\d.]+)\s+(?:-?[\d.]+)\s+(?:-?[\d.]+)\s+(\d)\s+(\d)\s+(-?[\d.]+)\s+(-?[\d.]+)/);if(!r)return null;const a=parseFloat(r[1]),s=parseFloat(r[2]),l=parseFloat(r[3]),c=parseInt(r[4],10),u=parseInt(r[5],10),d=parseFloat(r[6]),f=parseFloat(r[7]);if(!isFinite(l)||l<=0)return null;const h=n/2,p=l+h,g=Math.max(0,l-h),m=($,S,_)=>{const P=$-i,T=S-o,O=Math.sqrt(P*P+T*T);if(O===0)return{x:i,y:o};const M=_/O;return{x:i+P*M,y:o+T*M}},v=m(a,s,p),b=m(d,f,p),y=m(a,s,g),w=m(d,f,g),x=u?0:1;return`M ${v.x} ${v.y} A ${p} ${p} 0 ${c} ${u} ${b.x} ${b.y} L ${w.x} ${w.y} A ${g} ${g} 0 ${c} ${x} ${y.x} ${y.y} Z`}buildRingSegmentPath(e,n,i,o,r,a){const s=o/2,l=i+s,c=Math.max(0,i-s),u=(r-90)*Math.PI/180,d=(a-90)*Math.PI/180,f={x:e+l*Math.cos(u),y:n+l*Math.sin(u)},h={x:e+l*Math.cos(d),y:n+l*Math.sin(d)},p={x:e+c*Math.cos(u),y:n+c*Math.sin(u)},g={x:e+c*Math.cos(d),y:n+c*Math.sin(d)},m=a>r?1:0,v=Math.abs(a-r)>180?1:0;return`M ${f.x} ${f.y} A ${l} ${l} 0 ${v} ${m} ${h.x} ${h.y} L ${g.x} ${g.y} A ${c} ${c} 0 ${v} ${1-m} ${p.x} ${p.y} Z`}getFromType(){return this._snapshot?this._snapshot.fromType:null}_buildMapping(e,n,i,o,r){const a=new Map,s=Li(i),l=e.slice().sort((c,u)=>c.realIndex-u.realIndex||c.j-u.j);if(s==="partition"&&r&&r.length){const c=l.filter(u=>u.key);c.length===l.length&&(c.forEach(u=>{a.set(`key:${u.key}`,{d:u.d,fill:u.fill})}),r.forEach(u=>{a.set(`key:${u.key}`,{d:u.d,fill:u.fill})}))}if(s==="radial"||s==="unit"||s==="partition")return l.forEach((c,u)=>{a.set(`${u}:0`,{d:c.d,fill:c.fill})}),a;if(s==="bar"||s==="summary"){const c=[];return(Array.isArray(o)?o:[]).forEach((d,f)=>{const h=d&&Array.isArray(d.data)?d.data:[];for(let p=0;p{const h=c[f];h&&a.set(`${h.realIndex}:${h.j}`,{d:d.d,fill:d.fill})}),a}return a}isActive(){return this._snapshot!==null}getInitialPathFor(e,n){if(!this._snapshot)return null;const i=this._snapshot.mapping.get(`${e}:${n}`);if(!i)return null;const o=this._snapshot.oldLayout.translateX-(this.w.layout.translateX||0),r=this._snapshot.oldLayout.translateY-(this.w.layout.translateY||0);return o===0&&r===0?i.d:this._translatePathD(i.d,o,r)}_translatePathD(e,n,i){return n===0&&i===0?e:Lg(e).map(r=>{const a=r[0];return a==="Z"?"Z":a==="M"||a==="L"||a==="T"?`${a} ${r[1]+n} ${r[2]+i}`:a==="H"?`${a} ${r[1]+n}`:a==="V"?`${a} ${r[1]+i}`:a==="C"?`${a} ${r[1]+n} ${r[2]+i} ${r[3]+n} ${r[4]+i} ${r[5]+n} ${r[6]+i}`:a==="S"||a==="Q"?`${a} ${r[1]+n} ${r[2]+i} ${r[3]+n} ${r[4]+i}`:a==="A"?`${a} ${r[1]} ${r[2]} ${r[3]} ${r[4]} ${r[5]} ${r[6]+n} ${r[7]+i}`:r.join(" ")}).join(" ")}getInitialCenterFor(e){const n=this.getInitialBBoxFor(e);return n?{x:n.x+n.width/2,y:n.y+n.height/2}:null}getInitialPathAt(e){return this.getInitialPathFor(e,0)}getInitialPathForKey(e){return!this._snapshot||!e?null:this.getInitialPathFor("key",e)}hasKeyedMarks(){if(!this._snapshot)return!1;for(const e of this._snapshot.mapping.keys())if(typeof e=="string"&&e.startsWith("key:"))return!0;return!1}getInitialSlotFor(e,n,i){const o=this.getInitialBBoxFor(e);if(!o)return null;const r=o.x+o.width/2,a=o.y+o.height/2;if(!(i>1)||!(n>=0))return{x:r,y:a};const s=(Math.min(n,i-1)+.5)/i;return o.height>=o.width?{x:r,y:o.y+o.height*(1-s)}:{x:o.x+o.width*s,y:a}}getInitialBBoxFor(e){if(!this._snapshot)return null;const n=this._snapshot.mapping.get(`${e}:0`);if(!n)return null;const i=this._pathBBox(n.d);if(!i)return null;const o=this._snapshot.oldLayout.translateX-(this.w.layout.translateX||0),r=this._snapshot.oldLayout.translateY-(this.w.layout.translateY||0);return{x:i.minX+o,y:i.minY+r,width:i.maxX-i.minX,height:i.maxY-i.minY}}_pathBBox(e){const n=Lg(e);let i=1/0,o=1/0,r=-1/0,a=-1/0,s=!1;return n.forEach(l=>{const c=l[0];if(c==="Z")return;let u=[];if(c==="H")u=[[l[1],(o+a)/2||l[1]]];else if(c==="V")u=[[(i+r)/2||l[1],l[1]]];else if(c==="A")u=[[l[6],l[7]]];else for(let d=1;d+1{!isFinite(d)||!isFinite(f)||(s=!0,dr&&(r=d),fa&&(a=f))})}),s?{minX:i,minY:o,maxX:r,maxY:a}:null}getInitialFillFor(e,n){if(!this._snapshot)return null;const i=this._snapshot.mapping.get(`${e}:${n}`);return i?i.fill:null}getSpeed(){const e=this.w.config.chart.animations;return e.chartTypeMorph&&e.chartTypeMorph.speed||e.speed||600}applyChromeFade(){var e;if(!this._snapshot||!Ot.isBrowser())return;const n=(e=this.w.globals.dom)==null?void 0:e.baseEl;if(!n)return;this._snapshot.pieceOut?this._separatePieces():this._snapshot.pieceIn?this._combinePieces():this._mountGhost();const i=this.getSpeed();[".apexcharts-xaxis",".apexcharts-yaxis",".apexcharts-grid",".apexcharts-gridlines-horizontal",".apexcharts-gridlines-vertical",".apexcharts-legend",".apexcharts-title-text",".apexcharts-subtitle-text"].forEach(r=>{n.querySelectorAll(r).forEach(a=>{a.style&&(a.style.opacity="0",a.style.transition=`opacity ${i}ms ease-out`,We.requestAnimationFrame(()=>{a.style.opacity="1"}),setTimeout(()=>{a.style.transition="",a.style.opacity=""},i+80))})}),setTimeout(()=>this.cleanup(),i+100)}cleanup(){this._snapshot=null,this._removeGhost(),this._cancelPieces()}}Vn.registerFeatures({morphTypeChange:R1e});const Sl="http://www.w3.org/1999/xhtml",AN=18;function _N(t,e){const n=t.config.drilldown&&t.config.drilldown.breadcrumb||{};return Ye(Ye({show:!0,position:"top-left",separator:" / ",rootLabel:"All",offsetX:0,offsetY:0,formatter:void 0},n),e||{})}function PN(t,e){const n=[".apexcharts-title-text",".apexcharts-subtitle-text"].map(o=>t.dom.baseEl.querySelector(o)).filter(o=>o!==null);if(!n.length)return;const i=t.dom.elWrap.getBoundingClientRect().top;for(let o=0;o{const l=s.getBoundingClientRect();return r.leftl.left&&r.topl.top});if(!a)break;e.style.top=`${a.getBoundingClientRect().bottom-i+4}px`}}function L1e(t,e){const n=t.layout.translateY||0,i=t.dom.elWrap;if(!i)return n;const o=t.dom.baseEl.querySelectorAll(".apexcharts-yaxis-label");if(!o.length)return n;const r=i.getBoundingClientRect().top,a=e.getBoundingClientRect();let s=n;for(let l=0;l=a.right||c.right<=a.left||(s=Math.min(s,c.top-r)))}return s}function F1e(t,e,n,i){var o;const r=(o=e==null?void 0:e.dimensions)==null?void 0:o.dimHelpers,a=r?r.getTitleSubtitleCoords("title").height+r.getTitleSubtitleCoords("subtitle").height:0,s=n.getBoundingClientRect().height||AN,l=i&&i.offsetY||0,c=L1e(t,n);if(c-a>=s+1)return n.style.top=`${c-s-1+l}px`,!0;n.style.top=`${a+l}px`;const u=t.config.theme.mode==="dark";return n.style.background=u?"rgba(20,24,30,0.82)":"rgba(255,255,255,0.86)",n.style.borderRadius="4px",!1}function ON(t){const e=t.dom.elWrap;if(!e)return;const n=e.querySelector(".apexcharts-breadcrumb");n&&n.parentNode&&n.parentNode.removeChild(n)}function N1e(t,e){if(!Ot.isBrowser())return null;const n=t.dom.elWrap;if(!n)return null;ON(t);const i=e.config||_N(t);if(i.show===!1)return null;const o=e.crumbs||[];if(o.length<2)return null;const r=We.createElementNS(Sl,"nav");r.setAttribute("class","apexcharts-breadcrumb"),r.setAttribute("aria-label",e.ariaLabel||"Breadcrumb"),B1e(r,i),e.compact&&(r.style.fontSize="11px",r.style.padding="0 2px");const a=i.separator!=null?i.separator:" / ";return o.forEach((s,l)=>{var c;if(l>0){const h=We.createElementNS(Sl,"span");h.setAttribute("class","apexcharts-breadcrumb-separator"),h.setAttribute("aria-hidden","true"),h.textContent=a,r.appendChild(h)}let u=l===0?(c=i.rootLabel)!=null?c:"All":s.label;if(typeof i.formatter=="function"&&(u=i.formatter(u,{index:l,depth:o.length-1,data:s.data})),l===o.length-1){const h=We.createElementNS(Sl,"span");h.setAttribute("class","apexcharts-breadcrumb-item apexcharts-breadcrumb-current"),h.setAttribute("aria-current","page"),h.textContent=String(u),r.appendChild(h);return}const d=We.createElementNS(Sl,"button");if(d.setAttribute("type","button"),d.setAttribute("class","apexcharts-breadcrumb-item"),l===0){const h=We.createElementNS(Sl,"span");h.setAttribute("class","apexcharts-breadcrumb-arrow"),h.setAttribute("aria-hidden","true"),h.textContent="←",d.appendChild(h)}const f=We.createElementNS(Sl,"span");f.setAttribute("class","apexcharts-breadcrumb-label"),f.textContent=String(u),d.appendChild(f),d.addEventListener("click",()=>e.onNavigate(l,s)),r.appendChild(d)}),n.appendChild(r),r}function B1e(t,e){const n=e.offsetX||0,i=e.offsetY||0;t.style.position="absolute",t.style.top=i+"px",e.position==="top-right"?t.style.right=-n+3+"px":t.style.left=n+"px"}const Cl="http://www.w3.org/1999/xhtml";class z1e{constructor(e,n,i){this.w=e,this.ctx=n,this.drilldown=i}render(e){if(!Ot.isBrowser())return;const n=this.w,i=n.dom.elWrap;if(!i)return;const o=i.querySelector(".apexcharts-breadcrumb");o&&o.parentNode&&o.parentNode.removeChild(o);const r=n.config.drilldown&&n.config.drilldown.breadcrumb;if(!r||r.show===!1||this.drilldown.depth===0)return;const a=We.createElementNS(Cl,"nav");a.setAttribute("class","apexcharts-breadcrumb"),a.setAttribute("aria-label","Drilldown breadcrumb"),this._position(a,r);const s=r.separator!=null?r.separator:" / ";e.forEach((l,c)=>{if(c>0){const f=We.createElementNS(Cl,"span");f.setAttribute("class","apexcharts-breadcrumb-separator"),f.setAttribute("aria-hidden","true"),f.textContent=s,a.appendChild(f)}const u=this._label(l,c);if(c===e.length-1){const f=We.createElementNS(Cl,"span");f.setAttribute("class","apexcharts-breadcrumb-item apexcharts-breadcrumb-current"),f.setAttribute("aria-current","page"),f.textContent=u,a.appendChild(f)}else{const f=We.createElementNS(Cl,"button");if(f.setAttribute("type","button"),f.setAttribute("class","apexcharts-breadcrumb-item"),c===0){const p=We.createElementNS(Cl,"span");p.setAttribute("class","apexcharts-breadcrumb-arrow"),p.setAttribute("aria-hidden","true"),p.textContent="←",f.appendChild(p)}const h=We.createElementNS(Cl,"span");h.setAttribute("class","apexcharts-breadcrumb-label"),h.textContent=u,f.appendChild(h),f.addEventListener("click",()=>this.drilldown.drillToLevel(c)),a.appendChild(f)}}),i.appendChild(a),this.w.globals.axisCharts&&F1e(this.w,this.ctx,a,r),this._avoidChromeOverlap(a)}_avoidChromeOverlap(e){const n=this.w,i=[".apexcharts-title-text",".apexcharts-subtitle-text"].map(r=>n.dom.baseEl.querySelector(r)).filter(r=>r!==null);if(!i.length)return;const o=n.dom.elWrap.getBoundingClientRect().top;for(let r=0;r{const c=l.getBoundingClientRect();return a.leftc.left&&a.topc.top});if(!s)break;e.style.top=`${s.getBoundingClientRect().bottom-o+4}px`}}_label(e,n){const i=this.w.config.drilldown.breadcrumb;let o;if(n===0)o=i.rootLabel!=null?i.rootLabel:"All";else{const r=(this.w.config.drilldown.series||[]).find(a=>a&&a.id===e);o=r&&r.name||String(e)}return typeof i.formatter=="function"?i.formatter(o,{index:n,depth:this.drilldown.depth}):o}_position(e,n){const i=n.offsetX||0,o=n.offsetY||0;e.style.position="absolute",e.style.top=o+"px",n.position==="top-right"?e.style.right=-i+3+"px":e.style.left=i+"px"}}const O0="http://www.w3.org/1999/xhtml",mh="apexcharts-drilldown-loading";class H1e{constructor(e){this.w=e,this.el=null}_cfg(){const e=this.w.config.drilldown,n=e&&e.loading;return n===!1?{show:!1}:n||{}}show(){if(!Ot.isBrowser())return;const e=this._cfg();if(e.show===!1)return;const n=this.w.dom.elWrap;if(!n)return;this.hide();const i=We.createElementNS(O0,"div");i.setAttribute("class",mh),i.setAttribute("role","status"),i.setAttribute("aria-live","polite"),i.setAttribute("aria-label",e.text||"Loading");const o=We.createElementNS(O0,"div");if(o.setAttribute("class",`${mh}-spinner`),o.setAttribute("aria-hidden","true"),i.appendChild(o),e.text){const r=We.createElementNS(O0,"span");r.setAttribute("class",`${mh}-text`),r.textContent=e.text,i.appendChild(r)}n.appendChild(i),this.el=i}hide(){const e=this.w.dom.elWrap;if(e){const n=e.querySelectorAll(`.${mh}`);for(let i=0;ie.id)]}get depth(){return this.stack.length}drillDown(e,n,i){const o=this._resolveChild(e);return o?this._drillInto(o,n,i):typeof this.w.config.drilldown.onDrillDown=="function"?this._drillDownAsync(e,n,i):(console.warn(`ApexCharts: drilldown id "${e}" not found in chart.drilldown.series, and no onDrillDown resolver is set.`),Promise.resolve(this.ctx))}drillUp(){return this.drillToLevel(this.stack.length-1)}drillToRoot(){return this.drillToLevel(0)}drillToLevel(e){const n=this.stack.length;if(e<0||e>=n)return Promise.resolve(this.ctx);const i=this.path[this.path.length-1],o=e===0?this.rootSnapshot:this.stack[e].restore;this.stack=this.stack.slice(0,e);const r=this.path[this.path.length-1];return this._apply(this._viewFromSnapshot(o),"up",{from:i,to:r})}_resolveChild(e){const n=this.w.config.drilldown&&this.w.config.drilldown.series;return Array.isArray(n)&&n.find(i=>i&&i.id===e)||null}_drillInto(e,n,i){if(this.stack.length>=VE)return console.warn(`ApexCharts: drilldown max depth (${VE}) reached.`),Promise.resolve(this.ctx);this.rootSnapshot||(this.rootSnapshot=this._snapshot());const o=this.path[this.path.length-1];return this.stack.push({id:e.id,name:e.name,restore:this._snapshot()}),this._apply(this._viewFromChild(e),"down",{from:o,to:e.id,point:n,seriesIndex:i&&i.seriesIndex,dataPointIndex:i&&i.dataPointIndex})}_drillDownAsync(e,n,i){const r=this.w.config.drilldown.onDrillDown,a=this._cacheGet(e);if(a)return this._drillInto(a,n,i);if(this._pending)return this._pending;let s;this.loading.show();try{s=r({id:e,point:n,seriesIndex:i&&i.seriesIndex,dataPointIndex:i&&i.dataPointIndex})}catch(u){return this.loading.hide(),this._fire("drillDownError",{id:e,error:u}),Promise.resolve(this.ctx)}const l=()=>{this._pending=null,this.loading.hide()},c=Promise.resolve(s).then(u=>{if(l(),this._isDead())return this.ctx;if(!u||!u.data)return this._fire("drillDownError",{id:e,error:new Error(`drilldown: onDrillDown resolved without a drillable level for id "${e}" (expected an object with a \`data\` array).`)}),this.ctx;const d=u.id!=null?u:vt(Ye({},u),{id:e});return this._cacheSet(e,d),this._drillInto(d,n,i)},u=>(l(),this._isDead()?this.ctx:(this._fire("drillDownError",{id:e,error:u}),this.ctx)));return this._pending=c,c}_isDead(){const e=this.w;return!e||!e.globals||e.globals.isDestroyed===!0}_cacheEnabled(){const e=this.w.config.drilldown;return!!(e&&e.cache!==!1)}_cacheGet(e){return!this._cacheEnabled()||e==null?null:this._asyncCache.get(e)||null}_cacheSet(e,n){!this._cacheEnabled()||e==null||this._asyncCache.set(e,n)}clearCache(e){return e==null?this._asyncCache.clear():this._asyncCache.delete(e),this.ctx}_snapshot(){const e=this.w.config,n=this._overrideFields(),i={series:this._uncollapseSeries(Ee.clone(e.series))};return Array.isArray(e.labels)&&e.labels.length&&(i.labels=Ee.clone(e.labels)),i.chart={type:e.chart.type,stacked:e.chart.stacked},n.has("xaxis")&&(i.xaxis=Ee.clone(e.xaxis)),n.has("yaxis")&&(i.yaxis=Ee.clone(e.yaxis)),n.has("colors")&&(i.colors=e.colors?Ee.clone(e.colors):void 0),n.has("plotOptions")&&(i.plotOptions=Ee.clone(e.plotOptions)),n.has("fill")&&(i.fill=Ee.clone(e.fill)),n.has("legend")&&(i.legend=Ee.clone(e.legend)),i}_uncollapseSeries(e){const n=this.w,i=n.globals,o=[...i.collapsedSeries||[],...i.ancillaryCollapsedSeries||[]];if(!o.length)return e;const r=n.config.chart.type,s=(r==="pie"||r==="donut"||r==="polarArea")&&e.length===1&&e[0]&&typeof e[0]=="object"&&Array.isArray(e[0].data)?e[0].data:e;for(const l of o){const c=l.index;i.axisCharts?e[c]&&(e[c].data=Array.isArray(l.data)?l.data.slice():l.data):s[c]&&typeof s[c]=="object"?s[c].y=l.data:s[c]!==void 0&&(s[c]=l.data)}return e}_overrideFields(){const e=new Set,n=this.w.config.drilldown&&this.w.config.drilldown.series||[];for(const i of n)i&&(i.xaxis&&e.add("xaxis"),i.yaxis&&e.add("yaxis"),i.colors&&e.add("colors"),i.plotOptions&&e.add("plotOptions"),i.fill&&e.add("fill"),i.legend&&e.add("legend"));return e}_copyOptionalViewFields(e,n){n.xaxis&&(e.xaxis=n.xaxis),n.yaxis&&(e.yaxis=n.yaxis),n.colors&&(e.colors=n.colors),n.plotOptions&&(e.plotOptions=n.plotOptions),n.fill&&(e.fill=n.fill),n.legend&&(e.legend=n.legend)}_viewFromChild(e){const n={};Array.isArray(e.series)?n.series=e.series:n.series=[{name:e.name||"",data:e.data}];const i={};return e.chart&&e.chart.type&&(i.type=e.chart.type),e.chart&&e.chart.stacked!=null&&(i.stacked=e.chart.stacked),Object.keys(i).length&&(n.chart=i),this._copyOptionalViewFields(n,e),n}_viewFromSnapshot(e){const n={series:e.series,chart:e.chart};return e.labels&&e.labels.length&&(n.labels=e.labels),this._copyOptionalViewFields(n,e),n}_apply(e,n,i){const o=this.w;o.interact.selectedDataPoints=[],o.globals.collapsedSeries=[],o.globals.collapsedSeriesIndices=[],o.globals.ancillaryCollapsedSeries=[],o.globals.ancillaryCollapsedSeriesIndices=[],o.globals.allSeriesCollapsed=!1,o.globals.risingSeries=[],e.markers=vt(Ye({},e.markers||{}),{discrete:this._drillMarkers(e.series)});const r=(!o.config.drilldown.animation||o.config.drilldown.animation.enabled!==!1)&&o.config.chart.animations.enabled!==!1;n==="down"&&this._fire("drillDownStart",i);const a=l=>this.ctx.updateOptions(e,!1,l,!1,!1),s=()=>(this._fire(n==="down"?"drillDownEnd":"drillUp",i),this.ctx);if(r&&this._zoomEnabled()){const l=this._triggerOrigin(i);if(l)return this._zoomDrill(l,n,()=>a(!1)).then(s)}return a(r).then(s)}_zoomEnabled(){const e=this.w.config.drilldown&&this.w.config.drilldown.animation;return!!(e&&e.zoomFromPoint)}_svgNode(){const e=this.w.dom&&this.w.dom.Paper;return e&&e.node?e.node:null}_markGroup(){const e=this._svgNode();return!e||typeof e.querySelector!="function"?null:e.querySelector(".apexcharts-plot-series, .apexcharts-heatmap, .apexcharts-treemap")}_triggerOrigin(e){if(!Ot.isBrowser())return null;const n=this._svgNode(),i=this._markGroup();if(!n||!i||typeof i.animate!="function"||typeof n.getBoundingClientRect!="function")return null;const o=n.getBoundingClientRect();let r=null;if(e&&e.seriesIndex!=null&&e.dataPointIndex!=null&&this.w.dom.baseEl&&(r=this.w.dom.baseEl.querySelector(`[index="${e.seriesIndex}"][j="${e.dataPointIndex}"]`)),r&&typeof r.getBoundingClientRect=="function"){const s=r.getBoundingClientRect();return{x:s.left+s.width/2-o.left,y:s.top+s.height/2-o.top}}const a=i.getBoundingClientRect();return{x:a.left+a.width/2-o.left,y:a.top+a.height/2-o.top}}_zoomDrill(e,n,i){return Wxe(this,null,function*(){const o=this._zoomDuration(),r=n==="down",a=Math.round(o*.55),s=r?"scale(1.03)":"scale(0.97)",l=r?"scaleX(0.55) scaleY(0.85)":"scale(1.04)",c=p=>{p.style.transformBox="view-box",p.style.transformOrigin=`${e.x}px ${e.y}px`},u=p=>{p.style.transform="",p.style.opacity="",p.style.transformOrigin="",p.style.transformBox=""},d=this._markGroup();let f=null;if(d){c(d),f=d.animate([{transform:"scale(1)",opacity:1},{transform:s,opacity:0}],{duration:a,easing:"ease-in",fill:"forwards"});try{yield f.finished}catch{}}yield i();const h=this._markGroup();if(h){c(h),h.style.opacity="0",h.style.transform=l,f&&d===h&&f.cancel();const p=h.animate([{transform:l,opacity:0},{transform:"scale(1)",opacity:1}],{duration:o,easing:"cubic-bezier(0.16, 1, 0.3, 1)",fill:"forwards"});try{yield p.finished}catch{}u(h),p.cancel()}})}_zoomDuration(){const e=this.w.config.drilldown&&this.w.config.drilldown.animation,n=e&&typeof e.speed=="number"?e.speed:260;return Math.max(80,n)}_fire(e,n){const i=this.w.config.chart.events&&this.w.config.chart.events[e];typeof i=="function"&&i(n,this.ctx,this.w),this.ctx.events.fireEvent(e,[n,this.ctx,this.w])}_onPointSelect(e,n,i){if(!i)return;const o=this._pointAt(i.seriesIndex,i.dataPointIndex);if(o&&typeof o=="object"&&o.drilldown!=null)return this.drillDown(o.drilldown,o,i);if(typeof this.w.config.drilldown.onDrillDown=="function")return this._drillDownAsync(null,o,i)}_pointAt(e,n){const i=this.w.config.series;if(!Array.isArray(i)||e==null||n==null)return null;const o=i[e];return!o||!Array.isArray(o.data)?null:o.data[n]!=null?o.data[n]:null}_afterRender(){const e=this.w;!e.config.drilldown||!e.config.drilldown.enabled||(this._markDrillableTargets(),this._wirePlotClick(),this.breadcrumb.render(this.path),e.config.markers&&(e.config.markers.discrete=this._drillMarkers(e.config.series)))}_markDrillableTargets(){if(!Ot.isBrowser())return;const e=this.w,n=e.dom.baseEl,i=e.config.series;if(!n||!Array.isArray(i))return;let o=0;i.forEach((r,a)=>{const s=r&&Array.isArray(r.data)?r.data:null;s&&s.forEach((l,c)=>{if(!l||typeof l!="object"||l.drilldown==null)return;const u=n.querySelectorAll(`[index="${a}"][j="${c}"]`);u.length||o++,u.forEach(d=>{this._isClickThroughMark(d)&&d.classList.remove("no-pointer-events"),d.classList.add("apexcharts-drilldown-target")})})}),o&&!this._warnedUnreachable&&(this._warnedUnreachable=!0,console.warn(`ApexCharts: ${o} drillable point(s) have no clickable mark, so clicking them cannot do anything. Leave \`drilldown.marker\` on, or give the series markers of its own (\`markers.size > 0\`).`))}warnSliceOffsetDisabled(){this._warnedNoSliceOffset||(this._warnedNoSliceOffset=!0,console.warn("ApexCharts: `plotOptions.pie.expandOnClick` is not available in a drilldown pie/donut, so it was ignored. A slice click navigates, and a slice that slid out would be discarded by the drill it just triggered."))}_wirePlotClick(){if(!Ot.isBrowser())return;const e=this.w.dom.baseEl;!e||this._plotClickWired===e||(this._plotClickWired&&(this._plotClickWired.removeEventListener("mousedown",this._onPlotDown),this._plotClickWired.removeEventListener("click",this._onPlotClick)),e.addEventListener("mousedown",this._onPlotDown),e.addEventListener("click",this._onPlotClick),this._plotClickWired=e)}_onPlotDown(e){this._downAt={x:e.clientX,y:e.clientY}}_onPlotClick(e){const n=this.w;if(!n.config.drilldown||!n.config.drilldown.enabled)return;const i=this._downAt;if(this._downAt=null,i&&Math.hypot(e.clientX-i.x,e.clientY-i.y)>4)return;const o=e.target;if(!o||typeof o.closest!="function"||o.closest(".apexcharts-drilldown-target")||o.closest(".apexcharts-legend, .apexcharts-toolbar, .apexcharts-breadcrumb, .apexcharts-menu, .apexcharts-tooltip"))return;const r=n.interact.capturedSeriesIndex,a=n.interact.capturedDataPointIndex;if(r==null||a==null||r<0||a<0||!this._isPointBasedSeries(n.config.series[r]))return;const s=this._pointAt(r,a);if(!(!s||typeof s!="object"||s.drilldown==null))return this.drillDown(s.drilldown,s,{seriesIndex:r,dataPointIndex:a})}_isClickThroughMark(e){return!e.classList||!e.classList.contains("no-pointer-events")||!e.classList.contains("apexcharts-marker")?!1:!(typeof e.closest=="function"&&e.closest(".apexcharts-tooltip"))}_drillMarkers(e){const n=this.w,i=n.config.drilldown,o=Array.isArray(n.config.markers&&n.config.markers.discrete)?n.config.markers.discrete.filter(s=>!s||!s[XE]):[],r=i&&i.marker||{};if(r.show===!1||!Array.isArray(e))return o;const a=[];return e.forEach((s,l)=>{if(!this._seriesNeedsDrillMarker(l,s))return;const c=s&&Array.isArray(s.data)?s.data:null;c&&c.forEach((u,d)=>{if(!u||typeof u!="object"||u.drilldown==null)return;const f={seriesIndex:l,dataPointIndex:d,[XE]:!0};r.size!==void 0&&(f.size=r.size),r.shape!==void 0&&(f.shape=r.shape),r.fillColor!==void 0&&(f.fillColor=r.fillColor),r.strokeColor!==void 0&&(f.strokeColor=r.strokeColor),a.push(f)})}),o.concat(a)}_seriesNeedsDrillMarker(e,n){if(!this._isPointBasedSeries(n))return!1;const i=this.w.config.markers&&this.w.config.markers.size,o=Array.isArray(i)?i[e]:i;return!(Number(o)>0)}_isPointBasedSeries(e){const n=e&&e.type||this.w.config.chart.type;return n==="line"||n==="area"}}Vn.registerFeatures({drilldown:W1e});const T0="__apexcharts_plugins__";function j1e(){const t=globalThis;return t[T0]||(t[T0]={}),t[T0]}function V1e(t){return j1e()[t]||null}const nw=5,X1e=["updateOptions","updateSeries","appendData","appendSeries","toggleSeries","showSeries","hideSeries","highlightSeries","isSeriesHidden","zoomX","addXaxisAnnotation","addYaxisAnnotation","addPointAnnotation","clearAnnotations","removeAnnotation","dataURI","exportToCSV"];function Y1e(t){const e={};return X1e.forEach(n=>{typeof t[n]=="function"&&(e[n]=t[n].bind(t))}),Object.freeze(e)}function G1e(t,e){const n=o=>(o&&t.add(o),o),i={get node(){return t.node},path(o={}){const{d:r="",stroke:a="#000",width:s=1,fill:l="none",opacity:c=1,dash:u=0,className:d=""}=o;return n(e.drawPath({d:r,stroke:a,strokeWidth:s,fill:l,fillOpacity:l==="none"?0:c,strokeOpacity:c,strokeDashArray:u,classes:d}))},line(o={}){const{x1:r,y1:a,x2:s,y2:l,stroke:c="#000",width:u=1,dash:d=0}=o;return n(e.drawLine(r,a,s,l,c,d,u))},rect(o={}){const{x:r=0,y:a=0,w:s=0,h:l=0,r:c=0,fill:u="#000",stroke:d=null,opacity:f=1}=o;return n(e.drawRect(r,a,s,l,c,u,f,d!=null?1:null,d))},circle(o={}){const{cx:r=0,cy:a=0,r:s=0,fill:l="#000",stroke:c=null}=o;return n(e.drawCircle(s,{cx:r,cy:a,fill:l,stroke:c||"none"}))},text(o={}){const{x:r=0,y:a=0,text:s="",color:l,size:c,anchor:u="start",weight:d}=o;return n(e.drawText({x:r,y:a,text:s,textAnchor:u,fontSize:c,foreColor:l,fontWeight:d}))},clear(){const o=t.node;for(;o.firstChild;)o.removeChild(o.firstChild);return i}};return i}function K1e(t,e){const n=t.ctx,i=t.w,o={name:e.def.name,version:nw,get options(){return e.options},on(r,a){const s=e.handlers;return s.has(r)||s.set(r,[]),s.get(r).push(a),o},off(r,a){const s=e.handlers.get(r);if(s){const l=s.indexOf(a);l>-1&&s.splice(l,1)}return o},store:{},layer(r){return t._layer(e.def.name,r||{})},get scales(){return t._currentScales},get data(){return t._lastData||(t._lastData=t._dataSnapshot())},theme:Object.freeze({get mode(){return i.config.theme.mode},get foreColor(){return i.config.chart.foreColor},seriesColor(r){return i.globals.colors[r]},token(r){return t._token(r)}}),chart:Y1e(n),get info(){return Object.freeze({type:String(i.config.chart&&(i.config.chart.requestedType||i.config.chart.type)||"line"),axisChart:i.globals.axisCharts===!0,datetimeX:!!(i.config.xaxis&&i.config.xaxis.type==="datetime"),horizontalBars:!!(i.config.plotOptions&&i.config.plotOptions.bar&&i.config.plotOptions.bar.horizontal),dataLabels:Object.freeze({enabled:!!(i.config.dataLabels&&i.config.dataLabels.enabled),enabledOnSeries:Array.isArray(i.config.dataLabels&&i.config.dataLabels.enabledOnSeries)?i.config.dataLabels.enabledOnSeries.slice():null}),stroke:Object.freeze({dashArray:Array.isArray(i.config.stroke&&i.config.stroke.dashArray)?i.config.stroke.dashArray.slice():i.config.stroke&&i.config.stroke.dashArray||0})})},get categories(){return t._categories()},markDerived(r){return t._markDerived(e.def.name,r),o},reserve(r){return t._reserve(e.def.name,r),o},pointer(r){return t._onPointer(e.def.name,r)},emit(r,a){n.events.fireEvent(`plugin:${e.def.name}:${r}`,[n,a])},get el(){return i.dom.baseEl}};return Object.freeze(o)}const TN=class Pu{constructor(e,n){this.w=e,this.ctx=n,this.active=[],this._layers=new Map,this._currentScales=null,this._lastPluginsRef=null,this._lastData=null,this._updatedWired=!1,this._derived=null,this._reserved=null,this._reserveTimer=null,this._pointerSubs=null,this._pointerWired=null,this._onUpdated=this._onUpdated.bind(this),this._init()}_init(){(this.w.config.plugins||[]).map((n,i)=>({entry:n,order:n.order!=null?n.order:i})).sort((n,i)=>n.order-i.order).forEach(n=>this._activate(n.entry)),this._lastPluginsRef=this.w.config.plugins,this._wireUpdated()}_wireUpdated(){this._updatedWired||(this.ctx.addEventListener("updated",this._onUpdated),this._updatedWired=!0)}_onUpdated(){this._repairInitialSeries(),this.dispatch("afterUpdate",{pass:"update"})}_activate(e){const n=V1e(e.name);if(!n){console.error(`[apexcharts] plugin "${e.name}" is not registered.`);return}const i=n.apiVersion!=null?Math.trunc(n.apiVersion):1;if(!(i>=1)||i>nw){console.error(`[apexcharts] plugin "${n.name}" targets Weave API v${n.apiVersion}, host is v${nw}; skipped.`);return}const o={def:n,options:Object.freeze(Ye({},e.options||{})),handlers:new Map,disabled:!1,failures:0,api:null};o.api=K1e(this,o),this.active.push(o),this._guard(o,"setup",()=>n.setup(o.api))}dispatch(e,n){if(e==="draw"&&(this._reconcile(),this._resetLayers()),this._lastData=null,!this.active.length)return;e==="afterParse"?this._currentScales=null:n&&"xyRatios"in n&&this._setScales(n.xyRatios);const i=n&&n.pass||"full";let o=null;for(const r of this.active){if(r.disabled)continue;const a=r.handlers.get(e);if(!a||!a.length)continue;o===null&&(o=this._dataSnapshot(),this._lastData=o);const s={api:r.api,scales:this._currentScales,data:o,pass:i,hook:e};for(const l of a.slice())this._guard(r,e,()=>l(s))}}_guard(e,n,i){if(!e.disabled)try{i()}catch(o){console.error(`[apexcharts] plugin "${e.def.name}" threw in "${n}":`,o),e.failures=(e.failures||0)+1,e.failures>=3&&(e.disabled=!0,console.error(`[apexcharts] plugin "${e.def.name}" disabled after repeated errors.`))}}_setScales(e){const n=this.w,i=n.globals,o=n.layout;if(!e||!i.axisCharts){this._currentScales=null;return}const r=e.xRatio,a=e.yRatio||[],s=f=>a[f]!=null?a[f]:a[0],l=f=>i.maxYArr[f]!=null?i.maxYArr[f]:i.maxY,c=f=>i.minYArr[f]!=null?i.minYArr[f]:i.minY,u=!n.axisFlags.isXNumeric&&!i.isBarHorizontal&&i.dataPoints>0,d=u?o.gridWidth/i.dataPoints:0;this._currentScales={x:u?f=>d*(f+.5):f=>(f-i.minX)/r,y:(f,h=0)=>(l(h)-f)/s(h),domainX:u?[-.5,i.dataPoints-.5]:[i.minX,i.maxX],domainY:(f=0)=>[c(f),l(f)],gridWidth:o.gridWidth,gridHeight:o.gridHeight,ratios:e}}_dataSnapshot(){const e=this.w,n=e.globals,i=e.seriesData.series||[],o=e.seriesData.seriesX||[],r=Array.isArray(e.config.series)?e.config.series:[];return i.map((a,s)=>{const l=Array.isArray(a)?a:[a],c=o[s]||[],u=l.map((h,p)=>({x:c[p]!=null?c[p]:p,y:h})),d=r[s],f=d&&typeof d=="object"&&Array.isArray(d.data)?d.data:[];return{name:n.seriesNames?n.seriesNames[s]:void 0,hidden:(n.collapsedSeriesIndices||[]).includes(s),color:n.colors?n.colors[s]:void 0,points:u,raw:f}})}_categories(){const e=this.w,n=e.globals,i=e.config.xaxis&&Array.isArray(e.config.xaxis.categories)?e.config.xaxis.categories:[],o=Array.isArray(n.categoryLabels)?n.categoryLabels:[],r=Array.isArray(n.labels)?n.labels:[],a=i.length?i:o.length?o:r,s=e.seriesData.series||[];let l=0;for(let u=0;ul&&(l=d.length)}l||(l=a.length);const c=[];for(let u=0;uString(o)):[];i.length?this._derived.set(e,i):this._derived.delete(e),this._repairInitialSeries()}_onPointer(e,n){if(typeof n!="function")return()=>{};this._pointerSubs||(this._pointerSubs=new Map);const i=this._pointerSubs.get(e)||[];return i.push(n),this._pointerSubs.set(e,i),this._wirePointer(),()=>{const o=this._pointerSubs&&this._pointerSubs.get(e);if(!o)return;const r=o.indexOf(n);r>-1&&o.splice(r,1)}}_wirePointer(){if(this._pointerWired||!this.ctx||typeof this.ctx.addEventListener!="function")return;const e=[["enter","dataPointMouseEnter"],["leave","dataPointMouseLeave"],["select","dataPointSelection"]];this._pointerWired=[];for(const[n,i]of e){const o=(r,a,s)=>{this._emitPointer(n,s)};this.ctx.addEventListener(i,o),this._pointerWired.push([i,o])}}_emitPointer(e,n){if(!this._pointerSubs||!this._pointerSubs.size)return;const i=n&&typeof n.seriesIndex=="number"?n.seriesIndex:-1,o=n&&typeof n.dataPointIndex=="number"?n.dataPointIndex:-1,r=this._categories()||[],a=this.w,s=a&&a.config&&a.config.series||[],l={type:e,seriesIndex:i,dataPointIndex:o,category:o>-1?r[o]:void 0,seriesName:Pu._seriesName(s,i),selected:e==="select"?Pu._isSelected(n,i,o):void 0};for(const[c,u]of this._pointerSubs)for(const d of u.slice())try{d(l)}catch(f){console.warn('[apexcharts] plugin "'+c+'" threw in a pointer handler',f)}}static _seriesName(e,n){if(n<0)return;const i=e[n];if(!(!i||typeof i!="object"))return typeof i.name=="string"?i.name:void 0}static _isSelected(e,n,i){const o=e&&e.selectedDataPoints;if(!Array.isArray(o)||n<0)return;const r=o[n];return Array.isArray(r)?r.indexOf(i)>-1:!1}_reserve(e,n){const i=Pu._normaliseBox(n),o=this._reserved?this._reserved.get(e):void 0;if(i){if(o&&o.left===i.left&&o.right===i.right&&o.top===i.top&&o.bottom===i.bottom)return;this._reserved||(this._reserved=new Map),this._reserved.set(e,i)}else{if(!o||!this._reserved)return;this._reserved.delete(e)}this._resizeForReservation()}static _normaliseBox(e){if(!e||typeof e!="object")return null;const n=o=>Number.isFinite(o)&&o>0?Math.round(o):0,i={left:n(e.left),right:n(e.right),top:n(e.top),bottom:n(e.bottom)};return i.left||i.right||i.top||i.bottom?i:null}reservedBox(){if(!this._reserved||this._reserved.size===0)return Pu.NO_RESERVATION;const e={left:0,right:0,top:0,bottom:0};for(const n of this._reserved.values())e.left+=n.left,e.right+=n.right,e.top+=n.top,e.bottom+=n.bottom;return e}_resizeForReservation(){this._reserveTimer==null&&(this._reserveTimer=setTimeout(()=>{this._reserveTimer=null;const e=this.w.globals;if(!e.isDestroyed){e.resized=!0,e.dataChanged=!1;try{this.ctx.update()}catch{}}},0))}_derivedNames(){const e=new Set;if(!this._derived)return e;for(const n of this._derived.values())for(const i of n)e.add(i);return e}_repairInitialSeries(){const e=this._derivedNames();if(!e.size)return;const n=this.w,o=(Array.isArray(n.config.series)?n.config.series:[]).filter(r=>!e.has(String(r&&r.name)));if(o.length)try{n.globals.initialSeries=o,n.globals.initialConfig&&Array.isArray(n.globals.initialConfig.series)&&(n.globals.initialConfig.series=o)}catch{}}_token(e){const n=this.w,i=n.globals;switch(e){case"foreColor":return n.config.chart.foreColor;case"background":return n.config.chart.background;case"accent":case"primary":return i.colors?i.colors[0]:void 0;default:return/^series-\d+$/.test(e)&&i.colors?i.colors[Number(e.split("-")[1])]:void 0}}_layer(e,{z:n="front",className:i=""}={}){let o=this._layers.get(e);if(!o){o=this.ctx.graphics.group({class:`apexcharts-plugin-${e} ${i}`.trim()});const r=this.w.dom.elGraphical.node;n==="behind"?r.insertBefore(o.node,r.firstChild):r.appendChild(o.node),o.node.setAttribute("aria-hidden","true"),this._layers.set(e,o)}return G1e(o,this.ctx.graphics)}_resetLayers(){const e=this.w.dom.elGraphical,n=e&&e.node;if(n){const i=n.querySelectorAll('g[class*="apexcharts-plugin-"]');Array.prototype.forEach.call(i,o=>o.remove())}this._layers.clear()}_reconcile(){const e=this.w.config.plugins||[];if(e===this._lastPluginsRef)return;this._lastPluginsRef=e;const n=new Map(e.map((r,a)=>[r.name,{entry:r,order:r.order!=null?r.order:a}]));for(let r=this.active.length-1;r>=0;r--){const a=this.active[r],s=n.get(a.def.name);s?a.options=Object.freeze(Ye({},s.entry.options||{})):(this._guard(a,"destroy",()=>a.def.destroy&&a.def.destroy(a.api)),this.active.splice(r,1),this._reserve(a.def.name,null))}const i=new Set(this.active.map(r=>r.def.name)),o=[];n.forEach((r,a)=>{i.has(a)||o.push(r)}),o.sort((r,a)=>r.order-a.order).forEach(r=>this._activate(r.entry))}teardown(e){if(!e){this.dispatch("destroy");for(const n of this.active)this._guard(n,"destroy",()=>n.def.destroy&&n.def.destroy(n.api));if(this.active=[],this._derived=null,this._reserved=null,this._pointerSubs=null,this._pointerWired){for(const[n,i]of this._pointerWired)this.ctx.removeEventListener&&this.ctx.removeEventListener(n,i);this._pointerWired=null}this._reserveTimer!=null&&(clearTimeout(this._reserveTimer),this._reserveTimer=null),this._updatedWired&&(this.ctx.removeEventListener&&this.ctx.removeEventListener("updated",this._onUpdated),this._updatedWired=!1)}this._layers.clear()}};Hxe(TN,"NO_RESERVATION",Object.freeze({left:0,right:0,top:0,bottom:0}));let U1e=TN;Vn.registerFeatures({weave:U1e});function Ov(t,e){const n=t&&t.renderer;return n&&n.kind&&n.kind!=="svg"?n:e}function q1e(t,e){const n=class{constructor(o,r,a){this.w=o,this.ctx=r,this.xyRatios=a,this._warned=!1}draw(o,r,a){var s,l;const c=this.w,u=new Be(c,this.ctx),d=Ov(this.ctx,u),f=u.group({class:"apexcharts-marks-series"});return o.forEach((h,p)=>{var g;const m=Array.isArray(a)?a[p]:p,v=u.group({class:"apexcharts-series",rel:m+1,seriesName:Ee.escapeString(c.seriesData.seriesNames[m]),"data:realIndex":m}),b=this._scales(m,(c.seriesData.series[m]||[]).length),y=c.globals.colors[m],w=((g=c.config.series[m])==null?void 0:g.data)||[],x=c.seriesData.seriesX[m]||[],$=c.seriesData.series[m]||[];c.globals.seriesXvalues[m]=[],c.globals.seriesYvalues[m]=[],typeof c.globals.pointsArray[m]>"u"&&(c.globals.pointsArray[m]=[]);for(let S=0;S<$.length;S++){const _=$[S];if(_===null||typeof _>"u")continue;const P=x[S],T=b.xAt(S,P),O=b.y(_),M=this._api(d,v,m,S);try{e.renderItem({datum:w[S],x:T,y:O,scales:b,api:M,seriesIndex:m,dataPointIndex:S,color:y})}catch(I){this._warned||(console.warn(`[apexcharts] renderItem for series type "${t}" threw; skipping datum:`,I),this._warned=!0)}c.globals.seriesXvalues[m][S]=T,c.globals.seriesYvalues[m][S]=O,c.globals.pointsArray[m][S]=[T,O]}u.setupEventDelegation(v,".apexcharts-marks-mark"),f.add(v)}),(l=(s=this.ctx.animations)==null?void 0:s.animationCompleted)==null||l.call(s,f),f}_scales(o,r){var a,s,l,c;const u=this.w.globals,d=this.w.config,f=this.xyRatios.xRatio,h=this.xyRatios.yRatio,p=(s=(a=u.seriesYAxisReverseMap)==null?void 0:a[o])!=null?s:0,g=Array.isArray(h)?(l=h[p])!=null?l:h[0]:h,m=u.maxYArr,v=Array.isArray(m)&&m.length&&(c=m[p])!=null?c:u.maxY,b=u.gridWidth,y=u.gridHeight,w=!u.isXNumeric,x=r||u.dataPoints||1,$=x>0?b/x:b,S=d.xaxis.tickPlacement==="on",_=I=>f?(I-u.minX)/f:b/2,P=I=>(v-I)/g,T=(I,k)=>w?S&&x>1?I/(x-1)*b:(I+.5)*$:_(k),O=u.minXDiff||1,M=w?$:f?O/f:b;return{x:_,xAt:T,y:P,gridWidth:b,gridHeight:y,band:M}}_api(o,r,a,s){const l=c=>{if(c){try{c.node.setAttribute("index",String(a)),c.node.setAttribute("j",String(s)),c.node.classList.add("apexcharts-marks-mark")}catch{}r.add(c)}return c};return{path:(c={})=>{var u,d,f,h,p,g,m,v,b;return l(o.drawPath({d:c.d||"",stroke:(u=c.stroke)!=null?u:"#000",strokeWidth:(f=(d=c.width)!=null?d:c.strokeWidth)!=null?f:1,fill:(h=c.fill)!=null?h:"none",fillOpacity:(g=c.fillOpacity)!=null?g:c.fill&&c.fill!=="none"?(p=c.opacity)!=null?p:1:0,strokeOpacity:(v=(m=c.strokeOpacity)!=null?m:c.opacity)!=null?v:1,strokeDashArray:(b=c.dash)!=null?b:0,strokeLinecap:c.lineCap}))},line:(c={})=>{var u,d,f,h;return l(o.drawLine(c.x1,c.y1,c.x2,c.y2,(u=c.stroke)!=null?u:"#000",(d=c.dash)!=null?d:0,(h=(f=c.width)!=null?f:c.strokeWidth)!=null?h:1))},rect:(c={})=>{var u,d,f,h,p,g,m,v;return l(o.drawRect((u=c.x)!=null?u:0,(d=c.y)!=null?d:0,(f=c.w)!=null?f:0,(h=c.h)!=null?h:0,(p=c.r)!=null?p:0,(g=c.fill)!=null?g:"#000",(m=c.opacity)!=null?m:1,c.stroke!=null?(v=c.strokeWidth)!=null?v:1:null,c.stroke))},circle:(c={})=>{var u,d,f,h,p;return l(o.drawCircle((u=c.r)!=null?u:0,{cx:(d=c.cx)!=null?d:0,cy:(f=c.cy)!=null?f:0,fill:(h=c.fill)!=null?h:"#000",stroke:c.stroke||"none","stroke-width":(p=c.strokeWidth)!=null?p:c.stroke?1:0}))},text:(c={})=>{var u,d,f,h;return l(o.drawText({x:(u=c.x)!=null?u:0,y:(d=c.y)!=null?d:0,text:(f=c.text)!=null?f:"",textAnchor:(h=c.anchor)!=null?h:"start",fontSize:c.size,foreColor:c.color,fontWeight:c.weight}))}}}};return n.dataType=e.dataType||"xy",n.yExtent=typeof e.yExtent=="function"?e.yExtent:null,n}Vn._customSeriesFactory=q1e;const Z1e="(prefers-color-scheme: dark)",J1e="(prefers-contrast: more)";class Wl{constructor(e,n){if(this.w=e,this.ctx=n,e.config.theme.follow!=="os"||!Ot.isBrowser())return;const i=this._ensureMedia();i&&(this._applyToConfig(i),this._ensureListeners(i))}_ensureMedia(){if(!this.ctx._osThemeMedia){const e=We.matchMedia(Z1e),n=We.matchMedia(J1e);if(!e&&!n)return null;this.ctx._osThemeMedia={dark:e,contrast:n,handler:null}}return this.ctx._osThemeMedia}_applyToConfig(e){const n=this.w.config.theme;e.dark&&(n.mode=e.dark.matches?"dark":"light"),e.contrast&&e.contrast.matches&&(n.accessibility=n.accessibility||{},n.accessibility.colorBlindMode="highContrast")}_ensureListeners(e){if(e.handler)return;const n=this.ctx,i=()=>{const o=n._osThemeMedia;if(!o)return;const r={mode:o.dark&&o.dark.matches?"dark":"light"};o.contrast&&o.contrast.matches?r.accessibility={colorBlindMode:"highContrast"}:r.accessibility={colorBlindMode:""},n.updateOptions({theme:r},!1,!0,!1)};Wl._add(e.dark,i),Wl._add(e.contrast,i),e.handler=i}teardown(){const e=this.ctx._osThemeMedia;e&&(e.handler&&(Wl._remove(e.dark,e.handler),Wl._remove(e.contrast,e.handler)),this.ctx._osThemeMedia=null)}static _add(e,n){e&&(typeof e.addEventListener=="function"?e.addEventListener("change",n):typeof e.addListener=="function"&&e.addListener(n))}static _remove(e,n){e&&(typeof e.removeEventListener=="function"?e.removeEventListener("change",n):typeof e.removeListener=="function"&&e.removeListener(n))}}Vn.registerFeatures({osThemeWatcher:Wl});const iw="__apexcharts_series_transforms__";globalThis[iw]||(globalThis[iw]={});function Q1e(){return globalThis[iw]}function Yc(t,e){if(!t||typeof t!="string"){console.warn("ApexCharts: registerSeriesTransform requires a non-empty name.");return}if(typeof e!="function"){console.warn(`ApexCharts: registerSeriesTransform("${t}") expects a function (series, w) => series.`);return}Q1e()[t]=e}const ow="__apexcharts_row_sources__";globalThis[ow]||(globalThis[ow]={});function eSe(){return globalThis[ow]}function f$(t,e){if(!t||typeof t!="string"){console.warn("ApexCharts: registerRowSource requires a non-empty name.");return}if(typeof e!="function"){console.warn(`ApexCharts: registerRowSource("${t}") expects a function (w, opts) => series.`);return}eSe()[t]=e}const YE=1e3;function kr(t,e){const n=t.length;if(n===0)return NaN;if(n===1)return t[0];const i=(n-1)*e,o=Math.floor(i),r=Math.ceil(i);return o===r?t[o]:t[o]+(t[r]-t[o])*(i-o)}function EN(t){const e=t.length;if(e<2)return 0;let n=0;for(let r=0;re/Math.max(1,Math.ceil(r));switch(n){case"sqrt":return{width:o(Math.sqrt(i)),rule:"sqrt"};case"rice":return{width:o(2*Math.cbrt(i)),rule:"rice"};case"scott":{const r=EN(t);return r>0?{width:3.49*r*Math.pow(i,-1/3),rule:"scott"}:{width:o(Math.log2(i)+1),rule:"sturges"}}case"fd":{const r=kr(t,.75)-kr(t,.25);return r>0?{width:2*r*Math.pow(i,-1/3),rule:"fd"}:{width:o(Math.log2(i)+1),rule:"sturges"}}case"auto":{const r=o(Math.log2(i)+1),a=kr(t,.75)-kr(t,.25);if(a<=0)return{width:r,rule:"sturges"};const s=2*a*Math.pow(i,-1/3);return sf-h);let i=n[0],o=n[n.length-1];const r=e.range;if(Array.isArray(r)&&r.length===2){const f=Number(r[0]),h=Number(r[1]);isFinite(f)&&isFinite(h)&&h>f&&(i=f,o=h)}if(!(o>i)){const f=Math.abs(i)>0?Math.abs(i)*.05:.5;return{edges:[i-f,i+f],binWidth:f*2,rule:"single",capped:!1}}const a=o-i;let s,l;if(typeof e.binWidth=="number"&&e.binWidth>0)s=e.binWidth,l="binWidth";else if(typeof e.bins=="number"&&e.bins>=1)s=a/Math.floor(e.bins),l="count";else{const f=tSe(n,a,typeof e.bins=="string"?e.bins:"auto");s=f.width,l=f.rule}(!isFinite(s)||s<=0)&&(s=a);let c=Math.ceil(a/s);(!isFinite(c)||c<1)&&(c=1);let u=!1;c>YE&&(c=YE,s=a/c,u=!0),s=a/c;const d=new Array(c+1);for(let f=0;f<=c;f++)d[f]=i+f*s;return d[c]=Math.max(d[c],o),{edges:d,binWidth:s,rule:l,capped:u}}function MN(t,e){const n=e.length-1;if(!(t>=e[0])||t>e[n])return-1;if(t===e[n])return n-1;const i=(e[n]-e[0])/n;if(i>0){let a=Math.floor((t-e[0])/i);return a<0&&(a=0),a>n-1&&(a=n-1),t=e[a+1]&&a++,a<0||a>n-1?-1:a}let o=0,r=n-1;for(;o<=r;){const a=o+r>>1;if(t=e[a+1])o=a+1;else return a}return-1}function iSe(t,e){const n=new Array(Math.max(0,e.length-1)).fill(0);for(let i=0;i=0&&n[o]++}return n}function oSe(t,e){const n=Math.max(0,e.length-1),i=new Array(n);for(let o=0;o=0&&i[r].push(t[o])}return i}function rSe(t,e={}){if(!Array.isArray(t)||t.length===0)return null;const n=t.slice().sort((u,d)=>u-d),i=kr(n,.25),o=kr(n,.5),r=kr(n,.75),a=r-i;let s=n[0],l=n[n.length-1],c=[];if(e.whiskers==="tukey"&&a>0){const u=i-1.5*a,d=r+1.5*a;let f=0;for(;f=0&&n[h]>d;)h--;f<=h&&(s=n[f],l=n[h],c=n.slice(0,f).concat(n.slice(h+1)))}return{summary:[s,i,o,r,l],outliers:c,iqr:a}}function aSe(t,e={}){if(!Array.isArray(t)||t.length===0)return null;const n=t.slice().sort((d,f)=>d-f),i=n.length;let o=e.bandwidth;if(!(typeof o=="number"&&o>0)){const d=EN(n),f=kr(n,.75)-kr(n,.25);o=.9*(f>0?Math.min(d,f/1.349):d)*Math.pow(i,-1/5)}if(!isFinite(o)||o<=0){const d=n[0],f=Math.abs(d)>0?Math.abs(d)*.001:.001;return{density:[[d-f,0],[d,1],[d+f,0]],bandwidth:f}}const r=Math.max(8,Math.floor(e.resolution||64)),a=n[0]-2*o,l=(n[i-1]+2*o-a)/(r-1),c=1/(i*o*Math.sqrt(2*Math.PI)),u=[];for(let d=0;do+=r)}const i=t.reduce((o,r)=>o+r,0);if(i<=0)return n;if(e.normalize==="relative")return n.map(o=>o/i*100);if(e.normalize==="density"){const o=e.binWidth;if(typeof o=="number"&&o>0)return n.map(r=>r/(i*o))}return n}function IN(t,e){var n;if(!t||typeof t!="object"||Array.isArray(t))return null;let i=null;if(Array.isArray(t.points)?i=t.points:Array.isArray((n=t.y)==null?void 0:n.points)?i=t.y.points:e&&Array.isArray(t.y)&&typeof t.y[0]=="number"&&(i=t.y),!i)return null;const o=[];for(let r=0;rvt(Ye({},p),{data:Array.isArray(p==null?void 0:p.data)?p.data.slice():p==null?void 0:p.data})));const r=o.histogramRawSeries,a=((n=i.plotOptions)==null?void 0:n.histogram)||{},s=r.map(p=>kN(p==null?void 0:p.data));let l=[];if(s.length===1)l=s[0];else for(const p of s)l=l.concat(p);const c=nSe(l,{bins:a.bins,binWidth:a.binWidth,range:a.range});if(!c)return e.histogramData={edges:[],binWidth:0,counts:[],rule:"",capped:!1},r;const{edges:u,binWidth:d}=c,f=s.map(p=>iSe(p,u));e.histogramData={edges:u,binWidth:d,counts:f,rule:c.rule,capped:c.capped};const h=o.collapsedSeriesIndices||[];return r.map((p,g)=>{if(h.indexOf(g)!==-1)return vt(Ye({},p),{data:[]});const m=sSe(f[g],{normalize:a.normalize,cumulative:a.cumulative,binWidth:d}),v=[];for(let b=0;b{if(!Array.isArray(r==null?void 0:r.data))return r;let a=!1;const s=r.data.map(l=>{if(Array.isArray(l==null?void 0:l.y)&&l.y.length===5&&!Ng.has(l))return l;const c=IN(l,!1);if(!c)return l;const u=rSe(c,{whiskers:o});if(!u)return l;a=!0;const d=vt(Ye({},l),{y:u.summary,points:c});return Ng.add(d),d});return a?vt(Ye({},r),{data:s}):r})}function uSe(t,e){var n,i;if(!Array.isArray(t))return t;const o=((i=(n=e.config.plotOptions)==null?void 0:n.violin)==null?void 0:i.kde)||{};return t.map(r=>{if(!Array.isArray(r==null?void 0:r.data))return r;let a=!1;const s=r.data.map(l=>{var c;if(Array.isArray((c=l==null?void 0:l.y)==null?void 0:c.density)&&l.y.density.length&&!Ng.has(l))return l;const u=IN(l,!0);if(!u)return l;const d=aSe(u,{bandwidth:o.bandwidth,resolution:o.resolution});if(!d)return l;a=!0;const f=vt(Ye({},l),{y:{density:d.density,points:u}});return Ng.add(f),f});return a?vt(Ye({},r),{data:s}):r})}const dSe=3e3;function fSe(t,e){let n=0,i=0;for(const l of t)n+=l.length,l.length>i&&(i=l.length);if(n<=e)return{clusters:t,stride:1,total:n,kept:n};const o=l=>{let c=0;for(const u of t)c+=Math.ceil(u.length/l);return c};let r=Math.max(2,Math.ceil(n/e));for(;re;)r++;let a=0;return{clusters:t.map(l=>{const c=[];for(let u=0;ua.rows),i);o.stride>1&&console.warn(`ApexCharts: rowSeries() thinned ${o.total} rows to ${o.kept} (every ${o.stride}${o.stride===2?"nd":o.stride===3?"rd":"th"} row) to stay under maxRows=${i}. Raise maxRows to draw more.`);const r=t.globals&&t.globals.colors||[];return e.map((a,s)=>{const l=r[a.realIndex]||r[0];return{name:a.name,data:o.clusters[s].map((c,u)=>Ye({id:`${a.realIndex}:${s}:${u}`,x:a.name,y:c},l?{fillColor:l}:{}))}})}function hSe(t,e){const n=t.globals,i=t.histogramData,o=n&&n.histogramRawSeries;if(!i||!Array.isArray(i.edges)||i.edges.length<2||!Array.isArray(o)||!o.length)return null;const r=n&&n.collapsedSeriesIndices||[],a=i.edges,s=[];return o.forEach((l,c)=>{var u;if(r.indexOf(c)!==-1)return;const d=oSe(kN(l&&l.data),a),f=t.seriesData&&((u=t.seriesData.seriesNames)==null?void 0:u[c])||(l==null?void 0:l.name);d.forEach((h,p)=>{const g=`${GE(a[p])}-${GE(a[p+1])}`;s.push({name:o.length>1&&f?`${f} ${g}`:g,realIndex:c,rows:h})})}),s.length?DN(t,s,e):null}function GE(t){if(!isFinite(t))return String(t);const e=Math.round(t);return Math.abs(t-e)<1e-6?String(e):String(Number(t.toFixed(2)))}function RN(t){return(e,n)=>{var i;const o=t(e);if(!Array.isArray(o)||!o.length)return null;const r=e.globals&&e.globals.collapsedSeriesIndices||[],a=e.globals&&((i=e.globals.categoryLabels)!=null&&i.length?e.globals.categoryLabels:e.globals.labels)||[],s=[];return o.forEach((l,c)=>{var u;if(r.indexOf(c)!==-1||!Array.isArray(l))return;const d=e.seriesData&&((u=e.seriesData.seriesNames)==null?void 0:u[c]);l.forEach((f,h)=>{const p=a[h]!=null?String(a[h]):`#${h+1}`;s.push({name:o.length>1&&d?`${d} ${p}`:p,realIndex:c,rows:Array.isArray(f)?f.slice():[]})})}),s.length?DN(e,s,n):null}}const pSe=RN(t=>{var e;return(e=t.candleData)==null?void 0:e.seriesBoxPoints}),gSe=RN(t=>{var e;return(e=t.violinData)==null?void 0:e.seriesViolinPoints});Yc("histogram",lSe);Yc("boxPlot",cSe);Yc("violin",uSe);f$("histogram",hSe);f$("boxPlot",pSe);f$("violin",gSe);class mSe{constructor(e,n){this.w=e,this.ctx=n}isActive(){return this.w.config.chart.requestedType==="waterfall"}drawConnectors(){var e,n;const i=this.w;if(!this.isActive())return;const o=(n=(e=i.config.plotOptions)==null?void 0:e.waterfall)==null?void 0:n.connectors;if(!o||o.show===!1)return;const r=i.dom.elGraphical,a=i.waterfallData&&i.waterfallData.geometry;if(!r||!a)return;this.removeConnectors();const s=new Be(i,this.ctx),l=s.group({class:"apexcharts-waterfall-connectors"}),c=o.color||i.config.grid.borderColor,u=o.strokeWidth==null?1:o.strokeWidth,d=o.strokeDashArray==null?3:o.strokeDashArray;let f=0;for(let p=0;p.5))continue;const w=v.horizontal?s.drawLine(v.levelEnd,v.slotEnd,v.levelEnd,b.slotStart,c,d,u):s.drawLine(v.slotEnd,v.levelEnd,b.slotStart,v.levelEnd,c,d,u);w.node.classList.add("apexcharts-waterfall-connector"),l.add(w),f++}}if(!f)return;l.attr("clip-path",`url(#gridRectBarMask${i.globals.cuid})`);const h=r.node.querySelector(".apexcharts-xaxis");h?r.node.insertBefore(l.node,h):r.add(l),this.holdUntilBarsLand(l)}removeConnectors(){const e=this.w.dom.elGraphical,n=e&&e.node.querySelector(".apexcharts-waterfall-connectors");n&&n.parentNode&&n.parentNode.removeChild(n)}holdUntilBarsLand(e){const n=this.w;Ot.isBrowser()&&n.globals.shouldAnimate&&!n.globals.animationEnded&&(e.node.classList.add("apexcharts-element-hidden"),n.globals.delayedElements.push({el:e.node,holdUntilComplete:!0}))}}function vSe(t,e,n){const i=n&&n[e]!==void 0?n[e]:e+1;return t==null?{x:i,y:null,isSubtotal:!1,isTotal:!1,rest:{}}:Array.isArray(t)?{x:t[0]!==void 0?t[0]:i,y:t[1],isSubtotal:!1,isTotal:!1,rest:{}}:typeof t=="object"?{x:t.x!==void 0?t.x:i,y:t.y,isSubtotal:t.isSubtotal===!0,isTotal:t.isTotal===!0,rest:t}:{x:i,y:t,isSubtotal:!1,isTotal:!1,rest:{}}}function bSe(t){for(let e=0;evt(Ye({},g),{data:Array.isArray(g==null?void 0:g.data)?g.data.slice():g==null?void 0:g.data})));const s=a.waterfallRawSeries,l=((i=(n=r.plotOptions)==null?void 0:n.waterfall)==null?void 0:i.colors)||{},c=(o=r.xaxis)==null?void 0:o.categories,u=a.collapsedSeriesIndices||[],d=[],f=[],h=[],p=s.map((g,m)=>{const v=Array.isArray(g==null?void 0:g.data)?g.data:[];if(u.indexOf(m)!==-1)return d[m]=[],f[m]=[],h[m]=[],vt(Ye({},g),{data:[]});if(bSe(v))return d[m]=v.map(y=>{const w=Array.isArray(y)?y[1]:y&&typeof y=="object"?y.y:y;if(!Array.isArray(w))return null;const x=Ee.parseNumber(w[0]),$=Ee.parseNumber(w[1]);return x===null||$===null?null:$-x}),f[m]=v.map(y=>{const w=Array.isArray(y)?y[1]:y&&typeof y=="object"?y.y:y,x=Array.isArray(w)?Ee.parseNumber(w[1]):null;return x===null?0:x}),h[m]=v.map(()=>null),g;const b=xSe(v,c,l);return d[m]=b.values,f[m]=b.cumulative,h[m]=b.kinds,vt(Ye({},g),{data:b.data})});return e.waterfallData={values:d,cumulative:f,kinds:h,geometry:[]},p}Yc("waterfall",wSe);Vn.registerFeatures({waterfall:mSe});function SSe(t,e,n){const i=n&&n[e]!==void 0?n[e]:e+1;return t==null?{x:i,y:null,rest:{}}:Array.isArray(t)?{x:t[0]!==void 0?t[0]:i,y:t[1],rest:{}}:typeof t=="object"?{x:t.x!==void 0?t.x:i,y:t.y,rest:t}:{x:i,y:t,rest:{}}}function CSe(t){for(let e=0;evt(Ye({},v),{data:Array.isArray(v==null?void 0:v.data)?v.data.slice():v==null?void 0:v.data})));const r=o.dumbbellRawSeries;if(r.some(v=>CSe(Array.isArray(v==null?void 0:v.data)?v.data:[])))return e.dumbbellData={form:"pairs",names:[],values:[],order:[],carrier:0,hidden:[]},t;const s=(n=i.xaxis)==null?void 0:n.categories,l=o.collapsedSeriesIndices||[],{xs:c,rows:u,byX:d}=$Se(r,s),f=[],h=[],p=[];for(let v=0;vw)&&(w=P,$=_))}if(y===null||w===null){h.push(null),g.push(vt(Ye({},u[v]),{x:c[v],y:null}));continue}h.push([x,$]),g.push(vt(Ye({},u[v]),{x:c[v],y:[y,w]}))}e.dumbbellData={form:"series",names:r.map((v,b)=>{var y;return(y=v==null?void 0:v.name)!=null?y:`Series ${b+1}`}),values:f,order:h,carrier:p.length?p[0]:0,hidden:r.map((v,b)=>b).filter(v=>l.indexOf(v)!==-1)};const m=e.dumbbellData.carrier;return r.map((v,b)=>vt(Ye({},v),{data:b===m&&p.length?g:[]}))}Yc("dumbbell",ASe);const vh=3;class _Se{constructor(e,n){this.w=e,this.ctx=n,this._hovered=-1}isActive(){return this.w.config.chart.requestedType==="streamgraph"}_yPx(e){var n;const i=this.w,o=i.globals,r=i.layout.gridHeight,a=o.maxY-o.minY;if(!a||!isFinite(a))return r/2;const s=(e-o.minY)/a;return(n=i.config.yaxis[0])!=null&&n.reversed?s*r:r-s*r}draw(){this.isActive()&&(this.clearDim(),this.bindHover(),this.drawLabels())}drawLabels(){var e,n,i,o,r,a,s;const l=this.w;if(!this.isActive())return;const c=(n=(e=l.config.plotOptions)==null?void 0:e.streamgraph)==null?void 0:n.labels;if(!c||c.show===!1)return;const u=l.dom.elGraphical,d=l.streamgraphData;if(!u||!d)return;this.removeLabels();const f=new Be(l,this.ctx),h=f.group({class:"apexcharts-streamgraph-labels"}),p=((i=c.style)==null?void 0:i.fontSize)||"auto",g=((o=c.style)==null?void 0:o.fontFamily)||l.config.chart.fontFamily,m=((r=c.style)==null?void 0:r.fontWeight)||600,v=c.minWidth==null?24:c.minWidth,b=[];for(let x=0;xp&&(p=S)}if(p<=0)return null;const g=this._resolveFontSize(n,p),m=String(l.names[e]);let v=g,b=a.getTextRects(m,`${v}px`,i,"",!0,o);if(py.width&&n==="auto"){const $=Math.floor(v*(y.width/b.width));if($1){const I=Math.abs(Number(d[Math.min($.r+1,f-1)])-Number(d[Math.max($.l-1,0)]));P=isFinite(I)?I:0}if(PO*2.2&&M.push(S+O/2+2,_-O/2-2);for(const I of M){let k=$.l,E=1/0;for(let R=$.l;R<=$.r;R++){const D=Math.abs(Number(d[R])-I);D=6)break}return x.length?{k:e,weight:p,candidates:x}:null}_runs(e,n,i){const o=[];let r=0;for(;r=n;)a++,e[a]>s&&(s=e[a]);o.push({l:r,r:a,maxT:s}),r=a+1}return o.sort((a,s)=>s.maxT-a.maxT)}_widestRun(e,n,i,o){let r=-1;for(const a of this._runs(e,i,o)){const s=Number(n[a.r])-Number(n[a.l]);isFinite(s)&&s>r&&(r=s)}return r>=0?{width:r}:null}_deconflict(e){const n=e.slice().sort((r,a)=>a.weight-r.weight),i=[],o=r=>!i.some(a=>r.lefta.box.left&&r.topa.box.top);for(const r of n)for(const a of r.candidates){const s={left:a.x-a.width/2,right:a.x+a.width/2,top:a.y-a.height/2,bottom:a.y+a.height/2};if(o(s)){i.push(vt(Ye({k:r.k},a),{box:s}));break}}return i}_autoBounds(){var e,n;const i=((n=(e=this.w.config.plotOptions)==null?void 0:e.streamgraph)==null?void 0:n.labels)||{};return{min:i.minFontSize==null?9:i.minFontSize,max:i.maxFontSize==null?30:i.maxFontSize}}_resolveFontSize(e,n){if(e!=="auto"){const r=parseFloat(e);return isFinite(r)&&r>0?r:12}const{min:i,max:o}=this._autoBounds();return Math.max(i,Math.min(o,Math.round(n*.36)))}_contrastOn(e){var n;const i=this.w,o=(n=i.globals.colors)==null?void 0:n[e],r=typeof o=="string"?Ee.parseHex(o):null;return r?Ee.relativeLuminance(r)>.45?"#000000":"#ffffff":i.config.chart.foreColor}removeLabels(){const e=this.w.dom.elGraphical,n=e&&e.node.querySelector(".apexcharts-streamgraph-labels");n&&n.parentNode&&n.parentNode.removeChild(n)}bindHover(){const e=this.w;if(!Ot.isBrowser()||this._hoverCfg().show===!1)return;const n=e.dom.baseEl&&e.dom.baseEl.querySelector(".apexcharts-svg");!n||n.__apexStreamHover||(n.__apexStreamHover=!0,n.addEventListener("mousemove",i=>{!this.isActive()||!this.w.streamgraphData||this._dim(this._bandAt(i))}),n.addEventListener("mouseleave",()=>{this._dim(-1)}))}_hoverCfg(){var e,n;return((n=(e=this.w.config.plotOptions)==null?void 0:e.streamgraph)==null?void 0:n.hover)||{}}_bandAt(e){const n=this.w,i=n.streamgraphData;if(!i||!i.order.length)return-1;const o=n.dom.baseEl&&n.dom.baseEl.querySelector(".apexcharts-svg");if(!o)return-1;const r=o.getBoundingClientRect(),a=n.globals.svgWidth?r.width/n.globals.svgWidth:1,s=so.screenXToPlotPx(n,e.clientX),l=(e.clientY-r.top)/(a||1)-n.layout.translateY;if(s<0||s>n.layout.gridWidth||l<0||l>n.layout.gridHeight)return-1;const c=n.globals.seriesXvalues[i.order[0]];if(!Array.isArray(c)||!c.length)return-1;const u=n.interact?n.interact.capturedDataPointIndex:-1;let d=-1;if(u>=0&&u=b&&l<=y)return g;const w=le<0||c===e;for(let l=0;l({j:o,v:t[o]instanceof Date?t[o].getTime():t[o]}));n.sort((o,r)=>o.v-r.v);const i=n.map(o=>o.j);for(let o=0;op&&(p=f[m],g=m);i[d]=h,o[d]=g}const r=e.slice().sort((u,d)=>o[u]-o[d]||u-d);let a=0,s=0;const l=[],c=[];for(let u=0;uvt(Ye({},O),{data:Array.isArray(O==null?void 0:O.data)?O.data.slice():O==null?void 0:O.data})));const a=r.streamgraphRawSeries;if(a.some(O=>ESe(Array.isArray(O==null?void 0:O.data)?O.data:[])))return e.streamgraphData=null,t;const s=((n=o.plotOptions)==null?void 0:n.streamgraph)||{},l=PSe.indexOf(s.offset)!==-1?s.offset:"wiggle",c=OSe.indexOf(s.order)!==-1?s.order:"inside-out",u=(i=o.xaxis)==null?void 0:i.categories,d=r.collapsedSeriesIndices||[],{xs:f,rows:h,grids:p}=MSe(a,u),g=ISe(f),m=g?g.map(O=>f[O]):f,v=g?g.map(O=>h[O]):h,b=m.length;let y=!1;const w=[];for(let O=0;OO.slice());for(let O=0;Onull),T=a.map(()=>null);for(let O=0;O{var I;return(I=O==null?void 0:O.name)!=null?I:`Series ${M+1}`}),xs:m,values:w,lows:P,highs:T,order:S,offset:l,hidden:a.map((O,M)=>M).filter(O=>d.indexOf(O)!==-1)},a.map((O,M)=>{const I=P[M],k=T[M];if(!I||!k)return vt(Ye({},O),{data:[]});const E=new Array(b);for(let R=0;R{if(typeof t!="function")return t;const o=t({series:e.seriesData.series,seriesIndex:n,dataPointIndex:i,w:e});return Number.isFinite(o)?o:0};function LN(t){return-Math.cos(t*Math.PI)/2+.5}function LSe(t,e,n,i){t=Math.min(Math.max(t,0),1),n=Math.min(Math.max(n,0),1);const o=3*t,r=3*(n-t)-o,a=1-o-r,s=3*e,l=3*(i-e)-s,c=1-s-l,u=h=>((a*h+r)*h+o)*h,d=h=>((c*h+l)*h+s)*h,f=h=>{let p=0,g=1,m=h;if(mg)return g;for(;pv?p=m:g=m,m=(p+g)/2}return m};return h=>h<=0?0:h>=1?1:d(f(h))}const Mi=new Map,FSe=t=>t;Mi.set("linear",FSe);Mi.set("easeInOutSine",LN);Mi.set("easeInSine",t=>1-Math.cos(t*Math.PI/2));Mi.set("easeOutSine",t=>Math.sin(t*Math.PI/2));Mi.set("easeInQuad",t=>t*t);Mi.set("easeOutQuad",t=>1-(1-t)*(1-t));Mi.set("easeInOutQuad",t=>t<.5?2*t*t:1-Math.pow(-2*t+2,2)/2);Mi.set("easeInCubic",t=>t*t*t);Mi.set("easeOutCubic",t=>1-Math.pow(1-t,3));Mi.set("easeInOutCubic",t=>t<.5?4*t*t*t:1-Math.pow(-2*t+2,3)/2);Mi.set("easeOutBack",t=>1+2.70158*Math.pow(t-1,3)+1.70158*Math.pow(t-1,2));Mi.set("easeInOutBack",t=>{const n=2.5949095;return t<.5?Math.pow(2*t,2)*((n+1)*2*t-n)/2:(Math.pow(2*t-2,2)*((n+1)*(t*2-2)+n)+2)/2});function NSe(t){return Array.isArray(t)&&t.length===4&&t.every(e=>typeof e=="number")}function BSe(t){return typeof t=="function"?KE(t):NSe(t)?LSe(t[0],t[1],t[2],t[3]):typeof t=="string"&&Mi.has(t)?KE(Mi.get(t)):LN}function KE(t){return e=>{const n=t(e);return typeof n=="number"&&isFinite(n)?n:e}}function zSe(t,e){const n=new Set(t.exits),i=[];let o=0;for(let r=0;rl[0]==="C"?[Number(l[5]),Number(l[6])]:[Number(l[1]),Number(l[2])]);for(const l of s)if(!isFinite(l[0])||!isFinite(l[1]))return null;return{body:o,closing:r,segType:a,anchors:s}}function as(t,e,n){return[t[0]+(e[0]-t[0])*n,t[1]+(e[1]-t[1])*n]}function HSe(t,e,n){const i=t,o=[e[1],e[2]],r=[e[3],e[4]],a=[e[5],e[6]],s=as(i,o,n),l=as(o,r,n),c=as(r,a,n),u=as(s,l,n),d=as(l,c,n),f=as(u,d,n);return{first:["C",s[0],s[1],u[0],u[1],f[0],f[1]],second:["C",d[0],d[1],c[0],c[1],a[0],a[1]],mid:f}}function WSe(t,e,n){const i=[e[1],e[2]],o=as(t,i,n);return{first:["L",o[0],o[1]],second:["L",i[0],i[1]],mid:o}}function qE(t,e){const{body:n,closing:i,segType:o,anchors:r}=t,a=r.length,s=e.length,l=f=>o==="C"?["C",f[0],f[1],f[0],f[1],f[0],f[1]]:["L",f[0],f[1]],c=[["M",r[0][0],r[0][1]]];let u=0;for(;uc.push(f.slice())),c}function ZE(t,e,n,i,o,r){const a=UE(t,i,r);if(!a)return null;const s=UE(e,o,r);if(!s||a.segType!==s.segType||(a.closing||s.closing)&&(!a.closing||!s.closing||a.closing[0][0]!==s.closing[0][0]))return null;const l=n.map(u=>u.oldJ),c=n.map(u=>u.newJ);return{from:tw(qE(a,l)),toInterp:tw(qE(s,c))}}function td(t){var e;const n=t.config.chart.animations;if(!n||n.enabled===!1||!n.dynamicAnimation||n.dynamicAnimation.enabled===!1)return!1;const i=(e=n.largeDatasetThreshold)!=null?e:0;return i>0&&t.globals.dataPoints>i?!1:!!(Ot.isBrowser()&&t.globals.dataChanged&&t.globals.shouldAnimate)}function Or(t,e,n){var i,o,r,a;if((i=t.axisFlags)!=null&&i.isXNumeric){const l=(r=(o=t.seriesData)==null?void 0:o.seriesX)==null?void 0:r[e];if(l&&l.length&&l[n]!=null)return"x:"+l[n]}const s=(a=t.globals.labels)==null?void 0:a[n];return s!=null&&String(s)!==""?"c:"+(Array.isArray(s)?s.join(" "):String(s)):"j:"+n}function jSe(t,e,n){var i,o;if(t.isXNumeric){const a=(i=t.seriesX)==null?void 0:i[e];if(a&&a.length&&a[n]!=null)return"x:"+a[n]}const r=(o=t.labels)==null?void 0:o[n];return r!=null&&String(r)!==""?"c:"+(Array.isArray(r)?r.join(" "):String(r)):"j:"+n}function VSe(t,e){const n=new Map;t.forEach((c,u)=>{n.has(c)||n.set(c,u)});const i=new Array(e.length),o=new Set;let r=-1,a=!0,s=t.length===e.length;e.forEach((c,u)=>{const d=n.has(c)&&!o.has(n.get(c))?n.get(c):-1;i[u]=d,d!==-1&&(o.add(d),d{const i=e.get(n)||0;return e.set(n,i+1),i===0?n:`${n}#${i}`})}function Tv(t,e,n=!1,i=!1){var o,r;if(!td(t))return null;const a=t.globals.prevStreamFrame;if(!a)return null;const s=(o=a.seriesY)==null?void 0:o[e],l=(r=t.seriesData.series)==null?void 0:r[e];if(!Array.isArray(s)||!Array.isArray(l)||!s.length||!l.length)return null;const c=JE(s.map((f,h)=>jSe(a,e,h))),u=JE(l.map((f,h)=>Or(t,e,h))),d=VSe(c,u);return!d.ordered&&!i||!d.changed&&!n?null:{join:d,oldKeys:c,newKeys:u}}function XSe(t){var e,n;const i=t.config.chart.animations;return BSe((n=(e=i.dynamicAnimation)==null?void 0:e.easing)!=null?n:i.easing)}function QE(t,e,n,i,o){const r=performance.now(),a=s=>{if(t.globals.isDestroyed)return;const l=Math.max(0,Math.min(1,(s-r)/e));i(n(l),l),l<1?We.requestAnimationFrame(a):o&&o()};We.requestAnimationFrame(a)}function eM(t,{elPointsMain:e,realIndex:n,speed:i}){var o,r,a,s;if(!(e!=null&&e.node))return!1;const l=Tv(t,n,!0);if(!l)return!1;const c=t.globals.prevStreamFrame;if(!c)return!1;const u=(o=c.xPixels)==null?void 0:o[n],d=(r=c.yPixels)==null?void 0:r[n];if(!u||!d)return!1;const f=e.node.querySelectorAll(".apexcharts-marker");if(!f.length)return!1;const h=((a=t.globals.seriesXvalues)==null?void 0:a[n])||[],p=((s=t.globals.seriesYvalues)==null?void 0:s[n])||[],g=XSe(t),m=Math.max(1,i||1);return e.node.classList.remove("apexcharts-element-hidden"),f.forEach(v=>{var b,y,w,x,$,S,_,P,T;const O=parseInt((y=(b=v.getAttribute("j"))!=null?b:v.getAttribute("rel"))!=null?y:"",10);if(!isFinite(O)||O<0||O>=l.join.toOld.length)return;const M=l.join.toOld[O],I=h[O]!=null&&p[O]!=null?[h[O],p[O]]:null;if(M===-1||!I){const z=v.style;z.opacity="0",QE(t,m,g,W=>{z.opacity=String(W)},()=>{z.opacity=""});return}const k=((w=u[M])!=null?w:NaN)-I[0],E=((x=d[M])!=null?x:NaN)-I[1];if(!isFinite(k)||!isFinite(E))return;const R=(_=(S=($=c.rPixels)==null?void 0:$[n])==null?void 0:S[M])!=null?_:NaN,D=parseFloat((T=(P=v.getAttribute("r"))!=null?P:v.getAttribute("default-marker-size"))!=null?T:""),F=isFinite(R)&&isFinite(D)&&D>0&&Math.abs(R-D)>.25;if(!(Math.abs(k)>=.5||Math.abs(E)>=.5)&&!F)return;const B=z=>{const W=k*(1-z),j=E*(1-z);if(F){const U=(R+(D-R)*z)/D;v.setAttribute("transform",`translate(${W+I[0]*(1-U)}, ${j+I[1]*(1-U)}) scale(${U})`)}else v.setAttribute("transform",`translate(${W}, ${j})`)};B(0),QE(t,m,g,B,()=>{v.removeAttribute("transform")})}),!0}function YSe(t,{type:e,realIndex:n,pathFromLine:i,pathFromArea:o,linePaths:r,areaPaths:a}){var s,l;const c=Tv(t,n);if(!c)return null;const{join:u,oldKeys:d,newKeys:f}=c,h=t.globals.prevStreamFrame;if(!h)return null;const p=(s=h.seriesY)==null?void 0:s[n],g=(l=t.seriesData.series)==null?void 0:l[n];if(p.length<2||g.length<2||p.some(b=>b===null)||g.some(b=>b===null))return null;const m=zSe(u,d.length),v={};return Array.isArray(r)&&r.length===1&&i&&(v.line=ZE(i,r[0],m,d.length,f.length,!1)),e==="area"&&Array.isArray(a)&&a.length===1&&o&&(v.area=ZE(o,a[0],m,d.length,f.length,!0)),!v.line&&!v.area?null:v}function GSe(t){const e=/^M\s*([+-]?[\d.eE]+)[\s,]+([+-]?[\d.eE]+)/.exec(t||"");if(!e)return null;const n=parseFloat(e[1]),i=parseFloat(e[2]);return isFinite(n)&&isFinite(i)?{x:n,y:i}:null}function KSe({w:t,elSeries:e,record:n,newKeys:i,isHorizontal:o,speed:r}){var a;if(!td(t)||!n||!Array.isArray(n.paths)||!(e!=null&&e.node))return;const s=new Set(i),l=n.paths.filter(d=>d&&d.d&&d.key!=null&&!s.has(d.key));if(!l.length)return;const c=new Be(t),u=(a=t.globals.colors)==null?void 0:a[parseInt(String(n.realIndex),10)];l.forEach(d=>{let f=d.fill||u||"#c8c8c8";String(f).indexOf("url(")===0&&(f=u||"#c8c8c8");const h=c.drawPath({d:d.d,stroke:"none",strokeWidth:0,fill:f,fillOpacity:1,classes:"apexcharts-bar-ghost"}),p=h.node;p.setAttribute("pointer-events","none"),h.attr("clip-path",`url(#gridRectBarMask${t.globals.cuid})`),e.node.insertBefore(p,e.node.firstChild);const g=GSe(d.d);let m=o?"left center":"center bottom";try{const x=p.getBBox();g&&x&&(o?m=Math.abs(g.x-x.x)<=Math.abs(g.x-(x.x+x.width))?"left center":"right center":m=Math.abs(g.y-(x.y+x.height))<=Math.abs(g.y-x.y)?"center bottom":"center top")}catch{}const v=p.style;v.transformBox="fill-box",v.transformOrigin=m;const b=Math.max(1,r||1),y=performance.now(),w=x=>{if(t.globals.isDestroyed||!p.parentNode)return;const $=Math.max(0,Math.min(1,(x-y)/b)),S=1-Math.pow(1-$,3),_=1-S;v.transform=o?`scaleX(${_})`:`scaleY(${_})`,v.opacity=String(1-S),$<1?We.requestAnimationFrame(w):p.parentNode.removeChild(p)};We.requestAnimationFrame(w)})}class USe{constructor(e){this.w=e.w,this.barCtx=e,this.totalFormatter=this.w.config.plotOptions.bar.dataLabels.total.formatter,this.totalFormatter||(this.totalFormatter=this.w.config.dataLabels.formatter)}handleBarDataLabels(e){var n,i;const{x:o,y:r,y1:a,y2:s,i:l,j:c,realIndex:u,columnGroupIndex:d,barHeight:f,barWidth:h,barXPosition:p,barYPosition:g,visibleSeries:m}=e,v=this.w,b=new Be(this.barCtx.w),y=v.waterfallData&&v.waterfallData.values,w=y&&y[u]&&y[u][c]!=null?y[u][c]:null,x=Array.isArray(this.barCtx.strokeWidth)?this.barCtx.strokeWidth[u]:this.barCtx.strokeWidth;let $,S;v.axisFlags.isXNumeric&&!v.globals.isBarHorizontal?($=o+h*(m+1),S=r+f*(m+1)-x):($=o+h*m,S=r+f*m);let _=null,P=null,T=o,O=r,M={};const I=v.config.dataLabels,k=this.barCtx.barOptions.dataLabels,E=this.barCtx.barOptions.dataLabels.total;typeof g<"u"&&(this.barCtx.isRangeBar||this.barCtx.isPyramid)&&(S=g,O=g),typeof p<"u"&&this.barCtx.isVerticalGroupedRangeBar&&($=p,T=p);const R=Bg(I.offsetX,v,u,c),D=Bg(I.offsetY,v,u,c);let F={width:0,height:0};if(v.config.dataLabels.enabled){const B=w!==null?w:v.seriesData.series[u][c];F=b.getTextRects(v.config.dataLabels.formatter?v.config.dataLabels.formatter(B,vt(Ye({},v),{seriesIndex:u,dataPointIndex:c,w:v})):v.formatters.yLabelFormatters[0](B),parseFloat(I.style.fontSize).toString(),I.style.fontFamily,void 0,!0,I.style.fontWeight)}const N={x:o,y:r,i:l,j:c,realIndex:u,columnGroupIndex:d,bcx:$,bcy:S,barHeight:f,barWidth:h,textRects:F,strokeWidth:x,dataLabelsX:T,dataLabelsY:O,dataLabelsConfig:I,barDataLabelsConfig:k,barTotalDataLabelsConfig:E,offX:R,offY:D};if(this.barCtx.isHorizontal?M=this.calculateBarsDataLabelsPosition(N):M=this.calculateColumnsDataLabelsPosition(N),w!==null&&this.barCtx.isHorizontal&&k.position==="center"){const B=(i=(n=v.waterfallData.geometry)==null?void 0:n[u])==null?void 0:i[c];B&&B.horizontal&&(M.dataLabelsX=(B.levelStart+B.levelEnd)/2+R)}return _=this.drawCalculatedDataLabels({x:M.dataLabelsX,y:M.dataLabelsY,val:w!==null?w:this.barCtx.isRangeBar?[a,s]:v.config.chart.stackType==="100%"?v.globals.seriesPercent[u][c]:v.seriesData.series[u][c],i:u,j:c,barWidth:h,barHeight:f,textRects:F,dataLabelsConfig:I}),v.config.chart.stacked&&E.enabled&&(P=this.drawTotalDataLabels({x:M.totalDataLabelsX,y:M.totalDataLabelsY,barWidth:h,barHeight:f,realIndex:u,j:c,textAnchor:M.totalDataLabelsAnchor,val:this.getStackedTotalDataLabel({realIndex:u,j:c}),rawVal:this.getStackedTotalValue({realIndex:u,j:c}),dataLabelsConfig:I,barTotalDataLabelsConfig:E})),{dataLabelsPos:M,dataLabels:_,totalDataLabels:P}}hasMultipleSeriesGroups(){return this.w.labelData.seriesGroups.length>1}getTotalGroupContext(e){if(!this.hasMultipleSeriesGroups())return null;const n=this.barCtx.barHelpers.getSeriesGroupIndex(e);return n<0?null:{groupIndex:n,group:this.w.labelData.seriesGroups[n]}}drawsStackedTotal(e){const n=this.barCtx.lastActiveBarSerieIndexByGroup,i=this.getTotalGroupContext(e);return i&&n&&n.length>i.groupIndex?n[i.groupIndex]===e:this.barCtx.lastActiveBarSerieIndex===e}getStackedTotalValue({realIndex:e,j:n}){const i=this.w,o=this.getTotalGroupContext(e),r=i.seriesData.stackedSeriesTotalsByGroups;return o&&r&&r[o.groupIndex]?r[o.groupIndex][n]:this.barCtx.stackedSeriesTotals[n]}getStackedTotalDataLabel({realIndex:e,j:n}){const i=this.w;let o=this.getStackedTotalValue({realIndex:e,j:n});return this.totalFormatter&&(o=this.totalFormatter(o,vt(Ye({},i),{seriesIndex:e,dataPointIndex:n,w:i}))),o}calculateColumnsDataLabelsPosition(e){const n=this.w;let{i,j:o,realIndex:r,y:a,bcx:s,barWidth:l,barHeight:c,textRects:u,dataLabelsX:d,dataLabelsY:f,dataLabelsConfig:h,barDataLabelsConfig:p,barTotalDataLabelsConfig:g,strokeWidth:m,offX:v,offY:b}=e,y,w;const x="middle",$=s;c=Math.abs(c);const S=n.config.plotOptions.bar.dataLabels.orientation==="vertical",{zeroEncounters:_}=this.barCtx.barHelpers.getZeroValueEncounters({i,j:o});s=s-m/2;const P=n.layout.gridWidth/n.globals.dataPoints;this.barCtx.isVerticalGroupedRangeBar?d+=l/2:(n.axisFlags.isXNumeric?d=s-l/2+v:d=s-P+l/2+v,!n.config.chart.stacked&&_>0&&n.config.plotOptions.bar.hideZeroBarsWhenGrouped&&(d-=l*_)),S&&(d=d+u.height/2-m/2-2);const T=n.seriesData.series[i][o]<0;let O=a;switch(this.barCtx.isReversed&&(O=a+(T?c:-c)),p.position){case"center":S?T?f=O-c/2+b:f=O+c/2-b:T?f=O-c/2+u.height/2+b:f=O+c/2+u.height/2-b;break;case"bottom":S?T?f=O-c+b:f=O+c-b:T?f=O-c+u.height+m+b:f=O+c-u.height/2+m-b;break;case"top":S?T?f=O+b:f=O-b:T?f=O-u.height/2-b:f=O+u.height+b;break}let M=O;const I=this.getTotalGroupContext(r);if((I?[I.group]:n.labelData.seriesGroups).forEach(E=>{var R;(R=this.barCtx[E.join(",")])==null||R.prevY.forEach(D=>{T?M=Math.max(D[o],M):M=Math.min(D[o],M)})}),this.drawsStackedTotal(r)&&g.enabled){const D=new Be(this.barCtx.w).getTextRects(this.getStackedTotalDataLabel({realIndex:r,j:o}),h.fontSize);T?y=M-D.height/2-b-g.offsetY+18:y=M+D.height+b+g.offsetY-18;const F=P;w=$+(n.axisFlags.isXNumeric?-l/2:l/2-F)+g.offsetX}return n.config.chart.stacked||(f<0?f=0+m:f+u.height/3>n.layout.gridHeight&&(f=n.layout.gridHeight-m)),{bcx:s,bcy:a,dataLabelsX:d,dataLabelsY:f,totalDataLabelsX:w,totalDataLabelsY:y,totalDataLabelsAnchor:x}}calculateBarsDataLabelsPosition(e){var n;const i=this.w;let{x:o,i:r,j:a,realIndex:s,bcy:l,barHeight:c,barWidth:u,textRects:d,dataLabelsX:f,strokeWidth:h,dataLabelsConfig:p,barDataLabelsConfig:g,barTotalDataLabelsConfig:m,offX:v,offY:b}=e;const y=i.layout.gridHeight/i.globals.dataPoints,{zeroEncounters:w}=this.barCtx.barHelpers.getZeroValueEncounters({i:r,j:a});u=Math.abs(u);let x;if(this.barCtx.isPyramid){const k=(n=d.centerOffset)!=null?n:0;x=l+c/2+b-k}else x=l-(this.barCtx.isRangeBar?0:y)+c/2+d.height/2+b-3;!i.config.chart.stacked&&w>0&&i.config.plotOptions.bar.hideZeroBarsWhenGrouped&&(x-=c*w);let $,S,_="start";const P=i.seriesData.series[r][a]<0;let T=o;if(this.barCtx.isReversed&&(T=o+(P?-u:u),_=P?"start":"end"),this.barCtx.isPyramid)f=i.layout.gridWidth/2+v;else switch(g.position){case"center":P?f=T+u/2-v:f=Math.max(d.width/2,T-u/2)+v;break;case"bottom":P?f=T+u-h-v:f=T-u+h+v;break;case"top":P?f=T-h-v:f=T-h+v;break}let O=T;const M=this.getTotalGroupContext(s);if((M?[M.group]:i.labelData.seriesGroups).forEach(k=>{var E;(E=this.barCtx[k.join(",")])==null||E.prevX.forEach(R=>{P?O=Math.min(R[a],O):O=Math.max(R[a],O)})}),this.drawsStackedTotal(s)&&m.enabled){const E=new Be(this.barCtx.w).getTextRects(this.getStackedTotalDataLabel({realIndex:s,j:a}),p.fontSize);P?($=O-h-v-m.offsetX,_="end"):$=O+v+m.offsetX+(this.barCtx.isReversed?-(u+h):h),S=x-d.height/2+E.height/2+m.offsetY+h,i.globals.barGroups.length>1&&!M&&(S=S-i.globals.barGroups.length/2*(c/2))}if(!i.config.chart.stacked){const k=P&&p.textAnchor!=="middle"?p.textAnchor==="start"?"end":"start":p.textAnchor;let E;g.orientation==="vertical"?E=d.height/2:k==="end"?E=d.width:k==="middle"?E=d.width/2:E=0;const D=(g.orientation==="vertical"?d.height:d.width)-E;f+D>i.layout.gridWidth-h&&(f=i.layout.gridWidth-D-h),f-E-1,w=(h.globals.collapsingSeriesIndices||[]).indexOf(o)>-1;if(w){const x=(u=h.globals.prevDataLabels)==null?void 0:u.get(`${o}::${Or(h,o,r)}`);x&&isFinite(x.val)&&(i=x.val)}if(c.enabled&&(!y||w)){b=m.group({class:"apexcharts-data-labels",transform:p});const x=h.config.dataLabels;((d=x.animate)!=null&&d.enabled||(f=x.countUp)!=null&&f.enabled)&&(b.node.setAttribute("data:dlKey",`${o}::${Or(h,o,r)}`),b.node.setAttribute("data:dlJ",String(r)),typeof i=="number"&&isFinite(i)&&b.node.setAttribute("data:dlVal",String(i)));let $="";typeof i<"u"&&($=v(i,vt(Ye({},h),{seriesIndex:o,dataPointIndex:r,w:h}))),!i&&h.config.plotOptions.bar.hideZeroBarsWhenGrouped&&($="");const S=h.seriesData.series[o][r]<0,_=h.config.plotOptions.bar.dataLabels.position;if(h.config.plotOptions.bar.dataLabels.orientation==="vertical"&&(_==="top"&&(S?c.textAnchor="end":c.textAnchor="start"),_==="center"&&(c.textAnchor="middle"),_==="bottom"&&(S?c.textAnchor="end":c.textAnchor="start")),this.barCtx.isRangeBar&&this.barCtx.barOptions.dataLabels.hideOverflowingLabels){const T=m.getTextRects($,parseFloat(c.style.fontSize).toString());lMath.abs(l)&&($=""):a.height/1.6>Math.abs(s)&&($=""));const P=Ye({},c);this.barCtx.isHorizontal&&i<0&&(c.textAnchor==="start"?P.textAnchor="end":c.textAnchor==="end"&&(P.textAnchor="start")),g.plotDataLabelsText({x:e,y:n,text:$,i:o,j:r,parent:b,dataLabelsConfig:P,alwaysDrawDataLabel:!0,offsetCorrection:!0})}return b}drawTotalDataLabels({x:e,y:n,val:i,rawVal:o,realIndex:r,j:a,textAnchor:s,barTotalDataLabelsConfig:l}){var c,u;const d=new Be(this.barCtx.w);let f;if(l.enabled&&typeof e<"u"&&typeof n<"u"&&this.drawsStackedTotal(r)){f=d.drawText({x:e,y:n,foreColor:l.style.color,text:i,textAnchor:s,fontFamily:l.style.fontFamily,fontSize:l.style.fontSize,fontWeight:l.style.fontWeight}),f.attr({class:"apexcharts-datalabel-total",cx:e,cy:n});const h=this.w.config.dataLabels;if((c=h.animate)!=null&&c.enabled||(u=h.countUp)!=null&&u.enabled){const{groupIndex:p}=this.barCtx.barHelpers.getGroupIndex(r);f.node.setAttribute("data:dlTotalKey",`${p}::${Or(this.w,r,a)}`),f.node.setAttribute("data:dlTotalSeries",String(r)),typeof o=="number"&&isFinite(o)&&f.node.setAttribute("data:dlTotalVal",String(o))}}return f}}function FN(t){var e,n,i,o,r,a,s;return((n=(e=t==null?void 0:t.config)==null?void 0:e.chart)==null?void 0:n.requestedType)!=="histogram"||((o=(i=t.config.plotOptions)==null?void 0:i.histogram)==null?void 0:o.overlap)===!1?!1:((s=(a=(r=t.seriesData)==null?void 0:r.series)==null?void 0:a.length)!=null?s:0)>1}let qSe=class{constructor(e){this.w=e.w,this.barCtx=e}initVariables(e){const n=this.w;this.barCtx.series=e,this.barCtx.totalItems=0,this.barCtx.seriesLen=0,this.barCtx.visibleI=-1,this.barCtx.visibleItems=1;for(let i=0;i0&&(this.barCtx.seriesLen=this.barCtx.seriesLen+1,this.barCtx.totalItems+=e[i].length),n.axisFlags.isXNumeric)for(let o=0;on.globals.minX&&n.seriesData.seriesX[i][o]i.map(o=>"none"))),this.barCtx.seriesLen===0&&(this.barCtx.seriesLen=1)}barSlotXSpan(){const e=this.w;if(this._slotXSpan!==void 0)return this._slotXSpan;let n=0;if(e.globals.dataPoints<=1){const i=e.globals.maxX-e.globals.minX;n=i>0?i/4:0}else if(n=this._unionMinXGap(),!(n>0)||!isFinite(n)){const i=e.globals.minXDiff;n=i>0&&isFinite(i)&&i!==.5?i:0}return this._slotXSpan=n,n}_unionMinXGap(){const n=this.w.seriesData.seriesX||[],i=[];for(let s=0;s0&&i.push(l)}if(!i.length)return 0;const o=new Array(i.length).fill(0);let r=NaN,a=1/0;for(;;){let s=1/0,l=-1;for(let c=0;c=u.length)continue;const d=u[o[c]];if(d!==d){o[c]++,c--;continue}d0&&c0&&p/h>0&&(a=p/h),l=a/f*parseInt(this.barCtx.barOptions.columnWidth,10)/100,l<1&&(l=1)}String(this.barCtx.barOptions.columnWidth).indexOf("%")===-1&&(l=parseInt(this.barCtx.barOptions.columnWidth,10)),c=n.layout.gridHeight-this.barCtx.baseLineY[this.barCtx.translationsIndex]-(this.barCtx.isReversed?n.layout.gridHeight:0)+(this.barCtx.isReversed?this.barCtx.baseLineY[this.barCtx.translationsIndex]*2:0),n.axisFlags.isXNumeric?i=this.barCtx.getBarXForNumericXAxis({x:i,j:0,realIndex:e,barWidth:l}).x:i=n.globals.padHorizontal+Ee.noExponents(a-l*this.barCtx.seriesLen)/2}return n.globals.barHeight=s,n.globals.barWidth=l,{x:i,y:o,yDivision:r,xDivision:a,barHeight:s,barWidth:l,zeroH:c,zeroW:u}}initializeStackedPrevVars(e){e.w.labelData.seriesGroups.forEach(i=>{e[i]||(e[i]={}),e[i].prevY=[],e[i].prevX=[],e[i].prevYF=[],e[i].prevXF=[],e[i].prevYVal=[],e[i].prevXVal=[]})}initializeStackedXYVars(e){e.w.labelData.seriesGroups.forEach(i=>{e[i]||(e[i]={}),e[i].xArrj=[],e[i].xArrjF=[],e[i].xArrjVal=[],e[i].yArrj=[],e[i].yArrjF=[],e[i].yArrjVal=[]})}getPathFillColor(e,n,i,o){var r;const a=this.w,s=new go(this.barCtx.w);let l=null;const c=this.barCtx.barOptions.distributed?i:n;let u=!1;this.barCtx.barOptions.colors.ranges.length>0&&this.barCtx.barOptions.colors.ranges.map(v=>{e[n][i]>=v.from&&e[n][i]<=v.to&&(l=v.color,u=!0)});const f=this.getDumbbellConnectorFill(n,i)||((r=a.config.series[n].data[i])==null?void 0:r.fill),h=this.barCtx.barOptions.isDumbbell?a.config.plotOptions.bar.dumbbell.connector:null;let p;return h&&h.color&&(l=h.color,p=h.opacity),{color:s.fillPath({seriesNumber:this.barCtx.barOptions.distributed?c:o,dataPointIndex:i,color:l,opacity:p,value:e[n][i],fillConfig:f,fillType:f!=null&&f.type?f.type:Array.isArray(a.config.fill.type)?a.config.fill.type[o]:a.config.fill.type}),useRangeColor:u}}getDumbbellConnectorFill(e,n){const i=this.w;if(!this.barCtx.barOptions.isDumbbell)return null;const o=i.dumbbellData;if(!o||o.form!=="series")return null;const r=i.config.plotOptions.bar.dumbbell.connector;if(r.color)return null;const a=o.order[n];if(!a)return null;const s=i.globals.colors[a[0]],l=i.globals.colors[a[1]];return!s||!l?null:{type:"gradient",gradient:{type:this.barCtx.isHorizontal?"horizontal":"vertical",gradientFrom:s,gradientTo:l,opacityFrom:r.opacity,opacityTo:r.opacity,stops:[0,100],inverseColors:!this.barCtx.isHorizontal}}}getStrokeWidth(e,n,i){let o=0;const r=this.w;return typeof this.barCtx.series[e][n]>"u"||this.barCtx.series[e][n]===null||r.config.chart.type==="bar"&&!this.barCtx.series[e][n]?this.barCtx.isNullValue=!0:this.barCtx.isNullValue=!1,r.config.stroke.show&&(this.barCtx.isNullValue||(o=Array.isArray(this.barCtx.strokeWidth)?this.barCtx.strokeWidth[i]:this.barCtx.strokeWidth)),o}getStackedSeriesIndices(e){const n=this.w,i=n.labelData.seriesGroups,o=n.globals.columnSeries?new Set(n.globals.columnSeries.i):null,r=l=>!o||o.has(l);if(!i||i.length<2){const l=Array.from({length:e},(c,u)=>u).filter(r);return l.length?[l]:[]}const a=Array.from({length:i.length},()=>[]),s=[];for(let l=0;l-1?a[c].push(l):s.push(l)}return s.length&&a.push(s),a.filter(l=>l.length>0)}createBorderRadiusArr(e){var n;const i=this.w,o=!this.w.config.chart.stacked||i.config.plotOptions.bar.borderRadius<=0,r=e.length,a=((n=e[0])==null?void 0:n.length)|0,s=Array.from({length:r},()=>Array(a).fill(o?"top":"none"));if(o)return s;const l=i.config.plotOptions.bar.borderRadiusWhenStacked==="last",c=l?"top":"both",u=l?"bottom":"both",d=l?"none":"bottom",f=l?"none":"top";for(const h of this.getStackedSeriesIndices(r))for(let p=0;p0?g.push(v):b<0&&m.push(v)}if(g.length>0&&m.length===0)if(g.length===1)s[g[0]][p]=c;else{const v=g[0],b=g[g.length-1];for(const y of g)s[y][p]=y===v?d:y===b?"top":"none"}else if(m.length>0&&g.length===0)if(m.length===1)s[m[0]][p]=u;else{const v=Math.min(...m),b=Math.max(...m);for(const y of m)s[y][p]=y===v?f:y===b?"bottom":"none"}else if(g.length>0&&m.length>0){const v=g[g.length-1];for(const y of g)s[y][p]=y===v?"top":"none";const b=Math.max(...m);for(const y of m)s[y][p]=y===b?"bottom":"none"}}return s}barBackground({j:e,i:n,x1:i,x2:o,y1:r,y2:a,elSeries:s}){const l=this.w,c=new Be(this.barCtx.w),d=new Xn(this.barCtx.w).getActiveConfigSeriesIndex();if(this.barCtx.barOptions.colors.backgroundBarColors.length>0&&d===n){e>=this.barCtx.barOptions.colors.backgroundBarColors.length&&(e%=this.barCtx.barOptions.colors.backgroundBarColors.length);const f=this.barCtx.barOptions.colors.backgroundBarColors[e],h=c.drawRect(typeof i<"u"?i:0,typeof r<"u"?r:0,typeof o<"u"?o:l.layout.gridWidth,typeof a<"u"?a:l.layout.gridHeight,this.barCtx.barOptions.colors.backgroundBarRadius,f,this.barCtx.barOptions.colors.backgroundBarOpacity);s.add(h),h.node.classList.add("apexcharts-backgroundBar")}}getColumnPaths({barWidth:e,barXPosition:n,y1:i,y2:o,strokeWidth:r,isReversed:a,series:s,seriesGroup:l,realIndex:c,i:u,j:d,w:f}){var h,p,g;const m=new Be(this.barCtx.w);r=Array.isArray(r)?r[c]:r,r||(r=0);let v=e,b=n;(h=f.config.series[c].data[d])!=null&&h.columnWidthOffset&&(b=n-f.config.series[c].data[d].columnWidthOffset/2,v=e+f.config.series[c].data[d].columnWidthOffset);const y=r/2,w=b+y,x=b+v-y,$=(s[u][d]>=0?1:-1)*(a?-1:1);i+=.001-y*$,o+=.001+y*$;const S=m.line(x,i),_=f.config.plotOptions.bar.borderRadiusApplication==="around"||this.arrBorderRadius[c][d]==="both"?" Z":" z",P=m.move(w,i)+m.line(w,o)+m.line(x,o)+S+_;let T=P;this.arrBorderRadius[c][d]!=="none"&&(T=m.roundPathCorners(T,f.config.plotOptions.bar.borderRadius));let O=null;const M=(g=(p=this.barCtx.ctx)==null?void 0:p.morphTypeChange)==null?void 0:g.getInitialPathFor(c,d);if(M?O=M:f.globals.previousPaths.length>0&&(O=this.barCtx.getPreviousPath(c,d,T,P)),O==null&&(O=m.move(w,i)+m.line(w,i)+S+S+S+S+S+m.line(w,i)+_),f.config.chart.stacked){let I=this.barCtx;I=this.barCtx[l],I.yArrj.push(o-y*$),I.yArrjF.push(Math.abs(i-o+r*$)),I.yArrjVal.push(this.barCtx.series[u][d])}return{pathTo:T,pathFrom:O,drawnBox:{x1:w,x2:x,y1:i,y2:o}}}getFunnelTrapezoidPaths({barYPosition:e,barHeight:n,series:i,i:o,j:r,realIndex:a,strokeWidth:s,w:l}){var c,u;const d=new Be(this.barCtx.w),f=l.layout.gridWidth/2,h=I=>Math.abs(I/this.barCtx.invertedYRatio)/2,p=h(i[o][r]),g=i[o].length-1,m=r===g,v=l.config.plotOptions.funnel.lastShape==="taper"?"taper":"flat";let b;m?b=v==="taper"?0:p:b=h(i[o][r+1]);const y=s/2,w=e+y,x=e+n-y,$=f-p,S=f+p,_=f-b,P=f+b,T=d.move($,w)+d.line(S,w)+d.line(P,x)+d.line(_,x)+" Z";let O=null;const M=(u=(c=this.barCtx.ctx)==null?void 0:c.morphTypeChange)==null?void 0:u.getInitialPathFor(a,r);return M?O=M:l.globals.previousPaths.length>0&&(O=this.barCtx.getPreviousPath(a,r,T)),O==null&&(O=d.move(f,w)+d.line(f,w)+d.line(f,x)+d.line(f,x)+" Z"),{pathTo:T,pathFrom:O,x:S,x1:$,barXPosition:f}}computePyramidLayout(e){const n=this.w,i=n.layout.gridHeight,o=n.layout.gridWidth,r=e.map(u=>Math.abs(Number(u)||0)),a=r.reduce((u,d)=>u+d,0);if(a===0||i<=0)return r.map(()=>({y:0,height:0,topHalf:0,bottomHalf:0}));const s=o/2;let l=0;const c=[];for(let u=0;u0&&(x=this.barCtx.getPreviousPath(r,a,w)),x==null&&(x=d.move(f,p)+d.line(f,p)+d.line(f,g)+d.line(f,g)+" Z"),{pathTo:w,pathFrom:x,x:v,x1:m,barXPosition:f}}getBarpaths({barYPosition:e,barHeight:n,x1:i,x2:o,strokeWidth:r,isReversed:a,series:s,seriesGroup:l,realIndex:c,i:u,j:d,w:f}){var h,p,g;const m=new Be(this.barCtx.w);r=Array.isArray(r)?r[c]:r,r||(r=0);let v=e,b=n;(h=f.config.series[c].data[d])!=null&&h.barHeightOffset&&(v=e-f.config.series[c].data[d].barHeightOffset/2,b=n+f.config.series[c].data[d].barHeightOffset);const y=r/2,w=v+y,x=v+b-y,$=(s[u][d]>=0?1:-1)*(a?-1:1);i+=.001+y*$,o+=.001-y*$;const S=this.barCtx.isFunnel,_=S?(i+o)/2:i,P=m.line(i,x),T=f.config.plotOptions.bar.borderRadiusApplication==="around"||this.arrBorderRadius[c][d]==="both"?" Z":" z",O=m.move(i,w)+m.line(o,w)+m.line(o,x)+P+T;let M=O;this.arrBorderRadius[c][d]!=="none"&&(M=m.roundPathCorners(M,f.config.plotOptions.bar.borderRadius));let I=null;const k=(g=(p=this.barCtx.ctx)==null?void 0:p.morphTypeChange)==null?void 0:g.getInitialPathFor(c,d);if(k?I=k:f.globals.previousPaths.length>0&&(I=this.barCtx.getPreviousPath(c,d,M,O)),I==null){const E=S?m.line(_,x):P;I=m.move(_,w)+m.line(_,w)+E+E+E+E+E+m.line(_,w)+T}if(f.config.chart.stacked){let E=this.barCtx;E=this.barCtx[l],E.xArrj.push(o+y*$),E.xArrjF.push(Math.abs(i-o-r*$)),E.xArrjVal.push(this.barCtx.series[u][d])}return{pathTo:M,pathFrom:I,drawnBox:{x1:i,x2:o,y1:w,y2:x}}}getXForValue(e,n,i=!0){let o=i?n:null;return typeof e<"u"&&e!==null&&(o=n+e/this.barCtx.invertedYRatio-(this.barCtx.isReversed?e/this.barCtx.invertedYRatio:0)*2),o}getYForValue(e,n,i,o=!0){let r=o?n:null;return typeof e<"u"&&e!==null&&(r=n-e/this.barCtx.yRatio[i]+(this.barCtx.isReversed?e/this.barCtx.yRatio[i]:0)*2),r}getGoalValues(e,n,i,o,r,a){const s=this.w,l=[],c=(u,d)=>{l.push({[e]:e==="x"?this.getXForValue(u,n,!1):this.getYForValue(u,i,a,!1),attrs:d})};if(s.seriesData.seriesGoals[o]&&s.seriesData.seriesGoals[o][r]&&Array.isArray(s.seriesData.seriesGoals[o][r])&&s.seriesData.seriesGoals[o][r].forEach(u=>{c(u.value,u)}),this.barCtx.barOptions.isDumbbell){const u=this.getDumbbellEnds(o,r);if(u.length){const d={strokeHeight:e==="x"?0:s.globals.markers.size[o],strokeWidth:e==="x"?s.globals.markers.size[o]:0,strokeDashArray:0,strokeLineCap:"round"};let f=0,h=0;for(let g=1;gu[h].value&&(h=g);const p=s.config.plotOptions.bar.dumbbell.dataLabels;u.forEach((g,m)=>{const v=vt(Ye({},d),{strokeColor:g.color});p.enabled&&(m===f||m===h)&&(v.label={text:this.getDumbbellLabelText(g.value,o,r,g.index),color:p.colorFromMarker?g.color:Array.isArray(p.style.colors)?p.style.colors[g.index]||p.style.colors[0]:p.style.colors,outward:m===f&&f!==h?-1:1}),c(g.value,v)})}}return l}getDumbbellEnds(e,n){const i=this.w,o=[],r=i.dumbbellData;if(r&&r.form==="series"){const l=r.values[n]||[];for(let c=0;cArray.isArray(a[e])?a[e][l]:a[e];return[{value:i.rangeData.seriesRangeStart[e][n],color:s(0),index:0},{value:i.rangeData.seriesRangeEnd[e][n],color:s(1),index:1}]}getDumbbellLabelText(e,n,i,o){const r=this.w,a=r.config.plotOptions.bar.dumbbell.dataLabels;if(typeof a.formatter=="function")return a.formatter(e,{seriesIndex:n,dataPointIndex:i,endpointIndex:o,w:r});const s=this.barCtx.isHorizontal?r.formatters.xLabelFormatter:r.formatters.yLabelFormatters[0];return typeof s=="function"?s(e,i,r):String(e)}drawGoalLine({barXPosition:e,barYPosition:n,goalX:i,goalY:o,barWidth:r,barHeight:a}){if(!(Array.isArray(i)&&i.length>0||Array.isArray(o)&&o.length>0))return null;const l=new Be(this.barCtx.w),c=l.group({class:"apexcharts-bar-goals-groups"});c.node.classList.add("apexcharts-element-hidden"),this.barCtx.w.globals.delayedElements.push({el:c.node}),c.attr("clip-path",`url(#gridRectMarkerMask${this.barCtx.w.globals.cuid})`);let u=null;return this.barCtx.isHorizontal?Array.isArray(i)&&i.forEach(d=>{if(d.x>=-1&&d.x<=l.w.layout.gridWidth+1){const f=typeof d.attrs.strokeHeight<"u"?d.attrs.strokeHeight:a/2,h=n+f+a/2;u=l.drawLine(d.x,h-f*2,d.x,h,d.attrs.strokeColor?d.attrs.strokeColor:void 0,d.attrs.strokeDashArray,d.attrs.strokeWidth?d.attrs.strokeWidth:2,d.attrs.strokeLineCap),c.add(u),d.attrs.label&&c.add(this.drawDumbbellLabel(d.attrs,{x:d.x,y:h-f,horizontal:!0,markerSize:d.attrs.strokeWidth||0}))}}):Array.isArray(o)&&o.forEach(d=>{if(d.y>=-1&&d.y<=l.w.layout.gridHeight+1){const f=typeof d.attrs.strokeWidth<"u"?d.attrs.strokeWidth:r/2,h=e+f+r/2;u=l.drawLine(h-f*2,d.y,h,d.y,d.attrs.strokeColor?d.attrs.strokeColor:void 0,d.attrs.strokeDashArray,d.attrs.strokeHeight?d.attrs.strokeHeight:2,d.attrs.strokeLineCap),c.add(u),d.attrs.label&&c.add(this.drawDumbbellLabel(d.attrs,{x:h-f,y:d.y,horizontal:!1,markerSize:d.attrs.strokeHeight||0}))}}),c}drawDumbbellLabel(e,n){const i=this.w,o=new Be(i),r=i.config.plotOptions.bar.dumbbell.dataLabels,a=n.markerSize/2+r.offset,s=e.label.outward;return o.drawText({x:n.x+(n.horizontal?a*s:0),y:n.y-(n.horizontal?0:a*s),text:e.label.text,textAnchor:n.horizontal?s<0?"end":"start":"middle",dominantBaseline:n.horizontal?"central":s<0?"hanging":"auto",foreColor:e.label.color,fontSize:r.style.fontSize,fontFamily:r.style.fontFamily,fontWeight:r.style.fontWeight,cssClass:"apexcharts-dumbbell-label"})}drawBarShadow({prevPaths:e,currPaths:n,color:i,realIndex:o,j:r}){const a=this.w,{x:s,x1:l,barYPosition:c}=e,{x:u,x1:d,barYPosition:f}=n,h=c+n.barHeight,p=new Be(this.barCtx.w),g=new Ee,m=p.move(l,h)+p.line(s,h)+p.line(u,f)+p.line(d,f)+p.line(l,h)+(a.config.plotOptions.bar.borderRadiusApplication==="around"||this.arrBorderRadius[o][r]==="both"?" Z":" z");return p.drawPath({d:m,fill:g.shadeColor(.5,Ee.rgb2hex(i)),stroke:"none",strokeWidth:0,fillOpacity:1,classes:"apexcharts-bar-shadow apexcharts-decoration-element"})}getZeroValueEncounters({i:e,j:n}){var i;const o=this.w;let r=0,a=0;return(o.config.plotOptions.bar.horizontal?o.seriesData.series.map((l,c)=>c):((i=o.globals.columnSeries)==null?void 0:i.i.map(l=>l))||[]).forEach(l=>{const c=o.globals.seriesPercent[l][n];c&&r++,li.indexOf(n.seriesData.seriesNames[e])>-1)}getGroupIndex(e){const n=this.w,i=n.labelData.seriesGroups.findIndex(a=>a.indexOf(n.seriesData.seriesNames[e])>-1),o=this.barCtx.columnGroupIndices;let r=o.indexOf(i);return r<0&&(o.push(i),r=o.length-1),{groupIndex:i,columnGroupIndex:r}}};class Bn{constructor(e,n,i){this.ctx=n,this.w=e,this.barOptions=e.config.plotOptions.bar,this.isHorizontal=this.barOptions.horizontal,this.strokeWidth=e.config.stroke.width,this.isNullValue=!1,this.isRangeBar=e.rangeData.seriesRange.length&&this.isHorizontal,this.isVerticalGroupedRangeBar=!e.globals.isBarHorizontal&&e.rangeData.seriesRange.length&&e.config.plotOptions.bar.rangeBarGroupRows,this.isFunnel=this.barOptions.isFunnel,this.isPyramid=this.barOptions.isPyramid,this.pyramidLayout=null,this.xyRatios=i,this.xRatio=0,this.yRatio=[],this.invertedXRatio=0,this.invertedYRatio=0,this.baseLineY=[],this.baseLineInvertedY=0,this.xyRatios!==null&&(this.xRatio=i.xRatio,this.yRatio=i.yRatio,this.invertedXRatio=i.invertedXRatio,this.invertedYRatio=i.invertedYRatio,this.baseLineY=i.baseLineY,this.baseLineInvertedY=i.baseLineInvertedY),this.yaxisIndex=0,this.translationsIndex=0,this.seriesLen=0,this.pathArr=[],this._prevKeyed=null,this._ltCache=null,this._layoutShiftCache=null,this._pathToInterp=null,this.series=[],this.elSeries=null,this.visibleI=0,this.isReversed=!1;const o=new Xn(this.w);this.lastActiveBarSerieIndex=o.getActiveConfigSeriesIndex("desc",["bar","column"]),this.lastActiveBarSerieIndexByGroup=o.getActiveConfigSeriesIndexByGroup(["bar","column"]),this.columnGroupIndices=[];const r=o.getBarSeriesIndices(),a=new No(this.w);this.stackedSeriesTotals=a.getStackedSeriesTotals(this.w.config.series.map((s,l)=>r.indexOf(l)===-1?l:-1).filter(s=>s!==-1)),this.barHelpers=new qSe(this)}draw(e,n){var i,o,r;const a=this.w,s=new Be(this.w),l=new No(this.w);e=l.getLogSeries(e),this.series=e,this.yRatio=l.getLogYRatios(this.yRatio),this.barHelpers.initVariables(e);const c=s.group({class:"apexcharts-bar-series apexcharts-plot-series"});a.config.dataLabels.enabled&&this.totalItems>this.barOptions.dataLabels.maxItems&&console.warn("WARNING: DataLabels are enabled but there are too many to display. This may cause performance issue when rendering - ApexCharts");for(let u=0,d=0;u0&&(this.visibleI=this.visibleI+1),this.yRatio.length>1&&(this.yaxisIndex=a.globals.seriesYAxisReverseMap[m],this.translationsIndex=m);const y=this.translationsIndex;this.isReversed=a.config.yaxis[this.yaxisIndex]&&a.config.yaxis[this.yaxisIndex].reversed,this.isPyramid&&(this.pyramidLayout=this.barHelpers.computePyramidLayout(e[u]));const w=this.barHelpers.initialPositions(m),{y:x,yDivision:$,zeroW:S,x:_,xDivision:P,zeroH:T}=w;let O=w.barHeight,M=w.barWidth;h=x,f=_,this.isHorizontal||g.push(f+(M??0)/2);const I=s.group({class:"apexcharts-datalabels","data:realIndex":m});a.globals.delayedElements.push({el:I.node,holdUntilComplete:!((i=a.config.dataLabels.animate)!=null&&i.enabled)&&this.isLengthTransition(m)}),I.node.classList.add("apexcharts-element-hidden");const k=s.group({class:"apexcharts-bar-goals-markers"}),E=s.group({class:"apexcharts-bar-shadows"});a.globals.delayedElements.push({el:E.node}),E.node.classList.add("apexcharts-element-hidden");for(let R=0;R0){const W=this.barHelpers.drawBarShadow({color:typeof B.color=="string"&&((r=B.color)==null?void 0:r.indexOf("url"))===-1?B.color:Ee.hexToRgba(a.globals.colors[u]),prevPaths:this.pathArr[this.pathArr.length-1],currPaths:F,realIndex:m,j:R});E.add(W),a.config.chart.dropShadow.enabled&&new uo(this.w).dropShadow(W,a.config.chart.dropShadow,m)}this.pathArr.push(F);const z=this.barHelpers.drawGoalLine({barXPosition:F.barXPosition,barYPosition:F.barYPosition,goalX:F.goalX,goalY:F.goalY,barHeight:O,barWidth:M});z&&k.add(z),h=F.y,f=F.x,R>0&&g.push(f+(M??0)/2),p.push(h),this.renderSeries(vt(Ye({realIndex:m,pathFill:B.color},B.useRangeColor?{lineFill:B.color}:{}),{j:R,i:u,columnGroupIndex:v,pathFrom:F.pathFrom,pathTo:F.pathTo,strokeWidth:D,elSeries:b,x:f,y:h,series:e,barHeight:Math.abs(F.barHeight?F.barHeight:O),barWidth:Math.abs(F.barWidth?F.barWidth:M),elDataLabelsWrap:I,elGoalsMarkers:k,elBarShadows:E,visibleSeries:this.visibleI,type:"bar"}))}if(a.globals.seriesXvalues[m]=g,a.globals.seriesYvalues[m]=p,a.globals.previousPaths.length>0){const R=[];for(let D=0;D0&&(K=X[ee],K||(K=""),typeof K=="function")?K({value:D.seriesData.series[ee][o],dataPointIndex:o,w:D}):K};const G=typeof D.globals.stroke.colors[e]=="function"?Q(e):D.globals.stroke.colors[e];i=this.barOptions.distributed?D.globals.stroke.colors[o]:G}const W=D.config.chart.animations,j=W.animateGradually,U=j&&j.enabled!==!1&&!(D.globals.dataChanged&&this.isLayoutShift(e));let V=0,q=0;if(U){const Q=D.globals.dataPoints||1,G=j.delay||0,ee=Math.min(G,W.speed*.5/Math.max(1,Q));q=c$({style:"sequential",index:o,baseDelay:ee}),D.config.chart.stacked&&!D.globals.dataChanged&&(q+=r*ee*.5),V=q/(G||1)}const J=new USe(this).handleBarDataLabels({x:d,y:f,y1:h,y2:p,i:r,j:o,series:g,realIndex:e,columnGroupIndex:a,barHeight:m,barWidth:v,barXPosition:b,barYPosition:y,visibleSeries:S});if(q>0){const Q=D.config.dataLabels;if((T=Q.animate)!=null&&T.enabled||(O=Q.countUp)!=null&&O.enabled){const G=String(Math.round(q));(I=(M=J.dataLabels)==null?void 0:M.node)==null||I.setAttribute("data:dlDelay",G),(E=(k=J.totalDataLabels)==null?void 0:k.node)==null||E.setAttribute("data:dlDelay",G)}}if(D.globals.isBarHorizontal||(J.dataLabelsPos.dataLabelsX+Math.max(v,D.globals.barPadForNumericAxis)<0||J.dataLabelsPos.dataLabelsX-Math.max(v,D.globals.barPadForNumericAxis)>D.layout.gridWidth)&&(B=!0),D.config.series[r].data[o]&&D.config.series[r].data[o].strokeColor&&(i=D.config.series[r].data[o].strokeColor),this.isNullValue&&D.globals.collapsingSeriesIndices.indexOf(e)===-1&&(n="none"),!B){const Q=((R=this.ctx.morphTypeChange)==null?void 0:R.isActive())===!0,G=Q?this.ctx.morphTypeChange.getSpeed():D.config.chart.animations.dynamicAnimation.speed,ee=Q&&this.ctx.morphTypeChange.claimsTargetMark(e,o);ee&&(s=l,V=0);const X=N.renderPaths({i:r,j:o,realIndex:e,pathFrom:s,pathTo:l,stroke:i,strokeWidth:c,strokeLineCap:D.config.stroke.lineCap,fill:n,pathToInterp:z,animationDelay:V,initialSpeed:D.config.chart.animations.speed,dataChangeSpeed:G,className:`apexcharts-${_}-area${P?` ${P}`:""}`,chartType:_,bindEventsOnPaths:!1});X.attr("clip-path",`url(#gridRectBarMask${D.globals.cuid})`),ee&&(X.node.setAttribute("opacity","0"),X.node.setAttribute("data-piece-hidden","1"));const K=D.config.forecastDataPoints;K.count>0&&o>=D.globals.dataPoints-K.count&&(X.node.setAttribute("stroke-dasharray",K.dashArray),X.node.setAttribute("stroke-width",K.strokeWidth),X.node.setAttribute("fill-opacity",K.fillOpacity)),typeof h<"u"&&typeof p<"u"&&(X.attr("data-range-y1",h),X.attr("data-range-y2",p)),new uo(this.w).setSelectionFilter(X,e,o),u.add(X),X.attr({cy:J.dataLabelsPos.bcy,cx:J.dataLabelsPos.bcx,j:o,val:D.seriesData.series[r][o],barHeight:m,barWidth:v,"data:pathKey":Or(D,e,o)}),N.kind==="canvas"&&(D.globals.barCanvasCoords||(D.globals.barCanvasCoords={}),D.globals.barCanvasCoords[e]||(D.globals.barCanvasCoords[e]={}),D.globals.barCanvasCoords[e][o]={cx:J.dataLabelsPos.bcx,cy:J.dataLabelsPos.bcy,barWidth:v}),J.dataLabels!==null&&w.add(J.dataLabels),J.totalDataLabels&&w.add(J.totalDataLabels),u.add(w),x&&u.add(x),$&&u.add($)}return u}drawBarPaths({indexes:e,barHeight:n,strokeWidth:i,zeroW:o,x:r,y:a,yDivision:s,elSeries:l}){const c=this.w,u=e.i,d=e.j;let f;if(c.axisFlags.isXNumeric)a=(c.seriesData.seriesX[u][d]-c.globals.minX)/this.invertedXRatio-n,f=a+n*this.visibleI;else if(c.config.plotOptions.bar.hideZeroBarsWhenGrouped){const{nonZeroColumns:v,zeroEncounters:b}=this.barHelpers.getZeroValueEncounters({i:u,j:d});v>0&&(n=this.seriesLen*n/v),f=a+n*this.visibleI,f-=n*b}else f=a+n*this.visibleI;const h=this.isFunnel&&c.config.plotOptions.funnel.shape==="trapezoid",p=this.isPyramid&&this.pyramidLayout?this.pyramidLayout[d]:null,g=!!p;if(p)f=p.y,n=p.height;else if(this.isFunnel&&!h){const v=o??0;o=v-(this.barHelpers.getXForValue(this.series[u][d],v)-v)/2}r=this.barHelpers.getXForValue(this.series[u][d],o??0);let m;return p?m=this.barHelpers.getPyramidPaths({barYPosition:f,barHeight:n,topHalf:p.topHalf,bottomHalf:p.bottomHalf,realIndex:e.realIndex,j:d,strokeWidth:i,w:c}):h?m=this.barHelpers.getFunnelTrapezoidPaths({barYPosition:f,barHeight:n,series:this.series,i:u,j:d,realIndex:e.realIndex,strokeWidth:i,w:c}):m=this.barHelpers.getBarpaths({barYPosition:f,barHeight:n,x1:o,x2:r,strokeWidth:i,isReversed:this.isReversed,series:this.series,realIndex:e.realIndex,i:u,j:d,w:c}),(h||g)&&(o=m.x1,r=m.x),!c.axisFlags.isXNumeric&&!g&&(a=a+s),g&&(a=f),this.barHelpers.barBackground({j:d,i:u,y1:f-n*this.visibleI,y2:n*this.seriesLen,elSeries:l}),{pathTo:m.pathTo,pathFrom:m.pathFrom,x1:o,x:r,y:a,goalX:this.barHelpers.getGoalValues("x",o,null,e.realIndex,d,0),barYPosition:f,barHeight:n}}drawColumnPaths({indexes:e,x:n,y:i,xDivision:o,barWidth:r,zeroH:a,strokeWidth:s,elSeries:l}){const c=this.w,u=e.realIndex,d=e.translationsIndex,f=e.i,h=e.j,p=e.bc;let g;if(c.axisFlags.isXNumeric){const v=this.getBarXForNumericXAxis({x:n,j:h,realIndex:u,barWidth:r});n=v.x,g=v.barXPosition}else if(c.config.plotOptions.bar.hideZeroBarsWhenGrouped){const{nonZeroColumns:v,zeroEncounters:b}=this.barHelpers.getZeroValueEncounters({i:f,j:h});v>0&&(r=this.seriesLen*r/v),g=n+r*this.visibleI,g-=r*b}else g=n+r*this.visibleI;i=this.barHelpers.getYForValue(this.series[f][h],a,d);const m=this.barHelpers.getColumnPaths({barXPosition:g,barWidth:r,y1:a,y2:i,strokeWidth:s,isReversed:this.isReversed,series:this.series,realIndex:u,i:f,j:h,w:c});return c.axisFlags.isXNumeric||(n=n+o),this.barHelpers.barBackground({bc:p,j:h,i:f,x1:g-s/2-r*this.visibleI,x2:r*this.seriesLen+s/2,elSeries:l}),{pathTo:m.pathTo,pathFrom:m.pathFrom,x:n,y:i,goalY:this.barHelpers.getGoalValues("y",null,a,u,h,d),barXPosition:g,barWidth:r}}getBarXForNumericXAxis({x:e,barWidth:n,realIndex:i,j:o}){const r=this.w;let a=i;return r.seriesData.seriesX[i].length||(a=r.globals.maxValsInArrayIndex),Ee.isNumber(r.seriesData.seriesX[a][o])&&(e=so.dataXToPx(r,r.seriesData.seriesX[a][o])-n*this.seriesLen/2),{barXPosition:e+(FN(r)?0:n*this.visibleI),x:e}}_prevRecord(e){const n=this.w;let i=null;for(let o=0;o0&&parseInt(r.realIndex,10)===parseInt(String(e),10)&&(i=r)}return i}_prevKeyedPaths(e){if(this._prevKeyed||(this._prevKeyed={}),this._prevKeyed[e]!==void 0)return this._prevKeyed[e];const n=this._prevRecord(e);let i=null;if(n&&n.paths.every(o=>o.key!=null)){const o=new Map;n.paths.forEach(r=>{o.set(r.key,r)}),i=o}return this._prevKeyed[e]=i,i}isLengthTransition(e){var n,i;if(this._ltCache||(this._ltCache={}),this._ltCache[e]!==void 0)return this._ltCache[e];const o=this.w;let r=!1;if(td(o)&&o.globals.previousPaths.length>0){const a=this._prevRecord(e),s=(i=(n=o.seriesData.series[e])==null?void 0:n.length)!=null?i:0;if(!a)r=s>0;else if(a.paths.length!==s)r=!0;else{const l=this._prevKeyedPaths(e);if(l){for(let c=0;c{const m=Bn.pathBox(g);return m?Math.min(m.maxX-m.minX,m.maxY-m.minY):0},p=u1:h(i)>1;if(us[0]),a=n.map(s=>s[1]);return{minX:Math.min(...r),maxX:Math.max(...r),minY:Math.min(...a),maxY:Math.max(...a),start:n[0],vertical:Math.abs(n[1][0]-n[0][0])Math.abs(g-m)<=Math.abs(g-v)?[m,v]:[v,m];let u,d,f,h;l?(u=Math.abs(s[0]-i)<=Math.abs(s[0]-o)?i:o,d=u===i?o:i,[f,h]=c(s[1],r,a)):(f=Math.abs(s[1]-r)<=Math.abs(s[1]-a)?r:a,h=f===r?a:r,[u,d]=c(s[0],i,o));const p=e.trim().endsWith("Z")?" Z":" z";return l?`M ${u} ${f} L ${u} ${h} L ${d} ${h} L ${d} ${f}${p}`:`M ${u} ${f} L ${d} ${f} L ${d} ${h} L ${u} ${h}${p}`}getPreviousFlip(e,n){const i=this.w,o=this._prevRecord(e);if(!o)return null;const r=this._prevKeyedPaths(e),a=r?r.get(Or(i,e,n)):o.paths[n];return a?!!a.flip:null}static pathCommandCount(e){if(!e)return 0;const n=e.match(/[A-Za-z]/g);return n?n.length:0}}class ZSe extends Bn{draw(e,n){const i=this.w;this.graphics=new Be(this.w),this.bar=new Bn(this.w,this.ctx,this.xyRatios);const o=new No(this.w);e=o.getLogSeries(e),this.yRatio=o.getLogYRatios(this.yRatio),this.barHelpers.initVariables(e),i.config.chart.stackType==="100%"&&(e=i.globals.comboCharts?n.map(d=>i.globals.seriesPercent[d]):i.globals.seriesPercent.slice()),this.series=e,this.barHelpers.initializeStackedPrevVars(this);const r=this.graphics.group({class:"apexcharts-bar-series apexcharts-plot-series"});let a=0,s=0;const l=i.config.chart.animations,c=l.enabled&&l.dynamicAnimation.enabled&&i.globals.previousPaths.length>0;let u=!1;for(let d=0,f=0;d1&&(this.yaxisIndex=i.globals.seriesYAxisReverseMap[h][0],b=h),this.isReversed=i.config.yaxis[this.yaxisIndex]&&i.config.yaxis[this.yaxisIndex].reversed;let y=this.graphics.group({class:"apexcharts-series",seriesName:Ee.escapeString(i.seriesData.seriesNames[h]),rel:d+1,"data:realIndex":h});Xn.addCollapsedClassToSeries(this.w,y,h);const w=this.graphics.group({class:"apexcharts-datalabels","data:realIndex":h});Xn.addCollapsedClassToSeries(this.w,w,h),(i.globals.collapsingSeriesIndices||[]).indexOf(h)>-1&&w.node.style.setProperty("--apexcharts-dl-exit",`${i.config.chart.animations.dynamicAnimation.speed}ms`);const x=this.graphics.group({class:"apexcharts-bar-goals-markers"}),$=this.initialPositions(a,s,void 0,void 0,void 0,void 0,b),{xDivision:S,yDivision:_,zeroH:P,zeroW:T}=$;let O=$.barHeight,M=$.barWidth;s=$.y,a=$.x,i.globals.barHeight=O,i.globals.barWidth=M,this.barHelpers.initializeStackedXYVars(this),this.groupCtx.prevY.length===1&&this.groupCtx.prevY[0].every(I=>isNaN(I))&&(this.groupCtx.prevY[0]=this.groupCtx.prevY[0].map(()=>P),this.groupCtx.prevYF[0]=this.groupCtx.prevYF[0].map(()=>0));for(let I=0;I0||this.barHelpers.arrBorderRadius[h][I]==="top"&&i.seriesData.series[h][I]<0,W=c&&!z&&this.getPreviousFlip(h,I);(z||W)&&(N=B),W&&(N+=" apexcharts-flip-held",u=!0),y=this.renderSeries(vt(Ye({realIndex:h,pathFill:F.color},F.useRangeColor?{lineFill:F.color}:{}),{j:I,i:d,columnGroupIndex:g,pathFrom:R.pathFrom,pathTo:R.pathTo,strokeWidth:k,elSeries:y,x:a,y:s,series:e,barHeight:O,barWidth:M,elDataLabelsWrap:w,elGoalsMarkers:x,type:"bar",visibleSeries:g,classes:N}))}i.globals.seriesXvalues[h]=m,i.globals.seriesYvalues[h]=v,this.groupCtx.prevY.push(this.groupCtx.yArrj),this.groupCtx.prevYF.push(this.groupCtx.yArrjF),this.groupCtx.prevYVal.push(this.groupCtx.yArrjVal),this.groupCtx.prevX.push(this.groupCtx.xArrj),this.groupCtx.prevXF.push(this.groupCtx.xArrjF),this.groupCtx.prevXVal.push(this.groupCtx.xArrjVal),r.add(y)}return u&&this.settleHeldMirrors(),r}settleHeldMirrors(){const e=this.w;if(!Ot.isBrowser())return;const n=e.config.chart.animations,i=(n.dynamicAnimation.speed||0)+(n.speed||0)+100;setTimeout(()=>{e.globals.isDestroyed||!Ee.elementExists(e.dom.baseEl)||e.dom.baseEl.querySelectorAll(".apexcharts-flip-held").forEach(o=>{o.classList.remove("apexcharts-flip-held","apexcharts-flip-y","apexcharts-flip-x")})},i)}initialPositions(e,n,i,o,r,a,s){const l=this.w;let c,u;if(this.isHorizontal){o=l.layout.gridHeight/l.globals.dataPoints;const f=l.config.plotOptions.bar.barHeight;String(f).indexOf("%")===-1?c=parseInt(f,10):c=o*parseInt(f,10)/100,a=l.globals.padHorizontal+(this.isReversed?l.layout.gridWidth-this.baseLineInvertedY:this.baseLineInvertedY),n=(o-c)/2}else{i=l.layout.gridWidth/l.globals.dataPoints,u=i;const f=l.config.plotOptions.bar.columnWidth,h=l.axisFlags.isXNumeric?this.barHelpers.barSlotXSpan():0;h>0?(i=h/this.xRatio,u=i*parseInt(this.barOptions.columnWidth,10)/100):u*=parseInt(f,10)/100,String(f).indexOf("%")===-1&&(u=parseInt(f,10)),this.isReversed?r=this.baseLineY[s]:r=l.layout.gridHeight-this.baseLineY[s],e=l.globals.padHorizontal+(i-u)/2}const d=l.globals.barGroups.length||1;return{x:e,y:n,yDivision:o,xDivision:i,barHeight:(c??0)/d,barWidth:(u??0)/d,zeroH:r,zeroW:a}}drawStackedBarPaths({indexes:e,barHeight:n,strokeWidth:i,zeroW:o,x:r,y:a,columnGroupIndex:s,seriesGroup:l,yDivision:c,elSeries:u}){var d,f,h,p,g;const m=this.w,v=a+s*n;let b;const y=e.i,w=e.j,x=e.realIndex,$=e.translationsIndex;let S=0;for(let T=0;T0){let T=o;this.groupCtx.prevXVal[_-1][w]<0?T=((d=this.series[y])==null?void 0:d[w])>=0?this.groupCtx.prevX[_-1][w]+S-(this.isReversed?S:0)*2:this.groupCtx.prevX[_-1][w]:this.groupCtx.prevXVal[_-1][w]>=0&&(T=((f=this.series[y])==null?void 0:f[w])>=0?this.groupCtx.prevX[_-1][w]:this.groupCtx.prevX[_-1][w]-S+(this.isReversed?S:0)*2),b=T}else b=o;((h=this.series[y])==null?void 0:h[w])===null?r=b:r=b+((p=this.series[y])==null?void 0:p[w])/this.invertedYRatio-(this.isReversed?((g=this.series[y])==null?void 0:g[w])/this.invertedYRatio:0)*2;const P=this.barHelpers.getBarpaths({barYPosition:v,barHeight:n,x1:b,x2:r,strokeWidth:i,isReversed:this.isReversed,series:this.series,realIndex:e.realIndex,seriesGroup:l,i:y,j:w,w:m});return this.barHelpers.barBackground({j:w,i:y,y1:v,y2:n,elSeries:u}),a=a+c,{pathTo:P.pathTo,pathFrom:P.pathFrom,goalX:this.barHelpers.getGoalValues("x",o,null,x,w,$),barXPosition:b,barYPosition:v,x:r,y:a}}drawStackedColumnPaths({indexes:e,x:n,y:i,xDivision:o,barWidth:r,zeroH:a,columnGroupIndex:s,seriesGroup:l,elSeries:c}){var u,d,f,h,p,g,m,v,b;const y=this.w,w=e.i,x=e.j,$=e.bc,S=e.realIndex,_=e.translationsIndex;if(y.axisFlags.isXNumeric){let k=y.seriesData.seriesX[S][x];k||(k=0),n=(k-y.globals.minX)/this.xRatio-r/2*y.globals.barGroups.length}const P=n+s*r;let T,O=0;for(let k=0;k0&&!y.axisFlags.isXNumeric||M>0&&y.axisFlags.isXNumeric&&y.seriesData.seriesX[S-1][x]===y.seriesData.seriesX[S][x]){let k,E;const R=Math.min(this.yRatio.length+1,S+1);if(this.groupCtx.prevY[M-1]!==void 0&&this.groupCtx.prevY[M-1].length){for(let D=1;D=0?E-O+(this.isReversed?O:0)*2:E;break}else if(((h=this.groupCtx.prevYVal[M-D])==null?void 0:h[x])>=0){k=((p=this.series[w])==null?void 0:p[x])>=0?E:E+O-(this.isReversed?O:0)*2;break}typeof k>"u"&&(k=y.layout.gridHeight),(g=this.groupCtx.prevYF[0])!=null&&g.every(D=>D===0)&&this.groupCtx.prevYF.slice(1,M).every(D=>D.every(F=>isNaN(F)))?T=a:T=k}else T=a;(m=this.series[w])!=null&&m[x]?i=T-((v=this.series[w])==null?void 0:v[x])/this.yRatio[_]+(this.isReversed?((b=this.series[w])==null?void 0:b[x])/this.yRatio[_]:0)*2:i=T;const I=this.barHelpers.getColumnPaths({barXPosition:P,barWidth:r,y1:T,y2:i,yRatio:this.yRatio[_],strokeWidth:this.strokeWidth,isReversed:this.isReversed,series:this.series,seriesGroup:l,realIndex:e.realIndex,i:w,j:x,w:y});return this.barHelpers.barBackground({bc:$,j:x,i:w,x1:P,x2:r,elSeries:c}),{pathTo:I.pathTo,pathFrom:I.pathFrom,goalY:this.barHelpers.getGoalValues("y",null,a,S,x,0),barXPosition:P,x:y.axisFlags.isXNumeric?n:n+o,y:i}}}function NN({w:t,points:e,seedA:n,seedB:i,center:o,halfExtent:r,alongFn:a,isHorizontal:s,options:l,clampAt:c,sideSign:u}){const d=l;if(!d||d.show===!1)return[];if(!e||!e.length)return[];const f=d.maxPoints||3e3,h=e.length>f?Math.ceil(e.length/f):1,p=d.size!=null?d.size:2.5,g=d.jitter!=null?d.jitter:.5,m=r*g,v=d.constrainToViolin!==!1&&typeof c=="function",b=d.shape==="square",y=d.colorScale,w=y&&Array.isArray(y.colors)&&y.colors.length>0,x=w?Math.max(2,y.steps||24):1,$=w&&y.min!=null?y.min:t.globals.minY,_=(w&&y.max!=null?y.max:t.globals.maxY)-$||1,P=w?new Array(x).fill(""):[""];for(let O=0;OF&&(k=F),k<-F&&(k=-F)}u&&(k=Math.abs(k)*u);const E=s?I:o+k,R=s?o+k:I,D=b?eCe(E,R,p):QSe(E,R,p);if(w){let F=(M-$)/_;F<0&&(F=0),F>1&&(F=1),P[Math.round(F*(x-1))]+=D}else P[0]+=D}if(!w)return P[0]?[{fill:null,d:P[0]}]:[];const T=[];for(let O=0;O{const m=r?e.globals.colors[g]:e.globals.colors[a],v=o.fillColor,b=v==="series"?m:v==="series-dark"?tM(m,.45):v||tM(m,.45);p.forEach(y=>{const w=t.drawPath({d:y.d,fill:y.fill!=null?y.fill:b,stroke:d>0?u:"none",strokeWidth:d,fillOpacity:c,classes:l});w.attr("data:realIndex",a),w.attr("j",g),w.attr("clip-path",`url(#gridRectBarMask${e.globals.cuid})`),w.node.style.pointerEvents="none",h.add(w)})}),n.add(h)}function tM(t,e){const n=Ee.parseHex(t);if(!n)return t;const i=Math.max(0,1-e);return`rgb(${Math.round(n[0]*i)},${Math.round(n[1]*i)},${Math.round(n[2]*i)})`}function JSe(t,e){if(!t.length)return"#000";if(t.length===1)return t[0];const n=Math.max(0,Math.min(1,e))*(t.length-1),i=Math.floor(n),o=n-i,r=Ee.parseHex(t[i])||[0,0,0],a=Ee.parseHex(t[Math.min(i+1,t.length-1)])||r,s=(l,c)=>Math.round(l+(c-l)*o);return`rgb(${s(r[0],a[0])},${s(r[1],a[1])},${s(r[2],a[2])})`}function rw(t){let e=(t^2654435769)>>>0;return e=Math.imul(e^e>>>16,73244475),e=Math.imul(e^e>>>16,73244475),((e^e>>>16)>>>0)/4294967296}function QSe(t,e,n){return`M ${t-n} ${e} a ${n} ${n} 0 1 0 ${2*n} 0 a ${n} ${n} 0 1 0 ${-2*n} 0 `}function eCe(t,e,n){return`M ${t-n} ${e-n} h ${2*n} v ${2*n} h ${-2*n} z `}class nM extends Bn{draw(e,n,i){var o;const r=this.w,a=new Be(this.w),s=r.globals.comboCharts?n:r.config.chart.type,l=new go(this.w);this.candlestickOptions=this.w.config.plotOptions.candlestick,this.boxOptions=this.w.config.plotOptions.boxPlot,this.isHorizontal=r.config.plotOptions.bar.horizontal,this.isOHLC=this.candlestickOptions&&this.candlestickOptions.type==="ohlc",this.coreUtils=new No(this.w),e=this.coreUtils.getLogSeries(e),this.series=e,this.yRatio=this.coreUtils.getLogYRatios(this.yRatio),this.barHelpers.initVariables(e);const c=a.group({class:`apexcharts-${s}-series apexcharts-plot-series`});for(let u=0;u0&&(this.visibleI=this.visibleI+1);let b=0;this.yRatio.length>1&&(this.yaxisIndex=r.globals.seriesYAxisReverseMap[g][0],b=g);const y=this.barHelpers.initialPositions(g),{y:w,barHeight:x,yDivision:$,zeroW:S,x:_,barWidth:P,xDivision:T,zeroH:O}=y;f=w,d=_,p.push(d+(P??0)/2);const M=a.group({class:"apexcharts-datalabels","data:realIndex":g}),I=a.group({class:"apexcharts-bar-goals-markers"}),k=this.isBoxPlot?this.boxOptions.points:null,E=[],R=r.layout.gridWidth,D=P??0;for(let F=0;F0&&p.push(d+(P??0)/2),h.push(f),B.culled)continue;const W=this.barHelpers.drawGoalLine({barXPosition:B.barXPosition,barYPosition:B.barYPosition,goalX:B.goalX,goalY:B.goalY,barHeight:x,barWidth:P});if(W&&I.add(W),B.pathTo.forEach((j,U)=>{const V=!this.isBoxPlot&&this.candlestickOptions.wick.useFillColor?B.color[U]:r.globals.stroke.colors[u],q=l.fillPath({seriesNumber:g,dataPointIndex:F,color:B.color[U],value:e[u][F]});this.renderSeries({realIndex:g,pathFill:q,lineFill:V,j:F,i:u,pathFrom:B.pathFrom,pathTo:j,strokeWidth:N,elSeries:v,x:d,y:f,series:e,columnGroupIndex:m,barHeight:x,barWidth:P,elDataLabelsWrap:M,elGoalsMarkers:I,visibleSeries:this.visibleI,type:r.config.chart.type})}),k&&k.show!==!1){const j=(o=r.candleData.seriesBoxPoints[g])==null?void 0:o[F];if(j&&j.length){const U=Q=>this.coreUtils.getLogValAtSeriesIndex(Q,g);let V,q,Y;if(this.isHorizontal){const Q=this.invertedYRatio,G=x??0,ee=S??0;V=B.barYPosition+G/2,q=G/2,Y=X=>ee+U(X)/Q}else{const Q=this.yRatio[b],G=P??0,ee=O??0;V=B.barXPosition+G/2,q=G/2,Y=X=>ee-U(X)/Q}const J=NN({w:r,points:j,seedA:g,seedB:F,center:V,halfExtent:q,alongFn:Y,isHorizontal:this.isHorizontal,options:k});J.length&&E.push({groups:J,j:F})}}}k&&BN({graphics:a,w:r,elSeries:v,pointsByCat:E,options:k,distributed:r.config.plotOptions.bar.distributed,realIndex:g,wrapClass:"apexcharts-boxPlot-points-wrap",pointClass:"apexcharts-boxPlot-points"}),r.globals.seriesXvalues[g]=p,r.globals.seriesYvalues[g]=h,c.add(v)}return c}drawVerticalBoxPaths({indexes:e,x:n,xDivision:i,barWidth:o,zeroH:r,strokeWidth:a,cullBounds:s=null}){var l,c,u,d;const f=this.w,h=new Be(this.w),p=e.i,g=e.j,{colors:m}=f.config.plotOptions.candlestick,{colors:v}=this.boxOptions,b=e.realIndex,y=F=>Array.isArray(F)?F[b]:F,w=y(m.upward),x=y(m.downward),$=this.yRatio[e.translationsIndex],S=this.getOHLCValue(b,g);let _=r,P=r,T=S.o"u"||((c=this.series[p])==null?void 0:c[g])===null?(O=r,M=r):(O=r-O/$,M=r-M/$,_=r-S.h/$,P=r-S.l/$,I=r-S.m/$),s&&(k+os.hi))return{pathTo:null,pathFrom:null,x:f.axisFlags.isXNumeric?n:n+i,y:M,barXPosition:k,color:T,culled:!0};let E;if(this.isOHLC){const F=k+o/2,N=r-S.o/$,B=r-S.c/$;E=[h.move(F,_)+h.line(F,P)+h.move(F,N)+h.line(k,N)+h.move(F,B)+h.line(k+o,B)]}else this.isBoxPlot?E=[h.move(k,O)+h.line(k+o/2,O)+h.line(k+o/2,_)+h.line(k+o/4,_)+h.line(k+o-o/4,_)+h.line(k+o/2,_)+h.line(k+o/2,O)+h.line(k+o,O)+h.line(k+o,I)+h.line(k,I)+h.line(k,O+a/2),h.move(k,I)+h.line(k+o,I)+h.line(k+o,M)+h.line(k+o/2,M)+h.line(k+o/2,P)+h.line(k+o-o/4,P)+h.line(k+o/4,P)+h.line(k+o/2,P)+h.line(k+o/2,M)+h.line(k,M)+h.line(k,I)+"z"]:E=[h.move(k,M)+h.line(k+o/2,M)+h.line(k+o/2,_)+h.line(k+o/2,M)+h.line(k+o,M)+h.line(k+o,O)+h.line(k+o/2,O)+h.line(k+o/2,P)+h.line(k+o/2,O)+h.line(k,O)+h.line(k,M-a/2)];let R=null;const D=(d=(u=this.ctx)==null?void 0:u.morphTypeChange)==null?void 0:d.getInitialPathFor(b,g);return D?R=D:f.globals.previousPaths.length>0&&(R=this.getPreviousPath(b,g,E[0])),R==null&&(R=h.move(k+o/2,O)+h.move(k,O)),f.axisFlags.isXNumeric||(n=n+i),{pathTo:E,pathFrom:R,x:n,y:M,goalY:this.barHelpers.getGoalValues("y",null,r,b,g,e.translationsIndex),barXPosition:k,color:T}}drawHorizontalBoxPaths({indexes:e,y:n,yDivision:i,barHeight:o,zeroW:r,strokeWidth:a}){var s,l,c,u;const d=this.w,f=new Be(this.w),h=e.i,p=e.j,g=e.realIndex,{colors:m}=d.config.plotOptions.candlestick,{colors:v}=this.boxOptions,b=E=>Array.isArray(E)?E[g]:E,y=this.invertedYRatio,w=this.getOHLCValue(g,p);let x=w.o"u"||((l=this.series[h])==null?void 0:l[p])===null?(_=r,P=r):(_=r+_/y,P=r+P/y,$=r+w.h/y,S=r+w.l/y,T=r+w.m/y);const M=[f.move(_,O)+f.line(_,O+o/2)+f.line($,O+o/2)+f.line($,O+o/2-o/4)+f.line($,O+o/2+o/4)+f.line($,O+o/2)+f.line(_,O+o/2)+f.line(_,O+o)+f.line(T,O+o)+f.line(T,O)+f.line(_+a/2,O),f.move(T,O)+f.line(T,O+o)+f.line(P,O+o)+f.line(P,O+o/2)+f.line(S,O+o/2)+f.line(S,O+o-o/4)+f.line(S,O+o/4)+f.line(S,O+o/2)+f.line(P,O+o/2)+f.line(P,O)+f.line(T,O)+"z"];let I=null;const k=(u=(c=this.ctx)==null?void 0:c.morphTypeChange)==null?void 0:u.getInitialPathFor(g,p);return k?I=k:d.globals.previousPaths.length>0&&(I=this.getPreviousPath(g,p,M[0])),I==null&&(I=f.move(_,O+o/2)+f.move(_,O)),d.axisFlags.isXNumeric||(n=n+i),{pathTo:M,pathFrom:I,x:P,y:n,goalX:this.barHelpers.getGoalValues("x",r,null,g,p,0),barYPosition:O,color:x}}getOHLCValue(e,n){const i=this.w,o=this.coreUtils,r=d=>d[e]&&d[e][n]!=null?o.getLogValAtSeriesIndex(d[e][n],e):0,a=r(i.candleData.seriesCandleH),s=r(i.candleData.seriesCandleO),l=r(i.candleData.seriesCandleM),c=r(i.candleData.seriesCandleC),u=r(i.candleData.seriesCandleL);return{o:this.isBoxPlot?a:s,h:this.isBoxPlot?s:a,m:l,l:this.isBoxPlot?c:u,c:this.isBoxPlot?u:c}}}const tCe=t=>{const e=nCe(t),n=t.length-1,i=1e-6,o=[];let r,a,s,l;for(let c=0;c9&&(l=s*3/Math.sqrt(l),e[c]=l*r,e[c+1]=l*a));for(let c=0;c<=n;c++)l=(t[Math.min(n,c+1)][0]-t[Math.max(0,c-1)][0])/(6*(1+e[c]*e[c])),o.push([l||0,e[c]*l||0]);return o},zN=t=>{let e="";for(let n=0;n4?(e+=`C${i[0]}, ${i[1]}`,e+=`, ${i[2]}, ${i[3]}`,e+=`, ${i[4]}, ${i[5]}`):o>2&&(e+=`S${i[0]}, ${i[1]}`,e+=`, ${i[2]}, ${i[3]}`)}return e},aw={points(t){const e=tCe(t),n=t[1],i=t[0],o=[],r=e[1],a=e[0];o.push(i,[i[0]+a[0],i[1]+a[1],n[0]-r[0],n[1]-r[1],n[0],n[1]]);for(let s=2,l=e.length;s1&&i[1].length<6){const o=i[0].length;i[1]=[i[0][o-2]*2-i[0][o-4],i[0][o-1]*2-i[0][o-3]].concat(i[1])}i[0]=i[0].slice(-2)}return i}};function sw(t,e){return(e[1]-t[1])/(e[0]-t[0])}function nCe(t){const e=[];let n=t[0],i=t[1],o=e[0]=sw(n,i),r=1;for(let a=t.length-1;r0&&(this.visibleI=this.visibleI+1);let v=0;this.yRatio.length>1&&(this.yaxisIndex=r.globals.seriesYAxisReverseMap[p][0],v=p);const b=this.barHelpers.initialPositions(p),{y,barHeight:w,yDivision:x,zeroW:$,x:S,barWidth:_,xDivision:P,zeroH:T}=b;d=y,u=S,h.push(u+(_??0)/2);const O=a.group({class:"apexcharts-datalabels","data:realIndex":p});this.seriesMaxWeight=0,this.normalize==="group"&&(r.violinData.seriesViolinDensity[p]||[]).forEach(k=>{k&&k.maxWeight>this.seriesMaxWeight&&(this.seriesMaxWeight=k.maxWeight)});const M=[];for(let I=0;I0&&h.push(E.center),f.push(E.alongRepresentative);const R=this.buildPointsSubPath({realIndex:p,j:I,center:E.center,halfExtent:E.halfExtent,alongFn:E.alongFn,density:E.density,maxWeight:E.maxWeight,cloudBase:E.cloudBase,cloudMaxPx:E.cloudMaxPx,rainCenter:E.rainCenter,rainHalfPx:E.rainHalfPx});R.length&&M.push({groups:R,j:I});const D=s.fillPath({seriesNumber:this.distributed?I:p,dataPointIndex:I,color:this.distributed?r.globals.colors[I]:void 0,value:e[c][I]});this.renderSeries({realIndex:p,pathFill:D,lineFill:r.globals.stroke.colors[p],j:I,i:c,pathFrom:E.pathFrom,pathTo:E.pathTo,strokeWidth:k,elSeries:m,x:u,y:d,series:e,columnGroupIndex:g,barHeight:w,barWidth:_,elDataLabelsWrap:O,visibleSeries:this.visibleI,type:"violin"});const F=m.node.querySelector(`path.apexcharts-violin-area[j='${I}']`);if(F&&isFinite(E.alongRepresentative)&&F.setAttribute(this.isHorizontal?"cx":"cy",`${E.alongRepresentative}`),E.boxPaths){const N=(o=this.boxOptions.strokeWidth)!=null?o:1;E.boxPaths.forEach(B=>{this.renderSeries({realIndex:p,pathFill:B.filled?this.boxOptions.fillColor||D:"none",lineFill:r.globals.stroke.colors[p],j:I,i:c,pathFrom:B.pathFrom,pathTo:B.pathTo,strokeWidth:N,elSeries:m,x:u,y:d,series:e,columnGroupIndex:g,barHeight:w,barWidth:_,elDataLabelsWrap:O,visibleSeries:this.visibleI,type:"violin",classes:"apexcharts-raincloud-box"})})}}BN({graphics:a,w:r,elSeries:m,pointsByCat:M,options:this.pointsOptions,distributed:this.distributed,realIndex:p,wrapClass:"apexcharts-violin-points-wrap",pointClass:"apexcharts-violin-points"}),r.globals.seriesXvalues[p]=h,r.globals.seriesYvalues[p]=f,l.add(m)}return l}drawVerticalViolin({indexes:e,x:n,xDivision:i,barWidth:o,zeroH:r}){var a,s,l,c,u,d,f;const h=this.w,{realIndex:p,j:g,translationsIndex:m}=e,v=this.yRatio[m];h.axisFlags.isXNumeric&&(n=(h.seriesData.seriesX[p][g]-h.globals.minX)/this.xRatio-o/2);const y=n+o*this.visibleI+o/2,w=o/2,x=this.getDensity(p,g),$=this.effectiveMaxWeight(x),S=I=>r-this.logVal(I,p)/v,_=rM({halfExtent:w,cloudSign:(a=this.cloudSign)!=null?a:0,rainSign:(s=this.rainSign)!=null?s:0,boxFrac:(l=this.boxFrac)!=null?l:0,rainFrac:(c=this.rainFrac)!=null?c:0}),P=y+_.cloudBaseOff,T=this.buildBodyPath({nodes:x.nodes,center:P,halfExtent:_.cloudMaxPx,maxWeight:$,vertical:!0,alongFn:S,collapsed:!1,sideSign:this.cloudSign});let O=null;const M=(d=(u=this.ctx)==null?void 0:u.morphTypeChange)==null?void 0:d.getInitialPathFor(p,g);return M?O=M:h.globals.previousPaths.length>0&&(O=this.getPreviousPath(p,g,T)),O==null&&(O=this.buildBodyPath({nodes:x.nodes,center:P,halfExtent:_.cloudMaxPx,maxWeight:$,vertical:!0,alongFn:S,collapsed:!0,sideSign:this.cloudSign})),h.axisFlags.isXNumeric||(n=n+i),{pathTo:T,pathFrom:O,x:n,y:r,center:y,halfExtent:w,alongFn:S,density:x,maxWeight:$,cloudBase:P,cloudMaxPx:_.cloudMaxPx,rainCenter:y+_.rainCenterOff,rainHalfPx:_.rainHalfPx,boxPaths:this.buildBoxSubPaths({realIndex:p,j:g,boxCenter:y+_.boxCenterOff,boxHalfPx:_.boxHalfPx,alongFn:S,vertical:!0}),alongRepresentative:S((f=this.series[e.i][g])!=null?f:0)}}drawHorizontalViolin({indexes:e,y:n,yDivision:i,barHeight:o,zeroW:r}){var a,s,l,c,u,d,f;const h=this.w,{realIndex:p,j:g}=e,m=this.invertedYRatio;h.axisFlags.isXNumeric&&(n=(h.seriesData.seriesX[p][g]-h.globals.minX)/this.invertedXRatio-o/2);const b=n+o*this.visibleI+o/2,y=o/2,w=this.getDensity(p,g),x=this.effectiveMaxWeight(w),$=M=>r+this.logVal(M,p)/m,S=rM({halfExtent:y,cloudSign:(a=this.cloudSign)!=null?a:0,rainSign:(s=this.rainSign)!=null?s:0,boxFrac:(l=this.boxFrac)!=null?l:0,rainFrac:(c=this.rainFrac)!=null?c:0}),_=b+S.cloudBaseOff,P=this.buildBodyPath({nodes:w.nodes,center:_,halfExtent:S.cloudMaxPx,maxWeight:x,vertical:!1,alongFn:$,collapsed:!1,sideSign:this.cloudSign});let T=null;const O=(d=(u=this.ctx)==null?void 0:u.morphTypeChange)==null?void 0:d.getInitialPathFor(p,g);return O?T=O:h.globals.previousPaths.length>0&&(T=this.getPreviousPath(p,g,P)),T==null&&(T=this.buildBodyPath({nodes:w.nodes,center:_,halfExtent:S.cloudMaxPx,maxWeight:x,vertical:!1,alongFn:$,collapsed:!0,sideSign:this.cloudSign})),h.axisFlags.isXNumeric||(n=n+i),{pathTo:P,pathFrom:T,x:r,y:n,center:b,halfExtent:y,alongFn:$,maxWeight:x,density:w,cloudBase:_,cloudMaxPx:S.cloudMaxPx,rainCenter:b+S.rainCenterOff,rainHalfPx:S.rainHalfPx,boxPaths:this.buildBoxSubPaths({realIndex:p,j:g,boxCenter:b+S.boxCenterOff,boxHalfPx:S.boxHalfPx,alongFn:$,vertical:!1}),alongRepresentative:$((f=this.series[e.i][g])!=null?f:0)}}getDensity(e,n){var i;const r=(i=this.w.violinData.seriesViolinDensity[e])==null?void 0:i[n];if(!r||!r.values.length)return{nodes:[],maxWeight:0};const a=r.values.map((c,u)=>u);a.sort((c,u)=>r.values[c]-r.values[u]);const s=[];let l=null;for(const c of a){const u=r.values[c];l!==null&&u===l||(s.push({v:u,w:r.weights[c]}),l=u)}return{nodes:s,maxWeight:r.maxWeight}}effectiveMaxWeight(e){return this.normalize==="group"&&this.seriesMaxWeight>0?this.seriesMaxWeight:e.maxWeight}buildBodyPath({nodes:e,center:n,halfExtent:i,maxWeight:o,vertical:r,alongFn:a,collapsed:s,sideSign:l=0}){const c=new Be(this.w);if(e.length===0){const h=a(0);return r?c.move(n,h)+c.line(n,h):c.move(h,n)+c.line(h,n)}const u=h=>{if(s||o<=0)return 0;const p=h/o*i*this.bandwidthScale;return Math.min(i,Math.max(0,p))},d=[],f=[];for(let h=0;hr(x)),v=(x,$)=>{const S=new Be(this.w),_=(I,k)=>a?[I,k]:[k,I],P=I=>I.map(([k,E],R)=>R===0?S.move(k,E):S.line(k,E)).join(""),T=i,O=P([_(T,f),_(T,h)])+P([_(T,g),_(T,m)])+P([_(T-x,f),_(T+x,f)])+P([_(T-x,m),_(T+x,m)]),M=P([_(T-$,h),_(T+$,h),_(T+$,g),_(T-$,g)])+"z"+P([_(T-$,p),_(T+$,p)]);return{whiskers:O,box:M}},b=v(d,o),y=v(0,0),w=(x,$)=>{let S=null;return c.globals.previousPaths.length>0&&(S=this.getPreviousPath(e,n,x)),S??$};return[{pathTo:b.whiskers,pathFrom:w(b.whiskers,y.whiskers),filled:!1},{pathTo:b.box,pathFrom:w(b.box,y.box),filled:!0}]}smoothSegment(e,n,i){const o=new Be(this.w),r=e[0];let a=i?o.line(r[0],r[1]):o.move(r[0],r[1]);if(e.length<3||!this.strictlyMonotonic(e,n)){for(let d=1;dn?[f,d]:[d,f]),c=aw.points(l),u=n?c.map(oCe):c;return a+=zN(u),a}strictlyMonotonic(e,n){const i=n?1:0;for(let o=1;othis.halfWidthAtValue(m,a,g,s),sideSign:h?0:this.cloudSign})}halfWidthAtValue(e,n,i,o){const{nodes:r}=n,a=o??n.maxWeight;if(!r.length||a<=0)return 0;const s=l=>Math.min(i,l/a*i*this.bandwidthScale);if(e<=r[0].v)return s(r[0].w);if(e>=r[r.length-1].v)return s(r[r.length-1].w);for(let l=1;l0&&i.colorScale.ranges.map(o=>{o.from<=0&&(n=!0)}),n}getShadeColor(e,n,i,o){const r=this.w;let a=1;const s=r.config.plotOptions[e].shadeIntensity,l=this.determineColor(e,n,i);r.globals.hasNegs||o?r.config.plotOptions[e].reverseNegativeShade?l.percent<0?a=l.percent/100*(s*1.25):a=(1-l.percent/100)*(s*1.25):l.percent<=0?a=1-(1+l.percent/100)*s:a=(1-l.percent/100)*s:(a=1-l.percent/100,e==="treemap"&&(a=(1-l.percent/100)*(s*1.25)));let c=l.color;const u=new Ee;if(r.config.plotOptions[e].enableShades)if(this.w.config.theme.mode==="dark"){const d=u.shadeColor(a*-1,l.color);c=Ee.hexToRgba(Ee.isColorHex(d)?d:Ee.rgb2hex(d),r.config.fill.opacity)}else{const d=u.shadeColor(a,l.color);c=Ee.hexToRgba(Ee.isColorHex(d)?d:Ee.rgb2hex(d),r.config.fill.opacity)}return{color:c,colorProps:l}}determineColor(e,n,i){const o=this.w,r=o.seriesData.series[n][i],a=o.config.plotOptions[e];let s=a.colorScale.inverse?i:n;a.distributed&&o.config.chart.type==="treemap"&&(s=i);let l=o.globals.colors[s],c=null,u,d;if(!a.distributed&&e==="heatmap")u=o.globals.minY,d=o.globals.maxY;else{const v=o.seriesData.series[n];u=v.length?v[0]:0,d=u;for(let b=1;bd&&(d=v[b])}const f=a.colorScale.min,h=a.colorScale.max;typeof f<"u"&&typeof h<"u"&&h>f?(u=f,d=h):typeof f<"u"&&(u=fo.globals.maxY?h:o.globals.maxY);const p=Math.abs(d)+Math.abs(u),g=Math.min(Math.max(r,u),d);let m=p===0?0:100*g/p;return a.colorScale.ranges.length>0&&a.colorScale.ranges.map(b=>{if(r>=b.from&&r<=b.to){l=b.color,c=b.foreColor?b.foreColor:null,u=b.from,d=b.to;const y=Math.abs(d)+Math.abs(u);m=y===0?0:100*r/y}}),{color:l,foreColor:c,percent:m}}calculateDataLabels({text:e,x:n,y:i,i:o,j:r,colorProps:a,fontSize:s}){const l=this.w,c=l.config.dataLabels,u=new Be(this.w),d=new Cc(this.w,this.ctx);let f=null;if(c.enabled){f=u.group({class:"apexcharts-data-labels"});const h=Bg(c.offsetX,l,o,r),p=Bg(c.offsetY,l,o,r),g=n+h,m=i+parseFloat(c.style.fontSize)/3+p;d.plotDataLabelsText({x:g,y:m,text:e,i:o,j:r,color:a.foreColor,parent:f,fontSize:s,dataLabelsConfig:c})}return f}}class rCe{constructor(e,n,i){this.ctx=n,this.w=e,this.xRatio=i.xRatio,this.yRatio=i.yRatio,this.dynamicAnim=this.w.config.chart.animations.dynamicAnimation,this.helpers=new HN(e,n),this.rectRadius=this.w.config.plotOptions.heatmap.radius,this.shape=this.w.config.plotOptions.heatmap.shape||"rect",this.strokeWidth=this.w.config.stroke.show?this.w.config.stroke.width:0}draw(e){var n,i;const o=this.w,r=new Be(this.w,this.ctx),a=r.group({class:"apexcharts-heatmap"}),s=o.layout.gridWidth/o.globals.dataPoints,l=o.layout.gridHeight/o.seriesData.series.length,c=(o.config.xaxis.type==="numeric"||o.config.xaxis.type==="datetime")&&o.axisFlags.isXNumeric&&this.xRatio>0;let u=s;if(c){const y=o.globals.minXDiff;u=Number.isFinite(y)&&y>0?y/this.xRatio:s}let d=this.shape;c&&d==="hexagon"&&(d="rect");const f=Ov(this.ctx,r),h=d==="rect"&&f!==r&&typeof f.drawRectCell=="function";d==="hexagon"?this.applyHexagonClipPath(a,r,s,l):a.attr("clip-path",`url(#gridRectMask${o.globals.cuid})`);const p=Array.isArray(o.config.fill.opacity)?(n=o.config.fill.opacity[0])!=null?n:1:(i=o.config.fill.opacity)!=null?i:1;let g=0,m=!1;this.negRange=this.helpers.checkColorRange();const v=e.slice();o.config.yaxis[0].reversed&&(m=!0,v.reverse());for(let y=m?0:v.length-1;m?y=0;m?y++:y--){const w=r.group({class:"apexcharts-series apexcharts-heatmap-series",seriesName:Ee.escapeString(o.seriesData.seriesNames[y]),rel:y+1,"data:realIndex":y});if(Xn.addCollapsedClassToSeries(this.w,w,y),h||r.setupEventDelegation(w,".apexcharts-heatmap-rect"),o.config.chart.dropShadow.enabled){const T=o.config.chart.dropShadow;new uo(this.w).dropShadow(w,T,y)}let x=0;const $=o.config.plotOptions.heatmap.shadeIntensity,S=Math.round(g/l),_=d==="hexagon"?(S%2===0?-1:1)*s/4:0;let P=0;for(let T=0;T=v[y].length)break;const O=c?u:s;if(c){const B=o.seriesData.seriesX[y]?o.seriesData.seriesX[y][P]:null;if(B==null||B!==B){P++;continue}x=(B-o.globals.minX)/this.xRatio-u/2}const M=this.helpers.getShadeColor(o.config.chart.type,y,P,this.negRange);let I=M.color;const k=M.colorProps;o.config.fill.type==="image"&&(I=new go(this.w).fillPath({seriesNumber:y,dataPointIndex:P,opacity:o.globals.hasNegs?k.percent<0?1-(1+k.percent/100):$+k.percent/100:k.percent/100,patternID:Ee.randomId(),width:o.config.fill.image.width?o.config.fill.image.width:O,height:o.config.fill.image.height?o.config.fill.image.height:l}));const E=this.rectRadius,R=o.config.plotOptions.heatmap.useFillColorAsStroke?I:o.globals.stroke.colors[0];if(h)f.drawRectCell(x,g,O,l,{fill:I,fillOpacity:p,stroke:R,strokeWidth:this.strokeWidth,radius:E,seriesIndex:y,dataPointIndex:P});else{const B=d==="rect",z=B?r.drawRect(x,g,O,l,E):r.drawPath({d:this.cellShapePath(d,x+_,g,O,l),stroke:R,strokeWidth:this.strokeWidth,fill:I,fillOpacity:1});if(z.attr({cx:x+_,cy:g}),z.node.classList.add("apexcharts-heatmap-rect"),w.add(z),z.attr({fill:I,i:y,index:y,j:P,val:e[y][P],"stroke-width":this.strokeWidth,stroke:R,color:I}),B||z.attr({width:O,height:l}),o.config.chart.animations.enabled&&!o.globals.dataChanged){let W=1;if(o.globals.resized||(W=o.config.chart.animations.speed),B)this.animateHeatMap(z,x,g,O,l,W,y,P);else{const j=new Gs(this.w);j.animatePop(z,{speed:W,delay:this.enterStaggerDelay(W,y,P),onComplete:()=>{j.animationCompleted(z)}})}}if(o.globals.dataChanged){let W=1;if(this.dynamicAnim.enabled&&o.globals.shouldAnimate){W=this.dynamicAnim.speed;let j=o.globals.previousPaths[y]&&o.globals.previousPaths[y][P]&&o.globals.previousPaths[y][P].color;j||(j="rgba(255, 255, 255, 0)"),this.animateHeatColor(z,Ee.isColorHex(j)?j:Ee.rgb2hex(j),Ee.isColorHex(I)?I:Ee.rgb2hex(I),W)}}}const D=o.config.dataLabels.formatter,F=D(o.seriesData.series[y][P],{value:o.seriesData.series[y][P],seriesIndex:y,dataPointIndex:P,w:o}),N=this.helpers.calculateDataLabels({text:F,x:x+_+O/2,y:g+l/2,i:y,j:P,colorProps:k,series:v});N!==null&&w.add(N),c||(x=x+s),P++}g=g+l,a.add(w)}const b=o.globals.yAxisScale[0].result.slice();return o.config.yaxis[0].reversed?b.unshift(""):b.push(""),o.globals.yAxisScale[0].result=b,a}animateHeatMap(e,n,i,o,r,a,s=0,l=0){const c=new Gs(this.w),u=this.enterStaggerDelay(a,s,l);c.animateRect(e,{x:n+o/2,y:i+r/2,width:0,height:0},{x:n,y:i,width:o,height:r},a,()=>{c.animationCompleted(e)},u)}enterStaggerDelay(e,n,i){const o=this.w,r=o.config.chart.animations.animateGradually;if(!r||r.enabled===!1)return 0;const a=(o.seriesData.series||[]).length||1,s=o.globals.dataPoints||1,l=a+s-2,c=Math.min(r.delay||0,e*.5/Math.max(1,l));return c$({style:"diagonal",index:i,row:n,col:i,baseDelay:c})}cellShapePath(e,n,i,o,r){const a=n+o/2,s=i+r/2;if(e==="circle"){const c=Math.min(o,r)/2;return`M ${a-c} ${s} a ${c} ${c} 0 1 0 ${c*2} 0 a ${c} ${c} 0 1 0 ${-c*2} 0 Z`}if(e==="diamond")return`M ${a} ${i} L ${n+o} ${s} L ${a} ${i+r} L ${n} ${s} Z`;const l=n+o;return`M ${a} ${i-r/6} L ${l} ${i+r/6} L ${l} ${i+r*5/6} L ${a} ${i+r*7/6} L ${n} ${i+r*5/6} L ${n} ${i+r/6} Z`}applyHexagonClipPath(e,n,i,o){const r=this.w,a=this.strokeWidth/2+2,s=`heatmapHexMask${r.globals.cuid}`,l=r.dom.elDefs.node,c=l.querySelector(`clipPath[id="${s}"]`);c&&c.parentNode&&c.parentNode.removeChild(c);const u=We.createElementNS(Fg,"clipPath");u.setAttribute("id",s),u.appendChild(n.drawRect(-i/4-a,-o/6-a,r.layout.gridWidth+i/2+a*2,r.layout.gridHeight+o/3+a*2,0,"#fff").node),l.appendChild(u),e.attr("clip-path",`url(#${s})`)}animateHeatColor(e,n,i,o){e.attr({fill:n}).animate(o).attr({fill:i})}}class aCe{constructor(e){this.w=e.w,this.lineCtx=e}sameValueSeriesFix(e,n){const i=this.w;if((i.config.fill.type==="gradient"||i.config.fill.type[e]==="gradient")&&new No(this.lineCtx.w).seriesHaveSameValues(e)){const r=n[e].slice();r[r.length-1]=r[r.length-1]+1e-6,n[e]=r}return n}calculatePoints({series:e,realIndex:n,x:i,y:o,i:r,j:a,prevY:s}){const l=this.w,c=[],u=[];let d=this.lineCtx.categoryAxisCorrection+l.config.markers.offsetX;return l.axisFlags.isXNumeric&&(d=(l.seriesData.seriesX[n][0]-l.globals.minX)/this.lineCtx.xRatio+l.config.markers.offsetX),a===0&&(c.push(d),u.push(Ee.isNumber(e[r][0])?s+l.config.markers.offsetY:null)),c.push(i+l.config.markers.offsetX),u.push(Ee.isNumber(e[r][a+1])?o+l.config.markers.offsetY:null),{x:c,y:u}}checkPreviousPaths({pathFromLine:e,pathFromArea:n,realIndex:i}){const o=this.w;for(let r=0;r0&&parseInt(a.realIndex,10)===parseInt(i,10)&&(a.type==="line"?(this.lineCtx.appendPathFrom=!1,e=o.globals.previousPaths[r].paths[0].d):a.type==="area"&&(this.lineCtx.appendPathFrom=!1,n=o.globals.previousPaths[r].paths[0].d,o.config.stroke.show&&o.globals.previousPaths[r].paths[1]&&(e=o.globals.previousPaths[r].paths[1].d)))}return{pathFromLine:e,pathFromArea:n}}determineFirstPrevY({i:e,realIndex:n,series:i,prevY:o,lineYPosition:r,translationsIndex:a}){var s,l,c;const u=this.w,d=u.config.chart.stacked&&!u.globals.comboCharts||u.config.chart.stacked&&u.globals.comboCharts&&(!this.w.config.chart.stackOnlyBar||((s=this.w.config.series[n])==null?void 0:s.type)==="bar"||((l=this.w.config.series[n])==null?void 0:l.type)==="column");if(typeof((c=i[e])==null?void 0:c[0])<"u"){if(d)if(e>0){const f=this.lineCtx.stackTopAt(n,0);r=f===void 0?this.lineCtx.zeroY:f}else r=this.lineCtx.zeroY;else r=this.lineCtx.zeroY;o=r-i[e][0]/this.lineCtx.yRatio[a]+(this.lineCtx.isReversed?i[e][0]/this.lineCtx.yRatio[a]:0)*2}else if(d&&e>0&&typeof i[e][0]>"u"){for(let f=e-1;f>=0;f--)if(i[f][0]!==null&&typeof i[f][0]<"u"){r=this.lineCtx.prevSeriesY[f][0],o=r;break}}return{prevY:o,lineYPosition:r}}}function sCe(t,e,n,i){var o;const r=t.globals,a=r.prevStreamFrame;if(!a||!r.dataChanged||!((o=t.axisFlags)!=null&&o.isXNumeric))return null;const s=a.seriesX[e],l=a.seriesY[e],c=t.seriesData.seriesX[e],u=t.seriesData.series[e];if(!s||!l||!c||!u||s.length<3||c.length<3)return null;let d=-1;for(let E=0;E.02||Math.abs(S)<.5)return null;let _=m,P=m;for(let E=m;E<=v;E++){const R=i[E];R==null||g[d+E]==null||(Ri[P]&&(P=E))}let T=1,O=0;const M=i[_],I=i[P];if(Math.abs(I-M)>1e-6?(T=(g[d+P]-g[d+_])/(I-M),O=g[d+_]-T*M):O=g[d+_]-M,!isFinite(T)||!isFinite(O)||T<.2||T>5)return null;const k=Math.floor((m+v)/2);if(k!==m&&k!==v&&n[k]!=null&&p[d+k]!=null){const E=$*n[k]+S;if(Math.abs(E-p[d+k])>1.5)return null;if(i[k]!=null&&g[d+k]!=null){const R=T*i[k]+O;if(Math.abs(R-g[d+k])>1.5)return null}}return r.streamScrolled=!0,{ax:$,bx:S,ay:T,by:O}}const lCe=/[+-]?(?:\d+\.?\d*|\.\d+)(?:e[+-]?\d+)?/gi;function aM(t,e){const{ax:n,bx:i,ay:o,by:r}=e,a=[],s=/([MmLlHhVvCcSsQqTtAaZz])([^MmLlHhVvCcSsQqTtAaZz]*)/g;let l;for(;(l=s.exec(t))!==null;){const c=l[1].toUpperCase(),u=(l[2].match(lCe)||[]).map(parseFloat);if(c==="Z"){a.push("z");continue}if(c==="H"){for(const f of u)a.push(`H ${n*f+i}`);continue}if(c==="V"){for(const f of u)a.push(`V ${o*f+r}`);continue}if(c==="A"){for(let f=0;f+61?h:0;this._initSerieVariables(e,f,h);const g=[],m=[],v=[];let b=a.globals.padHorizontal+this.categoryAxisCorrection;const y=1,w=[],x=[];Xn.addCollapsedClassToSeries(this.w,this.elSeries,h),a.axisFlags.isXNumeric&&a.seriesData.seriesX.length>0&&(b=(a.seriesData.seriesX[h][0]-a.globals.minX)/this.xRatio),v.push(b);const $=b;let S;const _=$;let P=this.zeroY,T=this.zeroY;const O=0;P=this.lineHelpers.determineFirstPrevY({i:f,realIndex:h,series:e,prevY:P,lineYPosition:O,translationsIndex:p}).prevY,a.config.stroke.curve==="monotoneCubic"&&e[f][0]===null?g.push(null):g.push(P);const I=P;let k;l==="rangeArea"&&(k=this.lineHelpers.determineFirstPrevY({i:f,realIndex:h,series:o,prevY:T,lineYPosition:O,translationsIndex:p}),T=k.prevY,S=T,m.push(g[0]!==null?T:null));const E=this._calculatePathsFrom({type:l,series:e,i:f,realIndex:h,translationsIndex:p,prevX:_,prevY:P,prevY2:T}),R=[g[0]],D=[m[0]],F={type:l,series:e,realIndex:h,translationsIndex:p,i:f,x:b,y,pX:$,pY:I,pathsFrom:E,linePaths:w,areaPaths:x,seriesIndex:i,lineYPosition:O,xArrj:v,yArrj:g,y2Arrj:m,seriesRangeEnd:o},N=this._iterateOverDataPoints(vt(Ye({},F),{iterations:l==="rangeArea"?e[f].length-1:void 0,isRangeStart:!0}));if(l==="rangeArea"){const B=this._calculatePathsFrom({series:o,i:f,realIndex:h,prevX:_,prevY:T}),z=this._iterateOverDataPoints(vt(Ye({},F),{series:o,xArrj:[b],yArrj:R,y2Arrj:D,pY:S,areaPaths:N.areaPaths,pathsFrom:B,iterations:o[f].length-1,isRangeStart:!1})),W=N.linePaths.length/2;for(let j=0;jNumber(f.node.getAttribute("zIndex"))-Number(h.node.getAttribute("zIndex"))),a.config.chart.stacked)for(let f=d.length-1;f>=0;f--)c.add(d[f]);else for(let f=0;f1&&(this.yaxisIndex=o.globals.seriesYAxisReverseMap[i],a=i),this.isReversed=o.config.yaxis[this.yaxisIndex]&&o.config.yaxis[this.yaxisIndex].reversed,this.zeroY=o.layout.gridHeight-this.baseLineY[a]-(this.isReversed?o.layout.gridHeight:0)+(this.isReversed?this.baseLineY[a]*2:0),this.areaBottomY=this.zeroY,(this.zeroY>o.layout.gridHeight||o.config.plotOptions.area.fillTo==="end")&&(this.areaBottomY=o.layout.gridHeight),this.categoryAxisCorrection=this.xDivision/2;const s=o.config.series[i];if(this.elSeries=r.group({class:"apexcharts-series",zIndex:typeof s.zIndex<"u"?s.zIndex:i,seriesName:Ee.escapeString(o.seriesData.seriesNames[i])}),this.elPointsMain=r.group({class:"apexcharts-series-markers-wrap","data:realIndex":i}),this.markers.resetSeriesWrapCache(),this._elLastPointsWrap=null,o.globals.hasNullValues){const c=this.markers.plotChartMarkers({pointsPos:{x:[0],y:[o.layout.gridHeight+o.globals.markers.largestSize]},seriesIndex:n,j:0,pSize:.1,alwaysDrawMarker:!0,isVirtualPoint:!0});c!==null&&this.elPointsMain.add(c)}this.elDataLabelsWrap=r.group({class:"apexcharts-datalabels","data:realIndex":i});const l=e[n].length===o.globals.dataPoints;this.elSeries.attr({"data:longestSeries":l,rel:n+1,"data:realIndex":i}),this.appendPathFrom=!0}_calculatePathsFrom({type:e,series:n,i,realIndex:o,translationsIndex:r,prevX:a,prevY:s,prevY2:l}){const c=this.w,u=new Be(this.w);let d,f,h,p;if(n[i][0]===null){for(let g=0;g0){const g=this.lineHelpers.checkPreviousPaths({pathFromLine:h,pathFromArea:p,realIndex:o});h=g.pathFromLine,p=g.pathFromArea}return{prevX:a,prevY:s,linePath:d,areaPath:f,pathFromLine:h,pathFromArea:p}}_stackKey(e,n){if(!this.w.axisFlags.isXNumeric)return n;const i=this.w.seriesData.seriesX[e];return i?i[n]:void 0}stackTopAt(e,n){const i=this._stackKey(e,n);if(i!=null)return this.prevSeriesYByX.get(i)}_recordStackTops(e,n){const i=this.w;if(Array.isArray(n)&&!(i.globals.collapsedSeriesIndices.indexOf(e)!==-1||i.globals.ancillaryCollapsedSeriesIndices.indexOf(e)!==-1))for(let o=0;o0&&e!=="rangeArea"){const _=f.globals.seriesXvalues[n][f.globals.seriesXvalues[n].length-b.count-1],P=h.drawRect(_,0,f.layout.gridWidth,f.layout.gridHeight,0);f.dom.elForecastMask.appendChild(P.node);const T=h.drawRect(0,0,_,f.layout.gridHeight,0);f.dom.elNonForecastMask.appendChild(T.node)}this.pointsChart?eM(f,{elPointsMain:this.elPointsMain,realIndex:n,speed:f.config.chart.animations.dynamicAnimation.speed}):(f.globals.delayedElements.push({el:this.elPointsMain.node,index:n}),eM(f,{elPointsMain:this.elPointsMain,realIndex:n,speed:f.config.chart.animations.dynamicAnimation.speed}),Tv(f,n)&&((r=this.elDataLabelsWrap)!=null&&r.node)&&(this.elDataLabelsWrap.node.classList.add("apexcharts-element-hidden"),f.globals.delayedElements.push({el:this.elDataLabelsWrap.node,holdUntilComplete:!0})));const y={i,realIndex:n,animationDelay:i,initialSpeed:f.config.chart.animations.speed,dataChangeSpeed:f.config.chart.animations.dynamicAnimation.speed,className:`apexcharts-${e}`},w=o.numericXY,x=e==="line"||e==="area",$=x&&o.linePaths.length>1?[o.linePaths.join(" ")]:o.linePaths,S=x&&o.areaPaths.length>1?[o.areaPaths.join(" ")]:o.areaPaths;if(e==="area"){const _=g.fillPath({seriesNumber:n});for(let P=0;P0&&e!=="rangeArea"){const I=p.renderPaths(O);I.node.setAttribute("stroke-dasharray",b.dashArray),b.strokeWidth&&I.node.setAttribute("stroke-width",b.strokeWidth),this.elSeries.add(I),I.attr("clip-path",`url(#forecastMask${f.globals.cuid})`),M.attr("clip-path",`url(#nonForecastMask${f.globals.cuid})`)}}}}_iterateOverDataPoints({type:e,series:n,iterations:i,realIndex:o,translationsIndex:r,i:a,x:s,y:l,pX:c,pY:u,pathsFrom:d,linePaths:f,areaPaths:h,seriesIndex:p,lineYPosition:g,xArrj:m,yArrj:v,y2Arrj:b,isRangeStart:y,seriesRangeEnd:w}){var x,$;const S=this.w,_=new Be(this.w),P=this.yRatio;let{prevY:T,linePath:O,areaPath:M,pathFromLine:I,pathFromArea:k}=d;const E=Ee.isNumber(S.globals.minYArr[o])?S.globals.minYArr[o]:S.globals.minY;i||(i=S.globals.dataPoints>1?S.globals.dataPoints-1:S.globals.dataPoints);const R=(j,U)=>U-j/P[r]+(this.isReversed?j/P[r]:0)*2;let D=l;const F=S.config.chart.stacked&&!S.globals.comboCharts||S.config.chart.stacked&&S.globals.comboCharts&&(!this.w.config.chart.stackOnlyBar||((x=this.w.config.series[o])==null?void 0:x.type)==="bar"||(($=this.w.config.series[o])==null?void 0:$.type)==="column");let N=S.config.stroke.curve;Array.isArray(N)&&(Array.isArray(p)?N=N[p[a]]:N=N[a]);let B=0,z;const W=this.pointsChart?this._scatterJitterPx(o):null;if(N==="straight"&&!this.pointsChart){const j=this._fastStraightPath({type:e,series:n,i:a,realIndex:o,translationsIndex:r,iterations:i,x:s,y:l,pX:c,pY:u,pathsFrom:d,linePaths:f,areaPaths:h,xArrj:m,yArrj:v,y2Arrj:b,stackSeries:F});if(j)return j}for(let j=0;j"u"||n[a][j+1]===null;if(S.axisFlags.isXNumeric){let Q=S.seriesData.seriesX[o][j+1];typeof S.seriesData.seriesX[o][j+1]>"u"&&(Q=S.seriesData.seriesX[o][i-1]),s=(Q-S.globals.minX)/this.xRatio}else s=s+this.xDivision;if(F)if(a>0&&S.globals.collapsedSeries.length{var X;for(let K=ee;K>=0;K--){const te=(X=p==null?void 0:p[K])!=null?X:K;if(S.globals.collapsedSeriesIndices.indexOf(te)===-1&&S.globals.ancillaryCollapsedSeriesIndices.indexOf(te)===-1)return K}return-1})(a-1)<0)g=this.zeroY;else{const ee=this.stackTopAt(o,j+1);g=ee===void 0?this.zeroY:ee}else g=this.zeroY;else g=this.zeroY;U?l=R(E,g):(l=R(n[a][j+1],g),e==="rangeArea"&&(D=R(w[a][j+1],g)));let V=s,q=l;if(W){const Q=o*100003+(j+1);W.x&&(V=s+(rw(Q*7919+13)-.5)*2*W.x),W.y&&(q=l+(rw(Q*6271+97)-.5)*2*W.y)}m.push(n[a][j+1]===null?null:V),U&&(S.config.stroke.curve==="smooth"||S.config.stroke.curve==="monotoneCubic")?(v.push(null),b.push(null)):(v.push(q),b.push(D));const Y=this.lineHelpers.calculatePoints({series:n,x:V,y:q,realIndex:o,i:a,j,prevY:T}),J=this._createPaths({type:e,series:n,i:a,j,x:s,y:l,y2:D,xArrj:m,yArrj:v,y2Arrj:b,pX:c,pY:u,pathState:B,segmentStartX:z,linePath:O,areaPath:M,linePaths:f,areaPaths:h,curve:N,isRangeStart:y});h=J.areaPaths,f=J.linePaths,c=J.pX,u=J.pY,B=J.pathState,z=J.segmentStartX,M=J.areaPath,O=J.linePath,this.appendPathFrom&&!S.globals.hasNullValues&&!(N==="monotoneCubic"&&e==="rangeArea")&&(I+=_.line(s,this.areaBottomY),k+=_.line(s,this.areaBottomY)),this.handleNullDataPoints(n,Y,a,j,o),this._handleMarkersAndLabels({type:e,pointsPos:Y,i:a,j,realIndex:o,isRangeStart:y})}return{yArrj:v,xArrj:m,pathFromArea:k,areaPaths:h,pathFromLine:I,linePaths:f,linePath:O,areaPath:M}}_handleMarkersAndLabels({type:e,pointsPos:n,isRangeStart:i,i:o,j:r,realIndex:a}){const s=this.w,l=new Cc(this.w,this.ctx);if(this.pointsChart)this.scatter.draw(this.elSeries,r,{realIndex:a,pointsPos:n,zRatio:this.zRatio,elParent:this.elPointsMain});else{!(!s.globals.dataChanged&&!s.globals.resized&&!s.globals.markers.batched)&&s.seriesData.series[o].length>1&&this.elPointsMain.node.classList.add("apexcharts-element-hidden");const d=this.markers.plotChartMarkers({pointsPos:n,seriesIndex:a,j:r+1});d!==null&&d!==this._elLastPointsWrap&&(this.elPointsMain.add(d),this._elLastPointsWrap=d)}const c=l.drawDataLabel({type:e,isRangeStart:i,pos:n,i:a,j:r+1});c!==null&&this.elDataLabelsWrap.add(c)}_scatterJitterPx(e){var n;const i=this.w,o=(n=i.config.plotOptions.scatter)==null?void 0:n.jitter;if(!o||!o.enabled||!o.x&&!o.y)return null;const r=i.axisFlags.isXNumeric&&this.xRatio?1/this.xRatio:this.xDivision,a=this.yRatio.length>1?e:0,s=this.yRatio[a]?1/this.yRatio[a]:0;return{x:(o.x||0)*r,y:(o.y||0)*s}}_fastStraightPath({type:e,series:n,i,realIndex:o,translationsIndex:r,iterations:a,x:s,y:l,pX:c,pY:u,pathsFrom:d,linePaths:f,areaPaths:h,xArrj:p,yArrj:g,y2Arrj:m,stackSeries:v}){const b=this.w;if(e!=="line"&&e!=="area"||b.globals.comboCharts||v||b.config.dataLabels.enabled||b.config.markers.discrete.length||b.globals.markers.size[o]>0)return null;const y=n[i],w=y.length;if(!a||w<2||w-1!==a)return null;for(let K=0;K<=a;K++){const te=y[K];if(te===null||typeof te>"u")return null}const x=b.axisFlags.isXNumeric,$=x?b.seriesData.seriesX[o]:null;if(x&&(!$||$.length"u"&&(b.globals.pointsArray[o]=[]);const U=b.globals.pointsArray[o],V=$?($[0]-M)/O+k:this.categoryAxisCorrection+k;U.push([V,d.prevY+E]);const q=z?new Array(a+1):[];z&&(q[0]="M "+c+" "+u);const Y=z&&R?new Array(a):null;let J=s,Q=c,G=u;for(let K=0;KI.map((E,R)=>[E,k[R]]).filter(E=>E[1]!==null),O=I=>{const k=[];let E=0;return I.forEach(R=>{R!==null?E++:E>0&&(k.push(E),E=0)}),E>0&&k.push(E),k},M=(I,k)=>{const E=O(I),R=[];for(let D=0,F=0;D1?aw.points(E):E;let D=[];S&&(_?b=E:D=b.reverse());let F=0,N=0;if(M(k,R).forEach(B=>{F++;const z=zN(B),W=N;N+=B.length;const j=N-1;_?g=x.move(E[W][0],E[W][1])+z:S?g=x.move(D[W][0],D[W][1])+x.line(E[W][0],E[W][1])+z+x.line(D[j][0],D[j][1]):(g=x.move(E[W][0],E[W][1])+z,m=g+x.line(E[j][0],$)+x.line(E[W][0],$)+"z",b.push(m)),v.push(g)}),S&&F>1&&!_){const B=v.slice(F).reverse();v.splice(F),B.forEach(z=>v.push(z))}h=0;break}}break}case"smooth":{const P=(r-d)*.35;if(n[i][o]===null)h=0;else switch(h){case 0:if(p=d,_?g=x.move(d,u[o])+x.line(d,f):g=x.move(d,f),m=x.move(d,f),n[i][o+1]===null||typeof n[i][o+1]>"u"){v.push(g),b.push(m);break}if(h=1,o=n[i].length-2&&(_&&(g+=x.curve(r,a,r,a,r,c)+x.move(r,c)),m+=x.curve(r,a,r,a,r,$)+x.line(p,$)+"z",v.push(g),b.push(m),h=-1)}break}d=r,f=a;break}default:{const P=(T,O,M)=>{let I="";switch(T){case"stepline":I=x.line(O,null,"H")+x.line(null,M,"V");break;case"linestep":I=x.line(null,M,"V")+x.line(O,null,"H");break;case"straight":I=x.line(O,M);break}return I};if(n[i][o]===null)h=0;else switch(h){case 0:if(p=d,_?g=x.move(d,u[o])+x.line(d,f):g=x.move(d,f),m=x.move(d,f),n[i][o+1]===null||typeof n[i][o+1]>"u"){v.push(g),b.push(m);break}if(h=1,o=n[i].length-2&&(_&&(g+=x.line(r,c)),m+=x.line(r,$)+x.line(p,$)+"z",v.push(g),b.push(m),h=-1)}break}d=r,f=a;break}}return{linePaths:v,areaPaths:b,pX:d,pY:f,pathState:h,segmentStartX:p,linePath:g,areaPath:m}}handleNullDataPoints(e,n,i,o,r){const a=this.w;if(e[i][o]===null&&a.config.markers.showNullDataPoints||e[i].length===1){let s=this.strokeWidth-a.config.markers.strokeWidth/2;s>0||(s=0);const l=this.markers.plotChartMarkers({pointsPos:n,seriesIndex:r,j:o+1,pSize:s,alwaysDrawMarker:!0});l!==null&&this.elPointsMain.add(l)}}}function WN(t,e){const{lines:n,lineHeight:i,anchor:o,elbow:r,labelX:a,labelY:s,side:l,connector:c,style:u,foreColor:d}=e,f=new Be(t),h=f.group({class:e.groupClass||"apexcharts-outer-label-group"});if(c.show){const b=`M ${o.x} ${o.y} L ${r.x} ${r.y} L ${a} ${s}`,y=f.drawPath({d:b,stroke:c.color,strokeWidth:c.width,fill:"none",strokeLinecap:"round"});y.node.classList.add(e.connectorClass||"apexcharts-outer-label-connector"),h.add(y)}const p=l==="right"?a+4:a-4,g=n.length,m=s-(g-1)*i/2,v=f.drawText({x:p,y:m,text:g===1?n[0]:n,textAnchor:l==="right"?"start":"end",fontSize:u.fontSize,fontFamily:u.fontFamily,fontWeight:u.fontWeight,foreColor:d,dominantBaseline:"central",cssClass:e.textClass||"apexcharts-outer-label"});if(g>1){const b=v.node.getElementsByTagName("tspan");for(let y=0;y{if(s==null||s==="")return;const l=`${s}`,c=i.getTextRects(l,o,n.fontFamily,"").width;a=Math.max(a,c>0?c:l.length*r*.58)}),a}function jN(t,e,n,i){const o=t.slice().sort((s,l)=>s.idealY-l.idealY);o.forEach(s=>{s.labelY=s.idealY});for(let s=1;s0)for(let s=o.length-1;s>=0;s--)o[s].labelY-=a,s{if(a===null||typeof a>"u"||a==="")return;const s=o.getTextRects(`${a}`,n||"12px",i,"");r=Math.max(r,s.width)}),r}drawExternalLabel(e){return WN(this.w,vt(Ye({},e),{groupClass:"apexcharts-pie-name-label-group",textClass:"apexcharts-pie-name-label",connectorClass:"apexcharts-pie-label-connector"}))}}const sM=Math.PI/180,lw=180/Math.PI;function h$(t,e,n,i){return{x:t+n*Math.cos((i-90)*sM),y:e+n*Math.sin((i-90)*sM)}}const tn=t=>`${t.x} ${t.y}`;function cw({cx:t,cy:e,rIn:n,rOut:i,a0:o,a1:r,r:a,spanDeg:s}){const l=(P,T)=>h$(t,e,P,T),c=a/i*lw,u=a/n*lw,d=l(i,o+c),f=l(i,r-c),h=s-2*c>180?1:0,p=l(i,r),g=l(i-a,r),m=l(i,o),v=l(i-a,o),b=l(n,r-u),y=l(n,o+u),w=s-2*u>180?1:0,x=l(n,r),$=l(n+a,r),S=l(n,o),_=l(n+a,o);return["M",tn(d),"A",i,i,0,h,1,tn(f),"Q",tn(p),tn(g),"L",tn($),"Q",tn(x),tn(b),"A",n,n,0,w,0,tn(y),"Q",tn(S),tn(_),"L",tn(v),"Q",tn(m),tn(d),"Z"].join(" ")}function uCe({cx:t,cy:e,rOut:n,a0:i,a1:o,r,spanDeg:a}){const s=(m,v)=>h$(t,e,m,v),l=r/n*lw,c=s(n,i+l),u=s(n,o-l),d=a-2*l>180?1:0,f=s(n,o),h=s(n-r,o),p=s(n,i),g=s(n-r,i);return["M",tn(c),"A",n,n,0,d,1,tn(u),"Q",tn(f),tn(h),"L",`${t} ${e}`,"L",tn(g),"Q",tn(p),tn(c),"Z"].join(" ")}function VN({cx:t,cy:e,rIn:n,rOut:i,a0:o,a1:r,spanDeg:a}){const s=(h,p)=>h$(t,e,h,p),l=a>180?1:0,c=s(i,o),u=s(i,r),d=s(n,r),f=s(n,o);return["M",tn(c),"A",i,i,0,l,1,tn(u),"L",tn(d),"A",n,n,0,l,0,tn(f),"Z"].join(" ")}const dCe="transform 320ms cubic-bezier(0.25, 0.8, 0.3, 1)",fCe="opacity 180ms ease-out";class fp{constructor(e,n){this.ctx=n,this.w=e,this.chartType=this.w.config.chart.type,this.initialAnim=this.w.config.chart.animations.enabled,this.dynamicAnim=this.initialAnim&&this.w.config.chart.animations.dynamicAnimation.enabled,this.animBeginArr=[0],this.animDur=0,this.donutDataLabels=this.w.config.plotOptions.pie.donut.labels,this.lineColorArr=e.globals.stroke.colors!==void 0?e.globals.stroke.colors:e.globals.colors,this.defaultSize=Math.min(e.layout.gridWidth,e.layout.gridHeight),this.centerY=e.layout.gridHeight/2,this.centerX=e.layout.gridWidth/2,e.config.chart.type==="radialBar"?this.fullAngle=360:this.fullAngle=Math.abs(e.config.plotOptions.pie.endAngle-e.config.plotOptions.pie.startAngle),this.initialAngle=e.config.plotOptions.pie.startAngle%this.fullAngle,e.globals.radialSize=this.defaultSize/2.05-e.config.stroke.width-(e.config.chart.sparkline.enabled?0:e.config.chart.dropShadow.blur),this.externalCfg=e.config.plotOptions.pie.dataLabels.external;const i=e.config.dataLabels.style;this.externalLabelStyle={fontSize:this.externalCfg.fontSize||i.fontSize,fontFamily:this.externalCfg.fontFamily||i.fontFamily,fontWeight:this.externalCfg.fontWeight||i.fontWeight},this.externalLabels=[],this.externalLabelMaxLines=1,this.externalLabelLineH=parseFloat(this.externalLabelStyle.fontSize)||12,e.globals.pieExternalLabelMarginY=0,this.showExternalLabels=this.externalCfg.show&&this.chartType!=="polarArea",this.showExternalLabels&&!e.globals.noData&&this.reserveExternalLabelSpace(),this.donutSize=e.globals.radialSize*parseInt(e.config.plotOptions.pie.donut.size,10)/100;const o=e.config.plotOptions.pie.customScale,r=e.layout.gridWidth/2,a=e.layout.gridHeight/2;this.translateX=r-r*o,this.translateY=a-a*o,this.dataLabelsGroup=new Be(this.w).group({class:"apexcharts-datalabels-group",transform:`translate(${this.translateX}, ${this.translateY}) scale(${o})`}),this.maxY=0,this.sliceLabels=[],this.sliceSizes=[],this.prevSliceSizes=[],this.sliceLabelGroups={},this.externalLabelGroups={},this.elHoverOutline=null,this.elHoverOutlinePath=null,this.hoverOutlineIndex=-1,this.prevSectorAngleArr=[]}getExternalLabelText(e){var n,i,o;const r=this.w,a=r.seriesData.seriesNames[e],s=this.externalCfg.formatter;return typeof s=="function"?s(a,{seriesIndex:e,percent:(i=(n=r.globals.seriesPercent)==null?void 0:n[e])==null?void 0:i[0],value:(o=r.globals.seriesTotals)==null?void 0:o[e],w:r}):a==null?"":`${a}`}getExternalLabelLines(e){const n=this.getExternalLabelText(e);return(Array.isArray(n)?n:`${n??""}`.split(` `)).map(o=>o==null?"":`${o}`)}reserveExternalLabelSpace(){const e=this.w,n=new dp(e),i=(e.seriesData.seriesNames||[]).map((f,h)=>this.getExternalLabelLines(h)),o=n.getMaxLabelWidth(i.flat(),{fontSize:this.externalLabelStyle.fontSize,fontFamily:this.externalLabelStyle.fontFamily});this.externalLabelMaxLines=i.reduce((f,h)=>Math.max(f,h.length),1),this.externalLabelLineH=Math.round((parseFloat(this.externalLabelStyle.fontSize)||12)*1.35);const r=this.externalCfg.connector,a=this.externalLabelMaxLines*this.externalLabelLineH,s=o+(r.length||0)+(r.gap||0)+12,l=a/2+(r.gap||0)+6,c=Math.min(e.globals.radialSize,e.layout.gridWidth/2-s,e.layout.gridHeight/2-l);e.globals.radialSize=Math.max(c,this.defaultSize*.15),e.globals.pieExternalLabelMarginY=l;const u=e.config.chart.height?String(e.config.chart.height):"",d=u!==""&&u!=="auto";this.centerY=d?e.layout.gridHeight/2:e.globals.radialSize+l}draw(e){var n;const i=this,o=this.w,r=new Be(this.w),a=r.group({class:"apexcharts-pie"});if(o.globals.noData)return a;let s=0;for(let p=0;p{this.maxY=Math.max(this.maxY,p)}),o.config.yaxis[0].max&&(this.maxY=o.config.yaxis[0].max),o.config.grid.position==="back"&&this.chartType==="polarArea"&&this.drawPolarElements(a);const u=o.globals.collapsedSeriesIndices||[];let d=1;if(this.chartType==="polarArea"){let p=0;for(let g=0;g-1?0:this.fullAngle/d,this.sliceSizes.push(o.globals.radialSize*e[p]/(this.maxY||1))):this.sliceSizes.push(o.globals.radialSize)}const f=((n=this.ctx.morphTypeChange)==null?void 0:n.isActive())===!0;if(o.globals.dataChanged&&!f)if(this.chartType==="polarArea"){const p=o.globals.previousPaths,g=o.globals.prevPolarAngles;if(Array.isArray(g)&&g.length===p.length)this.prevSectorAngleArr=g.slice();else for(let v=0;vo.globals.radialSize*Ee.negToZero(v)/(m||1))}else{let p=0;for(let m=0;m{h.add(p)}),c.attr({transform:`translate(${this.translateX}, ${this.translateY}) scale(${o.config.plotOptions.pie.customScale})`}),c.add(h),a.add(c),this.donutDataLabels.show){const p=this.initialAnim&&!o.globals.resized&&!o.globals.dataChanged&&this.animDur>0,g=this.renderInnerDataLabels(this.dataLabelsGroup,this.donutDataLabels,{hollowSize:this.donutSize,centerX:this.centerX,centerY:this.centerY,opacity:p?0:this.donutDataLabels.show});if(p){const m=this.dataLabelsGroup.node;m.style.transition="opacity 280ms ease-out",setTimeout(()=>{m.style.opacity="1"},this.animDur)}a.add(g)}return o.config.grid.position==="front"&&this.chartType==="polarArea"&&this.drawPolarElements(a),a}drawArcs(e,n){var i,o,r,a,s;const l=this.w,c=new uo(this.w),u=new Be(this.w),d=new go(this.w),f=u.group({class:"apexcharts-slices"});this.elHoverOutline=u.group({class:"apexcharts-pie-hover-outline"}),this.elHoverOutline.node.style.pointerEvents="none",this.elHoverOutline.node.style.opacity="0",l.config.chart.animations.enabled&&(this.elHoverOutline.node.style.transition=fCe),f.add(this.elHoverOutline);let h=this.initialAngle,p=this.initialAngle,g=this.initialAngle,m=this.initialAngle;this.strokeWidth=l.config.stroke.show?l.config.stroke.width:0;const v=((i=this.ctx.morphTypeChange)==null?void 0:i.isActive())===!0;for(let b=0;bD.animationCompleted(P)):D.animationCompleted(P)}else this.dynamicAnim&&l.globals.dataChanged?this.animatePaths(P,{size:this.sliceSizes[b],prevSize:S,endAngle:g,startAngle:h,prevStartAngle:p,prevEndAngle:m,animateStartingPos:!0,i:b,animBeginArr:this.animBeginArr,shouldSetPrevPaths:!0,dur:l.config.chart.animations.dynamicAnimation.speed}):this.animatePaths(P,{size:this.sliceSizes[b],endAngle:g,startAngle:h,i:b,totalItems:e.length-1,animBeginArr:this.animBeginArr,dur:k});if(this.getExpandOffset()>0?P.node.addEventListener("mouseup",this.pieClicked.bind(this,b)):b===0&&uo.drilldownBlocksSliceOffset(l)&&((s=this.ctx.drilldown)==null||s.warnSliceOffsetDisabled()),typeof l.interact.selectedDataPoints[0]<"u"&&l.interact.selectedDataPoints[0].indexOf(b)>-1)if(this.initialAnim&&!l.globals.resized&&!l.globals.dataChanged&&this.animDur>0){const E=this,R=b;setTimeout(()=>E.pieClicked(R,{animate:!1}),this.animDur)}else this.pieClicked(b,{animate:!1});if(l.config.dataLabels.enabled){const E=T.x,R=T.y;let D=100*w/this.fullAngle+"%";if(w!==0&&l.config.plotOptions.pie.dataLabels.minAngleToShowLabelR!=="")){const R=Ee.polarToCartesian(this.centerX,this.centerY,l.globals.radialSize,O),D=Ee.polarToCartesian(this.centerX,this.centerY,l.globals.radialSize+(this.externalCfg.connector.gap||0),O),F=D.x>=this.centerX,N=F?D.x+(this.externalCfg.connector.length||0):D.x-(this.externalCfg.connector.length||0);this.externalLabels.push({i:b,lines:E,anchor:R,elbow:D,side:F?"right":"left",labelX:N+parseFloat(this.externalCfg.offsetX||0),idealY:D.y+parseFloat(this.externalCfg.offsetY||0),connectorColor:this.externalCfg.connector.color||l.globals.colors[b],foreColor:this.externalCfg.color||l.config.chart.foreColor})}}}if(this.showExternalLabels&&this.externalLabels.length){this.placeExternalLabels();const b=Ot.isBrowser()&&(v||this.dynamicAnim&&l.globals.dataChanged||this.initialAnim&&!l.globals.resized&&!l.globals.dataChanged);this.externalLabels.forEach(y=>{const w=new dp(l).drawExternalLabel({lines:y.lines,lineHeight:this.externalLabelLineH,anchor:y.anchor,elbow:y.elbow,labelX:y.labelX,labelY:y.labelY,side:y.side,connector:{show:this.externalCfg.connector.show,width:this.externalCfg.connector.width,color:y.connectorColor},style:this.externalLabelStyle,foreColor:y.foreColor});b&&(w.node.classList.add("apexcharts-element-hidden"),l.globals.delayedElements.push({el:w.node})),this.externalLabelGroups[y.i]=w.node,f.add(w)})}return f}placeExternalLabels(){const e=this.w,n=this.externalLabelMaxLines*this.externalLabelLineH+2,i=this.centerY+e.globals.radialSize+e.globals.pieExternalLabelMarginY;["left","right"].forEach(o=>{jN(this.externalLabels.filter(r=>r.side===o),n,i)})}addListeners(e,n,i){const o=new Be(this.w,this.ctx);e.node.addEventListener("mouseenter",o.pathMouseEnter.bind(o,e)),e.node.addEventListener("mouseleave",o.pathMouseLeave.bind(o,e)),e.node.addEventListener("mouseleave",this.revertDataLabelsInner.bind(this)),typeof i=="number"&&(e.node.addEventListener("mouseenter",this.showHoverOutline.bind(this,i)),e.node.addEventListener("mouseleave",this.hideHoverOutline.bind(this))),e.node.addEventListener("mousedown",o.pathMouseDown.bind(o,e)),this.donutDataLabels.total.showAlways||(e.node.addEventListener("mouseenter",this.printDataLabelsInner.bind(this,e.node,n)),e.node.addEventListener("mousedown",this.printDataLabelsInner.bind(this,e.node,n)))}animatePaths(e,n){const i=this.w,o=this;let r=n.endAnglethis.fullAngle?n.endAngle=n.endAngle-(r+l):r+l{f=p+(o-p)*m,a.animateStartingPos&&(f=r+(o-r)*m,h=n-r+(i-(n-r))*m),d=s.getPiePath({me:s,startAngle:h,angle:f,size:g?a.prevSize+(u-a.prevSize)*m:u}),e.node.setAttribute("data:pathOrig",d),e.attr({d})}):(d=s.getPiePath({me:s,startAngle:h,angle:o,size:u}),a.isTrack||(l.globals.animationEnded=!0),e.node.setAttribute("data:pathOrig",d),e.attr({d,"stroke-width":s.strokeWidth}))}pieClicked(e,n){const i=this.w,o=this,r=!(n&&n.animate===!1),a=i.dom.Paper.findOne(`.apexcharts-${o.chartType.toLowerCase()}-slice-${e}`);if(!a)return;if(a.attr("data:pieClicked")==="true"){a.attr({"data:pieClicked":"false"}),this.revertDataLabelsInner(),this.offsetSlice(e,0,r);return}const s=i.dom.baseEl.getElementsByClassName("apexcharts-pie-area");Array.prototype.forEach.call(s,l=>{const c=l.getAttribute("data:pieClicked")==="true";l.setAttribute("data:pieClicked","false"),c&&this.offsetSlice(parseInt(l.getAttribute("j"),10),0,r)}),i.interact.capturedDataPointIndex=e,a.attr("data:pieClicked","true"),this.offsetSlice(e,this.getExpandOffset(),r)}getExpandOffset(){const e=this.w.config.plotOptions.pie;if(!e.expandOnClick||this.chartType==="polarArea"||uo.drilldownBlocksSliceOffset(this.w))return 0;const n=Number(e.expandOffset);return Number.isFinite(n)&&n>0?n:0}getSliceMovers(e){const n=this.w.dom.Paper.findOne(`.apexcharts-${this.chartType.toLowerCase()}-slice-${e}`);return[n?n.node:null,this.sliceLabelGroups[e],this.externalLabelGroups[e],this.hoverOutlineIndex===e&&this.elHoverOutlinePath?this.elHoverOutlinePath.node:null].filter(Boolean)}offsetSlice(e,n,i=!0){const o=this.w;if(!o.dom.Paper.findOne(`.apexcharts-${this.chartType.toLowerCase()}-slice-${e}`))return;const{dx:a,dy:s}=this.getSliceOffsetVector(e,n),l=`translate(${a} ${s})`,c=i&&o.config.chart.animations.enabled?dCe:"";this.getSliceMovers(e).forEach(u=>{u.style.transition=c,u.setAttribute("transform",l)})}getSliceOffsetVector(e,n){const i=this.w.dom.Paper.findOne(`.apexcharts-${this.chartType.toLowerCase()}-slice-${e}`),o=i?parseFloat(i.attr("data:angle")):NaN;if(!n||!Number.isFinite(o)||o>=this.fullAngle)return{dx:0,dy:0};const r=parseFloat(i.attr("data:startAngle")),a=Math.PI*(r+o/2-90)/180;return{dx:n*Math.cos(a),dy:n*Math.sin(a)}}showHoverOutline(e){const n=this.w;if(!uo.hoverOutlineOwnsHoverState(n)||!this.elHoverOutline)return;const i=this.getHoverOutlinePath(e);if(!i)return;const o=n.config.plotOptions.pie.hoverOutline,r=o.color||n.globals.colors[e];if(!this.elHoverOutlinePath){const l=new Be(n);this.elHoverOutlinePath=l.drawPath({d:i,fill:r,strokeWidth:0,classes:"apexcharts-pie-hover-outline-band"}),this.elHoverOutline.add(this.elHoverOutlinePath)}this.elHoverOutlinePath.attr({d:i,fill:r,"fill-opacity":o.opacity});const{dx:a,dy:s}=this.getSliceOffsetVector(e,this.isSliceOut(e)?this.getExpandOffset():0);this.elHoverOutlinePath.node.style.transition="",this.elHoverOutlinePath.node.setAttribute("transform",`translate(${a} ${s})`),this.hoverOutlineIndex=e,this.elHoverOutline.node.style.opacity="1"}hideHoverOutline(){this.elHoverOutline&&(this.elHoverOutline.node.style.opacity="0")}isSliceOut(e){const n=this.w.dom.Paper.findOne(`.apexcharts-${this.chartType.toLowerCase()}-slice-${e}`);return!!n&&n.attr("data:pieClicked")==="true"}getHoverOutlinePath(e){const n=this.w,i=n.config.plotOptions.pie.hoverOutline,o=n.dom.Paper.findOne(`.apexcharts-${this.chartType.toLowerCase()}-slice-${e}`);if(!o)return null;const r=parseFloat(o.attr("data:angle"));if(!Number.isFinite(r)||r<=0)return null;const a=this.sliceSizes[e],s=Number(i.size);if(!Number.isFinite(a)||!Number.isFinite(s)||s<=0)return null;const{startDeg:l,spanDeg:c}=this.getSliceExtent({me:this,startAngle:parseFloat(o.attr("data:startAngle")),angle:r,size:a});if(!(c>0))return null;const u=a+(this.strokeWidth||0)/2+(Number(i.gap)||0),d=u+s,f={cx:this.centerX,cy:this.centerY,rIn:u,rOut:d,a0:l,a1:l+c,spanDeg:c},h=Math.min(s/2,c*Math.PI/180/2*u);return h>.5?cw(vt(Ye({},f),{r:h})):VN(f)}getChangedPath(e,n,i){let o="";return this.dynamicAnim&&this.w.globals.dataChanged&&(o=this.getPiePath({me:this,startAngle:e,angle:n-e,size:typeof i=="number"?i:this.size})),o}getSliceExtent({me:e,startAngle:n,angle:i,size:o}){const r=this.w;let a=n,s=i+n;Math.ceil(s)>=this.fullAngle+this.w.config.plotOptions.pie.startAngle%this.fullAngle&&(s=this.fullAngle+this.w.config.plotOptions.pie.startAngle%this.fullAngle-.01);let l=s-a;const c=e.chartType==="pie"||e.chartType==="donut"||e.chartType==="polarArea",u=r.config.plotOptions.pie.spacing;if(c&&u>0&&l>0){const d=e.chartType==="donut"?(o+e.donutSize)/2:o,f=d>0?u/d*(180/Math.PI):0,h=Math.min(f/2,Math.max(0,l/2-.5));a+=h,l-=2*h}return s=a+l,Math.ceil(s)>this.fullAngle&&(s-=this.fullAngle),{startDeg:a,spanDeg:l,endDeg:s}}getPiePath({me:e,startAngle:n,angle:i,size:o}){let r;const a=this.w,s=new Be(this.w),{startDeg:l,spanDeg:c,endDeg:u}=this.getSliceExtent({me:e,startAngle:n,angle:i,size:o}),d=e.chartType==="pie"||e.chartType==="donut"||e.chartType==="polarArea",f=Math.PI*(l-90)/180,h=a.config.plotOptions.pie.borderRadius;if(h>0&&d){const S=this.getRoundedSlicePath({me:e,startDeg:l,spanDeg:c,size:o,borderRadius:h});if(S)return S}const p=Math.PI*(u-90)/180,g=e.centerX+o*Math.cos(f),m=e.centerY+o*Math.sin(f),v=e.centerX+o*Math.cos(p),b=e.centerY+o*Math.sin(p),y=Ee.polarToCartesian(e.centerX,e.centerY,e.donutSize,u),w=Ee.polarToCartesian(e.centerX,e.centerY,e.donutSize,l),x=c>180?1:0,$=["M",g,m,"A",o,o,0,x,1,v,b];return e.chartType==="donut"?r=[...$,"L",y.x,y.y,"A",e.donutSize,e.donutSize,0,x,0,w.x,w.y,"L",g,m,"z"].join(" "):e.chartType==="pie"||e.chartType==="polarArea"?r=[...$,"L",e.centerX,e.centerY,"L",g,m].join(" "):r=[...$].join(" "),s.roundPathCorners(r,this.strokeWidth*2)}getRoundedSlicePath({me:e,startDeg:n,spanDeg:i,size:o,borderRadius:r}){if(!(i>0))return null;const a=Math.PI/180,s=e.centerX,l=e.centerY,c=e.chartType==="donut",u=o,d=c?e.donutSize:0,f=i*a;let h=r;if(h=Math.min(h,f*u/2),c?(h=Math.min(h,f*d/2),h=Math.min(h,(u-d)/2)):h=Math.min(h,u/2),!(h>.5))return null;const p=n,g=n+i;return c?cw({cx:s,cy:l,rIn:d,rOut:u,a0:p,a1:g,r:h,spanDeg:i}):uCe({cx:s,cy:l,rOut:u,a0:p,a1:g,r:h,spanDeg:i})}drawPolarElements(e){const n=this.w,i=new vN(this.w),o=new Be(this.w),r=new dp(this.w),a=o.group(),s=o.group(),l=i.niceScale(0,Math.ceil(this.maxY),0),c=l.result.reverse(),u=l.result.length;this.maxY=l.niceMax;let d=n.globals.radialSize;const f=d/(u-1);for(let h=0;h1&&e.total.show&&(a=e.total.color);const s=r.dom.baseEl.querySelector(".apexcharts-datalabel-label"),l=r.dom.baseEl.querySelector(".apexcharts-datalabel-value"),c=e.value.formatter;i=c(i,r),!o&&typeof e.total.formatter=="function"&&(i=e.total.formatter(r));const u=n===e.total.label;if(n=this.donutDataLabels.total.label?e.name.formatter(n,u,r):"",s!==null&&(s.textContent=n),l!==null&&(l.textContent=i),s!==null){const d=s;d.style.fill=a}}printDataLabelsInner(e,n){const i=this.w,o=e.getAttribute("data:value"),r=i.seriesData.seriesNames[parseInt(e.parentNode.getAttribute("rel"),10)-1];i.seriesData.series.length>1&&this.printInnerLabels(n,r,o,e);const a=i.dom.baseEl.querySelector(".apexcharts-datalabels-group");if(a!==null){const s=a;s.style.opacity="1"}}drawSpokes(e){const n=this.w,i=new Be(this.w),o=n.config.plotOptions.polarArea.spokes;if(o.strokeWidth===0)return;const r=[],a=360/n.seriesData.series.length;for(let s=0;s{const c=i.drawLine(s.x,s.y,this.centerX,this.centerY,Array.isArray(o.connectorColors)?o.connectorColors[l]:o.connectorColors);e.add(c)})}revertDataLabelsInner(){const e=this.w;if(this.donutDataLabels.show){const n=e.dom.Paper.findOne(".apexcharts-datalabels-group"),i=this.renderInnerDataLabels(n,this.donutDataLabels,{hollowSize:this.donutSize,centerX:this.centerX,centerY:this.centerY,opacity:this.donutDataLabels.show});e.dom.Paper.findOne(".apexcharts-radialbar, .apexcharts-pie").add(i)}}}const hCe=5;class pCe{constructor(e,n){this.ctx=n,this.w=e,this.chartType=this.w.config.chart.type,this.initialAnim=this.w.config.chart.animations.enabled,this.dynamicAnim=this.initialAnim&&this.w.config.chart.animations.dynamicAnimation.enabled,this.animDur=0,this.graphics=new Be(this.w),this.lineColorArr=e.globals.stroke.colors!==void 0?e.globals.stroke.colors:e.globals.colors,this.defaultSize=e.globals.svgHeight{const m=p.length===n.globals.dataPoints,v=this.graphics.group().attr({class:"apexcharts-series","data:longestSeries":m,seriesName:Ee.escapeString(n.seriesData.seriesNames[g]),rel:g+1,"data:realIndex":g});this.dataRadiusOfPercent[g]=[],this.dataRadius[g]=[],this.angleArr[g]=[],p.forEach((x,$)=>{const S=Math.abs(this.maxValue-this.minValue);x=x-this.minValue,this.isLog&&(x=this.coreUtils.getLogVal(this.logBase,x,0)),this.dataRadiusOfPercent[g][$]=x/S,this.dataRadius[g][$]=this.dataRadiusOfPercent[g][$]*this.size,this.angleArr[g][$]=$*this.disAngle}),d=this.getDataPointsPos(this.dataRadius[g],this.angleArr[g]);const b=this.createPaths(d,{x:0,y:0});f=this.graphics.group({class:"apexcharts-series-markers-wrap apexcharts-element-hidden"}),h=this.graphics.group({class:"apexcharts-datalabels","data:realIndex":g}),n.globals.delayedElements.push({el:f.node,index:g});const y={i:g,realIndex:g,animationDelay:g,initialSpeed:n.config.chart.animations.speed,dataChangeSpeed:n.config.chart.animations.dynamicAnimation.speed,className:"apexcharts-radar",shouldClipToGrid:!1,bindEventsOnPaths:!1,stroke:n.globals.stroke.colors[g],strokeLineCap:n.config.stroke.lineCap};let w=null;n.globals.previousPaths.length>0&&(w=this.getPreviousPath(g));for(let x=0;x{const _=new _v(this.w,this.ctx).getMarkerConfig({cssClass:"apexcharts-marker",seriesIndex:g,dataPointIndex:$});_.pSize||(_.pSize=hCe,_.pointFillColor="transparent",_.pointStrokeColor="transparent",_.pointStrokeWidth=0);const P=this.graphics.drawMarker(d[$].x,d[$].y,_);P.attr("rel",$),P.attr("j",$),P.attr("index",g),P.node.setAttribute("default-marker-size",_.pSize);const T=this.graphics.group({class:"apexcharts-series-markers"});T&&T.add(P),f.add(T),v.add(f);const O=n.config.dataLabels;if(O.enabled){const M=O.formatter(n.seriesData.series[g][$],{seriesIndex:g,dataPointIndex:$,w:n});r.plotDataLabelsText({x:d[$].x,y:d[$].y,text:M,textAnchor:"middle",i:g,j:g,seriesIndex:g,dataPointIndex:$,parent:h,offsetCorrection:!1,dataLabelsConfig:Ye({},O)})}v.add(h)}),o.push(v)}),this.drawPolygons({parent:u}),n.config.xaxis.labels.show){const p=this.drawXAxisTexts();u.add(p)}return o.forEach(p=>{u.add(p)}),u.add(this.yaxisLabels),u}drawPolygons(e){const n=this.w,{parent:i}=e,o=new dp(this.w),r=n.globals.yAxisScale[0].result.reverse(),a=r.length,s=[],l=this.size/(a-1);for(let d=0;d{const h=Ee.getPolygonPos(d,this.dataPointsLen);let p="";h.forEach((g,m)=>{if(f===0){const v=this.graphics.drawLine(g.x,g.y,0,0,Array.isArray(this.polygons.connectorColors)?this.polygons.connectorColors[m]:this.polygons.connectorColors);u.push(v)}m===0&&this.yaxisLabelsTextsPos.push({x:g.x,y:g.y}),p+=g.x+","+g.y+" "}),c.push(p)}),c.forEach((d,f)=>{const h=this.polygons.strokeColors,p=this.polygons.strokeWidth,g=this.graphics.drawPolygon(d,Array.isArray(h)?h[f]:h,Array.isArray(p)?p[f]:p,n.globals.radarPolygons.fill.colors[f]);i.add(g)}),u.forEach(d=>{i.add(d)}),n.config.yaxis[0].show&&this.yaxisLabelsTextsPos.forEach((d,f)=>{const h=o.drawYAxisTexts(d.x,d.y,f,r[f]);this.yaxisLabels.add(h)})}drawXAxisTexts(){const e=this.w,n=e.config.xaxis.labels,i=this.graphics.group({class:"apexcharts-xaxis"}),o=Ee.getPolygonPos(this.size,this.dataPointsLen);return e.labelData.labels.forEach((r,a)=>{const s=e.config.xaxis.labels.formatter,l=new Cc(this.w,this.ctx);if(o[a]){const c=this.getTextPos(o[a],this.size),u=s(r,{seriesIndex:-1,dataPointIndex:a,w:e});l.plotDataLabelsText({x:c.newX,y:c.newY,text:u,textAnchor:c.textAnchor,i:a,j:a,parent:i,className:"apexcharts-xaxis-label",color:Array.isArray(n.style.colors)&&n.style.colors[a]?n.style.colors[a]:"#a8a8a8",dataLabelsConfig:Ye({textAnchor:c.textAnchor,dropShadow:{enabled:!1}},n),offsetCorrection:!1}).on("click",f=>{if(typeof e.config.chart.events.xAxisLabelClick=="function"){const h=Object.assign({},e,{labelIndex:a});e.config.chart.events.xAxisLabelClick(f,this.ctx,h)}})}}),i}createPaths(e,n){const i=[];let o=[];const r=[];let a=[];if(e.length){o=[this.graphics.move(n.x,n.y)],a=[this.graphics.move(n.x,n.y)];let s=this.graphics.move(e[0].x,e[0].y),l=this.graphics.move(e[0].x,e[0].y);e.forEach((c,u)=>{s+=this.graphics.line(c.x,c.y),l+=this.graphics.line(c.x,c.y),u===e.length-1&&(s+="Z",l+="Z")}),i.push(s),r.push(l)}return{linePathsFrom:o,linePathsTo:i,areaPathsFrom:a,areaPathsTo:r}}getTextPos(e,n){let o="middle",r=e.x,a=e.y;return Math.abs(e.x)>=10?e.x>0?(o="start",r+=10):e.x<0&&(o="end",r-=10):o="middle",Math.abs(e.y)>=n-10&&(e.y<0?a-=10:e.y>0&&(a+=10)),{textAnchor:o,newX:r,newY:a}}getPreviousPath(e){const n=this.w;let i=null;for(let o=0;o0&&parseInt(r.realIndex,10)===parseInt(String(e),10)&&typeof n.globals.previousPaths[o].paths[0]<"u"&&(i=n.globals.previousPaths[o].paths[0].d)}return i}getDataPointsPos(e,n,i=this.dataPointsLen){e=e||[],n=n||[];const o=[];for(let r=0;r0,h=f&&d.bandsStyle&&d.bandsStyle.hideTrackWhenPresent,p=d.shape==="needle";if(d.track.show&&!h){const b=this.drawTracks({size:c,centerX:l,centerY:s,colorArr:u,series:e});a.add(b)}if(f){const b=this.drawBands({size:c,centerX:l,centerY:s,series:e});a.add(b)}const g=this.drawArcs({size:c,centerX:l,centerY:s,colorArr:u,series:e,skipValueArc:p&&!((n=d.needle)!=null&&n.showValueArc)});if(d.ticks&&d.ticks.show){const b=this.drawTicks({size:c,centerX:l,centerY:s,series:e});if(this.initialAnim&&!i.globals.dataChanged&&!i.globals.resized&&Ot.isBrowser()&&i.globals.shouldAnimate){const w=b.node;w.style.opacity="0",w.style.transition="opacity 280ms ease-out";const x=i.config.chart.animations.speed||800;setTimeout(()=>{w.style.opacity="1"},x)}a.add(b)}if(p){const b=this.drawNeedle({size:c,centerX:l,centerY:s,series:e});a.add(b)}let m=360;i.config.plotOptions.radialBar.startAngle<0&&(m=this.totalAngle);const v=(360-m)/360;if(i.globals.radialSize=c-c*v,this.radialDataLabels.value.show){const b=Math.max(this.radialDataLabels.value.offsetY,this.radialDataLabels.name.offsetY);i.globals.radialSize+=b*v}return a.add(g.g),i.config.plotOptions.radialBar.hollow.position==="front"&&(g.g.add(g.elHollow),g.dataLabels&&g.g.add(g.dataLabels)),r.add(a),r}drawTracks(e){const n=this.w,i=new Be(this.w),o=i.group({class:"apexcharts-tracks"}),r=new uo(this.w),a=new go(this.w),s=this.getStrokeWidth(e);e.size=e.size-s/2;for(let l=0;l=360&&(h=360-Math.abs(this.startAngle)-.1);const p=i.drawPath({d:"",stroke:d,strokeWidth:s*parseInt(u.strokeWidth,10)/100,fill:"none",strokeOpacity:u.opacity,classes:"apexcharts-radialbar-area"});if(u.dropShadow.enabled){const g=u.dropShadow;r.dropShadow(p,g)}c.add(p),p.attr("id","apexcharts-radialbarTrack-"+l),this.animatePaths(p,{centerX:e.centerX,centerY:e.centerY,endAngle:h,startAngle:f,size:e.size,i:l,totalItems:2,animBeginArr:0,dur:0,isTrack:!0})}return o}drawArcs(e){var n;const i=this.w,o=new Be(this.w),r=new go(this.w),a=new uo(this.w),s=o.group(),l=this.getStrokeWidth(e);e.size=e.size-l/2;let c=i.config.plotOptions.radialBar.hollow.background;const u=e.size-l*e.series.length-this.margin*e.series.length-l*parseInt(i.config.plotOptions.radialBar.track.strokeWidth,10)/100/2,d=u-i.config.plotOptions.radialBar.hollow.margin;i.config.plotOptions.radialBar.hollow.image!==void 0&&(c=this.drawHollowImage(e,s,u,c));const f=this.drawHollow({size:d,centerX:e.centerX,centerY:e.centerY,fill:c||"transparent"});if(i.config.plotOptions.radialBar.hollow.dropShadow.enabled){const v=i.config.plotOptions.radialBar.hollow.dropShadow;a.dropShadow(f,v)}let h=1;!this.radialDataLabels.total.show&&i.seriesData.series.length>1&&(h=0);let p=null;if(this.radialDataLabels.show){const v=i.dom.Paper.findOne(".apexcharts-datalabels-group");p=this.renderInnerDataLabels(v,this.radialDataLabels,{hollowSize:u,centerX:e.centerX,centerY:e.centerY,opacity:h})}i.config.plotOptions.radialBar.hollow.position==="back"&&(s.add(f),p&&s.add(p));let g=!1;i.config.plotOptions.radialBar.inverseOrder&&(g=!0);const m=((n=this.ctx.morphTypeChange)==null?void 0:n.isActive())===!0;for(let v=g?e.series.length-1:0;g?v>=0:v{const q=Math.min(Math.max(V,S),_);return Math.max(0,(q-S)/P)},O=T(Ee.negToZero(e.series[v]));let M=Math.round(this.totalAngle*O)+this.startAngle,I;i.globals.dataChanged&&(x=this.startAngle,I=Math.round(this.totalAngle*T(Ee.negToZero(i.globals.previousPaths[v])))+x),Math.abs(M)+Math.abs(w)>360&&(M=M-.01),Math.abs(I)+Math.abs(x)>360&&(I=I-.01);const R=M-w,D=Array.isArray(i.config.stroke.dashArray)?i.config.stroke.dashArray[v]:i.config.stroke.dashArray,F=m?this.ctx.morphTypeChange.getInitialPathFor(v,0):null,N=m?this.ctx.morphTypeChange.getFromType():null,B=!!F&&(N==="bar"||N==="funnel"||N==="pyramid"||N==="pie"||N==="donut"||N==="polarArea"),z=o.drawPath({d:F||"",stroke:B||e.skipValueArc?"transparent":y,strokeWidth:B||e.skipValueArc?0:l,fill:B?y:"none",fillOpacity:i.config.fill.opacity,classes:"apexcharts-radialbar-area apexcharts-radialbar-slice-"+v,strokeDashArray:D}),W=w+R/2,j=Ee.polarToCartesian(e.centerX,e.centerY,e.size,W);if(Be.setAttrs(z.node,{"data:angle":R,"data:value":e.series[v],"data:cx":j.x,"data:cy":j.y}),i.config.chart.dropShadow.enabled){const V=i.config.chart.dropShadow;a.dropShadow(z,V,v)}if(a.setSelectionFilter(z,0,v),this.addListeners(z,this.radialDataLabels),b.add(z),z.attr({index:0,j:v}),this.barLabels.enabled){const V=Ee.polarToCartesian(e.centerX,e.centerY,e.size,w),q=this.barLabels.formatter(i.seriesData.seriesNames[v],{seriesIndex:v,w:i}),Y=["apexcharts-radialbar-label"];this.barLabels.onClick||Y.push("apexcharts-no-click");let J=this.barLabels.useSeriesColors?i.globals.colors[v]:i.config.chart.foreColor;J||(J=i.config.chart.foreColor);const Q=V.x+this.barLabels.offsetX,G=V.y+this.barLabels.offsetY,ee=o.drawText({x:Q,y:G,text:q,textAnchor:"end",dominantBaseline:"middle",fontFamily:this.barLabels.fontFamily,fontWeight:this.barLabels.fontWeight,fontSize:this.barLabels.fontSize,foreColor:J,cssClass:Y.join(" ")});ee.on("click",this.onBarLabelClick),ee.attr({rel:v+1}),w!==0&&ee.attr({"transform-origin":`${Q} ${G}`,transform:`rotate(${w} 0 0)`}),b.add(ee)}let U=0;if(this.initialAnim&&!i.globals.resized&&!i.globals.dataChanged&&(U=i.config.chart.animations.speed),i.globals.dataChanged&&(U=i.config.chart.animations.dynamicAnimation.speed),this.animDur=U/(e.series.length*1.2)+this.animDur,this.animBeginArr.push(this.animDur),m&&F){const V=this.ctx.morphTypeChange.getSpeed(),q=this.getPiePath({me:this,startAngle:w,angle:R,size:e.size});if(B){const Y=this.ctx.morphTypeChange.buildRingSegmentPath(e.centerX,e.centerY,e.size,l,w,w+R);z.animate(V).plot(Y,"polygons").after(function(){this.attr({d:q,fill:"none",stroke:e.skipValueArc?"transparent":y,"stroke-width":e.skipValueArc?0:l})})}else z.animate(V).plot(q,"polygons").attr({"stroke-width":l})}else this.animatePaths(z,{centerX:e.centerX,centerY:e.centerY,endAngle:M,startAngle:w,prevEndAngle:I,prevStartAngle:x,size:e.size,i:v,totalItems:2,animBeginArr:this.animBeginArr,dur:U,shouldSetPrevPaths:!0})}return{g:s,elHollow:f,dataLabels:p}}_angleAtValue(e){const n=this.w.config.plotOptions.radialBar,i=typeof n.min=="number"?n.min:0,o=typeof n.max=="number"?n.max:100,r=o===i?i+1:o,s=(Math.max(i,Math.min(r,Number(e)))-i)/(r-i);return this.startAngle+s*(this.endAngle-this.startAngle)}_describeArc(e,n,i,o,r){const a=Ee.polarToCartesian(e,n,i,r),s=Ee.polarToCartesian(e,n,i,o),l=r-o,c=Math.abs(l)>180?1:0;return`M ${a.x} ${a.y} A ${i} ${i} 0 ${c} 0 ${s.x} ${s.y}`}drawBands(e){const n=this.w,i=new Be(this.w),o=n.config.plotOptions.radialBar,r=o.bands||[],a=i.group({class:"apexcharts-gauge-bands"}),s=this.getStrokeWidth(e),l=e.size-s/2-s-this.margin,c=s*parseInt(o.bandsStyle.strokeWidth,10)/100,u=typeof o.min=="number"?o.min:0,d=typeof o.max=="number"?o.max:100,f=d===u?0:(o.bandsStyle.gap||0)*((this.endAngle-this.startAngle)/(d-u));for(let h=0;h{var x,$,S;const _=this._angleAtValue(b),P=(x=y.length)!=null?x:8,T=y.placement==="inside"?f-P:f,O=y.placement==="inside"?f:f+P,M=Ee.polarToCartesian(e.centerX,e.centerY,T,_),I=Ee.polarToCartesian(e.centerX,e.centerY,O,_),k=s.drawLine(M.x,M.y,I.x,I.y,y.color||(w?"#666":"#999"),0,y.width||(w?2:1));if(u.add(k),w&&(($=c.labels)!=null&&$.show)){const E=(y.placement==="inside"?T:O)+(y.placement==="inside"?-1:1)*((S=c.labels.offset)!=null?S:6),R=Ee.polarToCartesian(e.centerX,e.centerY,E,_),D=typeof c.labels.formatter=="function"?c.labels.formatter(b):String(b),F=s.drawText({x:R.x,y:R.y,text:D,textAnchor:"middle",dominantBaseline:"middle",fontFamily:c.labels.fontFamily,fontSize:c.labels.fontSize,fontWeight:c.labels.fontWeight,foreColor:c.labels.color,cssClass:"apexcharts-gauge-tick-label"});u.add(F)}};for(let b=0;b0)for(let x=1;x<=m;x++){const $=(b+x/(m+1))/(g-1),S=h+$*(p-h);v(S,c.minor||{},!1)}}return u}drawNeedle(e){var n,i,o,r,a;const s=this.w,l=new Be(this.w),u=s.config.plotOptions.radialBar.needle||{},d=l.group({class:"apexcharts-gauge-needle"});if(!e.series||e.series.length===0)return d;const f=this.getStrokeWidth(e),h=e.size-f/2-f-this.margin,p=typeof u.length=="string"&&u.length.endsWith("%")?h*parseInt(u.length,10)/100:Number(u.length||h*.85),g=(n=u.baseWidth)!=null?n:4,m=(i=u.tipWidth)!=null?i:1,v=u.color||"#333",b=e.centerX,y=Number((o=u.offsetY)!=null?o:0),w=e.centerY+y,x=`M ${b+g/2} ${w} A ${g/2} ${g/2} 0 0 1 ${b-g/2} ${w} L ${b-m/2} ${w-p} L ${b+m/2} ${w-p} Z`,$=l.drawPath({d:x,stroke:v,strokeWidth:0,fill:v,classes:"apexcharts-gauge-needle-shape"});d.add($);const S=Number(e.series[0]),_=this._angleAtValue(S),P=this.initialAnim&&!s.globals.dataChanged&&!s.globals.resized,T=this.ctx,O=typeof T._lastNeedleAngle=="number"?T._lastNeedleAngle:this.startAngle;if(T._lastNeedleAngle=_,Ot.isBrowser()&&s.globals.shouldAnimate&&(P||s.globals.dataChanged)&&O!==_){const I=d.node;I.setAttribute("transform-origin",`${b} ${w}`),I.setAttribute("transform",`rotate(${O})`);const k=((r=u.animation)==null?void 0:r.duration)&&Number(u.animation.duration)||u.animationSpeed&&Number(u.animationSpeed)||((a=s.config.chart.animations.dynamicAnimation)==null?void 0:a.speed)||s.config.chart.animations.speed||800,E=1.70158,R=E+1,N=P?W=>1+R*Math.pow(W-1,3)+E*Math.pow(W-1,2):W=>1-Math.pow(1-W,3);s.globals.radialNeedleRAF!=null&&(We.cancelAnimationFrame(s.globals.radialNeedleRAF),s.globals.radialNeedleRAF=null);const B=performance.now(),z=W=>{if(this.w.globals.isDestroyed){s.globals.radialNeedleRAF=null;return}const j=Math.max(0,Math.min(1,(W-B)/k)),U=O+(_-O)*N(j);I.setAttribute("transform",`rotate(${U})`),j<1?s.globals.radialNeedleRAF=We.requestAnimationFrame(z):s.globals.radialNeedleRAF=null};s.globals.radialNeedleRAF=We.requestAnimationFrame(z)}else d.attr({"transform-origin":`${b} ${w}`,transform:`rotate(${_})`});return d}drawHollow(e){var n;const i=new Be(this.w),o=this.w.config.plotOptions.radialBar.hollow,r=i.drawCircle(e.size*2),a={class:"apexcharts-radialbar-hollow",cx:e.centerX,cy:e.centerY,r:e.size,fill:e.fill};return(o.stroke||o.strokeDasharray)&&(a.stroke=o.stroke||"transparent",a["stroke-width"]=(n=o.strokeWidth)!=null?n:1,o.strokeDasharray&&(a["stroke-dasharray"]=o.strokeDasharray)),r.attr(a),r}drawHollowImage(e,n,i,o){const r=this.w,a=new go(this.w),s=Ee.randomId(),l=r.config.plotOptions.radialBar.hollow.image;if(r.config.plotOptions.radialBar.hollow.imageClipped)a.clippedImgArea({width:i,height:i,image:l,patternID:`pattern${r.globals.cuid}${s}`}),o=`url(#pattern${r.globals.cuid}${s})`;else{const c=r.config.plotOptions.radialBar.hollow.imageWidth,u=r.config.plotOptions.radialBar.hollow.imageHeight;if(c===void 0&&u===void 0){const d=r.dom.Paper.image(l,function(f){this.move(e.centerX-f.width/2+r.config.plotOptions.radialBar.hollow.imageOffsetX,e.centerY-f.height/2+r.config.plotOptions.radialBar.hollow.imageOffsetY)});n.add(d)}else{const d=r.dom.Paper.image(l,function(){this.move(e.centerX-c/2+r.config.plotOptions.radialBar.hollow.imageOffsetX,e.centerY-u/2+r.config.plotOptions.radialBar.hollow.imageOffsetY),this.size(c,u)});n.add(d)}}return o}getStrokeWidth(e){const n=this.w;return e.size*(100-parseInt(n.config.plotOptions.radialBar.hollow.size,10))/100/(e.series.length+1)-this.margin}onBarLabelClick(e){var n;const i=e.target,o=parseInt((n=i.getAttribute("rel"))!=null?n:"",10)-1,r=this.barLabels.onClick,a=this.w;r&&r(a.seriesData.seriesNames[o],{w:a,seriesIndex:o})}}class mCe extends Bn{draw(e,n){var i,o,r,a,s,l,c,u,d;const f=this.w,h=new Be(this.w);this.rangeBarOptions=this.w.config.plotOptions.rangeBar,this.series=e,this.seriesRangeStart=f.rangeData.seriesRangeStart,this.seriesRangeEnd=f.rangeData.seriesRangeEnd,this.barHelpers.initVariables(e);const p=h.group({class:"apexcharts-rangebar-series apexcharts-plot-series"});for(let g=0;g0&&(this.visibleI=this.visibleI+1);let x=0;this.yRatio.length>1&&(this.yaxisIndex=f.globals.seriesYAxisReverseMap[b][0],x=b);const $=this.barHelpers.initialPositions(b),{y:S,zeroW:_,x:P,zeroH:T}=$;let O=(i=$.barWidth)!=null?i:0,M=(o=$.barHeight)!=null?o:0;const I=(r=$.yDivision)!=null?r:0,k=(a=$.xDivision)!=null?a:0;v=S,m=P;const E=h.group({class:"apexcharts-datalabels","data:realIndex":b}),R=h.group({class:"apexcharts-rangebar-goals-markers"});for(let D=0;D"u")break;if(this.isHorizontal){j=v+M*this.visibleI;const J=(I-M*V)/2;if((c=(l=f.config.series[g].data)==null?void 0:l[D])!=null&&c.x){const Q=this.detectOverlappingBars({i:g,j:D,barYPosition:j,srty:J,barHeight:M,yDivision:I,initPositions:$});M=Q.barHeight,j=Q.barYPosition}z=this.drawRangeBarPaths(Ye({indexes:{i:g,j:D,realIndex:b},barHeight:M,barYPosition:j,zeroW:_,yDivision:I,y1:N,y2:B},U)),O=z.barWidth}else{f.axisFlags.isXNumeric&&(m=(f.seriesData.seriesX[g][D]-f.globals.minX)/this.xRatio-O/2),W=m+O*this.visibleI;const J=(k-O*V)/2;if((d=(u=f.config.series[g].data)==null?void 0:u[D])!=null&&d.x){const Q=this.detectOverlappingBars({i:g,j:D,barXPosition:W,srtx:J,barWidth:O,xDivision:k,initPositions:$});O=Q.barWidth,W=Q.barXPosition}z=this.drawRangeColumnPaths(Ye({indexes:{i:g,j:D,realIndex:b,translationsIndex:x},barWidth:O,barXPosition:W,zeroH:T,xDivision:k},U)),M=z.barHeight}const q=this.barHelpers.drawGoalLine({barXPosition:z.barXPosition,barYPosition:j,goalX:z.goalX,goalY:z.goalY,barHeight:M,barWidth:O});q&&R.add(q),v=z.y,m=z.x;const Y=this.barHelpers.getPathFillColor(e,g,D,b);this.renderSeries({realIndex:b,pathFill:Y.color,lineFill:Y.useRangeColor?Y.color:f.globals.stroke.colors[b],j:D,i:g,x:m,y:v,y1:N,y2:B,pathFrom:z.pathFrom,pathTo:z.pathTo,strokeWidth:F,elSeries:w,series:e,barHeight:M,barWidth:O,barXPosition:W,barYPosition:j,columnGroupIndex:y,elDataLabelsWrap:E,elGoalsMarkers:R,visibleSeries:this.visibleI,type:"rangebar"})}p.add(w)}return p}detectOverlappingBars({i:e,j:n,barYPosition:i,barXPosition:o,srty:r,srtx:a,barHeight:s,barWidth:l,yDivision:c,xDivision:u,initPositions:d}){var f,h,p,g;const m=this.w;let v=[];const b=(h=(f=m.globals.seriesRangeName)==null?void 0:f[e])==null?void 0:h[n],y=(g=(p=m.config.series[e].data)==null?void 0:p[n])==null?void 0:g.x,w=Array.isArray(y)?y.join(" "):y,x=m.labelData.labels.map(S=>Array.isArray(S)?S.join(" "):S).indexOf(w),$=m.rangeData.seriesRange[e].findIndex(S=>{var _;return S.x===w&&((_=S.overlaps)==null?void 0:_.size)>0});return this.isHorizontal?(m.config.plotOptions.bar.rangeBarGroupRows?i=r+c*x:i=r+s*this.visibleI+c*x,$>-1&&!m.config.plotOptions.bar.rangeBarOverlap&&(v=Array.from(m.rangeData.seriesRange[e][$].overlaps),v.indexOf(b)>-1&&(s=d.barHeight/v.length,i=s*this.visibleI+c*(100-parseInt(this.barOptions.barHeight,10))/100/2+s*(this.visibleI+v.indexOf(b))+c*x))):(x>-1&&!m.labelData.timescaleLabels.length&&(m.config.plotOptions.bar.rangeBarGroupRows?o=a+u*x:o=a+l*this.visibleI+u*x),$>-1&&!m.config.plotOptions.bar.rangeBarOverlap&&(v=Array.from(m.rangeData.seriesRange[e][$].overlaps),v.indexOf(b)>-1&&(l=d.barWidth/v.length,o=l*this.visibleI+u*(100-parseInt(this.barOptions.barWidth,10))/100/2+l*(this.visibleI+v.indexOf(b))+u*x))),{barYPosition:i,barXPosition:o,barHeight:s,barWidth:l}}drawRangeColumnPaths({indexes:e,x:n,xDivision:i,barWidth:o,barXPosition:r,zeroH:a}){var s,l;const c=this.w,{i:u,j:d,realIndex:f,translationsIndex:h}=e,p=this.yRatio[h],g=this.getRangeValue(f,d);let m=Math.min(g.start,g.end),v=Math.max(g.start,g.end);const b=!(typeof((s=this.series[u])==null?void 0:s[d])>"u"||((l=this.series[u])==null?void 0:l[d])===null);b?(m=a-m/p,v=a-v/p):m=a;const y=Math.abs(v-m),w=this.barHelpers.getColumnPaths({barXPosition:r,barWidth:o,y1:m,y2:v,strokeWidth:this.strokeWidth,series:this.seriesRangeEnd,realIndex:f,i:f,j:d,w:c});if(b){const x=w.drawnBox,$=g.end>=g.start;this.recordColumnGeometry(f,d,{slotStart:x.x1,slotEnd:x.x2,levelStart:$?x.y1:x.y2,levelEnd:$?x.y2:x.y1,horizontal:!1})}if(!c.axisFlags.isXNumeric)n=n+i;else{const x=this.getBarXForNumericXAxis({x:n,j:d,realIndex:f,barWidth:o});n=x.x,r=x.barXPosition}return{pathTo:w.pathTo,pathFrom:w.pathFrom,barHeight:y,x:n,y:g.start<0&&g.end<0?m:v,goalY:this.barHelpers.getGoalValues("y",null,a,f,d,h),barXPosition:r}}preventBarOverflow(e){const n=this.w;return e<0&&(e=0),e>n.layout.gridWidth&&(e=n.layout.gridWidth),e}drawRangeBarPaths({indexes:e,y:n,y1:i,y2:o,yDivision:r,barHeight:a,barYPosition:s,zeroW:l}){const c=this.w,{realIndex:u,j:d}=e,f=this.preventBarOverflow(l+i/this.invertedYRatio),h=this.preventBarOverflow(l+o/this.invertedYRatio),p=this.getRangeValue(u,d),g=Math.abs(h-f),m=this.barHelpers.getBarpaths({barYPosition:s,barHeight:a,x1:f,x2:h,strokeWidth:this.strokeWidth,series:this.seriesRangeEnd,i:u,realIndex:u,j:d,w:c});if(p.start!=null&&p.end!=null){const v=m.drawnBox;this.recordColumnGeometry(u,d,{slotStart:v.y1,slotEnd:v.y2,levelStart:v.x1,levelEnd:v.x2,horizontal:!0})}return c.axisFlags.isXNumeric||(n=n+r),{pathTo:m.pathTo,pathFrom:m.pathFrom,barWidth:g,x:p.start<0&&p.end<0?f:h,goalX:this.barHelpers.getGoalValues("x",l,null,u,d,0),y:n}}recordColumnGeometry(e,n,i){const o=this.w.waterfallData&&this.w.waterfallData.geometry;o&&(!isFinite(i.slotStart)||!isFinite(i.levelEnd)||(o[e]||(o[e]=[]),o[e][n]=i))}getRangeValue(e,n){const i=this.w;return{start:i.rangeData.seriesRangeStart[e][n],end:i.rangeData.seriesRangeEnd[e][n]}}}function uw(t,e){let n=0;for(let r=0;r=s}function cM(t,e,n,i,o,r,a,s){if(a>=s){const l=i/s;let c=r;for(let u=0;ud&&(d=p),f++;else{if(cM(r,s,l,c,e,n,i,o),i>=o){const g=c/o;e+=g,i-=g}else{const g=c/i;n+=g,o-=g}l=0,c=0,u=1/0,d=-1/0}}return l>0&&cM(r,s,l,c,e,n,i,o),r}function bCe(t,e,n){const i=t.length,o=new Array(i);for(let s=0;s=m||b*2>=v)&&(b=0);let y=Math.max(0,s(h,r,m,v)||0);y>0&&v-b*2-y0),r=i.header||(()=>0);for(let a=0;ao&&o.id===e)}function zg(t,e,n,i,o,r=null,a={}){var s,l,c;const u=e&&typeof e=="object",d=u&&(l=(s=e.x)!=null?s:e.name)!=null?l:"",f=Number(u?(c=e.y)!=null?c:e.value:e),h={name:String(d),value:isNaN(f)?null:f,color:u&&e.color?e.color:void 0,_key:`${o}/${n}:${d}`};if(i&&!h.color&&(h.color=i[n%i.length]),a.keepDatum&&(h._datum=e),u&&Array.isArray(e.children)&&e.children.length)h.children=e.children.map((p,g)=>zg(t,p,g,null,h._key,r,a));else if(u&&e.drilldown!=null&&a.expandDrilldown!==!1){const p=r||new Set;if(!p.has(e.drilldown)){const g=wCe(t,e.drilldown);if(g&&Array.isArray(g.data)&&g.data.length){const m=new Set(p);m.add(e.drilldown);const v=Array.isArray(g.colors)?g.colors:null;h.children=g.data.map((b,y)=>zg(t,b,y,v,h._key,m,a))}}}return h}function SCe(t,e={}){const n=t.config.series,i=n&&n[0],o=i&&Array.isArray(i.data)?i.data:n;return Array.isArray(o)?o.map((r,a)=>zg(t,r,a,null,"",null,e)):[]}function CCe(t,e,n={}){const i=e||t.config.series;return Array.isArray(i)?i.map((o,r)=>{var a,s;const l=o&&Array.isArray(o.data)?o.data:[],c=`${r}:${(a=o==null?void 0:o.name)!=null?a:""}`;return{name:String((s=o==null?void 0:o.name)!=null?s:""),value:null,color:(o==null?void 0:o.color)||void 0,_key:c,_seriesIndex:r,children:l.map((d,f)=>zg(t,d,f,null,c,null,n))}}):[]}function p$(t){t.children&&t.children.length&&(t.children.forEach(e=>p$(e)),(t.value==null||isNaN(t.value))&&(t.value=t.children.reduce((e,n)=>e+Math.max(0,n.value||0),0))),(t.value==null||isNaN(t.value))&&(t.value=0)}function nd(t){if(typeof t!="string")return"";const e=t.indexOf("/");return e===-1?"":t.slice(e)}function $Ce(t){const e=[];let n=0;return t.forEach((i,o)=>{const r=[],a=(s,l,c)=>{s._parent=c,s._depth=l,s._si=o,s._leaf=!(s.children&&s.children.length),l>n&&(n=l),s._leaf?(s._di=r.length,r.push(s)):(s._di=-1,s.children.forEach(u=>a(u,l+1,s)))};a(i,0,null),e.push(r)}),{leaves:e,maxDepth:n}}function ACe(t){const e=t.globals.treemapRoots;if(e&&e.length)return{roots:e,maxDepth:t.globals.treemapMaxDepth||1,nested:!0};const n=CCe(t,t.config.series,{keepDatum:!0,expandDrilldown:!1});n.forEach(p$);const{maxDepth:i}=$Ce(n);return{roots:n,maxDepth:i,nested:!1}}const _Ce=t=>(t[2]-t[0])*(t[3]-t[1]);class PCe{constructor(e,n){this.ctx=n,this.w=e,this.strokeWidth=this.w.config.stroke.width,this.helpers=new HN(e,n),this.dynamicAnim=this.w.config.chart.animations.dynamicAnimation,this.labels=[],this.roots=[],this.drawn=[],this.nested=!1,this.showParents=!1,this.scale=null,this._levelCache=null,this._total=null,this._avgLabelSize=null,this._tooltipEl=null,this._tipOwned=!1,this._morphLeafIndex=0}draw(e){var n;const i=this.w,o=new Be(this.w,this.ctx),r=new go(this.w),a=o.group({class:"apexcharts-treemap"});if(i.globals.noData)return a;e.forEach(m=>{m.map(v=>Math.abs(v))}),this.negRange=this.helpers.checkColorRange(),i.config.series.forEach((m,v)=>{m.data.forEach(b=>{Array.isArray(this.labels[v])||(this.labels[v]=[]),this.labels[v].push(b.x)})});const s=ACe(i);this.nested=s.nested,this.roots=s.roots,this.scale=CN(i);const l=s.roots.length===1?s.roots[0].children||[]:s.roots;this.drawn=l;const c=i.config.plotOptions.treemap.parents;this.showParents=c.show===!0||c.show!==!1&&this.nested;const u=this._resolveFocus(l),d=u?[u]:l;xCe.generateNested(d,i.layout.gridWidth,i.layout.gridHeight,{padding:(m,v,b,y)=>this.showParents?this._levelPadding(v,b,y):0,header:(m,v,b,y)=>this.showParents?this._levelHeader(m,v,b,y):0});const f=(n=this.ctx)==null?void 0:n.morphTypeChange,h=!!f&&typeof f.isActive=="function"&&f.isActive()&&typeof f.getInitialPathAt=="function";this._morphLeafIndex=0;const p=this._leavesBySeries(d,i.config.series.length),g=this.showParents?this._parentsBySeries(d,i.config.series.length):[];return p.forEach((m,v)=>{var b;const y=o.group({class:"apexcharts-series apexcharts-treemap-series",seriesName:Ee.escapeString(i.seriesData.seriesNames[v]),rel:v+1,"data:realIndex":v});if(o.setupEventDelegation(y,".apexcharts-treemap-rect"),i.config.chart.dropShadow.enabled){const O=i.config.chart.dropShadow;new uo(this.w).dropShadow(a,O,v)}const w=o.group({class:"apexcharts-data-labels"}),x={xMin:1/0,yMin:1/0,xMax:-1/0,yMax:-1/0};this.showParents&&(g[v]||[]).forEach(O=>{this._drawParent(y,O,v)});const $=i.config.chart.animations,S=$.animateGradually,_=S&&S.enabled!==!1,P=new Array(m.length).fill(0);if(_){const O=m.length||1,M=Math.min(S.delay||0,$.speed*.5/O);m.map((k,E)=>({j:E,area:k.rect?_Ce(k.rect):0})).sort((k,E)=>E.area-k.area).forEach((k,E)=>{P[k.j]=E*M})}m.forEach((O,M)=>{const I=O.rect;if(!I)return;const k=O._di,E=I[0],R=I[1],D=I[2],F=I[3];x.xMin=Math.min(x.xMin,E),x.yMin=Math.min(x.yMin,R),x.xMax=Math.max(x.xMax,D),x.yMax=Math.max(x.yMax,F);const N=this._leafColor(v,k),B=N.color,z=r.fillPath({color:B,seriesNumber:v,dataPointIndex:k}),W=h?this._morphSourceForLeaf(O):null,j=W?o.drawPath({d:this._tilePath(E,R,D,F),fill:"#fff",stroke:i.config.plotOptions.treemap.useFillColorAsStroke?B:i.globals.stroke.colors[v],strokeWidth:this.strokeWidth,fillOpacity:1}):o.drawRect(E,R,D-E,F-R,i.config.plotOptions.treemap.borderRadius,"#fff",1,this.strokeWidth,i.config.plotOptions.treemap.useFillColorAsStroke?B:i.globals.stroke.colors[v]);j.attr({cx:E,cy:R,index:v,i:v,j:k,width:D-E,height:F-R,fill:z}),j.node.classList.add("apexcharts-treemap-rect"),j.node.setAttribute("data:key",nd(O._key));let U={x:E+(D-E)/2,y:R+(F-R)/2,width:0,height:0};const V={x:E,y:R,width:D-E,height:F-R};if(W)this._morphTile(j,W,this._tilePath(E,R,D,F),this.ctx.morphTypeChange.getSpeed(),v,k);else if(i.config.chart.animations.enabled&&!i.globals.dataChanged){let J=1;i.globals.resized||(J=i.config.chart.animations.speed),this.animateTreemap(j,U,V,J,P[M]||0)}if(i.globals.dataChanged){let J=1;this.dynamicAnim.enabled&&i.globals.shouldAnimate&&(J=this.dynamicAnim.speed,i.globals.previousPaths[v]&&i.globals.previousPaths[v][k]&&i.globals.previousPaths[v][k].rect&&(U=i.globals.previousPaths[v][k].rect),this.animateTreemap(j,U,V,J))}let q=this.getFontSize(I);i.config.plotOptions.treemap.dataLabels.format==="truncate"&&(q=parseInt(String(i.config.dataLabels.style.fontSize),10));let Y=null;if(i.config.dataLabels.enabled&&this._labelCanShow(q,D-E,F-R)){let J=i.config.dataLabels.formatter(this.labels[v][k],{value:i.seriesData.series[v][k],seriesIndex:v,dataPointIndex:k,w:i});i.config.plotOptions.treemap.dataLabels.format==="truncate"&&(J=this.truncateLabels(String(J),q,E,R,D,F)),i.seriesData.series[v][k]&&(Y=this.helpers.calculateDataLabels({text:J,x:(E+D)/2,y:(R+F)/2+this.strokeWidth/2+q/3,i:v,j:k,colorProps:N,fontSize:q,series:e})),i.config.dataLabels.enabled&&Y&&this.rotateToFitLabel(Y,q,J,E,R,D,F)}y.add(j),Y!==null&&y.add(Y)});const T=i.config.plotOptions.treemap.seriesTitle;if(!this.showParents&&i.config.series.length>1&&T&&T.show){const O=i.config.series[v].name||"";if(O&&x.xMin<1/0&&x.yMin<1/0){const{offsetX:M,offsetY:I,borderColor:k,borderWidth:E,borderRadius:R,style:D}=T,F=D.color||i.config.chart.foreColor,N={left:D.padding.left,right:D.padding.right,top:D.padding.top,bottom:D.padding.bottom},B=o.getTextRects(O,D.fontSize,D.fontFamily),z=B.width+N.left+N.right,W=B.height+N.top+N.bottom,j=x.xMin+(M||0),U=x.yMin+(I||0),V=o.drawRect(j,U,z,W,R,D.background,1,E,k),q=o.drawText({x:j+N.left,y:U+N.top+((b=B==null?void 0:B.height)!=null?b:0)*.75,text:O,fontSize:D.fontSize,fontFamily:D.fontFamily,fontWeight:D.fontWeight,foreColor:F,cssClass:D.cssClass||""});y.add(V),y.add(q)}}y.add(w),a.add(y)}),this._renderBreadcrumb(),a}_levelCfg(e){if(this._levelCache||(this._levelCache=[]),this._levelCache[e])return this._levelCache[e];const n=this.w.config.plotOptions.treemap,i=n.parents||{},o=(n.levels||[])[e]||{},r=vt(Ye(Ye({},i),o),{header:vt(Ye(Ye({},i.header||{}),o.header||{}),{style:Ye(Ye({},(i.header||{}).style||{}),(o.header||{}).style||{})}),hover:Ye(Ye({},i.hover||{}),o.hover||{})});return this._levelCache[e]=r,r}_levelPadding(e,n,i){const o=this._levelCfg(e);return Number(o.padding)||0}_levelHeader(e,n,i,o){const a=this._levelCfg(n).header||{};if(a.show===!1)return 0;const s=Number(a.height);if(!Number.isFinite(s)||s<=0)return 0;const l=Number(a.minWidth)||40;return i{if(r.children&&r.children.length)r.children.forEach(o);else{const a=r._si||0;i[a]&&i[a].push(r)}};return e.forEach(o),i}_parentsBySeries(e,n){const i=new Array(Math.max(1,n));for(let r=0;r{if(!r.children||!r.children.length)return;const a=r._si||0;i[a]&&i[a].push(r),r.children.forEach(o)};return e.forEach(o),i.forEach(r=>r.sort((a,s)=>(a.depth||0)-(s.depth||0))),i}_leafColor(e,n){const i=this.w;if(this.scale){const o=wN(i,e,n);if(o!=null){const r=this.scale.at(o);return{color:r,foreColor:NE(r),colorProps:{color:r,foreColor:NE(r),percent:0}}}}return this.helpers.getShadeColor(i.config.chart.type,e,n,this.negRange)}_parentChrome(e){const n=this.w,i=this._levelCfg(e),o=n.config.theme.mode==="dark",a=(i.header||{}).style||{},s=Math.min(e,3),l=o?255:0,c=`${l},${l},${l}`;return{fill:i.fill||`rgba(${c},${(o?.04:.03)+s*.02})`,fillOpacity:i.fillOpacity==null?1:i.fillOpacity,borderColor:i.borderColor||`rgba(${c},${o?.18:.14})`,borderWidth:i.borderWidth==null?1:i.borderWidth,borderRadius:i.borderRadius==null?n.config.plotOptions.treemap.borderRadius:i.borderRadius,headerBg:a.background||`rgba(${c},${o?.1:.07})`,headerColor:a.color||(o?"#e8e8e8":n.config.chart.foreColor),headerFontSize:a.fontSize||"12px",headerFontFamily:a.fontFamily||n.config.chart.fontFamily,headerFontWeight:a.fontWeight==null?600:a.fontWeight,hoverColor:i.hover&&i.hover.color||(o?"rgba(255,255,255,0.85)":"rgba(0,0,0,0.7)"),hoverWidth:i.hover&&i.hover.width||2,hoverShow:!(i.hover&&i.hover.show===!1)}}_drawParent(e,n,i){var o;const r=n.rect;if(!r)return;const a=this.w,s=new Be(this.w,this.ctx),l=n.depth||0,c=this._levelCfg(l),u=this._parentChrome(l),d=r[0],f=r[1],h=r[2]-r[0],p=r[3]-r[1];if(h<=0||p<=0)return;const g=s.group({class:"apexcharts-treemap-parent","data:depth":l,"data:name":Ee.escapeString(n.name)}),m=nd(n._key),v=this._morphKeyed()?this.ctx.morphTypeChange.getInitialPathForKey(m):null,b=v?s.drawPath({d:this._tilePath(d,f,d+h,f+p),fill:u.fill,stroke:u.borderColor,strokeWidth:u.borderWidth,fillOpacity:u.fillOpacity}):s.drawRect(d,f,h,p,u.borderRadius,u.fill,u.fillOpacity,u.borderWidth,u.borderColor);b.node.classList.add("apexcharts-treemap-parent-rect"),b.node.setAttribute("data:key",m),b.node.setAttribute("data:depth",String(l)),v&&this._morphTile(b,v,this._tilePath(d,f,d+h,f+p),this.ctx.morphTypeChange.getSpeed(),i,l),g.add(b);const y=n.headerHeight||0;let w="";if(y>0){const x=c.header||{},$=s.drawRect(d,f,h,y,0,u.headerBg,1,0,"transparent");$.node.classList.add("apexcharts-treemap-parent-header"),g.add($);let S=String((o=n.name)!=null?o:"");typeof x.formatter=="function"?S=String(x.formatter(n.name,{value:n.value,depth:l,seriesIndex:i,node:n,w:a})):x.showValue&&(S=`${S} ${this._formatValue(n.value)}`),w=S;const _=Number(x.offsetX)||0,P=x.align||"left",T=6,O=Math.max(0,h-T*2-Math.abs(_)),M=parseFloat(String(u.headerFontSize))||12,I=s.getTextBasedOnMaxWidth({text:S,maxWidth:O,fontSize:M});if(I){let k=d+T+_,E="start";P==="center"?(k=d+h/2+_,E="middle"):P==="right"&&(k=d+h-T+_,E="end");const R=s.drawText({x:k,y:f+y/2+M/3+(Number(x.offsetY)||0),text:I,textAnchor:E,fontSize:u.headerFontSize,fontFamily:u.headerFontFamily,fontWeight:u.headerFontWeight,foreColor:u.headerColor,cssClass:`apexcharts-treemap-parent-label ${x.style&&x.style.cssClass||""}`});R.node.setAttribute("pointer-events","none"),g.add(R)}this._attachParentEvents($.node,n,u,b),this._makeParentAccessible($.node,n,u,b,w)}this._attachParentEvents(b.node,n,u,b),g.node.setAttribute("role","group"),g.node.setAttribute("aria-label",this._parentLabel(n,w)),e.add(g)}_parentLabel(e,n){const i=this._drawnTotal(),o=i>0?(e._area/i*100).toFixed(1):"0",r=this._countLeaves(e);return`${n&&String(n).trim()?String(n).replace(/\s+/g," ").trim():`${e.name}, ${this._formatValue(e._area)}`}, ${r} ${r===1?"item":"items"}, ${o}% of total`}_makeParentAccessible(e,n,i,o,r){!e||!e.setAttribute||this._zoomEnabled()&&(e.setAttribute("role","button"),e.setAttribute("tabindex","0"),e.setAttribute("aria-label",`${this._parentLabel(n,r)}. Zoom in`),e.setAttribute("aria-expanded","false"),!(!Ot.isBrowser()||!e.addEventListener)&&(e.addEventListener("focus",()=>{o.node.setAttribute("stroke",i.hoverColor),o.node.setAttribute("stroke-width",String(i.hoverWidth+1))}),e.addEventListener("blur",()=>{o.node.setAttribute("stroke",i.borderColor),o.node.setAttribute("stroke-width",String(i.borderWidth))}),e.addEventListener("keydown",a=>{a.key!=="Enter"&&a.key!==" "&&a.key!=="Spacebar"||(a.preventDefault(),this._zoomTo(n,!0))})))}_attachParentEvents(e,n,i,o){if(!Ot.isBrowser()||!e||!e.addEventListener)return;const r=this.w;i.hoverShow&&(e.addEventListener("mouseenter",()=>{o.node.setAttribute("stroke",i.hoverColor),o.node.setAttribute("stroke-width",String(i.hoverWidth))}),e.addEventListener("mouseleave",()=>{o.node.setAttribute("stroke",i.borderColor),o.node.setAttribute("stroke-width",String(i.borderWidth))})),r.config.tooltip.enabled&&(e.addEventListener("mouseenter",a=>this._showParentTooltip(a,n)),e.addEventListener("mousemove",a=>this._positionTooltip(a)),e.addEventListener("mouseleave",()=>this._hideParentTooltip())),this._zoomEnabled()&&(e.style.cursor="pointer",e.addEventListener("click",()=>this._zoomTo(n)))}_zoomEnabled(){const e=this.w,n=e.config.plotOptions.treemap.zoom;if(!n||!n.enabled||!this.showParents)return!1;const i=e.config.drilldown;return i&&i.enabled&&Array.isArray(i.series)&&i.series.length?(this._warnedZoomConflict||(this._warnedZoomConflict=!0,console.warn("ApexCharts treemap: `plotOptions.treemap.zoom` and the drilldown feature both navigate the hierarchy, so zoom is ignored here. Drop `drilldown.series` to zoom a nested treemap instead.")),!1):!0}_resolveFocus(e){const n=this.w.globals.treemapFocusKey;if(!n||!this._zoomEnabled())return null;let i=null;const o=r=>{if(!i){if(r._key===n){i=r;return}r.children&&r.children.forEach(o)}};return e.forEach(o),i&&i.children&&i.children.length?i:null}_zoomTo(e,n=!1){const i=this.w;if(!e||!e.children||!e.children.length)return;const o=i.globals.treemapFocusKey===e._key?null:e._key;i.globals.treemapFocusKey=o,this._hideParentTooltip();const r=this.ctx.update();!n||!r||typeof r.then!="function"||r.then(()=>{if(!Ot.isBrowser())return;const a=i.dom.baseEl.querySelector(".apexcharts-breadcrumb .apexcharts-breadcrumb-item");if(a&&a.focus){a.focus();return}const s=i.dom.baseEl.querySelector(".apexcharts-treemap-parent-header[tabindex]");s&&s.focus&&s.focus()})}_focusChain(){const e=[],n=new Set(this.drawn||[]);let i=this._resolveFocus(this.drawn||[]);for(;i&&(e.unshift(i),!n.has(i));)i=i._parent;return e}_breadcrumbCfg(){const e=this.w.config.plotOptions.treemap.zoom;return _N(this.w,e&&e.breadcrumb)}_renderBreadcrumb(){if(!Ot.isBrowser())return;const e=this.w;if(!e.dom.elWrap||(ON(e),!this._zoomEnabled()))return;const n=this._focusChain();if(!n.length)return;const i=N1e(e,{ariaLabel:"Treemap breadcrumb",config:this._breadcrumbCfg(),compact:!0,crumbs:[{label:"All",data:null}].concat(n.map(o=>({label:o.name,data:o}))),onNavigate:(o,r)=>{e.globals.treemapFocusKey=r.data?r.data._key:null,this._hideParentTooltip(),this.ctx.update()}});i&&(this._placeBreadcrumb(i),PN(e,i))}_placeBreadcrumb(e){var n,i;const o=this.w,r=o.layout.translateY||0,a=(i=(n=this.ctx)==null?void 0:n.dimensions)==null?void 0:i.dimHelpers,s=a?a.getTitleSubtitleCoords("title").height+a.getTitleSubtitleCoords("subtitle").height:0,l=e.getBoundingClientRect().height||AN;if(r-s>=l+1){e.style.top=`${r-l-1}px`;return}e.style.top=`${s}px`;const c=o.config.theme.mode==="dark";e.style.background=c?"rgba(20,24,30,0.82)":"rgba(255,255,255,0.86)",e.style.borderRadius="4px"}_showParentTooltip(e,n){const i=this.w,o=this._tip();if(!o)return;const r=this._drawnTotal(),a=n._parent?n._parent._area:r,s=r>0?(n._area/r*100).toFixed(1):"0.0",l=a>0?(n._area/a*100).toFixed(1):s,c=this.w.config.plotOptions.treemap.parents,u=c&&c.tooltip&&c.tooltip.formatter,d=this._countLeaves(n);let f;if(typeof u=="function")f=u({name:n.name,value:n._area,depth:n.depth||0,leafCount:d,percentOfParent:Number(l),percentOfTotal:Number(s),node:n,w:i});else{const h=this._parentChrome(n.depth||0).headerBg;f=`
${Ee.escapeString(n.name)}: ${this._formatValue(n._area)}
${d} items, ${l}% of parent, ${s}% of total
`}o.innerHTML=f,o.classList.add("apexcharts-active"),o.style.opacity="1",this._tipOwned=!0,this._positionTooltip(e)}_tip(){return this._tooltipEl||(this._tooltipEl=this.w.dom.baseEl.querySelector(".apexcharts-tooltip")),this._tooltipEl}_positionTooltip(e){const n=this._tip();if(!n||!this._tipOwned)return;const i=this.w.dom.elWrap.getBoundingClientRect(),o=n.offsetWidth,r=n.offsetHeight,a=12;let s=e.clientX-i.left+a;s+o>i.width&&(s=e.clientX-i.left-o-a),s=Math.max(0,Math.min(s,i.width-o));let l=e.clientY-i.top+a;l+r>i.height&&(l=e.clientY-i.top-r-a),l=Math.max(0,Math.min(l,i.height-r)),n.style.left=s+"px",n.style.top=l+"px"}_hideParentTooltip(){const e=this._tip();!e||!this._tipOwned||(this._tipOwned=!1,e.classList.remove("apexcharts-active"),e.style.opacity="0")}_drawnTotal(){return this._total==null&&(this._total=(this.drawn||[]).reduce((e,n)=>e+this._subtreeArea(n),0)),this._total||0}_subtreeArea(e){if(e._area!=null)return e._area;const n=e.children;if(n&&n.length){let o=0;for(let r=0;rn+this._countLeaves(i),0)}_formatValue(e){var n,i,o,r,a;const s=this.w,l=((i=(n=s.config.tooltip)==null?void 0:n.y)==null?void 0:i.formatter)||((a=(r=(o=s.config.yaxis)==null?void 0:o[0])==null?void 0:r.labels)==null?void 0:a.formatter);if(typeof l=="function")try{return String(l(e,{seriesIndex:0,dataPointIndex:0,w:s}))}catch{}return String(e)}_labelCanShow(e,n,i){if(!Number.isFinite(e)||e<=0)return!1;const o=this.w.config.plotOptions.treemap.dataLabels,r=o&&o.minFontSize!=null?Number(o.minFontSize):0;return e=e}_averageLabelSize(){if(this._avgLabelSize!=null)return this._avgLabelSize;function e(i){let o,r=0;if(Array.isArray(i[0]))for(o=0;oa-o&&c.width<=s-r){const u=l.rotateAroundCenter(e.node);e.node.setAttribute("transform",`rotate(-90 ${u.x} ${u.y}) translate(${c.height/3})`)}}truncateLabels(e,n,i,o,r,a){const s=new Be(this.w),c=s.getTextRects(e,String(n)).width+this.w.config.stroke.width+5>r-i&&a-o>r-i?a-o:r-i,u=s.getTextBasedOnMaxWidth({text:e,maxWidth:c,fontSize:n});return e.length!==u.length&&c/n<5?"":u}_morphKeyed(){var e;const n=(e=this.ctx)==null?void 0:e.morphTypeChange;return!!(n&&typeof n.hasKeyedMarks=="function"&&n.hasKeyedMarks()&&typeof n.getInitialPathForKey=="function")}_morphSourceForLeaf(e){var n;const i=(n=this.ctx)==null?void 0:n.morphTypeChange;if(!i||typeof i.getInitialPathAt!="function")return null;if(this._morphKeyed()){const o=i.getInitialPathForKey(nd(e._key));if(o)return o}return i.getInitialPathAt(this._morphLeafIndex++)}_tilePath(e,n,i,o){return`M ${e} ${n} L ${i} ${n} L ${i} ${o} L ${e} ${o} Z`}_morphTile(e,n,i,o,r,a){new Gs(this.w,this.ctx).morphSVG(e,r,a,"none",n,i,o,0)}animateTreemap(e,n,i,o,r=0){const a=new Gs(this.w);a.animateRect(e,n,i,o,()=>{a.animationCompleted(e)},r)}}const OCe=.05,TCe=.05,ECe=1/45;function uM(t,e,n,i){return{value:t,velocity:0,target:t,stiffness:e,damping:n}}function dM(t,e){if(e<=0)return hM(t);let n=e;for(;n>0;){const i=Math.min(n,ECe),o=-t.stiffness*(t.value-t.target)-t.damping*t.velocity;t.velocity+=o*i,t.value+=t.velocity*i,n-=i}return!!hM(t)&&(t.value=t.target,t.velocity=0,!0)}function fM(t,e){t.target=e}function hM(t){var e,n;const i=(e=t.restVelocity)!=null?e:OCe,o=(n=t.restDisplacement)!=null?n:TCe;return Math.abs(t.velocity)isFinite(i))||n[2]<=0||n[3]<=0?null:Object.freeze(vt(Ye({},t),{name:t.name||"anonymous",path:t.path.trim(),viewBox:n,fillRule:t.fillRule==="evenodd"?"evenodd":void 0}))}function RCe(t){return t&&DCe()[t]||null}const mM=Math.PI*(3-Math.sqrt(5));function E0(t){return 1-Math.pow(1-t,3)}function LCe(t){return e=>1+(t+1)*Math.pow(e-1,3)+t*Math.pow(e-1,2)}function FCe(t){return t<.5?4*t*t*t:1-Math.pow(-2*t+2,3)/2}const NCe=800,BCe=.25,bh=0,vM=1,M0=2;function zCe(t,e){const[n,i]=MCe(t),o=NCe/Math.max(1,e);return[n*o*o,i*o]}class HCe{constructor(e,n){this.ctx=n,this.w=e,this._lastDotR=1,this._gridTrack=null,this._gridDenom=1,this._scatterAxis=null,this._specCache=new Map,this._markWarned=null}draw(e){const n=this.w,i=new Be(n,this.ctx),o=i.group({class:"apexcharts-unit"});if(n.globals.noData||!Array.isArray(e)||e.length===0)return o;const r=n.config.plotOptions.unit,a=r.layout==="packed"?"packed":r.layout==="columns"?"columns":r.layout==="grid"?"grid":r.layout==="scatter"?"scatter":r.layout==="arc"?"arc":r.layout==="custom"?"custom":"grouped",s=r.transition,l=s==="flow",c=s==="identity",u=r.unitValue>0?r.unitValue:1;let d=e.map(O=>{const M=Math.abs(Ee.parseNumber(O))/u;return M>0?Math.max(1,Math.round(M)):0});d=this._applyMaxUnits(d,r.maxUnits);const f=d.reduce((O,M)=>O+M,0),h=a==="packed"?this._layoutPacked(d,r):a==="columns"?this._layoutColumns(d,r):a==="grid"?this._layoutGrid(d,r):a==="scatter"?this._layoutScatter(r):a==="arc"?this._layoutArc(d,r):a==="custom"?this._layoutCustom(d,r):this._layoutGrouped(d,r),p=a==="grid"&&!!(r.grid&&r.grid.split);p&&this._drawGridTrack(o,i,r),a==="scatter"&&this._drawScatterAxes(o,i);const g=this._lastDotR,m=this._shouldAnimate(),v=this.ctx&&this.ctx.morphTypeChange,b=m&&!!v&&typeof v.isActive=="function"&&v.isActive()&&typeof v.getInitialCenterFor=="function",y=b&&typeof v.getInitialSlotFor=="function",w=b&&typeof v.usesPieceTakeover=="function"&&v.usesPieceTakeover(),x=m&&!b&&this.ctx?this.ctx._unitPrevDots:null,$=new Map,S=[],_=n.seriesData.unitData||[],P=this._bubbleStats(_,r,g);let T=0;if(h.forEach(O=>{const M=n.globals.colors[O.i]||n.globals.colors[0]||"#008FFB",I=i.group({class:"apexcharts-series",seriesName:Ee.escapeString(n.seriesData.seriesNames[O.i]||`series-${O.i+1}`),rel:O.i+1,"data:realIndex":O.i}),k=b&&!y?v.getInitialCenterFor(O.i):null,E=O.dots.length,R=_[O.i];if(O.dots.forEach((D,F)=>{const N=D.j!=null?D.j:F,B=R?R[N]:void 0,z=B&&typeof B=="object"&&B.fillColor?B.fillColor:M,W=D.r!=null?D.r:P?this._radiusForValue(this._unitValueOf(B),P):g,j=this._markSpecFor(r,B,O.i,W),U=this._drawDot(i,r,W,z,O.i,N,j);I.add(U);let V;if(c){const q=B&&typeof B=="object"?B.id!=null?B.id:B.name:void 0;V=q!=null?`id:${q}`:`g:${T}`}else l?V=String(T):D.slot!=null?V=`slot:${D.slot}`:V=`${O.i}:${N}`;if(T++,$.set(V,{x:D.x,y:D.y,fill:z,r:W,spec:j}),w)this._place(U.node,j,D.x,D.y),U.node.setAttribute("opacity","0"),U.node.setAttribute("data-piece-hidden","1");else if(m){const q=x&&x.get(V),Y=q||(y?v.getInitialSlotFor(O.i,N,E):k),J=r.gather&&r.gather.enter||"burst",Q=p||J==="fade"||J==="rise",G=Y?Y.x:Q?D.x:O.cx,ee=Y?Y.y:J==="rise"&&!p?D.y+14:Q?D.y:O.cy;U.node.style.opacity=Y?"1":"0",this._place(U.node,j,G,ee),S.push({node:U.node,spec:j,x:D.x,y:D.y,cx0:G,cy0:ee,key:V,r0:q&&q.r!=null?q.r:W,r1:W,fill0:q?q.fill:z,fill1:z,delay:0,isEnter:!Y})}else this._place(U.node,j,D.x,D.y)}),(a==="grouped"||a==="columns"||p)&&r.clusterLabels&&r.clusterLabels.show&&d[O.i]>0){const D=p?this._gridDenom:f;this._drawClusterLabel(I,O,d[O.i],D,r,M)}o.add(I)}),this._outerLabelsOn(r)&&this._drawOuterLabels(o,h,d,f,r,m&&!x),x){const O=this._collectExits(x,$,r);if(O.length){const M=i.group({class:"apexcharts-unit-exits"});o.add(M),this._runExits(M,O,r)}}return this.ctx&&(this.ctx._unitPrevDots=$),this.ctx&&(!m||b)&&(this.ctx._unitSprings=null),m&&S.length?this._runGather(S):n.globals.animationEnded=!0,o}_applyMaxUnits(e,n){const i=e.reduce((r,a)=>r+a,0);if(!n||n<=0||i<=n)return e;const o=n/i;return console.warn(`[ApexCharts] unit chart: ${i} dots exceeds maxUnits (${n}); counts were scaled down proportionally. Raise plotOptions.unit.maxUnits or use plotOptions.unit.unitValue to represent more units per dot.`),e.map(r=>r>0?Math.max(1,Math.round(r*o)):0)}_layoutCustom(e,n){const i=this.w,o=i.layout.gridWidth,r=i.layout.gridHeight,a=e.reduce((v,b)=>v+b,0),s=this._resolveLayoutProvider(n);if(!s)return console.warn("[ApexCharts] unit chart: layout 'custom' needs plotOptions.unit.positions (a function, or the name of a layout registered with ApexCharts.registerUnitLayout). Falling back to 'grouped'."),this._layoutGrouped(e,n);const l=this._outerLabelsOn(n)?this._outerLabelGutter(e,n):0;this._lastOuterGutter=l;const c={x:l,y:0,width:Math.max(1,o-l*2),height:r},u=Math.sqrt(c.width*c.height/Math.PI),d=this._resolveStep(n,u,a);this._lastDotR=this._dotRadiusFromStep(d,n);const f=this._lastDotR,h=this._layoutObjects(e,f);let p;try{p=s(h,c)}catch(v){return console.warn("[ApexCharts] unit chart: the layout provider threw; falling back to 'grouped'.",v),this._layoutGrouped(e,n)}if(!Array.isArray(p))return console.warn("[ApexCharts] unit chart: the layout provider must return an array of {id, x, y}; falling back to 'grouped'."),this._layoutGrouped(e,n);const g=new Map;p.forEach(v=>{!v||!isFinite(v.x)||!isFinite(v.y)||g.set(String(v.id),{x:v.x,y:v.y,r:typeof v.r=="number"&&v.r>0?v.r:void 0})});const m=e.map((v,b)=>({i:b,cx:o/2,cy:r/2,outerR:f,dots:[]}));return h.forEach(v=>{const b=g.get(v.id);b&&m[v.seriesIndex].dots.push({x:b.x,y:b.y,r:b.r,j:v.dataPointIndex})}),m.forEach(v=>{if(!v.dots.length)return;let b=0,y=0;v.dots.forEach(x=>{b+=x.x,y+=x.y}),v.cx=b/v.dots.length,v.cy=y/v.dots.length;let w=0;v.dots.forEach(x=>{w=Math.max(w,Math.hypot(x.x-v.cx,x.y-v.cy))}),v.outerR=w+f}),m}_layoutObjects(e,n){const i=this.w,o=i.seriesData.unitData||[],r=i.seriesData.seriesNames||[],a=[];let s=0;return e.forEach((l,c)=>{var u;const d=o[c];for(let f=0;f_).filter(S=>e[S]>0),l=Math.max(1,s.length),c=new Array(e.length).fill(-1);s.forEach((S,_)=>c[S]=_);const u=o/l,d=r-a,f=Math.max(1,...e),h=Math.min(u,d)*.08,p=Math.max(4,Math.min(u,d)/2-h),g=this._resolveStep(n,p,f);this._lastDotR=this._dotRadiusFromStep(g,n);const m=this._lastDotR,v=a+d/2,b=e.map(S=>g*Math.sqrt(Math.max(1,S))+m),y=S=>c[S]>=0?u*(c[S]+.5):o/2;let w=e.map((S,_)=>y(_));const x=s.map(S=>b[S]);let $=!1;for(let S=1;ST+2*O,0)+S*(l-1);let P;if(_<=o){let T=(o-_)/2;P=x.map(O=>{const M=T+O;return T+=2*O+S,M})}else if(l===1)P=[o/2];else{const T=x[0],O=o-x[l-1];P=x.map((M,I)=>T+(O-T)*I/(l-1))}w=e.map((T,O)=>c[O]>=0?P[c[O]]:o/2)}return e.map((S,_)=>({i:_,cx:w[_],cy:v,outerR:b[_],dots:this._spiral(w[_],v,S,g,0)}))}_layoutPacked(e,n){const i=this.w,o=i.layout.gridWidth,r=i.layout.gridHeight,a=6,s=Math.max(1,e.reduce((g,m)=>g+m,0)),l=Math.max(4,Math.min(o,r-a)/2-Math.min(o,r)*.06),c=this._resolveStep(n,l,s);this._lastDotR=this._dotRadiusFromStep(c,n);const u=o/2,d=a+(r-a)/2,f=e.map((g,m)=>m);n.sortByGroup!==!1&&f.sort((g,m)=>e[g]-e[m]);const h=e.map((g,m)=>({i:m,cx:u,cy:d,outerR:c*Math.sqrt(s)+this._lastDotR,dots:[]}));let p=0;return f.forEach(g=>{for(let m=0;mI+k,0)),s=n.arc||{},l=typeof s.startAngle=="number"?s.startAngle:-90,c=typeof s.endAngle=="number"?s.endAngle:90,u=l*Math.PI/180,d=c*Math.PI/180,f=d-u||Math.PI,h=Math.max(0,Math.min(.95,typeof s.innerRadiusRatio=="number"?s.innerRadiusRatio:.4)),p=I=>Math.sin(I),g=I=>-Math.cos(I),m=this._arcBounds(u,d),v=Math.min(o,r)*.04,b=Math.max(1e-6,m.maxX-m.minX),y=Math.max(1e-6,m.maxY-m.minY),w=Math.max(4,Math.min((o-2*v)/b,(r-2*v)/y)),x=w*h,$=o/2-(m.minX+m.maxX)/2*w,S=r/2-(m.minY+m.maxY)/2*w,_=this._arcAllocate(a,x,w,f,n);this._lastDotR=_.dotR;const P=[];for(let I=0;I<_.R;I++){const k=_.radii[I],E=_.seatsPerRow[I];for(let R=0;RI.a-k.a);const T=e.map((I,k)=>({i:k,cx:$,cy:S,outerR:w,dots:[]}));let O=0,M=0;return P.forEach((I,k)=>{for(;O=e[O];)O++,M=0;O>=e.length||(T[O].dots.push({x:I.x,y:I.y,slot:k}),M++)}),T}_arcBounds(e,n){const i=u=>Math.sin(u),o=u=>-Math.cos(u),r=Math.min(e,n),a=Math.max(e,n),s=[0,i(e),i(n)],l=[0,o(e),o(n)],c=Math.PI/2;for(let u=Math.ceil(r/c);u*c<=a;u++)s.push(i(u*c)),l.push(o(u*c));return{minX:Math.min(...s),maxX:Math.max(...s),minY:Math.min(...l),maxY:Math.max(...l)}}_arcAllocate(e,n,i,o,r){const a=r.spacing>0?r.spacing:1.05,s=Math.abs(o)||Math.PI,l=this._fixedRadius(r),c=f=>{f=Math.max(1,Math.round(f));const h=[];for(let x=0;xx+$,0)||1,g=h.map(x=>e*x/p),m=g.map(x=>Math.floor(x));let v=e-m.reduce((x,$)=>x+$,0);for(g.map((x,$)=>({idx:$,frac:x-Math.floor(x)})).sort((x,$)=>$.frac-x.frac).forEach(x=>{v>0&&(m[x.idx]++,v--)});v>0;)m[f-1]++,v--;const b=f===1?i-n||i:(i-n)/(f-1);let y=1/0;for(let x=0;x=1)d=c(u);else if(l){const f=2*l*a;d=c((i-n)/f+1)}else{const f=Math.max(1,Math.min(40,Math.ceil(Math.sqrt(e))+6));d=c(1);for(let h=2;h<=f;h++){const p=c(h);p.dotR>d.dotR&&(d=p)}}return l&&(d.dotR=l),d}_layoutColumns(e,n){const i=this.w,o=i.layout.gridWidth,r=i.layout.gridHeight,a=!!(n.clusterLabels&&n.clusterLabels.show),s=a&&n.clusterLabels.position==="bottom",l=a&&!s?30:6,c=e.map((T,O)=>O).filter(T=>e[T]>0),u=Math.max(1,c.length),d=new Array(e.length).fill(-1);c.forEach((T,O)=>d[T]=O);const f=o/u,h=f*.62,p=Math.max(8,r*.04)+(s?30:0),g=Math.max(4,r-l-p),m=Math.max(1,...e),v=n.spacing>0?n.spacing:1,b=n.columns?n.columns.size:void 0;let y;n.shape!=="image"&&b==="auto"?y=null:n.shape!=="image"&&typeof b=="number"&&b>0?y=b:y=this._fixedRadius(n);let w=1,x=0;if(y){x=2*y*v,this._lastDotR=y;const T=Math.max(1,Math.floor(g/x)),O=Math.max(1,Math.floor(h/x));w=Math.max(1,Math.min(O,Math.ceil(m/T)))}else{let T=0;const O=Math.max(1,Math.min(40,Math.round(h/4)));for(let M=1;M<=O;M++){const I=Math.ceil(m/M),k=Math.min(h/M,g/I);k>T&&(T=k,w=M)}x=T,this._lastDotR=Math.max(1,x/(2*v))}const $=this._lastDotR,S=Math.ceil(m/w),_=Math.min(g,S*x),P=l+(g+_)/2;return e.map((T,O)=>{const M=d[O]>=0?f*(d[O]+.5):o/2,k=Math.ceil(Math.max(1,T)/w)*x,E=M-w*x/2+x/2,R=[];for(let D=0;D0?a.columns:10)),l=a.fillFrom==="top"?"top":"bottom",c=a.total>0?this._largestRemainder(e,Math.round(a.total)):e.slice(),u=c.reduce((P,T)=>P+T,0),d=Math.max(1,Math.ceil(Math.max(1,u)/s)),f=6,h=n.spacing>0?n.spacing:1,p=Math.max(4,o),g=Math.max(4,r-f),m=this._fixedRadius(n);let v=0;m?(v=2*m*h,this._lastDotR=m):(v=Math.min(p/s,g/d),this._lastDotR=Math.max(1,v/(2*h)));const b=s*v,y=d*v,w=(o-b)/2+v/2,x=f+(g-y)/2,$=P=>l==="bottom"?x+y-v/2-P*v:x+v/2+P*v,S=e.map((P,T)=>({i:T,cx:o/2,cy:f+g/2,outerR:Math.max(b,y)/2,dots:[]}));let _=0;for(let P=0;P0?a.columns:10)),l=a.fillFrom==="top"?"top":"bottom",c=Math.max(1,Math.round(a.total>0?a.total:100)),u=Math.max(1,Math.ceil(c/s)),d=e.map((R,D)=>D).filter(R=>e[R]>0),f=Math.max(1,d.length),h=a.max>0?a.max:Math.max(1,...e),p=Math.max(1,Math.round(a.tileColumns>0?a.tileColumns:Math.ceil(Math.sqrt(f)))),g=Math.max(1,Math.ceil(f/p)),m=!(n.clusterLabels&&n.clusterLabels.show===!1),v=m&&n.clusterLabels&&n.clusterLabels.position==="bottom",b=m&&!v?22:4,y=m&&v?22:4,w=o/p,x=r/g,$=Math.max(4,w*.86),S=Math.max(4,x-b-y),_=n.spacing>0?n.spacing:1,P=this._fixedRadius(n);let T=0;P?(T=2*P*_,this._lastDotR=P):(T=Math.min($/s,S/u),this._lastDotR=Math.max(1,T/(2*_)));const O=s*T,M=u*T,I=(R,D)=>l==="bottom"?R+M-T/2-D*T:R+T/2+D*T,k=[],E=[];return d.forEach((R,D)=>{const F=D%p,N=Math.floor(D/p),B=F*w,z=N*x,W=B+(w-O)/2+T/2,j=z+b+(S-M)/2,U=Y=>({x:W+Y%s*T,y:I(j,Math.floor(Y/s))});for(let Y=0;Y{let u;if(i.shape==="square"){const d=r*2;u=n.drawRect(0,0,d,d,i.borderRadius||0,s,1,0,"none"),u.node.setAttribute("fill",s),u.node.setAttribute("x",String(c.x-r)),u.node.setAttribute("y",String(c.y-r))}else u=n.drawCircle(r,{fill:s,"stroke-width":0,stroke:"none"}),u.node.setAttribute("fill",s),u.node.setAttribute("cx",String(c.x)),u.node.setAttribute("cy",String(c.y));u.node.classList.add("apexcharts-unit-track-cell"),l.add(u)}),e.add(l)}_layoutScatter(e){const n=this.w,i=e.scatter||{};if(i.y==="value")return this._layoutScatter2D(e);if(i.orientation==="vertical")return this._layoutScatterVertical(e);const o=n.layout.gridWidth,r=n.layout.gridHeight,a=n.seriesData.unitData||[],s=n.seriesData.seriesNames||[],l=V=>this._unitValueOf(V),c=this._scatterSizeStats(i,a),u=a.map(V=>Array.isArray(V)?V.map(l):[]),d=V=>V!=null&&isFinite(V),f=u.map((V,q)=>q).filter(V=>u[V].some(d)),h=Math.max(1,f.length);let p=1/0,g=-1/0;u.forEach(V=>V.forEach(q=>{q!=null&&isFinite(q)&&(qg&&(g=q))})),p===1/0&&(p=0,g=1);const m=Math.max(2,Math.round(i.tickAmount>0?i.tickAmount:5)),v=this._scatterValueDomain(i,p,g,m),b=v.min,y=v.max,w=y-b||1,x=i.laneLabelWidth!=null?Math.max(0,i.laneLabelWidth):h>1?92:8,$=30+(i.xTitle?20:0),S=x,_=o-8,P=10,T=r-$,O=Math.max(4,_-S),M=Math.max(4,T-P),I=V=>S+(V-b)/w*O,k=M/h,E=V=>P+k*(V+.5);let R=0;const D=this._fixedRadius(e);if(D)R=D;else{const V=Math.max(1,...f.map(q=>u[q].filter(d).length));R=Math.max(2,Math.min(6,k*.12,O/(2.5*Math.sqrt(V))))}this._lastDotR=R;const F=e.spacing>0?e.spacing:1,N=Math.max(.5,R*F),B=i.spread==="jitter",z=[],W=[],j=c?c.rMax:R;f.forEach((V,q)=>{const Y=E(q);W.push({i:V,cy:Y,name:s[V]||`series-${V+1}`});const Q=(a[V]||[]).map((G,ee)=>{const X=l(G),K={j:ee,px:I(d(X)?X:b),y:Y};return c&&(K.r=this._scatterRadius(G,c,R)),K});if(B){const G=Math.max(j,k/2-j);Q.forEach((ee,X)=>{const K=(X*9301+49297)%233280/233280;ee.y=Y+(K*2-1)*G})}else this._beeswarm(Q,Y,R,N,j);z.push({i:V,cx:(S+_)/2,cy:Y,outerR:k/2,dots:Q.map(G=>({x:G.px,y:G.y,r:G.r}))})});const U=v.ticks;return this._scatterAxis={mode:"1d",plotL:S,plotR:_,plotT:P,plotB:T,xMin:b,xMax:y,plotX:I,ticks:U,lanes:W,xTitle:i.xTitle,formatter:typeof i.xFormatter=="function"?i.xFormatter:null,gridlines:i.gridlines!==!1},z}_layoutScatterVertical(e){const n=this.w,i=e.scatter||{},o=n.layout.gridWidth,r=n.layout.gridHeight,a=n.seriesData.unitData||[],s=n.seriesData.seriesNames||[],l=V=>this._unitValueOf(V),c=this._scatterSizeStats(i,a),u=a.map(V=>Array.isArray(V)?V.map(l):[]),d=V=>V!=null&&isFinite(V),f=u.map((V,q)=>q).filter(V=>u[V].some(d)),h=Math.max(1,f.length);let p=1/0,g=-1/0;u.forEach(V=>V.forEach(q=>{q!=null&&isFinite(q)&&(qg&&(g=q))})),p===1/0&&(p=0,g=1);const m=Math.max(2,Math.round(i.tickAmount>0?i.tickAmount:5)),v=this._scatterValueDomain(i,p,g,m),b=v.min,y=v.max,w=y-b||1,x=46+(i.xTitle?18:0),$=h>1?26:10,S=x,_=o-10,P=10,T=r-$,O=Math.max(4,_-S),M=Math.max(4,T-P),I=V=>T-(V-b)/w*M,k=O/h,E=V=>S+k*(V+.5);let R=0;const D=this._fixedRadius(e);if(D)R=D;else{const V=Math.max(1,...f.map(q=>u[q].filter(d).length));R=Math.max(2,Math.min(6,k*.12,M/(2.5*Math.sqrt(V))))}this._lastDotR=R;const F=e.spacing>0?e.spacing:1,N=Math.max(.5,R*F),B=i.spread==="jitter",z=[],W=[],j=c?c.rMax:R;f.forEach((V,q)=>{const Y=E(q);W.push({i:V,cx:Y,name:s[V]||`series-${V+1}`});const Q=(a[V]||[]).map((G,ee)=>{const X=l(G),K={j:ee,py:I(d(X)?X:b),x:Y};return c&&(K.r=this._scatterRadius(G,c,R)),K});if(B){const G=Math.max(j,k/2-j);Q.forEach((ee,X)=>{const K=(X*9301+49297)%233280/233280;ee.x=Y+(K*2-1)*G})}else this._beeswarm(Q,Y,R,N,j,!0);z.push({i:V,cx:Y,cy:(P+T)/2,outerR:k/2,dots:Q.map(G=>({x:G.x,y:G.py,r:G.r}))})});const U=v.ticks;return this._scatterAxis={mode:"1d",orientation:"vertical",plotL:S,plotR:_,plotT:P,plotB:T,vMin:b,vMax:y,plotY:I,ticks:U,lanes:W,valueTitle:i.xTitle,formatter:typeof i.xFormatter=="function"?i.xFormatter:null,gridlines:i.gridlines!==!1},z}_layoutScatter2D(e){const n=this.w,i=n.layout.gridWidth,o=n.layout.gridHeight,r=e.scatter||{},a=n.seriesData.unitData||[],s=j=>typeof j=="number"&&isFinite(j),l=j=>j&&typeof j=="object"?j.x:null,c=j=>j&&typeof j=="object"?j.y!=null?j.y:j.value:null,u=a.map((j,U)=>U).filter(j=>(a[j]||[]).some(U=>s(l(U))&&s(c(U))));let d=1/0,f=-1/0,h=1/0,p=-1/0;a.forEach(j=>(j||[]).forEach(U=>{const V=l(U),q=c(U);s(V)&&s(q)&&(Vf&&(f=V),qp&&(p=q))})),d===1/0&&(d=0,f=1,h=0,p=1);const g=Math.max(2,Math.round(r.tickAmount>0?r.tickAmount:5)),m=Math.max(2,Math.round(r.yTickAmount>0?r.yTickAmount:5)),v=this._niceScale(r.xMin!=null?r.xMin:d,r.xMax!=null?r.xMax:f,g),b=this._niceScale(r.yMin!=null?r.yMin:h,r.yMax!=null?r.yMax:p,m),y=r.xMin!=null?r.xMin:v.min,w=r.xMax!=null?r.xMax:v.max,x=r.yMin!=null?r.yMin:b.min,$=r.yMax!=null?r.yMax:b.max,S=w-y||1,_=$-x||1,P=46+(r.yTitle?18:0),T=30+(r.xTitle?20:0),O=P,M=i-12,I=10,k=o-T,E=Math.max(4,M-O),R=Math.max(4,k-I),D=j=>O+(j-y)/S*E,F=j=>k-(j-x)/_*R,N=this._scatterSizeStats(r,a),B=this._fixedRadius(e)||5;this._lastDotR=B;const z=[];u.forEach(j=>{const V=(a[j]||[]).map(q=>{const Y=l(q),J=c(q);return{x:D(s(Y)?Y:y),y:F(s(J)?J:x),r:N?this._scatterRadius(q,N,B):void 0}});z.push({i:j,cx:(O+M)/2,cy:(I+k)/2,outerR:R/2,dots:V})});const W=(j,U,V,q,Y,J)=>{const Q=[];if(Y)for(let G=0;G(c||[]).forEach(u=>{const d=u&&typeof u=="object"?u[a]:null;typeof d=="number"&&isFinite(d)&&(dl&&(l=d))})),s===1/0?null:{zmin:s,zmax:l,rMin:o,rMax:r,field:a}}_scatterRadius(e,n,i){if(!n)return i;const o=e&&typeof e=="object"?e[n.field]:null;if(typeof o!="number"||!isFinite(o))return n.rMin;const r=n.zmax>n.zmin?(o-n.zmin)/(n.zmax-n.zmin):1,a=Math.max(0,Math.min(1,r)),s=n.rMin*n.rMin,l=n.rMax*n.rMax;return Math.sqrt(s+a*(l-s))}_beeswarm(e,n,i,o,r,a=!1){const s=a?"py":"px",l=a?"x":"y",c=e.slice().sort((f,h)=>f[s]-h[s]),u=[],d=r??i;c.forEach(f=>{const h=f.r!=null?f.r:i;let p=0;for(let g=0;g<2e3;g++){const m=g===0?0:Math.ceil(g/2)*o*(g%2?1:-1),v=n+m;let b=!0;for(let y=u.length-1;y>=0;y--){const w=u[y],x=f[s]-w.f;if(x>h+d)break;const $=h+w.r,S=v-w.s;if(x*x+S*S<$*$){b=!1;break}}if(b){p=m;break}}f[l]=n+p,u.push({f:f[s],s:f[l],r:h})})}_scatterValueDomain(e,n,i,o){const r=(l,c,u)=>{const d=[];for(let f=l;f<=c+u*.5;f+=u)d.push(Math.abs(f)l||(c=l+1);const u=(c-l)/Math.max(1,o-1);return nc&&(c+=Math.ceil((i-c)/u)*u),{min:l,max:c,ticks:r(l,c,u)}}const a=this._niceScale(n,i,o),s=a.spacing||(a.max-a.min)/Math.max(1,o-1);return{min:a.min,max:a.max,ticks:r(a.min,a.max,s)}}_niceScale(e,n,i){const o=e;let r=n;r>o||(r=o+1);const a=this._niceNum(r-o,!1),s=this._niceNum(a/Math.max(1,i-1),!0);return{min:Math.floor(o/s)*s,max:Math.ceil(r/s)*s,spacing:s}}_niceNum(e,n){const i=e>0?e:1,o=Math.floor(Math.log(i)/Math.LN10),r=i/Math.pow(10,o);let a;return n?a=r<1.5?1:r<3?2:r<7?5:10:a=r<=1?1:r<=2?2:r<=5?5:10,a*Math.pow(10,o)}_drawScatterAxes(e,n){const i=this.w;if(!Ot.isBrowser())return;const o=this._scatterAxis;if(!o)return;const r="http://www.w3.org/2000/svg",a=n.group({class:"apexcharts-unit-axis"}),s=i.config.grid&&i.config.grid.borderColor||"rgba(128,128,128,0.18)",l="rgba(128,128,128,0.5)",c=i.config.xaxis&&i.config.xaxis.labels&&i.config.xaxis.labels.style&&i.config.xaxis.labels.style.colors,u=Array.isArray(c)?c[0]:c,d=u||"rgba(120,130,140,0.9)",f=(p,g,m,v,b)=>{const y=We.createElementNS(r,"line");y.setAttribute("x1",String(p)),y.setAttribute("y1",String(g)),y.setAttribute("x2",String(m)),y.setAttribute("y2",String(v)),y.setAttribute("stroke",b),y.setAttribute("shape-rendering","crispEdges"),a.node.appendChild(y)},h=(p,g,m,v,b,y,w,x)=>{const $=We.createElementNS(r,"text");$.setAttribute("class",x),$.setAttribute("x",String(g)),$.setAttribute("y",String(m)),$.setAttribute("text-anchor",v),$.setAttribute("dominant-baseline","middle"),$.setAttribute("font-size",`${y}px`),$.setAttribute("font-family",i.config.chart.fontFamily||"inherit"),$.setAttribute("font-weight",String(w)),$.setAttribute("fill",b),$.textContent=p,a.node.appendChild($)};if(o.mode==="2d"){if(o.yTicks.forEach(p=>{const g=o.plotY(p);o.gridlines&&f(o.plotL,g,o.plotR,g,s);const m=o.yFormatter?String(o.yFormatter(p)):this._formatTick(p);h(m,o.plotL-8,g,"end",d,11,400,"apexcharts-unit-tick")}),o.xTicks.forEach(p=>{const g=o.plotX(p);o.gridlines&&f(g,o.plotT,g,o.plotB,s);const m=o.xFormatter?String(o.xFormatter(p)):this._formatTick(p);h(m,g,o.plotB+14,"middle",d,11,400,"apexcharts-unit-tick")}),f(o.plotL,o.plotB,o.plotR,o.plotB,l),f(o.plotL,o.plotT,o.plotL,o.plotB,l),o.xTitle&&h(String(o.xTitle),(o.plotL+o.plotR)/2,o.plotB+32,"middle",d,12,600,"apexcharts-unit-axis-title"),o.yTitle){const p=We.createElementNS(r,"text");p.setAttribute("class","apexcharts-unit-axis-title");const g=14,m=(o.plotT+o.plotB)/2;p.setAttribute("x",String(g)),p.setAttribute("y",String(m)),p.setAttribute("text-anchor","middle"),p.setAttribute("font-size","12px"),p.setAttribute("font-family",i.config.chart.fontFamily||"inherit"),p.setAttribute("font-weight","600"),p.setAttribute("fill",d),p.setAttribute("transform",`rotate(-90 ${g} ${m})`),p.textContent=String(o.yTitle),a.node.appendChild(p)}e.add(a);return}if(o.orientation==="vertical"){if(o.ticks.forEach(p=>{const g=o.plotY(p);o.gridlines&&f(o.plotL,g,o.plotR,g,s);const m=o.formatter?String(o.formatter(p)):this._formatTick(p);h(m,o.plotL-8,g,"end",d,11,400,"apexcharts-unit-tick")}),f(o.plotL,o.plotT,o.plotL,o.plotB,l),o.valueTitle){const p=We.createElementNS(r,"text");p.setAttribute("class","apexcharts-unit-axis-title");const g=14,m=(o.plotT+o.plotB)/2;p.setAttribute("x",String(g)),p.setAttribute("y",String(m)),p.setAttribute("text-anchor","middle"),p.setAttribute("font-size","12px"),p.setAttribute("font-family",i.config.chart.fontFamily||"inherit"),p.setAttribute("font-weight","600"),p.setAttribute("fill",d),p.setAttribute("transform",`rotate(-90 ${g} ${m})`),p.textContent=String(o.valueTitle),a.node.appendChild(p)}o.lanes.forEach(p=>{const g=u||i.globals.colors[p.i]||i.globals.colors[0]||"#008FFB";h(p.name,p.cx,o.plotB+16,"middle",g,12,600,"apexcharts-unit-lane-label")}),e.add(a);return}o.ticks.forEach((p,g)=>{const m=o.plotX(p);o.gridlines&&f(m,o.plotT,m,o.plotB,s);const v=o.formatter?String(o.formatter(p)):this._formatTick(p),b=g===0?"start":g===o.ticks.length-1?"end":"middle";h(v,m,o.plotB+14,b,d,11,400,"apexcharts-unit-tick")}),f(o.plotL,o.plotB,o.plotR,o.plotB,l),o.xTitle&&h(String(o.xTitle),(o.plotL+o.plotR)/2,o.plotB+32,"middle",d,12,600,"apexcharts-unit-axis-title"),o.plotL>12&&o.lanes.forEach(p=>{const g=u||i.globals.colors[p.i]||i.globals.colors[0]||"#008FFB";h(p.name,o.plotL-8,p.cy,"end",g,12,600,"apexcharts-unit-lane-label")}),e.add(a)}_formatTick(e){if(!isFinite(e))return"";const n=Math.abs(e);return n>=1e6?`${+(e/1e6).toFixed(1)}M`:n>=1e4?`${+(e/1e3).toFixed(1)}k`:Number.isInteger(e)?String(e):String(+e.toFixed(2))}_largestRemainder(e,n){const i=e.reduce((u,d)=>u+d,0);if(i<=0||n<=0)return e.map(()=>0);const o=e.map(u=>u/i*n),r=o.map(u=>Math.floor(u)),a=r.reduce((u,d)=>u+d,0),s=Math.max(0,n-a),l=o.map((u,d)=>({i:d,frac:u-Math.floor(u)})).sort((u,d)=>d.frac-u.frac),c=r.slice();for(let u=0;u0?e.sizeByValue.maxRadius:null:typeof e.size=="number"&&e.size>0?e.size:null}_bubbleActive(e){const n=e.sizeByValue;return!!(n&&n.enabled&&e.shape!=="image"&&e.shape!=="square")}_unitValueOf(e){if(typeof e=="number")return e;if(e&&typeof e=="object"){const n=e.value!=null?e.value:e.y;return typeof n=="number"?n:null}return null}_radiusForValue(e,n){if(e==null||!isFinite(e))return n.minR;const i=n.max>n.min?(e-n.min)/(n.max-n.min):1,o=Math.max(0,Math.min(1,i));if(n.scale==="linear")return n.minR+o*(n.maxR-n.minR);const r=n.minR*n.minR,a=n.maxR*n.maxR;return Math.sqrt(r+o*(a-r))}_bubbleStats(e,n,i){if(!this._bubbleActive(n))return null;let o=1/0,r=-1/0;if(e.forEach(c=>{c&&c.forEach(u=>{const d=this._unitValueOf(u);d!=null&&isFinite(d)&&(dr&&(r=d))})}),o===1/0||r0?e.spacing:1,r=this._fixedRadius(e);return r?2*r*o:n/(Math.sqrt(Math.max(1,i))+.5)}_dotRadiusFromStep(e,n){const i=n.spacing>0?n.spacing:1,o=this._fixedRadius(n);return o||Math.max(1,e/(2*i))}_isCorner(e){return e.shape==="square"||e.shape==="image"}_halfExtent(e,n){if(e.shape==="image"&&e.image)return{hx:(e.image.width||20)/2,hy:(e.image.height||20)/2};const i=n??this._lastDotR;return{hx:i,hy:i}}_place(e,n,i,o){const r=n;r.pk===M0?e.setAttribute("transform","translate("+(i-r.ox)+","+(o-r.oy)+r.tail):r.pk===vM?(e.setAttribute("x",String(i-r.hx)),e.setAttribute("y",String(o-r.hy))):(e.setAttribute("cx",String(i)),e.setAttribute("cy",String(o)))}_baseSpec(e,n){const i=n??this._lastDotR;if(!this._isCorner(e))return{pk:bh,r:i};const{hx:o,hy:r}=this._halfExtent(e,i);return{pk:vM,hx:o,hy:r,r:i}}_resolveMark(e){if(e==null)return null;if(typeof e=="object")return gM(e);if(typeof e!="string"||!e)return null;const n=e.trim();if(n[0]==="M"||n[0]==="m")return gM(n);const i=RCe(n);return i||(this._markWarned||(this._markWarned=new Set),this._markWarned.has(n)||(this._markWarned.add(n),console.warn(`[ApexCharts] unit chart: no mark named "${n}" is registered. Register one with ApexCharts.registerUnitMark("${n}", pathData), or import a catalog from 'apexcharts/pictograms'.`)),null)}_glyphSpec(e,n,i){const o=Math.round(n*10)/10,r=e.name+"|"+e.path.length+"|"+o,a=this._specCache.get(r);if(a)return a;const s=e.viewBox||[0,0,100,100],l=Math.max(0,Math.min(.9,i.padding||0)),c=typeof i.scale=="number"&&i.scale>0?i.scale:1,u=2*o*(1-l)*c,d=i.fit==="width"?u/s[2]:i.fit==="height"?u/s[3]:u/Math.max(s[2],s[3]),f=Object.freeze({pk:M0,mark:e,d:e.path,fillRule:e.fillRule,s:d,ox:(s[0]+s[2]/2)*d,oy:(s[1]+s[3]/2)*d,tail:") scale("+d+")",r:o});return this._specCache.set(r,f),f}_markSpecFor(e,n,i,o){if(e.shape!=="pictogram")return this._baseSpec(e,o);const r=e.pictogram||{},a=n&&typeof n=="object"?n.mark:void 0,s=Array.isArray(r.mark)?r.mark[i%r.mark.length]:r.mark,l=this._resolveMark(a??s);return l?this._glyphSpec(l,o,r):this._baseSpec(vt(Ye({},e),{shape:r.fallback==="square"?"square":"circle"}),o)}_drawDot(e,n,i,o,r,a,s){const l=this.w,c=l.config.stroke.show?l.config.stroke.width:0,u=Array.isArray(l.globals.stroke.colors)&&l.globals.stroke.colors[r]||"none",d=typeof l.config.fill.opacity=="number"?l.config.fill.opacity:1;let f;if(s&&s.pk===M0)f=l.dom.Paper.path(s.d),f.node.setAttribute("fill",o),s.fillRule==="evenodd"&&f.node.setAttribute("fill-rule","evenodd"),d<1&&f.node.setAttribute("fill-opacity",String(d)),f.node.setAttribute("data:r",String(s.r));else if(n.shape==="image"&&n.image&&n.image.src){const h=n.image.width||20,p=n.image.height||20;f=l.dom.Paper.image(n.image.src),f.node.setAttribute("width",String(h)),f.node.setAttribute("height",String(p)),f.node.setAttribute("preserveAspectRatio","xMidYMid meet"),n.image.tint&&f.node.setAttribute("filter",`url(#${this._tintFilter(o)})`)}else if(n.shape==="square"){const h=i*2;f=e.drawRect(0,0,h,h,n.borderRadius||0,o,1,c,u),f.node.setAttribute("fill",o),d<1&&f.node.setAttribute("fill-opacity",String(d))}else f=e.drawCircle(i,{fill:o,"stroke-width":c,stroke:u}),f.node.setAttribute("fill",o),d<1&&f.node.setAttribute("fill-opacity",String(d));return f.node.classList.add("apexcharts-unit-area"),f.node.setAttribute("i",String(r)),f.node.setAttribute("j",String(a)),f}_tintFilter(e){const n=this.w,i="http://www.w3.org/2000/svg",o=String(e).replace(/[^a-zA-Z0-9]/g,""),r=`apexcharts-unit-tint-${n.globals.chartID}-${o}`,a=n.dom.Paper.node;if(a.querySelector(`#${r}`))return r;let s=a.querySelector("defs");s||(s=We.createElementNS(i,"defs"),a.insertBefore(s,a.firstChild));const l=We.createElementNS(i,"filter");l.setAttribute("id",r),l.setAttribute("x","0%"),l.setAttribute("y","0%"),l.setAttribute("width","100%"),l.setAttribute("height","100%");const c=We.createElementNS(i,"feFlood");c.setAttribute("flood-color",e),c.setAttribute("result","flood");const u=We.createElementNS(i,"feComposite");return u.setAttribute("in","flood"),u.setAttribute("in2","SourceAlpha"),u.setAttribute("operator","in"),l.appendChild(c),l.appendChild(u),s.appendChild(l),r}_placeDot(e,n,i,o,r){this._place(e,r||this._baseSpec(n),i,o)}_rgb(e){if(typeof e!="string")return null;let n=e.trim();if(n[0]==="#"){n.length===4&&(n="#"+n[1]+n[1]+n[2]+n[2]+n[3]+n[3]);const o=parseInt(n.slice(1,7),16);return isNaN(o)?null:[o>>16&255,o>>8&255,o&255]}const i=n.match(/rgba?\(([^)]+)\)/);if(i){const o=i[1].split(",").map(r=>parseFloat(r));if(o.length>=3&&o.every(r=>!isNaN(r)))return[o[0],o[1],o[2]]}return null}_shouldAnimate(){const e=this.w,n=e.config.chart.animations;return!(!Ot.isBrowser()||!n||n.enabled===!1||e.globals.shouldAnimate===!1||e.globals.resized&&!e.globals.dataChanged||n.respectReducedMotion&&u$())}_seedSprings(e,n,i){const[o,r]=zCe(n.spring,i),a=this.ctx?this.ctx._unitSprings:null,s=new Map;for(let l=0;l1?p/(a-1)*r:0;const s=i.gather||{},l=s.motion||"auto";l==="spring"||l==="auto"&&(!s.easing||s.easing==="outCubic")?this._seedSprings(e,s,o):this.ctx&&(this.ctx._unitSprings=null);for(let p=0;p{if(this.w.globals.isDestroyed){this.w.globals.unitGatherRAF=null,this.w.globals.animationEnded=!0;return}const g=Math.min(BCe,Math.max(0,(p-f)/1e3));f=p;let m=!0;for(let v=0;v=0&&!b.released&&(fM(b.sx,b.x),fM(b.sy,b.y),b.released=!0);const _=dM(b.sx,g),P=dM(b.sy,g);(!b.released||!_||!P)&&(m=!1),$=b.sx.value,S=b.sy.value}else{const _=u(w);$=b.cx0+(b.x-b.cx0)*_,S=b.cy0+(b.y-b.cy0)*_}if(this._place(b.node,b.spec,$,S),b.isEnter&&(b.node.style.opacity=String(Math.min(1,w*2.5))),b._c0&&b._c1){const _=Math.round(b._c0[0]+(b._c1[0]-b._c0[0])*x),P=Math.round(b._c0[1]+(b._c1[1]-b._c0[1])*x),T=Math.round(b._c0[2]+(b._c1[2]-b._c0[2])*x);b.node.setAttribute("fill",`rgb(${_},${P},${T})`)}b.spec.pk===bh&&b.r0!=null&&b.r1!=null&&b.r0!==b.r1&&b.node.setAttribute("r",String(b.r0+(b.r1-b.r0)*x)),w<1&&(m=!1)}if(m){for(let v=0;v=o))break;return r}_runExits(e,n,i){const o=this.w,r=new Be(o,this.ctx),a=this._lastDotR,s=o.layout.gridWidth/2,l=o.layout.gridHeight/2,c=i.layout==="grid"||i.layout==="scatter"||i.layout==="arc"||i.layout==="custom"?0:.35,u=[];if(n.forEach(p=>{const g=p.r!=null?p.r:a,m=p.spec||this._baseSpec(i,g),v=this._drawDot(r,i,g,p.fill,0,0,m);v.node.classList.add("apexcharts-unit-exit"),this._place(v.node,m,p.x,p.y),e.add(v),u.push({node:v.node,x0:p.x,y0:p.y,spec:m})}),!this._shouldAnimate()){u.forEach(p=>p.node.remove());return}const d=Math.max(1,o.config.chart.animations.speed||800);this.w.globals.unitExitRAF!=null&&(We.cancelAnimationFrame(this.w.globals.unitExitRAF),this.w.globals.unitExitRAF=null);const f=performance.now(),h=p=>{if(this.w.globals.isDestroyed){this.w.globals.unitExitRAF=null;return}const g=Math.max(0,Math.min(1,(p-f)/d)),m=E0(g);for(let v=0;v0?n/i*100:0,l=o.clusterLabels,c=typeof l.formatter=="function"?l.formatter(a,{seriesIndex:e,value:n,percent:s,w:r}):`${a} ${s.toFixed(1)}%`;return String(c).split(` -`)}_outerLabelGutter(e,n){const i=this.w,o=n.clusterLabels,r=o.external.connector||{},a=e.reduce((f,h)=>f+h,0),s=[];if(e.forEach((f,h)=>{f>0&&s.push(...this._outerLabelLines(h,f,a,n))}),!s.length)return 0;const l=cCe(i,s,{fontSize:o.fontSize,fontFamily:o.fontFamily||i.config.chart.fontFamily}),c=r.gap!=null?r.gap:8,u=r.length!=null?r.length:22,d=l+c+u+8+Math.abs(parseFloat(o.external.offsetX)||0);return Math.min(d,i.layout.gridWidth*.25)}_drawOuterLabels(e,n,i,o,r,a){const s=this.w;if(!Ot.isBrowser())return;const l=r.clusterLabels,c=l.external,u=c.connector||{},d=u.gap!=null?u.gap:8,f=u.length!=null?u.length:22,h=parseFloat(c.offsetX)||0,p=parseFloat(c.offsetY)||0,g=s.layout.gridWidth,m=s.layout.gridHeight,v=this._lastDotR,b=n.filter(I=>I.dots.length>0);if(!b.length)return;let y=0,w=0;if(b.length>1){const I=b.map(E=>E.cx),k=b.map(E=>E.cy);y=Math.max(...I)-Math.min(...I),w=Math.max(...k)-Math.min(...k)}const x=y>w,$=parseFloat(l.fontSize)||13,S=Math.round($*1.35),_=[];if(b.slice().sort((I,k)=>I.cy-k.cy).forEach((I,k)=>{const E=this._outerLabelLines(I.i,i[I.i],o,r);if(!E.some(W=>W!==""))return;const R=x?I.cx>=g/2?"right":"left":k%2===0?"right":"left",D=R==="right"?1:-1;let F=I.dots[0],N=-1/0;I.dots.forEach(W=>{const j=D*W.x-.75*Math.abs(W.y-I.cy);j>N&&(N=j,F=W)});const B={x:F.x+D*(F.r||v),y:F.y},z={x:B.x+D*d,y:B.y};_.push({i:I.i,lines:E,anchor:B,elbow:z,labelX:z.x+D*f+h,idealY:B.y+p,labelY:B.y+p,side:R})}),!_.length)return;const T=_.reduce((I,k)=>Math.max(I,k.lines.length),1)*S,O=T/2;["left","right"].forEach(I=>{jN(_.filter(k=>k.side===I),T+2,m-O,O)});const M=new Be(s,this.ctx).group({class:"apexcharts-unit-outer-labels"});if(a){const I=Math.max(1,s.config.chart.animations.speed||800);M.node.classList.add("apexcharts-unit-label-delay"),M.node.style.animationDelay=`${Math.min(I*.45,600)/1e3}s`}_.forEach(I=>{const k=s.globals.colors[I.i]||s.globals.colors[0]||"#008FFB";M.add(WN(s,{lines:I.lines,lineHeight:S,anchor:I.anchor,elbow:I.elbow,labelX:I.labelX,labelY:I.labelY,side:I.side,connector:{show:u.show!==!1,width:u.width!=null?u.width:1.5,color:u.color||k},style:{fontSize:l.fontSize,fontFamily:l.fontFamily||s.config.chart.fontFamily,fontWeight:l.fontWeight},foreColor:l.color||s.config.chart.foreColor,groupClass:"apexcharts-unit-outer-label-group",textClass:"apexcharts-unit-outer-label",connectorClass:"apexcharts-unit-label-connector"}))}),e.add(M)}_drawClusterLabel(e,n,i,o,r,a){const s=this.w;if(!Ot.isBrowser())return;const l="http://www.w3.org/2000/svg",c=s.seriesData.seriesNames[n.i]||`series-${n.i+1}`,u=o>0?i/o*100:0,d=r.clusterLabels,f=parseFloat(d.fontSize)||13;let h;typeof d.formatter=="function"?h=d.formatter(c,{seriesIndex:n.i,value:i,percent:u,w:s}):h=`${c} (${u.toFixed(1)}%)`;const p=typeof h=="string"?h:String(h),g=We.createElementNS(l,"text");g.setAttribute("class","apexcharts-unit-label"),g.setAttribute("text-anchor","middle"),g.setAttribute("font-size",`${f}px`),g.setAttribute("font-family",d.fontFamily||s.config.chart.fontFamily||"inherit"),g.setAttribute("font-weight",String(d.fontWeight||600)),g.setAttribute("fill",d.color||a);const m=d.position==="bottom",v=n.outerR+f*.6+3+(d.offsetY||0),b=p.length*f*.55;if(!m&&!n.flat&&d.curved!==!1&&b<=Math.PI*v*.95){const w=n.cy,x=n.cx-v,$=n.cx+v,S=`M ${x} ${w} A ${v} ${v} 0 0 1 ${$} ${w}`,_=`apexcharts-unit-label-${s.globals.chartID}-${n.i}`,P=We.createElementNS(l,"path");P.setAttribute("id",_),P.setAttribute("d",S),P.setAttribute("fill","none"),P.setAttribute("stroke","none");const T=We.createElementNS(l,"textPath");T.setAttribute("href",`#${_}`),T.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",`#${_}`),T.setAttribute("startOffset","50%"),T.textContent=p,g.appendChild(T),e.node.appendChild(P)}else{g.setAttribute("x",String(n.cx));const w=m?n.cy+n.outerR+f+6+(d.offsetY||0):n.cy-n.outerR-6-(d.offsetY||0);g.setAttribute("y",String(w)),g.textContent=p}e.node.appendChild(g)}}const yh=Math.PI/180,bM=180/Math.PI,I0="http://www.w3.org/2000/svg",$l="http://www.w3.org/1999/xhtml",du=(t,e,n)=>t+(e-t)*n;class WCe{constructor(e,n){this.ctx=n,this.w=e;const i=e.config;this.cfg=i.plotOptions.sunburst,this.strokeWidth=i.stroke.show?i.stroke.width:0,this.strokeColor=Array.isArray(i.stroke.colors)?i.stroke.colors[0]:i.stroke.colors||"#fff",this.startAngle=this.cfg.startAngle,this.endAngle=this.cfg.endAngle,this.maxDepth=0,this.centerX=0,this.centerY=0,this.maxRadius=0,this.total=1,this._focusMaxDepth=0,this._focus=null,this._zoomGen=0,this._roots=[],this._nodesAll=[],this._innerR=()=>0,this._outerR=()=>0,this._tooltipEl=null,this._lblSeq=0,this._morphLeafIndex=0,this._graphics=null,this._ringsG=null,this._labelsG=null}draw(e){const n=this.w,i=new Be(this.w);this._graphics=i;const o=i.group({class:"apexcharts-sunburst"});if(n.globals.noData||!e||!e.length)return o;const r=n.layout.gridWidth,a=n.layout.gridHeight;if(this.centerX=r/2+(this.cfg.offsetX||0),this.centerY=a/2+(this.cfg.offsetY||0),this.maxRadius=Math.min(r,a)/2.05-this.strokeWidth-(n.config.chart.sparkline.enabled?0:n.config.chart.dropShadow.blur),this.maxRadius<5||(this._roots=this._buildHierarchy(),!this._roots.length))return o;this._roots.forEach(u=>this._fillValues(u)),this._validateStrict(),this._nodesAll=[];const s=n.globals.colors||[];this._roots.forEach((u,d)=>{this._colorPass(u,u.color||s[d%s.length]||"#008FFB")}),this.total=this._roots.reduce((u,d)=>u+Math.max(0,d.value),0)||1,this._ringsG=i.group({class:"apexcharts-sunburst-rings"}),this._labelsG=i.group({class:"apexcharts-sunburst-labels"}),o.add(this._ringsG),o.add(this._labelsG),this._focus=null,this._relayout(this._focus);const l=n.config.chart.animations;let c="none";return l.enabled&&(n.globals.dataChanged?l.dynamicAnimation.enabled&&(c="update"):n.globals.resized||(c="intro")),this._applyLayout(c),this._renderBreadcrumb(),o}_buildHierarchy(){return SCe(this.w)}_fillValues(e){p$(e)}_validateStrict(){if(this.cfg.partition!=="strict")return;let e=!1;const n=i=>{if(i.children&&i.children.length){const o=i.children.reduce((r,a)=>r+Math.max(0,a.value||0),0);!e&&i.value!=null&&Math.abs(o-i.value)>.5&&(console.warn(`ApexCharts sunburst: partition 'strict' but "${i.name}" (${i.value}) != sum of its children (${o}). Angles are normalized to fill the wedge.`),e=!0),i.children.forEach(n)}};this._roots.forEach(n)}_colorPass(e,n){e._color=e.color||n,this._nodesAll.push(e),e.children&&e.children.forEach(i=>this._colorPass(i,i.color||this._lighten(e._color,this.cfg.tint)))}_relayout(e){if(this._nodesAll.forEach(a=>{a._show=!1}),this._focusMaxDepth=0,e)this._placeVis(e,0,this.startAngle,this.endAngle,e._parent);else{const a=this._roots.reduce((l,c)=>l+Math.max(0,c.value),0)||1;let s=this.startAngle;this._roots.forEach(l=>{const c=(this.endAngle-this.startAngle)*Math.max(0,l.value)/a;this._placeVis(l,0,s,s+c,null),s+=c})}const n=this._parseSize(this.cfg.innerSize,this.maxRadius),i=this._focusMaxDepth+1,o=(this.maxRadius-n)/i,r=i>1?1:0;this._innerR=a=>n+a*o+(a>0?r/2:0),this._outerR=a=>n+(a+1)*o-r/2,this._nodesAll.forEach(a=>{a._show&&(a._iR=this._innerR(a._vDepth),a._oR=a._leaf&&this.cfg.leaf==="extend"&&a._vDepththis._focusMaxDepth&&(this._focusMaxDepth=n),!e._leaf){const a=e.children.reduce((l,c)=>l+Math.max(0,c.value),0)||1;let s=i;e.children.forEach(l=>{const c=(o-i)*Math.max(0,l.value)/a;this._placeVis(l,n+1,s,s+c,e),s+=c})}}_applyLayout(e){var n;const o=this.w.config.chart.animations,r=o.enabled?e==="none"?0:e==="update"?o.dynamicAnimation.speed||350:o.speed||500:0,a=++this._zoomGen,s=(n=this.ctx)==null?void 0:n.morphTypeChange,l=!!s&&typeof s.isActive=="function"&&s.isActive()&&typeof s.getInitialPathAt=="function",c=l?s.getSpeed():0;this._morphLeafIndex=0;const u=e==="update"?this.ctx._sunburstPrevGeoms:null;this._nodesAll.forEach(f=>{if(f._show){const h={a0:f._a0,a1:f._a1,iR:f._iR,oR:f._oR};f._el||(f._el=this._createArcEl(f));const p=l?this._morphSourceFor(f):null;if(p&&c>0)this._morphArcFrom(f,p,h,c,a);else if((e==="intro"||l)&&r>0)this._sweepArc(f,h,l?c:r,a);else{let g,m=!1;if(f._cur)g=f._cur;else if(u&&u.get(f._key))g=u.get(f._key);else{const v=(h.a0+h.a1)/2;g={a0:v,a1:v,iR:h.iR,oR:h.iR},m=!0}this._animateArc(f,g,h,r,!1,m,a)}}else if(f._el&&f._cur){const h=(f._cur.a0+f._cur.a1)/2,p={a0:h,a1:h,iR:f._cur.iR,oR:f._cur.iR};this._animateArc(f,f._cur,p,r,!0,!1,a)}});const d=new Map;this._nodesAll.forEach(f=>{f._show&&d.set(f._key,{a0:f._a0,a1:f._a1,iR:f._iR,oR:f._oR})}),this.ctx._sunburstPrevGeoms=d,this._renderLabels(r)}_morphSourceFor(e){const n=this.ctx,i=n&&n.morphTypeChange;return i?typeof i.hasKeyedMarks=="function"&&i.hasKeyedMarks()&&typeof i.getInitialPathForKey=="function"?i.getInitialPathForKey(nd(e._key)):e.children&&e.children.length?null:i.getInitialPathAt(this._morphLeafIndex++):null}_morphArcFrom(e,n,i,o,r){const a=e._el,s=this._arcPath(i.iR,i.oR,i.a0,i.a1,this.cfg.borderRadius);a.node.style.display="",a.attr({d:n,opacity:1}),e._cur=i,this._zoomGen===r&&new Gs(this.w,this.ctx).morphSVG(a,0,null,e._color,n,s,o,0)}_sweepArc(e,n,i,o){const r=e._el,a=this.cfg.borderRadius,s=this.startAngle,l=this.endAngle;r.node.style.display="",r.attr({d:"",opacity:1}),r.animate(i).during(c=>{if(this._zoomGen!==o)return;const u=s+(l-s)*c;if(u<=n.a0+.01){r.attr({d:""});return}const d=Math.min(n.a1,u);r.attr({d:this._arcPath(n.iR,n.oR,n.a0,d,a)}),e._cur={a0:n.a0,a1:d,iR:n.iR,oR:n.oR}}).after(()=>{this._zoomGen===o&&(e._cur=n)})}_createArcEl(e){const n=this._graphics.drawPath({d:"",fill:e._color,stroke:this.strokeColor,strokeWidth:this.strokeWidth,fillOpacity:1,classes:"apexcharts-sunburst-arc"}),i=n.node;return i.setAttribute("data:name",e.name),i.setAttribute("data:value",String(e.value)),i.setAttribute("data:key",nd(e._key)),i.setAttribute("data:leaf",String(!(e.children&&e.children.length))),this._attachTooltip(i,e),Ot.isBrowser()&&(i.addEventListener("click",()=>this._zoomTo(e)),i.style.cursor="pointer"),this._ringsG.add(n),n}_animateArc(e,n,i,o,r,a,s){const l=e._el,c=this.cfg.borderRadius;if(l.attr({fill:e._color}),o===0){l.attr({d:this._arcPath(i.iR,i.oR,i.a0,i.a1,c),opacity:r?0:1}),l.node.style.display=r?"none":"",e._cur=r?null:i;return}l.node.style.display="";const u=r?Number(l.attr("opacity"))||1:a?0:1,d=r?0:1;l.attr({opacity:u}),l.animate(o).during(f=>{if(this._zoomGen!==s)return;const h=du(n.a0,i.a0,f),p=du(n.a1,i.a1,f),g=du(n.iR,i.iR,f),m=du(n.oR,i.oR,f);l.attr({d:this._arcPath(g,m,h,p,c),opacity:du(u,d,f)}),e._cur={a0:h,a1:p,iR:g,oR:m}}).after(()=>{this._zoomGen===s&&(r?(l.node.style.display="none",e._cur=null):e._cur=i)})}_renderLabels(e){const n=this._labelsG;for(;n.node.firstChild;)n.node.removeChild(n.node.firstChild);this.cfg.dataLabels.show&&(this._nodesAll.forEach(i=>{i._show&&(i._a1-i._a00?(n.attr({opacity:0}),n.animate(250,e).attr({opacity:1})):n.attr({opacity:1}))}_renderCurvedLabel(e){if(!Ot.isBrowser())return;const n=this.cfg.dataLabels.style,i=this.w,o=(e._iR+e._oR)/2,r=(e._a0+e._a1)/2,a=r>90&&r<270,s=Math.min(o>0?4/o*bM:0,(e._a1-e._a0)/2),l=a?e._a1-s:e._a0+s,c=a?e._a0+s:e._a1-s,u=this._ptAt(o,l),d=this._ptAt(o,c),f=Math.abs(c-l)>180?1:0,h=a?0:1,p=`apx-sb-lbl-${i.globals.cuid}-${this._lblSeq++}`,g=We.createElementNS(I0,"path");g.setAttribute("id",p),g.setAttribute("d",`M ${u.x} ${u.y} A ${o} ${o} 0 ${f} ${h} ${d.x} ${d.y}`),g.setAttribute("fill","none"),g.setAttribute("stroke","none");const m=n.colors,v=(Array.isArray(m)?m[0]:m)||"#fff",b=We.createElementNS(I0,"text");b.setAttribute("font-size",n.fontSize||"12px"),n.fontFamily&&b.setAttribute("font-family",n.fontFamily),b.setAttribute("font-weight",String(n.fontWeight||400)),b.setAttribute("fill",v),b.setAttribute("dominant-baseline","central"),b.style.pointerEvents="none";const y=We.createElementNS(I0,"textPath");y.setAttribute("href","#"+p),y.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href","#"+p),y.setAttribute("startOffset","50%"),y.setAttribute("text-anchor","middle"),y.textContent=this._truncate(e.name,o,e._a1-e._a0,n.fontSize),b.appendChild(y),this._labelsG.node.appendChild(g),this._labelsG.node.appendChild(b)}_truncate(e,n,i,o){const r=n*i*yh-8,a=(parseFloat(o)||12)*.58,s=Math.floor(r/a);return s>=e.length?e:s<=1?"":e.slice(0,Math.max(1,s-1))+"…"}_zoomTo(e){if(this.cfg.zoomOnClick===!1)return;const n=e===this._focus?e._parent||null:e;n!==this._focus&&(this._focus=n&&!(n.children&&n.children.length)?n._parent||null:n,this._relayout(this._focus),this._applyLayout("zoom"),this._renderBreadcrumb())}_focusChain(){const e=[];let n=this._focus;for(;n;)e.unshift(n),n=n._parent;return e}_renderBreadcrumb(){if(!Ot.isBrowser())return;const n=this.w.dom.elWrap;if(!n)return;const i=n.querySelector(".apexcharts-breadcrumb");if(i&&i.parentNode&&i.parentNode.removeChild(i),!this._focus)return;const o=We.createElementNS($l,"nav");o.setAttribute("class","apexcharts-breadcrumb"),o.setAttribute("aria-label","Sunburst breadcrumb"),o.style.position="absolute",o.style.top="0px",o.style.left="0px";const r=[{name:"All",node:null}].concat(this._focusChain().map(a=>({name:a.name,node:a})));r.forEach((a,s)=>{if(s>0){const c=We.createElementNS($l,"span");c.setAttribute("class","apexcharts-breadcrumb-separator"),c.textContent=" / ",o.appendChild(c)}if(s===r.length-1){const c=We.createElementNS($l,"span");c.setAttribute("class","apexcharts-breadcrumb-item apexcharts-breadcrumb-current"),c.textContent=a.name,o.appendChild(c)}else{const c=We.createElementNS($l,"button");if(c.setAttribute("type","button"),c.setAttribute("class","apexcharts-breadcrumb-item"),s===0){const d=We.createElementNS($l,"span");d.setAttribute("class","apexcharts-breadcrumb-arrow"),d.textContent="←",c.appendChild(d)}const u=We.createElementNS($l,"span");u.setAttribute("class","apexcharts-breadcrumb-label"),u.textContent=a.name,c.appendChild(u),c.addEventListener("click",()=>{this._focus=a.node,this._relayout(this._focus),this._applyLayout("zoom"),this._renderBreadcrumb()}),o.appendChild(c)}}),n.appendChild(o),this._avoidChromeOverlap(o)}_avoidChromeOverlap(e){PN(this.w,e)}_ptAt(e,n){return{x:this.centerX+e*Math.cos((n-90)*yh),y:this.centerY+e*Math.sin((n-90)*yh)}}_arcPath(e,n,i,o,r){if(n<=e+.01)return"";let a=o-i;const s=this.cfg.spacing;if(s>0&&a>0&&n>0){const f=s/n*bM,h=Math.min(f/2,Math.max(0,a/2-.25));i+=h,o-=h,a=o-i}if(a<=0)return"";const l=a*yh,c=this.centerX,u=this.centerY;let d=r;return d=Math.min(d,l*e/2,l*n/2,(n-e)/2),d>.5?cw({cx:c,cy:u,rIn:e,rOut:n,a0:i,a1:o,r:d,spanDeg:a}):VN({cx:c,cy:u,rIn:e,rOut:n,a0:i,a1:o,spanDeg:a})}_tip(){return this._tooltipEl||(this._tooltipEl=this.w.dom.baseEl.querySelector(".apexcharts-tooltip")),this._tooltipEl}_attachTooltip(e,n){!this.w.config.tooltip.enabled||!Ot.isBrowser()||(e.addEventListener("mouseenter",i=>this._showTooltip(i,n)),e.addEventListener("mousemove",i=>this._positionTooltip(i)),e.addEventListener("mouseleave",()=>this._hideTooltip()))}_showTooltip(e,n){const i=this._tip();if(!i)return;const o=this.w,r=(n.value/this.total*100).toFixed(1),a=n._parent?n._parent.value:this.total,s=a>0?(n.value/a*100).toFixed(1):r,l=o.config.tooltip.fillSeriesColor?`background-color:${n._color};`:"";i.innerHTML=`
${n.name}: ${n.value} (${s}% of parent, ${r}% of total)
`,i.classList.add("apexcharts-active"),i.style.opacity="1",this._positionTooltip(e)}_positionTooltip(e){const n=this._tip();if(!n)return;const i=this.w.dom.elWrap.getBoundingClientRect(),o=n.offsetWidth,r=n.offsetHeight,a=12;let s=e.clientX-i.left+a;s+o>i.width&&(s=e.clientX-i.left-o-a),s=Math.max(0,Math.min(s,i.width-o));let l=e.clientY-i.top+a;l+r>i.height&&(l=e.clientY-i.top-r-a),l=Math.max(0,Math.min(l,i.height-r)),n.style.left=s+"px",n.style.top=l+"px"}_hideTooltip(){const e=this._tip();e&&(e.classList.remove("apexcharts-active"),e.style.opacity="0")}_parseSize(e,n){if(typeof e=="number")return e;const i=String(e).trim();if(i.endsWith("%"))return parseFloat(i)/100*n;const o=parseFloat(i);return isNaN(o)?.15*n:o}_lighten(e,n){if(typeof e!="string"||e[0]!=="#")return e;let i=e.slice(1);if(i.length===3&&(i=i.split("").map(l=>l+l).join("")),i.length!==6)return e;const o=parseInt(i,16);if(isNaN(o))return e;let r=o>>16&255,a=o>>8&255,s=o&255;return r=Math.round(r+(255-r)*n),a=Math.round(a+(255-a)*n),s=Math.round(s+(255-s)*n),"#"+((1<<24)+(r<<16)+(a<<8)+s).toString(16).slice(1)}}Vn.use({line:uu,area:uu,scatter:uu,bubble:uu,rangeArea:uu,bar:Bn,column:Bn,barStacked:ZSe,rangeBar:mCe,candlestick:nM,boxPlot:nM,violin:iCe,pie:fp,donut:fp,polarArea:fp,radialBar:gCe,radar:pCe,heatmap:rCe,treemap:PCe,unit:HCe,sunburst:WCe});Object.defineProperty(Vn,"__internals",{value:Qwe,enumerable:!1,writable:!1,configurable:!1});const yM=["animationEnd","beforeMount","mounted","updated","click","mouseMove","mouseLeave","legendClick","markerClick","selection","dataPointSelection","dataPointMouseEnter","dataPointMouseLeave","beforeZoom","beforeResetZoom","zoomed","scrolled","brushScrolled"],Hg=oe({name:"apexchart",props:{options:{type:Object},type:{type:String},series:{type:Array,required:!0},width:{default:"100%"},height:{default:"auto"}},emits:yM,setup(t,{emit:e}){const n=ae(null),i=ae(null),o=k=>k&&typeof k=="object"&&!Array.isArray(k)&&k!=null,r=(k,E)=>{typeof Object.assign!="function"&&function(){Object.assign=function(D){if(D==null)throw new TypeError("Cannot convert undefined or null to object");let F=Object(D);for(let N=1;N{o(E[D])?D in k?R[D]=r(k[D],E[D]):Object.assign(R,{[D]:E[D]}):Object.assign(R,{[D]:E[D]})}),R},a=k=>JSON.parse(JSON.stringify(k)),s=async()=>{if(await pt(),i.value)return;const k={chart:{type:t.type||t.options.chart&&t.options.chart.type||"line",height:t.height,width:t.width,events:{}},series:a(t.series)},E=t.options.chart?t.options.chart.events:null;yM.forEach(D=>{let F=(...N)=>e(D,...N);k.chart.events[D]=(...N)=>{F(...N),E&&E.hasOwnProperty(D)&&E[D](...N)}});const R=r(t.options,k);return i.value=new Vn(n.value,R),i.value.render()},l=()=>(c(),s()),c=()=>{i.value.destroy(),i.value=null},u=(k,E)=>i.value.updateSeries(k,E),d=(k,E,R,D)=>i.value.updateOptions(k,E,R,D),f=k=>i.value.toggleSeries(k),h=k=>{i.value.showSeries(k)},p=k=>{i.value.hideSeries(k)},g=(k,E)=>i.value.appendSeries(k,E),m=()=>{i.value.resetSeries()},v=(k,E)=>{i.value.toggleDataPointSelection(k,E)},b=k=>i.value.appendData(k),y=(k,E)=>i.value.zoomX(k,E),w=k=>i.value.dataURI(k),x=k=>i.value.setLocale(k),$=(k,E)=>{i.value.addXaxisAnnotation(k,E)},S=(k,E)=>{i.value.addYaxisAnnotation(k,E)},_=(k,E)=>{i.value.addPointAnnotation(k,E)},P=(k,E)=>{i.value.removeAnnotation(k,E)},T=()=>{i.value.clearAnnotations()};Gd(()=>{window.ApexCharts=Vn}),qe(()=>{n.value=Cn().proxy.$el,s()}),at(()=>{i.value&&c()});const O=fo(t);let M=null;const I=k=>{M||(M={options:!1,series:!1},pt(()=>{const E=M;if(M=null,!i.value){s();return}if(E.options&&E.series){const R=a(t.options);R.series=a(t.series),i.value.updateOptions(R)}else E.options?i.value.updateOptions(a(t.options)):E.series&&i.value.updateSeries(a(t.series))})),M[k]=!0};return ye(O.options,()=>{I("options")}),ye(O.series,()=>{I("series")},{deep:!0}),ye(O.type,()=>{l()}),ye(O.width,()=>{l()}),ye(O.height,()=>{l()}),{chart:i,init:s,refresh:l,destroy:c,updateOptions:d,updateSeries:u,toggleSeries:f,showSeries:h,hideSeries:p,resetSeries:m,zoomX:y,toggleDataPointSelection:v,appendData:b,appendSeries:g,addXaxisAnnotation:$,addYaxisAnnotation:S,addPointAnnotation:_,removeAnnotation:P,clearAnnotations:T,setLocale:x,dataURI:w}},render(){return sr("div",{class:"vue-apexcharts"})}}),jCe=(t,e)=>{const n=t.__vccOpts||t;for(const[i,o]of e)n[i]=o;return n},VCe=oe({name:"apexchart-server",props:{type:{type:String,default:"line"},width:{type:[Number,String],default:400},height:{type:[Number,String],default:300},series:{type:Array,default:()=>[]},options:{type:Object,default:()=>({})},className:{type:String,default:""}},setup(t){const e=ae("");return QI(async()=>{try{const{default:n}=await ze(async()=>{const{default:o}=await import("./apexcharts.ssr.esm-fe46cd2d-9CakV-nF.js");return{default:o}},[]),i=Object.assign({},t.options,{chart:Object.assign({},t.options.chart,{type:t.type,width:t.width,height:t.height}),series:t.series});e.value=await n.renderToHTML(i,{width:t.width,height:t.height})}catch(n){console.error("Failed to render ApexChart on server:",n)}}),{chartHTML:e}}}),XCe=["innerHTML"];function YCe(t,e,n,i,o,r){return zi(),ns("div",{innerHTML:t.chartHTML,class:Xd(t.className)},null,10,XCe)}const xM=jCe(VCe,[["render",YCe]]),wM=oe({name:"apexchart-hydrate",props:{clientOptions:{type:Object,default:()=>({})},selector:{type:String,default:"[data-apexcharts-hydrate]"}},setup(t){let e=[];qe(async()=>{try{const{default:n}=await ze(async()=>{const{default:i}=await import("./apexcharts.ssr.esm-fe46cd2d-9CakV-nF.js");return{default:i}},[]);e=n.hydrateAll(t.selector,t.clientOptions)}catch(n){console.error("Failed to hydrate ApexCharts:",n)}}),at(()=>{e.forEach(n=>{n&&n.destroy&&n.destroy()}),e=[]})},render(){return null}}),GCe=t=>{t.component(Hg.name,Hg),t.component(xM.name,xM),t.component(wM.name,wM)};Hg.install=GCe;const KCe={items_per_page:"/ صفحه",jump_to:"برو به",jump_to_confirm:"تایید",page:"",prev_page:"صفحه قبلی",next_page:"صفحه بعدی",prev_5:"۵ صفحه قبلی",next_5:"۵ صفحه بعدی",prev_3:"۳ صفحه قبلی",next_3:"۳ صفحه بعدی"},UCe={locale:"fa_IR",today:"امروز",now:"اکنون",backToToday:"بازگشت به روز",ok:"باشه",clear:"پاک کردن",month:"ماه",year:"سال",timeSelect:"انتخاب زمان",dateSelect:"انتخاب تاریخ",monthSelect:"یک ماه را انتخاب کنید",yearSelect:"یک سال را انتخاب کنید",decadeSelect:"یک دهه را انتخاب کنید",yearFormat:"YYYY",dateFormat:"M/D/YYYY",dayFormat:"D",dateTimeFormat:"M/D/YYYY HH:mm:ss",monthBeforeYear:!0,previousMonth:"ماه قبل (PageUp)",nextMonth:"ماه بعد (PageDown)",previousYear:"سال قبل (Control + left)",nextYear:"سال بعد (Control + right)",previousDecade:"دهه قبل",nextDecade:"دهه بعد",previousCentury:"قرن قبل",nextCentury:"قرن بعد"},GN={placeholder:"انتخاب زمان",rangePlaceholder:["زمان شروع","زمان پایان"]},SM={lang:A({placeholder:"انتخاب تاریخ",yearPlaceholder:"انتخاب سال",quarterPlaceholder:"انتخاب فصل",monthPlaceholder:"انتخاب ماه",weekPlaceholder:"انتخاب هفته",rangePlaceholder:["تاریخ شروع","تاریخ پایان"],rangeYearPlaceholder:["سال شروع","سال پایان"],rangeMonthPlaceholder:["ماه شروع","ماه پایان"],rangeWeekPlaceholder:["هفته شروع","هفته پایان"]},UCe),timePickerLocale:A({},GN)},Fi="${label} از نوع ${type} معتبر نیست",qCe={locale:"fa",Pagination:KCe,DatePicker:SM,TimePicker:GN,Calendar:SM,global:{placeholder:"لطفاً انتخاب کنید"},Table:{filterTitle:"منوی فیلتر",filterConfirm:"تایید",filterReset:"پاک کردن",filterEmptyText:"بدون فیلتر",emptyText:"بدون داده",selectAll:"انتخاب صفحه‌ی کنونی",selectInvert:"معکوس کردن انتخاب‌ها در صفحه ی کنونی",selectNone:"انتخاب هیچکدام",selectionAll:"انتخاب همه داده‌ها",sortTitle:"مرتب سازی",expand:"باز شدن ردیف",collapse:"بستن ردیف",triggerDesc:"ترتیب نزولی",triggerAsc:"ترتیب صعودی",cancelSort:"لغوِ ترتیبِ داده شده"},Modal:{okText:"تایید",cancelText:"لغو",justOkText:"تایید"},Popconfirm:{okText:"تایید",cancelText:"لغو"},Transfer:{titles:["",""],searchPlaceholder:"جستجو",itemUnit:"عدد",itemsUnit:"عدد",remove:"حذف",selectCurrent:"انتخاب صفحه فعلی",removeCurrent:"پاک کردن انتخاب‌های صفحه فعلی",selectAll:"انتخاب همه",removeAll:"پاک کردن همه انتخاب‌ها",selectInvert:"معکوس کردن انتخاب‌ها در صفحه ی کنونی"},Upload:{uploading:"در حال آپلود...",removeFile:"حذف فایل",uploadError:"خطا در آپلود",previewFile:"مشاهده‌ی فایل",downloadFile:"دریافت فایل"},Empty:{description:"داده‌ای موجود نیست"},Icon:{icon:"آیکن"},Text:{edit:"ویرایش",copy:"کپی",copied:"کپی شد",expand:"توسعه"},PageHeader:{back:"برگشت"},Form:{optional:"(اختیاری)",defaultValidateMessages:{default:"خطا در ${label}",required:"فیلد ${label} اجباریست",enum:"${label} باید یکی از [${enum}] باشد",whitespace:"${label} نمیتواند خالی باشد",date:{format:"ساختار تاریخ در ${label} نامعتبر است",parse:"${label} قابل تبدیل به تاریخ نیست",invalid:"${label} تاریخی نا معتبر است"},types:{string:Fi,method:Fi,array:Fi,object:Fi,number:Fi,date:Fi,boolean:Fi,integer:Fi,float:Fi,regexp:Fi,email:Fi,url:Fi,hex:Fi},string:{len:"${label} باید ${len} کاراکتر باشد",min:"${label} باید حداقل ${min} کاراکتر باشد",max:"${label} باید حداکثر ${max} کاراکتر باشد",range:"${label} باید بین ${min}-${max} کاراکتر باشد"},number:{len:"${label} باید برابر ${len}",min:"${label} حداقل میتواند ${min} باشد",max:"${label} حداکثر میتواند ${max} باشد",range:"${label} باید بین ${min}-${max} باشد"},array:{len:"تعداد ${label} باید ${len} باشد.",min:"تعداد ${label} حداقل باید ${min} باشد",max:"تعداد ${label} حداکثر باید ${max} باشد",range:"مقدار ${label} باید بین ${min}-${max} باشد"},pattern:{mismatch:"الگوی ${label} با ${pattern} برابری نمی‌کند"}}},Image:{preview:"نمایش"}},id={disableCustomizer:!1,disableThemeTour:!0,footerType:"hidden",hideScrollToTop:!1,mainLayoutType:"vertical",navbarColor:"#fff",navbarType:"floating",routerTransition:"zoom-fade",rtl:!0,sidebarCollapsed:!1,theme:"light",userInfoLocalStorageKey:"userInfo"},ZCe={name:"هدناگلد",nameEn:"Hedena Gold",appTitle:"طلای هدناگلد",adminTitle:"هدناگلد — پنل مدیریت",siteUrl:"https://bnk.montzar.ir"},KN="admin-panel:sidebarCollapsed";function JCe(){if(typeof window>"u")return id.sidebarCollapsed;try{const t=window.localStorage.getItem(KN);return t===null?id.sidebarCollapsed:t==="1"}catch{return id.sidebarCollapsed}}const QCe=Nk("layout",{state:()=>({windowWidth:typeof window<"u"?window.innerWidth:0,scrollY:0,theme:id.theme,isSidebarActive:!0,sidebarCollapsed:JCe(),mobileNavOpen:!1}),getters:{isSmallScreen:t=>t.windowWidth<992,isMobile:t=>t.windowWidth<576},actions:{updateWindowWidth(t){this.windowWidth=t},updateWindowScrollY(t){this.scrollY=t},setMobileNavOpen(t){this.mobileNavOpen=t},toggleSidebar(t){this.isSidebarActive=t??!this.isSidebarActive},setSidebarCollapsed(t){if(this.sidebarCollapsed=t,!(typeof window>"u"))try{window.localStorage.setItem(KN,t?"1":"0")}catch{}}}}),e$e=5*60*1e3,CM=229;function t$e(){const t=ae(null),e=ae(!1),n=L(()=>{const s=t.value;return s?(s.history??[]).filter(l=>l.build>CM&&l.build<=s.build):[]});async function i(){if(!t.value)try{const s=await fetch(`/version.json?t=${Date.now()}`,{cache:"no-store"});if(!s.ok)return;const l=await s.json();typeof l.build=="number"&&l.build>CM&&(t.value=l)}catch{}}async function o(){var s,l;e.value=!0;try{const c=await((l=(s=navigator.serviceWorker)==null?void 0:s.getRegistrations)==null?void 0:l.call(s));c&&await Promise.all(c.map(u=>u.unregister()))}catch{}try{if("caches"in window){const c=await caches.keys();await Promise.all(c.map(u=>caches.delete(u)))}}catch{}window.location.reload()}let r;const a=()=>{document.visibilityState==="visible"&&i()};return qe(()=>{i(),r=setInterval(i,e$e),document.addEventListener("visibilitychange",a)}),at(()=>{r&&clearInterval(r),document.removeEventListener("visibilitychange",a)}),{available:t,changes:n,updating:e,applyUpdate:o,check:i}}const n$e={class:"list"},i$e={key:1,class:"lead"},o$e=oe({__name:"AppUpdateGate",setup(t){const{available:e,changes:n,updating:i,applyUpdate:o}=t$e();return(r,a)=>{const s=Iu("a-tag"),l=Iu("a-button"),c=Iu("a-modal");return zi(),cc(c,{open:!!Lt(e),closable:!1,"mask-closable":!1,keyboard:!1,"z-index":2e3,width:"420px",centered:""},{title:ss(()=>[a[0]||(a[0]=Tn(" نسخه‌ی تازه‌ی پنل آماده است ",-1)),Lt(e)?(zi(),cc(s,{key:0,class:"ms-2",color:"blue"},{default:ss(()=>[Tn("نسخه‌ی "+V0(Lt(e).version),1)]),_:1})):xk("",!0)]),footer:ss(()=>[C(l,{type:"primary",block:"",loading:Lt(i),onClick:Lt(o)},{default:ss(()=>[...a[2]||(a[2]=[Tn("به‌روزرسانی",-1)])]),_:1},8,["loading","onClick"])]),default:ss(()=>[Lt(n).length?(zi(),ns(Ge,{key:0},[a[1]||(a[1]=Yl("p",{class:"lead"},"در این نسخه:",-1)),Yl("ul",n$e,[(zi(!0),ns(Ge,null,V$(Lt(n),u=>(zi(),ns(Ge,{key:u.build},[(zi(!0),ns(Ge,null,V$(u.notes,(d,f)=>(zi(),ns("li",{key:u.build+"-"+f},V0(d),1))),128))],64))),128))])],64)):(zi(),ns("p",i$e,"بهبودها و رفع اشکال‌ها.")),a[3]||(a[3]=Yl("p",{class:"hint"},"کار ذخیره‌نشده‌ای اگر در صفحه دارید، پیش از به‌روزرسانی ثبتش کنید.",-1))]),_:1},8,["open"])}}}),r$e=(t,e)=>{const n=t.__vccOpts||t;for(const[i,o]of e)n[i]=o;return n},a$e=r$e(o$e,[["__scopeId","data-v-12784d02"]]);function BPe(){return!1}function s$e(t){const e="/",n=e.endsWith("/")?e:`${e}/`;return`${window.location.origin}${n}${t.replace(/^\//,"")}`}const $c="token",UN="user",l$e=oe({__name:"App",setup(t){const e={colorPrimary:"#1c2d56",colorLink:"#1DA57A",borderRadius:6,controlHeight:36,colorPrimaryBg:"#eef1f8",colorPrimaryBgHover:"#e1e6f2",colorPrimaryBorder:"#c5cde0",colorPrimaryBorderHover:"#9ea9c6"},n=QCe(),i=ae([]);function o(l){l==="dark"?(document.body.className.match("theme-semi-dark")&&document.body.classList.remove("theme-semi-dark"),document.body.classList.add("theme-dark")):l==="semi-dark"?(document.body.className.match("theme-dark")&&document.body.classList.remove("theme-dark"),document.body.classList.add("theme-semi-dark")):(document.body.className.match("theme-dark")&&document.body.classList.remove("theme-dark"),document.body.className.match("theme-semi-dark")&&document.body.classList.remove("theme-semi-dark"))}function r(l){i.value.push(l)}function a(){n.updateWindowWidth(window.innerWidth),document.documentElement.style.setProperty("--vh",`${window.innerHeight*.01}px`)}function s(){n.updateWindowScrollY(window.scrollY)}return ye(()=>n.theme,l=>o(l)),document.documentElement.setAttribute("dir","rtl"),qe(()=>{const l=localStorage.getItem(UN),c=l?JSON.parse(l):void 0,u=localStorage.getItem("login")||void 0;c&&u&&(Vr.open({message:`${c&&c.name?c.name:" کاربر "} عزیز `,placement:"topLeft",description:`به ${ZCe.name} خوش آمدید`,style:{color:"var(--primary-color)",marginLeft:"20px"}}),localStorage.removeItem("login")),o(id.theme),n.updateWindowWidth(window.innerWidth);const d=window.innerHeight*.01;document.documentElement.style.setProperty("--vh",`${d}px`),window.addEventListener("resize",a),window.addEventListener("scroll",s)}),Yn(()=>{window.removeEventListener("resize",a),window.removeEventListener("scroll",s)}),(l,c)=>{const u=Iu("router-view"),d=Iu("a-config-provider");return zi(),cc(d,{locale:Lt(qCe),direction:"rtl",theme:{token:e}},{default:ss(()=>[Yl("div",{id:"app",class:Xd(i.value)},[C(u,{onSetAppClasses:r}),C(a$e)],2)]),_:1},8,["locale","theme"])}}});/*! +`)}_outerLabelGutter(e,n){const i=this.w,o=n.clusterLabels,r=o.external.connector||{},a=e.reduce((f,h)=>f+h,0),s=[];if(e.forEach((f,h)=>{f>0&&s.push(...this._outerLabelLines(h,f,a,n))}),!s.length)return 0;const l=cCe(i,s,{fontSize:o.fontSize,fontFamily:o.fontFamily||i.config.chart.fontFamily}),c=r.gap!=null?r.gap:8,u=r.length!=null?r.length:22,d=l+c+u+8+Math.abs(parseFloat(o.external.offsetX)||0);return Math.min(d,i.layout.gridWidth*.25)}_drawOuterLabels(e,n,i,o,r,a){const s=this.w;if(!Ot.isBrowser())return;const l=r.clusterLabels,c=l.external,u=c.connector||{},d=u.gap!=null?u.gap:8,f=u.length!=null?u.length:22,h=parseFloat(c.offsetX)||0,p=parseFloat(c.offsetY)||0,g=s.layout.gridWidth,m=s.layout.gridHeight,v=this._lastDotR,b=n.filter(I=>I.dots.length>0);if(!b.length)return;let y=0,w=0;if(b.length>1){const I=b.map(E=>E.cx),k=b.map(E=>E.cy);y=Math.max(...I)-Math.min(...I),w=Math.max(...k)-Math.min(...k)}const x=y>w,$=parseFloat(l.fontSize)||13,S=Math.round($*1.35),_=[];if(b.slice().sort((I,k)=>I.cy-k.cy).forEach((I,k)=>{const E=this._outerLabelLines(I.i,i[I.i],o,r);if(!E.some(W=>W!==""))return;const R=x?I.cx>=g/2?"right":"left":k%2===0?"right":"left",D=R==="right"?1:-1;let F=I.dots[0],N=-1/0;I.dots.forEach(W=>{const j=D*W.x-.75*Math.abs(W.y-I.cy);j>N&&(N=j,F=W)});const B={x:F.x+D*(F.r||v),y:F.y},z={x:B.x+D*d,y:B.y};_.push({i:I.i,lines:E,anchor:B,elbow:z,labelX:z.x+D*f+h,idealY:B.y+p,labelY:B.y+p,side:R})}),!_.length)return;const T=_.reduce((I,k)=>Math.max(I,k.lines.length),1)*S,O=T/2;["left","right"].forEach(I=>{jN(_.filter(k=>k.side===I),T+2,m-O,O)});const M=new Be(s,this.ctx).group({class:"apexcharts-unit-outer-labels"});if(a){const I=Math.max(1,s.config.chart.animations.speed||800);M.node.classList.add("apexcharts-unit-label-delay"),M.node.style.animationDelay=`${Math.min(I*.45,600)/1e3}s`}_.forEach(I=>{const k=s.globals.colors[I.i]||s.globals.colors[0]||"#008FFB";M.add(WN(s,{lines:I.lines,lineHeight:S,anchor:I.anchor,elbow:I.elbow,labelX:I.labelX,labelY:I.labelY,side:I.side,connector:{show:u.show!==!1,width:u.width!=null?u.width:1.5,color:u.color||k},style:{fontSize:l.fontSize,fontFamily:l.fontFamily||s.config.chart.fontFamily,fontWeight:l.fontWeight},foreColor:l.color||s.config.chart.foreColor,groupClass:"apexcharts-unit-outer-label-group",textClass:"apexcharts-unit-outer-label",connectorClass:"apexcharts-unit-label-connector"}))}),e.add(M)}_drawClusterLabel(e,n,i,o,r,a){const s=this.w;if(!Ot.isBrowser())return;const l="http://www.w3.org/2000/svg",c=s.seriesData.seriesNames[n.i]||`series-${n.i+1}`,u=o>0?i/o*100:0,d=r.clusterLabels,f=parseFloat(d.fontSize)||13;let h;typeof d.formatter=="function"?h=d.formatter(c,{seriesIndex:n.i,value:i,percent:u,w:s}):h=`${c} (${u.toFixed(1)}%)`;const p=typeof h=="string"?h:String(h),g=We.createElementNS(l,"text");g.setAttribute("class","apexcharts-unit-label"),g.setAttribute("text-anchor","middle"),g.setAttribute("font-size",`${f}px`),g.setAttribute("font-family",d.fontFamily||s.config.chart.fontFamily||"inherit"),g.setAttribute("font-weight",String(d.fontWeight||600)),g.setAttribute("fill",d.color||a);const m=d.position==="bottom",v=n.outerR+f*.6+3+(d.offsetY||0),b=p.length*f*.55;if(!m&&!n.flat&&d.curved!==!1&&b<=Math.PI*v*.95){const w=n.cy,x=n.cx-v,$=n.cx+v,S=`M ${x} ${w} A ${v} ${v} 0 0 1 ${$} ${w}`,_=`apexcharts-unit-label-${s.globals.chartID}-${n.i}`,P=We.createElementNS(l,"path");P.setAttribute("id",_),P.setAttribute("d",S),P.setAttribute("fill","none"),P.setAttribute("stroke","none");const T=We.createElementNS(l,"textPath");T.setAttribute("href",`#${_}`),T.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",`#${_}`),T.setAttribute("startOffset","50%"),T.textContent=p,g.appendChild(T),e.node.appendChild(P)}else{g.setAttribute("x",String(n.cx));const w=m?n.cy+n.outerR+f+6+(d.offsetY||0):n.cy-n.outerR-6-(d.offsetY||0);g.setAttribute("y",String(w)),g.textContent=p}e.node.appendChild(g)}}const yh=Math.PI/180,bM=180/Math.PI,I0="http://www.w3.org/2000/svg",$l="http://www.w3.org/1999/xhtml",du=(t,e,n)=>t+(e-t)*n;class WCe{constructor(e,n){this.ctx=n,this.w=e;const i=e.config;this.cfg=i.plotOptions.sunburst,this.strokeWidth=i.stroke.show?i.stroke.width:0,this.strokeColor=Array.isArray(i.stroke.colors)?i.stroke.colors[0]:i.stroke.colors||"#fff",this.startAngle=this.cfg.startAngle,this.endAngle=this.cfg.endAngle,this.maxDepth=0,this.centerX=0,this.centerY=0,this.maxRadius=0,this.total=1,this._focusMaxDepth=0,this._focus=null,this._zoomGen=0,this._roots=[],this._nodesAll=[],this._innerR=()=>0,this._outerR=()=>0,this._tooltipEl=null,this._lblSeq=0,this._morphLeafIndex=0,this._graphics=null,this._ringsG=null,this._labelsG=null}draw(e){const n=this.w,i=new Be(this.w);this._graphics=i;const o=i.group({class:"apexcharts-sunburst"});if(n.globals.noData||!e||!e.length)return o;const r=n.layout.gridWidth,a=n.layout.gridHeight;if(this.centerX=r/2+(this.cfg.offsetX||0),this.centerY=a/2+(this.cfg.offsetY||0),this.maxRadius=Math.min(r,a)/2.05-this.strokeWidth-(n.config.chart.sparkline.enabled?0:n.config.chart.dropShadow.blur),this.maxRadius<5||(this._roots=this._buildHierarchy(),!this._roots.length))return o;this._roots.forEach(u=>this._fillValues(u)),this._validateStrict(),this._nodesAll=[];const s=n.globals.colors||[];this._roots.forEach((u,d)=>{this._colorPass(u,u.color||s[d%s.length]||"#008FFB")}),this.total=this._roots.reduce((u,d)=>u+Math.max(0,d.value),0)||1,this._ringsG=i.group({class:"apexcharts-sunburst-rings"}),this._labelsG=i.group({class:"apexcharts-sunburst-labels"}),o.add(this._ringsG),o.add(this._labelsG),this._focus=null,this._relayout(this._focus);const l=n.config.chart.animations;let c="none";return l.enabled&&(n.globals.dataChanged?l.dynamicAnimation.enabled&&(c="update"):n.globals.resized||(c="intro")),this._applyLayout(c),this._renderBreadcrumb(),o}_buildHierarchy(){return SCe(this.w)}_fillValues(e){p$(e)}_validateStrict(){if(this.cfg.partition!=="strict")return;let e=!1;const n=i=>{if(i.children&&i.children.length){const o=i.children.reduce((r,a)=>r+Math.max(0,a.value||0),0);!e&&i.value!=null&&Math.abs(o-i.value)>.5&&(console.warn(`ApexCharts sunburst: partition 'strict' but "${i.name}" (${i.value}) != sum of its children (${o}). Angles are normalized to fill the wedge.`),e=!0),i.children.forEach(n)}};this._roots.forEach(n)}_colorPass(e,n){e._color=e.color||n,this._nodesAll.push(e),e.children&&e.children.forEach(i=>this._colorPass(i,i.color||this._lighten(e._color,this.cfg.tint)))}_relayout(e){if(this._nodesAll.forEach(a=>{a._show=!1}),this._focusMaxDepth=0,e)this._placeVis(e,0,this.startAngle,this.endAngle,e._parent);else{const a=this._roots.reduce((l,c)=>l+Math.max(0,c.value),0)||1;let s=this.startAngle;this._roots.forEach(l=>{const c=(this.endAngle-this.startAngle)*Math.max(0,l.value)/a;this._placeVis(l,0,s,s+c,null),s+=c})}const n=this._parseSize(this.cfg.innerSize,this.maxRadius),i=this._focusMaxDepth+1,o=(this.maxRadius-n)/i,r=i>1?1:0;this._innerR=a=>n+a*o+(a>0?r/2:0),this._outerR=a=>n+(a+1)*o-r/2,this._nodesAll.forEach(a=>{a._show&&(a._iR=this._innerR(a._vDepth),a._oR=a._leaf&&this.cfg.leaf==="extend"&&a._vDepththis._focusMaxDepth&&(this._focusMaxDepth=n),!e._leaf){const a=e.children.reduce((l,c)=>l+Math.max(0,c.value),0)||1;let s=i;e.children.forEach(l=>{const c=(o-i)*Math.max(0,l.value)/a;this._placeVis(l,n+1,s,s+c,e),s+=c})}}_applyLayout(e){var n;const o=this.w.config.chart.animations,r=o.enabled?e==="none"?0:e==="update"?o.dynamicAnimation.speed||350:o.speed||500:0,a=++this._zoomGen,s=(n=this.ctx)==null?void 0:n.morphTypeChange,l=!!s&&typeof s.isActive=="function"&&s.isActive()&&typeof s.getInitialPathAt=="function",c=l?s.getSpeed():0;this._morphLeafIndex=0;const u=e==="update"?this.ctx._sunburstPrevGeoms:null;this._nodesAll.forEach(f=>{if(f._show){const h={a0:f._a0,a1:f._a1,iR:f._iR,oR:f._oR};f._el||(f._el=this._createArcEl(f));const p=l?this._morphSourceFor(f):null;if(p&&c>0)this._morphArcFrom(f,p,h,c,a);else if((e==="intro"||l)&&r>0)this._sweepArc(f,h,l?c:r,a);else{let g,m=!1;if(f._cur)g=f._cur;else if(u&&u.get(f._key))g=u.get(f._key);else{const v=(h.a0+h.a1)/2;g={a0:v,a1:v,iR:h.iR,oR:h.iR},m=!0}this._animateArc(f,g,h,r,!1,m,a)}}else if(f._el&&f._cur){const h=(f._cur.a0+f._cur.a1)/2,p={a0:h,a1:h,iR:f._cur.iR,oR:f._cur.iR};this._animateArc(f,f._cur,p,r,!0,!1,a)}});const d=new Map;this._nodesAll.forEach(f=>{f._show&&d.set(f._key,{a0:f._a0,a1:f._a1,iR:f._iR,oR:f._oR})}),this.ctx._sunburstPrevGeoms=d,this._renderLabels(r)}_morphSourceFor(e){const n=this.ctx,i=n&&n.morphTypeChange;return i?typeof i.hasKeyedMarks=="function"&&i.hasKeyedMarks()&&typeof i.getInitialPathForKey=="function"?i.getInitialPathForKey(nd(e._key)):e.children&&e.children.length?null:i.getInitialPathAt(this._morphLeafIndex++):null}_morphArcFrom(e,n,i,o,r){const a=e._el,s=this._arcPath(i.iR,i.oR,i.a0,i.a1,this.cfg.borderRadius);a.node.style.display="",a.attr({d:n,opacity:1}),e._cur=i,this._zoomGen===r&&new Gs(this.w,this.ctx).morphSVG(a,0,null,e._color,n,s,o,0)}_sweepArc(e,n,i,o){const r=e._el,a=this.cfg.borderRadius,s=this.startAngle,l=this.endAngle;r.node.style.display="",r.attr({d:"",opacity:1}),r.animate(i).during(c=>{if(this._zoomGen!==o)return;const u=s+(l-s)*c;if(u<=n.a0+.01){r.attr({d:""});return}const d=Math.min(n.a1,u);r.attr({d:this._arcPath(n.iR,n.oR,n.a0,d,a)}),e._cur={a0:n.a0,a1:d,iR:n.iR,oR:n.oR}}).after(()=>{this._zoomGen===o&&(e._cur=n)})}_createArcEl(e){const n=this._graphics.drawPath({d:"",fill:e._color,stroke:this.strokeColor,strokeWidth:this.strokeWidth,fillOpacity:1,classes:"apexcharts-sunburst-arc"}),i=n.node;return i.setAttribute("data:name",e.name),i.setAttribute("data:value",String(e.value)),i.setAttribute("data:key",nd(e._key)),i.setAttribute("data:leaf",String(!(e.children&&e.children.length))),this._attachTooltip(i,e),Ot.isBrowser()&&(i.addEventListener("click",()=>this._zoomTo(e)),i.style.cursor="pointer"),this._ringsG.add(n),n}_animateArc(e,n,i,o,r,a,s){const l=e._el,c=this.cfg.borderRadius;if(l.attr({fill:e._color}),o===0){l.attr({d:this._arcPath(i.iR,i.oR,i.a0,i.a1,c),opacity:r?0:1}),l.node.style.display=r?"none":"",e._cur=r?null:i;return}l.node.style.display="";const u=r?Number(l.attr("opacity"))||1:a?0:1,d=r?0:1;l.attr({opacity:u}),l.animate(o).during(f=>{if(this._zoomGen!==s)return;const h=du(n.a0,i.a0,f),p=du(n.a1,i.a1,f),g=du(n.iR,i.iR,f),m=du(n.oR,i.oR,f);l.attr({d:this._arcPath(g,m,h,p,c),opacity:du(u,d,f)}),e._cur={a0:h,a1:p,iR:g,oR:m}}).after(()=>{this._zoomGen===s&&(r?(l.node.style.display="none",e._cur=null):e._cur=i)})}_renderLabels(e){const n=this._labelsG;for(;n.node.firstChild;)n.node.removeChild(n.node.firstChild);this.cfg.dataLabels.show&&(this._nodesAll.forEach(i=>{i._show&&(i._a1-i._a00?(n.attr({opacity:0}),n.animate(250,e).attr({opacity:1})):n.attr({opacity:1}))}_renderCurvedLabel(e){if(!Ot.isBrowser())return;const n=this.cfg.dataLabels.style,i=this.w,o=(e._iR+e._oR)/2,r=(e._a0+e._a1)/2,a=r>90&&r<270,s=Math.min(o>0?4/o*bM:0,(e._a1-e._a0)/2),l=a?e._a1-s:e._a0+s,c=a?e._a0+s:e._a1-s,u=this._ptAt(o,l),d=this._ptAt(o,c),f=Math.abs(c-l)>180?1:0,h=a?0:1,p=`apx-sb-lbl-${i.globals.cuid}-${this._lblSeq++}`,g=We.createElementNS(I0,"path");g.setAttribute("id",p),g.setAttribute("d",`M ${u.x} ${u.y} A ${o} ${o} 0 ${f} ${h} ${d.x} ${d.y}`),g.setAttribute("fill","none"),g.setAttribute("stroke","none");const m=n.colors,v=(Array.isArray(m)?m[0]:m)||"#fff",b=We.createElementNS(I0,"text");b.setAttribute("font-size",n.fontSize||"12px"),n.fontFamily&&b.setAttribute("font-family",n.fontFamily),b.setAttribute("font-weight",String(n.fontWeight||400)),b.setAttribute("fill",v),b.setAttribute("dominant-baseline","central"),b.style.pointerEvents="none";const y=We.createElementNS(I0,"textPath");y.setAttribute("href","#"+p),y.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href","#"+p),y.setAttribute("startOffset","50%"),y.setAttribute("text-anchor","middle"),y.textContent=this._truncate(e.name,o,e._a1-e._a0,n.fontSize),b.appendChild(y),this._labelsG.node.appendChild(g),this._labelsG.node.appendChild(b)}_truncate(e,n,i,o){const r=n*i*yh-8,a=(parseFloat(o)||12)*.58,s=Math.floor(r/a);return s>=e.length?e:s<=1?"":e.slice(0,Math.max(1,s-1))+"…"}_zoomTo(e){if(this.cfg.zoomOnClick===!1)return;const n=e===this._focus?e._parent||null:e;n!==this._focus&&(this._focus=n&&!(n.children&&n.children.length)?n._parent||null:n,this._relayout(this._focus),this._applyLayout("zoom"),this._renderBreadcrumb())}_focusChain(){const e=[];let n=this._focus;for(;n;)e.unshift(n),n=n._parent;return e}_renderBreadcrumb(){if(!Ot.isBrowser())return;const n=this.w.dom.elWrap;if(!n)return;const i=n.querySelector(".apexcharts-breadcrumb");if(i&&i.parentNode&&i.parentNode.removeChild(i),!this._focus)return;const o=We.createElementNS($l,"nav");o.setAttribute("class","apexcharts-breadcrumb"),o.setAttribute("aria-label","Sunburst breadcrumb"),o.style.position="absolute",o.style.top="0px",o.style.left="0px";const r=[{name:"All",node:null}].concat(this._focusChain().map(a=>({name:a.name,node:a})));r.forEach((a,s)=>{if(s>0){const c=We.createElementNS($l,"span");c.setAttribute("class","apexcharts-breadcrumb-separator"),c.textContent=" / ",o.appendChild(c)}if(s===r.length-1){const c=We.createElementNS($l,"span");c.setAttribute("class","apexcharts-breadcrumb-item apexcharts-breadcrumb-current"),c.textContent=a.name,o.appendChild(c)}else{const c=We.createElementNS($l,"button");if(c.setAttribute("type","button"),c.setAttribute("class","apexcharts-breadcrumb-item"),s===0){const d=We.createElementNS($l,"span");d.setAttribute("class","apexcharts-breadcrumb-arrow"),d.textContent="←",c.appendChild(d)}const u=We.createElementNS($l,"span");u.setAttribute("class","apexcharts-breadcrumb-label"),u.textContent=a.name,c.appendChild(u),c.addEventListener("click",()=>{this._focus=a.node,this._relayout(this._focus),this._applyLayout("zoom"),this._renderBreadcrumb()}),o.appendChild(c)}}),n.appendChild(o),this._avoidChromeOverlap(o)}_avoidChromeOverlap(e){PN(this.w,e)}_ptAt(e,n){return{x:this.centerX+e*Math.cos((n-90)*yh),y:this.centerY+e*Math.sin((n-90)*yh)}}_arcPath(e,n,i,o,r){if(n<=e+.01)return"";let a=o-i;const s=this.cfg.spacing;if(s>0&&a>0&&n>0){const f=s/n*bM,h=Math.min(f/2,Math.max(0,a/2-.25));i+=h,o-=h,a=o-i}if(a<=0)return"";const l=a*yh,c=this.centerX,u=this.centerY;let d=r;return d=Math.min(d,l*e/2,l*n/2,(n-e)/2),d>.5?cw({cx:c,cy:u,rIn:e,rOut:n,a0:i,a1:o,r:d,spanDeg:a}):VN({cx:c,cy:u,rIn:e,rOut:n,a0:i,a1:o,spanDeg:a})}_tip(){return this._tooltipEl||(this._tooltipEl=this.w.dom.baseEl.querySelector(".apexcharts-tooltip")),this._tooltipEl}_attachTooltip(e,n){!this.w.config.tooltip.enabled||!Ot.isBrowser()||(e.addEventListener("mouseenter",i=>this._showTooltip(i,n)),e.addEventListener("mousemove",i=>this._positionTooltip(i)),e.addEventListener("mouseleave",()=>this._hideTooltip()))}_showTooltip(e,n){const i=this._tip();if(!i)return;const o=this.w,r=(n.value/this.total*100).toFixed(1),a=n._parent?n._parent.value:this.total,s=a>0?(n.value/a*100).toFixed(1):r,l=o.config.tooltip.fillSeriesColor?`background-color:${n._color};`:"";i.innerHTML=`
${n.name}: ${n.value} (${s}% of parent, ${r}% of total)
`,i.classList.add("apexcharts-active"),i.style.opacity="1",this._positionTooltip(e)}_positionTooltip(e){const n=this._tip();if(!n)return;const i=this.w.dom.elWrap.getBoundingClientRect(),o=n.offsetWidth,r=n.offsetHeight,a=12;let s=e.clientX-i.left+a;s+o>i.width&&(s=e.clientX-i.left-o-a),s=Math.max(0,Math.min(s,i.width-o));let l=e.clientY-i.top+a;l+r>i.height&&(l=e.clientY-i.top-r-a),l=Math.max(0,Math.min(l,i.height-r)),n.style.left=s+"px",n.style.top=l+"px"}_hideTooltip(){const e=this._tip();e&&(e.classList.remove("apexcharts-active"),e.style.opacity="0")}_parseSize(e,n){if(typeof e=="number")return e;const i=String(e).trim();if(i.endsWith("%"))return parseFloat(i)/100*n;const o=parseFloat(i);return isNaN(o)?.15*n:o}_lighten(e,n){if(typeof e!="string"||e[0]!=="#")return e;let i=e.slice(1);if(i.length===3&&(i=i.split("").map(l=>l+l).join("")),i.length!==6)return e;const o=parseInt(i,16);if(isNaN(o))return e;let r=o>>16&255,a=o>>8&255,s=o&255;return r=Math.round(r+(255-r)*n),a=Math.round(a+(255-a)*n),s=Math.round(s+(255-s)*n),"#"+((1<<24)+(r<<16)+(a<<8)+s).toString(16).slice(1)}}Vn.use({line:uu,area:uu,scatter:uu,bubble:uu,rangeArea:uu,bar:Bn,column:Bn,barStacked:ZSe,rangeBar:mCe,candlestick:nM,boxPlot:nM,violin:iCe,pie:fp,donut:fp,polarArea:fp,radialBar:gCe,radar:pCe,heatmap:rCe,treemap:PCe,unit:HCe,sunburst:WCe});Object.defineProperty(Vn,"__internals",{value:Qwe,enumerable:!1,writable:!1,configurable:!1});const yM=["animationEnd","beforeMount","mounted","updated","click","mouseMove","mouseLeave","legendClick","markerClick","selection","dataPointSelection","dataPointMouseEnter","dataPointMouseLeave","beforeZoom","beforeResetZoom","zoomed","scrolled","brushScrolled"],Hg=oe({name:"apexchart",props:{options:{type:Object},type:{type:String},series:{type:Array,required:!0},width:{default:"100%"},height:{default:"auto"}},emits:yM,setup(t,{emit:e}){const n=ae(null),i=ae(null),o=k=>k&&typeof k=="object"&&!Array.isArray(k)&&k!=null,r=(k,E)=>{typeof Object.assign!="function"&&function(){Object.assign=function(D){if(D==null)throw new TypeError("Cannot convert undefined or null to object");let F=Object(D);for(let N=1;N{o(E[D])?D in k?R[D]=r(k[D],E[D]):Object.assign(R,{[D]:E[D]}):Object.assign(R,{[D]:E[D]})}),R},a=k=>JSON.parse(JSON.stringify(k)),s=async()=>{if(await pt(),i.value)return;const k={chart:{type:t.type||t.options.chart&&t.options.chart.type||"line",height:t.height,width:t.width,events:{}},series:a(t.series)},E=t.options.chart?t.options.chart.events:null;yM.forEach(D=>{let F=(...N)=>e(D,...N);k.chart.events[D]=(...N)=>{F(...N),E&&E.hasOwnProperty(D)&&E[D](...N)}});const R=r(t.options,k);return i.value=new Vn(n.value,R),i.value.render()},l=()=>(c(),s()),c=()=>{i.value.destroy(),i.value=null},u=(k,E)=>i.value.updateSeries(k,E),d=(k,E,R,D)=>i.value.updateOptions(k,E,R,D),f=k=>i.value.toggleSeries(k),h=k=>{i.value.showSeries(k)},p=k=>{i.value.hideSeries(k)},g=(k,E)=>i.value.appendSeries(k,E),m=()=>{i.value.resetSeries()},v=(k,E)=>{i.value.toggleDataPointSelection(k,E)},b=k=>i.value.appendData(k),y=(k,E)=>i.value.zoomX(k,E),w=k=>i.value.dataURI(k),x=k=>i.value.setLocale(k),$=(k,E)=>{i.value.addXaxisAnnotation(k,E)},S=(k,E)=>{i.value.addYaxisAnnotation(k,E)},_=(k,E)=>{i.value.addPointAnnotation(k,E)},P=(k,E)=>{i.value.removeAnnotation(k,E)},T=()=>{i.value.clearAnnotations()};Gd(()=>{window.ApexCharts=Vn}),qe(()=>{n.value=Cn().proxy.$el,s()}),at(()=>{i.value&&c()});const O=fo(t);let M=null;const I=k=>{M||(M={options:!1,series:!1},pt(()=>{const E=M;if(M=null,!i.value){s();return}if(E.options&&E.series){const R=a(t.options);R.series=a(t.series),i.value.updateOptions(R)}else E.options?i.value.updateOptions(a(t.options)):E.series&&i.value.updateSeries(a(t.series))})),M[k]=!0};return ye(O.options,()=>{I("options")}),ye(O.series,()=>{I("series")},{deep:!0}),ye(O.type,()=>{l()}),ye(O.width,()=>{l()}),ye(O.height,()=>{l()}),{chart:i,init:s,refresh:l,destroy:c,updateOptions:d,updateSeries:u,toggleSeries:f,showSeries:h,hideSeries:p,resetSeries:m,zoomX:y,toggleDataPointSelection:v,appendData:b,appendSeries:g,addXaxisAnnotation:$,addYaxisAnnotation:S,addPointAnnotation:_,removeAnnotation:P,clearAnnotations:T,setLocale:x,dataURI:w}},render(){return sr("div",{class:"vue-apexcharts"})}}),jCe=(t,e)=>{const n=t.__vccOpts||t;for(const[i,o]of e)n[i]=o;return n},VCe=oe({name:"apexchart-server",props:{type:{type:String,default:"line"},width:{type:[Number,String],default:400},height:{type:[Number,String],default:300},series:{type:Array,default:()=>[]},options:{type:Object,default:()=>({})},className:{type:String,default:""}},setup(t){const e=ae("");return QI(async()=>{try{const{default:n}=await ze(async()=>{const{default:o}=await import("./apexcharts.ssr.esm-fe46cd2d-9CakV-nF.js");return{default:o}},[]),i=Object.assign({},t.options,{chart:Object.assign({},t.options.chart,{type:t.type,width:t.width,height:t.height}),series:t.series});e.value=await n.renderToHTML(i,{width:t.width,height:t.height})}catch(n){console.error("Failed to render ApexChart on server:",n)}}),{chartHTML:e}}}),XCe=["innerHTML"];function YCe(t,e,n,i,o,r){return zi(),ns("div",{innerHTML:t.chartHTML,class:Xd(t.className)},null,10,XCe)}const xM=jCe(VCe,[["render",YCe]]),wM=oe({name:"apexchart-hydrate",props:{clientOptions:{type:Object,default:()=>({})},selector:{type:String,default:"[data-apexcharts-hydrate]"}},setup(t){let e=[];qe(async()=>{try{const{default:n}=await ze(async()=>{const{default:i}=await import("./apexcharts.ssr.esm-fe46cd2d-9CakV-nF.js");return{default:i}},[]);e=n.hydrateAll(t.selector,t.clientOptions)}catch(n){console.error("Failed to hydrate ApexCharts:",n)}}),at(()=>{e.forEach(n=>{n&&n.destroy&&n.destroy()}),e=[]})},render(){return null}}),GCe=t=>{t.component(Hg.name,Hg),t.component(xM.name,xM),t.component(wM.name,wM)};Hg.install=GCe;const KCe={items_per_page:"/ صفحه",jump_to:"برو به",jump_to_confirm:"تایید",page:"",prev_page:"صفحه قبلی",next_page:"صفحه بعدی",prev_5:"۵ صفحه قبلی",next_5:"۵ صفحه بعدی",prev_3:"۳ صفحه قبلی",next_3:"۳ صفحه بعدی"},UCe={locale:"fa_IR",today:"امروز",now:"اکنون",backToToday:"بازگشت به روز",ok:"باشه",clear:"پاک کردن",month:"ماه",year:"سال",timeSelect:"انتخاب زمان",dateSelect:"انتخاب تاریخ",monthSelect:"یک ماه را انتخاب کنید",yearSelect:"یک سال را انتخاب کنید",decadeSelect:"یک دهه را انتخاب کنید",yearFormat:"YYYY",dateFormat:"M/D/YYYY",dayFormat:"D",dateTimeFormat:"M/D/YYYY HH:mm:ss",monthBeforeYear:!0,previousMonth:"ماه قبل (PageUp)",nextMonth:"ماه بعد (PageDown)",previousYear:"سال قبل (Control + left)",nextYear:"سال بعد (Control + right)",previousDecade:"دهه قبل",nextDecade:"دهه بعد",previousCentury:"قرن قبل",nextCentury:"قرن بعد"},GN={placeholder:"انتخاب زمان",rangePlaceholder:["زمان شروع","زمان پایان"]},SM={lang:A({placeholder:"انتخاب تاریخ",yearPlaceholder:"انتخاب سال",quarterPlaceholder:"انتخاب فصل",monthPlaceholder:"انتخاب ماه",weekPlaceholder:"انتخاب هفته",rangePlaceholder:["تاریخ شروع","تاریخ پایان"],rangeYearPlaceholder:["سال شروع","سال پایان"],rangeMonthPlaceholder:["ماه شروع","ماه پایان"],rangeWeekPlaceholder:["هفته شروع","هفته پایان"]},UCe),timePickerLocale:A({},GN)},Fi="${label} از نوع ${type} معتبر نیست",qCe={locale:"fa",Pagination:KCe,DatePicker:SM,TimePicker:GN,Calendar:SM,global:{placeholder:"لطفاً انتخاب کنید"},Table:{filterTitle:"منوی فیلتر",filterConfirm:"تایید",filterReset:"پاک کردن",filterEmptyText:"بدون فیلتر",emptyText:"بدون داده",selectAll:"انتخاب صفحه‌ی کنونی",selectInvert:"معکوس کردن انتخاب‌ها در صفحه ی کنونی",selectNone:"انتخاب هیچکدام",selectionAll:"انتخاب همه داده‌ها",sortTitle:"مرتب سازی",expand:"باز شدن ردیف",collapse:"بستن ردیف",triggerDesc:"ترتیب نزولی",triggerAsc:"ترتیب صعودی",cancelSort:"لغوِ ترتیبِ داده شده"},Modal:{okText:"تایید",cancelText:"لغو",justOkText:"تایید"},Popconfirm:{okText:"تایید",cancelText:"لغو"},Transfer:{titles:["",""],searchPlaceholder:"جستجو",itemUnit:"عدد",itemsUnit:"عدد",remove:"حذف",selectCurrent:"انتخاب صفحه فعلی",removeCurrent:"پاک کردن انتخاب‌های صفحه فعلی",selectAll:"انتخاب همه",removeAll:"پاک کردن همه انتخاب‌ها",selectInvert:"معکوس کردن انتخاب‌ها در صفحه ی کنونی"},Upload:{uploading:"در حال آپلود...",removeFile:"حذف فایل",uploadError:"خطا در آپلود",previewFile:"مشاهده‌ی فایل",downloadFile:"دریافت فایل"},Empty:{description:"داده‌ای موجود نیست"},Icon:{icon:"آیکن"},Text:{edit:"ویرایش",copy:"کپی",copied:"کپی شد",expand:"توسعه"},PageHeader:{back:"برگشت"},Form:{optional:"(اختیاری)",defaultValidateMessages:{default:"خطا در ${label}",required:"فیلد ${label} اجباریست",enum:"${label} باید یکی از [${enum}] باشد",whitespace:"${label} نمیتواند خالی باشد",date:{format:"ساختار تاریخ در ${label} نامعتبر است",parse:"${label} قابل تبدیل به تاریخ نیست",invalid:"${label} تاریخی نا معتبر است"},types:{string:Fi,method:Fi,array:Fi,object:Fi,number:Fi,date:Fi,boolean:Fi,integer:Fi,float:Fi,regexp:Fi,email:Fi,url:Fi,hex:Fi},string:{len:"${label} باید ${len} کاراکتر باشد",min:"${label} باید حداقل ${min} کاراکتر باشد",max:"${label} باید حداکثر ${max} کاراکتر باشد",range:"${label} باید بین ${min}-${max} کاراکتر باشد"},number:{len:"${label} باید برابر ${len}",min:"${label} حداقل میتواند ${min} باشد",max:"${label} حداکثر میتواند ${max} باشد",range:"${label} باید بین ${min}-${max} باشد"},array:{len:"تعداد ${label} باید ${len} باشد.",min:"تعداد ${label} حداقل باید ${min} باشد",max:"تعداد ${label} حداکثر باید ${max} باشد",range:"مقدار ${label} باید بین ${min}-${max} باشد"},pattern:{mismatch:"الگوی ${label} با ${pattern} برابری نمی‌کند"}}},Image:{preview:"نمایش"}},id={disableCustomizer:!1,disableThemeTour:!0,footerType:"hidden",hideScrollToTop:!1,mainLayoutType:"vertical",navbarColor:"#fff",navbarType:"floating",routerTransition:"zoom-fade",rtl:!0,sidebarCollapsed:!1,theme:"light",userInfoLocalStorageKey:"userInfo"},ZCe={name:"هدناگلد",nameEn:"Hedena Gold",appTitle:"طلای هدناگلد",adminTitle:"هدناگلد — پنل مدیریت",siteUrl:"https://bnk.montzar.ir"},KN="admin-panel:sidebarCollapsed";function JCe(){if(typeof window>"u")return id.sidebarCollapsed;try{const t=window.localStorage.getItem(KN);return t===null?id.sidebarCollapsed:t==="1"}catch{return id.sidebarCollapsed}}const QCe=Nk("layout",{state:()=>({windowWidth:typeof window<"u"?window.innerWidth:0,scrollY:0,theme:id.theme,isSidebarActive:!0,sidebarCollapsed:JCe(),mobileNavOpen:!1}),getters:{isSmallScreen:t=>t.windowWidth<992,isMobile:t=>t.windowWidth<576},actions:{updateWindowWidth(t){this.windowWidth=t},updateWindowScrollY(t){this.scrollY=t},setMobileNavOpen(t){this.mobileNavOpen=t},toggleSidebar(t){this.isSidebarActive=t??!this.isSidebarActive},setSidebarCollapsed(t){if(this.sidebarCollapsed=t,!(typeof window>"u"))try{window.localStorage.setItem(KN,t?"1":"0")}catch{}}}}),e$e=5*60*1e3,CM=231;function t$e(){const t=ae(null),e=ae(!1),n=L(()=>{const s=t.value;return s?(s.history??[]).filter(l=>l.build>CM&&l.build<=s.build):[]});async function i(){if(!t.value)try{const s=await fetch(`/version.json?t=${Date.now()}`,{cache:"no-store"});if(!s.ok)return;const l=await s.json();typeof l.build=="number"&&l.build>CM&&(t.value=l)}catch{}}async function o(){var s,l;e.value=!0;try{const c=await((l=(s=navigator.serviceWorker)==null?void 0:s.getRegistrations)==null?void 0:l.call(s));c&&await Promise.all(c.map(u=>u.unregister()))}catch{}try{if("caches"in window){const c=await caches.keys();await Promise.all(c.map(u=>caches.delete(u)))}}catch{}window.location.reload()}let r;const a=()=>{document.visibilityState==="visible"&&i()};return qe(()=>{i(),r=setInterval(i,e$e),document.addEventListener("visibilitychange",a)}),at(()=>{r&&clearInterval(r),document.removeEventListener("visibilitychange",a)}),{available:t,changes:n,updating:e,applyUpdate:o,check:i}}const n$e={class:"list"},i$e={key:1,class:"lead"},o$e=oe({__name:"AppUpdateGate",setup(t){const{available:e,changes:n,updating:i,applyUpdate:o}=t$e();return(r,a)=>{const s=Iu("a-tag"),l=Iu("a-button"),c=Iu("a-modal");return zi(),cc(c,{open:!!Lt(e),closable:!1,"mask-closable":!1,keyboard:!1,"z-index":2e3,width:"420px",centered:""},{title:ss(()=>[a[0]||(a[0]=Tn(" نسخه‌ی تازه‌ی پنل آماده است ",-1)),Lt(e)?(zi(),cc(s,{key:0,class:"ms-2",color:"blue"},{default:ss(()=>[Tn("نسخه‌ی "+V0(Lt(e).version),1)]),_:1})):xk("",!0)]),footer:ss(()=>[C(l,{type:"primary",block:"",loading:Lt(i),onClick:Lt(o)},{default:ss(()=>[...a[2]||(a[2]=[Tn("به‌روزرسانی",-1)])]),_:1},8,["loading","onClick"])]),default:ss(()=>[Lt(n).length?(zi(),ns(Ge,{key:0},[a[1]||(a[1]=Yl("p",{class:"lead"},"در این نسخه:",-1)),Yl("ul",n$e,[(zi(!0),ns(Ge,null,V$(Lt(n),u=>(zi(),ns(Ge,{key:u.build},[(zi(!0),ns(Ge,null,V$(u.notes,(d,f)=>(zi(),ns("li",{key:u.build+"-"+f},V0(d),1))),128))],64))),128))])],64)):(zi(),ns("p",i$e,"بهبودها و رفع اشکال‌ها.")),a[3]||(a[3]=Yl("p",{class:"hint"},"کار ذخیره‌نشده‌ای اگر در صفحه دارید، پیش از به‌روزرسانی ثبتش کنید.",-1))]),_:1},8,["open"])}}}),r$e=(t,e)=>{const n=t.__vccOpts||t;for(const[i,o]of e)n[i]=o;return n},a$e=r$e(o$e,[["__scopeId","data-v-12784d02"]]);function BPe(){return!1}function s$e(t){const e="/",n=e.endsWith("/")?e:`${e}/`;return`${window.location.origin}${n}${t.replace(/^\//,"")}`}const $c="token",UN="user",l$e=oe({__name:"App",setup(t){const e={colorPrimary:"#1c2d56",colorLink:"#1DA57A",borderRadius:6,controlHeight:36,colorPrimaryBg:"#eef1f8",colorPrimaryBgHover:"#e1e6f2",colorPrimaryBorder:"#c5cde0",colorPrimaryBorderHover:"#9ea9c6"},n=QCe(),i=ae([]);function o(l){l==="dark"?(document.body.className.match("theme-semi-dark")&&document.body.classList.remove("theme-semi-dark"),document.body.classList.add("theme-dark")):l==="semi-dark"?(document.body.className.match("theme-dark")&&document.body.classList.remove("theme-dark"),document.body.classList.add("theme-semi-dark")):(document.body.className.match("theme-dark")&&document.body.classList.remove("theme-dark"),document.body.className.match("theme-semi-dark")&&document.body.classList.remove("theme-semi-dark"))}function r(l){i.value.push(l)}function a(){n.updateWindowWidth(window.innerWidth),document.documentElement.style.setProperty("--vh",`${window.innerHeight*.01}px`)}function s(){n.updateWindowScrollY(window.scrollY)}return ye(()=>n.theme,l=>o(l)),document.documentElement.setAttribute("dir","rtl"),qe(()=>{const l=localStorage.getItem(UN),c=l?JSON.parse(l):void 0,u=localStorage.getItem("login")||void 0;c&&u&&(Vr.open({message:`${c&&c.name?c.name:" کاربر "} عزیز `,placement:"topLeft",description:`به ${ZCe.name} خوش آمدید`,style:{color:"var(--primary-color)",marginLeft:"20px"}}),localStorage.removeItem("login")),o(id.theme),n.updateWindowWidth(window.innerWidth);const d=window.innerHeight*.01;document.documentElement.style.setProperty("--vh",`${d}px`),window.addEventListener("resize",a),window.addEventListener("scroll",s)}),Yn(()=>{window.removeEventListener("resize",a),window.removeEventListener("scroll",s)}),(l,c)=>{const u=Iu("router-view"),d=Iu("a-config-provider");return zi(),cc(d,{locale:Lt(qCe),direction:"rtl",theme:{token:e}},{default:ss(()=>[Yl("div",{id:"app",class:Xd(i.value)},[C(u,{onSetAppClasses:r}),C(a$e)],2)]),_:1},8,["locale","theme"])}}});/*! * vue-router v4.6.4 * (c) 2025 Eduardo San Martin Morote * @license MIT @@ -2474,7 +2474,7 @@ ${s.toFixed(1)}%`;return String(c).split(` * vue-router v4.6.4 * (c) 2025 Eduardo San Martin Morote * @license MIT - */let j$e=()=>location.protocol+"//"+location.host;function r8(t,e){const{pathname:n,search:i,hash:o}=e,r=t.indexOf("#");if(r>-1){let a=o.includes(t.slice(r))?t.slice(r).length:1,s=o.slice(a);return s[0]!=="/"&&(s="/"+s),AM(s,"")}return AM(n,t)+i+o}function V$e(t,e,n,i){let o=[],r=[],a=null;const s=({state:f})=>{const h=r8(t,location),p=n.value,g=e.value;let m=0;if(f){if(n.value=h,e.value=f,a&&a===p){a=null;return}m=g?f.position-g.position:0}else i(h);o.forEach(v=>{v(n.value,p,{delta:m,type:gw.pop,direction:m?m>0?R0.forward:R0.back:R0.unknown})})};function l(){a=n.value}function c(f){o.push(f);const h=()=>{const p=o.indexOf(f);p>-1&&o.splice(p,1)};return r.push(h),h}function u(){if(document.visibilityState==="hidden"){const{history:f}=window;if(!f.state)return;f.replaceState(Ht({},f.state,{scroll:Ev()}),"")}}function d(){for(const f of r)f();r=[],window.removeEventListener("popstate",s),window.removeEventListener("pagehide",u),document.removeEventListener("visibilitychange",u)}return window.addEventListener("popstate",s),window.addEventListener("pagehide",u),document.addEventListener("visibilitychange",u),{pauseListeners:l,listen:c,destroy:d}}function EM(t,e,n,i=!1,o=!1){return{back:t,current:e,forward:n,replaced:i,position:window.history.length,scroll:o?Ev():null}}function X$e(t){const{history:e,location:n}=window,i={value:r8(t,n)},o={value:e.state};o.value||r(i.value,{back:null,current:i.value,forward:null,position:e.length-1,replaced:!0,scroll:null},!0);function r(l,c,u){const d=t.indexOf("#"),f=d>-1?(n.host&&document.querySelector("base")?t:t.slice(d))+l:j$e()+t+l;try{e[u?"replaceState":"pushState"](c,"",f),o.value=c}catch(h){console.error(h),n[u?"replace":"assign"](f)}}function a(l,c){r(l,Ht({},e.state,EM(o.value.back,l,o.value.forward,!0),c,{position:o.value.position}),!0),i.value=l}function s(l,c){const u=Ht({},o.value,e.state,{forward:l,scroll:Ev()});r(u.current,u,!0),r(l,Ht({},EM(i.value,l,null),{position:u.position+1},c),!1),i.value=l}return{location:i,state:o,push:s,replace:a}}function Y$e(t){t=T$e(t);const e=X$e(t),n=V$e(t,e.state,e.location,e.replace);function i(r,a=!0){a||n.pauseListeners(),history.go(r)}const o=Ht({location:"",base:t,go:i,createHref:M$e.bind(null,t)},e,n);return Object.defineProperty(o,"location",{enumerable:!0,get:()=>e.location.value}),Object.defineProperty(o,"state",{enumerable:!0,get:()=>e.state.value}),o}let ys=function(t){return t[t.Static=0]="Static",t[t.Param=1]="Param",t[t.Group=2]="Group",t}({});var An=function(t){return t[t.Static=0]="Static",t[t.Param=1]="Param",t[t.ParamRegExp=2]="ParamRegExp",t[t.ParamRegExpEnd=3]="ParamRegExpEnd",t[t.EscapeNext=4]="EscapeNext",t}(An||{});const G$e={type:ys.Static,value:""},K$e=/[a-zA-Z0-9_]/;function U$e(t){if(!t)return[[]];if(t==="/")return[[G$e]];if(!t.startsWith("/"))throw new Error(`Invalid path "${t}"`);function e(h){throw new Error(`ERR (${n})/"${c}": ${h}`)}let n=An.Static,i=n;const o=[];let r;function a(){r&&o.push(r),r=[]}let s=0,l,c="",u="";function d(){c&&(n===An.Static?r.push({type:ys.Static,value:c}):n===An.Param||n===An.ParamRegExp||n===An.ParamRegExpEnd?(r.length>1&&(l==="*"||l==="+")&&e(`A repeatable param (${c}) must be alone in its segment. eg: '/:ids+.`),r.push({type:ys.Param,value:c,regexp:u,repeatable:l==="*"||l==="+",optional:l==="*"||l==="?"})):e("Invalid state to consume buffer"),c="")}function f(){c+=l}for(;se.length?e.length===1&&e[0]===ui.Static+ui.Segment?1:-1:0}function a8(t,e){let n=0;const i=t.score,o=e.score;for(;n0&&e[e.length-1]<0}const eAe={strict:!1,end:!0,sensitive:!1};function tAe(t,e,n){const i=J$e(U$e(t.path),n),o=Ht(i,{record:t,parent:e,children:[],alias:[]});return e&&!o.record.aliasOf==!e.record.aliasOf&&e.children.push(o),o}function nAe(t,e){const n=[],i=new Map;e=$M(eAe,e);function o(d){return i.get(d)}function r(d,f,h){const p=!h,g=DM(d);g.aliasOf=h&&h.record;const m=$M(e,d),v=[g];if("alias"in d){const w=typeof d.alias=="string"?[d.alias]:d.alias;for(const x of w)v.push(DM(Ht({},g,{components:h?h.record.components:g.components,path:x,aliasOf:h?h.record:g})))}let b,y;for(const w of v){const{path:x}=w;if(f&&x[0]!=="/"){const $=f.record.path,S=$[$.length-1]==="/"?"":"/";w.path=f.record.path+(x&&S+x)}if(b=tAe(w,f,m),h?h.alias.push(b):(y=y||b,y!==b&&y.alias.push(b),p&&d.name&&!RM(b)&&a(d.name)),s8(b)&&l(b),g.children){const $=g.children;for(let S=0;S<$.length;S++)r($[S],b,h&&h.children[S])}h=h||b}return y?()=>{a(y)}:od}function a(d){if(i8(d)){const f=i.get(d);f&&(i.delete(d),n.splice(n.indexOf(f),1),f.children.forEach(a),f.alias.forEach(a))}else{const f=n.indexOf(d);f>-1&&(n.splice(f,1),d.record.name&&i.delete(d.record.name),d.children.forEach(a),d.alias.forEach(a))}}function s(){return n}function l(d){const f=rAe(d,n);n.splice(f,0,d),d.record.name&&!RM(d)&&i.set(d.record.name,d)}function c(d,f){let h,p={},g,m;if("name"in d&&d.name){if(h=i.get(d.name),!h)throw _c(an.MATCHER_NOT_FOUND,{location:d});m=h.record.name,p=Ht(kM(f.params,h.keys.filter(y=>!y.optional).concat(h.parent?h.parent.keys.filter(y=>y.optional):[]).map(y=>y.name)),d.params&&kM(d.params,h.keys.map(y=>y.name))),g=h.stringify(p)}else if(d.path!=null)g=d.path,h=n.find(y=>y.re.test(g)),h&&(p=h.parse(g),m=h.record.name);else{if(h=f.name?i.get(f.name):n.find(y=>y.re.test(f.path)),!h)throw _c(an.MATCHER_NOT_FOUND,{location:d,currentLocation:f});m=h.record.name,p=Ht({},f.params,d.params),g=h.stringify(p)}const v=[];let b=h;for(;b;)v.unshift(b.record),b=b.parent;return{name:m,path:g,params:p,matched:v,meta:oAe(v)}}t.forEach(d=>r(d));function u(){n.length=0,i.clear()}return{addRoute:r,resolve:c,removeRoute:a,clearRoutes:u,getRoutes:s,getRecordMatcher:o}}function kM(t,e){const n={};for(const i of e)i in t&&(n[i]=t[i]);return n}function DM(t){const e={path:t.path,redirect:t.redirect,name:t.name,meta:t.meta||{},aliasOf:t.aliasOf,beforeEnter:t.beforeEnter,props:iAe(t),children:t.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in t?t.components||null:t.component&&{default:t.component}};return Object.defineProperty(e,"mods",{value:{}}),e}function iAe(t){const e={},n=t.props||!1;if("component"in t)e.default=n;else for(const i in t.components)e[i]=typeof n=="object"?n[i]:n;return e}function RM(t){for(;t;){if(t.record.aliasOf)return!0;t=t.parent}return!1}function oAe(t){return t.reduce((e,n)=>Ht(e,n.meta),{})}function rAe(t,e){let n=0,i=e.length;for(;n!==i;){const r=n+i>>1;a8(t,e[r])<0?i=r:n=r+1}const o=aAe(t);return o&&(i=e.lastIndexOf(o,i-1)),i}function aAe(t){let e=t;for(;e=e.parent;)if(s8(e)&&a8(t,e)===0)return e}function s8({record:t}){return!!(t.name||t.components&&Object.keys(t.components).length||t.redirect)}function LM(t){const e=Je(Mv),n=Je(m$),i=L(()=>{const l=Lt(t.to);return e.resolve(l)}),o=L(()=>{const{matched:l}=i.value,{length:c}=l,u=l[c-1],d=n.matched;if(!u||!d.length)return-1;const f=d.findIndex(Ac.bind(null,u));if(f>-1)return f;const h=FM(l[c-2]);return c>1&&FM(u)===h&&d[d.length-1].path!==h?d.findIndex(Ac.bind(null,l[c-2])):f}),r=L(()=>o.value>-1&&dAe(n.params,i.value.params)),a=L(()=>o.value>-1&&o.value===n.matched.length-1&&n8(n.params,i.value.params));function s(l={}){if(uAe(l)){const c=e[Lt(t.replace)?"replace":"push"](Lt(t.to)).catch(od);return t.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>c),c}return Promise.resolve()}return{route:i,href:L(()=>i.value.href),isActive:r,isExactActive:a,navigate:s}}function sAe(t){return t.length===1?t[0]:t}const lAe=oe({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"},viewTransition:Boolean},useLink:LM,setup(t,{slots:e}){const n=$t(LM(t)),{options:i}=Je(Mv),o=L(()=>({[NM(t.activeClass,i.linkActiveClass,"router-link-active")]:n.isActive,[NM(t.exactActiveClass,i.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const r=e.default&&sAe(e.default(n));return t.custom?r:sr("a",{"aria-current":n.isExactActive?t.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:o.value},r)}}}),cAe=lAe;function uAe(t){if(!(t.metaKey||t.altKey||t.ctrlKey||t.shiftKey)&&!t.defaultPrevented&&!(t.button!==void 0&&t.button!==0)){if(t.currentTarget&&t.currentTarget.getAttribute){const e=t.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(e))return}return t.preventDefault&&t.preventDefault(),!0}}function dAe(t,e){for(const n in e){const i=e[n],o=t[n];if(typeof i=="string"){if(i!==o)return!1}else if(!Bo(o)||o.length!==i.length||i.some((r,a)=>r.valueOf()!==o[a].valueOf()))return!1}return!0}function FM(t){return t?t.aliasOf?t.aliasOf.path:t.path:""}const NM=(t,e,n)=>t??e??n,fAe=oe({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(t,{attrs:e,slots:n}){const i=Je(vw),o=L(()=>t.route||i.value),r=Je(TM,0),a=L(()=>{let c=Lt(r);const{matched:u}=o.value;let d;for(;(d=u[c])&&!d.components;)c++;return c}),s=L(()=>o.value.matched[a.value]);ot(TM,L(()=>a.value+1)),ot(H$e,s),ot(vw,o);const l=ae();return ye(()=>[l.value,s.value,t.name],([c,u,d],[f,h,p])=>{u&&(u.instances[d]=c,h&&h!==u&&c&&c===f&&(u.leaveGuards.size||(u.leaveGuards=h.leaveGuards),u.updateGuards.size||(u.updateGuards=h.updateGuards))),c&&u&&(!h||!Ac(u,h)||!f)&&(u.enterCallbacks[d]||[]).forEach(g=>g(c))},{flush:"post"}),()=>{const c=o.value,u=t.name,d=s.value,f=d&&d.components[u];if(!f)return BM(n.default,{Component:f,route:c});const h=d.props[u],p=h?h===!0?c.params:typeof h=="function"?h(c):h:null,m=sr(f,Ht({},p,e,{onVnodeUnmounted:v=>{v.component.isUnmounted&&(d.instances[u]=null)},ref:l}));return BM(n.default,{Component:m,route:c})||m}}});function BM(t,e){if(!t)return null;const n=t(e);return n.length===1?n[0]:n}const hAe=fAe;function pAe(t){const e=nAe(t.routes,t),n=t.parseQuery||B$e,i=t.stringifyQuery||OM,o=t.history,r=fu(),a=fu(),s=fu(),l=ie(oa);let c=oa;Rl&&t.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const u=k0.bind(null,Y=>""+Y),d=k0.bind(null,S$e),f=k0.bind(null,Hd);function h(Y,J){let Q,G;return i8(Y)?(Q=e.getRecordMatcher(Y),G=J):G=Y,e.addRoute(G,Q)}function p(Y){const J=e.getRecordMatcher(Y);J&&e.removeRoute(J)}function g(){return e.getRoutes().map(Y=>Y.record)}function m(Y){return!!e.getRecordMatcher(Y)}function v(Y,J){if(J=Ht({},J||l.value),typeof Y=="string"){const te=D0(n,Y,J.path),ue=e.resolve({path:te.path},J),se=o.createHref(te.fullPath);return Ht(te,ue,{params:f(ue.params),hash:Hd(te.hash),redirectedFrom:void 0,href:se})}let Q;if(Y.path!=null)Q=Ht({},Y,{path:D0(n,Y.path,J.path).path});else{const te=Ht({},Y.params);for(const ue in te)te[ue]==null&&delete te[ue];Q=Ht({},Y,{params:d(te)}),J.params=d(J.params)}const G=e.resolve(Q,J),ee=Y.hash||"";G.params=u(f(G.params));const X=A$e(i,Ht({},Y,{hash:y$e(ee),path:G.path})),K=o.createHref(X);return Ht({fullPath:X,hash:ee,query:i===OM?z$e(Y.query):Y.query||{}},G,{redirectedFrom:void 0,href:K})}function b(Y){return typeof Y=="string"?D0(n,Y,l.value.path):Ht({},Y)}function y(Y,J){if(c!==Y)return _c(an.NAVIGATION_CANCELLED,{from:J,to:Y})}function w(Y){return S(Y)}function x(Y){return w(Ht(b(Y),{replace:!0}))}function $(Y,J){const Q=Y.matched[Y.matched.length-1];if(Q&&Q.redirect){const{redirect:G}=Q;let ee=typeof G=="function"?G(Y,J):G;return typeof ee=="string"&&(ee=ee.includes("?")||ee.includes("#")?ee=b(ee):{path:ee},ee.params={}),Ht({query:Y.query,hash:Y.hash,params:ee.path!=null?{}:Y.params},ee)}}function S(Y,J){const Q=c=v(Y),G=l.value,ee=Y.state,X=Y.force,K=Y.replace===!0,te=$(Q,G);if(te)return S(Ht(b(te),{state:typeof te=="object"?Ht({},ee,te.state):ee,force:X,replace:K}),J||Q);const ue=Q;ue.redirectedFrom=J;let se;return!X&&_$e(i,G,Q)&&(se=_c(an.NAVIGATION_DUPLICATED,{to:ue,from:G}),z(G,G,!0,!1)),(se?Promise.resolve(se):T(ue,G)).catch(re=>vr(re)?vr(re,an.NAVIGATION_GUARD_REDIRECT)?re:B(re):F(re,ue,G)).then(re=>{if(re){if(vr(re,an.NAVIGATION_GUARD_REDIRECT))return S(Ht({replace:K},b(re.to),{state:typeof re.to=="object"?Ht({},ee,re.to.state):ee,force:X}),J||ue)}else re=M(ue,G,!0,K,ee);return O(ue,G,re),re})}function _(Y,J){const Q=y(Y,J);return Q?Promise.reject(Q):Promise.resolve()}function P(Y){const J=U.values().next().value;return J&&typeof J.runWithContext=="function"?J.runWithContext(Y):Y()}function T(Y,J){let Q;const[G,ee,X]=W$e(Y,J);Q=L0(G.reverse(),"beforeRouteLeave",Y,J);for(const te of G)te.leaveGuards.forEach(ue=>{Q.push(ha(ue,Y,J))});const K=_.bind(null,Y,J);return Q.push(K),q(Q).then(()=>{Q=[];for(const te of r.list())Q.push(ha(te,Y,J));return Q.push(K),q(Q)}).then(()=>{Q=L0(ee,"beforeRouteUpdate",Y,J);for(const te of ee)te.updateGuards.forEach(ue=>{Q.push(ha(ue,Y,J))});return Q.push(K),q(Q)}).then(()=>{Q=[];for(const te of X)if(te.beforeEnter)if(Bo(te.beforeEnter))for(const ue of te.beforeEnter)Q.push(ha(ue,Y,J));else Q.push(ha(te.beforeEnter,Y,J));return Q.push(K),q(Q)}).then(()=>(Y.matched.forEach(te=>te.enterCallbacks={}),Q=L0(X,"beforeRouteEnter",Y,J,P),Q.push(K),q(Q))).then(()=>{Q=[];for(const te of a.list())Q.push(ha(te,Y,J));return Q.push(K),q(Q)}).catch(te=>vr(te,an.NAVIGATION_CANCELLED)?te:Promise.reject(te))}function O(Y,J,Q){s.list().forEach(G=>P(()=>G(Y,J,Q)))}function M(Y,J,Q,G,ee){const X=y(Y,J);if(X)return X;const K=J===oa,te=Rl?history.state:{};Q&&(G||K?o.replace(Y.fullPath,Ht({scroll:K&&te&&te.scroll},ee)):o.push(Y.fullPath,ee)),l.value=Y,z(Y,J,Q,K),B()}let I;function k(){I||(I=o.listen((Y,J,Q)=>{if(!V.listening)return;const G=v(Y),ee=$(G,V.currentRoute.value);if(ee){S(Ht(ee,{replace:!0,force:!0}),G).catch(od);return}c=G;const X=l.value;Rl&&D$e(PM(X.fullPath,Q.delta),Ev()),T(G,X).catch(K=>vr(K,an.NAVIGATION_ABORTED|an.NAVIGATION_CANCELLED)?K:vr(K,an.NAVIGATION_GUARD_REDIRECT)?(S(Ht(b(K.to),{force:!0}),G).then(te=>{vr(te,an.NAVIGATION_ABORTED|an.NAVIGATION_DUPLICATED)&&!Q.delta&&Q.type===gw.pop&&o.go(-1,!1)}).catch(od),Promise.reject()):(Q.delta&&o.go(-Q.delta,!1),F(K,G,X))).then(K=>{K=K||M(G,X,!1),K&&(Q.delta&&!vr(K,an.NAVIGATION_CANCELLED)?o.go(-Q.delta,!1):Q.type===gw.pop&&vr(K,an.NAVIGATION_ABORTED|an.NAVIGATION_DUPLICATED)&&o.go(-1,!1)),O(G,X,K)}).catch(od)}))}let E=fu(),R=fu(),D;function F(Y,J,Q){B(Y);const G=R.list();return G.length?G.forEach(ee=>ee(Y,J,Q)):console.error(Y),Promise.reject(Y)}function N(){return D&&l.value!==oa?Promise.resolve():new Promise((Y,J)=>{E.add([Y,J])})}function B(Y){return D||(D=!Y,k(),E.list().forEach(([J,Q])=>Y?Q(Y):J()),E.reset()),Y}function z(Y,J,Q,G){const{scrollBehavior:ee}=t;if(!Rl||!ee)return Promise.resolve();const X=!Q&&R$e(PM(Y.fullPath,0))||(G||!Q)&&history.state&&history.state.scroll||null;return pt().then(()=>ee(Y,J,X)).then(K=>K&&k$e(K)).catch(K=>F(K,Y,J))}const W=Y=>o.go(Y);let j;const U=new Set,V={currentRoute:l,listening:!0,addRoute:h,removeRoute:p,clearRoutes:e.clearRoutes,hasRoute:m,getRoutes:g,resolve:v,options:t,push:w,replace:x,go:W,back:()=>W(-1),forward:()=>W(1),beforeEach:r.add,beforeResolve:a.add,afterEach:s.add,onError:R.add,isReady:N,install(Y){Y.component("RouterLink",cAe),Y.component("RouterView",hAe),Y.config.globalProperties.$router=V,Object.defineProperty(Y.config.globalProperties,"$route",{enumerable:!0,get:()=>Lt(l)}),Rl&&!j&&l.value===oa&&(j=!0,w(o.location).catch(G=>{}));const J={};for(const G in oa)Object.defineProperty(J,G,{get:()=>l.value[G],enumerable:!0});Y.provide(Mv,V),Y.provide(m$,kI(J)),Y.provide(vw,l);const Q=Y.unmount;U.add(Y),Y.unmount=function(){U.delete(Y),U.size<1&&(c=oa,I&&I(),I=null,l.value=oa,j=!1,D=!1),Q()}}};function q(Y){return Y.reduce((J,Q)=>J.then(()=>P(Q)),Promise.resolve())}return V}function zPe(){return Je(Mv)}function HPe(t){return Je(m$)}const gAe=[{path:"/",name:"dashboard",redirect:"/dashboard/ecommerce"},{path:"/dashboard/analytics",name:"dashboard-analytics",component:()=>ze(()=>import("./Dashboard-BYSpDtqA.js"),__vite__mapDeps([0,1,2,3,4,5])),meta:{rule:"editor",role:"dashboard.view"}},{path:"/my-data",name:"my-data",component:()=>ze(()=>import("./myData-Dsrps5OB.js"),__vite__mapDeps([6,7])),meta:{rule:"editor"}},{path:"/dashboard/ecommerce",name:"dashboard-ecommerce",component:()=>ze(()=>import("./Dashboard-BYSpDtqA.js"),__vite__mapDeps([0,1,2,3,4,5])),meta:{rule:"admin",role:"dashboard.view"}},{path:"/config/manage/const",component:()=>ze(()=>import("./Const-g9kcjAq3.js"),__vite__mapDeps([8,9,10,11])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"مدیریت ثابت ها",active:!0}],pageTitle:"مدیریت ثابت ها",rule:"editor",role:"config.statics",parent:"manage",no_scroll:!0}},{path:"/config/manage/wallet",component:()=>ze(()=>import("./wallet-CIYgq7wX.js"),__vite__mapDeps([12,13])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"مدیریت کیف پول",active:!0}],pageTitle:"مدیریت کیف پول",rule:"editor",role:"config.wallet",superAdminOnly:!0,parent:"manage",no_scroll:!0}},{path:"/config/manage/accounting",component:()=>ze(()=>import("./accounting-CV0dCHMN.js"),__vite__mapDeps([14,2,15,16,17])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"اتصال حسابداری",active:!0}],pageTitle:"اتصال حسابداری",rule:"editor",role:"config.accounting",parent:"manage",no_scroll:!0}},{path:"/config/manage/wage",component:()=>ze(()=>import("./wage-B8ummm0O.js"),__vite__mapDeps([18,2,19])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"اجرت",active:!0}],pageTitle:"اجرت",rule:"editor",role:"config.wage",parent:"manage",no_scroll:!0}},{path:"/config/manage/report",component:()=>ze(()=>import("./report-Dqz_8JiO.js"),__vite__mapDeps([20,21])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"گزارش",active:!0}],pageTitle:"گزارش",rule:"editor",role:"config.report",parent:"manage",no_scroll:!0}},{path:"/apps/product/",redirect:"/apps/product/list",name:"product"},{path:"/product/change/percent",component:()=>ze(()=>import("./ChangePercent-D6cLdOBj.js"),[]),meta:{rule:"editor",role:"product.percent",parent:"product",no_scroll:!0}},{path:"/apps/product/add",component:()=>ze(()=>import("./AddProduct-vqd1_hig.js"),__vite__mapDeps([22,10,23,24,25])),meta:{rule:"editor",role:"product.create",parent:"product",no_scroll:!0}},{path:"/apps/product/edit/:id/:variant_id?",name:"product-edit",component:()=>ze(()=>import("./EditProduct-CAmy4CHb.js"),__vite__mapDeps([26,22,10,23,24,25])),meta:{rule:"editor",role:"product.list.edit",parent:"product",no_scroll:!0}},{path:"/apps/product/list",name:"product-list",component:()=>ze(()=>import("./ProductList-BELR06_U.js"),__vite__mapDeps([27,28,1,2,29,30,31,32,9,33])),meta:{rule:"editor",role:"product.list",parent:"product",no_scroll:!0}},{path:"/category",redirect:"/category/list",name:"category"},{path:"/category/add/:id?",name:"category-add",component:()=>ze(()=>import("./Add-su3cMDjW.js"),__vite__mapDeps([34,35,36,37,10])),meta:{rule:"editor",role:"collection.create",parent:"category",no_scroll:!0}},{path:"/category/edit/:id",component:()=>ze(()=>import("./Edit-zdHd1rSg.js"),__vite__mapDeps([38,35,36,37,10])),name:"category-edit",meta:{rule:"editor",role:"collection.list.edit",parent:"category",no_scroll:!0}},{path:"/category/list",name:"category-list",component:()=>ze(()=>import("./List-CG4Z6bu4.js"),__vite__mapDeps([39,28,1,2,29,30,40,35,36,37,10,9])),meta:{rule:"editor",role:"collection.list",parent:"category",no_scroll:!0}},{path:"/add/findoc",component:()=>ze(()=>import("./addFinDoc-BK_gCf66.js"),__vite__mapDeps([41,42,36,37])),meta:{rule:"editor",role:"document.create"}},{path:"/edit/findoc/:id",component:()=>ze(()=>import("./addFinDoc-BK_gCf66.js"),__vite__mapDeps([41,42,36,37])),meta:{rule:"editor",role:"document.list.edit"}},{path:"/order",redirect:"/order/list",name:"order"},{path:"/order/list",component:()=>ze(()=>import("./List-DuiptuLt.js"),__vite__mapDeps([43,28,1,2,29,30,44,45,46,47,3,4,23,48,49,50,51,24,16,52,53])),meta:{rule:"editor",role:"order.list",superAdminOnly:!0,parent:"order",no_scroll:!0}},{path:"/order/omde-list",component:()=>ze(()=>import("./OmdeList-Bv_RjTnU.js"),__vite__mapDeps([54,28,1,2,29,30,44,45,46,47,3,4,23,48,49,50,51,24,16,52,55])),meta:{rule:"editor",role:"order.omde",parent:"order",no_scroll:!0}},{path:"/order/make",component:()=>ze(()=>import("./MakeOrder-CVDhxNHn.js"),__vite__mapDeps([56,28,1,2,29,30,44,45,46,47,3,4,23,48,49,50,57])),meta:{rule:"editor",role:"order.makeOrder",parent:"order",no_scroll:!0}},{path:"/order/create",component:()=>ze(()=>import("./create-CWKMmAqe.js"),__vite__mapDeps([58,28,1,2,29,30,32,7,59])),meta:{rule:"editor",role:"order.create",superAdminOnly:!0,parent:"order",no_scroll:!0}},{path:"/order/tamin-list",component:()=>ze(()=>import("./TaminList-Bdw9wOZC.js"),__vite__mapDeps([60,28,1,2,29,30,44,45,46,47,3,4,23,48,49,50,51,24,16,52,61])),meta:{rule:"editor",role:"order.tamin",parent:"order",no_scroll:!0}},{path:"/major/promotion/list",component:()=>ze(()=>import("./promotion_list-D-4sV3K8.js"),__vite__mapDeps([62,28,1,2,29,30,40,63,64,36,37,65,66,67])),meta:{rule:"editor",role:"offers.list",no_scroll:!0}},{path:"/major/promotion/add",component:()=>ze(()=>import("./promotion_add_edit-CgFIHrlC.js"),__vite__mapDeps([68,63,64,36,37,65])),meta:{rule:"editor",role:"offers.create",no_scroll:!0}},{path:"/major/promotion/edit/:id",component:()=>ze(()=>import("./promotion_add_edit-CgFIHrlC.js"),__vite__mapDeps([68,63,64,36,37,65])),meta:{rule:"editor",role:"offers.list.edit",no_scroll:!0}},{path:"/major/promotion/tak/add",component:()=>ze(()=>import("./promotion_tak_add_edit-CPqK-9Fx.js"),__vite__mapDeps([69,66,64,36,37,65])),meta:{rule:"editor",role:"offers.create.tak",superAdminOnly:!0,no_scroll:!0}},{path:"/major/promotion/tak/edit/:id",component:()=>ze(()=>import("./promotion_tak_add_edit-CPqK-9Fx.js"),__vite__mapDeps([69,66,64,36,37,65])),meta:{rule:"editor",role:"offers.list.tak.edit",superAdminOnly:!0,no_scroll:!0}},{path:"/major/promotion/autopromotion",component:()=>ze(()=>import("./autopromotion-Dh5EI45L.js"),[]),meta:{rule:"editor",role:"offers.autopromotion",no_scroll:!0}},{path:"/major/offersIgnore",component:()=>ze(()=>import("./offersIgnore-add-edit-B3lGBXKX.js"),__vite__mapDeps([70,28,1,2,29,30,71])),meta:{rule:"editor",role:"offersIgnore"}},{path:"/comments",name:"comments",component:()=>ze(()=>import("./Comments-84or1_Dw.js"),__vite__mapDeps([72,73,28,1,2,29,30,44,45,46,47,3,4,23,48,49,50,74])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"دیدگاه ها",active:!0}],pageTitle:"دیدگاه ها",rule:"editor",role:"comment",no_scroll:!0}},{path:"/sms/create",name:"create_sms",component:()=>ze(()=>import("./create-CgPuMsyQ.js"),__vite__mapDeps([75,28,1,2,29,30,76])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"ارسال پیامک",active:!0}],pageTitle:"ارسال پیامک",rule:"editor",role:"sms.create",no_scroll:!0}},{path:"/notify",name:"notify",component:()=>ze(()=>import("./user-CZGgwdh4.js"),__vite__mapDeps([77,28,1,2,29,30,78])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"لیست نوتیفیکیشن های دریافتی",active:!0}],pageTitle:"لیست نوتیفیکیشن های ذریافتی",rule:"editor",role:"notify.me",no_scroll:!0}},{path:"/notify/create",name:"create_notify",component:()=>ze(()=>import("./create-sdJV-jnf.js"),[]),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"ارسال نوتیفیکیشن",active:!0}],pageTitle:"ارسال نوتیفیکیشن",rule:"editor",role:"notify.create",no_scroll:!0}},{path:"/wallet",name:"wallet",component:()=>ze(()=>import("./wallet-CRMlwTVz.js"),__vite__mapDeps([79,28,1,2,29,30])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"لیست کیف پول های شارژ شده",active:!0}],pageTitle:"لیست کیف پول های شارژ شده",rule:"editor",role:"wallet",no_scroll:!0}},{path:"/reagent/edit/:id",name:"reagent-edit",component:()=>ze(()=>import("./EditReagent-CbP03n0b.js"),__vite__mapDeps([80,81,82,10,49,83,84,50,47,85])),meta:{rule:"editor",role:"persons.list.sellers.edit",parent:"product",no_scroll:!0}},{path:"/reagent/add",name:"reagent-add",component:()=>ze(()=>import("./EditReagent-CbP03n0b.js"),__vite__mapDeps([80,81,82,10,49,83,84,50,47,85])),meta:{rule:"editor",role:"persons.create",parent:"product",no_scroll:!0}},{path:"/reagent/view/:id",name:"reagent-view",component:()=>ze(()=>import("./AgentDetail-I4vedLK5.js"),__vite__mapDeps([86,1,2,87])),meta:{rule:"editor",role:"persons.list.sellers.view",parent:"product",no_scroll:!0}},{path:"/bulkCustomer/edit/:id",name:"bulkCustomer-edit",component:()=>ze(()=>import("./EditBulkCustomer-CjmYWWAE.js"),__vite__mapDeps([88,89,36,37,10,82,90,2,91,49,83,84,47,16])),meta:{rule:"editor",role:"persons.list.client.omde.edit",parent:"product",no_scroll:!0}},{path:"/bulkCustomer/view/:id",name:"bulkCustomer-view",component:()=>ze(()=>import("./ViewOmdeCustomer-BKSPOR2P.js"),__vite__mapDeps([92,93,1,2,84,49,94])),meta:{rule:"editor",role:"persons.list.client.omde.view",parent:"product",no_scroll:!0}},{path:"/singleCustomer/edit/:id",name:"singleCustomer-edit",component:()=>ze(()=>import("./EditSingleCustomer-CiBSDI3W.js"),__vite__mapDeps([95,96,82,90,2,91,49,97])),meta:{rule:"editor",role:"persons.list.client.single.edit",superAdminOnly:!0,parent:"product",no_scroll:!0}},{path:"/singleCustomer/view/:id",name:"singleCustomer-view",component:()=>ze(()=>import("./ViewSingleCustomer-DeOwrnjc.js"),__vite__mapDeps([98,93,1,2,84,49,94])),meta:{rule:"editor",role:"persons.list.client.single.view",superAdminOnly:!0,parent:"product",no_scroll:!0}},{path:"/customer/omde-list",name:"omde-list-customer",component:()=>ze(()=>import("./OmdeList-DjtyuZa4.js"),__vite__mapDeps([99,100,2,28,1,29,30,40,31,89,36,37,10,82,90,91,49,83,84,47,16,46,101])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"مشتریان عمده",active:!0}],pageTitle:"مشتریان عمده",rule:"editor",role:"persons.list.client.omde"}},{path:"/customer/omde-non-verified-list",name:"omde-non-verified-list",component:()=>ze(()=>import("./OmdeNonVerifiedList-D3F2qm6p.js"),__vite__mapDeps([102,100,2,28,1,29,30,40,31,89,36,37,10,82,90,91,49,83,84,47,16,46,101])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"مشتریان در انتظار",active:!0}],pageTitle:"مشتریان در انتظار",rule:"editor",role:"persons.list.client.omde"}},{path:"/customer/banker-list",name:"banker-list",component:()=>ze(()=>import("./BankerList-BBecJAZf.js"),__vite__mapDeps([103,100,2,28,1,29,30,40,31,89,36,37,10,82,90,91,49,83,84,47,16,46,101])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"لیست بنکداران",active:!0}],pageTitle:"لیست بنکداران",rule:"editor",role:"persons.list.client.omde",superAdminOnly:!0}},{path:"/customer/shopkeeper-list",name:"shopkeeper-list",component:()=>ze(()=>import("./ShopkeeperList-Dnuzz4fz.js"),__vite__mapDeps([104,100,2,28,1,29,30,40,31,89,36,37,10,82,90,91,49,83,84,47,16,46,101])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"لیست مغازه داران حضوری",active:!0}],pageTitle:"لیست مغازه داران حضوری",rule:"editor",role:"persons.list.client.omde",superAdminOnly:!0}},{path:"/customer/omde-archived-list",name:"omde-archived-list",component:()=>ze(()=>import("./OmdeArchivedList-CO5mnnTL.js"),__vite__mapDeps([105,100,2,28,1,29,30,40,31,89,36,37,10,82,90,91,49,83,84,47,16,46,101])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"مشتریان بایگانی",active:!0}],pageTitle:"مشتریان بایگانی",rule:"editor",role:"persons.list.client.omde"}},{path:"/customer/reagent-list",name:"raegentList",component:()=>ze(()=>import("./ReagentList-Czb_sG4J.js"),__vite__mapDeps([106,28,1,2,29,30,44,45,46,47,3,4,23,48,49,50,40])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"کارشناسان فروش",active:!0}],pageTitle:"کارشناسان فروش",role:"persons.list.sellers",rule:"editor"}},{path:"/customer/add",name:"add-customer",component:()=>ze(()=>import("./AddCustomer-Bu_rmAI_.js"),__vite__mapDeps([107,89,36,37,10,82,90,2,91,49,83,84,47,16,81,50,85,96,97,108])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"مشتریان"},{title:"افزودن مشتری",active:!0}],pageTitle:"افزودن مشتری",role:"persons.create",rule:"editor"}},{path:"/customer/list",name:"list-customer",component:()=>ze(()=>import("./SingleCustomer-DA-x6ajs.js"),__vite__mapDeps([109,28,1,2,29,30,4,110])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"مشتریان"}],pageTitle:"لیست مشتریان",role:"persons.list.client.single",superAdminOnly:!0,rule:"editor"}},{path:"/report/order_item",name:"report_order_item",component:()=>ze(()=>import("./order_item-wHl0NgIE.js"),__vite__mapDeps([111,90,2,91,1,112])),meta:{role:"report.order.item",rule:"editor"}},{path:"/report/product",name:"report_product",component:()=>ze(()=>import("./product-Xx7JAqqz.js"),__vite__mapDeps([113,90,2,91,114])),meta:{role:"report.product",rule:"editor"}},{path:"/finical/list",name:"finical_list",component:()=>ze(()=>import("./list-BdzfL2bH.js"),__vite__mapDeps([115,28,1,2,29,30,40,42,36,37,9])),meta:{role:"document.list",rule:"editor"}},{path:"/user/list",component:()=>ze(()=>import("./ListUser-Dn_cWc7q.js"),__vite__mapDeps([116,28,1,2,29,30,40,117,36,37,118,9])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"لیست مدیران",active:!0}],pageTitle:"لیست مدیران",role:"user.list",rule:"editor",parent:"user",no_scroll:!0}},{path:"/user/create",component:()=>ze(()=>import("./UserCreate-CsSpfDYW.js"),__vite__mapDeps([117,36,37,118])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"افزودن کاربر",active:!0}],pageTitle:"افزودن کاربر",role:"user.create",rule:"editor",parent:"user",no_scroll:!0}},{path:"/user/edit/:id",component:()=>ze(()=>import("./UserEdit-C2ssJRW5.js"),__vite__mapDeps([119,117,36,37,118])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"ویرایش نوع کاربر",active:!0}],pageTitle:"ویرایش نوع کاربر",rule:"editor",role:"user.list.edit",parent:"user",no_scroll:!0}},{path:"/permission",component:()=>ze(()=>import("./Permission-DZzW6sWK.js"),__vite__mapDeps([120,7,121])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"دسترسی ها",active:!0}],pageTitle:"دسترسی ها",rule:"editor",role:"user.permission",parent:"permission",no_scroll:!0}},{path:"/city/create",component:()=>ze(()=>import("./createCity-Bqh7Q52C.js"),__vite__mapDeps([122,123,36,37,82])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"افزودن شهر",active:!0}],pageTitle:"افزودن شهر",rule:"editor",role:"cities.create",parent:"city",no_scroll:!0}},{path:"/city/list",component:()=>ze(()=>import("./cityList-B-_VsYqo.js"),__vite__mapDeps([124,28,1,2,29,30,40,123,36,37,82,9])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"لیست شهر ها",active:!0}],pageTitle:"لیست شهر ها",rule:"editor",role:"cities.list",parent:"city",no_scroll:!0}},{path:"/statics",name:"statics",component:()=>ze(()=>import("./index-B88GNRcu.js"),__vite__mapDeps([125,1,2])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"آمار",active:!0}],pageTitle:"آمار",rule:"editor",role:"statics",no_scroll:!0}},{path:"/newsletters",name:"newsletters",component:()=>ze(()=>import("./newsletters-Dp-uDvrN.js"),__vite__mapDeps([126,28,1,2,29,30,127])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"خبرنامه",active:!0}],pageTitle:"خبرنامه",rule:"editor",no_scroll:!0}},{path:"/branch/add",name:"add-branch",component:()=>ze(()=>import("./AddBranches-DU8yZZ7h.js"),__vite__mapDeps([128,129,36,37])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"شعب"},{title:"افزودن شعب",active:!0}],pageTitle:"افزودن شعب",role:"branch.create",superAdminOnly:!0,rule:"editor"}},{path:"/branch/edit/:id",name:"edit-branch",component:()=>ze(()=>import("./EditBranches-WiGJ4Cid.js"),__vite__mapDeps([130,129,36,37])),meta:{pageTitle:"ویرایش شعب",role:"branch.create",superAdminOnly:!0,rule:"editor"}},{path:"/branch/list",name:"list-branch",component:()=>ze(()=>import("./ListBranches-j6HPMiyF.js"),__vite__mapDeps([131,132,28,1,2,29,30,40,129,36,37])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"شعب"},{title:"لیست شعب",active:!0}],pageTitle:"لیست شعب",role:"branch.list",superAdminOnly:!0,rule:"editor"}},{path:"/workshop/add",name:"add-workshop",component:()=>ze(()=>import("./AddWorkshop-BCAZal60.js"),__vite__mapDeps([133,134,36,37])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"کارگاه"},{title:"افزودن کارگاه",active:!0}],pageTitle:"افزودن کارگاه",role:"workshop.create",superAdminOnly:!0,rule:"editor"}},{path:"/workshop/edit/:id",name:"edit-workshop",component:()=>ze(()=>import("./EditWorkshop-BXaHV3ua.js"),__vite__mapDeps([135,134,36,37])),meta:{pageTitle:"ویرایش کارگاه",role:"workshop.create",superAdminOnly:!0,rule:"editor"}},{path:"/workshop/list",name:"list-workshop",component:()=>ze(()=>import("./ListWorkshop-CMWnryq4.js"),__vite__mapDeps([136,132,28,1,2,29,30,40,134,36,37])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"کارگاه"},{title:"لیست کارگاه ها",active:!0}],pageTitle:"لیست کارگاه ها",role:"workshop.list",superAdminOnly:!0,rule:"editor"}},{path:"/invoice/add",name:"add-invoice",component:()=>ze(()=>import("./AddInvoice-CuzOOF2n.js"),__vite__mapDeps([137,36,37,28,1,2,29,30,138])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"فاکتور انتقال"},{title:"افزودن فاکتور",active:!0}],pageTitle:"افزودن فاکتور",role:"invoice.create",rule:"editor"}},{path:"/invoice/edit/:id",name:"edit-invoice",component:()=>ze(()=>import("./EditInvoice-C-LQY9JQ.js"),__vite__mapDeps([139,137,36,37,28,1,2,29,30,138])),meta:{pageTitle:"ویرایش فاکتورها",role:"invoice.create",rule:"editor"}},{path:"/invoice/list",name:"list-invoice",component:()=>ze(()=>import("./ListInvoice-CEdZfwfN.js"),__vite__mapDeps([140,28,1,2,29,30,40,137,36,37,138,9,141])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"فاکتورانتقال"},{title:"لیست فاکتورها",active:!0}],pageTitle:"لیست فاکتورها",role:"invoice.list",rule:"editor"}}],mAe=[{path:"/auth/login",name:"page-login",component:()=>ze(()=>import("./Login-DK3w3wDb.js"),__vite__mapDeps([142,73,7,48,16,15,143])),meta:{rule:"editor"}},{path:"/reg",name:"reg",component:()=>ze(()=>import("./reg-DKluouRE.js"),__vite__mapDeps([144,145])),meta:{rule:"editor"}}];function l8(t,e){return function(){return t.apply(e,arguments)}}const{toString:vAe}=Object.prototype,{getPrototypeOf:Ma}=Object,{iterator:yf,toStringTag:c8}=Symbol,Wd=(({hasOwnProperty:t})=>(e,n)=>t.call(e,n))(Object.prototype),u8=t=>typeof t=="string"&&(t==="__proto__"||t==="constructor"||t==="prototype"),d8=(t,e,n)=>t===Object.prototype||!n&&e===null,bAe=t=>{if(!Object.isExtensible(t))return!1;const e=Object.getOwnPropertyNames(t);return Object.getOwnPropertySymbols&&e.push(...Object.getOwnPropertySymbols(t)),e.every(n=>{if(u8(n))return!1;const i=Object.getOwnPropertyDescriptor(t,n);return!!i&&i.configurable&&i.writable===!0})},jd=(t,e)=>{let n=t;const i=[];for(;n!=null;){if(i.indexOf(n)!==-1)return!1;i.push(n);const o=Ma(n);if(d8(n,o,n===t))return!1;if(Wd(n,e))return!0;n=o}return!1},yAe=(t,e)=>t!=null&&jd(t,e)?t[e]:void 0,xAe=t=>{if(t==null||typeof t!="object"&&typeof t!="function")return t;const e=Ma(t);if(e===null&&bAe(t))return t;const n=Object.create(null),i=Object.create(null),o=[];let r=t;for(;r!=null&&o.indexOf(r)===-1;){o.push(r);const a=r===t?e:Ma(r);if(d8(r,a,r===t))break;const s=Object.getOwnPropertyNames(r);Object.getOwnPropertySymbols&&s.push(...Object.getOwnPropertySymbols(r));for(const l of s)u8(l)||Wd(i,l)||(n[l]=t[l],i[l]=!0);r=a}return n},v$=(t=>e=>{const n=vAe.call(e);return t[n]||(t[n]=n.slice(8,-1).toLowerCase())})(Object.create(null)),So=t=>(t=t.toLowerCase(),e=>v$(e)===t),Iv=t=>e=>typeof e===t,{isArray:Ks}=Array,Us=Iv("undefined");function Gc(t){return t!==null&&!Us(t)&&t.constructor!==null&&!Us(t.constructor)&&Oi(t.constructor.isBuffer)&&t.constructor.isBuffer(t)}const f8=So("ArrayBuffer");function wAe(t){let e;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?e=ArrayBuffer.isView(t):e=t&&t.buffer&&f8(t.buffer),e}const SAe=Iv("string"),Oi=Iv("function"),h8=Iv("number"),Kc=t=>t!==null&&typeof t=="object",CAe=t=>t===!0||t===!1,hp=t=>{if(!Kc(t))return!1;const e=Ma(t);return(e===null||e===Object.prototype||Ma(e)===null)&&!jd(t,c8)&&!jd(t,yf)},$Ae=t=>{if(!Kc(t)||Gc(t))return!1;try{return Object.keys(t).length===0&&Object.getPrototypeOf(t)===Object.prototype}catch{return!1}},AAe=So("Date"),_Ae=So("File"),PAe=t=>!!(t&&typeof t.uri<"u"),OAe=t=>t&&typeof t.getParts<"u",TAe=So("Blob"),EAe=So("FileList"),MAe=So("Set"),IAe=t=>Kc(t)&&Oi(t.pipe);function kAe(){return typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{}}const zM=kAe(),HM=typeof zM.FormData<"u"?zM.FormData:void 0,DAe=t=>{if(!t)return!1;if(HM&&t instanceof HM)return!0;const e=Ma(t);if(!e||e===Object.prototype||!Oi(t.append))return!1;const n=v$(t);return n==="formdata"||n==="object"&&Oi(t.toString)&&t.toString()==="[object FormData]"},RAe=So("URLSearchParams"),[LAe,FAe,NAe,BAe]=["ReadableStream","Request","Response","Headers"].map(So),zAe=t=>t.trim?t.trim():t.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function xf(t,e,{allOwnKeys:n=!1}={}){if(t===null||typeof t>"u")return;let i,o;if(typeof t!="object"&&(t=[t]),Ks(t))for(i=0,o=t.length;i0;)if(o=n[i],e===o.toLowerCase())return o;return null}const xs=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global,g8=t=>!Us(t)&&t!==xs;function bw(...t){const{caseless:e,skipUndefined:n}=g8(this)&&this||{},i={},o=(r,a)=>{if(a==="__proto__"||a==="constructor"||a==="prototype")return;const s=e&&typeof a=="string"&&p8(i,a)||a,l=Wd(i,s)?i[s]:void 0;hp(l)&&hp(r)?i[s]=bw(l,r):hp(r)?i[s]=bw({},r):Ks(r)?i[s]=r.slice():(!n||!Us(r))&&(i[s]=r)};for(let r=0,a=t.length;r(xf(e,(o,r)=>{n&&Oi(o)?Object.defineProperty(t,r,{__proto__:null,value:l8(o,n),writable:!0,enumerable:!0,configurable:!0}):Object.defineProperty(t,r,{__proto__:null,value:o,writable:!0,enumerable:!0,configurable:!0})},{allOwnKeys:i}),t),WAe=t=>(t.charCodeAt(0)===65279&&(t=t.slice(1)),t),jAe=(t,e,n,i)=>{t.prototype=Object.create(e.prototype,i),Object.defineProperty(t.prototype,"constructor",{__proto__:null,value:t,writable:!0,enumerable:!1,configurable:!0}),Object.defineProperty(t,"super",{__proto__:null,value:e.prototype}),n&&Object.assign(t.prototype,n)},VAe=(t,e,n,i)=>{let o,r,a;const s={};if(e=e||{},t==null)return e;do{for(o=Object.getOwnPropertyNames(t),r=o.length;r-- >0;)a=o[r],(!i||i(a,t,e))&&!s[a]&&(e[a]=t[a],s[a]=!0);t=n!==!1&&Ma(t)}while(t&&(!n||n(t,e))&&t!==Object.prototype);return e},XAe=(t,e,n)=>{t=String(t),(n===void 0||n>t.length)&&(n=t.length),n-=e.length;const i=t.indexOf(e,n);return i!==-1&&i===n},YAe=t=>{if(!t)return null;if(Ks(t))return t;let e=t.length;if(!h8(e))return null;const n=new Array(e);for(;e-- >0;)n[e]=t[e];return n},GAe=(t=>e=>t&&e instanceof t)(typeof Uint8Array<"u"&&Ma(Uint8Array)),KAe=(t,e)=>{const i=(t&&t[yf]).call(t);let o;for(;(o=i.next())&&!o.done;){const r=o.value;e.call(t,r[0],r[1])}},UAe=(t,e)=>{let n;const i=[];for(;(n=t.exec(e))!==null;)i.push(n);return i},qAe=So("HTMLFormElement"),ZAe=t=>t.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(n,i,o){return i.toUpperCase()+o}),{propertyIsEnumerable:JAe}=Object.prototype,QAe=So("RegExp"),m8=(t,e)=>{const n=Object.getOwnPropertyDescriptors(t),i={};xf(n,(o,r)=>{let a;(a=e(o,r,t))!==!1&&(i[r]=a||o)}),Object.defineProperties(t,i)},e_e=t=>{m8(t,(e,n)=>{if(Oi(t)&&["arguments","caller","callee"].includes(n))return!1;const i=t[n];if(Oi(i)){if(e.enumerable=!1,"writable"in e){e.writable=!1;return}e.set||(e.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")})}})},t_e=(t,e)=>{const n={},i=o=>{o.forEach(r=>{n[r]=!0})};return Ks(t)?i(t):i(String(t).split(e)),n},n_e=()=>{},i_e=(t,e)=>t!=null&&Number.isFinite(t=+t)?t:e;function o_e(t){return!!(t&&Oi(t.append)&&t[c8]==="FormData"&&t[yf])}const r_e=t=>{const e=new WeakSet,n=i=>{if(Kc(i)){if(e.has(i))return;if(Gc(i))return i;if(!("toJSON"in i)){e.add(i);let o;if(MAe(i)){o=[];for(const r of i){const a=n(r);!Us(a)&&o.push(a)}}else o=Ks(i)?[]:{},xf(i,(r,a)=>{const s=n(r);!Us(s)&&(o[a]=s)});return e.delete(i),o}}return i};return n(t)},a_e=So("AsyncFunction"),s_e=t=>t&&(Kc(t)||Oi(t))&&Oi(t.then)&&Oi(t.catch),v8=((t,e)=>t?setImmediate:e?((n,i)=>(xs.addEventListener("message",({source:o,data:r})=>{o===xs&&r===n&&i.length&&i.shift()()},!1),o=>{i.push(o),xs.postMessage(n,"*")}))(`axios@${Math.random()}`,[]):n=>setTimeout(n))(typeof setImmediate=="function",Oi(xs.postMessage)),l_e=typeof queueMicrotask<"u"?queueMicrotask.bind(xs):typeof process<"u"&&process.nextTick||v8,b8=t=>t!=null&&Oi(t[yf]),c_e=t=>t!=null&&jd(t,yf)&&b8(t),me={isArray:Ks,isArrayBuffer:f8,isBuffer:Gc,isFormData:DAe,isArrayBufferView:wAe,isString:SAe,isNumber:h8,isBoolean:CAe,isObject:Kc,isPlainObject:hp,isEmptyObject:$Ae,isReadableStream:LAe,isRequest:FAe,isResponse:NAe,isHeaders:BAe,isUndefined:Us,isDate:AAe,isFile:_Ae,isReactNativeBlob:PAe,isReactNative:OAe,isBlob:TAe,isRegExp:QAe,isFunction:Oi,isStream:IAe,isURLSearchParams:RAe,isTypedArray:GAe,isFileList:EAe,forEach:xf,merge:bw,extend:HAe,trim:zAe,stripBOM:WAe,inherits:jAe,toFlatObject:VAe,kindOf:v$,kindOfTest:So,endsWith:XAe,toArray:YAe,forEachEntry:KAe,matchAll:UAe,isHTMLForm:qAe,hasOwnProperty:Wd,hasOwnProp:Wd,hasOwnInPrototypeChain:jd,getSafeProp:yAe,toSafeFlatObject:xAe,reduceDescriptors:m8,freezeMethods:e_e,toObjectSet:t_e,toCamelCase:ZAe,noop:n_e,toFiniteNumber:i_e,findKey:p8,global:xs,isContextDefined:g8,isSpecCompliantForm:o_e,toJSONObject:r_e,isAsyncFn:a_e,isThenable:s_e,setImmediate:v8,asap:l_e,isIterable:b8,isSafeIterable:c_e},u_e=me.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),d_e=t=>{const e={};let n,i,o;return t&&t.split(` + */let j$e=()=>location.protocol+"//"+location.host;function r8(t,e){const{pathname:n,search:i,hash:o}=e,r=t.indexOf("#");if(r>-1){let a=o.includes(t.slice(r))?t.slice(r).length:1,s=o.slice(a);return s[0]!=="/"&&(s="/"+s),AM(s,"")}return AM(n,t)+i+o}function V$e(t,e,n,i){let o=[],r=[],a=null;const s=({state:f})=>{const h=r8(t,location),p=n.value,g=e.value;let m=0;if(f){if(n.value=h,e.value=f,a&&a===p){a=null;return}m=g?f.position-g.position:0}else i(h);o.forEach(v=>{v(n.value,p,{delta:m,type:gw.pop,direction:m?m>0?R0.forward:R0.back:R0.unknown})})};function l(){a=n.value}function c(f){o.push(f);const h=()=>{const p=o.indexOf(f);p>-1&&o.splice(p,1)};return r.push(h),h}function u(){if(document.visibilityState==="hidden"){const{history:f}=window;if(!f.state)return;f.replaceState(Ht({},f.state,{scroll:Ev()}),"")}}function d(){for(const f of r)f();r=[],window.removeEventListener("popstate",s),window.removeEventListener("pagehide",u),document.removeEventListener("visibilitychange",u)}return window.addEventListener("popstate",s),window.addEventListener("pagehide",u),document.addEventListener("visibilitychange",u),{pauseListeners:l,listen:c,destroy:d}}function EM(t,e,n,i=!1,o=!1){return{back:t,current:e,forward:n,replaced:i,position:window.history.length,scroll:o?Ev():null}}function X$e(t){const{history:e,location:n}=window,i={value:r8(t,n)},o={value:e.state};o.value||r(i.value,{back:null,current:i.value,forward:null,position:e.length-1,replaced:!0,scroll:null},!0);function r(l,c,u){const d=t.indexOf("#"),f=d>-1?(n.host&&document.querySelector("base")?t:t.slice(d))+l:j$e()+t+l;try{e[u?"replaceState":"pushState"](c,"",f),o.value=c}catch(h){console.error(h),n[u?"replace":"assign"](f)}}function a(l,c){r(l,Ht({},e.state,EM(o.value.back,l,o.value.forward,!0),c,{position:o.value.position}),!0),i.value=l}function s(l,c){const u=Ht({},o.value,e.state,{forward:l,scroll:Ev()});r(u.current,u,!0),r(l,Ht({},EM(i.value,l,null),{position:u.position+1},c),!1),i.value=l}return{location:i,state:o,push:s,replace:a}}function Y$e(t){t=T$e(t);const e=X$e(t),n=V$e(t,e.state,e.location,e.replace);function i(r,a=!0){a||n.pauseListeners(),history.go(r)}const o=Ht({location:"",base:t,go:i,createHref:M$e.bind(null,t)},e,n);return Object.defineProperty(o,"location",{enumerable:!0,get:()=>e.location.value}),Object.defineProperty(o,"state",{enumerable:!0,get:()=>e.state.value}),o}let ys=function(t){return t[t.Static=0]="Static",t[t.Param=1]="Param",t[t.Group=2]="Group",t}({});var An=function(t){return t[t.Static=0]="Static",t[t.Param=1]="Param",t[t.ParamRegExp=2]="ParamRegExp",t[t.ParamRegExpEnd=3]="ParamRegExpEnd",t[t.EscapeNext=4]="EscapeNext",t}(An||{});const G$e={type:ys.Static,value:""},K$e=/[a-zA-Z0-9_]/;function U$e(t){if(!t)return[[]];if(t==="/")return[[G$e]];if(!t.startsWith("/"))throw new Error(`Invalid path "${t}"`);function e(h){throw new Error(`ERR (${n})/"${c}": ${h}`)}let n=An.Static,i=n;const o=[];let r;function a(){r&&o.push(r),r=[]}let s=0,l,c="",u="";function d(){c&&(n===An.Static?r.push({type:ys.Static,value:c}):n===An.Param||n===An.ParamRegExp||n===An.ParamRegExpEnd?(r.length>1&&(l==="*"||l==="+")&&e(`A repeatable param (${c}) must be alone in its segment. eg: '/:ids+.`),r.push({type:ys.Param,value:c,regexp:u,repeatable:l==="*"||l==="+",optional:l==="*"||l==="?"})):e("Invalid state to consume buffer"),c="")}function f(){c+=l}for(;se.length?e.length===1&&e[0]===ui.Static+ui.Segment?1:-1:0}function a8(t,e){let n=0;const i=t.score,o=e.score;for(;n0&&e[e.length-1]<0}const eAe={strict:!1,end:!0,sensitive:!1};function tAe(t,e,n){const i=J$e(U$e(t.path),n),o=Ht(i,{record:t,parent:e,children:[],alias:[]});return e&&!o.record.aliasOf==!e.record.aliasOf&&e.children.push(o),o}function nAe(t,e){const n=[],i=new Map;e=$M(eAe,e);function o(d){return i.get(d)}function r(d,f,h){const p=!h,g=DM(d);g.aliasOf=h&&h.record;const m=$M(e,d),v=[g];if("alias"in d){const w=typeof d.alias=="string"?[d.alias]:d.alias;for(const x of w)v.push(DM(Ht({},g,{components:h?h.record.components:g.components,path:x,aliasOf:h?h.record:g})))}let b,y;for(const w of v){const{path:x}=w;if(f&&x[0]!=="/"){const $=f.record.path,S=$[$.length-1]==="/"?"":"/";w.path=f.record.path+(x&&S+x)}if(b=tAe(w,f,m),h?h.alias.push(b):(y=y||b,y!==b&&y.alias.push(b),p&&d.name&&!RM(b)&&a(d.name)),s8(b)&&l(b),g.children){const $=g.children;for(let S=0;S<$.length;S++)r($[S],b,h&&h.children[S])}h=h||b}return y?()=>{a(y)}:od}function a(d){if(i8(d)){const f=i.get(d);f&&(i.delete(d),n.splice(n.indexOf(f),1),f.children.forEach(a),f.alias.forEach(a))}else{const f=n.indexOf(d);f>-1&&(n.splice(f,1),d.record.name&&i.delete(d.record.name),d.children.forEach(a),d.alias.forEach(a))}}function s(){return n}function l(d){const f=rAe(d,n);n.splice(f,0,d),d.record.name&&!RM(d)&&i.set(d.record.name,d)}function c(d,f){let h,p={},g,m;if("name"in d&&d.name){if(h=i.get(d.name),!h)throw _c(an.MATCHER_NOT_FOUND,{location:d});m=h.record.name,p=Ht(kM(f.params,h.keys.filter(y=>!y.optional).concat(h.parent?h.parent.keys.filter(y=>y.optional):[]).map(y=>y.name)),d.params&&kM(d.params,h.keys.map(y=>y.name))),g=h.stringify(p)}else if(d.path!=null)g=d.path,h=n.find(y=>y.re.test(g)),h&&(p=h.parse(g),m=h.record.name);else{if(h=f.name?i.get(f.name):n.find(y=>y.re.test(f.path)),!h)throw _c(an.MATCHER_NOT_FOUND,{location:d,currentLocation:f});m=h.record.name,p=Ht({},f.params,d.params),g=h.stringify(p)}const v=[];let b=h;for(;b;)v.unshift(b.record),b=b.parent;return{name:m,path:g,params:p,matched:v,meta:oAe(v)}}t.forEach(d=>r(d));function u(){n.length=0,i.clear()}return{addRoute:r,resolve:c,removeRoute:a,clearRoutes:u,getRoutes:s,getRecordMatcher:o}}function kM(t,e){const n={};for(const i of e)i in t&&(n[i]=t[i]);return n}function DM(t){const e={path:t.path,redirect:t.redirect,name:t.name,meta:t.meta||{},aliasOf:t.aliasOf,beforeEnter:t.beforeEnter,props:iAe(t),children:t.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in t?t.components||null:t.component&&{default:t.component}};return Object.defineProperty(e,"mods",{value:{}}),e}function iAe(t){const e={},n=t.props||!1;if("component"in t)e.default=n;else for(const i in t.components)e[i]=typeof n=="object"?n[i]:n;return e}function RM(t){for(;t;){if(t.record.aliasOf)return!0;t=t.parent}return!1}function oAe(t){return t.reduce((e,n)=>Ht(e,n.meta),{})}function rAe(t,e){let n=0,i=e.length;for(;n!==i;){const r=n+i>>1;a8(t,e[r])<0?i=r:n=r+1}const o=aAe(t);return o&&(i=e.lastIndexOf(o,i-1)),i}function aAe(t){let e=t;for(;e=e.parent;)if(s8(e)&&a8(t,e)===0)return e}function s8({record:t}){return!!(t.name||t.components&&Object.keys(t.components).length||t.redirect)}function LM(t){const e=Je(Mv),n=Je(m$),i=L(()=>{const l=Lt(t.to);return e.resolve(l)}),o=L(()=>{const{matched:l}=i.value,{length:c}=l,u=l[c-1],d=n.matched;if(!u||!d.length)return-1;const f=d.findIndex(Ac.bind(null,u));if(f>-1)return f;const h=FM(l[c-2]);return c>1&&FM(u)===h&&d[d.length-1].path!==h?d.findIndex(Ac.bind(null,l[c-2])):f}),r=L(()=>o.value>-1&&dAe(n.params,i.value.params)),a=L(()=>o.value>-1&&o.value===n.matched.length-1&&n8(n.params,i.value.params));function s(l={}){if(uAe(l)){const c=e[Lt(t.replace)?"replace":"push"](Lt(t.to)).catch(od);return t.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>c),c}return Promise.resolve()}return{route:i,href:L(()=>i.value.href),isActive:r,isExactActive:a,navigate:s}}function sAe(t){return t.length===1?t[0]:t}const lAe=oe({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"},viewTransition:Boolean},useLink:LM,setup(t,{slots:e}){const n=$t(LM(t)),{options:i}=Je(Mv),o=L(()=>({[NM(t.activeClass,i.linkActiveClass,"router-link-active")]:n.isActive,[NM(t.exactActiveClass,i.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const r=e.default&&sAe(e.default(n));return t.custom?r:sr("a",{"aria-current":n.isExactActive?t.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:o.value},r)}}}),cAe=lAe;function uAe(t){if(!(t.metaKey||t.altKey||t.ctrlKey||t.shiftKey)&&!t.defaultPrevented&&!(t.button!==void 0&&t.button!==0)){if(t.currentTarget&&t.currentTarget.getAttribute){const e=t.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(e))return}return t.preventDefault&&t.preventDefault(),!0}}function dAe(t,e){for(const n in e){const i=e[n],o=t[n];if(typeof i=="string"){if(i!==o)return!1}else if(!Bo(o)||o.length!==i.length||i.some((r,a)=>r.valueOf()!==o[a].valueOf()))return!1}return!0}function FM(t){return t?t.aliasOf?t.aliasOf.path:t.path:""}const NM=(t,e,n)=>t??e??n,fAe=oe({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(t,{attrs:e,slots:n}){const i=Je(vw),o=L(()=>t.route||i.value),r=Je(TM,0),a=L(()=>{let c=Lt(r);const{matched:u}=o.value;let d;for(;(d=u[c])&&!d.components;)c++;return c}),s=L(()=>o.value.matched[a.value]);ot(TM,L(()=>a.value+1)),ot(H$e,s),ot(vw,o);const l=ae();return ye(()=>[l.value,s.value,t.name],([c,u,d],[f,h,p])=>{u&&(u.instances[d]=c,h&&h!==u&&c&&c===f&&(u.leaveGuards.size||(u.leaveGuards=h.leaveGuards),u.updateGuards.size||(u.updateGuards=h.updateGuards))),c&&u&&(!h||!Ac(u,h)||!f)&&(u.enterCallbacks[d]||[]).forEach(g=>g(c))},{flush:"post"}),()=>{const c=o.value,u=t.name,d=s.value,f=d&&d.components[u];if(!f)return BM(n.default,{Component:f,route:c});const h=d.props[u],p=h?h===!0?c.params:typeof h=="function"?h(c):h:null,m=sr(f,Ht({},p,e,{onVnodeUnmounted:v=>{v.component.isUnmounted&&(d.instances[u]=null)},ref:l}));return BM(n.default,{Component:m,route:c})||m}}});function BM(t,e){if(!t)return null;const n=t(e);return n.length===1?n[0]:n}const hAe=fAe;function pAe(t){const e=nAe(t.routes,t),n=t.parseQuery||B$e,i=t.stringifyQuery||OM,o=t.history,r=fu(),a=fu(),s=fu(),l=ie(oa);let c=oa;Rl&&t.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const u=k0.bind(null,Y=>""+Y),d=k0.bind(null,S$e),f=k0.bind(null,Hd);function h(Y,J){let Q,G;return i8(Y)?(Q=e.getRecordMatcher(Y),G=J):G=Y,e.addRoute(G,Q)}function p(Y){const J=e.getRecordMatcher(Y);J&&e.removeRoute(J)}function g(){return e.getRoutes().map(Y=>Y.record)}function m(Y){return!!e.getRecordMatcher(Y)}function v(Y,J){if(J=Ht({},J||l.value),typeof Y=="string"){const te=D0(n,Y,J.path),ue=e.resolve({path:te.path},J),se=o.createHref(te.fullPath);return Ht(te,ue,{params:f(ue.params),hash:Hd(te.hash),redirectedFrom:void 0,href:se})}let Q;if(Y.path!=null)Q=Ht({},Y,{path:D0(n,Y.path,J.path).path});else{const te=Ht({},Y.params);for(const ue in te)te[ue]==null&&delete te[ue];Q=Ht({},Y,{params:d(te)}),J.params=d(J.params)}const G=e.resolve(Q,J),ee=Y.hash||"";G.params=u(f(G.params));const X=A$e(i,Ht({},Y,{hash:y$e(ee),path:G.path})),K=o.createHref(X);return Ht({fullPath:X,hash:ee,query:i===OM?z$e(Y.query):Y.query||{}},G,{redirectedFrom:void 0,href:K})}function b(Y){return typeof Y=="string"?D0(n,Y,l.value.path):Ht({},Y)}function y(Y,J){if(c!==Y)return _c(an.NAVIGATION_CANCELLED,{from:J,to:Y})}function w(Y){return S(Y)}function x(Y){return w(Ht(b(Y),{replace:!0}))}function $(Y,J){const Q=Y.matched[Y.matched.length-1];if(Q&&Q.redirect){const{redirect:G}=Q;let ee=typeof G=="function"?G(Y,J):G;return typeof ee=="string"&&(ee=ee.includes("?")||ee.includes("#")?ee=b(ee):{path:ee},ee.params={}),Ht({query:Y.query,hash:Y.hash,params:ee.path!=null?{}:Y.params},ee)}}function S(Y,J){const Q=c=v(Y),G=l.value,ee=Y.state,X=Y.force,K=Y.replace===!0,te=$(Q,G);if(te)return S(Ht(b(te),{state:typeof te=="object"?Ht({},ee,te.state):ee,force:X,replace:K}),J||Q);const ue=Q;ue.redirectedFrom=J;let se;return!X&&_$e(i,G,Q)&&(se=_c(an.NAVIGATION_DUPLICATED,{to:ue,from:G}),z(G,G,!0,!1)),(se?Promise.resolve(se):T(ue,G)).catch(re=>vr(re)?vr(re,an.NAVIGATION_GUARD_REDIRECT)?re:B(re):F(re,ue,G)).then(re=>{if(re){if(vr(re,an.NAVIGATION_GUARD_REDIRECT))return S(Ht({replace:K},b(re.to),{state:typeof re.to=="object"?Ht({},ee,re.to.state):ee,force:X}),J||ue)}else re=M(ue,G,!0,K,ee);return O(ue,G,re),re})}function _(Y,J){const Q=y(Y,J);return Q?Promise.reject(Q):Promise.resolve()}function P(Y){const J=U.values().next().value;return J&&typeof J.runWithContext=="function"?J.runWithContext(Y):Y()}function T(Y,J){let Q;const[G,ee,X]=W$e(Y,J);Q=L0(G.reverse(),"beforeRouteLeave",Y,J);for(const te of G)te.leaveGuards.forEach(ue=>{Q.push(ha(ue,Y,J))});const K=_.bind(null,Y,J);return Q.push(K),q(Q).then(()=>{Q=[];for(const te of r.list())Q.push(ha(te,Y,J));return Q.push(K),q(Q)}).then(()=>{Q=L0(ee,"beforeRouteUpdate",Y,J);for(const te of ee)te.updateGuards.forEach(ue=>{Q.push(ha(ue,Y,J))});return Q.push(K),q(Q)}).then(()=>{Q=[];for(const te of X)if(te.beforeEnter)if(Bo(te.beforeEnter))for(const ue of te.beforeEnter)Q.push(ha(ue,Y,J));else Q.push(ha(te.beforeEnter,Y,J));return Q.push(K),q(Q)}).then(()=>(Y.matched.forEach(te=>te.enterCallbacks={}),Q=L0(X,"beforeRouteEnter",Y,J,P),Q.push(K),q(Q))).then(()=>{Q=[];for(const te of a.list())Q.push(ha(te,Y,J));return Q.push(K),q(Q)}).catch(te=>vr(te,an.NAVIGATION_CANCELLED)?te:Promise.reject(te))}function O(Y,J,Q){s.list().forEach(G=>P(()=>G(Y,J,Q)))}function M(Y,J,Q,G,ee){const X=y(Y,J);if(X)return X;const K=J===oa,te=Rl?history.state:{};Q&&(G||K?o.replace(Y.fullPath,Ht({scroll:K&&te&&te.scroll},ee)):o.push(Y.fullPath,ee)),l.value=Y,z(Y,J,Q,K),B()}let I;function k(){I||(I=o.listen((Y,J,Q)=>{if(!V.listening)return;const G=v(Y),ee=$(G,V.currentRoute.value);if(ee){S(Ht(ee,{replace:!0,force:!0}),G).catch(od);return}c=G;const X=l.value;Rl&&D$e(PM(X.fullPath,Q.delta),Ev()),T(G,X).catch(K=>vr(K,an.NAVIGATION_ABORTED|an.NAVIGATION_CANCELLED)?K:vr(K,an.NAVIGATION_GUARD_REDIRECT)?(S(Ht(b(K.to),{force:!0}),G).then(te=>{vr(te,an.NAVIGATION_ABORTED|an.NAVIGATION_DUPLICATED)&&!Q.delta&&Q.type===gw.pop&&o.go(-1,!1)}).catch(od),Promise.reject()):(Q.delta&&o.go(-Q.delta,!1),F(K,G,X))).then(K=>{K=K||M(G,X,!1),K&&(Q.delta&&!vr(K,an.NAVIGATION_CANCELLED)?o.go(-Q.delta,!1):Q.type===gw.pop&&vr(K,an.NAVIGATION_ABORTED|an.NAVIGATION_DUPLICATED)&&o.go(-1,!1)),O(G,X,K)}).catch(od)}))}let E=fu(),R=fu(),D;function F(Y,J,Q){B(Y);const G=R.list();return G.length?G.forEach(ee=>ee(Y,J,Q)):console.error(Y),Promise.reject(Y)}function N(){return D&&l.value!==oa?Promise.resolve():new Promise((Y,J)=>{E.add([Y,J])})}function B(Y){return D||(D=!Y,k(),E.list().forEach(([J,Q])=>Y?Q(Y):J()),E.reset()),Y}function z(Y,J,Q,G){const{scrollBehavior:ee}=t;if(!Rl||!ee)return Promise.resolve();const X=!Q&&R$e(PM(Y.fullPath,0))||(G||!Q)&&history.state&&history.state.scroll||null;return pt().then(()=>ee(Y,J,X)).then(K=>K&&k$e(K)).catch(K=>F(K,Y,J))}const W=Y=>o.go(Y);let j;const U=new Set,V={currentRoute:l,listening:!0,addRoute:h,removeRoute:p,clearRoutes:e.clearRoutes,hasRoute:m,getRoutes:g,resolve:v,options:t,push:w,replace:x,go:W,back:()=>W(-1),forward:()=>W(1),beforeEach:r.add,beforeResolve:a.add,afterEach:s.add,onError:R.add,isReady:N,install(Y){Y.component("RouterLink",cAe),Y.component("RouterView",hAe),Y.config.globalProperties.$router=V,Object.defineProperty(Y.config.globalProperties,"$route",{enumerable:!0,get:()=>Lt(l)}),Rl&&!j&&l.value===oa&&(j=!0,w(o.location).catch(G=>{}));const J={};for(const G in oa)Object.defineProperty(J,G,{get:()=>l.value[G],enumerable:!0});Y.provide(Mv,V),Y.provide(m$,kI(J)),Y.provide(vw,l);const Q=Y.unmount;U.add(Y),Y.unmount=function(){U.delete(Y),U.size<1&&(c=oa,I&&I(),I=null,l.value=oa,j=!1,D=!1),Q()}}};function q(Y){return Y.reduce((J,Q)=>J.then(()=>P(Q)),Promise.resolve())}return V}function zPe(){return Je(Mv)}function HPe(t){return Je(m$)}const gAe=[{path:"/",name:"dashboard",redirect:"/dashboard/ecommerce"},{path:"/dashboard/analytics",name:"dashboard-analytics",component:()=>ze(()=>import("./Dashboard-Dlp4nbOK.js"),__vite__mapDeps([0,1,2,3,4,5])),meta:{rule:"editor",role:"dashboard.view"}},{path:"/my-data",name:"my-data",component:()=>ze(()=>import("./myData-Bw7dlBDT.js"),__vite__mapDeps([6,7])),meta:{rule:"editor"}},{path:"/dashboard/ecommerce",name:"dashboard-ecommerce",component:()=>ze(()=>import("./Dashboard-Dlp4nbOK.js"),__vite__mapDeps([0,1,2,3,4,5])),meta:{rule:"admin",role:"dashboard.view"}},{path:"/config/manage/const",component:()=>ze(()=>import("./Const-ClhpuA-u.js"),__vite__mapDeps([8,9,10,11])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"مدیریت ثابت ها",active:!0}],pageTitle:"مدیریت ثابت ها",rule:"editor",role:"config.statics",parent:"manage",no_scroll:!0}},{path:"/config/manage/wallet",component:()=>ze(()=>import("./wallet-Dn2Q-Ksn.js"),__vite__mapDeps([12,13])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"مدیریت کیف پول",active:!0}],pageTitle:"مدیریت کیف پول",rule:"editor",role:"config.wallet",superAdminOnly:!0,parent:"manage",no_scroll:!0}},{path:"/config/manage/accounting",component:()=>ze(()=>import("./accounting-CiNdGIQr.js"),__vite__mapDeps([14,2,15,16,17])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"اتصال حسابداری",active:!0}],pageTitle:"اتصال حسابداری",rule:"editor",role:"config.accounting",parent:"manage",no_scroll:!0}},{path:"/config/manage/wage",component:()=>ze(()=>import("./wage-jfkWWu7u.js"),__vite__mapDeps([18,2,19])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"اجرت",active:!0}],pageTitle:"اجرت",rule:"editor",role:"config.wage",parent:"manage",no_scroll:!0}},{path:"/config/manage/report",component:()=>ze(()=>import("./report-BbioztMT.js"),__vite__mapDeps([20,21])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"گزارش",active:!0}],pageTitle:"گزارش",rule:"editor",role:"config.report",parent:"manage",no_scroll:!0}},{path:"/apps/product/",redirect:"/apps/product/list",name:"product"},{path:"/product/change/percent",component:()=>ze(()=>import("./ChangePercent-Befh4mBT.js"),__vite__mapDeps([22,23])),meta:{rule:"editor",role:"product.percent",parent:"product",no_scroll:!0}},{path:"/apps/product/add",component:()=>ze(()=>import("./AddProduct-r48hWej-.js"),__vite__mapDeps([24,10,25,26,27])),meta:{rule:"editor",role:"product.create",parent:"product",no_scroll:!0}},{path:"/apps/product/edit/:id/:variant_id?",name:"product-edit",component:()=>ze(()=>import("./EditProduct-LurNZlNq.js"),__vite__mapDeps([28,24,10,25,26,27])),meta:{rule:"editor",role:"product.list.edit",parent:"product",no_scroll:!0}},{path:"/apps/product/list",name:"product-list",component:()=>ze(()=>import("./ProductList-Ce9z5yIO.js"),__vite__mapDeps([29,30,1,2,31,32,33,34,9,35])),meta:{rule:"editor",role:"product.list",parent:"product",no_scroll:!0}},{path:"/category",redirect:"/category/list",name:"category"},{path:"/category/add/:id?",name:"category-add",component:()=>ze(()=>import("./Add-BjGFcwMZ.js"),__vite__mapDeps([36,37,23,38,39,10])),meta:{rule:"editor",role:"collection.create",parent:"category",no_scroll:!0}},{path:"/category/edit/:id",component:()=>ze(()=>import("./Edit-GrGMWZFB.js"),__vite__mapDeps([40,37,23,38,39,10])),name:"category-edit",meta:{rule:"editor",role:"collection.list.edit",parent:"category",no_scroll:!0}},{path:"/category/list",name:"category-list",component:()=>ze(()=>import("./List-BbWC9Lv8.js"),__vite__mapDeps([41,30,1,2,31,32,42,37,23,38,39,10,9])),meta:{rule:"editor",role:"collection.list",parent:"category",no_scroll:!0}},{path:"/add/findoc",component:()=>ze(()=>import("./addFinDoc-DEQ45dH9.js"),__vite__mapDeps([43,44,23,38,39])),meta:{rule:"editor",role:"document.create"}},{path:"/edit/findoc/:id",component:()=>ze(()=>import("./addFinDoc-DEQ45dH9.js"),__vite__mapDeps([43,44,23,38,39])),meta:{rule:"editor",role:"document.list.edit"}},{path:"/order",redirect:"/order/list",name:"order"},{path:"/order/list",component:()=>ze(()=>import("./List-CoXqHG4E.js"),__vite__mapDeps([45,30,1,2,31,32,46,47,48,49,3,4,25,50,51,52,53,26,16,54,55])),meta:{rule:"editor",role:"order.list",superAdminOnly:!0,parent:"order",no_scroll:!0}},{path:"/order/omde-list",component:()=>ze(()=>import("./OmdeList-DwZ5G-mD.js"),__vite__mapDeps([56,30,1,2,31,32,46,47,48,49,3,4,25,50,51,52,53,26,16,54,57])),meta:{rule:"editor",role:"order.omde",parent:"order",no_scroll:!0}},{path:"/order/make",component:()=>ze(()=>import("./MakeOrder-DcmMw-Ed.js"),__vite__mapDeps([58,30,1,2,31,32,46,47,48,49,3,4,25,50,51,52,59])),meta:{rule:"editor",role:"order.makeOrder",parent:"order",no_scroll:!0}},{path:"/order/create",component:()=>ze(()=>import("./create-CGtDjjLW.js"),__vite__mapDeps([60,23,30,1,2,31,32,34,7,61])),meta:{rule:"editor",role:"order.create",superAdminOnly:!0,parent:"order",no_scroll:!0}},{path:"/order/tamin-list",component:()=>ze(()=>import("./TaminList-DKlA-3xq.js"),__vite__mapDeps([62,30,1,2,31,32,46,47,48,49,3,4,25,50,51,52,53,26,16,54,63])),meta:{rule:"editor",role:"order.tamin",parent:"order",no_scroll:!0}},{path:"/major/promotion/list",component:()=>ze(()=>import("./promotion_list-CrT5dPh9.js"),__vite__mapDeps([64,30,1,2,31,32,42,65,66,23,38,39,67,68,69])),meta:{rule:"editor",role:"offers.list",no_scroll:!0}},{path:"/major/promotion/add",component:()=>ze(()=>import("./promotion_add_edit-BpSQ8j9m.js"),__vite__mapDeps([70,65,66,23,38,39,67])),meta:{rule:"editor",role:"offers.create",no_scroll:!0}},{path:"/major/promotion/edit/:id",component:()=>ze(()=>import("./promotion_add_edit-BpSQ8j9m.js"),__vite__mapDeps([70,65,66,23,38,39,67])),meta:{rule:"editor",role:"offers.list.edit",no_scroll:!0}},{path:"/major/promotion/tak/add",component:()=>ze(()=>import("./promotion_tak_add_edit-fKo-hzti.js"),__vite__mapDeps([71,68,66,23,38,39,67])),meta:{rule:"editor",role:"offers.create.tak",superAdminOnly:!0,no_scroll:!0}},{path:"/major/promotion/tak/edit/:id",component:()=>ze(()=>import("./promotion_tak_add_edit-fKo-hzti.js"),__vite__mapDeps([71,68,66,23,38,39,67])),meta:{rule:"editor",role:"offers.list.tak.edit",superAdminOnly:!0,no_scroll:!0}},{path:"/major/promotion/autopromotion",component:()=>ze(()=>import("./autopromotion-DIWf2Uyq.js"),[]),meta:{rule:"editor",role:"offers.autopromotion",no_scroll:!0}},{path:"/major/offersIgnore",component:()=>ze(()=>import("./offersIgnore-add-edit-91QFt_p-.js"),__vite__mapDeps([72,30,1,2,31,32,73])),meta:{rule:"editor",role:"offersIgnore"}},{path:"/comments",name:"comments",component:()=>ze(()=>import("./Comments-CWF3WkAj.js"),__vite__mapDeps([74,75,30,1,2,31,32,46,47,48,49,3,4,25,50,51,52,76])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"دیدگاه ها",active:!0}],pageTitle:"دیدگاه ها",rule:"editor",role:"comment",no_scroll:!0}},{path:"/sms/create",name:"create_sms",component:()=>ze(()=>import("./create-D17Jdy3G.js"),__vite__mapDeps([77,30,1,2,31,32,78])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"ارسال پیامک",active:!0}],pageTitle:"ارسال پیامک",rule:"editor",role:"sms.create",no_scroll:!0}},{path:"/notify",name:"notify",component:()=>ze(()=>import("./user-BY3lJe4x.js"),__vite__mapDeps([79,30,1,2,31,32,80])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"لیست نوتیفیکیشن های دریافتی",active:!0}],pageTitle:"لیست نوتیفیکیشن های ذریافتی",rule:"editor",role:"notify.me",no_scroll:!0}},{path:"/notify/create",name:"create_notify",component:()=>ze(()=>import("./create-DrtB21nH.js"),[]),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"ارسال نوتیفیکیشن",active:!0}],pageTitle:"ارسال نوتیفیکیشن",rule:"editor",role:"notify.create",no_scroll:!0}},{path:"/wallet",name:"wallet",component:()=>ze(()=>import("./wallet-B3WVA1VR.js"),__vite__mapDeps([81,30,1,2,31,32])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"لیست کیف پول های شارژ شده",active:!0}],pageTitle:"لیست کیف پول های شارژ شده",rule:"editor",role:"wallet",no_scroll:!0}},{path:"/reagent/edit/:id",name:"reagent-edit",component:()=>ze(()=>import("./EditReagent-CtSia1u-.js"),__vite__mapDeps([82,83,84,10,51,85,86,52,49,87])),meta:{rule:"editor",role:"persons.list.sellers.edit",parent:"product",no_scroll:!0}},{path:"/reagent/add",name:"reagent-add",component:()=>ze(()=>import("./EditReagent-CtSia1u-.js"),__vite__mapDeps([82,83,84,10,51,85,86,52,49,87])),meta:{rule:"editor",role:"persons.create",parent:"product",no_scroll:!0}},{path:"/reagent/view/:id",name:"reagent-view",component:()=>ze(()=>import("./AgentDetail-BKfKoisk.js"),__vite__mapDeps([88,1,2,89])),meta:{rule:"editor",role:"persons.list.sellers.view",parent:"product",no_scroll:!0}},{path:"/bulkCustomer/edit/:id",name:"bulkCustomer-edit",component:()=>ze(()=>import("./EditBulkCustomer-kgIfXULj.js"),__vite__mapDeps([90,91,23,38,39,10,84,92,2,93,51,85,86,49,16])),meta:{rule:"editor",role:"persons.list.client.omde.edit",parent:"product",no_scroll:!0}},{path:"/bulkCustomer/view/:id",name:"bulkCustomer-view",component:()=>ze(()=>import("./ViewOmdeCustomer-Bcz-RlKZ.js"),__vite__mapDeps([94,95,1,2,86,51,96])),meta:{rule:"editor",role:"persons.list.client.omde.view",parent:"product",no_scroll:!0}},{path:"/singleCustomer/edit/:id",name:"singleCustomer-edit",component:()=>ze(()=>import("./EditSingleCustomer-Dtewptpz.js"),__vite__mapDeps([97,98,84,92,2,93,51,99])),meta:{rule:"editor",role:"persons.list.client.single.edit",superAdminOnly:!0,parent:"product",no_scroll:!0}},{path:"/singleCustomer/view/:id",name:"singleCustomer-view",component:()=>ze(()=>import("./ViewSingleCustomer-DBxv4PII.js"),__vite__mapDeps([100,95,1,2,86,51,96])),meta:{rule:"editor",role:"persons.list.client.single.view",superAdminOnly:!0,parent:"product",no_scroll:!0}},{path:"/customer/omde-list",name:"omde-list-customer",component:()=>ze(()=>import("./OmdeList-BPQg9z5E.js"),__vite__mapDeps([101,102,2,30,1,31,32,42,33,91,23,38,39,10,84,92,93,51,85,86,49,16,48,103])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"مشتریان عمده",active:!0}],pageTitle:"مشتریان عمده",rule:"editor",role:"persons.list.client.omde"}},{path:"/customer/omde-non-verified-list",name:"omde-non-verified-list",component:()=>ze(()=>import("./OmdeNonVerifiedList-Cz-xbvxD.js"),__vite__mapDeps([104,102,2,30,1,31,32,42,33,91,23,38,39,10,84,92,93,51,85,86,49,16,48,103])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"مشتریان در انتظار",active:!0}],pageTitle:"مشتریان در انتظار",rule:"editor",role:"persons.list.client.omde"}},{path:"/customer/banker-list",name:"banker-list",component:()=>ze(()=>import("./BankerList-DME3NFhp.js"),__vite__mapDeps([105,102,2,30,1,31,32,42,33,91,23,38,39,10,84,92,93,51,85,86,49,16,48,103])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"لیست بنکداران",active:!0}],pageTitle:"لیست بنکداران",rule:"editor",role:"persons.list.client.omde",superAdminOnly:!0}},{path:"/customer/shopkeeper-list",name:"shopkeeper-list",component:()=>ze(()=>import("./ShopkeeperList-CNr7J22i.js"),__vite__mapDeps([106,102,2,30,1,31,32,42,33,91,23,38,39,10,84,92,93,51,85,86,49,16,48,103])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"لیست مغازه داران حضوری",active:!0}],pageTitle:"لیست مغازه داران حضوری",rule:"editor",role:"persons.list.client.omde",superAdminOnly:!0}},{path:"/customer/omde-archived-list",name:"omde-archived-list",component:()=>ze(()=>import("./OmdeArchivedList-DUyxnhff.js"),__vite__mapDeps([107,102,2,30,1,31,32,42,33,91,23,38,39,10,84,92,93,51,85,86,49,16,48,103])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"مشتریان بایگانی",active:!0}],pageTitle:"مشتریان بایگانی",rule:"editor",role:"persons.list.client.omde"}},{path:"/customer/reagent-list",name:"raegentList",component:()=>ze(()=>import("./ReagentList-DFuil1Fc.js"),__vite__mapDeps([108,30,1,2,31,32,46,47,48,49,3,4,25,50,51,52,42])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"کارشناسان فروش",active:!0}],pageTitle:"کارشناسان فروش",role:"persons.list.sellers",rule:"editor"}},{path:"/customer/add",name:"add-customer",component:()=>ze(()=>import("./AddCustomer-4pjOTaMU.js"),__vite__mapDeps([109,91,23,38,39,10,84,92,2,93,51,85,86,49,16,83,52,87,98,99,110])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"مشتریان"},{title:"افزودن مشتری",active:!0}],pageTitle:"افزودن مشتری",role:"persons.create",rule:"editor"}},{path:"/customer/list",name:"list-customer",component:()=>ze(()=>import("./SingleCustomer-CNavZnHq.js"),__vite__mapDeps([111,30,1,2,31,32,4,112])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"مشتریان"}],pageTitle:"لیست مشتریان",role:"persons.list.client.single",superAdminOnly:!0,rule:"editor"}},{path:"/report/order_item",name:"report_order_item",component:()=>ze(()=>import("./order_item-BFmM5TXK.js"),__vite__mapDeps([113,92,2,93,1,114])),meta:{role:"report.order.item",rule:"editor"}},{path:"/report/product",name:"report_product",component:()=>ze(()=>import("./product-BTYL3Cka.js"),__vite__mapDeps([115,92,2,93,116])),meta:{role:"report.product",rule:"editor"}},{path:"/finical/list",name:"finical_list",component:()=>ze(()=>import("./list-DfwcQJBp.js"),__vite__mapDeps([117,30,1,2,31,32,42,44,23,38,39,9])),meta:{role:"document.list",rule:"editor"}},{path:"/user/list",component:()=>ze(()=>import("./ListUser-C1Zucffo.js"),__vite__mapDeps([118,30,1,2,31,32,42,119,38,39,120,9])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"لیست مدیران",active:!0}],pageTitle:"لیست مدیران",role:"user.list",rule:"editor",parent:"user",no_scroll:!0}},{path:"/user/create",component:()=>ze(()=>import("./UserCreate-CAC2S8Dh.js"),__vite__mapDeps([119,38,39,120])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"افزودن کاربر",active:!0}],pageTitle:"افزودن کاربر",role:"user.create",rule:"editor",parent:"user",no_scroll:!0}},{path:"/user/edit/:id",component:()=>ze(()=>import("./UserEdit-Ctgu46hW.js"),__vite__mapDeps([121,119,38,39,120])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"ویرایش نوع کاربر",active:!0}],pageTitle:"ویرایش نوع کاربر",rule:"editor",role:"user.list.edit",parent:"user",no_scroll:!0}},{path:"/permission",component:()=>ze(()=>import("./Permission-g4pVYrJk.js"),__vite__mapDeps([122,7,123])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"دسترسی ها",active:!0}],pageTitle:"دسترسی ها",rule:"editor",role:"user.permission",parent:"permission",no_scroll:!0}},{path:"/city/create",component:()=>ze(()=>import("./createCity-C5FzmaYB.js"),__vite__mapDeps([124,125,38,39,84])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"افزودن شهر",active:!0}],pageTitle:"افزودن شهر",rule:"editor",role:"cities.create",parent:"city",no_scroll:!0}},{path:"/city/list",component:()=>ze(()=>import("./cityList-Di6FAlpW.js"),__vite__mapDeps([126,30,1,2,31,32,42,125,38,39,84,9])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"لیست شهر ها",active:!0}],pageTitle:"لیست شهر ها",rule:"editor",role:"cities.list",parent:"city",no_scroll:!0}},{path:"/statics",name:"statics",component:()=>ze(()=>import("./index-D7fgJeq3.js"),__vite__mapDeps([127,23,1,2])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"آمار",active:!0}],pageTitle:"آمار",rule:"editor",role:"statics",no_scroll:!0}},{path:"/newsletters",name:"newsletters",component:()=>ze(()=>import("./newsletters-DorV2BSu.js"),__vite__mapDeps([128,30,1,2,31,32,129])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"خبرنامه",active:!0}],pageTitle:"خبرنامه",rule:"editor",no_scroll:!0}},{path:"/branch/add",name:"add-branch",component:()=>ze(()=>import("./AddBranches-DbAUL4Wv.js"),__vite__mapDeps([130,131,23,38,39])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"شعب"},{title:"افزودن شعب",active:!0}],pageTitle:"افزودن شعب",role:"branch.create",superAdminOnly:!0,rule:"editor"}},{path:"/branch/edit/:id",name:"edit-branch",component:()=>ze(()=>import("./EditBranches-BF5D0IM-.js"),__vite__mapDeps([132,131,23,38,39])),meta:{pageTitle:"ویرایش شعب",role:"branch.create",superAdminOnly:!0,rule:"editor"}},{path:"/branch/list",name:"list-branch",component:()=>ze(()=>import("./ListBranches-yjRFBIa3.js"),__vite__mapDeps([133,134,30,1,2,31,32,42,131,23,38,39])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"شعب"},{title:"لیست شعب",active:!0}],pageTitle:"لیست شعب",role:"branch.list",superAdminOnly:!0,rule:"editor"}},{path:"/workshop/add",name:"add-workshop",component:()=>ze(()=>import("./AddWorkshop-w6-wM1qw.js"),__vite__mapDeps([135,136,38,39])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"کارگاه"},{title:"افزودن کارگاه",active:!0}],pageTitle:"افزودن کارگاه",role:"workshop.create",superAdminOnly:!0,rule:"editor"}},{path:"/workshop/edit/:id",name:"edit-workshop",component:()=>ze(()=>import("./EditWorkshop-3JbFw7DS.js"),__vite__mapDeps([137,136,38,39])),meta:{pageTitle:"ویرایش کارگاه",role:"workshop.create",superAdminOnly:!0,rule:"editor"}},{path:"/workshop/list",name:"list-workshop",component:()=>ze(()=>import("./ListWorkshop-C35LOBaQ.js"),__vite__mapDeps([138,134,30,1,2,31,32,42,136,38,39])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"کارگاه"},{title:"لیست کارگاه ها",active:!0}],pageTitle:"لیست کارگاه ها",role:"workshop.list",superAdminOnly:!0,rule:"editor"}},{path:"/invoice/add",name:"add-invoice",component:()=>ze(()=>import("./AddInvoice-vwiAoHQ3.js"),__vite__mapDeps([139,23,38,39,30,1,2,31,32,140])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"فاکتور انتقال"},{title:"افزودن فاکتور",active:!0}],pageTitle:"افزودن فاکتور",role:"invoice.create",rule:"editor"}},{path:"/invoice/edit/:id",name:"edit-invoice",component:()=>ze(()=>import("./EditInvoice-ByAezxDX.js"),__vite__mapDeps([141,139,23,38,39,30,1,2,31,32,140])),meta:{pageTitle:"ویرایش فاکتورها",role:"invoice.create",rule:"editor"}},{path:"/invoice/list",name:"list-invoice",component:()=>ze(()=>import("./ListInvoice-C46B-gEE.js"),__vite__mapDeps([142,30,1,2,31,32,42,139,23,38,39,140,9,143])),meta:{breadcrumb:[{title:"خانه",url:"/"},{title:"فاکتورانتقال"},{title:"لیست فاکتورها",active:!0}],pageTitle:"لیست فاکتورها",role:"invoice.list",rule:"editor"}}],mAe=[{path:"/auth/login",name:"page-login",component:()=>ze(()=>import("./Login-BB6A0fEd.js"),__vite__mapDeps([144,75,7,50,16,15,145])),meta:{rule:"editor"}},{path:"/reg",name:"reg",component:()=>ze(()=>import("./reg-CEcfpJmk.js"),__vite__mapDeps([146,147])),meta:{rule:"editor"}}];function l8(t,e){return function(){return t.apply(e,arguments)}}const{toString:vAe}=Object.prototype,{getPrototypeOf:Ma}=Object,{iterator:yf,toStringTag:c8}=Symbol,Wd=(({hasOwnProperty:t})=>(e,n)=>t.call(e,n))(Object.prototype),u8=t=>typeof t=="string"&&(t==="__proto__"||t==="constructor"||t==="prototype"),d8=(t,e,n)=>t===Object.prototype||!n&&e===null,bAe=t=>{if(!Object.isExtensible(t))return!1;const e=Object.getOwnPropertyNames(t);return Object.getOwnPropertySymbols&&e.push(...Object.getOwnPropertySymbols(t)),e.every(n=>{if(u8(n))return!1;const i=Object.getOwnPropertyDescriptor(t,n);return!!i&&i.configurable&&i.writable===!0})},jd=(t,e)=>{let n=t;const i=[];for(;n!=null;){if(i.indexOf(n)!==-1)return!1;i.push(n);const o=Ma(n);if(d8(n,o,n===t))return!1;if(Wd(n,e))return!0;n=o}return!1},yAe=(t,e)=>t!=null&&jd(t,e)?t[e]:void 0,xAe=t=>{if(t==null||typeof t!="object"&&typeof t!="function")return t;const e=Ma(t);if(e===null&&bAe(t))return t;const n=Object.create(null),i=Object.create(null),o=[];let r=t;for(;r!=null&&o.indexOf(r)===-1;){o.push(r);const a=r===t?e:Ma(r);if(d8(r,a,r===t))break;const s=Object.getOwnPropertyNames(r);Object.getOwnPropertySymbols&&s.push(...Object.getOwnPropertySymbols(r));for(const l of s)u8(l)||Wd(i,l)||(n[l]=t[l],i[l]=!0);r=a}return n},v$=(t=>e=>{const n=vAe.call(e);return t[n]||(t[n]=n.slice(8,-1).toLowerCase())})(Object.create(null)),So=t=>(t=t.toLowerCase(),e=>v$(e)===t),Iv=t=>e=>typeof e===t,{isArray:Ks}=Array,Us=Iv("undefined");function Gc(t){return t!==null&&!Us(t)&&t.constructor!==null&&!Us(t.constructor)&&Oi(t.constructor.isBuffer)&&t.constructor.isBuffer(t)}const f8=So("ArrayBuffer");function wAe(t){let e;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?e=ArrayBuffer.isView(t):e=t&&t.buffer&&f8(t.buffer),e}const SAe=Iv("string"),Oi=Iv("function"),h8=Iv("number"),Kc=t=>t!==null&&typeof t=="object",CAe=t=>t===!0||t===!1,hp=t=>{if(!Kc(t))return!1;const e=Ma(t);return(e===null||e===Object.prototype||Ma(e)===null)&&!jd(t,c8)&&!jd(t,yf)},$Ae=t=>{if(!Kc(t)||Gc(t))return!1;try{return Object.keys(t).length===0&&Object.getPrototypeOf(t)===Object.prototype}catch{return!1}},AAe=So("Date"),_Ae=So("File"),PAe=t=>!!(t&&typeof t.uri<"u"),OAe=t=>t&&typeof t.getParts<"u",TAe=So("Blob"),EAe=So("FileList"),MAe=So("Set"),IAe=t=>Kc(t)&&Oi(t.pipe);function kAe(){return typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{}}const zM=kAe(),HM=typeof zM.FormData<"u"?zM.FormData:void 0,DAe=t=>{if(!t)return!1;if(HM&&t instanceof HM)return!0;const e=Ma(t);if(!e||e===Object.prototype||!Oi(t.append))return!1;const n=v$(t);return n==="formdata"||n==="object"&&Oi(t.toString)&&t.toString()==="[object FormData]"},RAe=So("URLSearchParams"),[LAe,FAe,NAe,BAe]=["ReadableStream","Request","Response","Headers"].map(So),zAe=t=>t.trim?t.trim():t.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function xf(t,e,{allOwnKeys:n=!1}={}){if(t===null||typeof t>"u")return;let i,o;if(typeof t!="object"&&(t=[t]),Ks(t))for(i=0,o=t.length;i0;)if(o=n[i],e===o.toLowerCase())return o;return null}const xs=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global,g8=t=>!Us(t)&&t!==xs;function bw(...t){const{caseless:e,skipUndefined:n}=g8(this)&&this||{},i={},o=(r,a)=>{if(a==="__proto__"||a==="constructor"||a==="prototype")return;const s=e&&typeof a=="string"&&p8(i,a)||a,l=Wd(i,s)?i[s]:void 0;hp(l)&&hp(r)?i[s]=bw(l,r):hp(r)?i[s]=bw({},r):Ks(r)?i[s]=r.slice():(!n||!Us(r))&&(i[s]=r)};for(let r=0,a=t.length;r(xf(e,(o,r)=>{n&&Oi(o)?Object.defineProperty(t,r,{__proto__:null,value:l8(o,n),writable:!0,enumerable:!0,configurable:!0}):Object.defineProperty(t,r,{__proto__:null,value:o,writable:!0,enumerable:!0,configurable:!0})},{allOwnKeys:i}),t),WAe=t=>(t.charCodeAt(0)===65279&&(t=t.slice(1)),t),jAe=(t,e,n,i)=>{t.prototype=Object.create(e.prototype,i),Object.defineProperty(t.prototype,"constructor",{__proto__:null,value:t,writable:!0,enumerable:!1,configurable:!0}),Object.defineProperty(t,"super",{__proto__:null,value:e.prototype}),n&&Object.assign(t.prototype,n)},VAe=(t,e,n,i)=>{let o,r,a;const s={};if(e=e||{},t==null)return e;do{for(o=Object.getOwnPropertyNames(t),r=o.length;r-- >0;)a=o[r],(!i||i(a,t,e))&&!s[a]&&(e[a]=t[a],s[a]=!0);t=n!==!1&&Ma(t)}while(t&&(!n||n(t,e))&&t!==Object.prototype);return e},XAe=(t,e,n)=>{t=String(t),(n===void 0||n>t.length)&&(n=t.length),n-=e.length;const i=t.indexOf(e,n);return i!==-1&&i===n},YAe=t=>{if(!t)return null;if(Ks(t))return t;let e=t.length;if(!h8(e))return null;const n=new Array(e);for(;e-- >0;)n[e]=t[e];return n},GAe=(t=>e=>t&&e instanceof t)(typeof Uint8Array<"u"&&Ma(Uint8Array)),KAe=(t,e)=>{const i=(t&&t[yf]).call(t);let o;for(;(o=i.next())&&!o.done;){const r=o.value;e.call(t,r[0],r[1])}},UAe=(t,e)=>{let n;const i=[];for(;(n=t.exec(e))!==null;)i.push(n);return i},qAe=So("HTMLFormElement"),ZAe=t=>t.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(n,i,o){return i.toUpperCase()+o}),{propertyIsEnumerable:JAe}=Object.prototype,QAe=So("RegExp"),m8=(t,e)=>{const n=Object.getOwnPropertyDescriptors(t),i={};xf(n,(o,r)=>{let a;(a=e(o,r,t))!==!1&&(i[r]=a||o)}),Object.defineProperties(t,i)},e_e=t=>{m8(t,(e,n)=>{if(Oi(t)&&["arguments","caller","callee"].includes(n))return!1;const i=t[n];if(Oi(i)){if(e.enumerable=!1,"writable"in e){e.writable=!1;return}e.set||(e.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")})}})},t_e=(t,e)=>{const n={},i=o=>{o.forEach(r=>{n[r]=!0})};return Ks(t)?i(t):i(String(t).split(e)),n},n_e=()=>{},i_e=(t,e)=>t!=null&&Number.isFinite(t=+t)?t:e;function o_e(t){return!!(t&&Oi(t.append)&&t[c8]==="FormData"&&t[yf])}const r_e=t=>{const e=new WeakSet,n=i=>{if(Kc(i)){if(e.has(i))return;if(Gc(i))return i;if(!("toJSON"in i)){e.add(i);let o;if(MAe(i)){o=[];for(const r of i){const a=n(r);!Us(a)&&o.push(a)}}else o=Ks(i)?[]:{},xf(i,(r,a)=>{const s=n(r);!Us(s)&&(o[a]=s)});return e.delete(i),o}}return i};return n(t)},a_e=So("AsyncFunction"),s_e=t=>t&&(Kc(t)||Oi(t))&&Oi(t.then)&&Oi(t.catch),v8=((t,e)=>t?setImmediate:e?((n,i)=>(xs.addEventListener("message",({source:o,data:r})=>{o===xs&&r===n&&i.length&&i.shift()()},!1),o=>{i.push(o),xs.postMessage(n,"*")}))(`axios@${Math.random()}`,[]):n=>setTimeout(n))(typeof setImmediate=="function",Oi(xs.postMessage)),l_e=typeof queueMicrotask<"u"?queueMicrotask.bind(xs):typeof process<"u"&&process.nextTick||v8,b8=t=>t!=null&&Oi(t[yf]),c_e=t=>t!=null&&jd(t,yf)&&b8(t),me={isArray:Ks,isArrayBuffer:f8,isBuffer:Gc,isFormData:DAe,isArrayBufferView:wAe,isString:SAe,isNumber:h8,isBoolean:CAe,isObject:Kc,isPlainObject:hp,isEmptyObject:$Ae,isReadableStream:LAe,isRequest:FAe,isResponse:NAe,isHeaders:BAe,isUndefined:Us,isDate:AAe,isFile:_Ae,isReactNativeBlob:PAe,isReactNative:OAe,isBlob:TAe,isRegExp:QAe,isFunction:Oi,isStream:IAe,isURLSearchParams:RAe,isTypedArray:GAe,isFileList:EAe,forEach:xf,merge:bw,extend:HAe,trim:zAe,stripBOM:WAe,inherits:jAe,toFlatObject:VAe,kindOf:v$,kindOfTest:So,endsWith:XAe,toArray:YAe,forEachEntry:KAe,matchAll:UAe,isHTMLForm:qAe,hasOwnProperty:Wd,hasOwnProp:Wd,hasOwnInPrototypeChain:jd,getSafeProp:yAe,toSafeFlatObject:xAe,reduceDescriptors:m8,freezeMethods:e_e,toObjectSet:t_e,toCamelCase:ZAe,noop:n_e,toFiniteNumber:i_e,findKey:p8,global:xs,isContextDefined:g8,isSpecCompliantForm:o_e,toJSONObject:r_e,isAsyncFn:a_e,isThenable:s_e,setImmediate:v8,asap:l_e,isIterable:b8,isSafeIterable:c_e},u_e=me.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),d_e=t=>{const e={};let n,i,o;return t&&t.split(` `).forEach(function(a){o=a.indexOf(":"),n=a.substring(0,o).trim().toLowerCase(),i=a.substring(o+1).trim();const s=me.hasOwnProp(e,n);!n||s&&me.hasOwnProp(u_e,n)||(n==="set-cookie"?s?e[n].push(i):e[n]=[i]:e[n]=s?e[n]+", "+i:i)}),e};function f_e(t){let e=0,n=t.length;for(;ee;){const i=t.charCodeAt(n-1);if(i!==9&&i!==32)break;n-=1}return e===0&&n===t.length?t:t.slice(e,n)}const h_e=new RegExp("[\\u0000-\\u0008\\u000a-\\u001f\\u007f]+","g"),p_e=new RegExp("[^\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+","g");function b$(t,e){return me.isArray(t)?t.map(n=>b$(n,e)):f_e(String(t).replace(e,""))}const g_e=t=>b$(t,h_e),m_e=t=>b$(t,p_e);function y8(t){const e=Object.create(null);return me.forEach(t.toJSON(),(n,i)=>{e[i]=m_e(n)}),e}const WM=Symbol("internals");function hu(t){return t&&String(t).trim().toLowerCase()}function pp(t){return t===!1||t==null?t:me.isArray(t)?t.map(pp):g_e(String(t))}function v_e(t){const e=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let i;for(;i=n.exec(t);)e[i[1]]=i[2];return e}const b_e=/^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/;function F0(t){let e=0,n=t.length;for(;ee;){const i=t.charCodeAt(n-1);if(i!==9&&i!==32)break;n-=1}return e===0&&n===t.length?t:t.slice(e,n)}function y_e(t){const e=t.length-1;if(e<1||t.charCodeAt(0)!==34||t.charCodeAt(e)!==34)return t;let n="";for(let i=1;i=e))return t;n+=t[i]}return n}function x_e(t){const e=Object.create(null),n=String(t);let i=0,o=!1,r=!1;function a(s){const l=F0(n.slice(i,s)),c=l.indexOf("=");if(c<1)return;const u=F0(l.slice(0,c));if(!b_e.test(u))return;const d=u.toLowerCase();if(d==="__proto__"||d==="constructor"||d==="prototype")return;const f=F0(l.slice(c+1));e[d]=y_e(f)}for(let s=0;s/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(t.trim());function N0(t,e,n,i,o){if(me.isFunction(i))return i.call(this,e,n);if(o&&(e=n),!!me.isString(e)){if(me.isString(i))return e.indexOf(i)!==-1;if(me.isRegExp(i))return i.test(e)}}function S_e(t){return t.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(e,n,i)=>n.toUpperCase()+i)}function C_e(t,e){const n=me.toCamelCase(" "+e);["get","set","has"].forEach(i=>{Object.defineProperty(t,i+n,{__proto__:null,value:function(o,r,a){return this[i].call(this,e,o,r,a)},configurable:!0})})}let ti=class{constructor(e){e&&this.set(e)}set(e,n,i){const o=this;function r(s,l,c){const u=hu(l);if(!u)return;const d=me.findKey(o,u);(!d||o[d]===void 0||c===!0||c===void 0&&o[d]!==!1)&&(o[d||l]=pp(s))}const a=(s,l)=>me.forEach(s,(c,u)=>r(c,u,l));if(me.isPlainObject(e)||e instanceof this.constructor)a(e,n);else if(me.isString(e)&&(e=e.trim())&&!w_e(e))a(d_e(e),n);else if(me.isObject(e)&&me.isSafeIterable(e)){let s=Object.create(null),l,c;for(const u of e){if(!me.isArray(u))throw new TypeError("Object iterator must return a key-value pair");c=u[0],me.hasOwnProp(s,c)?(l=s[c],s[c]=me.isArray(l)?[...l,u[1]]:[l,u[1]]):s[c]=u[1]}a(s,n)}else e!=null&&r(n,e,i);return this}get(e,n){if(e=hu(e),e){const i=me.findKey(this,e);if(i){const o=this[i];if(!n)return o;if(n===!0)return v_e(o);if(me.isFunction(n))return n.call(this,o,i);if(me.isRegExp(n))return n.exec(o);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,n){if(e=hu(e),e){const i=me.findKey(this,e);return!!(i&&this[i]!==void 0&&(!n||N0(this,this[i],i,n)))}return!1}delete(e,n){const i=this;let o=!1;function r(a){if(a=hu(a),a){const s=me.findKey(i,a);s&&(!n||N0(i,i[s],s,n))&&(delete i[s],o=!0)}}return me.isArray(e)?e.forEach(r):r(e),o}clear(e){const n=Object.keys(this);let i=n.length,o=!1;for(;i--;){const r=n[i];(!e||N0(this,this[r],r,e,!0))&&(delete this[r],o=!0)}return o}normalize(e){const n=this,i={};return me.forEach(this,(o,r)=>{const a=me.findKey(i,r);if(a){n[a]=pp(o),delete n[r];return}const s=e?S_e(r):String(r).trim();s!==r&&delete n[r],n[s]=pp(o),i[s]=!0}),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){const n=Object.create(null);return me.forEach(this,(i,o)=>{i!=null&&i!==!1&&(n[o]=e&&me.isArray(i)?i.join(", "):i)}),n}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([e,n])=>e+": "+n).join(` `)}getSetCookie(){const e=this.get("set-cookie");return me.isArray(e)?e:e==null||e===!1?[]:[e]}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static parseParameters(e){return x_e(e)}static concat(e,...n){const i=new this(e);return n.forEach(o=>i.set(o)),i}static accessor(e){const i=(this[WM]=this[WM]={accessors:{}}).accessors,o=this.prototype;function r(a){const s=hu(a);i[s]||(C_e(o,a),i[s]=!0)}return me.isArray(e)?e.forEach(r):r(e),this}};ti.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);me.reduceDescriptors(ti.prototype,({value:t},e)=>{let n=e[0].toUpperCase()+e.slice(1);return{get:()=>t,set(i){this[n]=i}}});me.freezeMethods(ti);const Wg="[REDACTED ****]";function $_e(t){if(me.hasOwnProp(t,"toJSON"))return!0;let e=Object.getPrototypeOf(t);for(;e&&e!==Object.prototype;){if(me.hasOwnProp(e,"toJSON"))return!0;e=Object.getPrototypeOf(e)}return!1}function A_e(t,e){const n=new Set(e.map(r=>String(r).toLowerCase())),i=[],o=r=>{if(r===null||typeof r!="object"||me.isBuffer(r))return r;if(i.indexOf(r)!==-1)return;r instanceof ti&&(r=r.toJSON()),i.push(r);let a;if(me.isArray(r))a=[],r.forEach((s,l)=>{const c=o(s);me.isUndefined(c)||(a[l]=c)});else{if(!me.isPlainObject(r)&&$_e(r))return i.pop(),r;a=Object.create(null);for(const[s,l]of Object.entries(r)){const c=n.has(s.toLowerCase())?Wg:o(l);me.isUndefined(c)||(a[s]=c)}}return i.pop(),a};return o(t)}function jM(t){try{return String(t)}catch{return""}}function __e(t){return t.errors.map(n=>{try{return n&&n.message?jM(n.message):jM(n)}catch{return""}}).filter(Boolean).join("; ")||t.name||"AggregateError"}let He=class x8 extends Error{static from(e,n,i,o,r,a){let s=e.message;!s&&me.isArray(e.errors)&&e.errors.length&&(s=__e(e));const l=new x8(s,n||e.code,i,o,r);return Object.defineProperty(l,"cause",{__proto__:null,value:e,writable:!0,enumerable:!1,configurable:!0}),l.name=e.name,e.status!=null&&l.status==null&&(l.status=e.status),a&&Object.assign(l,a),l}constructor(e,n,i,o,r){super(e),Object.defineProperty(this,"message",{__proto__:null,value:e,enumerable:!0,writable:!0,configurable:!0}),this.name="AxiosError",this.isAxiosError=!0,n&&(this.code=n),i&&(this.config=i),o&&(this.request=o),r&&(this.response=r,this.status=r.status)}toJSON(){const e=this.config,n=e&&me.hasOwnProp(e,"redact")?e.redact:void 0,i=me.isArray(n)&&n.length>0?A_e(e,n):me.toJSONObject(e);return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:i,code:this.code,status:this.status}}};He.ERR_BAD_OPTION_VALUE="ERR_BAD_OPTION_VALUE";He.ERR_BAD_OPTION="ERR_BAD_OPTION";He.ECONNABORTED="ECONNABORTED";He.ETIMEDOUT="ETIMEDOUT";He.ECONNREFUSED="ECONNREFUSED";He.ERR_NETWORK="ERR_NETWORK";He.ERR_FR_TOO_MANY_REDIRECTS="ERR_FR_TOO_MANY_REDIRECTS";He.ERR_DEPRECATED="ERR_DEPRECATED";He.ERR_BAD_RESPONSE="ERR_BAD_RESPONSE";He.ERR_BAD_REQUEST="ERR_BAD_REQUEST";He.ERR_CANCELED="ERR_CANCELED";He.ERR_NOT_SUPPORT="ERR_NOT_SUPPORT";He.ERR_INVALID_URL="ERR_INVALID_URL";He.ERR_FORM_DATA_DEPTH_EXCEEDED="ERR_FORM_DATA_DEPTH_EXCEEDED";const P_e=null,w8=100;function yw(t){return me.isPlainObject(t)||me.isArray(t)}function S8(t){return me.endsWith(t,"[]")?t.slice(0,-2):t}function B0(t,e,n){return t?t.concat(e).map(function(o,r){return o=S8(o),!n&&r?"["+o+"]":o}).join(n?".":""):e}function O_e(t){return me.isArray(t)&&!t.some(yw)}const T_e=me.toFlatObject(me,{},null,function(e){return/^is[A-Z]/.test(e)});function kv(t,e,n){if(!me.isObject(t))throw new TypeError("target must be an object");e=e||new FormData;const i=(b,y)=>{const w=me.getSafeProp(n,b);return me.isUndefined(w)?y:w},o=i("metaTokens",!0),r=i("visitor")||g,a=i("dots",!1),s=i("indexes",!1),l=i("Blob")||typeof Blob<"u"&&Blob,c=i("maxDepth",w8),u=l&&me.isSpecCompliantForm(e),d=[];if(!me.isFunction(r))throw new TypeError("visitor must be a function");function f(b){if(b===null)return"";if(me.isDate(b))return b.toISOString();if(me.isBoolean(b))return b.toString();if(!u&&me.isBlob(b))throw new He("Blob is not supported. Use a Buffer instead.");if(me.isArrayBuffer(b)||me.isTypedArray(b)){if(u&&typeof l=="function")return new l([b]);throw new He("Blob is not supported. Use a Buffer instead.",He.ERR_NOT_SUPPORT)}return b}function h(b){if(b>c)throw new He("Object is too deeply nested ("+b+" levels). Max depth: "+c,He.ERR_FORM_DATA_DEPTH_EXCEEDED)}function p(b,y){if(c===1/0)return JSON.stringify(b);const w=[];return JSON.stringify(b,function($,S){if(!me.isObject(S))return S;for(;w.length&&w[w.length-1]!==this;)w.pop();return w.push(S),h(y+w.length-1),S})}function g(b,y,w){let x=b;if(me.isReactNative(e)&&me.isReactNativeBlob(b))return e.append(B0(w,y,a),f(b)),!1;if(b&&!w&&typeof b=="object"){if(me.endsWith(y,"{}"))y=o?y:y.slice(0,-2),b=p(b,1);else if(me.isArray(b)&&O_e(b)||(me.isFileList(b)||me.endsWith(y,"[]"))&&(x=me.toArray(b)))return y=S8(y),x.forEach(function(S,_){!(me.isUndefined(S)||S===null)&&e.append(s===!0?B0([y],_,a):s===null?y:y+"[]",f(S))}),!1}return yw(b)?!0:(e.append(B0(w,y,a),f(b)),!1)}const m=Object.assign(T_e,{defaultVisitor:g,convertValue:f,isVisitable:yw});function v(b,y,w=0){if(!me.isUndefined(b)){if(h(w),d.indexOf(b)!==-1)throw new Error("Circular reference detected in "+y.join("."));d.push(b),me.forEach(b,function($,S){(!(me.isUndefined($)||$===null)&&r.call(e,$,me.isString(S)?S.trim():S,y,m))===!0&&v($,y?y.concat(S):[S],w+1)}),d.pop()}}if(!me.isObject(t))throw new TypeError("data must be an object");return v(t),e}function VM(t){const e={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"};return encodeURIComponent(t).replace(/[!'()~]|%20/g,function(i){return e[i]})}function y$(t,e){this._pairs=[],t&&kv(t,this,e)}const C8=y$.prototype;C8.append=function(e,n){this._pairs.push([e,n])};C8.toString=function(e){const n=e?i=>e.call(this,i,VM):VM;return this._pairs.map(function(o){return n(o[0])+"="+n(o[1])},"").join("&")};function E_e(t){return encodeURIComponent(t).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+")}function $8(t,e,n){if(!e)return t;t=t||"";const i=me.isFunction(n)?{serialize:n}:n,o=me.getSafeProp(i,"encode")||E_e,r=me.getSafeProp(i,"serialize");let a;if(r?a=r(e,i):a=me.isURLSearchParams(e)?e.toString():new y$(e,i).toString(o),a){const s=t.indexOf("#");s!==-1&&(t=t.slice(0,s)),t+=(t.indexOf("?")===-1?"?":"&")+a}return t}const pu=Symbol("internals");function A8(t){return t?t.length:0}function XM(t){if(t)for(;t.length&&t[t.length-1]===null;)t.pop()}function gu(t,e){const n=t.handlers,i=A8(n);n!==e.handlersRef?(e.handlersRef=n,e.handlerEntries.clear()):i!==e.handlersLength&&(i?e.handlerEntries.forEach(function(r,a){n[r.index]!==r.handler&&e.handlerEntries.delete(a)}):e.handlerEntries.clear()),e.handlersLength=i}class YM{constructor(){this.handlers=[],this[pu]={handlersRef:this.handlers,handlersLength:this.handlers.length,handlerEntries:new Map,iterationDepth:0,nextId:0}}use(e,n,i){const o={fulfilled:e,rejected:n,synchronous:i?i.synchronous:!1,runWhen:i?i.runWhen:null},r=this[pu];this.handlers==null&&(this.handlers=[]),gu(this,r);const a=r.nextId++;return this.handlers.push(o),r.handlerEntries.set(a,{handler:o,index:this.handlers.length-1}),r.handlersLength=this.handlers.length,a}eject(e){const n=this[pu];gu(this,n);const i=n.handlerEntries.get(e);if(i){if(n.handlerEntries.delete(e),this.handlers[i.index]!==i.handler)return;this.handlers[i.index]=null,n.iterationDepth||(XM(this.handlers),n.handlersLength=this.handlers.length)}}clear(){this.handlers&&(this.handlers=[],gu(this,this[pu]))}forEach(e){const n=this[pu];gu(this,n),n.iterationDepth++;try{me.forEach(this.handlers,function(o){o!==null&&e(o)})}finally{--n.iterationDepth||(gu(this,n),XM(this.handlers),n.handlersLength=A8(this.handlers))}}}const x$={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1,legacyInterceptorReqResOrdering:!0,advertiseZstdAcceptEncoding:!1,validateStatusUndefinedResolves:!0},M_e=typeof URLSearchParams<"u"?URLSearchParams:y$,I_e=typeof FormData<"u"?FormData:null,k_e=typeof Blob<"u"?Blob:null,D_e={isBrowser:!0,classes:{URLSearchParams:M_e,FormData:I_e,Blob:k_e},protocols:["http","https","file","blob","url","data"]},w$=typeof window<"u"&&typeof document<"u",xw=typeof navigator=="object"&&navigator||void 0,R_e=w$&&(!xw||["ReactNative","NativeScript","NS"].indexOf(xw.product)<0),L_e=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function",F_e=w$&&window.location.href||"http://localhost",N_e=Object.freeze(Object.defineProperty({__proto__:null,hasBrowserEnv:w$,hasStandardBrowserEnv:R_e,hasStandardBrowserWebWorkerEnv:L_e,navigator:xw,origin:F_e},Symbol.toStringTag,{value:"Module"})),Ln={...N_e,...D_e};function B_e(t,e){return kv(t,new Ln.classes.URLSearchParams,{visitor:function(n,i,o,r){return Ln.isNode&&me.isBuffer(n)?(this.append(i,n.toString("base64")),!1):r.defaultVisitor.apply(this,arguments)},...e})}const GM=w8;function _8(t){if(t>GM)throw new He("FormData field is too deeply nested ("+t+" levels). Max depth: "+GM,He.ERR_FORM_DATA_DEPTH_EXCEEDED)}function z_e(t){const e=[],n=/[^.[\]]+|\[([^.[\]]*)]/g;let i;for(;(i=n.exec(t))!==null;)_8(e.length),e.push(i[0]==="[]"?"":i[1]||i[0]);return e}function H_e(t){const e={},n=Object.keys(t);let i;const o=n.length;let r;for(i=0;i=n.length;return a=!a&&me.isArray(o)?o.length:a,l?(me.hasOwnProp(o,a)?o[a]=me.isArray(o[a])?o[a].concat(i):[o[a],i]:o[a]=i,!s):((!me.hasOwnProp(o,a)||!me.isObject(o[a]))&&(o[a]=[]),e(n,i,o[a],r)&&me.isArray(o[a])&&(o[a]=H_e(o[a])),!s)}if(me.isFormData(t)&&me.isFunction(t.entries)){const n={};return me.forEachEntry(t,(i,o)=>{e(z_e(i),o,n,0)}),n}return null}const O8=Object.freeze(["get","delete","head","options","post","put","patch","purge","link","unlink","query"]),Al=(t,e)=>t!=null&&me.hasOwnProp(t,e)?t[e]:void 0;function W_e(t,e,n){if(me.isString(t))try{return(e||JSON.parse)(t),me.trim(t)}catch(i){if(i.name!=="SyntaxError")throw i}return(n||JSON.stringify)(t)}const wf={transitional:x$,adapter:["xhr","http","fetch"],transformRequest:[function(e,n){const i=n.getContentType()||"",o=i.indexOf("application/json")>-1,r=me.isObject(e);if(r&&me.isHTMLForm(e)&&(e=new FormData(e)),me.isFormData(e))return o?JSON.stringify(P8(e)):e;if(me.isArrayBuffer(e)||me.isBuffer(e)||me.isStream(e)||me.isFile(e)||me.isBlob(e)||me.isReadableStream(e))return e;if(me.isArrayBufferView(e))return e.buffer;if(me.isURLSearchParams(e))return n.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let s;if(r){const l=Al(this,"formSerializer");if(i.indexOf("application/x-www-form-urlencoded")>-1)return B_e(e,l).toString();if((s=me.isFileList(e))||i.indexOf("multipart/form-data")>-1){const c=Al(this,"env"),u=c&&c.FormData;return kv(s?{"files[]":e}:e,u&&new u,l)}}return r||o?(n.setContentType("application/json",!1),W_e(e)):e}],transformResponse:[function(e){const n=Al(this,"transitional")||wf.transitional,i=n&&n.forcedJSONParsing,o=Al(this,"responseType"),r=o==="json";if(me.isResponse(e)||me.isReadableStream(e))return e;if(e&&me.isString(e)&&(i&&!o||r)){const s=!(n&&n.silentJSONParsing)&&r;try{return JSON.parse(e,Al(this,"parseReviver"))}catch(l){if(s)throw l.name==="SyntaxError"?He.from(l,He.ERR_BAD_RESPONSE,this,null,Al(this,"response")):l}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:Ln.classes.FormData,Blob:Ln.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};me.forEach(O8,t=>{wf.headers[t]={}});function z0(t,e){const n=this||wf,i=e||n,o=ti.from(i.headers);let r=i.data;return me.forEach(t,function(s){r=s.call(n,r,o.normalize(),e?e.status:void 0)}),o.normalize(),r}function T8(t){return!!(t&&t.__CANCEL__)}let Sf=class extends He{constructor(e,n,i){super(e??"canceled",He.ERR_CANCELED,n,i),this.name="CanceledError",this.__CANCEL__=!0}};function E8(t,e,n){const i=n.config.validateStatus;!n.status||!i||i(n.status)?t(n):e(new He("Request failed with status code "+n.status,n.status>=400&&n.status<500?He.ERR_BAD_REQUEST:He.ERR_BAD_RESPONSE,n.config,n.request,n))}const j_e=/[\t\n\r]/g;function M8(t){if(typeof t!="string")return t;let e=0;for(;e{n=d,o=null,r&&(clearTimeout(r),r=null),t(...u)};return[(...u)=>{const d=Date.now(),f=d-n;f>=i?a(u,d):(o=u,r||(r=setTimeout(()=>{r=null,a(o)},i-f)))},()=>o&&a(o),(...u)=>a(u)]}const jg=(t,e,n=3)=>{let i=0;const o=V_e(50,250);return X_e(r=>{if(!r||!me.isNumber(r.loaded))return;const a=r.loaded,s=r.lengthComputable?r.total:void 0,l=Math.max(0,s!=null?Math.min(a,s):a),c=Math.max(0,l-i),u=o(c);i=Math.max(i,l);const d={loaded:l,total:s,progress:s?l/s:void 0,bytes:c,rate:u||void 0,estimated:u&&s?(s-l)/u:void 0,event:r,lengthComputable:s!=null,[e?"download":"upload"]:!0};t(d)},n)},KM=(t,e)=>{const n=t!=null;return[i=>e[0]({lengthComputable:n,total:t,loaded:i}),e[1]]},UM=(t,e=me.asap)=>(...n)=>e(()=>t(...n)),Y_e=Ln.hasStandardBrowserEnv?((t,e)=>n=>(n=new URL(n,Ln.origin),t.protocol===n.protocol&&t.host===n.host&&(e||t.port===n.port)))(new URL(Ln.origin),Ln.navigator&&/(msie|trident)/i.test(Ln.navigator.userAgent)):()=>!0,G_e=Ln.hasStandardBrowserEnv?{write(t,e,n,i,o,r,a){if(typeof document>"u")return;const s=[`${t}=${encodeURIComponent(e)}`];me.isNumber(n)&&s.push(`expires=${new Date(n).toUTCString()}`),me.isString(i)&&s.push(`path=${i}`),me.isString(o)&&s.push(`domain=${o}`),r===!0&&s.push("secure"),me.isString(a)&&s.push(`SameSite=${a}`),document.cookie=s.join("; ")},read(t){if(typeof document>"u")return null;const e=document.cookie.split(";");for(let n=0;n0&&t.charCodeAt(n-1)===47;)n--;return t.slice(0,n)+"/"+e.replace(/^\/+/,"")}const q_e=/^https?:(?!\/\/)/i;function Z_e(t){return t&&t.replace(/(^|&)([^=&]*=)?[^&]+/g,(e,n,i="")=>`${n}${i}${Wg}`)}function J_e(t){const e=t.replace(/^(https?:\/{0,2})[^/?#]*@/i,`$1${Wg}@`),n=e.indexOf("#"),o=(n===-1?e:e.slice(0,n)).replace(/([?&][^=&#]*=)[^&#]*/g,`$1${Wg}`);return n===-1?o:`${o}#${Z_e(e.slice(n+1))}`}function qM(t,e){if(typeof t=="string"){const n=M8(t);if(q_e.test(n))throw new He(`Invalid URL ${JSON.stringify(J_e(n))}: missing "//" after protocol`,He.ERR_INVALID_URL,e)}}function I8(t,e,n,i){qM(e,i);let o=!K_e(e);return t&&(o||n===!1)?(qM(t,i),U_e(t,e)):e}const ZM=t=>t instanceof ti?{...t}:t,Q_e=t=>Object.getOwnPropertySymbols&&Object.getOwnPropertyDescriptor?Object.keys(t).concat(Object.getOwnPropertySymbols(t).filter(e=>Object.getOwnPropertyDescriptor(t,e).enumerable)):Object.keys(t);function qs(t,e){t=t||{},e=e||{};const n=Object.create(null);Object.defineProperty(n,"hasOwnProperty",{__proto__:null,value:Object.prototype.hasOwnProperty,enumerable:!1,writable:!0,configurable:!0});function i(u,d,f,h){return me.isPlainObject(u)&&me.isPlainObject(d)?me.merge.call({caseless:h},u,d):me.isPlainObject(d)?me.merge({},d):me.isArray(d)?d.slice():d}function o(u,d,f,h){if(me.isUndefined(d)){if(!me.isUndefined(u))return i(void 0,u,f,h)}else return i(u,d,f,h)}function r(u,d){if(!me.isUndefined(d))return i(void 0,d)}function a(u,d){if(me.isUndefined(d)){if(!me.isUndefined(u))return i(void 0,u)}else return i(void 0,d)}function s(u){const d=me.hasOwnProp(e,"transitional")?e.transitional:void 0;if(!me.isUndefined(d))if(me.isPlainObject(d)){if(me.hasOwnProp(d,u))return d[u]}else return;const f=me.hasOwnProp(t,"transitional")?t.transitional:void 0;if(me.isPlainObject(f)&&me.hasOwnProp(f,u))return f[u]}function l(u,d,f){if(me.hasOwnProp(e,f))return i(u,d);if(me.hasOwnProp(t,f))return i(void 0,u)}const c={url:r,method:r,data:r,baseURL:a,transformRequest:a,transformResponse:a,paramsSerializer:a,timeout:a,timeoutErrorMessage:a,withCredentials:a,withXSRFToken:a,adapter:a,responseType:a,xsrfCookieName:a,xsrfHeaderName:a,onUploadProgress:a,onDownloadProgress:a,decompress:a,maxContentLength:a,maxBodyLength:a,beforeRedirect:a,transport:a,httpAgent:a,httpsAgent:a,cancelToken:a,socketPath:a,allowedSocketPaths:a,responseEncoding:a,validateStatus:l,headers:(u,d,f)=>o(ZM(u),ZM(d),f,!0)};return me.forEach(Q_e({...t,...e}),function(d){if(d==="__proto__"||d==="constructor"||d==="prototype")return;const f=me.hasOwnProp(c,d)?c[d]:o,h=me.hasOwnProp(t,d)?t[d]:void 0,p=me.hasOwnProp(e,d)?e[d]:void 0,g=f(h,p,d);me.isUndefined(g)&&f!==l||(n[d]=g)}),me.hasOwnProp(e,"validateStatus")&&me.isUndefined(e.validateStatus)&&s("validateStatusUndefinedResolves")===!1&&(me.hasOwnProp(t,"validateStatus")?n.validateStatus=i(void 0,t.validateStatus):delete n.validateStatus),n}const e2e=["content-type","content-length"];function t2e(t,e,n){if(n!=="content-only"){t.set(e);return}Object.entries(e||{}).forEach(([i,o])=>{e2e.includes(i.toLowerCase())&&t.set(i,o)})}const n2e=t=>encodeURIComponent(t).replace(/%([0-9A-F]{2})/gi,(e,n)=>String.fromCharCode(parseInt(n,16)));function k8(t){const e=qs({},t),n=f=>me.hasOwnProp(e,f)?e[f]:void 0,i=n("data");let o=n("withXSRFToken");const r=n("xsrfHeaderName"),a=n("xsrfCookieName");let s=n("headers");const l=n("auth"),c=n("baseURL"),u=n("allowAbsoluteUrls"),d=n("url");if(e.headers=s=ti.from(s),e.url=$8(I8(c,d,u,e),n("params"),n("paramsSerializer")),l){const f=me.getSafeProp(l,"username")||"",h=me.getSafeProp(l,"password")||"";try{s.set("Authorization","Basic "+btoa(f+":"+(h?n2e(h):"")))}catch(p){throw He.from(p,He.ERR_BAD_OPTION_VALUE,t)}}if(me.isFormData(i)){const f=me.getSafeProp(i,"getHeaders");Ln.hasStandardBrowserEnv||Ln.hasStandardBrowserWebWorkerEnv||me.isReactNative(i)?s.setContentType(void 0):me.isFunction(f)&&t2e(s,f.call(i),n("formDataHeaderPolicy"))}if(Ln.hasStandardBrowserEnv&&(me.isFunction(o)&&(o=o(e)),o===!0||o==null&&Y_e(e.url))){const h=r&&a&&G_e.read(a);h&&s.set(r,h)}return e}const i2e=typeof XMLHttpRequest<"u",o2e=i2e&&function(t){return new Promise(function(n,i){const o=k8(t);let r=o.data;const a=ti.from(o.headers).normalize();let{responseType:s,onUploadProgress:l,onDownloadProgress:c}=o,u,d,f,h,p,g;function m(){h&&h(),p&&p(),o.cancelToken&&o.cancelToken.unsubscribe(u),o.signal&&o.signal.removeEventListener("abort",u)}let v=new XMLHttpRequest;v.open(o.method.toUpperCase(),o.url,!0),v.timeout=o.timeout;function b(w){if(!v)return;if(v.status===0&&(H0(M8(o.url))||H0(Ln.origin))!=="file"&&!(v.responseURL&&v.responseURL.startsWith("file:"))){i(new He("Request aborted",He.ECONNABORTED,t,v)),m(),v=null;return}try{w?g&&g(w):p&&p()}catch(_){setTimeout(()=>{throw _})}if(!v)return;const x=ti.from("getAllResponseHeaders"in v&&v.getAllResponseHeaders()),S={data:!s||s==="text"||s==="json"?v.responseText:v.response,status:v.status,statusText:v.statusText,headers:x,config:t,request:v};E8(function(P){n(P),m()},function(P){i(P),m()},S),v=null}"onloadend"in v?v.onloadend=b:v.onreadystatechange=function(){!v||v.readyState!==4||v.status===0&&!(v.responseURL&&v.responseURL.startsWith("file:"))||setTimeout(b)},v.onabort=function(){v&&(i(new He("Request aborted",He.ECONNABORTED,t,v)),m(),v=null)},v.onerror=function(x){const $=x&&x.message?x.message:"Network Error",S=new He($,He.ERR_NETWORK,t,v);S.event=x||null,i(S),m(),v=null},v.ontimeout=function(){let x=o.timeout?"timeout of "+o.timeout+"ms exceeded":"timeout exceeded";const $=o.transitional||x$;o.timeoutErrorMessage&&(x=o.timeoutErrorMessage),i(new He(x,$.clarifyTimeoutError?He.ETIMEDOUT:He.ECONNABORTED,t,v)),m(),v=null},r===void 0&&a.setContentType(null),"setRequestHeader"in v&&me.forEach(y8(a),function(x,$){v.setRequestHeader($,x)}),me.isUndefined(o.withCredentials)||(v.withCredentials=!!o.withCredentials),s&&s!=="json"&&(v.responseType=o.responseType),c&&([f,p,g]=jg(c,!0),v.addEventListener("progress",f)),l&&v.upload&&([d,h]=jg(l),v.upload.addEventListener("progress",d),v.upload.addEventListener("loadend",h)),(o.cancelToken||o.signal)&&(u=w=>{v&&(i(!w||w.type?new Sf(null,t,v):w),v.abort(),m(),v=null)},o.cancelToken&&o.cancelToken.subscribe(u),o.signal&&(o.signal.aborted?u():o.signal.addEventListener("abort",u)));const y=H0(o.url);if(y&&!Ln.protocols.includes(y)){i(new He("Unsupported protocol "+y+":",He.ERR_BAD_REQUEST,t)),m();return}v.send(r||null)})},r2e=(t,e)=>{if(t=t?t.filter(Boolean):[],!e&&!t.length)return;const n=new AbortController;let i=!1;const o=function(l){if(!i){i=!0,a();const c=l instanceof Error?l:this.reason;n.abort(c instanceof He?c:new Sf(c instanceof Error?c.message:c))}};let r=e&&setTimeout(()=>{r=null,o(new He(`timeout of ${e}ms exceeded`,He.ETIMEDOUT))},e);const a=()=>{t&&(r&&clearTimeout(r),r=null,t.forEach(l=>{l.unsubscribe?l.unsubscribe(o):l.removeEventListener("abort",o)}),t=null)};t.forEach(l=>{if(!i){if(l.aborted){o.call(l);return}l.addEventListener("abort",o,{once:!0})}});const{signal:s}=n;return s.unsubscribe=()=>me.asap(a),s},a2e=function*(t,e){let n=t.byteLength;if(n{const o=s2e(t,e);let r=0,a,s=l=>{a||(a=!0,i&&i(l))};return new ReadableStream({async pull(l){try{const{done:c,value:u}=await o.next();if(c){s(),l.close();return}let d=u.byteLength;if(n){let f=r+=d;n(f)}l.enqueue(new Uint8Array(u))}catch(c){throw s(c),c}},cancel(l){return s(l),o.return()}},{highWaterMark:2})},QM=t=>t>=48&&t<=57||t>=65&&t<=70||t>=97&&t<=102,D8=(t,e,n)=>e+2t<=57?t-48:(t&223)-55,c2e=t=>t>=65&&t<=90||t>=97&&t<=122||t>=48&&t<=57||t===43||t===47||t===45||t===95,u2e=t=>t===9||t===10||t===12||t===13||t===32,d2e=t=>{const e=Math.floor(t/4),n=t%4;return e*3+(n===2?1:n===3?2:0)},f2e=t=>{const e=t.length;let n=0;return e>0&&t.charCodeAt(e-1)===61&&(n++,e>1&&t.charCodeAt(e-2)===61&&n++),Math.floor((e-n)*3/4)},h2e=t=>{const e=t.length;let n=0,i=0,o=!1;for(let r=0;r0){o=!0;continue}n++}}return o||i>2||i>0&&(n+i)%4!==0||n%4===1?f2e(t):d2e(n)},p2e=(t,e)=>{if(!t||typeof t!="string"||!t.startsWith("data:"))return 0;const n=t.indexOf(",");if(n<0)return 0;const i=t.slice(5,n),o=t.slice(n+1);if(/;base64/i.test(i))return e(o);let a=0;for(let s=0,l=o.length;s=55296&&c<=56319&&s+1=56320&&u<=57343?(a+=4,s++):a+=3}else a+=3}return a};function g2e(t){const e=typeof t=="string"?t.indexOf("#"):-1;return p2e(e===-1?t:t.slice(0,e),h2e)}const S$="1.20.0",tI=64*1024,m2e={cache:"default",redirect:"follow",referrer:"about:client",referrerPolicy:"",mode:"cors",integrity:"",keepalive:!1,priority:"auto",window:null},{isFunction:xh}=me,v2e=t=>encodeURIComponent(t).replace(/%([0-9A-F]{2})/gi,(e,n)=>String.fromCharCode(parseInt(n,16))),nI=t=>{if(!me.isString(t))return t;try{return decodeURIComponent(t)}catch{return t}},iI=(t,...e)=>{try{return!!t(...e)}catch{return!1}},b2e=t=>{const e=t.indexOf("://");let n=t;return e!==-1&&(n=n.slice(e+3)),n.includes("@")||n.includes(":")},y2e=t=>{const e=me.global!==void 0&&me.global!==null?me.global:globalThis,{ReadableStream:n,TextEncoder:i}=e;t=me.merge.call({skipUndefined:!0},{Request:e.Request,Response:e.Response},t);const{fetch:o,Request:r,Response:a}=t,s=o?xh(o):typeof fetch=="function",l=xh(r),c=xh(a);if(!s)return!1;const u=s&&xh(n),d=s&&(typeof i=="function"?(v=>b=>v.encode(b))(new i):async v=>new Uint8Array(await new r(v).arrayBuffer())),f=l&&u&&iI(()=>{let v=!1;const b=new r(Ln.origin,{body:new n,method:"POST",get duplex(){return v=!0,"half"}}),y=b.headers.has("Content-Type");return b.body!=null&&b.body.cancel(),v&&!y}),h=c&&u&&iI(()=>me.isReadableStream(new a("").body)),p={stream:h&&(v=>v.body)};s&&["text","arrayBuffer","blob","formData","stream"].forEach(v=>{!p[v]&&(p[v]=(b,y)=>{let w=b&&b[v];if(w)return w.call(b);throw new He(`Response type '${v}' is not supported`,He.ERR_NOT_SUPPORT,y)})});const g=async v=>{if(v==null)return 0;if(me.isBlob(v))return v.size;if(me.isSpecCompliantForm(v))return(await new r(Ln.origin,{method:"POST",body:v}).arrayBuffer()).byteLength;if(me.isArrayBufferView(v)||me.isArrayBuffer(v))return v.byteLength;if(me.isURLSearchParams(v)&&(v=v+""),me.isString(v))return(await d(v)).byteLength},m=async(v,b)=>{const y=me.toFiniteNumber(v.getContentLength());return y??g(b)};return async v=>{let{url:b,method:y,data:w,signal:x,cancelToken:$,timeout:S,onDownloadProgress:_,onUploadProgress:P,responseType:T,headers:O,withCredentials:M="same-origin",fetchOptions:I,maxContentLength:k,maxBodyLength:E,maxRedirects:R}=k8(v);const D=me.isNumber(k)&&k>-1,F=me.isNumber(E)&&E>-1,N=Y=>me.hasOwnProp(v,Y)?v[Y]:void 0;let B=o||fetch;T=T?(T+"").toLowerCase():"text";let z=r2e([x,$&&$.toAbortSignal()],S),W=null;const j=z&&z.unsubscribe&&(()=>{z.unsubscribe()});let U,V=null;const q=()=>new He("Request body larger than maxBodyLength limit",He.ERR_BAD_REQUEST,v,W);try{let Y;const J=N("auth");if(J){const ne=me.getSafeProp(J,"username")||"",le=me.getSafeProp(J,"password")||"";Y={username:ne,password:le}}if(b2e(b)){const ne=new URL(b,Ln.origin);if(!Y&&(ne.username||ne.password)){const le=nI(ne.username),he=nI(ne.password);Y={username:le,password:he}}(ne.username||ne.password)&&(ne.username="",ne.password="",b=ne.href)}if(Y&&(O.delete("authorization"),O.set("Authorization","Basic "+btoa(v2e((Y.username||"")+":"+(Y.password||""))))),D&&typeof b=="string"&&b.startsWith("data:")&&g2e(b)>k)throw new He("maxContentLength size of "+k+" exceeded",He.ERR_BAD_RESPONSE,v,W);if(F&&y!=="get"&&y!=="head"){const ne=await g(w);if(typeof ne=="number"&&isFinite(ne)&&(U=ne,ne>E))throw q()}const Q=F&&(me.isReadableStream(w)||me.isStream(w)),G=(ne,le,he)=>JM(ne,tI,pe=>{if(F&&pe>E)throw V=q();le&&le(pe)},he);if(f&&y!=="get"&&y!=="head"&&(P||Q)){if(U=U??await m(O,w),U!==0||Q){let ne=new r(b,{method:"POST",body:w,duplex:"half"}),le;if(me.isFormData(w)&&(le=ne.headers.get("content-type"))&&O.setContentType(le),ne.body){const[he,pe]=P&&KM(U,jg(UM(P)))||[];w=G(ne.body,he,pe)}}}else if(Q&&!l&&u&&y!=="get"&&y!=="head")w=G(w);else if(Q&&l&&!f&&y!=="get"&&y!=="head")throw new He("Stream request bodies are not supported by the current fetch implementation",He.ERR_NOT_SUPPORT,v,W);me.isString(M)||(M=M?"include":"omit");const ee=l&&"credentials"in r.prototype;if(me.isFormData(w)){const ne=O.getContentType();ne&&/^multipart\/form-data/i.test(ne)&&!/boundary=/i.test(ne)&&O.delete("content-type")}O.set("User-Agent","axios/"+S$,!1);const X=I==null?I:Object.assign(Object.create(null),I);X&&(delete X.body,delete X.headers,delete X.method,delete X.signal,delete X.duplex,delete X.credentials);const K=Object.assign(Object.create(null),X,{signal:z,method:y.toUpperCase(),headers:y8(O.normalize()),body:w,duplex:"half",credentials:ee?M:void 0});l&&(me.forEach(m2e,(ne,le)=>{K[le]===void 0&&(K[le]=ne)}),K.signal===void 0&&(K.signal=null),K.body===void 0&&(K.body=null)),R===0&&(K.redirect="manual",X&&(X.redirect="manual")),W=l&&new r(b,K);let te=await(l?B(W,X):B(b,K));const ue=ti.from(te.headers);if(D){const ne=me.toFiniteNumber(ue.getContentLength());if(ne!=null&&ne>k)throw new He("maxContentLength size of "+k+" exceeded",He.ERR_BAD_RESPONSE,v,W)}const se=h&&(T==="stream"||T==="response");if(h&&te.body&&(_||D||se&&j)){const ne={};["status","statusText","headers"].forEach($e=>{ne[$e]=te[$e]});const le=me.toFiniteNumber(ue.getContentLength()),[he,pe]=_&&KM(le,jg(UM(_),!0))||[];let ge=0;const be=$e=>{if(D&&(ge=$e,ge>k))throw new He("maxContentLength size of "+k+" exceeded",He.ERR_BAD_RESPONSE,v,W);he&&he($e)};te=new a(JM(te.body,tI,be,()=>{pe&&pe(),j&&j()}),ne)}T=T||"text";let re=await p[me.findKey(p,T)||"text"](te,v);if(D&&!h&&!se){let ne;if(re!=null&&(typeof re.byteLength=="number"?ne=re.byteLength:typeof re.size=="number"?ne=re.size:typeof re=="string"&&(ne=typeof i=="function"?new i().encode(re).byteLength:re.length)),typeof ne=="number"&&ne>k)throw new He("maxContentLength size of "+k+" exceeded",He.ERR_BAD_RESPONSE,v,W)}return!se&&j&&j(),await new Promise((ne,le)=>{E8(ne,le,{data:re,headers:ti.from(te.headers),status:te.status,statusText:te.statusText,config:v,request:W})})}catch(Y){if(j&&j(),z&&z.aborted&&z.reason instanceof He){const J=z.reason;throw J.config=v,W&&(J.request=W),Y!==J&&Object.defineProperty(J,"cause",{__proto__:null,value:Y,writable:!0,enumerable:!1,configurable:!0}),J}if(V)throw W&&!V.request&&(V.request=W),V;if(Y instanceof He)throw W&&!Y.request&&(Y.request=W),Y;if(Y&&Y.name==="TypeError"&&/Load failed|fetch/i.test(Y.message)){const J=new He("Network Error",He.ERR_NETWORK,v,W,Y&&Y.response);throw Object.defineProperty(J,"cause",{__proto__:null,value:Y.cause||Y,writable:!0,enumerable:!1,configurable:!0}),J}throw He.from(Y,Y&&Y.code,v,W,Y&&Y.response)}}},x2e=new Map,R8=t=>{let e=t&&t.env||{};const{fetch:n,Request:i,Response:o}=e,r=[i,o,n];let a=r.length,s=a,l,c,u=x2e;for(;s--;)l=r[s],c=u.get(l),c===void 0&&u.set(l,c=s?new Map:y2e(e)),u=c;return c};R8();const C$={http:P_e,xhr:o2e,fetch:{get:R8}};me.forEach(C$,(t,e)=>{if(t){try{Object.defineProperty(t,"name",{__proto__:null,value:e})}catch{}Object.defineProperty(t,"adapterName",{__proto__:null,value:e})}});const oI=t=>`- ${t}`,w2e=t=>me.isFunction(t)||t===null||t===!1;function S2e(t,e){t=me.isArray(t)?t:[t];const{length:n}=t;let i,o;const r={};for(let a=0;a`adapter ${l} `+(c===!1?"is not supported by the environment":"is not available in the build"));let s=n?a.length>1?`since : `+a.map(oI).join(` @@ -2482,4 +2482,4 @@ ${s.toFixed(1)}%`;return String(c).split(` `);a=s===-1?"":r.slice(s+1)}if(!i.stack)i.stack=a;else if(a){const s=a.indexOf(` `),l=s===-1?-1:a.indexOf(` `,s+1),c=l===-1?"":a.slice(l+1);String(i.stack).endsWith(c)||(i.stack+=` -`+a)}}catch{}throw i}}_request(e,n){typeof e=="string"?(n=n||{},n.url=e):n=e||{},n=qs(this.defaults,n);const{transitional:i,paramsSerializer:o,headers:r}=n;i!==void 0&&gp.assertOptions(i,{silentJSONParsing:Un.transitional(Un.boolean),forcedJSONParsing:Un.transitional(Un.boolean),clarifyTimeoutError:Un.transitional(Un.boolean),legacyInterceptorReqResOrdering:Un.transitional(Un.boolean),advertiseZstdAcceptEncoding:Un.transitional(Un.boolean),validateStatusUndefinedResolves:Un.transitional(Un.boolean)},!1),o!=null&&(me.isFunction(o)?n.paramsSerializer={serialize:o}:gp.assertOptions(o,{encode:Un.function,serialize:Un.function},!0)),n.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?n.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:n.allowAbsoluteUrls=!0),gp.assertOptions(n,{baseUrl:Un.spelling("baseURL"),withXsrfToken:Un.spelling("withXSRFToken")},!0),n.method=(me.getSafeProp(n,"method")||me.getSafeProp(this.defaults,"method")||"get").toLowerCase();let a=r&&me.merge(r.common,r[n.method]);r&&me.forEach(O8.concat("common"),p=>{delete r[p]}),n.headers=ti.concat(a,r);const s=[];let l=!0;this.interceptors.request.forEach(function(g){if(typeof g.runWhen=="function"&&g.runWhen(n)===!1)return;l=l&&g.synchronous;const m=n.transitional||x$;m&&m.legacyInterceptorReqResOrdering?s.unshift(g.fulfilled,g.rejected):s.push(g.fulfilled,g.rejected)});const c=[];this.interceptors.response.forEach(function(g){c.push(g.fulfilled,g.rejected)});let u,d=0,f;if(!l){const p=[j0.bind(this),void 0];for(p.unshift(...s),p.push(...c),f=p.length,u=Promise.resolve(n);dj0.call(this,h)))}catch(v){u=Promise.reject(v)}break}}if(!u)try{u=j0.call(this,h)}catch(p){u=Promise.reject(p)}for(d=0,f=c.length;d{if(!i._listeners)return;let r=i._listeners.length;for(;r-- >0;)i._listeners[r](o);i._listeners=null}),this.promise.then=o=>{let r;const a=new Promise(s=>{i.subscribe(s),r=s}).then(o);return a.cancel=function(){i.unsubscribe(r)},a},e(function(r,a,s){i.reason||(i.reason=new Sf(r,a,s),n(i.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){if(this.reason){e(this.reason);return}this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;const n=this._listeners.indexOf(e);n!==-1&&this._listeners.splice(n,1)}toAbortSignal(){const e=new AbortController,n=i=>{e.abort(i)};return this.subscribe(n),e.signal.unsubscribe=()=>this.unsubscribe(n),e.signal}static source(){let e;return{token:new F8(function(o){e=o}),cancel:e}}};function A2e(t){return function(n){return t.apply(null,n)}}function _2e(t){return me.isObject(t)&&t.isAxiosError===!0}const mp={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,ContentTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,UnprocessableContent:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511,WebServerReturnsAnUnknownError:520,WebServerIsDown:521,ConnectionTimedOut:522,OriginIsUnreachable:523,TimeoutOccurred:524,SslHandshakeFailed:525,InvalidSslCertificate:526};Object.entries(mp).forEach(([t,e])=>{mp[e]===void 0&&(mp[e]=t)});function N8(t){const e=new Is(t),n=l8(Is.prototype.request,e);return me.extend(n,Is.prototype,e,{allOwnKeys:!0}),me.extend(n,e,null,{allOwnKeys:!0}),n.create=function(o){return N8(qs(t,o))},n}const bn=N8(wf);bn.Axios=Is;bn.CanceledError=Sf;bn.CancelToken=$2e;bn.isCancel=T8;bn.VERSION=S$;bn.toFormData=kv;bn.AxiosError=He;bn.Cancel=bn.CanceledError;bn.all=function(e){return Promise.all(e)};bn.spread=A2e;bn.isAxiosError=_2e;bn.mergeConfig=qs;bn.AxiosHeaders=ti;bn.formToJSON=t=>P8(me.isHTMLForm(t)?new FormData(t):t);bn.getAdapter=L8.getAdapter;bn.HttpStatusCode=mp;bn.default=bn;const{Axios:XPe,AxiosError:YPe,CanceledError:GPe,isCancel:KPe,CancelToken:UPe,VERSION:qPe,all:ZPe,Cancel:JPe,isAxiosError:QPe,spread:eOe,toFormData:tOe,AxiosHeaders:nOe,HttpStatusCode:iOe,formToJSON:oOe,getAdapter:rOe,mergeConfig:aOe,create:sOe}=bn;function P2e(t){return t.replace(/^\/+/,"")}const O2e={"file/create":"admin/files/create","admin-login":"admin/auth/login","users/show":"admin/auth/me","single-order":"admin/orders/list","single/order-sts/edit":"admin/orders/status","major/order/table":"admin/orders/wholesale/list","order-tamin":"admin/orders/tamin/list","order-sts/edit":"admin/orders/status","delete-order":"admin/orders/delete","get-custom-orders":"admin/pre-orders/list",customer:"admin/customers-omde/list",banker:"admin/customers-omde/banker/list",shopkeeper:"admin/customers-omde/shopkeeper/list","major/verify/table":"admin/customers-omde/non-verified/list","major/archive/table":"admin/customers-omde/archived/list",reagent:"admin/customers-omde/reagent/list","customer/toggle-active":"admin/customers-omde/toggle-active","customer/toggle-sts":"admin/customers-omde/toggle-sts","major/verify":"admin/customers-omde/verify","single-customer":"admin/customers-omde/single/list",single:"admin/customers-omde/single","customer/create":"admin/customers-omde/create","query/reagent":"admin/customers-omde/query/reagent","wallet/charge":"admin/customers-omde/wallet/charge","comment/table":"admin/comments/list","comment/sts":"admin/comments/sts",comment:"admin/comments",order:"admin/orders/create","order/type":"admin/orders/type-options","add/variant":"admin/products/variants/create","product/variant":"admin/products/by-ids",products:"admin/products/list","product/create":"admin/products/create","product/categories":"admin/products/categories","get/variants":"admin/products/variants/list","change/percent/count":"admin/products/change-percent/count","change/all":"admin/products/change-percent/apply","cash/table":"admin/documents/list",cash:"admin/documents","query/customer":"admin/documents/query/customer","wallet/table":"admin/documents/wallet/list","wallet/config":"admin/documents/wallet/config","wallet/birthday/config":"admin/documents/wallet/birthday/config","product/variant/promotion":"admin/promotions","major/promotion":"admin/promotions/list",autopromotion:"admin/promotions/auto",ignore:"admin/promotions/exclusions",users:"admin/users","users/list":"admin/users/list","const/__list__ut":"admin/users/types",const:"admin/users/types","roles/create":"admin/users/roles","branch/product":"admin/invoices","branch/product/table":"admin/invoices/list","branch/list":"admin/invoices/branch-list",branch:"admin/branches","branch/table":"admin/branches/list",workshop:"admin/workshops","user/list":"admin/branches/user-list",cities:"admin/misc/cities",sms:"admin/misc/sms","sms/table":"admin/misc/sms/list",notify:"admin/misc/notify","notify/table":"admin/misc/notify/list","notify/customer":"admin/misc/notify/customer",ddf:"admin/misc/newsletter/list","fashion/table":"admin/misc/newsletter/list","log/list/customer":"admin/misc/log/customers","dashboard/link":"admin/misc/dashboard-links","get-analytics":"admin/dashboard/omde","get-analytics-tak":"admin/dashboard/tak","dashboard/overview":"admin/dashboard/overview","brand/create":"admin/misc/brands","ciny/create":"admin/categories/collections","cities/list":"admin/cities/list","report/order-item":"admin/dashboard/report/order-item","report/product":"admin/dashboard/report/product","workshop/table":"admin/workshops/list",brand:"admin/products/brands",category:"admin/categories/list","category/":"admin/categories",ciny:"admin/categories/collections/list"},T2e=[{test:/^cities\/get-percent-aux\/(.+)$/,to:t=>`admin/misc/cities/percent-aux/${t[1]}`},{test:/^cities\/get-percent\/(.+)$/,to:t=>`admin/misc/cities/percent/${t[1]}`},{test:/^cities\/(.+)$/,to:t=>`admin/misc/cities/${t[1]}`},{test:/^const\/(.+)$/,to:t=>`admin/misc/const/${t[1]}`},{test:/^brand\/(.+)$/,to:t=>`admin/misc/brands/${t[1]}`},{test:/^log\/ago\/(.+)$/,to:t=>`admin/misc/log/customer/${t[1]}`},{test:/^notify\/read\/(.+)$/,to:t=>`admin/misc/notify/read/${t[1]}`},{test:/^notify\/(.+)$/,to:t=>`admin/misc/notify/${t[1]}`},{test:/^single\/(.+)$/,to:t=>`admin/customers-omde/${t[1]}`},{test:/^custom-order\/(.+)$/,to:t=>`admin/pre-orders/${t[1]}`},{test:/^get-custom-order\/(.+)$/,to:t=>`admin/pre-orders/${t[1]}`},{test:/^major\/archive\/(.+)$/,to:t=>`admin/customers-omde/archive/${t[1]}`},{test:/^major\/dashboard\/(.+)$/,to:t=>`admin/customers-omde/dashboard/${t[1]}`},{test:/^comment\/(.+)$/,to:t=>`admin/comments/${t[1]}`},{test:/^customer\/(.+)$/,to:t=>`admin/customers-omde/${t[1]}`},{test:/^delete\/product\/(.+)$/,to:t=>`admin/products/delete/${t[1]}`},{test:/^product\/show\/(.+)$/,to:t=>`admin/products/${t[1]}`},{test:/^product\/update\/(.+)$/,to:t=>`admin/products/${t[1]}`},{test:/^product\/(.+)\/variant$/,to:t=>`admin/products/${t[1]}/variants`},{test:/^category\/(.+)$/,to:t=>`admin/categories/${t[1]}`},{test:/^ciny\/(.+)$/,to:t=>`admin/categories/collections/${t[1]}`},{test:/^cash\/confirem\/(.+)$/,to:t=>`admin/documents/${t[1]}/confirm`},{test:/^cash\/(.+)$/,to:t=>`admin/documents/${t[1]}`},{test:/^product\/variant\/promotion\/(.+)$/,to:t=>`admin/promotions/${t[1]}`},{test:/^major\/promotion\/(.+)$/,to:t=>`admin/promotions/${t[1]}`},{test:/^ignore\/(.+)$/,to:t=>`admin/promotions/exclusions/${t[1]}`},{test:/^roles\/(\d+)\/(.+)$/,to:t=>`admin/users/types/${t[1]}/roles/${t[2]}`},{test:/^roles\/(.+)$/,to:t=>`admin/users/types/${t[1]}/roles`},{test:/^users\/(.+)$/,to:t=>`admin/users/${t[1]}`},{test:/^branch\/product\/(.+)$/,to:t=>`admin/invoices/${t[1]}`},{test:/^branch\/active\/(.+)$/,to:t=>`admin/branches/active/${t[1]}`},{test:/^workshop\/active\/(.+)$/,to:t=>`admin/workshops/active/${t[1]}`},{test:/^branch\/(.+)$/,to:t=>`admin/branches/${t[1]}`},{test:/^workshop\/(.+)$/,to:t=>`admin/workshops/${t[1]}`}];function E2e(t){if(/^https?:\/\//i.test(t))return t;const[e,n]=P2e(t).split("?"),i=O2e[e];if(i)return n?`${i}?${n}`:i;for(const{test:o,to:r}of T2e){const a=e.match(o);if(a){const s=r(a);return n?`${s}?${n}`:s}}return n?`${e}?${n}`:e}const M2e="/api/",B8={"Content-Type":"application/json",Accept:"application/json"},aI=localStorage.getItem($c);aI&&(B8.Authorization="Bearer "+aI);const Cf=bn.create({baseURL:M2e,headers:B8});Cf.interceptors.request.use(t=>{t.url&&(t.url=E2e(t.url));const e=localStorage.getItem($c);return e?t.headers.Authorization="Bearer "+e:delete t.headers.Authorization,t.data instanceof FormData&&delete t.headers["Content-Type"],localStorage.getItem("debug")==="1"&&(t.headers["X-Debug"]="1"),t},t=>Promise.reject(t));let sI=!1;Cf.interceptors.response.use(t=>{var n;const e=(n=t.data)==null?void 0:n.debug;return e&&localStorage.getItem("debug")==="1"&&(console.groupCollapsed(`[DEBUG] ${t.config.url}`),console.log(e),Array.isArray(e.by_kind)&&console.table(e.by_kind),console.groupEnd()),t},t=>{var e;return((e=t==null?void 0:t.response)==null?void 0:e.status)===401&&!sI&&(window.location.pathname.endsWith("/auth/login")||(sI=!0,localStorage.removeItem($c),window.location.assign("/auth/login"))),Promise.reject(t)});function I2e(t){const e=[...t],n=[];for(;e.length>1;)e.pop(),n.push(e.join("."));return n}function k2e(t){let e=[...t];return t.forEach(n=>{const i=n.split(".");i.length>1&&(e=[...new Set([...e,...I2e(i)])])}),e}const z8=Nk("users",{state:()=>({cityFilters:{},userInfo:void 0,roles:void 0,isSuperAdmin:!1}),getters:{hasPermission:t=>e=>{const n=t.roles;if(n)return n.includes(e)}},actions:{setCities(t){t.forEach(e=>{this.cityFilters[e.id]=e.title})},async getCities(){try{const t=await Cf.post("cities/list");this.setCities(t.data.rows)}catch(t){console.log(t)}},setUserInfo(t){this.userInfo=t},deleteUserInfo(){this.userInfo={}},getRoles(t){this.roles=k2e(t)},setSuperAdmin(t){this.isSuperAdmin=t===!0},deleteRoles(){this.roles=void 0,this.isSuperAdmin=!1}}}),$$=pAe({history:Y$e("/"),scrollBehavior(){return{left:0,top:0}},routes:[{path:"",component:()=>ze(()=>import("./Main-BMz1b_vd.js"),__vite__mapDeps([146,73,45,29,46,47,3,4,23,48,49,50,7,16,147])),children:gAe},{path:"",component:()=>ze(()=>import("./FullPage-C_F8b-zn.js"),[]),children:[...mAe,{path:"/auth/iam/callback",name:"iam-callback",component:()=>ze(()=>import("./IamCallback-DhJEaFs9.js"),__vite__mapDeps([148,7])),meta:{rule:"editor"}},{path:"/pages/error-404",name:"page-error-404",component:()=>ze(()=>import("./Error404-wBXgni5U.js"),__vite__mapDeps([149,150])),meta:{rule:"editor"}},{path:"/pages/error-500",name:"page-error-500",component:()=>ze(()=>import("./Error500-luonCp1d.js"),__vite__mapDeps([151,152])),meta:{rule:"editor"}},{path:"/pages/not-authorized",name:"page-not-authorized",component:()=>ze(()=>import("./NotAuthorized-BRSMpGLt.js"),__vite__mapDeps([153,154])),meta:{rule:"editor"}},{path:"/pages/maintenance",name:"page-maintenance",component:()=>ze(()=>import("./Maintenance-i-vsIiRb.js"),__vite__mapDeps([155,156])),meta:{rule:"editor"}}]},{path:"/:pathMatch(.*)*",redirect:"/pages/error-404"}]});$$.afterEach(()=>{const t=document.getElementById("loading-bg");t&&(t.style.display="none")});const D2e=["/auth/login","/auth/forgot-password","/auth/register","/reg","/auth/iam/callback"];async function R2e(){const t=z8();if(t.roles)return t.roles;try{const{data:e}=await Cf.get("users/show");t.getRoles(e.permission),t.setSuperAdmin(e.is_super_admin),delete e.permission,delete e.ut,e.api_token&&localStorage.setItem($c,e.api_token),localStorage.setItem(UN,JSON.stringify(e))}catch(e){console.log(e)}return t.roles}let ww=!1;function L2e(){return sessionStorage.getItem("gb_admin_iam_sso_skip")==="1"?(sessionStorage.removeItem("gb_admin_iam_sso_skip"),ww=!0,!0):ww}$$.beforeEach(async t=>{var n;if(!localStorage.getItem($c)&&t.path!=="/auth/iam/callback"&&!L2e()){ww=!0,sessionStorage.removeItem("gb_admin_iam_sso_checked");try{const{data:i}=await Cf.get("admin/auth/sso/start",{params:{redirect_uri:s$e("auth/iam/callback")}});if(i!=null&&i.enabled&&i.authorize_url)return window.location.assign(i.authorize_url),!1}catch{}}if(D2e.indexOf(t.path)>-1)return!0;if(localStorage.getItem($c)){const i=await R2e();return i?(n=t.meta)!=null&&n.superAdminOnly&&!z8().isSuperAdmin?{name:"page-not-authorized"}:i&&t.meta&&t.meta.role&&!i.includes(t.meta.role)?t.name==="dashboard-ecommerce"||t.name==="dashboard-analytics"?{name:"my-data"}:{name:"page-not-authorized"}:!0:{path:"/auth/login"}}return{path:"/auth/login"}});const $f=kk(l$e);$f.use(wH());$f.use(U0e);$f.use($$);$f.use(Hg);$f.mount("#app");export{ai as $,$w as A,Bm as B,sv as C,xv as D,jC as E,Ge as F,Hs as G,gA as H,ut as I,zm as J,si as K,Wo as L,On as M,at as N,yi as O,FS as P,hf as Q,wC as R,cv as S,ga as T,Obe as U,Hm as V,Ic as W,BPe as X,Nk as Y,rl as Z,r$e as _,cc as a,Wm as a0,s$e as a1,$c as a2,UN as a3,bv as a4,Na as a5,Ba as a6,KC as a7,H2e as a8,sr as a9,Tt as aa,Rs as ab,PD as ac,A as ad,z9 as ae,k9 as af,B9 as ag,M9 as ah,TD as ai,Yr as aj,z2e as ak,qS as al,W2e as am,xC as an,ns as b,C as c,oe as d,V$ as e,Tn as f,B2e as g,Lt as h,xk as i,ZCe as j,HPe as k,zPe as l,ae as m,ye as n,zi as o,Yl as p,Xd as q,Iu as r,L as s,V0 as t,z8 as u,QCe as v,ss as w,qe as x,Cf as y,$t as z}; +`+a)}}catch{}throw i}}_request(e,n){typeof e=="string"?(n=n||{},n.url=e):n=e||{},n=qs(this.defaults,n);const{transitional:i,paramsSerializer:o,headers:r}=n;i!==void 0&&gp.assertOptions(i,{silentJSONParsing:Un.transitional(Un.boolean),forcedJSONParsing:Un.transitional(Un.boolean),clarifyTimeoutError:Un.transitional(Un.boolean),legacyInterceptorReqResOrdering:Un.transitional(Un.boolean),advertiseZstdAcceptEncoding:Un.transitional(Un.boolean),validateStatusUndefinedResolves:Un.transitional(Un.boolean)},!1),o!=null&&(me.isFunction(o)?n.paramsSerializer={serialize:o}:gp.assertOptions(o,{encode:Un.function,serialize:Un.function},!0)),n.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?n.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:n.allowAbsoluteUrls=!0),gp.assertOptions(n,{baseUrl:Un.spelling("baseURL"),withXsrfToken:Un.spelling("withXSRFToken")},!0),n.method=(me.getSafeProp(n,"method")||me.getSafeProp(this.defaults,"method")||"get").toLowerCase();let a=r&&me.merge(r.common,r[n.method]);r&&me.forEach(O8.concat("common"),p=>{delete r[p]}),n.headers=ti.concat(a,r);const s=[];let l=!0;this.interceptors.request.forEach(function(g){if(typeof g.runWhen=="function"&&g.runWhen(n)===!1)return;l=l&&g.synchronous;const m=n.transitional||x$;m&&m.legacyInterceptorReqResOrdering?s.unshift(g.fulfilled,g.rejected):s.push(g.fulfilled,g.rejected)});const c=[];this.interceptors.response.forEach(function(g){c.push(g.fulfilled,g.rejected)});let u,d=0,f;if(!l){const p=[j0.bind(this),void 0];for(p.unshift(...s),p.push(...c),f=p.length,u=Promise.resolve(n);dj0.call(this,h)))}catch(v){u=Promise.reject(v)}break}}if(!u)try{u=j0.call(this,h)}catch(p){u=Promise.reject(p)}for(d=0,f=c.length;d{if(!i._listeners)return;let r=i._listeners.length;for(;r-- >0;)i._listeners[r](o);i._listeners=null}),this.promise.then=o=>{let r;const a=new Promise(s=>{i.subscribe(s),r=s}).then(o);return a.cancel=function(){i.unsubscribe(r)},a},e(function(r,a,s){i.reason||(i.reason=new Sf(r,a,s),n(i.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){if(this.reason){e(this.reason);return}this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;const n=this._listeners.indexOf(e);n!==-1&&this._listeners.splice(n,1)}toAbortSignal(){const e=new AbortController,n=i=>{e.abort(i)};return this.subscribe(n),e.signal.unsubscribe=()=>this.unsubscribe(n),e.signal}static source(){let e;return{token:new F8(function(o){e=o}),cancel:e}}};function A2e(t){return function(n){return t.apply(null,n)}}function _2e(t){return me.isObject(t)&&t.isAxiosError===!0}const mp={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,ContentTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,UnprocessableContent:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511,WebServerReturnsAnUnknownError:520,WebServerIsDown:521,ConnectionTimedOut:522,OriginIsUnreachable:523,TimeoutOccurred:524,SslHandshakeFailed:525,InvalidSslCertificate:526};Object.entries(mp).forEach(([t,e])=>{mp[e]===void 0&&(mp[e]=t)});function N8(t){const e=new Is(t),n=l8(Is.prototype.request,e);return me.extend(n,Is.prototype,e,{allOwnKeys:!0}),me.extend(n,e,null,{allOwnKeys:!0}),n.create=function(o){return N8(qs(t,o))},n}const bn=N8(wf);bn.Axios=Is;bn.CanceledError=Sf;bn.CancelToken=$2e;bn.isCancel=T8;bn.VERSION=S$;bn.toFormData=kv;bn.AxiosError=He;bn.Cancel=bn.CanceledError;bn.all=function(e){return Promise.all(e)};bn.spread=A2e;bn.isAxiosError=_2e;bn.mergeConfig=qs;bn.AxiosHeaders=ti;bn.formToJSON=t=>P8(me.isHTMLForm(t)?new FormData(t):t);bn.getAdapter=L8.getAdapter;bn.HttpStatusCode=mp;bn.default=bn;const{Axios:XPe,AxiosError:YPe,CanceledError:GPe,isCancel:KPe,CancelToken:UPe,VERSION:qPe,all:ZPe,Cancel:JPe,isAxiosError:QPe,spread:eOe,toFormData:tOe,AxiosHeaders:nOe,HttpStatusCode:iOe,formToJSON:oOe,getAdapter:rOe,mergeConfig:aOe,create:sOe}=bn;function P2e(t){return t.replace(/^\/+/,"")}const O2e={"file/create":"admin/files/create","admin-login":"admin/auth/login","users/show":"admin/auth/me","single-order":"admin/orders/list","single/order-sts/edit":"admin/orders/status","major/order/table":"admin/orders/wholesale/list","order-tamin":"admin/orders/tamin/list","order-sts/edit":"admin/orders/status","delete-order":"admin/orders/delete","get-custom-orders":"admin/pre-orders/list",customer:"admin/customers-omde/list",banker:"admin/customers-omde/banker/list",shopkeeper:"admin/customers-omde/shopkeeper/list","major/verify/table":"admin/customers-omde/non-verified/list","major/archive/table":"admin/customers-omde/archived/list",reagent:"admin/customers-omde/reagent/list","customer/toggle-active":"admin/customers-omde/toggle-active","customer/toggle-sts":"admin/customers-omde/toggle-sts","major/verify":"admin/customers-omde/verify","single-customer":"admin/customers-omde/single/list",single:"admin/customers-omde/single","customer/create":"admin/customers-omde/create","query/reagent":"admin/customers-omde/query/reagent","wallet/charge":"admin/customers-omde/wallet/charge","comment/table":"admin/comments/list","comment/sts":"admin/comments/sts",comment:"admin/comments",order:"admin/orders/create","order/type":"admin/orders/type-options","add/variant":"admin/products/variants/create","product/variant":"admin/products/by-ids",products:"admin/products/list","product/create":"admin/products/create","product/categories":"admin/products/categories","get/variants":"admin/products/variants/list","change/percent/count":"admin/products/change-percent/count","change/all":"admin/products/change-percent/apply","cash/table":"admin/documents/list",cash:"admin/documents","query/customer":"admin/documents/query/customer","wallet/table":"admin/documents/wallet/list","wallet/config":"admin/documents/wallet/config","wallet/birthday/config":"admin/documents/wallet/birthday/config","product/variant/promotion":"admin/promotions","major/promotion":"admin/promotions/list",autopromotion:"admin/promotions/auto",ignore:"admin/promotions/exclusions",users:"admin/users","users/list":"admin/users/list","const/__list__ut":"admin/users/types",const:"admin/users/types","roles/create":"admin/users/roles","branch/product":"admin/invoices","branch/product/table":"admin/invoices/list","branch/list":"admin/invoices/branch-list",branch:"admin/branches","branch/table":"admin/branches/list",workshop:"admin/workshops","user/list":"admin/branches/user-list",cities:"admin/misc/cities",sms:"admin/misc/sms","sms/table":"admin/misc/sms/list",notify:"admin/misc/notify","notify/table":"admin/misc/notify/list","notify/customer":"admin/misc/notify/customer",ddf:"admin/misc/newsletter/list","fashion/table":"admin/misc/newsletter/list","log/list/customer":"admin/misc/log/customers","dashboard/link":"admin/misc/dashboard-links","get-analytics":"admin/dashboard/omde","get-analytics-tak":"admin/dashboard/tak","dashboard/overview":"admin/dashboard/overview","brand/create":"admin/misc/brands","ciny/create":"admin/categories/collections","cities/list":"admin/cities/list","report/order-item":"admin/dashboard/report/order-item","report/product":"admin/dashboard/report/product","workshop/table":"admin/workshops/list",brand:"admin/products/brands",category:"admin/categories/list","category/":"admin/categories",ciny:"admin/categories/collections/list"},T2e=[{test:/^cities\/get-percent-aux\/(.+)$/,to:t=>`admin/misc/cities/percent-aux/${t[1]}`},{test:/^cities\/get-percent\/(.+)$/,to:t=>`admin/misc/cities/percent/${t[1]}`},{test:/^cities\/(.+)$/,to:t=>`admin/misc/cities/${t[1]}`},{test:/^const\/(.+)$/,to:t=>`admin/misc/const/${t[1]}`},{test:/^brand\/(.+)$/,to:t=>`admin/misc/brands/${t[1]}`},{test:/^log\/ago\/(.+)$/,to:t=>`admin/misc/log/customer/${t[1]}`},{test:/^notify\/read\/(.+)$/,to:t=>`admin/misc/notify/read/${t[1]}`},{test:/^notify\/(.+)$/,to:t=>`admin/misc/notify/${t[1]}`},{test:/^single\/(.+)$/,to:t=>`admin/customers-omde/${t[1]}`},{test:/^custom-order\/(.+)$/,to:t=>`admin/pre-orders/${t[1]}`},{test:/^get-custom-order\/(.+)$/,to:t=>`admin/pre-orders/${t[1]}`},{test:/^major\/archive\/(.+)$/,to:t=>`admin/customers-omde/archive/${t[1]}`},{test:/^major\/dashboard\/(.+)$/,to:t=>`admin/customers-omde/dashboard/${t[1]}`},{test:/^comment\/(.+)$/,to:t=>`admin/comments/${t[1]}`},{test:/^customer\/(.+)$/,to:t=>`admin/customers-omde/${t[1]}`},{test:/^delete\/product\/(.+)$/,to:t=>`admin/products/delete/${t[1]}`},{test:/^product\/show\/(.+)$/,to:t=>`admin/products/${t[1]}`},{test:/^product\/update\/(.+)$/,to:t=>`admin/products/${t[1]}`},{test:/^product\/(.+)\/variant$/,to:t=>`admin/products/${t[1]}/variants`},{test:/^category\/(.+)$/,to:t=>`admin/categories/${t[1]}`},{test:/^ciny\/(.+)$/,to:t=>`admin/categories/collections/${t[1]}`},{test:/^cash\/confirem\/(.+)$/,to:t=>`admin/documents/${t[1]}/confirm`},{test:/^cash\/(.+)$/,to:t=>`admin/documents/${t[1]}`},{test:/^product\/variant\/promotion\/(.+)$/,to:t=>`admin/promotions/${t[1]}`},{test:/^major\/promotion\/(.+)$/,to:t=>`admin/promotions/${t[1]}`},{test:/^ignore\/(.+)$/,to:t=>`admin/promotions/exclusions/${t[1]}`},{test:/^roles\/(\d+)\/(.+)$/,to:t=>`admin/users/types/${t[1]}/roles/${t[2]}`},{test:/^roles\/(.+)$/,to:t=>`admin/users/types/${t[1]}/roles`},{test:/^users\/(.+)$/,to:t=>`admin/users/${t[1]}`},{test:/^branch\/product\/(.+)$/,to:t=>`admin/invoices/${t[1]}`},{test:/^branch\/active\/(.+)$/,to:t=>`admin/branches/active/${t[1]}`},{test:/^workshop\/active\/(.+)$/,to:t=>`admin/workshops/active/${t[1]}`},{test:/^branch\/(.+)$/,to:t=>`admin/branches/${t[1]}`},{test:/^workshop\/(.+)$/,to:t=>`admin/workshops/${t[1]}`}];function E2e(t){if(/^https?:\/\//i.test(t))return t;const[e,n]=P2e(t).split("?"),i=O2e[e];if(i)return n?`${i}?${n}`:i;for(const{test:o,to:r}of T2e){const a=e.match(o);if(a){const s=r(a);return n?`${s}?${n}`:s}}return n?`${e}?${n}`:e}const M2e="/api/",B8={"Content-Type":"application/json",Accept:"application/json"},aI=localStorage.getItem($c);aI&&(B8.Authorization="Bearer "+aI);const Cf=bn.create({baseURL:M2e,headers:B8});Cf.interceptors.request.use(t=>{t.url&&(t.url=E2e(t.url));const e=localStorage.getItem($c);return e?t.headers.Authorization="Bearer "+e:delete t.headers.Authorization,t.data instanceof FormData&&delete t.headers["Content-Type"],localStorage.getItem("debug")==="1"&&(t.headers["X-Debug"]="1"),t},t=>Promise.reject(t));let sI=!1;Cf.interceptors.response.use(t=>{var n;const e=(n=t.data)==null?void 0:n.debug;return e&&localStorage.getItem("debug")==="1"&&(console.groupCollapsed(`[DEBUG] ${t.config.url}`),console.log(e),Array.isArray(e.by_kind)&&console.table(e.by_kind),console.groupEnd()),t},t=>{var e;return((e=t==null?void 0:t.response)==null?void 0:e.status)===401&&!sI&&(window.location.pathname.endsWith("/auth/login")||(sI=!0,localStorage.removeItem($c),window.location.assign("/auth/login"))),Promise.reject(t)});function I2e(t){const e=[...t],n=[];for(;e.length>1;)e.pop(),n.push(e.join("."));return n}function k2e(t){let e=[...t];return t.forEach(n=>{const i=n.split(".");i.length>1&&(e=[...new Set([...e,...I2e(i)])])}),e}const z8=Nk("users",{state:()=>({cityFilters:{},userInfo:void 0,roles:void 0,isSuperAdmin:!1}),getters:{hasPermission:t=>e=>{const n=t.roles;if(n)return n.includes(e)}},actions:{setCities(t){t.forEach(e=>{this.cityFilters[e.id]=e.title})},async getCities(){try{const t=await Cf.post("cities/list");this.setCities(t.data.rows)}catch(t){console.log(t)}},setUserInfo(t){this.userInfo=t},deleteUserInfo(){this.userInfo={}},getRoles(t){this.roles=k2e(t)},setSuperAdmin(t){this.isSuperAdmin=t===!0},deleteRoles(){this.roles=void 0,this.isSuperAdmin=!1}}}),$$=pAe({history:Y$e("/"),scrollBehavior(){return{left:0,top:0}},routes:[{path:"",component:()=>ze(()=>import("./Main-Dy3ytVrQ.js"),__vite__mapDeps([148,75,47,31,48,49,3,4,25,50,51,52,7,16,149])),children:gAe},{path:"",component:()=>ze(()=>import("./FullPage-DAalmhOT.js"),[]),children:[...mAe,{path:"/auth/iam/callback",name:"iam-callback",component:()=>ze(()=>import("./IamCallback-C9ayzLUP.js"),__vite__mapDeps([150,7])),meta:{rule:"editor"}},{path:"/pages/error-404",name:"page-error-404",component:()=>ze(()=>import("./Error404-Cs6ivAEK.js"),__vite__mapDeps([151,152])),meta:{rule:"editor"}},{path:"/pages/error-500",name:"page-error-500",component:()=>ze(()=>import("./Error500-Dg828I-c.js"),__vite__mapDeps([153,154])),meta:{rule:"editor"}},{path:"/pages/not-authorized",name:"page-not-authorized",component:()=>ze(()=>import("./NotAuthorized-D1EQlimu.js"),__vite__mapDeps([155,156])),meta:{rule:"editor"}},{path:"/pages/maintenance",name:"page-maintenance",component:()=>ze(()=>import("./Maintenance-BZj1Y9_T.js"),__vite__mapDeps([157,158])),meta:{rule:"editor"}}]},{path:"/:pathMatch(.*)*",redirect:"/pages/error-404"}]});$$.afterEach(()=>{const t=document.getElementById("loading-bg");t&&(t.style.display="none")});const D2e=["/auth/login","/auth/forgot-password","/auth/register","/reg","/auth/iam/callback"];async function R2e(){const t=z8();if(t.roles)return t.roles;try{const{data:e}=await Cf.get("users/show");t.getRoles(e.permission),t.setSuperAdmin(e.is_super_admin),delete e.permission,delete e.ut,e.api_token&&localStorage.setItem($c,e.api_token),localStorage.setItem(UN,JSON.stringify(e))}catch(e){console.log(e)}return t.roles}let ww=!1;function L2e(){return sessionStorage.getItem("gb_admin_iam_sso_skip")==="1"?(sessionStorage.removeItem("gb_admin_iam_sso_skip"),ww=!0,!0):ww}$$.beforeEach(async t=>{var n;if(!localStorage.getItem($c)&&t.path!=="/auth/iam/callback"&&!L2e()){ww=!0,sessionStorage.removeItem("gb_admin_iam_sso_checked");try{const{data:i}=await Cf.get("admin/auth/sso/start",{params:{redirect_uri:s$e("auth/iam/callback")}});if(i!=null&&i.enabled&&i.authorize_url)return window.location.assign(i.authorize_url),!1}catch{}}if(D2e.indexOf(t.path)>-1)return!0;if(localStorage.getItem($c)){const i=await R2e();return i?(n=t.meta)!=null&&n.superAdminOnly&&!z8().isSuperAdmin?{name:"page-not-authorized"}:i&&t.meta&&t.meta.role&&!i.includes(t.meta.role)?t.name==="dashboard-ecommerce"||t.name==="dashboard-analytics"?{name:"my-data"}:{name:"page-not-authorized"}:!0:{path:"/auth/login"}}return{path:"/auth/login"}});const $f=kk(l$e);$f.use(wH());$f.use(U0e);$f.use($$);$f.use(Hg);$f.mount("#app");export{ai as $,$w as A,Bm as B,sv as C,xv as D,jC as E,Ge as F,Hs as G,gA as H,ut as I,zm as J,si as K,Wo as L,On as M,at as N,yi as O,FS as P,hf as Q,wC as R,cv as S,ga as T,Obe as U,Hm as V,Ic as W,BPe as X,Nk as Y,rl as Z,r$e as _,cc as a,Wm as a0,s$e as a1,$c as a2,UN as a3,bv as a4,Na as a5,Ba as a6,KC as a7,H2e as a8,sr as a9,Tt as aa,Rs as ab,PD as ac,A as ad,z9 as ae,k9 as af,B9 as ag,M9 as ah,TD as ai,Yr as aj,z2e as ak,qS as al,W2e as am,xC as an,ns as b,C as c,oe as d,V$ as e,Tn as f,B2e as g,Lt as h,xk as i,ZCe as j,HPe as k,zPe as l,ae as m,ye as n,zi as o,Yl as p,Xd as q,Iu as r,L as s,V0 as t,z8 as u,QCe as v,ss as w,qe as x,Cf as y,$t as z}; diff --git a/apps/admin-panel/dist/assets/index-D7fgJeq3.js b/apps/admin-panel/dist/assets/index-D7fgJeq3.js new file mode 100644 index 0000000..3e12ec1 --- /dev/null +++ b/apps/admin-panel/dist/assets/index-D7fgJeq3.js @@ -0,0 +1 @@ +import{o as V}from"./select--BgT6D7O.js";import{b as T}from"./filters-Cvt98RIq.js";import{d as z,x as F,y as m,a as p,w as t,m as c,r as o,o as r,c as n,p as S,b as f,e as D,f as v,t as u,F as g,h as E,i as L}from"./index-CuIWfDbM.js";import"./index-CPTngTRs.js";const M={class:"grid-2"},G=z({__name:"index",setup(O){const i=c(!1),_=c([]),l=c(void 0),d=c([]),x=[{title:"عملیات",dataIndex:"action"},{title:"جزئیات",dataIndex:"detail"},{title:"تاریخ",dataIndex:"caj"}];function y(e,s){return V(s).includes(e)}async function b(){if(!l.value){d.value=[];return}try{i.value=!0;const{data:e}=await m.get(`log/ago/${l.value}`);d.value=e}catch(e){console.log(e)}finally{i.value=!1}}return F(async()=>{try{const{data:e}=await m.get("log/list/customer");_.value=e}catch(e){console.log(e)}}),(e,s)=>{const h=o("a-select-option"),w=o("a-select"),k=o("a-form-item"),C=o("a-form"),j=o("a-table"),B=o("a-card"),I=o("a-spin");return r(),p(I,{spinning:i.value},{default:t(()=>[n(B,{title:"آمار",class:"page-card table-scroll"},{default:t(()=>[n(C,{layout:"vertical"},{default:t(()=>[S("div",M,[n(k,{label:"مشتری"},{default:t(()=>[n(w,{value:l.value,"onUpdate:value":s[0]||(s[0]=a=>l.value=a),"show-search":"","allow-clear":"",placeholder:"انتخاب کنید","filter-option":y,onChange:b},{default:t(()=>[(r(!0),f(g,null,D(_.value,a=>(r(),p(h,{key:a.id,value:a.id},{default:t(()=>[v(u(a.name)+" - "+u(a.mobile),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1})])]),_:1}),n(j,{"data-source":d.value,columns:x,pagination:{pageSize:20},size:"small","row-key":"id"},{bodyCell:t(({column:a,record:N})=>[a.dataIndex==="caj"?(r(),f(g,{key:0},[v(u(E(T)(N.caj)),1)],64)):L("",!0)]),_:1},8,["data-source"])]),_:1})]),_:1},8,["spinning"])}}});export{G as default}; diff --git a/apps/admin-panel/dist/assets/list-BdzfL2bH.js b/apps/admin-panel/dist/assets/list-BdzfL2bH.js deleted file mode 100644 index e869213..0000000 --- a/apps/admin-panel/dist/assets/list-BdzfL2bH.js +++ /dev/null @@ -1 +0,0 @@ -import{a as X,b as t,X as M}from"./model-B4TWAN58.js";import{_ as j}from"./ListPageHeader.vue_vue_type_script_setup_true_lang-BDf2BWcO.js";import{_ as A}from"./addFinDoc.vue_vue_type_script_setup_true_lang-DVg9XEpR.js";import{d as I,u as P,b as U,c as l,w as o,m as g,r as f,o as i,h as p,a as s,W as G,p as y,i as k,$ as H,E as L,D as W,f as b,y as q,G as T}from"./index-C9T3Vski.js";import{u as z}from"./useDeleteHandler-D_sYZzLs.js";import"./filters-D6Nzbpog.js";import"./index-m6pCHaEa.js";import"./SettingOutlined-BizkfqvN.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-Du4lPDHl.js";function F(){const e=new X("admin/documents/list","لیست اسناد");return e.add(new t("id","شماره سفارش").filterNumber()),e.add(new t("type_str","نوع سند").filterText()),e.add(new t("price","پول").filterDate().noSort()),e.add(new t("value","وزن نهایی (گرم)").filterDate().noSort()),e.add(new t("to","به").filterText().hidden()),e.add(new t("customer.name","نام و نام خانوادگی مشتری").filterText()),e.add(new t("note","توضیحات").filterText()),e.add(new t("ayar","عیار").filterNumber().noSort()),e.add(new t("lab","آزمایشگاه").filterText().noSort()),e.add(new t("recive_date","تاریخ دریافت").filterDate().noSort()),e.add(new t("account_name","نام حساب").filterText().hidden()),e.add(new t("bank_name","بانک").filterText().hidden()),e.add(new t("caj","تاریخ ثبت").filterDate().noSort()),e.add(new t("uaj","بروزرسانی").hidden().filterDate().noSort()),e.add(new t("confirmed","وضعیت تایید سند").renderSlot("confirmed").noSort().filterSelect({0:"تایید نشده",1:"تایید شده"})),e.add(new t("price_per_gram","مظنه").hidden().filterText().noSort()),e.add(new t("original_value","وزن طلای داده شده").hidden().filterText().noSort()),e.add(new t("ang","انگ").hidden().filterText().noSort()),e.add(new t("opt","عملیات").noSort().renderSlot("opt")),e}const J={id:"page-user-list"},ae=I({__name:"list",setup(e){const $=P(),_=a=>!!$.hasPermission(a),h=F(),x=g(null),S=g(!1),v=g(!1),w=g(void 0);function D(){w.value=void 0,v.value=!0}function B(a){w.value=a,v.value=!0}async function C(a){var n,m,u;try{S.value=!0,await q.post(`cash/confirem/${a.id}`),T.success("تغییرات با موفقیت ثبت شد"),(n=x.value)==null||n.fetch()}catch(d){console.log(d),T.error(((u=(m=d==null?void 0:d.response)==null?void 0:m.data)==null?void 0:u.message)??"خطا در ثبت تغییرات")}finally{S.value=!1}}const{remove:N}=z({onSuccess:()=>{var a;return(a=x.value)==null?void 0:a.fetch()},successMessage:"سند حذف شد",fallbackErrorMessage:"خطا در حذف سند"});function E(a){return N(`cash/${a.id}`)}return(a,n)=>{const m=f("a-tag"),u=f("a-popconfirm"),d=f("a-tooltip"),O=f("a-card"),V=f("a-spin");return i(),U("div",J,[l(V,{spinning:S.value},{default:o(()=>[l(O,{title:"لیست اسناد مالی",class:"page-card"},{default:o(()=>[l(M,{ref_key:"tbl",ref:x,model:p(h),"mobile-cards":""},{add:o(()=>[l(j,{rid:"document.create","add-label":"ثبت سند مالی",onAdd:D})]),confirmed:o(({text:r})=>[r===1?(i(),s(m,{key:0,color:"green"},{default:o(()=>[...n[2]||(n[2]=[b("تایید شده",-1)])]),_:1})):(i(),s(m,{key:1},{default:o(()=>[...n[3]||(n[3]=[b("تایید نشده",-1)])]),_:1}))]),opt:o(({record:r})=>[!r.confirmed&&_("document.list.confirm")?(i(),s(d,{key:0,title:"تایید سند"},{default:o(()=>[l(u,{placement:"top","ok-text":"بله","cancel-text":"خیر",onConfirm:c=>C(r)},{title:o(()=>[...n[4]||(n[4]=[y("p",null,"آیا سند تایید شود ؟",-1)])]),default:o(()=>[l(p(G),{class:"cursor-pointer mx-1 text-success"})]),_:1},8,["onConfirm"])]),_:2},1024)):k("",!0),r.confirmed&&_("document.list.deny")?(i(),s(d,{key:1,title:"رد کردن سند"},{default:o(()=>[l(u,{placement:"top","ok-text":"بله","cancel-text":"خیر",onConfirm:c=>C(r)},{title:o(()=>[...n[5]||(n[5]=[y("p",null,"آیا سند رد شود ؟",-1)])]),default:o(()=>[l(p(H),{class:"cursor-pointer mx-1 text-danger"})]),_:1},8,["onConfirm"])]),_:2},1024)):k("",!0),_("document.list.edit")?(i(),s(d,{key:2,title:"ویرایش"},{default:o(()=>[l(p(L),{class:"cursor-pointer mx-1 text-primary",onClick:c=>B(r.id)},null,8,["onClick"])]),_:2},1024)):k("",!0),_("document.list.remove")?(i(),s(d,{key:3,title:"حذف"},{default:o(()=>[l(u,{placement:"top","ok-text":"بله","cancel-text":"خیر",onConfirm:c=>E(r)},{title:o(()=>[...n[6]||(n[6]=[y("p",null,"آیا مطمئن به حذف سند مورد نظر هستید ؟",-1)])]),default:o(()=>[l(p(W),{class:"cursor-pointer mx-1 text-danger"})]),_:1},8,["onConfirm"])]),_:2},1024)):k("",!0)]),_:1},8,["model"]),(i(),s(A,{key:w.value??"new",open:v.value,id:w.value,"onUpdate:open":n[0]||(n[0]=r=>v.value=r),onSuccess:n[1]||(n[1]=r=>{var c;return(c=x.value)==null?void 0:c.fetch()})},null,8,["open","id"]))]),_:1})]),_:1},8,["spinning"])])}}});export{ae as default}; diff --git a/apps/admin-panel/dist/assets/list-DfwcQJBp.js b/apps/admin-panel/dist/assets/list-DfwcQJBp.js new file mode 100644 index 0000000..62a3df6 --- /dev/null +++ b/apps/admin-panel/dist/assets/list-DfwcQJBp.js @@ -0,0 +1 @@ +import{a as X,b as t,X as M}from"./model-D_9omyEY.js";import{_ as j}from"./ListPageHeader.vue_vue_type_script_setup_true_lang-ReVXBl8h.js";import{_ as A}from"./addFinDoc.vue_vue_type_script_setup_true_lang-DkT33edE.js";import{d as I,u as P,b as U,c as l,w as o,m as g,r as f,o as d,h as p,a as s,W as G,p as y,i as k,$ as H,E as L,D as W,f as b,y as q,G as T}from"./index-CuIWfDbM.js";import{u as z}from"./useDeleteHandler-c5WtaKjp.js";import"./filters-Cvt98RIq.js";import"./index-CPTngTRs.js";import"./SettingOutlined-BehgjsnT.js";import"./select--BgT6D7O.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-DXuLuiBZ.js";function F(){const e=new X("admin/documents/list","لیست اسناد");return e.add(new t("id","شماره سفارش").filterNumber()),e.add(new t("type_str","نوع سند").filterText()),e.add(new t("price","پول").filterDate().noSort()),e.add(new t("value","وزن نهایی (گرم)").filterDate().noSort()),e.add(new t("to","به").filterText().hidden()),e.add(new t("customer.name","نام و نام خانوادگی مشتری").filterText()),e.add(new t("note","توضیحات").filterText()),e.add(new t("ayar","عیار").filterNumber().noSort()),e.add(new t("lab","آزمایشگاه").filterText().noSort()),e.add(new t("recive_date","تاریخ دریافت").filterDate().noSort()),e.add(new t("account_name","نام حساب").filterText().hidden()),e.add(new t("bank_name","بانک").filterText().hidden()),e.add(new t("caj","تاریخ ثبت").filterDate().noSort()),e.add(new t("uaj","بروزرسانی").hidden().filterDate().noSort()),e.add(new t("confirmed","وضعیت تایید سند").renderSlot("confirmed").noSort().filterSelect({0:"تایید نشده",1:"تایید شده"})),e.add(new t("price_per_gram","مظنه").hidden().filterText().noSort()),e.add(new t("original_value","وزن طلای داده شده").hidden().filterText().noSort()),e.add(new t("ang","انگ").hidden().filterText().noSort()),e.add(new t("opt","عملیات").noSort().renderSlot("opt")),e}const J={id:"page-user-list"},re=I({__name:"list",setup(e){const $=P(),_=a=>!!$.hasPermission(a),h=F(),x=g(null),S=g(!1),v=g(!1),w=g(void 0);function D(){w.value=void 0,v.value=!0}function B(a){w.value=a,v.value=!0}async function C(a){var n,m,u;try{S.value=!0,await q.post(`cash/confirem/${a.id}`),T.success("تغییرات با موفقیت ثبت شد"),(n=x.value)==null||n.fetch()}catch(i){console.log(i),T.error(((u=(m=i==null?void 0:i.response)==null?void 0:m.data)==null?void 0:u.message)??"خطا در ثبت تغییرات")}finally{S.value=!1}}const{remove:N}=z({onSuccess:()=>{var a;return(a=x.value)==null?void 0:a.fetch()},successMessage:"سند حذف شد",fallbackErrorMessage:"خطا در حذف سند"});function E(a){return N(`cash/${a.id}`)}return(a,n)=>{const m=f("a-tag"),u=f("a-popconfirm"),i=f("a-tooltip"),O=f("a-card"),V=f("a-spin");return d(),U("div",J,[l(V,{spinning:S.value},{default:o(()=>[l(O,{title:"لیست اسناد مالی",class:"page-card"},{default:o(()=>[l(M,{ref_key:"tbl",ref:x,model:p(h),"mobile-cards":""},{add:o(()=>[l(j,{rid:"document.create","add-label":"ثبت سند مالی",onAdd:D})]),confirmed:o(({text:r})=>[r===1?(d(),s(m,{key:0,color:"green"},{default:o(()=>[...n[2]||(n[2]=[b("تایید شده",-1)])]),_:1})):(d(),s(m,{key:1},{default:o(()=>[...n[3]||(n[3]=[b("تایید نشده",-1)])]),_:1}))]),opt:o(({record:r})=>[!r.confirmed&&_("document.list.confirm")?(d(),s(i,{key:0,title:"تایید سند"},{default:o(()=>[l(u,{placement:"top","ok-text":"بله","cancel-text":"خیر",onConfirm:c=>C(r)},{title:o(()=>[...n[4]||(n[4]=[y("p",null,"آیا سند تایید شود ؟",-1)])]),default:o(()=>[l(p(G),{class:"cursor-pointer mx-1 text-success"})]),_:1},8,["onConfirm"])]),_:2},1024)):k("",!0),r.confirmed&&_("document.list.deny")?(d(),s(i,{key:1,title:"رد کردن سند"},{default:o(()=>[l(u,{placement:"top","ok-text":"بله","cancel-text":"خیر",onConfirm:c=>C(r)},{title:o(()=>[...n[5]||(n[5]=[y("p",null,"آیا سند رد شود ؟",-1)])]),default:o(()=>[l(p(H),{class:"cursor-pointer mx-1 text-danger"})]),_:1},8,["onConfirm"])]),_:2},1024)):k("",!0),_("document.list.edit")?(d(),s(i,{key:2,title:"ویرایش"},{default:o(()=>[l(p(L),{class:"cursor-pointer mx-1 text-primary",onClick:c=>B(r.id)},null,8,["onClick"])]),_:2},1024)):k("",!0),_("document.list.remove")?(d(),s(i,{key:3,title:"حذف"},{default:o(()=>[l(u,{placement:"top","ok-text":"بله","cancel-text":"خیر",onConfirm:c=>E(r)},{title:o(()=>[...n[6]||(n[6]=[y("p",null,"آیا مطمئن به حذف سند مورد نظر هستید ؟",-1)])]),default:o(()=>[l(p(W),{class:"cursor-pointer mx-1 text-danger"})]),_:1},8,["onConfirm"])]),_:2},1024)):k("",!0)]),_:1},8,["model"]),(d(),s(A,{key:w.value??"new",open:v.value,id:w.value,"onUpdate:open":n[0]||(n[0]=r=>v.value=r),onSuccess:n[1]||(n[1]=r=>{var c;return(c=x.value)==null?void 0:c.fetch()})},null,8,["open","id"]))]),_:1})]),_:1},8,["spinning"])])}}});export{re as default}; diff --git a/apps/admin-panel/dist/assets/model-B4TWAN58.js b/apps/admin-panel/dist/assets/model-B4TWAN58.js deleted file mode 100644 index face6bf..0000000 --- a/apps/admin-panel/dist/assets/model-B4TWAN58.js +++ /dev/null @@ -1 +0,0 @@ -import{c,I as ve,d as Re,v as Ee,x as Le,o,b as h,q as Q,p as w,a as k,i as m,w as p,f as O,h as $,F as C,e as B,a7 as Ae,a8 as M,t as P,s as f,m as H,z as ue,y as Xe,r as y,_ as Ye}from"./index-C9T3Vski.js";import{g as de}from"./filters-D6Nzbpog.js";import{S as Ke}from"./SettingOutlined-BizkfqvN.js";var Qe={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M880.1 154H143.9c-24.5 0-39.8 26.7-27.5 48L349 597.4V838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V597.4L907.7 202c12.2-21.3-3.1-48-27.6-48zM603.4 798H420.6V642h182.9v156zm9.6-236.6l-9.5 16.6h-183l-9.5-16.6L212.7 226h598.6L613 561.4z"}}]},name:"filter",theme:"outlined"};function ce(r){for(var a=1;a[]},mobileCards:{type:Boolean,default:!1}},emits:["query","update:modelValue"],setup(r,{expose:a,emit:u}){const d=r,g=Ee(),Y=f(()=>d.mobileCards&&g.isMobile),N=u,pe=f(()=>d.hasSelection?{selectedRowKeys:d.modelValue.map(e=>e.id),onChange:(e,t)=>{N("update:modelValue",t)}}:void 0),S=H([]),T=H(!1),z=H(!1),F=H(void 0),R=H("asc"),s=ue({search:void 0,filters:[],total:0,limit:10,page:1}),J={emptyText:"هیج رکوردی یافت نشد."},fe=[{value:"=",label:"برابر"},{value:"!=",label:"نامساوی"},{value:"like",label:"شامل"},{value:">",label:"بزرگتر"},{value:">=",label:"بزرگتر مساوی"},{value:"<",label:"کوچکتر"},{value:"<=",label:"کوچکتر مساوی"},{value:"between",label:"بین"}],E=f(()=>d.model?ue(d.model).cols:[]),U=f(()=>E.value.filter(e=>e.show)),_e=f(()=>E.value.filter(e=>e.filtered).map(e=>({value:e.__fkey??e.key,label:e.title}))),me=f(()=>F.value?`${R.value==="asc"?"+":"-"}${F.value}`:void 0),ye=f(()=>U.value.map(e=>{var t;return{key:e.key,title:e.title,dataIndex:e.dataIndex.includes(".")?e.dataIndex.split("."):e.dataIndex,sorter:e.__sorter,width:e.width,__slot:(t=e.scopedSlots)==null?void 0:t.customRender,__date:e.filterType==="date"}}));function Z(e){return e.__slot}const ge=["opt","op","action"],D=f(()=>U.value.map(e=>{var t;return{key:e.key,title:e.title,path:e.dataIndex.split("."),slot:(t=e.scopedSlots)==null?void 0:t.customRender,date:e.filterType==="date"}})),j=f(()=>D.value.find(e=>ge.includes(e.key)&&e.slot)),L=f(()=>D.value.find(e=>e.key==="id")),q=f(()=>D.value.find(e=>e.slot==="image")),ee=f(()=>{const e=D.value.filter(n=>n!==j.value&&n!==L.value&&n!==q.value),t=e.find(n=>n.key==="name"||n.key==="title");if(t)return[t];const i=e.find(n=>n.key==="fname");return i?[i,...e.filter(n=>n.key==="lname")]:e.slice(0,1)}),te=f(()=>D.value.filter(e=>e!==j.value&&e!==L.value&&e!==q.value&&!ee.value.includes(e)));function A(e){return d.modelValue.some(t=>t.id===e.id)}function be(e,t){const i=d.modelValue.filter(n=>n.id!==e.id);N("update:modelValue",t?[...i,e]:i)}const le=f(()=>S.value.length>0&&S.value.every(A)),ke=f(()=>S.value.some(A));function xe(e){const t=new Set(S.value.map(n=>n.id)),i=d.modelValue.filter(n=>!t.has(n.id));N("update:modelValue",e?[...i,...S.value]:i)}function I(e,t){return t.path.reduce((i,n)=>i&&typeof i=="object"?i[n]:void 0,e)}function ae(e,t){const i=I(e,t);return i==null||i===""?"-":t.date?de(i):i}const ie=f(()=>U.value.filter(e=>e.__sorter).flatMap(e=>[{value:`${e.key}|asc`,label:`${e.title} ↑`},{value:`${e.key}|desc`,label:`${e.title} ↓`}])),Se=f(()=>F.value?`${F.value}|${R.value}`:void 0);function we(e){if(e){const[t,i]=e.split("|");F.value=t,R.value=i}else F.value=void 0;s.page=1,V()}function Oe(e,t){var i;s.page=e,s.limit=t,V(),(i=document.getElementById("content-area"))==null||i.scrollTo({top:0,behavior:"smooth"})}function se(e){if(e)return E.value.find(t=>(t.__fkey??t.key)===e)}function ne(e){const t=se(e);if(!((t==null?void 0:t.filterType)!=="select"||!t.filterItems))return Object.entries(t.filterItems).map(([i,n])=>({value:i,label:n}))}function Ce(e){var t;return((t=se(e))==null?void 0:t.filterType)==="date"}const Fe=f(()=>{var e;return(e=d.model)!=null&&e._hidePagination?!1:{current:s.page,pageSize:s.limit,total:s.total,showSizeChanger:!0}});function Ve(e){var b;const t={};U.value.forEach(x=>{t[x.key]=x.title});const i=U.value.map(x=>x.key),n={search:s.search,filters:s.filters.filter(x=>x.field&&x.op),total:s.total,limit:s.limit,page:s.page,order:me.value,select:i,titles:t,report_title:(b=d.model)==null?void 0:b.title};return e?{...n,op:e}:n}async function V(e){var t,i,n;if(d.model)try{T.value=!0;const{data:b}=await Xe.post(d.model.url,Ve(e));S.value=b.rows,s.total=((t=b.query)==null?void 0:t.total)??0,s.page=((i=b.query)==null?void 0:i.page)??s.page,s.limit=((n=b.query)==null?void 0:n.limit)??s.limit,N("query",b.query)}catch(b){throw console.log(b),b}finally{T.value=!1}}function $e(e){s.search=e,s.page=1,V()}function Pe(){z.value=!z.value,z.value&&s.filters.length===0&&oe()}function oe(){s.filters.push({id:parseFloat(`${s.filters.length}.${Math.floor(Math.random()*1e3)}`)})}function Te(e){s.filters.splice(e,1)}function ze(){z.value=!1,s.page=1,V()}function Ie(e,t,i){s.page=e.current??1,s.limit=e.pageSize??s.limit,i!=null&&i.columnKey&&i.order?(F.value=String(i.columnKey),R.value=i.order==="ascend"?"asc":"desc"):F.value=void 0,V()}return Le(()=>{var e;for(const t of((e=d.model)==null?void 0:e.defaultFilters)??[])s.filters.push({id:Math.random(),...t});V()}),a({fetch:V}),(e,t)=>{const i=y("a-input-search"),n=y("a-button"),b=y("a-badge"),x=y("a-tooltip"),K=y("a-checkbox"),Me=y("a-menu-item"),Ue=y("a-menu"),De=y("a-dropdown"),X=y("a-select"),je=y("a-date-picker"),re=y("a-input"),qe=y("a-empty"),Be=y("a-spin"),He=y("a-pagination"),Ne=y("a-table");return o(),h("div",{class:Q(["x-table",{"x-table--cards":Y.value}])},[w("div",Ze,[w("div",et,[r.model._hideSearch?m("",!0):(o(),k(i,{key:0,value:s.search,"onUpdate:value":t[0]||(t[0]=l=>s.search=l),class:"x-table__search",placeholder:"جستجو","allow-clear":"",onSearch:$e},null,8,["value"])),w("div",tt,[r.model._noFilters?m("",!0):(o(),k(b,{key:0,count:s.filters.length},{default:p(()=>[c(n,{type:"text",class:Q({"x-table__action--active":z.value}),onClick:Pe},{icon:p(()=>[c($(W))]),default:p(()=>[t[3]||(t[3]=O(" فیلتر ",-1))]),_:1},8,["class"])]),_:1},8,["count"])),c(x,{title:"چاپ"},{default:p(()=>[c(n,{type:"text",shape:"circle"},{icon:p(()=>[c($(G))]),_:1})]),_:1}),c(De,{trigger:["click"]},{overlay:p(()=>[c(Ue,null,{default:p(()=>[(o(!0),h(C,null,B(E.value,l=>(o(),k(Me,{key:l.key},{default:p(()=>[c(K,{checked:l.show,"onUpdate:checked":v=>l.show=v},{default:p(()=>[O(P(l.title),1)]),_:2},1032,["checked","onUpdate:checked"])]),_:2},1024))),128))]),_:1})]),default:p(()=>[c(x,{title:"ستون‌ها"},{default:p(()=>[c(n,{type:"text",shape:"circle"},{icon:p(()=>[c($(Ke))]),_:1})]),_:1})]),_:1}),c(x,{title:"بارگذاری مجدد"},{default:p(()=>[c(n,{class:"refresh-btn",type:"text",shape:"circle",loading:T.value,onClick:t[1]||(t[1]=l=>V())},{icon:p(()=>[c($(Ae))]),_:1},8,["loading"])]),_:1}),Y.value&&ie.value.length?(o(),k(X,{key:1,value:Se.value,class:"x-table__sort",size:"small",placeholder:"مرتب‌سازی","allow-clear":"",options:ie.value,onChange:we},null,8,["value","options"])):m("",!0)])]),e.$slots.add?(o(),h("div",lt,[M(e.$slots,"add",{},void 0,!0)])):m("",!0)]),z.value?(o(),h("div",at,[(o(!0),h(C,null,B(s.filters,(l,v)=>(o(),h("div",{key:l.id,class:"x-table__filter-row"},[c(X,{value:l.field,"onUpdate:value":_=>l.field=_,placeholder:"ستون",style:{width:"180px"},options:_e.value},null,8,["value","onUpdate:value","options"]),c(X,{value:l.op,"onUpdate:value":_=>l.op=_,placeholder:"شرط",style:{width:"130px"},options:fe},null,8,["value","onUpdate:value"]),ne(l.field)?(o(),k(X,{key:0,value:l.value,"onUpdate:value":_=>l.value=_,placeholder:"مقدار",style:{width:"200px"},options:ne(l.field)},null,8,["value","onUpdate:value","options"])):Ce(l.field)?(o(),k(je,{key:1,value:l.value,"onUpdate:value":_=>l.value=_,placeholder:"مقدار",style:{width:"200px"},"value-format":"YYYY-MM-DD"},null,8,["value","onUpdate:value"])):(o(),k(re,{key:2,value:l.value,"onUpdate:value":_=>l.value=_,placeholder:"مقدار",style:{width:"200px"}},null,8,["value","onUpdate:value"])),l.op==="between"?(o(),k(re,{key:3,value:l.value2,"onUpdate:value":_=>l.value2=_,placeholder:"تا",style:{width:"200px"}},null,8,["value","onUpdate:value"])):m("",!0),c(n,{danger:"",onClick:_=>Te(v)},{default:p(()=>[...t[4]||(t[4]=[O("حذف",-1)])]),_:1},8,["onClick"])]))),128)),w("div",it,[c(n,{onClick:oe},{default:p(()=>[...t[5]||(t[5]=[O("افزودن فیلتر",-1)])]),_:1}),c(n,{type:"primary",onClick:ze},{default:p(()=>[...t[6]||(t[6]=[O("اعمال",-1)])]),_:1})])])):m("",!0),Y.value?(o(),h("div",st,[c(Be,{spinning:T.value},{default:p(()=>[!S.value.length&&!T.value?(o(),k(qe,{key:0,description:J.emptyText},null,8,["description"])):m("",!0),r.hasSelection&&S.value.length?(o(),k(K,{key:1,class:"x-table__select-all",checked:le.value,indeterminate:ke.value&&!le.value,onChange:t[2]||(t[2]=l=>xe(l.target.checked))},{default:p(()=>[...t[7]||(t[7]=[O(" انتخاب همه در این صفحه ",-1)])]),_:1},8,["checked","indeterminate"])):m("",!0),(o(!0),h(C,null,B(S.value,l=>(o(),h("div",{key:String(l.id),class:Q(["x-card",{"x-card--selected":r.hasSelection&&A(l)}])},[w("div",nt,[w("div",ot,[r.hasSelection?(o(),k(K,{key:0,checked:A(l),onChange:v=>be(l,v.target.checked)},null,8,["checked","onChange"])):m("",!0),q.value?(o(),h("span",rt,[M(e.$slots,q.value.slot,{text:I(l,q.value),record:l},void 0,!0)])):m("",!0),L.value?(o(),h("span",ut,"#"+P(I(l,L.value)),1)):m("",!0),w("span",dt,[(o(!0),h(C,null,B(ee.value,v=>(o(),h(C,{key:v.key},[v.slot?M(e.$slots,v.slot,{text:I(l,v),record:l},void 0,!0,0):(o(),h(C,{key:1},[O(P(ae(l,v)),1)],64))],64))),128))])]),j.value?(o(),h("div",ct,[M(e.$slots,j.value.slot,{text:I(l,j.value),record:l},void 0,!0)])):m("",!0)]),te.value.length?(o(),h("dl",ht,[(o(!0),h(C,null,B(te.value,v=>(o(),h("div",{key:v.key,class:"x-card__row"},[w("dt",null,P(v.title),1),w("dd",null,[v.slot?M(e.$slots,v.slot,{text:I(l,v),record:l},void 0,!0,0):(o(),h(C,{key:1},[O(P(ae(l,v)),1)],64))])]))),128))])):m("",!0)],2))),128))]),_:3},8,["spinning"]),!r.model._hidePagination&&s.total>0?(o(),h("div",vt,[w("span",pt,P(s.total)+" مورد",1),c(He,{size:"small","show-less-items":"",current:s.page,"page-size":s.limit,total:s.total,"show-size-changer":!1,onChange:Oe},null,8,["current","page-size","total"])])):m("",!0)])):(o(),k(Ne,{key:2,columns:ye.value,"data-source":S.value,loading:T.value,pagination:Fe.value,locale:J,"row-selection":pe.value,"row-key":"id",size:$(g).isMobile?"small":"middle",scroll:$(g).isSmallScreen?{x:"max-content"}:void 0,bordered:"",onChange:Ie},{bodyCell:p(({column:l,record:v,text:_})=>[Z(l)?M(e.$slots,Z(l),{text:_,record:v},void 0,!0,0):l.__date?(o(),h(C,{key:1},[O(P($(de)(_)),1)],64)):m("",!0)]),_:3},8,["columns","data-source","loading","pagination","row-selection","size","scroll"]))],2)}}}),gt=Ye(ft,[["__scopeId","data-v-e767d7dc"]]);class bt{constructor(a,u){this.show=!0,this.__sorter=!0,this.filtered=!1,this.key=a,this.title=u,this.dataIndex=a,a==="id"&&(this.show=!1)}__filter(){this.filtered=!0,this.scopedSlots||(this.scopedSlots={}),this.scopedSlots.filterDropdown=`${this.key}_filterDropdown`,this.scopedSlots.filterIcon=`${this.key}_filterIcon`}filterKey(a){return this.__fkey=a,this}renderSlot(a){return this.scopedSlots||(this.scopedSlots={}),this.scopedSlots.customRender=a,this}filterText(){return this.__filter(),this.filterType="default",this}filterSwitch(){return this.__filter(),this.filterType="switch",this}filterQuery(a){return this.__filter(),this.filterType="query",this.filterAction=a,this}filterDate(){return this.__filter(),this.filterType="date",this}filterNumber(){return this.__filter(),this.filterType="number",this}filterSelect(a){return this.__filter(),this.filterType="select",this.filterItems=a,this}noSort(){return this.__sorter=!1,this}hidden(){return this.show=!1,this}setWidth(a){return this.width=a,this}}class kt{constructor(a,u){this.cols=[],this._hidePagination=!1,this._hideSearch=!1,this._noFilters=!1,this.url=a,this.title=u}add(a){return this.cols.push(a),this}addDefaultFilter(a){return this.defaultFilters||(this.defaultFilters=[]),this.defaultFilters.push(a),this}hidePagination(){return this._hidePagination=!0,this}hideSearch(){return this._hideSearch=!0,this}noFilters(){return this._noFilters=!0,this}getSortFields(){return this.cols.filter(a=>a.__sorter)}}export{gt as X,kt as a,bt as b}; diff --git a/apps/admin-panel/dist/assets/model-BYVpc9QD.css b/apps/admin-panel/dist/assets/model-BYVpc9QD.css deleted file mode 100644 index b06b035..0000000 --- a/apps/admin-panel/dist/assets/model-BYVpc9QD.css +++ /dev/null @@ -1 +0,0 @@ -.x-table__toolbar[data-v-e767d7dc]{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px}.x-table__search-group[data-v-e767d7dc]{display:flex;align-items:center;gap:24px;flex-wrap:nowrap}.x-table__actions[data-v-e767d7dc]{display:flex;align-items:center;gap:8px;flex-wrap:nowrap}.x-table__action--active[data-v-e767d7dc]{color:#1677ff}.x-table__add[data-v-e767d7dc]{display:flex}.x-table__filters[data-v-e767d7dc]{background:#fafafa;border:1px solid #f0f0f0;border-radius:6px;padding:12px;margin-bottom:12px}.x-table__filter-row[data-v-e767d7dc]{display:flex;gap:8px;margin-bottom:8px;flex-wrap:wrap}.x-table__filter-actions[data-v-e767d7dc]{display:flex;gap:8px}.refresh-btn[data-v-e767d7dc]{transition:all .15s ease}.x-table__search[data-v-e767d7dc]{max-width:260px}.x-table__sort[data-v-e767d7dc]{width:150px}.x-table__cards[data-v-e767d7dc]{display:flex;flex-direction:column;gap:12px}.x-table__cards[data-v-e767d7dc] .ant-spin-container{display:flex;flex-direction:column;gap:10px;min-height:80px}.x-card[data-v-e767d7dc]{border:1px solid #eef0f3;border-radius:10px;background:#fff;overflow:hidden}.x-card__head[data-v-e767d7dc]{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 12px;background:#fafbfc;border-bottom:1px solid #eef0f3}.x-card__title[data-v-e767d7dc]{display:flex;align-items:center;gap:8px;min-width:0}.x-card__id[data-v-e767d7dc]{flex-shrink:0;font-size:11px;color:#8a909c;background:#eef0f3;border-radius:4px;padding:1px 6px;direction:ltr}.x-card__name[data-v-e767d7dc]{font-weight:600;color:#1c2d56;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.x-card__actions[data-v-e767d7dc]{flex-shrink:0;font-size:16px}.x-card--selected[data-v-e767d7dc]{border-color:#91caff}.x-card--selected .x-card__head[data-v-e767d7dc]{background:#f0f7ff}.x-card__media[data-v-e767d7dc]{flex-shrink:0;display:inline-flex}.x-card__media[data-v-e767d7dc] img{width:44px!important;height:44px!important;object-fit:cover!important;border-radius:6px}.x-table__select-all[data-v-e767d7dc]{font-size:12px;color:#8a909c}.x-card__body[data-v-e767d7dc]{margin:0;padding:4px 12px}.x-card__row[data-v-e767d7dc]{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:7px 0;font-size:13px}.x-card__row+.x-card__row[data-v-e767d7dc]{border-top:1px dashed #f0f0f0}.x-card__row dt[data-v-e767d7dc]{color:#8a909c;flex-shrink:0}.x-card__row dd[data-v-e767d7dc]{margin:0;color:#333;text-align:left;min-width:0;word-break:break-word}.x-card__row dd[data-v-e767d7dc] .ant-tag{margin:0}.x-table__card-pager[data-v-e767d7dc]{display:flex;align-items:center;justify-content:space-between;gap:8px}.x-table__card-total[data-v-e767d7dc]{font-size:12px;color:#8a909c}@media (max-width: 575px){.x-table__toolbar[data-v-e767d7dc]{flex-wrap:wrap;gap:8px;margin-bottom:10px}.x-table__search-group[data-v-e767d7dc]{display:contents}.x-table__search[data-v-e767d7dc]{max-width:none;flex:1 1 100%}.x-table__actions[data-v-e767d7dc]{gap:2px}.x-table__sort[data-v-e767d7dc]{width:130px}.x-table__add[data-v-e767d7dc]{margin-inline-start:auto}.x-table__filters[data-v-e767d7dc]{padding:10px}.x-table__filter-row[data-v-e767d7dc]{display:grid;grid-template-columns:1fr 1fr;padding-bottom:8px;border-bottom:1px dashed #e8e8e8}.x-table__filter-row[data-v-e767d7dc]>*{width:100%!important}.x-table__filter-row[data-v-e767d7dc]>:nth-child(n+3){grid-column:1 / -1}.x-table__filter-actions[data-v-e767d7dc]>*{flex:1}} diff --git a/apps/admin-panel/dist/assets/model-DB3OrB0q.css b/apps/admin-panel/dist/assets/model-DB3OrB0q.css new file mode 100644 index 0000000..3744bb5 --- /dev/null +++ b/apps/admin-panel/dist/assets/model-DB3OrB0q.css @@ -0,0 +1 @@ +.x-table__toolbar[data-v-ccf08e7e]{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px}.x-table__search-group[data-v-ccf08e7e]{display:flex;align-items:center;gap:24px;flex-wrap:nowrap}.x-table__actions[data-v-ccf08e7e]{display:flex;align-items:center;gap:8px;flex-wrap:nowrap}.x-table__action--active[data-v-ccf08e7e]{color:#1677ff}.x-table__add[data-v-ccf08e7e]{display:flex}.x-table__filters[data-v-ccf08e7e]{background:#fafafa;border:1px solid #f0f0f0;border-radius:6px;padding:12px;margin-bottom:12px}.x-table__filter-row[data-v-ccf08e7e]{display:flex;gap:8px;margin-bottom:8px;flex-wrap:wrap}.x-table__filter-actions[data-v-ccf08e7e]{display:flex;gap:8px}.refresh-btn[data-v-ccf08e7e]{transition:all .15s ease}.x-table__search[data-v-ccf08e7e]{max-width:260px}.x-table__sort[data-v-ccf08e7e]{width:150px}.x-table__cards[data-v-ccf08e7e]{display:flex;flex-direction:column;gap:12px}.x-table__cards[data-v-ccf08e7e] .ant-spin-container{display:flex;flex-direction:column;gap:10px;min-height:80px}.x-card[data-v-ccf08e7e]{border:1px solid #eef0f3;border-radius:10px;background:#fff;overflow:hidden}.x-card__head[data-v-ccf08e7e]{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 12px;background:#fafbfc;border-bottom:1px solid #eef0f3}.x-card__title[data-v-ccf08e7e]{display:flex;align-items:center;gap:8px;min-width:0}.x-card__id[data-v-ccf08e7e]{flex-shrink:0;font-size:11px;color:#8a909c;background:#eef0f3;border-radius:4px;padding:1px 6px;direction:ltr}.x-card__name[data-v-ccf08e7e]{font-weight:600;color:#1c2d56;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.x-card__actions[data-v-ccf08e7e]{flex-shrink:0;font-size:16px}.x-card--selected[data-v-ccf08e7e]{border-color:#91caff}.x-card--selected .x-card__head[data-v-ccf08e7e]{background:#f0f7ff}.x-card__media[data-v-ccf08e7e]{flex-shrink:0;display:inline-flex}.x-card__media[data-v-ccf08e7e] img{width:44px!important;height:44px!important;object-fit:cover!important;border-radius:6px}.x-table__select-all[data-v-ccf08e7e]{font-size:12px;color:#8a909c}.x-card__body[data-v-ccf08e7e]{margin:0;padding:4px 12px}.x-card__row[data-v-ccf08e7e]{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:7px 0;font-size:13px}.x-card__row+.x-card__row[data-v-ccf08e7e]{border-top:1px dashed #f0f0f0}.x-card__row dt[data-v-ccf08e7e]{color:#8a909c;flex-shrink:0}.x-card__row dd[data-v-ccf08e7e]{margin:0;color:#333;text-align:left;min-width:0;word-break:break-word}.x-card__row dd[data-v-ccf08e7e] .ant-tag{margin:0}.x-table__card-pager[data-v-ccf08e7e]{display:flex;align-items:center;justify-content:space-between;gap:8px}.x-table__card-total[data-v-ccf08e7e]{font-size:12px;color:#8a909c}@media (max-width: 575px){.x-table__toolbar[data-v-ccf08e7e]{flex-wrap:wrap;gap:8px;margin-bottom:10px}.x-table__search-group[data-v-ccf08e7e]{display:contents}.x-table__search[data-v-ccf08e7e]{max-width:none;flex:1 1 100%}.x-table__actions[data-v-ccf08e7e]{gap:2px}.x-table__sort[data-v-ccf08e7e]{width:130px}.x-table__add[data-v-ccf08e7e]{margin-inline-start:auto}.x-table__filters[data-v-ccf08e7e]{padding:10px}.x-table__filter-row[data-v-ccf08e7e]{display:grid;grid-template-columns:1fr 1fr;padding-bottom:8px;border-bottom:1px dashed #e8e8e8}.x-table__filter-row[data-v-ccf08e7e]>*{width:100%!important}.x-table__filter-row[data-v-ccf08e7e]>:nth-child(n+3){grid-column:1 / -1}.x-table__filter-actions[data-v-ccf08e7e]>*{flex:1}} diff --git a/apps/admin-panel/dist/assets/model-D_9omyEY.js b/apps/admin-panel/dist/assets/model-D_9omyEY.js new file mode 100644 index 0000000..f13c4cb --- /dev/null +++ b/apps/admin-panel/dist/assets/model-D_9omyEY.js @@ -0,0 +1 @@ +import{c,I as ve,d as Re,v as Ee,x as Le,o,b as h,q as Q,p as w,a as k,i as m,w as p,f as C,h as $,F,e as H,a7 as Ae,a8 as M,t as P,s as f,m as N,z as ue,y as Xe,r as y,_ as Ye}from"./index-CuIWfDbM.js";import{g as de}from"./filters-Cvt98RIq.js";import{S as Ke}from"./SettingOutlined-BehgjsnT.js";var Qe={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M880.1 154H143.9c-24.5 0-39.8 26.7-27.5 48L349 597.4V838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V597.4L907.7 202c12.2-21.3-3.1-48-27.6-48zM603.4 798H420.6V642h182.9v156zm9.6-236.6l-9.5 16.6h-183l-9.5-16.6L212.7 226h598.6L613 561.4z"}}]},name:"filter",theme:"outlined"};function ce(r){for(var a=1;a[]},mobileCards:{type:Boolean,default:!1}},emits:["query","update:modelValue"],setup(r,{expose:a,emit:u}){const d=r,g=Ee(),Y=f(()=>d.mobileCards&&g.isMobile),R=u,pe=f(()=>d.hasSelection?{selectedRowKeys:d.modelValue.map(e=>e.id),onChange:(e,t)=>{R("update:modelValue",t)}}:void 0),S=N([]),T=N(!1),z=N(!1),O=N(void 0),E=N("asc"),s=ue({search:void 0,filters:[],total:0,limit:10,page:1}),J={emptyText:"هیج رکوردی یافت نشد."},fe=[{value:"=",label:"برابر"},{value:"!=",label:"نامساوی"},{value:"like",label:"شامل"},{value:">",label:"بزرگتر"},{value:">=",label:"بزرگتر مساوی"},{value:"<",label:"کوچکتر"},{value:"<=",label:"کوچکتر مساوی"},{value:"between",label:"بین"}],U=f(()=>d.model?ue(d.model).cols:[]),D=f(()=>U.value.filter(e=>e.show)),_e=f(()=>U.value.filter(e=>e.filtered).map(e=>({value:e.__fkey??e.key,label:e.title}))),me=f(()=>{if(!O.value)return;const e=U.value.find(t=>t.key===O.value);return`${E.value==="asc"?"+":"-"}${(e==null?void 0:e.__fkey)??O.value}`}),ye=f(()=>D.value.map(e=>{var t;return{key:e.key,title:e.title,dataIndex:e.dataIndex.includes(".")?e.dataIndex.split("."):e.dataIndex,sorter:e.__sorter,width:e.width,__slot:(t=e.scopedSlots)==null?void 0:t.customRender,__date:e.filterType==="date"}}));function Z(e){return e.__slot}const ge=["opt","op","action"],j=f(()=>D.value.map(e=>{var t;return{key:e.key,title:e.title,path:e.dataIndex.split("."),slot:(t=e.scopedSlots)==null?void 0:t.customRender,date:e.filterType==="date"}})),q=f(()=>j.value.find(e=>ge.includes(e.key)&&e.slot)),L=f(()=>j.value.find(e=>e.key==="id")),B=f(()=>j.value.find(e=>e.slot==="image")),ee=f(()=>{const e=j.value.filter(n=>n!==q.value&&n!==L.value&&n!==B.value),t=e.find(n=>n.key==="name"||n.key==="title");if(t)return[t];const i=e.find(n=>n.key==="fname");return i?[i,...e.filter(n=>n.key==="lname")]:e.slice(0,1)}),te=f(()=>j.value.filter(e=>e!==q.value&&e!==L.value&&e!==B.value&&!ee.value.includes(e)));function A(e){return d.modelValue.some(t=>t.id===e.id)}function be(e,t){const i=d.modelValue.filter(n=>n.id!==e.id);R("update:modelValue",t?[...i,e]:i)}const le=f(()=>S.value.length>0&&S.value.every(A)),ke=f(()=>S.value.some(A));function xe(e){const t=new Set(S.value.map(n=>n.id)),i=d.modelValue.filter(n=>!t.has(n.id));R("update:modelValue",e?[...i,...S.value]:i)}function I(e,t){return t.path.reduce((i,n)=>i&&typeof i=="object"?i[n]:void 0,e)}function ae(e,t){const i=I(e,t);return i==null||i===""?"-":t.date?de(i):i}const ie=f(()=>D.value.filter(e=>e.__sorter).flatMap(e=>[{value:`${e.key}|asc`,label:`${e.title} ↑`},{value:`${e.key}|desc`,label:`${e.title} ↓`}])),Se=f(()=>O.value?`${O.value}|${E.value}`:void 0);function we(e){if(e){const[t,i]=e.split("|");O.value=t,E.value=i}else O.value=void 0;s.page=1,V()}function Oe(e,t){var i;s.page=e,s.limit=t,V(),(i=document.getElementById("content-area"))==null||i.scrollTo({top:0,behavior:"smooth"})}function se(e){if(e)return U.value.find(t=>(t.__fkey??t.key)===e)}function ne(e){const t=se(e);if(!((t==null?void 0:t.filterType)!=="select"||!t.filterItems))return Object.entries(t.filterItems).map(([i,n])=>({value:i,label:n}))}function Ce(e){var t;return((t=se(e))==null?void 0:t.filterType)==="date"}const Fe=f(()=>{var e;return(e=d.model)!=null&&e._hidePagination?!1:{current:s.page,pageSize:s.limit,total:s.total,showSizeChanger:!0}});function Ve(e){var b;const t={};D.value.forEach(x=>{t[x.key]=x.title});const i=D.value.map(x=>x.key),n={search:s.search,filters:s.filters.filter(x=>x.field&&x.op),total:s.total,limit:s.limit,page:s.page,order:me.value,select:i,titles:t,report_title:(b=d.model)==null?void 0:b.title};return e?{...n,op:e}:n}async function V(e){var t,i,n;if(d.model)try{T.value=!0;const{data:b}=await Xe.post(d.model.url,Ve(e));S.value=b.rows,s.total=((t=b.query)==null?void 0:t.total)??0,s.page=((i=b.query)==null?void 0:i.page)??s.page,s.limit=((n=b.query)==null?void 0:n.limit)??s.limit,R("query",b.query)}catch(b){throw console.log(b),b}finally{T.value=!1}}function $e(e){s.search=e,s.page=1,V()}function Pe(){z.value=!z.value,z.value&&s.filters.length===0&&oe()}function oe(){s.filters.push({id:parseFloat(`${s.filters.length}.${Math.floor(Math.random()*1e3)}`)})}function Te(e){s.filters.splice(e,1)}function ze(){z.value=!1,s.page=1,V()}function Ie(e,t,i){s.page=e.current??1,s.limit=e.pageSize??s.limit,i!=null&&i.columnKey&&i.order?(O.value=String(i.columnKey),E.value=i.order==="ascend"?"asc":"desc"):O.value=void 0,V()}return Le(()=>{var e;for(const t of((e=d.model)==null?void 0:e.defaultFilters)??[])s.filters.push({id:Math.random(),...t});V()}),a({fetch:V}),(e,t)=>{const i=y("a-input-search"),n=y("a-button"),b=y("a-badge"),x=y("a-tooltip"),K=y("a-checkbox"),Me=y("a-menu-item"),Ue=y("a-menu"),De=y("a-dropdown"),X=y("a-select"),je=y("a-date-picker"),re=y("a-input"),qe=y("a-empty"),Be=y("a-spin"),He=y("a-pagination"),Ne=y("a-table");return o(),h("div",{class:Q(["x-table",{"x-table--cards":Y.value}])},[w("div",Ze,[w("div",et,[r.model._hideSearch?m("",!0):(o(),k(i,{key:0,value:s.search,"onUpdate:value":t[0]||(t[0]=l=>s.search=l),class:"x-table__search",placeholder:"جستجو","allow-clear":"",onSearch:$e},null,8,["value"])),w("div",tt,[r.model._noFilters?m("",!0):(o(),k(b,{key:0,count:s.filters.length},{default:p(()=>[c(n,{type:"text",class:Q({"x-table__action--active":z.value}),onClick:Pe},{icon:p(()=>[c($(W))]),default:p(()=>[t[3]||(t[3]=C(" فیلتر ",-1))]),_:1},8,["class"])]),_:1},8,["count"])),c(x,{title:"چاپ"},{default:p(()=>[c(n,{type:"text",shape:"circle"},{icon:p(()=>[c($(G))]),_:1})]),_:1}),c(De,{trigger:["click"]},{overlay:p(()=>[c(Ue,null,{default:p(()=>[(o(!0),h(F,null,H(U.value,l=>(o(),k(Me,{key:l.key},{default:p(()=>[c(K,{checked:l.show,"onUpdate:checked":v=>l.show=v},{default:p(()=>[C(P(l.title),1)]),_:2},1032,["checked","onUpdate:checked"])]),_:2},1024))),128))]),_:1})]),default:p(()=>[c(x,{title:"ستون‌ها"},{default:p(()=>[c(n,{type:"text",shape:"circle"},{icon:p(()=>[c($(Ke))]),_:1})]),_:1})]),_:1}),c(x,{title:"بارگذاری مجدد"},{default:p(()=>[c(n,{class:"refresh-btn",type:"text",shape:"circle",loading:T.value,onClick:t[1]||(t[1]=l=>V())},{icon:p(()=>[c($(Ae))]),_:1},8,["loading"])]),_:1}),Y.value&&ie.value.length?(o(),k(X,{key:1,value:Se.value,class:"x-table__sort",size:"small",placeholder:"مرتب‌سازی","allow-clear":"",options:ie.value,onChange:we},null,8,["value","options"])):m("",!0)])]),e.$slots.add?(o(),h("div",lt,[M(e.$slots,"add",{},void 0,!0)])):m("",!0)]),z.value?(o(),h("div",at,[(o(!0),h(F,null,H(s.filters,(l,v)=>(o(),h("div",{key:l.id,class:"x-table__filter-row"},[c(X,{value:l.field,"onUpdate:value":_=>l.field=_,placeholder:"ستون",style:{width:"180px"},options:_e.value},null,8,["value","onUpdate:value","options"]),c(X,{value:l.op,"onUpdate:value":_=>l.op=_,placeholder:"شرط",style:{width:"130px"},options:fe},null,8,["value","onUpdate:value"]),ne(l.field)?(o(),k(X,{key:0,value:l.value,"onUpdate:value":_=>l.value=_,placeholder:"مقدار",style:{width:"200px"},options:ne(l.field)},null,8,["value","onUpdate:value","options"])):Ce(l.field)?(o(),k(je,{key:1,value:l.value,"onUpdate:value":_=>l.value=_,placeholder:"مقدار",style:{width:"200px"},"value-format":"YYYY-MM-DD"},null,8,["value","onUpdate:value"])):(o(),k(re,{key:2,value:l.value,"onUpdate:value":_=>l.value=_,placeholder:"مقدار",style:{width:"200px"}},null,8,["value","onUpdate:value"])),l.op==="between"?(o(),k(re,{key:3,value:l.value2,"onUpdate:value":_=>l.value2=_,placeholder:"تا",style:{width:"200px"}},null,8,["value","onUpdate:value"])):m("",!0),c(n,{danger:"",onClick:_=>Te(v)},{default:p(()=>[...t[4]||(t[4]=[C("حذف",-1)])]),_:1},8,["onClick"])]))),128)),w("div",it,[c(n,{onClick:oe},{default:p(()=>[...t[5]||(t[5]=[C("افزودن فیلتر",-1)])]),_:1}),c(n,{type:"primary",onClick:ze},{default:p(()=>[...t[6]||(t[6]=[C("اعمال",-1)])]),_:1})])])):m("",!0),Y.value?(o(),h("div",st,[c(Be,{spinning:T.value},{default:p(()=>[!S.value.length&&!T.value?(o(),k(qe,{key:0,description:J.emptyText},null,8,["description"])):m("",!0),r.hasSelection&&S.value.length?(o(),k(K,{key:1,class:"x-table__select-all",checked:le.value,indeterminate:ke.value&&!le.value,onChange:t[2]||(t[2]=l=>xe(l.target.checked))},{default:p(()=>[...t[7]||(t[7]=[C(" انتخاب همه در این صفحه ",-1)])]),_:1},8,["checked","indeterminate"])):m("",!0),(o(!0),h(F,null,H(S.value,l=>(o(),h("div",{key:String(l.id),class:Q(["x-card",{"x-card--selected":r.hasSelection&&A(l)}])},[w("div",nt,[w("div",ot,[r.hasSelection?(o(),k(K,{key:0,checked:A(l),onChange:v=>be(l,v.target.checked)},null,8,["checked","onChange"])):m("",!0),B.value?(o(),h("span",rt,[M(e.$slots,B.value.slot,{text:I(l,B.value),record:l},void 0,!0)])):m("",!0),L.value?(o(),h("span",ut,"#"+P(I(l,L.value)),1)):m("",!0),w("span",dt,[(o(!0),h(F,null,H(ee.value,v=>(o(),h(F,{key:v.key},[v.slot?M(e.$slots,v.slot,{text:I(l,v),record:l},void 0,!0,0):(o(),h(F,{key:1},[C(P(ae(l,v)),1)],64))],64))),128))])]),q.value?(o(),h("div",ct,[M(e.$slots,q.value.slot,{text:I(l,q.value),record:l},void 0,!0)])):m("",!0)]),te.value.length?(o(),h("dl",ht,[(o(!0),h(F,null,H(te.value,v=>(o(),h("div",{key:v.key,class:"x-card__row"},[w("dt",null,P(v.title),1),w("dd",null,[v.slot?M(e.$slots,v.slot,{text:I(l,v),record:l},void 0,!0,0):(o(),h(F,{key:1},[C(P(ae(l,v)),1)],64))])]))),128))])):m("",!0)],2))),128))]),_:3},8,["spinning"]),!r.model._hidePagination&&s.total>0?(o(),h("div",vt,[w("span",pt,P(s.total)+" مورد",1),c(He,{size:"small","show-less-items":"",current:s.page,"page-size":s.limit,total:s.total,"show-size-changer":!1,onChange:Oe},null,8,["current","page-size","total"])])):m("",!0)])):(o(),k(Ne,{key:2,columns:ye.value,"data-source":S.value,loading:T.value,pagination:Fe.value,locale:J,"row-selection":pe.value,"row-key":"id",size:$(g).isMobile?"small":"middle",scroll:$(g).isSmallScreen?{x:"max-content"}:void 0,bordered:"",onChange:Ie},{bodyCell:p(({column:l,record:v,text:_})=>[Z(l)?M(e.$slots,Z(l),{text:_,record:v},void 0,!0,0):l.__date?(o(),h(F,{key:1},[C(P($(de)(_)),1)],64)):m("",!0)]),_:3},8,["columns","data-source","loading","pagination","row-selection","size","scroll"]))],2)}}}),gt=Ye(ft,[["__scopeId","data-v-ccf08e7e"]]);class bt{constructor(a,u){this.show=!0,this.__sorter=!0,this.filtered=!1,this.key=a,this.title=u,this.dataIndex=a,a==="id"&&(this.show=!1)}__filter(){this.filtered=!0,this.scopedSlots||(this.scopedSlots={}),this.scopedSlots.filterDropdown=`${this.key}_filterDropdown`,this.scopedSlots.filterIcon=`${this.key}_filterIcon`}filterKey(a){return this.__fkey=a,this}renderSlot(a){return this.scopedSlots||(this.scopedSlots={}),this.scopedSlots.customRender=a,this}filterText(){return this.__filter(),this.filterType="default",this}filterSwitch(){return this.__filter(),this.filterType="switch",this}filterQuery(a){return this.__filter(),this.filterType="query",this.filterAction=a,this}filterDate(){return this.__filter(),this.filterType="date",this}filterNumber(){return this.__filter(),this.filterType="number",this}filterSelect(a){return this.__filter(),this.filterType="select",this.filterItems=a,this}noSort(){return this.__sorter=!1,this}hidden(){return this.show=!1,this}setWidth(a){return this.width=a,this}}class kt{constructor(a,u){this.cols=[],this._hidePagination=!1,this._hideSearch=!1,this._noFilters=!1,this.url=a,this.title=u}add(a){return this.cols.push(a),this}addDefaultFilter(a){return this.defaultFilters||(this.defaultFilters=[]),this.defaultFilters.push(a),this}hidePagination(){return this._hidePagination=!0,this}hideSearch(){return this._hideSearch=!0,this}noFilters(){return this._noFilters=!0,this}getSortFields(){return this.cols.filter(a=>a.__sorter)}}export{gt as X,kt as a,bt as b}; diff --git a/apps/admin-panel/dist/assets/myData-Dsrps5OB.js b/apps/admin-panel/dist/assets/myData-Bw7dlBDT.js similarity index 88% rename from apps/admin-panel/dist/assets/myData-Dsrps5OB.js rename to apps/admin-panel/dist/assets/myData-Bw7dlBDT.js index 8e3be16..54461ff 100644 --- a/apps/admin-panel/dist/assets/myData-Dsrps5OB.js +++ b/apps/admin-panel/dist/assets/myData-Bw7dlBDT.js @@ -1 +1 @@ -import{u as x}from"./auth-CIh5zA9X.js";import{d as v,x as y,y as h,a as b,w as t,m as g,r as u,o as w,c as s,f as n,t as c,s as m}from"./index-C9T3Vski.js";const B=v({__name:"myData",setup(C){const d=x(),_=g(null),o=m(()=>_.value??d.user),i=m(()=>{var a,r;return(r=(a=o.value)==null?void 0:a.user_type)==null?void 0:r.title});return y(async()=>{try{const{data:a}=await h.get("admin/users/me");_.value=a}catch(a){console.log(a)}}),(a,r)=>{const l=u("a-descriptions-item"),p=u("a-descriptions"),f=u("a-card");return w(),b(f,{title:"اطلاعات کاربری",class:"page-card"},{default:t(()=>[s(p,{column:{xxl:3,xl:3,lg:3,md:2,sm:2,xs:1}},{default:t(()=>[s(l,{label:"نام"},{default:t(()=>{var e;return[n(c(((e=o.value)==null?void 0:e.fname)||"-"),1)]}),_:1}),s(l,{label:"نام خانوادگی"},{default:t(()=>{var e;return[n(c(((e=o.value)==null?void 0:e.lname)||"-"),1)]}),_:1}),s(l,{label:"شماره تلفن"},{default:t(()=>{var e;return[n(c(((e=o.value)==null?void 0:e.mobile)||"-"),1)]}),_:1}),s(l,{label:"نوع کاربری"},{default:t(()=>[n(c(i.value||"آنلاین"),1)]),_:1})]),_:1})]),_:1})}}});export{B as default}; +import{u as x}from"./auth-N_Kcbhfe.js";import{d as v,x as y,y as h,a as b,w as t,m as g,r as u,o as w,c as s,f as n,t as c,s as m}from"./index-CuIWfDbM.js";const B=v({__name:"myData",setup(C){const d=x(),_=g(null),o=m(()=>_.value??d.user),i=m(()=>{var a,r;return(r=(a=o.value)==null?void 0:a.user_type)==null?void 0:r.title});return y(async()=>{try{const{data:a}=await h.get("admin/users/me");_.value=a}catch(a){console.log(a)}}),(a,r)=>{const l=u("a-descriptions-item"),p=u("a-descriptions"),f=u("a-card");return w(),b(f,{title:"اطلاعات کاربری",class:"page-card"},{default:t(()=>[s(p,{column:{xxl:3,xl:3,lg:3,md:2,sm:2,xs:1}},{default:t(()=>[s(l,{label:"نام"},{default:t(()=>{var e;return[n(c(((e=o.value)==null?void 0:e.fname)||"-"),1)]}),_:1}),s(l,{label:"نام خانوادگی"},{default:t(()=>{var e;return[n(c(((e=o.value)==null?void 0:e.lname)||"-"),1)]}),_:1}),s(l,{label:"شماره تلفن"},{default:t(()=>{var e;return[n(c(((e=o.value)==null?void 0:e.mobile)||"-"),1)]}),_:1}),s(l,{label:"نوع کاربری"},{default:t(()=>[n(c(i.value||"آنلاین"),1)]),_:1})]),_:1})]),_:1})}}});export{B as default}; diff --git a/apps/admin-panel/dist/assets/newsletters-Dp-uDvrN.js b/apps/admin-panel/dist/assets/newsletters-DorV2BSu.js similarity index 79% rename from apps/admin-panel/dist/assets/newsletters-Dp-uDvrN.js rename to apps/admin-panel/dist/assets/newsletters-DorV2BSu.js index 079af16..c1fdeef 100644 --- a/apps/admin-panel/dist/assets/newsletters-Dp-uDvrN.js +++ b/apps/admin-panel/dist/assets/newsletters-DorV2BSu.js @@ -1 +1 @@ -import{a as l,b as t,X as c}from"./model-B4TWAN58.js";import{d,a as i,w as a,r as m,o as _,c as p,p as f,t as u,h as w,m as b,_ as x}from"./index-C9T3Vski.js";import"./filters-D6Nzbpog.js";import"./index-m6pCHaEa.js";import"./SettingOutlined-BizkfqvN.js";function h(){const e=new l("admin/misc/newsletter/list","لیست خبرنامه");return e.add(new t("name","نام").filterKey("email").filterText()),e.add(new t("mobile","شماره موبایل").filterNumber()),e.add(new t("op","عملیات").noSort().renderSlot("actions")),e}const N={class:"muted"},X=d({__name:"newsletters",setup(e){const s=h(),o=b(null);return(k,y)=>{const r=m("a-card");return _(),i(r,{title:"لیست خبرنامه",class:"page-card"},{default:a(()=>[p(c,{ref_key:"newsletter",ref:o,model:w(s),"mobile-cards":""},{actions:a(({record:n})=>[f("span",N,u(n.email??"-"),1)]),_:1},8,["model"])]),_:1})}}}),v=x(X,[["__scopeId","data-v-c5c2159a"]]);export{v as default}; +import{a as l,b as t,X as c}from"./model-D_9omyEY.js";import{d,a as i,w as a,r as m,o as _,c as p,p as f,t as u,h as w,m as b,_ as x}from"./index-CuIWfDbM.js";import"./filters-Cvt98RIq.js";import"./index-CPTngTRs.js";import"./SettingOutlined-BehgjsnT.js";function h(){const e=new l("admin/misc/newsletter/list","لیست خبرنامه");return e.add(new t("name","نام").filterKey("email").filterText()),e.add(new t("mobile","شماره موبایل").filterNumber()),e.add(new t("op","عملیات").noSort().renderSlot("actions")),e}const N={class:"muted"},X=d({__name:"newsletters",setup(e){const s=h(),o=b(null);return(k,y)=>{const r=m("a-card");return _(),i(r,{title:"لیست خبرنامه",class:"page-card"},{default:a(()=>[p(c,{ref_key:"newsletter",ref:o,model:w(s),"mobile-cards":""},{actions:a(({record:n})=>[f("span",N,u(n.email??"-"),1)]),_:1},8,["model"])]),_:1})}}}),v=x(X,[["__scopeId","data-v-c5c2159a"]]);export{v as default}; diff --git a/apps/admin-panel/dist/assets/offersIgnore-add-edit-B3lGBXKX.js b/apps/admin-panel/dist/assets/offersIgnore-add-edit-91QFt_p-.js similarity index 96% rename from apps/admin-panel/dist/assets/offersIgnore-add-edit-B3lGBXKX.js rename to apps/admin-panel/dist/assets/offersIgnore-add-edit-91QFt_p-.js index 9b2df30..d75e53d 100644 --- a/apps/admin-panel/dist/assets/offersIgnore-add-edit-B3lGBXKX.js +++ b/apps/admin-panel/dist/assets/offersIgnore-add-edit-91QFt_p-.js @@ -1 +1 @@ -import{a as y,b as d,X as w}from"./model-B4TWAN58.js";import{d as Q,x as W,b as c,p as u,c as n,w as s,m as p,y as I,G as b,r as m,o as f,F as v,e as F,t as r,h,i as x,f as V,_ as Y}from"./index-C9T3Vski.js";import"./filters-D6Nzbpog.js";import"./index-m6pCHaEa.js";import"./SettingOutlined-BizkfqvN.js";const Z={id:"page-user-view",class:"page-card"},ee={id:"user-data"},te={class:"grid-4"},le=["src"],ae={class:"mt-5"},ne={class:"grid-4 items-end"},oe="/img/no-items.png",se=Q({__name:"offersIgnore-add-edit",setup(ue){const _=p(!1),C=p(!1),S={1:"محصولات",2:"دسته بندی",3:"مشتری",4:"برند"},i=p(1),T=p(1),l=p([]),U=p([]),j=R(),A=$(),G=q(),M=z();function R(){const e=new y("admin/products/list","محصولات");return e.add(new d("id","کد").filterNumber()),e.add(new d("ProductImage","تصویر").renderSlot("image").noSort()),e.add(new d("title","نام محصول").filterText()),e.add(new d("product_code","کد محصول").filterText()),e}function $(){const e=new y("admin/categories/list","دسته بندی");return e.add(new d("id","کد").filterNumber()),e.add(new d("title","عنوان دسته").filterText()),e.add(new d("type_str","نوع نمایش").noSort()),e}function q(){const e=new y("admin/customers-omde/list","مشتریان");return e.add(new d("id","کد").filterNumber()),e.add(new d("name","نام و نام خانوادگی").filterText()),e.add(new d("mobile","موبایل").filterText().noSort()),e}function z(){const e=new y("admin/products/brands-table","برندها");return e.add(new d("id","کد").filterNumber()),e.add(new d("title","عنوان برند").filterText()),e}function B(e){return U.value.filter(t=>t.type===e).map(t=>t.item_id)}function k(e){const t=B(e);l.value=t.map(o=>({id:o}))}async function H(){var e,t;try{_.value=!0,await I.post("ignore",{type:i.value,item_id:l.value.map(o=>o.id)}),b.success("عملیات با موفقیت انجام شد"),await N(),k(i.value)}catch(o){console.log(o),b.error(((t=(e=o==null?void 0:o.response)==null?void 0:e.data)==null?void 0:t.message)??"خطا در ثبت اطلاعات.")}finally{_.value=!1}}async function J(){var e,t;try{C.value=!0,await I.delete(`ignore/${T.value}`),b.success("حذف شد"),await N(),k(i.value)}catch(o){b.error(((t=(e=o==null?void 0:o.response)==null?void 0:e.data)==null?void 0:t.message)??"خطا در حذف")}finally{C.value=!1}}async function N(){try{_.value=!0;const{data:e}=await I.get("ignore");U.value=e,l.value=B(1).map(t=>({id:t}))}catch(e){console.log(e),b.error("خطا در دریافت اطلاعات")}finally{_.value=!1}}return W(N),(e,t)=>{const o=m("a-select-option"),X=m("a-select"),L=m("a-form-item"),P=m("a-button"),D=m("a-card"),K=m("a-form"),E=m("a-spin"),O=m("a-popconfirm");return f(),c("div",Z,[u("div",ee,[n(E,{spinning:_.value},{default:s(()=>[n(K,{layout:"vertical"},{default:s(()=>[n(D,{title:"تعریف تخفیف",class:"mb-base mb-10"},{default:s(()=>[u("div",te,[n(L,{label:"نوع استثناء"},{default:s(()=>[n(X,{value:i.value,"onUpdate:value":t[0]||(t[0]=a=>i.value=a),onChange:k},{default:s(()=>[(f(),c(v,null,F(S,(a,g)=>n(o,{key:g,value:Number(g)},{default:s(()=>[V(r(a),1)]),_:2},1032,["value"])),64))]),_:1},8,["value"])]),_:1})]),i.value===1?(f(),c(v,{key:0},[u("h6",null,"تعداد "+r(l.value.length)+" محصول انتخاب شده است",1),n(w,{ref:"tblProducts",modelValue:l.value,"onUpdate:modelValue":t[1]||(t[1]=a=>l.value=a),model:h(j),"has-selection":!0,"mobile-cards":""},{image:s(({record:a})=>[u("img",{width:"90px",height:"90px",style:{"object-fit":"scale-down"},src:a.thumb&&a.thumb.full?a.thumb.full:oe},null,8,le)]),_:1},8,["modelValue","model"]),u("h6",null,"تعداد "+r(l.value.length)+" محصول انتخاب شده است",1)],64)):x("",!0),i.value===2?(f(),c(v,{key:1},[u("h6",null,"تعداد "+r(l.value.length)+" دسته بندی انتخاب شده است",1),n(w,{ref:"tblCategory",modelValue:l.value,"onUpdate:modelValue":t[2]||(t[2]=a=>l.value=a),model:h(A),"has-selection":!0,"mobile-cards":""},null,8,["modelValue","model"]),u("h6",null,"تعداد "+r(l.value.length)+" دسته بندی انتخاب شده است",1)],64)):x("",!0),i.value===3?(f(),c(v,{key:2},[u("h6",null,"تعداد "+r(l.value.length)+" مشتری انتخاب شده است",1),n(w,{ref:"tblCustomer",modelValue:l.value,"onUpdate:modelValue":t[3]||(t[3]=a=>l.value=a),model:h(G),"has-selection":!0,"mobile-cards":""},null,8,["modelValue","model"]),u("h6",null,"تعداد "+r(l.value.length)+" مشتری انتخاب شده است",1)],64)):x("",!0),i.value===4?(f(),c(v,{key:3},[u("h6",null,"تعداد "+r(l.value.length)+" برند انتخاب شده است",1),n(w,{ref:"tblBrand",modelValue:l.value,"onUpdate:modelValue":t[4]||(t[4]=a=>l.value=a),model:h(M),"has-selection":!0,"mobile-cards":""},null,8,["modelValue","model"]),u("h6",null,"تعداد "+r(l.value.length)+" برند انتخاب شده است",1)],64)):x("",!0),u("div",ae,[n(P,{type:"primary",class:"mr-4 form-submit",onClick:H},{default:s(()=>[...t[6]||(t[6]=[V("ثبت",-1)])]),_:1})])]),_:1})]),_:1})]),_:1},8,["spinning"]),n(E,{spinning:C.value},{default:s(()=>[n(D,{title:"حذف نوع استثناء"},{default:s(()=>[u("div",ne,[n(L,{label:"نوع"},{default:s(()=>[n(X,{value:T.value,"onUpdate:value":t[5]||(t[5]=a=>T.value=a)},{default:s(()=>[(f(),c(v,null,F(S,(a,g)=>n(o,{key:g,value:Number(g)},{default:s(()=>[V(r(a),1)]),_:2},1032,["value"])),64))]),_:1},8,["value"])]),_:1}),n(O,{title:"آیا مطمئن هستید؟","ok-text":"بله","cancel-text":"خیر",onConfirm:J},{default:s(()=>[n(P,{danger:""},{default:s(()=>[...t[7]||(t[7]=[V("حذف",-1)])]),_:1})]),_:1})])]),_:1})]),_:1},8,["spinning"])])])}}}),fe=Y(se,[["__scopeId","data-v-44cb9944"]]);export{fe as default}; +import{a as y,b as d,X as w}from"./model-D_9omyEY.js";import{d as Q,x as W,b as c,p as u,c as n,w as s,m as p,y as I,G as b,r as m,o as f,F as v,e as F,t as r,h,i as x,f as V,_ as Y}from"./index-CuIWfDbM.js";import"./filters-Cvt98RIq.js";import"./index-CPTngTRs.js";import"./SettingOutlined-BehgjsnT.js";const Z={id:"page-user-view",class:"page-card"},ee={id:"user-data"},te={class:"grid-4"},le=["src"],ae={class:"mt-5"},ne={class:"grid-4 items-end"},oe="/img/no-items.png",se=Q({__name:"offersIgnore-add-edit",setup(ue){const _=p(!1),C=p(!1),S={1:"محصولات",2:"دسته بندی",3:"مشتری",4:"برند"},i=p(1),T=p(1),l=p([]),U=p([]),j=R(),A=$(),G=q(),M=z();function R(){const e=new y("admin/products/list","محصولات");return e.add(new d("id","کد").filterNumber()),e.add(new d("ProductImage","تصویر").renderSlot("image").noSort()),e.add(new d("title","نام محصول").filterText()),e.add(new d("product_code","کد محصول").filterText()),e}function $(){const e=new y("admin/categories/list","دسته بندی");return e.add(new d("id","کد").filterNumber()),e.add(new d("title","عنوان دسته").filterText()),e.add(new d("type_str","نوع نمایش").noSort()),e}function q(){const e=new y("admin/customers-omde/list","مشتریان");return e.add(new d("id","کد").filterNumber()),e.add(new d("name","نام و نام خانوادگی").filterText()),e.add(new d("mobile","موبایل").filterText().noSort()),e}function z(){const e=new y("admin/products/brands-table","برندها");return e.add(new d("id","کد").filterNumber()),e.add(new d("title","عنوان برند").filterText()),e}function B(e){return U.value.filter(t=>t.type===e).map(t=>t.item_id)}function k(e){const t=B(e);l.value=t.map(o=>({id:o}))}async function H(){var e,t;try{_.value=!0,await I.post("ignore",{type:i.value,item_id:l.value.map(o=>o.id)}),b.success("عملیات با موفقیت انجام شد"),await N(),k(i.value)}catch(o){console.log(o),b.error(((t=(e=o==null?void 0:o.response)==null?void 0:e.data)==null?void 0:t.message)??"خطا در ثبت اطلاعات.")}finally{_.value=!1}}async function J(){var e,t;try{C.value=!0,await I.delete(`ignore/${T.value}`),b.success("حذف شد"),await N(),k(i.value)}catch(o){b.error(((t=(e=o==null?void 0:o.response)==null?void 0:e.data)==null?void 0:t.message)??"خطا در حذف")}finally{C.value=!1}}async function N(){try{_.value=!0;const{data:e}=await I.get("ignore");U.value=e,l.value=B(1).map(t=>({id:t}))}catch(e){console.log(e),b.error("خطا در دریافت اطلاعات")}finally{_.value=!1}}return W(N),(e,t)=>{const o=m("a-select-option"),X=m("a-select"),L=m("a-form-item"),P=m("a-button"),D=m("a-card"),K=m("a-form"),E=m("a-spin"),O=m("a-popconfirm");return f(),c("div",Z,[u("div",ee,[n(E,{spinning:_.value},{default:s(()=>[n(K,{layout:"vertical"},{default:s(()=>[n(D,{title:"تعریف تخفیف",class:"mb-base mb-10"},{default:s(()=>[u("div",te,[n(L,{label:"نوع استثناء"},{default:s(()=>[n(X,{value:i.value,"onUpdate:value":t[0]||(t[0]=a=>i.value=a),onChange:k},{default:s(()=>[(f(),c(v,null,F(S,(a,g)=>n(o,{key:g,value:Number(g)},{default:s(()=>[V(r(a),1)]),_:2},1032,["value"])),64))]),_:1},8,["value"])]),_:1})]),i.value===1?(f(),c(v,{key:0},[u("h6",null,"تعداد "+r(l.value.length)+" محصول انتخاب شده است",1),n(w,{ref:"tblProducts",modelValue:l.value,"onUpdate:modelValue":t[1]||(t[1]=a=>l.value=a),model:h(j),"has-selection":!0,"mobile-cards":""},{image:s(({record:a})=>[u("img",{width:"90px",height:"90px",style:{"object-fit":"scale-down"},src:a.thumb&&a.thumb.full?a.thumb.full:oe},null,8,le)]),_:1},8,["modelValue","model"]),u("h6",null,"تعداد "+r(l.value.length)+" محصول انتخاب شده است",1)],64)):x("",!0),i.value===2?(f(),c(v,{key:1},[u("h6",null,"تعداد "+r(l.value.length)+" دسته بندی انتخاب شده است",1),n(w,{ref:"tblCategory",modelValue:l.value,"onUpdate:modelValue":t[2]||(t[2]=a=>l.value=a),model:h(A),"has-selection":!0,"mobile-cards":""},null,8,["modelValue","model"]),u("h6",null,"تعداد "+r(l.value.length)+" دسته بندی انتخاب شده است",1)],64)):x("",!0),i.value===3?(f(),c(v,{key:2},[u("h6",null,"تعداد "+r(l.value.length)+" مشتری انتخاب شده است",1),n(w,{ref:"tblCustomer",modelValue:l.value,"onUpdate:modelValue":t[3]||(t[3]=a=>l.value=a),model:h(G),"has-selection":!0,"mobile-cards":""},null,8,["modelValue","model"]),u("h6",null,"تعداد "+r(l.value.length)+" مشتری انتخاب شده است",1)],64)):x("",!0),i.value===4?(f(),c(v,{key:3},[u("h6",null,"تعداد "+r(l.value.length)+" برند انتخاب شده است",1),n(w,{ref:"tblBrand",modelValue:l.value,"onUpdate:modelValue":t[4]||(t[4]=a=>l.value=a),model:h(M),"has-selection":!0,"mobile-cards":""},null,8,["modelValue","model"]),u("h6",null,"تعداد "+r(l.value.length)+" برند انتخاب شده است",1)],64)):x("",!0),u("div",ae,[n(P,{type:"primary",class:"mr-4 form-submit",onClick:H},{default:s(()=>[...t[6]||(t[6]=[V("ثبت",-1)])]),_:1})])]),_:1})]),_:1})]),_:1},8,["spinning"]),n(E,{spinning:C.value},{default:s(()=>[n(D,{title:"حذف نوع استثناء"},{default:s(()=>[u("div",ne,[n(L,{label:"نوع"},{default:s(()=>[n(X,{value:T.value,"onUpdate:value":t[5]||(t[5]=a=>T.value=a)},{default:s(()=>[(f(),c(v,null,F(S,(a,g)=>n(o,{key:g,value:Number(g)},{default:s(()=>[V(r(a),1)]),_:2},1032,["value"])),64))]),_:1},8,["value"])]),_:1}),n(O,{title:"آیا مطمئن هستید؟","ok-text":"بله","cancel-text":"خیر",onConfirm:J},{default:s(()=>[n(P,{danger:""},{default:s(()=>[...t[7]||(t[7]=[V("حذف",-1)])]),_:1})]),_:1})])]),_:1})]),_:1},8,["spinning"])])])}}}),fe=Y(se,[["__scopeId","data-v-44cb9944"]]);export{fe as default}; diff --git a/apps/admin-panel/dist/assets/order_item-wHl0NgIE.js b/apps/admin-panel/dist/assets/order_item-BFmM5TXK.js similarity index 91% rename from apps/admin-panel/dist/assets/order_item-wHl0NgIE.js rename to apps/admin-panel/dist/assets/order_item-BFmM5TXK.js index 4ecc840..c88eaca 100644 --- a/apps/admin-panel/dist/assets/order_item-wHl0NgIE.js +++ b/apps/admin-panel/dist/assets/order_item-BFmM5TXK.js @@ -1 +1 @@ -import{D as x}from"./DateInput-CCBYpdHy.js";import{j as z}from"./filters-D6Nzbpog.js";import{d as B,x as D,b as f,c as e,w as t,m as i,y as b,r as n,z as E,o as v,p as h,f as d,t as u,i as w,F,h as O,G as S,_ as T}from"./index-C9T3Vski.js";import"./index-m6pCHaEa.js";const $={id:"page-user-list"},q={class:"grid-4 filter-grid"},G={key:0,class:"summary"},M=B({__name:"order_item",setup(A){const _=i(!1),g=i([]),r=i(void 0),l=E({start_date:void 0,end_date:void 0}),I=[{title:"شماره سفارش",dataIndex:"order_number"},{title:"مشتری",dataIndex:"customer"},{title:"محصول",dataIndex:"product"},{title:"تنوع",dataIndex:"variant"},{title:"تعداد",dataIndex:"qty"},{title:"وزن واحد",dataIndex:"w"},{title:"وزن کل",dataIndex:"total_w"},{title:"تاریخ",dataIndex:"caj"}];async function y(){try{_.value=!0;const{data:o}=await b.get("report/order-item",{params:l});g.value=o.rows,r.value=o.summary}catch(o){console.log(o)}finally{_.value=!1}}const m=i(!1);async function V(){try{m.value=!0;const{data:o}=await b.get("admin/report/order-items",{params:l,responseType:"blob"}),a=URL.createObjectURL(o),s=document.createElement("a");s.href=a,s.download=`report-${l.start_date??"all"}-${l.end_date??"all"}.xlsx`,s.click(),URL.revokeObjectURL(a)}catch(o){console.log(o),S.error("خطا در دریافت فایل")}finally{m.value=!1}}return D(y),(o,a)=>{const s=n("a-button"),k=n("a-space"),j=n("a-form-item"),C=n("a-form"),p=n("a-tag"),U=n("a-table"),L=n("a-card"),N=n("a-spin");return v(),f("div",$,[e(N,{spinning:_.value},{default:t(()=>[e(L,{title:"گزارش تجمیعی سفارشات و اسناد مالی",class:"page-card table-scroll"},{default:t(()=>[e(C,{layout:"vertical"},{default:t(()=>[h("div",q,[e(x,{modelValue:l.start_date,"onUpdate:modelValue":a[0]||(a[0]=c=>l.start_date=c),label:"از تاریخ"},null,8,["modelValue"]),e(x,{modelValue:l.end_date,"onUpdate:modelValue":a[1]||(a[1]=c=>l.end_date=c),label:"تا تاریخ"},null,8,["modelValue"]),e(j,{label:" "},{default:t(()=>[e(k,null,{default:t(()=>[e(s,{type:"primary",onClick:y},{default:t(()=>[...a[2]||(a[2]=[d("اعمال",-1)])]),_:1}),e(s,{loading:m.value,onClick:V},{default:t(()=>[...a[3]||(a[3]=[d("دریافت فایل اکسل",-1)])]),_:1},8,["loading"])]),_:1})]),_:1})])]),_:1}),r.value?(v(),f("div",G,[e(p,{color:"blue"},{default:t(()=>[d("تعداد سفارش: "+u(r.value.order_count),1)]),_:1}),e(p,{color:"blue"},{default:t(()=>[d("تعداد آیتم: "+u(r.value.item_count),1)]),_:1}),e(p,{color:"green"},{default:t(()=>[d("مجموع وزن: "+u(r.value.total_weight)+" گرم",1)]),_:1})])):w("",!0),e(U,{class:"mt-4",size:"small","data-source":g.value,columns:I,pagination:{pageSize:20},"row-key":"order_id"},{bodyCell:t(({column:c,record:R})=>[c.dataIndex==="caj"?(v(),f(F,{key:0},[d(u(O(z)(R.caj)),1)],64)):w("",!0)]),_:1},8,["data-source"])]),_:1})]),_:1},8,["spinning"])])}}}),Q=T(M,[["__scopeId","data-v-44526675"]]);export{Q as default}; +import{D as x}from"./DateInput-CJzwI_r_.js";import{j as z}from"./filters-Cvt98RIq.js";import{d as B,x as D,b as f,c as e,w as t,m as i,y as b,r as n,z as E,o as v,p as h,f as d,t as u,i as w,F,h as O,G as S,_ as T}from"./index-CuIWfDbM.js";import"./index-CPTngTRs.js";const $={id:"page-user-list"},q={class:"grid-4 filter-grid"},G={key:0,class:"summary"},M=B({__name:"order_item",setup(A){const _=i(!1),g=i([]),r=i(void 0),l=E({start_date:void 0,end_date:void 0}),I=[{title:"شماره سفارش",dataIndex:"order_number"},{title:"مشتری",dataIndex:"customer"},{title:"محصول",dataIndex:"product"},{title:"تنوع",dataIndex:"variant"},{title:"تعداد",dataIndex:"qty"},{title:"وزن واحد",dataIndex:"w"},{title:"وزن کل",dataIndex:"total_w"},{title:"تاریخ",dataIndex:"caj"}];async function y(){try{_.value=!0;const{data:o}=await b.get("report/order-item",{params:l});g.value=o.rows,r.value=o.summary}catch(o){console.log(o)}finally{_.value=!1}}const m=i(!1);async function V(){try{m.value=!0;const{data:o}=await b.get("admin/report/order-items",{params:l,responseType:"blob"}),a=URL.createObjectURL(o),s=document.createElement("a");s.href=a,s.download=`report-${l.start_date??"all"}-${l.end_date??"all"}.xlsx`,s.click(),URL.revokeObjectURL(a)}catch(o){console.log(o),S.error("خطا در دریافت فایل")}finally{m.value=!1}}return D(y),(o,a)=>{const s=n("a-button"),k=n("a-space"),j=n("a-form-item"),C=n("a-form"),p=n("a-tag"),U=n("a-table"),L=n("a-card"),N=n("a-spin");return v(),f("div",$,[e(N,{spinning:_.value},{default:t(()=>[e(L,{title:"گزارش تجمیعی سفارشات و اسناد مالی",class:"page-card table-scroll"},{default:t(()=>[e(C,{layout:"vertical"},{default:t(()=>[h("div",q,[e(x,{modelValue:l.start_date,"onUpdate:modelValue":a[0]||(a[0]=c=>l.start_date=c),label:"از تاریخ"},null,8,["modelValue"]),e(x,{modelValue:l.end_date,"onUpdate:modelValue":a[1]||(a[1]=c=>l.end_date=c),label:"تا تاریخ"},null,8,["modelValue"]),e(j,{label:" "},{default:t(()=>[e(k,null,{default:t(()=>[e(s,{type:"primary",onClick:y},{default:t(()=>[...a[2]||(a[2]=[d("اعمال",-1)])]),_:1}),e(s,{loading:m.value,onClick:V},{default:t(()=>[...a[3]||(a[3]=[d("دریافت فایل اکسل",-1)])]),_:1},8,["loading"])]),_:1})]),_:1})])]),_:1}),r.value?(v(),f("div",G,[e(p,{color:"blue"},{default:t(()=>[d("تعداد سفارش: "+u(r.value.order_count),1)]),_:1}),e(p,{color:"blue"},{default:t(()=>[d("تعداد آیتم: "+u(r.value.item_count),1)]),_:1}),e(p,{color:"green"},{default:t(()=>[d("مجموع وزن: "+u(r.value.total_weight)+" گرم",1)]),_:1})])):w("",!0),e(U,{class:"mt-4",size:"small","data-source":g.value,columns:I,pagination:{pageSize:20},"row-key":"order_id"},{bodyCell:t(({column:c,record:R})=>[c.dataIndex==="caj"?(v(),f(F,{key:0},[d(u(O(z)(R.caj)),1)],64)):w("",!0)]),_:1},8,["data-source"])]),_:1})]),_:1},8,["spinning"])])}}}),Q=T(M,[["__scopeId","data-v-44526675"]]);export{Q as default}; diff --git a/apps/admin-panel/dist/assets/product-Xx7JAqqz.js b/apps/admin-panel/dist/assets/product-BTYL3Cka.js similarity index 89% rename from apps/admin-panel/dist/assets/product-Xx7JAqqz.js rename to apps/admin-panel/dist/assets/product-BTYL3Cka.js index 4f54ad0..73b1de6 100644 --- a/apps/admin-panel/dist/assets/product-Xx7JAqqz.js +++ b/apps/admin-panel/dist/assets/product-BTYL3Cka.js @@ -1 +1 @@ -import{D as _}from"./DateInput-CCBYpdHy.js";import{d as k,x as C,b as m,c as t,w as o,m as c,y as N,r as a,z,o as p,p as B,f,t as D,i as S,_ as U}from"./index-C9T3Vski.js";import"./index-m6pCHaEa.js";const E={id:"page-user-list"},M={class:"grid-4 filter-grid"},T={key:0,class:"summary"},h=k({__name:"product",setup(j){const l=c(!1),i=c([]),d=c(void 0),n=z({start_date:void 0,end_date:void 0}),v=[{title:"نام محصول",dataIndex:"title"},{title:"تعداد فروش رفته",dataIndex:"total"},{title:"وزن فروش رفته",dataIndex:"w"},{title:"تعداد سفارش",dataIndex:"order_count"}];async function u(){try{l.value=!0;const{data:s}=await N.get("report/product",{params:n});i.value=s.rows,d.value=s.summary}catch(s){console.log(s)}finally{l.value=!1}}return C(u),(s,e)=>{const g=a("a-button"),y=a("a-form-item"),x=a("a-form"),b=a("a-tag"),V=a("a-table"),w=a("a-card"),I=a("a-spin");return p(),m("div",E,[t(I,{spinning:l.value},{default:o(()=>[t(w,{title:"گزارش محصولات",class:"page-card table-scroll"},{default:o(()=>[t(x,{layout:"vertical"},{default:o(()=>[B("div",M,[t(_,{modelValue:n.start_date,"onUpdate:modelValue":e[0]||(e[0]=r=>n.start_date=r),label:"از تاریخ"},null,8,["modelValue"]),t(_,{modelValue:n.end_date,"onUpdate:modelValue":e[1]||(e[1]=r=>n.end_date=r),label:"تا تاریخ"},null,8,["modelValue"]),t(y,{label:" "},{default:o(()=>[t(g,{type:"primary",onClick:u},{default:o(()=>[...e[2]||(e[2]=[f("اعمال",-1)])]),_:1})]),_:1})])]),_:1}),d.value?(p(),m("div",T,[t(b,{color:"blue"},{default:o(()=>[f("تعداد محصول: "+D(d.value.product_count),1)]),_:1})])):S("",!0),t(V,{class:"mt-4",size:"small","data-source":i.value,columns:v,pagination:{pageSize:20},"row-key":"id"},null,8,["data-source"])]),_:1})]),_:1},8,["spinning"])])}}}),G=U(h,[["__scopeId","data-v-6ed1013a"]]);export{G as default}; +import{D as _}from"./DateInput-CJzwI_r_.js";import{d as k,x as C,b as m,c as t,w as o,m as c,y as N,r as a,z,o as p,p as B,f,t as D,i as S,_ as U}from"./index-CuIWfDbM.js";import"./index-CPTngTRs.js";const E={id:"page-user-list"},M={class:"grid-4 filter-grid"},T={key:0,class:"summary"},h=k({__name:"product",setup(j){const l=c(!1),i=c([]),d=c(void 0),n=z({start_date:void 0,end_date:void 0}),v=[{title:"نام محصول",dataIndex:"title"},{title:"تعداد فروش رفته",dataIndex:"total"},{title:"وزن فروش رفته",dataIndex:"w"},{title:"تعداد سفارش",dataIndex:"order_count"}];async function u(){try{l.value=!0;const{data:s}=await N.get("report/product",{params:n});i.value=s.rows,d.value=s.summary}catch(s){console.log(s)}finally{l.value=!1}}return C(u),(s,e)=>{const g=a("a-button"),y=a("a-form-item"),x=a("a-form"),b=a("a-tag"),V=a("a-table"),w=a("a-card"),I=a("a-spin");return p(),m("div",E,[t(I,{spinning:l.value},{default:o(()=>[t(w,{title:"گزارش محصولات",class:"page-card table-scroll"},{default:o(()=>[t(x,{layout:"vertical"},{default:o(()=>[B("div",M,[t(_,{modelValue:n.start_date,"onUpdate:modelValue":e[0]||(e[0]=r=>n.start_date=r),label:"از تاریخ"},null,8,["modelValue"]),t(_,{modelValue:n.end_date,"onUpdate:modelValue":e[1]||(e[1]=r=>n.end_date=r),label:"تا تاریخ"},null,8,["modelValue"]),t(y,{label:" "},{default:o(()=>[t(g,{type:"primary",onClick:u},{default:o(()=>[...e[2]||(e[2]=[f("اعمال",-1)])]),_:1})]),_:1})])]),_:1}),d.value?(p(),m("div",T,[t(b,{color:"blue"},{default:o(()=>[f("تعداد محصول: "+D(d.value.product_count),1)]),_:1})])):S("",!0),t(V,{class:"mt-4",size:"small","data-source":i.value,columns:v,pagination:{pageSize:20},"row-key":"id"},null,8,["data-source"])]),_:1})]),_:1},8,["spinning"])])}}}),G=U(h,[["__scopeId","data-v-6ed1013a"]]);export{G as default}; diff --git a/apps/admin-panel/dist/assets/productListModel-D3MWMWSR.js b/apps/admin-panel/dist/assets/productListModel-CFcqDeGA.js similarity index 92% rename from apps/admin-panel/dist/assets/productListModel-D3MWMWSR.js rename to apps/admin-panel/dist/assets/productListModel-CFcqDeGA.js index 391d271..b08fdd2 100644 --- a/apps/admin-panel/dist/assets/productListModel-D3MWMWSR.js +++ b/apps/admin-panel/dist/assets/productListModel-CFcqDeGA.js @@ -1 +1 @@ -import{a as o,b as e}from"./model-B4TWAN58.js";function n(d=!0){const t=new o("admin/products/list","لیست محصولات");return t.add(new e("id","کد").filterNumber()),t.add(new e("ProductImage","تصویر محصول").renderSlot("image").noSort()),t.add(new e("title","نام محصول").filterText()),t.add(new e("brand.title","برند").filterText()),t.add(new e("category.collection.title","دسته بندی").filterText()),t.add(new e("product_code","کد محصول").filterText()),t.add(new e("tags","برچسب‌ها").renderSlot("tags").noSort()),d&&t.add(new e("show_type","نوع نمایش").filterSelect({1:"سایت",2:"گوشی",3:"سایت و گوشی"}).renderSlot("show_type")),t.add(new e("accounting_stock","حسابداری / نمایش").renderSlot("accounting").noSort()),t.add(new e("action","عملیات").renderSlot("op").noSort()),t}export{n as b}; +import{a as o,b as e}from"./model-D_9omyEY.js";function n(d=!0){const t=new o("admin/products/list","لیست محصولات");return t.add(new e("id","کد").filterNumber()),t.add(new e("ProductImage","تصویر محصول").renderSlot("image").noSort()),t.add(new e("title","نام محصول").filterText()),t.add(new e("brand.title","برند").filterText()),t.add(new e("category.collection.title","دسته بندی").filterText()),t.add(new e("product_code","کد محصول").filterText()),t.add(new e("tags","برچسب‌ها").renderSlot("tags").noSort()),d&&t.add(new e("show_type","نوع نمایش").filterSelect({1:"سایت",2:"گوشی",3:"سایت و گوشی"}).renderSlot("show_type")),t.add(new e("accounting_stock","حسابداری / نمایش").renderSlot("accounting").noSort()),t.add(new e("action","عملیات").renderSlot("op").noSort()),t}export{n as b}; diff --git a/apps/admin-panel/dist/assets/promotion_add_edit-BpSQ8j9m.js b/apps/admin-panel/dist/assets/promotion_add_edit-BpSQ8j9m.js new file mode 100644 index 0000000..e618d65 --- /dev/null +++ b/apps/admin-panel/dist/assets/promotion_add_edit-BpSQ8j9m.js @@ -0,0 +1 @@ +import{_ as o}from"./promotion_add_edit.vue_vue_type_script_setup_true_lang-BcDNzdIE.js";import"./PromotionForm-0qEJgxJk.js";import"./index-CuIWfDbM.js";import"./select--BgT6D7O.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-DXuLuiBZ.js";export{o as default}; diff --git a/apps/admin-panel/dist/assets/promotion_add_edit-CgFIHrlC.js b/apps/admin-panel/dist/assets/promotion_add_edit-CgFIHrlC.js deleted file mode 100644 index 17bfea2..0000000 --- a/apps/admin-panel/dist/assets/promotion_add_edit-CgFIHrlC.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as o}from"./promotion_add_edit.vue_vue_type_script_setup_true_lang-Bdn0NdEJ.js";import"./PromotionForm-52rIR-eP.js";import"./index-C9T3Vski.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-Du4lPDHl.js";export{o as default}; diff --git a/apps/admin-panel/dist/assets/promotion_add_edit.vue_vue_type_script_setup_true_lang-Bdn0NdEJ.js b/apps/admin-panel/dist/assets/promotion_add_edit.vue_vue_type_script_setup_true_lang-BcDNzdIE.js similarity index 72% rename from apps/admin-panel/dist/assets/promotion_add_edit.vue_vue_type_script_setup_true_lang-Bdn0NdEJ.js rename to apps/admin-panel/dist/assets/promotion_add_edit.vue_vue_type_script_setup_true_lang-BcDNzdIE.js index d7f2954..4f379c4 100644 --- a/apps/admin-panel/dist/assets/promotion_add_edit.vue_vue_type_script_setup_true_lang-Bdn0NdEJ.js +++ b/apps/admin-panel/dist/assets/promotion_add_edit.vue_vue_type_script_setup_true_lang-BcDNzdIE.js @@ -1 +1 @@ -import{P as p}from"./PromotionForm-52rIR-eP.js";import{d as s,a as i,o as r}from"./index-C9T3Vski.js";const d=s({__name:"promotion_add_edit",props:{open:{type:Boolean},id:{}},emits:["update:open","success"],setup(o){return(n,e)=>(r(),i(p,{title:"تعریف تخفیف","allow-customer-scope":!0,open:o.open,id:o.id,"onUpdate:open":e[0]||(e[0]=t=>n.$emit("update:open",t)),onSuccess:e[1]||(e[1]=t=>n.$emit("success"))},null,8,["open","id"]))}});export{d as _}; +import{P as p}from"./PromotionForm-0qEJgxJk.js";import{d as s,a as i,o as r}from"./index-CuIWfDbM.js";const d=s({__name:"promotion_add_edit",props:{open:{type:Boolean},id:{}},emits:["update:open","success"],setup(o){return(n,e)=>(r(),i(p,{title:"تعریف تخفیف","allow-customer-scope":!0,open:o.open,id:o.id,"onUpdate:open":e[0]||(e[0]=t=>n.$emit("update:open",t)),onSuccess:e[1]||(e[1]=t=>n.$emit("success"))},null,8,["open","id"]))}});export{d as _}; diff --git a/apps/admin-panel/dist/assets/promotion_list-CrT5dPh9.js b/apps/admin-panel/dist/assets/promotion_list-CrT5dPh9.js new file mode 100644 index 0000000..0d09479 --- /dev/null +++ b/apps/admin-panel/dist/assets/promotion_list-CrT5dPh9.js @@ -0,0 +1 @@ +import{a as O,b as s,X as U}from"./model-D_9omyEY.js";import{_ as C}from"./ListPageHeader.vue_vue_type_script_setup_true_lang-ReVXBl8h.js";import{_ as I}from"./promotion_add_edit.vue_vue_type_script_setup_true_lang-BcDNzdIE.js";import{_ as G}from"./promotion_tak_add_edit.vue_vue_type_script_setup_true_lang-DUmF7fkx.js";import{d as L,u as M,b as R,c as u,w as n,r as w,o as r,h as p,a as l,E as q,i as b,D as z,p as D,f as g,t as A,m as x,y as F,G as B,_ as H}from"./index-CuIWfDbM.js";import{j as E}from"./filters-Cvt98RIq.js";import"./SettingOutlined-BehgjsnT.js";import"./PromotionForm-0qEJgxJk.js";import"./select--BgT6D7O.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-DXuLuiBZ.js";import"./index-CPTngTRs.js";function J(){const a=new O("admin/promotions/list","لیست تخفیف ها");return a.add(new s("id","کد").filterNumber()),a.add(new s("title","نام پروموشن").filterText()),a.add(new s("promotion_type_str","نوع پروموشن").noSort()),a.add(new s("platform","پلتفرم نمایش ").noSort()),a.add(new s("status","وضعیت").renderSlot("sts").noSort()),a.add(new s("start","تاریخ شروع").renderSlot("startDate").noSort()),a.add(new s("end","تاریخ پایان ").renderSlot("endDate").noSort()),a.add(new s("action","عملیات").renderSlot("op").noSort()),a}const K={id:"page-user-list"},Q={class:"list-page-header-row"},W=L({__name:"promotion_list",setup(a){const v=M(),k=o=>!!v.hasPermission(o),N=J(),y=x(null),d=x(!1),m=x(void 0),S=x(void 0);function $(o){S.value=o,m.value=void 0,d.value=!0}function V(o){return v.isSuperAdmin&&k("offers.list.tak.edit")&&o.type_customer===1||k("offers.list.edit")&&o.type_customer===2}function P(o){return v.isSuperAdmin&&k("offers.list.tak.remove")&&o.type_customer===1||k("offers.list.remove")&&o.type_customer===2}function T(o){S.value=o.type_customer===1?"tak":"omde",m.value=o.id,d.value=!0}async function X(o){var e,f,c;try{await F.delete(`major/promotion/${o.id}`),B.success("تخفیف حذف شد"),(e=y.value)==null||e.fetch()}catch(_){B.error(((c=(f=_==null?void 0:_.response)==null?void 0:f.data)==null?void 0:c.message)??"خطا در حذف تخفیف")}}return(o,e)=>{const f=w("a-tag"),c=w("a-tooltip"),_=w("a-popconfirm"),j=w("a-card");return r(),R("div",K,[u(j,{title:"لیست تخفیف ها",class:"page-card"},{default:n(()=>[u(U,{ref_key:"tbl",ref:y,model:p(N),"mobile-cards":""},{add:n(()=>[D("div",Q,[u(C,{rid:"offers.create","add-label":"افزودن تخفیف عمده",onAdd:e[0]||(e[0]=t=>$("omde"))}),p(v).isSuperAdmin?(r(),l(C,{key:0,rid:"offers.create.tak","add-label":"افزودن تخفیف تک",onAdd:e[1]||(e[1]=t=>$("tak"))})):b("",!0)])]),sts:n(({record:t})=>[t.status===1?(r(),l(f,{key:0,color:"green"},{default:n(()=>[...e[6]||(e[6]=[g("فعال",-1)])]),_:1})):(r(),l(f,{key:1,color:"red"},{default:n(()=>[...e[7]||(e[7]=[g("غیر فعال",-1)])]),_:1}))]),startDate:n(({text:t})=>[g(A(t?p(E)(t):"-"),1)]),endDate:n(({text:t})=>[g(A(t?p(E)(t):"-"),1)]),op:n(({record:t})=>[V(t)?(r(),l(c,{key:0,title:"ویرایش"},{default:n(()=>[u(p(q),{class:"cursor-pointer mx-1 text-primary",onClick:i=>T(t)},null,8,["onClick"])]),_:2},1024)):b("",!0),P(t)?(r(),l(c,{key:1,title:"حذف"},{default:n(()=>[u(_,{placement:"top","ok-text":"بله","cancel-text":"خیر",onConfirm:i=>X(t)},{title:n(()=>[...e[8]||(e[8]=[D("p",null,"آیا مطمئن به حذف تخفیف مورد نظر هستید ؟",-1)])]),default:n(()=>[u(p(z),{class:"cursor-pointer mx-1 text-danger"})]),_:1},8,["onConfirm"])]),_:2},1024)):b("",!0)]),_:1},8,["model"]),S.value==="omde"?(r(),l(I,{key:m.value??"new",open:d.value,id:m.value,"onUpdate:open":e[2]||(e[2]=t=>d.value=t),onSuccess:e[3]||(e[3]=t=>{var i;return(i=y.value)==null?void 0:i.fetch()})},null,8,["open","id"])):S.value==="tak"?(r(),l(G,{key:m.value??"new",open:d.value,id:m.value,"onUpdate:open":e[4]||(e[4]=t=>d.value=t),onSuccess:e[5]||(e[5]=t=>{var i;return(i=y.value)==null?void 0:i.fetch()})},null,8,["open","id"])):b("",!0)]),_:1})])}}}),le=H(W,[["__scopeId","data-v-25a20ef5"]]);export{le as default}; diff --git a/apps/admin-panel/dist/assets/promotion_list-D-4sV3K8.js b/apps/admin-panel/dist/assets/promotion_list-D-4sV3K8.js deleted file mode 100644 index fab4325..0000000 --- a/apps/admin-panel/dist/assets/promotion_list-D-4sV3K8.js +++ /dev/null @@ -1 +0,0 @@ -import{a as O,b as s,X as U}from"./model-B4TWAN58.js";import{_ as C}from"./ListPageHeader.vue_vue_type_script_setup_true_lang-BDf2BWcO.js";import{_ as I}from"./promotion_add_edit.vue_vue_type_script_setup_true_lang-Bdn0NdEJ.js";import{_ as G}from"./promotion_tak_add_edit.vue_vue_type_script_setup_true_lang-CfQ1fkyJ.js";import{d as L,u as M,b as R,c as m,w as n,r as w,o as r,h as p,a as l,E as q,i as b,D as z,p as D,f as g,t as A,m as x,y as F,G as B,_ as H}from"./index-C9T3Vski.js";import{j as E}from"./filters-D6Nzbpog.js";import"./SettingOutlined-BizkfqvN.js";import"./PromotionForm-52rIR-eP.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-Du4lPDHl.js";import"./index-m6pCHaEa.js";function J(){const a=new O("admin/promotions/list","لیست تخفیف ها");return a.add(new s("id","کد").filterNumber()),a.add(new s("title","نام پروموشن").filterText()),a.add(new s("promotion_type_str","نوع پروموشن").noSort()),a.add(new s("platform","پلتفرم نمایش ").noSort()),a.add(new s("status","وضعیت").renderSlot("sts").noSort()),a.add(new s("start","تاریخ شروع").renderSlot("startDate").noSort()),a.add(new s("end","تاریخ پایان ").renderSlot("endDate").noSort()),a.add(new s("action","عملیات").renderSlot("op").noSort()),a}const K={id:"page-user-list"},Q={class:"list-page-header-row"},W=L({__name:"promotion_list",setup(a){const v=M(),k=o=>!!v.hasPermission(o),N=J(),y=x(null),d=x(!1),u=x(void 0),S=x(void 0);function $(o){S.value=o,u.value=void 0,d.value=!0}function V(o){return v.isSuperAdmin&&k("offers.list.tak.edit")&&o.type_customer===1||k("offers.list.edit")&&o.type_customer===2}function P(o){return v.isSuperAdmin&&k("offers.list.tak.remove")&&o.type_customer===1||k("offers.list.remove")&&o.type_customer===2}function T(o){S.value=o.type_customer===1?"tak":"omde",u.value=o.id,d.value=!0}async function X(o){var e,f,c;try{await F.delete(`major/promotion/${o.id}`),B.success("تخفیف حذف شد"),(e=y.value)==null||e.fetch()}catch(_){B.error(((c=(f=_==null?void 0:_.response)==null?void 0:f.data)==null?void 0:c.message)??"خطا در حذف تخفیف")}}return(o,e)=>{const f=w("a-tag"),c=w("a-tooltip"),_=w("a-popconfirm"),j=w("a-card");return r(),R("div",K,[m(j,{title:"لیست تخفیف ها",class:"page-card"},{default:n(()=>[m(U,{ref_key:"tbl",ref:y,model:p(N),"mobile-cards":""},{add:n(()=>[D("div",Q,[m(C,{rid:"offers.create","add-label":"افزودن تخفیف عمده",onAdd:e[0]||(e[0]=t=>$("omde"))}),p(v).isSuperAdmin?(r(),l(C,{key:0,rid:"offers.create.tak","add-label":"افزودن تخفیف تک",onAdd:e[1]||(e[1]=t=>$("tak"))})):b("",!0)])]),sts:n(({record:t})=>[t.status===1?(r(),l(f,{key:0,color:"green"},{default:n(()=>[...e[6]||(e[6]=[g("فعال",-1)])]),_:1})):(r(),l(f,{key:1,color:"red"},{default:n(()=>[...e[7]||(e[7]=[g("غیر فعال",-1)])]),_:1}))]),startDate:n(({text:t})=>[g(A(t?p(E)(t):"-"),1)]),endDate:n(({text:t})=>[g(A(t?p(E)(t):"-"),1)]),op:n(({record:t})=>[V(t)?(r(),l(c,{key:0,title:"ویرایش"},{default:n(()=>[m(p(q),{class:"cursor-pointer mx-1 text-primary",onClick:i=>T(t)},null,8,["onClick"])]),_:2},1024)):b("",!0),P(t)?(r(),l(c,{key:1,title:"حذف"},{default:n(()=>[m(_,{placement:"top","ok-text":"بله","cancel-text":"خیر",onConfirm:i=>X(t)},{title:n(()=>[...e[8]||(e[8]=[D("p",null,"آیا مطمئن به حذف تخفیف مورد نظر هستید ؟",-1)])]),default:n(()=>[m(p(z),{class:"cursor-pointer mx-1 text-danger"})]),_:1},8,["onConfirm"])]),_:2},1024)):b("",!0)]),_:1},8,["model"]),S.value==="omde"?(r(),l(I,{key:u.value??"new",open:d.value,id:u.value,"onUpdate:open":e[2]||(e[2]=t=>d.value=t),onSuccess:e[3]||(e[3]=t=>{var i;return(i=y.value)==null?void 0:i.fetch()})},null,8,["open","id"])):S.value==="tak"?(r(),l(G,{key:u.value??"new",open:d.value,id:u.value,"onUpdate:open":e[4]||(e[4]=t=>d.value=t),onSuccess:e[5]||(e[5]=t=>{var i;return(i=y.value)==null?void 0:i.fetch()})},null,8,["open","id"])):b("",!0)]),_:1})])}}}),ie=H(W,[["__scopeId","data-v-25a20ef5"]]);export{ie as default}; diff --git a/apps/admin-panel/dist/assets/promotion_tak_add_edit-CPqK-9Fx.js b/apps/admin-panel/dist/assets/promotion_tak_add_edit-CPqK-9Fx.js deleted file mode 100644 index 72320fa..0000000 --- a/apps/admin-panel/dist/assets/promotion_tak_add_edit-CPqK-9Fx.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as o}from"./promotion_tak_add_edit.vue_vue_type_script_setup_true_lang-CfQ1fkyJ.js";import"./PromotionForm-52rIR-eP.js";import"./index-C9T3Vski.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-Du4lPDHl.js";export{o as default}; diff --git a/apps/admin-panel/dist/assets/promotion_tak_add_edit-fKo-hzti.js b/apps/admin-panel/dist/assets/promotion_tak_add_edit-fKo-hzti.js new file mode 100644 index 0000000..cab6df4 --- /dev/null +++ b/apps/admin-panel/dist/assets/promotion_tak_add_edit-fKo-hzti.js @@ -0,0 +1 @@ +import{_ as o}from"./promotion_tak_add_edit.vue_vue_type_script_setup_true_lang-DUmF7fkx.js";import"./PromotionForm-0qEJgxJk.js";import"./index-CuIWfDbM.js";import"./select--BgT6D7O.js";import"./BaseFormModal.vue_vue_type_style_index_0_lang-DXuLuiBZ.js";export{o as default}; diff --git a/apps/admin-panel/dist/assets/promotion_tak_add_edit.vue_vue_type_script_setup_true_lang-CfQ1fkyJ.js b/apps/admin-panel/dist/assets/promotion_tak_add_edit.vue_vue_type_script_setup_true_lang-DUmF7fkx.js similarity index 72% rename from apps/admin-panel/dist/assets/promotion_tak_add_edit.vue_vue_type_script_setup_true_lang-CfQ1fkyJ.js rename to apps/admin-panel/dist/assets/promotion_tak_add_edit.vue_vue_type_script_setup_true_lang-DUmF7fkx.js index 2f700ed..b5797c5 100644 --- a/apps/admin-panel/dist/assets/promotion_tak_add_edit.vue_vue_type_script_setup_true_lang-CfQ1fkyJ.js +++ b/apps/admin-panel/dist/assets/promotion_tak_add_edit.vue_vue_type_script_setup_true_lang-DUmF7fkx.js @@ -1 +1 @@ -import{P as s}from"./PromotionForm-52rIR-eP.js";import{d as p,a as i,o as a}from"./index-C9T3Vski.js";const d=p({__name:"promotion_tak_add_edit",props:{open:{type:Boolean},id:{}},emits:["update:open","success"],setup(o){return(n,e)=>(a(),i(s,{title:"تعریف تخفیف تک","allow-customer-scope":!1,open:o.open,id:o.id,"onUpdate:open":e[0]||(e[0]=t=>n.$emit("update:open",t)),onSuccess:e[1]||(e[1]=t=>n.$emit("success"))},null,8,["open","id"]))}});export{d as _}; +import{P as s}from"./PromotionForm-0qEJgxJk.js";import{d as p,a as i,o as a}from"./index-CuIWfDbM.js";const d=p({__name:"promotion_tak_add_edit",props:{open:{type:Boolean},id:{}},emits:["update:open","success"],setup(o){return(n,e)=>(a(),i(s,{title:"تعریف تخفیف تک","allow-customer-scope":!1,open:o.open,id:o.id,"onUpdate:open":e[0]||(e[0]=t=>n.$emit("update:open",t)),onSuccess:e[1]||(e[1]=t=>n.$emit("success"))},null,8,["open","id"]))}});export{d as _}; diff --git a/apps/admin-panel/dist/assets/reg-DKluouRE.js b/apps/admin-panel/dist/assets/reg-CEcfpJmk.js similarity index 97% rename from apps/admin-panel/dist/assets/reg-DKluouRE.js rename to apps/admin-panel/dist/assets/reg-CEcfpJmk.js index 5e44242..5beb5f9 100644 --- a/apps/admin-panel/dist/assets/reg-DKluouRE.js +++ b/apps/admin-panel/dist/assets/reg-CEcfpJmk.js @@ -1 +1 @@ -import{d as y,b as x,c as l,w as s,m as z,r as m,o as U,H as k,p as w,f as h,z as b,y as C,G as c,_ as E}from"./index-C9T3Vski.js";const j={class:"reg-page"},B={class:"grid-3"},N=y({__name:"reg",setup(O){const i=z(!1),e=b({fname:"",lname:"",mobile:"",store_name:"",phone:"",pasazh_name:"",zone:"",address:""}),n=b({});async function _(){var f,a,u,r,d,p;if(Object.keys(n).forEach(o=>delete n[o]),e.fname||(n.fname="لطفا نام را وارد کنید"),e.lname||(n.lname="لطفا نام خانوادگی را وارد کنید"),e.mobile||(n.mobile="لطفا شماره تلفن همراه را وارد کنید"),!Object.keys(n).length)try{i.value=!0,await C.post("customer/create",{...e,name:`${e.fname} ${e.lname}`.trim()}),c.success("اطلاعات با موفقیت ثبت شد."),Object.keys(e).forEach(o=>e[o]="")}catch(o){const v=(r=(u=(a=(f=o==null?void 0:o.response)==null?void 0:f.data)==null?void 0:a.errors)==null?void 0:u.mobile)==null?void 0:r[0];c.error(v??((p=(d=o==null?void 0:o.response)==null?void 0:d.data)==null?void 0:p.message)??"خطا در ثبت اطلاعات.")}finally{i.value=!1}}return(f,a)=>{const u=m("a-input"),r=m("a-form-item"),d=m("a-textarea"),p=m("a-button"),o=m("a-form"),v=m("a-card"),g=m("a-spin");return U(),x("div",j,[l(g,{spinning:i.value},{default:s(()=>[l(v,{title:"ثبت مشتری جدید (اطلاعات فروشنده)",class:"reg-card"},{default:s(()=>[l(o,{layout:"vertical",onSubmit:k(_,["prevent"])},{default:s(()=>[w("div",B,[l(r,{label:"نام ","validate-status":n.fname?"error":"",help:n.fname},{default:s(()=>[l(u,{value:e.fname,"onUpdate:value":a[0]||(a[0]=t=>e.fname=t)},null,8,["value"])]),_:1},8,["validate-status","help"]),l(r,{label:"نام خانوادگی","validate-status":n.lname?"error":"",help:n.lname},{default:s(()=>[l(u,{value:e.lname,"onUpdate:value":a[1]||(a[1]=t=>e.lname=t)},null,8,["value"])]),_:1},8,["validate-status","help"]),l(r,{label:"شماره تلفن همراه","validate-status":n.mobile?"error":"",help:n.mobile},{default:s(()=>[l(u,{value:e.mobile,"onUpdate:value":a[2]||(a[2]=t=>e.mobile=t)},null,8,["value"])]),_:1},8,["validate-status","help"]),l(r,{label:"نام مغازه"},{default:s(()=>[l(u,{value:e.store_name,"onUpdate:value":a[3]||(a[3]=t=>e.store_name=t)},null,8,["value"])]),_:1}),l(r,{label:"تلفن"},{default:s(()=>[l(u,{value:e.phone,"onUpdate:value":a[4]||(a[4]=t=>e.phone=t)},null,8,["value"])]),_:1}),l(r,{label:"نام پاساژ"},{default:s(()=>[l(u,{value:e.pasazh_name,"onUpdate:value":a[5]||(a[5]=t=>e.pasazh_name=t)},null,8,["value"])]),_:1}),l(r,{label:"منطقه"},{default:s(()=>[l(u,{value:e.zone,"onUpdate:value":a[6]||(a[6]=t=>e.zone=t)},null,8,["value"])]),_:1})]),l(r,{label:"آدرس"},{default:s(()=>[l(d,{value:e.address,"onUpdate:value":a[7]||(a[7]=t=>e.address=t),"auto-size":{minRows:2,maxRows:4}},null,8,["value"])]),_:1}),l(p,{type:"primary",size:"large",loading:i.value,onClick:_},{default:s(()=>[...a[8]||(a[8]=[h(" ثبت ",-1)])]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1},8,["spinning"])])}}}),R=E(N,[["__scopeId","data-v-42a558f2"]]);export{R as default}; +import{d as y,b as x,c as l,w as s,m as z,r as m,o as U,H as k,p as w,f as h,z as b,y as C,G as c,_ as E}from"./index-CuIWfDbM.js";const j={class:"reg-page"},B={class:"grid-3"},N=y({__name:"reg",setup(O){const i=z(!1),e=b({fname:"",lname:"",mobile:"",store_name:"",phone:"",pasazh_name:"",zone:"",address:""}),n=b({});async function _(){var f,a,u,r,d,p;if(Object.keys(n).forEach(o=>delete n[o]),e.fname||(n.fname="لطفا نام را وارد کنید"),e.lname||(n.lname="لطفا نام خانوادگی را وارد کنید"),e.mobile||(n.mobile="لطفا شماره تلفن همراه را وارد کنید"),!Object.keys(n).length)try{i.value=!0,await C.post("customer/create",{...e,name:`${e.fname} ${e.lname}`.trim()}),c.success("اطلاعات با موفقیت ثبت شد."),Object.keys(e).forEach(o=>e[o]="")}catch(o){const v=(r=(u=(a=(f=o==null?void 0:o.response)==null?void 0:f.data)==null?void 0:a.errors)==null?void 0:u.mobile)==null?void 0:r[0];c.error(v??((p=(d=o==null?void 0:o.response)==null?void 0:d.data)==null?void 0:p.message)??"خطا در ثبت اطلاعات.")}finally{i.value=!1}}return(f,a)=>{const u=m("a-input"),r=m("a-form-item"),d=m("a-textarea"),p=m("a-button"),o=m("a-form"),v=m("a-card"),g=m("a-spin");return U(),x("div",j,[l(g,{spinning:i.value},{default:s(()=>[l(v,{title:"ثبت مشتری جدید (اطلاعات فروشنده)",class:"reg-card"},{default:s(()=>[l(o,{layout:"vertical",onSubmit:k(_,["prevent"])},{default:s(()=>[w("div",B,[l(r,{label:"نام ","validate-status":n.fname?"error":"",help:n.fname},{default:s(()=>[l(u,{value:e.fname,"onUpdate:value":a[0]||(a[0]=t=>e.fname=t)},null,8,["value"])]),_:1},8,["validate-status","help"]),l(r,{label:"نام خانوادگی","validate-status":n.lname?"error":"",help:n.lname},{default:s(()=>[l(u,{value:e.lname,"onUpdate:value":a[1]||(a[1]=t=>e.lname=t)},null,8,["value"])]),_:1},8,["validate-status","help"]),l(r,{label:"شماره تلفن همراه","validate-status":n.mobile?"error":"",help:n.mobile},{default:s(()=>[l(u,{value:e.mobile,"onUpdate:value":a[2]||(a[2]=t=>e.mobile=t)},null,8,["value"])]),_:1},8,["validate-status","help"]),l(r,{label:"نام مغازه"},{default:s(()=>[l(u,{value:e.store_name,"onUpdate:value":a[3]||(a[3]=t=>e.store_name=t)},null,8,["value"])]),_:1}),l(r,{label:"تلفن"},{default:s(()=>[l(u,{value:e.phone,"onUpdate:value":a[4]||(a[4]=t=>e.phone=t)},null,8,["value"])]),_:1}),l(r,{label:"نام پاساژ"},{default:s(()=>[l(u,{value:e.pasazh_name,"onUpdate:value":a[5]||(a[5]=t=>e.pasazh_name=t)},null,8,["value"])]),_:1}),l(r,{label:"منطقه"},{default:s(()=>[l(u,{value:e.zone,"onUpdate:value":a[6]||(a[6]=t=>e.zone=t)},null,8,["value"])]),_:1})]),l(r,{label:"آدرس"},{default:s(()=>[l(d,{value:e.address,"onUpdate:value":a[7]||(a[7]=t=>e.address=t),"auto-size":{minRows:2,maxRows:4}},null,8,["value"])]),_:1}),l(p,{type:"primary",size:"large",loading:i.value,onClick:_},{default:s(()=>[...a[8]||(a[8]=[h(" ثبت ",-1)])]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1},8,["spinning"])])}}}),R=E(N,[["__scopeId","data-v-42a558f2"]]);export{R as default}; diff --git a/apps/admin-panel/dist/assets/report-Dqz_8JiO.js b/apps/admin-panel/dist/assets/report-BbioztMT.js similarity index 91% rename from apps/admin-panel/dist/assets/report-Dqz_8JiO.js rename to apps/admin-panel/dist/assets/report-BbioztMT.js index abc77e4..144ef5a 100644 --- a/apps/admin-panel/dist/assets/report-Dqz_8JiO.js +++ b/apps/admin-panel/dist/assets/report-BbioztMT.js @@ -1 +1 @@ -import{d,x as i,y as p,a as r,w as m,m as u,r as n,o as a,b as s,F as k,e as y,t as f,_ as h}from"./index-C9T3Vski.js";const g={key:1,class:"links"},v=["href"],x=d({__name:"report",setup(b){const t=u([]);return i(async()=>{try{const{data:e}=await p.get("dashboard/link");t.value=Array.isArray(e)?e:[]}catch(e){console.log(e)}}),(e,w)=>{const c=n("a-empty"),l=n("a-card");return a(),r(l,{title:"مدیریت گزارشات",class:"page-card"},{default:m(()=>[t.value.length===0?(a(),r(c,{key:0,description:"هنوز لینکی تعریف نشده است"})):(a(),s("div",g,[(a(!0),s(k,null,y(t.value,(o,_)=>(a(),s("a",{key:_,href:o.url,target:"_blank",class:"link-card"},f(o.title),9,v))),128))]))]),_:1})}}}),C=h(x,[["__scopeId","data-v-e88c54db"]]);export{C as default}; +import{d,x as i,y as p,a as r,w as m,m as u,r as n,o as a,b as s,F as k,e as y,t as f,_ as h}from"./index-CuIWfDbM.js";const g={key:1,class:"links"},v=["href"],x=d({__name:"report",setup(b){const t=u([]);return i(async()=>{try{const{data:e}=await p.get("dashboard/link");t.value=Array.isArray(e)?e:[]}catch(e){console.log(e)}}),(e,w)=>{const c=n("a-empty"),l=n("a-card");return a(),r(l,{title:"مدیریت گزارشات",class:"page-card"},{default:m(()=>[t.value.length===0?(a(),r(c,{key:0,description:"هنوز لینکی تعریف نشده است"})):(a(),s("div",g,[(a(!0),s(k,null,y(t.value,(o,_)=>(a(),s("a",{key:_,href:o.url,target:"_blank",class:"link-card"},f(o.title),9,v))),128))]))]),_:1})}}}),C=h(x,[["__scopeId","data-v-e88c54db"]]);export{C as default}; diff --git a/apps/admin-panel/dist/assets/select--BgT6D7O.js b/apps/admin-panel/dist/assets/select--BgT6D7O.js new file mode 100644 index 0000000..efaffad --- /dev/null +++ b/apps/admin-panel/dist/assets/select--BgT6D7O.js @@ -0,0 +1 @@ +function n(r){const c=typeof(r==null?void 0:r.children)=="function"?r.children():r==null?void 0:r.children,e=Array.isArray(c)?c[0]:c;return typeof e=="string"?e:String((e==null?void 0:e.children)??"")}export{n as o}; diff --git a/apps/admin-panel/dist/assets/singleCustomer-B931OwFF.js b/apps/admin-panel/dist/assets/singleCustomer-CKYyRyfm.js similarity index 92% rename from apps/admin-panel/dist/assets/singleCustomer-B931OwFF.js rename to apps/admin-panel/dist/assets/singleCustomer-CKYyRyfm.js index 818421c..a343c68 100644 --- a/apps/admin-panel/dist/assets/singleCustomer-B931OwFF.js +++ b/apps/admin-panel/dist/assets/singleCustomer-CKYyRyfm.js @@ -1 +1 @@ -import{d as $,x as S,y as c,a as V,w as r,k as D,m as x,z as C,r as d,o as I,c as s,p as l,h as p,t as R,V as j,f as _,W as q,H as B,l as E,G as k,_ as N}from"./index-C9T3Vski.js";import{_ as M}from"./CityTreeSelect.vue_vue_type_script_setup_true_lang-82fzpZxR.js";import{D as z}from"./DateInput-CCBYpdHy.js";import{U as F}from"./UserOutlined-Csu4xHRr.js";const G={class:"pf-layout pf-layout--single"},H={class:"pf-main"},Q={class:"pf-section"},T={class:"pf-section__head"},W={class:"pf-section__icon"},A={class:"pf-grid-2"},J={class:"pf-actions"},K={class:"pf-actions__hint"},v="لطفا مقدار را وارد کنید",L=$({__name:"singleCustomer",setup(P){const w=D(),y=E(),u=w.params.id,m=x(!1),h=x([]),t=C({fname:"",lname:"",phone:"",city_id:void 0,birth_day:""}),n=C({});async function b(){var a,e;if(Object.keys(n).forEach(o=>delete n[o]),t.fname||(n.fname=v),t.lname||(n.lname=v),t.phone||(n.phone=v),!Object.keys(n).length)try{m.value=!0;const o={...t,name:`${t.fname} ${t.lname}`.trim(),mobile:t.phone};u?await c.put(`single/${u}`,o):await c.post("single",o),k.info("اطلاعات با موفقیت به ثبت رسید."),y.go(-1)}catch(o){k.error(((e=(a=o==null?void 0:o.response)==null?void 0:a.data)==null?void 0:e.message)??"خطا در ثبت اطلاعات.")}finally{m.value=!1}}return S(async()=>{try{const{data:a}=await c.post("cities/list");h.value=a.rows??[]}catch(a){console.log(a)}if(u)try{const{data:a}=await c.get(`customer/${u}`);Object.assign(t,{fname:a.fname??"",lname:a.lname??"",phone:a.mobile??"",city_id:a.city_id??void 0,birth_day:a.birth_day??""})}catch(a){console.log(a)}}),(a,e)=>{const o=d("a-input"),f=d("a-form-item"),g=d("a-button"),U=d("a-form"),O=d("a-spin");return I(),V(O,{spinning:m.value},{default:r(()=>[s(U,{layout:"vertical",class:"pf-form",onSubmit:B(b,["prevent"])},{default:r(()=>[l("div",G,[l("div",H,[l("section",Q,[l("div",T,[l("span",W,[s(p(F))]),l("div",null,[l("h3",null,R(p(u)?"ویرایش مشتری":"افزودن مشتری"),1),e[6]||(e[6]=l("p",null,"مشخصات مشتری تک",-1))])]),l("div",A,[s(f,{label:"نام ",required:"","validate-status":n.fname?"error":"",help:n.fname},{default:r(()=>[s(o,{value:t.fname,"onUpdate:value":e[0]||(e[0]=i=>t.fname=i)},null,8,["value"])]),_:1},8,["validate-status","help"]),s(f,{label:"نام خانوادگی",required:"","validate-status":n.lname?"error":"",help:n.lname},{default:r(()=>[s(o,{value:t.lname,"onUpdate:value":e[1]||(e[1]=i=>t.lname=i)},null,8,["value"])]),_:1},8,["validate-status","help"]),s(f,{label:"شماره تلفن همراه",required:"","validate-status":n.phone?"error":"",help:n.phone},{default:r(()=>[s(o,{value:t.phone,"onUpdate:value":e[2]||(e[2]=i=>t.phone=i),class:"ltr-input",inputmode:"tel",placeholder:"09xxxxxxxxx"},null,8,["value"])]),_:1},8,["validate-status","help"]),s(z,{"model-value":t.birth_day||void 0,label:"تاریخ تولد","onUpdate:modelValue":e[3]||(e[3]=i=>t.birth_day=i??"")},null,8,["model-value"]),s(f,{label:"شهر",class:"pf-span-all mb-0"},{default:r(()=>[s(M,{value:t.city_id,"onUpdate:value":e[4]||(e[4]=i=>t.city_id=i),cities:h.value},null,8,["value","cities"])]),_:1})])])])]),l("div",J,[l("span",K,[s(p(j)),e[7]||(e[7]=_(" فیلدهای ستاره‌دار الزامی هستند.",-1))]),s(g,{onClick:e[5]||(e[5]=i=>p(y).go(-1))},{default:r(()=>[...e[8]||(e[8]=[_("انصراف",-1)])]),_:1}),s(g,{type:"primary",class:"form-submit",loading:m.value,onClick:b},{icon:r(()=>[s(p(q))]),default:r(()=>[e[9]||(e[9]=_(" ثبت اطلاعات ",-1))]),_:1},8,["loading"])])]),_:1})]),_:1},8,["spinning"])}}}),te=N(L,[["__scopeId","data-v-e6b495e6"]]);export{te as S}; +import{d as $,x as S,y as c,a as V,w as r,k as D,m as x,z as C,r as d,o as I,c as s,p as l,h as p,t as R,V as j,f as _,W as q,H as B,l as E,G as k,_ as N}from"./index-CuIWfDbM.js";import{_ as M}from"./CityTreeSelect.vue_vue_type_script_setup_true_lang-Be--_CeP.js";import{D as z}from"./DateInput-CJzwI_r_.js";import{U as F}from"./UserOutlined-aZ-mQgwc.js";const G={class:"pf-layout pf-layout--single"},H={class:"pf-main"},Q={class:"pf-section"},T={class:"pf-section__head"},W={class:"pf-section__icon"},A={class:"pf-grid-2"},J={class:"pf-actions"},K={class:"pf-actions__hint"},v="لطفا مقدار را وارد کنید",L=$({__name:"singleCustomer",setup(P){const w=D(),y=E(),u=w.params.id,m=x(!1),h=x([]),t=C({fname:"",lname:"",phone:"",city_id:void 0,birth_day:""}),n=C({});async function b(){var a,e;if(Object.keys(n).forEach(o=>delete n[o]),t.fname||(n.fname=v),t.lname||(n.lname=v),t.phone||(n.phone=v),!Object.keys(n).length)try{m.value=!0;const o={...t,name:`${t.fname} ${t.lname}`.trim(),mobile:t.phone};u?await c.put(`single/${u}`,o):await c.post("single",o),k.info("اطلاعات با موفقیت به ثبت رسید."),y.go(-1)}catch(o){k.error(((e=(a=o==null?void 0:o.response)==null?void 0:a.data)==null?void 0:e.message)??"خطا در ثبت اطلاعات.")}finally{m.value=!1}}return S(async()=>{try{const{data:a}=await c.post("cities/list");h.value=a.rows??[]}catch(a){console.log(a)}if(u)try{const{data:a}=await c.get(`customer/${u}`);Object.assign(t,{fname:a.fname??"",lname:a.lname??"",phone:a.mobile??"",city_id:a.city_id??void 0,birth_day:a.birth_day??""})}catch(a){console.log(a)}}),(a,e)=>{const o=d("a-input"),f=d("a-form-item"),g=d("a-button"),U=d("a-form"),O=d("a-spin");return I(),V(O,{spinning:m.value},{default:r(()=>[s(U,{layout:"vertical",class:"pf-form",onSubmit:B(b,["prevent"])},{default:r(()=>[l("div",G,[l("div",H,[l("section",Q,[l("div",T,[l("span",W,[s(p(F))]),l("div",null,[l("h3",null,R(p(u)?"ویرایش مشتری":"افزودن مشتری"),1),e[6]||(e[6]=l("p",null,"مشخصات مشتری تک",-1))])]),l("div",A,[s(f,{label:"نام ",required:"","validate-status":n.fname?"error":"",help:n.fname},{default:r(()=>[s(o,{value:t.fname,"onUpdate:value":e[0]||(e[0]=i=>t.fname=i)},null,8,["value"])]),_:1},8,["validate-status","help"]),s(f,{label:"نام خانوادگی",required:"","validate-status":n.lname?"error":"",help:n.lname},{default:r(()=>[s(o,{value:t.lname,"onUpdate:value":e[1]||(e[1]=i=>t.lname=i)},null,8,["value"])]),_:1},8,["validate-status","help"]),s(f,{label:"شماره تلفن همراه",required:"","validate-status":n.phone?"error":"",help:n.phone},{default:r(()=>[s(o,{value:t.phone,"onUpdate:value":e[2]||(e[2]=i=>t.phone=i),class:"ltr-input",inputmode:"tel",placeholder:"09xxxxxxxxx"},null,8,["value"])]),_:1},8,["validate-status","help"]),s(z,{"model-value":t.birth_day||void 0,label:"تاریخ تولد","onUpdate:modelValue":e[3]||(e[3]=i=>t.birth_day=i??"")},null,8,["model-value"]),s(f,{label:"شهر",class:"pf-span-all mb-0"},{default:r(()=>[s(M,{value:t.city_id,"onUpdate:value":e[4]||(e[4]=i=>t.city_id=i),cities:h.value},null,8,["value","cities"])]),_:1})])])])]),l("div",J,[l("span",K,[s(p(j)),e[7]||(e[7]=_(" فیلدهای ستاره‌دار الزامی هستند.",-1))]),s(g,{onClick:e[5]||(e[5]=i=>p(y).go(-1))},{default:r(()=>[...e[8]||(e[8]=[_("انصراف",-1)])]),_:1}),s(g,{type:"primary",class:"form-submit",loading:m.value,onClick:b},{icon:r(()=>[s(p(q))]),default:r(()=>[e[9]||(e[9]=_(" ثبت اطلاعات ",-1))]),_:1},8,["loading"])])]),_:1})]),_:1},8,["spinning"])}}}),te=N(L,[["__scopeId","data-v-e6b495e6"]]);export{te as S}; diff --git a/apps/admin-panel/dist/assets/useDeleteHandler-D_sYZzLs.js b/apps/admin-panel/dist/assets/useDeleteHandler-c5WtaKjp.js similarity index 86% rename from apps/admin-panel/dist/assets/useDeleteHandler-D_sYZzLs.js rename to apps/admin-panel/dist/assets/useDeleteHandler-c5WtaKjp.js index c90ac2f..8e9fb28 100644 --- a/apps/admin-panel/dist/assets/useDeleteHandler-D_sYZzLs.js +++ b/apps/admin-panel/dist/assets/useDeleteHandler-c5WtaKjp.js @@ -1 +1 @@ -import{y as r,G as f,M as m}from"./index-C9T3Vski.js";function M(o){const{onSuccess:n,successMessage:i="با موفقیت حذف شد",successType:u="success",fallbackErrorMessage:l="خطا در حذف"}=o;async function d(a,e){var t,c;try{(e==null?void 0:e.method)==="post"?await r.post(a):await r.delete(a),f[u](i),await n()}catch(s){m.error({title:((c=(t=s==null?void 0:s.response)==null?void 0:t.data)==null?void 0:c.message)??l,okText:"بستن"})}}return{remove:d}}export{M as u}; +import{y as r,G as f,M as m}from"./index-CuIWfDbM.js";function M(o){const{onSuccess:n,successMessage:i="با موفقیت حذف شد",successType:u="success",fallbackErrorMessage:l="خطا در حذف"}=o;async function d(a,e){var t,c;try{(e==null?void 0:e.method)==="post"?await r.post(a):await r.delete(a),f[u](i),await n()}catch(s){m.error({title:((c=(t=s==null?void 0:s.response)==null?void 0:t.data)==null?void 0:c.message)??l,okText:"بستن"})}}return{remove:d}}export{M as u}; diff --git a/apps/admin-panel/dist/assets/user-CZGgwdh4.js b/apps/admin-panel/dist/assets/user-BY3lJe4x.js similarity index 93% rename from apps/admin-panel/dist/assets/user-CZGgwdh4.js rename to apps/admin-panel/dist/assets/user-BY3lJe4x.js index 6d67928..2a607c7 100644 --- a/apps/admin-panel/dist/assets/user-CZGgwdh4.js +++ b/apps/admin-panel/dist/assets/user-BY3lJe4x.js @@ -1 +1 @@ -import{a as R,b as f,X as D}from"./model-B4TWAN58.js";import{d as G,a as v,w as t,r as n,o as r,c as a,h as w,Q as M,b as y,f as l,t as c,F as x,i as O,m as b,y as g,G as C,_ as Q}from"./index-C9T3Vski.js";import"./filters-D6Nzbpog.js";import"./index-m6pCHaEa.js";import"./SettingOutlined-BizkfqvN.js";function U(){const d=new R("admin/misc/notify/list","لیست نوتیفیکیشن های دریافتی");return d.add(new f("id","شماره")),d.add(new f("title","عنوان")),d.add(new f("text","متن").noSort()),d.add(new f("opt","عملیات").noSort().renderSlot("opt")),d.noFilters(),d}const j={key:0},q=G({__name:"user",setup(d){const I=U(),S=b(null),m=b(!1),o=b(void 0),$=[{title:"مشتری",dataIndex:"customer"},{title:"وضعیت",dataIndex:"is_read"}];async function z(u){const{data:e}=await g.get(`notify/${u.id}`);o.value=e,m.value=!0}async function N(u){var e,_;try{await g.get(`notify/read/${u.id}`),u.is_read=!0,o.value&&(o.value.read_count+=1),C.success("علامت‌گذاری شد")}catch(s){C.error(((_=(e=s==null?void 0:s.response)==null?void 0:e.data)==null?void 0:_.message)??"خطا")}}return(u,e)=>{const _=n("a-tooltip"),s=n("a-descriptions-item"),X=n("a-descriptions"),B=n("a-tag"),k=n("a-button"),F=n("a-table"),T=n("a-empty"),V=n("a-modal"),E=n("a-card");return r(),v(E,{title:"لیست نوتیفیکیشن های دریافتی",class:"page-card"},{default:t(()=>[a(D,{ref_key:"tbl",ref:S,model:w(I),"mobile-cards":""},{opt:t(({record:i})=>[a(_,{title:"مشاهده"},{default:t(()=>[a(w(M),{class:"cursor-pointer mx-1 text-primary",onClick:p=>z(i)},null,8,["onClick"])]),_:2},1024)]),_:1},8,["model"]),a(V,{open:m.value,"onUpdate:open":e[1]||(e[1]=i=>m.value=i),title:"مشاهده نوتیفیکیشن",width:"60%","wrap-class-name":"detail-modal"},{footer:t(()=>[a(k,{onClick:e[0]||(e[0]=i=>m.value=!1)},{default:t(()=>[...e[4]||(e[4]=[l("بستن",-1)])]),_:1})]),default:t(()=>[o.value?(r(),y("div",j,[a(X,{bordered:"",size:"small",column:1},{default:t(()=>[a(s,{label:"عنوان"},{default:t(()=>[l(c(o.value.title),1)]),_:1}),a(s,{label:"متن"},{default:t(()=>[l(c(o.value.body),1)]),_:1}),a(s,{label:"ارسال کننده"},{default:t(()=>[l(c(o.value.sender??"-"),1)]),_:1}),a(s,{label:"خوانده شده"},{default:t(()=>[l(c(o.value.read_count)+" از "+c(o.value.total_count),1)]),_:1})]),_:1}),a(F,{class:"mt-4",size:"small","data-source":o.value.recipients,columns:$,pagination:{pageSize:10},"row-key":"id"},{bodyCell:t(({column:i,record:p})=>[i.dataIndex==="is_read"?(r(),y(x,{key:0},[p.is_read?(r(),v(B,{key:0,color:"green"},{default:t(()=>[...e[2]||(e[2]=[l("خوانده شده",-1)])]),_:1})):(r(),v(k,{key:1,size:"small",onClick:A=>N(p)},{default:t(()=>[...e[3]||(e[3]=[l("علامت‌گذاری",-1)])]),_:1},8,["onClick"]))],64)):i.dataIndex==="customer"?(r(),y(x,{key:1},[l(c(p.customer.name),1)],64)):O("",!0)]),_:1},8,["data-source"])])):(r(),v(T,{key:1}))]),_:1},8,["open"])]),_:1})}}}),W=Q(q,[["__scopeId","data-v-59aa3738"]]);export{W as default}; +import{a as R,b as f,X as D}from"./model-D_9omyEY.js";import{d as G,a as v,w as t,r as n,o as r,c as a,h as w,Q as M,b as y,f as l,t as c,F as x,i as O,m as b,y as g,G as C,_ as Q}from"./index-CuIWfDbM.js";import"./filters-Cvt98RIq.js";import"./index-CPTngTRs.js";import"./SettingOutlined-BehgjsnT.js";function U(){const d=new R("admin/misc/notify/list","لیست نوتیفیکیشن های دریافتی");return d.add(new f("id","شماره")),d.add(new f("title","عنوان")),d.add(new f("text","متن").noSort()),d.add(new f("opt","عملیات").noSort().renderSlot("opt")),d.noFilters(),d}const j={key:0},q=G({__name:"user",setup(d){const I=U(),S=b(null),m=b(!1),o=b(void 0),$=[{title:"مشتری",dataIndex:"customer"},{title:"وضعیت",dataIndex:"is_read"}];async function z(u){const{data:e}=await g.get(`notify/${u.id}`);o.value=e,m.value=!0}async function N(u){var e,_;try{await g.get(`notify/read/${u.id}`),u.is_read=!0,o.value&&(o.value.read_count+=1),C.success("علامت‌گذاری شد")}catch(s){C.error(((_=(e=s==null?void 0:s.response)==null?void 0:e.data)==null?void 0:_.message)??"خطا")}}return(u,e)=>{const _=n("a-tooltip"),s=n("a-descriptions-item"),X=n("a-descriptions"),B=n("a-tag"),k=n("a-button"),F=n("a-table"),T=n("a-empty"),V=n("a-modal"),E=n("a-card");return r(),v(E,{title:"لیست نوتیفیکیشن های دریافتی",class:"page-card"},{default:t(()=>[a(D,{ref_key:"tbl",ref:S,model:w(I),"mobile-cards":""},{opt:t(({record:i})=>[a(_,{title:"مشاهده"},{default:t(()=>[a(w(M),{class:"cursor-pointer mx-1 text-primary",onClick:p=>z(i)},null,8,["onClick"])]),_:2},1024)]),_:1},8,["model"]),a(V,{open:m.value,"onUpdate:open":e[1]||(e[1]=i=>m.value=i),title:"مشاهده نوتیفیکیشن",width:"60%","wrap-class-name":"detail-modal"},{footer:t(()=>[a(k,{onClick:e[0]||(e[0]=i=>m.value=!1)},{default:t(()=>[...e[4]||(e[4]=[l("بستن",-1)])]),_:1})]),default:t(()=>[o.value?(r(),y("div",j,[a(X,{bordered:"",size:"small",column:1},{default:t(()=>[a(s,{label:"عنوان"},{default:t(()=>[l(c(o.value.title),1)]),_:1}),a(s,{label:"متن"},{default:t(()=>[l(c(o.value.body),1)]),_:1}),a(s,{label:"ارسال کننده"},{default:t(()=>[l(c(o.value.sender??"-"),1)]),_:1}),a(s,{label:"خوانده شده"},{default:t(()=>[l(c(o.value.read_count)+" از "+c(o.value.total_count),1)]),_:1})]),_:1}),a(F,{class:"mt-4",size:"small","data-source":o.value.recipients,columns:$,pagination:{pageSize:10},"row-key":"id"},{bodyCell:t(({column:i,record:p})=>[i.dataIndex==="is_read"?(r(),y(x,{key:0},[p.is_read?(r(),v(B,{key:0,color:"green"},{default:t(()=>[...e[2]||(e[2]=[l("خوانده شده",-1)])]),_:1})):(r(),v(k,{key:1,size:"small",onClick:A=>N(p)},{default:t(()=>[...e[3]||(e[3]=[l("علامت‌گذاری",-1)])]),_:1},8,["onClick"]))],64)):i.dataIndex==="customer"?(r(),y(x,{key:1},[l(c(p.customer.name),1)],64)):O("",!0)]),_:1},8,["data-source"])])):(r(),v(T,{key:1}))]),_:1},8,["open"])]),_:1})}}}),W=Q(q,[["__scopeId","data-v-59aa3738"]]);export{W as default}; diff --git a/apps/admin-panel/dist/assets/wage-B8ummm0O.js b/apps/admin-panel/dist/assets/wage-jfkWWu7u.js similarity index 99% rename from apps/admin-panel/dist/assets/wage-B8ummm0O.js rename to apps/admin-panel/dist/assets/wage-jfkWWu7u.js index 22a6844..70c4f59 100644 --- a/apps/admin-panel/dist/assets/wage-B8ummm0O.js +++ b/apps/admin-panel/dist/assets/wage-jfkWWu7u.js @@ -1 +1 @@ -import{m as We}from"./index-m6pCHaEa.js";import{d as Ae,u as Le,n as Me,x as De,b,c as s,w as o,a as h,m as $,y as K,G as Q,r as c,z as X,o as m,p as l,f as d,t as r,i as k,F as C,e as S,q as T,s as y,_ as Ve}from"./index-C9T3Vski.js";const Ye={key:0,class:"wage page-card"},Fe={class:"status"},Ee={class:"formula","aria-live":"polite"},He={key:0,class:"formula__op"},Re={key:0,class:"chip chip--zero"},Ie={key:1,class:"formula__limits"},Je={class:"term__head"},Ke={class:"term__label"},Qe={class:"hint"},Xe={key:0,class:"term__body"},Ze={class:"term"},et={class:"term__body"},tt={class:"limits"},at={class:"limit"},lt={class:"limit"},st={class:"limit"},nt={class:"sample"},ot={key:1,class:"cmp"},ut={key:2,class:"hint warn"},it={class:"hist__meta"},rt={class:"hint"},mt=Ae({__name:"wage",setup(dt){const ge=Le(),ye=e=>!!ge.hasPermission(e),O=$(!1),W=$(!1),i=$(null),n=X({version:1,variantCoef:"1",customerCoef:"1",promotionCoef:"1",promotionPick:"max",constant:"0",min:null,max:null,decimals:null}),f=X({rashWeightGrams:10,quantity:1,variantPercent:7,customerPercent:3,promotionPercent:0}),w=$(null),U=$(""),P=$(!1),A=(e,t)=>{var g,p;const v=(p=(g=e==null?void 0:e.response)==null?void 0:g.data)==null?void 0:p.message;return Array.isArray(v)?v.join("، "):v??t},Z=e=>e===null?null:Number(e),j=e=>e==null||Number.isNaN(e)?"0":String(e),ee=X({variant:1,customer:1,promotion:1});function L(e){const t=`${e}Coef`,v=y({get:()=>Number(n[t])!==0,set:p=>{p||(ee[e]=Number(n[t])||1),n[t]=p?String(ee[e]||1):"0"}}),g=y({get:()=>Number(n[t]),set:p=>n[t]=j(p)});return{enabled:v,coef:g}}const ke=[{key:"variant",label:"اجرت مدل",sign:"+",help:"اجرتی که روی هر مدل (واریانت) کالا ثبت شده است.",...L("variant")},{key:"customer",label:"درصد اختصاصی مشتری",sign:"+",help:"درصدی که روی پرونده‌ی هر مشتری ثبت شده (معمولاً ۳).",...L("customer")},{key:"promotion",label:"تخفیف فعال",sign:"−",help:"تخفیف‌های فعالِ مربوط به همان کالا، دسته‌بندی یا برند. سیستم قدیم فقط بیشترین را کم می‌کرد.",...L("promotion")}],te=y({get:()=>Number(n.constant),set:e=>n.constant=j(e)}),M=y({get:()=>n.min!==null,set:e=>n.min=e?n.min??"0":null}),D=y({get:()=>n.max!==null,set:e=>n.max=e?n.max??"20":null}),V=y({get:()=>n.decimals!==null,set:e=>n.decimals=e?n.decimals??2:null}),ae=y({get:()=>Z(n.min),set:e=>n.min=j(e)}),le=y({get:()=>Z(n.max),set:e=>n.max=j(e)}),se=y({get:()=>n.decimals,set:e=>n.decimals=e??0}),_=e=>String(e).replace(/\d/g,t=>"۰۱۲۳۴۵۶۷۸۹"[Number(t)]).replace(".","٫"),Y=e=>Number(e)===1?"":`${_(e)} × `;function ne(e){const t=[];return Number(e.variantCoef)&&t.push({key:"variant",sign:"+",text:`${Y(e.variantCoef)}اجرت مدل`}),Number(e.customerCoef)&&t.push({key:"customer",sign:"+",text:`${Y(e.customerCoef)}درصد مشتری`}),Number(e.promotionCoef)&&t.push({key:"promotion",sign:"−",text:`${Y(e.promotionCoef)}${e.promotionPick==="max"?"بیشترین تخفیف":"جمع تخفیف‌ها"}`}),Number(e.constant)&&t.push({key:"constant",sign:Number(e.constant)<0?"−":"+",text:`${_(Math.abs(Number(e.constant)))}٪`}),t}const oe=y(()=>ne(n));function ue(e){const t=[];return e.min!==null&&t.push(`حداقل ${_(e.min)}٪`),e.max!==null&&t.push(`حداکثر ${_(e.max)}٪`),e.decimals!==null&&t.push(`گرد تا ${_(e.decimals)} رقم اعشار`),t.join(" · ")}const ie=y(()=>ue(n));function re(e){const v=ne(e).map((p,R)=>`${R>0||p.sign==="−"?` ${p.sign} `:""}${p.text}`).join("")||"۰",g=ue(e);return`اجرت نهایی = ${v}${g?` (${g})`:""}`}const me=e=>`${_(e.rashWeightGrams)} گرم × ${_(e.quantity)}، اجرت مدل ${_(e.variantPercent)}٪، مشتری ${_(e.customerPercent)}٪، تخفیف ${_(e.promotionPercent)}٪`,N=e=>`${_(Number(e))}٪`,G=e=>`${_(Number(e))} گرم`,de=e=>e?_(We(e).format("jYYYY/jM/jD HH:mm")):"",xe=[{key:"v",label:"سهم اجرت مدل",fmt:e=>N(e.variantTerm)},{key:"c",label:"سهم درصد مشتری",fmt:e=>N(e.customerTerm)},{key:"p",label:"سهم تخفیف (کم می‌شود)",fmt:e=>N(e.promotionTerm)},{key:"k",label:"مقدار ثابت",fmt:e=>N(e.constant)},{key:"b",label:"قبل از محدودیت",fmt:e=>N(e.beforeLimits)},{key:"f",label:"اجرت نهایی",fmt:e=>N(e.finalPercent),strong:!0},{key:"w",label:"اجرت به گرم",fmt:e=>G(e.wageGrams)},{key:"t",label:"وزن کل فاکتور",fmt:e=>G(e.totalGrams),strong:!0}],ce=(e,t)=>["variantCoef","customerCoef","promotionCoef","constant","min","max"].every(v=>(e[v]===null?null:Number(e[v]))===(t[v]===null?null:Number(t[v])))&&e.promotionPick===t.promotionPick&&e.decimals===t.decimals,B=y(()=>!!i.value&&!ce(n,i.value.formula)),we=e=>!!i.value&&ce(e,i.value.legacy),pe=y(()=>B.value&&P.value&&!U.value&&!!w.value);function q(e){Object.assign(n,{...e})}function F(e){Object.assign(f,{rashWeightGrams:Number(e.rashWeightGrams),quantity:Number(e.quantity),variantPercent:Number(e.variantPercent),customerPercent:Number(e.customerPercent),promotionPercent:Number(e.promotionPercent)})}async function Ne(){O.value=!0;try{const{data:e}=await K.get("admin/pricing/wage-formula");i.value=e,q(e.formula),F(e.sample),P.value=!1}catch(e){Q.error(A(e,"خطا در دریافت فرمول اجرت"))}finally{O.value=!1}}let E=0,H=null;async function ve(){const e=++E;try{const{data:t}=await K.post("admin/pricing/wage-formula/preview",{formula:{...n},sample:{...f}});if(e!==E)return;w.value=t,U.value=""}catch(t){if(e!==E)return;U.value=A(t,"محاسبه‌ی نمونه انجام نشد")}}Me([()=>({...n}),()=>({...f})],()=>{P.value=!1,H&&clearTimeout(H),H=setTimeout(ve,250)},{deep:!0});function he(){i.value&&q(i.value.legacy)}function Pe(){i.value&&q(i.value.formula)}function $e(){i.value&&F(i.value.sample)}async function Ce(){W.value=!0;try{const{data:e}=await K.put("admin/pricing/wage-formula",{formula:{...n},sample:{...f}});i.value=e,q(e.formula),F(e.sample),P.value=!1,Q.success("فرمول اجرت ثبت شد و از همین حالا اعمال می‌شود")}catch(e){Q.error(A(e,"خطا در ثبت فرمول"))}finally{W.value=!1}}return De(async()=>{await Ne(),await ve()}),(e,t)=>{const v=c("a-tag"),g=c("a-card"),p=c("a-button"),R=c("a-switch"),x=c("a-input-number"),fe=c("a-radio-button"),Ue=c("a-radio-group"),Ge=c("a-divider"),z=c("a-checkbox"),be=c("a-col"),I=c("a-alert"),Te=c("a-popconfirm"),je=c("a-row"),J=c("a-descriptions-item"),Be=c("a-descriptions"),qe=c("a-collapse-panel"),ze=c("a-collapse"),Se=c("a-spin"),Oe=c("a-result");return ye("config.wage")?(m(),b("div",Ye,[s(Se,{spinning:O.value},{default:o(()=>[s(g,{class:"mb-4",bordered:!1},{default:o(()=>{var a;return[l("div",Fe,[t[15]||(t[15]=l("div",null,[l("div",{class:"status__title"},"فرمول اجرت سفارش‌های اپلیکیشن"),l("div",{class:"hint"}," اجرتی که مشتری در اپ می‌بیند و اجرتی که روی فاکتور می‌آید، هر دو با همین فرمول در سرور حساب می‌شوند. اجرتی که اپراتور در پنل برای یک سفارش دستی وارد می‌کند، دست نمی‌خورد. ")],-1)),(a=i.value)!=null&&a.isLegacyDefault?(m(),h(v,{key:0,color:"blue"},{default:o(()=>[...t[14]||(t[14]=[d("فرمول سیستم قدیم (پیش‌فرض)",-1)])]),_:1})):i.value?(m(),h(v,{key:1,color:"green"},{default:o(()=>{var u;return[d(" تأییدشده در "+r(de(i.value.approvedAt))+" — "+r((u=i.value.approvedBy)==null?void 0:u.name),1)]}),_:1})):k("",!0)])]}),_:1}),s(je,{gutter:[16,16]},{default:o(()=>[s(be,{xs:24,xl:12},{default:o(()=>[s(g,{title:"ساختار فرمول"},{extra:o(()=>[s(p,{size:"small",disabled:we(n),onClick:he},{default:o(()=>[...t[16]||(t[16]=[d("بازگشت به فرمول سیستم قدیم",-1)])]),_:1},8,["disabled"])]),default:o(()=>[l("div",Ee,[t[17]||(t[17]=l("span",{class:"formula__lhs"},"اجرت نهایی =",-1)),(m(!0),b(C,null,S(oe.value,(a,u)=>(m(),b(C,{key:a.key},[u>0||a.sign==="−"?(m(),b("span",He,r(a.sign),1)):k("",!0),l("span",{class:T(["chip",`chip--${a.key}`])},r(a.text),3)],64))),128)),oe.value.length?k("",!0):(m(),b("span",Re,"۰")),ie.value?(m(),b("div",Ie,r(ie.value),1)):k("",!0)]),(m(),b(C,null,S(ke,a=>l("div",{class:"term",key:a.key},[l("div",Je,[s(R,{checked:a.enabled.value,"onUpdate:checked":u=>a.enabled.value=u,size:"small"},null,8,["checked","onUpdate:checked"]),l("span",Ke,r(a.label),1),l("span",{class:T(["chip chip--sm",`chip--${a.key}`])},r(a.sign),3)]),l("div",Qe,r(a.help),1),a.enabled.value?(m(),b("div",Xe,[t[20]||(t[20]=l("span",null,"ضریب",-1)),s(x,{value:a.coef.value,"onUpdate:value":u=>a.coef.value=u,step:.1,min:-10,max:10,class:"num"},null,8,["value","onUpdate:value"]),a.key==="promotion"?(m(),h(Ue,{key:0,value:n.promotionPick,"onUpdate:value":t[0]||(t[0]=u=>n.promotionPick=u),size:"small","button-style":"solid"},{default:o(()=>[s(fe,{value:"max"},{default:o(()=>[...t[18]||(t[18]=[d("بیشترین تخفیف",-1)])]),_:1}),s(fe,{value:"sum"},{default:o(()=>[...t[19]||(t[19]=[d("جمع تخفیف‌ها",-1)])]),_:1})]),_:1},8,["value"])):k("",!0)])):k("",!0)])),64)),l("div",Ze,[t[21]||(t[21]=l("div",{class:"term__head"},[l("span",{class:"term__label"},"مقدار ثابت (درصد)"),l("span",{class:"chip chip--sm chip--constant"},"±")],-1)),t[22]||(t[22]=l("div",{class:"hint"},"به همه‌ی اجرت‌ها اضافه می‌شود؛ عدد منفی کم می‌کند. صفر یعنی بی‌اثر.",-1)),l("div",et,[s(x,{value:te.value,"onUpdate:value":t[1]||(t[1]=a=>te.value=a),step:.1,min:-100,max:100,class:"num","addon-after":"٪"},null,8,["value"])])]),s(Ge,{orientation:"right",class:"divider"},{default:o(()=>[...t[23]||(t[23]=[d("محدودیت و گرد کردن",-1)])]),_:1}),l("div",tt,[l("div",at,[s(z,{checked:M.value,"onUpdate:checked":t[2]||(t[2]=a=>M.value=a)},{default:o(()=>[...t[24]||(t[24]=[d("حداقل اجرت",-1)])]),_:1},8,["checked"]),s(x,{value:ae.value,"onUpdate:value":t[3]||(t[3]=a=>ae.value=a),disabled:!M.value,step:.5,class:"num","addon-after":"٪"},null,8,["value","disabled"])]),l("div",lt,[s(z,{checked:D.value,"onUpdate:checked":t[4]||(t[4]=a=>D.value=a)},{default:o(()=>[...t[25]||(t[25]=[d("حداکثر اجرت",-1)])]),_:1},8,["checked"]),s(x,{value:le.value,"onUpdate:value":t[5]||(t[5]=a=>le.value=a),disabled:!D.value,step:.5,class:"num","addon-after":"٪"},null,8,["value","disabled"])]),l("div",st,[s(z,{checked:V.value,"onUpdate:checked":t[6]||(t[6]=a=>V.value=a)},{default:o(()=>[...t[26]||(t[26]=[d("گرد کردن",-1)])]),_:1},8,["checked"]),s(x,{value:se.value,"onUpdate:value":t[7]||(t[7]=a=>se.value=a),disabled:!V.value,min:0,max:4,precision:0,class:"num","addon-after":"رقم اعشار"},null,8,["value","disabled"])])])]),_:1})]),_:1}),s(be,{xs:24,xl:12},{default:o(()=>[s(g,{title:"نمونه — نتیجه را قبل از ثبت ببینید"},{extra:o(()=>[s(p,{size:"small",type:"link",disabled:!i.value,onClick:$e},{default:o(()=>[...t[27]||(t[27]=[d("نمونه‌ی ثبت‌شده",-1)])]),_:1},8,["disabled"])]),default:o(()=>{var a;return[l("div",nt,[l("label",null,[t[28]||(t[28]=d("وزن خام",-1)),s(x,{value:f.rashWeightGrams,"onUpdate:value":t[8]||(t[8]=u=>f.rashWeightGrams=u),min:0,step:.1,class:"num","addon-after":"گرم"},null,8,["value"])]),l("label",null,[t[29]||(t[29]=d("تعداد",-1)),s(x,{value:f.quantity,"onUpdate:value":t[9]||(t[9]=u=>f.quantity=u),min:1,max:1e3,precision:0,class:"num"},null,8,["value"])]),l("label",null,[t[30]||(t[30]=d("اجرت مدل",-1)),s(x,{value:f.variantPercent,"onUpdate:value":t[10]||(t[10]=u=>f.variantPercent=u),step:.5,class:"num","addon-after":"٪"},null,8,["value"])]),l("label",null,[t[31]||(t[31]=d("درصد مشتری",-1)),s(x,{value:f.customerPercent,"onUpdate:value":t[11]||(t[11]=u=>f.customerPercent=u),step:.5,class:"num","addon-after":"٪"},null,8,["value"])]),l("label",null,[t[32]||(t[32]=d("تخفیف فعال",-1)),s(x,{value:f.promotionPercent,"onUpdate:value":t[12]||(t[12]=u=>f.promotionPercent=u),min:0,max:100,step:.5,class:"num","addon-after":"٪"},null,8,["value"])])]),U.value?(m(),h(I,{key:0,type:"error","show-icon":"",class:"mb-4",message:U.value},null,8,["message"])):k("",!0),w.value?(m(),b("table",ot,[l("thead",null,[l("tr",null,[t[33]||(t[33]=l("th",null,null,-1)),t[34]||(t[34]=l("th",null,"فرمول فعلی",-1)),l("th",{class:T({changed:B.value})},r(B.value?"پیش‌نویس شما":"پیش‌نویس (بدون تغییر)"),3)])]),l("tbody",null,[(m(),b(C,null,S(xe,u=>l("tr",{key:u.key,class:T({strong:u.strong})},[l("td",null,r(u.label),1),l("td",null,r(u.fmt(w.value.current)),1),l("td",{class:T({diff:u.fmt(w.value.current)!==u.fmt(w.value.draft)})},r(u.fmt(w.value.draft)),3)],2)),64))])])):k("",!0),(a=w.value)!=null&&a.draft.limitedBy?(m(),b("div",ut," در پیش‌نویس، "+r(w.value.draft.limitedBy==="min"?"حداقل":"حداکثر")+" اجرت روی نتیجه اثر گذاشت. ",1)):k("",!0)]}),_:1}),s(g,{class:"mt-4",title:"تأیید و ثبت"},{default:o(()=>[B.value?(m(),b(C,{key:1},[s(I,{type:"warning","show-icon":"",class:"mb-4",message:"تا «تأیید و ثبت» نزنید هیچ چیزی عوض نمی‌شود.",description:"بعد از ثبت، همه‌ی سفارش‌های جدید اپ و اجرتی که اپ نشان می‌دهد با فرمول جدید حساب می‌شوند. سفارش‌های ثبت‌شده‌ی قبلی تغییری نمی‌کنند."}),s(z,{checked:P.value,"onUpdate:checked":t[13]||(t[13]=a=>P.value=a),class:"mb-4"},{default:o(()=>[...t[35]||(t[35]=[d(" نتیجه‌ی نمونه را بررسی کردم و درست است. ",-1)])]),_:1},8,["checked"]),l("div",null,[s(Te,{title:"فرمول جدید از همین حالا برای سفارش‌های اپ اعمال شود؟","ok-text":"بله، ثبت شود","cancel-text":"انصراف",disabled:!pe.value,onConfirm:Ce},{default:o(()=>[s(p,{type:"primary",disabled:!pe.value,loading:W.value},{default:o(()=>[...t[36]||(t[36]=[d("تأیید و ثبت فرمول",-1)])]),_:1},8,["disabled","loading"])]),_:1},8,["disabled"]),s(p,{class:"ms",onClick:Pe},{default:o(()=>[...t[37]||(t[37]=[d("لغو تغییرات",-1)])]),_:1})])],64)):(m(),h(I,{key:0,type:"info","show-icon":"",message:"تغییری نسبت به فرمول فعلی نداده‌اید.",class:"mb-4"}))]),_:1})]),_:1})]),_:1}),i.value?(m(),h(g,{key:0,class:"mt-4",title:"نمونه‌ی مرجعِ فرمول فعلی"},{default:o(()=>[t[38]||(t[38]=l("div",{class:"hint mb-4"}," این نمونه همراه فرمول فعلی ثبت شده است؛ هر کس فرمول را ببیند می‌داند با چه عددی بررسی و تأیید شده. ",-1)),s(Be,{size:"small",bordered:"",column:{xs:1,md:3}},{default:o(()=>[s(J,{label:"فرمول"},{default:o(()=>[d(r(re(i.value.formula)),1)]),_:1}),s(J,{label:"نمونه"},{default:o(()=>[d(r(me(i.value.sample)),1)]),_:1}),s(J,{label:"نتیجه"},{default:o(()=>[d(" اجرت "+r(N(i.value.result.finalPercent))+" — "+r(G(i.value.result.wageGrams))+" اجرت، "+r(G(i.value.result.totalGrams))+" وزن کل ",1)]),_:1})]),_:1}),i.value.history.length?(m(),h(ze,{key:0,ghost:"",class:"mt-4"},{default:o(()=>[s(qe,{key:"h",header:`نسخه‌های قبلی (${i.value.history.length})`},{default:o(()=>[(m(!0),b(C,null,S(i.value.history,(a,u)=>{var _e;return m(),b("div",{key:u,class:"hist"},[l("div",it,r(de(a.approvedAt))+" — "+r((_e=a.approvedBy)==null?void 0:_e.name),1),l("div",null,r(re(a.formula)),1),l("div",rt,r(me(a.sample))+" ← اجرت "+r(N(a.result.finalPercent))+"، وزن کل "+r(G(a.result.totalGrams)),1)])}),128))]),_:1},8,["header"])]),_:1})):k("",!0)]),_:1})):k("",!0)]),_:1},8,["spinning"])])):(m(),h(Oe,{key:1,status:"403",title:"دسترسی ندارید","sub-title":"این صفحه دسترسی «اجرت» می‌خواهد."}))}}}),vt=Ve(mt,[["__scopeId","data-v-3caccb79"]]);export{vt as default}; +import{m as We}from"./index-CPTngTRs.js";import{d as Ae,u as Le,n as Me,x as De,b,c as s,w as o,a as h,m as $,y as K,G as Q,r as c,z as X,o as m,p as l,f as d,t as r,i as k,F as C,e as S,q as T,s as y,_ as Ve}from"./index-CuIWfDbM.js";const Ye={key:0,class:"wage page-card"},Fe={class:"status"},Ee={class:"formula","aria-live":"polite"},He={key:0,class:"formula__op"},Re={key:0,class:"chip chip--zero"},Ie={key:1,class:"formula__limits"},Je={class:"term__head"},Ke={class:"term__label"},Qe={class:"hint"},Xe={key:0,class:"term__body"},Ze={class:"term"},et={class:"term__body"},tt={class:"limits"},at={class:"limit"},lt={class:"limit"},st={class:"limit"},nt={class:"sample"},ot={key:1,class:"cmp"},ut={key:2,class:"hint warn"},it={class:"hist__meta"},rt={class:"hint"},mt=Ae({__name:"wage",setup(dt){const ge=Le(),ye=e=>!!ge.hasPermission(e),O=$(!1),W=$(!1),i=$(null),n=X({version:1,variantCoef:"1",customerCoef:"1",promotionCoef:"1",promotionPick:"max",constant:"0",min:null,max:null,decimals:null}),f=X({rashWeightGrams:10,quantity:1,variantPercent:7,customerPercent:3,promotionPercent:0}),w=$(null),U=$(""),P=$(!1),A=(e,t)=>{var g,p;const v=(p=(g=e==null?void 0:e.response)==null?void 0:g.data)==null?void 0:p.message;return Array.isArray(v)?v.join("، "):v??t},Z=e=>e===null?null:Number(e),j=e=>e==null||Number.isNaN(e)?"0":String(e),ee=X({variant:1,customer:1,promotion:1});function L(e){const t=`${e}Coef`,v=y({get:()=>Number(n[t])!==0,set:p=>{p||(ee[e]=Number(n[t])||1),n[t]=p?String(ee[e]||1):"0"}}),g=y({get:()=>Number(n[t]),set:p=>n[t]=j(p)});return{enabled:v,coef:g}}const ke=[{key:"variant",label:"اجرت مدل",sign:"+",help:"اجرتی که روی هر مدل (واریانت) کالا ثبت شده است.",...L("variant")},{key:"customer",label:"درصد اختصاصی مشتری",sign:"+",help:"درصدی که روی پرونده‌ی هر مشتری ثبت شده (معمولاً ۳).",...L("customer")},{key:"promotion",label:"تخفیف فعال",sign:"−",help:"تخفیف‌های فعالِ مربوط به همان کالا، دسته‌بندی یا برند. سیستم قدیم فقط بیشترین را کم می‌کرد.",...L("promotion")}],te=y({get:()=>Number(n.constant),set:e=>n.constant=j(e)}),M=y({get:()=>n.min!==null,set:e=>n.min=e?n.min??"0":null}),D=y({get:()=>n.max!==null,set:e=>n.max=e?n.max??"20":null}),V=y({get:()=>n.decimals!==null,set:e=>n.decimals=e?n.decimals??2:null}),ae=y({get:()=>Z(n.min),set:e=>n.min=j(e)}),le=y({get:()=>Z(n.max),set:e=>n.max=j(e)}),se=y({get:()=>n.decimals,set:e=>n.decimals=e??0}),_=e=>String(e).replace(/\d/g,t=>"۰۱۲۳۴۵۶۷۸۹"[Number(t)]).replace(".","٫"),Y=e=>Number(e)===1?"":`${_(e)} × `;function ne(e){const t=[];return Number(e.variantCoef)&&t.push({key:"variant",sign:"+",text:`${Y(e.variantCoef)}اجرت مدل`}),Number(e.customerCoef)&&t.push({key:"customer",sign:"+",text:`${Y(e.customerCoef)}درصد مشتری`}),Number(e.promotionCoef)&&t.push({key:"promotion",sign:"−",text:`${Y(e.promotionCoef)}${e.promotionPick==="max"?"بیشترین تخفیف":"جمع تخفیف‌ها"}`}),Number(e.constant)&&t.push({key:"constant",sign:Number(e.constant)<0?"−":"+",text:`${_(Math.abs(Number(e.constant)))}٪`}),t}const oe=y(()=>ne(n));function ue(e){const t=[];return e.min!==null&&t.push(`حداقل ${_(e.min)}٪`),e.max!==null&&t.push(`حداکثر ${_(e.max)}٪`),e.decimals!==null&&t.push(`گرد تا ${_(e.decimals)} رقم اعشار`),t.join(" · ")}const ie=y(()=>ue(n));function re(e){const v=ne(e).map((p,R)=>`${R>0||p.sign==="−"?` ${p.sign} `:""}${p.text}`).join("")||"۰",g=ue(e);return`اجرت نهایی = ${v}${g?` (${g})`:""}`}const me=e=>`${_(e.rashWeightGrams)} گرم × ${_(e.quantity)}، اجرت مدل ${_(e.variantPercent)}٪، مشتری ${_(e.customerPercent)}٪، تخفیف ${_(e.promotionPercent)}٪`,N=e=>`${_(Number(e))}٪`,G=e=>`${_(Number(e))} گرم`,de=e=>e?_(We(e).format("jYYYY/jM/jD HH:mm")):"",xe=[{key:"v",label:"سهم اجرت مدل",fmt:e=>N(e.variantTerm)},{key:"c",label:"سهم درصد مشتری",fmt:e=>N(e.customerTerm)},{key:"p",label:"سهم تخفیف (کم می‌شود)",fmt:e=>N(e.promotionTerm)},{key:"k",label:"مقدار ثابت",fmt:e=>N(e.constant)},{key:"b",label:"قبل از محدودیت",fmt:e=>N(e.beforeLimits)},{key:"f",label:"اجرت نهایی",fmt:e=>N(e.finalPercent),strong:!0},{key:"w",label:"اجرت به گرم",fmt:e=>G(e.wageGrams)},{key:"t",label:"وزن کل فاکتور",fmt:e=>G(e.totalGrams),strong:!0}],ce=(e,t)=>["variantCoef","customerCoef","promotionCoef","constant","min","max"].every(v=>(e[v]===null?null:Number(e[v]))===(t[v]===null?null:Number(t[v])))&&e.promotionPick===t.promotionPick&&e.decimals===t.decimals,B=y(()=>!!i.value&&!ce(n,i.value.formula)),we=e=>!!i.value&&ce(e,i.value.legacy),pe=y(()=>B.value&&P.value&&!U.value&&!!w.value);function q(e){Object.assign(n,{...e})}function F(e){Object.assign(f,{rashWeightGrams:Number(e.rashWeightGrams),quantity:Number(e.quantity),variantPercent:Number(e.variantPercent),customerPercent:Number(e.customerPercent),promotionPercent:Number(e.promotionPercent)})}async function Ne(){O.value=!0;try{const{data:e}=await K.get("admin/pricing/wage-formula");i.value=e,q(e.formula),F(e.sample),P.value=!1}catch(e){Q.error(A(e,"خطا در دریافت فرمول اجرت"))}finally{O.value=!1}}let E=0,H=null;async function ve(){const e=++E;try{const{data:t}=await K.post("admin/pricing/wage-formula/preview",{formula:{...n},sample:{...f}});if(e!==E)return;w.value=t,U.value=""}catch(t){if(e!==E)return;U.value=A(t,"محاسبه‌ی نمونه انجام نشد")}}Me([()=>({...n}),()=>({...f})],()=>{P.value=!1,H&&clearTimeout(H),H=setTimeout(ve,250)},{deep:!0});function he(){i.value&&q(i.value.legacy)}function Pe(){i.value&&q(i.value.formula)}function $e(){i.value&&F(i.value.sample)}async function Ce(){W.value=!0;try{const{data:e}=await K.put("admin/pricing/wage-formula",{formula:{...n},sample:{...f}});i.value=e,q(e.formula),F(e.sample),P.value=!1,Q.success("فرمول اجرت ثبت شد و از همین حالا اعمال می‌شود")}catch(e){Q.error(A(e,"خطا در ثبت فرمول"))}finally{W.value=!1}}return De(async()=>{await Ne(),await ve()}),(e,t)=>{const v=c("a-tag"),g=c("a-card"),p=c("a-button"),R=c("a-switch"),x=c("a-input-number"),fe=c("a-radio-button"),Ue=c("a-radio-group"),Ge=c("a-divider"),z=c("a-checkbox"),be=c("a-col"),I=c("a-alert"),Te=c("a-popconfirm"),je=c("a-row"),J=c("a-descriptions-item"),Be=c("a-descriptions"),qe=c("a-collapse-panel"),ze=c("a-collapse"),Se=c("a-spin"),Oe=c("a-result");return ye("config.wage")?(m(),b("div",Ye,[s(Se,{spinning:O.value},{default:o(()=>[s(g,{class:"mb-4",bordered:!1},{default:o(()=>{var a;return[l("div",Fe,[t[15]||(t[15]=l("div",null,[l("div",{class:"status__title"},"فرمول اجرت سفارش‌های اپلیکیشن"),l("div",{class:"hint"}," اجرتی که مشتری در اپ می‌بیند و اجرتی که روی فاکتور می‌آید، هر دو با همین فرمول در سرور حساب می‌شوند. اجرتی که اپراتور در پنل برای یک سفارش دستی وارد می‌کند، دست نمی‌خورد. ")],-1)),(a=i.value)!=null&&a.isLegacyDefault?(m(),h(v,{key:0,color:"blue"},{default:o(()=>[...t[14]||(t[14]=[d("فرمول سیستم قدیم (پیش‌فرض)",-1)])]),_:1})):i.value?(m(),h(v,{key:1,color:"green"},{default:o(()=>{var u;return[d(" تأییدشده در "+r(de(i.value.approvedAt))+" — "+r((u=i.value.approvedBy)==null?void 0:u.name),1)]}),_:1})):k("",!0)])]}),_:1}),s(je,{gutter:[16,16]},{default:o(()=>[s(be,{xs:24,xl:12},{default:o(()=>[s(g,{title:"ساختار فرمول"},{extra:o(()=>[s(p,{size:"small",disabled:we(n),onClick:he},{default:o(()=>[...t[16]||(t[16]=[d("بازگشت به فرمول سیستم قدیم",-1)])]),_:1},8,["disabled"])]),default:o(()=>[l("div",Ee,[t[17]||(t[17]=l("span",{class:"formula__lhs"},"اجرت نهایی =",-1)),(m(!0),b(C,null,S(oe.value,(a,u)=>(m(),b(C,{key:a.key},[u>0||a.sign==="−"?(m(),b("span",He,r(a.sign),1)):k("",!0),l("span",{class:T(["chip",`chip--${a.key}`])},r(a.text),3)],64))),128)),oe.value.length?k("",!0):(m(),b("span",Re,"۰")),ie.value?(m(),b("div",Ie,r(ie.value),1)):k("",!0)]),(m(),b(C,null,S(ke,a=>l("div",{class:"term",key:a.key},[l("div",Je,[s(R,{checked:a.enabled.value,"onUpdate:checked":u=>a.enabled.value=u,size:"small"},null,8,["checked","onUpdate:checked"]),l("span",Ke,r(a.label),1),l("span",{class:T(["chip chip--sm",`chip--${a.key}`])},r(a.sign),3)]),l("div",Qe,r(a.help),1),a.enabled.value?(m(),b("div",Xe,[t[20]||(t[20]=l("span",null,"ضریب",-1)),s(x,{value:a.coef.value,"onUpdate:value":u=>a.coef.value=u,step:.1,min:-10,max:10,class:"num"},null,8,["value","onUpdate:value"]),a.key==="promotion"?(m(),h(Ue,{key:0,value:n.promotionPick,"onUpdate:value":t[0]||(t[0]=u=>n.promotionPick=u),size:"small","button-style":"solid"},{default:o(()=>[s(fe,{value:"max"},{default:o(()=>[...t[18]||(t[18]=[d("بیشترین تخفیف",-1)])]),_:1}),s(fe,{value:"sum"},{default:o(()=>[...t[19]||(t[19]=[d("جمع تخفیف‌ها",-1)])]),_:1})]),_:1},8,["value"])):k("",!0)])):k("",!0)])),64)),l("div",Ze,[t[21]||(t[21]=l("div",{class:"term__head"},[l("span",{class:"term__label"},"مقدار ثابت (درصد)"),l("span",{class:"chip chip--sm chip--constant"},"±")],-1)),t[22]||(t[22]=l("div",{class:"hint"},"به همه‌ی اجرت‌ها اضافه می‌شود؛ عدد منفی کم می‌کند. صفر یعنی بی‌اثر.",-1)),l("div",et,[s(x,{value:te.value,"onUpdate:value":t[1]||(t[1]=a=>te.value=a),step:.1,min:-100,max:100,class:"num","addon-after":"٪"},null,8,["value"])])]),s(Ge,{orientation:"right",class:"divider"},{default:o(()=>[...t[23]||(t[23]=[d("محدودیت و گرد کردن",-1)])]),_:1}),l("div",tt,[l("div",at,[s(z,{checked:M.value,"onUpdate:checked":t[2]||(t[2]=a=>M.value=a)},{default:o(()=>[...t[24]||(t[24]=[d("حداقل اجرت",-1)])]),_:1},8,["checked"]),s(x,{value:ae.value,"onUpdate:value":t[3]||(t[3]=a=>ae.value=a),disabled:!M.value,step:.5,class:"num","addon-after":"٪"},null,8,["value","disabled"])]),l("div",lt,[s(z,{checked:D.value,"onUpdate:checked":t[4]||(t[4]=a=>D.value=a)},{default:o(()=>[...t[25]||(t[25]=[d("حداکثر اجرت",-1)])]),_:1},8,["checked"]),s(x,{value:le.value,"onUpdate:value":t[5]||(t[5]=a=>le.value=a),disabled:!D.value,step:.5,class:"num","addon-after":"٪"},null,8,["value","disabled"])]),l("div",st,[s(z,{checked:V.value,"onUpdate:checked":t[6]||(t[6]=a=>V.value=a)},{default:o(()=>[...t[26]||(t[26]=[d("گرد کردن",-1)])]),_:1},8,["checked"]),s(x,{value:se.value,"onUpdate:value":t[7]||(t[7]=a=>se.value=a),disabled:!V.value,min:0,max:4,precision:0,class:"num","addon-after":"رقم اعشار"},null,8,["value","disabled"])])])]),_:1})]),_:1}),s(be,{xs:24,xl:12},{default:o(()=>[s(g,{title:"نمونه — نتیجه را قبل از ثبت ببینید"},{extra:o(()=>[s(p,{size:"small",type:"link",disabled:!i.value,onClick:$e},{default:o(()=>[...t[27]||(t[27]=[d("نمونه‌ی ثبت‌شده",-1)])]),_:1},8,["disabled"])]),default:o(()=>{var a;return[l("div",nt,[l("label",null,[t[28]||(t[28]=d("وزن خام",-1)),s(x,{value:f.rashWeightGrams,"onUpdate:value":t[8]||(t[8]=u=>f.rashWeightGrams=u),min:0,step:.1,class:"num","addon-after":"گرم"},null,8,["value"])]),l("label",null,[t[29]||(t[29]=d("تعداد",-1)),s(x,{value:f.quantity,"onUpdate:value":t[9]||(t[9]=u=>f.quantity=u),min:1,max:1e3,precision:0,class:"num"},null,8,["value"])]),l("label",null,[t[30]||(t[30]=d("اجرت مدل",-1)),s(x,{value:f.variantPercent,"onUpdate:value":t[10]||(t[10]=u=>f.variantPercent=u),step:.5,class:"num","addon-after":"٪"},null,8,["value"])]),l("label",null,[t[31]||(t[31]=d("درصد مشتری",-1)),s(x,{value:f.customerPercent,"onUpdate:value":t[11]||(t[11]=u=>f.customerPercent=u),step:.5,class:"num","addon-after":"٪"},null,8,["value"])]),l("label",null,[t[32]||(t[32]=d("تخفیف فعال",-1)),s(x,{value:f.promotionPercent,"onUpdate:value":t[12]||(t[12]=u=>f.promotionPercent=u),min:0,max:100,step:.5,class:"num","addon-after":"٪"},null,8,["value"])])]),U.value?(m(),h(I,{key:0,type:"error","show-icon":"",class:"mb-4",message:U.value},null,8,["message"])):k("",!0),w.value?(m(),b("table",ot,[l("thead",null,[l("tr",null,[t[33]||(t[33]=l("th",null,null,-1)),t[34]||(t[34]=l("th",null,"فرمول فعلی",-1)),l("th",{class:T({changed:B.value})},r(B.value?"پیش‌نویس شما":"پیش‌نویس (بدون تغییر)"),3)])]),l("tbody",null,[(m(),b(C,null,S(xe,u=>l("tr",{key:u.key,class:T({strong:u.strong})},[l("td",null,r(u.label),1),l("td",null,r(u.fmt(w.value.current)),1),l("td",{class:T({diff:u.fmt(w.value.current)!==u.fmt(w.value.draft)})},r(u.fmt(w.value.draft)),3)],2)),64))])])):k("",!0),(a=w.value)!=null&&a.draft.limitedBy?(m(),b("div",ut," در پیش‌نویس، "+r(w.value.draft.limitedBy==="min"?"حداقل":"حداکثر")+" اجرت روی نتیجه اثر گذاشت. ",1)):k("",!0)]}),_:1}),s(g,{class:"mt-4",title:"تأیید و ثبت"},{default:o(()=>[B.value?(m(),b(C,{key:1},[s(I,{type:"warning","show-icon":"",class:"mb-4",message:"تا «تأیید و ثبت» نزنید هیچ چیزی عوض نمی‌شود.",description:"بعد از ثبت، همه‌ی سفارش‌های جدید اپ و اجرتی که اپ نشان می‌دهد با فرمول جدید حساب می‌شوند. سفارش‌های ثبت‌شده‌ی قبلی تغییری نمی‌کنند."}),s(z,{checked:P.value,"onUpdate:checked":t[13]||(t[13]=a=>P.value=a),class:"mb-4"},{default:o(()=>[...t[35]||(t[35]=[d(" نتیجه‌ی نمونه را بررسی کردم و درست است. ",-1)])]),_:1},8,["checked"]),l("div",null,[s(Te,{title:"فرمول جدید از همین حالا برای سفارش‌های اپ اعمال شود؟","ok-text":"بله، ثبت شود","cancel-text":"انصراف",disabled:!pe.value,onConfirm:Ce},{default:o(()=>[s(p,{type:"primary",disabled:!pe.value,loading:W.value},{default:o(()=>[...t[36]||(t[36]=[d("تأیید و ثبت فرمول",-1)])]),_:1},8,["disabled","loading"])]),_:1},8,["disabled"]),s(p,{class:"ms",onClick:Pe},{default:o(()=>[...t[37]||(t[37]=[d("لغو تغییرات",-1)])]),_:1})])],64)):(m(),h(I,{key:0,type:"info","show-icon":"",message:"تغییری نسبت به فرمول فعلی نداده‌اید.",class:"mb-4"}))]),_:1})]),_:1})]),_:1}),i.value?(m(),h(g,{key:0,class:"mt-4",title:"نمونه‌ی مرجعِ فرمول فعلی"},{default:o(()=>[t[38]||(t[38]=l("div",{class:"hint mb-4"}," این نمونه همراه فرمول فعلی ثبت شده است؛ هر کس فرمول را ببیند می‌داند با چه عددی بررسی و تأیید شده. ",-1)),s(Be,{size:"small",bordered:"",column:{xs:1,md:3}},{default:o(()=>[s(J,{label:"فرمول"},{default:o(()=>[d(r(re(i.value.formula)),1)]),_:1}),s(J,{label:"نمونه"},{default:o(()=>[d(r(me(i.value.sample)),1)]),_:1}),s(J,{label:"نتیجه"},{default:o(()=>[d(" اجرت "+r(N(i.value.result.finalPercent))+" — "+r(G(i.value.result.wageGrams))+" اجرت، "+r(G(i.value.result.totalGrams))+" وزن کل ",1)]),_:1})]),_:1}),i.value.history.length?(m(),h(ze,{key:0,ghost:"",class:"mt-4"},{default:o(()=>[s(qe,{key:"h",header:`نسخه‌های قبلی (${i.value.history.length})`},{default:o(()=>[(m(!0),b(C,null,S(i.value.history,(a,u)=>{var _e;return m(),b("div",{key:u,class:"hist"},[l("div",it,r(de(a.approvedAt))+" — "+r((_e=a.approvedBy)==null?void 0:_e.name),1),l("div",null,r(re(a.formula)),1),l("div",rt,r(me(a.sample))+" ← اجرت "+r(N(a.result.finalPercent))+"، وزن کل "+r(G(a.result.totalGrams)),1)])}),128))]),_:1},8,["header"])]),_:1})):k("",!0)]),_:1})):k("",!0)]),_:1},8,["spinning"])])):(m(),h(Oe,{key:1,status:"403",title:"دسترسی ندارید","sub-title":"این صفحه دسترسی «اجرت» می‌خواهد."}))}}}),vt=Ve(mt,[["__scopeId","data-v-3caccb79"]]);export{vt as default}; diff --git a/apps/admin-panel/dist/assets/wallet-CRMlwTVz.js b/apps/admin-panel/dist/assets/wallet-B3WVA1VR.js similarity index 82% rename from apps/admin-panel/dist/assets/wallet-CRMlwTVz.js rename to apps/admin-panel/dist/assets/wallet-B3WVA1VR.js index 4fbcaaa..9690896 100644 --- a/apps/admin-panel/dist/assets/wallet-CRMlwTVz.js +++ b/apps/admin-panel/dist/assets/wallet-B3WVA1VR.js @@ -1 +1 @@ -import{a as w,b as t,X as h}from"./model-B4TWAN58.js";import{d as k,u as y,b as r,a as N,w as o,i as T,r as v,o as s,c as x,p as B,F as i,f as n,t as l,h as c,q as C,m as S}from"./index-C9T3Vski.js";import{a as g,b as V}from"./filters-D6Nzbpog.js";import"./SettingOutlined-BizkfqvN.js";import"./index-m6pCHaEa.js";function X(){const e=new w("admin/documents/wallet/list","لیست کیف پول های شارژ شده");return e.add(new t("id","شماره")),e.add(new t("customer.name","نام مشتری").filterKey("customer.fullName").filterText()),e.add(new t("order.id","شماره سفارش").filterText()),e.add(new t("value","میزان شارژ").renderSlot("value")),e.add(new t("expire_at","تاریخ انقضا").noSort().renderSlot("time")),e.noFilters(),e}const z=k({__name:"wallet",setup(e){const m=y(),u=d=>!!m.hasPermission(d),p=X(),f=S(null);return(d,F)=>{const _=v("a-card");return s(),r("div",null,[u("wallet.percent")?(s(),N(_,{key:0,title:"لیست کیف پول های شارژ شده",class:"page-card"},{default:o(()=>[x(h,{ref_key:"tbl",ref:f,model:c(p),"mobile-cards":""},{time:o(({text:a})=>[n(l(a?c(V)(a):""),1)]),value:o(({text:a,record:b})=>[B("span",{class:C({"text-danger":a<0,"text-success":a>0})},[b.transaction_type==1?(s(),r(i,{key:0},[n(l(Math.abs(Number(a)))+" گرم ",1)],64)):(s(),r(i,{key:1},[n(l(c(g)(Math.abs(Number(a)))),1)],64))],2)]),_:1},8,["model"])]),_:1})):T("",!0)])}}});export{z as default}; +import{a as w,b as t,X as h}from"./model-D_9omyEY.js";import{d as k,u as y,b as r,a as N,w as o,i as T,r as v,o as s,c as x,p as B,F as i,f as n,t as l,h as c,q as C,m as S}from"./index-CuIWfDbM.js";import{a as g,b as V}from"./filters-Cvt98RIq.js";import"./SettingOutlined-BehgjsnT.js";import"./index-CPTngTRs.js";function X(){const e=new w("admin/documents/wallet/list","لیست کیف پول های شارژ شده");return e.add(new t("id","شماره")),e.add(new t("customer.name","نام مشتری").filterKey("customer.fullName").filterText()),e.add(new t("order.id","شماره سفارش").filterText()),e.add(new t("value","میزان شارژ").renderSlot("value")),e.add(new t("expire_at","تاریخ انقضا").noSort().renderSlot("time")),e.noFilters(),e}const z=k({__name:"wallet",setup(e){const m=y(),u=d=>!!m.hasPermission(d),p=X(),f=S(null);return(d,F)=>{const _=v("a-card");return s(),r("div",null,[u("wallet.percent")?(s(),N(_,{key:0,title:"لیست کیف پول های شارژ شده",class:"page-card"},{default:o(()=>[x(h,{ref_key:"tbl",ref:f,model:c(p),"mobile-cards":""},{time:o(({text:a})=>[n(l(a?c(V)(a):""),1)]),value:o(({text:a,record:b})=>[B("span",{class:C({"text-danger":a<0,"text-success":a>0})},[b.transaction_type==1?(s(),r(i,{key:0},[n(l(Math.abs(Number(a)))+" گرم ",1)],64)):(s(),r(i,{key:1},[n(l(c(g)(Math.abs(Number(a)))),1)],64))],2)]),_:1},8,["model"])]),_:1})):T("",!0)])}}});export{z as default}; diff --git a/apps/admin-panel/dist/assets/wallet-CIYgq7wX.js b/apps/admin-panel/dist/assets/wallet-Dn2Q-Ksn.js similarity index 98% rename from apps/admin-panel/dist/assets/wallet-CIYgq7wX.js rename to apps/admin-panel/dist/assets/wallet-Dn2Q-Ksn.js index f8c72d9..d7fe9c6 100644 --- a/apps/admin-panel/dist/assets/wallet-CIYgq7wX.js +++ b/apps/admin-panel/dist/assets/wallet-Dn2Q-Ksn.js @@ -1 +1 @@ -import{d as V,u as P,x as S,y as _,b as I,a as M,w as r,i as R,z as f,r as c,o as k,c as t,H as j,p as C,f as O,m as W,G as m,_ as z}from"./index-C9T3Vski.js";const D={class:"grid-2"},G={class:"grid-2"},b="لطفا مقدار را وارد کنید",H=V({__name:"wallet",setup(Q){const U=P(),B=i=>!!U.hasPermission(i),p=W(!1),l=f({expire:void 0,percent:void 0}),s=f({birthday_expire:void 0,birthday_credit:void 0}),o=f({}),d=f({});async function v(){var i,e;if(Object.keys(o).forEach(a=>delete o[a]),(l.expire===void 0||l.expire===null)&&(o.expire=b),(l.percent===void 0||l.percent===null)&&(o.percent=b),!Object.keys(o).length)try{p.value=!0,await _.post("wallet/config",{expire:l.expire,percent:l.percent}),m.success("تغییرات ثبت شد")}catch(a){m.error(((e=(i=a==null?void 0:a.response)==null?void 0:i.data)==null?void 0:e.message)??"خطا در ثبت تغییرات")}finally{p.value=!1}}async function y(){var i,e;if(Object.keys(d).forEach(a=>delete d[a]),(s.birthday_expire===void 0||s.birthday_expire===null)&&(d.birthday_expire=b),(s.birthday_credit===void 0||s.birthday_credit===null)&&(d.birthday_credit=b),!Object.keys(d).length)try{p.value=!0,await _.post("wallet/birthday/config",{birthday_expire:s.birthday_expire,birthday_credit:s.birthday_credit}),m.success("تغییرات ثبت شد")}catch(a){m.error(((e=(i=a==null?void 0:a.response)==null?void 0:i.data)==null?void 0:e.message)??"خطا در ثبت تغییرات")}finally{p.value=!1}}return S(async()=>{try{const[i,e]=await Promise.all([_.get("wallet/config"),_.get("wallet/birthday/config")]);Object.assign(l,i.data??{}),Object.assign(s,e.data??{})}catch(i){console.log(i)}}),(i,e)=>{const a=c("a-input-number"),u=c("a-form-item"),h=c("a-button"),x=c("a-form"),g=c("a-spin"),w=c("a-tab-pane"),E=c("a-tabs"),N=c("a-card");return k(),I("div",null,[B("config.wallet")?(k(),M(N,{key:0,title:"مدیریت کیف پول",class:"page-card"},{default:r(()=>[t(E,{"default-active-key":"1"},{default:r(()=>[t(w,{key:"2",tab:"تاریخ تولد","force-render":""},{default:r(()=>[t(g,{spinning:p.value,tip:"لطفا کمی تامل کنید"},{default:r(()=>[t(x,{layout:"vertical",onSubmit:j(y,["prevent"])},{default:r(()=>[C("div",D,[t(u,{label:"انقضا (روز)","validate-status":d.birthday_expire?"error":"",help:d.birthday_expire},{default:r(()=>[t(a,{value:s.birthday_expire,"onUpdate:value":e[0]||(e[0]=n=>s.birthday_expire=n),class:"w-full",min:0},null,8,["value"])]),_:1},8,["validate-status","help"]),t(u,{label:"میزان (تومان)","validate-status":d.birthday_credit?"error":"",help:d.birthday_credit},{default:r(()=>[t(a,{value:s.birthday_credit,"onUpdate:value":e[1]||(e[1]=n=>s.birthday_credit=n),class:"w-full",min:0},null,8,["value"])]),_:1},8,["validate-status","help"])]),t(h,{type:"primary",class:"mb-4 mt-4 mr-4 form-submit",onClick:y},{default:r(()=>[...e[4]||(e[4]=[O("ارسال",-1)])]),_:1})]),_:1})]),_:1},8,["spinning"])]),_:1}),t(w,{key:"1",tab:"پس از خرید","force-render":""},{default:r(()=>[t(g,{spinning:p.value,tip:"لطفا کمی تامل کنید"},{default:r(()=>[t(x,{layout:"vertical",onSubmit:j(v,["prevent"])},{default:r(()=>[C("div",G,[t(u,{label:"انقضا (روز)","validate-status":o.expire?"error":"",help:o.expire},{default:r(()=>[t(a,{value:l.expire,"onUpdate:value":e[2]||(e[2]=n=>l.expire=n),class:"w-full",min:0},null,8,["value"])]),_:1},8,["validate-status","help"]),t(u,{label:"درصد","validate-status":o.percent?"error":"",help:o.percent},{default:r(()=>[t(a,{value:l.percent,"onUpdate:value":e[3]||(e[3]=n=>l.percent=n),class:"w-full",min:0,max:100,formatter:n=>`${n}%`,parser:n=>n.replace("%","")},null,8,["value","formatter","parser"])]),_:1},8,["validate-status","help"])]),t(h,{type:"primary",class:"mb-4 mt-4 mr-4 form-submit",onClick:v},{default:r(()=>[...e[5]||(e[5]=[O("ارسال",-1)])]),_:1})]),_:1})]),_:1},8,["spinning"])]),_:1})]),_:1})]),_:1})):R("",!0)])}}}),$=z(H,[["__scopeId","data-v-a5976b08"]]);export{$ as default}; +import{d as V,u as P,x as S,y as _,b as I,a as M,w as r,i as R,z as f,r as c,o as k,c as t,H as j,p as C,f as O,m as W,G as m,_ as z}from"./index-CuIWfDbM.js";const D={class:"grid-2"},G={class:"grid-2"},b="لطفا مقدار را وارد کنید",H=V({__name:"wallet",setup(Q){const U=P(),B=i=>!!U.hasPermission(i),p=W(!1),l=f({expire:void 0,percent:void 0}),s=f({birthday_expire:void 0,birthday_credit:void 0}),o=f({}),d=f({});async function v(){var i,e;if(Object.keys(o).forEach(a=>delete o[a]),(l.expire===void 0||l.expire===null)&&(o.expire=b),(l.percent===void 0||l.percent===null)&&(o.percent=b),!Object.keys(o).length)try{p.value=!0,await _.post("wallet/config",{expire:l.expire,percent:l.percent}),m.success("تغییرات ثبت شد")}catch(a){m.error(((e=(i=a==null?void 0:a.response)==null?void 0:i.data)==null?void 0:e.message)??"خطا در ثبت تغییرات")}finally{p.value=!1}}async function y(){var i,e;if(Object.keys(d).forEach(a=>delete d[a]),(s.birthday_expire===void 0||s.birthday_expire===null)&&(d.birthday_expire=b),(s.birthday_credit===void 0||s.birthday_credit===null)&&(d.birthday_credit=b),!Object.keys(d).length)try{p.value=!0,await _.post("wallet/birthday/config",{birthday_expire:s.birthday_expire,birthday_credit:s.birthday_credit}),m.success("تغییرات ثبت شد")}catch(a){m.error(((e=(i=a==null?void 0:a.response)==null?void 0:i.data)==null?void 0:e.message)??"خطا در ثبت تغییرات")}finally{p.value=!1}}return S(async()=>{try{const[i,e]=await Promise.all([_.get("wallet/config"),_.get("wallet/birthday/config")]);Object.assign(l,i.data??{}),Object.assign(s,e.data??{})}catch(i){console.log(i)}}),(i,e)=>{const a=c("a-input-number"),u=c("a-form-item"),h=c("a-button"),x=c("a-form"),g=c("a-spin"),w=c("a-tab-pane"),E=c("a-tabs"),N=c("a-card");return k(),I("div",null,[B("config.wallet")?(k(),M(N,{key:0,title:"مدیریت کیف پول",class:"page-card"},{default:r(()=>[t(E,{"default-active-key":"1"},{default:r(()=>[t(w,{key:"2",tab:"تاریخ تولد","force-render":""},{default:r(()=>[t(g,{spinning:p.value,tip:"لطفا کمی تامل کنید"},{default:r(()=>[t(x,{layout:"vertical",onSubmit:j(y,["prevent"])},{default:r(()=>[C("div",D,[t(u,{label:"انقضا (روز)","validate-status":d.birthday_expire?"error":"",help:d.birthday_expire},{default:r(()=>[t(a,{value:s.birthday_expire,"onUpdate:value":e[0]||(e[0]=n=>s.birthday_expire=n),class:"w-full",min:0},null,8,["value"])]),_:1},8,["validate-status","help"]),t(u,{label:"میزان (تومان)","validate-status":d.birthday_credit?"error":"",help:d.birthday_credit},{default:r(()=>[t(a,{value:s.birthday_credit,"onUpdate:value":e[1]||(e[1]=n=>s.birthday_credit=n),class:"w-full",min:0},null,8,["value"])]),_:1},8,["validate-status","help"])]),t(h,{type:"primary",class:"mb-4 mt-4 mr-4 form-submit",onClick:y},{default:r(()=>[...e[4]||(e[4]=[O("ارسال",-1)])]),_:1})]),_:1})]),_:1},8,["spinning"])]),_:1}),t(w,{key:"1",tab:"پس از خرید","force-render":""},{default:r(()=>[t(g,{spinning:p.value,tip:"لطفا کمی تامل کنید"},{default:r(()=>[t(x,{layout:"vertical",onSubmit:j(v,["prevent"])},{default:r(()=>[C("div",G,[t(u,{label:"انقضا (روز)","validate-status":o.expire?"error":"",help:o.expire},{default:r(()=>[t(a,{value:l.expire,"onUpdate:value":e[2]||(e[2]=n=>l.expire=n),class:"w-full",min:0},null,8,["value"])]),_:1},8,["validate-status","help"]),t(u,{label:"درصد","validate-status":o.percent?"error":"",help:o.percent},{default:r(()=>[t(a,{value:l.percent,"onUpdate:value":e[3]||(e[3]=n=>l.percent=n),class:"w-full",min:0,max:100,formatter:n=>`${n}%`,parser:n=>n.replace("%","")},null,8,["value","formatter","parser"])]),_:1},8,["validate-status","help"])]),t(h,{type:"primary",class:"mb-4 mt-4 mr-4 form-submit",onClick:v},{default:r(()=>[...e[5]||(e[5]=[O("ارسال",-1)])]),_:1})]),_:1})]),_:1},8,["spinning"])]),_:1})]),_:1})]),_:1})):R("",!0)])}}}),$=z(H,[["__scopeId","data-v-a5976b08"]]);export{$ as default}; diff --git a/apps/admin-panel/dist/index.html b/apps/admin-panel/dist/index.html index 0140df8..dc2fac5 100644 --- a/apps/admin-panel/dist/index.html +++ b/apps/admin-panel/dist/index.html @@ -6,7 +6,7 @@ هدناگلد — پنل مدیریت - + diff --git a/apps/admin-panel/dist/version.json b/apps/admin-panel/dist/version.json index 4aba35b..9f32bdc 100644 --- a/apps/admin-panel/dist/version.json +++ b/apps/admin-panel/dist/version.json @@ -1,9 +1,9 @@ { "app": "admin-panel", - "build": 229, - "version": "1.229", - "commit": "6181940", - "builtAt": "2026-10-28T14:19:14.858Z", + "build": 231, + "version": "1.231", + "commit": "3eaecde", + "builtAt": "2026-10-31T07:50:25.879Z", "history": [ { "build": 187, diff --git a/apps/api/release/app.js b/apps/api/release/app.js index 318ea06..9d4a121 100644 --- a/apps/api/release/app.js +++ b/apps/api/release/app.js @@ -80103,6 +80103,19 @@ var require_password_hash = __commonJS({ } }); +// dist/modules/accounting-sync/document-check.js +var require_document_check = __commonJS({ + "dist/modules/accounting-sync/document-check.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.documentWeightTolerance = documentWeightTolerance; + var client_1 = require("@prisma/client"); + function documentWeightTolerance(totalQuantity) { + return new client_1.Prisma.Decimal("0.01").add(new client_1.Prisma.Decimal("0.0001").mul(Math.max(0, totalQuantity))); + } + } +}); + // dist/modules/accounting-sync/accounting-sync.service.js var require_accounting_sync_service = __commonJS({ "dist/modules/accounting-sync/accounting-sync.service.js"(exports2) { @@ -80126,6 +80139,7 @@ var require_accounting_sync_service = __commonJS({ var password_hash_1 = require_password_hash(); var accounting_config_service_1 = require_accounting_config_service(); var jalali_1 = require_jalali(); + var document_check_1 = require_document_check(); var providers_1 = require_providers(); var NeedsReviewError = class extends Error { constructor(message) { @@ -80846,7 +80860,7 @@ var require_accounting_sync_service = __commonJS({ } const docGold = lines.reduce((s, l2) => s.add(l2.weightGrams.mul(new client_1.Prisma.Decimal(1).add(l2.wagePercent.div(100)))), new client_1.Prisma.Decimal(0)); const mismatch = docGold.sub(order.totalGoldWeightGrams).abs(); - if (mismatch.gt("0.01")) { + if (mismatch.gt((0, document_check_1.documentWeightTolerance)(order.items.reduce((s, i) => s + i.quantity, 0)))) { throw new NeedsReviewError(`\u062C\u0645\u0639 \u0648\u0632\u0646 \u0633\u0646\u062F (${docGold.toFixed(3)}) \u0628\u0627 \u0648\u0632\u0646 \u0633\u0641\u0627\u0631\u0634 (${new client_1.Prisma.Decimal(order.totalGoldWeightGrams).toFixed(3)}) \u0646\u0645\u06CC\u200C\u062E\u0648\u0627\u0646\u062F`); } return { @@ -81456,6 +81470,50 @@ var require_accounting_hooks_service = __commonJS({ } } } + /** + * F3 — may this order's lines or weights be corrected now? A document that is + * being sent, or is waiting for a person to look at it, cannot be reconciled + * with a change automatically, so the correction is refused until it is + * settled. Returns the reason, or null when the correction may go ahead. + */ + async orderDocumentBlocksEdit(tx, orderId) { + const c = await this.config.get(); + if (c.provider === "none" || !c.features.documents) + return null; + const stuck = await tx.accountingOutbox.findFirst({ + where: { provider: c.provider, kind: "ORDER_DOCUMENT", entityId: orderId, status: { in: ["SENDING", "NEEDS_REVIEW"] } }, + select: { id: true } + }); + return stuck ? "\u0633\u0646\u062F \u062D\u0633\u0627\u0628\u062F\u0627\u0631\u06CC \u0627\u06CC\u0646 \u0633\u0641\u0627\u0631\u0634 \u062F\u0631 \u062D\u0627\u0644 \u0627\u0631\u0633\u0627\u0644 \u0627\u0633\u062A \u06CC\u0627 \u0645\u0646\u062A\u0638\u0631 \u0628\u0631\u0631\u0633\u06CC\u061B \u067E\u0633 \u0627\u0632 \u0631\u0648\u0634\u0646 \u0634\u062F\u0646 \u0648\u0636\u0639\u06CC\u062A\u0634 \u062F\u0648\u0628\u0627\u0631\u0647 \u062A\u0644\u0627\u0634 \u06A9\u0646\u06CC\u062F." : null; + } + /** + * F3 — the order's lines or weights were corrected after it was placed. + * + * A document still waiting (or failed and due for a retry) is built from the + * order at the moment it is sent, so it picks the correction up by itself. + * One already in the books no longer matches: it is withdrawn and a corrected + * one is queued behind the delete (the worker runs the older job first). + */ + async orderEdited(tx, orderId) { + const c = await this.config.get(); + if (c.provider === "none" || !c.features.documents) + return; + const sent = await tx.accountingOutbox.findFirst({ + where: { provider: c.provider, kind: "ORDER_DOCUMENT", entityId: orderId, status: { in: ["SENT"] } }, + select: { id: true } + }); + if (!sent) + return; + const requeued = await tx.accountingOutbox.findFirst({ + where: { provider: c.provider, kind: "ORDER_DOCUMENT", entityId: orderId, status: { in: ["PENDING"] } }, + select: { id: true } + }); + if (requeued) + return; + await this.orderCancelled(tx, orderId); + await tx.accountingOutbox.create({ data: { provider: c.provider, kind: "ORDER_DOCUMENT", entityId: orderId } }); + this.worker.kickSoon(); + } /** F1 — an admin marked the customer VERIFIED. */ async customerVerified(tx, customerId) { await this.enqueue(tx, "customers", "CUSTOMER_PUSH", customerId); @@ -87578,12 +87636,31 @@ var require_ledger_service = __commonJS({ }; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.LedgerService = void 0; + exports2.repaymentToGrams = repaymentToGrams; var common_12 = require_common(); var client_1 = require("@prisma/client"); var shared_types_1 = require_dist3(); var prisma_service_1 = require_prisma_service(); var ZERO = new client_1.Prisma.Decimal(0); var OWING_STATUSES = [client_1.OrderStatus.DELIVERED_TO_AGENT, client_1.OrderStatus.DELIVERED_TO_CUSTOMER]; + function repaymentToGrams(instrument, rawValue, karatPerMille, pricePerGramRial) { + const raw = new client_1.Prisma.Decimal(rawValue); + switch (instrument) { + case "MELTED_GOLD": + if (!karatPerMille) + throw new common_12.BadRequestException("karatPerMille is required for a melted-gold repayment"); + return raw.mul(karatPerMille).div(shared_types_1.STANDARD_KARAT_PER_MILLE); + case "CASH": { + if (!pricePerGramRial || new client_1.Prisma.Decimal(pricePerGramRial).isZero()) { + throw new common_12.BadRequestException("pricePerGramRial is required for a cash repayment"); + } + return raw.div(new client_1.Prisma.Decimal(pricePerGramRial).div(shared_types_1.GRAMS_PER_MESGHAL)); + } + case "TRANSFER": + case "CHEQUE": + return raw; + } + } var LedgerService = class LedgerService { prisma; constructor(prisma) { @@ -87627,17 +87704,37 @@ var require_ledger_service = __commonJS({ * change from legacy, not a faithful mirror of it. */ async confirmEntry(entryId, adminUserId, tx = this.prisma) { + return (await this.setConfirmed(entryId, true, adminUserId, tx)).entry; + } + /** + * Sets an entry's confirmed flag and moves the cached balance by exactly that + * change, once. Un-confirming reverses the entry: the same amount, the other way. + * + * The flip is a compare-and-swap (`updateMany` while the flag still has its old + * value) and only the request that wins it touches the balance. Reading the flag + * and then updating let N simultaneous requests all pass the read and all move + * the balance, leaving the cache N times off the book. The flip and the balance + * move commit together. + * + * `changed` is false when someone else already put the entry in that state. + */ + async setConfirmed(entryId, confirmed, adminUserId, tx = this.prisma) { + if (tx === this.prisma) { + return this.prisma.$transaction((inner) => this.setConfirmed(entryId, confirmed, adminUserId, inner)); + } const entry = await tx.ledgerEntry.findUnique({ where: { id: entryId } }); if (!entry) throw new common_12.NotFoundException("Ledger entry not found"); - if (entry.confirmed) - return entry; - const updated = await tx.ledgerEntry.update({ - where: { id: entryId }, - data: { confirmed: true, confirmedAt: /* @__PURE__ */ new Date(), postedByAdminId: adminUserId ?? entry.postedByAdminId } + const claimed = await tx.ledgerEntry.updateMany({ + where: { id: entryId, confirmed: !confirmed }, + data: confirmed ? { confirmed: true, confirmedAt: /* @__PURE__ */ new Date(), postedByAdminId: adminUserId ?? entry.postedByAdminId } : { confirmed: false, confirmedAt: null } }); - await this.applyToBalance(entry.customerId, entry.currency, entry.direction, entry.amount, tx); - return updated; + const current = await tx.ledgerEntry.findUnique({ where: { id: entryId } }) ?? entry; + if (claimed.count === 0) + return { entry: current, changed: false }; + const direction = confirmed ? entry.direction : entry.direction === client_1.LedgerDirection.DEBIT ? client_1.LedgerDirection.CREDIT : client_1.LedgerDirection.DEBIT; + await this.applyToBalance(entry.customerId, entry.currency, direction, entry.amount, tx); + return { entry: current, changed: true }; } async applyToBalance(customerId, currency, direction, amount, tx) { const signedDelta = direction === client_1.LedgerDirection.DEBIT ? amount : amount.neg(); @@ -87700,43 +87797,23 @@ var require_ledger_service = __commonJS({ } /** * Normalizes a physical repayment instrument into gold grams and posts a - * pending (unconfirmed) CREDIT entry against the customer's gold debt. - * Formulas preserved verbatim from legacy CashController::store. Note: - * legacy auto-confirms (confirmed=1) every Cash row at creation — posting - * this as pending instead is an intentional design change, not a mirror of - * legacy's default. + * CREDIT entry against the customer's gold debt. Formulas preserved verbatim + * from legacy CashController::store. + * + * `confirmed` follows the reference: a document an ADMIN files + * (CashController::store, `confirmed = 1`) counts at once; one a customer + * submits from the app (ApiMobileController::setFindoc, `confirmed = 0`) waits + * for an admin. The default stays pending — the safe state for a caller that + * does not say who is filing — and the admin documents screen passes true. */ async postGoldRepayment(params, tx = this.prisma) { - const raw = new client_1.Prisma.Decimal(params.rawValue); - let goldGramsValue; - let sourceType; - switch (params.instrument) { - case "MELTED_GOLD": { - if (!params.karatPerMille) { - throw new common_12.BadRequestException("karatPerMille is required for a melted-gold repayment"); - } - goldGramsValue = raw.mul(params.karatPerMille).div(shared_types_1.STANDARD_KARAT_PER_MILLE); - sourceType = client_1.LedgerSourceType.REPAYMENT_MELTED_GOLD; - break; - } - case "CASH": { - if (!params.pricePerGramRial) { - throw new common_12.BadRequestException("pricePerGramRial is required for a cash repayment"); - } - const pricePerGram = new client_1.Prisma.Decimal(params.pricePerGramRial); - goldGramsValue = raw.div(pricePerGram.div(shared_types_1.GRAMS_PER_MESGHAL)); - sourceType = client_1.LedgerSourceType.REPAYMENT_CASH; - break; - } - case "TRANSFER": - goldGramsValue = raw; - sourceType = client_1.LedgerSourceType.REPAYMENT_TRANSFER; - break; - case "CHEQUE": - goldGramsValue = raw; - sourceType = client_1.LedgerSourceType.REPAYMENT_CHEQUE; - break; - } + const goldGramsValue = repaymentToGrams(params.instrument, params.rawValue, params.karatPerMille, params.pricePerGramRial); + const sourceType = { + MELTED_GOLD: client_1.LedgerSourceType.REPAYMENT_MELTED_GOLD, + CASH: client_1.LedgerSourceType.REPAYMENT_CASH, + TRANSFER: client_1.LedgerSourceType.REPAYMENT_TRANSFER, + CHEQUE: client_1.LedgerSourceType.REPAYMENT_CHEQUE + }[params.instrument]; return this.postEntry({ customerId: params.customerId, currency: client_1.LedgerCurrency.GOLD_GRAM, @@ -87746,8 +87823,7 @@ var require_ledger_service = __commonJS({ karatPerMille: params.karatPerMille, pricePerGramRialAtEntry: params.pricePerGramRial, note: params.note, - confirmed: false, - // pending until an admin confirms — intentional deviation from legacy, which auto-confirms on creation + confirmed: params.confirmed ?? false, postedByAdminId: params.postedByAdminId }, tx); } @@ -88052,6 +88128,13 @@ var require_wage_service = __commonJS({ * and what an app order is charged. The promotions considered are legacy's: * active, inside their dates, scoped to the product, its category or its * brand (customer-scoped promotions were switched off in the legacy app). + * + * The «استثنا» list (views/offersIgnore) switches promotions off: legacy's + * `checkIgnoreList` (henza_pwa Mixins/product) returned no promotion at all + * for a product, category, brand or customer on it. The list was stored and + * edited in the panel but nothing here read it, so an excluded product still + * got the discount taken off its making charge — fewer grams charged than the + * reference charges. */ async quote(customerId, variantIds, tx = this.prisma) { const customer = await tx.customer.findUnique({ @@ -88065,6 +88148,9 @@ var require_wage_service = __commonJS({ where: { id: { in: ids } }, select: { id: true, defaultWagePercent: true, product: { select: { id: true, categoryId: true, brandId: true } } } }); + const exclusions = await tx.promotionExclusion.findMany({ select: { type: true, itemId: true } }); + const excluded = (type, itemId) => !!itemId && exclusions.some((e) => e.type === type && e.itemId === itemId); + const customerExcluded = excluded(3, customerId); const now = /* @__PURE__ */ new Date(); const promotions = await tx.promotion.findMany({ where: { @@ -88085,7 +88171,8 @@ var require_wage_service = __commonJS({ const formula = await this.formula(tx); const out = /* @__PURE__ */ new Map(); for (const v of variants) { - const applying = promotions.filter((p) => p.scope === client_1.PromotionScope.PRODUCT && p.productId === v.product.id || p.scope === client_1.PromotionScope.CATEGORY && !!v.product.categoryId && p.categoryId === v.product.categoryId || p.scope === client_1.PromotionScope.BRAND && !!v.product.brandId && p.brandId === v.product.brandId); + const ignored = customerExcluded || excluded(1, v.product.id) || excluded(2, v.product.categoryId) || excluded(4, v.product.brandId); + const applying = ignored ? [] : promotions.filter((p) => p.scope === client_1.PromotionScope.PRODUCT && p.productId === v.product.id || p.scope === client_1.PromotionScope.CATEGORY && !!v.product.categoryId && p.categoryId === v.product.categoryId || p.scope === client_1.PromotionScope.BRAND && !!v.product.brandId && p.brandId === v.product.brandId); const inputs = { variantPercent: v.defaultWagePercent, customerPercent: customer.makingChargeOffsetPercent, @@ -88686,29 +88773,185 @@ var require_orders_service = __commonJS({ } } async updateStatus(orderId, newStatus, actorAdminUserId, note) { + return this.prisma.$transaction((tx) => this.moveStatus(tx, orderId, newStatus, actorAdminUserId, note)); + } + /** The status change itself, inside the caller's transaction. */ + async moveStatus(tx, orderId, newStatus, actorAdminUserId, note) { + const order = await tx.order.findUnique({ where: { id: orderId } }); + if (!order) + throw new common_12.NotFoundException(`Order ${orderId} not found`); + const updated = await tx.order.update({ + where: { id: orderId }, + data: { + status: newStatus, + deliveredAt: newStatus === client_1.OrderStatus.DELIVERED_TO_CUSTOMER ? /* @__PURE__ */ new Date() : order.deliveredAt + } + }); + await tx.orderStatusEvent.create({ + data: { orderId, fromStatus: order.status, toStatus: newStatus, note, actorAdminId: actorAdminUserId } + }); + await this.ledger.syncOrderDebt(orderId, tx); + if (newStatus === client_1.OrderStatus.CANCELLED && order.status !== client_1.OrderStatus.CANCELLED) { + await this.accounting.orderCancelled(tx, orderId); + } else if (newStatus !== order.status) { + await this.accounting.orderStatusReached(tx, orderId, newStatus); + } + return updated; + } + /* ───────────── correcting a placed order ───────────── */ + /** + * An order's totals from its stored lines — the same three sums createOrder + * takes, so a corrected order and a freshly placed one agree: grams owed, + * the making-charge part of them, and the rial making charge (unit × qty). + */ + async recalcOrder(tx, orderId) { + const items = await tx.orderItem.findMany({ where: { orderId } }); + const zero = new client_1.Prisma.Decimal(0); + const total = items.reduce((s, i) => s.add(new client_1.Prisma.Decimal(i.computedWeightGrams).mul(i.quantity)), zero); + const rash = items.reduce((s, i) => s.add(new client_1.Prisma.Decimal(i.rashWeightGramsSnapshot).mul(i.quantity)), zero); + const rial = items.reduce((s, i) => s.add(new client_1.Prisma.Decimal(i.flatRialCharge).mul(i.quantity)), zero); + return tx.order.update({ + where: { id: orderId }, + data: { totalGoldWeightGrams: total, wageWeightGrams: total.sub(rash), flatRialCharge: rial } + }); + } + /** + * After a line changed: totals, then the debt (a delivered order owes the new + * figure — only the difference is posted, see LedgerService.syncOrderDebt), + * then the accounting document, which no longer matches if it was already sent. + */ + async afterCorrection(tx, orderId) { + await this.recalcOrder(tx, orderId); + await this.ledger.syncOrderDebt(orderId, tx); + await this.accounting.orderEdited(tx, orderId); + } + async assertCorrectable(tx, orderId) { + const order = await tx.order.findUnique({ where: { id: orderId } }); + if (!order) + throw new common_12.NotFoundException("\u0633\u0641\u0627\u0631\u0634 \u06CC\u0627\u0641\u062A \u0646\u0634\u062F"); + if (order.status === client_1.OrderStatus.CANCELLED) + throw new common_12.BadRequestException("\u0633\u0641\u0627\u0631\u0634 \u0644\u063A\u0648\u0634\u062F\u0647 \u0642\u0627\u0628\u0644 \u0648\u06CC\u0631\u0627\u06CC\u0634 \u0646\u06CC\u0633\u062A"); + const blocked = await this.accounting.orderDocumentBlocksEdit(tx, orderId); + if (blocked) + throw new common_12.BadRequestException(blocked); + return order; + } + /** A figure from a form: a finite number inside [min, max], or a Persian 400. */ + figure(value, label, min, max, minExclusive = false) { + let d; + try { + d = new client_1.Prisma.Decimal(String(value).trim()); + } catch { + throw new common_12.BadRequestException(`${label}: \u0639\u062F\u062F \u0645\u0639\u062A\u0628\u0631 \u0646\u06CC\u0633\u062A`); + } + if (!d.isFinite() || (minExclusive ? d.lte(min) : d.lt(min)) || d.gt(max)) { + throw new common_12.BadRequestException(`${label}: \u0628\u0627\u06CC\u062F ${minExclusive ? "\u0628\u06CC\u0634\u062A\u0631 \u0627\u0632" : "\u062D\u062F\u0627\u0642\u0644"} ${min} \u0648 \u062D\u062F\u0627\u06A9\u062B\u0631 ${max} \u0628\u0627\u0634\u062F`); + } + return d; + } + /** + * Legacy `POST order-item/edit` (MajorOrderController::orderItemEdit): the + * panel corrects one line of a wholesale order — its raw weight, its quantity + * and the percent actually charged. + * + * w = rash × (1 + percent/100) per unit, as the reference computed it + * + * then the order's totals and the customer's debt follow (the reference ran + * updateRemain). Not copied from the reference: its order `wage` came out as + * the whole weight (it summed a column that does not exist), and the order's + * rial charge stayed at the old quantity — here both follow the lines. + * The line's own discount is kept; the percent given is the NET one. + */ + async editLine(orderId, lineId, input) { return this.prisma.$transaction(async (tx) => { - const order = await tx.order.findUnique({ where: { id: orderId } }); - if (!order) - throw new common_12.NotFoundException(`Order ${orderId} not found`); - const updated = await tx.order.update({ - where: { id: orderId }, + await this.assertCorrectable(tx, orderId); + const line = await tx.orderItem.findFirst({ where: { id: lineId, orderId } }); + if (!line) + throw new common_12.NotFoundException("\u0631\u062F\u06CC\u0641 \u0633\u0641\u0627\u0631\u0634 \u06CC\u0627\u0641\u062A \u0646\u0634\u062F"); + const has = (v) => v !== void 0 && v !== null && v !== ""; + const rash = has(input.rashWeightGrams) ? this.figure(input.rashWeightGrams, "\u0648\u0632\u0646 \u062E\u0627\u0645", 0, 1e5, true) : new client_1.Prisma.Decimal(line.rashWeightGramsSnapshot); + const quantity = has(input.quantity) ? this.figure(input.quantity, "\u062A\u0639\u062F\u0627\u062F", 1, 1e5) : new client_1.Prisma.Decimal(line.quantity); + if (!quantity.isInteger()) + throw new common_12.BadRequestException("\u062A\u0639\u062F\u0627\u062F: \u0628\u0627\u06CC\u062F \u0639\u062F\u062F \u0635\u062D\u06CC\u062D \u0628\u0627\u0634\u062F"); + const discount = new client_1.Prisma.Decimal(line.discountPercentSnapshot); + const net = has(input.netPercent) ? this.figure(input.netPercent, "\u062F\u0631\u0635\u062F \u0627\u062C\u0631\u062A", -100, 1e3) : new client_1.Prisma.Decimal(line.wagePercentSnapshot).sub(discount); + await tx.orderItem.update({ + where: { id: lineId }, data: { - status: newStatus, - deliveredAt: newStatus === client_1.OrderStatus.DELIVERED_TO_CUSTOMER ? /* @__PURE__ */ new Date() : order.deliveredAt + rashWeightGramsSnapshot: rash, + quantity: quantity.toNumber(), + wagePercentSnapshot: net.add(discount), + computedWeightGrams: rash.mul(net.div(100).add(1)) } }); - await tx.orderStatusEvent.create({ - data: { orderId, fromStatus: order.status, toStatus: newStatus, note, actorAdminId: actorAdminUserId } - }); - await this.ledger.syncOrderDebt(orderId, tx); - if (newStatus === client_1.OrderStatus.CANCELLED && order.status !== client_1.OrderStatus.CANCELLED) { - await this.accounting.orderCancelled(tx, orderId); - } else if (newStatus !== order.status) { - await this.accounting.orderStatusReached(tx, orderId, newStatus); - } - return updated; + await this.afterCorrection(tx, orderId); }); } + /** + * Legacy `DELETE major/order_item/{id}` (MajorOrderController::deleteOrderItem). + * The last line cannot go: an order with no lines owes nothing and shows + * nothing — delete the order instead. + */ + async removeLine(orderId, lineId) { + return this.prisma.$transaction(async (tx) => { + await this.assertCorrectable(tx, orderId); + const lines = await tx.orderItem.findMany({ where: { orderId }, select: { id: true } }); + if (!lines.some((l2) => l2.id === lineId)) + throw new common_12.NotFoundException("\u0631\u062F\u06CC\u0641 \u0633\u0641\u0627\u0631\u0634 \u06CC\u0627\u0641\u062A \u0646\u0634\u062F"); + if (lines.length < 2) { + throw new common_12.BadRequestException("\u0622\u062E\u0631\u06CC\u0646 \u0631\u062F\u06CC\u0641 \u0633\u0641\u0627\u0631\u0634 \u0631\u0627 \u0646\u0645\u06CC\u200C\u062A\u0648\u0627\u0646 \u062D\u0630\u0641 \u06A9\u0631\u062F\u061B \u06A9\u0644 \u0633\u0641\u0627\u0631\u0634 \u0631\u0627 \u062D\u0630\u0641 \u06CC\u0627 \u0644\u063A\u0648 \u06A9\u0646\u06CC\u062F."); + } + await tx.orderItem.delete({ where: { id: lineId } }); + await this.afterCorrection(tx, orderId); + }); + } + /** + * Legacy `PUT order/child/{id}` (ApiMobileController::updateChildOrder): the + * sales expert, with the order in hand («تحویل مسئول فروش»), enters the real + * weight of each piece and may then submit it for good («ثبت نهایی»), which + * hands it to the customer. + * + * What the screen asks for is the corrected RAW weight per piece; the final + * weight is that weight with the making charge the order was placed at. The + * reference computed it from a `percent_pay` its own order lines do not + * carry, so the charge silently dropped out and the order shrank to raw + * weight — the intent is kept here, the breakage is not. It also let anyone + * edit any order; here it has to be this expert's own, still with them. + */ + async expertAdjust(orderId, expertAdminUserId, lines, finalSubmit) { + const result = await this.prisma.$transaction(async (tx) => { + const order = await tx.order.findUnique({ where: { id: orderId }, include: { items: true } }); + if (!order || order.salesAgentId !== expertAdminUserId) + throw new common_12.NotFoundException("\u0633\u0641\u0627\u0631\u0634 \u06CC\u0627\u0641\u062A \u0646\u0634\u062F"); + if (order.status !== client_1.OrderStatus.DELIVERED_TO_AGENT) { + throw new common_12.BadRequestException("\u0627\u06CC\u0646 \u0633\u0641\u0627\u0631\u0634 \u062F\u0631 \u0648\u0636\u0639\u06CC\u062A \xAB\u062A\u062D\u0648\u06CC\u0644 \u0645\u0633\u0626\u0648\u0644 \u0641\u0631\u0648\u0634\xBB \u0646\u06CC\u0633\u062A"); + } + const blocked = await this.accounting.orderDocumentBlocksEdit(tx, orderId); + if (blocked) + throw new common_12.BadRequestException(blocked); + if (!Array.isArray(lines)) + throw new common_12.BadRequestException("\u0631\u062F\u06CC\u0641\u200C\u0647\u0627\u06CC \u0633\u0641\u0627\u0631\u0634 \u0627\u0631\u0633\u0627\u0644 \u0646\u0634\u062F\u0647 \u0627\u0633\u062A"); + const before = new client_1.Prisma.Decimal(order.totalGoldWeightGrams); + for (const l2 of lines) { + const line = order.items.find((i) => i.id === String(l2.id)); + if (!line) + throw new common_12.BadRequestException("\u0631\u062F\u06CC\u0641 \u0633\u0641\u0627\u0631\u0634 \u067E\u06CC\u062F\u0627 \u0646\u0634\u062F"); + const rash = this.figure(l2.rashWeightGrams, "\u0648\u0632\u0646", 0, 1e5, true); + const net = new client_1.Prisma.Decimal(line.wagePercentSnapshot).sub(line.discountPercentSnapshot); + await tx.orderItem.update({ + where: { id: line.id }, + data: { rashWeightGramsSnapshot: rash, computedWeightGrams: rash.mul(net.div(100).add(1)) } + }); + } + await this.afterCorrection(tx, orderId); + if (finalSubmit) + await this.moveStatus(tx, orderId, client_1.OrderStatus.DELIVERED_TO_CUSTOMER, void 0, "\u062B\u0628\u062A \u0646\u0647\u0627\u06CC\u06CC \u062A\u0648\u0633\u0637 \u06A9\u0627\u0631\u0634\u0646\u0627\u0633 \u0641\u0631\u0648\u0634"); + const after = await tx.order.findUniqueOrThrow({ where: { id: orderId } }); + return { orderNumber: after.orderNumber, status: after.status, before, after: new client_1.Prisma.Decimal(after.totalGoldWeightGrams) }; + }); + this.logger.log(`Order ${result.orderNumber} weights corrected by sales expert ${expertAdminUserId}: ${result.before.toString()} g \u2192 ${result.after.toString()} g${finalSubmit ? " (submitted as final)" : ""}.`); + return { id: result.orderNumber, status: result.status }; + } /** Unscoped read. Only reachable from the admin-guarded route. */ getById(orderId) { return this.prisma.order.findUnique({ @@ -89103,6 +89346,7 @@ var require_create_order_dto = __commonJS({ __decorate4([ (0, class_validator_1.IsInt)(), (0, class_validator_1.Min)(1), + (0, class_validator_1.Max)(1e5), __metadata3("design:type", Number) ], CreateOrderItemInputDto.prototype, "quantity", void 0); __decorate4([ @@ -92031,6 +92275,33 @@ var require_customer_auth_module = __commonJS({ } }); +// dist/common/customer-input.js +var require_customer_input = __commonJS({ + "dist/common/customer-input.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.birthDateOrNull = birthDateOrNull; + exports2.nationalCodeOrNull = nationalCodeOrNull; + var common_12 = require_common(); + var digits_1 = require_digits(); + function birthDateOrNull(raw) { + if (raw === void 0) + return void 0; + if (raw === null || String(raw).trim() === "") + return null; + const m = /^(\d{4})-(\d{1,2})-(\d{1,2})/.exec(String(raw).trim()); + const d = m ? new Date(Date.UTC(+m[1], +m[2] - 1, +m[3])) : null; + if (!d || d.getUTCMonth() !== +m[2] - 1 || d.getUTCFullYear() < 1900 || d > /* @__PURE__ */ new Date()) { + throw new common_12.BadRequestException("\u062A\u0627\u0631\u06CC\u062E \u062A\u0648\u0644\u062F \u0645\u0639\u062A\u0628\u0631 \u0646\u06CC\u0633\u062A"); + } + return d; + } + function nationalCodeOrNull(raw) { + return (0, digits_1.faToEn)(String(raw ?? "").trim()) || null; + } + } +}); + // dist/modules/sales-expert-app/sales-expert-app.service.js var require_sales_expert_app_service = __commonJS({ "dist/modules/sales-expert-app/sales-expert-app.service.js"(exports2) { @@ -92044,15 +92315,167 @@ var require_sales_expert_app_service = __commonJS({ var __metadata3 = exports2 && exports2.__metadata || function(k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; + var SalesExpertAppService_1; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.SalesExpertAppService = void 0; var common_12 = require_common(); var client_1 = require("@prisma/client"); var prisma_service_1 = require_prisma_service(); - var SalesExpertAppService = class SalesExpertAppService { + var orders_service_1 = require_orders_service(); + var sms_service_12 = require_sms_service(); + var accounting_hooks_service_1 = require_accounting_hooks_service(); + var digits_1 = require_digits(); + var brand_1 = require_brand(); + var customer_input_1 = require_customer_input(); + var mobile_owner_1 = require_mobile_owner(); + var SalesExpertAppService = SalesExpertAppService_1 = class SalesExpertAppService { prisma; - constructor(prisma) { + orders; + sms; + accounting; + logger = new common_12.Logger(SalesExpertAppService_1.name); + constructor(prisma, orders, sms, accounting) { this.prisma = prisma; + this.orders = orders; + this.sms = sms; + this.accounting = accounting; + } + /** + * The customer, but only if it is one of THIS expert's. Anyone else's is "not + * found" — never "forbidden" — so ids cannot be probed. (The reference's + * `customer/toggle-active` checked nothing at all: any signed-in customer + * could switch any account off; its `customer/update` did check ownership.) + */ + async ownCustomer(agentId, customerId) { + const c = await this.prisma.customer.findFirst({ + where: { id: customerId, referredByAgentId: agentId } + }); + if (!c) + throw new common_12.NotFoundException("\u0645\u0634\u062A\u0631\u06CC \u06CC\u0627\u0641\u062A \u0646\u0634\u062F"); + return c; + } + /** + * Port of `POST customer/toggle-active` (AdminController::customerToggleActive) + * for «مشتریان من»: the expert switches one of their customers' accounts off + * or on. Off, the customer's token stops working on the next request (the + * customer guard reads `isActive` every time); on, the customer is told by SMS, + * as the reference told them. + */ + async toggleCustomerActive(adminUserId, customerId) { + const agentId = this.assertExpert(adminUserId); + const c = await this.ownCustomer(agentId, customerId); + const updated = await this.prisma.customer.update({ + where: { id: c.id }, + data: { isActive: !c.isActive } + }); + if (updated.isActive) { + const text = `${updated.fullName} \u0639\u0632\u06CC\u0632 +\u062D\u0633\u0627\u0628 \u06A9\u0627\u0631\u0628\u0631\u06CC \u0634\u0645\u0627 \u062F\u0631 \u0627\u067E\u0644\u06CC\u06A9\u06CC\u0634\u0646 \u0641\u0639\u0627\u0644 \u0634\u062F. +\u0647\u0645\u200C\u0627\u06A9\u0646\u0648\u0646 \u0645\u06CC\u200C\u062A\u0648\u0627\u0646\u06CC\u062F \u0645\u062D\u0635\u0648\u0644\u0627\u062A \u062C\u062F\u06CC\u062F \u0631\u0627 \u0628\u0631\u0631\u0633\u06CC \u0648 \u062B\u0628\u062A \u0633\u0641\u0627\u0631\u0634 \u06A9\u0646\u06CC\u062F. +\u0628\u0627 \u0645\u0631\u0627\u062C\u0639\u0647 \u0628\u0647 \u0644\u06CC\u0646\u06A9 \u0632\u06CC\u0631 \u0645\u06CC\u200C\u062A\u0648\u0627\u0646\u06CC\u062F \u0648\u0627\u0631\u062F \u067E\u0631\u0648\u0641\u0627\u06CC\u0644 \u06A9\u0627\u0631\u0628\u0631\u06CC \u062E\u0648\u062F \u0634\u0648\u06CC\u062F. +${(0, brand_1.brandSiteUrl)()} +${(0, brand_1.brandName)()}`; + void this.sms.send(updated.mobile, text).catch((e) => { + this.logger.error(`Activation SMS to ${updated.mobile} failed: ${String(e)}`); + }); + } + return { id: updated.id, active: updated.isActive ? 1 : -1 }; + } + /** + * Port of `POST customer/update` (AdminController::updateCustomer) for + * «ویرایش مشتری»: the expert corrects the contact details of one of their own + * customers. + * + * Only contact details can be changed here. The customer's making-charge + * percent, credit limit, kind, expert, account switches and codes are money + * and administration — the admin panel's, not the app's — so they are not + * read from the request at all, whatever it carries. (The reference form + * could also change the customer's `type`; that is not carried over.) + */ + async updateCustomer(adminUserId, customerId, body) { + const agentId = this.assertExpert(adminUserId); + const existing = await this.ownCustomer(agentId, customerId); + const patch = {}; + const text = (key) => { + const v = body[key]; + if (v !== void 0 && v !== null && typeof v !== "string" && typeof v !== "number") { + throw new common_12.BadRequestException("\u0645\u0642\u062F\u0627\u0631 \u0648\u0627\u0631\u062F \u0634\u062F\u0647 \u0645\u0639\u062A\u0628\u0631 \u0646\u06CC\u0633\u062A"); + } + return v; + }; + const firstName = String(text("fname") ?? existing.firstName ?? "").trim(); + const lastName = String(text("lname") ?? existing.lastName ?? "").trim(); + if (!firstName || !lastName) + throw new common_12.BadRequestException("\u0646\u0627\u0645 \u0648 \u0646\u0627\u0645 \u062E\u0627\u0646\u0648\u0627\u062F\u06AF\u06CC \u0627\u0644\u0632\u0627\u0645\u06CC \u0627\u0633\u062A"); + patch.firstName = firstName; + patch.lastName = lastName; + if (body.mobile !== void 0 && body.mobile !== null && String(body.mobile).trim() !== "") { + const mobile = (0, digits_1.faToEn)(String(body.mobile).trim()); + if (!/^09\d{9}$/.test(mobile)) + throw new common_12.BadRequestException("\u0634\u0645\u0627\u0631\u0647 \u0645\u0648\u0628\u0627\u06CC\u0644 \u0645\u0639\u062A\u0628\u0631 \u0646\u06CC\u0633\u062A"); + if (mobile !== existing.mobile) { + if (await (0, mobile_owner_1.activeExpertHoldsMobile)(this.prisma, mobile)) + throw new common_12.BadRequestException(mobile_owner_1.EXPERT_HOLDS_MOBILE); + if (await this.prisma.customer.findFirst({ where: { mobile, NOT: { id: existing.id } }, select: { id: true } })) { + throw new common_12.BadRequestException("\u0627\u06CC\u0646 \u0634\u0645\u0627\u0631\u0647 \u0645\u0648\u0628\u0627\u06CC\u0644 \u0642\u0628\u0644\u0627\u064B \u0628\u0631\u0627\u06CC \u0645\u0634\u062A\u0631\u06CC \u062F\u06CC\u06AF\u0631\u06CC \u062B\u0628\u062A \u0634\u062F\u0647 \u0627\u0633\u062A"); + } + patch.mobile = mobile; + } + } + const optional = (key, max) => { + if (body[key] === void 0) + return void 0; + const s = String(text(key) ?? "").trim(); + if (s.length > max) + throw new common_12.BadRequestException("\u0637\u0648\u0644 \u0645\u0642\u062F\u0627\u0631 \u0648\u0627\u0631\u062F \u0634\u062F\u0647 \u0628\u06CC\u0634 \u0627\u0632 \u062D\u062F \u0645\u062C\u0627\u0632 \u0627\u0633\u062A"); + return s || null; + }; + const phone = optional("phone", 30); + if (phone !== void 0) + patch.phone = phone; + const address = optional("address", 500); + if (address !== void 0) + patch.address = address; + const storeName = optional("store_name", 150); + if (storeName !== void 0) + patch.storeName = storeName; + const pasazhName = optional("pasazh_name", 150); + if (pasazhName !== void 0) + patch.pasazhName = pasazhName; + const zone = optional("zone", 20); + if (zone !== void 0) + patch.zone = zone; + if (body.city_id !== void 0) { + patch.city = body.city_id ? { connect: { id: String(body.city_id) } } : { disconnect: true }; + } + if (body.national_code !== void 0) + patch.nationalCode = (0, customer_input_1.nationalCodeOrNull)(body.national_code); + const birthDate = (0, customer_input_1.birthDateOrNull)(body.birth_date); + if (birthDate !== void 0) + patch.birthDate = birthDate; + const contactChanged = ["fname", "lname", "mobile", "national_code", "phone", "address"].some((k) => body[k] !== void 0); + const updated = await this.prisma.$transaction(async (tx) => { + const row = await tx.customer.update({ where: { id: existing.id }, data: patch }); + if (contactChanged) + await this.accounting.customerEdited(tx, existing.id); + return row; + }); + return { id: updated.id, name: updated.fullName, mobile: updated.mobile }; + } + /** + * Port of `updateChildOrder` (ApiMobileController.php, `PUT order/child/{id}`): + * the expert enters the real raw weight of each piece of an order that is in + * their hands, and may submit it as final, which hands it to the customer. + * Scope is the expert's own orders only; the rules and the totals, debt and + * accounting that follow are OrdersService.expertAdjust. + */ + async adjustChildOrder(adminUserId, orderId, body) { + const agentId = this.assertExpert(adminUserId); + const finalSubmit = body?.final_submit === true || body?.final_submit === "true"; + const items = body?.items ?? []; + if (!Array.isArray(items)) + throw new common_12.BadRequestException("items \u0628\u0627\u06CC\u062F \u0641\u0647\u0631\u0633\u062A \u0631\u062F\u06CC\u0641\u200C\u0647\u0627 \u0628\u0627\u0634\u062F"); + return this.orders.expertAdjust(orderId, agentId, items.map((i) => ({ id: i?.id, rashWeightGrams: i?.rash_weight })), finalSubmit); } /** Refuses any principal that is not a sales expert. */ assertExpert(adminUserId) { @@ -92106,7 +92529,15 @@ var require_sales_expert_app_service = __commonJS({ skip: (page - 1) * limit, take: limit, include: { - items: true, + // The product and variant titles label each line where the expert + // enters the real weights. + items: { + include: { + productVariant: { + select: { id: true, title: true, product: { select: { id: true, title: true } } } + } + } + }, customer: { select: { id: true, fullName: true, mobile: true } } } }), @@ -92168,8 +92599,15 @@ var require_sales_expert_app_service = __commonJS({ select: { id: true, fullName: true, + firstName: true, + lastName: true, mobile: true, phone: true, + address: true, + zone: true, + cityId: true, + nationalCode: true, + birthDate: true, storeName: true, pasazhName: true, goldCreditLimitGrams: true, @@ -92184,8 +92622,16 @@ var require_sales_expert_app_service = __commonJS({ // legacy key, which the ported card binds to name: c.fullName, fullName: c.fullName, + // What «ویرایش مشتری» opens with. + fname: c.firstName ?? c.fullName, + lname: c.lastName ?? "", mobile: c.mobile, phone: c.phone, + address: c.address, + zone: c.zone, + city_id: c.cityId, + national_code: c.nationalCode, + birth_date: c.birthDate ? c.birthDate.toISOString().slice(0, 10) : null, store_name: c.storeName, pasazh_name: c.pasazhName, gram_level: c.goldCreditLimitGrams, @@ -92229,9 +92675,14 @@ var require_sales_expert_app_service = __commonJS({ } }; exports2.SalesExpertAppService = SalesExpertAppService; - exports2.SalesExpertAppService = SalesExpertAppService = __decorate4([ + exports2.SalesExpertAppService = SalesExpertAppService = SalesExpertAppService_1 = __decorate4([ (0, common_12.Injectable)(), - __metadata3("design:paramtypes", [prisma_service_1.PrismaService]) + __metadata3("design:paramtypes", [ + prisma_service_1.PrismaService, + orders_service_1.OrdersService, + sms_service_12.SmsService, + accounting_hooks_service_1.AccountingHooksService + ]) ], SalesExpertAppService); } }); @@ -92268,6 +92719,18 @@ var require_sales_expert_app_controller = __commonJS({ childOrders(body, me) { return this.expert.childOrders(me.adminUserId, body ?? {}); } + /** Legacy PUT /order/child/{id} — correct the weights, or submit as final. */ + adjustChildOrder(orderId, body, me) { + return this.expert.adjustChildOrder(me.adminUserId, orderId, body ?? {}); + } + /** Legacy POST customer/toggle-active — switch one of the expert's customers off or on. */ + toggleCustomerActive(customerId, me) { + return this.expert.toggleCustomerActive(me.adminUserId, customerId); + } + /** Legacy POST customer/update — correct the contact details of one of the expert's customers. */ + updateCustomer(customerId, body, me) { + return this.expert.updateCustomer(me.adminUserId, customerId, body ?? {}); + } /** Legacy POST /my-child. */ myCustomers(body, me) { return this.expert.myCustomers(me.adminUserId, { @@ -92305,6 +92768,38 @@ var require_sales_expert_app_controller = __commonJS({ __metadata3("design:paramtypes", [Object, Object]), __metadata3("design:returntype", void 0) ], SalesExpertAppController.prototype, "childOrders", null); + __decorate4([ + (0, customer_guards_1.CustomerAuth)(), + (0, common_12.Put)("child-orders/:orderId"), + (0, common_12.HttpCode)(200), + __param3(0, (0, common_12.Param)("orderId")), + __param3(1, (0, common_12.Body)()), + __param3(2, (0, customer_guards_1.CurrentCustomer)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [String, Object, Object]), + __metadata3("design:returntype", void 0) + ], SalesExpertAppController.prototype, "adjustChildOrder", null); + __decorate4([ + (0, customer_guards_1.CustomerAuth)(), + (0, common_12.Post)("customers/:customerId/toggle-active"), + (0, common_12.HttpCode)(200), + __param3(0, (0, common_12.Param)("customerId")), + __param3(1, (0, customer_guards_1.CurrentCustomer)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [String, Object]), + __metadata3("design:returntype", void 0) + ], SalesExpertAppController.prototype, "toggleCustomerActive", null); + __decorate4([ + (0, customer_guards_1.CustomerAuth)(), + (0, common_12.Put)("customers/:customerId"), + (0, common_12.HttpCode)(200), + __param3(0, (0, common_12.Param)("customerId")), + __param3(1, (0, common_12.Body)()), + __param3(2, (0, customer_guards_1.CurrentCustomer)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [String, Object, Object]), + __metadata3("design:returntype", void 0) + ], SalesExpertAppController.prototype, "updateCustomer", null); __decorate4([ (0, customer_guards_1.CustomerAuth)(), (0, common_12.Post)("my-customers"), @@ -92352,6 +92847,7 @@ var require_sales_expert_app_module = __commonJS({ exports2.SalesExpertAppModule = void 0; var common_12 = require_common(); var prisma_module_1 = require_prisma_module(); + var orders_module_1 = require_orders_module(); var sales_expert_app_controller_1 = require_sales_expert_app_controller(); var sales_expert_app_service_1 = require_sales_expert_app_service(); var SalesExpertAppModule = class SalesExpertAppModule { @@ -92359,7 +92855,7 @@ var require_sales_expert_app_module = __commonJS({ exports2.SalesExpertAppModule = SalesExpertAppModule; exports2.SalesExpertAppModule = SalesExpertAppModule = __decorate4([ (0, common_12.Module)({ - imports: [prisma_module_1.PrismaModule], + imports: [prisma_module_1.PrismaModule, orders_module_1.OrdersModule], controllers: [sales_expert_app_controller_1.SalesExpertAppController], providers: [sales_expert_app_service_1.SalesExpertAppService], exports: [sales_expert_app_service_1.SalesExpertAppService] @@ -95619,8 +96115,7 @@ var require_table_service = __commonJS({ if (query.order) { const dir = query.order.startsWith("-") ? "desc" : "asc"; const field = query.order.replace(/^[+-]/, ""); - if (field) { - this.assertAllowed(field, opts.allowed); + if (field && (!opts.allowed || opts.allowed.includes(field))) { orderBy = this.nest(field, dir); } } @@ -95711,6 +96206,7 @@ var require_admin_orders_service = __commonJS({ var orders_service_1 = require_orders_service(); var order_revision_service_1 = require_order_revision_service(); var ledger_service_1 = require_ledger_service(); + var wage_service_1 = require_wage_service(); var STATUS_LABELS = { SUSPENDED: "\u0645\u0639\u0644\u0642 (\u0633\u0642\u0641 \u0627\u0639\u062A\u0628\u0627\u0631)", PLACED: "\u062B\u0628\u062A \u0634\u062F\u0647", @@ -95751,13 +96247,15 @@ var require_admin_orders_service = __commonJS({ revisions; accounting; ledger; - constructor(prisma, table, orders, revisions, accounting, ledger) { + wage; + constructor(prisma, table, orders, revisions, accounting, ledger, wage) { this.prisma = prisma; this.table = table; this.orders = orders; this.revisions = revisions; this.accounting = accounting; this.ledger = ledger; + this.wage = wage; } /** Fields the XTable filter bar and sorter may reference. */ static ALLOWED = [ @@ -95767,12 +96265,31 @@ var require_admin_orders_service = __commonJS({ "createdAt", "updatedAt", "totalGoldWeightGrams", + "wageWeightGrams", "flatRialCharge", "isSuspendedOverCreditLimit", "customer.fullName", "customer.mobile", "branch.name" ]; + /** + * The grids send the column KEY as the sort field. Three of those keys are the + * reference's names, not columns of this table, and used to answer a click on + * their header with a 400 («جمع کل سفارش», «اجرت (گرم)/ریالی», «مشتری»). + */ + static SORT_ALIASES = { + input: "totalGoldWeightGrams", + wage: "wageWeightGrams", + rial_input: "flatRialCharge", + "customer.name": "customer.fullName" + }; + withSortAlias(query) { + if (!query.order) + return query; + const field = query.order.replace(/^[+-]/, ""); + const real = AdminOrdersService_1.SORT_ALIASES[field]; + return real ? { ...query, order: `${query.order.startsWith("-") ? "-" : "+"}${real}` } : query; + } /** * Legacy `POST single-order` — the order list grid. * @@ -95781,7 +96298,7 @@ var require_admin_orders_service = __commonJS({ */ async list(query, branchId, channel = client_1.OrderChannel.RETAIL) { this.table.assertNotExport(query); - const { where, orderBy, skip, take, page, limit } = this.table.build(query, { + const { where, orderBy, skip, take, page, limit } = this.table.build(this.withSortAlias(query), { searchable: ["orderNumber", "customer.fullName", "customer.mobile"], allowed: AdminOrdersService_1.ALLOWED, defaultOrderBy: { createdAt: "desc" } @@ -95832,12 +96349,20 @@ var require_admin_orders_service = __commonJS({ totalGoldWeightGrams: o.totalGoldWeightGrams, wageWeightGrams: o.wageWeightGrams, flatRialCharge: o.flatRialCharge, + // The wholesale / sourcing grids bind the reference's order columns. + input: o.totalGoldWeightGrams, + w: o.totalGoldWeightGrams, + wage: o.wageWeightGrams, + rial_input: o.flatRialCharge, + discount: o.items.reduce((s, it) => s.add(it.discountPercentSnapshot), new client_1.Prisma.Decimal(0)), isSuspendedOverCreditLimit: o.isSuspendedOverCreditLimit, deliveredAt: o.deliveredAt, branch_id: o.branchId, branch: o.branch ? { id: o.branch.id, name: o.branch.name } : null, customer: { id: o.customer.id, + // The «مشتری» column of the order grids binds `customer.name`. + name: o.customer.fullName, // Legacy split names into fname/lname; the new schema has one fullName. // Both are exposed so ported templates binding either keep working. fname: o.customer.firstName ?? o.customer.fullName, @@ -95852,10 +96377,14 @@ var require_admin_orders_service = __commonJS({ variant_title: it.productVariant.title, qty: it.quantity, grams: it.computedWeightGrams, + total_grams: it.computedWeightGrams.mul(it.quantity), rash: it.rashWeightGramsSnapshot, + percent: it.wagePercentSnapshot.sub(it.discountPercentSnapshot), wagePercent: it.wagePercentSnapshot, discountPercent: it.discountPercentSnapshot, flatRialCharge: it.flatRialCharge, + rial_pay: it.flatRialCharge, + total_rial: it.flatRialCharge.mul(it.quantity), // Same preference as the customer app: variant photo, else product cover. image: it.productVariant.image?.url ?? it.productVariant.product.images[0]?.url ?? null, note: "" @@ -95886,7 +96415,7 @@ var require_admin_orders_service = __commonJS({ */ async listTamin(query, branchId) { this.table.assertNotExport(query); - const { where, orderBy, skip, take, page, limit } = this.table.build(query, { + const { where, orderBy, skip, take, page, limit } = this.table.build(this.withSortAlias(query), { searchable: ["orderNumber", "customer.fullName", "customer.mobile"], allowed: AdminOrdersService_1.ALLOWED, defaultOrderBy: { createdAt: "desc" } @@ -96016,18 +96545,20 @@ var require_admin_orders_service = __commonJS({ if (!Array.isArray(payload.order_items) || payload.order_items.length === 0) { throw new common_12.BadRequestException("\u0633\u0628\u062F \u0633\u0641\u0627\u0631\u0634 \u062E\u0627\u0644\u06CC \u0627\u0633\u062A"); } + const quotes = await this.wage.quote(payload.customer_id, payload.order_items.map((it) => it.vid)); const items = await Promise.all(payload.order_items.map(async (it) => { const variant = await this.prisma.productVariant.findUnique({ where: { id: it.vid } }); if (!variant) throw new common_12.NotFoundException(`\u062A\u0646\u0648\u0639 \u0645\u062D\u0635\u0648\u0644 \u06CC\u0627\u0641\u062A \u0646\u0634\u062F: ${it.vid}`); + const quote = quotes.get(it.vid); + const typed = it.percent !== void 0 && it.percent !== null; return { productVariantId: it.vid, quantity: Number(it.qty) || 1, - // Fall back to the variant's own default wage when the builder did not - // negotiate a different one. - wagePercent: Number(it.percent ?? variant.defaultWagePercent), - discountPercent: Number(it.discount ?? 0), - flatRialCharge: Number(it.rial_input ?? 0) + wagePercent: typed ? Number(it.percent) : quote ? Number(quote.wagePercentSnapshot) : Number(variant.defaultWagePercent), + discountPercent: typed || !quote ? Number(it.discount ?? 0) : Number(it.discount ?? quote.discountPercentSnapshot), + // Omitted rial_input is left unset so createOrder copies variant.rialWage; an explicit 0 stays 0. + ...it.rial_input != null ? { flatRialCharge: Number(it.rial_input) } : {} }; })); const order = await this.orders.createOrder({ @@ -96112,7 +96643,8 @@ var require_admin_orders_service = __commonJS({ orders_service_1.OrdersService, order_revision_service_1.OrderRevisionService, accounting_hooks_service_1.AccountingHooksService, - ledger_service_1.LedgerService + ledger_service_1.LedgerService, + wage_service_1.WageService ]) ], AdminOrdersService); } @@ -96522,6 +97054,7 @@ var require_admin_orders_module = __commonJS({ var prisma_module_1 = require_prisma_module(); var orders_module_1 = require_orders_module(); var accounting_module_1 = require_accounting_module(); + var pricing_module_1 = require_pricing_module(); var admin_orders_controller_1 = require_admin_orders_controller(); var admin_orders_service_1 = require_admin_orders_service(); var AdminOrdersModule = class AdminOrdersModule { @@ -96529,7 +97062,7 @@ var require_admin_orders_module = __commonJS({ exports2.AdminOrdersModule = AdminOrdersModule; exports2.AdminOrdersModule = AdminOrdersModule = __decorate4([ (0, common_12.Module)({ - imports: [prisma_module_1.PrismaModule, orders_module_1.OrdersModule, accounting_module_1.AccountingModule], + imports: [prisma_module_1.PrismaModule, orders_module_1.OrdersModule, accounting_module_1.AccountingModule, pricing_module_1.PricingModule], controllers: [admin_orders_controller_1.AdminOrdersController], providers: [admin_orders_service_1.AdminOrdersService] }) @@ -96661,6 +97194,7 @@ var require_admin_preorders_service = __commonJS({ "sizeSpec", "stoneColor", "minaColor", + "quantity", "estimatedWeightGrams", "estimatedPriceRial", "customer.fullName", @@ -96669,7 +97203,8 @@ var require_admin_preorders_service = __commonJS({ /** Legacy `POST get-custom-orders`. */ async list(query) { this.table.assertNotExport(query); - const { where, orderBy, skip, take, page, limit } = this.table.build(query, { + const sorted = query.order && /^[+-]?sum$/.test(query.order) ? { ...query, order: query.order.replace("sum", "quantity") } : query; + const { where, orderBy, skip, take, page, limit } = this.table.build(sorted, { searchable: ["customer.fullName", "customer.mobile"], allowed: AdminPreOrdersService_1.ALLOWED, defaultOrderBy: { createdAt: "desc" } @@ -96696,8 +97231,8 @@ var require_admin_preorders_service = __commonJS({ size: p.sizeSpec, color_mina: p.minaColor, color_stone: p.stoneColor, - // legacy 'sum' (quantity); a PreOrder models a single design request - sum: 1, + // legacy 'sum' — the pieces asked for + sum: p.quantity, description: p.description, designImageUrl: p.designImageUrl, estimatedWeightGrams: p.estimatedWeightGrams, @@ -96745,6 +97280,12 @@ var require_admin_preorders_service = __commonJS({ patch.stoneColor = data.color_stone; if (data.description !== void 0) patch.description = data.description; + if (data.sum !== void 0) { + const sum = Number(data.sum); + if (!Number.isInteger(sum) || sum < 1) + throw new common_12.BadRequestException("\u062A\u0639\u062F\u0627\u062F \u0628\u0627\u06CC\u062F \u0639\u062F\u062F \u0635\u062D\u06CC\u062D \u0648 \u062D\u062F\u0627\u0642\u0644 \u06F1 \u0628\u0627\u0634\u062F"); + patch.quantity = sum; + } if (data.estimatedWeightGrams !== void 0) { patch.estimatedWeightGrams = new client_1.Prisma.Decimal(data.estimatedWeightGrams); } @@ -96905,6 +97446,212 @@ var require_admin_preorders_module = __commonJS({ } }); +// dist/modules/customer-preorders/customer-preorders.service.js +var require_customer_preorders_service = __commonJS({ + "dist/modules/customer-preorders/customer-preorders.service.js"(exports2) { + "use strict"; + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __metadata3 = exports2 && exports2.__metadata || function(k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.CustomerPreOrdersService = exports2.PREORDER_DESIGN_PURPOSE = void 0; + var common_12 = require_common(); + var client_1 = require("@prisma/client"); + var prisma_service_1 = require_prisma_service(); + exports2.PREORDER_DESIGN_PURPOSE = "preorder-design"; + var STEP = { + PLACED: 1, + ADMIN_APPROVED: 2, + WORKSHOP_APPROVED: 3, + READY_TO_SHIP: 4, + DELIVERED: 5, + CANCELLED: 0 + }; + var LABEL = { + PLACED: "\u062B\u0628\u062A \u0633\u0641\u0627\u0631\u0634", + ADMIN_APPROVED: "\u062A\u0627\u06CC\u06CC\u062F \u0627\u062F\u0645\u06CC\u0646", + WORKSHOP_APPROVED: "\u062A\u0627\u06CC\u06CC\u062F \u06A9\u0627\u0631\u06AF\u0627\u0647", + READY_TO_SHIP: "\u0633\u0627\u062E\u062A\u0647 \u0634\u062F\u0647 \u0622\u0645\u0627\u062F\u0647 \u0627\u0631\u0633\u0627\u0644", + DELIVERED: "\u062A\u062D\u0648\u06CC\u0644 \u0634\u062F\u0647", + CANCELLED: "\u0644\u063A\u0648 \u0634\u062F\u0647" + }; + var CustomerPreOrdersService = class CustomerPreOrdersService { + prisma; + constructor(prisma) { + this.prisma = prisma; + } + text(value, label, max, required = false) { + const s = value === void 0 || value === null ? "" : String(value).trim(); + if (!s) { + if (required) + throw new common_12.BadRequestException(`${label} \u0627\u0644\u0632\u0627\u0645\u06CC \u0627\u0633\u062A`); + return null; + } + if (s.length > max) + throw new common_12.BadRequestException(`${label} \u0646\u0628\u0627\u06CC\u062F \u0628\u06CC\u0634\u062A\u0631 \u0627\u0632 ${max} \u0646\u0648\u06CC\u0633\u0647 \u0628\u0627\u0634\u062F`); + return s; + } + async create(customerId, input) { + const color = this.text(input.color, "\u0631\u0646\u06AF \u0645\u062D\u0635\u0648\u0644", 100, true); + const sum = Number(input.sum); + if (!Number.isInteger(sum) || sum < 1 || sum > 1e5) { + throw new common_12.BadRequestException("\u062A\u0639\u062F\u0627\u062F \u0628\u0627\u06CC\u062F \u0639\u062F\u062F \u0635\u062D\u06CC\u062D \u0628\u06CC\u0646 \u06F1 \u0648 \u06F1\u06F0\u06F0\u06F0\u06F0\u06F0 \u0628\u0627\u0634\u062F"); + } + let designImageUrl = null; + if (input.file_id !== void 0 && input.file_id !== null && String(input.file_id) !== "") { + const file2 = await this.prisma.uploadedFile.findFirst({ + where: { id: String(input.file_id), purpose: exports2.PREORDER_DESIGN_PURPOSE }, + select: { url: true } + }); + if (!file2) + throw new common_12.BadRequestException("\u062A\u0635\u0648\u06CC\u0631 \u0633\u0641\u0627\u0631\u0634 \u0645\u0639\u062A\u0628\u0631 \u0646\u06CC\u0633\u062A\u061B \u062F\u0648\u0628\u0627\u0631\u0647 \u0628\u0627\u0631\u06AF\u0630\u0627\u0631\u06CC \u06A9\u0646\u06CC\u062F"); + designImageUrl = file2.url; + } + const created = await this.prisma.preOrder.create({ + data: { + customerId, + status: client_1.PreOrderStatus.PLACED, + colorName: color, + sizeSpec: this.text(input.size, "\u0633\u0627\u06CC\u0632 \u0645\u062D\u0635\u0648\u0644", 100), + minaColor: this.text(input.color_mina, "\u0631\u0646\u06AF \u0645\u06CC\u0646\u0627", 100), + stoneColor: this.text(input.color_stone, "\u0631\u0646\u06AF \u0633\u0646\u06AF", 100), + quantity: sum, + description: this.text(input.description, "\u062A\u0648\u0636\u06CC\u062D\u0627\u062A", 1e3), + designImageUrl + } + }); + return this.toRow(created); + } + /** Newest first, the customer's own only. */ + async listMine(customerId) { + const rows = await this.prisma.preOrder.findMany({ + where: { customerId }, + orderBy: { createdAt: "desc" }, + take: 200 + }); + return { rows: rows.map((r) => this.toRow(r)) }; + } + toRow(p) { + return { + id: p.id, + status: p.status, + sts_str_fa: LABEL[p.status], + step: STEP[p.status], + color: p.colorName, + size: p.sizeSpec, + color_mina: p.minaColor, + color_stone: p.stoneColor, + sum: p.quantity, + description: p.description, + image: p.designImageUrl, + createdAt: p.createdAt + }; + } + }; + exports2.CustomerPreOrdersService = CustomerPreOrdersService; + exports2.CustomerPreOrdersService = CustomerPreOrdersService = __decorate4([ + (0, common_12.Injectable)(), + __metadata3("design:paramtypes", [prisma_service_1.PrismaService]) + ], CustomerPreOrdersService); + } +}); + +// dist/modules/customer-preorders/customer-preorders.controller.js +var require_customer_preorders_controller = __commonJS({ + "dist/modules/customer-preorders/customer-preorders.controller.js"(exports2) { + "use strict"; + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __metadata3 = exports2 && exports2.__metadata || function(k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); + }; + var __param3 = exports2 && exports2.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.CustomerPreOrdersController = void 0; + var common_12 = require_common(); + var customer_preorders_service_1 = require_customer_preorders_service(); + var customer_guards_1 = require_customer_guards(); + var CustomerPreOrdersController = class CustomerPreOrdersController { + preOrders; + constructor(preOrders) { + this.preOrders = preOrders; + } + create(body, me) { + return this.preOrders.create(me.id, body ?? {}); + } + list(me) { + return this.preOrders.listMine(me.id); + } + }; + exports2.CustomerPreOrdersController = CustomerPreOrdersController; + __decorate4([ + (0, customer_guards_1.CustomerAuth)(), + (0, common_12.Post)(), + (0, common_12.HttpCode)(201), + __param3(0, (0, common_12.Body)()), + __param3(1, (0, customer_guards_1.CurrentCustomer)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [Object, Object]), + __metadata3("design:returntype", void 0) + ], CustomerPreOrdersController.prototype, "create", null); + __decorate4([ + (0, customer_guards_1.CustomerAuth)(), + (0, common_12.Get)(), + __param3(0, (0, customer_guards_1.CurrentCustomer)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [Object]), + __metadata3("design:returntype", void 0) + ], CustomerPreOrdersController.prototype, "list", null); + exports2.CustomerPreOrdersController = CustomerPreOrdersController = __decorate4([ + (0, common_12.Controller)("customer/me/pre-orders"), + __metadata3("design:paramtypes", [customer_preorders_service_1.CustomerPreOrdersService]) + ], CustomerPreOrdersController); + } +}); + +// dist/modules/customer-preorders/customer-preorders.module.js +var require_customer_preorders_module = __commonJS({ + "dist/modules/customer-preorders/customer-preorders.module.js"(exports2) { + "use strict"; + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.CustomerPreOrdersModule = void 0; + var common_12 = require_common(); + var prisma_module_1 = require_prisma_module(); + var customer_preorders_controller_1 = require_customer_preorders_controller(); + var customer_preorders_service_1 = require_customer_preorders_service(); + var CustomerPreOrdersModule = class CustomerPreOrdersModule { + }; + exports2.CustomerPreOrdersModule = CustomerPreOrdersModule; + exports2.CustomerPreOrdersModule = CustomerPreOrdersModule = __decorate4([ + (0, common_12.Module)({ + imports: [prisma_module_1.PrismaModule], + controllers: [customer_preorders_controller_1.CustomerPreOrdersController], + providers: [customer_preorders_service_1.CustomerPreOrdersService] + }) + ], CustomerPreOrdersModule); + } +}); + // dist/modules/admin-branches/admin-branches.service.js var require_admin_branches_service = __commonJS({ "dist/modules/admin-branches/admin-branches.service.js"(exports2) { @@ -97503,13 +98250,18 @@ var require_agent_orders = __commonJS({ Object.defineProperty(exports2, "__esModule", { value: true }); exports2.agentSalesWhere = agentSalesWhere; exports2.customerSalesWhere = customerSalesWhere; + var client_1 = require("@prisma/client"); + var NOT_CANCELLED = { status: { not: client_1.OrderStatus.CANCELLED } }; function agentSalesWhere(agentId) { return { - OR: [{ salesAgentId: agentId }, { customer: { salesExpertTradingFor: { adminUserId: agentId } } }] + AND: [ + { OR: [{ salesAgentId: agentId }, { customer: { salesExpertTradingFor: { adminUserId: agentId } } }] }, + NOT_CANCELLED + ] }; } function customerSalesWhere(customerId) { - return { OR: [{ customerId }, { referrerCustomerId: customerId }] }; + return { AND: [{ OR: [{ customerId }, { referrerCustomerId: customerId }] }, NOT_CANCELLED] }; } } }); @@ -97573,6 +98325,7 @@ var require_admin_customers_service = __commonJS({ var prisma_service_1 = require_prisma_service(); var table_service_1 = require_table_service(); var digits_1 = require_digits(); + var customer_input_1 = require_customer_input(); var password_hash_1 = require_password_hash(); var agent_orders_1 = require_agent_orders(); var sms_service_12 = require_sms_service(); @@ -97600,21 +98353,6 @@ var require_admin_customers_service = __commonJS({ exports2.legacyTypeToKind = legacyTypeToKind; var kindToLegacyType = (k) => LEGACY_TYPE_ID[k] ?? null; exports2.kindToLegacyType = kindToLegacyType; - function birthDateOrNull(raw) { - if (raw === void 0) - return void 0; - if (raw === null || String(raw).trim() === "") - return null; - const m = /^(\d{4})-(\d{1,2})-(\d{1,2})/.exec(String(raw).trim()); - const d = m ? new Date(Date.UTC(+m[1], +m[2] - 1, +m[3])) : null; - if (!d || d.getUTCMonth() !== +m[2] - 1 || d.getUTCFullYear() < 1900 || d > /* @__PURE__ */ new Date()) { - throw new common_12.BadRequestException("\u062A\u0627\u0631\u06CC\u062E \u062A\u0648\u0644\u062F \u0645\u0639\u062A\u0628\u0631 \u0646\u06CC\u0633\u062A"); - } - return d; - } - function nationalCodeOrNull(raw) { - return (0, digits_1.faToEn)(String(raw ?? "").trim()) || null; - } function verifyStepOne(step) { switch (step) { case client_1.VerificationStep.UNVERIFIED: @@ -98207,7 +98945,7 @@ var require_admin_customers_service = __commonJS({ nationalCode: null, passwordHash: password_hash_1.OTP_ONLY_PASSWORD_HASH, cityId: data.city_id || null, - birthDate: birthDateOrNull(data.birth_day ?? data.birth_date) ?? null, + birthDate: (0, customer_input_1.birthDateOrNull)(data.birth_day ?? data.birth_date) ?? null, kind: client_1.CustomerKind.RETAIL } }); @@ -98226,7 +98964,7 @@ var require_admin_customers_service = __commonJS({ const lastName = String(data.lname ?? "").trim(); const fullName = [firstName, lastName].filter(Boolean).join(" "); const mobile = (0, digits_1.faToEn)(String(data.mobile ?? "").trim()); - const nationalCode = nationalCodeOrNull(data.national_code ?? data.nationalCode); + const nationalCode = (0, customer_input_1.nationalCodeOrNull)(data.national_code ?? data.nationalCode); if (!fullName || !mobile) { throw new common_12.BadRequestException("\u0646\u0627\u0645 \u0648 \u0645\u0648\u0628\u0627\u06CC\u0644 \u0627\u0644\u0632\u0627\u0645\u06CC \u0627\u0633\u062A"); } @@ -98267,7 +99005,7 @@ var require_admin_customers_service = __commonJS({ pasazhName: data.pasazh_name ?? null, zone: data.zone ?? null, memberCode: data.mcode ?? null, - birthDate: birthDateOrNull(data.birth_date ?? data.birth_day) ?? null, + birthDate: (0, customer_input_1.birthDateOrNull)(data.birth_date ?? data.birth_day) ?? null, // legacy `image_id` from MyUpload's `ok` payload avatarFileId: data.image_id || null, // The three document photos the wholesale form collects. These were @@ -98308,7 +99046,7 @@ var require_admin_customers_service = __commonJS({ } } if (data.national_code !== void 0) - patch.nationalCode = nationalCodeOrNull(data.national_code); + patch.nationalCode = (0, customer_input_1.nationalCodeOrNull)(data.national_code); if (data.city_id !== void 0) { patch.city = data.city_id ? { connect: { id: String(data.city_id) } } : { disconnect: true }; } @@ -98336,7 +99074,7 @@ var require_admin_customers_service = __commonJS({ patch.zone = String(data.zone); if (data.mcode !== void 0) patch.memberCode = String(data.mcode); - const birthDate = birthDateOrNull(data.birth_date !== void 0 ? data.birth_date : data.birth_day); + const birthDate = (0, customer_input_1.birthDateOrNull)(data.birth_date !== void 0 ? data.birth_date : data.birth_day); if (birthDate !== void 0) patch.birthDate = birthDate; if (data.reagent_id !== void 0) { @@ -100770,6 +101508,41 @@ var require_admin_documents_service = __commonJS({ WALLET_BONUS: "\u0647\u062F\u06CC\u0647 \u06A9\u06CC\u0641 \u067E\u0648\u0644", ADJUSTMENT: "\u0627\u0635\u0644\u0627\u062D" }; + var MAX_WEIGHT_GRAMS = new client_1.Prisma.Decimal("9999999999.9999"); + var MAX_RIAL = new client_1.Prisma.Decimal("999999999999999"); + function decimalOf(value, label) { + const text = String(value ?? "").trim(); + if (!/^-?\d+(\.\d+)?$/.test(text)) + throw new common_12.BadRequestException(`${label} \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u0627\u0633\u062A`); + return new client_1.Prisma.Decimal(text); + } + function boundedFigure(value, label, max) { + const d = decimalOf(value, label); + if (d.isNegative()) + throw new common_12.BadRequestException(`${label} \u0646\u0645\u06CC\u200C\u062A\u0648\u0627\u0646\u062F \u0645\u0646\u0641\u06CC \u0628\u0627\u0634\u062F`); + if (d.gt(max)) + throw new common_12.BadRequestException(`${label} \u0628\u06CC\u0634 \u0627\u0632 \u062D\u062F \u0645\u062C\u0627\u0632 \u0627\u0633\u062A`); + return d; + } + function positiveFigure(value, label, max) { + const d = boundedFigure(value, label, max); + if (d.isZero()) + throw new common_12.BadRequestException(`${label} \u0628\u0627\u06CC\u062F \u0628\u0632\u0631\u06AF\u062A\u0631 \u0627\u0632 \u0635\u0641\u0631 \u0628\u0627\u0634\u062F`); + return d; + } + function karatOf(value) { + const n = Number(value); + if (!Number.isInteger(n) || n < 1 || n > 1e3) + throw new common_12.BadRequestException("\u0639\u06CC\u0627\u0631 \u0628\u0627\u06CC\u062F \u0639\u062F\u062F \u0635\u062D\u06CC\u062D \u0628\u06CC\u0646 \u06F1 \u062A\u0627 \u06F1\u06F0\u06F0\u06F0 \u0628\u0627\u0634\u062F"); + return n; + } + function checkedGrams(grams) { + const rounded = grams.toDecimalPlaces(4); + if (rounded.lte(0) || rounded.gt(MAX_WEIGHT_GRAMS)) { + throw new common_12.BadRequestException("\u0645\u0642\u062F\u0627\u0631 \u0633\u0646\u062F \u067E\u0633 \u0627\u0632 \u062A\u0628\u062F\u06CC\u0644 \u0628\u0647 \u06AF\u0631\u0645 \u0635\u0641\u0631 \u06CC\u0627 \u0628\u06CC\u0634 \u0627\u0632 \u062D\u062F \u0645\u062C\u0627\u0632 \u0627\u0633\u062A"); + } + return grams; + } var AdminDocumentsService = class AdminDocumentsService { static { AdminDocumentsService_1 = this; @@ -100923,14 +101696,23 @@ var require_admin_documents_service = __commonJS({ throw new common_12.BadRequestException("\u0645\u0634\u062A\u0631\u06CC \u0627\u0646\u062A\u062E\u0627\u0628 \u0646\u0634\u062F\u0647 \u0627\u0633\u062A"); const instrument = INSTRUMENT_BY_TYPE[sourceType]; const rawValue = instrument === "CASH" ? String(data.price ?? 0) : instrument === "MELTED_GOLD" ? String(data.original_value ?? data.value ?? 0) : String(data.value ?? 0); + const isCash = instrument === "CASH"; + const raw = positiveFigure(rawValue, isCash ? "\u0645\u0628\u0644\u063A" : "\u0648\u0632\u0646", isCash ? MAX_RIAL : MAX_WEIGHT_GRAMS); + const karatPerMille = data.ayar ? karatOf(data.ayar) : void 0; + const pricePerGramRial = data.price_per_gram ? positiveFigure(data.price_per_gram, "\u0645\u0638\u0646\u0647", MAX_RIAL) : void 0; + checkedGrams((0, ledger_service_1.repaymentToGrams)(instrument, raw, karatPerMille, pricePerGramRial)); const entry = await this.ledger.postGoldRepayment({ customerId, instrument, - rawValue, - karatPerMille: data.ayar ? Number(data.ayar) : void 0, - pricePerGramRial: data.price_per_gram ? String(data.price_per_gram) : void 0, + rawValue: raw.toString(), + karatPerMille, + pricePerGramRial: pricePerGramRial?.toString(), note: data.note ?? void 0, - postedByAdminId: actorAdminUserId + postedByAdminId: actorAdminUserId, + // Reference CashController::store sets `confirmed = 1`: a document an admin + // files counts at once. Only the customer's own submission (set-findoc, + // not built in this app) waits for confirmation. «تایید/رد» still toggles. + confirmed: true }); await this.prisma.ledgerEntry.update({ where: { id: entry.id }, @@ -100951,10 +101733,10 @@ var require_admin_documents_service = __commonJS({ if (data.to !== void 0) patch.transferTo = data.to || null; if (data.original_value !== void 0 && data.original_value !== null) { - patch.originalValue = new client_1.Prisma.Decimal(String(data.original_value)); + patch.originalValue = boundedFigure(data.original_value, "\u0648\u0632\u0646", MAX_WEIGHT_GRAMS); } if (data.price !== void 0 && data.price !== null) { - patch.priceRial = new client_1.Prisma.Decimal(String(data.price)); + patch.priceRial = boundedFigure(data.price, "\u0645\u0628\u0644\u063A", MAX_RIAL); } if (data.recive_date) patch.receivedAt = new Date(String(data.recive_date)); @@ -100972,19 +101754,58 @@ var require_admin_documents_service = __commonJS({ const existing = await this.prisma.ledgerEntry.findUnique({ where: { id } }); if (!existing) throw new common_12.NotFoundException("\u0633\u0646\u062F \u06CC\u0627\u0641\u062A \u0646\u0634\u062F"); - const amountChanged = data.value !== void 0 && !new client_1.Prisma.Decimal(String(data.value)).equals(existing.amount); - if (existing.confirmed && amountChanged) { - throw new common_12.BadRequestException("\u0645\u0628\u0644\u063A \u0633\u0646\u062F \u062A\u0627\u06CC\u06CC\u062F\u0634\u062F\u0647 \u0642\u0627\u0628\u0644 \u0648\u06CC\u0631\u0627\u06CC\u0634 \u0646\u06CC\u0633\u062A\u060C \u0686\u0648\u0646 \u0628\u062F\u0647\u06CC \u0645\u0634\u062A\u0631\u06CC \u0628\u0631 \u0627\u0633\u0627\u0633 \u0622\u0646 \u0645\u062D\u0627\u0633\u0628\u0647 \u0634\u062F\u0647 \u0627\u0633\u062A. \u0628\u0631\u0627\u06CC \u0627\u0635\u0644\u0627\u062D\u060C \u0633\u0646\u062F \u062C\u062F\u06CC\u062F \u062B\u0628\u062A \u06A9\u0646\u06CC\u062F."); - } const patch = this.metadataPatch(data); if (data.note !== void 0) patch.note = data.note || null; - if (!existing.confirmed && amountChanged) { - patch.amount = new client_1.Prisma.Decimal(String(data.value)); + const newAmount = this.amountAfterEdit(existing, data, patch); + const amountChanged = newAmount !== null && !newAmount.toDecimalPlaces(4).equals(existing.amount.toDecimalPlaces(4)); + if (existing.confirmed && amountChanged) { + throw new common_12.BadRequestException("\u0645\u0628\u0644\u063A \u0633\u0646\u062F \u062A\u0627\u06CC\u06CC\u062F\u0634\u062F\u0647 \u0642\u0627\u0628\u0644 \u0648\u06CC\u0631\u0627\u06CC\u0634 \u0646\u06CC\u0633\u062A\u060C \u0686\u0648\u0646 \u0628\u062F\u0647\u06CC \u0645\u0634\u062A\u0631\u06CC \u0628\u0631 \u0627\u0633\u0627\u0633 \u0622\u0646 \u0645\u062D\u0627\u0633\u0628\u0647 \u0634\u062F\u0647 \u0627\u0633\u062A. \u0628\u0631\u0627\u06CC \u0627\u0635\u0644\u0627\u062D\u060C \u0633\u0646\u062F \u062C\u062F\u06CC\u062F \u062B\u0628\u062A \u06A9\u0646\u06CC\u062F."); } + if (!existing.confirmed && amountChanged) + patch.amount = checkedGrams(newAmount); await this.prisma.ledgerEntry.update({ where: { id }, data: patch }); return this.findOne(id); } + /** + * The gram amount a document should carry after an edit, or null when the + * edit does not touch it. + * + * Legacy CashController::update recomputed `value = original_value × ayar / 750` + * on every edit of a melted-gold document. The edit form posts the whole form, + * including the OLD `value`, so trusting `data.value` (as this method used to) + * left the credited gold unchanged whenever the operator corrected the weight + * or the karat — and `ayar` was not even stored. The figure is therefore + * derived from the raw inputs whenever one of those changed; `data.value` + * only counts for the instruments that have no raw input (transfer, cheque). + */ + amountAfterEdit(existing, data, patch) { + const instrument = INSTRUMENT_BY_TYPE[existing.sourceType]; + if (!instrument || existing.currency !== client_1.LedgerCurrency.GOLD_GRAM) { + return data.value !== void 0 && data.value !== null && data.value !== "" ? decimalOf(data.value, "\u0645\u0642\u062F\u0627\u0631") : null; + } + const present = (v) => v !== void 0 && v !== null && v !== ""; + const differs = (next, current) => present(next) && (current === null || current === void 0 || !decimalOf(next, "\u0645\u0642\u062F\u0627\u0631").equals(current)); + if (instrument === "MELTED_GOLD") { + const karat = present(data.ayar) ? karatOf(data.ayar) : existing.karatPerMille; + const raw = present(data.original_value) ? data.original_value : existing.originalValue; + if (differs(data.ayar, existing.karatPerMille)) + patch.karatPerMille = karat; + if ((differs(data.ayar, existing.karatPerMille) || differs(data.original_value, existing.originalValue)) && karat && present(raw)) { + return (0, ledger_service_1.repaymentToGrams)("MELTED_GOLD", String(raw), karat); + } + } else if (instrument === "CASH") { + const perGram = present(data.price_per_gram) ? data.price_per_gram : existing.pricePerGramRialAtEntry; + const price = present(data.price) ? data.price : existing.priceRial; + if (differs(data.price_per_gram, existing.pricePerGramRialAtEntry)) { + patch.pricePerGramRialAtEntry = positiveFigure(data.price_per_gram, "\u0645\u0638\u0646\u0647", MAX_RIAL); + } + if ((differs(data.price_per_gram, existing.pricePerGramRialAtEntry) || differs(data.price, existing.priceRial)) && present(price) && present(perGram)) { + return (0, ledger_service_1.repaymentToGrams)("CASH", String(price), void 0, String(perGram)); + } + } + return present(data.value) ? decimalOf(data.value, "\u0645\u0642\u062F\u0627\u0631") : null; + } /** * Legacy `POST cash/confirem/{id}` (legacy's own spelling) — a TOGGLE: the grid * shows a tick on an unconfirmed row and a cross on a confirmed one, both @@ -100998,24 +101819,9 @@ var require_admin_documents_service = __commonJS({ const e = await this.prisma.ledgerEntry.findUnique({ where: { id } }); if (!e) throw new common_12.NotFoundException("\u0633\u0646\u062F \u06CC\u0627\u0641\u062A \u0646\u0634\u062F"); - if (!e.confirmed) { - await this.ledger.confirmEntry(id, adminUserId); - this.notifyDocumentConfirm(e.customerId, true); - return this.findOne(id); - } - await this.prisma.$transaction(async (tx) => { - const delta = e.direction === client_1.LedgerDirection.CREDIT ? e.amount : e.amount.negated(); - const field = e.currency === client_1.LedgerCurrency.GOLD_GRAM ? "goldDebtGrams" : "fiatDebtRial"; - await tx.customer.update({ - where: { id: e.customerId }, - data: { [field]: { increment: delta } } - }); - await tx.ledgerEntry.update({ - where: { id }, - data: { confirmed: false, confirmedAt: null } - }); - }); - this.notifyDocumentConfirm(e.customerId, false); + const { changed } = await this.ledger.setConfirmed(id, !e.confirmed, adminUserId); + if (changed) + this.notifyDocumentConfirm(e.customerId, !e.confirmed); return this.findOne(id); } // Legacy CashController::toggleConfiremCash sent an SMS on both outcomes. @@ -164281,7 +165087,8 @@ var require_sales_agent_service = __commonJS({ * Two deliberate fidelity notes: * - The `OR customer_id = X` arm is the expert's trading account (D21): an * AdminUser cannot own an Order, so their own orders sit on that Customer. - * - No status filter, matching legacy. The admin panel disagrees with itself + * - No status filter, matching legacy, except that a cancelled order is a + * removed one (legacy deleted it) and is left out. The admin panel disagrees with itself * here — `AdminCustomersService.listReagents` aggregates unfiltered while * `reagentDetail` filters on the SOLD statuses — so this matches * listReagents (the grid figure) and legacy. If those three are ever @@ -164545,6 +165352,7 @@ var require_app_module = __commonJS({ var admin_orders_module_1 = require_admin_orders_module(); var admin_cities_module_1 = require_admin_cities_module(); var admin_preorders_module_1 = require_admin_preorders_module(); + var customer_preorders_module_1 = require_customer_preorders_module(); var admin_workshops_module_1 = require_admin_workshops_module(); var admin_customers_module_1 = require_admin_customers_module(); var admin_comments_module_1 = require_admin_comments_module(); @@ -164576,6 +165384,7 @@ var require_app_module = __commonJS({ admin_orders_module_1.AdminOrdersModule, admin_cities_module_1.AdminCitiesModule, admin_preorders_module_1.AdminPreOrdersModule, + customer_preorders_module_1.CustomerPreOrdersModule, admin_workshops_module_1.AdminWorkshopsModule, admin_customers_module_1.AdminCustomersModule, admin_comments_module_1.AdminCommentsModule, diff --git a/apps/api/release/migrations/20261029120000_preorder_quantity/migration.sql b/apps/api/release/migrations/20261029120000_preorder_quantity/migration.sql new file mode 100644 index 0000000..fb1e79f --- /dev/null +++ b/apps/api/release/migrations/20261029120000_preorder_quantity/migration.sql @@ -0,0 +1,3 @@ +-- Pieces asked for on a made-to-order request (legacy custom_orders.sum). Existing +-- rows were all treated as one piece by the admin grid, so they keep 1. +ALTER TABLE "PreOrder" ADD COLUMN "quantity" INTEGER NOT NULL DEFAULT 1; diff --git a/apps/api/release/vendor/.prisma/client/edge.js b/apps/api/release/vendor/.prisma/client/edge.js index 8229615..5b95bd0 100644 --- a/apps/api/release/vendor/.prisma/client/edge.js +++ b/apps/api/release/vendor/.prisma/client/edge.js @@ -385,6 +385,7 @@ exports.Prisma.PreOrderScalarFieldEnum = { sizeSpec: 'sizeSpec', stoneColor: 'stoneColor', minaColor: 'minaColor', + quantity: 'quantity', estimatedWeightGrams: 'estimatedWeightGrams', estimatedPriceRial: 'estimatedPriceRial', description: 'description', @@ -883,13 +884,13 @@ const config = { } } }, - "inlineSchema": "// Gold Banking System — core schema\n// Canonical accounting model: legacy \"System A\" gram ledger (see migration notes).\n// The external \"Tahesab\" service is retired — LedgerEntry is the sole source of truth.\n// All money/weight fields use Decimal, never Float, to avoid rounding drift in debt math.\n\ngenerator client {\n provider = \"prisma-client-js\"\n // native = local Windows/macOS; debian-openssl-3.0.x = node:20-bookworm-slim (Arvan)\n binaryTargets = [\"native\", \"debian-openssl-3.0.x\"]\n}\n\ndatasource db {\n provider = \"postgresql\"\n url = env(\"DATABASE_URL\")\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Enums\n// ─────────────────────────────────────────────────────────────────────────\n\nenum AdminRole {\n SUPER_ADMIN\n SYSTEM_APPROVER // legacy: تایید مدیر سیستم\n SALES_EXPERT // legacy Customer.type=1, also acts as a referral \"reagent\"\n WORKSHOP_SUPERVISOR\n ACCOUNTANT\n}\n\n/// Legacy Customer.type — what kind of wholesale customer this is. Values and\n/// labels taken verbatim from bulkCustomer.vue's userTypes list.\n///\n/// SALES_AGENT is a LEGACY value only: legacy stored a sales agent as a\n/// Customer row with type=1, but the redesigned system models a sales agent\n/// as an AdminUser (role SALES_EXPERT) instead — see admin-users.service.ts\n/// and admin-customers.service.ts's listReagents()/create(). No Customer row\n/// should be created with kind SALES_AGENT going forward; the value is kept\n/// only so legacyTypeToKind()/kindToLegacyType() stay total functions and any\n/// already-migrated data keeps a readable label.\n///\n/// RETAIL marks a \"تک\" (single/retail) customer — legacy kept these in an\n/// entirely separate table (SingleCustomer/`login`) that could never contain\n/// a wholesale/agent/shopkeeper/banker row. The redesigned schema folded both\n/// into one Customer model, so this value is what listSingle() now filters on\n/// to reproduce that same separation.\nenum CustomerKind {\n SALES_AGENT // legacy 1 کارشناس فروش — superseded by AdminRole.SALES_EXPERT, do not use for new rows\n APP_SHOPKEEPER // 2 مغازه دار اپلیکیشن\n WALK_IN_SHOPKEEPER // 3 مغازه دار حضوری\n BANKER // 4 بنکدار\n WORKSHOP_SUPERVISOR // 5 سرپرست کارگاه\n RETAIL // مشتری تک — legacy SingleCustomer\n}\n\nenum VerificationStep {\n UNVERIFIED\n STEP_ONE_SUBMITTED\n STEP_TWO_SUBMITTED\n VERIFIED\n\n /// Legacy had THREE states per step, not two\n /// (MajorCustomerController.php:106-135): 1 = awaiting, 2 = approved,\n /// 3 = REJECTED. Mapping rejected customers to UNVERIFIED would put closed\n /// cases back in the review queue, so the owner ruled it out (2026-10-07).\n /// 14 legacy rows land here; see Customer.verificationRejectionReason.\n REJECTED\n}\n\n/// Legacy kept retail and wholesale orders in two SEPARATE tables\n/// (orders_orders vs orders). The redesigned schema has one Order model, so the\n/// distinction lives here instead.\nenum OrderChannel {\n RETAIL // تک فروشی\n WHOLESALE // عمده فروشی\n}\n\nenum OrderStatus {\n SUSPENDED // credit limit (goldCreditLimitGrams) exceeded at placement\n PLACED\n ADMIN_APPROVED\n SOURCING\n PREPARING\n DELIVERED_TO_AGENT\n DELIVERED_TO_CUSTOMER // debt recognition point — mirrors legacy sts>4\n CANCELLED\n}\n\nenum PreOrderStatus {\n PLACED\n ADMIN_APPROVED\n WORKSHOP_APPROVED\n READY_TO_SHIP\n DELIVERED\n CANCELLED\n}\n\nenum LedgerCurrency {\n GOLD_GRAM\n RIAL\n}\n\nenum LedgerDirection {\n DEBIT // increases what the customer owes\n CREDIT // decreases what the customer owes\n}\n\nenum LedgerSourceType {\n ORDER_STOCK\n ORDER_PRE_ORDER\n REPAYMENT_MELTED_GOLD // karat-normalized: amount * karatPerMille / 750\n REPAYMENT_TRANSFER\n REPAYMENT_CHEQUE\n REPAYMENT_CASH // price-per-gram-normalized via pricePerGramRialAtEntry\n WALLET_BONUS\n ADJUSTMENT\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Identity\n// ─────────────────────────────────────────────────────────────────────────\n\n/// Legacy `cities` is a tree (country > province > city > district) and so is\n/// this: a city hangs under its `parent`. In the admin pickers a top-level row\n/// (the country) is a heading, not selectable (henza_admin citiesModel.js:38).\nmodel City {\n id String @id @default(cuid())\n name String\n parentId String?\n parent City? @relation(\"CityTree\", fields: [parentId], references: [id], onDelete: Restrict)\n children City[] @relation(\"CityTree\")\n /// Legacy cities.percent / percent_aux — per-city wage surcharges the city\n /// screen edits through GET cities/get-percent/{id} and get-percent-aux/{id}.\n percent Decimal? @db.Decimal(6, 3)\n percentAux Decimal? @db.Decimal(6, 3)\n customers Customer[]\n addresses CustomerAddress[]\n branches Branch[]\n preOrders PreOrder[]\n salesExpertProfiles SalesExpertProfile[]\n\n @@index([parentId])\n}\n\n/// A staff account for the ADMIN PANEL — and nothing else.\n///\n/// Split out of AdminUser (which now holds sales experts only) so that:\n/// * the same mobile can be an admin AND a sales expert — they are two\n/// separate roles, each unique only within its own table;\n/// * the expert table (production: ~12,000 rows) is never written by panel\n/// staff management.\n/// Migration 20261026120000_split_admin_table copies the existing non-expert\n/// AdminUser rows here WITH THEIR IDS, so issued panel tokens and every\n/// \"who did this\" column keep resolving. The old rows are left in AdminUser,\n/// dormant; no code reads them as admins any more.\n///\n/// ⚠️ fullName/firstName/lastName are kept in sync by the DB trigger\n/// `admin_sync_full_name_trg` (it shares the function admin_user_sync_full_name) — same semantics as AdminUser: the parts win.\nmodel Admin {\n id String @id @default(cuid())\n\n fullName String\n firstName String?\n lastName String?\n\n mobile String @unique\n passwordHash String\n /// Never SALES_EXPERT — that role lives in AdminUser. Enforced in\n /// AdminUsersService, not in the database, so the enum stays shared.\n role AdminRole\n userTypeId Int?\n userType UserType? @relation(fields: [userTypeId], references: [id])\n branchId String?\n branch Branch? @relation(fields: [branchId], references: [id])\n isActive Boolean @default(true)\n createdAt DateTime @default(now())\n\n supervisedWorkshops Workshop[] @relation(\"WorkshopSupervisor\")\n branchAllocations BranchAllocation[] @relation(\"AllocationAuthor\")\n postedLedgerEntries LedgerEntry[]\n orderStatusEvents OrderStatusEvent[]\n preOrderStatusEvents PreOrderStatusEvent[]\n sentSmsMessages SmsMessage[] @relation(\"SmsAuthor\")\n sentNotifications Notification[] @relation(\"NotificationAuthor\")\n uploadedFiles UploadedFile[] @relation(\"FileUploader\")\n\n /// Issued admin-panel tokens, recorded only while session tracking is on\n /// (AUTH_SESSION_TRACKING, or implicitly whenever the IAM is enabled) so a\n /// token can be revoked before it expires. See AdminSession.\n sessions AdminSession[]\n\n @@index([role])\n @@index([userTypeId])\n @@index([firstName])\n @@index([lastName])\n}\n\n/// A SALES EXPERT (role SALES_EXPERT). Panel staff live in `Admin`; rows here with\n/// any other role are pre-split leftovers and are ignored by the code.\nmodel AdminUser {\n id String @id @default(cuid())\n\n /// ⚠️ Kept in sync BY A DATABASE TRIGGER — `admin_user_sync_full_name`, from\n /// migration 20260922180000. Prisma cannot see it, so a write here may store\n /// something other than what you passed:\n ///\n /// * write the parts -> fullName is rebuilt as \"first last\"\n /// * write fullName only -> the parts are re-derived from it\n /// * write BOTH in one update -> THE PARTS WIN; the submitted fullName is\n /// discarded\n ///\n /// Re-read after writing if you need the stored value. Same arrangement as\n /// Customer (D0 requirement 7 — the split applies to ALL admins, not only\n /// sales experts).\n fullName String\n firstName String?\n lastName String?\n\n mobile String @unique\n passwordHash String\n role AdminRole\n /// Legacy `users.ut`. Granular ACL lives here (Permission rows hang off UserType);\n /// the coarse `role` enum above is retained for the business rules that already\n /// switch on it. Nullable so existing seeded admins remain valid.\n userTypeId Int?\n userType UserType? @relation(fields: [userTypeId], references: [id])\n branchId String?\n branch Branch? @relation(fields: [branchId], references: [id])\n wagePercent Decimal? @db.Decimal(6, 3) // legacy Customer.percent, commission on referred orders\n isActive Boolean @default(true)\n createdAt DateTime @default(now())\n\n /// Legacy stored a sales agent as a `customers` row with type=1, so\n /// ReagentCustomer.vue's shared form collected these alongside the\n /// wholesale-customer fields. A sales agent is now an AdminUser\n /// (role=SALES_EXPERT), so these live here instead — only ever set for that\n /// role; every other AdminUser leaves them null.\n avatarFileId String?\n avatarFile UploadedFile? @relation(\"AdminUserAvatar\", fields: [avatarFileId], references: [id])\n address String?\n storeName String? // legacy store_name\n pasazhName String? // legacy pasazh_name\n memberCode String? // legacy mcode\n\n referredCustomers Customer[] @relation(\"ReferralAgent\")\n /// Orders credited to this sales expert — see Order.salesAgentId.\n creditedOrders Order[] @relation(\"OrderSalesAgent\")\n\n /// Only ever set for role = SALES_EXPERT (D17).\n salesExpertProfile SalesExpertProfile?\n\n @@index([role])\n @@index([userTypeId])\n @@index([avatarFileId])\n @@index([firstName])\n @@index([lastName])\n}\n\n/// An issued APP token (customer app / sales-expert app), so it can be revoked\n/// before it expires — the counterpart of AdminSession for the other token family.\n///\n/// WHY A SEPARATE TABLE AND NO FOREIGN KEY\n/// ---------------------------------------\n/// An app token's `sub` is a Customer id for a customer and an **AdminUser id**\n/// for a sales expert (D21). One FK cannot point at two tables, so the subject is\n/// stored as a plain id plus its type. The rows are short-lived operational data,\n/// not part of the accounting model, so the missing FK costs nothing here.\nmodel AppSession {\n id String @id @default(cuid())\n\n /// The token's `jti` claim. Unique: one row per issued token.\n jti String @unique\n\n /// Customer.id, or AdminUser.id when subjectType is \"sales-expert\".\n subjectId String\n subjectType String\n\n mobile String?\n\n /// Set when the login was confirmed by the central IAM: its session id (`sid`)\n /// and stable user id (`sub`), which is what a back-channel logout arrives with.\n iamSessionId String?\n iamSub String?\n\n ipAddress String?\n userAgent String?\n\n createdAt DateTime @default(now())\n expiresAt DateTime?\n lastSeenAt DateTime?\n\n revokedAt DateTime?\n revokedReason String?\n\n @@index([subjectId])\n @@index([iamSessionId])\n @@index([iamSub])\n @@index([expiresAt])\n}\n\n/// An issued admin-panel JWT, so it can be revoked before it expires.\n///\n/// WHY THIS EXISTS\n/// ---------------\n/// The admin token is self-contained and valid for 12h, which means nothing —\n/// not disabling the account, not a central \"sign out everywhere\" — could cut a\n/// session short: the token kept working until it expired. With the central IAM\n/// in the loop that gap became visible (an IAM session revocation had no effect\n/// here), so every issued token now carries a `jti` recorded on this table and\n/// JwtStrategy refuses a token whose row is revoked.\n///\n/// Rows are written ONLY while tracking is enabled, and JwtStrategy only\n/// enforces them while it is enabled, so a deployment that does not want the\n/// extra lookup behaves exactly as before.\nmodel AdminSession {\n id String @id @default(cuid())\n\n /// The token's `jti` claim. Unique: one row per issued token.\n jti String @unique\n\n adminId String @map(\"adminUserId\")\n admin Admin @relation(fields: [adminId], references: [id], onDelete: Cascade)\n\n /// Set when the login was verified by the IAM: its session id (`sid`) and the\n /// stable user id (`sub`) there. Back-channel logout arrives keyed by these —\n /// deliberately here rather than as columns on AdminUser, so enabling the\n /// feature needs no change to an existing table.\n iamSessionId String?\n iamSub String?\n\n ipAddress String?\n userAgent String?\n\n createdAt DateTime @default(now())\n expiresAt DateTime?\n lastSeenAt DateTime?\n\n revokedAt DateTime?\n revokedReason String?\n\n @@index([adminId], map: \"AdminSession_adminUserId_idx\")\n @@index([iamSessionId])\n @@index([iamSub])\n @@index([expiresAt])\n}\n\n/// The sales-expert fields legacy kept on the `customers` row (type=1) and that\n/// were lost when a sales expert became an AdminUser (D17).\n///\n/// A separate table rather than columns on AdminUser: these are meaningful only\n/// for role = SALES_EXPERT and would be permanently null for every other admin.\n/// A row is created for every SALES_EXPERT by the migration, and upserted by the\n/// service whenever one is created or a user's role becomes SALES_EXPERT — but\n/// readers still left-join, so a missing profile degrades to nulls rather than\n/// dropping the agent from the grid.\n///\n/// `reagent_id` is deliberately NOT here — see D17: in the reference it was a\n/// side effect of the shared customers form, and filling it removed that expert\n/// from the selectable-agent list (queryReagent, AdminController.php:420).\nmodel SalesExpertProfile {\n id String @id @default(cuid())\n adminUserId String @unique\n adminUser AdminUser @relation(fields: [adminUserId], references: [id], onDelete: Cascade)\n\n /// Legacy customers.city_id — a filterable grid column\n /// (ReagentListModel.js:14) and the source of the commission autofill\n /// (ReagentCustomer.vue:215-228).\n cityId String?\n city City? @relation(fields: [cityId], references: [id])\n\n /// Legacy customers.gram_level — the «سطح اعتبار» column, filterable.\n /// Decimal(14,4) matches Customer.goldCreditLimitGrams exactly so the same\n /// credit limit has identical precision on both tables.\n gramLevel Decimal @default(0) @db.Decimal(14, 4)\n\n /// Legacy customers.phone (varchar 15) and ncode (varchar 20). The reference\n /// stores both and reads neither back; kept so the form matches it. Neither\n /// is unique and neither has a validation rule in the reference — inventing\n /// one would reject data the reference accepts.\n phone String? @db.VarChar(15)\n nationalCode String? @db.VarChar(20)\n\n /// The Customer row carrying this expert's OWN orders, debt and credit limit.\n ///\n /// The reference stored a sales agent AS a Customer (type=1), so an order the\n /// agent placed from the app was simply their own, against their own\n /// gram_level (ApiMobileController.php:534-535). Here the expert is an\n /// AdminUser (D17), which has no ledger and cannot be an Order's subject, so\n /// this one linked Customer plays that part.\n ///\n /// Distinct from the expert's REFERRED customers, which are ordinary Customer\n /// rows pointing at the AdminUser through Customer.referredByAgentId.\n ///\n /// Null until the expert first signs into the app, when it is created from\n /// this profile. See D21.\n tradingCustomerId String? @unique\n tradingCustomer Customer? @relation(\"SalesExpertTradingAccount\", fields: [tradingCustomerId], references: [id], onDelete: SetNull)\n\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now()) @updatedAt\n\n @@index([cityId])\n}\n\nmodel Customer {\n id String @id @default(cuid())\n\n /// ⚠️ `fullName`, `firstName` and `lastName` are kept in sync BY A DATABASE\n /// TRIGGER — `customer_sync_full_name`, created in migration\n /// 20260922120000_customer_name_parts. Prisma does not know about it, so a\n /// write here is NOT the whole story:\n ///\n /// * write the parts -> fullName is rebuilt as \"first last\"\n /// * write fullName only -> the parts are re-derived from it\n /// * write BOTH in one update -> THE PARTS WIN; fullName is overwritten\n /// with \"first last\" and whatever you passed for fullName is discarded\n ///\n /// So a value you wrote can differ from the value that lands in the row.\n /// Re-read after writing if you need the stored value. Prefer writing the\n /// parts; `fullName` exists for the legacy readers that predate D0.\n ///\n /// Reference has these as two columns from the start\n /// (henza_server 2020_10_01_120430_customers_table.php:18-19 fname/lname);\n /// the port collapsed them, which is the D0 defect.\n fullName String\n firstName String?\n lastName String?\n\n mobile String @unique\n /// Legacy customers.ncode. OPTIONAL since 2026-10-07: not one of the 1,616\n /// legacy customers has a national code (1595/1595 empty), and fabricating\n /// one is a data violation that would block later legal identity checks\n /// (owner ruling). Still @unique — in PostgreSQL NULLs do not collide, so\n /// the migration tool must write NULL and never '', which would collide on\n /// the second row.\n ///\n /// Three service-layer workarounds exist ONLY because this used to be\n /// required, and they store the MOBILE NUMBER here:\n /// admin-customers.service.ts:625,685 and customer-auth.service.ts:258.\n /// Retiring them is a separate change; see docs/DATA-MIGRATION-MAP.md §10.4.\n nationalCode String? @unique\n passwordHash String\n cityId String?\n city City? @relation(fields: [cityId], references: [id])\n\n /// Legacy customers.new_city — the city name exactly as the customer typed it\n /// at app sign-up (Major/CustomerController.php:36). Kept verbatim because\n /// the legacy city table has only 15 rows, so the typed name is often the only\n /// record of where the customer is (172 customers; 43 match no known city).\n /// cityId is set alongside it only on an exact, ي/ك-normalised name match.\n /// Legacy sign-up also forced city_id = 5 (Tehran) on everyone\n /// (Major/CustomerController.php:21), so for those rows the typed name, not\n /// cityId, is the truth. Owner ruling 2026-10-07: keep both.\n cityNameRaw String?\n\n /// Legacy Customer.type — distinguishes بنکدار from مغازه دار, which the\n /// BankerList / ShopkeeperList screens filter on.\n kind CustomerKind @default(APP_SHOPKEEPER)\n\n /// Legacy contact + shop columns, shown on the wholesale customer form and as\n /// (hidden-by-default) columns in its grid.\n phone String?\n address String?\n storeName String?\n pasazhName String?\n zone String?\n /// Legacy mcode — the operator-assigned customer code.\n memberCode String?\n\n referredByAgentId String?\n referredByAgent AdminUser? @relation(\"ReferralAgent\", fields: [referredByAgentId], references: [id])\n\n /// Set only on the one Customer row that acts as a sales expert's own trading\n /// account (see SalesExpertProfile.tradingCustomerId). Empty for every\n /// ordinary customer.\n salesExpertTradingFor SalesExpertProfile? @relation(\"SalesExpertTradingAccount\")\n /// Legacy orders that named THIS customer as their referrer — see\n /// Order.referrerCustomerId. History only.\n referredOrders Order[] @relation(\"OrderReferrerCustomer\")\n\n // Credit limit + cached ledger balances (source of truth is LedgerEntry; these\n // are denormalized for fast reads and reconciled by a scheduled job).\n goldCreditLimitGrams Decimal @default(0) @db.Decimal(14, 4) // legacy gram_level\n goldDebtGrams Decimal @default(0) @db.Decimal(14, 4) // legacy remain\n fiatDebtRial Decimal @default(0) @db.Decimal(20, 2) // legacy rial_remain\n\n /// Balance as last read from the accounting software (D27), in the app's own\n /// sign convention (positive = owes). Shown to the customer when the\n /// integration is on; the credit-limit check still uses goldDebtGrams above.\n /// Null until the first successful sync.\n accountingGoldBalance Decimal? @db.Decimal(14, 4)\n accountingRialBalance Decimal? @db.Decimal(20, 2)\n accountingBalanceAt DateTime?\n\n /// Legacy `customers.percent` — the per-customer making-charge offset. It is\n /// ADDED to the variant's making charge when pricing an order line\n /// (henza_pwa src/Mixins/product/index.ts:69-75:\n /// getWage(v) = state.percent + v.percentage_pay)\n /// and it shifts the catalogue making-charge filter bounds\n /// (ApiMobileController.php:391-396,76-77). It is NOT part of the price\n /// formula itself — that extra percent is ConfigStatic['product_price_extra_percent'].\n ///\n /// NOT the wallet cashback rate (storefront ConfigStatic['percent'], D13) and\n /// NOT the wholesale per-line charge (OrderItem.wagePercentSnapshot).\n ///\n /// DB default 0 keeps every existing customer's price unchanged. The\n /// reference's application-layer default for NEW customers is 3\n /// (AdminController.php:338) and the field is required on create (:354).\n makingChargeOffsetPercent Decimal @default(0) @db.Decimal(6, 3)\n\n verificationStep VerificationStep @default(UNVERIFIED)\n nationalIdImageUrl String?\n businessLicenseUrl String?\n shopImageUrl String?\n\n /// Why verification was rejected (VerificationStep.REJECTED).\n ///\n /// Legacy recorded NO reason: none of its 49 `customers` columns is a\n /// reason/note field, and on rejection it only sent a fixed SMS. So the 14\n /// rows migrated from the legacy system carry the sentinel\n /// «رد شده در سیستم قدیم — فاقد شرح علت ثبت‌شده» instead of NULL, so support\n /// knows why it is blank (owner ruling 2026-10-07). The migration tool\n /// writes it only WHERE this IS NULL, so a re-run cannot overwrite a real\n /// reason entered in the new system.\n verificationRejectionReason String?\n\n /// NULL for rows migrated from the legacy system — it recorded no rejection time.\n verificationRejectedAt DateTime?\n\n /// Legacy customers.birth_date, populated on 917 of 1,595 rows. Kept for the\n /// birthday SMS / loyalty campaigns (owner ruling 2026-10-07).\n ///\n /// ⚠ Legacy stores dates as JALALI STRINGS in other tables\n /// (cashes.recive_date is varchar, 88/89 values starting \"14…\"), so this\n /// timestamp may hold mis-entered Jalali years. Confirm the calendar with\n /// docs/migration-precheck-3.sql BEFORE backfilling: copying them unchanged\n /// would produce 917 wrong birthdays, worse for an SMS campaign than none.\n birthDate DateTime?\n\n /// Legacy `image_id` — the profile photo (عکس پروفایل) on the sales-agent\n /// form. Legacy stored an FK to its Image table and read it back as a nested\n /// `image: { id, image }`, so this is a relation, not a bare URL string.\n avatarFileId String?\n avatarFile UploadedFile? @relation(\"CustomerAvatar\", fields: [avatarFileId], references: [id])\n\n /// Legacy had TWO independent switches on a customer:\n /// sts -> may they place orders (this field)\n /// active -> is the account enabled (isActive, below)\n /// The port previously drove both from isActive; they are separate again.\n canPlaceOrders Boolean @default(true)\n\n isActive Boolean @default(true)\n /// Legacy archive flag — the archived list filtered on this, not on isActive.\n isArchived Boolean @default(false)\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n addresses CustomerAddress[]\n orders Order[]\n preOrders PreOrder[]\n ledgerEntries LedgerEntry[]\n walletBonuses WalletBonus[]\n comments Comment[]\n promotions Promotion[]\n notifications NotificationRecipient[]\n activityLogs CustomerActivityLog[]\n otpChallenges CustomerOtp[]\n favorites CustomerFavorite[]\n\n @@index([referredByAgentId])\n @@index([firstName])\n @@index([lastName])\n}\n\n/// Legacy `fav` (251 rows) — saved products. The target had no model for this,\n/// so every customer's favourites would have been lost in the migration; the\n/// owner confirmed on 2026-10-06 that they matter.\n///\n/// Legacy `fav` has two columns and NO primary key. The composite key here\n/// supplies the constraint the source lacks (the precheck found 0 duplicate\n/// pairs, but the tool should still SELECT DISTINCT). 14 of the 251 rows point\n/// at a deleted customer and must be skipped.\n///\n/// Legacy's denormalised `product.count_fav` counter is deliberately NOT\n/// recreated as a column — derive it from this table.\nmodel CustomerFavorite {\n customerId String\n customer Customer @relation(fields: [customerId], references: [id], onDelete: Cascade)\n productId String\n product Product @relation(fields: [productId], references: [id], onDelete: Cascade)\n createdAt DateTime @default(now())\n\n @@id([customerId, productId])\n @@index([productId])\n}\n\nmodel CustomerAddress {\n id String @id @default(cuid())\n customerId String\n customer Customer @relation(fields: [customerId], references: [id])\n cityId String?\n city City? @relation(fields: [cityId], references: [id])\n addressLine String\n isDefault Boolean @default(false)\n}\n\nmodel Branch {\n id String @id @default(cuid())\n name String\n /// Legacy Branch.address / phone — both are columns in the branch grid.\n address String?\n phone String?\n /// Legacy GET branch/active/{id} toggles this.\n isActive Boolean @default(true)\n cityId String?\n city City? @relation(fields: [cityId], references: [id])\n adminUsers AdminUser[]\n admins Admin[]\n orders Order[]\n allocations BranchAllocation[]\n}\n\nmodel Workshop {\n id String @id @default(cuid())\n name String\n /// Legacy Workshop.address / phone — both are columns in the workshop grid.\n address String?\n phone String?\n /// The supervisor created alongside the workshop by the legacy Add form.\n supervisorId String?\n supervisor Admin? @relation(\"WorkshopSupervisor\", fields: [supervisorId], references: [id])\n isActive Boolean @default(true)\n preOrders PreOrder[]\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Catalog — item reference catalog\n// ─────────────────────────────────────────────────────────────────────────\n\nmodel Category {\n id String @id @default(cuid())\n title String\n /// Legacy Category.type — which storefront the category belongs to:\n /// 1 سایت | 2 اپلیکشن موبایل. Drives the \"type_str\" grid column.\n type Int @default(1)\n /// Legacy Category.image / icon — the grid renders the image, the storefront the icon.\n imageUrl String?\n iconUrl String?\n /// Legacy meta tag + description, used for SEO on the site categories.\n metaTag String?\n description String?\n parentId String?\n parent Category? @relation(\"CategoryTree\", fields: [parentId], references: [id])\n children Category[] @relation(\"CategoryTree\")\n products Product[]\n promotions Promotion[]\n}\n\nmodel Brand {\n id String @id @default(cuid())\n title String\n products Product[]\n promotions Promotion[]\n}\n\n/// Curated product groupings — replaces legacy \"Ciny/CinyProduct\" (a tagging\n/// feature, NOT a gold-price snapshot mechanism, despite the misleading legacy name).\nmodel Collection {\n id String @id @default(cuid())\n title String\n description String?\n isActive Boolean @default(true)\n products CollectionProduct[]\n}\n\nmodel CollectionProduct {\n collectionId String\n collection Collection @relation(fields: [collectionId], references: [id])\n productId String\n product Product @relation(fields: [productId], references: [id])\n\n @@id([collectionId, productId])\n}\n\nmodel Product {\n id String @id @default(cuid())\n title String\n description String?\n categoryId String?\n category Category? @relation(fields: [categoryId], references: [id])\n brandId String?\n brand Brand? @relation(fields: [brandId], references: [id])\n /// Legacy Product.product_code — the human-facing SKU shown in the grid.\n productCode String? @unique\n /// Legacy Product.show_type: 1 site, 2 mobile, 3 both.\n showType Int @default(3)\n isActive Boolean @default(true)\n /// Labels from Setting `__list__tags`, assigned on the product form. The\n /// storefront shows them on list cards only (not the product detail page).\n tags String[] @default([])\n createdAt DateTime @default(now())\n\n /// Stock of the linked کارساخته as last read from the accounting software\n /// (D27). Weight for gram-type items, count for count-type ones — whichever\n /// the software reports. At zero or below the product is unavailable in the\n /// app (pre-order variants excepted). Null = not linked or never synced.\n accountingStockWeight Decimal? @db.Decimal(14, 4)\n accountingStockCount Decimal? @db.Decimal(14, 4)\n accountingStockAt DateTime?\n\n variants ProductVariant[]\n images ProductImage[]\n collections CollectionProduct[]\n comments Comment[]\n promotions Promotion[]\n allocationItems BranchAllocationItem[]\n favoritedBy CustomerFavorite[]\n\n // Storefront paging (owner: the real catalogue reaches ~16k products, so\n // GET /catalog/products must page rather than return everything). This model\n // had NO index at all, so every storefront query was a full scan and paging\n // alone would not have been any faster.\n //\n // The composite matches the list's own shape: filter on isActive, order by\n // createdAt — Postgres can satisfy both from this one index, including the\n // OFFSET walk. The other two serve the category and brand filters.\n @@index([isActive, createdAt])\n @@index([categoryId])\n @@index([brandId])\n}\n\nmodel ProductImage {\n id String @id @default(cuid())\n productId String\n product Product @relation(fields: [productId], references: [id])\n url String\n sortOrder Int @default(0)\n /// Legacy had 4 distinct upload slots (تصویر شاخص / تصویر شاخص موبایل /\n /// گالری تصاویر سایت / گالری تصاویر موبایل) — GALLERY is the default so\n /// existing rows and any generic \"just attach an image\" caller keep working.\n role ProductImageRole @default(GALLERY)\n\n /// Variants that display this image. A gallery image may back several\n /// variants (one photo, several weights), which is why this is a plain\n /// one-to-many and not a join table.\n variants ProductVariant[]\n\n // The storefront list filters on `images: { some: {} }` and includes the\n // gallery ordered by sortOrder, both per product. Unindexed, each one scanned\n // the whole table.\n @@index([productId, sortOrder])\n}\n\nenum ProductImageRole {\n FEATURED\n FEATURED_MOBILE\n GALLERY\n GALLERY_MOBILE\n}\n\nmodel ProductVariant {\n id String @id @default(cuid())\n productId String\n product Product @relation(fields: [productId], references: [id])\n title String\n sku String? @unique\n /// Base/raw weight before making charge (\"rash weight\").\n rashWeightGrams Decimal @db.Decimal(14, 4)\n /// Default making-charge percentage applied on top of rash weight.\n defaultWagePercent Decimal @db.Decimal(6, 3)\n /// Legacy ProductVariant.qty — on-hand stock. The cart refuses a variant with\n /// qty 0 unless it is flagged pre-order, so both fields are required for that\n /// guard to work (see apps/admin-panel/src/stores/cart.ts).\n qty Int @default(0)\n /// Legacy is_pre_order: orderable even at zero stock.\n isPreOrder Boolean @default(false)\n isActive Boolean @default(true)\n\n /// Legacy color enum: 0=سفید, 1=زرد, 2=شکلاتی, 3=رزگلد\n color Int?\n /// Legacy rial_pay — fixed Rial making charge per variant.\n rialWage Decimal? @db.Decimal(18, 0)\n /// Legacy details — short description for variant.\n details String? @db.Text\n /// Legacy description — full description for variant.\n description String? @db.Text\n\n /// The gallery image shown for this variant, picked from its own product's\n /// images — never a re-uploaded copy. onDelete: SetNull because dropping an\n /// image must never cascade into the variant: OrderItem rows reference\n /// variants, so losing one would break order history.\n imageId String?\n image ProductImage? @relation(fields: [imageId], references: [id], onDelete: SetNull)\n\n orderItems OrderItem[]\n\n @@index([imageId])\n // Every storefront product carries its variants, so this include ran once per\n // product with no index to use. The composite covers the `isActive: true`\n // filter the list applies to them.\n @@index([productId, isActive])\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Orders — stock orders (debt-bearing)\n// ─────────────────────────────────────────────────────────────────────────\n\n/// Customer-confirm state for an admin-proposed order edit (not a pipeline status).\nenum OrderRevisionStatus {\n NONE\n AWAITING_CUSTOMER\n}\n\nmodel Order {\n id String @id @default(cuid())\n orderNumber String @unique\n customerId String\n customer Customer @relation(fields: [customerId], references: [id])\n branchId String?\n branch Branch? @relation(fields: [branchId], references: [id])\n /// Which sales channel placed this order — see OrderChannel.\n channel OrderChannel @default(RETAIL)\n status OrderStatus @default(PLACED)\n\n /// Pending admin edit awaiting customer confirm (or admin force/discard).\n revisionStatus OrderRevisionStatus @default(NONE)\n\n /// Total gold weight incl. wage across all items (\"allGram\" / order.w).\n totalGoldWeightGrams Decimal @db.Decimal(14, 4)\n /// Pure making-charge weight component (totalGoldWeightGrams minus raw weight sum).\n wageWeightGrams Decimal @db.Decimal(14, 4)\n /// Flat Rial charge independent of gold price (e.g. stones) — legacy rial_input.\n flatRialCharge Decimal @default(0) @db.Decimal(20, 2)\n\n isSuspendedOverCreditLimit Boolean @default(false)\n deliveredAt DateTime? // setting this is what triggers debt recognition\n\n /// The sales expert this order is credited to, fixed when it is placed:\n /// the customer's referring expert AT THAT MOMENT. Legacy `orders.reagent_id`,\n /// set once at creation (ApiMobileController.php:601) and never moved, so a\n /// customer changing expert later does not move past sales or commission\n /// (owner ruling 2026-10-08). «میزان فروش» counts from here, never from the\n /// customer's current referrer.\n salesAgentId String?\n salesAgent AdminUser? @relation(\"OrderSalesAgent\", fields: [salesAgentId], references: [id], onDelete: SetNull)\n\n /// History only: a legacy order whose `reagent_id` named a customer who is\n /// not a sales expert (one such customer, 17 orders in 2022). Legacy counted\n /// those orders in that customer's own «میزان فروش»; this keeps that figure\n /// exact. Never set for a new order.\n referrerCustomerId String?\n referrerCustomer Customer? @relation(\"OrderReferrerCustomer\", fields: [referrerCustomerId], references: [id], onDelete: SetNull)\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n items OrderItem[]\n statusEvents OrderStatusEvent[]\n ledgerEntries LedgerEntry[]\n revisions OrderRevision[]\n convertedFromPreOrder PreOrder?\n\n @@index([customerId])\n @@index([status])\n @@index([revisionStatus])\n @@index([salesAgentId])\n @@index([referrerCustomerId])\n}\n\n/// Proposed line-item edit for an Order. Live until applied or discarded.\n/// While pending, Order.revisionStatus = AWAITING_CUSTOMER and charged figures\n/// stay on the current Order until the customer confirms (or admin force-applies).\nmodel OrderRevision {\n id String @id @default(cuid())\n orderId String\n order Order @relation(fields: [orderId], references: [id], onDelete: Cascade)\n\n /// Proposed lines: [{ productVariantId, quantity, rashWeightGramsSnapshot,\n /// wagePercentSnapshot, discountPercentSnapshot, computedWeightGrams, flatRialCharge }]\n items Json\n\n totalGoldWeightGrams Decimal @db.Decimal(14, 4)\n wageWeightGrams Decimal @db.Decimal(14, 4)\n flatRialCharge Decimal @default(0) @db.Decimal(20, 2)\n\n proposedByAdminId String? @map(\"proposedByAdminUserId\")\n note String?\n\n /// null | ACCEPTED | REJECTED — reject leaves AWAITING_CUSTOMER for admin decision.\n customerDecision String?\n customerDecidedAt DateTime?\n\n appliedAt DateTime?\n discardedAt DateTime?\n\n createdAt DateTime @default(now())\n\n @@index([orderId])\n @@index([createdAt])\n}\n\nmodel OrderItem {\n id String @id @default(cuid())\n orderId String\n order Order @relation(fields: [orderId], references: [id])\n productVariantId String\n productVariant ProductVariant @relation(fields: [productVariantId], references: [id])\n quantity Int\n\n // Snapshots at order time — never re-read from ProductVariant after placement.\n rashWeightGramsSnapshot Decimal @db.Decimal(14, 4)\n wagePercentSnapshot Decimal @db.Decimal(6, 3)\n discountPercentSnapshot Decimal @default(0) @db.Decimal(6, 3)\n /// computed: rash*(1 + (wagePercent-discount)/100)\n computedWeightGrams Decimal @db.Decimal(14, 4)\n flatRialCharge Decimal @default(0) @db.Decimal(20, 2)\n}\n\nmodel OrderStatusEvent {\n id String @id @default(cuid())\n orderId String\n order Order @relation(fields: [orderId], references: [id])\n fromStatus OrderStatus?\n toStatus OrderStatus\n note String?\n actorAdminId String? @map(\"actorAdminUserId\")\n actorAdmin Admin? @relation(fields: [actorAdminId], references: [id])\n createdAt DateTime @default(now())\n\n @@index([orderId])\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Pre-orders — custom manufacturing requests (not debt-bearing until converted)\n// ─────────────────────────────────────────────────────────────────────────\n\nmodel PreOrder {\n id String @id @default(cuid())\n customerId String\n customer Customer @relation(fields: [customerId], references: [id])\n cityId String?\n city City? @relation(fields: [cityId], references: [id])\n workshopId String?\n workshop Workshop? @relation(fields: [workshopId], references: [id])\n status PreOrderStatus @default(PLACED)\n\n designImageUrl String?\n colorName String?\n sizeSpec String?\n stoneColor String?\n minaColor String?\n estimatedWeightGrams Decimal? @db.Decimal(14, 4)\n estimatedPriceRial Decimal? @db.Decimal(20, 2)\n description String?\n\n /// Once priced, an admin converts this into a real (debt-bearing) Order.\n convertedOrderId String? @unique\n convertedOrder Order? @relation(fields: [convertedOrderId], references: [id])\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n statusEvents PreOrderStatusEvent[]\n\n @@index([customerId])\n}\n\nmodel PreOrderStatusEvent {\n id String @id @default(cuid())\n preOrderId String\n preOrder PreOrder @relation(fields: [preOrderId], references: [id])\n /// Field-level diff, e.g. {\"status\": {\"old\": \"PLACED\", \"new\": \"ADMIN_APPROVED\"}}\n changes Json\n actorAdminId String? @map(\"actorAdminUserId\")\n actorAdmin Admin? @relation(fields: [actorAdminId], references: [id])\n ipAddress String?\n createdAt DateTime @default(now())\n\n @@index([preOrderId])\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Accounting — the dual-currency ledger (core of the system)\n// ─────────────────────────────────────────────────────────────────────────\n\nmodel LedgerEntry {\n id String @id @default(cuid())\n customerId String\n customer Customer @relation(fields: [customerId], references: [id])\n\n currency LedgerCurrency\n direction LedgerDirection\n sourceType LedgerSourceType\n /// Always positive; direction determines the sign applied to the customer balance.\n amount Decimal @db.Decimal(20, 4)\n\n /// Purity of the physical instrument, for REPAYMENT_MELTED_GOLD (e.g. 750, 916).\n karatPerMille Int?\n /// Gold price/gram at conversion time, for REPAYMENT_CASH.\n pricePerGramRialAtEntry Decimal? @db.Decimal(20, 2)\n\n orderId String?\n order Order? @relation(fields: [orderId], references: [id])\n\n /// Pending entries don't count toward the cached customer balance until confirmed.\n confirmed Boolean @default(false)\n confirmedAt DateTime?\n postedByAdminId String? @map(\"postedByAdminUserId\")\n postedByAdmin Admin? @relation(fields: [postedByAdminId], references: [id])\n\n /// Instrument metadata from the legacy \"cash\" document form. Which fields are\n /// filled depends on sourceType: a melted-gold receipt carries lab/hallmark and\n /// the pre-normalization weight, a cheque carries the account and bank, and a\n /// transfer carries its destination.\n /// Legacy columns: lab, ang, account_name, bank_name, to, original_value, recive_date.\n labName String?\n hallmark String?\n accountName String?\n bankName String?\n transferTo String?\n /// Weight as handed over, BEFORE karat normalization (legacy original_value).\n originalValue Decimal? @db.Decimal(14, 4)\n /// Rial amount for cash/cheque documents (legacy price).\n priceRial Decimal? @db.Decimal(20, 2)\n receivedAt DateTime?\n\n note String?\n createdAt DateTime @default(now())\n\n @@index([customerId, currency])\n @@index([orderId])\n}\n\n/// Replaces legacy WebServiceGold / ConfigStatic.gold_price — timestamped price feed.\nmodel GoldPriceQuote {\n id String @id @default(cuid())\n karatPerMille Int\n pricePerGramRial Decimal @db.Decimal(20, 2)\n source String\n quotedAt DateTime @default(now())\n\n @@index([karatPerMille, quotedAt])\n}\n\n/// Time-limited gold cashback bonus — replaces the legacy Rooyesh\\Wallet gold credit.\nmodel WalletBonus {\n id String @id @default(cuid())\n customerId String\n customer Customer @relation(fields: [customerId], references: [id])\n orderId String?\n goldGrams Decimal @db.Decimal(14, 4)\n grantedAt DateTime @default(now())\n expiresAt DateTime\n consumedAt DateTime?\n isActive Boolean @default(true)\n\n @@index([customerId, isActive])\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Admin ACL — faithful port of the legacy granular permission model.\n//\n// Legacy (henza_server):\n// Schema::create('permission', function (Blueprint $table) {\n// $table->string('rid');\n// $table->integer('ut');\n// $table->primary(['rid' , 'ut']);\n// });\n//\n// Permissions attach to the USER TYPE (`ut`), never to an individual user, so\n// every admin of a given type shares one permission set. `ut` pointed at a row\n// in the legacy `config_static` lookup table; UserType is that table, narrowed\n// to the admin-user-type rows it was actually used for.\n//\n// A `rid` is a dotted permission id such as \"persons.list.client.omde\". The\n// frontend expands each stored rid into its ancestors at runtime via\n// checkParent() — see apps/admin-panel/src/stores/users.ts. Only the 58 leaf\n// rids the routers actually gate are seeded; ancestors are derived, not stored.\n// ─────────────────────────────────────────────────────────────────────────\n\nmodel UserType {\n /// Legacy `permission.ut` / `users.ut` — an integer, kept as the PK so seeded\n /// rows keep their legacy identity rather than getting new cuids.\n id Int @id\n title String\n isActive Boolean @default(true)\n createdAt DateTime @default(now())\n\n permissions Permission[]\n adminUsers AdminUser[]\n admins Admin[]\n\n @@map(\"user_type\")\n}\n\nmodel Permission {\n /// Dotted permission id, e.g. \"order.list\", \"persons.list.client.omde\".\n rid String\n userTypeId Int\n userType UserType @relation(fields: [userTypeId], references: [id], onDelete: Cascade)\n\n /// Legacy's composite primary key (rid, ut), preserved exactly.\n @@id([rid, userTypeId])\n @@index([userTypeId])\n @@map(\"permission\")\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Product comments / reviews — legacy `comment` table (App\\Models\\Comment),\n// moderated from views/customer/Comments/Comments.vue.\n//\n// Legacy fillable: product_id, comment, reply_to, sts, customer_id\n// Legacy Comment::$STS = [1 => 'در انتظار تایید', 2 => 'تایید شده', 3 => 'رد شده']\n// which is represented here as an enum rather than a magic integer.\n// ─────────────────────────────────────────────────────────────────────────\n\nenum CommentStatus {\n PENDING // 1 — در انتظار تایید\n APPROVED // 2 — تایید شده\n REJECTED // 3 — رد شده\n}\n\nmodel Comment {\n id String @id @default(cuid())\n productId String\n product Product @relation(fields: [productId], references: [id])\n customerId String\n customer Customer @relation(fields: [customerId], references: [id])\n body String\n status CommentStatus @default(PENDING)\n\n /// Legacy `reply_to`: a staff reply threads under the comment it answers.\n replyToId String?\n replyTo Comment? @relation(\"CommentReplies\", fields: [replyToId], references: [id])\n replies Comment[] @relation(\"CommentReplies\")\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([productId])\n @@index([customerId])\n @@index([status])\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Settings — replaces legacy `config_static`, a key/value table the admin\n// panel read and wrote through endpoints like /wallet/config and\n// /const/__list__ut. Values are stored as JSON so a setting can hold a scalar,\n// an object, or the dynamic option lists legacy kept under `__list__*` keys.\n// ─────────────────────────────────────────────────────────────────────────\n\nmodel Setting {\n key String @id\n value Json\n updatedAt DateTime @updatedAt\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Accounting integration (D27) — the shop's accounting software, Tahesab or\n// Zarrin, chosen in the admin panel. Configuration lives in the Setting row\n// `accounting.config` (never served by the generic `const` routes). Plan:\n// docs/ACCOUNTING-INTEGRATION-PLAN.md.\n//\n// `provider` is the driver name ('tahesab' | 'zarrin'), a plain string like\n// SMS_PROVIDER so a new driver needs no migration. Links are per provider, so\n// switching provider and back loses nothing.\n// ─────────────────────────────────────────────────────────────────────────\n\nenum AccountingEntityType {\n CUSTOMER\n PRODUCT\n}\n\n/// One app row ↔ one record in the accounting software (customer account or\n/// کارساخته).\nmodel AccountingLink {\n id String @id @default(cuid())\n provider String\n entityType AccountingEntityType\n entityId String\n /// The record's code in the accounting software (Tahesab Moshtari_Code /\n /// Zarrin idHesab; for products the Zarrin idKar or the Tahesab Name_Kar).\n externalCode String\n externalName String?\n /// How the link came to be: LINKED (matched by mobile/name), IMPORTED (app\n /// row created from the accounting record), PUSHED (accounting record created\n /// from the app row) or MANUAL (an admin typed the code).\n origin String\n /// The record as last read, for display only.\n snapshot Json?\n syncedAt DateTime @default(now())\n createdAt DateTime @default(now())\n\n @@unique([provider, entityType, entityId])\n @@unique([provider, entityType, externalCode])\n @@index([entityType, entityId])\n}\n\nenum AccountingOutboxKind {\n CUSTOMER_PUSH\n PRODUCT_PUSH\n ORDER_DOCUMENT\n ORDER_DOCUMENT_DELETE\n}\n\nenum AccountingOutboxStatus {\n PENDING\n /// A call was in flight. Found at startup, it means the process died mid-call\n /// and the outcome is unknown — see AccountingOutboxWorker.\n SENDING\n SENT\n FAILED\n /// Unsafe to retry automatically (e.g. a Zarrin call timed out: Zarrin has no\n /// idempotency key, so a blind retry could post the document twice).\n NEEDS_REVIEW\n /// Closed by an admin from the log screen.\n RESOLVED\n}\n\n/// Work to push to the accounting software. Written in the SAME transaction as\n/// the change that causes it, so an outage of the accounting software never\n/// loses an event and never blocks the app.\nmodel AccountingOutbox {\n id String @id @default(cuid())\n provider String\n kind AccountingOutboxKind\n entityId String\n status AccountingOutboxStatus @default(PENDING)\n attempts Int @default(0)\n nextAttemptAt DateTime @default(now())\n lastError String?\n /// What the accounting software returned as the document/record id.\n externalRef String?\n /// Per-step progress of multi-call jobs (a Zarrin document is one call per\n /// line), so a failure resumes where it stopped.\n progress Json?\n /// Last request/response, for the log screen. Never contains the token.\n lastRequest Json?\n lastResponse Json?\n sentAt DateTime?\n resolvedById String?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([status, nextAttemptAt])\n @@index([kind, entityId])\n}\n\n/// Something a pull found that needs a human: an account with no mobile, two\n/// accounts sharing one mobile, a کارساخته group with no category mapping.\nmodel AccountingIssue {\n id String @id @default(cuid())\n provider String\n kind String\n externalCode String\n entityId String?\n message String\n data Json?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n resolvedAt DateTime?\n\n @@unique([provider, kind, externalCode])\n @@index([resolvedAt])\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Promotions / discounts — legacy views/promotion/*, served by\n// PromotionController (`product/variant/promotion`). The redesigned schema had\n// no promotion concept at all; this models what the legacy forms actually\n// collect.\n// ─────────────────────────────────────────────────────────────────────────\n\n/// Legacy Promotion.type — what the discount is scoped to.\nenum PromotionScope {\n PRODUCT // 1 محصولات\n CATEGORY // 2 دسته بندی\n CUSTOMER // 3 مشتری\n BRAND // 4 برند\n}\n\n/// Legacy Promotion.use_only — how often a customer may redeem it.\nenum PromotionUsage {\n ONCE // 1 فقط یکبار\n UNTIL_END_DATE // 2 تا تاریخ پایان\n}\n\nmodel Promotion {\n id String @id @default(cuid())\n title String\n description String?\n scope PromotionScope @default(PRODUCT)\n usage PromotionUsage @default(ONCE)\n /// Percentage off, 0-100 (legacy discount_percent).\n discountPercent Decimal @db.Decimal(6, 3)\n isActive Boolean @default(true)\n /// Which storefront it shows on, mirroring Product.showType (legacy platform).\n platform Int @default(3)\n\n startsAt DateTime?\n endsAt DateTime?\n\n /// Exactly one of these is populated, per `scope`.\n productId String?\n product Product? @relation(fields: [productId], references: [id])\n categoryId String?\n category Category? @relation(fields: [categoryId], references: [id])\n customerId String?\n customer Customer? @relation(fields: [customerId], references: [id])\n brandId String?\n brand Brand? @relation(fields: [brandId], references: [id])\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([scope, isActive])\n}\n\n/// Legacy \"ignore\" table (views/offersIgnore) — specific products, categories,\n/// customers or brands excluded from the automatic discount engine.\n/// Legacy posts { type, item_id[] }: \"type\" reuses the promotion scope codes\n/// (1 محصولات | 2 دسته بندی | 3 مشتری | 4 برند) and \"itemId\" is the excluded row.\nmodel PromotionExclusion {\n id String @id @default(cuid())\n type Int\n itemId String\n createdAt DateTime @default(now())\n\n @@unique([type, itemId])\n @@index([type])\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Branch stock allocation — legacy views/invoice/* (\"فاکتور انتقال\"), served by\n// BranchController as `branch/product`. Despite the screen being called an\n// invoice, it is not a sales document: it records which products head office\n// allocated to a branch, and who allocated them.\n// ─────────────────────────────────────────────────────────────────────────\n\nmodel BranchAllocation {\n id String @id @default(cuid())\n branchId String\n branch Branch @relation(fields: [branchId], references: [id])\n\n /// Legacy `allocator_user` — the admin who filed the allocation.\n allocatorAdminId String? @map(\"allocatorAdminUserId\")\n allocatorAdmin Admin? @relation(\"AllocationAuthor\", fields: [allocatorAdminId], references: [id])\n\n note String?\n createdAt DateTime @default(now())\n\n items BranchAllocationItem[]\n\n @@index([branchId])\n}\n\nmodel BranchAllocationItem {\n id String @id @default(cuid())\n allocationId String\n allocation BranchAllocation @relation(fields: [allocationId], references: [id], onDelete: Cascade)\n productId String\n product Product @relation(fields: [productId], references: [id])\n /// Weight snapshot at allocation time, so later catalog edits do not rewrite history.\n weightGrams Decimal? @db.Decimal(14, 4)\n\n @@unique([allocationId, productId])\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Messaging + audit — legacy views/sms, views/notify, views/newsletters and\n// views/statics. None of these had a model in the redesigned schema.\n// ─────────────────────────────────────────────────────────────────────────\n\n/// Who an SMS or notification was aimed at. Legacy's sms/create offered these\n/// audiences, each gated by its own rid (sms.create.all, .omde, .single, ...).\nenum MessageAudience {\n SINGLE_NUMBER // یک شماره\n MULTIPLE_NUMBERS // چند شماره\n ALL_CUSTOMERS // همه\n WHOLESALE_CUSTOMERS // عمده\n RETAIL_CUSTOMERS // تک\n SALES_AGENTS // کارشناسان فروش\n}\n\nmodel SmsMessage {\n id String @id @default(cuid())\n audience MessageAudience\n /// Comma-separated recipients for the SINGLE/MULTIPLE audiences.\n recipients String?\n body String\n /// How many numbers the send actually resolved to.\n sentCount Int @default(0)\n\n sentByAdminId String? @map(\"sentByAdminUserId\")\n sentByAdmin Admin? @relation(\"SmsAuthor\", fields: [sentByAdminId], references: [id])\n\n createdAt DateTime @default(now())\n\n @@index([createdAt])\n}\n\nmodel Notification {\n id String @id @default(cuid())\n title String\n body String\n audience MessageAudience @default(ALL_CUSTOMERS)\n\n sentByAdminId String? @map(\"sentByAdminUserId\")\n sentByAdmin Admin? @relation(\"NotificationAuthor\", fields: [sentByAdminId], references: [id])\n\n createdAt DateTime @default(now())\n\n recipients NotificationRecipient[]\n\n @@index([createdAt])\n}\n\n/// Per-customer delivery + read state — legacy `GET notify/read/{id}`.\nmodel NotificationRecipient {\n id String @id @default(cuid())\n notificationId String\n notification Notification @relation(fields: [notificationId], references: [id], onDelete: Cascade)\n customerId String\n customer Customer @relation(fields: [customerId], references: [id])\n readAt DateTime?\n\n @@unique([notificationId, customerId])\n @@index([customerId, readAt])\n}\n\n/// Legacy views/newsletters — the mailing-list signups collected by the site.\nmodel NewsletterSubscriber {\n id String @id @default(cuid())\n email String?\n mobile String?\n createdAt DateTime @default(now())\n\n @@unique([email])\n @@unique([mobile])\n}\n\n/// Legacy views/statics — the customer activity log the \"آمار\" screen reads\n/// (`log/list/customer`, `log/ago/{customerId}`).\nmodel CustomerActivityLog {\n id String @id @default(cuid())\n customerId String\n customer Customer @relation(fields: [customerId], references: [id])\n /// Free-form action key, e.g. 'login', 'order.placed', 'profile.updated'.\n action String\n detail String?\n createdAt DateTime @default(now())\n\n @@index([customerId, createdAt])\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Uploads — replaces the legacy MyUpload / SingleUploadInput widgets, which\n// POSTed to a file endpoint and stored the returned URL on the owning record.\n// Ports of those forms currently take a URL by hand; this gives them a real\n// destination to upload to.\n// ─────────────────────────────────────────────────────────────────────────\n\nmodel UploadedFile {\n id String @id @default(cuid())\n /// Public URL the stored file is served from.\n url String\n originalName String\n mimeType String\n sizeBytes Int\n /// Free-form tag for what the file belongs to, e.g. 'product', 'category',\n /// 'customer.nationalId'. Kept loose so a new form needs no schema change.\n purpose String?\n\n uploadedByAdminId String? @map(\"uploadedByAdminUserId\")\n uploadedByAdmin Admin? @relation(\"FileUploader\", fields: [uploadedByAdminId], references: [id])\n\n createdAt DateTime @default(now())\n customerAvatars Customer[] @relation(\"CustomerAvatar\")\n adminUserAvatars AdminUser[] @relation(\"AdminUserAvatar\")\n\n @@index([purpose])\n}\n\n/// One OTP login challenge for a customer.\n///\n/// Ports henza_server's flow (ApiMobileController.php:39-78), where userAuth\n/// generated rand(1000,9999), stored it on the customer row as `send_password`\n/// and sent it by SMS, and userVerfiy compared the submitted code against it\n/// (mismatch -> HTTP 422).\n///\n/// Three deliberate improvements over the reference, approved by the user\n/// (docs/parity/DECISIONS.md D6 and T1):\n/// 1. the code is stored as a bcrypt hash, never in plain text — the\n/// reference kept it readable in a customer column;\n/// 2. it expires (`expiresAt`) — the reference's code stayed valid forever;\n/// 3. attempts are counted and the challenge locks out — the reference had\n/// no limit at all.\n/// The parity behaviour itself is the code comparison and the rejection.\nmodel CustomerOtp {\n id String @id @default(cuid())\n /// Normalised to English digits before storing, as the reference does with\n /// Utility::faTOen() on both send and verify.\n mobile String\n customerId String\n customer Customer @relation(fields: [customerId], references: [id], onDelete: Cascade)\n\n /// bcrypt hash of the 4-digit code. Never the code itself.\n codeHash String\n expiresAt DateTime\n /// Failed verify attempts against THIS challenge.\n attempts Int @default(0)\n /// Set when the code is accepted, so one challenge cannot be reused.\n consumedAt DateTime?\n\n /// Kept for the per-IP send throttle.\n requestIp String?\n createdAt DateTime @default(now())\n\n @@index([mobile, createdAt])\n @@index([customerId])\n @@index([expiresAt])\n}\n\n/// Bespoke migration ledger left by the EARLIER, pre-Prisma port.\n///\n/// It predates Prisma Migrate in this repo and holds 12 historical rows\n/// (`0001_init.sql`, `0002_admin_schema.sql`, `seed:initial`, and the early\n/// `2026091…` migrations). It is the only record of how that port was applied,\n/// so it is **kept and never written to or deleted from** (DEAD-07).\n///\n/// It is declared here purely so `prisma migrate diff` stops proposing\n/// `DROP TABLE \"_goldbank_migrations\"` — an undeclared table reads as drift.\n/// `@@ignore` keeps it out of Prisma Client: nothing in the application should\n/// ever read or write it, and Prisma Migrate will not manage its shape either.\n///\n/// Prisma's own ledger is `_prisma_migrations`, which is separate and is never\n/// edited by hand (D14).\nmodel goldbank_migrations {\n name String @id\n appliedAt DateTime @default(now()) @map(\"applied_at\") @db.Timestamptz(6)\n\n @@map(\"_goldbank_migrations\")\n @@ignore\n}\n", - "inlineSchemaHash": "c52b2d6375d403f686a8ae11239e17fb11b10aa2d23a5b856dcfdce24f83247f", + "inlineSchema": "// Gold Banking System — core schema\n// Canonical accounting model: legacy \"System A\" gram ledger (see migration notes).\n// The external \"Tahesab\" service is retired — LedgerEntry is the sole source of truth.\n// All money/weight fields use Decimal, never Float, to avoid rounding drift in debt math.\n\ngenerator client {\n provider = \"prisma-client-js\"\n // native = local Windows/macOS; debian-openssl-3.0.x = node:20-bookworm-slim (Arvan)\n binaryTargets = [\"native\", \"debian-openssl-3.0.x\"]\n}\n\ndatasource db {\n provider = \"postgresql\"\n url = env(\"DATABASE_URL\")\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Enums\n// ─────────────────────────────────────────────────────────────────────────\n\nenum AdminRole {\n SUPER_ADMIN\n SYSTEM_APPROVER // legacy: تایید مدیر سیستم\n SALES_EXPERT // legacy Customer.type=1, also acts as a referral \"reagent\"\n WORKSHOP_SUPERVISOR\n ACCOUNTANT\n}\n\n/// Legacy Customer.type — what kind of wholesale customer this is. Values and\n/// labels taken verbatim from bulkCustomer.vue's userTypes list.\n///\n/// SALES_AGENT is a LEGACY value only: legacy stored a sales agent as a\n/// Customer row with type=1, but the redesigned system models a sales agent\n/// as an AdminUser (role SALES_EXPERT) instead — see admin-users.service.ts\n/// and admin-customers.service.ts's listReagents()/create(). No Customer row\n/// should be created with kind SALES_AGENT going forward; the value is kept\n/// only so legacyTypeToKind()/kindToLegacyType() stay total functions and any\n/// already-migrated data keeps a readable label.\n///\n/// RETAIL marks a \"تک\" (single/retail) customer — legacy kept these in an\n/// entirely separate table (SingleCustomer/`login`) that could never contain\n/// a wholesale/agent/shopkeeper/banker row. The redesigned schema folded both\n/// into one Customer model, so this value is what listSingle() now filters on\n/// to reproduce that same separation.\nenum CustomerKind {\n SALES_AGENT // legacy 1 کارشناس فروش — superseded by AdminRole.SALES_EXPERT, do not use for new rows\n APP_SHOPKEEPER // 2 مغازه دار اپلیکیشن\n WALK_IN_SHOPKEEPER // 3 مغازه دار حضوری\n BANKER // 4 بنکدار\n WORKSHOP_SUPERVISOR // 5 سرپرست کارگاه\n RETAIL // مشتری تک — legacy SingleCustomer\n}\n\nenum VerificationStep {\n UNVERIFIED\n STEP_ONE_SUBMITTED\n STEP_TWO_SUBMITTED\n VERIFIED\n\n /// Legacy had THREE states per step, not two\n /// (MajorCustomerController.php:106-135): 1 = awaiting, 2 = approved,\n /// 3 = REJECTED. Mapping rejected customers to UNVERIFIED would put closed\n /// cases back in the review queue, so the owner ruled it out (2026-10-07).\n /// 14 legacy rows land here; see Customer.verificationRejectionReason.\n REJECTED\n}\n\n/// Legacy kept retail and wholesale orders in two SEPARATE tables\n/// (orders_orders vs orders). The redesigned schema has one Order model, so the\n/// distinction lives here instead.\nenum OrderChannel {\n RETAIL // تک فروشی\n WHOLESALE // عمده فروشی\n}\n\nenum OrderStatus {\n SUSPENDED // credit limit (goldCreditLimitGrams) exceeded at placement\n PLACED\n ADMIN_APPROVED\n SOURCING\n PREPARING\n DELIVERED_TO_AGENT\n DELIVERED_TO_CUSTOMER // debt recognition point — mirrors legacy sts>4\n CANCELLED\n}\n\nenum PreOrderStatus {\n PLACED\n ADMIN_APPROVED\n WORKSHOP_APPROVED\n READY_TO_SHIP\n DELIVERED\n CANCELLED\n}\n\nenum LedgerCurrency {\n GOLD_GRAM\n RIAL\n}\n\nenum LedgerDirection {\n DEBIT // increases what the customer owes\n CREDIT // decreases what the customer owes\n}\n\nenum LedgerSourceType {\n ORDER_STOCK\n ORDER_PRE_ORDER\n REPAYMENT_MELTED_GOLD // karat-normalized: amount * karatPerMille / 750\n REPAYMENT_TRANSFER\n REPAYMENT_CHEQUE\n REPAYMENT_CASH // price-per-gram-normalized via pricePerGramRialAtEntry\n WALLET_BONUS\n ADJUSTMENT\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Identity\n// ─────────────────────────────────────────────────────────────────────────\n\n/// Legacy `cities` is a tree (country > province > city > district) and so is\n/// this: a city hangs under its `parent`. In the admin pickers a top-level row\n/// (the country) is a heading, not selectable (henza_admin citiesModel.js:38).\nmodel City {\n id String @id @default(cuid())\n name String\n parentId String?\n parent City? @relation(\"CityTree\", fields: [parentId], references: [id], onDelete: Restrict)\n children City[] @relation(\"CityTree\")\n /// Legacy cities.percent / percent_aux — per-city wage surcharges the city\n /// screen edits through GET cities/get-percent/{id} and get-percent-aux/{id}.\n percent Decimal? @db.Decimal(6, 3)\n percentAux Decimal? @db.Decimal(6, 3)\n customers Customer[]\n addresses CustomerAddress[]\n branches Branch[]\n preOrders PreOrder[]\n salesExpertProfiles SalesExpertProfile[]\n\n @@index([parentId])\n}\n\n/// A staff account for the ADMIN PANEL — and nothing else.\n///\n/// Split out of AdminUser (which now holds sales experts only) so that:\n/// * the same mobile can be an admin AND a sales expert — they are two\n/// separate roles, each unique only within its own table;\n/// * the expert table (production: ~12,000 rows) is never written by panel\n/// staff management.\n/// Migration 20261026120000_split_admin_table copies the existing non-expert\n/// AdminUser rows here WITH THEIR IDS, so issued panel tokens and every\n/// \"who did this\" column keep resolving. The old rows are left in AdminUser,\n/// dormant; no code reads them as admins any more.\n///\n/// ⚠️ fullName/firstName/lastName are kept in sync by the DB trigger\n/// `admin_sync_full_name_trg` (it shares the function admin_user_sync_full_name) — same semantics as AdminUser: the parts win.\nmodel Admin {\n id String @id @default(cuid())\n\n fullName String\n firstName String?\n lastName String?\n\n mobile String @unique\n passwordHash String\n /// Never SALES_EXPERT — that role lives in AdminUser. Enforced in\n /// AdminUsersService, not in the database, so the enum stays shared.\n role AdminRole\n userTypeId Int?\n userType UserType? @relation(fields: [userTypeId], references: [id])\n branchId String?\n branch Branch? @relation(fields: [branchId], references: [id])\n isActive Boolean @default(true)\n createdAt DateTime @default(now())\n\n supervisedWorkshops Workshop[] @relation(\"WorkshopSupervisor\")\n branchAllocations BranchAllocation[] @relation(\"AllocationAuthor\")\n postedLedgerEntries LedgerEntry[]\n orderStatusEvents OrderStatusEvent[]\n preOrderStatusEvents PreOrderStatusEvent[]\n sentSmsMessages SmsMessage[] @relation(\"SmsAuthor\")\n sentNotifications Notification[] @relation(\"NotificationAuthor\")\n uploadedFiles UploadedFile[] @relation(\"FileUploader\")\n\n /// Issued admin-panel tokens, recorded only while session tracking is on\n /// (AUTH_SESSION_TRACKING, or implicitly whenever the IAM is enabled) so a\n /// token can be revoked before it expires. See AdminSession.\n sessions AdminSession[]\n\n @@index([role])\n @@index([userTypeId])\n @@index([firstName])\n @@index([lastName])\n}\n\n/// A SALES EXPERT (role SALES_EXPERT). Panel staff live in `Admin`; rows here with\n/// any other role are pre-split leftovers and are ignored by the code.\nmodel AdminUser {\n id String @id @default(cuid())\n\n /// ⚠️ Kept in sync BY A DATABASE TRIGGER — `admin_user_sync_full_name`, from\n /// migration 20260922180000. Prisma cannot see it, so a write here may store\n /// something other than what you passed:\n ///\n /// * write the parts -> fullName is rebuilt as \"first last\"\n /// * write fullName only -> the parts are re-derived from it\n /// * write BOTH in one update -> THE PARTS WIN; the submitted fullName is\n /// discarded\n ///\n /// Re-read after writing if you need the stored value. Same arrangement as\n /// Customer (D0 requirement 7 — the split applies to ALL admins, not only\n /// sales experts).\n fullName String\n firstName String?\n lastName String?\n\n mobile String @unique\n passwordHash String\n role AdminRole\n /// Legacy `users.ut`. Granular ACL lives here (Permission rows hang off UserType);\n /// the coarse `role` enum above is retained for the business rules that already\n /// switch on it. Nullable so existing seeded admins remain valid.\n userTypeId Int?\n userType UserType? @relation(fields: [userTypeId], references: [id])\n branchId String?\n branch Branch? @relation(fields: [branchId], references: [id])\n wagePercent Decimal? @db.Decimal(6, 3) // legacy Customer.percent, commission on referred orders\n isActive Boolean @default(true)\n createdAt DateTime @default(now())\n\n /// Legacy stored a sales agent as a `customers` row with type=1, so\n /// ReagentCustomer.vue's shared form collected these alongside the\n /// wholesale-customer fields. A sales agent is now an AdminUser\n /// (role=SALES_EXPERT), so these live here instead — only ever set for that\n /// role; every other AdminUser leaves them null.\n avatarFileId String?\n avatarFile UploadedFile? @relation(\"AdminUserAvatar\", fields: [avatarFileId], references: [id])\n address String?\n storeName String? // legacy store_name\n pasazhName String? // legacy pasazh_name\n memberCode String? // legacy mcode\n\n referredCustomers Customer[] @relation(\"ReferralAgent\")\n /// Orders credited to this sales expert — see Order.salesAgentId.\n creditedOrders Order[] @relation(\"OrderSalesAgent\")\n\n /// Only ever set for role = SALES_EXPERT (D17).\n salesExpertProfile SalesExpertProfile?\n\n @@index([role])\n @@index([userTypeId])\n @@index([avatarFileId])\n @@index([firstName])\n @@index([lastName])\n}\n\n/// An issued APP token (customer app / sales-expert app), so it can be revoked\n/// before it expires — the counterpart of AdminSession for the other token family.\n///\n/// WHY A SEPARATE TABLE AND NO FOREIGN KEY\n/// ---------------------------------------\n/// An app token's `sub` is a Customer id for a customer and an **AdminUser id**\n/// for a sales expert (D21). One FK cannot point at two tables, so the subject is\n/// stored as a plain id plus its type. The rows are short-lived operational data,\n/// not part of the accounting model, so the missing FK costs nothing here.\nmodel AppSession {\n id String @id @default(cuid())\n\n /// The token's `jti` claim. Unique: one row per issued token.\n jti String @unique\n\n /// Customer.id, or AdminUser.id when subjectType is \"sales-expert\".\n subjectId String\n subjectType String\n\n mobile String?\n\n /// Set when the login was confirmed by the central IAM: its session id (`sid`)\n /// and stable user id (`sub`), which is what a back-channel logout arrives with.\n iamSessionId String?\n iamSub String?\n\n ipAddress String?\n userAgent String?\n\n createdAt DateTime @default(now())\n expiresAt DateTime?\n lastSeenAt DateTime?\n\n revokedAt DateTime?\n revokedReason String?\n\n @@index([subjectId])\n @@index([iamSessionId])\n @@index([iamSub])\n @@index([expiresAt])\n}\n\n/// An issued admin-panel JWT, so it can be revoked before it expires.\n///\n/// WHY THIS EXISTS\n/// ---------------\n/// The admin token is self-contained and valid for 12h, which means nothing —\n/// not disabling the account, not a central \"sign out everywhere\" — could cut a\n/// session short: the token kept working until it expired. With the central IAM\n/// in the loop that gap became visible (an IAM session revocation had no effect\n/// here), so every issued token now carries a `jti` recorded on this table and\n/// JwtStrategy refuses a token whose row is revoked.\n///\n/// Rows are written ONLY while tracking is enabled, and JwtStrategy only\n/// enforces them while it is enabled, so a deployment that does not want the\n/// extra lookup behaves exactly as before.\nmodel AdminSession {\n id String @id @default(cuid())\n\n /// The token's `jti` claim. Unique: one row per issued token.\n jti String @unique\n\n adminId String @map(\"adminUserId\")\n admin Admin @relation(fields: [adminId], references: [id], onDelete: Cascade)\n\n /// Set when the login was verified by the IAM: its session id (`sid`) and the\n /// stable user id (`sub`) there. Back-channel logout arrives keyed by these —\n /// deliberately here rather than as columns on AdminUser, so enabling the\n /// feature needs no change to an existing table.\n iamSessionId String?\n iamSub String?\n\n ipAddress String?\n userAgent String?\n\n createdAt DateTime @default(now())\n expiresAt DateTime?\n lastSeenAt DateTime?\n\n revokedAt DateTime?\n revokedReason String?\n\n @@index([adminId], map: \"AdminSession_adminUserId_idx\")\n @@index([iamSessionId])\n @@index([iamSub])\n @@index([expiresAt])\n}\n\n/// The sales-expert fields legacy kept on the `customers` row (type=1) and that\n/// were lost when a sales expert became an AdminUser (D17).\n///\n/// A separate table rather than columns on AdminUser: these are meaningful only\n/// for role = SALES_EXPERT and would be permanently null for every other admin.\n/// A row is created for every SALES_EXPERT by the migration, and upserted by the\n/// service whenever one is created or a user's role becomes SALES_EXPERT — but\n/// readers still left-join, so a missing profile degrades to nulls rather than\n/// dropping the agent from the grid.\n///\n/// `reagent_id` is deliberately NOT here — see D17: in the reference it was a\n/// side effect of the shared customers form, and filling it removed that expert\n/// from the selectable-agent list (queryReagent, AdminController.php:420).\nmodel SalesExpertProfile {\n id String @id @default(cuid())\n adminUserId String @unique\n adminUser AdminUser @relation(fields: [adminUserId], references: [id], onDelete: Cascade)\n\n /// Legacy customers.city_id — a filterable grid column\n /// (ReagentListModel.js:14) and the source of the commission autofill\n /// (ReagentCustomer.vue:215-228).\n cityId String?\n city City? @relation(fields: [cityId], references: [id])\n\n /// Legacy customers.gram_level — the «سطح اعتبار» column, filterable.\n /// Decimal(14,4) matches Customer.goldCreditLimitGrams exactly so the same\n /// credit limit has identical precision on both tables.\n gramLevel Decimal @default(0) @db.Decimal(14, 4)\n\n /// Legacy customers.phone (varchar 15) and ncode (varchar 20). The reference\n /// stores both and reads neither back; kept so the form matches it. Neither\n /// is unique and neither has a validation rule in the reference — inventing\n /// one would reject data the reference accepts.\n phone String? @db.VarChar(15)\n nationalCode String? @db.VarChar(20)\n\n /// The Customer row carrying this expert's OWN orders, debt and credit limit.\n ///\n /// The reference stored a sales agent AS a Customer (type=1), so an order the\n /// agent placed from the app was simply their own, against their own\n /// gram_level (ApiMobileController.php:534-535). Here the expert is an\n /// AdminUser (D17), which has no ledger and cannot be an Order's subject, so\n /// this one linked Customer plays that part.\n ///\n /// Distinct from the expert's REFERRED customers, which are ordinary Customer\n /// rows pointing at the AdminUser through Customer.referredByAgentId.\n ///\n /// Null until the expert first signs into the app, when it is created from\n /// this profile. See D21.\n tradingCustomerId String? @unique\n tradingCustomer Customer? @relation(\"SalesExpertTradingAccount\", fields: [tradingCustomerId], references: [id], onDelete: SetNull)\n\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now()) @updatedAt\n\n @@index([cityId])\n}\n\nmodel Customer {\n id String @id @default(cuid())\n\n /// ⚠️ `fullName`, `firstName` and `lastName` are kept in sync BY A DATABASE\n /// TRIGGER — `customer_sync_full_name`, created in migration\n /// 20260922120000_customer_name_parts. Prisma does not know about it, so a\n /// write here is NOT the whole story:\n ///\n /// * write the parts -> fullName is rebuilt as \"first last\"\n /// * write fullName only -> the parts are re-derived from it\n /// * write BOTH in one update -> THE PARTS WIN; fullName is overwritten\n /// with \"first last\" and whatever you passed for fullName is discarded\n ///\n /// So a value you wrote can differ from the value that lands in the row.\n /// Re-read after writing if you need the stored value. Prefer writing the\n /// parts; `fullName` exists for the legacy readers that predate D0.\n ///\n /// Reference has these as two columns from the start\n /// (henza_server 2020_10_01_120430_customers_table.php:18-19 fname/lname);\n /// the port collapsed them, which is the D0 defect.\n fullName String\n firstName String?\n lastName String?\n\n mobile String @unique\n /// Legacy customers.ncode. OPTIONAL since 2026-10-07: not one of the 1,616\n /// legacy customers has a national code (1595/1595 empty), and fabricating\n /// one is a data violation that would block later legal identity checks\n /// (owner ruling). Still @unique — in PostgreSQL NULLs do not collide, so\n /// the migration tool must write NULL and never '', which would collide on\n /// the second row.\n ///\n /// Three service-layer workarounds exist ONLY because this used to be\n /// required, and they store the MOBILE NUMBER here:\n /// admin-customers.service.ts:625,685 and customer-auth.service.ts:258.\n /// Retiring them is a separate change; see docs/DATA-MIGRATION-MAP.md §10.4.\n nationalCode String? @unique\n passwordHash String\n cityId String?\n city City? @relation(fields: [cityId], references: [id])\n\n /// Legacy customers.new_city — the city name exactly as the customer typed it\n /// at app sign-up (Major/CustomerController.php:36). Kept verbatim because\n /// the legacy city table has only 15 rows, so the typed name is often the only\n /// record of where the customer is (172 customers; 43 match no known city).\n /// cityId is set alongside it only on an exact, ي/ك-normalised name match.\n /// Legacy sign-up also forced city_id = 5 (Tehran) on everyone\n /// (Major/CustomerController.php:21), so for those rows the typed name, not\n /// cityId, is the truth. Owner ruling 2026-10-07: keep both.\n cityNameRaw String?\n\n /// Legacy Customer.type — distinguishes بنکدار from مغازه دار, which the\n /// BankerList / ShopkeeperList screens filter on.\n kind CustomerKind @default(APP_SHOPKEEPER)\n\n /// Legacy contact + shop columns, shown on the wholesale customer form and as\n /// (hidden-by-default) columns in its grid.\n phone String?\n address String?\n storeName String?\n pasazhName String?\n zone String?\n /// Legacy mcode — the operator-assigned customer code.\n memberCode String?\n\n referredByAgentId String?\n referredByAgent AdminUser? @relation(\"ReferralAgent\", fields: [referredByAgentId], references: [id])\n\n /// Set only on the one Customer row that acts as a sales expert's own trading\n /// account (see SalesExpertProfile.tradingCustomerId). Empty for every\n /// ordinary customer.\n salesExpertTradingFor SalesExpertProfile? @relation(\"SalesExpertTradingAccount\")\n /// Legacy orders that named THIS customer as their referrer — see\n /// Order.referrerCustomerId. History only.\n referredOrders Order[] @relation(\"OrderReferrerCustomer\")\n\n // Credit limit + cached ledger balances (source of truth is LedgerEntry; these\n // are denormalized for fast reads and reconciled by a scheduled job).\n goldCreditLimitGrams Decimal @default(0) @db.Decimal(14, 4) // legacy gram_level\n goldDebtGrams Decimal @default(0) @db.Decimal(14, 4) // legacy remain\n fiatDebtRial Decimal @default(0) @db.Decimal(20, 2) // legacy rial_remain\n\n /// Balance as last read from the accounting software (D27), in the app's own\n /// sign convention (positive = owes). Shown to the customer when the\n /// integration is on; the credit-limit check still uses goldDebtGrams above.\n /// Null until the first successful sync.\n accountingGoldBalance Decimal? @db.Decimal(14, 4)\n accountingRialBalance Decimal? @db.Decimal(20, 2)\n accountingBalanceAt DateTime?\n\n /// Legacy `customers.percent` — the per-customer making-charge offset. It is\n /// ADDED to the variant's making charge when pricing an order line\n /// (henza_pwa src/Mixins/product/index.ts:69-75:\n /// getWage(v) = state.percent + v.percentage_pay)\n /// and it shifts the catalogue making-charge filter bounds\n /// (ApiMobileController.php:391-396,76-77). It is NOT part of the price\n /// formula itself — that extra percent is ConfigStatic['product_price_extra_percent'].\n ///\n /// NOT the wallet cashback rate (storefront ConfigStatic['percent'], D13) and\n /// NOT the wholesale per-line charge (OrderItem.wagePercentSnapshot).\n ///\n /// DB default 0 keeps every existing customer's price unchanged. The\n /// reference's application-layer default for NEW customers is 3\n /// (AdminController.php:338) and the field is required on create (:354).\n makingChargeOffsetPercent Decimal @default(0) @db.Decimal(6, 3)\n\n verificationStep VerificationStep @default(UNVERIFIED)\n nationalIdImageUrl String?\n businessLicenseUrl String?\n shopImageUrl String?\n\n /// Why verification was rejected (VerificationStep.REJECTED).\n ///\n /// Legacy recorded NO reason: none of its 49 `customers` columns is a\n /// reason/note field, and on rejection it only sent a fixed SMS. So the 14\n /// rows migrated from the legacy system carry the sentinel\n /// «رد شده در سیستم قدیم — فاقد شرح علت ثبت‌شده» instead of NULL, so support\n /// knows why it is blank (owner ruling 2026-10-07). The migration tool\n /// writes it only WHERE this IS NULL, so a re-run cannot overwrite a real\n /// reason entered in the new system.\n verificationRejectionReason String?\n\n /// NULL for rows migrated from the legacy system — it recorded no rejection time.\n verificationRejectedAt DateTime?\n\n /// Legacy customers.birth_date, populated on 917 of 1,595 rows. Kept for the\n /// birthday SMS / loyalty campaigns (owner ruling 2026-10-07).\n ///\n /// ⚠ Legacy stores dates as JALALI STRINGS in other tables\n /// (cashes.recive_date is varchar, 88/89 values starting \"14…\"), so this\n /// timestamp may hold mis-entered Jalali years. Confirm the calendar with\n /// docs/migration-precheck-3.sql BEFORE backfilling: copying them unchanged\n /// would produce 917 wrong birthdays, worse for an SMS campaign than none.\n birthDate DateTime?\n\n /// Legacy `image_id` — the profile photo (عکس پروفایل) on the sales-agent\n /// form. Legacy stored an FK to its Image table and read it back as a nested\n /// `image: { id, image }`, so this is a relation, not a bare URL string.\n avatarFileId String?\n avatarFile UploadedFile? @relation(\"CustomerAvatar\", fields: [avatarFileId], references: [id])\n\n /// Legacy had TWO independent switches on a customer:\n /// sts -> may they place orders (this field)\n /// active -> is the account enabled (isActive, below)\n /// The port previously drove both from isActive; they are separate again.\n canPlaceOrders Boolean @default(true)\n\n isActive Boolean @default(true)\n /// Legacy archive flag — the archived list filtered on this, not on isActive.\n isArchived Boolean @default(false)\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n addresses CustomerAddress[]\n orders Order[]\n preOrders PreOrder[]\n ledgerEntries LedgerEntry[]\n walletBonuses WalletBonus[]\n comments Comment[]\n promotions Promotion[]\n notifications NotificationRecipient[]\n activityLogs CustomerActivityLog[]\n otpChallenges CustomerOtp[]\n favorites CustomerFavorite[]\n\n @@index([referredByAgentId])\n @@index([firstName])\n @@index([lastName])\n}\n\n/// Legacy `fav` (251 rows) — saved products. The target had no model for this,\n/// so every customer's favourites would have been lost in the migration; the\n/// owner confirmed on 2026-10-06 that they matter.\n///\n/// Legacy `fav` has two columns and NO primary key. The composite key here\n/// supplies the constraint the source lacks (the precheck found 0 duplicate\n/// pairs, but the tool should still SELECT DISTINCT). 14 of the 251 rows point\n/// at a deleted customer and must be skipped.\n///\n/// Legacy's denormalised `product.count_fav` counter is deliberately NOT\n/// recreated as a column — derive it from this table.\nmodel CustomerFavorite {\n customerId String\n customer Customer @relation(fields: [customerId], references: [id], onDelete: Cascade)\n productId String\n product Product @relation(fields: [productId], references: [id], onDelete: Cascade)\n createdAt DateTime @default(now())\n\n @@id([customerId, productId])\n @@index([productId])\n}\n\nmodel CustomerAddress {\n id String @id @default(cuid())\n customerId String\n customer Customer @relation(fields: [customerId], references: [id])\n cityId String?\n city City? @relation(fields: [cityId], references: [id])\n addressLine String\n isDefault Boolean @default(false)\n}\n\nmodel Branch {\n id String @id @default(cuid())\n name String\n /// Legacy Branch.address / phone — both are columns in the branch grid.\n address String?\n phone String?\n /// Legacy GET branch/active/{id} toggles this.\n isActive Boolean @default(true)\n cityId String?\n city City? @relation(fields: [cityId], references: [id])\n adminUsers AdminUser[]\n admins Admin[]\n orders Order[]\n allocations BranchAllocation[]\n}\n\nmodel Workshop {\n id String @id @default(cuid())\n name String\n /// Legacy Workshop.address / phone — both are columns in the workshop grid.\n address String?\n phone String?\n /// The supervisor created alongside the workshop by the legacy Add form.\n supervisorId String?\n supervisor Admin? @relation(\"WorkshopSupervisor\", fields: [supervisorId], references: [id])\n isActive Boolean @default(true)\n preOrders PreOrder[]\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Catalog — item reference catalog\n// ─────────────────────────────────────────────────────────────────────────\n\nmodel Category {\n id String @id @default(cuid())\n title String\n /// Legacy Category.type — which storefront the category belongs to:\n /// 1 سایت | 2 اپلیکشن موبایل. Drives the \"type_str\" grid column.\n type Int @default(1)\n /// Legacy Category.image / icon — the grid renders the image, the storefront the icon.\n imageUrl String?\n iconUrl String?\n /// Legacy meta tag + description, used for SEO on the site categories.\n metaTag String?\n description String?\n parentId String?\n parent Category? @relation(\"CategoryTree\", fields: [parentId], references: [id])\n children Category[] @relation(\"CategoryTree\")\n products Product[]\n promotions Promotion[]\n}\n\nmodel Brand {\n id String @id @default(cuid())\n title String\n products Product[]\n promotions Promotion[]\n}\n\n/// Curated product groupings — replaces legacy \"Ciny/CinyProduct\" (a tagging\n/// feature, NOT a gold-price snapshot mechanism, despite the misleading legacy name).\nmodel Collection {\n id String @id @default(cuid())\n title String\n description String?\n isActive Boolean @default(true)\n products CollectionProduct[]\n}\n\nmodel CollectionProduct {\n collectionId String\n collection Collection @relation(fields: [collectionId], references: [id])\n productId String\n product Product @relation(fields: [productId], references: [id])\n\n @@id([collectionId, productId])\n}\n\nmodel Product {\n id String @id @default(cuid())\n title String\n description String?\n categoryId String?\n category Category? @relation(fields: [categoryId], references: [id])\n brandId String?\n brand Brand? @relation(fields: [brandId], references: [id])\n /// Legacy Product.product_code — the human-facing SKU shown in the grid.\n productCode String? @unique\n /// Legacy Product.show_type: 1 site, 2 mobile, 3 both.\n showType Int @default(3)\n isActive Boolean @default(true)\n /// Labels from Setting `__list__tags`, assigned on the product form. The\n /// storefront shows them on list cards only (not the product detail page).\n tags String[] @default([])\n createdAt DateTime @default(now())\n\n /// Stock of the linked کارساخته as last read from the accounting software\n /// (D27). Weight for gram-type items, count for count-type ones — whichever\n /// the software reports. At zero or below the product is unavailable in the\n /// app (pre-order variants excepted). Null = not linked or never synced.\n accountingStockWeight Decimal? @db.Decimal(14, 4)\n accountingStockCount Decimal? @db.Decimal(14, 4)\n accountingStockAt DateTime?\n\n variants ProductVariant[]\n images ProductImage[]\n collections CollectionProduct[]\n comments Comment[]\n promotions Promotion[]\n allocationItems BranchAllocationItem[]\n favoritedBy CustomerFavorite[]\n\n // Storefront paging (owner: the real catalogue reaches ~16k products, so\n // GET /catalog/products must page rather than return everything). This model\n // had NO index at all, so every storefront query was a full scan and paging\n // alone would not have been any faster.\n //\n // The composite matches the list's own shape: filter on isActive, order by\n // createdAt — Postgres can satisfy both from this one index, including the\n // OFFSET walk. The other two serve the category and brand filters.\n @@index([isActive, createdAt])\n @@index([categoryId])\n @@index([brandId])\n}\n\nmodel ProductImage {\n id String @id @default(cuid())\n productId String\n product Product @relation(fields: [productId], references: [id])\n url String\n sortOrder Int @default(0)\n /// Legacy had 4 distinct upload slots (تصویر شاخص / تصویر شاخص موبایل /\n /// گالری تصاویر سایت / گالری تصاویر موبایل) — GALLERY is the default so\n /// existing rows and any generic \"just attach an image\" caller keep working.\n role ProductImageRole @default(GALLERY)\n\n /// Variants that display this image. A gallery image may back several\n /// variants (one photo, several weights), which is why this is a plain\n /// one-to-many and not a join table.\n variants ProductVariant[]\n\n // The storefront list filters on `images: { some: {} }` and includes the\n // gallery ordered by sortOrder, both per product. Unindexed, each one scanned\n // the whole table.\n @@index([productId, sortOrder])\n}\n\nenum ProductImageRole {\n FEATURED\n FEATURED_MOBILE\n GALLERY\n GALLERY_MOBILE\n}\n\nmodel ProductVariant {\n id String @id @default(cuid())\n productId String\n product Product @relation(fields: [productId], references: [id])\n title String\n sku String? @unique\n /// Base/raw weight before making charge (\"rash weight\").\n rashWeightGrams Decimal @db.Decimal(14, 4)\n /// Default making-charge percentage applied on top of rash weight.\n defaultWagePercent Decimal @db.Decimal(6, 3)\n /// Legacy ProductVariant.qty — on-hand stock. The cart refuses a variant with\n /// qty 0 unless it is flagged pre-order, so both fields are required for that\n /// guard to work (see apps/admin-panel/src/stores/cart.ts).\n qty Int @default(0)\n /// Legacy is_pre_order: orderable even at zero stock.\n isPreOrder Boolean @default(false)\n isActive Boolean @default(true)\n\n /// Legacy color enum: 0=سفید, 1=زرد, 2=شکلاتی, 3=رزگلد\n color Int?\n /// Legacy rial_pay — fixed Rial making charge per variant.\n rialWage Decimal? @db.Decimal(18, 0)\n /// Legacy details — short description for variant.\n details String? @db.Text\n /// Legacy description — full description for variant.\n description String? @db.Text\n\n /// The gallery image shown for this variant, picked from its own product's\n /// images — never a re-uploaded copy. onDelete: SetNull because dropping an\n /// image must never cascade into the variant: OrderItem rows reference\n /// variants, so losing one would break order history.\n imageId String?\n image ProductImage? @relation(fields: [imageId], references: [id], onDelete: SetNull)\n\n orderItems OrderItem[]\n\n @@index([imageId])\n // Every storefront product carries its variants, so this include ran once per\n // product with no index to use. The composite covers the `isActive: true`\n // filter the list applies to them.\n @@index([productId, isActive])\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Orders — stock orders (debt-bearing)\n// ─────────────────────────────────────────────────────────────────────────\n\n/// Customer-confirm state for an admin-proposed order edit (not a pipeline status).\nenum OrderRevisionStatus {\n NONE\n AWAITING_CUSTOMER\n}\n\nmodel Order {\n id String @id @default(cuid())\n orderNumber String @unique\n customerId String\n customer Customer @relation(fields: [customerId], references: [id])\n branchId String?\n branch Branch? @relation(fields: [branchId], references: [id])\n /// Which sales channel placed this order — see OrderChannel.\n channel OrderChannel @default(RETAIL)\n status OrderStatus @default(PLACED)\n\n /// Pending admin edit awaiting customer confirm (or admin force/discard).\n revisionStatus OrderRevisionStatus @default(NONE)\n\n /// Total gold weight incl. wage across all items (\"allGram\" / order.w).\n totalGoldWeightGrams Decimal @db.Decimal(14, 4)\n /// Pure making-charge weight component (totalGoldWeightGrams minus raw weight sum).\n wageWeightGrams Decimal @db.Decimal(14, 4)\n /// Flat Rial charge independent of gold price (e.g. stones) — legacy rial_input.\n flatRialCharge Decimal @default(0) @db.Decimal(20, 2)\n\n isSuspendedOverCreditLimit Boolean @default(false)\n deliveredAt DateTime? // setting this is what triggers debt recognition\n\n /// The sales expert this order is credited to, fixed when it is placed:\n /// the customer's referring expert AT THAT MOMENT. Legacy `orders.reagent_id`,\n /// set once at creation (ApiMobileController.php:601) and never moved, so a\n /// customer changing expert later does not move past sales or commission\n /// (owner ruling 2026-10-08). «میزان فروش» counts from here, never from the\n /// customer's current referrer.\n salesAgentId String?\n salesAgent AdminUser? @relation(\"OrderSalesAgent\", fields: [salesAgentId], references: [id], onDelete: SetNull)\n\n /// History only: a legacy order whose `reagent_id` named a customer who is\n /// not a sales expert (one such customer, 17 orders in 2022). Legacy counted\n /// those orders in that customer's own «میزان فروش»; this keeps that figure\n /// exact. Never set for a new order.\n referrerCustomerId String?\n referrerCustomer Customer? @relation(\"OrderReferrerCustomer\", fields: [referrerCustomerId], references: [id], onDelete: SetNull)\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n items OrderItem[]\n statusEvents OrderStatusEvent[]\n ledgerEntries LedgerEntry[]\n revisions OrderRevision[]\n convertedFromPreOrder PreOrder?\n\n @@index([customerId])\n @@index([status])\n @@index([revisionStatus])\n @@index([salesAgentId])\n @@index([referrerCustomerId])\n}\n\n/// Proposed line-item edit for an Order. Live until applied or discarded.\n/// While pending, Order.revisionStatus = AWAITING_CUSTOMER and charged figures\n/// stay on the current Order until the customer confirms (or admin force-applies).\nmodel OrderRevision {\n id String @id @default(cuid())\n orderId String\n order Order @relation(fields: [orderId], references: [id], onDelete: Cascade)\n\n /// Proposed lines: [{ productVariantId, quantity, rashWeightGramsSnapshot,\n /// wagePercentSnapshot, discountPercentSnapshot, computedWeightGrams, flatRialCharge }]\n items Json\n\n totalGoldWeightGrams Decimal @db.Decimal(14, 4)\n wageWeightGrams Decimal @db.Decimal(14, 4)\n flatRialCharge Decimal @default(0) @db.Decimal(20, 2)\n\n proposedByAdminId String? @map(\"proposedByAdminUserId\")\n note String?\n\n /// null | ACCEPTED | REJECTED — reject leaves AWAITING_CUSTOMER for admin decision.\n customerDecision String?\n customerDecidedAt DateTime?\n\n appliedAt DateTime?\n discardedAt DateTime?\n\n createdAt DateTime @default(now())\n\n @@index([orderId])\n @@index([createdAt])\n}\n\nmodel OrderItem {\n id String @id @default(cuid())\n orderId String\n order Order @relation(fields: [orderId], references: [id])\n productVariantId String\n productVariant ProductVariant @relation(fields: [productVariantId], references: [id])\n quantity Int\n\n // Snapshots at order time — never re-read from ProductVariant after placement.\n rashWeightGramsSnapshot Decimal @db.Decimal(14, 4)\n wagePercentSnapshot Decimal @db.Decimal(6, 3)\n discountPercentSnapshot Decimal @default(0) @db.Decimal(6, 3)\n /// computed: rash*(1 + (wagePercent-discount)/100)\n computedWeightGrams Decimal @db.Decimal(14, 4)\n flatRialCharge Decimal @default(0) @db.Decimal(20, 2)\n}\n\nmodel OrderStatusEvent {\n id String @id @default(cuid())\n orderId String\n order Order @relation(fields: [orderId], references: [id])\n fromStatus OrderStatus?\n toStatus OrderStatus\n note String?\n actorAdminId String? @map(\"actorAdminUserId\")\n actorAdmin Admin? @relation(fields: [actorAdminId], references: [id])\n createdAt DateTime @default(now())\n\n @@index([orderId])\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Pre-orders — custom manufacturing requests (not debt-bearing until converted)\n// ─────────────────────────────────────────────────────────────────────────\n\nmodel PreOrder {\n id String @id @default(cuid())\n customerId String\n customer Customer @relation(fields: [customerId], references: [id])\n cityId String?\n city City? @relation(fields: [cityId], references: [id])\n workshopId String?\n workshop Workshop? @relation(fields: [workshopId], references: [id])\n status PreOrderStatus @default(PLACED)\n\n designImageUrl String?\n colorName String?\n sizeSpec String?\n stoneColor String?\n minaColor String?\n /// Legacy custom_orders.sum — how many pieces the customer asked for. The first\n /// schema had no field for it and the admin grid showed a hard-coded 1.\n quantity Int @default(1)\n estimatedWeightGrams Decimal? @db.Decimal(14, 4)\n estimatedPriceRial Decimal? @db.Decimal(20, 2)\n description String?\n\n /// Once priced, an admin converts this into a real (debt-bearing) Order.\n convertedOrderId String? @unique\n convertedOrder Order? @relation(fields: [convertedOrderId], references: [id])\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n statusEvents PreOrderStatusEvent[]\n\n @@index([customerId])\n}\n\nmodel PreOrderStatusEvent {\n id String @id @default(cuid())\n preOrderId String\n preOrder PreOrder @relation(fields: [preOrderId], references: [id])\n /// Field-level diff, e.g. {\"status\": {\"old\": \"PLACED\", \"new\": \"ADMIN_APPROVED\"}}\n changes Json\n actorAdminId String? @map(\"actorAdminUserId\")\n actorAdmin Admin? @relation(fields: [actorAdminId], references: [id])\n ipAddress String?\n createdAt DateTime @default(now())\n\n @@index([preOrderId])\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Accounting — the dual-currency ledger (core of the system)\n// ─────────────────────────────────────────────────────────────────────────\n\nmodel LedgerEntry {\n id String @id @default(cuid())\n customerId String\n customer Customer @relation(fields: [customerId], references: [id])\n\n currency LedgerCurrency\n direction LedgerDirection\n sourceType LedgerSourceType\n /// Always positive; direction determines the sign applied to the customer balance.\n amount Decimal @db.Decimal(20, 4)\n\n /// Purity of the physical instrument, for REPAYMENT_MELTED_GOLD (e.g. 750, 916).\n karatPerMille Int?\n /// Gold price/gram at conversion time, for REPAYMENT_CASH.\n pricePerGramRialAtEntry Decimal? @db.Decimal(20, 2)\n\n orderId String?\n order Order? @relation(fields: [orderId], references: [id])\n\n /// Pending entries don't count toward the cached customer balance until confirmed.\n confirmed Boolean @default(false)\n confirmedAt DateTime?\n postedByAdminId String? @map(\"postedByAdminUserId\")\n postedByAdmin Admin? @relation(fields: [postedByAdminId], references: [id])\n\n /// Instrument metadata from the legacy \"cash\" document form. Which fields are\n /// filled depends on sourceType: a melted-gold receipt carries lab/hallmark and\n /// the pre-normalization weight, a cheque carries the account and bank, and a\n /// transfer carries its destination.\n /// Legacy columns: lab, ang, account_name, bank_name, to, original_value, recive_date.\n labName String?\n hallmark String?\n accountName String?\n bankName String?\n transferTo String?\n /// Weight as handed over, BEFORE karat normalization (legacy original_value).\n originalValue Decimal? @db.Decimal(14, 4)\n /// Rial amount for cash/cheque documents (legacy price).\n priceRial Decimal? @db.Decimal(20, 2)\n receivedAt DateTime?\n\n note String?\n createdAt DateTime @default(now())\n\n @@index([customerId, currency])\n @@index([orderId])\n}\n\n/// Replaces legacy WebServiceGold / ConfigStatic.gold_price — timestamped price feed.\nmodel GoldPriceQuote {\n id String @id @default(cuid())\n karatPerMille Int\n pricePerGramRial Decimal @db.Decimal(20, 2)\n source String\n quotedAt DateTime @default(now())\n\n @@index([karatPerMille, quotedAt])\n}\n\n/// Time-limited gold cashback bonus — replaces the legacy Rooyesh\\Wallet gold credit.\nmodel WalletBonus {\n id String @id @default(cuid())\n customerId String\n customer Customer @relation(fields: [customerId], references: [id])\n orderId String?\n goldGrams Decimal @db.Decimal(14, 4)\n grantedAt DateTime @default(now())\n expiresAt DateTime\n consumedAt DateTime?\n isActive Boolean @default(true)\n\n @@index([customerId, isActive])\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Admin ACL — faithful port of the legacy granular permission model.\n//\n// Legacy (henza_server):\n// Schema::create('permission', function (Blueprint $table) {\n// $table->string('rid');\n// $table->integer('ut');\n// $table->primary(['rid' , 'ut']);\n// });\n//\n// Permissions attach to the USER TYPE (`ut`), never to an individual user, so\n// every admin of a given type shares one permission set. `ut` pointed at a row\n// in the legacy `config_static` lookup table; UserType is that table, narrowed\n// to the admin-user-type rows it was actually used for.\n//\n// A `rid` is a dotted permission id such as \"persons.list.client.omde\". The\n// frontend expands each stored rid into its ancestors at runtime via\n// checkParent() — see apps/admin-panel/src/stores/users.ts. Only the 58 leaf\n// rids the routers actually gate are seeded; ancestors are derived, not stored.\n// ─────────────────────────────────────────────────────────────────────────\n\nmodel UserType {\n /// Legacy `permission.ut` / `users.ut` — an integer, kept as the PK so seeded\n /// rows keep their legacy identity rather than getting new cuids.\n id Int @id\n title String\n isActive Boolean @default(true)\n createdAt DateTime @default(now())\n\n permissions Permission[]\n adminUsers AdminUser[]\n admins Admin[]\n\n @@map(\"user_type\")\n}\n\nmodel Permission {\n /// Dotted permission id, e.g. \"order.list\", \"persons.list.client.omde\".\n rid String\n userTypeId Int\n userType UserType @relation(fields: [userTypeId], references: [id], onDelete: Cascade)\n\n /// Legacy's composite primary key (rid, ut), preserved exactly.\n @@id([rid, userTypeId])\n @@index([userTypeId])\n @@map(\"permission\")\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Product comments / reviews — legacy `comment` table (App\\Models\\Comment),\n// moderated from views/customer/Comments/Comments.vue.\n//\n// Legacy fillable: product_id, comment, reply_to, sts, customer_id\n// Legacy Comment::$STS = [1 => 'در انتظار تایید', 2 => 'تایید شده', 3 => 'رد شده']\n// which is represented here as an enum rather than a magic integer.\n// ─────────────────────────────────────────────────────────────────────────\n\nenum CommentStatus {\n PENDING // 1 — در انتظار تایید\n APPROVED // 2 — تایید شده\n REJECTED // 3 — رد شده\n}\n\nmodel Comment {\n id String @id @default(cuid())\n productId String\n product Product @relation(fields: [productId], references: [id])\n customerId String\n customer Customer @relation(fields: [customerId], references: [id])\n body String\n status CommentStatus @default(PENDING)\n\n /// Legacy `reply_to`: a staff reply threads under the comment it answers.\n replyToId String?\n replyTo Comment? @relation(\"CommentReplies\", fields: [replyToId], references: [id])\n replies Comment[] @relation(\"CommentReplies\")\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([productId])\n @@index([customerId])\n @@index([status])\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Settings — replaces legacy `config_static`, a key/value table the admin\n// panel read and wrote through endpoints like /wallet/config and\n// /const/__list__ut. Values are stored as JSON so a setting can hold a scalar,\n// an object, or the dynamic option lists legacy kept under `__list__*` keys.\n// ─────────────────────────────────────────────────────────────────────────\n\nmodel Setting {\n key String @id\n value Json\n updatedAt DateTime @updatedAt\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Accounting integration (D27) — the shop's accounting software, Tahesab or\n// Zarrin, chosen in the admin panel. Configuration lives in the Setting row\n// `accounting.config` (never served by the generic `const` routes). Plan:\n// docs/ACCOUNTING-INTEGRATION-PLAN.md.\n//\n// `provider` is the driver name ('tahesab' | 'zarrin'), a plain string like\n// SMS_PROVIDER so a new driver needs no migration. Links are per provider, so\n// switching provider and back loses nothing.\n// ─────────────────────────────────────────────────────────────────────────\n\nenum AccountingEntityType {\n CUSTOMER\n PRODUCT\n}\n\n/// One app row ↔ one record in the accounting software (customer account or\n/// کارساخته).\nmodel AccountingLink {\n id String @id @default(cuid())\n provider String\n entityType AccountingEntityType\n entityId String\n /// The record's code in the accounting software (Tahesab Moshtari_Code /\n /// Zarrin idHesab; for products the Zarrin idKar or the Tahesab Name_Kar).\n externalCode String\n externalName String?\n /// How the link came to be: LINKED (matched by mobile/name), IMPORTED (app\n /// row created from the accounting record), PUSHED (accounting record created\n /// from the app row) or MANUAL (an admin typed the code).\n origin String\n /// The record as last read, for display only.\n snapshot Json?\n syncedAt DateTime @default(now())\n createdAt DateTime @default(now())\n\n @@unique([provider, entityType, entityId])\n @@unique([provider, entityType, externalCode])\n @@index([entityType, entityId])\n}\n\nenum AccountingOutboxKind {\n CUSTOMER_PUSH\n PRODUCT_PUSH\n ORDER_DOCUMENT\n ORDER_DOCUMENT_DELETE\n}\n\nenum AccountingOutboxStatus {\n PENDING\n /// A call was in flight. Found at startup, it means the process died mid-call\n /// and the outcome is unknown — see AccountingOutboxWorker.\n SENDING\n SENT\n FAILED\n /// Unsafe to retry automatically (e.g. a Zarrin call timed out: Zarrin has no\n /// idempotency key, so a blind retry could post the document twice).\n NEEDS_REVIEW\n /// Closed by an admin from the log screen.\n RESOLVED\n}\n\n/// Work to push to the accounting software. Written in the SAME transaction as\n/// the change that causes it, so an outage of the accounting software never\n/// loses an event and never blocks the app.\nmodel AccountingOutbox {\n id String @id @default(cuid())\n provider String\n kind AccountingOutboxKind\n entityId String\n status AccountingOutboxStatus @default(PENDING)\n attempts Int @default(0)\n nextAttemptAt DateTime @default(now())\n lastError String?\n /// What the accounting software returned as the document/record id.\n externalRef String?\n /// Per-step progress of multi-call jobs (a Zarrin document is one call per\n /// line), so a failure resumes where it stopped.\n progress Json?\n /// Last request/response, for the log screen. Never contains the token.\n lastRequest Json?\n lastResponse Json?\n sentAt DateTime?\n resolvedById String?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([status, nextAttemptAt])\n @@index([kind, entityId])\n}\n\n/// Something a pull found that needs a human: an account with no mobile, two\n/// accounts sharing one mobile, a کارساخته group with no category mapping.\nmodel AccountingIssue {\n id String @id @default(cuid())\n provider String\n kind String\n externalCode String\n entityId String?\n message String\n data Json?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n resolvedAt DateTime?\n\n @@unique([provider, kind, externalCode])\n @@index([resolvedAt])\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Promotions / discounts — legacy views/promotion/*, served by\n// PromotionController (`product/variant/promotion`). The redesigned schema had\n// no promotion concept at all; this models what the legacy forms actually\n// collect.\n// ─────────────────────────────────────────────────────────────────────────\n\n/// Legacy Promotion.type — what the discount is scoped to.\nenum PromotionScope {\n PRODUCT // 1 محصولات\n CATEGORY // 2 دسته بندی\n CUSTOMER // 3 مشتری\n BRAND // 4 برند\n}\n\n/// Legacy Promotion.use_only — how often a customer may redeem it.\nenum PromotionUsage {\n ONCE // 1 فقط یکبار\n UNTIL_END_DATE // 2 تا تاریخ پایان\n}\n\nmodel Promotion {\n id String @id @default(cuid())\n title String\n description String?\n scope PromotionScope @default(PRODUCT)\n usage PromotionUsage @default(ONCE)\n /// Percentage off, 0-100 (legacy discount_percent).\n discountPercent Decimal @db.Decimal(6, 3)\n isActive Boolean @default(true)\n /// Which storefront it shows on, mirroring Product.showType (legacy platform).\n platform Int @default(3)\n\n startsAt DateTime?\n endsAt DateTime?\n\n /// Exactly one of these is populated, per `scope`.\n productId String?\n product Product? @relation(fields: [productId], references: [id])\n categoryId String?\n category Category? @relation(fields: [categoryId], references: [id])\n customerId String?\n customer Customer? @relation(fields: [customerId], references: [id])\n brandId String?\n brand Brand? @relation(fields: [brandId], references: [id])\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([scope, isActive])\n}\n\n/// Legacy \"ignore\" table (views/offersIgnore) — specific products, categories,\n/// customers or brands excluded from the automatic discount engine.\n/// Legacy posts { type, item_id[] }: \"type\" reuses the promotion scope codes\n/// (1 محصولات | 2 دسته بندی | 3 مشتری | 4 برند) and \"itemId\" is the excluded row.\nmodel PromotionExclusion {\n id String @id @default(cuid())\n type Int\n itemId String\n createdAt DateTime @default(now())\n\n @@unique([type, itemId])\n @@index([type])\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Branch stock allocation — legacy views/invoice/* (\"فاکتور انتقال\"), served by\n// BranchController as `branch/product`. Despite the screen being called an\n// invoice, it is not a sales document: it records which products head office\n// allocated to a branch, and who allocated them.\n// ─────────────────────────────────────────────────────────────────────────\n\nmodel BranchAllocation {\n id String @id @default(cuid())\n branchId String\n branch Branch @relation(fields: [branchId], references: [id])\n\n /// Legacy `allocator_user` — the admin who filed the allocation.\n allocatorAdminId String? @map(\"allocatorAdminUserId\")\n allocatorAdmin Admin? @relation(\"AllocationAuthor\", fields: [allocatorAdminId], references: [id])\n\n note String?\n createdAt DateTime @default(now())\n\n items BranchAllocationItem[]\n\n @@index([branchId])\n}\n\nmodel BranchAllocationItem {\n id String @id @default(cuid())\n allocationId String\n allocation BranchAllocation @relation(fields: [allocationId], references: [id], onDelete: Cascade)\n productId String\n product Product @relation(fields: [productId], references: [id])\n /// Weight snapshot at allocation time, so later catalog edits do not rewrite history.\n weightGrams Decimal? @db.Decimal(14, 4)\n\n @@unique([allocationId, productId])\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Messaging + audit — legacy views/sms, views/notify, views/newsletters and\n// views/statics. None of these had a model in the redesigned schema.\n// ─────────────────────────────────────────────────────────────────────────\n\n/// Who an SMS or notification was aimed at. Legacy's sms/create offered these\n/// audiences, each gated by its own rid (sms.create.all, .omde, .single, ...).\nenum MessageAudience {\n SINGLE_NUMBER // یک شماره\n MULTIPLE_NUMBERS // چند شماره\n ALL_CUSTOMERS // همه\n WHOLESALE_CUSTOMERS // عمده\n RETAIL_CUSTOMERS // تک\n SALES_AGENTS // کارشناسان فروش\n}\n\nmodel SmsMessage {\n id String @id @default(cuid())\n audience MessageAudience\n /// Comma-separated recipients for the SINGLE/MULTIPLE audiences.\n recipients String?\n body String\n /// How many numbers the send actually resolved to.\n sentCount Int @default(0)\n\n sentByAdminId String? @map(\"sentByAdminUserId\")\n sentByAdmin Admin? @relation(\"SmsAuthor\", fields: [sentByAdminId], references: [id])\n\n createdAt DateTime @default(now())\n\n @@index([createdAt])\n}\n\nmodel Notification {\n id String @id @default(cuid())\n title String\n body String\n audience MessageAudience @default(ALL_CUSTOMERS)\n\n sentByAdminId String? @map(\"sentByAdminUserId\")\n sentByAdmin Admin? @relation(\"NotificationAuthor\", fields: [sentByAdminId], references: [id])\n\n createdAt DateTime @default(now())\n\n recipients NotificationRecipient[]\n\n @@index([createdAt])\n}\n\n/// Per-customer delivery + read state — legacy `GET notify/read/{id}`.\nmodel NotificationRecipient {\n id String @id @default(cuid())\n notificationId String\n notification Notification @relation(fields: [notificationId], references: [id], onDelete: Cascade)\n customerId String\n customer Customer @relation(fields: [customerId], references: [id])\n readAt DateTime?\n\n @@unique([notificationId, customerId])\n @@index([customerId, readAt])\n}\n\n/// Legacy views/newsletters — the mailing-list signups collected by the site.\nmodel NewsletterSubscriber {\n id String @id @default(cuid())\n email String?\n mobile String?\n createdAt DateTime @default(now())\n\n @@unique([email])\n @@unique([mobile])\n}\n\n/// Legacy views/statics — the customer activity log the \"آمار\" screen reads\n/// (`log/list/customer`, `log/ago/{customerId}`).\nmodel CustomerActivityLog {\n id String @id @default(cuid())\n customerId String\n customer Customer @relation(fields: [customerId], references: [id])\n /// Free-form action key, e.g. 'login', 'order.placed', 'profile.updated'.\n action String\n detail String?\n createdAt DateTime @default(now())\n\n @@index([customerId, createdAt])\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Uploads — replaces the legacy MyUpload / SingleUploadInput widgets, which\n// POSTed to a file endpoint and stored the returned URL on the owning record.\n// Ports of those forms currently take a URL by hand; this gives them a real\n// destination to upload to.\n// ─────────────────────────────────────────────────────────────────────────\n\nmodel UploadedFile {\n id String @id @default(cuid())\n /// Public URL the stored file is served from.\n url String\n originalName String\n mimeType String\n sizeBytes Int\n /// Free-form tag for what the file belongs to, e.g. 'product', 'category',\n /// 'customer.nationalId'. Kept loose so a new form needs no schema change.\n purpose String?\n\n uploadedByAdminId String? @map(\"uploadedByAdminUserId\")\n uploadedByAdmin Admin? @relation(\"FileUploader\", fields: [uploadedByAdminId], references: [id])\n\n createdAt DateTime @default(now())\n customerAvatars Customer[] @relation(\"CustomerAvatar\")\n adminUserAvatars AdminUser[] @relation(\"AdminUserAvatar\")\n\n @@index([purpose])\n}\n\n/// One OTP login challenge for a customer.\n///\n/// Ports henza_server's flow (ApiMobileController.php:39-78), where userAuth\n/// generated rand(1000,9999), stored it on the customer row as `send_password`\n/// and sent it by SMS, and userVerfiy compared the submitted code against it\n/// (mismatch -> HTTP 422).\n///\n/// Three deliberate improvements over the reference, approved by the user\n/// (docs/parity/DECISIONS.md D6 and T1):\n/// 1. the code is stored as a bcrypt hash, never in plain text — the\n/// reference kept it readable in a customer column;\n/// 2. it expires (`expiresAt`) — the reference's code stayed valid forever;\n/// 3. attempts are counted and the challenge locks out — the reference had\n/// no limit at all.\n/// The parity behaviour itself is the code comparison and the rejection.\nmodel CustomerOtp {\n id String @id @default(cuid())\n /// Normalised to English digits before storing, as the reference does with\n /// Utility::faTOen() on both send and verify.\n mobile String\n customerId String\n customer Customer @relation(fields: [customerId], references: [id], onDelete: Cascade)\n\n /// bcrypt hash of the 4-digit code. Never the code itself.\n codeHash String\n expiresAt DateTime\n /// Failed verify attempts against THIS challenge.\n attempts Int @default(0)\n /// Set when the code is accepted, so one challenge cannot be reused.\n consumedAt DateTime?\n\n /// Kept for the per-IP send throttle.\n requestIp String?\n createdAt DateTime @default(now())\n\n @@index([mobile, createdAt])\n @@index([customerId])\n @@index([expiresAt])\n}\n\n/// Bespoke migration ledger left by the EARLIER, pre-Prisma port.\n///\n/// It predates Prisma Migrate in this repo and holds 12 historical rows\n/// (`0001_init.sql`, `0002_admin_schema.sql`, `seed:initial`, and the early\n/// `2026091…` migrations). It is the only record of how that port was applied,\n/// so it is **kept and never written to or deleted from** (DEAD-07).\n///\n/// It is declared here purely so `prisma migrate diff` stops proposing\n/// `DROP TABLE \"_goldbank_migrations\"` — an undeclared table reads as drift.\n/// `@@ignore` keeps it out of Prisma Client: nothing in the application should\n/// ever read or write it, and Prisma Migrate will not manage its shape either.\n///\n/// Prisma's own ledger is `_prisma_migrations`, which is separate and is never\n/// edited by hand (D14).\nmodel goldbank_migrations {\n name String @id\n appliedAt DateTime @default(now()) @map(\"applied_at\") @db.Timestamptz(6)\n\n @@map(\"_goldbank_migrations\")\n @@ignore\n}\n", + "inlineSchemaHash": "a585cc19be73f276fc7b69b9887c40ffbe4b18533ee008f6e0bff385de7c71f5", "copyEngine": true } config.dirname = '/' -config.runtimeDataModel = JSON.parse("{\"models\":{\"City\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"parentId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"parent\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"City\",\"relationName\":\"CityTree\",\"relationFromFields\":[\"parentId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Restrict\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"children\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"City\",\"relationName\":\"CityTree\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"percent\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy cities.percent / percent_aux — per-city wage surcharges the city\\\\nscreen edits through GET cities/get-percent/{id} and get-percent-aux/{id}.\"},{\"name\":\"percentAux\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customers\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CityToCustomer\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"addresses\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"CustomerAddress\",\"relationName\":\"CityToCustomerAddress\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branches\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Branch\",\"relationName\":\"BranchToCity\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"preOrders\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"PreOrder\",\"relationName\":\"CityToPreOrder\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"salesExpertProfiles\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"SalesExpertProfile\",\"relationName\":\"CityToSalesExpertProfile\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"Legacy `cities` is a tree (country > province > city > district) and so is\\\\nthis: a city hangs under its `parent`. In the admin pickers a top-level row\\\\n(the country) is a heading, not selectable (henza_admin citiesModel.js:38).\"},\"Admin\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"fullName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"firstName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"lastName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"mobile\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"passwordHash\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"role\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AdminRole\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Never SALES_EXPERT — that role lives in AdminUser. Enforced in\\\\nAdminUsersService, not in the database, so the enum stays shared.\"},{\"name\":\"userTypeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"userType\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"UserType\",\"relationName\":\"AdminToUserType\",\"relationFromFields\":[\"userTypeId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branchId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branch\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Branch\",\"relationName\":\"AdminToBranch\",\"relationFromFields\":[\"branchId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"supervisedWorkshops\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Workshop\",\"relationName\":\"WorkshopSupervisor\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branchAllocations\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"BranchAllocation\",\"relationName\":\"AllocationAuthor\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"postedLedgerEntries\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"LedgerEntry\",\"relationName\":\"AdminToLedgerEntry\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orderStatusEvents\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"OrderStatusEvent\",\"relationName\":\"AdminToOrderStatusEvent\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"preOrderStatusEvents\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"PreOrderStatusEvent\",\"relationName\":\"AdminToPreOrderStatusEvent\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sentSmsMessages\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"SmsMessage\",\"relationName\":\"SmsAuthor\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sentNotifications\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Notification\",\"relationName\":\"NotificationAuthor\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"uploadedFiles\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"UploadedFile\",\"relationName\":\"FileUploader\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sessions\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AdminSession\",\"relationName\":\"AdminToAdminSession\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Issued admin-panel tokens, recorded only while session tracking is on\\\\n(AUTH_SESSION_TRACKING, or implicitly whenever the IAM is enabled) so a\\\\ntoken can be revoked before it expires. See AdminSession.\"}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"A staff account for the ADMIN PANEL — and nothing else.\\\\n\\\\nSplit out of AdminUser (which now holds sales experts only) so that:\\\\n* the same mobile can be an admin AND a sales expert — they are two\\\\nseparate roles, each unique only within its own table;\\\\n* the expert table (production: ~12,000 rows) is never written by panel\\\\nstaff management.\\\\nMigration 20261026120000_split_admin_table copies the existing non-expert\\\\nAdminUser rows here WITH THEIR IDS, so issued panel tokens and every\\\\n\\\"who did this\\\" column keep resolving. The old rows are left in AdminUser,\\\\ndormant; no code reads them as admins any more.\\\\n\\\\n⚠️ fullName/firstName/lastName are kept in sync by the DB trigger\\\\n`admin_sync_full_name_trg` (it shares the function admin_user_sync_full_name) — same semantics as AdminUser: the parts win.\"},\"AdminUser\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"fullName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"⚠️ Kept in sync BY A DATABASE TRIGGER — `admin_user_sync_full_name`, from\\\\nmigration 20260922180000. Prisma cannot see it, so a write here may store\\\\nsomething other than what you passed:\\\\n\\\\n* write the parts -> fullName is rebuilt as \\\"first last\\\"\\\\n* write fullName only -> the parts are re-derived from it\\\\n* write BOTH in one update -> THE PARTS WIN; the submitted fullName is\\\\ndiscarded\\\\n\\\\nRe-read after writing if you need the stored value. Same arrangement as\\\\nCustomer (D0 requirement 7 — the split applies to ALL admins, not only\\\\nsales experts).\"},{\"name\":\"firstName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"lastName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"mobile\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"passwordHash\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"role\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AdminRole\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"userTypeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy `users.ut`. Granular ACL lives here (Permission rows hang off UserType);\\\\nthe coarse `role` enum above is retained for the business rules that already\\\\nswitch on it. Nullable so existing seeded admins remain valid.\"},{\"name\":\"userType\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"UserType\",\"relationName\":\"AdminUserToUserType\",\"relationFromFields\":[\"userTypeId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branchId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branch\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Branch\",\"relationName\":\"AdminUserToBranch\",\"relationFromFields\":[\"branchId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"wagePercent\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"avatarFileId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy stored a sales agent as a `customers` row with type=1, so\\\\nReagentCustomer.vue's shared form collected these alongside the\\\\nwholesale-customer fields. A sales agent is now an AdminUser\\\\n(role=SALES_EXPERT), so these live here instead — only ever set for that\\\\nrole; every other AdminUser leaves them null.\"},{\"name\":\"avatarFile\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"UploadedFile\",\"relationName\":\"AdminUserAvatar\",\"relationFromFields\":[\"avatarFileId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"address\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"storeName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"pasazhName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"memberCode\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"referredCustomers\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"ReferralAgent\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"creditedOrders\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"OrderSalesAgent\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Orders credited to this sales expert — see Order.salesAgentId.\"},{\"name\":\"salesExpertProfile\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"SalesExpertProfile\",\"relationName\":\"AdminUserToSalesExpertProfile\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Only ever set for role = SALES_EXPERT (D17).\"}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"A SALES EXPERT (role SALES_EXPERT). Panel staff live in `Admin`; rows here with\\\\nany other role are pre-split leftovers and are ignored by the code.\"},\"AppSession\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"jti\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"The token's `jti` claim. Unique: one row per issued token.\"},{\"name\":\"subjectId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Customer.id, or AdminUser.id when subjectType is \\\"sales-expert\\\".\"},{\"name\":\"subjectType\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"mobile\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"iamSessionId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Set when the login was confirmed by the central IAM: its session id (`sid`)\\\\nand stable user id (`sub`), which is what a back-channel logout arrives with.\"},{\"name\":\"iamSub\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"ipAddress\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"userAgent\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"lastSeenAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"revokedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"revokedReason\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"An issued APP token (customer app / sales-expert app), so it can be revoked\\\\nbefore it expires — the counterpart of AdminSession for the other token family.\\\\n\\\\nWHY A SEPARATE TABLE AND NO FOREIGN KEY\\\\n---------------------------------------\\\\nAn app token's `sub` is a Customer id for a customer and an **AdminUser id**\\\\nfor a sales expert (D21). One FK cannot point at two tables, so the subject is\\\\nstored as a plain id plus its type. The rows are short-lived operational data,\\\\nnot part of the accounting model, so the missing FK costs nothing here.\"},\"AdminSession\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"jti\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"The token's `jti` claim. Unique: one row per issued token.\"},{\"name\":\"adminId\",\"dbName\":\"adminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"admin\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"AdminToAdminSession\",\"relationFromFields\":[\"adminId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"iamSessionId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Set when the login was verified by the IAM: its session id (`sid`) and the\\\\nstable user id (`sub`) there. Back-channel logout arrives keyed by these —\\\\ndeliberately here rather than as columns on AdminUser, so enabling the\\\\nfeature needs no change to an existing table.\"},{\"name\":\"iamSub\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"ipAddress\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"userAgent\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"lastSeenAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"revokedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"revokedReason\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"An issued admin-panel JWT, so it can be revoked before it expires.\\\\n\\\\nWHY THIS EXISTS\\\\n---------------\\\\nThe admin token is self-contained and valid for 12h, which means nothing —\\\\nnot disabling the account, not a central \\\"sign out everywhere\\\" — could cut a\\\\nsession short: the token kept working until it expired. With the central IAM\\\\nin the loop that gap became visible (an IAM session revocation had no effect\\\\nhere), so every issued token now carries a `jti` recorded on this table and\\\\nJwtStrategy refuses a token whose row is revoked.\\\\n\\\\nRows are written ONLY while tracking is enabled, and JwtStrategy only\\\\nenforces them while it is enabled, so a deployment that does not want the\\\\nextra lookup behaves exactly as before.\"},\"SalesExpertProfile\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"adminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"adminUser\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AdminUser\",\"relationName\":\"AdminUserToSalesExpertProfile\",\"relationFromFields\":[\"adminUserId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"cityId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy customers.city_id — a filterable grid column\\\\n(ReagentListModel.js:14) and the source of the commission autofill\\\\n(ReagentCustomer.vue:215-228).\"},{\"name\":\"city\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"City\",\"relationName\":\"CityToSalesExpertProfile\",\"relationFromFields\":[\"cityId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"gramLevel\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy customers.gram_level — the «سطح اعتبار» column, filterable.\\\\nDecimal(14,4) matches Customer.goldCreditLimitGrams exactly so the same\\\\ncredit limit has identical precision on both tables.\"},{\"name\":\"phone\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy customers.phone (varchar 15) and ncode (varchar 20). The reference\\\\nstores both and reads neither back; kept so the form matches it. Neither\\\\nis unique and neither has a validation rule in the reference — inventing\\\\none would reject data the reference accepts.\"},{\"name\":\"nationalCode\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"tradingCustomerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":true,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"The Customer row carrying this expert's OWN orders, debt and credit limit.\\\\n\\\\nThe reference stored a sales agent AS a Customer (type=1), so an order the\\\\nagent placed from the app was simply their own, against their own\\\\ngram_level (ApiMobileController.php:534-535). Here the expert is an\\\\nAdminUser (D17), which has no ledger and cannot be an Order's subject, so\\\\nthis one linked Customer plays that part.\\\\n\\\\nDistinct from the expert's REFERRED customers, which are ordinary Customer\\\\nrows pointing at the AdminUser through Customer.referredByAgentId.\\\\n\\\\nNull until the expert first signs into the app, when it is created from\\\\nthis profile. See D21.\"},{\"name\":\"tradingCustomer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"SalesExpertTradingAccount\",\"relationFromFields\":[\"tradingCustomerId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"SetNull\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":true}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"The sales-expert fields legacy kept on the `customers` row (type=1) and that\\\\nwere lost when a sales expert became an AdminUser (D17).\\\\n\\\\nA separate table rather than columns on AdminUser: these are meaningful only\\\\nfor role = SALES_EXPERT and would be permanently null for every other admin.\\\\nA row is created for every SALES_EXPERT by the migration, and upserted by the\\\\nservice whenever one is created or a user's role becomes SALES_EXPERT — but\\\\nreaders still left-join, so a missing profile degrades to nulls rather than\\\\ndropping the agent from the grid.\\\\n\\\\n`reagent_id` is deliberately NOT here — see D17: in the reference it was a\\\\nside effect of the shared customers form, and filling it removed that expert\\\\nfrom the selectable-agent list (queryReagent, AdminController.php:420).\"},\"Customer\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"fullName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"⚠️ `fullName`, `firstName` and `lastName` are kept in sync BY A DATABASE\\\\nTRIGGER — `customer_sync_full_name`, created in migration\\\\n20260922120000_customer_name_parts. Prisma does not know about it, so a\\\\nwrite here is NOT the whole story:\\\\n\\\\n* write the parts -> fullName is rebuilt as \\\"first last\\\"\\\\n* write fullName only -> the parts are re-derived from it\\\\n* write BOTH in one update -> THE PARTS WIN; fullName is overwritten\\\\nwith \\\"first last\\\" and whatever you passed for fullName is discarded\\\\n\\\\nSo a value you wrote can differ from the value that lands in the row.\\\\nRe-read after writing if you need the stored value. Prefer writing the\\\\nparts; `fullName` exists for the legacy readers that predate D0.\\\\n\\\\nReference has these as two columns from the start\\\\n(henza_server 2020_10_01_120430_customers_table.php:18-19 fname/lname);\\\\nthe port collapsed them, which is the D0 defect.\"},{\"name\":\"firstName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"lastName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"mobile\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"nationalCode\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy customers.ncode. OPTIONAL since 2026-10-07: not one of the 1,616\\\\nlegacy customers has a national code (1595/1595 empty), and fabricating\\\\none is a data violation that would block later legal identity checks\\\\n(owner ruling). Still @unique — in PostgreSQL NULLs do not collide, so\\\\nthe migration tool must write NULL and never '', which would collide on\\\\nthe second row.\\\\n\\\\nThree service-layer workarounds exist ONLY because this used to be\\\\nrequired, and they store the MOBILE NUMBER here:\\\\nadmin-customers.service.ts:625,685 and customer-auth.service.ts:258.\\\\nRetiring them is a separate change; see docs/DATA-MIGRATION-MAP.md §10.4.\"},{\"name\":\"passwordHash\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"cityId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"city\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"City\",\"relationName\":\"CityToCustomer\",\"relationFromFields\":[\"cityId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"cityNameRaw\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy customers.new_city — the city name exactly as the customer typed it\\\\nat app sign-up (Major/CustomerController.php:36). Kept verbatim because\\\\nthe legacy city table has only 15 rows, so the typed name is often the only\\\\nrecord of where the customer is (172 customers; 43 match no known city).\\\\ncityId is set alongside it only on an exact, ي/ك-normalised name match.\\\\nLegacy sign-up also forced city_id = 5 (Tehran) on everyone\\\\n(Major/CustomerController.php:21), so for those rows the typed name, not\\\\ncityId, is the truth. Owner ruling 2026-10-07: keep both.\"},{\"name\":\"kind\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"CustomerKind\",\"default\":\"APP_SHOPKEEPER\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy Customer.type — distinguishes بنکدار from مغازه دار, which the\\\\nBankerList / ShopkeeperList screens filter on.\"},{\"name\":\"phone\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy contact + shop columns, shown on the wholesale customer form and as\\\\n(hidden-by-default) columns in its grid.\"},{\"name\":\"address\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"storeName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"pasazhName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"zone\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"memberCode\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy mcode — the operator-assigned customer code.\"},{\"name\":\"referredByAgentId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"referredByAgent\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AdminUser\",\"relationName\":\"ReferralAgent\",\"relationFromFields\":[\"referredByAgentId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"salesExpertTradingFor\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"SalesExpertProfile\",\"relationName\":\"SalesExpertTradingAccount\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Set only on the one Customer row that acts as a sales expert's own trading\\\\naccount (see SalesExpertProfile.tradingCustomerId). Empty for every\\\\nordinary customer.\"},{\"name\":\"referredOrders\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"OrderReferrerCustomer\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy orders that named THIS customer as their referrer — see\\\\nOrder.referrerCustomerId. History only.\"},{\"name\":\"goldCreditLimitGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"goldDebtGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"fiatDebtRial\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"accountingGoldBalance\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Balance as last read from the accounting software (D27), in the app's own\\\\nsign convention (positive = owes). Shown to the customer when the\\\\nintegration is on; the credit-limit check still uses goldDebtGrams above.\\\\nNull until the first successful sync.\"},{\"name\":\"accountingRialBalance\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"accountingBalanceAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"makingChargeOffsetPercent\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy `customers.percent` — the per-customer making-charge offset. It is\\\\nADDED to the variant's making charge when pricing an order line\\\\n(henza_pwa src/Mixins/product/index.ts:69-75:\\\\ngetWage(v) = state.percent + v.percentage_pay)\\\\nand it shifts the catalogue making-charge filter bounds\\\\n(ApiMobileController.php:391-396,76-77). It is NOT part of the price\\\\nformula itself — that extra percent is ConfigStatic['product_price_extra_percent'].\\\\n\\\\nNOT the wallet cashback rate (storefront ConfigStatic['percent'], D13) and\\\\nNOT the wholesale per-line charge (OrderItem.wagePercentSnapshot).\\\\n\\\\nDB default 0 keeps every existing customer's price unchanged. The\\\\nreference's application-layer default for NEW customers is 3\\\\n(AdminController.php:338) and the field is required on create (:354).\"},{\"name\":\"verificationStep\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"VerificationStep\",\"default\":\"UNVERIFIED\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"nationalIdImageUrl\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"businessLicenseUrl\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"shopImageUrl\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"verificationRejectionReason\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Why verification was rejected (VerificationStep.REJECTED).\\\\n\\\\nLegacy recorded NO reason: none of its 49 `customers` columns is a\\\\nreason/note field, and on rejection it only sent a fixed SMS. So the 14\\\\nrows migrated from the legacy system carry the sentinel\\\\n«رد شده در سیستم قدیم — فاقد شرح علت ثبت‌شده» instead of NULL, so support\\\\nknows why it is blank (owner ruling 2026-10-07). The migration tool\\\\nwrites it only WHERE this IS NULL, so a re-run cannot overwrite a real\\\\nreason entered in the new system.\"},{\"name\":\"verificationRejectedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"NULL for rows migrated from the legacy system — it recorded no rejection time.\"},{\"name\":\"birthDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy customers.birth_date, populated on 917 of 1,595 rows. Kept for the\\\\nbirthday SMS / loyalty campaigns (owner ruling 2026-10-07).\\\\n\\\\n⚠ Legacy stores dates as JALALI STRINGS in other tables\\\\n(cashes.recive_date is varchar, 88/89 values starting \\\"14…\\\"), so this\\\\ntimestamp may hold mis-entered Jalali years. Confirm the calendar with\\\\ndocs/migration-precheck-3.sql BEFORE backfilling: copying them unchanged\\\\nwould produce 917 wrong birthdays, worse for an SMS campaign than none.\"},{\"name\":\"avatarFileId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy `image_id` — the profile photo (عکس پروفایل) on the sales-agent\\\\nform. Legacy stored an FK to its Image table and read it back as a nested\\\\n`image: { id, image }`, so this is a relation, not a bare URL string.\"},{\"name\":\"avatarFile\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"UploadedFile\",\"relationName\":\"CustomerAvatar\",\"relationFromFields\":[\"avatarFileId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"canPlaceOrders\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy had TWO independent switches on a customer:\\\\nsts -> may they place orders (this field)\\\\nactive -> is the account enabled (isActive, below)\\\\nThe port previously drove both from isActive; they are separate again.\"},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isArchived\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy archive flag — the archived list filtered on this, not on isActive.\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"addresses\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"CustomerAddress\",\"relationName\":\"CustomerToCustomerAddress\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orders\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"CustomerToOrder\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"preOrders\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"PreOrder\",\"relationName\":\"CustomerToPreOrder\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"ledgerEntries\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"LedgerEntry\",\"relationName\":\"CustomerToLedgerEntry\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"walletBonuses\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"WalletBonus\",\"relationName\":\"CustomerToWalletBonus\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"comments\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Comment\",\"relationName\":\"CommentToCustomer\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"promotions\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Promotion\",\"relationName\":\"CustomerToPromotion\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"notifications\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"NotificationRecipient\",\"relationName\":\"CustomerToNotificationRecipient\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"activityLogs\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"CustomerActivityLog\",\"relationName\":\"CustomerToCustomerActivityLog\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"otpChallenges\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"CustomerOtp\",\"relationName\":\"CustomerToCustomerOtp\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"favorites\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"CustomerFavorite\",\"relationName\":\"CustomerToCustomerFavorite\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"CustomerFavorite\":{\"dbName\":null,\"fields\":[{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToCustomerFavorite\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"product\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Product\",\"relationName\":\"CustomerFavoriteToProduct\",\"relationFromFields\":[\"productId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":{\"name\":null,\"fields\":[\"customerId\",\"productId\"]},\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"Legacy `fav` (251 rows) — saved products. The target had no model for this,\\\\nso every customer's favourites would have been lost in the migration; the\\\\nowner confirmed on 2026-10-06 that they matter.\\\\n\\\\nLegacy `fav` has two columns and NO primary key. The composite key here\\\\nsupplies the constraint the source lacks (the precheck found 0 duplicate\\\\npairs, but the tool should still SELECT DISTINCT). 14 of the 251 rows point\\\\nat a deleted customer and must be skipped.\\\\n\\\\nLegacy's denormalised `product.count_fav` counter is deliberately NOT\\\\nrecreated as a column — derive it from this table.\"},\"CustomerAddress\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToCustomerAddress\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"cityId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"city\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"City\",\"relationName\":\"CityToCustomerAddress\",\"relationFromFields\":[\"cityId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"addressLine\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isDefault\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Branch\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"address\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy Branch.address / phone — both are columns in the branch grid.\"},{\"name\":\"phone\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy GET branch/active/{id} toggles this.\"},{\"name\":\"cityId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"city\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"City\",\"relationName\":\"BranchToCity\",\"relationFromFields\":[\"cityId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"adminUsers\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AdminUser\",\"relationName\":\"AdminUserToBranch\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"admins\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"AdminToBranch\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orders\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"BranchToOrder\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"allocations\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"BranchAllocation\",\"relationName\":\"BranchToBranchAllocation\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Workshop\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"address\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy Workshop.address / phone — both are columns in the workshop grid.\"},{\"name\":\"phone\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"supervisorId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"The supervisor created alongside the workshop by the legacy Add form.\"},{\"name\":\"supervisor\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"WorkshopSupervisor\",\"relationFromFields\":[\"supervisorId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"preOrders\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"PreOrder\",\"relationName\":\"PreOrderToWorkshop\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Category\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"title\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"type\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":1,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy Category.type — which storefront the category belongs to:\\\\n1 سایت | 2 اپلیکشن موبایل. Drives the \\\"type_str\\\" grid column.\"},{\"name\":\"imageUrl\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy Category.image / icon — the grid renders the image, the storefront the icon.\"},{\"name\":\"iconUrl\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"metaTag\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy meta tag + description, used for SEO on the site categories.\"},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"parentId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"parent\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Category\",\"relationName\":\"CategoryTree\",\"relationFromFields\":[\"parentId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"children\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Category\",\"relationName\":\"CategoryTree\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"products\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Product\",\"relationName\":\"CategoryToProduct\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"promotions\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Promotion\",\"relationName\":\"CategoryToPromotion\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Brand\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"title\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"products\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Product\",\"relationName\":\"BrandToProduct\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"promotions\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Promotion\",\"relationName\":\"BrandToPromotion\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Collection\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"title\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"products\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"CollectionProduct\",\"relationName\":\"CollectionToCollectionProduct\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"Curated product groupings — replaces legacy \\\"Ciny/CinyProduct\\\" (a tagging\\\\nfeature, NOT a gold-price snapshot mechanism, despite the misleading legacy name).\"},\"CollectionProduct\":{\"dbName\":null,\"fields\":[{\"name\":\"collectionId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"collection\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Collection\",\"relationName\":\"CollectionToCollectionProduct\",\"relationFromFields\":[\"collectionId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"product\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Product\",\"relationName\":\"CollectionProductToProduct\",\"relationFromFields\":[\"productId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":{\"name\":null,\"fields\":[\"collectionId\",\"productId\"]},\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Product\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"title\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"categoryId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"category\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Category\",\"relationName\":\"CategoryToProduct\",\"relationFromFields\":[\"categoryId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"brandId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"brand\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Brand\",\"relationName\":\"BrandToProduct\",\"relationFromFields\":[\"brandId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productCode\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy Product.product_code — the human-facing SKU shown in the grid.\"},{\"name\":\"showType\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":3,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy Product.show_type: 1 site, 2 mobile, 3 both.\"},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"tags\",\"kind\":\"scalar\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":[],\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Labels from Setting `__list__tags`, assigned on the product form. The\\\\nstorefront shows them on list cards only (not the product detail page).\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"accountingStockWeight\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Stock of the linked کارساخته as last read from the accounting software\\\\n(D27). Weight for gram-type items, count for count-type ones — whichever\\\\nthe software reports. At zero or below the product is unavailable in the\\\\napp (pre-order variants excepted). Null = not linked or never synced.\"},{\"name\":\"accountingStockCount\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"accountingStockAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"variants\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ProductVariant\",\"relationName\":\"ProductToProductVariant\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"images\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ProductImage\",\"relationName\":\"ProductToProductImage\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"collections\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"CollectionProduct\",\"relationName\":\"CollectionProductToProduct\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"comments\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Comment\",\"relationName\":\"CommentToProduct\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"promotions\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Promotion\",\"relationName\":\"ProductToPromotion\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"allocationItems\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"BranchAllocationItem\",\"relationName\":\"BranchAllocationItemToProduct\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"favoritedBy\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"CustomerFavorite\",\"relationName\":\"CustomerFavoriteToProduct\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ProductImage\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"product\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Product\",\"relationName\":\"ProductToProductImage\",\"relationFromFields\":[\"productId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"url\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sortOrder\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"role\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"ProductImageRole\",\"default\":\"GALLERY\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy had 4 distinct upload slots (تصویر شاخص / تصویر شاخص موبایل /\\\\nگالری تصاویر سایت / گالری تصاویر موبایل) — GALLERY is the default so\\\\nexisting rows and any generic \\\"just attach an image\\\" caller keep working.\"},{\"name\":\"variants\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ProductVariant\",\"relationName\":\"ProductImageToProductVariant\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Variants that display this image. A gallery image may back several\\\\nvariants (one photo, several weights), which is why this is a plain\\\\none-to-many and not a join table.\"}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ProductVariant\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"product\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Product\",\"relationName\":\"ProductToProductVariant\",\"relationFromFields\":[\"productId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"title\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sku\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"rashWeightGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Base/raw weight before making charge (\\\"rash weight\\\").\"},{\"name\":\"defaultWagePercent\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Default making-charge percentage applied on top of rash weight.\"},{\"name\":\"qty\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy ProductVariant.qty — on-hand stock. The cart refuses a variant with\\\\nqty 0 unless it is flagged pre-order, so both fields are required for that\\\\nguard to work (see apps/admin-panel/src/stores/cart.ts).\"},{\"name\":\"isPreOrder\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy is_pre_order: orderable even at zero stock.\"},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"color\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy color enum: 0=سفید, 1=زرد, 2=شکلاتی, 3=رزگلد\"},{\"name\":\"rialWage\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy rial_pay — fixed Rial making charge per variant.\"},{\"name\":\"details\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy details — short description for variant.\"},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy description — full description for variant.\"},{\"name\":\"imageId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"The gallery image shown for this variant, picked from its own product's\\\\nimages — never a re-uploaded copy. onDelete: SetNull because dropping an\\\\nimage must never cascade into the variant: OrderItem rows reference\\\\nvariants, so losing one would break order history.\"},{\"name\":\"image\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ProductImage\",\"relationName\":\"ProductImageToProductVariant\",\"relationFromFields\":[\"imageId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"SetNull\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orderItems\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"OrderItem\",\"relationName\":\"OrderItemToProductVariant\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Order\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orderNumber\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToOrder\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branchId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branch\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Branch\",\"relationName\":\"BranchToOrder\",\"relationFromFields\":[\"branchId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"channel\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"OrderChannel\",\"default\":\"RETAIL\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Which sales channel placed this order — see OrderChannel.\"},{\"name\":\"status\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"OrderStatus\",\"default\":\"PLACED\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"revisionStatus\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"OrderRevisionStatus\",\"default\":\"NONE\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Pending admin edit awaiting customer confirm (or admin force/discard).\"},{\"name\":\"totalGoldWeightGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Total gold weight incl. wage across all items (\\\"allGram\\\" / order.w).\"},{\"name\":\"wageWeightGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Pure making-charge weight component (totalGoldWeightGrams minus raw weight sum).\"},{\"name\":\"flatRialCharge\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Flat Rial charge independent of gold price (e.g. stones) — legacy rial_input.\"},{\"name\":\"isSuspendedOverCreditLimit\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"deliveredAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"salesAgentId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"The sales expert this order is credited to, fixed when it is placed:\\\\nthe customer's referring expert AT THAT MOMENT. Legacy `orders.reagent_id`,\\\\nset once at creation (ApiMobileController.php:601) and never moved, so a\\\\ncustomer changing expert later does not move past sales or commission\\\\n(owner ruling 2026-10-08). «میزان فروش» counts from here, never from the\\\\ncustomer's current referrer.\"},{\"name\":\"salesAgent\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AdminUser\",\"relationName\":\"OrderSalesAgent\",\"relationFromFields\":[\"salesAgentId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"SetNull\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"referrerCustomerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"History only: a legacy order whose `reagent_id` named a customer who is\\\\nnot a sales expert (one such customer, 17 orders in 2022). Legacy counted\\\\nthose orders in that customer's own «میزان فروش»; this keeps that figure\\\\nexact. Never set for a new order.\"},{\"name\":\"referrerCustomer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"OrderReferrerCustomer\",\"relationFromFields\":[\"referrerCustomerId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"SetNull\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"items\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"OrderItem\",\"relationName\":\"OrderToOrderItem\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"statusEvents\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"OrderStatusEvent\",\"relationName\":\"OrderToOrderStatusEvent\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"ledgerEntries\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"LedgerEntry\",\"relationName\":\"LedgerEntryToOrder\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"revisions\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"OrderRevision\",\"relationName\":\"OrderToOrderRevision\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"convertedFromPreOrder\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"PreOrder\",\"relationName\":\"OrderToPreOrder\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"OrderRevision\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orderId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"order\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"OrderToOrderRevision\",\"relationFromFields\":[\"orderId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"items\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Json\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Proposed lines: [{ productVariantId, quantity, rashWeightGramsSnapshot,\\\\nwagePercentSnapshot, discountPercentSnapshot, computedWeightGrams, flatRialCharge }]\"},{\"name\":\"totalGoldWeightGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"wageWeightGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"flatRialCharge\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"proposedByAdminId\",\"dbName\":\"proposedByAdminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"note\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerDecision\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"null | ACCEPTED | REJECTED — reject leaves AWAITING_CUSTOMER for admin decision.\"},{\"name\":\"customerDecidedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"appliedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"discardedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"Proposed line-item edit for an Order. Live until applied or discarded.\\\\nWhile pending, Order.revisionStatus = AWAITING_CUSTOMER and charged figures\\\\nstay on the current Order until the customer confirms (or admin force-applies).\"},\"OrderItem\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orderId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"order\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"OrderToOrderItem\",\"relationFromFields\":[\"orderId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productVariantId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productVariant\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ProductVariant\",\"relationName\":\"OrderItemToProductVariant\",\"relationFromFields\":[\"productVariantId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"quantity\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"rashWeightGramsSnapshot\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"wagePercentSnapshot\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"discountPercentSnapshot\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"computedWeightGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"computed: rash*(1 + (wagePercent-discount)/100)\"},{\"name\":\"flatRialCharge\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"OrderStatusEvent\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orderId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"order\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"OrderToOrderStatusEvent\",\"relationFromFields\":[\"orderId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"fromStatus\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"OrderStatus\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"toStatus\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"OrderStatus\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"note\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"actorAdminId\",\"dbName\":\"actorAdminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"actorAdmin\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"AdminToOrderStatusEvent\",\"relationFromFields\":[\"actorAdminId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"PreOrder\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToPreOrder\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"cityId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"city\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"City\",\"relationName\":\"CityToPreOrder\",\"relationFromFields\":[\"cityId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"workshopId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"workshop\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Workshop\",\"relationName\":\"PreOrderToWorkshop\",\"relationFromFields\":[\"workshopId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"status\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"PreOrderStatus\",\"default\":\"PLACED\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"designImageUrl\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"colorName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sizeSpec\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"stoneColor\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"minaColor\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"estimatedWeightGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"estimatedPriceRial\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"convertedOrderId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":true,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Once priced, an admin converts this into a real (debt-bearing) Order.\"},{\"name\":\"convertedOrder\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"OrderToPreOrder\",\"relationFromFields\":[\"convertedOrderId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"statusEvents\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"PreOrderStatusEvent\",\"relationName\":\"PreOrderToPreOrderStatusEvent\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"PreOrderStatusEvent\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"preOrderId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"preOrder\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"PreOrder\",\"relationName\":\"PreOrderToPreOrderStatusEvent\",\"relationFromFields\":[\"preOrderId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"changes\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Json\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Field-level diff, e.g. {\\\"status\\\": {\\\"old\\\": \\\"PLACED\\\", \\\"new\\\": \\\"ADMIN_APPROVED\\\"}}\"},{\"name\":\"actorAdminId\",\"dbName\":\"actorAdminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"actorAdmin\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"AdminToPreOrderStatusEvent\",\"relationFromFields\":[\"actorAdminId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"ipAddress\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"LedgerEntry\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToLedgerEntry\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"currency\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"LedgerCurrency\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"direction\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"LedgerDirection\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sourceType\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"LedgerSourceType\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"amount\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Always positive; direction determines the sign applied to the customer balance.\"},{\"name\":\"karatPerMille\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Purity of the physical instrument, for REPAYMENT_MELTED_GOLD (e.g. 750, 916).\"},{\"name\":\"pricePerGramRialAtEntry\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Gold price/gram at conversion time, for REPAYMENT_CASH.\"},{\"name\":\"orderId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"order\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"LedgerEntryToOrder\",\"relationFromFields\":[\"orderId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"confirmed\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Pending entries don't count toward the cached customer balance until confirmed.\"},{\"name\":\"confirmedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"postedByAdminId\",\"dbName\":\"postedByAdminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"postedByAdmin\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"AdminToLedgerEntry\",\"relationFromFields\":[\"postedByAdminId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"labName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Instrument metadata from the legacy \\\"cash\\\" document form. Which fields are\\\\nfilled depends on sourceType: a melted-gold receipt carries lab/hallmark and\\\\nthe pre-normalization weight, a cheque carries the account and bank, and a\\\\ntransfer carries its destination.\\\\nLegacy columns: lab, ang, account_name, bank_name, to, original_value, recive_date.\"},{\"name\":\"hallmark\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"accountName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"bankName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"transferTo\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"originalValue\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Weight as handed over, BEFORE karat normalization (legacy original_value).\"},{\"name\":\"priceRial\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Rial amount for cash/cheque documents (legacy price).\"},{\"name\":\"receivedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"note\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"GoldPriceQuote\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"karatPerMille\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"pricePerGramRial\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"source\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"quotedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"Replaces legacy WebServiceGold / ConfigStatic.gold_price — timestamped price feed.\"},\"WalletBonus\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToWalletBonus\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orderId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"goldGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"grantedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"consumedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"Time-limited gold cashback bonus — replaces the legacy Rooyesh\\\\Wallet gold credit.\"},\"UserType\":{\"dbName\":\"user_type\",\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy `permission.ut` / `users.ut` — an integer, kept as the PK so seeded\\\\nrows keep their legacy identity rather than getting new cuids.\"},{\"name\":\"title\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"permissions\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Permission\",\"relationName\":\"PermissionToUserType\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"adminUsers\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AdminUser\",\"relationName\":\"AdminUserToUserType\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"admins\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"AdminToUserType\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Permission\":{\"dbName\":\"permission\",\"fields\":[{\"name\":\"rid\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Dotted permission id, e.g. \\\"order.list\\\", \\\"persons.list.client.omde\\\".\"},{\"name\":\"userTypeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"userType\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"UserType\",\"relationName\":\"PermissionToUserType\",\"relationFromFields\":[\"userTypeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":{\"name\":null,\"fields\":[\"rid\",\"userTypeId\"]},\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Comment\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"product\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Product\",\"relationName\":\"CommentToProduct\",\"relationFromFields\":[\"productId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CommentToCustomer\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"body\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"status\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"CommentStatus\",\"default\":\"PENDING\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"replyToId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy `reply_to`: a staff reply threads under the comment it answers.\"},{\"name\":\"replyTo\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Comment\",\"relationName\":\"CommentReplies\",\"relationFromFields\":[\"replyToId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"replies\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Comment\",\"relationName\":\"CommentReplies\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":true}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Setting\":{\"dbName\":null,\"fields\":[{\"name\":\"key\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"value\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Json\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":true}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"AccountingLink\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"provider\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"entityType\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AccountingEntityType\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"entityId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"externalCode\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"The record's code in the accounting software (Tahesab Moshtari_Code /\\\\nZarrin idHesab; for products the Zarrin idKar or the Tahesab Name_Kar).\"},{\"name\":\"externalName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"origin\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"How the link came to be: LINKED (matched by mobile/name), IMPORTED (app\\\\nrow created from the accounting record), PUSHED (accounting record created\\\\nfrom the app row) or MANUAL (an admin typed the code).\"},{\"name\":\"snapshot\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Json\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"The record as last read, for display only.\"},{\"name\":\"syncedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[[\"provider\",\"entityType\",\"entityId\"],[\"provider\",\"entityType\",\"externalCode\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"provider\",\"entityType\",\"entityId\"]},{\"name\":null,\"fields\":[\"provider\",\"entityType\",\"externalCode\"]}],\"isGenerated\":false,\"documentation\":\"One app row ↔ one record in the accounting software (customer account or\\\\nکارساخته).\"},\"AccountingOutbox\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"provider\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"kind\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AccountingOutboxKind\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"entityId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"status\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"AccountingOutboxStatus\",\"default\":\"PENDING\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"attempts\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"nextAttemptAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"lastError\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"externalRef\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"What the accounting software returned as the document/record id.\"},{\"name\":\"progress\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Json\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Per-step progress of multi-call jobs (a Zarrin document is one call per\\\\nline), so a failure resumes where it stopped.\"},{\"name\":\"lastRequest\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Json\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Last request/response, for the log screen. Never contains the token.\"},{\"name\":\"lastResponse\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Json\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sentAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"resolvedById\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":true}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"Work to push to the accounting software. Written in the SAME transaction as\\\\nthe change that causes it, so an outage of the accounting software never\\\\nloses an event and never blocks the app.\"},\"AccountingIssue\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"provider\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"kind\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"externalCode\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"entityId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"message\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"data\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Json\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"resolvedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[[\"provider\",\"kind\",\"externalCode\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"provider\",\"kind\",\"externalCode\"]}],\"isGenerated\":false,\"documentation\":\"Something a pull found that needs a human: an account with no mobile, two\\\\naccounts sharing one mobile, a کارساخته group with no category mapping.\"},\"Promotion\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"title\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"scope\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"PromotionScope\",\"default\":\"PRODUCT\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"usage\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"PromotionUsage\",\"default\":\"ONCE\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"discountPercent\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Percentage off, 0-100 (legacy discount_percent).\"},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"platform\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":3,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Which storefront it shows on, mirroring Product.showType (legacy platform).\"},{\"name\":\"startsAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"endsAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Exactly one of these is populated, per `scope`.\"},{\"name\":\"product\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Product\",\"relationName\":\"ProductToPromotion\",\"relationFromFields\":[\"productId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"categoryId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"category\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Category\",\"relationName\":\"CategoryToPromotion\",\"relationFromFields\":[\"categoryId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToPromotion\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"brandId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"brand\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Brand\",\"relationName\":\"BrandToPromotion\",\"relationFromFields\":[\"brandId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":true}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"PromotionExclusion\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"type\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"itemId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[[\"type\",\"itemId\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"type\",\"itemId\"]}],\"isGenerated\":false,\"documentation\":\"Legacy \\\"ignore\\\" table (views/offersIgnore) — specific products, categories,\\\\ncustomers or brands excluded from the automatic discount engine.\\\\nLegacy posts { type, item_id[] }: \\\"type\\\" reuses the promotion scope codes\\\\n(1 محصولات | 2 دسته بندی | 3 مشتری | 4 برند) and \\\"itemId\\\" is the excluded row.\"},\"BranchAllocation\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branchId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branch\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Branch\",\"relationName\":\"BranchToBranchAllocation\",\"relationFromFields\":[\"branchId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"allocatorAdminId\",\"dbName\":\"allocatorAdminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy `allocator_user` — the admin who filed the allocation.\"},{\"name\":\"allocatorAdmin\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"AllocationAuthor\",\"relationFromFields\":[\"allocatorAdminId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"note\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"items\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"BranchAllocationItem\",\"relationName\":\"BranchAllocationToBranchAllocationItem\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"BranchAllocationItem\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"allocationId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"allocation\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"BranchAllocation\",\"relationName\":\"BranchAllocationToBranchAllocationItem\",\"relationFromFields\":[\"allocationId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"product\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Product\",\"relationName\":\"BranchAllocationItemToProduct\",\"relationFromFields\":[\"productId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"weightGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Weight snapshot at allocation time, so later catalog edits do not rewrite history.\"}],\"primaryKey\":null,\"uniqueFields\":[[\"allocationId\",\"productId\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"allocationId\",\"productId\"]}],\"isGenerated\":false},\"SmsMessage\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"audience\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"MessageAudience\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"recipients\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Comma-separated recipients for the SINGLE/MULTIPLE audiences.\"},{\"name\":\"body\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sentCount\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"How many numbers the send actually resolved to.\"},{\"name\":\"sentByAdminId\",\"dbName\":\"sentByAdminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sentByAdmin\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"SmsAuthor\",\"relationFromFields\":[\"sentByAdminId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Notification\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"title\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"body\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"audience\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"MessageAudience\",\"default\":\"ALL_CUSTOMERS\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sentByAdminId\",\"dbName\":\"sentByAdminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sentByAdmin\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"NotificationAuthor\",\"relationFromFields\":[\"sentByAdminId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"recipients\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"NotificationRecipient\",\"relationName\":\"NotificationToNotificationRecipient\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"NotificationRecipient\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"notificationId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"notification\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Notification\",\"relationName\":\"NotificationToNotificationRecipient\",\"relationFromFields\":[\"notificationId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToNotificationRecipient\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"readAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[[\"notificationId\",\"customerId\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"notificationId\",\"customerId\"]}],\"isGenerated\":false,\"documentation\":\"Per-customer delivery + read state — legacy `GET notify/read/{id}`.\"},\"NewsletterSubscriber\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"email\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"mobile\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[[\"email\"],[\"mobile\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"email\"]},{\"name\":null,\"fields\":[\"mobile\"]}],\"isGenerated\":false,\"documentation\":\"Legacy views/newsletters — the mailing-list signups collected by the site.\"},\"CustomerActivityLog\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToCustomerActivityLog\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"action\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Free-form action key, e.g. 'login', 'order.placed', 'profile.updated'.\"},{\"name\":\"detail\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"Legacy views/statics — the customer activity log the \\\"آمار\\\" screen reads\\\\n(`log/list/customer`, `log/ago/{customerId}`).\"},\"UploadedFile\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"url\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Public URL the stored file is served from.\"},{\"name\":\"originalName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"mimeType\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sizeBytes\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"purpose\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Free-form tag for what the file belongs to, e.g. 'product', 'category',\\\\n'customer.nationalId'. Kept loose so a new form needs no schema change.\"},{\"name\":\"uploadedByAdminId\",\"dbName\":\"uploadedByAdminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"uploadedByAdmin\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"FileUploader\",\"relationFromFields\":[\"uploadedByAdminId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerAvatars\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerAvatar\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"adminUserAvatars\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AdminUser\",\"relationName\":\"AdminUserAvatar\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"CustomerOtp\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"mobile\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Normalised to English digits before storing, as the reference does with\\\\nUtility::faTOen() on both send and verify.\"},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToCustomerOtp\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"codeHash\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"bcrypt hash of the 4-digit code. Never the code itself.\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"attempts\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Failed verify attempts against THIS challenge.\"},{\"name\":\"consumedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Set when the code is accepted, so one challenge cannot be reused.\"},{\"name\":\"requestIp\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Kept for the per-IP send throttle.\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"One OTP login challenge for a customer.\\\\n\\\\nPorts henza_server's flow (ApiMobileController.php:39-78), where userAuth\\\\ngenerated rand(1000,9999), stored it on the customer row as `send_password`\\\\nand sent it by SMS, and userVerfiy compared the submitted code against it\\\\n(mismatch -> HTTP 422).\\\\n\\\\nThree deliberate improvements over the reference, approved by the user\\\\n(docs/parity/DECISIONS.md D6 and T1):\\\\n1. the code is stored as a bcrypt hash, never in plain text — the\\\\nreference kept it readable in a customer column;\\\\n2. it expires (`expiresAt`) — the reference's code stayed valid forever;\\\\n3. attempts are counted and the challenge locks out — the reference had\\\\nno limit at all.\\\\nThe parity behaviour itself is the code comparison and the rejection.\"}},\"enums\":{\"AdminRole\":{\"values\":[{\"name\":\"SUPER_ADMIN\",\"dbName\":null},{\"name\":\"SYSTEM_APPROVER\",\"dbName\":null},{\"name\":\"SALES_EXPERT\",\"dbName\":null},{\"name\":\"WORKSHOP_SUPERVISOR\",\"dbName\":null},{\"name\":\"ACCOUNTANT\",\"dbName\":null}],\"dbName\":null},\"CustomerKind\":{\"values\":[{\"name\":\"SALES_AGENT\",\"dbName\":null},{\"name\":\"APP_SHOPKEEPER\",\"dbName\":null},{\"name\":\"WALK_IN_SHOPKEEPER\",\"dbName\":null},{\"name\":\"BANKER\",\"dbName\":null},{\"name\":\"WORKSHOP_SUPERVISOR\",\"dbName\":null},{\"name\":\"RETAIL\",\"dbName\":null}],\"dbName\":null,\"documentation\":\"Legacy Customer.type — what kind of wholesale customer this is. Values and\\\\nlabels taken verbatim from bulkCustomer.vue's userTypes list.\\\\n\\\\nSALES_AGENT is a LEGACY value only: legacy stored a sales agent as a\\\\nCustomer row with type=1, but the redesigned system models a sales agent\\\\nas an AdminUser (role SALES_EXPERT) instead — see admin-users.service.ts\\\\nand admin-customers.service.ts's listReagents()/create(). No Customer row\\\\nshould be created with kind SALES_AGENT going forward; the value is kept\\\\nonly so legacyTypeToKind()/kindToLegacyType() stay total functions and any\\\\nalready-migrated data keeps a readable label.\\\\n\\\\nRETAIL marks a \\\"تک\\\" (single/retail) customer — legacy kept these in an\\\\nentirely separate table (SingleCustomer/`login`) that could never contain\\\\na wholesale/agent/shopkeeper/banker row. The redesigned schema folded both\\\\ninto one Customer model, so this value is what listSingle() now filters on\\\\nto reproduce that same separation.\"},\"VerificationStep\":{\"values\":[{\"name\":\"UNVERIFIED\",\"dbName\":null},{\"name\":\"STEP_ONE_SUBMITTED\",\"dbName\":null},{\"name\":\"STEP_TWO_SUBMITTED\",\"dbName\":null},{\"name\":\"VERIFIED\",\"dbName\":null},{\"name\":\"REJECTED\",\"dbName\":null,\"documentation\":\"Legacy had THREE states per step, not two\\\\n(MajorCustomerController.php:106-135): 1 = awaiting, 2 = approved,\\\\n3 = REJECTED. Mapping rejected customers to UNVERIFIED would put closed\\\\ncases back in the review queue, so the owner ruled it out (2026-10-07).\\\\n14 legacy rows land here; see Customer.verificationRejectionReason.\"}],\"dbName\":null},\"OrderChannel\":{\"values\":[{\"name\":\"RETAIL\",\"dbName\":null},{\"name\":\"WHOLESALE\",\"dbName\":null}],\"dbName\":null,\"documentation\":\"Legacy kept retail and wholesale orders in two SEPARATE tables\\\\n(orders_orders vs orders). The redesigned schema has one Order model, so the\\\\ndistinction lives here instead.\"},\"OrderStatus\":{\"values\":[{\"name\":\"SUSPENDED\",\"dbName\":null},{\"name\":\"PLACED\",\"dbName\":null},{\"name\":\"ADMIN_APPROVED\",\"dbName\":null},{\"name\":\"SOURCING\",\"dbName\":null},{\"name\":\"PREPARING\",\"dbName\":null},{\"name\":\"DELIVERED_TO_AGENT\",\"dbName\":null},{\"name\":\"DELIVERED_TO_CUSTOMER\",\"dbName\":null},{\"name\":\"CANCELLED\",\"dbName\":null}],\"dbName\":null},\"PreOrderStatus\":{\"values\":[{\"name\":\"PLACED\",\"dbName\":null},{\"name\":\"ADMIN_APPROVED\",\"dbName\":null},{\"name\":\"WORKSHOP_APPROVED\",\"dbName\":null},{\"name\":\"READY_TO_SHIP\",\"dbName\":null},{\"name\":\"DELIVERED\",\"dbName\":null},{\"name\":\"CANCELLED\",\"dbName\":null}],\"dbName\":null},\"LedgerCurrency\":{\"values\":[{\"name\":\"GOLD_GRAM\",\"dbName\":null},{\"name\":\"RIAL\",\"dbName\":null}],\"dbName\":null},\"LedgerDirection\":{\"values\":[{\"name\":\"DEBIT\",\"dbName\":null},{\"name\":\"CREDIT\",\"dbName\":null}],\"dbName\":null},\"LedgerSourceType\":{\"values\":[{\"name\":\"ORDER_STOCK\",\"dbName\":null},{\"name\":\"ORDER_PRE_ORDER\",\"dbName\":null},{\"name\":\"REPAYMENT_MELTED_GOLD\",\"dbName\":null},{\"name\":\"REPAYMENT_TRANSFER\",\"dbName\":null},{\"name\":\"REPAYMENT_CHEQUE\",\"dbName\":null},{\"name\":\"REPAYMENT_CASH\",\"dbName\":null},{\"name\":\"WALLET_BONUS\",\"dbName\":null},{\"name\":\"ADJUSTMENT\",\"dbName\":null}],\"dbName\":null},\"ProductImageRole\":{\"values\":[{\"name\":\"FEATURED\",\"dbName\":null},{\"name\":\"FEATURED_MOBILE\",\"dbName\":null},{\"name\":\"GALLERY\",\"dbName\":null},{\"name\":\"GALLERY_MOBILE\",\"dbName\":null}],\"dbName\":null},\"OrderRevisionStatus\":{\"values\":[{\"name\":\"NONE\",\"dbName\":null},{\"name\":\"AWAITING_CUSTOMER\",\"dbName\":null}],\"dbName\":null,\"documentation\":\"Customer-confirm state for an admin-proposed order edit (not a pipeline status).\"},\"CommentStatus\":{\"values\":[{\"name\":\"PENDING\",\"dbName\":null},{\"name\":\"APPROVED\",\"dbName\":null},{\"name\":\"REJECTED\",\"dbName\":null}],\"dbName\":null},\"AccountingEntityType\":{\"values\":[{\"name\":\"CUSTOMER\",\"dbName\":null},{\"name\":\"PRODUCT\",\"dbName\":null}],\"dbName\":null},\"AccountingOutboxKind\":{\"values\":[{\"name\":\"CUSTOMER_PUSH\",\"dbName\":null},{\"name\":\"PRODUCT_PUSH\",\"dbName\":null},{\"name\":\"ORDER_DOCUMENT\",\"dbName\":null},{\"name\":\"ORDER_DOCUMENT_DELETE\",\"dbName\":null}],\"dbName\":null},\"AccountingOutboxStatus\":{\"values\":[{\"name\":\"PENDING\",\"dbName\":null},{\"name\":\"SENDING\",\"dbName\":null,\"documentation\":\"A call was in flight. Found at startup, it means the process died mid-call\\\\nand the outcome is unknown — see AccountingOutboxWorker.\"},{\"name\":\"SENT\",\"dbName\":null},{\"name\":\"FAILED\",\"dbName\":null},{\"name\":\"NEEDS_REVIEW\",\"dbName\":null,\"documentation\":\"Unsafe to retry automatically (e.g. a Zarrin call timed out: Zarrin has no\\\\nidempotency key, so a blind retry could post the document twice).\"},{\"name\":\"RESOLVED\",\"dbName\":null,\"documentation\":\"Closed by an admin from the log screen.\"}],\"dbName\":null},\"PromotionScope\":{\"values\":[{\"name\":\"PRODUCT\",\"dbName\":null},{\"name\":\"CATEGORY\",\"dbName\":null},{\"name\":\"CUSTOMER\",\"dbName\":null},{\"name\":\"BRAND\",\"dbName\":null}],\"dbName\":null,\"documentation\":\"Legacy Promotion.type — what the discount is scoped to.\"},\"PromotionUsage\":{\"values\":[{\"name\":\"ONCE\",\"dbName\":null},{\"name\":\"UNTIL_END_DATE\",\"dbName\":null}],\"dbName\":null,\"documentation\":\"Legacy Promotion.use_only — how often a customer may redeem it.\"},\"MessageAudience\":{\"values\":[{\"name\":\"SINGLE_NUMBER\",\"dbName\":null},{\"name\":\"MULTIPLE_NUMBERS\",\"dbName\":null},{\"name\":\"ALL_CUSTOMERS\",\"dbName\":null},{\"name\":\"WHOLESALE_CUSTOMERS\",\"dbName\":null},{\"name\":\"RETAIL_CUSTOMERS\",\"dbName\":null},{\"name\":\"SALES_AGENTS\",\"dbName\":null}],\"dbName\":null,\"documentation\":\"Who an SMS or notification was aimed at. Legacy's sms/create offered these\\\\naudiences, each gated by its own rid (sms.create.all, .omde, .single, ...).\"}},\"types\":{}}") +config.runtimeDataModel = JSON.parse("{\"models\":{\"City\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"parentId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"parent\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"City\",\"relationName\":\"CityTree\",\"relationFromFields\":[\"parentId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Restrict\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"children\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"City\",\"relationName\":\"CityTree\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"percent\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy cities.percent / percent_aux — per-city wage surcharges the city\\\\nscreen edits through GET cities/get-percent/{id} and get-percent-aux/{id}.\"},{\"name\":\"percentAux\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customers\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CityToCustomer\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"addresses\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"CustomerAddress\",\"relationName\":\"CityToCustomerAddress\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branches\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Branch\",\"relationName\":\"BranchToCity\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"preOrders\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"PreOrder\",\"relationName\":\"CityToPreOrder\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"salesExpertProfiles\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"SalesExpertProfile\",\"relationName\":\"CityToSalesExpertProfile\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"Legacy `cities` is a tree (country > province > city > district) and so is\\\\nthis: a city hangs under its `parent`. In the admin pickers a top-level row\\\\n(the country) is a heading, not selectable (henza_admin citiesModel.js:38).\"},\"Admin\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"fullName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"firstName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"lastName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"mobile\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"passwordHash\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"role\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AdminRole\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Never SALES_EXPERT — that role lives in AdminUser. Enforced in\\\\nAdminUsersService, not in the database, so the enum stays shared.\"},{\"name\":\"userTypeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"userType\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"UserType\",\"relationName\":\"AdminToUserType\",\"relationFromFields\":[\"userTypeId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branchId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branch\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Branch\",\"relationName\":\"AdminToBranch\",\"relationFromFields\":[\"branchId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"supervisedWorkshops\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Workshop\",\"relationName\":\"WorkshopSupervisor\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branchAllocations\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"BranchAllocation\",\"relationName\":\"AllocationAuthor\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"postedLedgerEntries\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"LedgerEntry\",\"relationName\":\"AdminToLedgerEntry\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orderStatusEvents\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"OrderStatusEvent\",\"relationName\":\"AdminToOrderStatusEvent\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"preOrderStatusEvents\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"PreOrderStatusEvent\",\"relationName\":\"AdminToPreOrderStatusEvent\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sentSmsMessages\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"SmsMessage\",\"relationName\":\"SmsAuthor\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sentNotifications\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Notification\",\"relationName\":\"NotificationAuthor\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"uploadedFiles\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"UploadedFile\",\"relationName\":\"FileUploader\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sessions\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AdminSession\",\"relationName\":\"AdminToAdminSession\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Issued admin-panel tokens, recorded only while session tracking is on\\\\n(AUTH_SESSION_TRACKING, or implicitly whenever the IAM is enabled) so a\\\\ntoken can be revoked before it expires. See AdminSession.\"}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"A staff account for the ADMIN PANEL — and nothing else.\\\\n\\\\nSplit out of AdminUser (which now holds sales experts only) so that:\\\\n* the same mobile can be an admin AND a sales expert — they are two\\\\nseparate roles, each unique only within its own table;\\\\n* the expert table (production: ~12,000 rows) is never written by panel\\\\nstaff management.\\\\nMigration 20261026120000_split_admin_table copies the existing non-expert\\\\nAdminUser rows here WITH THEIR IDS, so issued panel tokens and every\\\\n\\\"who did this\\\" column keep resolving. The old rows are left in AdminUser,\\\\ndormant; no code reads them as admins any more.\\\\n\\\\n⚠️ fullName/firstName/lastName are kept in sync by the DB trigger\\\\n`admin_sync_full_name_trg` (it shares the function admin_user_sync_full_name) — same semantics as AdminUser: the parts win.\"},\"AdminUser\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"fullName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"⚠️ Kept in sync BY A DATABASE TRIGGER — `admin_user_sync_full_name`, from\\\\nmigration 20260922180000. Prisma cannot see it, so a write here may store\\\\nsomething other than what you passed:\\\\n\\\\n* write the parts -> fullName is rebuilt as \\\"first last\\\"\\\\n* write fullName only -> the parts are re-derived from it\\\\n* write BOTH in one update -> THE PARTS WIN; the submitted fullName is\\\\ndiscarded\\\\n\\\\nRe-read after writing if you need the stored value. Same arrangement as\\\\nCustomer (D0 requirement 7 — the split applies to ALL admins, not only\\\\nsales experts).\"},{\"name\":\"firstName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"lastName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"mobile\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"passwordHash\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"role\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AdminRole\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"userTypeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy `users.ut`. Granular ACL lives here (Permission rows hang off UserType);\\\\nthe coarse `role` enum above is retained for the business rules that already\\\\nswitch on it. Nullable so existing seeded admins remain valid.\"},{\"name\":\"userType\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"UserType\",\"relationName\":\"AdminUserToUserType\",\"relationFromFields\":[\"userTypeId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branchId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branch\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Branch\",\"relationName\":\"AdminUserToBranch\",\"relationFromFields\":[\"branchId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"wagePercent\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"avatarFileId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy stored a sales agent as a `customers` row with type=1, so\\\\nReagentCustomer.vue's shared form collected these alongside the\\\\nwholesale-customer fields. A sales agent is now an AdminUser\\\\n(role=SALES_EXPERT), so these live here instead — only ever set for that\\\\nrole; every other AdminUser leaves them null.\"},{\"name\":\"avatarFile\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"UploadedFile\",\"relationName\":\"AdminUserAvatar\",\"relationFromFields\":[\"avatarFileId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"address\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"storeName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"pasazhName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"memberCode\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"referredCustomers\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"ReferralAgent\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"creditedOrders\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"OrderSalesAgent\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Orders credited to this sales expert — see Order.salesAgentId.\"},{\"name\":\"salesExpertProfile\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"SalesExpertProfile\",\"relationName\":\"AdminUserToSalesExpertProfile\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Only ever set for role = SALES_EXPERT (D17).\"}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"A SALES EXPERT (role SALES_EXPERT). Panel staff live in `Admin`; rows here with\\\\nany other role are pre-split leftovers and are ignored by the code.\"},\"AppSession\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"jti\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"The token's `jti` claim. Unique: one row per issued token.\"},{\"name\":\"subjectId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Customer.id, or AdminUser.id when subjectType is \\\"sales-expert\\\".\"},{\"name\":\"subjectType\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"mobile\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"iamSessionId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Set when the login was confirmed by the central IAM: its session id (`sid`)\\\\nand stable user id (`sub`), which is what a back-channel logout arrives with.\"},{\"name\":\"iamSub\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"ipAddress\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"userAgent\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"lastSeenAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"revokedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"revokedReason\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"An issued APP token (customer app / sales-expert app), so it can be revoked\\\\nbefore it expires — the counterpart of AdminSession for the other token family.\\\\n\\\\nWHY A SEPARATE TABLE AND NO FOREIGN KEY\\\\n---------------------------------------\\\\nAn app token's `sub` is a Customer id for a customer and an **AdminUser id**\\\\nfor a sales expert (D21). One FK cannot point at two tables, so the subject is\\\\nstored as a plain id plus its type. The rows are short-lived operational data,\\\\nnot part of the accounting model, so the missing FK costs nothing here.\"},\"AdminSession\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"jti\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"The token's `jti` claim. Unique: one row per issued token.\"},{\"name\":\"adminId\",\"dbName\":\"adminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"admin\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"AdminToAdminSession\",\"relationFromFields\":[\"adminId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"iamSessionId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Set when the login was verified by the IAM: its session id (`sid`) and the\\\\nstable user id (`sub`) there. Back-channel logout arrives keyed by these —\\\\ndeliberately here rather than as columns on AdminUser, so enabling the\\\\nfeature needs no change to an existing table.\"},{\"name\":\"iamSub\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"ipAddress\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"userAgent\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"lastSeenAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"revokedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"revokedReason\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"An issued admin-panel JWT, so it can be revoked before it expires.\\\\n\\\\nWHY THIS EXISTS\\\\n---------------\\\\nThe admin token is self-contained and valid for 12h, which means nothing —\\\\nnot disabling the account, not a central \\\"sign out everywhere\\\" — could cut a\\\\nsession short: the token kept working until it expired. With the central IAM\\\\nin the loop that gap became visible (an IAM session revocation had no effect\\\\nhere), so every issued token now carries a `jti` recorded on this table and\\\\nJwtStrategy refuses a token whose row is revoked.\\\\n\\\\nRows are written ONLY while tracking is enabled, and JwtStrategy only\\\\nenforces them while it is enabled, so a deployment that does not want the\\\\nextra lookup behaves exactly as before.\"},\"SalesExpertProfile\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"adminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"adminUser\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AdminUser\",\"relationName\":\"AdminUserToSalesExpertProfile\",\"relationFromFields\":[\"adminUserId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"cityId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy customers.city_id — a filterable grid column\\\\n(ReagentListModel.js:14) and the source of the commission autofill\\\\n(ReagentCustomer.vue:215-228).\"},{\"name\":\"city\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"City\",\"relationName\":\"CityToSalesExpertProfile\",\"relationFromFields\":[\"cityId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"gramLevel\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy customers.gram_level — the «سطح اعتبار» column, filterable.\\\\nDecimal(14,4) matches Customer.goldCreditLimitGrams exactly so the same\\\\ncredit limit has identical precision on both tables.\"},{\"name\":\"phone\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy customers.phone (varchar 15) and ncode (varchar 20). The reference\\\\nstores both and reads neither back; kept so the form matches it. Neither\\\\nis unique and neither has a validation rule in the reference — inventing\\\\none would reject data the reference accepts.\"},{\"name\":\"nationalCode\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"tradingCustomerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":true,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"The Customer row carrying this expert's OWN orders, debt and credit limit.\\\\n\\\\nThe reference stored a sales agent AS a Customer (type=1), so an order the\\\\nagent placed from the app was simply their own, against their own\\\\ngram_level (ApiMobileController.php:534-535). Here the expert is an\\\\nAdminUser (D17), which has no ledger and cannot be an Order's subject, so\\\\nthis one linked Customer plays that part.\\\\n\\\\nDistinct from the expert's REFERRED customers, which are ordinary Customer\\\\nrows pointing at the AdminUser through Customer.referredByAgentId.\\\\n\\\\nNull until the expert first signs into the app, when it is created from\\\\nthis profile. See D21.\"},{\"name\":\"tradingCustomer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"SalesExpertTradingAccount\",\"relationFromFields\":[\"tradingCustomerId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"SetNull\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":true}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"The sales-expert fields legacy kept on the `customers` row (type=1) and that\\\\nwere lost when a sales expert became an AdminUser (D17).\\\\n\\\\nA separate table rather than columns on AdminUser: these are meaningful only\\\\nfor role = SALES_EXPERT and would be permanently null for every other admin.\\\\nA row is created for every SALES_EXPERT by the migration, and upserted by the\\\\nservice whenever one is created or a user's role becomes SALES_EXPERT — but\\\\nreaders still left-join, so a missing profile degrades to nulls rather than\\\\ndropping the agent from the grid.\\\\n\\\\n`reagent_id` is deliberately NOT here — see D17: in the reference it was a\\\\nside effect of the shared customers form, and filling it removed that expert\\\\nfrom the selectable-agent list (queryReagent, AdminController.php:420).\"},\"Customer\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"fullName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"⚠️ `fullName`, `firstName` and `lastName` are kept in sync BY A DATABASE\\\\nTRIGGER — `customer_sync_full_name`, created in migration\\\\n20260922120000_customer_name_parts. Prisma does not know about it, so a\\\\nwrite here is NOT the whole story:\\\\n\\\\n* write the parts -> fullName is rebuilt as \\\"first last\\\"\\\\n* write fullName only -> the parts are re-derived from it\\\\n* write BOTH in one update -> THE PARTS WIN; fullName is overwritten\\\\nwith \\\"first last\\\" and whatever you passed for fullName is discarded\\\\n\\\\nSo a value you wrote can differ from the value that lands in the row.\\\\nRe-read after writing if you need the stored value. Prefer writing the\\\\nparts; `fullName` exists for the legacy readers that predate D0.\\\\n\\\\nReference has these as two columns from the start\\\\n(henza_server 2020_10_01_120430_customers_table.php:18-19 fname/lname);\\\\nthe port collapsed them, which is the D0 defect.\"},{\"name\":\"firstName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"lastName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"mobile\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"nationalCode\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy customers.ncode. OPTIONAL since 2026-10-07: not one of the 1,616\\\\nlegacy customers has a national code (1595/1595 empty), and fabricating\\\\none is a data violation that would block later legal identity checks\\\\n(owner ruling). Still @unique — in PostgreSQL NULLs do not collide, so\\\\nthe migration tool must write NULL and never '', which would collide on\\\\nthe second row.\\\\n\\\\nThree service-layer workarounds exist ONLY because this used to be\\\\nrequired, and they store the MOBILE NUMBER here:\\\\nadmin-customers.service.ts:625,685 and customer-auth.service.ts:258.\\\\nRetiring them is a separate change; see docs/DATA-MIGRATION-MAP.md §10.4.\"},{\"name\":\"passwordHash\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"cityId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"city\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"City\",\"relationName\":\"CityToCustomer\",\"relationFromFields\":[\"cityId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"cityNameRaw\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy customers.new_city — the city name exactly as the customer typed it\\\\nat app sign-up (Major/CustomerController.php:36). Kept verbatim because\\\\nthe legacy city table has only 15 rows, so the typed name is often the only\\\\nrecord of where the customer is (172 customers; 43 match no known city).\\\\ncityId is set alongside it only on an exact, ي/ك-normalised name match.\\\\nLegacy sign-up also forced city_id = 5 (Tehran) on everyone\\\\n(Major/CustomerController.php:21), so for those rows the typed name, not\\\\ncityId, is the truth. Owner ruling 2026-10-07: keep both.\"},{\"name\":\"kind\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"CustomerKind\",\"default\":\"APP_SHOPKEEPER\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy Customer.type — distinguishes بنکدار from مغازه دار, which the\\\\nBankerList / ShopkeeperList screens filter on.\"},{\"name\":\"phone\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy contact + shop columns, shown on the wholesale customer form and as\\\\n(hidden-by-default) columns in its grid.\"},{\"name\":\"address\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"storeName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"pasazhName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"zone\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"memberCode\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy mcode — the operator-assigned customer code.\"},{\"name\":\"referredByAgentId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"referredByAgent\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AdminUser\",\"relationName\":\"ReferralAgent\",\"relationFromFields\":[\"referredByAgentId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"salesExpertTradingFor\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"SalesExpertProfile\",\"relationName\":\"SalesExpertTradingAccount\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Set only on the one Customer row that acts as a sales expert's own trading\\\\naccount (see SalesExpertProfile.tradingCustomerId). Empty for every\\\\nordinary customer.\"},{\"name\":\"referredOrders\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"OrderReferrerCustomer\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy orders that named THIS customer as their referrer — see\\\\nOrder.referrerCustomerId. History only.\"},{\"name\":\"goldCreditLimitGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"goldDebtGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"fiatDebtRial\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"accountingGoldBalance\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Balance as last read from the accounting software (D27), in the app's own\\\\nsign convention (positive = owes). Shown to the customer when the\\\\nintegration is on; the credit-limit check still uses goldDebtGrams above.\\\\nNull until the first successful sync.\"},{\"name\":\"accountingRialBalance\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"accountingBalanceAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"makingChargeOffsetPercent\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy `customers.percent` — the per-customer making-charge offset. It is\\\\nADDED to the variant's making charge when pricing an order line\\\\n(henza_pwa src/Mixins/product/index.ts:69-75:\\\\ngetWage(v) = state.percent + v.percentage_pay)\\\\nand it shifts the catalogue making-charge filter bounds\\\\n(ApiMobileController.php:391-396,76-77). It is NOT part of the price\\\\nformula itself — that extra percent is ConfigStatic['product_price_extra_percent'].\\\\n\\\\nNOT the wallet cashback rate (storefront ConfigStatic['percent'], D13) and\\\\nNOT the wholesale per-line charge (OrderItem.wagePercentSnapshot).\\\\n\\\\nDB default 0 keeps every existing customer's price unchanged. The\\\\nreference's application-layer default for NEW customers is 3\\\\n(AdminController.php:338) and the field is required on create (:354).\"},{\"name\":\"verificationStep\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"VerificationStep\",\"default\":\"UNVERIFIED\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"nationalIdImageUrl\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"businessLicenseUrl\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"shopImageUrl\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"verificationRejectionReason\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Why verification was rejected (VerificationStep.REJECTED).\\\\n\\\\nLegacy recorded NO reason: none of its 49 `customers` columns is a\\\\nreason/note field, and on rejection it only sent a fixed SMS. So the 14\\\\nrows migrated from the legacy system carry the sentinel\\\\n«رد شده در سیستم قدیم — فاقد شرح علت ثبت‌شده» instead of NULL, so support\\\\nknows why it is blank (owner ruling 2026-10-07). The migration tool\\\\nwrites it only WHERE this IS NULL, so a re-run cannot overwrite a real\\\\nreason entered in the new system.\"},{\"name\":\"verificationRejectedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"NULL for rows migrated from the legacy system — it recorded no rejection time.\"},{\"name\":\"birthDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy customers.birth_date, populated on 917 of 1,595 rows. Kept for the\\\\nbirthday SMS / loyalty campaigns (owner ruling 2026-10-07).\\\\n\\\\n⚠ Legacy stores dates as JALALI STRINGS in other tables\\\\n(cashes.recive_date is varchar, 88/89 values starting \\\"14…\\\"), so this\\\\ntimestamp may hold mis-entered Jalali years. Confirm the calendar with\\\\ndocs/migration-precheck-3.sql BEFORE backfilling: copying them unchanged\\\\nwould produce 917 wrong birthdays, worse for an SMS campaign than none.\"},{\"name\":\"avatarFileId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy `image_id` — the profile photo (عکس پروفایل) on the sales-agent\\\\nform. Legacy stored an FK to its Image table and read it back as a nested\\\\n`image: { id, image }`, so this is a relation, not a bare URL string.\"},{\"name\":\"avatarFile\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"UploadedFile\",\"relationName\":\"CustomerAvatar\",\"relationFromFields\":[\"avatarFileId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"canPlaceOrders\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy had TWO independent switches on a customer:\\\\nsts -> may they place orders (this field)\\\\nactive -> is the account enabled (isActive, below)\\\\nThe port previously drove both from isActive; they are separate again.\"},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isArchived\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy archive flag — the archived list filtered on this, not on isActive.\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"addresses\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"CustomerAddress\",\"relationName\":\"CustomerToCustomerAddress\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orders\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"CustomerToOrder\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"preOrders\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"PreOrder\",\"relationName\":\"CustomerToPreOrder\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"ledgerEntries\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"LedgerEntry\",\"relationName\":\"CustomerToLedgerEntry\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"walletBonuses\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"WalletBonus\",\"relationName\":\"CustomerToWalletBonus\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"comments\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Comment\",\"relationName\":\"CommentToCustomer\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"promotions\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Promotion\",\"relationName\":\"CustomerToPromotion\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"notifications\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"NotificationRecipient\",\"relationName\":\"CustomerToNotificationRecipient\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"activityLogs\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"CustomerActivityLog\",\"relationName\":\"CustomerToCustomerActivityLog\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"otpChallenges\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"CustomerOtp\",\"relationName\":\"CustomerToCustomerOtp\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"favorites\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"CustomerFavorite\",\"relationName\":\"CustomerToCustomerFavorite\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"CustomerFavorite\":{\"dbName\":null,\"fields\":[{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToCustomerFavorite\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"product\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Product\",\"relationName\":\"CustomerFavoriteToProduct\",\"relationFromFields\":[\"productId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":{\"name\":null,\"fields\":[\"customerId\",\"productId\"]},\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"Legacy `fav` (251 rows) — saved products. The target had no model for this,\\\\nso every customer's favourites would have been lost in the migration; the\\\\nowner confirmed on 2026-10-06 that they matter.\\\\n\\\\nLegacy `fav` has two columns and NO primary key. The composite key here\\\\nsupplies the constraint the source lacks (the precheck found 0 duplicate\\\\npairs, but the tool should still SELECT DISTINCT). 14 of the 251 rows point\\\\nat a deleted customer and must be skipped.\\\\n\\\\nLegacy's denormalised `product.count_fav` counter is deliberately NOT\\\\nrecreated as a column — derive it from this table.\"},\"CustomerAddress\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToCustomerAddress\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"cityId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"city\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"City\",\"relationName\":\"CityToCustomerAddress\",\"relationFromFields\":[\"cityId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"addressLine\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isDefault\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Branch\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"address\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy Branch.address / phone — both are columns in the branch grid.\"},{\"name\":\"phone\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy GET branch/active/{id} toggles this.\"},{\"name\":\"cityId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"city\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"City\",\"relationName\":\"BranchToCity\",\"relationFromFields\":[\"cityId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"adminUsers\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AdminUser\",\"relationName\":\"AdminUserToBranch\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"admins\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"AdminToBranch\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orders\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"BranchToOrder\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"allocations\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"BranchAllocation\",\"relationName\":\"BranchToBranchAllocation\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Workshop\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"address\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy Workshop.address / phone — both are columns in the workshop grid.\"},{\"name\":\"phone\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"supervisorId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"The supervisor created alongside the workshop by the legacy Add form.\"},{\"name\":\"supervisor\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"WorkshopSupervisor\",\"relationFromFields\":[\"supervisorId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"preOrders\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"PreOrder\",\"relationName\":\"PreOrderToWorkshop\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Category\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"title\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"type\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":1,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy Category.type — which storefront the category belongs to:\\\\n1 سایت | 2 اپلیکشن موبایل. Drives the \\\"type_str\\\" grid column.\"},{\"name\":\"imageUrl\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy Category.image / icon — the grid renders the image, the storefront the icon.\"},{\"name\":\"iconUrl\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"metaTag\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy meta tag + description, used for SEO on the site categories.\"},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"parentId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"parent\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Category\",\"relationName\":\"CategoryTree\",\"relationFromFields\":[\"parentId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"children\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Category\",\"relationName\":\"CategoryTree\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"products\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Product\",\"relationName\":\"CategoryToProduct\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"promotions\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Promotion\",\"relationName\":\"CategoryToPromotion\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Brand\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"title\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"products\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Product\",\"relationName\":\"BrandToProduct\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"promotions\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Promotion\",\"relationName\":\"BrandToPromotion\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Collection\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"title\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"products\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"CollectionProduct\",\"relationName\":\"CollectionToCollectionProduct\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"Curated product groupings — replaces legacy \\\"Ciny/CinyProduct\\\" (a tagging\\\\nfeature, NOT a gold-price snapshot mechanism, despite the misleading legacy name).\"},\"CollectionProduct\":{\"dbName\":null,\"fields\":[{\"name\":\"collectionId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"collection\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Collection\",\"relationName\":\"CollectionToCollectionProduct\",\"relationFromFields\":[\"collectionId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"product\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Product\",\"relationName\":\"CollectionProductToProduct\",\"relationFromFields\":[\"productId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":{\"name\":null,\"fields\":[\"collectionId\",\"productId\"]},\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Product\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"title\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"categoryId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"category\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Category\",\"relationName\":\"CategoryToProduct\",\"relationFromFields\":[\"categoryId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"brandId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"brand\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Brand\",\"relationName\":\"BrandToProduct\",\"relationFromFields\":[\"brandId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productCode\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy Product.product_code — the human-facing SKU shown in the grid.\"},{\"name\":\"showType\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":3,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy Product.show_type: 1 site, 2 mobile, 3 both.\"},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"tags\",\"kind\":\"scalar\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":[],\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Labels from Setting `__list__tags`, assigned on the product form. The\\\\nstorefront shows them on list cards only (not the product detail page).\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"accountingStockWeight\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Stock of the linked کارساخته as last read from the accounting software\\\\n(D27). Weight for gram-type items, count for count-type ones — whichever\\\\nthe software reports. At zero or below the product is unavailable in the\\\\napp (pre-order variants excepted). Null = not linked or never synced.\"},{\"name\":\"accountingStockCount\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"accountingStockAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"variants\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ProductVariant\",\"relationName\":\"ProductToProductVariant\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"images\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ProductImage\",\"relationName\":\"ProductToProductImage\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"collections\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"CollectionProduct\",\"relationName\":\"CollectionProductToProduct\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"comments\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Comment\",\"relationName\":\"CommentToProduct\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"promotions\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Promotion\",\"relationName\":\"ProductToPromotion\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"allocationItems\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"BranchAllocationItem\",\"relationName\":\"BranchAllocationItemToProduct\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"favoritedBy\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"CustomerFavorite\",\"relationName\":\"CustomerFavoriteToProduct\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ProductImage\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"product\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Product\",\"relationName\":\"ProductToProductImage\",\"relationFromFields\":[\"productId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"url\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sortOrder\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"role\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"ProductImageRole\",\"default\":\"GALLERY\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy had 4 distinct upload slots (تصویر شاخص / تصویر شاخص موبایل /\\\\nگالری تصاویر سایت / گالری تصاویر موبایل) — GALLERY is the default so\\\\nexisting rows and any generic \\\"just attach an image\\\" caller keep working.\"},{\"name\":\"variants\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ProductVariant\",\"relationName\":\"ProductImageToProductVariant\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Variants that display this image. A gallery image may back several\\\\nvariants (one photo, several weights), which is why this is a plain\\\\none-to-many and not a join table.\"}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ProductVariant\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"product\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Product\",\"relationName\":\"ProductToProductVariant\",\"relationFromFields\":[\"productId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"title\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sku\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"rashWeightGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Base/raw weight before making charge (\\\"rash weight\\\").\"},{\"name\":\"defaultWagePercent\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Default making-charge percentage applied on top of rash weight.\"},{\"name\":\"qty\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy ProductVariant.qty — on-hand stock. The cart refuses a variant with\\\\nqty 0 unless it is flagged pre-order, so both fields are required for that\\\\nguard to work (see apps/admin-panel/src/stores/cart.ts).\"},{\"name\":\"isPreOrder\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy is_pre_order: orderable even at zero stock.\"},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"color\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy color enum: 0=سفید, 1=زرد, 2=شکلاتی, 3=رزگلد\"},{\"name\":\"rialWage\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy rial_pay — fixed Rial making charge per variant.\"},{\"name\":\"details\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy details — short description for variant.\"},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy description — full description for variant.\"},{\"name\":\"imageId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"The gallery image shown for this variant, picked from its own product's\\\\nimages — never a re-uploaded copy. onDelete: SetNull because dropping an\\\\nimage must never cascade into the variant: OrderItem rows reference\\\\nvariants, so losing one would break order history.\"},{\"name\":\"image\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ProductImage\",\"relationName\":\"ProductImageToProductVariant\",\"relationFromFields\":[\"imageId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"SetNull\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orderItems\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"OrderItem\",\"relationName\":\"OrderItemToProductVariant\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Order\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orderNumber\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToOrder\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branchId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branch\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Branch\",\"relationName\":\"BranchToOrder\",\"relationFromFields\":[\"branchId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"channel\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"OrderChannel\",\"default\":\"RETAIL\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Which sales channel placed this order — see OrderChannel.\"},{\"name\":\"status\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"OrderStatus\",\"default\":\"PLACED\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"revisionStatus\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"OrderRevisionStatus\",\"default\":\"NONE\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Pending admin edit awaiting customer confirm (or admin force/discard).\"},{\"name\":\"totalGoldWeightGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Total gold weight incl. wage across all items (\\\"allGram\\\" / order.w).\"},{\"name\":\"wageWeightGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Pure making-charge weight component (totalGoldWeightGrams minus raw weight sum).\"},{\"name\":\"flatRialCharge\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Flat Rial charge independent of gold price (e.g. stones) — legacy rial_input.\"},{\"name\":\"isSuspendedOverCreditLimit\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"deliveredAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"salesAgentId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"The sales expert this order is credited to, fixed when it is placed:\\\\nthe customer's referring expert AT THAT MOMENT. Legacy `orders.reagent_id`,\\\\nset once at creation (ApiMobileController.php:601) and never moved, so a\\\\ncustomer changing expert later does not move past sales or commission\\\\n(owner ruling 2026-10-08). «میزان فروش» counts from here, never from the\\\\ncustomer's current referrer.\"},{\"name\":\"salesAgent\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AdminUser\",\"relationName\":\"OrderSalesAgent\",\"relationFromFields\":[\"salesAgentId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"SetNull\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"referrerCustomerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"History only: a legacy order whose `reagent_id` named a customer who is\\\\nnot a sales expert (one such customer, 17 orders in 2022). Legacy counted\\\\nthose orders in that customer's own «میزان فروش»; this keeps that figure\\\\nexact. Never set for a new order.\"},{\"name\":\"referrerCustomer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"OrderReferrerCustomer\",\"relationFromFields\":[\"referrerCustomerId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"SetNull\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"items\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"OrderItem\",\"relationName\":\"OrderToOrderItem\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"statusEvents\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"OrderStatusEvent\",\"relationName\":\"OrderToOrderStatusEvent\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"ledgerEntries\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"LedgerEntry\",\"relationName\":\"LedgerEntryToOrder\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"revisions\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"OrderRevision\",\"relationName\":\"OrderToOrderRevision\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"convertedFromPreOrder\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"PreOrder\",\"relationName\":\"OrderToPreOrder\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"OrderRevision\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orderId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"order\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"OrderToOrderRevision\",\"relationFromFields\":[\"orderId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"items\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Json\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Proposed lines: [{ productVariantId, quantity, rashWeightGramsSnapshot,\\\\nwagePercentSnapshot, discountPercentSnapshot, computedWeightGrams, flatRialCharge }]\"},{\"name\":\"totalGoldWeightGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"wageWeightGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"flatRialCharge\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"proposedByAdminId\",\"dbName\":\"proposedByAdminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"note\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerDecision\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"null | ACCEPTED | REJECTED — reject leaves AWAITING_CUSTOMER for admin decision.\"},{\"name\":\"customerDecidedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"appliedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"discardedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"Proposed line-item edit for an Order. Live until applied or discarded.\\\\nWhile pending, Order.revisionStatus = AWAITING_CUSTOMER and charged figures\\\\nstay on the current Order until the customer confirms (or admin force-applies).\"},\"OrderItem\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orderId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"order\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"OrderToOrderItem\",\"relationFromFields\":[\"orderId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productVariantId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productVariant\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ProductVariant\",\"relationName\":\"OrderItemToProductVariant\",\"relationFromFields\":[\"productVariantId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"quantity\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"rashWeightGramsSnapshot\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"wagePercentSnapshot\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"discountPercentSnapshot\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"computedWeightGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"computed: rash*(1 + (wagePercent-discount)/100)\"},{\"name\":\"flatRialCharge\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"OrderStatusEvent\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orderId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"order\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"OrderToOrderStatusEvent\",\"relationFromFields\":[\"orderId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"fromStatus\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"OrderStatus\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"toStatus\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"OrderStatus\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"note\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"actorAdminId\",\"dbName\":\"actorAdminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"actorAdmin\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"AdminToOrderStatusEvent\",\"relationFromFields\":[\"actorAdminId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"PreOrder\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToPreOrder\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"cityId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"city\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"City\",\"relationName\":\"CityToPreOrder\",\"relationFromFields\":[\"cityId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"workshopId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"workshop\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Workshop\",\"relationName\":\"PreOrderToWorkshop\",\"relationFromFields\":[\"workshopId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"status\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"PreOrderStatus\",\"default\":\"PLACED\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"designImageUrl\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"colorName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sizeSpec\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"stoneColor\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"minaColor\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"quantity\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":1,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy custom_orders.sum — how many pieces the customer asked for. The first\\\\nschema had no field for it and the admin grid showed a hard-coded 1.\"},{\"name\":\"estimatedWeightGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"estimatedPriceRial\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"convertedOrderId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":true,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Once priced, an admin converts this into a real (debt-bearing) Order.\"},{\"name\":\"convertedOrder\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"OrderToPreOrder\",\"relationFromFields\":[\"convertedOrderId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"statusEvents\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"PreOrderStatusEvent\",\"relationName\":\"PreOrderToPreOrderStatusEvent\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"PreOrderStatusEvent\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"preOrderId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"preOrder\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"PreOrder\",\"relationName\":\"PreOrderToPreOrderStatusEvent\",\"relationFromFields\":[\"preOrderId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"changes\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Json\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Field-level diff, e.g. {\\\"status\\\": {\\\"old\\\": \\\"PLACED\\\", \\\"new\\\": \\\"ADMIN_APPROVED\\\"}}\"},{\"name\":\"actorAdminId\",\"dbName\":\"actorAdminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"actorAdmin\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"AdminToPreOrderStatusEvent\",\"relationFromFields\":[\"actorAdminId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"ipAddress\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"LedgerEntry\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToLedgerEntry\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"currency\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"LedgerCurrency\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"direction\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"LedgerDirection\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sourceType\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"LedgerSourceType\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"amount\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Always positive; direction determines the sign applied to the customer balance.\"},{\"name\":\"karatPerMille\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Purity of the physical instrument, for REPAYMENT_MELTED_GOLD (e.g. 750, 916).\"},{\"name\":\"pricePerGramRialAtEntry\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Gold price/gram at conversion time, for REPAYMENT_CASH.\"},{\"name\":\"orderId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"order\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"LedgerEntryToOrder\",\"relationFromFields\":[\"orderId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"confirmed\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Pending entries don't count toward the cached customer balance until confirmed.\"},{\"name\":\"confirmedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"postedByAdminId\",\"dbName\":\"postedByAdminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"postedByAdmin\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"AdminToLedgerEntry\",\"relationFromFields\":[\"postedByAdminId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"labName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Instrument metadata from the legacy \\\"cash\\\" document form. Which fields are\\\\nfilled depends on sourceType: a melted-gold receipt carries lab/hallmark and\\\\nthe pre-normalization weight, a cheque carries the account and bank, and a\\\\ntransfer carries its destination.\\\\nLegacy columns: lab, ang, account_name, bank_name, to, original_value, recive_date.\"},{\"name\":\"hallmark\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"accountName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"bankName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"transferTo\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"originalValue\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Weight as handed over, BEFORE karat normalization (legacy original_value).\"},{\"name\":\"priceRial\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Rial amount for cash/cheque documents (legacy price).\"},{\"name\":\"receivedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"note\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"GoldPriceQuote\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"karatPerMille\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"pricePerGramRial\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"source\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"quotedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"Replaces legacy WebServiceGold / ConfigStatic.gold_price — timestamped price feed.\"},\"WalletBonus\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToWalletBonus\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orderId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"goldGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"grantedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"consumedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"Time-limited gold cashback bonus — replaces the legacy Rooyesh\\\\Wallet gold credit.\"},\"UserType\":{\"dbName\":\"user_type\",\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy `permission.ut` / `users.ut` — an integer, kept as the PK so seeded\\\\nrows keep their legacy identity rather than getting new cuids.\"},{\"name\":\"title\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"permissions\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Permission\",\"relationName\":\"PermissionToUserType\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"adminUsers\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AdminUser\",\"relationName\":\"AdminUserToUserType\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"admins\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"AdminToUserType\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Permission\":{\"dbName\":\"permission\",\"fields\":[{\"name\":\"rid\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Dotted permission id, e.g. \\\"order.list\\\", \\\"persons.list.client.omde\\\".\"},{\"name\":\"userTypeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"userType\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"UserType\",\"relationName\":\"PermissionToUserType\",\"relationFromFields\":[\"userTypeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":{\"name\":null,\"fields\":[\"rid\",\"userTypeId\"]},\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Comment\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"product\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Product\",\"relationName\":\"CommentToProduct\",\"relationFromFields\":[\"productId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CommentToCustomer\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"body\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"status\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"CommentStatus\",\"default\":\"PENDING\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"replyToId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy `reply_to`: a staff reply threads under the comment it answers.\"},{\"name\":\"replyTo\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Comment\",\"relationName\":\"CommentReplies\",\"relationFromFields\":[\"replyToId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"replies\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Comment\",\"relationName\":\"CommentReplies\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":true}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Setting\":{\"dbName\":null,\"fields\":[{\"name\":\"key\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"value\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Json\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":true}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"AccountingLink\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"provider\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"entityType\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AccountingEntityType\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"entityId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"externalCode\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"The record's code in the accounting software (Tahesab Moshtari_Code /\\\\nZarrin idHesab; for products the Zarrin idKar or the Tahesab Name_Kar).\"},{\"name\":\"externalName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"origin\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"How the link came to be: LINKED (matched by mobile/name), IMPORTED (app\\\\nrow created from the accounting record), PUSHED (accounting record created\\\\nfrom the app row) or MANUAL (an admin typed the code).\"},{\"name\":\"snapshot\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Json\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"The record as last read, for display only.\"},{\"name\":\"syncedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[[\"provider\",\"entityType\",\"entityId\"],[\"provider\",\"entityType\",\"externalCode\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"provider\",\"entityType\",\"entityId\"]},{\"name\":null,\"fields\":[\"provider\",\"entityType\",\"externalCode\"]}],\"isGenerated\":false,\"documentation\":\"One app row ↔ one record in the accounting software (customer account or\\\\nکارساخته).\"},\"AccountingOutbox\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"provider\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"kind\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AccountingOutboxKind\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"entityId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"status\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"AccountingOutboxStatus\",\"default\":\"PENDING\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"attempts\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"nextAttemptAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"lastError\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"externalRef\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"What the accounting software returned as the document/record id.\"},{\"name\":\"progress\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Json\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Per-step progress of multi-call jobs (a Zarrin document is one call per\\\\nline), so a failure resumes where it stopped.\"},{\"name\":\"lastRequest\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Json\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Last request/response, for the log screen. Never contains the token.\"},{\"name\":\"lastResponse\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Json\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sentAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"resolvedById\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":true}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"Work to push to the accounting software. Written in the SAME transaction as\\\\nthe change that causes it, so an outage of the accounting software never\\\\nloses an event and never blocks the app.\"},\"AccountingIssue\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"provider\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"kind\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"externalCode\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"entityId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"message\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"data\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Json\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"resolvedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[[\"provider\",\"kind\",\"externalCode\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"provider\",\"kind\",\"externalCode\"]}],\"isGenerated\":false,\"documentation\":\"Something a pull found that needs a human: an account with no mobile, two\\\\naccounts sharing one mobile, a کارساخته group with no category mapping.\"},\"Promotion\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"title\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"scope\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"PromotionScope\",\"default\":\"PRODUCT\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"usage\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"PromotionUsage\",\"default\":\"ONCE\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"discountPercent\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Percentage off, 0-100 (legacy discount_percent).\"},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"platform\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":3,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Which storefront it shows on, mirroring Product.showType (legacy platform).\"},{\"name\":\"startsAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"endsAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Exactly one of these is populated, per `scope`.\"},{\"name\":\"product\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Product\",\"relationName\":\"ProductToPromotion\",\"relationFromFields\":[\"productId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"categoryId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"category\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Category\",\"relationName\":\"CategoryToPromotion\",\"relationFromFields\":[\"categoryId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToPromotion\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"brandId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"brand\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Brand\",\"relationName\":\"BrandToPromotion\",\"relationFromFields\":[\"brandId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":true}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"PromotionExclusion\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"type\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"itemId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[[\"type\",\"itemId\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"type\",\"itemId\"]}],\"isGenerated\":false,\"documentation\":\"Legacy \\\"ignore\\\" table (views/offersIgnore) — specific products, categories,\\\\ncustomers or brands excluded from the automatic discount engine.\\\\nLegacy posts { type, item_id[] }: \\\"type\\\" reuses the promotion scope codes\\\\n(1 محصولات | 2 دسته بندی | 3 مشتری | 4 برند) and \\\"itemId\\\" is the excluded row.\"},\"BranchAllocation\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branchId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branch\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Branch\",\"relationName\":\"BranchToBranchAllocation\",\"relationFromFields\":[\"branchId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"allocatorAdminId\",\"dbName\":\"allocatorAdminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy `allocator_user` — the admin who filed the allocation.\"},{\"name\":\"allocatorAdmin\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"AllocationAuthor\",\"relationFromFields\":[\"allocatorAdminId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"note\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"items\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"BranchAllocationItem\",\"relationName\":\"BranchAllocationToBranchAllocationItem\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"BranchAllocationItem\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"allocationId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"allocation\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"BranchAllocation\",\"relationName\":\"BranchAllocationToBranchAllocationItem\",\"relationFromFields\":[\"allocationId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"product\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Product\",\"relationName\":\"BranchAllocationItemToProduct\",\"relationFromFields\":[\"productId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"weightGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Weight snapshot at allocation time, so later catalog edits do not rewrite history.\"}],\"primaryKey\":null,\"uniqueFields\":[[\"allocationId\",\"productId\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"allocationId\",\"productId\"]}],\"isGenerated\":false},\"SmsMessage\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"audience\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"MessageAudience\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"recipients\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Comma-separated recipients for the SINGLE/MULTIPLE audiences.\"},{\"name\":\"body\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sentCount\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"How many numbers the send actually resolved to.\"},{\"name\":\"sentByAdminId\",\"dbName\":\"sentByAdminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sentByAdmin\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"SmsAuthor\",\"relationFromFields\":[\"sentByAdminId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Notification\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"title\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"body\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"audience\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"MessageAudience\",\"default\":\"ALL_CUSTOMERS\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sentByAdminId\",\"dbName\":\"sentByAdminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sentByAdmin\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"NotificationAuthor\",\"relationFromFields\":[\"sentByAdminId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"recipients\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"NotificationRecipient\",\"relationName\":\"NotificationToNotificationRecipient\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"NotificationRecipient\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"notificationId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"notification\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Notification\",\"relationName\":\"NotificationToNotificationRecipient\",\"relationFromFields\":[\"notificationId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToNotificationRecipient\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"readAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[[\"notificationId\",\"customerId\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"notificationId\",\"customerId\"]}],\"isGenerated\":false,\"documentation\":\"Per-customer delivery + read state — legacy `GET notify/read/{id}`.\"},\"NewsletterSubscriber\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"email\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"mobile\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[[\"email\"],[\"mobile\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"email\"]},{\"name\":null,\"fields\":[\"mobile\"]}],\"isGenerated\":false,\"documentation\":\"Legacy views/newsletters — the mailing-list signups collected by the site.\"},\"CustomerActivityLog\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToCustomerActivityLog\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"action\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Free-form action key, e.g. 'login', 'order.placed', 'profile.updated'.\"},{\"name\":\"detail\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"Legacy views/statics — the customer activity log the \\\"آمار\\\" screen reads\\\\n(`log/list/customer`, `log/ago/{customerId}`).\"},\"UploadedFile\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"url\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Public URL the stored file is served from.\"},{\"name\":\"originalName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"mimeType\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sizeBytes\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"purpose\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Free-form tag for what the file belongs to, e.g. 'product', 'category',\\\\n'customer.nationalId'. Kept loose so a new form needs no schema change.\"},{\"name\":\"uploadedByAdminId\",\"dbName\":\"uploadedByAdminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"uploadedByAdmin\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"FileUploader\",\"relationFromFields\":[\"uploadedByAdminId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerAvatars\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerAvatar\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"adminUserAvatars\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AdminUser\",\"relationName\":\"AdminUserAvatar\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"CustomerOtp\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"mobile\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Normalised to English digits before storing, as the reference does with\\\\nUtility::faTOen() on both send and verify.\"},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToCustomerOtp\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"codeHash\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"bcrypt hash of the 4-digit code. Never the code itself.\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"attempts\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Failed verify attempts against THIS challenge.\"},{\"name\":\"consumedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Set when the code is accepted, so one challenge cannot be reused.\"},{\"name\":\"requestIp\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Kept for the per-IP send throttle.\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"One OTP login challenge for a customer.\\\\n\\\\nPorts henza_server's flow (ApiMobileController.php:39-78), where userAuth\\\\ngenerated rand(1000,9999), stored it on the customer row as `send_password`\\\\nand sent it by SMS, and userVerfiy compared the submitted code against it\\\\n(mismatch -> HTTP 422).\\\\n\\\\nThree deliberate improvements over the reference, approved by the user\\\\n(docs/parity/DECISIONS.md D6 and T1):\\\\n1. the code is stored as a bcrypt hash, never in plain text — the\\\\nreference kept it readable in a customer column;\\\\n2. it expires (`expiresAt`) — the reference's code stayed valid forever;\\\\n3. attempts are counted and the challenge locks out — the reference had\\\\nno limit at all.\\\\nThe parity behaviour itself is the code comparison and the rejection.\"}},\"enums\":{\"AdminRole\":{\"values\":[{\"name\":\"SUPER_ADMIN\",\"dbName\":null},{\"name\":\"SYSTEM_APPROVER\",\"dbName\":null},{\"name\":\"SALES_EXPERT\",\"dbName\":null},{\"name\":\"WORKSHOP_SUPERVISOR\",\"dbName\":null},{\"name\":\"ACCOUNTANT\",\"dbName\":null}],\"dbName\":null},\"CustomerKind\":{\"values\":[{\"name\":\"SALES_AGENT\",\"dbName\":null},{\"name\":\"APP_SHOPKEEPER\",\"dbName\":null},{\"name\":\"WALK_IN_SHOPKEEPER\",\"dbName\":null},{\"name\":\"BANKER\",\"dbName\":null},{\"name\":\"WORKSHOP_SUPERVISOR\",\"dbName\":null},{\"name\":\"RETAIL\",\"dbName\":null}],\"dbName\":null,\"documentation\":\"Legacy Customer.type — what kind of wholesale customer this is. Values and\\\\nlabels taken verbatim from bulkCustomer.vue's userTypes list.\\\\n\\\\nSALES_AGENT is a LEGACY value only: legacy stored a sales agent as a\\\\nCustomer row with type=1, but the redesigned system models a sales agent\\\\nas an AdminUser (role SALES_EXPERT) instead — see admin-users.service.ts\\\\nand admin-customers.service.ts's listReagents()/create(). No Customer row\\\\nshould be created with kind SALES_AGENT going forward; the value is kept\\\\nonly so legacyTypeToKind()/kindToLegacyType() stay total functions and any\\\\nalready-migrated data keeps a readable label.\\\\n\\\\nRETAIL marks a \\\"تک\\\" (single/retail) customer — legacy kept these in an\\\\nentirely separate table (SingleCustomer/`login`) that could never contain\\\\na wholesale/agent/shopkeeper/banker row. The redesigned schema folded both\\\\ninto one Customer model, so this value is what listSingle() now filters on\\\\nto reproduce that same separation.\"},\"VerificationStep\":{\"values\":[{\"name\":\"UNVERIFIED\",\"dbName\":null},{\"name\":\"STEP_ONE_SUBMITTED\",\"dbName\":null},{\"name\":\"STEP_TWO_SUBMITTED\",\"dbName\":null},{\"name\":\"VERIFIED\",\"dbName\":null},{\"name\":\"REJECTED\",\"dbName\":null,\"documentation\":\"Legacy had THREE states per step, not two\\\\n(MajorCustomerController.php:106-135): 1 = awaiting, 2 = approved,\\\\n3 = REJECTED. Mapping rejected customers to UNVERIFIED would put closed\\\\ncases back in the review queue, so the owner ruled it out (2026-10-07).\\\\n14 legacy rows land here; see Customer.verificationRejectionReason.\"}],\"dbName\":null},\"OrderChannel\":{\"values\":[{\"name\":\"RETAIL\",\"dbName\":null},{\"name\":\"WHOLESALE\",\"dbName\":null}],\"dbName\":null,\"documentation\":\"Legacy kept retail and wholesale orders in two SEPARATE tables\\\\n(orders_orders vs orders). The redesigned schema has one Order model, so the\\\\ndistinction lives here instead.\"},\"OrderStatus\":{\"values\":[{\"name\":\"SUSPENDED\",\"dbName\":null},{\"name\":\"PLACED\",\"dbName\":null},{\"name\":\"ADMIN_APPROVED\",\"dbName\":null},{\"name\":\"SOURCING\",\"dbName\":null},{\"name\":\"PREPARING\",\"dbName\":null},{\"name\":\"DELIVERED_TO_AGENT\",\"dbName\":null},{\"name\":\"DELIVERED_TO_CUSTOMER\",\"dbName\":null},{\"name\":\"CANCELLED\",\"dbName\":null}],\"dbName\":null},\"PreOrderStatus\":{\"values\":[{\"name\":\"PLACED\",\"dbName\":null},{\"name\":\"ADMIN_APPROVED\",\"dbName\":null},{\"name\":\"WORKSHOP_APPROVED\",\"dbName\":null},{\"name\":\"READY_TO_SHIP\",\"dbName\":null},{\"name\":\"DELIVERED\",\"dbName\":null},{\"name\":\"CANCELLED\",\"dbName\":null}],\"dbName\":null},\"LedgerCurrency\":{\"values\":[{\"name\":\"GOLD_GRAM\",\"dbName\":null},{\"name\":\"RIAL\",\"dbName\":null}],\"dbName\":null},\"LedgerDirection\":{\"values\":[{\"name\":\"DEBIT\",\"dbName\":null},{\"name\":\"CREDIT\",\"dbName\":null}],\"dbName\":null},\"LedgerSourceType\":{\"values\":[{\"name\":\"ORDER_STOCK\",\"dbName\":null},{\"name\":\"ORDER_PRE_ORDER\",\"dbName\":null},{\"name\":\"REPAYMENT_MELTED_GOLD\",\"dbName\":null},{\"name\":\"REPAYMENT_TRANSFER\",\"dbName\":null},{\"name\":\"REPAYMENT_CHEQUE\",\"dbName\":null},{\"name\":\"REPAYMENT_CASH\",\"dbName\":null},{\"name\":\"WALLET_BONUS\",\"dbName\":null},{\"name\":\"ADJUSTMENT\",\"dbName\":null}],\"dbName\":null},\"ProductImageRole\":{\"values\":[{\"name\":\"FEATURED\",\"dbName\":null},{\"name\":\"FEATURED_MOBILE\",\"dbName\":null},{\"name\":\"GALLERY\",\"dbName\":null},{\"name\":\"GALLERY_MOBILE\",\"dbName\":null}],\"dbName\":null},\"OrderRevisionStatus\":{\"values\":[{\"name\":\"NONE\",\"dbName\":null},{\"name\":\"AWAITING_CUSTOMER\",\"dbName\":null}],\"dbName\":null,\"documentation\":\"Customer-confirm state for an admin-proposed order edit (not a pipeline status).\"},\"CommentStatus\":{\"values\":[{\"name\":\"PENDING\",\"dbName\":null},{\"name\":\"APPROVED\",\"dbName\":null},{\"name\":\"REJECTED\",\"dbName\":null}],\"dbName\":null},\"AccountingEntityType\":{\"values\":[{\"name\":\"CUSTOMER\",\"dbName\":null},{\"name\":\"PRODUCT\",\"dbName\":null}],\"dbName\":null},\"AccountingOutboxKind\":{\"values\":[{\"name\":\"CUSTOMER_PUSH\",\"dbName\":null},{\"name\":\"PRODUCT_PUSH\",\"dbName\":null},{\"name\":\"ORDER_DOCUMENT\",\"dbName\":null},{\"name\":\"ORDER_DOCUMENT_DELETE\",\"dbName\":null}],\"dbName\":null},\"AccountingOutboxStatus\":{\"values\":[{\"name\":\"PENDING\",\"dbName\":null},{\"name\":\"SENDING\",\"dbName\":null,\"documentation\":\"A call was in flight. Found at startup, it means the process died mid-call\\\\nand the outcome is unknown — see AccountingOutboxWorker.\"},{\"name\":\"SENT\",\"dbName\":null},{\"name\":\"FAILED\",\"dbName\":null},{\"name\":\"NEEDS_REVIEW\",\"dbName\":null,\"documentation\":\"Unsafe to retry automatically (e.g. a Zarrin call timed out: Zarrin has no\\\\nidempotency key, so a blind retry could post the document twice).\"},{\"name\":\"RESOLVED\",\"dbName\":null,\"documentation\":\"Closed by an admin from the log screen.\"}],\"dbName\":null},\"PromotionScope\":{\"values\":[{\"name\":\"PRODUCT\",\"dbName\":null},{\"name\":\"CATEGORY\",\"dbName\":null},{\"name\":\"CUSTOMER\",\"dbName\":null},{\"name\":\"BRAND\",\"dbName\":null}],\"dbName\":null,\"documentation\":\"Legacy Promotion.type — what the discount is scoped to.\"},\"PromotionUsage\":{\"values\":[{\"name\":\"ONCE\",\"dbName\":null},{\"name\":\"UNTIL_END_DATE\",\"dbName\":null}],\"dbName\":null,\"documentation\":\"Legacy Promotion.use_only — how often a customer may redeem it.\"},\"MessageAudience\":{\"values\":[{\"name\":\"SINGLE_NUMBER\",\"dbName\":null},{\"name\":\"MULTIPLE_NUMBERS\",\"dbName\":null},{\"name\":\"ALL_CUSTOMERS\",\"dbName\":null},{\"name\":\"WHOLESALE_CUSTOMERS\",\"dbName\":null},{\"name\":\"RETAIL_CUSTOMERS\",\"dbName\":null},{\"name\":\"SALES_AGENTS\",\"dbName\":null}],\"dbName\":null,\"documentation\":\"Who an SMS or notification was aimed at. Legacy's sms/create offered these\\\\naudiences, each gated by its own rid (sms.create.all, .omde, .single, ...).\"}},\"types\":{}}") defineDmmfProperty(exports.Prisma, config.runtimeDataModel) config.engineWasm = undefined diff --git a/apps/api/release/vendor/.prisma/client/index-browser.js b/apps/api/release/vendor/.prisma/client/index-browser.js index 1e6f40d..156f661 100644 --- a/apps/api/release/vendor/.prisma/client/index-browser.js +++ b/apps/api/release/vendor/.prisma/client/index-browser.js @@ -417,6 +417,7 @@ exports.Prisma.PreOrderScalarFieldEnum = { sizeSpec: 'sizeSpec', stoneColor: 'stoneColor', minaColor: 'minaColor', + quantity: 'quantity', estimatedWeightGrams: 'estimatedWeightGrams', estimatedPriceRial: 'estimatedPriceRial', description: 'description', diff --git a/apps/api/release/vendor/.prisma/client/index.d.ts b/apps/api/release/vendor/.prisma/client/index.d.ts index 9b6c3fc..884fd19 100644 --- a/apps/api/release/vendor/.prisma/client/index.d.ts +++ b/apps/api/release/vendor/.prisma/client/index.d.ts @@ -30317,11 +30317,13 @@ export namespace Prisma { } export type PreOrderAvgAggregateOutputType = { + quantity: number | null estimatedWeightGrams: Decimal | null estimatedPriceRial: Decimal | null } export type PreOrderSumAggregateOutputType = { + quantity: number | null estimatedWeightGrams: Decimal | null estimatedPriceRial: Decimal | null } @@ -30337,6 +30339,7 @@ export namespace Prisma { sizeSpec: string | null stoneColor: string | null minaColor: string | null + quantity: number | null estimatedWeightGrams: Decimal | null estimatedPriceRial: Decimal | null description: string | null @@ -30356,6 +30359,7 @@ export namespace Prisma { sizeSpec: string | null stoneColor: string | null minaColor: string | null + quantity: number | null estimatedWeightGrams: Decimal | null estimatedPriceRial: Decimal | null description: string | null @@ -30375,6 +30379,7 @@ export namespace Prisma { sizeSpec: number stoneColor: number minaColor: number + quantity: number estimatedWeightGrams: number estimatedPriceRial: number description: number @@ -30386,11 +30391,13 @@ export namespace Prisma { export type PreOrderAvgAggregateInputType = { + quantity?: true estimatedWeightGrams?: true estimatedPriceRial?: true } export type PreOrderSumAggregateInputType = { + quantity?: true estimatedWeightGrams?: true estimatedPriceRial?: true } @@ -30406,6 +30413,7 @@ export namespace Prisma { sizeSpec?: true stoneColor?: true minaColor?: true + quantity?: true estimatedWeightGrams?: true estimatedPriceRial?: true description?: true @@ -30425,6 +30433,7 @@ export namespace Prisma { sizeSpec?: true stoneColor?: true minaColor?: true + quantity?: true estimatedWeightGrams?: true estimatedPriceRial?: true description?: true @@ -30444,6 +30453,7 @@ export namespace Prisma { sizeSpec?: true stoneColor?: true minaColor?: true + quantity?: true estimatedWeightGrams?: true estimatedPriceRial?: true description?: true @@ -30550,6 +30560,7 @@ export namespace Prisma { sizeSpec: string | null stoneColor: string | null minaColor: string | null + quantity: number estimatedWeightGrams: Decimal | null estimatedPriceRial: Decimal | null description: string | null @@ -30588,6 +30599,7 @@ export namespace Prisma { sizeSpec?: boolean stoneColor?: boolean minaColor?: boolean + quantity?: boolean estimatedWeightGrams?: boolean estimatedPriceRial?: boolean description?: boolean @@ -30613,6 +30625,7 @@ export namespace Prisma { sizeSpec?: boolean stoneColor?: boolean minaColor?: boolean + quantity?: boolean estimatedWeightGrams?: boolean estimatedPriceRial?: boolean description?: boolean @@ -30636,6 +30649,7 @@ export namespace Prisma { sizeSpec?: boolean stoneColor?: boolean minaColor?: boolean + quantity?: boolean estimatedWeightGrams?: boolean estimatedPriceRial?: boolean description?: boolean @@ -30679,6 +30693,11 @@ export namespace Prisma { sizeSpec: string | null stoneColor: string | null minaColor: string | null + /** + * Legacy custom_orders.sum — how many pieces the customer asked for. The first + * schema had no field for it and the admin grid showed a hard-coded 1. + */ + quantity: number estimatedWeightGrams: Prisma.Decimal | null estimatedPriceRial: Prisma.Decimal | null description: string | null @@ -31096,6 +31115,7 @@ export namespace Prisma { readonly sizeSpec: FieldRef<"PreOrder", 'String'> readonly stoneColor: FieldRef<"PreOrder", 'String'> readonly minaColor: FieldRef<"PreOrder", 'String'> + readonly quantity: FieldRef<"PreOrder", 'Int'> readonly estimatedWeightGrams: FieldRef<"PreOrder", 'Decimal'> readonly estimatedPriceRial: FieldRef<"PreOrder", 'Decimal'> readonly description: FieldRef<"PreOrder", 'String'> @@ -53635,6 +53655,7 @@ export namespace Prisma { sizeSpec: 'sizeSpec', stoneColor: 'stoneColor', minaColor: 'minaColor', + quantity: 'quantity', estimatedWeightGrams: 'estimatedWeightGrams', estimatedPriceRial: 'estimatedPriceRial', description: 'description', @@ -56336,6 +56357,7 @@ export namespace Prisma { sizeSpec?: StringNullableFilter<"PreOrder"> | string | null stoneColor?: StringNullableFilter<"PreOrder"> | string | null minaColor?: StringNullableFilter<"PreOrder"> | string | null + quantity?: IntFilter<"PreOrder"> | number estimatedWeightGrams?: DecimalNullableFilter<"PreOrder"> | Decimal | DecimalJsLike | number | string | null estimatedPriceRial?: DecimalNullableFilter<"PreOrder"> | Decimal | DecimalJsLike | number | string | null description?: StringNullableFilter<"PreOrder"> | string | null @@ -56360,6 +56382,7 @@ export namespace Prisma { sizeSpec?: SortOrderInput | SortOrder stoneColor?: SortOrderInput | SortOrder minaColor?: SortOrderInput | SortOrder + quantity?: SortOrder estimatedWeightGrams?: SortOrderInput | SortOrder estimatedPriceRial?: SortOrderInput | SortOrder description?: SortOrderInput | SortOrder @@ -56388,6 +56411,7 @@ export namespace Prisma { sizeSpec?: StringNullableFilter<"PreOrder"> | string | null stoneColor?: StringNullableFilter<"PreOrder"> | string | null minaColor?: StringNullableFilter<"PreOrder"> | string | null + quantity?: IntFilter<"PreOrder"> | number estimatedWeightGrams?: DecimalNullableFilter<"PreOrder"> | Decimal | DecimalJsLike | number | string | null estimatedPriceRial?: DecimalNullableFilter<"PreOrder"> | Decimal | DecimalJsLike | number | string | null description?: StringNullableFilter<"PreOrder"> | string | null @@ -56411,6 +56435,7 @@ export namespace Prisma { sizeSpec?: SortOrderInput | SortOrder stoneColor?: SortOrderInput | SortOrder minaColor?: SortOrderInput | SortOrder + quantity?: SortOrder estimatedWeightGrams?: SortOrderInput | SortOrder estimatedPriceRial?: SortOrderInput | SortOrder description?: SortOrderInput | SortOrder @@ -56438,6 +56463,7 @@ export namespace Prisma { sizeSpec?: StringNullableWithAggregatesFilter<"PreOrder"> | string | null stoneColor?: StringNullableWithAggregatesFilter<"PreOrder"> | string | null minaColor?: StringNullableWithAggregatesFilter<"PreOrder"> | string | null + quantity?: IntWithAggregatesFilter<"PreOrder"> | number estimatedWeightGrams?: DecimalNullableWithAggregatesFilter<"PreOrder"> | Decimal | DecimalJsLike | number | string | null estimatedPriceRial?: DecimalNullableWithAggregatesFilter<"PreOrder"> | Decimal | DecimalJsLike | number | string | null description?: StringNullableWithAggregatesFilter<"PreOrder"> | string | null @@ -60185,6 +60211,7 @@ export namespace Prisma { sizeSpec?: string | null stoneColor?: string | null minaColor?: string | null + quantity?: number estimatedWeightGrams?: Decimal | DecimalJsLike | number | string | null estimatedPriceRial?: Decimal | DecimalJsLike | number | string | null description?: string | null @@ -60208,6 +60235,7 @@ export namespace Prisma { sizeSpec?: string | null stoneColor?: string | null minaColor?: string | null + quantity?: number estimatedWeightGrams?: Decimal | DecimalJsLike | number | string | null estimatedPriceRial?: Decimal | DecimalJsLike | number | string | null description?: string | null @@ -60225,6 +60253,7 @@ export namespace Prisma { sizeSpec?: NullableStringFieldUpdateOperationsInput | string | null stoneColor?: NullableStringFieldUpdateOperationsInput | string | null minaColor?: NullableStringFieldUpdateOperationsInput | string | null + quantity?: IntFieldUpdateOperationsInput | number estimatedWeightGrams?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null estimatedPriceRial?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null description?: NullableStringFieldUpdateOperationsInput | string | null @@ -60248,6 +60277,7 @@ export namespace Prisma { sizeSpec?: NullableStringFieldUpdateOperationsInput | string | null stoneColor?: NullableStringFieldUpdateOperationsInput | string | null minaColor?: NullableStringFieldUpdateOperationsInput | string | null + quantity?: IntFieldUpdateOperationsInput | number estimatedWeightGrams?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null estimatedPriceRial?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null description?: NullableStringFieldUpdateOperationsInput | string | null @@ -60268,6 +60298,7 @@ export namespace Prisma { sizeSpec?: string | null stoneColor?: string | null minaColor?: string | null + quantity?: number estimatedWeightGrams?: Decimal | DecimalJsLike | number | string | null estimatedPriceRial?: Decimal | DecimalJsLike | number | string | null description?: string | null @@ -60284,6 +60315,7 @@ export namespace Prisma { sizeSpec?: NullableStringFieldUpdateOperationsInput | string | null stoneColor?: NullableStringFieldUpdateOperationsInput | string | null minaColor?: NullableStringFieldUpdateOperationsInput | string | null + quantity?: IntFieldUpdateOperationsInput | number estimatedWeightGrams?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null estimatedPriceRial?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null description?: NullableStringFieldUpdateOperationsInput | string | null @@ -60302,6 +60334,7 @@ export namespace Prisma { sizeSpec?: NullableStringFieldUpdateOperationsInput | string | null stoneColor?: NullableStringFieldUpdateOperationsInput | string | null minaColor?: NullableStringFieldUpdateOperationsInput | string | null + quantity?: IntFieldUpdateOperationsInput | number estimatedWeightGrams?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null estimatedPriceRial?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null description?: NullableStringFieldUpdateOperationsInput | string | null @@ -63825,6 +63858,7 @@ export namespace Prisma { sizeSpec?: SortOrder stoneColor?: SortOrder minaColor?: SortOrder + quantity?: SortOrder estimatedWeightGrams?: SortOrder estimatedPriceRial?: SortOrder description?: SortOrder @@ -63834,6 +63868,7 @@ export namespace Prisma { } export type PreOrderAvgOrderByAggregateInput = { + quantity?: SortOrder estimatedWeightGrams?: SortOrder estimatedPriceRial?: SortOrder } @@ -63849,6 +63884,7 @@ export namespace Prisma { sizeSpec?: SortOrder stoneColor?: SortOrder minaColor?: SortOrder + quantity?: SortOrder estimatedWeightGrams?: SortOrder estimatedPriceRial?: SortOrder description?: SortOrder @@ -63868,6 +63904,7 @@ export namespace Prisma { sizeSpec?: SortOrder stoneColor?: SortOrder minaColor?: SortOrder + quantity?: SortOrder estimatedWeightGrams?: SortOrder estimatedPriceRial?: SortOrder description?: SortOrder @@ -63877,6 +63914,7 @@ export namespace Prisma { } export type PreOrderSumOrderByAggregateInput = { + quantity?: SortOrder estimatedWeightGrams?: SortOrder estimatedPriceRial?: SortOrder } @@ -69671,6 +69709,7 @@ export namespace Prisma { sizeSpec?: string | null stoneColor?: string | null minaColor?: string | null + quantity?: number estimatedWeightGrams?: Decimal | DecimalJsLike | number | string | null estimatedPriceRial?: Decimal | DecimalJsLike | number | string | null description?: string | null @@ -69692,6 +69731,7 @@ export namespace Prisma { sizeSpec?: string | null stoneColor?: string | null minaColor?: string | null + quantity?: number estimatedWeightGrams?: Decimal | DecimalJsLike | number | string | null estimatedPriceRial?: Decimal | DecimalJsLike | number | string | null description?: string | null @@ -69951,6 +69991,7 @@ export namespace Prisma { sizeSpec?: StringNullableFilter<"PreOrder"> | string | null stoneColor?: StringNullableFilter<"PreOrder"> | string | null minaColor?: StringNullableFilter<"PreOrder"> | string | null + quantity?: IntFilter<"PreOrder"> | number estimatedWeightGrams?: DecimalNullableFilter<"PreOrder"> | Decimal | DecimalJsLike | number | string | null estimatedPriceRial?: DecimalNullableFilter<"PreOrder"> | Decimal | DecimalJsLike | number | string | null description?: StringNullableFilter<"PreOrder"> | string | null @@ -71921,6 +71962,7 @@ export namespace Prisma { sizeSpec?: string | null stoneColor?: string | null minaColor?: string | null + quantity?: number estimatedWeightGrams?: Decimal | DecimalJsLike | number | string | null estimatedPriceRial?: Decimal | DecimalJsLike | number | string | null description?: string | null @@ -71942,6 +71984,7 @@ export namespace Prisma { sizeSpec?: string | null stoneColor?: string | null minaColor?: string | null + quantity?: number estimatedWeightGrams?: Decimal | DecimalJsLike | number | string | null estimatedPriceRial?: Decimal | DecimalJsLike | number | string | null description?: string | null @@ -73711,6 +73754,7 @@ export namespace Prisma { sizeSpec?: string | null stoneColor?: string | null minaColor?: string | null + quantity?: number estimatedWeightGrams?: Decimal | DecimalJsLike | number | string | null estimatedPriceRial?: Decimal | DecimalJsLike | number | string | null description?: string | null @@ -73732,6 +73776,7 @@ export namespace Prisma { sizeSpec?: string | null stoneColor?: string | null minaColor?: string | null + quantity?: number estimatedWeightGrams?: Decimal | DecimalJsLike | number | string | null estimatedPriceRial?: Decimal | DecimalJsLike | number | string | null description?: string | null @@ -75739,6 +75784,7 @@ export namespace Prisma { sizeSpec?: string | null stoneColor?: string | null minaColor?: string | null + quantity?: number estimatedWeightGrams?: Decimal | DecimalJsLike | number | string | null estimatedPriceRial?: Decimal | DecimalJsLike | number | string | null description?: string | null @@ -75761,6 +75807,7 @@ export namespace Prisma { sizeSpec?: string | null stoneColor?: string | null minaColor?: string | null + quantity?: number estimatedWeightGrams?: Decimal | DecimalJsLike | number | string | null estimatedPriceRial?: Decimal | DecimalJsLike | number | string | null description?: string | null @@ -76196,6 +76243,7 @@ export namespace Prisma { sizeSpec?: NullableStringFieldUpdateOperationsInput | string | null stoneColor?: NullableStringFieldUpdateOperationsInput | string | null minaColor?: NullableStringFieldUpdateOperationsInput | string | null + quantity?: IntFieldUpdateOperationsInput | number estimatedWeightGrams?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null estimatedPriceRial?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null description?: NullableStringFieldUpdateOperationsInput | string | null @@ -76218,6 +76266,7 @@ export namespace Prisma { sizeSpec?: NullableStringFieldUpdateOperationsInput | string | null stoneColor?: NullableStringFieldUpdateOperationsInput | string | null minaColor?: NullableStringFieldUpdateOperationsInput | string | null + quantity?: IntFieldUpdateOperationsInput | number estimatedWeightGrams?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null estimatedPriceRial?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null description?: NullableStringFieldUpdateOperationsInput | string | null @@ -77240,6 +77289,7 @@ export namespace Prisma { sizeSpec?: string | null stoneColor?: string | null minaColor?: string | null + quantity?: number estimatedWeightGrams?: Decimal | DecimalJsLike | number | string | null estimatedPriceRial?: Decimal | DecimalJsLike | number | string | null description?: string | null @@ -77262,6 +77312,7 @@ export namespace Prisma { sizeSpec?: string | null stoneColor?: string | null minaColor?: string | null + quantity?: number estimatedWeightGrams?: Decimal | DecimalJsLike | number | string | null estimatedPriceRial?: Decimal | DecimalJsLike | number | string | null description?: string | null @@ -77343,6 +77394,7 @@ export namespace Prisma { sizeSpec?: NullableStringFieldUpdateOperationsInput | string | null stoneColor?: NullableStringFieldUpdateOperationsInput | string | null minaColor?: NullableStringFieldUpdateOperationsInput | string | null + quantity?: IntFieldUpdateOperationsInput | number estimatedWeightGrams?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null estimatedPriceRial?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null description?: NullableStringFieldUpdateOperationsInput | string | null @@ -77365,6 +77417,7 @@ export namespace Prisma { sizeSpec?: NullableStringFieldUpdateOperationsInput | string | null stoneColor?: NullableStringFieldUpdateOperationsInput | string | null minaColor?: NullableStringFieldUpdateOperationsInput | string | null + quantity?: IntFieldUpdateOperationsInput | number estimatedWeightGrams?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null estimatedPriceRial?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null description?: NullableStringFieldUpdateOperationsInput | string | null @@ -80897,6 +80950,7 @@ export namespace Prisma { sizeSpec?: string | null stoneColor?: string | null minaColor?: string | null + quantity?: number estimatedWeightGrams?: Decimal | DecimalJsLike | number | string | null estimatedPriceRial?: Decimal | DecimalJsLike | number | string | null description?: string | null @@ -81153,6 +81207,7 @@ export namespace Prisma { sizeSpec?: NullableStringFieldUpdateOperationsInput | string | null stoneColor?: NullableStringFieldUpdateOperationsInput | string | null minaColor?: NullableStringFieldUpdateOperationsInput | string | null + quantity?: IntFieldUpdateOperationsInput | number estimatedWeightGrams?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null estimatedPriceRial?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null description?: NullableStringFieldUpdateOperationsInput | string | null @@ -81174,6 +81229,7 @@ export namespace Prisma { sizeSpec?: NullableStringFieldUpdateOperationsInput | string | null stoneColor?: NullableStringFieldUpdateOperationsInput | string | null minaColor?: NullableStringFieldUpdateOperationsInput | string | null + quantity?: IntFieldUpdateOperationsInput | number estimatedWeightGrams?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null estimatedPriceRial?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null description?: NullableStringFieldUpdateOperationsInput | string | null @@ -81193,6 +81249,7 @@ export namespace Prisma { sizeSpec?: NullableStringFieldUpdateOperationsInput | string | null stoneColor?: NullableStringFieldUpdateOperationsInput | string | null minaColor?: NullableStringFieldUpdateOperationsInput | string | null + quantity?: IntFieldUpdateOperationsInput | number estimatedWeightGrams?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null estimatedPriceRial?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null description?: NullableStringFieldUpdateOperationsInput | string | null @@ -81949,6 +82006,7 @@ export namespace Prisma { sizeSpec?: string | null stoneColor?: string | null minaColor?: string | null + quantity?: number estimatedWeightGrams?: Decimal | DecimalJsLike | number | string | null estimatedPriceRial?: Decimal | DecimalJsLike | number | string | null description?: string | null @@ -82205,6 +82263,7 @@ export namespace Prisma { sizeSpec?: NullableStringFieldUpdateOperationsInput | string | null stoneColor?: NullableStringFieldUpdateOperationsInput | string | null minaColor?: NullableStringFieldUpdateOperationsInput | string | null + quantity?: IntFieldUpdateOperationsInput | number estimatedWeightGrams?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null estimatedPriceRial?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null description?: NullableStringFieldUpdateOperationsInput | string | null @@ -82226,6 +82285,7 @@ export namespace Prisma { sizeSpec?: NullableStringFieldUpdateOperationsInput | string | null stoneColor?: NullableStringFieldUpdateOperationsInput | string | null minaColor?: NullableStringFieldUpdateOperationsInput | string | null + quantity?: IntFieldUpdateOperationsInput | number estimatedWeightGrams?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null estimatedPriceRial?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null description?: NullableStringFieldUpdateOperationsInput | string | null @@ -82245,6 +82305,7 @@ export namespace Prisma { sizeSpec?: NullableStringFieldUpdateOperationsInput | string | null stoneColor?: NullableStringFieldUpdateOperationsInput | string | null minaColor?: NullableStringFieldUpdateOperationsInput | string | null + quantity?: IntFieldUpdateOperationsInput | number estimatedWeightGrams?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null estimatedPriceRial?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null description?: NullableStringFieldUpdateOperationsInput | string | null @@ -82802,6 +82863,7 @@ export namespace Prisma { sizeSpec?: string | null stoneColor?: string | null minaColor?: string | null + quantity?: number estimatedWeightGrams?: Decimal | DecimalJsLike | number | string | null estimatedPriceRial?: Decimal | DecimalJsLike | number | string | null description?: string | null @@ -82818,6 +82880,7 @@ export namespace Prisma { sizeSpec?: NullableStringFieldUpdateOperationsInput | string | null stoneColor?: NullableStringFieldUpdateOperationsInput | string | null minaColor?: NullableStringFieldUpdateOperationsInput | string | null + quantity?: IntFieldUpdateOperationsInput | number estimatedWeightGrams?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null estimatedPriceRial?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null description?: NullableStringFieldUpdateOperationsInput | string | null @@ -82839,6 +82902,7 @@ export namespace Prisma { sizeSpec?: NullableStringFieldUpdateOperationsInput | string | null stoneColor?: NullableStringFieldUpdateOperationsInput | string | null minaColor?: NullableStringFieldUpdateOperationsInput | string | null + quantity?: IntFieldUpdateOperationsInput | number estimatedWeightGrams?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null estimatedPriceRial?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null description?: NullableStringFieldUpdateOperationsInput | string | null @@ -82858,6 +82922,7 @@ export namespace Prisma { sizeSpec?: NullableStringFieldUpdateOperationsInput | string | null stoneColor?: NullableStringFieldUpdateOperationsInput | string | null minaColor?: NullableStringFieldUpdateOperationsInput | string | null + quantity?: IntFieldUpdateOperationsInput | number estimatedWeightGrams?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null estimatedPriceRial?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null description?: NullableStringFieldUpdateOperationsInput | string | null diff --git a/apps/api/release/vendor/.prisma/client/index.js b/apps/api/release/vendor/.prisma/client/index.js index 0818a83..df2aa1c 100644 --- a/apps/api/release/vendor/.prisma/client/index.js +++ b/apps/api/release/vendor/.prisma/client/index.js @@ -386,6 +386,7 @@ exports.Prisma.PreOrderScalarFieldEnum = { sizeSpec: 'sizeSpec', stoneColor: 'stoneColor', minaColor: 'minaColor', + quantity: 'quantity', estimatedWeightGrams: 'estimatedWeightGrams', estimatedPriceRial: 'estimatedPriceRial', description: 'description', @@ -884,8 +885,8 @@ const config = { } } }, - "inlineSchema": "// Gold Banking System — core schema\n// Canonical accounting model: legacy \"System A\" gram ledger (see migration notes).\n// The external \"Tahesab\" service is retired — LedgerEntry is the sole source of truth.\n// All money/weight fields use Decimal, never Float, to avoid rounding drift in debt math.\n\ngenerator client {\n provider = \"prisma-client-js\"\n // native = local Windows/macOS; debian-openssl-3.0.x = node:20-bookworm-slim (Arvan)\n binaryTargets = [\"native\", \"debian-openssl-3.0.x\"]\n}\n\ndatasource db {\n provider = \"postgresql\"\n url = env(\"DATABASE_URL\")\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Enums\n// ─────────────────────────────────────────────────────────────────────────\n\nenum AdminRole {\n SUPER_ADMIN\n SYSTEM_APPROVER // legacy: تایید مدیر سیستم\n SALES_EXPERT // legacy Customer.type=1, also acts as a referral \"reagent\"\n WORKSHOP_SUPERVISOR\n ACCOUNTANT\n}\n\n/// Legacy Customer.type — what kind of wholesale customer this is. Values and\n/// labels taken verbatim from bulkCustomer.vue's userTypes list.\n///\n/// SALES_AGENT is a LEGACY value only: legacy stored a sales agent as a\n/// Customer row with type=1, but the redesigned system models a sales agent\n/// as an AdminUser (role SALES_EXPERT) instead — see admin-users.service.ts\n/// and admin-customers.service.ts's listReagents()/create(). No Customer row\n/// should be created with kind SALES_AGENT going forward; the value is kept\n/// only so legacyTypeToKind()/kindToLegacyType() stay total functions and any\n/// already-migrated data keeps a readable label.\n///\n/// RETAIL marks a \"تک\" (single/retail) customer — legacy kept these in an\n/// entirely separate table (SingleCustomer/`login`) that could never contain\n/// a wholesale/agent/shopkeeper/banker row. The redesigned schema folded both\n/// into one Customer model, so this value is what listSingle() now filters on\n/// to reproduce that same separation.\nenum CustomerKind {\n SALES_AGENT // legacy 1 کارشناس فروش — superseded by AdminRole.SALES_EXPERT, do not use for new rows\n APP_SHOPKEEPER // 2 مغازه دار اپلیکیشن\n WALK_IN_SHOPKEEPER // 3 مغازه دار حضوری\n BANKER // 4 بنکدار\n WORKSHOP_SUPERVISOR // 5 سرپرست کارگاه\n RETAIL // مشتری تک — legacy SingleCustomer\n}\n\nenum VerificationStep {\n UNVERIFIED\n STEP_ONE_SUBMITTED\n STEP_TWO_SUBMITTED\n VERIFIED\n\n /// Legacy had THREE states per step, not two\n /// (MajorCustomerController.php:106-135): 1 = awaiting, 2 = approved,\n /// 3 = REJECTED. Mapping rejected customers to UNVERIFIED would put closed\n /// cases back in the review queue, so the owner ruled it out (2026-10-07).\n /// 14 legacy rows land here; see Customer.verificationRejectionReason.\n REJECTED\n}\n\n/// Legacy kept retail and wholesale orders in two SEPARATE tables\n/// (orders_orders vs orders). The redesigned schema has one Order model, so the\n/// distinction lives here instead.\nenum OrderChannel {\n RETAIL // تک فروشی\n WHOLESALE // عمده فروشی\n}\n\nenum OrderStatus {\n SUSPENDED // credit limit (goldCreditLimitGrams) exceeded at placement\n PLACED\n ADMIN_APPROVED\n SOURCING\n PREPARING\n DELIVERED_TO_AGENT\n DELIVERED_TO_CUSTOMER // debt recognition point — mirrors legacy sts>4\n CANCELLED\n}\n\nenum PreOrderStatus {\n PLACED\n ADMIN_APPROVED\n WORKSHOP_APPROVED\n READY_TO_SHIP\n DELIVERED\n CANCELLED\n}\n\nenum LedgerCurrency {\n GOLD_GRAM\n RIAL\n}\n\nenum LedgerDirection {\n DEBIT // increases what the customer owes\n CREDIT // decreases what the customer owes\n}\n\nenum LedgerSourceType {\n ORDER_STOCK\n ORDER_PRE_ORDER\n REPAYMENT_MELTED_GOLD // karat-normalized: amount * karatPerMille / 750\n REPAYMENT_TRANSFER\n REPAYMENT_CHEQUE\n REPAYMENT_CASH // price-per-gram-normalized via pricePerGramRialAtEntry\n WALLET_BONUS\n ADJUSTMENT\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Identity\n// ─────────────────────────────────────────────────────────────────────────\n\n/// Legacy `cities` is a tree (country > province > city > district) and so is\n/// this: a city hangs under its `parent`. In the admin pickers a top-level row\n/// (the country) is a heading, not selectable (henza_admin citiesModel.js:38).\nmodel City {\n id String @id @default(cuid())\n name String\n parentId String?\n parent City? @relation(\"CityTree\", fields: [parentId], references: [id], onDelete: Restrict)\n children City[] @relation(\"CityTree\")\n /// Legacy cities.percent / percent_aux — per-city wage surcharges the city\n /// screen edits through GET cities/get-percent/{id} and get-percent-aux/{id}.\n percent Decimal? @db.Decimal(6, 3)\n percentAux Decimal? @db.Decimal(6, 3)\n customers Customer[]\n addresses CustomerAddress[]\n branches Branch[]\n preOrders PreOrder[]\n salesExpertProfiles SalesExpertProfile[]\n\n @@index([parentId])\n}\n\n/// A staff account for the ADMIN PANEL — and nothing else.\n///\n/// Split out of AdminUser (which now holds sales experts only) so that:\n/// * the same mobile can be an admin AND a sales expert — they are two\n/// separate roles, each unique only within its own table;\n/// * the expert table (production: ~12,000 rows) is never written by panel\n/// staff management.\n/// Migration 20261026120000_split_admin_table copies the existing non-expert\n/// AdminUser rows here WITH THEIR IDS, so issued panel tokens and every\n/// \"who did this\" column keep resolving. The old rows are left in AdminUser,\n/// dormant; no code reads them as admins any more.\n///\n/// ⚠️ fullName/firstName/lastName are kept in sync by the DB trigger\n/// `admin_sync_full_name_trg` (it shares the function admin_user_sync_full_name) — same semantics as AdminUser: the parts win.\nmodel Admin {\n id String @id @default(cuid())\n\n fullName String\n firstName String?\n lastName String?\n\n mobile String @unique\n passwordHash String\n /// Never SALES_EXPERT — that role lives in AdminUser. Enforced in\n /// AdminUsersService, not in the database, so the enum stays shared.\n role AdminRole\n userTypeId Int?\n userType UserType? @relation(fields: [userTypeId], references: [id])\n branchId String?\n branch Branch? @relation(fields: [branchId], references: [id])\n isActive Boolean @default(true)\n createdAt DateTime @default(now())\n\n supervisedWorkshops Workshop[] @relation(\"WorkshopSupervisor\")\n branchAllocations BranchAllocation[] @relation(\"AllocationAuthor\")\n postedLedgerEntries LedgerEntry[]\n orderStatusEvents OrderStatusEvent[]\n preOrderStatusEvents PreOrderStatusEvent[]\n sentSmsMessages SmsMessage[] @relation(\"SmsAuthor\")\n sentNotifications Notification[] @relation(\"NotificationAuthor\")\n uploadedFiles UploadedFile[] @relation(\"FileUploader\")\n\n /// Issued admin-panel tokens, recorded only while session tracking is on\n /// (AUTH_SESSION_TRACKING, or implicitly whenever the IAM is enabled) so a\n /// token can be revoked before it expires. See AdminSession.\n sessions AdminSession[]\n\n @@index([role])\n @@index([userTypeId])\n @@index([firstName])\n @@index([lastName])\n}\n\n/// A SALES EXPERT (role SALES_EXPERT). Panel staff live in `Admin`; rows here with\n/// any other role are pre-split leftovers and are ignored by the code.\nmodel AdminUser {\n id String @id @default(cuid())\n\n /// ⚠️ Kept in sync BY A DATABASE TRIGGER — `admin_user_sync_full_name`, from\n /// migration 20260922180000. Prisma cannot see it, so a write here may store\n /// something other than what you passed:\n ///\n /// * write the parts -> fullName is rebuilt as \"first last\"\n /// * write fullName only -> the parts are re-derived from it\n /// * write BOTH in one update -> THE PARTS WIN; the submitted fullName is\n /// discarded\n ///\n /// Re-read after writing if you need the stored value. Same arrangement as\n /// Customer (D0 requirement 7 — the split applies to ALL admins, not only\n /// sales experts).\n fullName String\n firstName String?\n lastName String?\n\n mobile String @unique\n passwordHash String\n role AdminRole\n /// Legacy `users.ut`. Granular ACL lives here (Permission rows hang off UserType);\n /// the coarse `role` enum above is retained for the business rules that already\n /// switch on it. Nullable so existing seeded admins remain valid.\n userTypeId Int?\n userType UserType? @relation(fields: [userTypeId], references: [id])\n branchId String?\n branch Branch? @relation(fields: [branchId], references: [id])\n wagePercent Decimal? @db.Decimal(6, 3) // legacy Customer.percent, commission on referred orders\n isActive Boolean @default(true)\n createdAt DateTime @default(now())\n\n /// Legacy stored a sales agent as a `customers` row with type=1, so\n /// ReagentCustomer.vue's shared form collected these alongside the\n /// wholesale-customer fields. A sales agent is now an AdminUser\n /// (role=SALES_EXPERT), so these live here instead — only ever set for that\n /// role; every other AdminUser leaves them null.\n avatarFileId String?\n avatarFile UploadedFile? @relation(\"AdminUserAvatar\", fields: [avatarFileId], references: [id])\n address String?\n storeName String? // legacy store_name\n pasazhName String? // legacy pasazh_name\n memberCode String? // legacy mcode\n\n referredCustomers Customer[] @relation(\"ReferralAgent\")\n /// Orders credited to this sales expert — see Order.salesAgentId.\n creditedOrders Order[] @relation(\"OrderSalesAgent\")\n\n /// Only ever set for role = SALES_EXPERT (D17).\n salesExpertProfile SalesExpertProfile?\n\n @@index([role])\n @@index([userTypeId])\n @@index([avatarFileId])\n @@index([firstName])\n @@index([lastName])\n}\n\n/// An issued APP token (customer app / sales-expert app), so it can be revoked\n/// before it expires — the counterpart of AdminSession for the other token family.\n///\n/// WHY A SEPARATE TABLE AND NO FOREIGN KEY\n/// ---------------------------------------\n/// An app token's `sub` is a Customer id for a customer and an **AdminUser id**\n/// for a sales expert (D21). One FK cannot point at two tables, so the subject is\n/// stored as a plain id plus its type. The rows are short-lived operational data,\n/// not part of the accounting model, so the missing FK costs nothing here.\nmodel AppSession {\n id String @id @default(cuid())\n\n /// The token's `jti` claim. Unique: one row per issued token.\n jti String @unique\n\n /// Customer.id, or AdminUser.id when subjectType is \"sales-expert\".\n subjectId String\n subjectType String\n\n mobile String?\n\n /// Set when the login was confirmed by the central IAM: its session id (`sid`)\n /// and stable user id (`sub`), which is what a back-channel logout arrives with.\n iamSessionId String?\n iamSub String?\n\n ipAddress String?\n userAgent String?\n\n createdAt DateTime @default(now())\n expiresAt DateTime?\n lastSeenAt DateTime?\n\n revokedAt DateTime?\n revokedReason String?\n\n @@index([subjectId])\n @@index([iamSessionId])\n @@index([iamSub])\n @@index([expiresAt])\n}\n\n/// An issued admin-panel JWT, so it can be revoked before it expires.\n///\n/// WHY THIS EXISTS\n/// ---------------\n/// The admin token is self-contained and valid for 12h, which means nothing —\n/// not disabling the account, not a central \"sign out everywhere\" — could cut a\n/// session short: the token kept working until it expired. With the central IAM\n/// in the loop that gap became visible (an IAM session revocation had no effect\n/// here), so every issued token now carries a `jti` recorded on this table and\n/// JwtStrategy refuses a token whose row is revoked.\n///\n/// Rows are written ONLY while tracking is enabled, and JwtStrategy only\n/// enforces them while it is enabled, so a deployment that does not want the\n/// extra lookup behaves exactly as before.\nmodel AdminSession {\n id String @id @default(cuid())\n\n /// The token's `jti` claim. Unique: one row per issued token.\n jti String @unique\n\n adminId String @map(\"adminUserId\")\n admin Admin @relation(fields: [adminId], references: [id], onDelete: Cascade)\n\n /// Set when the login was verified by the IAM: its session id (`sid`) and the\n /// stable user id (`sub`) there. Back-channel logout arrives keyed by these —\n /// deliberately here rather than as columns on AdminUser, so enabling the\n /// feature needs no change to an existing table.\n iamSessionId String?\n iamSub String?\n\n ipAddress String?\n userAgent String?\n\n createdAt DateTime @default(now())\n expiresAt DateTime?\n lastSeenAt DateTime?\n\n revokedAt DateTime?\n revokedReason String?\n\n @@index([adminId], map: \"AdminSession_adminUserId_idx\")\n @@index([iamSessionId])\n @@index([iamSub])\n @@index([expiresAt])\n}\n\n/// The sales-expert fields legacy kept on the `customers` row (type=1) and that\n/// were lost when a sales expert became an AdminUser (D17).\n///\n/// A separate table rather than columns on AdminUser: these are meaningful only\n/// for role = SALES_EXPERT and would be permanently null for every other admin.\n/// A row is created for every SALES_EXPERT by the migration, and upserted by the\n/// service whenever one is created or a user's role becomes SALES_EXPERT — but\n/// readers still left-join, so a missing profile degrades to nulls rather than\n/// dropping the agent from the grid.\n///\n/// `reagent_id` is deliberately NOT here — see D17: in the reference it was a\n/// side effect of the shared customers form, and filling it removed that expert\n/// from the selectable-agent list (queryReagent, AdminController.php:420).\nmodel SalesExpertProfile {\n id String @id @default(cuid())\n adminUserId String @unique\n adminUser AdminUser @relation(fields: [adminUserId], references: [id], onDelete: Cascade)\n\n /// Legacy customers.city_id — a filterable grid column\n /// (ReagentListModel.js:14) and the source of the commission autofill\n /// (ReagentCustomer.vue:215-228).\n cityId String?\n city City? @relation(fields: [cityId], references: [id])\n\n /// Legacy customers.gram_level — the «سطح اعتبار» column, filterable.\n /// Decimal(14,4) matches Customer.goldCreditLimitGrams exactly so the same\n /// credit limit has identical precision on both tables.\n gramLevel Decimal @default(0) @db.Decimal(14, 4)\n\n /// Legacy customers.phone (varchar 15) and ncode (varchar 20). The reference\n /// stores both and reads neither back; kept so the form matches it. Neither\n /// is unique and neither has a validation rule in the reference — inventing\n /// one would reject data the reference accepts.\n phone String? @db.VarChar(15)\n nationalCode String? @db.VarChar(20)\n\n /// The Customer row carrying this expert's OWN orders, debt and credit limit.\n ///\n /// The reference stored a sales agent AS a Customer (type=1), so an order the\n /// agent placed from the app was simply their own, against their own\n /// gram_level (ApiMobileController.php:534-535). Here the expert is an\n /// AdminUser (D17), which has no ledger and cannot be an Order's subject, so\n /// this one linked Customer plays that part.\n ///\n /// Distinct from the expert's REFERRED customers, which are ordinary Customer\n /// rows pointing at the AdminUser through Customer.referredByAgentId.\n ///\n /// Null until the expert first signs into the app, when it is created from\n /// this profile. See D21.\n tradingCustomerId String? @unique\n tradingCustomer Customer? @relation(\"SalesExpertTradingAccount\", fields: [tradingCustomerId], references: [id], onDelete: SetNull)\n\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now()) @updatedAt\n\n @@index([cityId])\n}\n\nmodel Customer {\n id String @id @default(cuid())\n\n /// ⚠️ `fullName`, `firstName` and `lastName` are kept in sync BY A DATABASE\n /// TRIGGER — `customer_sync_full_name`, created in migration\n /// 20260922120000_customer_name_parts. Prisma does not know about it, so a\n /// write here is NOT the whole story:\n ///\n /// * write the parts -> fullName is rebuilt as \"first last\"\n /// * write fullName only -> the parts are re-derived from it\n /// * write BOTH in one update -> THE PARTS WIN; fullName is overwritten\n /// with \"first last\" and whatever you passed for fullName is discarded\n ///\n /// So a value you wrote can differ from the value that lands in the row.\n /// Re-read after writing if you need the stored value. Prefer writing the\n /// parts; `fullName` exists for the legacy readers that predate D0.\n ///\n /// Reference has these as two columns from the start\n /// (henza_server 2020_10_01_120430_customers_table.php:18-19 fname/lname);\n /// the port collapsed them, which is the D0 defect.\n fullName String\n firstName String?\n lastName String?\n\n mobile String @unique\n /// Legacy customers.ncode. OPTIONAL since 2026-10-07: not one of the 1,616\n /// legacy customers has a national code (1595/1595 empty), and fabricating\n /// one is a data violation that would block later legal identity checks\n /// (owner ruling). Still @unique — in PostgreSQL NULLs do not collide, so\n /// the migration tool must write NULL and never '', which would collide on\n /// the second row.\n ///\n /// Three service-layer workarounds exist ONLY because this used to be\n /// required, and they store the MOBILE NUMBER here:\n /// admin-customers.service.ts:625,685 and customer-auth.service.ts:258.\n /// Retiring them is a separate change; see docs/DATA-MIGRATION-MAP.md §10.4.\n nationalCode String? @unique\n passwordHash String\n cityId String?\n city City? @relation(fields: [cityId], references: [id])\n\n /// Legacy customers.new_city — the city name exactly as the customer typed it\n /// at app sign-up (Major/CustomerController.php:36). Kept verbatim because\n /// the legacy city table has only 15 rows, so the typed name is often the only\n /// record of where the customer is (172 customers; 43 match no known city).\n /// cityId is set alongside it only on an exact, ي/ك-normalised name match.\n /// Legacy sign-up also forced city_id = 5 (Tehran) on everyone\n /// (Major/CustomerController.php:21), so for those rows the typed name, not\n /// cityId, is the truth. Owner ruling 2026-10-07: keep both.\n cityNameRaw String?\n\n /// Legacy Customer.type — distinguishes بنکدار from مغازه دار, which the\n /// BankerList / ShopkeeperList screens filter on.\n kind CustomerKind @default(APP_SHOPKEEPER)\n\n /// Legacy contact + shop columns, shown on the wholesale customer form and as\n /// (hidden-by-default) columns in its grid.\n phone String?\n address String?\n storeName String?\n pasazhName String?\n zone String?\n /// Legacy mcode — the operator-assigned customer code.\n memberCode String?\n\n referredByAgentId String?\n referredByAgent AdminUser? @relation(\"ReferralAgent\", fields: [referredByAgentId], references: [id])\n\n /// Set only on the one Customer row that acts as a sales expert's own trading\n /// account (see SalesExpertProfile.tradingCustomerId). Empty for every\n /// ordinary customer.\n salesExpertTradingFor SalesExpertProfile? @relation(\"SalesExpertTradingAccount\")\n /// Legacy orders that named THIS customer as their referrer — see\n /// Order.referrerCustomerId. History only.\n referredOrders Order[] @relation(\"OrderReferrerCustomer\")\n\n // Credit limit + cached ledger balances (source of truth is LedgerEntry; these\n // are denormalized for fast reads and reconciled by a scheduled job).\n goldCreditLimitGrams Decimal @default(0) @db.Decimal(14, 4) // legacy gram_level\n goldDebtGrams Decimal @default(0) @db.Decimal(14, 4) // legacy remain\n fiatDebtRial Decimal @default(0) @db.Decimal(20, 2) // legacy rial_remain\n\n /// Balance as last read from the accounting software (D27), in the app's own\n /// sign convention (positive = owes). Shown to the customer when the\n /// integration is on; the credit-limit check still uses goldDebtGrams above.\n /// Null until the first successful sync.\n accountingGoldBalance Decimal? @db.Decimal(14, 4)\n accountingRialBalance Decimal? @db.Decimal(20, 2)\n accountingBalanceAt DateTime?\n\n /// Legacy `customers.percent` — the per-customer making-charge offset. It is\n /// ADDED to the variant's making charge when pricing an order line\n /// (henza_pwa src/Mixins/product/index.ts:69-75:\n /// getWage(v) = state.percent + v.percentage_pay)\n /// and it shifts the catalogue making-charge filter bounds\n /// (ApiMobileController.php:391-396,76-77). It is NOT part of the price\n /// formula itself — that extra percent is ConfigStatic['product_price_extra_percent'].\n ///\n /// NOT the wallet cashback rate (storefront ConfigStatic['percent'], D13) and\n /// NOT the wholesale per-line charge (OrderItem.wagePercentSnapshot).\n ///\n /// DB default 0 keeps every existing customer's price unchanged. The\n /// reference's application-layer default for NEW customers is 3\n /// (AdminController.php:338) and the field is required on create (:354).\n makingChargeOffsetPercent Decimal @default(0) @db.Decimal(6, 3)\n\n verificationStep VerificationStep @default(UNVERIFIED)\n nationalIdImageUrl String?\n businessLicenseUrl String?\n shopImageUrl String?\n\n /// Why verification was rejected (VerificationStep.REJECTED).\n ///\n /// Legacy recorded NO reason: none of its 49 `customers` columns is a\n /// reason/note field, and on rejection it only sent a fixed SMS. So the 14\n /// rows migrated from the legacy system carry the sentinel\n /// «رد شده در سیستم قدیم — فاقد شرح علت ثبت‌شده» instead of NULL, so support\n /// knows why it is blank (owner ruling 2026-10-07). The migration tool\n /// writes it only WHERE this IS NULL, so a re-run cannot overwrite a real\n /// reason entered in the new system.\n verificationRejectionReason String?\n\n /// NULL for rows migrated from the legacy system — it recorded no rejection time.\n verificationRejectedAt DateTime?\n\n /// Legacy customers.birth_date, populated on 917 of 1,595 rows. Kept for the\n /// birthday SMS / loyalty campaigns (owner ruling 2026-10-07).\n ///\n /// ⚠ Legacy stores dates as JALALI STRINGS in other tables\n /// (cashes.recive_date is varchar, 88/89 values starting \"14…\"), so this\n /// timestamp may hold mis-entered Jalali years. Confirm the calendar with\n /// docs/migration-precheck-3.sql BEFORE backfilling: copying them unchanged\n /// would produce 917 wrong birthdays, worse for an SMS campaign than none.\n birthDate DateTime?\n\n /// Legacy `image_id` — the profile photo (عکس پروفایل) on the sales-agent\n /// form. Legacy stored an FK to its Image table and read it back as a nested\n /// `image: { id, image }`, so this is a relation, not a bare URL string.\n avatarFileId String?\n avatarFile UploadedFile? @relation(\"CustomerAvatar\", fields: [avatarFileId], references: [id])\n\n /// Legacy had TWO independent switches on a customer:\n /// sts -> may they place orders (this field)\n /// active -> is the account enabled (isActive, below)\n /// The port previously drove both from isActive; they are separate again.\n canPlaceOrders Boolean @default(true)\n\n isActive Boolean @default(true)\n /// Legacy archive flag — the archived list filtered on this, not on isActive.\n isArchived Boolean @default(false)\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n addresses CustomerAddress[]\n orders Order[]\n preOrders PreOrder[]\n ledgerEntries LedgerEntry[]\n walletBonuses WalletBonus[]\n comments Comment[]\n promotions Promotion[]\n notifications NotificationRecipient[]\n activityLogs CustomerActivityLog[]\n otpChallenges CustomerOtp[]\n favorites CustomerFavorite[]\n\n @@index([referredByAgentId])\n @@index([firstName])\n @@index([lastName])\n}\n\n/// Legacy `fav` (251 rows) — saved products. The target had no model for this,\n/// so every customer's favourites would have been lost in the migration; the\n/// owner confirmed on 2026-10-06 that they matter.\n///\n/// Legacy `fav` has two columns and NO primary key. The composite key here\n/// supplies the constraint the source lacks (the precheck found 0 duplicate\n/// pairs, but the tool should still SELECT DISTINCT). 14 of the 251 rows point\n/// at a deleted customer and must be skipped.\n///\n/// Legacy's denormalised `product.count_fav` counter is deliberately NOT\n/// recreated as a column — derive it from this table.\nmodel CustomerFavorite {\n customerId String\n customer Customer @relation(fields: [customerId], references: [id], onDelete: Cascade)\n productId String\n product Product @relation(fields: [productId], references: [id], onDelete: Cascade)\n createdAt DateTime @default(now())\n\n @@id([customerId, productId])\n @@index([productId])\n}\n\nmodel CustomerAddress {\n id String @id @default(cuid())\n customerId String\n customer Customer @relation(fields: [customerId], references: [id])\n cityId String?\n city City? @relation(fields: [cityId], references: [id])\n addressLine String\n isDefault Boolean @default(false)\n}\n\nmodel Branch {\n id String @id @default(cuid())\n name String\n /// Legacy Branch.address / phone — both are columns in the branch grid.\n address String?\n phone String?\n /// Legacy GET branch/active/{id} toggles this.\n isActive Boolean @default(true)\n cityId String?\n city City? @relation(fields: [cityId], references: [id])\n adminUsers AdminUser[]\n admins Admin[]\n orders Order[]\n allocations BranchAllocation[]\n}\n\nmodel Workshop {\n id String @id @default(cuid())\n name String\n /// Legacy Workshop.address / phone — both are columns in the workshop grid.\n address String?\n phone String?\n /// The supervisor created alongside the workshop by the legacy Add form.\n supervisorId String?\n supervisor Admin? @relation(\"WorkshopSupervisor\", fields: [supervisorId], references: [id])\n isActive Boolean @default(true)\n preOrders PreOrder[]\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Catalog — item reference catalog\n// ─────────────────────────────────────────────────────────────────────────\n\nmodel Category {\n id String @id @default(cuid())\n title String\n /// Legacy Category.type — which storefront the category belongs to:\n /// 1 سایت | 2 اپلیکشن موبایل. Drives the \"type_str\" grid column.\n type Int @default(1)\n /// Legacy Category.image / icon — the grid renders the image, the storefront the icon.\n imageUrl String?\n iconUrl String?\n /// Legacy meta tag + description, used for SEO on the site categories.\n metaTag String?\n description String?\n parentId String?\n parent Category? @relation(\"CategoryTree\", fields: [parentId], references: [id])\n children Category[] @relation(\"CategoryTree\")\n products Product[]\n promotions Promotion[]\n}\n\nmodel Brand {\n id String @id @default(cuid())\n title String\n products Product[]\n promotions Promotion[]\n}\n\n/// Curated product groupings — replaces legacy \"Ciny/CinyProduct\" (a tagging\n/// feature, NOT a gold-price snapshot mechanism, despite the misleading legacy name).\nmodel Collection {\n id String @id @default(cuid())\n title String\n description String?\n isActive Boolean @default(true)\n products CollectionProduct[]\n}\n\nmodel CollectionProduct {\n collectionId String\n collection Collection @relation(fields: [collectionId], references: [id])\n productId String\n product Product @relation(fields: [productId], references: [id])\n\n @@id([collectionId, productId])\n}\n\nmodel Product {\n id String @id @default(cuid())\n title String\n description String?\n categoryId String?\n category Category? @relation(fields: [categoryId], references: [id])\n brandId String?\n brand Brand? @relation(fields: [brandId], references: [id])\n /// Legacy Product.product_code — the human-facing SKU shown in the grid.\n productCode String? @unique\n /// Legacy Product.show_type: 1 site, 2 mobile, 3 both.\n showType Int @default(3)\n isActive Boolean @default(true)\n /// Labels from Setting `__list__tags`, assigned on the product form. The\n /// storefront shows them on list cards only (not the product detail page).\n tags String[] @default([])\n createdAt DateTime @default(now())\n\n /// Stock of the linked کارساخته as last read from the accounting software\n /// (D27). Weight for gram-type items, count for count-type ones — whichever\n /// the software reports. At zero or below the product is unavailable in the\n /// app (pre-order variants excepted). Null = not linked or never synced.\n accountingStockWeight Decimal? @db.Decimal(14, 4)\n accountingStockCount Decimal? @db.Decimal(14, 4)\n accountingStockAt DateTime?\n\n variants ProductVariant[]\n images ProductImage[]\n collections CollectionProduct[]\n comments Comment[]\n promotions Promotion[]\n allocationItems BranchAllocationItem[]\n favoritedBy CustomerFavorite[]\n\n // Storefront paging (owner: the real catalogue reaches ~16k products, so\n // GET /catalog/products must page rather than return everything). This model\n // had NO index at all, so every storefront query was a full scan and paging\n // alone would not have been any faster.\n //\n // The composite matches the list's own shape: filter on isActive, order by\n // createdAt — Postgres can satisfy both from this one index, including the\n // OFFSET walk. The other two serve the category and brand filters.\n @@index([isActive, createdAt])\n @@index([categoryId])\n @@index([brandId])\n}\n\nmodel ProductImage {\n id String @id @default(cuid())\n productId String\n product Product @relation(fields: [productId], references: [id])\n url String\n sortOrder Int @default(0)\n /// Legacy had 4 distinct upload slots (تصویر شاخص / تصویر شاخص موبایل /\n /// گالری تصاویر سایت / گالری تصاویر موبایل) — GALLERY is the default so\n /// existing rows and any generic \"just attach an image\" caller keep working.\n role ProductImageRole @default(GALLERY)\n\n /// Variants that display this image. A gallery image may back several\n /// variants (one photo, several weights), which is why this is a plain\n /// one-to-many and not a join table.\n variants ProductVariant[]\n\n // The storefront list filters on `images: { some: {} }` and includes the\n // gallery ordered by sortOrder, both per product. Unindexed, each one scanned\n // the whole table.\n @@index([productId, sortOrder])\n}\n\nenum ProductImageRole {\n FEATURED\n FEATURED_MOBILE\n GALLERY\n GALLERY_MOBILE\n}\n\nmodel ProductVariant {\n id String @id @default(cuid())\n productId String\n product Product @relation(fields: [productId], references: [id])\n title String\n sku String? @unique\n /// Base/raw weight before making charge (\"rash weight\").\n rashWeightGrams Decimal @db.Decimal(14, 4)\n /// Default making-charge percentage applied on top of rash weight.\n defaultWagePercent Decimal @db.Decimal(6, 3)\n /// Legacy ProductVariant.qty — on-hand stock. The cart refuses a variant with\n /// qty 0 unless it is flagged pre-order, so both fields are required for that\n /// guard to work (see apps/admin-panel/src/stores/cart.ts).\n qty Int @default(0)\n /// Legacy is_pre_order: orderable even at zero stock.\n isPreOrder Boolean @default(false)\n isActive Boolean @default(true)\n\n /// Legacy color enum: 0=سفید, 1=زرد, 2=شکلاتی, 3=رزگلد\n color Int?\n /// Legacy rial_pay — fixed Rial making charge per variant.\n rialWage Decimal? @db.Decimal(18, 0)\n /// Legacy details — short description for variant.\n details String? @db.Text\n /// Legacy description — full description for variant.\n description String? @db.Text\n\n /// The gallery image shown for this variant, picked from its own product's\n /// images — never a re-uploaded copy. onDelete: SetNull because dropping an\n /// image must never cascade into the variant: OrderItem rows reference\n /// variants, so losing one would break order history.\n imageId String?\n image ProductImage? @relation(fields: [imageId], references: [id], onDelete: SetNull)\n\n orderItems OrderItem[]\n\n @@index([imageId])\n // Every storefront product carries its variants, so this include ran once per\n // product with no index to use. The composite covers the `isActive: true`\n // filter the list applies to them.\n @@index([productId, isActive])\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Orders — stock orders (debt-bearing)\n// ─────────────────────────────────────────────────────────────────────────\n\n/// Customer-confirm state for an admin-proposed order edit (not a pipeline status).\nenum OrderRevisionStatus {\n NONE\n AWAITING_CUSTOMER\n}\n\nmodel Order {\n id String @id @default(cuid())\n orderNumber String @unique\n customerId String\n customer Customer @relation(fields: [customerId], references: [id])\n branchId String?\n branch Branch? @relation(fields: [branchId], references: [id])\n /// Which sales channel placed this order — see OrderChannel.\n channel OrderChannel @default(RETAIL)\n status OrderStatus @default(PLACED)\n\n /// Pending admin edit awaiting customer confirm (or admin force/discard).\n revisionStatus OrderRevisionStatus @default(NONE)\n\n /// Total gold weight incl. wage across all items (\"allGram\" / order.w).\n totalGoldWeightGrams Decimal @db.Decimal(14, 4)\n /// Pure making-charge weight component (totalGoldWeightGrams minus raw weight sum).\n wageWeightGrams Decimal @db.Decimal(14, 4)\n /// Flat Rial charge independent of gold price (e.g. stones) — legacy rial_input.\n flatRialCharge Decimal @default(0) @db.Decimal(20, 2)\n\n isSuspendedOverCreditLimit Boolean @default(false)\n deliveredAt DateTime? // setting this is what triggers debt recognition\n\n /// The sales expert this order is credited to, fixed when it is placed:\n /// the customer's referring expert AT THAT MOMENT. Legacy `orders.reagent_id`,\n /// set once at creation (ApiMobileController.php:601) and never moved, so a\n /// customer changing expert later does not move past sales or commission\n /// (owner ruling 2026-10-08). «میزان فروش» counts from here, never from the\n /// customer's current referrer.\n salesAgentId String?\n salesAgent AdminUser? @relation(\"OrderSalesAgent\", fields: [salesAgentId], references: [id], onDelete: SetNull)\n\n /// History only: a legacy order whose `reagent_id` named a customer who is\n /// not a sales expert (one such customer, 17 orders in 2022). Legacy counted\n /// those orders in that customer's own «میزان فروش»; this keeps that figure\n /// exact. Never set for a new order.\n referrerCustomerId String?\n referrerCustomer Customer? @relation(\"OrderReferrerCustomer\", fields: [referrerCustomerId], references: [id], onDelete: SetNull)\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n items OrderItem[]\n statusEvents OrderStatusEvent[]\n ledgerEntries LedgerEntry[]\n revisions OrderRevision[]\n convertedFromPreOrder PreOrder?\n\n @@index([customerId])\n @@index([status])\n @@index([revisionStatus])\n @@index([salesAgentId])\n @@index([referrerCustomerId])\n}\n\n/// Proposed line-item edit for an Order. Live until applied or discarded.\n/// While pending, Order.revisionStatus = AWAITING_CUSTOMER and charged figures\n/// stay on the current Order until the customer confirms (or admin force-applies).\nmodel OrderRevision {\n id String @id @default(cuid())\n orderId String\n order Order @relation(fields: [orderId], references: [id], onDelete: Cascade)\n\n /// Proposed lines: [{ productVariantId, quantity, rashWeightGramsSnapshot,\n /// wagePercentSnapshot, discountPercentSnapshot, computedWeightGrams, flatRialCharge }]\n items Json\n\n totalGoldWeightGrams Decimal @db.Decimal(14, 4)\n wageWeightGrams Decimal @db.Decimal(14, 4)\n flatRialCharge Decimal @default(0) @db.Decimal(20, 2)\n\n proposedByAdminId String? @map(\"proposedByAdminUserId\")\n note String?\n\n /// null | ACCEPTED | REJECTED — reject leaves AWAITING_CUSTOMER for admin decision.\n customerDecision String?\n customerDecidedAt DateTime?\n\n appliedAt DateTime?\n discardedAt DateTime?\n\n createdAt DateTime @default(now())\n\n @@index([orderId])\n @@index([createdAt])\n}\n\nmodel OrderItem {\n id String @id @default(cuid())\n orderId String\n order Order @relation(fields: [orderId], references: [id])\n productVariantId String\n productVariant ProductVariant @relation(fields: [productVariantId], references: [id])\n quantity Int\n\n // Snapshots at order time — never re-read from ProductVariant after placement.\n rashWeightGramsSnapshot Decimal @db.Decimal(14, 4)\n wagePercentSnapshot Decimal @db.Decimal(6, 3)\n discountPercentSnapshot Decimal @default(0) @db.Decimal(6, 3)\n /// computed: rash*(1 + (wagePercent-discount)/100)\n computedWeightGrams Decimal @db.Decimal(14, 4)\n flatRialCharge Decimal @default(0) @db.Decimal(20, 2)\n}\n\nmodel OrderStatusEvent {\n id String @id @default(cuid())\n orderId String\n order Order @relation(fields: [orderId], references: [id])\n fromStatus OrderStatus?\n toStatus OrderStatus\n note String?\n actorAdminId String? @map(\"actorAdminUserId\")\n actorAdmin Admin? @relation(fields: [actorAdminId], references: [id])\n createdAt DateTime @default(now())\n\n @@index([orderId])\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Pre-orders — custom manufacturing requests (not debt-bearing until converted)\n// ─────────────────────────────────────────────────────────────────────────\n\nmodel PreOrder {\n id String @id @default(cuid())\n customerId String\n customer Customer @relation(fields: [customerId], references: [id])\n cityId String?\n city City? @relation(fields: [cityId], references: [id])\n workshopId String?\n workshop Workshop? @relation(fields: [workshopId], references: [id])\n status PreOrderStatus @default(PLACED)\n\n designImageUrl String?\n colorName String?\n sizeSpec String?\n stoneColor String?\n minaColor String?\n estimatedWeightGrams Decimal? @db.Decimal(14, 4)\n estimatedPriceRial Decimal? @db.Decimal(20, 2)\n description String?\n\n /// Once priced, an admin converts this into a real (debt-bearing) Order.\n convertedOrderId String? @unique\n convertedOrder Order? @relation(fields: [convertedOrderId], references: [id])\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n statusEvents PreOrderStatusEvent[]\n\n @@index([customerId])\n}\n\nmodel PreOrderStatusEvent {\n id String @id @default(cuid())\n preOrderId String\n preOrder PreOrder @relation(fields: [preOrderId], references: [id])\n /// Field-level diff, e.g. {\"status\": {\"old\": \"PLACED\", \"new\": \"ADMIN_APPROVED\"}}\n changes Json\n actorAdminId String? @map(\"actorAdminUserId\")\n actorAdmin Admin? @relation(fields: [actorAdminId], references: [id])\n ipAddress String?\n createdAt DateTime @default(now())\n\n @@index([preOrderId])\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Accounting — the dual-currency ledger (core of the system)\n// ─────────────────────────────────────────────────────────────────────────\n\nmodel LedgerEntry {\n id String @id @default(cuid())\n customerId String\n customer Customer @relation(fields: [customerId], references: [id])\n\n currency LedgerCurrency\n direction LedgerDirection\n sourceType LedgerSourceType\n /// Always positive; direction determines the sign applied to the customer balance.\n amount Decimal @db.Decimal(20, 4)\n\n /// Purity of the physical instrument, for REPAYMENT_MELTED_GOLD (e.g. 750, 916).\n karatPerMille Int?\n /// Gold price/gram at conversion time, for REPAYMENT_CASH.\n pricePerGramRialAtEntry Decimal? @db.Decimal(20, 2)\n\n orderId String?\n order Order? @relation(fields: [orderId], references: [id])\n\n /// Pending entries don't count toward the cached customer balance until confirmed.\n confirmed Boolean @default(false)\n confirmedAt DateTime?\n postedByAdminId String? @map(\"postedByAdminUserId\")\n postedByAdmin Admin? @relation(fields: [postedByAdminId], references: [id])\n\n /// Instrument metadata from the legacy \"cash\" document form. Which fields are\n /// filled depends on sourceType: a melted-gold receipt carries lab/hallmark and\n /// the pre-normalization weight, a cheque carries the account and bank, and a\n /// transfer carries its destination.\n /// Legacy columns: lab, ang, account_name, bank_name, to, original_value, recive_date.\n labName String?\n hallmark String?\n accountName String?\n bankName String?\n transferTo String?\n /// Weight as handed over, BEFORE karat normalization (legacy original_value).\n originalValue Decimal? @db.Decimal(14, 4)\n /// Rial amount for cash/cheque documents (legacy price).\n priceRial Decimal? @db.Decimal(20, 2)\n receivedAt DateTime?\n\n note String?\n createdAt DateTime @default(now())\n\n @@index([customerId, currency])\n @@index([orderId])\n}\n\n/// Replaces legacy WebServiceGold / ConfigStatic.gold_price — timestamped price feed.\nmodel GoldPriceQuote {\n id String @id @default(cuid())\n karatPerMille Int\n pricePerGramRial Decimal @db.Decimal(20, 2)\n source String\n quotedAt DateTime @default(now())\n\n @@index([karatPerMille, quotedAt])\n}\n\n/// Time-limited gold cashback bonus — replaces the legacy Rooyesh\\Wallet gold credit.\nmodel WalletBonus {\n id String @id @default(cuid())\n customerId String\n customer Customer @relation(fields: [customerId], references: [id])\n orderId String?\n goldGrams Decimal @db.Decimal(14, 4)\n grantedAt DateTime @default(now())\n expiresAt DateTime\n consumedAt DateTime?\n isActive Boolean @default(true)\n\n @@index([customerId, isActive])\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Admin ACL — faithful port of the legacy granular permission model.\n//\n// Legacy (henza_server):\n// Schema::create('permission', function (Blueprint $table) {\n// $table->string('rid');\n// $table->integer('ut');\n// $table->primary(['rid' , 'ut']);\n// });\n//\n// Permissions attach to the USER TYPE (`ut`), never to an individual user, so\n// every admin of a given type shares one permission set. `ut` pointed at a row\n// in the legacy `config_static` lookup table; UserType is that table, narrowed\n// to the admin-user-type rows it was actually used for.\n//\n// A `rid` is a dotted permission id such as \"persons.list.client.omde\". The\n// frontend expands each stored rid into its ancestors at runtime via\n// checkParent() — see apps/admin-panel/src/stores/users.ts. Only the 58 leaf\n// rids the routers actually gate are seeded; ancestors are derived, not stored.\n// ─────────────────────────────────────────────────────────────────────────\n\nmodel UserType {\n /// Legacy `permission.ut` / `users.ut` — an integer, kept as the PK so seeded\n /// rows keep their legacy identity rather than getting new cuids.\n id Int @id\n title String\n isActive Boolean @default(true)\n createdAt DateTime @default(now())\n\n permissions Permission[]\n adminUsers AdminUser[]\n admins Admin[]\n\n @@map(\"user_type\")\n}\n\nmodel Permission {\n /// Dotted permission id, e.g. \"order.list\", \"persons.list.client.omde\".\n rid String\n userTypeId Int\n userType UserType @relation(fields: [userTypeId], references: [id], onDelete: Cascade)\n\n /// Legacy's composite primary key (rid, ut), preserved exactly.\n @@id([rid, userTypeId])\n @@index([userTypeId])\n @@map(\"permission\")\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Product comments / reviews — legacy `comment` table (App\\Models\\Comment),\n// moderated from views/customer/Comments/Comments.vue.\n//\n// Legacy fillable: product_id, comment, reply_to, sts, customer_id\n// Legacy Comment::$STS = [1 => 'در انتظار تایید', 2 => 'تایید شده', 3 => 'رد شده']\n// which is represented here as an enum rather than a magic integer.\n// ─────────────────────────────────────────────────────────────────────────\n\nenum CommentStatus {\n PENDING // 1 — در انتظار تایید\n APPROVED // 2 — تایید شده\n REJECTED // 3 — رد شده\n}\n\nmodel Comment {\n id String @id @default(cuid())\n productId String\n product Product @relation(fields: [productId], references: [id])\n customerId String\n customer Customer @relation(fields: [customerId], references: [id])\n body String\n status CommentStatus @default(PENDING)\n\n /// Legacy `reply_to`: a staff reply threads under the comment it answers.\n replyToId String?\n replyTo Comment? @relation(\"CommentReplies\", fields: [replyToId], references: [id])\n replies Comment[] @relation(\"CommentReplies\")\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([productId])\n @@index([customerId])\n @@index([status])\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Settings — replaces legacy `config_static`, a key/value table the admin\n// panel read and wrote through endpoints like /wallet/config and\n// /const/__list__ut. Values are stored as JSON so a setting can hold a scalar,\n// an object, or the dynamic option lists legacy kept under `__list__*` keys.\n// ─────────────────────────────────────────────────────────────────────────\n\nmodel Setting {\n key String @id\n value Json\n updatedAt DateTime @updatedAt\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Accounting integration (D27) — the shop's accounting software, Tahesab or\n// Zarrin, chosen in the admin panel. Configuration lives in the Setting row\n// `accounting.config` (never served by the generic `const` routes). Plan:\n// docs/ACCOUNTING-INTEGRATION-PLAN.md.\n//\n// `provider` is the driver name ('tahesab' | 'zarrin'), a plain string like\n// SMS_PROVIDER so a new driver needs no migration. Links are per provider, so\n// switching provider and back loses nothing.\n// ─────────────────────────────────────────────────────────────────────────\n\nenum AccountingEntityType {\n CUSTOMER\n PRODUCT\n}\n\n/// One app row ↔ one record in the accounting software (customer account or\n/// کارساخته).\nmodel AccountingLink {\n id String @id @default(cuid())\n provider String\n entityType AccountingEntityType\n entityId String\n /// The record's code in the accounting software (Tahesab Moshtari_Code /\n /// Zarrin idHesab; for products the Zarrin idKar or the Tahesab Name_Kar).\n externalCode String\n externalName String?\n /// How the link came to be: LINKED (matched by mobile/name), IMPORTED (app\n /// row created from the accounting record), PUSHED (accounting record created\n /// from the app row) or MANUAL (an admin typed the code).\n origin String\n /// The record as last read, for display only.\n snapshot Json?\n syncedAt DateTime @default(now())\n createdAt DateTime @default(now())\n\n @@unique([provider, entityType, entityId])\n @@unique([provider, entityType, externalCode])\n @@index([entityType, entityId])\n}\n\nenum AccountingOutboxKind {\n CUSTOMER_PUSH\n PRODUCT_PUSH\n ORDER_DOCUMENT\n ORDER_DOCUMENT_DELETE\n}\n\nenum AccountingOutboxStatus {\n PENDING\n /// A call was in flight. Found at startup, it means the process died mid-call\n /// and the outcome is unknown — see AccountingOutboxWorker.\n SENDING\n SENT\n FAILED\n /// Unsafe to retry automatically (e.g. a Zarrin call timed out: Zarrin has no\n /// idempotency key, so a blind retry could post the document twice).\n NEEDS_REVIEW\n /// Closed by an admin from the log screen.\n RESOLVED\n}\n\n/// Work to push to the accounting software. Written in the SAME transaction as\n/// the change that causes it, so an outage of the accounting software never\n/// loses an event and never blocks the app.\nmodel AccountingOutbox {\n id String @id @default(cuid())\n provider String\n kind AccountingOutboxKind\n entityId String\n status AccountingOutboxStatus @default(PENDING)\n attempts Int @default(0)\n nextAttemptAt DateTime @default(now())\n lastError String?\n /// What the accounting software returned as the document/record id.\n externalRef String?\n /// Per-step progress of multi-call jobs (a Zarrin document is one call per\n /// line), so a failure resumes where it stopped.\n progress Json?\n /// Last request/response, for the log screen. Never contains the token.\n lastRequest Json?\n lastResponse Json?\n sentAt DateTime?\n resolvedById String?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([status, nextAttemptAt])\n @@index([kind, entityId])\n}\n\n/// Something a pull found that needs a human: an account with no mobile, two\n/// accounts sharing one mobile, a کارساخته group with no category mapping.\nmodel AccountingIssue {\n id String @id @default(cuid())\n provider String\n kind String\n externalCode String\n entityId String?\n message String\n data Json?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n resolvedAt DateTime?\n\n @@unique([provider, kind, externalCode])\n @@index([resolvedAt])\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Promotions / discounts — legacy views/promotion/*, served by\n// PromotionController (`product/variant/promotion`). The redesigned schema had\n// no promotion concept at all; this models what the legacy forms actually\n// collect.\n// ─────────────────────────────────────────────────────────────────────────\n\n/// Legacy Promotion.type — what the discount is scoped to.\nenum PromotionScope {\n PRODUCT // 1 محصولات\n CATEGORY // 2 دسته بندی\n CUSTOMER // 3 مشتری\n BRAND // 4 برند\n}\n\n/// Legacy Promotion.use_only — how often a customer may redeem it.\nenum PromotionUsage {\n ONCE // 1 فقط یکبار\n UNTIL_END_DATE // 2 تا تاریخ پایان\n}\n\nmodel Promotion {\n id String @id @default(cuid())\n title String\n description String?\n scope PromotionScope @default(PRODUCT)\n usage PromotionUsage @default(ONCE)\n /// Percentage off, 0-100 (legacy discount_percent).\n discountPercent Decimal @db.Decimal(6, 3)\n isActive Boolean @default(true)\n /// Which storefront it shows on, mirroring Product.showType (legacy platform).\n platform Int @default(3)\n\n startsAt DateTime?\n endsAt DateTime?\n\n /// Exactly one of these is populated, per `scope`.\n productId String?\n product Product? @relation(fields: [productId], references: [id])\n categoryId String?\n category Category? @relation(fields: [categoryId], references: [id])\n customerId String?\n customer Customer? @relation(fields: [customerId], references: [id])\n brandId String?\n brand Brand? @relation(fields: [brandId], references: [id])\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([scope, isActive])\n}\n\n/// Legacy \"ignore\" table (views/offersIgnore) — specific products, categories,\n/// customers or brands excluded from the automatic discount engine.\n/// Legacy posts { type, item_id[] }: \"type\" reuses the promotion scope codes\n/// (1 محصولات | 2 دسته بندی | 3 مشتری | 4 برند) and \"itemId\" is the excluded row.\nmodel PromotionExclusion {\n id String @id @default(cuid())\n type Int\n itemId String\n createdAt DateTime @default(now())\n\n @@unique([type, itemId])\n @@index([type])\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Branch stock allocation — legacy views/invoice/* (\"فاکتور انتقال\"), served by\n// BranchController as `branch/product`. Despite the screen being called an\n// invoice, it is not a sales document: it records which products head office\n// allocated to a branch, and who allocated them.\n// ─────────────────────────────────────────────────────────────────────────\n\nmodel BranchAllocation {\n id String @id @default(cuid())\n branchId String\n branch Branch @relation(fields: [branchId], references: [id])\n\n /// Legacy `allocator_user` — the admin who filed the allocation.\n allocatorAdminId String? @map(\"allocatorAdminUserId\")\n allocatorAdmin Admin? @relation(\"AllocationAuthor\", fields: [allocatorAdminId], references: [id])\n\n note String?\n createdAt DateTime @default(now())\n\n items BranchAllocationItem[]\n\n @@index([branchId])\n}\n\nmodel BranchAllocationItem {\n id String @id @default(cuid())\n allocationId String\n allocation BranchAllocation @relation(fields: [allocationId], references: [id], onDelete: Cascade)\n productId String\n product Product @relation(fields: [productId], references: [id])\n /// Weight snapshot at allocation time, so later catalog edits do not rewrite history.\n weightGrams Decimal? @db.Decimal(14, 4)\n\n @@unique([allocationId, productId])\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Messaging + audit — legacy views/sms, views/notify, views/newsletters and\n// views/statics. None of these had a model in the redesigned schema.\n// ─────────────────────────────────────────────────────────────────────────\n\n/// Who an SMS or notification was aimed at. Legacy's sms/create offered these\n/// audiences, each gated by its own rid (sms.create.all, .omde, .single, ...).\nenum MessageAudience {\n SINGLE_NUMBER // یک شماره\n MULTIPLE_NUMBERS // چند شماره\n ALL_CUSTOMERS // همه\n WHOLESALE_CUSTOMERS // عمده\n RETAIL_CUSTOMERS // تک\n SALES_AGENTS // کارشناسان فروش\n}\n\nmodel SmsMessage {\n id String @id @default(cuid())\n audience MessageAudience\n /// Comma-separated recipients for the SINGLE/MULTIPLE audiences.\n recipients String?\n body String\n /// How many numbers the send actually resolved to.\n sentCount Int @default(0)\n\n sentByAdminId String? @map(\"sentByAdminUserId\")\n sentByAdmin Admin? @relation(\"SmsAuthor\", fields: [sentByAdminId], references: [id])\n\n createdAt DateTime @default(now())\n\n @@index([createdAt])\n}\n\nmodel Notification {\n id String @id @default(cuid())\n title String\n body String\n audience MessageAudience @default(ALL_CUSTOMERS)\n\n sentByAdminId String? @map(\"sentByAdminUserId\")\n sentByAdmin Admin? @relation(\"NotificationAuthor\", fields: [sentByAdminId], references: [id])\n\n createdAt DateTime @default(now())\n\n recipients NotificationRecipient[]\n\n @@index([createdAt])\n}\n\n/// Per-customer delivery + read state — legacy `GET notify/read/{id}`.\nmodel NotificationRecipient {\n id String @id @default(cuid())\n notificationId String\n notification Notification @relation(fields: [notificationId], references: [id], onDelete: Cascade)\n customerId String\n customer Customer @relation(fields: [customerId], references: [id])\n readAt DateTime?\n\n @@unique([notificationId, customerId])\n @@index([customerId, readAt])\n}\n\n/// Legacy views/newsletters — the mailing-list signups collected by the site.\nmodel NewsletterSubscriber {\n id String @id @default(cuid())\n email String?\n mobile String?\n createdAt DateTime @default(now())\n\n @@unique([email])\n @@unique([mobile])\n}\n\n/// Legacy views/statics — the customer activity log the \"آمار\" screen reads\n/// (`log/list/customer`, `log/ago/{customerId}`).\nmodel CustomerActivityLog {\n id String @id @default(cuid())\n customerId String\n customer Customer @relation(fields: [customerId], references: [id])\n /// Free-form action key, e.g. 'login', 'order.placed', 'profile.updated'.\n action String\n detail String?\n createdAt DateTime @default(now())\n\n @@index([customerId, createdAt])\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Uploads — replaces the legacy MyUpload / SingleUploadInput widgets, which\n// POSTed to a file endpoint and stored the returned URL on the owning record.\n// Ports of those forms currently take a URL by hand; this gives them a real\n// destination to upload to.\n// ─────────────────────────────────────────────────────────────────────────\n\nmodel UploadedFile {\n id String @id @default(cuid())\n /// Public URL the stored file is served from.\n url String\n originalName String\n mimeType String\n sizeBytes Int\n /// Free-form tag for what the file belongs to, e.g. 'product', 'category',\n /// 'customer.nationalId'. Kept loose so a new form needs no schema change.\n purpose String?\n\n uploadedByAdminId String? @map(\"uploadedByAdminUserId\")\n uploadedByAdmin Admin? @relation(\"FileUploader\", fields: [uploadedByAdminId], references: [id])\n\n createdAt DateTime @default(now())\n customerAvatars Customer[] @relation(\"CustomerAvatar\")\n adminUserAvatars AdminUser[] @relation(\"AdminUserAvatar\")\n\n @@index([purpose])\n}\n\n/// One OTP login challenge for a customer.\n///\n/// Ports henza_server's flow (ApiMobileController.php:39-78), where userAuth\n/// generated rand(1000,9999), stored it on the customer row as `send_password`\n/// and sent it by SMS, and userVerfiy compared the submitted code against it\n/// (mismatch -> HTTP 422).\n///\n/// Three deliberate improvements over the reference, approved by the user\n/// (docs/parity/DECISIONS.md D6 and T1):\n/// 1. the code is stored as a bcrypt hash, never in plain text — the\n/// reference kept it readable in a customer column;\n/// 2. it expires (`expiresAt`) — the reference's code stayed valid forever;\n/// 3. attempts are counted and the challenge locks out — the reference had\n/// no limit at all.\n/// The parity behaviour itself is the code comparison and the rejection.\nmodel CustomerOtp {\n id String @id @default(cuid())\n /// Normalised to English digits before storing, as the reference does with\n /// Utility::faTOen() on both send and verify.\n mobile String\n customerId String\n customer Customer @relation(fields: [customerId], references: [id], onDelete: Cascade)\n\n /// bcrypt hash of the 4-digit code. Never the code itself.\n codeHash String\n expiresAt DateTime\n /// Failed verify attempts against THIS challenge.\n attempts Int @default(0)\n /// Set when the code is accepted, so one challenge cannot be reused.\n consumedAt DateTime?\n\n /// Kept for the per-IP send throttle.\n requestIp String?\n createdAt DateTime @default(now())\n\n @@index([mobile, createdAt])\n @@index([customerId])\n @@index([expiresAt])\n}\n\n/// Bespoke migration ledger left by the EARLIER, pre-Prisma port.\n///\n/// It predates Prisma Migrate in this repo and holds 12 historical rows\n/// (`0001_init.sql`, `0002_admin_schema.sql`, `seed:initial`, and the early\n/// `2026091…` migrations). It is the only record of how that port was applied,\n/// so it is **kept and never written to or deleted from** (DEAD-07).\n///\n/// It is declared here purely so `prisma migrate diff` stops proposing\n/// `DROP TABLE \"_goldbank_migrations\"` — an undeclared table reads as drift.\n/// `@@ignore` keeps it out of Prisma Client: nothing in the application should\n/// ever read or write it, and Prisma Migrate will not manage its shape either.\n///\n/// Prisma's own ledger is `_prisma_migrations`, which is separate and is never\n/// edited by hand (D14).\nmodel goldbank_migrations {\n name String @id\n appliedAt DateTime @default(now()) @map(\"applied_at\") @db.Timestamptz(6)\n\n @@map(\"_goldbank_migrations\")\n @@ignore\n}\n", - "inlineSchemaHash": "c52b2d6375d403f686a8ae11239e17fb11b10aa2d23a5b856dcfdce24f83247f", + "inlineSchema": "// Gold Banking System — core schema\n// Canonical accounting model: legacy \"System A\" gram ledger (see migration notes).\n// The external \"Tahesab\" service is retired — LedgerEntry is the sole source of truth.\n// All money/weight fields use Decimal, never Float, to avoid rounding drift in debt math.\n\ngenerator client {\n provider = \"prisma-client-js\"\n // native = local Windows/macOS; debian-openssl-3.0.x = node:20-bookworm-slim (Arvan)\n binaryTargets = [\"native\", \"debian-openssl-3.0.x\"]\n}\n\ndatasource db {\n provider = \"postgresql\"\n url = env(\"DATABASE_URL\")\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Enums\n// ─────────────────────────────────────────────────────────────────────────\n\nenum AdminRole {\n SUPER_ADMIN\n SYSTEM_APPROVER // legacy: تایید مدیر سیستم\n SALES_EXPERT // legacy Customer.type=1, also acts as a referral \"reagent\"\n WORKSHOP_SUPERVISOR\n ACCOUNTANT\n}\n\n/// Legacy Customer.type — what kind of wholesale customer this is. Values and\n/// labels taken verbatim from bulkCustomer.vue's userTypes list.\n///\n/// SALES_AGENT is a LEGACY value only: legacy stored a sales agent as a\n/// Customer row with type=1, but the redesigned system models a sales agent\n/// as an AdminUser (role SALES_EXPERT) instead — see admin-users.service.ts\n/// and admin-customers.service.ts's listReagents()/create(). No Customer row\n/// should be created with kind SALES_AGENT going forward; the value is kept\n/// only so legacyTypeToKind()/kindToLegacyType() stay total functions and any\n/// already-migrated data keeps a readable label.\n///\n/// RETAIL marks a \"تک\" (single/retail) customer — legacy kept these in an\n/// entirely separate table (SingleCustomer/`login`) that could never contain\n/// a wholesale/agent/shopkeeper/banker row. The redesigned schema folded both\n/// into one Customer model, so this value is what listSingle() now filters on\n/// to reproduce that same separation.\nenum CustomerKind {\n SALES_AGENT // legacy 1 کارشناس فروش — superseded by AdminRole.SALES_EXPERT, do not use for new rows\n APP_SHOPKEEPER // 2 مغازه دار اپلیکیشن\n WALK_IN_SHOPKEEPER // 3 مغازه دار حضوری\n BANKER // 4 بنکدار\n WORKSHOP_SUPERVISOR // 5 سرپرست کارگاه\n RETAIL // مشتری تک — legacy SingleCustomer\n}\n\nenum VerificationStep {\n UNVERIFIED\n STEP_ONE_SUBMITTED\n STEP_TWO_SUBMITTED\n VERIFIED\n\n /// Legacy had THREE states per step, not two\n /// (MajorCustomerController.php:106-135): 1 = awaiting, 2 = approved,\n /// 3 = REJECTED. Mapping rejected customers to UNVERIFIED would put closed\n /// cases back in the review queue, so the owner ruled it out (2026-10-07).\n /// 14 legacy rows land here; see Customer.verificationRejectionReason.\n REJECTED\n}\n\n/// Legacy kept retail and wholesale orders in two SEPARATE tables\n/// (orders_orders vs orders). The redesigned schema has one Order model, so the\n/// distinction lives here instead.\nenum OrderChannel {\n RETAIL // تک فروشی\n WHOLESALE // عمده فروشی\n}\n\nenum OrderStatus {\n SUSPENDED // credit limit (goldCreditLimitGrams) exceeded at placement\n PLACED\n ADMIN_APPROVED\n SOURCING\n PREPARING\n DELIVERED_TO_AGENT\n DELIVERED_TO_CUSTOMER // debt recognition point — mirrors legacy sts>4\n CANCELLED\n}\n\nenum PreOrderStatus {\n PLACED\n ADMIN_APPROVED\n WORKSHOP_APPROVED\n READY_TO_SHIP\n DELIVERED\n CANCELLED\n}\n\nenum LedgerCurrency {\n GOLD_GRAM\n RIAL\n}\n\nenum LedgerDirection {\n DEBIT // increases what the customer owes\n CREDIT // decreases what the customer owes\n}\n\nenum LedgerSourceType {\n ORDER_STOCK\n ORDER_PRE_ORDER\n REPAYMENT_MELTED_GOLD // karat-normalized: amount * karatPerMille / 750\n REPAYMENT_TRANSFER\n REPAYMENT_CHEQUE\n REPAYMENT_CASH // price-per-gram-normalized via pricePerGramRialAtEntry\n WALLET_BONUS\n ADJUSTMENT\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Identity\n// ─────────────────────────────────────────────────────────────────────────\n\n/// Legacy `cities` is a tree (country > province > city > district) and so is\n/// this: a city hangs under its `parent`. In the admin pickers a top-level row\n/// (the country) is a heading, not selectable (henza_admin citiesModel.js:38).\nmodel City {\n id String @id @default(cuid())\n name String\n parentId String?\n parent City? @relation(\"CityTree\", fields: [parentId], references: [id], onDelete: Restrict)\n children City[] @relation(\"CityTree\")\n /// Legacy cities.percent / percent_aux — per-city wage surcharges the city\n /// screen edits through GET cities/get-percent/{id} and get-percent-aux/{id}.\n percent Decimal? @db.Decimal(6, 3)\n percentAux Decimal? @db.Decimal(6, 3)\n customers Customer[]\n addresses CustomerAddress[]\n branches Branch[]\n preOrders PreOrder[]\n salesExpertProfiles SalesExpertProfile[]\n\n @@index([parentId])\n}\n\n/// A staff account for the ADMIN PANEL — and nothing else.\n///\n/// Split out of AdminUser (which now holds sales experts only) so that:\n/// * the same mobile can be an admin AND a sales expert — they are two\n/// separate roles, each unique only within its own table;\n/// * the expert table (production: ~12,000 rows) is never written by panel\n/// staff management.\n/// Migration 20261026120000_split_admin_table copies the existing non-expert\n/// AdminUser rows here WITH THEIR IDS, so issued panel tokens and every\n/// \"who did this\" column keep resolving. The old rows are left in AdminUser,\n/// dormant; no code reads them as admins any more.\n///\n/// ⚠️ fullName/firstName/lastName are kept in sync by the DB trigger\n/// `admin_sync_full_name_trg` (it shares the function admin_user_sync_full_name) — same semantics as AdminUser: the parts win.\nmodel Admin {\n id String @id @default(cuid())\n\n fullName String\n firstName String?\n lastName String?\n\n mobile String @unique\n passwordHash String\n /// Never SALES_EXPERT — that role lives in AdminUser. Enforced in\n /// AdminUsersService, not in the database, so the enum stays shared.\n role AdminRole\n userTypeId Int?\n userType UserType? @relation(fields: [userTypeId], references: [id])\n branchId String?\n branch Branch? @relation(fields: [branchId], references: [id])\n isActive Boolean @default(true)\n createdAt DateTime @default(now())\n\n supervisedWorkshops Workshop[] @relation(\"WorkshopSupervisor\")\n branchAllocations BranchAllocation[] @relation(\"AllocationAuthor\")\n postedLedgerEntries LedgerEntry[]\n orderStatusEvents OrderStatusEvent[]\n preOrderStatusEvents PreOrderStatusEvent[]\n sentSmsMessages SmsMessage[] @relation(\"SmsAuthor\")\n sentNotifications Notification[] @relation(\"NotificationAuthor\")\n uploadedFiles UploadedFile[] @relation(\"FileUploader\")\n\n /// Issued admin-panel tokens, recorded only while session tracking is on\n /// (AUTH_SESSION_TRACKING, or implicitly whenever the IAM is enabled) so a\n /// token can be revoked before it expires. See AdminSession.\n sessions AdminSession[]\n\n @@index([role])\n @@index([userTypeId])\n @@index([firstName])\n @@index([lastName])\n}\n\n/// A SALES EXPERT (role SALES_EXPERT). Panel staff live in `Admin`; rows here with\n/// any other role are pre-split leftovers and are ignored by the code.\nmodel AdminUser {\n id String @id @default(cuid())\n\n /// ⚠️ Kept in sync BY A DATABASE TRIGGER — `admin_user_sync_full_name`, from\n /// migration 20260922180000. Prisma cannot see it, so a write here may store\n /// something other than what you passed:\n ///\n /// * write the parts -> fullName is rebuilt as \"first last\"\n /// * write fullName only -> the parts are re-derived from it\n /// * write BOTH in one update -> THE PARTS WIN; the submitted fullName is\n /// discarded\n ///\n /// Re-read after writing if you need the stored value. Same arrangement as\n /// Customer (D0 requirement 7 — the split applies to ALL admins, not only\n /// sales experts).\n fullName String\n firstName String?\n lastName String?\n\n mobile String @unique\n passwordHash String\n role AdminRole\n /// Legacy `users.ut`. Granular ACL lives here (Permission rows hang off UserType);\n /// the coarse `role` enum above is retained for the business rules that already\n /// switch on it. Nullable so existing seeded admins remain valid.\n userTypeId Int?\n userType UserType? @relation(fields: [userTypeId], references: [id])\n branchId String?\n branch Branch? @relation(fields: [branchId], references: [id])\n wagePercent Decimal? @db.Decimal(6, 3) // legacy Customer.percent, commission on referred orders\n isActive Boolean @default(true)\n createdAt DateTime @default(now())\n\n /// Legacy stored a sales agent as a `customers` row with type=1, so\n /// ReagentCustomer.vue's shared form collected these alongside the\n /// wholesale-customer fields. A sales agent is now an AdminUser\n /// (role=SALES_EXPERT), so these live here instead — only ever set for that\n /// role; every other AdminUser leaves them null.\n avatarFileId String?\n avatarFile UploadedFile? @relation(\"AdminUserAvatar\", fields: [avatarFileId], references: [id])\n address String?\n storeName String? // legacy store_name\n pasazhName String? // legacy pasazh_name\n memberCode String? // legacy mcode\n\n referredCustomers Customer[] @relation(\"ReferralAgent\")\n /// Orders credited to this sales expert — see Order.salesAgentId.\n creditedOrders Order[] @relation(\"OrderSalesAgent\")\n\n /// Only ever set for role = SALES_EXPERT (D17).\n salesExpertProfile SalesExpertProfile?\n\n @@index([role])\n @@index([userTypeId])\n @@index([avatarFileId])\n @@index([firstName])\n @@index([lastName])\n}\n\n/// An issued APP token (customer app / sales-expert app), so it can be revoked\n/// before it expires — the counterpart of AdminSession for the other token family.\n///\n/// WHY A SEPARATE TABLE AND NO FOREIGN KEY\n/// ---------------------------------------\n/// An app token's `sub` is a Customer id for a customer and an **AdminUser id**\n/// for a sales expert (D21). One FK cannot point at two tables, so the subject is\n/// stored as a plain id plus its type. The rows are short-lived operational data,\n/// not part of the accounting model, so the missing FK costs nothing here.\nmodel AppSession {\n id String @id @default(cuid())\n\n /// The token's `jti` claim. Unique: one row per issued token.\n jti String @unique\n\n /// Customer.id, or AdminUser.id when subjectType is \"sales-expert\".\n subjectId String\n subjectType String\n\n mobile String?\n\n /// Set when the login was confirmed by the central IAM: its session id (`sid`)\n /// and stable user id (`sub`), which is what a back-channel logout arrives with.\n iamSessionId String?\n iamSub String?\n\n ipAddress String?\n userAgent String?\n\n createdAt DateTime @default(now())\n expiresAt DateTime?\n lastSeenAt DateTime?\n\n revokedAt DateTime?\n revokedReason String?\n\n @@index([subjectId])\n @@index([iamSessionId])\n @@index([iamSub])\n @@index([expiresAt])\n}\n\n/// An issued admin-panel JWT, so it can be revoked before it expires.\n///\n/// WHY THIS EXISTS\n/// ---------------\n/// The admin token is self-contained and valid for 12h, which means nothing —\n/// not disabling the account, not a central \"sign out everywhere\" — could cut a\n/// session short: the token kept working until it expired. With the central IAM\n/// in the loop that gap became visible (an IAM session revocation had no effect\n/// here), so every issued token now carries a `jti` recorded on this table and\n/// JwtStrategy refuses a token whose row is revoked.\n///\n/// Rows are written ONLY while tracking is enabled, and JwtStrategy only\n/// enforces them while it is enabled, so a deployment that does not want the\n/// extra lookup behaves exactly as before.\nmodel AdminSession {\n id String @id @default(cuid())\n\n /// The token's `jti` claim. Unique: one row per issued token.\n jti String @unique\n\n adminId String @map(\"adminUserId\")\n admin Admin @relation(fields: [adminId], references: [id], onDelete: Cascade)\n\n /// Set when the login was verified by the IAM: its session id (`sid`) and the\n /// stable user id (`sub`) there. Back-channel logout arrives keyed by these —\n /// deliberately here rather than as columns on AdminUser, so enabling the\n /// feature needs no change to an existing table.\n iamSessionId String?\n iamSub String?\n\n ipAddress String?\n userAgent String?\n\n createdAt DateTime @default(now())\n expiresAt DateTime?\n lastSeenAt DateTime?\n\n revokedAt DateTime?\n revokedReason String?\n\n @@index([adminId], map: \"AdminSession_adminUserId_idx\")\n @@index([iamSessionId])\n @@index([iamSub])\n @@index([expiresAt])\n}\n\n/// The sales-expert fields legacy kept on the `customers` row (type=1) and that\n/// were lost when a sales expert became an AdminUser (D17).\n///\n/// A separate table rather than columns on AdminUser: these are meaningful only\n/// for role = SALES_EXPERT and would be permanently null for every other admin.\n/// A row is created for every SALES_EXPERT by the migration, and upserted by the\n/// service whenever one is created or a user's role becomes SALES_EXPERT — but\n/// readers still left-join, so a missing profile degrades to nulls rather than\n/// dropping the agent from the grid.\n///\n/// `reagent_id` is deliberately NOT here — see D17: in the reference it was a\n/// side effect of the shared customers form, and filling it removed that expert\n/// from the selectable-agent list (queryReagent, AdminController.php:420).\nmodel SalesExpertProfile {\n id String @id @default(cuid())\n adminUserId String @unique\n adminUser AdminUser @relation(fields: [adminUserId], references: [id], onDelete: Cascade)\n\n /// Legacy customers.city_id — a filterable grid column\n /// (ReagentListModel.js:14) and the source of the commission autofill\n /// (ReagentCustomer.vue:215-228).\n cityId String?\n city City? @relation(fields: [cityId], references: [id])\n\n /// Legacy customers.gram_level — the «سطح اعتبار» column, filterable.\n /// Decimal(14,4) matches Customer.goldCreditLimitGrams exactly so the same\n /// credit limit has identical precision on both tables.\n gramLevel Decimal @default(0) @db.Decimal(14, 4)\n\n /// Legacy customers.phone (varchar 15) and ncode (varchar 20). The reference\n /// stores both and reads neither back; kept so the form matches it. Neither\n /// is unique and neither has a validation rule in the reference — inventing\n /// one would reject data the reference accepts.\n phone String? @db.VarChar(15)\n nationalCode String? @db.VarChar(20)\n\n /// The Customer row carrying this expert's OWN orders, debt and credit limit.\n ///\n /// The reference stored a sales agent AS a Customer (type=1), so an order the\n /// agent placed from the app was simply their own, against their own\n /// gram_level (ApiMobileController.php:534-535). Here the expert is an\n /// AdminUser (D17), which has no ledger and cannot be an Order's subject, so\n /// this one linked Customer plays that part.\n ///\n /// Distinct from the expert's REFERRED customers, which are ordinary Customer\n /// rows pointing at the AdminUser through Customer.referredByAgentId.\n ///\n /// Null until the expert first signs into the app, when it is created from\n /// this profile. See D21.\n tradingCustomerId String? @unique\n tradingCustomer Customer? @relation(\"SalesExpertTradingAccount\", fields: [tradingCustomerId], references: [id], onDelete: SetNull)\n\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now()) @updatedAt\n\n @@index([cityId])\n}\n\nmodel Customer {\n id String @id @default(cuid())\n\n /// ⚠️ `fullName`, `firstName` and `lastName` are kept in sync BY A DATABASE\n /// TRIGGER — `customer_sync_full_name`, created in migration\n /// 20260922120000_customer_name_parts. Prisma does not know about it, so a\n /// write here is NOT the whole story:\n ///\n /// * write the parts -> fullName is rebuilt as \"first last\"\n /// * write fullName only -> the parts are re-derived from it\n /// * write BOTH in one update -> THE PARTS WIN; fullName is overwritten\n /// with \"first last\" and whatever you passed for fullName is discarded\n ///\n /// So a value you wrote can differ from the value that lands in the row.\n /// Re-read after writing if you need the stored value. Prefer writing the\n /// parts; `fullName` exists for the legacy readers that predate D0.\n ///\n /// Reference has these as two columns from the start\n /// (henza_server 2020_10_01_120430_customers_table.php:18-19 fname/lname);\n /// the port collapsed them, which is the D0 defect.\n fullName String\n firstName String?\n lastName String?\n\n mobile String @unique\n /// Legacy customers.ncode. OPTIONAL since 2026-10-07: not one of the 1,616\n /// legacy customers has a national code (1595/1595 empty), and fabricating\n /// one is a data violation that would block later legal identity checks\n /// (owner ruling). Still @unique — in PostgreSQL NULLs do not collide, so\n /// the migration tool must write NULL and never '', which would collide on\n /// the second row.\n ///\n /// Three service-layer workarounds exist ONLY because this used to be\n /// required, and they store the MOBILE NUMBER here:\n /// admin-customers.service.ts:625,685 and customer-auth.service.ts:258.\n /// Retiring them is a separate change; see docs/DATA-MIGRATION-MAP.md §10.4.\n nationalCode String? @unique\n passwordHash String\n cityId String?\n city City? @relation(fields: [cityId], references: [id])\n\n /// Legacy customers.new_city — the city name exactly as the customer typed it\n /// at app sign-up (Major/CustomerController.php:36). Kept verbatim because\n /// the legacy city table has only 15 rows, so the typed name is often the only\n /// record of where the customer is (172 customers; 43 match no known city).\n /// cityId is set alongside it only on an exact, ي/ك-normalised name match.\n /// Legacy sign-up also forced city_id = 5 (Tehran) on everyone\n /// (Major/CustomerController.php:21), so for those rows the typed name, not\n /// cityId, is the truth. Owner ruling 2026-10-07: keep both.\n cityNameRaw String?\n\n /// Legacy Customer.type — distinguishes بنکدار from مغازه دار, which the\n /// BankerList / ShopkeeperList screens filter on.\n kind CustomerKind @default(APP_SHOPKEEPER)\n\n /// Legacy contact + shop columns, shown on the wholesale customer form and as\n /// (hidden-by-default) columns in its grid.\n phone String?\n address String?\n storeName String?\n pasazhName String?\n zone String?\n /// Legacy mcode — the operator-assigned customer code.\n memberCode String?\n\n referredByAgentId String?\n referredByAgent AdminUser? @relation(\"ReferralAgent\", fields: [referredByAgentId], references: [id])\n\n /// Set only on the one Customer row that acts as a sales expert's own trading\n /// account (see SalesExpertProfile.tradingCustomerId). Empty for every\n /// ordinary customer.\n salesExpertTradingFor SalesExpertProfile? @relation(\"SalesExpertTradingAccount\")\n /// Legacy orders that named THIS customer as their referrer — see\n /// Order.referrerCustomerId. History only.\n referredOrders Order[] @relation(\"OrderReferrerCustomer\")\n\n // Credit limit + cached ledger balances (source of truth is LedgerEntry; these\n // are denormalized for fast reads and reconciled by a scheduled job).\n goldCreditLimitGrams Decimal @default(0) @db.Decimal(14, 4) // legacy gram_level\n goldDebtGrams Decimal @default(0) @db.Decimal(14, 4) // legacy remain\n fiatDebtRial Decimal @default(0) @db.Decimal(20, 2) // legacy rial_remain\n\n /// Balance as last read from the accounting software (D27), in the app's own\n /// sign convention (positive = owes). Shown to the customer when the\n /// integration is on; the credit-limit check still uses goldDebtGrams above.\n /// Null until the first successful sync.\n accountingGoldBalance Decimal? @db.Decimal(14, 4)\n accountingRialBalance Decimal? @db.Decimal(20, 2)\n accountingBalanceAt DateTime?\n\n /// Legacy `customers.percent` — the per-customer making-charge offset. It is\n /// ADDED to the variant's making charge when pricing an order line\n /// (henza_pwa src/Mixins/product/index.ts:69-75:\n /// getWage(v) = state.percent + v.percentage_pay)\n /// and it shifts the catalogue making-charge filter bounds\n /// (ApiMobileController.php:391-396,76-77). It is NOT part of the price\n /// formula itself — that extra percent is ConfigStatic['product_price_extra_percent'].\n ///\n /// NOT the wallet cashback rate (storefront ConfigStatic['percent'], D13) and\n /// NOT the wholesale per-line charge (OrderItem.wagePercentSnapshot).\n ///\n /// DB default 0 keeps every existing customer's price unchanged. The\n /// reference's application-layer default for NEW customers is 3\n /// (AdminController.php:338) and the field is required on create (:354).\n makingChargeOffsetPercent Decimal @default(0) @db.Decimal(6, 3)\n\n verificationStep VerificationStep @default(UNVERIFIED)\n nationalIdImageUrl String?\n businessLicenseUrl String?\n shopImageUrl String?\n\n /// Why verification was rejected (VerificationStep.REJECTED).\n ///\n /// Legacy recorded NO reason: none of its 49 `customers` columns is a\n /// reason/note field, and on rejection it only sent a fixed SMS. So the 14\n /// rows migrated from the legacy system carry the sentinel\n /// «رد شده در سیستم قدیم — فاقد شرح علت ثبت‌شده» instead of NULL, so support\n /// knows why it is blank (owner ruling 2026-10-07). The migration tool\n /// writes it only WHERE this IS NULL, so a re-run cannot overwrite a real\n /// reason entered in the new system.\n verificationRejectionReason String?\n\n /// NULL for rows migrated from the legacy system — it recorded no rejection time.\n verificationRejectedAt DateTime?\n\n /// Legacy customers.birth_date, populated on 917 of 1,595 rows. Kept for the\n /// birthday SMS / loyalty campaigns (owner ruling 2026-10-07).\n ///\n /// ⚠ Legacy stores dates as JALALI STRINGS in other tables\n /// (cashes.recive_date is varchar, 88/89 values starting \"14…\"), so this\n /// timestamp may hold mis-entered Jalali years. Confirm the calendar with\n /// docs/migration-precheck-3.sql BEFORE backfilling: copying them unchanged\n /// would produce 917 wrong birthdays, worse for an SMS campaign than none.\n birthDate DateTime?\n\n /// Legacy `image_id` — the profile photo (عکس پروفایل) on the sales-agent\n /// form. Legacy stored an FK to its Image table and read it back as a nested\n /// `image: { id, image }`, so this is a relation, not a bare URL string.\n avatarFileId String?\n avatarFile UploadedFile? @relation(\"CustomerAvatar\", fields: [avatarFileId], references: [id])\n\n /// Legacy had TWO independent switches on a customer:\n /// sts -> may they place orders (this field)\n /// active -> is the account enabled (isActive, below)\n /// The port previously drove both from isActive; they are separate again.\n canPlaceOrders Boolean @default(true)\n\n isActive Boolean @default(true)\n /// Legacy archive flag — the archived list filtered on this, not on isActive.\n isArchived Boolean @default(false)\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n addresses CustomerAddress[]\n orders Order[]\n preOrders PreOrder[]\n ledgerEntries LedgerEntry[]\n walletBonuses WalletBonus[]\n comments Comment[]\n promotions Promotion[]\n notifications NotificationRecipient[]\n activityLogs CustomerActivityLog[]\n otpChallenges CustomerOtp[]\n favorites CustomerFavorite[]\n\n @@index([referredByAgentId])\n @@index([firstName])\n @@index([lastName])\n}\n\n/// Legacy `fav` (251 rows) — saved products. The target had no model for this,\n/// so every customer's favourites would have been lost in the migration; the\n/// owner confirmed on 2026-10-06 that they matter.\n///\n/// Legacy `fav` has two columns and NO primary key. The composite key here\n/// supplies the constraint the source lacks (the precheck found 0 duplicate\n/// pairs, but the tool should still SELECT DISTINCT). 14 of the 251 rows point\n/// at a deleted customer and must be skipped.\n///\n/// Legacy's denormalised `product.count_fav` counter is deliberately NOT\n/// recreated as a column — derive it from this table.\nmodel CustomerFavorite {\n customerId String\n customer Customer @relation(fields: [customerId], references: [id], onDelete: Cascade)\n productId String\n product Product @relation(fields: [productId], references: [id], onDelete: Cascade)\n createdAt DateTime @default(now())\n\n @@id([customerId, productId])\n @@index([productId])\n}\n\nmodel CustomerAddress {\n id String @id @default(cuid())\n customerId String\n customer Customer @relation(fields: [customerId], references: [id])\n cityId String?\n city City? @relation(fields: [cityId], references: [id])\n addressLine String\n isDefault Boolean @default(false)\n}\n\nmodel Branch {\n id String @id @default(cuid())\n name String\n /// Legacy Branch.address / phone — both are columns in the branch grid.\n address String?\n phone String?\n /// Legacy GET branch/active/{id} toggles this.\n isActive Boolean @default(true)\n cityId String?\n city City? @relation(fields: [cityId], references: [id])\n adminUsers AdminUser[]\n admins Admin[]\n orders Order[]\n allocations BranchAllocation[]\n}\n\nmodel Workshop {\n id String @id @default(cuid())\n name String\n /// Legacy Workshop.address / phone — both are columns in the workshop grid.\n address String?\n phone String?\n /// The supervisor created alongside the workshop by the legacy Add form.\n supervisorId String?\n supervisor Admin? @relation(\"WorkshopSupervisor\", fields: [supervisorId], references: [id])\n isActive Boolean @default(true)\n preOrders PreOrder[]\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Catalog — item reference catalog\n// ─────────────────────────────────────────────────────────────────────────\n\nmodel Category {\n id String @id @default(cuid())\n title String\n /// Legacy Category.type — which storefront the category belongs to:\n /// 1 سایت | 2 اپلیکشن موبایل. Drives the \"type_str\" grid column.\n type Int @default(1)\n /// Legacy Category.image / icon — the grid renders the image, the storefront the icon.\n imageUrl String?\n iconUrl String?\n /// Legacy meta tag + description, used for SEO on the site categories.\n metaTag String?\n description String?\n parentId String?\n parent Category? @relation(\"CategoryTree\", fields: [parentId], references: [id])\n children Category[] @relation(\"CategoryTree\")\n products Product[]\n promotions Promotion[]\n}\n\nmodel Brand {\n id String @id @default(cuid())\n title String\n products Product[]\n promotions Promotion[]\n}\n\n/// Curated product groupings — replaces legacy \"Ciny/CinyProduct\" (a tagging\n/// feature, NOT a gold-price snapshot mechanism, despite the misleading legacy name).\nmodel Collection {\n id String @id @default(cuid())\n title String\n description String?\n isActive Boolean @default(true)\n products CollectionProduct[]\n}\n\nmodel CollectionProduct {\n collectionId String\n collection Collection @relation(fields: [collectionId], references: [id])\n productId String\n product Product @relation(fields: [productId], references: [id])\n\n @@id([collectionId, productId])\n}\n\nmodel Product {\n id String @id @default(cuid())\n title String\n description String?\n categoryId String?\n category Category? @relation(fields: [categoryId], references: [id])\n brandId String?\n brand Brand? @relation(fields: [brandId], references: [id])\n /// Legacy Product.product_code — the human-facing SKU shown in the grid.\n productCode String? @unique\n /// Legacy Product.show_type: 1 site, 2 mobile, 3 both.\n showType Int @default(3)\n isActive Boolean @default(true)\n /// Labels from Setting `__list__tags`, assigned on the product form. The\n /// storefront shows them on list cards only (not the product detail page).\n tags String[] @default([])\n createdAt DateTime @default(now())\n\n /// Stock of the linked کارساخته as last read from the accounting software\n /// (D27). Weight for gram-type items, count for count-type ones — whichever\n /// the software reports. At zero or below the product is unavailable in the\n /// app (pre-order variants excepted). Null = not linked or never synced.\n accountingStockWeight Decimal? @db.Decimal(14, 4)\n accountingStockCount Decimal? @db.Decimal(14, 4)\n accountingStockAt DateTime?\n\n variants ProductVariant[]\n images ProductImage[]\n collections CollectionProduct[]\n comments Comment[]\n promotions Promotion[]\n allocationItems BranchAllocationItem[]\n favoritedBy CustomerFavorite[]\n\n // Storefront paging (owner: the real catalogue reaches ~16k products, so\n // GET /catalog/products must page rather than return everything). This model\n // had NO index at all, so every storefront query was a full scan and paging\n // alone would not have been any faster.\n //\n // The composite matches the list's own shape: filter on isActive, order by\n // createdAt — Postgres can satisfy both from this one index, including the\n // OFFSET walk. The other two serve the category and brand filters.\n @@index([isActive, createdAt])\n @@index([categoryId])\n @@index([brandId])\n}\n\nmodel ProductImage {\n id String @id @default(cuid())\n productId String\n product Product @relation(fields: [productId], references: [id])\n url String\n sortOrder Int @default(0)\n /// Legacy had 4 distinct upload slots (تصویر شاخص / تصویر شاخص موبایل /\n /// گالری تصاویر سایت / گالری تصاویر موبایل) — GALLERY is the default so\n /// existing rows and any generic \"just attach an image\" caller keep working.\n role ProductImageRole @default(GALLERY)\n\n /// Variants that display this image. A gallery image may back several\n /// variants (one photo, several weights), which is why this is a plain\n /// one-to-many and not a join table.\n variants ProductVariant[]\n\n // The storefront list filters on `images: { some: {} }` and includes the\n // gallery ordered by sortOrder, both per product. Unindexed, each one scanned\n // the whole table.\n @@index([productId, sortOrder])\n}\n\nenum ProductImageRole {\n FEATURED\n FEATURED_MOBILE\n GALLERY\n GALLERY_MOBILE\n}\n\nmodel ProductVariant {\n id String @id @default(cuid())\n productId String\n product Product @relation(fields: [productId], references: [id])\n title String\n sku String? @unique\n /// Base/raw weight before making charge (\"rash weight\").\n rashWeightGrams Decimal @db.Decimal(14, 4)\n /// Default making-charge percentage applied on top of rash weight.\n defaultWagePercent Decimal @db.Decimal(6, 3)\n /// Legacy ProductVariant.qty — on-hand stock. The cart refuses a variant with\n /// qty 0 unless it is flagged pre-order, so both fields are required for that\n /// guard to work (see apps/admin-panel/src/stores/cart.ts).\n qty Int @default(0)\n /// Legacy is_pre_order: orderable even at zero stock.\n isPreOrder Boolean @default(false)\n isActive Boolean @default(true)\n\n /// Legacy color enum: 0=سفید, 1=زرد, 2=شکلاتی, 3=رزگلد\n color Int?\n /// Legacy rial_pay — fixed Rial making charge per variant.\n rialWage Decimal? @db.Decimal(18, 0)\n /// Legacy details — short description for variant.\n details String? @db.Text\n /// Legacy description — full description for variant.\n description String? @db.Text\n\n /// The gallery image shown for this variant, picked from its own product's\n /// images — never a re-uploaded copy. onDelete: SetNull because dropping an\n /// image must never cascade into the variant: OrderItem rows reference\n /// variants, so losing one would break order history.\n imageId String?\n image ProductImage? @relation(fields: [imageId], references: [id], onDelete: SetNull)\n\n orderItems OrderItem[]\n\n @@index([imageId])\n // Every storefront product carries its variants, so this include ran once per\n // product with no index to use. The composite covers the `isActive: true`\n // filter the list applies to them.\n @@index([productId, isActive])\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Orders — stock orders (debt-bearing)\n// ─────────────────────────────────────────────────────────────────────────\n\n/// Customer-confirm state for an admin-proposed order edit (not a pipeline status).\nenum OrderRevisionStatus {\n NONE\n AWAITING_CUSTOMER\n}\n\nmodel Order {\n id String @id @default(cuid())\n orderNumber String @unique\n customerId String\n customer Customer @relation(fields: [customerId], references: [id])\n branchId String?\n branch Branch? @relation(fields: [branchId], references: [id])\n /// Which sales channel placed this order — see OrderChannel.\n channel OrderChannel @default(RETAIL)\n status OrderStatus @default(PLACED)\n\n /// Pending admin edit awaiting customer confirm (or admin force/discard).\n revisionStatus OrderRevisionStatus @default(NONE)\n\n /// Total gold weight incl. wage across all items (\"allGram\" / order.w).\n totalGoldWeightGrams Decimal @db.Decimal(14, 4)\n /// Pure making-charge weight component (totalGoldWeightGrams minus raw weight sum).\n wageWeightGrams Decimal @db.Decimal(14, 4)\n /// Flat Rial charge independent of gold price (e.g. stones) — legacy rial_input.\n flatRialCharge Decimal @default(0) @db.Decimal(20, 2)\n\n isSuspendedOverCreditLimit Boolean @default(false)\n deliveredAt DateTime? // setting this is what triggers debt recognition\n\n /// The sales expert this order is credited to, fixed when it is placed:\n /// the customer's referring expert AT THAT MOMENT. Legacy `orders.reagent_id`,\n /// set once at creation (ApiMobileController.php:601) and never moved, so a\n /// customer changing expert later does not move past sales or commission\n /// (owner ruling 2026-10-08). «میزان فروش» counts from here, never from the\n /// customer's current referrer.\n salesAgentId String?\n salesAgent AdminUser? @relation(\"OrderSalesAgent\", fields: [salesAgentId], references: [id], onDelete: SetNull)\n\n /// History only: a legacy order whose `reagent_id` named a customer who is\n /// not a sales expert (one such customer, 17 orders in 2022). Legacy counted\n /// those orders in that customer's own «میزان فروش»; this keeps that figure\n /// exact. Never set for a new order.\n referrerCustomerId String?\n referrerCustomer Customer? @relation(\"OrderReferrerCustomer\", fields: [referrerCustomerId], references: [id], onDelete: SetNull)\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n items OrderItem[]\n statusEvents OrderStatusEvent[]\n ledgerEntries LedgerEntry[]\n revisions OrderRevision[]\n convertedFromPreOrder PreOrder?\n\n @@index([customerId])\n @@index([status])\n @@index([revisionStatus])\n @@index([salesAgentId])\n @@index([referrerCustomerId])\n}\n\n/// Proposed line-item edit for an Order. Live until applied or discarded.\n/// While pending, Order.revisionStatus = AWAITING_CUSTOMER and charged figures\n/// stay on the current Order until the customer confirms (or admin force-applies).\nmodel OrderRevision {\n id String @id @default(cuid())\n orderId String\n order Order @relation(fields: [orderId], references: [id], onDelete: Cascade)\n\n /// Proposed lines: [{ productVariantId, quantity, rashWeightGramsSnapshot,\n /// wagePercentSnapshot, discountPercentSnapshot, computedWeightGrams, flatRialCharge }]\n items Json\n\n totalGoldWeightGrams Decimal @db.Decimal(14, 4)\n wageWeightGrams Decimal @db.Decimal(14, 4)\n flatRialCharge Decimal @default(0) @db.Decimal(20, 2)\n\n proposedByAdminId String? @map(\"proposedByAdminUserId\")\n note String?\n\n /// null | ACCEPTED | REJECTED — reject leaves AWAITING_CUSTOMER for admin decision.\n customerDecision String?\n customerDecidedAt DateTime?\n\n appliedAt DateTime?\n discardedAt DateTime?\n\n createdAt DateTime @default(now())\n\n @@index([orderId])\n @@index([createdAt])\n}\n\nmodel OrderItem {\n id String @id @default(cuid())\n orderId String\n order Order @relation(fields: [orderId], references: [id])\n productVariantId String\n productVariant ProductVariant @relation(fields: [productVariantId], references: [id])\n quantity Int\n\n // Snapshots at order time — never re-read from ProductVariant after placement.\n rashWeightGramsSnapshot Decimal @db.Decimal(14, 4)\n wagePercentSnapshot Decimal @db.Decimal(6, 3)\n discountPercentSnapshot Decimal @default(0) @db.Decimal(6, 3)\n /// computed: rash*(1 + (wagePercent-discount)/100)\n computedWeightGrams Decimal @db.Decimal(14, 4)\n flatRialCharge Decimal @default(0) @db.Decimal(20, 2)\n}\n\nmodel OrderStatusEvent {\n id String @id @default(cuid())\n orderId String\n order Order @relation(fields: [orderId], references: [id])\n fromStatus OrderStatus?\n toStatus OrderStatus\n note String?\n actorAdminId String? @map(\"actorAdminUserId\")\n actorAdmin Admin? @relation(fields: [actorAdminId], references: [id])\n createdAt DateTime @default(now())\n\n @@index([orderId])\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Pre-orders — custom manufacturing requests (not debt-bearing until converted)\n// ─────────────────────────────────────────────────────────────────────────\n\nmodel PreOrder {\n id String @id @default(cuid())\n customerId String\n customer Customer @relation(fields: [customerId], references: [id])\n cityId String?\n city City? @relation(fields: [cityId], references: [id])\n workshopId String?\n workshop Workshop? @relation(fields: [workshopId], references: [id])\n status PreOrderStatus @default(PLACED)\n\n designImageUrl String?\n colorName String?\n sizeSpec String?\n stoneColor String?\n minaColor String?\n /// Legacy custom_orders.sum — how many pieces the customer asked for. The first\n /// schema had no field for it and the admin grid showed a hard-coded 1.\n quantity Int @default(1)\n estimatedWeightGrams Decimal? @db.Decimal(14, 4)\n estimatedPriceRial Decimal? @db.Decimal(20, 2)\n description String?\n\n /// Once priced, an admin converts this into a real (debt-bearing) Order.\n convertedOrderId String? @unique\n convertedOrder Order? @relation(fields: [convertedOrderId], references: [id])\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n statusEvents PreOrderStatusEvent[]\n\n @@index([customerId])\n}\n\nmodel PreOrderStatusEvent {\n id String @id @default(cuid())\n preOrderId String\n preOrder PreOrder @relation(fields: [preOrderId], references: [id])\n /// Field-level diff, e.g. {\"status\": {\"old\": \"PLACED\", \"new\": \"ADMIN_APPROVED\"}}\n changes Json\n actorAdminId String? @map(\"actorAdminUserId\")\n actorAdmin Admin? @relation(fields: [actorAdminId], references: [id])\n ipAddress String?\n createdAt DateTime @default(now())\n\n @@index([preOrderId])\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Accounting — the dual-currency ledger (core of the system)\n// ─────────────────────────────────────────────────────────────────────────\n\nmodel LedgerEntry {\n id String @id @default(cuid())\n customerId String\n customer Customer @relation(fields: [customerId], references: [id])\n\n currency LedgerCurrency\n direction LedgerDirection\n sourceType LedgerSourceType\n /// Always positive; direction determines the sign applied to the customer balance.\n amount Decimal @db.Decimal(20, 4)\n\n /// Purity of the physical instrument, for REPAYMENT_MELTED_GOLD (e.g. 750, 916).\n karatPerMille Int?\n /// Gold price/gram at conversion time, for REPAYMENT_CASH.\n pricePerGramRialAtEntry Decimal? @db.Decimal(20, 2)\n\n orderId String?\n order Order? @relation(fields: [orderId], references: [id])\n\n /// Pending entries don't count toward the cached customer balance until confirmed.\n confirmed Boolean @default(false)\n confirmedAt DateTime?\n postedByAdminId String? @map(\"postedByAdminUserId\")\n postedByAdmin Admin? @relation(fields: [postedByAdminId], references: [id])\n\n /// Instrument metadata from the legacy \"cash\" document form. Which fields are\n /// filled depends on sourceType: a melted-gold receipt carries lab/hallmark and\n /// the pre-normalization weight, a cheque carries the account and bank, and a\n /// transfer carries its destination.\n /// Legacy columns: lab, ang, account_name, bank_name, to, original_value, recive_date.\n labName String?\n hallmark String?\n accountName String?\n bankName String?\n transferTo String?\n /// Weight as handed over, BEFORE karat normalization (legacy original_value).\n originalValue Decimal? @db.Decimal(14, 4)\n /// Rial amount for cash/cheque documents (legacy price).\n priceRial Decimal? @db.Decimal(20, 2)\n receivedAt DateTime?\n\n note String?\n createdAt DateTime @default(now())\n\n @@index([customerId, currency])\n @@index([orderId])\n}\n\n/// Replaces legacy WebServiceGold / ConfigStatic.gold_price — timestamped price feed.\nmodel GoldPriceQuote {\n id String @id @default(cuid())\n karatPerMille Int\n pricePerGramRial Decimal @db.Decimal(20, 2)\n source String\n quotedAt DateTime @default(now())\n\n @@index([karatPerMille, quotedAt])\n}\n\n/// Time-limited gold cashback bonus — replaces the legacy Rooyesh\\Wallet gold credit.\nmodel WalletBonus {\n id String @id @default(cuid())\n customerId String\n customer Customer @relation(fields: [customerId], references: [id])\n orderId String?\n goldGrams Decimal @db.Decimal(14, 4)\n grantedAt DateTime @default(now())\n expiresAt DateTime\n consumedAt DateTime?\n isActive Boolean @default(true)\n\n @@index([customerId, isActive])\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Admin ACL — faithful port of the legacy granular permission model.\n//\n// Legacy (henza_server):\n// Schema::create('permission', function (Blueprint $table) {\n// $table->string('rid');\n// $table->integer('ut');\n// $table->primary(['rid' , 'ut']);\n// });\n//\n// Permissions attach to the USER TYPE (`ut`), never to an individual user, so\n// every admin of a given type shares one permission set. `ut` pointed at a row\n// in the legacy `config_static` lookup table; UserType is that table, narrowed\n// to the admin-user-type rows it was actually used for.\n//\n// A `rid` is a dotted permission id such as \"persons.list.client.omde\". The\n// frontend expands each stored rid into its ancestors at runtime via\n// checkParent() — see apps/admin-panel/src/stores/users.ts. Only the 58 leaf\n// rids the routers actually gate are seeded; ancestors are derived, not stored.\n// ─────────────────────────────────────────────────────────────────────────\n\nmodel UserType {\n /// Legacy `permission.ut` / `users.ut` — an integer, kept as the PK so seeded\n /// rows keep their legacy identity rather than getting new cuids.\n id Int @id\n title String\n isActive Boolean @default(true)\n createdAt DateTime @default(now())\n\n permissions Permission[]\n adminUsers AdminUser[]\n admins Admin[]\n\n @@map(\"user_type\")\n}\n\nmodel Permission {\n /// Dotted permission id, e.g. \"order.list\", \"persons.list.client.omde\".\n rid String\n userTypeId Int\n userType UserType @relation(fields: [userTypeId], references: [id], onDelete: Cascade)\n\n /// Legacy's composite primary key (rid, ut), preserved exactly.\n @@id([rid, userTypeId])\n @@index([userTypeId])\n @@map(\"permission\")\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Product comments / reviews — legacy `comment` table (App\\Models\\Comment),\n// moderated from views/customer/Comments/Comments.vue.\n//\n// Legacy fillable: product_id, comment, reply_to, sts, customer_id\n// Legacy Comment::$STS = [1 => 'در انتظار تایید', 2 => 'تایید شده', 3 => 'رد شده']\n// which is represented here as an enum rather than a magic integer.\n// ─────────────────────────────────────────────────────────────────────────\n\nenum CommentStatus {\n PENDING // 1 — در انتظار تایید\n APPROVED // 2 — تایید شده\n REJECTED // 3 — رد شده\n}\n\nmodel Comment {\n id String @id @default(cuid())\n productId String\n product Product @relation(fields: [productId], references: [id])\n customerId String\n customer Customer @relation(fields: [customerId], references: [id])\n body String\n status CommentStatus @default(PENDING)\n\n /// Legacy `reply_to`: a staff reply threads under the comment it answers.\n replyToId String?\n replyTo Comment? @relation(\"CommentReplies\", fields: [replyToId], references: [id])\n replies Comment[] @relation(\"CommentReplies\")\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([productId])\n @@index([customerId])\n @@index([status])\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Settings — replaces legacy `config_static`, a key/value table the admin\n// panel read and wrote through endpoints like /wallet/config and\n// /const/__list__ut. Values are stored as JSON so a setting can hold a scalar,\n// an object, or the dynamic option lists legacy kept under `__list__*` keys.\n// ─────────────────────────────────────────────────────────────────────────\n\nmodel Setting {\n key String @id\n value Json\n updatedAt DateTime @updatedAt\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Accounting integration (D27) — the shop's accounting software, Tahesab or\n// Zarrin, chosen in the admin panel. Configuration lives in the Setting row\n// `accounting.config` (never served by the generic `const` routes). Plan:\n// docs/ACCOUNTING-INTEGRATION-PLAN.md.\n//\n// `provider` is the driver name ('tahesab' | 'zarrin'), a plain string like\n// SMS_PROVIDER so a new driver needs no migration. Links are per provider, so\n// switching provider and back loses nothing.\n// ─────────────────────────────────────────────────────────────────────────\n\nenum AccountingEntityType {\n CUSTOMER\n PRODUCT\n}\n\n/// One app row ↔ one record in the accounting software (customer account or\n/// کارساخته).\nmodel AccountingLink {\n id String @id @default(cuid())\n provider String\n entityType AccountingEntityType\n entityId String\n /// The record's code in the accounting software (Tahesab Moshtari_Code /\n /// Zarrin idHesab; for products the Zarrin idKar or the Tahesab Name_Kar).\n externalCode String\n externalName String?\n /// How the link came to be: LINKED (matched by mobile/name), IMPORTED (app\n /// row created from the accounting record), PUSHED (accounting record created\n /// from the app row) or MANUAL (an admin typed the code).\n origin String\n /// The record as last read, for display only.\n snapshot Json?\n syncedAt DateTime @default(now())\n createdAt DateTime @default(now())\n\n @@unique([provider, entityType, entityId])\n @@unique([provider, entityType, externalCode])\n @@index([entityType, entityId])\n}\n\nenum AccountingOutboxKind {\n CUSTOMER_PUSH\n PRODUCT_PUSH\n ORDER_DOCUMENT\n ORDER_DOCUMENT_DELETE\n}\n\nenum AccountingOutboxStatus {\n PENDING\n /// A call was in flight. Found at startup, it means the process died mid-call\n /// and the outcome is unknown — see AccountingOutboxWorker.\n SENDING\n SENT\n FAILED\n /// Unsafe to retry automatically (e.g. a Zarrin call timed out: Zarrin has no\n /// idempotency key, so a blind retry could post the document twice).\n NEEDS_REVIEW\n /// Closed by an admin from the log screen.\n RESOLVED\n}\n\n/// Work to push to the accounting software. Written in the SAME transaction as\n/// the change that causes it, so an outage of the accounting software never\n/// loses an event and never blocks the app.\nmodel AccountingOutbox {\n id String @id @default(cuid())\n provider String\n kind AccountingOutboxKind\n entityId String\n status AccountingOutboxStatus @default(PENDING)\n attempts Int @default(0)\n nextAttemptAt DateTime @default(now())\n lastError String?\n /// What the accounting software returned as the document/record id.\n externalRef String?\n /// Per-step progress of multi-call jobs (a Zarrin document is one call per\n /// line), so a failure resumes where it stopped.\n progress Json?\n /// Last request/response, for the log screen. Never contains the token.\n lastRequest Json?\n lastResponse Json?\n sentAt DateTime?\n resolvedById String?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([status, nextAttemptAt])\n @@index([kind, entityId])\n}\n\n/// Something a pull found that needs a human: an account with no mobile, two\n/// accounts sharing one mobile, a کارساخته group with no category mapping.\nmodel AccountingIssue {\n id String @id @default(cuid())\n provider String\n kind String\n externalCode String\n entityId String?\n message String\n data Json?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n resolvedAt DateTime?\n\n @@unique([provider, kind, externalCode])\n @@index([resolvedAt])\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Promotions / discounts — legacy views/promotion/*, served by\n// PromotionController (`product/variant/promotion`). The redesigned schema had\n// no promotion concept at all; this models what the legacy forms actually\n// collect.\n// ─────────────────────────────────────────────────────────────────────────\n\n/// Legacy Promotion.type — what the discount is scoped to.\nenum PromotionScope {\n PRODUCT // 1 محصولات\n CATEGORY // 2 دسته بندی\n CUSTOMER // 3 مشتری\n BRAND // 4 برند\n}\n\n/// Legacy Promotion.use_only — how often a customer may redeem it.\nenum PromotionUsage {\n ONCE // 1 فقط یکبار\n UNTIL_END_DATE // 2 تا تاریخ پایان\n}\n\nmodel Promotion {\n id String @id @default(cuid())\n title String\n description String?\n scope PromotionScope @default(PRODUCT)\n usage PromotionUsage @default(ONCE)\n /// Percentage off, 0-100 (legacy discount_percent).\n discountPercent Decimal @db.Decimal(6, 3)\n isActive Boolean @default(true)\n /// Which storefront it shows on, mirroring Product.showType (legacy platform).\n platform Int @default(3)\n\n startsAt DateTime?\n endsAt DateTime?\n\n /// Exactly one of these is populated, per `scope`.\n productId String?\n product Product? @relation(fields: [productId], references: [id])\n categoryId String?\n category Category? @relation(fields: [categoryId], references: [id])\n customerId String?\n customer Customer? @relation(fields: [customerId], references: [id])\n brandId String?\n brand Brand? @relation(fields: [brandId], references: [id])\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([scope, isActive])\n}\n\n/// Legacy \"ignore\" table (views/offersIgnore) — specific products, categories,\n/// customers or brands excluded from the automatic discount engine.\n/// Legacy posts { type, item_id[] }: \"type\" reuses the promotion scope codes\n/// (1 محصولات | 2 دسته بندی | 3 مشتری | 4 برند) and \"itemId\" is the excluded row.\nmodel PromotionExclusion {\n id String @id @default(cuid())\n type Int\n itemId String\n createdAt DateTime @default(now())\n\n @@unique([type, itemId])\n @@index([type])\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Branch stock allocation — legacy views/invoice/* (\"فاکتور انتقال\"), served by\n// BranchController as `branch/product`. Despite the screen being called an\n// invoice, it is not a sales document: it records which products head office\n// allocated to a branch, and who allocated them.\n// ─────────────────────────────────────────────────────────────────────────\n\nmodel BranchAllocation {\n id String @id @default(cuid())\n branchId String\n branch Branch @relation(fields: [branchId], references: [id])\n\n /// Legacy `allocator_user` — the admin who filed the allocation.\n allocatorAdminId String? @map(\"allocatorAdminUserId\")\n allocatorAdmin Admin? @relation(\"AllocationAuthor\", fields: [allocatorAdminId], references: [id])\n\n note String?\n createdAt DateTime @default(now())\n\n items BranchAllocationItem[]\n\n @@index([branchId])\n}\n\nmodel BranchAllocationItem {\n id String @id @default(cuid())\n allocationId String\n allocation BranchAllocation @relation(fields: [allocationId], references: [id], onDelete: Cascade)\n productId String\n product Product @relation(fields: [productId], references: [id])\n /// Weight snapshot at allocation time, so later catalog edits do not rewrite history.\n weightGrams Decimal? @db.Decimal(14, 4)\n\n @@unique([allocationId, productId])\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Messaging + audit — legacy views/sms, views/notify, views/newsletters and\n// views/statics. None of these had a model in the redesigned schema.\n// ─────────────────────────────────────────────────────────────────────────\n\n/// Who an SMS or notification was aimed at. Legacy's sms/create offered these\n/// audiences, each gated by its own rid (sms.create.all, .omde, .single, ...).\nenum MessageAudience {\n SINGLE_NUMBER // یک شماره\n MULTIPLE_NUMBERS // چند شماره\n ALL_CUSTOMERS // همه\n WHOLESALE_CUSTOMERS // عمده\n RETAIL_CUSTOMERS // تک\n SALES_AGENTS // کارشناسان فروش\n}\n\nmodel SmsMessage {\n id String @id @default(cuid())\n audience MessageAudience\n /// Comma-separated recipients for the SINGLE/MULTIPLE audiences.\n recipients String?\n body String\n /// How many numbers the send actually resolved to.\n sentCount Int @default(0)\n\n sentByAdminId String? @map(\"sentByAdminUserId\")\n sentByAdmin Admin? @relation(\"SmsAuthor\", fields: [sentByAdminId], references: [id])\n\n createdAt DateTime @default(now())\n\n @@index([createdAt])\n}\n\nmodel Notification {\n id String @id @default(cuid())\n title String\n body String\n audience MessageAudience @default(ALL_CUSTOMERS)\n\n sentByAdminId String? @map(\"sentByAdminUserId\")\n sentByAdmin Admin? @relation(\"NotificationAuthor\", fields: [sentByAdminId], references: [id])\n\n createdAt DateTime @default(now())\n\n recipients NotificationRecipient[]\n\n @@index([createdAt])\n}\n\n/// Per-customer delivery + read state — legacy `GET notify/read/{id}`.\nmodel NotificationRecipient {\n id String @id @default(cuid())\n notificationId String\n notification Notification @relation(fields: [notificationId], references: [id], onDelete: Cascade)\n customerId String\n customer Customer @relation(fields: [customerId], references: [id])\n readAt DateTime?\n\n @@unique([notificationId, customerId])\n @@index([customerId, readAt])\n}\n\n/// Legacy views/newsletters — the mailing-list signups collected by the site.\nmodel NewsletterSubscriber {\n id String @id @default(cuid())\n email String?\n mobile String?\n createdAt DateTime @default(now())\n\n @@unique([email])\n @@unique([mobile])\n}\n\n/// Legacy views/statics — the customer activity log the \"آمار\" screen reads\n/// (`log/list/customer`, `log/ago/{customerId}`).\nmodel CustomerActivityLog {\n id String @id @default(cuid())\n customerId String\n customer Customer @relation(fields: [customerId], references: [id])\n /// Free-form action key, e.g. 'login', 'order.placed', 'profile.updated'.\n action String\n detail String?\n createdAt DateTime @default(now())\n\n @@index([customerId, createdAt])\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Uploads — replaces the legacy MyUpload / SingleUploadInput widgets, which\n// POSTed to a file endpoint and stored the returned URL on the owning record.\n// Ports of those forms currently take a URL by hand; this gives them a real\n// destination to upload to.\n// ─────────────────────────────────────────────────────────────────────────\n\nmodel UploadedFile {\n id String @id @default(cuid())\n /// Public URL the stored file is served from.\n url String\n originalName String\n mimeType String\n sizeBytes Int\n /// Free-form tag for what the file belongs to, e.g. 'product', 'category',\n /// 'customer.nationalId'. Kept loose so a new form needs no schema change.\n purpose String?\n\n uploadedByAdminId String? @map(\"uploadedByAdminUserId\")\n uploadedByAdmin Admin? @relation(\"FileUploader\", fields: [uploadedByAdminId], references: [id])\n\n createdAt DateTime @default(now())\n customerAvatars Customer[] @relation(\"CustomerAvatar\")\n adminUserAvatars AdminUser[] @relation(\"AdminUserAvatar\")\n\n @@index([purpose])\n}\n\n/// One OTP login challenge for a customer.\n///\n/// Ports henza_server's flow (ApiMobileController.php:39-78), where userAuth\n/// generated rand(1000,9999), stored it on the customer row as `send_password`\n/// and sent it by SMS, and userVerfiy compared the submitted code against it\n/// (mismatch -> HTTP 422).\n///\n/// Three deliberate improvements over the reference, approved by the user\n/// (docs/parity/DECISIONS.md D6 and T1):\n/// 1. the code is stored as a bcrypt hash, never in plain text — the\n/// reference kept it readable in a customer column;\n/// 2. it expires (`expiresAt`) — the reference's code stayed valid forever;\n/// 3. attempts are counted and the challenge locks out — the reference had\n/// no limit at all.\n/// The parity behaviour itself is the code comparison and the rejection.\nmodel CustomerOtp {\n id String @id @default(cuid())\n /// Normalised to English digits before storing, as the reference does with\n /// Utility::faTOen() on both send and verify.\n mobile String\n customerId String\n customer Customer @relation(fields: [customerId], references: [id], onDelete: Cascade)\n\n /// bcrypt hash of the 4-digit code. Never the code itself.\n codeHash String\n expiresAt DateTime\n /// Failed verify attempts against THIS challenge.\n attempts Int @default(0)\n /// Set when the code is accepted, so one challenge cannot be reused.\n consumedAt DateTime?\n\n /// Kept for the per-IP send throttle.\n requestIp String?\n createdAt DateTime @default(now())\n\n @@index([mobile, createdAt])\n @@index([customerId])\n @@index([expiresAt])\n}\n\n/// Bespoke migration ledger left by the EARLIER, pre-Prisma port.\n///\n/// It predates Prisma Migrate in this repo and holds 12 historical rows\n/// (`0001_init.sql`, `0002_admin_schema.sql`, `seed:initial`, and the early\n/// `2026091…` migrations). It is the only record of how that port was applied,\n/// so it is **kept and never written to or deleted from** (DEAD-07).\n///\n/// It is declared here purely so `prisma migrate diff` stops proposing\n/// `DROP TABLE \"_goldbank_migrations\"` — an undeclared table reads as drift.\n/// `@@ignore` keeps it out of Prisma Client: nothing in the application should\n/// ever read or write it, and Prisma Migrate will not manage its shape either.\n///\n/// Prisma's own ledger is `_prisma_migrations`, which is separate and is never\n/// edited by hand (D14).\nmodel goldbank_migrations {\n name String @id\n appliedAt DateTime @default(now()) @map(\"applied_at\") @db.Timestamptz(6)\n\n @@map(\"_goldbank_migrations\")\n @@ignore\n}\n", + "inlineSchemaHash": "a585cc19be73f276fc7b69b9887c40ffbe4b18533ee008f6e0bff385de7c71f5", "copyEngine": true } @@ -906,7 +907,7 @@ if (!fs.existsSync(path.join(__dirname, 'schema.prisma'))) { config.isBundled = true } -config.runtimeDataModel = JSON.parse("{\"models\":{\"City\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"parentId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"parent\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"City\",\"relationName\":\"CityTree\",\"relationFromFields\":[\"parentId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Restrict\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"children\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"City\",\"relationName\":\"CityTree\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"percent\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy cities.percent / percent_aux — per-city wage surcharges the city\\\\nscreen edits through GET cities/get-percent/{id} and get-percent-aux/{id}.\"},{\"name\":\"percentAux\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customers\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CityToCustomer\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"addresses\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"CustomerAddress\",\"relationName\":\"CityToCustomerAddress\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branches\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Branch\",\"relationName\":\"BranchToCity\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"preOrders\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"PreOrder\",\"relationName\":\"CityToPreOrder\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"salesExpertProfiles\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"SalesExpertProfile\",\"relationName\":\"CityToSalesExpertProfile\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"Legacy `cities` is a tree (country > province > city > district) and so is\\\\nthis: a city hangs under its `parent`. In the admin pickers a top-level row\\\\n(the country) is a heading, not selectable (henza_admin citiesModel.js:38).\"},\"Admin\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"fullName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"firstName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"lastName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"mobile\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"passwordHash\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"role\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AdminRole\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Never SALES_EXPERT — that role lives in AdminUser. Enforced in\\\\nAdminUsersService, not in the database, so the enum stays shared.\"},{\"name\":\"userTypeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"userType\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"UserType\",\"relationName\":\"AdminToUserType\",\"relationFromFields\":[\"userTypeId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branchId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branch\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Branch\",\"relationName\":\"AdminToBranch\",\"relationFromFields\":[\"branchId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"supervisedWorkshops\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Workshop\",\"relationName\":\"WorkshopSupervisor\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branchAllocations\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"BranchAllocation\",\"relationName\":\"AllocationAuthor\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"postedLedgerEntries\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"LedgerEntry\",\"relationName\":\"AdminToLedgerEntry\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orderStatusEvents\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"OrderStatusEvent\",\"relationName\":\"AdminToOrderStatusEvent\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"preOrderStatusEvents\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"PreOrderStatusEvent\",\"relationName\":\"AdminToPreOrderStatusEvent\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sentSmsMessages\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"SmsMessage\",\"relationName\":\"SmsAuthor\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sentNotifications\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Notification\",\"relationName\":\"NotificationAuthor\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"uploadedFiles\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"UploadedFile\",\"relationName\":\"FileUploader\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sessions\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AdminSession\",\"relationName\":\"AdminToAdminSession\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Issued admin-panel tokens, recorded only while session tracking is on\\\\n(AUTH_SESSION_TRACKING, or implicitly whenever the IAM is enabled) so a\\\\ntoken can be revoked before it expires. See AdminSession.\"}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"A staff account for the ADMIN PANEL — and nothing else.\\\\n\\\\nSplit out of AdminUser (which now holds sales experts only) so that:\\\\n* the same mobile can be an admin AND a sales expert — they are two\\\\nseparate roles, each unique only within its own table;\\\\n* the expert table (production: ~12,000 rows) is never written by panel\\\\nstaff management.\\\\nMigration 20261026120000_split_admin_table copies the existing non-expert\\\\nAdminUser rows here WITH THEIR IDS, so issued panel tokens and every\\\\n\\\"who did this\\\" column keep resolving. The old rows are left in AdminUser,\\\\ndormant; no code reads them as admins any more.\\\\n\\\\n⚠️ fullName/firstName/lastName are kept in sync by the DB trigger\\\\n`admin_sync_full_name_trg` (it shares the function admin_user_sync_full_name) — same semantics as AdminUser: the parts win.\"},\"AdminUser\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"fullName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"⚠️ Kept in sync BY A DATABASE TRIGGER — `admin_user_sync_full_name`, from\\\\nmigration 20260922180000. Prisma cannot see it, so a write here may store\\\\nsomething other than what you passed:\\\\n\\\\n* write the parts -> fullName is rebuilt as \\\"first last\\\"\\\\n* write fullName only -> the parts are re-derived from it\\\\n* write BOTH in one update -> THE PARTS WIN; the submitted fullName is\\\\ndiscarded\\\\n\\\\nRe-read after writing if you need the stored value. Same arrangement as\\\\nCustomer (D0 requirement 7 — the split applies to ALL admins, not only\\\\nsales experts).\"},{\"name\":\"firstName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"lastName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"mobile\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"passwordHash\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"role\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AdminRole\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"userTypeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy `users.ut`. Granular ACL lives here (Permission rows hang off UserType);\\\\nthe coarse `role` enum above is retained for the business rules that already\\\\nswitch on it. Nullable so existing seeded admins remain valid.\"},{\"name\":\"userType\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"UserType\",\"relationName\":\"AdminUserToUserType\",\"relationFromFields\":[\"userTypeId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branchId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branch\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Branch\",\"relationName\":\"AdminUserToBranch\",\"relationFromFields\":[\"branchId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"wagePercent\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"avatarFileId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy stored a sales agent as a `customers` row with type=1, so\\\\nReagentCustomer.vue's shared form collected these alongside the\\\\nwholesale-customer fields. A sales agent is now an AdminUser\\\\n(role=SALES_EXPERT), so these live here instead — only ever set for that\\\\nrole; every other AdminUser leaves them null.\"},{\"name\":\"avatarFile\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"UploadedFile\",\"relationName\":\"AdminUserAvatar\",\"relationFromFields\":[\"avatarFileId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"address\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"storeName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"pasazhName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"memberCode\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"referredCustomers\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"ReferralAgent\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"creditedOrders\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"OrderSalesAgent\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Orders credited to this sales expert — see Order.salesAgentId.\"},{\"name\":\"salesExpertProfile\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"SalesExpertProfile\",\"relationName\":\"AdminUserToSalesExpertProfile\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Only ever set for role = SALES_EXPERT (D17).\"}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"A SALES EXPERT (role SALES_EXPERT). Panel staff live in `Admin`; rows here with\\\\nany other role are pre-split leftovers and are ignored by the code.\"},\"AppSession\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"jti\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"The token's `jti` claim. Unique: one row per issued token.\"},{\"name\":\"subjectId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Customer.id, or AdminUser.id when subjectType is \\\"sales-expert\\\".\"},{\"name\":\"subjectType\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"mobile\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"iamSessionId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Set when the login was confirmed by the central IAM: its session id (`sid`)\\\\nand stable user id (`sub`), which is what a back-channel logout arrives with.\"},{\"name\":\"iamSub\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"ipAddress\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"userAgent\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"lastSeenAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"revokedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"revokedReason\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"An issued APP token (customer app / sales-expert app), so it can be revoked\\\\nbefore it expires — the counterpart of AdminSession for the other token family.\\\\n\\\\nWHY A SEPARATE TABLE AND NO FOREIGN KEY\\\\n---------------------------------------\\\\nAn app token's `sub` is a Customer id for a customer and an **AdminUser id**\\\\nfor a sales expert (D21). One FK cannot point at two tables, so the subject is\\\\nstored as a plain id plus its type. The rows are short-lived operational data,\\\\nnot part of the accounting model, so the missing FK costs nothing here.\"},\"AdminSession\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"jti\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"The token's `jti` claim. Unique: one row per issued token.\"},{\"name\":\"adminId\",\"dbName\":\"adminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"admin\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"AdminToAdminSession\",\"relationFromFields\":[\"adminId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"iamSessionId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Set when the login was verified by the IAM: its session id (`sid`) and the\\\\nstable user id (`sub`) there. Back-channel logout arrives keyed by these —\\\\ndeliberately here rather than as columns on AdminUser, so enabling the\\\\nfeature needs no change to an existing table.\"},{\"name\":\"iamSub\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"ipAddress\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"userAgent\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"lastSeenAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"revokedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"revokedReason\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"An issued admin-panel JWT, so it can be revoked before it expires.\\\\n\\\\nWHY THIS EXISTS\\\\n---------------\\\\nThe admin token is self-contained and valid for 12h, which means nothing —\\\\nnot disabling the account, not a central \\\"sign out everywhere\\\" — could cut a\\\\nsession short: the token kept working until it expired. With the central IAM\\\\nin the loop that gap became visible (an IAM session revocation had no effect\\\\nhere), so every issued token now carries a `jti` recorded on this table and\\\\nJwtStrategy refuses a token whose row is revoked.\\\\n\\\\nRows are written ONLY while tracking is enabled, and JwtStrategy only\\\\nenforces them while it is enabled, so a deployment that does not want the\\\\nextra lookup behaves exactly as before.\"},\"SalesExpertProfile\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"adminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"adminUser\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AdminUser\",\"relationName\":\"AdminUserToSalesExpertProfile\",\"relationFromFields\":[\"adminUserId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"cityId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy customers.city_id — a filterable grid column\\\\n(ReagentListModel.js:14) and the source of the commission autofill\\\\n(ReagentCustomer.vue:215-228).\"},{\"name\":\"city\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"City\",\"relationName\":\"CityToSalesExpertProfile\",\"relationFromFields\":[\"cityId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"gramLevel\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy customers.gram_level — the «سطح اعتبار» column, filterable.\\\\nDecimal(14,4) matches Customer.goldCreditLimitGrams exactly so the same\\\\ncredit limit has identical precision on both tables.\"},{\"name\":\"phone\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy customers.phone (varchar 15) and ncode (varchar 20). The reference\\\\nstores both and reads neither back; kept so the form matches it. Neither\\\\nis unique and neither has a validation rule in the reference — inventing\\\\none would reject data the reference accepts.\"},{\"name\":\"nationalCode\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"tradingCustomerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":true,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"The Customer row carrying this expert's OWN orders, debt and credit limit.\\\\n\\\\nThe reference stored a sales agent AS a Customer (type=1), so an order the\\\\nagent placed from the app was simply their own, against their own\\\\ngram_level (ApiMobileController.php:534-535). Here the expert is an\\\\nAdminUser (D17), which has no ledger and cannot be an Order's subject, so\\\\nthis one linked Customer plays that part.\\\\n\\\\nDistinct from the expert's REFERRED customers, which are ordinary Customer\\\\nrows pointing at the AdminUser through Customer.referredByAgentId.\\\\n\\\\nNull until the expert first signs into the app, when it is created from\\\\nthis profile. See D21.\"},{\"name\":\"tradingCustomer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"SalesExpertTradingAccount\",\"relationFromFields\":[\"tradingCustomerId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"SetNull\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":true}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"The sales-expert fields legacy kept on the `customers` row (type=1) and that\\\\nwere lost when a sales expert became an AdminUser (D17).\\\\n\\\\nA separate table rather than columns on AdminUser: these are meaningful only\\\\nfor role = SALES_EXPERT and would be permanently null for every other admin.\\\\nA row is created for every SALES_EXPERT by the migration, and upserted by the\\\\nservice whenever one is created or a user's role becomes SALES_EXPERT — but\\\\nreaders still left-join, so a missing profile degrades to nulls rather than\\\\ndropping the agent from the grid.\\\\n\\\\n`reagent_id` is deliberately NOT here — see D17: in the reference it was a\\\\nside effect of the shared customers form, and filling it removed that expert\\\\nfrom the selectable-agent list (queryReagent, AdminController.php:420).\"},\"Customer\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"fullName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"⚠️ `fullName`, `firstName` and `lastName` are kept in sync BY A DATABASE\\\\nTRIGGER — `customer_sync_full_name`, created in migration\\\\n20260922120000_customer_name_parts. Prisma does not know about it, so a\\\\nwrite here is NOT the whole story:\\\\n\\\\n* write the parts -> fullName is rebuilt as \\\"first last\\\"\\\\n* write fullName only -> the parts are re-derived from it\\\\n* write BOTH in one update -> THE PARTS WIN; fullName is overwritten\\\\nwith \\\"first last\\\" and whatever you passed for fullName is discarded\\\\n\\\\nSo a value you wrote can differ from the value that lands in the row.\\\\nRe-read after writing if you need the stored value. Prefer writing the\\\\nparts; `fullName` exists for the legacy readers that predate D0.\\\\n\\\\nReference has these as two columns from the start\\\\n(henza_server 2020_10_01_120430_customers_table.php:18-19 fname/lname);\\\\nthe port collapsed them, which is the D0 defect.\"},{\"name\":\"firstName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"lastName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"mobile\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"nationalCode\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy customers.ncode. OPTIONAL since 2026-10-07: not one of the 1,616\\\\nlegacy customers has a national code (1595/1595 empty), and fabricating\\\\none is a data violation that would block later legal identity checks\\\\n(owner ruling). Still @unique — in PostgreSQL NULLs do not collide, so\\\\nthe migration tool must write NULL and never '', which would collide on\\\\nthe second row.\\\\n\\\\nThree service-layer workarounds exist ONLY because this used to be\\\\nrequired, and they store the MOBILE NUMBER here:\\\\nadmin-customers.service.ts:625,685 and customer-auth.service.ts:258.\\\\nRetiring them is a separate change; see docs/DATA-MIGRATION-MAP.md §10.4.\"},{\"name\":\"passwordHash\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"cityId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"city\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"City\",\"relationName\":\"CityToCustomer\",\"relationFromFields\":[\"cityId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"cityNameRaw\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy customers.new_city — the city name exactly as the customer typed it\\\\nat app sign-up (Major/CustomerController.php:36). Kept verbatim because\\\\nthe legacy city table has only 15 rows, so the typed name is often the only\\\\nrecord of where the customer is (172 customers; 43 match no known city).\\\\ncityId is set alongside it only on an exact, ي/ك-normalised name match.\\\\nLegacy sign-up also forced city_id = 5 (Tehran) on everyone\\\\n(Major/CustomerController.php:21), so for those rows the typed name, not\\\\ncityId, is the truth. Owner ruling 2026-10-07: keep both.\"},{\"name\":\"kind\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"CustomerKind\",\"default\":\"APP_SHOPKEEPER\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy Customer.type — distinguishes بنکدار from مغازه دار, which the\\\\nBankerList / ShopkeeperList screens filter on.\"},{\"name\":\"phone\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy contact + shop columns, shown on the wholesale customer form and as\\\\n(hidden-by-default) columns in its grid.\"},{\"name\":\"address\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"storeName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"pasazhName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"zone\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"memberCode\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy mcode — the operator-assigned customer code.\"},{\"name\":\"referredByAgentId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"referredByAgent\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AdminUser\",\"relationName\":\"ReferralAgent\",\"relationFromFields\":[\"referredByAgentId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"salesExpertTradingFor\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"SalesExpertProfile\",\"relationName\":\"SalesExpertTradingAccount\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Set only on the one Customer row that acts as a sales expert's own trading\\\\naccount (see SalesExpertProfile.tradingCustomerId). Empty for every\\\\nordinary customer.\"},{\"name\":\"referredOrders\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"OrderReferrerCustomer\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy orders that named THIS customer as their referrer — see\\\\nOrder.referrerCustomerId. History only.\"},{\"name\":\"goldCreditLimitGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"goldDebtGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"fiatDebtRial\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"accountingGoldBalance\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Balance as last read from the accounting software (D27), in the app's own\\\\nsign convention (positive = owes). Shown to the customer when the\\\\nintegration is on; the credit-limit check still uses goldDebtGrams above.\\\\nNull until the first successful sync.\"},{\"name\":\"accountingRialBalance\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"accountingBalanceAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"makingChargeOffsetPercent\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy `customers.percent` — the per-customer making-charge offset. It is\\\\nADDED to the variant's making charge when pricing an order line\\\\n(henza_pwa src/Mixins/product/index.ts:69-75:\\\\ngetWage(v) = state.percent + v.percentage_pay)\\\\nand it shifts the catalogue making-charge filter bounds\\\\n(ApiMobileController.php:391-396,76-77). It is NOT part of the price\\\\nformula itself — that extra percent is ConfigStatic['product_price_extra_percent'].\\\\n\\\\nNOT the wallet cashback rate (storefront ConfigStatic['percent'], D13) and\\\\nNOT the wholesale per-line charge (OrderItem.wagePercentSnapshot).\\\\n\\\\nDB default 0 keeps every existing customer's price unchanged. The\\\\nreference's application-layer default for NEW customers is 3\\\\n(AdminController.php:338) and the field is required on create (:354).\"},{\"name\":\"verificationStep\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"VerificationStep\",\"default\":\"UNVERIFIED\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"nationalIdImageUrl\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"businessLicenseUrl\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"shopImageUrl\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"verificationRejectionReason\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Why verification was rejected (VerificationStep.REJECTED).\\\\n\\\\nLegacy recorded NO reason: none of its 49 `customers` columns is a\\\\nreason/note field, and on rejection it only sent a fixed SMS. So the 14\\\\nrows migrated from the legacy system carry the sentinel\\\\n«رد شده در سیستم قدیم — فاقد شرح علت ثبت‌شده» instead of NULL, so support\\\\nknows why it is blank (owner ruling 2026-10-07). The migration tool\\\\nwrites it only WHERE this IS NULL, so a re-run cannot overwrite a real\\\\nreason entered in the new system.\"},{\"name\":\"verificationRejectedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"NULL for rows migrated from the legacy system — it recorded no rejection time.\"},{\"name\":\"birthDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy customers.birth_date, populated on 917 of 1,595 rows. Kept for the\\\\nbirthday SMS / loyalty campaigns (owner ruling 2026-10-07).\\\\n\\\\n⚠ Legacy stores dates as JALALI STRINGS in other tables\\\\n(cashes.recive_date is varchar, 88/89 values starting \\\"14…\\\"), so this\\\\ntimestamp may hold mis-entered Jalali years. Confirm the calendar with\\\\ndocs/migration-precheck-3.sql BEFORE backfilling: copying them unchanged\\\\nwould produce 917 wrong birthdays, worse for an SMS campaign than none.\"},{\"name\":\"avatarFileId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy `image_id` — the profile photo (عکس پروفایل) on the sales-agent\\\\nform. Legacy stored an FK to its Image table and read it back as a nested\\\\n`image: { id, image }`, so this is a relation, not a bare URL string.\"},{\"name\":\"avatarFile\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"UploadedFile\",\"relationName\":\"CustomerAvatar\",\"relationFromFields\":[\"avatarFileId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"canPlaceOrders\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy had TWO independent switches on a customer:\\\\nsts -> may they place orders (this field)\\\\nactive -> is the account enabled (isActive, below)\\\\nThe port previously drove both from isActive; they are separate again.\"},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isArchived\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy archive flag — the archived list filtered on this, not on isActive.\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"addresses\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"CustomerAddress\",\"relationName\":\"CustomerToCustomerAddress\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orders\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"CustomerToOrder\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"preOrders\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"PreOrder\",\"relationName\":\"CustomerToPreOrder\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"ledgerEntries\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"LedgerEntry\",\"relationName\":\"CustomerToLedgerEntry\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"walletBonuses\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"WalletBonus\",\"relationName\":\"CustomerToWalletBonus\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"comments\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Comment\",\"relationName\":\"CommentToCustomer\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"promotions\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Promotion\",\"relationName\":\"CustomerToPromotion\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"notifications\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"NotificationRecipient\",\"relationName\":\"CustomerToNotificationRecipient\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"activityLogs\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"CustomerActivityLog\",\"relationName\":\"CustomerToCustomerActivityLog\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"otpChallenges\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"CustomerOtp\",\"relationName\":\"CustomerToCustomerOtp\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"favorites\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"CustomerFavorite\",\"relationName\":\"CustomerToCustomerFavorite\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"CustomerFavorite\":{\"dbName\":null,\"fields\":[{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToCustomerFavorite\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"product\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Product\",\"relationName\":\"CustomerFavoriteToProduct\",\"relationFromFields\":[\"productId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":{\"name\":null,\"fields\":[\"customerId\",\"productId\"]},\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"Legacy `fav` (251 rows) — saved products. The target had no model for this,\\\\nso every customer's favourites would have been lost in the migration; the\\\\nowner confirmed on 2026-10-06 that they matter.\\\\n\\\\nLegacy `fav` has two columns and NO primary key. The composite key here\\\\nsupplies the constraint the source lacks (the precheck found 0 duplicate\\\\npairs, but the tool should still SELECT DISTINCT). 14 of the 251 rows point\\\\nat a deleted customer and must be skipped.\\\\n\\\\nLegacy's denormalised `product.count_fav` counter is deliberately NOT\\\\nrecreated as a column — derive it from this table.\"},\"CustomerAddress\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToCustomerAddress\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"cityId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"city\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"City\",\"relationName\":\"CityToCustomerAddress\",\"relationFromFields\":[\"cityId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"addressLine\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isDefault\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Branch\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"address\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy Branch.address / phone — both are columns in the branch grid.\"},{\"name\":\"phone\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy GET branch/active/{id} toggles this.\"},{\"name\":\"cityId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"city\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"City\",\"relationName\":\"BranchToCity\",\"relationFromFields\":[\"cityId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"adminUsers\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AdminUser\",\"relationName\":\"AdminUserToBranch\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"admins\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"AdminToBranch\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orders\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"BranchToOrder\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"allocations\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"BranchAllocation\",\"relationName\":\"BranchToBranchAllocation\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Workshop\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"address\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy Workshop.address / phone — both are columns in the workshop grid.\"},{\"name\":\"phone\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"supervisorId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"The supervisor created alongside the workshop by the legacy Add form.\"},{\"name\":\"supervisor\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"WorkshopSupervisor\",\"relationFromFields\":[\"supervisorId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"preOrders\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"PreOrder\",\"relationName\":\"PreOrderToWorkshop\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Category\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"title\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"type\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":1,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy Category.type — which storefront the category belongs to:\\\\n1 سایت | 2 اپلیکشن موبایل. Drives the \\\"type_str\\\" grid column.\"},{\"name\":\"imageUrl\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy Category.image / icon — the grid renders the image, the storefront the icon.\"},{\"name\":\"iconUrl\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"metaTag\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy meta tag + description, used for SEO on the site categories.\"},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"parentId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"parent\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Category\",\"relationName\":\"CategoryTree\",\"relationFromFields\":[\"parentId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"children\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Category\",\"relationName\":\"CategoryTree\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"products\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Product\",\"relationName\":\"CategoryToProduct\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"promotions\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Promotion\",\"relationName\":\"CategoryToPromotion\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Brand\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"title\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"products\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Product\",\"relationName\":\"BrandToProduct\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"promotions\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Promotion\",\"relationName\":\"BrandToPromotion\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Collection\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"title\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"products\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"CollectionProduct\",\"relationName\":\"CollectionToCollectionProduct\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"Curated product groupings — replaces legacy \\\"Ciny/CinyProduct\\\" (a tagging\\\\nfeature, NOT a gold-price snapshot mechanism, despite the misleading legacy name).\"},\"CollectionProduct\":{\"dbName\":null,\"fields\":[{\"name\":\"collectionId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"collection\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Collection\",\"relationName\":\"CollectionToCollectionProduct\",\"relationFromFields\":[\"collectionId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"product\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Product\",\"relationName\":\"CollectionProductToProduct\",\"relationFromFields\":[\"productId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":{\"name\":null,\"fields\":[\"collectionId\",\"productId\"]},\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Product\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"title\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"categoryId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"category\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Category\",\"relationName\":\"CategoryToProduct\",\"relationFromFields\":[\"categoryId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"brandId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"brand\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Brand\",\"relationName\":\"BrandToProduct\",\"relationFromFields\":[\"brandId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productCode\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy Product.product_code — the human-facing SKU shown in the grid.\"},{\"name\":\"showType\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":3,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy Product.show_type: 1 site, 2 mobile, 3 both.\"},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"tags\",\"kind\":\"scalar\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":[],\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Labels from Setting `__list__tags`, assigned on the product form. The\\\\nstorefront shows them on list cards only (not the product detail page).\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"accountingStockWeight\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Stock of the linked کارساخته as last read from the accounting software\\\\n(D27). Weight for gram-type items, count for count-type ones — whichever\\\\nthe software reports. At zero or below the product is unavailable in the\\\\napp (pre-order variants excepted). Null = not linked or never synced.\"},{\"name\":\"accountingStockCount\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"accountingStockAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"variants\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ProductVariant\",\"relationName\":\"ProductToProductVariant\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"images\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ProductImage\",\"relationName\":\"ProductToProductImage\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"collections\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"CollectionProduct\",\"relationName\":\"CollectionProductToProduct\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"comments\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Comment\",\"relationName\":\"CommentToProduct\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"promotions\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Promotion\",\"relationName\":\"ProductToPromotion\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"allocationItems\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"BranchAllocationItem\",\"relationName\":\"BranchAllocationItemToProduct\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"favoritedBy\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"CustomerFavorite\",\"relationName\":\"CustomerFavoriteToProduct\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ProductImage\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"product\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Product\",\"relationName\":\"ProductToProductImage\",\"relationFromFields\":[\"productId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"url\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sortOrder\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"role\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"ProductImageRole\",\"default\":\"GALLERY\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy had 4 distinct upload slots (تصویر شاخص / تصویر شاخص موبایل /\\\\nگالری تصاویر سایت / گالری تصاویر موبایل) — GALLERY is the default so\\\\nexisting rows and any generic \\\"just attach an image\\\" caller keep working.\"},{\"name\":\"variants\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ProductVariant\",\"relationName\":\"ProductImageToProductVariant\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Variants that display this image. A gallery image may back several\\\\nvariants (one photo, several weights), which is why this is a plain\\\\none-to-many and not a join table.\"}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ProductVariant\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"product\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Product\",\"relationName\":\"ProductToProductVariant\",\"relationFromFields\":[\"productId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"title\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sku\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"rashWeightGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Base/raw weight before making charge (\\\"rash weight\\\").\"},{\"name\":\"defaultWagePercent\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Default making-charge percentage applied on top of rash weight.\"},{\"name\":\"qty\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy ProductVariant.qty — on-hand stock. The cart refuses a variant with\\\\nqty 0 unless it is flagged pre-order, so both fields are required for that\\\\nguard to work (see apps/admin-panel/src/stores/cart.ts).\"},{\"name\":\"isPreOrder\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy is_pre_order: orderable even at zero stock.\"},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"color\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy color enum: 0=سفید, 1=زرد, 2=شکلاتی, 3=رزگلد\"},{\"name\":\"rialWage\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy rial_pay — fixed Rial making charge per variant.\"},{\"name\":\"details\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy details — short description for variant.\"},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy description — full description for variant.\"},{\"name\":\"imageId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"The gallery image shown for this variant, picked from its own product's\\\\nimages — never a re-uploaded copy. onDelete: SetNull because dropping an\\\\nimage must never cascade into the variant: OrderItem rows reference\\\\nvariants, so losing one would break order history.\"},{\"name\":\"image\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ProductImage\",\"relationName\":\"ProductImageToProductVariant\",\"relationFromFields\":[\"imageId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"SetNull\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orderItems\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"OrderItem\",\"relationName\":\"OrderItemToProductVariant\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Order\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orderNumber\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToOrder\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branchId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branch\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Branch\",\"relationName\":\"BranchToOrder\",\"relationFromFields\":[\"branchId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"channel\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"OrderChannel\",\"default\":\"RETAIL\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Which sales channel placed this order — see OrderChannel.\"},{\"name\":\"status\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"OrderStatus\",\"default\":\"PLACED\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"revisionStatus\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"OrderRevisionStatus\",\"default\":\"NONE\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Pending admin edit awaiting customer confirm (or admin force/discard).\"},{\"name\":\"totalGoldWeightGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Total gold weight incl. wage across all items (\\\"allGram\\\" / order.w).\"},{\"name\":\"wageWeightGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Pure making-charge weight component (totalGoldWeightGrams minus raw weight sum).\"},{\"name\":\"flatRialCharge\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Flat Rial charge independent of gold price (e.g. stones) — legacy rial_input.\"},{\"name\":\"isSuspendedOverCreditLimit\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"deliveredAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"salesAgentId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"The sales expert this order is credited to, fixed when it is placed:\\\\nthe customer's referring expert AT THAT MOMENT. Legacy `orders.reagent_id`,\\\\nset once at creation (ApiMobileController.php:601) and never moved, so a\\\\ncustomer changing expert later does not move past sales or commission\\\\n(owner ruling 2026-10-08). «میزان فروش» counts from here, never from the\\\\ncustomer's current referrer.\"},{\"name\":\"salesAgent\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AdminUser\",\"relationName\":\"OrderSalesAgent\",\"relationFromFields\":[\"salesAgentId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"SetNull\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"referrerCustomerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"History only: a legacy order whose `reagent_id` named a customer who is\\\\nnot a sales expert (one such customer, 17 orders in 2022). Legacy counted\\\\nthose orders in that customer's own «میزان فروش»; this keeps that figure\\\\nexact. Never set for a new order.\"},{\"name\":\"referrerCustomer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"OrderReferrerCustomer\",\"relationFromFields\":[\"referrerCustomerId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"SetNull\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"items\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"OrderItem\",\"relationName\":\"OrderToOrderItem\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"statusEvents\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"OrderStatusEvent\",\"relationName\":\"OrderToOrderStatusEvent\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"ledgerEntries\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"LedgerEntry\",\"relationName\":\"LedgerEntryToOrder\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"revisions\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"OrderRevision\",\"relationName\":\"OrderToOrderRevision\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"convertedFromPreOrder\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"PreOrder\",\"relationName\":\"OrderToPreOrder\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"OrderRevision\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orderId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"order\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"OrderToOrderRevision\",\"relationFromFields\":[\"orderId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"items\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Json\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Proposed lines: [{ productVariantId, quantity, rashWeightGramsSnapshot,\\\\nwagePercentSnapshot, discountPercentSnapshot, computedWeightGrams, flatRialCharge }]\"},{\"name\":\"totalGoldWeightGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"wageWeightGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"flatRialCharge\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"proposedByAdminId\",\"dbName\":\"proposedByAdminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"note\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerDecision\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"null | ACCEPTED | REJECTED — reject leaves AWAITING_CUSTOMER for admin decision.\"},{\"name\":\"customerDecidedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"appliedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"discardedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"Proposed line-item edit for an Order. Live until applied or discarded.\\\\nWhile pending, Order.revisionStatus = AWAITING_CUSTOMER and charged figures\\\\nstay on the current Order until the customer confirms (or admin force-applies).\"},\"OrderItem\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orderId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"order\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"OrderToOrderItem\",\"relationFromFields\":[\"orderId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productVariantId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productVariant\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ProductVariant\",\"relationName\":\"OrderItemToProductVariant\",\"relationFromFields\":[\"productVariantId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"quantity\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"rashWeightGramsSnapshot\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"wagePercentSnapshot\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"discountPercentSnapshot\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"computedWeightGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"computed: rash*(1 + (wagePercent-discount)/100)\"},{\"name\":\"flatRialCharge\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"OrderStatusEvent\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orderId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"order\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"OrderToOrderStatusEvent\",\"relationFromFields\":[\"orderId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"fromStatus\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"OrderStatus\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"toStatus\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"OrderStatus\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"note\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"actorAdminId\",\"dbName\":\"actorAdminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"actorAdmin\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"AdminToOrderStatusEvent\",\"relationFromFields\":[\"actorAdminId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"PreOrder\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToPreOrder\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"cityId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"city\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"City\",\"relationName\":\"CityToPreOrder\",\"relationFromFields\":[\"cityId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"workshopId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"workshop\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Workshop\",\"relationName\":\"PreOrderToWorkshop\",\"relationFromFields\":[\"workshopId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"status\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"PreOrderStatus\",\"default\":\"PLACED\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"designImageUrl\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"colorName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sizeSpec\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"stoneColor\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"minaColor\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"estimatedWeightGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"estimatedPriceRial\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"convertedOrderId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":true,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Once priced, an admin converts this into a real (debt-bearing) Order.\"},{\"name\":\"convertedOrder\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"OrderToPreOrder\",\"relationFromFields\":[\"convertedOrderId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"statusEvents\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"PreOrderStatusEvent\",\"relationName\":\"PreOrderToPreOrderStatusEvent\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"PreOrderStatusEvent\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"preOrderId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"preOrder\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"PreOrder\",\"relationName\":\"PreOrderToPreOrderStatusEvent\",\"relationFromFields\":[\"preOrderId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"changes\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Json\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Field-level diff, e.g. {\\\"status\\\": {\\\"old\\\": \\\"PLACED\\\", \\\"new\\\": \\\"ADMIN_APPROVED\\\"}}\"},{\"name\":\"actorAdminId\",\"dbName\":\"actorAdminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"actorAdmin\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"AdminToPreOrderStatusEvent\",\"relationFromFields\":[\"actorAdminId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"ipAddress\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"LedgerEntry\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToLedgerEntry\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"currency\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"LedgerCurrency\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"direction\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"LedgerDirection\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sourceType\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"LedgerSourceType\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"amount\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Always positive; direction determines the sign applied to the customer balance.\"},{\"name\":\"karatPerMille\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Purity of the physical instrument, for REPAYMENT_MELTED_GOLD (e.g. 750, 916).\"},{\"name\":\"pricePerGramRialAtEntry\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Gold price/gram at conversion time, for REPAYMENT_CASH.\"},{\"name\":\"orderId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"order\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"LedgerEntryToOrder\",\"relationFromFields\":[\"orderId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"confirmed\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Pending entries don't count toward the cached customer balance until confirmed.\"},{\"name\":\"confirmedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"postedByAdminId\",\"dbName\":\"postedByAdminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"postedByAdmin\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"AdminToLedgerEntry\",\"relationFromFields\":[\"postedByAdminId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"labName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Instrument metadata from the legacy \\\"cash\\\" document form. Which fields are\\\\nfilled depends on sourceType: a melted-gold receipt carries lab/hallmark and\\\\nthe pre-normalization weight, a cheque carries the account and bank, and a\\\\ntransfer carries its destination.\\\\nLegacy columns: lab, ang, account_name, bank_name, to, original_value, recive_date.\"},{\"name\":\"hallmark\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"accountName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"bankName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"transferTo\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"originalValue\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Weight as handed over, BEFORE karat normalization (legacy original_value).\"},{\"name\":\"priceRial\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Rial amount for cash/cheque documents (legacy price).\"},{\"name\":\"receivedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"note\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"GoldPriceQuote\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"karatPerMille\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"pricePerGramRial\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"source\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"quotedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"Replaces legacy WebServiceGold / ConfigStatic.gold_price — timestamped price feed.\"},\"WalletBonus\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToWalletBonus\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orderId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"goldGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"grantedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"consumedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"Time-limited gold cashback bonus — replaces the legacy Rooyesh\\\\Wallet gold credit.\"},\"UserType\":{\"dbName\":\"user_type\",\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy `permission.ut` / `users.ut` — an integer, kept as the PK so seeded\\\\nrows keep their legacy identity rather than getting new cuids.\"},{\"name\":\"title\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"permissions\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Permission\",\"relationName\":\"PermissionToUserType\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"adminUsers\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AdminUser\",\"relationName\":\"AdminUserToUserType\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"admins\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"AdminToUserType\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Permission\":{\"dbName\":\"permission\",\"fields\":[{\"name\":\"rid\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Dotted permission id, e.g. \\\"order.list\\\", \\\"persons.list.client.omde\\\".\"},{\"name\":\"userTypeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"userType\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"UserType\",\"relationName\":\"PermissionToUserType\",\"relationFromFields\":[\"userTypeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":{\"name\":null,\"fields\":[\"rid\",\"userTypeId\"]},\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Comment\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"product\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Product\",\"relationName\":\"CommentToProduct\",\"relationFromFields\":[\"productId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CommentToCustomer\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"body\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"status\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"CommentStatus\",\"default\":\"PENDING\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"replyToId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy `reply_to`: a staff reply threads under the comment it answers.\"},{\"name\":\"replyTo\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Comment\",\"relationName\":\"CommentReplies\",\"relationFromFields\":[\"replyToId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"replies\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Comment\",\"relationName\":\"CommentReplies\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":true}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Setting\":{\"dbName\":null,\"fields\":[{\"name\":\"key\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"value\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Json\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":true}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"AccountingLink\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"provider\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"entityType\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AccountingEntityType\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"entityId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"externalCode\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"The record's code in the accounting software (Tahesab Moshtari_Code /\\\\nZarrin idHesab; for products the Zarrin idKar or the Tahesab Name_Kar).\"},{\"name\":\"externalName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"origin\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"How the link came to be: LINKED (matched by mobile/name), IMPORTED (app\\\\nrow created from the accounting record), PUSHED (accounting record created\\\\nfrom the app row) or MANUAL (an admin typed the code).\"},{\"name\":\"snapshot\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Json\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"The record as last read, for display only.\"},{\"name\":\"syncedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[[\"provider\",\"entityType\",\"entityId\"],[\"provider\",\"entityType\",\"externalCode\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"provider\",\"entityType\",\"entityId\"]},{\"name\":null,\"fields\":[\"provider\",\"entityType\",\"externalCode\"]}],\"isGenerated\":false,\"documentation\":\"One app row ↔ one record in the accounting software (customer account or\\\\nکارساخته).\"},\"AccountingOutbox\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"provider\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"kind\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AccountingOutboxKind\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"entityId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"status\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"AccountingOutboxStatus\",\"default\":\"PENDING\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"attempts\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"nextAttemptAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"lastError\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"externalRef\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"What the accounting software returned as the document/record id.\"},{\"name\":\"progress\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Json\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Per-step progress of multi-call jobs (a Zarrin document is one call per\\\\nline), so a failure resumes where it stopped.\"},{\"name\":\"lastRequest\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Json\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Last request/response, for the log screen. Never contains the token.\"},{\"name\":\"lastResponse\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Json\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sentAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"resolvedById\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":true}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"Work to push to the accounting software. Written in the SAME transaction as\\\\nthe change that causes it, so an outage of the accounting software never\\\\nloses an event and never blocks the app.\"},\"AccountingIssue\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"provider\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"kind\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"externalCode\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"entityId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"message\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"data\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Json\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"resolvedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[[\"provider\",\"kind\",\"externalCode\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"provider\",\"kind\",\"externalCode\"]}],\"isGenerated\":false,\"documentation\":\"Something a pull found that needs a human: an account with no mobile, two\\\\naccounts sharing one mobile, a کارساخته group with no category mapping.\"},\"Promotion\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"title\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"scope\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"PromotionScope\",\"default\":\"PRODUCT\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"usage\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"PromotionUsage\",\"default\":\"ONCE\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"discountPercent\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Percentage off, 0-100 (legacy discount_percent).\"},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"platform\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":3,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Which storefront it shows on, mirroring Product.showType (legacy platform).\"},{\"name\":\"startsAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"endsAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Exactly one of these is populated, per `scope`.\"},{\"name\":\"product\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Product\",\"relationName\":\"ProductToPromotion\",\"relationFromFields\":[\"productId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"categoryId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"category\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Category\",\"relationName\":\"CategoryToPromotion\",\"relationFromFields\":[\"categoryId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToPromotion\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"brandId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"brand\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Brand\",\"relationName\":\"BrandToPromotion\",\"relationFromFields\":[\"brandId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":true}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"PromotionExclusion\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"type\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"itemId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[[\"type\",\"itemId\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"type\",\"itemId\"]}],\"isGenerated\":false,\"documentation\":\"Legacy \\\"ignore\\\" table (views/offersIgnore) — specific products, categories,\\\\ncustomers or brands excluded from the automatic discount engine.\\\\nLegacy posts { type, item_id[] }: \\\"type\\\" reuses the promotion scope codes\\\\n(1 محصولات | 2 دسته بندی | 3 مشتری | 4 برند) and \\\"itemId\\\" is the excluded row.\"},\"BranchAllocation\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branchId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branch\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Branch\",\"relationName\":\"BranchToBranchAllocation\",\"relationFromFields\":[\"branchId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"allocatorAdminId\",\"dbName\":\"allocatorAdminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy `allocator_user` — the admin who filed the allocation.\"},{\"name\":\"allocatorAdmin\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"AllocationAuthor\",\"relationFromFields\":[\"allocatorAdminId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"note\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"items\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"BranchAllocationItem\",\"relationName\":\"BranchAllocationToBranchAllocationItem\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"BranchAllocationItem\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"allocationId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"allocation\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"BranchAllocation\",\"relationName\":\"BranchAllocationToBranchAllocationItem\",\"relationFromFields\":[\"allocationId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"product\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Product\",\"relationName\":\"BranchAllocationItemToProduct\",\"relationFromFields\":[\"productId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"weightGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Weight snapshot at allocation time, so later catalog edits do not rewrite history.\"}],\"primaryKey\":null,\"uniqueFields\":[[\"allocationId\",\"productId\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"allocationId\",\"productId\"]}],\"isGenerated\":false},\"SmsMessage\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"audience\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"MessageAudience\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"recipients\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Comma-separated recipients for the SINGLE/MULTIPLE audiences.\"},{\"name\":\"body\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sentCount\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"How many numbers the send actually resolved to.\"},{\"name\":\"sentByAdminId\",\"dbName\":\"sentByAdminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sentByAdmin\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"SmsAuthor\",\"relationFromFields\":[\"sentByAdminId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Notification\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"title\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"body\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"audience\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"MessageAudience\",\"default\":\"ALL_CUSTOMERS\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sentByAdminId\",\"dbName\":\"sentByAdminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sentByAdmin\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"NotificationAuthor\",\"relationFromFields\":[\"sentByAdminId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"recipients\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"NotificationRecipient\",\"relationName\":\"NotificationToNotificationRecipient\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"NotificationRecipient\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"notificationId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"notification\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Notification\",\"relationName\":\"NotificationToNotificationRecipient\",\"relationFromFields\":[\"notificationId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToNotificationRecipient\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"readAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[[\"notificationId\",\"customerId\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"notificationId\",\"customerId\"]}],\"isGenerated\":false,\"documentation\":\"Per-customer delivery + read state — legacy `GET notify/read/{id}`.\"},\"NewsletterSubscriber\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"email\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"mobile\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[[\"email\"],[\"mobile\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"email\"]},{\"name\":null,\"fields\":[\"mobile\"]}],\"isGenerated\":false,\"documentation\":\"Legacy views/newsletters — the mailing-list signups collected by the site.\"},\"CustomerActivityLog\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToCustomerActivityLog\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"action\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Free-form action key, e.g. 'login', 'order.placed', 'profile.updated'.\"},{\"name\":\"detail\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"Legacy views/statics — the customer activity log the \\\"آمار\\\" screen reads\\\\n(`log/list/customer`, `log/ago/{customerId}`).\"},\"UploadedFile\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"url\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Public URL the stored file is served from.\"},{\"name\":\"originalName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"mimeType\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sizeBytes\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"purpose\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Free-form tag for what the file belongs to, e.g. 'product', 'category',\\\\n'customer.nationalId'. Kept loose so a new form needs no schema change.\"},{\"name\":\"uploadedByAdminId\",\"dbName\":\"uploadedByAdminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"uploadedByAdmin\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"FileUploader\",\"relationFromFields\":[\"uploadedByAdminId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerAvatars\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerAvatar\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"adminUserAvatars\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AdminUser\",\"relationName\":\"AdminUserAvatar\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"CustomerOtp\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"mobile\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Normalised to English digits before storing, as the reference does with\\\\nUtility::faTOen() on both send and verify.\"},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToCustomerOtp\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"codeHash\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"bcrypt hash of the 4-digit code. Never the code itself.\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"attempts\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Failed verify attempts against THIS challenge.\"},{\"name\":\"consumedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Set when the code is accepted, so one challenge cannot be reused.\"},{\"name\":\"requestIp\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Kept for the per-IP send throttle.\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"One OTP login challenge for a customer.\\\\n\\\\nPorts henza_server's flow (ApiMobileController.php:39-78), where userAuth\\\\ngenerated rand(1000,9999), stored it on the customer row as `send_password`\\\\nand sent it by SMS, and userVerfiy compared the submitted code against it\\\\n(mismatch -> HTTP 422).\\\\n\\\\nThree deliberate improvements over the reference, approved by the user\\\\n(docs/parity/DECISIONS.md D6 and T1):\\\\n1. the code is stored as a bcrypt hash, never in plain text — the\\\\nreference kept it readable in a customer column;\\\\n2. it expires (`expiresAt`) — the reference's code stayed valid forever;\\\\n3. attempts are counted and the challenge locks out — the reference had\\\\nno limit at all.\\\\nThe parity behaviour itself is the code comparison and the rejection.\"}},\"enums\":{\"AdminRole\":{\"values\":[{\"name\":\"SUPER_ADMIN\",\"dbName\":null},{\"name\":\"SYSTEM_APPROVER\",\"dbName\":null},{\"name\":\"SALES_EXPERT\",\"dbName\":null},{\"name\":\"WORKSHOP_SUPERVISOR\",\"dbName\":null},{\"name\":\"ACCOUNTANT\",\"dbName\":null}],\"dbName\":null},\"CustomerKind\":{\"values\":[{\"name\":\"SALES_AGENT\",\"dbName\":null},{\"name\":\"APP_SHOPKEEPER\",\"dbName\":null},{\"name\":\"WALK_IN_SHOPKEEPER\",\"dbName\":null},{\"name\":\"BANKER\",\"dbName\":null},{\"name\":\"WORKSHOP_SUPERVISOR\",\"dbName\":null},{\"name\":\"RETAIL\",\"dbName\":null}],\"dbName\":null,\"documentation\":\"Legacy Customer.type — what kind of wholesale customer this is. Values and\\\\nlabels taken verbatim from bulkCustomer.vue's userTypes list.\\\\n\\\\nSALES_AGENT is a LEGACY value only: legacy stored a sales agent as a\\\\nCustomer row with type=1, but the redesigned system models a sales agent\\\\nas an AdminUser (role SALES_EXPERT) instead — see admin-users.service.ts\\\\nand admin-customers.service.ts's listReagents()/create(). No Customer row\\\\nshould be created with kind SALES_AGENT going forward; the value is kept\\\\nonly so legacyTypeToKind()/kindToLegacyType() stay total functions and any\\\\nalready-migrated data keeps a readable label.\\\\n\\\\nRETAIL marks a \\\"تک\\\" (single/retail) customer — legacy kept these in an\\\\nentirely separate table (SingleCustomer/`login`) that could never contain\\\\na wholesale/agent/shopkeeper/banker row. The redesigned schema folded both\\\\ninto one Customer model, so this value is what listSingle() now filters on\\\\nto reproduce that same separation.\"},\"VerificationStep\":{\"values\":[{\"name\":\"UNVERIFIED\",\"dbName\":null},{\"name\":\"STEP_ONE_SUBMITTED\",\"dbName\":null},{\"name\":\"STEP_TWO_SUBMITTED\",\"dbName\":null},{\"name\":\"VERIFIED\",\"dbName\":null},{\"name\":\"REJECTED\",\"dbName\":null,\"documentation\":\"Legacy had THREE states per step, not two\\\\n(MajorCustomerController.php:106-135): 1 = awaiting, 2 = approved,\\\\n3 = REJECTED. Mapping rejected customers to UNVERIFIED would put closed\\\\ncases back in the review queue, so the owner ruled it out (2026-10-07).\\\\n14 legacy rows land here; see Customer.verificationRejectionReason.\"}],\"dbName\":null},\"OrderChannel\":{\"values\":[{\"name\":\"RETAIL\",\"dbName\":null},{\"name\":\"WHOLESALE\",\"dbName\":null}],\"dbName\":null,\"documentation\":\"Legacy kept retail and wholesale orders in two SEPARATE tables\\\\n(orders_orders vs orders). The redesigned schema has one Order model, so the\\\\ndistinction lives here instead.\"},\"OrderStatus\":{\"values\":[{\"name\":\"SUSPENDED\",\"dbName\":null},{\"name\":\"PLACED\",\"dbName\":null},{\"name\":\"ADMIN_APPROVED\",\"dbName\":null},{\"name\":\"SOURCING\",\"dbName\":null},{\"name\":\"PREPARING\",\"dbName\":null},{\"name\":\"DELIVERED_TO_AGENT\",\"dbName\":null},{\"name\":\"DELIVERED_TO_CUSTOMER\",\"dbName\":null},{\"name\":\"CANCELLED\",\"dbName\":null}],\"dbName\":null},\"PreOrderStatus\":{\"values\":[{\"name\":\"PLACED\",\"dbName\":null},{\"name\":\"ADMIN_APPROVED\",\"dbName\":null},{\"name\":\"WORKSHOP_APPROVED\",\"dbName\":null},{\"name\":\"READY_TO_SHIP\",\"dbName\":null},{\"name\":\"DELIVERED\",\"dbName\":null},{\"name\":\"CANCELLED\",\"dbName\":null}],\"dbName\":null},\"LedgerCurrency\":{\"values\":[{\"name\":\"GOLD_GRAM\",\"dbName\":null},{\"name\":\"RIAL\",\"dbName\":null}],\"dbName\":null},\"LedgerDirection\":{\"values\":[{\"name\":\"DEBIT\",\"dbName\":null},{\"name\":\"CREDIT\",\"dbName\":null}],\"dbName\":null},\"LedgerSourceType\":{\"values\":[{\"name\":\"ORDER_STOCK\",\"dbName\":null},{\"name\":\"ORDER_PRE_ORDER\",\"dbName\":null},{\"name\":\"REPAYMENT_MELTED_GOLD\",\"dbName\":null},{\"name\":\"REPAYMENT_TRANSFER\",\"dbName\":null},{\"name\":\"REPAYMENT_CHEQUE\",\"dbName\":null},{\"name\":\"REPAYMENT_CASH\",\"dbName\":null},{\"name\":\"WALLET_BONUS\",\"dbName\":null},{\"name\":\"ADJUSTMENT\",\"dbName\":null}],\"dbName\":null},\"ProductImageRole\":{\"values\":[{\"name\":\"FEATURED\",\"dbName\":null},{\"name\":\"FEATURED_MOBILE\",\"dbName\":null},{\"name\":\"GALLERY\",\"dbName\":null},{\"name\":\"GALLERY_MOBILE\",\"dbName\":null}],\"dbName\":null},\"OrderRevisionStatus\":{\"values\":[{\"name\":\"NONE\",\"dbName\":null},{\"name\":\"AWAITING_CUSTOMER\",\"dbName\":null}],\"dbName\":null,\"documentation\":\"Customer-confirm state for an admin-proposed order edit (not a pipeline status).\"},\"CommentStatus\":{\"values\":[{\"name\":\"PENDING\",\"dbName\":null},{\"name\":\"APPROVED\",\"dbName\":null},{\"name\":\"REJECTED\",\"dbName\":null}],\"dbName\":null},\"AccountingEntityType\":{\"values\":[{\"name\":\"CUSTOMER\",\"dbName\":null},{\"name\":\"PRODUCT\",\"dbName\":null}],\"dbName\":null},\"AccountingOutboxKind\":{\"values\":[{\"name\":\"CUSTOMER_PUSH\",\"dbName\":null},{\"name\":\"PRODUCT_PUSH\",\"dbName\":null},{\"name\":\"ORDER_DOCUMENT\",\"dbName\":null},{\"name\":\"ORDER_DOCUMENT_DELETE\",\"dbName\":null}],\"dbName\":null},\"AccountingOutboxStatus\":{\"values\":[{\"name\":\"PENDING\",\"dbName\":null},{\"name\":\"SENDING\",\"dbName\":null,\"documentation\":\"A call was in flight. Found at startup, it means the process died mid-call\\\\nand the outcome is unknown — see AccountingOutboxWorker.\"},{\"name\":\"SENT\",\"dbName\":null},{\"name\":\"FAILED\",\"dbName\":null},{\"name\":\"NEEDS_REVIEW\",\"dbName\":null,\"documentation\":\"Unsafe to retry automatically (e.g. a Zarrin call timed out: Zarrin has no\\\\nidempotency key, so a blind retry could post the document twice).\"},{\"name\":\"RESOLVED\",\"dbName\":null,\"documentation\":\"Closed by an admin from the log screen.\"}],\"dbName\":null},\"PromotionScope\":{\"values\":[{\"name\":\"PRODUCT\",\"dbName\":null},{\"name\":\"CATEGORY\",\"dbName\":null},{\"name\":\"CUSTOMER\",\"dbName\":null},{\"name\":\"BRAND\",\"dbName\":null}],\"dbName\":null,\"documentation\":\"Legacy Promotion.type — what the discount is scoped to.\"},\"PromotionUsage\":{\"values\":[{\"name\":\"ONCE\",\"dbName\":null},{\"name\":\"UNTIL_END_DATE\",\"dbName\":null}],\"dbName\":null,\"documentation\":\"Legacy Promotion.use_only — how often a customer may redeem it.\"},\"MessageAudience\":{\"values\":[{\"name\":\"SINGLE_NUMBER\",\"dbName\":null},{\"name\":\"MULTIPLE_NUMBERS\",\"dbName\":null},{\"name\":\"ALL_CUSTOMERS\",\"dbName\":null},{\"name\":\"WHOLESALE_CUSTOMERS\",\"dbName\":null},{\"name\":\"RETAIL_CUSTOMERS\",\"dbName\":null},{\"name\":\"SALES_AGENTS\",\"dbName\":null}],\"dbName\":null,\"documentation\":\"Who an SMS or notification was aimed at. Legacy's sms/create offered these\\\\naudiences, each gated by its own rid (sms.create.all, .omde, .single, ...).\"}},\"types\":{}}") +config.runtimeDataModel = JSON.parse("{\"models\":{\"City\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"parentId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"parent\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"City\",\"relationName\":\"CityTree\",\"relationFromFields\":[\"parentId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Restrict\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"children\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"City\",\"relationName\":\"CityTree\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"percent\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy cities.percent / percent_aux — per-city wage surcharges the city\\\\nscreen edits through GET cities/get-percent/{id} and get-percent-aux/{id}.\"},{\"name\":\"percentAux\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customers\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CityToCustomer\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"addresses\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"CustomerAddress\",\"relationName\":\"CityToCustomerAddress\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branches\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Branch\",\"relationName\":\"BranchToCity\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"preOrders\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"PreOrder\",\"relationName\":\"CityToPreOrder\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"salesExpertProfiles\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"SalesExpertProfile\",\"relationName\":\"CityToSalesExpertProfile\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"Legacy `cities` is a tree (country > province > city > district) and so is\\\\nthis: a city hangs under its `parent`. In the admin pickers a top-level row\\\\n(the country) is a heading, not selectable (henza_admin citiesModel.js:38).\"},\"Admin\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"fullName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"firstName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"lastName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"mobile\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"passwordHash\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"role\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AdminRole\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Never SALES_EXPERT — that role lives in AdminUser. Enforced in\\\\nAdminUsersService, not in the database, so the enum stays shared.\"},{\"name\":\"userTypeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"userType\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"UserType\",\"relationName\":\"AdminToUserType\",\"relationFromFields\":[\"userTypeId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branchId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branch\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Branch\",\"relationName\":\"AdminToBranch\",\"relationFromFields\":[\"branchId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"supervisedWorkshops\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Workshop\",\"relationName\":\"WorkshopSupervisor\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branchAllocations\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"BranchAllocation\",\"relationName\":\"AllocationAuthor\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"postedLedgerEntries\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"LedgerEntry\",\"relationName\":\"AdminToLedgerEntry\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orderStatusEvents\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"OrderStatusEvent\",\"relationName\":\"AdminToOrderStatusEvent\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"preOrderStatusEvents\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"PreOrderStatusEvent\",\"relationName\":\"AdminToPreOrderStatusEvent\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sentSmsMessages\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"SmsMessage\",\"relationName\":\"SmsAuthor\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sentNotifications\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Notification\",\"relationName\":\"NotificationAuthor\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"uploadedFiles\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"UploadedFile\",\"relationName\":\"FileUploader\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sessions\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AdminSession\",\"relationName\":\"AdminToAdminSession\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Issued admin-panel tokens, recorded only while session tracking is on\\\\n(AUTH_SESSION_TRACKING, or implicitly whenever the IAM is enabled) so a\\\\ntoken can be revoked before it expires. See AdminSession.\"}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"A staff account for the ADMIN PANEL — and nothing else.\\\\n\\\\nSplit out of AdminUser (which now holds sales experts only) so that:\\\\n* the same mobile can be an admin AND a sales expert — they are two\\\\nseparate roles, each unique only within its own table;\\\\n* the expert table (production: ~12,000 rows) is never written by panel\\\\nstaff management.\\\\nMigration 20261026120000_split_admin_table copies the existing non-expert\\\\nAdminUser rows here WITH THEIR IDS, so issued panel tokens and every\\\\n\\\"who did this\\\" column keep resolving. The old rows are left in AdminUser,\\\\ndormant; no code reads them as admins any more.\\\\n\\\\n⚠️ fullName/firstName/lastName are kept in sync by the DB trigger\\\\n`admin_sync_full_name_trg` (it shares the function admin_user_sync_full_name) — same semantics as AdminUser: the parts win.\"},\"AdminUser\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"fullName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"⚠️ Kept in sync BY A DATABASE TRIGGER — `admin_user_sync_full_name`, from\\\\nmigration 20260922180000. Prisma cannot see it, so a write here may store\\\\nsomething other than what you passed:\\\\n\\\\n* write the parts -> fullName is rebuilt as \\\"first last\\\"\\\\n* write fullName only -> the parts are re-derived from it\\\\n* write BOTH in one update -> THE PARTS WIN; the submitted fullName is\\\\ndiscarded\\\\n\\\\nRe-read after writing if you need the stored value. Same arrangement as\\\\nCustomer (D0 requirement 7 — the split applies to ALL admins, not only\\\\nsales experts).\"},{\"name\":\"firstName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"lastName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"mobile\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"passwordHash\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"role\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AdminRole\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"userTypeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy `users.ut`. Granular ACL lives here (Permission rows hang off UserType);\\\\nthe coarse `role` enum above is retained for the business rules that already\\\\nswitch on it. Nullable so existing seeded admins remain valid.\"},{\"name\":\"userType\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"UserType\",\"relationName\":\"AdminUserToUserType\",\"relationFromFields\":[\"userTypeId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branchId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branch\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Branch\",\"relationName\":\"AdminUserToBranch\",\"relationFromFields\":[\"branchId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"wagePercent\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"avatarFileId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy stored a sales agent as a `customers` row with type=1, so\\\\nReagentCustomer.vue's shared form collected these alongside the\\\\nwholesale-customer fields. A sales agent is now an AdminUser\\\\n(role=SALES_EXPERT), so these live here instead — only ever set for that\\\\nrole; every other AdminUser leaves them null.\"},{\"name\":\"avatarFile\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"UploadedFile\",\"relationName\":\"AdminUserAvatar\",\"relationFromFields\":[\"avatarFileId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"address\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"storeName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"pasazhName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"memberCode\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"referredCustomers\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"ReferralAgent\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"creditedOrders\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"OrderSalesAgent\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Orders credited to this sales expert — see Order.salesAgentId.\"},{\"name\":\"salesExpertProfile\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"SalesExpertProfile\",\"relationName\":\"AdminUserToSalesExpertProfile\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Only ever set for role = SALES_EXPERT (D17).\"}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"A SALES EXPERT (role SALES_EXPERT). Panel staff live in `Admin`; rows here with\\\\nany other role are pre-split leftovers and are ignored by the code.\"},\"AppSession\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"jti\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"The token's `jti` claim. Unique: one row per issued token.\"},{\"name\":\"subjectId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Customer.id, or AdminUser.id when subjectType is \\\"sales-expert\\\".\"},{\"name\":\"subjectType\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"mobile\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"iamSessionId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Set when the login was confirmed by the central IAM: its session id (`sid`)\\\\nand stable user id (`sub`), which is what a back-channel logout arrives with.\"},{\"name\":\"iamSub\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"ipAddress\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"userAgent\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"lastSeenAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"revokedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"revokedReason\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"An issued APP token (customer app / sales-expert app), so it can be revoked\\\\nbefore it expires — the counterpart of AdminSession for the other token family.\\\\n\\\\nWHY A SEPARATE TABLE AND NO FOREIGN KEY\\\\n---------------------------------------\\\\nAn app token's `sub` is a Customer id for a customer and an **AdminUser id**\\\\nfor a sales expert (D21). One FK cannot point at two tables, so the subject is\\\\nstored as a plain id plus its type. The rows are short-lived operational data,\\\\nnot part of the accounting model, so the missing FK costs nothing here.\"},\"AdminSession\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"jti\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"The token's `jti` claim. Unique: one row per issued token.\"},{\"name\":\"adminId\",\"dbName\":\"adminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"admin\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"AdminToAdminSession\",\"relationFromFields\":[\"adminId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"iamSessionId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Set when the login was verified by the IAM: its session id (`sid`) and the\\\\nstable user id (`sub`) there. Back-channel logout arrives keyed by these —\\\\ndeliberately here rather than as columns on AdminUser, so enabling the\\\\nfeature needs no change to an existing table.\"},{\"name\":\"iamSub\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"ipAddress\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"userAgent\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"lastSeenAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"revokedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"revokedReason\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"An issued admin-panel JWT, so it can be revoked before it expires.\\\\n\\\\nWHY THIS EXISTS\\\\n---------------\\\\nThe admin token is self-contained and valid for 12h, which means nothing —\\\\nnot disabling the account, not a central \\\"sign out everywhere\\\" — could cut a\\\\nsession short: the token kept working until it expired. With the central IAM\\\\nin the loop that gap became visible (an IAM session revocation had no effect\\\\nhere), so every issued token now carries a `jti` recorded on this table and\\\\nJwtStrategy refuses a token whose row is revoked.\\\\n\\\\nRows are written ONLY while tracking is enabled, and JwtStrategy only\\\\nenforces them while it is enabled, so a deployment that does not want the\\\\nextra lookup behaves exactly as before.\"},\"SalesExpertProfile\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"adminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"adminUser\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AdminUser\",\"relationName\":\"AdminUserToSalesExpertProfile\",\"relationFromFields\":[\"adminUserId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"cityId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy customers.city_id — a filterable grid column\\\\n(ReagentListModel.js:14) and the source of the commission autofill\\\\n(ReagentCustomer.vue:215-228).\"},{\"name\":\"city\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"City\",\"relationName\":\"CityToSalesExpertProfile\",\"relationFromFields\":[\"cityId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"gramLevel\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy customers.gram_level — the «سطح اعتبار» column, filterable.\\\\nDecimal(14,4) matches Customer.goldCreditLimitGrams exactly so the same\\\\ncredit limit has identical precision on both tables.\"},{\"name\":\"phone\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy customers.phone (varchar 15) and ncode (varchar 20). The reference\\\\nstores both and reads neither back; kept so the form matches it. Neither\\\\nis unique and neither has a validation rule in the reference — inventing\\\\none would reject data the reference accepts.\"},{\"name\":\"nationalCode\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"tradingCustomerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":true,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"The Customer row carrying this expert's OWN orders, debt and credit limit.\\\\n\\\\nThe reference stored a sales agent AS a Customer (type=1), so an order the\\\\nagent placed from the app was simply their own, against their own\\\\ngram_level (ApiMobileController.php:534-535). Here the expert is an\\\\nAdminUser (D17), which has no ledger and cannot be an Order's subject, so\\\\nthis one linked Customer plays that part.\\\\n\\\\nDistinct from the expert's REFERRED customers, which are ordinary Customer\\\\nrows pointing at the AdminUser through Customer.referredByAgentId.\\\\n\\\\nNull until the expert first signs into the app, when it is created from\\\\nthis profile. See D21.\"},{\"name\":\"tradingCustomer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"SalesExpertTradingAccount\",\"relationFromFields\":[\"tradingCustomerId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"SetNull\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":true}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"The sales-expert fields legacy kept on the `customers` row (type=1) and that\\\\nwere lost when a sales expert became an AdminUser (D17).\\\\n\\\\nA separate table rather than columns on AdminUser: these are meaningful only\\\\nfor role = SALES_EXPERT and would be permanently null for every other admin.\\\\nA row is created for every SALES_EXPERT by the migration, and upserted by the\\\\nservice whenever one is created or a user's role becomes SALES_EXPERT — but\\\\nreaders still left-join, so a missing profile degrades to nulls rather than\\\\ndropping the agent from the grid.\\\\n\\\\n`reagent_id` is deliberately NOT here — see D17: in the reference it was a\\\\nside effect of the shared customers form, and filling it removed that expert\\\\nfrom the selectable-agent list (queryReagent, AdminController.php:420).\"},\"Customer\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"fullName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"⚠️ `fullName`, `firstName` and `lastName` are kept in sync BY A DATABASE\\\\nTRIGGER — `customer_sync_full_name`, created in migration\\\\n20260922120000_customer_name_parts. Prisma does not know about it, so a\\\\nwrite here is NOT the whole story:\\\\n\\\\n* write the parts -> fullName is rebuilt as \\\"first last\\\"\\\\n* write fullName only -> the parts are re-derived from it\\\\n* write BOTH in one update -> THE PARTS WIN; fullName is overwritten\\\\nwith \\\"first last\\\" and whatever you passed for fullName is discarded\\\\n\\\\nSo a value you wrote can differ from the value that lands in the row.\\\\nRe-read after writing if you need the stored value. Prefer writing the\\\\nparts; `fullName` exists for the legacy readers that predate D0.\\\\n\\\\nReference has these as two columns from the start\\\\n(henza_server 2020_10_01_120430_customers_table.php:18-19 fname/lname);\\\\nthe port collapsed them, which is the D0 defect.\"},{\"name\":\"firstName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"lastName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"mobile\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"nationalCode\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy customers.ncode. OPTIONAL since 2026-10-07: not one of the 1,616\\\\nlegacy customers has a national code (1595/1595 empty), and fabricating\\\\none is a data violation that would block later legal identity checks\\\\n(owner ruling). Still @unique — in PostgreSQL NULLs do not collide, so\\\\nthe migration tool must write NULL and never '', which would collide on\\\\nthe second row.\\\\n\\\\nThree service-layer workarounds exist ONLY because this used to be\\\\nrequired, and they store the MOBILE NUMBER here:\\\\nadmin-customers.service.ts:625,685 and customer-auth.service.ts:258.\\\\nRetiring them is a separate change; see docs/DATA-MIGRATION-MAP.md §10.4.\"},{\"name\":\"passwordHash\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"cityId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"city\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"City\",\"relationName\":\"CityToCustomer\",\"relationFromFields\":[\"cityId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"cityNameRaw\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy customers.new_city — the city name exactly as the customer typed it\\\\nat app sign-up (Major/CustomerController.php:36). Kept verbatim because\\\\nthe legacy city table has only 15 rows, so the typed name is often the only\\\\nrecord of where the customer is (172 customers; 43 match no known city).\\\\ncityId is set alongside it only on an exact, ي/ك-normalised name match.\\\\nLegacy sign-up also forced city_id = 5 (Tehran) on everyone\\\\n(Major/CustomerController.php:21), so for those rows the typed name, not\\\\ncityId, is the truth. Owner ruling 2026-10-07: keep both.\"},{\"name\":\"kind\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"CustomerKind\",\"default\":\"APP_SHOPKEEPER\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy Customer.type — distinguishes بنکدار from مغازه دار, which the\\\\nBankerList / ShopkeeperList screens filter on.\"},{\"name\":\"phone\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy contact + shop columns, shown on the wholesale customer form and as\\\\n(hidden-by-default) columns in its grid.\"},{\"name\":\"address\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"storeName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"pasazhName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"zone\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"memberCode\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy mcode — the operator-assigned customer code.\"},{\"name\":\"referredByAgentId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"referredByAgent\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AdminUser\",\"relationName\":\"ReferralAgent\",\"relationFromFields\":[\"referredByAgentId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"salesExpertTradingFor\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"SalesExpertProfile\",\"relationName\":\"SalesExpertTradingAccount\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Set only on the one Customer row that acts as a sales expert's own trading\\\\naccount (see SalesExpertProfile.tradingCustomerId). Empty for every\\\\nordinary customer.\"},{\"name\":\"referredOrders\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"OrderReferrerCustomer\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy orders that named THIS customer as their referrer — see\\\\nOrder.referrerCustomerId. History only.\"},{\"name\":\"goldCreditLimitGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"goldDebtGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"fiatDebtRial\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"accountingGoldBalance\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Balance as last read from the accounting software (D27), in the app's own\\\\nsign convention (positive = owes). Shown to the customer when the\\\\nintegration is on; the credit-limit check still uses goldDebtGrams above.\\\\nNull until the first successful sync.\"},{\"name\":\"accountingRialBalance\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"accountingBalanceAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"makingChargeOffsetPercent\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy `customers.percent` — the per-customer making-charge offset. It is\\\\nADDED to the variant's making charge when pricing an order line\\\\n(henza_pwa src/Mixins/product/index.ts:69-75:\\\\ngetWage(v) = state.percent + v.percentage_pay)\\\\nand it shifts the catalogue making-charge filter bounds\\\\n(ApiMobileController.php:391-396,76-77). It is NOT part of the price\\\\nformula itself — that extra percent is ConfigStatic['product_price_extra_percent'].\\\\n\\\\nNOT the wallet cashback rate (storefront ConfigStatic['percent'], D13) and\\\\nNOT the wholesale per-line charge (OrderItem.wagePercentSnapshot).\\\\n\\\\nDB default 0 keeps every existing customer's price unchanged. The\\\\nreference's application-layer default for NEW customers is 3\\\\n(AdminController.php:338) and the field is required on create (:354).\"},{\"name\":\"verificationStep\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"VerificationStep\",\"default\":\"UNVERIFIED\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"nationalIdImageUrl\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"businessLicenseUrl\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"shopImageUrl\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"verificationRejectionReason\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Why verification was rejected (VerificationStep.REJECTED).\\\\n\\\\nLegacy recorded NO reason: none of its 49 `customers` columns is a\\\\nreason/note field, and on rejection it only sent a fixed SMS. So the 14\\\\nrows migrated from the legacy system carry the sentinel\\\\n«رد شده در سیستم قدیم — فاقد شرح علت ثبت‌شده» instead of NULL, so support\\\\nknows why it is blank (owner ruling 2026-10-07). The migration tool\\\\nwrites it only WHERE this IS NULL, so a re-run cannot overwrite a real\\\\nreason entered in the new system.\"},{\"name\":\"verificationRejectedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"NULL for rows migrated from the legacy system — it recorded no rejection time.\"},{\"name\":\"birthDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy customers.birth_date, populated on 917 of 1,595 rows. Kept for the\\\\nbirthday SMS / loyalty campaigns (owner ruling 2026-10-07).\\\\n\\\\n⚠ Legacy stores dates as JALALI STRINGS in other tables\\\\n(cashes.recive_date is varchar, 88/89 values starting \\\"14…\\\"), so this\\\\ntimestamp may hold mis-entered Jalali years. Confirm the calendar with\\\\ndocs/migration-precheck-3.sql BEFORE backfilling: copying them unchanged\\\\nwould produce 917 wrong birthdays, worse for an SMS campaign than none.\"},{\"name\":\"avatarFileId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy `image_id` — the profile photo (عکس پروفایل) on the sales-agent\\\\nform. Legacy stored an FK to its Image table and read it back as a nested\\\\n`image: { id, image }`, so this is a relation, not a bare URL string.\"},{\"name\":\"avatarFile\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"UploadedFile\",\"relationName\":\"CustomerAvatar\",\"relationFromFields\":[\"avatarFileId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"canPlaceOrders\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy had TWO independent switches on a customer:\\\\nsts -> may they place orders (this field)\\\\nactive -> is the account enabled (isActive, below)\\\\nThe port previously drove both from isActive; they are separate again.\"},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isArchived\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy archive flag — the archived list filtered on this, not on isActive.\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"addresses\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"CustomerAddress\",\"relationName\":\"CustomerToCustomerAddress\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orders\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"CustomerToOrder\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"preOrders\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"PreOrder\",\"relationName\":\"CustomerToPreOrder\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"ledgerEntries\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"LedgerEntry\",\"relationName\":\"CustomerToLedgerEntry\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"walletBonuses\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"WalletBonus\",\"relationName\":\"CustomerToWalletBonus\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"comments\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Comment\",\"relationName\":\"CommentToCustomer\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"promotions\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Promotion\",\"relationName\":\"CustomerToPromotion\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"notifications\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"NotificationRecipient\",\"relationName\":\"CustomerToNotificationRecipient\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"activityLogs\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"CustomerActivityLog\",\"relationName\":\"CustomerToCustomerActivityLog\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"otpChallenges\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"CustomerOtp\",\"relationName\":\"CustomerToCustomerOtp\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"favorites\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"CustomerFavorite\",\"relationName\":\"CustomerToCustomerFavorite\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"CustomerFavorite\":{\"dbName\":null,\"fields\":[{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToCustomerFavorite\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"product\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Product\",\"relationName\":\"CustomerFavoriteToProduct\",\"relationFromFields\":[\"productId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":{\"name\":null,\"fields\":[\"customerId\",\"productId\"]},\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"Legacy `fav` (251 rows) — saved products. The target had no model for this,\\\\nso every customer's favourites would have been lost in the migration; the\\\\nowner confirmed on 2026-10-06 that they matter.\\\\n\\\\nLegacy `fav` has two columns and NO primary key. The composite key here\\\\nsupplies the constraint the source lacks (the precheck found 0 duplicate\\\\npairs, but the tool should still SELECT DISTINCT). 14 of the 251 rows point\\\\nat a deleted customer and must be skipped.\\\\n\\\\nLegacy's denormalised `product.count_fav` counter is deliberately NOT\\\\nrecreated as a column — derive it from this table.\"},\"CustomerAddress\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToCustomerAddress\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"cityId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"city\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"City\",\"relationName\":\"CityToCustomerAddress\",\"relationFromFields\":[\"cityId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"addressLine\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isDefault\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Branch\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"address\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy Branch.address / phone — both are columns in the branch grid.\"},{\"name\":\"phone\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy GET branch/active/{id} toggles this.\"},{\"name\":\"cityId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"city\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"City\",\"relationName\":\"BranchToCity\",\"relationFromFields\":[\"cityId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"adminUsers\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AdminUser\",\"relationName\":\"AdminUserToBranch\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"admins\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"AdminToBranch\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orders\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"BranchToOrder\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"allocations\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"BranchAllocation\",\"relationName\":\"BranchToBranchAllocation\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Workshop\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"address\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy Workshop.address / phone — both are columns in the workshop grid.\"},{\"name\":\"phone\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"supervisorId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"The supervisor created alongside the workshop by the legacy Add form.\"},{\"name\":\"supervisor\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"WorkshopSupervisor\",\"relationFromFields\":[\"supervisorId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"preOrders\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"PreOrder\",\"relationName\":\"PreOrderToWorkshop\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Category\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"title\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"type\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":1,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy Category.type — which storefront the category belongs to:\\\\n1 سایت | 2 اپلیکشن موبایل. Drives the \\\"type_str\\\" grid column.\"},{\"name\":\"imageUrl\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy Category.image / icon — the grid renders the image, the storefront the icon.\"},{\"name\":\"iconUrl\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"metaTag\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy meta tag + description, used for SEO on the site categories.\"},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"parentId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"parent\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Category\",\"relationName\":\"CategoryTree\",\"relationFromFields\":[\"parentId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"children\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Category\",\"relationName\":\"CategoryTree\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"products\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Product\",\"relationName\":\"CategoryToProduct\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"promotions\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Promotion\",\"relationName\":\"CategoryToPromotion\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Brand\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"title\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"products\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Product\",\"relationName\":\"BrandToProduct\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"promotions\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Promotion\",\"relationName\":\"BrandToPromotion\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Collection\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"title\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"products\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"CollectionProduct\",\"relationName\":\"CollectionToCollectionProduct\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"Curated product groupings — replaces legacy \\\"Ciny/CinyProduct\\\" (a tagging\\\\nfeature, NOT a gold-price snapshot mechanism, despite the misleading legacy name).\"},\"CollectionProduct\":{\"dbName\":null,\"fields\":[{\"name\":\"collectionId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"collection\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Collection\",\"relationName\":\"CollectionToCollectionProduct\",\"relationFromFields\":[\"collectionId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"product\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Product\",\"relationName\":\"CollectionProductToProduct\",\"relationFromFields\":[\"productId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":{\"name\":null,\"fields\":[\"collectionId\",\"productId\"]},\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Product\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"title\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"categoryId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"category\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Category\",\"relationName\":\"CategoryToProduct\",\"relationFromFields\":[\"categoryId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"brandId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"brand\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Brand\",\"relationName\":\"BrandToProduct\",\"relationFromFields\":[\"brandId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productCode\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy Product.product_code — the human-facing SKU shown in the grid.\"},{\"name\":\"showType\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":3,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy Product.show_type: 1 site, 2 mobile, 3 both.\"},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"tags\",\"kind\":\"scalar\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":[],\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Labels from Setting `__list__tags`, assigned on the product form. The\\\\nstorefront shows them on list cards only (not the product detail page).\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"accountingStockWeight\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Stock of the linked کارساخته as last read from the accounting software\\\\n(D27). Weight for gram-type items, count for count-type ones — whichever\\\\nthe software reports. At zero or below the product is unavailable in the\\\\napp (pre-order variants excepted). Null = not linked or never synced.\"},{\"name\":\"accountingStockCount\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"accountingStockAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"variants\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ProductVariant\",\"relationName\":\"ProductToProductVariant\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"images\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ProductImage\",\"relationName\":\"ProductToProductImage\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"collections\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"CollectionProduct\",\"relationName\":\"CollectionProductToProduct\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"comments\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Comment\",\"relationName\":\"CommentToProduct\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"promotions\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Promotion\",\"relationName\":\"ProductToPromotion\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"allocationItems\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"BranchAllocationItem\",\"relationName\":\"BranchAllocationItemToProduct\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"favoritedBy\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"CustomerFavorite\",\"relationName\":\"CustomerFavoriteToProduct\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ProductImage\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"product\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Product\",\"relationName\":\"ProductToProductImage\",\"relationFromFields\":[\"productId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"url\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sortOrder\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"role\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"ProductImageRole\",\"default\":\"GALLERY\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy had 4 distinct upload slots (تصویر شاخص / تصویر شاخص موبایل /\\\\nگالری تصاویر سایت / گالری تصاویر موبایل) — GALLERY is the default so\\\\nexisting rows and any generic \\\"just attach an image\\\" caller keep working.\"},{\"name\":\"variants\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ProductVariant\",\"relationName\":\"ProductImageToProductVariant\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Variants that display this image. A gallery image may back several\\\\nvariants (one photo, several weights), which is why this is a plain\\\\none-to-many and not a join table.\"}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ProductVariant\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"product\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Product\",\"relationName\":\"ProductToProductVariant\",\"relationFromFields\":[\"productId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"title\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sku\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"rashWeightGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Base/raw weight before making charge (\\\"rash weight\\\").\"},{\"name\":\"defaultWagePercent\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Default making-charge percentage applied on top of rash weight.\"},{\"name\":\"qty\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy ProductVariant.qty — on-hand stock. The cart refuses a variant with\\\\nqty 0 unless it is flagged pre-order, so both fields are required for that\\\\nguard to work (see apps/admin-panel/src/stores/cart.ts).\"},{\"name\":\"isPreOrder\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy is_pre_order: orderable even at zero stock.\"},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"color\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy color enum: 0=سفید, 1=زرد, 2=شکلاتی, 3=رزگلد\"},{\"name\":\"rialWage\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy rial_pay — fixed Rial making charge per variant.\"},{\"name\":\"details\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy details — short description for variant.\"},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy description — full description for variant.\"},{\"name\":\"imageId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"The gallery image shown for this variant, picked from its own product's\\\\nimages — never a re-uploaded copy. onDelete: SetNull because dropping an\\\\nimage must never cascade into the variant: OrderItem rows reference\\\\nvariants, so losing one would break order history.\"},{\"name\":\"image\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ProductImage\",\"relationName\":\"ProductImageToProductVariant\",\"relationFromFields\":[\"imageId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"SetNull\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orderItems\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"OrderItem\",\"relationName\":\"OrderItemToProductVariant\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Order\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orderNumber\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToOrder\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branchId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branch\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Branch\",\"relationName\":\"BranchToOrder\",\"relationFromFields\":[\"branchId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"channel\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"OrderChannel\",\"default\":\"RETAIL\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Which sales channel placed this order — see OrderChannel.\"},{\"name\":\"status\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"OrderStatus\",\"default\":\"PLACED\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"revisionStatus\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"OrderRevisionStatus\",\"default\":\"NONE\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Pending admin edit awaiting customer confirm (or admin force/discard).\"},{\"name\":\"totalGoldWeightGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Total gold weight incl. wage across all items (\\\"allGram\\\" / order.w).\"},{\"name\":\"wageWeightGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Pure making-charge weight component (totalGoldWeightGrams minus raw weight sum).\"},{\"name\":\"flatRialCharge\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Flat Rial charge independent of gold price (e.g. stones) — legacy rial_input.\"},{\"name\":\"isSuspendedOverCreditLimit\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"deliveredAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"salesAgentId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"The sales expert this order is credited to, fixed when it is placed:\\\\nthe customer's referring expert AT THAT MOMENT. Legacy `orders.reagent_id`,\\\\nset once at creation (ApiMobileController.php:601) and never moved, so a\\\\ncustomer changing expert later does not move past sales or commission\\\\n(owner ruling 2026-10-08). «میزان فروش» counts from here, never from the\\\\ncustomer's current referrer.\"},{\"name\":\"salesAgent\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AdminUser\",\"relationName\":\"OrderSalesAgent\",\"relationFromFields\":[\"salesAgentId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"SetNull\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"referrerCustomerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"History only: a legacy order whose `reagent_id` named a customer who is\\\\nnot a sales expert (one such customer, 17 orders in 2022). Legacy counted\\\\nthose orders in that customer's own «میزان فروش»; this keeps that figure\\\\nexact. Never set for a new order.\"},{\"name\":\"referrerCustomer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"OrderReferrerCustomer\",\"relationFromFields\":[\"referrerCustomerId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"SetNull\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"items\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"OrderItem\",\"relationName\":\"OrderToOrderItem\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"statusEvents\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"OrderStatusEvent\",\"relationName\":\"OrderToOrderStatusEvent\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"ledgerEntries\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"LedgerEntry\",\"relationName\":\"LedgerEntryToOrder\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"revisions\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"OrderRevision\",\"relationName\":\"OrderToOrderRevision\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"convertedFromPreOrder\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"PreOrder\",\"relationName\":\"OrderToPreOrder\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"OrderRevision\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orderId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"order\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"OrderToOrderRevision\",\"relationFromFields\":[\"orderId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"items\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Json\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Proposed lines: [{ productVariantId, quantity, rashWeightGramsSnapshot,\\\\nwagePercentSnapshot, discountPercentSnapshot, computedWeightGrams, flatRialCharge }]\"},{\"name\":\"totalGoldWeightGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"wageWeightGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"flatRialCharge\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"proposedByAdminId\",\"dbName\":\"proposedByAdminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"note\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerDecision\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"null | ACCEPTED | REJECTED — reject leaves AWAITING_CUSTOMER for admin decision.\"},{\"name\":\"customerDecidedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"appliedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"discardedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"Proposed line-item edit for an Order. Live until applied or discarded.\\\\nWhile pending, Order.revisionStatus = AWAITING_CUSTOMER and charged figures\\\\nstay on the current Order until the customer confirms (or admin force-applies).\"},\"OrderItem\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orderId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"order\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"OrderToOrderItem\",\"relationFromFields\":[\"orderId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productVariantId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productVariant\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ProductVariant\",\"relationName\":\"OrderItemToProductVariant\",\"relationFromFields\":[\"productVariantId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"quantity\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"rashWeightGramsSnapshot\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"wagePercentSnapshot\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"discountPercentSnapshot\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"computedWeightGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"computed: rash*(1 + (wagePercent-discount)/100)\"},{\"name\":\"flatRialCharge\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"OrderStatusEvent\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orderId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"order\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"OrderToOrderStatusEvent\",\"relationFromFields\":[\"orderId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"fromStatus\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"OrderStatus\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"toStatus\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"OrderStatus\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"note\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"actorAdminId\",\"dbName\":\"actorAdminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"actorAdmin\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"AdminToOrderStatusEvent\",\"relationFromFields\":[\"actorAdminId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"PreOrder\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToPreOrder\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"cityId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"city\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"City\",\"relationName\":\"CityToPreOrder\",\"relationFromFields\":[\"cityId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"workshopId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"workshop\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Workshop\",\"relationName\":\"PreOrderToWorkshop\",\"relationFromFields\":[\"workshopId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"status\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"PreOrderStatus\",\"default\":\"PLACED\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"designImageUrl\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"colorName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sizeSpec\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"stoneColor\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"minaColor\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"quantity\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":1,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy custom_orders.sum — how many pieces the customer asked for. The first\\\\nschema had no field for it and the admin grid showed a hard-coded 1.\"},{\"name\":\"estimatedWeightGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"estimatedPriceRial\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"convertedOrderId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":true,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Once priced, an admin converts this into a real (debt-bearing) Order.\"},{\"name\":\"convertedOrder\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"OrderToPreOrder\",\"relationFromFields\":[\"convertedOrderId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"statusEvents\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"PreOrderStatusEvent\",\"relationName\":\"PreOrderToPreOrderStatusEvent\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"PreOrderStatusEvent\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"preOrderId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"preOrder\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"PreOrder\",\"relationName\":\"PreOrderToPreOrderStatusEvent\",\"relationFromFields\":[\"preOrderId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"changes\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Json\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Field-level diff, e.g. {\\\"status\\\": {\\\"old\\\": \\\"PLACED\\\", \\\"new\\\": \\\"ADMIN_APPROVED\\\"}}\"},{\"name\":\"actorAdminId\",\"dbName\":\"actorAdminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"actorAdmin\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"AdminToPreOrderStatusEvent\",\"relationFromFields\":[\"actorAdminId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"ipAddress\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"LedgerEntry\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToLedgerEntry\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"currency\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"LedgerCurrency\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"direction\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"LedgerDirection\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sourceType\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"LedgerSourceType\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"amount\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Always positive; direction determines the sign applied to the customer balance.\"},{\"name\":\"karatPerMille\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Purity of the physical instrument, for REPAYMENT_MELTED_GOLD (e.g. 750, 916).\"},{\"name\":\"pricePerGramRialAtEntry\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Gold price/gram at conversion time, for REPAYMENT_CASH.\"},{\"name\":\"orderId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"order\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"LedgerEntryToOrder\",\"relationFromFields\":[\"orderId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"confirmed\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Pending entries don't count toward the cached customer balance until confirmed.\"},{\"name\":\"confirmedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"postedByAdminId\",\"dbName\":\"postedByAdminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"postedByAdmin\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"AdminToLedgerEntry\",\"relationFromFields\":[\"postedByAdminId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"labName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Instrument metadata from the legacy \\\"cash\\\" document form. Which fields are\\\\nfilled depends on sourceType: a melted-gold receipt carries lab/hallmark and\\\\nthe pre-normalization weight, a cheque carries the account and bank, and a\\\\ntransfer carries its destination.\\\\nLegacy columns: lab, ang, account_name, bank_name, to, original_value, recive_date.\"},{\"name\":\"hallmark\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"accountName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"bankName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"transferTo\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"originalValue\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Weight as handed over, BEFORE karat normalization (legacy original_value).\"},{\"name\":\"priceRial\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Rial amount for cash/cheque documents (legacy price).\"},{\"name\":\"receivedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"note\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"GoldPriceQuote\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"karatPerMille\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"pricePerGramRial\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"source\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"quotedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"Replaces legacy WebServiceGold / ConfigStatic.gold_price — timestamped price feed.\"},\"WalletBonus\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToWalletBonus\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orderId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"goldGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"grantedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"consumedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"Time-limited gold cashback bonus — replaces the legacy Rooyesh\\\\Wallet gold credit.\"},\"UserType\":{\"dbName\":\"user_type\",\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy `permission.ut` / `users.ut` — an integer, kept as the PK so seeded\\\\nrows keep their legacy identity rather than getting new cuids.\"},{\"name\":\"title\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"permissions\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Permission\",\"relationName\":\"PermissionToUserType\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"adminUsers\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AdminUser\",\"relationName\":\"AdminUserToUserType\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"admins\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"AdminToUserType\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Permission\":{\"dbName\":\"permission\",\"fields\":[{\"name\":\"rid\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Dotted permission id, e.g. \\\"order.list\\\", \\\"persons.list.client.omde\\\".\"},{\"name\":\"userTypeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"userType\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"UserType\",\"relationName\":\"PermissionToUserType\",\"relationFromFields\":[\"userTypeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":{\"name\":null,\"fields\":[\"rid\",\"userTypeId\"]},\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Comment\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"product\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Product\",\"relationName\":\"CommentToProduct\",\"relationFromFields\":[\"productId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CommentToCustomer\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"body\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"status\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"CommentStatus\",\"default\":\"PENDING\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"replyToId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy `reply_to`: a staff reply threads under the comment it answers.\"},{\"name\":\"replyTo\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Comment\",\"relationName\":\"CommentReplies\",\"relationFromFields\":[\"replyToId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"replies\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Comment\",\"relationName\":\"CommentReplies\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":true}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Setting\":{\"dbName\":null,\"fields\":[{\"name\":\"key\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"value\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Json\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":true}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"AccountingLink\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"provider\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"entityType\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AccountingEntityType\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"entityId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"externalCode\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"The record's code in the accounting software (Tahesab Moshtari_Code /\\\\nZarrin idHesab; for products the Zarrin idKar or the Tahesab Name_Kar).\"},{\"name\":\"externalName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"origin\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"How the link came to be: LINKED (matched by mobile/name), IMPORTED (app\\\\nrow created from the accounting record), PUSHED (accounting record created\\\\nfrom the app row) or MANUAL (an admin typed the code).\"},{\"name\":\"snapshot\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Json\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"The record as last read, for display only.\"},{\"name\":\"syncedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[[\"provider\",\"entityType\",\"entityId\"],[\"provider\",\"entityType\",\"externalCode\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"provider\",\"entityType\",\"entityId\"]},{\"name\":null,\"fields\":[\"provider\",\"entityType\",\"externalCode\"]}],\"isGenerated\":false,\"documentation\":\"One app row ↔ one record in the accounting software (customer account or\\\\nکارساخته).\"},\"AccountingOutbox\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"provider\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"kind\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AccountingOutboxKind\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"entityId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"status\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"AccountingOutboxStatus\",\"default\":\"PENDING\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"attempts\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"nextAttemptAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"lastError\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"externalRef\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"What the accounting software returned as the document/record id.\"},{\"name\":\"progress\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Json\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Per-step progress of multi-call jobs (a Zarrin document is one call per\\\\nline), so a failure resumes where it stopped.\"},{\"name\":\"lastRequest\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Json\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Last request/response, for the log screen. Never contains the token.\"},{\"name\":\"lastResponse\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Json\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sentAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"resolvedById\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":true}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"Work to push to the accounting software. Written in the SAME transaction as\\\\nthe change that causes it, so an outage of the accounting software never\\\\nloses an event and never blocks the app.\"},\"AccountingIssue\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"provider\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"kind\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"externalCode\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"entityId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"message\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"data\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Json\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"resolvedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[[\"provider\",\"kind\",\"externalCode\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"provider\",\"kind\",\"externalCode\"]}],\"isGenerated\":false,\"documentation\":\"Something a pull found that needs a human: an account with no mobile, two\\\\naccounts sharing one mobile, a کارساخته group with no category mapping.\"},\"Promotion\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"title\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"scope\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"PromotionScope\",\"default\":\"PRODUCT\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"usage\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"PromotionUsage\",\"default\":\"ONCE\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"discountPercent\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Percentage off, 0-100 (legacy discount_percent).\"},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"platform\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":3,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Which storefront it shows on, mirroring Product.showType (legacy platform).\"},{\"name\":\"startsAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"endsAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Exactly one of these is populated, per `scope`.\"},{\"name\":\"product\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Product\",\"relationName\":\"ProductToPromotion\",\"relationFromFields\":[\"productId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"categoryId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"category\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Category\",\"relationName\":\"CategoryToPromotion\",\"relationFromFields\":[\"categoryId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToPromotion\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"brandId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"brand\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Brand\",\"relationName\":\"BrandToPromotion\",\"relationFromFields\":[\"brandId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":true}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"PromotionExclusion\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"type\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"itemId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[[\"type\",\"itemId\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"type\",\"itemId\"]}],\"isGenerated\":false,\"documentation\":\"Legacy \\\"ignore\\\" table (views/offersIgnore) — specific products, categories,\\\\ncustomers or brands excluded from the automatic discount engine.\\\\nLegacy posts { type, item_id[] }: \\\"type\\\" reuses the promotion scope codes\\\\n(1 محصولات | 2 دسته بندی | 3 مشتری | 4 برند) and \\\"itemId\\\" is the excluded row.\"},\"BranchAllocation\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branchId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"branch\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Branch\",\"relationName\":\"BranchToBranchAllocation\",\"relationFromFields\":[\"branchId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"allocatorAdminId\",\"dbName\":\"allocatorAdminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Legacy `allocator_user` — the admin who filed the allocation.\"},{\"name\":\"allocatorAdmin\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"AllocationAuthor\",\"relationFromFields\":[\"allocatorAdminId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"note\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"items\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"BranchAllocationItem\",\"relationName\":\"BranchAllocationToBranchAllocationItem\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"BranchAllocationItem\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"allocationId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"allocation\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"BranchAllocation\",\"relationName\":\"BranchAllocationToBranchAllocationItem\",\"relationFromFields\":[\"allocationId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"productId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"product\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Product\",\"relationName\":\"BranchAllocationItemToProduct\",\"relationFromFields\":[\"productId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"weightGrams\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Weight snapshot at allocation time, so later catalog edits do not rewrite history.\"}],\"primaryKey\":null,\"uniqueFields\":[[\"allocationId\",\"productId\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"allocationId\",\"productId\"]}],\"isGenerated\":false},\"SmsMessage\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"audience\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"MessageAudience\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"recipients\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Comma-separated recipients for the SINGLE/MULTIPLE audiences.\"},{\"name\":\"body\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sentCount\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"How many numbers the send actually resolved to.\"},{\"name\":\"sentByAdminId\",\"dbName\":\"sentByAdminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sentByAdmin\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"SmsAuthor\",\"relationFromFields\":[\"sentByAdminId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Notification\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"title\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"body\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"audience\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"MessageAudience\",\"default\":\"ALL_CUSTOMERS\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sentByAdminId\",\"dbName\":\"sentByAdminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sentByAdmin\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"NotificationAuthor\",\"relationFromFields\":[\"sentByAdminId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"recipients\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"NotificationRecipient\",\"relationName\":\"NotificationToNotificationRecipient\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"NotificationRecipient\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"notificationId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"notification\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Notification\",\"relationName\":\"NotificationToNotificationRecipient\",\"relationFromFields\":[\"notificationId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToNotificationRecipient\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"readAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[[\"notificationId\",\"customerId\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"notificationId\",\"customerId\"]}],\"isGenerated\":false,\"documentation\":\"Per-customer delivery + read state — legacy `GET notify/read/{id}`.\"},\"NewsletterSubscriber\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"email\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"mobile\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[[\"email\"],[\"mobile\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"email\"]},{\"name\":null,\"fields\":[\"mobile\"]}],\"isGenerated\":false,\"documentation\":\"Legacy views/newsletters — the mailing-list signups collected by the site.\"},\"CustomerActivityLog\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToCustomerActivityLog\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"action\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Free-form action key, e.g. 'login', 'order.placed', 'profile.updated'.\"},{\"name\":\"detail\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"Legacy views/statics — the customer activity log the \\\"آمار\\\" screen reads\\\\n(`log/list/customer`, `log/ago/{customerId}`).\"},\"UploadedFile\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"url\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Public URL the stored file is served from.\"},{\"name\":\"originalName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"mimeType\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sizeBytes\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"purpose\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Free-form tag for what the file belongs to, e.g. 'product', 'category',\\\\n'customer.nationalId'. Kept loose so a new form needs no schema change.\"},{\"name\":\"uploadedByAdminId\",\"dbName\":\"uploadedByAdminUserId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"uploadedByAdmin\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Admin\",\"relationName\":\"FileUploader\",\"relationFromFields\":[\"uploadedByAdminId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerAvatars\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerAvatar\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"adminUserAvatars\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AdminUser\",\"relationName\":\"AdminUserAvatar\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"CustomerOtp\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"cuid\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"mobile\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Normalised to English digits before storing, as the reference does with\\\\nUtility::faTOen() on both send and verify.\"},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToCustomerOtp\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"codeHash\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"bcrypt hash of the 4-digit code. Never the code itself.\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"attempts\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Failed verify attempts against THIS challenge.\"},{\"name\":\"consumedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Set when the code is accepted, so one challenge cannot be reused.\"},{\"name\":\"requestIp\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false,\"documentation\":\"Kept for the per-IP send throttle.\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"One OTP login challenge for a customer.\\\\n\\\\nPorts henza_server's flow (ApiMobileController.php:39-78), where userAuth\\\\ngenerated rand(1000,9999), stored it on the customer row as `send_password`\\\\nand sent it by SMS, and userVerfiy compared the submitted code against it\\\\n(mismatch -> HTTP 422).\\\\n\\\\nThree deliberate improvements over the reference, approved by the user\\\\n(docs/parity/DECISIONS.md D6 and T1):\\\\n1. the code is stored as a bcrypt hash, never in plain text — the\\\\nreference kept it readable in a customer column;\\\\n2. it expires (`expiresAt`) — the reference's code stayed valid forever;\\\\n3. attempts are counted and the challenge locks out — the reference had\\\\nno limit at all.\\\\nThe parity behaviour itself is the code comparison and the rejection.\"}},\"enums\":{\"AdminRole\":{\"values\":[{\"name\":\"SUPER_ADMIN\",\"dbName\":null},{\"name\":\"SYSTEM_APPROVER\",\"dbName\":null},{\"name\":\"SALES_EXPERT\",\"dbName\":null},{\"name\":\"WORKSHOP_SUPERVISOR\",\"dbName\":null},{\"name\":\"ACCOUNTANT\",\"dbName\":null}],\"dbName\":null},\"CustomerKind\":{\"values\":[{\"name\":\"SALES_AGENT\",\"dbName\":null},{\"name\":\"APP_SHOPKEEPER\",\"dbName\":null},{\"name\":\"WALK_IN_SHOPKEEPER\",\"dbName\":null},{\"name\":\"BANKER\",\"dbName\":null},{\"name\":\"WORKSHOP_SUPERVISOR\",\"dbName\":null},{\"name\":\"RETAIL\",\"dbName\":null}],\"dbName\":null,\"documentation\":\"Legacy Customer.type — what kind of wholesale customer this is. Values and\\\\nlabels taken verbatim from bulkCustomer.vue's userTypes list.\\\\n\\\\nSALES_AGENT is a LEGACY value only: legacy stored a sales agent as a\\\\nCustomer row with type=1, but the redesigned system models a sales agent\\\\nas an AdminUser (role SALES_EXPERT) instead — see admin-users.service.ts\\\\nand admin-customers.service.ts's listReagents()/create(). No Customer row\\\\nshould be created with kind SALES_AGENT going forward; the value is kept\\\\nonly so legacyTypeToKind()/kindToLegacyType() stay total functions and any\\\\nalready-migrated data keeps a readable label.\\\\n\\\\nRETAIL marks a \\\"تک\\\" (single/retail) customer — legacy kept these in an\\\\nentirely separate table (SingleCustomer/`login`) that could never contain\\\\na wholesale/agent/shopkeeper/banker row. The redesigned schema folded both\\\\ninto one Customer model, so this value is what listSingle() now filters on\\\\nto reproduce that same separation.\"},\"VerificationStep\":{\"values\":[{\"name\":\"UNVERIFIED\",\"dbName\":null},{\"name\":\"STEP_ONE_SUBMITTED\",\"dbName\":null},{\"name\":\"STEP_TWO_SUBMITTED\",\"dbName\":null},{\"name\":\"VERIFIED\",\"dbName\":null},{\"name\":\"REJECTED\",\"dbName\":null,\"documentation\":\"Legacy had THREE states per step, not two\\\\n(MajorCustomerController.php:106-135): 1 = awaiting, 2 = approved,\\\\n3 = REJECTED. Mapping rejected customers to UNVERIFIED would put closed\\\\ncases back in the review queue, so the owner ruled it out (2026-10-07).\\\\n14 legacy rows land here; see Customer.verificationRejectionReason.\"}],\"dbName\":null},\"OrderChannel\":{\"values\":[{\"name\":\"RETAIL\",\"dbName\":null},{\"name\":\"WHOLESALE\",\"dbName\":null}],\"dbName\":null,\"documentation\":\"Legacy kept retail and wholesale orders in two SEPARATE tables\\\\n(orders_orders vs orders). The redesigned schema has one Order model, so the\\\\ndistinction lives here instead.\"},\"OrderStatus\":{\"values\":[{\"name\":\"SUSPENDED\",\"dbName\":null},{\"name\":\"PLACED\",\"dbName\":null},{\"name\":\"ADMIN_APPROVED\",\"dbName\":null},{\"name\":\"SOURCING\",\"dbName\":null},{\"name\":\"PREPARING\",\"dbName\":null},{\"name\":\"DELIVERED_TO_AGENT\",\"dbName\":null},{\"name\":\"DELIVERED_TO_CUSTOMER\",\"dbName\":null},{\"name\":\"CANCELLED\",\"dbName\":null}],\"dbName\":null},\"PreOrderStatus\":{\"values\":[{\"name\":\"PLACED\",\"dbName\":null},{\"name\":\"ADMIN_APPROVED\",\"dbName\":null},{\"name\":\"WORKSHOP_APPROVED\",\"dbName\":null},{\"name\":\"READY_TO_SHIP\",\"dbName\":null},{\"name\":\"DELIVERED\",\"dbName\":null},{\"name\":\"CANCELLED\",\"dbName\":null}],\"dbName\":null},\"LedgerCurrency\":{\"values\":[{\"name\":\"GOLD_GRAM\",\"dbName\":null},{\"name\":\"RIAL\",\"dbName\":null}],\"dbName\":null},\"LedgerDirection\":{\"values\":[{\"name\":\"DEBIT\",\"dbName\":null},{\"name\":\"CREDIT\",\"dbName\":null}],\"dbName\":null},\"LedgerSourceType\":{\"values\":[{\"name\":\"ORDER_STOCK\",\"dbName\":null},{\"name\":\"ORDER_PRE_ORDER\",\"dbName\":null},{\"name\":\"REPAYMENT_MELTED_GOLD\",\"dbName\":null},{\"name\":\"REPAYMENT_TRANSFER\",\"dbName\":null},{\"name\":\"REPAYMENT_CHEQUE\",\"dbName\":null},{\"name\":\"REPAYMENT_CASH\",\"dbName\":null},{\"name\":\"WALLET_BONUS\",\"dbName\":null},{\"name\":\"ADJUSTMENT\",\"dbName\":null}],\"dbName\":null},\"ProductImageRole\":{\"values\":[{\"name\":\"FEATURED\",\"dbName\":null},{\"name\":\"FEATURED_MOBILE\",\"dbName\":null},{\"name\":\"GALLERY\",\"dbName\":null},{\"name\":\"GALLERY_MOBILE\",\"dbName\":null}],\"dbName\":null},\"OrderRevisionStatus\":{\"values\":[{\"name\":\"NONE\",\"dbName\":null},{\"name\":\"AWAITING_CUSTOMER\",\"dbName\":null}],\"dbName\":null,\"documentation\":\"Customer-confirm state for an admin-proposed order edit (not a pipeline status).\"},\"CommentStatus\":{\"values\":[{\"name\":\"PENDING\",\"dbName\":null},{\"name\":\"APPROVED\",\"dbName\":null},{\"name\":\"REJECTED\",\"dbName\":null}],\"dbName\":null},\"AccountingEntityType\":{\"values\":[{\"name\":\"CUSTOMER\",\"dbName\":null},{\"name\":\"PRODUCT\",\"dbName\":null}],\"dbName\":null},\"AccountingOutboxKind\":{\"values\":[{\"name\":\"CUSTOMER_PUSH\",\"dbName\":null},{\"name\":\"PRODUCT_PUSH\",\"dbName\":null},{\"name\":\"ORDER_DOCUMENT\",\"dbName\":null},{\"name\":\"ORDER_DOCUMENT_DELETE\",\"dbName\":null}],\"dbName\":null},\"AccountingOutboxStatus\":{\"values\":[{\"name\":\"PENDING\",\"dbName\":null},{\"name\":\"SENDING\",\"dbName\":null,\"documentation\":\"A call was in flight. Found at startup, it means the process died mid-call\\\\nand the outcome is unknown — see AccountingOutboxWorker.\"},{\"name\":\"SENT\",\"dbName\":null},{\"name\":\"FAILED\",\"dbName\":null},{\"name\":\"NEEDS_REVIEW\",\"dbName\":null,\"documentation\":\"Unsafe to retry automatically (e.g. a Zarrin call timed out: Zarrin has no\\\\nidempotency key, so a blind retry could post the document twice).\"},{\"name\":\"RESOLVED\",\"dbName\":null,\"documentation\":\"Closed by an admin from the log screen.\"}],\"dbName\":null},\"PromotionScope\":{\"values\":[{\"name\":\"PRODUCT\",\"dbName\":null},{\"name\":\"CATEGORY\",\"dbName\":null},{\"name\":\"CUSTOMER\",\"dbName\":null},{\"name\":\"BRAND\",\"dbName\":null}],\"dbName\":null,\"documentation\":\"Legacy Promotion.type — what the discount is scoped to.\"},\"PromotionUsage\":{\"values\":[{\"name\":\"ONCE\",\"dbName\":null},{\"name\":\"UNTIL_END_DATE\",\"dbName\":null}],\"dbName\":null,\"documentation\":\"Legacy Promotion.use_only — how often a customer may redeem it.\"},\"MessageAudience\":{\"values\":[{\"name\":\"SINGLE_NUMBER\",\"dbName\":null},{\"name\":\"MULTIPLE_NUMBERS\",\"dbName\":null},{\"name\":\"ALL_CUSTOMERS\",\"dbName\":null},{\"name\":\"WHOLESALE_CUSTOMERS\",\"dbName\":null},{\"name\":\"RETAIL_CUSTOMERS\",\"dbName\":null},{\"name\":\"SALES_AGENTS\",\"dbName\":null}],\"dbName\":null,\"documentation\":\"Who an SMS or notification was aimed at. Legacy's sms/create offered these\\\\naudiences, each gated by its own rid (sms.create.all, .omde, .single, ...).\"}},\"types\":{}}") defineDmmfProperty(exports.Prisma, config.runtimeDataModel) config.engineWasm = undefined diff --git a/apps/api/release/vendor/.prisma/client/package.json b/apps/api/release/vendor/.prisma/client/package.json index 99db244..3e13b9d 100644 --- a/apps/api/release/vendor/.prisma/client/package.json +++ b/apps/api/release/vendor/.prisma/client/package.json @@ -1,5 +1,5 @@ { - "name": "prisma-client-886e29037ba1ecb825956ac60d24f0b8a065941198844408c48cf073ba2e9962", + "name": "prisma-client-11f6fd344cfb322a063b15fd5c9f822bbe48c47057861df657de4f13642d10a4", "main": "index.js", "types": "index.d.ts", "browser": "index-browser.js", diff --git a/apps/api/release/vendor/.prisma/client/query_engine-windows.dll.node.tmp1388 b/apps/api/release/vendor/.prisma/client/query_engine-windows.dll.node.tmp1388 new file mode 100644 index 0000000..d46657b Binary files /dev/null and b/apps/api/release/vendor/.prisma/client/query_engine-windows.dll.node.tmp1388 differ diff --git a/apps/api/release/vendor/.prisma/client/query_engine-windows.dll.node.tmp19856 b/apps/api/release/vendor/.prisma/client/query_engine-windows.dll.node.tmp19856 new file mode 100644 index 0000000..d46657b Binary files /dev/null and b/apps/api/release/vendor/.prisma/client/query_engine-windows.dll.node.tmp19856 differ diff --git a/apps/api/release/vendor/.prisma/client/query_engine-windows.dll.node.tmp20952 b/apps/api/release/vendor/.prisma/client/query_engine-windows.dll.node.tmp20952 new file mode 100644 index 0000000..d46657b Binary files /dev/null and b/apps/api/release/vendor/.prisma/client/query_engine-windows.dll.node.tmp20952 differ diff --git a/apps/api/release/vendor/.prisma/client/schema.prisma b/apps/api/release/vendor/.prisma/client/schema.prisma index dd080d7..0ad4475 100644 --- a/apps/api/release/vendor/.prisma/client/schema.prisma +++ b/apps/api/release/vendor/.prisma/client/schema.prisma @@ -947,6 +947,9 @@ model PreOrder { sizeSpec String? stoneColor String? minaColor String? + /// Legacy custom_orders.sum — how many pieces the customer asked for. The first + /// schema had no field for it and the admin grid showed a hard-coded 1. + quantity Int @default(1) estimatedWeightGrams Decimal? @db.Decimal(14, 4) estimatedPriceRial Decimal? @db.Decimal(20, 2) description String? diff --git a/apps/api/release/vendor/.prisma/client/wasm.js b/apps/api/release/vendor/.prisma/client/wasm.js index 1e6f40d..156f661 100644 --- a/apps/api/release/vendor/.prisma/client/wasm.js +++ b/apps/api/release/vendor/.prisma/client/wasm.js @@ -417,6 +417,7 @@ exports.Prisma.PreOrderScalarFieldEnum = { sizeSpec: 'sizeSpec', stoneColor: 'stoneColor', minaColor: 'minaColor', + quantity: 'quantity', estimatedWeightGrams: 'estimatedWeightGrams', estimatedPriceRial: 'estimatedPriceRial', description: 'description', diff --git a/apps/user-app/dist/assets/AppPullRefresh-CsuQ3Y8x.js b/apps/user-app/dist/assets/AppPullRefresh-RDVLXVM_.js similarity index 95% rename from apps/user-app/dist/assets/AppPullRefresh-CsuQ3Y8x.js rename to apps/user-app/dist/assets/AppPullRefresh-RDVLXVM_.js index 13bb75b..ba4b8b6 100644 --- a/apps/user-app/dist/assets/AppPullRefresh-CsuQ3Y8x.js +++ b/apps/user-app/dist/assets/AppPullRefresh-RDVLXVM_.js @@ -1 +1 @@ -import{be as C,d as L,bf as U,bg as G,w as F,bh as j,x as h,k as x,U as z,bi as Y,bj as q,$ as J,bk as H,bl as O,bm as X,bn as K,f as I,O as Q,g as o,n as P,i as M,L as W,q as R,B as Z,aV as ee,J as b,j as f,e as E,S as te,_ as se}from"./index-BFOyCNFT.js";const[ae,S,le]=C("pull-refresh"),N=50,ne=["pulling","loosing","success"],oe={disabled:Boolean,modelValue:Boolean,headHeight:H(N),successText:String,pullingText:String,loosingText:String,loadingText:String,pullDistance:U,successDuration:H(500),animationDuration:H(300)};var ue=L({name:ae,props:oe,emits:["change","refresh","update:modelValue"],setup(s,{emit:v,slots:i}){let d;const m=x(),g=x(),T=G(m),t=z({status:"normal",distance:0,duration:0}),p=X(),r=()=>{if(s.headHeight!==N)return{height:`${s.headHeight}px`}},c=()=>t.status!=="loading"&&t.status!=="success"&&!s.disabled,D=e=>{const l=+(s.pullDistance||s.headHeight);return e>l&&(e{const _=+(s.pullDistance||s.headHeight);t.distance=e,l?t.status="loading":e===0?t.status="normal":e<_?t.status="pulling":t.status="loosing",v("change",{status:t.status,distance:e})},y=()=>{const{status:e}=t;return e==="normal"?"":s[`${e}Text`]||le(e)},k=()=>{const{status:e,distance:l}=t;if(i[e])return i[e]({distance:l});const _=[];return ne.includes(e)&&_.push(h("div",{class:S("text")},[y()])),e==="loading"&&_.push(h(Y,{class:S("loading")},{default:y})),_},V=()=>{t.status="success",setTimeout(()=>{u(0)},+s.successDuration)},a=e=>{d=O(T.value)===0,d&&(t.duration=0,p.start(e))},n=e=>{c()&&a(e)},$=e=>{if(c()){d||a(e);const{deltaY:l}=p;p.move(e),d&&l.value>=0&&p.isVertical()&&(q(e),u(D(l.value)))}},A=()=>{d&&p.deltaY.value&&c()&&(t.duration=+s.animationDuration,t.status==="loosing"?(u(+s.headHeight,!0),v("update:modelValue",!0),J(()=>v("refresh"))):u(0))};return F(()=>s.modelValue,e=>{t.duration=+s.animationDuration,e?u(+s.headHeight,!0):i.success||s.successText?V():u(0,!1)}),j("touchmove",$,{target:g}),()=>{var e;const l={transitionDuration:`${t.duration}ms`,transform:t.distance?`translate3d(0,${t.distance}px, 0)`:""};return h("div",{ref:m,class:S()},[h("div",{ref:g,class:S("track"),style:l,onTouchstartPassive:n,onTouchend:A,onTouchcancel:A},[h("div",{class:S("head"),style:r()},[k()]),(e=i.default)==null?void 0:e.call(i)])])}}});const ie=K(ue),re={class:"app-ptr"},ce={class:"app-ptr__mark"},de=["alt"],pe=100,w=168,B=54,fe=L({__name:"AppPullRefresh",props:{modelValue:{type:Boolean},disabled:{type:Boolean,default:!1}},emits:["update:modelValue","refresh"],setup(s,{emit:v}){const i=2*Math.PI*B,d=s,m=v,g=x(0),T=x("normal");function t(a){T.value=a.status,g.value=a.distance}function p(a){m("update:modelValue",a),a||(g.value=0,T.value="normal")}const r=f(()=>T.value==="loading"||d.modelValue),c=f(()=>r.value?1:Math.min(g.value/w,1)),D=f(()=>{if(r.value)return 1;const a=c.value;return Math.pow(a,1.55)}),u=f(()=>c.value>.02||r.value),y=f(()=>{const a=c.value;return{opacity:u.value?Math.min(.18+a*.82,1):0,pointerEvents:r.value?"auto":"none"}}),k=f(()=>{const a=c.value;return{transform:`scale(${.78+a*.22})`,opacity:Math.min(.45+a*.55,1)}}),V=f(()=>{const a=D.value;return{strokeDasharray:`${i}`,strokeDashoffset:`${i*(1-a)}`}});return(a,n)=>(E(),I("div",re,[(E(),Q(ee,{to:"body"},[o("div",{class:M(["app-ptr__overlay",{"is-visible":u.value,"is-loading":r.value}]),"aria-hidden":"true",style:P(y.value)},[o("div",{class:"app-ptr__stage",style:P(k.value)},[o("div",ce,[(E(),I("svg",{class:M(["app-ptr__ring keep-motion",{"is-spinning":r.value}]),viewBox:"0 0 120 120","aria-hidden":"true"},[o("circle",{class:"app-ptr__ringTrack",cx:"60",cy:"60",r:B}),o("circle",{class:"app-ptr__ringFill",cx:"60",cy:"60",r:B,style:P(V.value)},null,4)],2)),o("img",{src:W,alt:R(Z).name,class:"app-ptr__logo",draggable:"false"},null,8,de)])],4)],6)])),h(R(ie),{class:"app-ptr__vant","model-value":s.modelValue,disabled:s.disabled,"head-height":pe,"pull-distance":w,"success-duration":0,"onUpdate:modelValue":p,onRefresh:n[0]||(n[0]=$=>m("refresh")),onChange:t},{pulling:b(()=>[...n[1]||(n[1]=[o("span",null,null,-1)])]),loosing:b(()=>[...n[2]||(n[2]=[o("span",null,null,-1)])]),loading:b(()=>[...n[3]||(n[3]=[o("span",null,null,-1)])]),success:b(()=>[...n[4]||(n[4]=[o("span",null,null,-1)])]),default:b(()=>[te(a.$slots,"default",{},void 0,!0)]),_:3},8,["model-value","disabled"])]))}}),he=se(fe,[["__scopeId","data-v-1fbe4644"]]);export{he as A}; +import{bf as C,d as L,bg as U,bh as G,w as F,bi as j,x as h,k as x,U as z,bj as Y,bk as q,$ as J,bl as H,bm as O,bn as X,bo as K,f as I,O as Q,g as o,n as P,i as M,L as W,q as R,B as Z,aV as ee,J as b,j as f,e as E,S as te,_ as se}from"./index-B-RmZRr2.js";const[ae,S,le]=C("pull-refresh"),N=50,ne=["pulling","loosing","success"],oe={disabled:Boolean,modelValue:Boolean,headHeight:H(N),successText:String,pullingText:String,loosingText:String,loadingText:String,pullDistance:U,successDuration:H(500),animationDuration:H(300)};var ue=L({name:ae,props:oe,emits:["change","refresh","update:modelValue"],setup(s,{emit:v,slots:i}){let d;const m=x(),g=x(),T=G(m),t=z({status:"normal",distance:0,duration:0}),p=X(),r=()=>{if(s.headHeight!==N)return{height:`${s.headHeight}px`}},c=()=>t.status!=="loading"&&t.status!=="success"&&!s.disabled,D=e=>{const l=+(s.pullDistance||s.headHeight);return e>l&&(e{const _=+(s.pullDistance||s.headHeight);t.distance=e,l?t.status="loading":e===0?t.status="normal":e<_?t.status="pulling":t.status="loosing",v("change",{status:t.status,distance:e})},y=()=>{const{status:e}=t;return e==="normal"?"":s[`${e}Text`]||le(e)},k=()=>{const{status:e,distance:l}=t;if(i[e])return i[e]({distance:l});const _=[];return ne.includes(e)&&_.push(h("div",{class:S("text")},[y()])),e==="loading"&&_.push(h(Y,{class:S("loading")},{default:y})),_},V=()=>{t.status="success",setTimeout(()=>{u(0)},+s.successDuration)},a=e=>{d=O(T.value)===0,d&&(t.duration=0,p.start(e))},n=e=>{c()&&a(e)},$=e=>{if(c()){d||a(e);const{deltaY:l}=p;p.move(e),d&&l.value>=0&&p.isVertical()&&(q(e),u(D(l.value)))}},A=()=>{d&&p.deltaY.value&&c()&&(t.duration=+s.animationDuration,t.status==="loosing"?(u(+s.headHeight,!0),v("update:modelValue",!0),J(()=>v("refresh"))):u(0))};return F(()=>s.modelValue,e=>{t.duration=+s.animationDuration,e?u(+s.headHeight,!0):i.success||s.successText?V():u(0,!1)}),j("touchmove",$,{target:g}),()=>{var e;const l={transitionDuration:`${t.duration}ms`,transform:t.distance?`translate3d(0,${t.distance}px, 0)`:""};return h("div",{ref:m,class:S()},[h("div",{ref:g,class:S("track"),style:l,onTouchstartPassive:n,onTouchend:A,onTouchcancel:A},[h("div",{class:S("head"),style:r()},[k()]),(e=i.default)==null?void 0:e.call(i)])])}}});const ie=K(ue),re={class:"app-ptr"},ce={class:"app-ptr__mark"},de=["alt"],pe=100,w=168,B=54,fe=L({__name:"AppPullRefresh",props:{modelValue:{type:Boolean},disabled:{type:Boolean,default:!1}},emits:["update:modelValue","refresh"],setup(s,{emit:v}){const i=2*Math.PI*B,d=s,m=v,g=x(0),T=x("normal");function t(a){T.value=a.status,g.value=a.distance}function p(a){m("update:modelValue",a),a||(g.value=0,T.value="normal")}const r=f(()=>T.value==="loading"||d.modelValue),c=f(()=>r.value?1:Math.min(g.value/w,1)),D=f(()=>{if(r.value)return 1;const a=c.value;return Math.pow(a,1.55)}),u=f(()=>c.value>.02||r.value),y=f(()=>{const a=c.value;return{opacity:u.value?Math.min(.18+a*.82,1):0,pointerEvents:r.value?"auto":"none"}}),k=f(()=>{const a=c.value;return{transform:`scale(${.78+a*.22})`,opacity:Math.min(.45+a*.55,1)}}),V=f(()=>{const a=D.value;return{strokeDasharray:`${i}`,strokeDashoffset:`${i*(1-a)}`}});return(a,n)=>(E(),I("div",re,[(E(),Q(ee,{to:"body"},[o("div",{class:M(["app-ptr__overlay",{"is-visible":u.value,"is-loading":r.value}]),"aria-hidden":"true",style:P(y.value)},[o("div",{class:"app-ptr__stage",style:P(k.value)},[o("div",ce,[(E(),I("svg",{class:M(["app-ptr__ring keep-motion",{"is-spinning":r.value}]),viewBox:"0 0 120 120","aria-hidden":"true"},[o("circle",{class:"app-ptr__ringTrack",cx:"60",cy:"60",r:B}),o("circle",{class:"app-ptr__ringFill",cx:"60",cy:"60",r:B,style:P(V.value)},null,4)],2)),o("img",{src:W,alt:R(Z).name,class:"app-ptr__logo",draggable:"false"},null,8,de)])],4)],6)])),h(R(ie),{class:"app-ptr__vant","model-value":s.modelValue,disabled:s.disabled,"head-height":pe,"pull-distance":w,"success-duration":0,"onUpdate:modelValue":p,onRefresh:n[0]||(n[0]=$=>m("refresh")),onChange:t},{pulling:b(()=>[...n[1]||(n[1]=[o("span",null,null,-1)])]),loosing:b(()=>[...n[2]||(n[2]=[o("span",null,null,-1)])]),loading:b(()=>[...n[3]||(n[3]=[o("span",null,null,-1)])]),success:b(()=>[...n[4]||(n[4]=[o("span",null,null,-1)])]),default:b(()=>[te(a.$slots,"default",{},void 0,!0)]),_:3},8,["model-value","disabled"])]))}}),he=se(fe,[["__scopeId","data-v-1fbe4644"]]);export{he as A}; diff --git a/apps/user-app/dist/assets/AppearanceView-DFGqsdWs.js b/apps/user-app/dist/assets/AppearanceView-Dvo5IEVp.js similarity index 98% rename from apps/user-app/dist/assets/AppearanceView-DFGqsdWs.js rename to apps/user-app/dist/assets/AppearanceView-Dvo5IEVp.js index 7f64085..6de7467 100644 --- a/apps/user-app/dist/assets/AppearanceView-DFGqsdWs.js +++ b/apps/user-app/dist/assets/AppearanceView-Dvo5IEVp.js @@ -1 +1 @@ -import{d,e as i,f as _,i as c,g as e,_ as h,u as v,x as o,J as b,M as k,F as w,r as x,q as n,t as u,h as f,I as r,W as g}from"./index-BFOyCNFT.js";import{P as y}from"./PageBar-Cz1N2fdD.js";const C=d({__name:"ToggleSwitch",props:{on:{type:Boolean}},setup(p){return(a,l)=>(i(),_("span",{class:c(["tsw",{"is-on":p.on}]),"aria-hidden":"true"},[...l[0]||(l[0]=[e("span",{class:"tsw__knob"},null,-1)])],2))}}),B=h(C,[["__scopeId","data-v-5db042a9"]]),T={class:"ap"},M={class:"ap__section"},S={class:"ap__themes",role:"radiogroup","aria-labelledby":"ap-theme"},V=["aria-checked","onClick"],I={class:"ap__themeLabel"},L={class:"ap__check","aria-hidden":"true"},z={key:0,class:"ap__note"},N={class:"ap__section"},$=["aria-checked"],A={class:"ap__rowIcon","aria-hidden":"true"},E=d({__name:"AppearanceView",setup(p){const a=v(),l=[{value:"light",label:"روشن",icon:"vuesax-linear:sun-1"},{value:"dark",label:"تیره",icon:"vuesax-linear:moon"},{value:"system",label:"مطابق سیستم",icon:"vuesax-linear:monitor-mobbile"}];return(P,s)=>{const m=k("container");return i(),_("div",T,[o(y,{title:"تنظیمات ظاهری","back-to":"userPage::hasSubRoute"}),o(m,{class:"ap__body"},{default:b(()=>[e("section",M,[s[2]||(s[2]=e("header",{class:"ap__head"},[e("h2",{id:"ap-theme",class:"ap__title"},"پوسته برنامه"),e("p",{class:"ap__sub"},"ظاهر روشن یا تیره، یا هماهنگ با تنظیمات گوشی شما")],-1)),e("div",S,[(i(),_(w,null,x(l,t=>e("button",{key:t.value,type:"button",role:"radio",class:c(["ap__theme",{"is-on":n(a).theme===t.value}]),"aria-checked":n(a).theme===t.value,onClick:F=>n(a).setTheme(t.value)},[e("span",{class:c(["ap__preview",`ap__preview--${t.value}`]),"aria-hidden":"true"},[...s[1]||(s[1]=[e("span",{class:"ap__pvBar"},null,-1),e("span",{class:"ap__pvCard"},null,-1),e("span",{class:"ap__pvLine"},null,-1),e("span",{class:"ap__pvLine ap__pvLine--short"},null,-1),e("span",{class:"ap__pvBtn"},null,-1)])],2),e("span",I,[o(r,{icon:t.icon,size:"15"},null,8,["icon"]),g(" "+u(t.label),1)]),e("span",L,[o(r,{icon:"vuesax-linear:tick-circle",size:"18"})])],10,V)),64))]),n(a).theme==="system"?(i(),_("p",z," الان "+u(n(a).resolvedTheme==="dark"?"تیره":"روشن")+" است، مطابق تنظیمات گوشی. ",1)):f("",!0)]),e("section",N,[s[4]||(s[4]=e("header",{class:"ap__head"},[e("h2",{class:"ap__title"},"انیمیشن‌ها"),e("p",{class:"ap__sub"},"برای سرعت بیشتر روی گوشی‌های ضعیف‌تر")],-1)),e("button",{type:"button",role:"switch",class:"ap__row","aria-checked":n(a).reduceMotion,onClick:s[0]||(s[0]=t=>n(a).setReduceMotion(!n(a).reduceMotion))},[e("span",A,[o(r,{icon:"vuesax-linear:flash",size:"18"})]),s[3]||(s[3]=e("span",{class:"ap__rowText"},[e("b",null,"حالت سبک و سریع"),e("small",null," حرکت‌های سنگین، افکت‌های شیشه‌ای و اسلاید خودکار خاموش می‌شوند؛ بازخورد کوتاه لمس‌ها و جابه‌جایی‌های سریع باقی می‌مانند تا برنامه خشک و بی‌روح نشود. ")],-1)),o(B,{on:n(a).reduceMotion},null,8,["on"])],8,$)])]),_:1})])}}}),D=h(E,[["__scopeId","data-v-f20814a2"]]);export{D as default}; +import{d,e as i,f as _,i as c,g as e,_ as h,u as v,x as o,J as b,M as k,F as w,r as x,q as n,t as u,h as f,I as r,W as g}from"./index-B-RmZRr2.js";import{P as y}from"./PageBar-DmOKrVEQ.js";const C=d({__name:"ToggleSwitch",props:{on:{type:Boolean}},setup(p){return(a,l)=>(i(),_("span",{class:c(["tsw",{"is-on":p.on}]),"aria-hidden":"true"},[...l[0]||(l[0]=[e("span",{class:"tsw__knob"},null,-1)])],2))}}),B=h(C,[["__scopeId","data-v-5db042a9"]]),T={class:"ap"},M={class:"ap__section"},S={class:"ap__themes",role:"radiogroup","aria-labelledby":"ap-theme"},V=["aria-checked","onClick"],I={class:"ap__themeLabel"},L={class:"ap__check","aria-hidden":"true"},z={key:0,class:"ap__note"},N={class:"ap__section"},$=["aria-checked"],A={class:"ap__rowIcon","aria-hidden":"true"},E=d({__name:"AppearanceView",setup(p){const a=v(),l=[{value:"light",label:"روشن",icon:"vuesax-linear:sun-1"},{value:"dark",label:"تیره",icon:"vuesax-linear:moon"},{value:"system",label:"مطابق سیستم",icon:"vuesax-linear:monitor-mobbile"}];return(P,s)=>{const m=k("container");return i(),_("div",T,[o(y,{title:"تنظیمات ظاهری","back-to":"userPage::hasSubRoute"}),o(m,{class:"ap__body"},{default:b(()=>[e("section",M,[s[2]||(s[2]=e("header",{class:"ap__head"},[e("h2",{id:"ap-theme",class:"ap__title"},"پوسته برنامه"),e("p",{class:"ap__sub"},"ظاهر روشن یا تیره، یا هماهنگ با تنظیمات گوشی شما")],-1)),e("div",S,[(i(),_(w,null,x(l,t=>e("button",{key:t.value,type:"button",role:"radio",class:c(["ap__theme",{"is-on":n(a).theme===t.value}]),"aria-checked":n(a).theme===t.value,onClick:F=>n(a).setTheme(t.value)},[e("span",{class:c(["ap__preview",`ap__preview--${t.value}`]),"aria-hidden":"true"},[...s[1]||(s[1]=[e("span",{class:"ap__pvBar"},null,-1),e("span",{class:"ap__pvCard"},null,-1),e("span",{class:"ap__pvLine"},null,-1),e("span",{class:"ap__pvLine ap__pvLine--short"},null,-1),e("span",{class:"ap__pvBtn"},null,-1)])],2),e("span",I,[o(r,{icon:t.icon,size:"15"},null,8,["icon"]),g(" "+u(t.label),1)]),e("span",L,[o(r,{icon:"vuesax-linear:tick-circle",size:"18"})])],10,V)),64))]),n(a).theme==="system"?(i(),_("p",z," الان "+u(n(a).resolvedTheme==="dark"?"تیره":"روشن")+" است، مطابق تنظیمات گوشی. ",1)):f("",!0)]),e("section",N,[s[4]||(s[4]=e("header",{class:"ap__head"},[e("h2",{class:"ap__title"},"انیمیشن‌ها"),e("p",{class:"ap__sub"},"برای سرعت بیشتر روی گوشی‌های ضعیف‌تر")],-1)),e("button",{type:"button",role:"switch",class:"ap__row","aria-checked":n(a).reduceMotion,onClick:s[0]||(s[0]=t=>n(a).setReduceMotion(!n(a).reduceMotion))},[e("span",A,[o(r,{icon:"vuesax-linear:flash",size:"18"})]),s[3]||(s[3]=e("span",{class:"ap__rowText"},[e("b",null,"حالت سبک و سریع"),e("small",null," حرکت‌های سنگین، افکت‌های شیشه‌ای و اسلاید خودکار خاموش می‌شوند؛ بازخورد کوتاه لمس‌ها و جابه‌جایی‌های سریع باقی می‌مانند تا برنامه خشک و بی‌روح نشود. ")],-1)),o(B,{on:n(a).reduceMotion},null,8,["on"])],8,$)])]),_:1})])}}}),D=h(E,[["__scopeId","data-v-f20814a2"]]);export{D as default}; diff --git a/apps/user-app/dist/assets/CartView-CIolGKJ4.js b/apps/user-app/dist/assets/CartView-CIolGKJ4.js deleted file mode 100644 index 84eef86..0000000 --- a/apps/user-app/dist/assets/CartView-CIolGKJ4.js +++ /dev/null @@ -1 +0,0 @@ -import{d as O,E as S,m as L,p as M,e as i,f as r,g as e,q as o,v as Q,x as l,I as f,t as _,h as b,W as R,j as q,_ as T,G as W,o as j,J as d,T as A,O as N,X as z,k as U,U as B,i as G,F as K,r as Y,Y as H,N as J,D as X,Z,K as P,M as tt,n as et}from"./index-BFOyCNFT.js";import{A as st}from"./AppPullRefresh-CsuQ3Y8x.js";import{P as at}from"./PageBar-Cz1N2fdD.js";import{p as ot}from"./filters-sld47Iy-.js";import{u as nt}from"./useReveal-CE0IBSnz.js";import{u as it}from"./catalogStore-BuqGxGiV.js";import{D as lt}from"./index-BgbR-bph.js";import{F as rt,T as ct,a as dt}from"./index-D3GLzZ3l.js";import"./KeyCode-C6xc2Qke.js";import"./classCallCheck-BVPDkxOa.js";import"./raf-nDFcuFT6.js";import"./FormItemContext-BNYzezPe.js";const ut="/assets/dialogEmpty4-CwEcTBTk.svg",_t={class:"ci"},vt={class:"ci__art"},mt=["alt"],pt={key:1,class:"ci__artEmpty","aria-hidden":"true"},yt={class:"ci__main"},ft={class:"ci__title"},gt={class:"ci__meta"},bt={class:"ci__weight"},wt={key:0,class:"ci__wage"},kt={key:0,class:"ci__rial"},ht={class:"ci__row"},xt={class:"ci__qty"},Ct=["disabled"],$t={class:"ci__qtyValue"},It={key:1,class:"ci__noteText"},qt=O({__name:"CartItem",props:{value:{}},emits:["note"],setup(v,{emit:g}){const n=v,w=g,u=S(),p=u.find_index(n.value),k=q(()=>u.maxQty(n.value)),h=q(()=>k.value===null||n.value.qty{h.value&&u.updateFeild(n.value.qty+1,p,n.value,"qty")},s=()=>{u.updateFeild(n.value.qty-1,p,n.value,"qty")},{image:m,title:x,selectedVariant:C,wage:$}=L(n.value.product,u.variant(n.value)),D=q(()=>{const t=$.value;return t==null?"":t%1===0?String(t):t.toFixed(2)}),y=q(()=>{var c;const t=(c=C.value)==null?void 0:c.rial_pay;return t!=null&&Number(t)>0?Number(t):0});return(t,c)=>{var a;const I=M("lazy");return i(),r("article",_t,[e("div",vt,[o(m)?Q((i(),r("img",{key:0,alt:o(x)},null,8,mt)),[[I,o(m)]]):(i(),r("div",pt,[l(f,{icon:"vuesax-linear:diamonds",size:"20"})]))]),e("div",yt,[e("h3",ft,_(o(x)),1),e("div",gt,[e("span",bt,_((a=o(C))==null?void 0:a.rashWeightGrams)+" گرم",1),o($)!=null?(i(),r("span",wt,"اجرت "+_(D.value)+"٪",1)):b("",!0)]),y.value>0?(i(),r("div",kt,"اجرت ریالی "+_(o(ot)(y.value))+" ریال",1)):b("",!0),e("div",ht,[e("div",xt,[e("button",{type:"button",class:"ci__qtyBtn","aria-label":"افزودن",disabled:!h.value,onClick:V},[l(f,{icon:"vuesax-linear:add",size:"16"})],8,Ct),e("span",$t,_(v.value.qty),1),v.value.qty===1?(i(),r("button",{key:0,type:"button",class:"ci__qtyBtn ci__qtyBtn--danger","aria-label":"حذف",onClick:c[0]||(c[0]=F=>o(u).remove(v.value))},[l(f,{icon:"vuesax-linear:trash",size:"16"})])):(i(),r("button",{key:1,type:"button",class:"ci__qtyBtn","aria-label":"کاهش",onClick:s},[l(f,{icon:"vuesax-linear:minus",size:"16"})]))]),e("button",{type:"button",class:"ci__note",onClick:c[1]||(c[1]=F=>w("note",o(p)))},[l(f,{icon:"vuesax-linear:note-text",size:"15"}),R(" "+_(!v.value.note||v.value.note===""?"توضیحات":"ویرایش توضیحات"),1)])]),v.value.note?(i(),r("p",It,_(v.value.note),1)):b("",!0)])])}}}),Pt=T(qt,[["__scopeId","data-v-ecafa0c5"]]),Rt={class:"cart"},Vt={key:1,class:"cart__empty"},Dt={key:1,class:"cart__done"},Ft={class:"cart__doneIcon","aria-hidden":"true"},Nt={class:"cart__doneSub"},zt={key:0,class:"cart__bar"},Ut={class:"cart__barInner"},Bt={class:"cart__total"},Ot={class:"cart__totalValue"},St={class:"sheet"},Tt={class:"sheet__title"},Et=["src"],Lt=["src"],Mt=O({__name:"CartView",setup(v){const g=J(),n=S(),w=W(),u=U(!1),p=U(!1),{revealed:k,revealDelay:h,reveal:V}=nt("cart",60),s=B({loadingPage:!1,showPopUp:!1,step:1,notify:!1,orderID:"",tempRowIndex:-1,tempRow:{product:void 0}}),m=B({note:void 0}),x=()=>{n.updateFeild(m.note,s.tempRowIndex,s.tempRow,"note"),s.showPopUp=!1,m.note=void 0,s.tempRow={product:void 0}},C=async()=>{await g.push({name:"ordersList"}),s.step=1},$=async()=>{if(s.notify=!1,!w.isLoggedIn){u.value=!0;return}try{s.loadingPage=!0;const y=await X.createOrder({customerId:w.customerId??void 0,items:n.items.map(t=>{const c=n.variant(t);return{productVariantId:t.vid,quantity:t.qty,wagePercent:c?parseFloat(c.defaultWagePercent):0}})});s.orderID=y.orderNumber,s.step=2,n.clear(),Z().invalidate(P.orders,P.balance,P.profile,P.ledger),it().invalidate()}catch(y){console.log(y)}finally{s.loadingPage=!1}};async function D(){await n.init(!0),p.value=!1}return j(async()=>{await n.init(),V()}),(y,t)=>{var I;const c=tt("container");return i(),r("div",Rt,[l(at,{title:"سبد خرید","back-to":"home"}),l(A,{spinning:s.loadingPage,tip:"درحال دریافت اطلاعات"},{default:d(()=>[l(c,{class:"cart__body"},{default:d(()=>[s.step===1?(i(),N(st,{key:0,modelValue:p.value,"onUpdate:modelValue":t[1]||(t[1]=a=>p.value=a),onRefresh:D},{default:d(()=>[o(n).items.length?(i(),r("div",{key:0,class:G(["cart__items",{"is-revealed":o(k)}])},[(i(!0),r(K,null,Y(o(n).items,(a,F)=>(i(),N(Pt,{key:a.pid+a.vid,value:a,class:"reveal",style:et(o(h)(F)),onNote:E=>{s.tempRow=a,s.showPopUp=!0,s.tempRowIndex=E,m.note=a.note??void 0}},null,8,["value","style","onNote"]))),128))],2)):(i(),r("section",Vt,[l(f,{icon:"vuesax-linear:bag-2",size:"26"}),t[10]||(t[10]=e("p",null,"سبد خرید شما خالی است.",-1)),e("button",{type:"button",class:"cart__emptyCta",onClick:t[0]||(t[0]=a=>o(g).push({name:"home"}))}," دیدن محصولات ")]))]),_:1},8,["modelValue"])):(i(),r("section",Dt,[e("div",Ft,[l(f,{icon:"vuesax-linear:tick-circle",size:"30"})]),t[12]||(t[12]=e("h2",{class:"cart__doneTitle"},"سفارش شما ثبت شد",-1)),e("p",Nt,[t[11]||(t[11]=R(" شماره سفارش ",-1)),e("b",null,_(s.orderID),1)]),t[13]||(t[13]=e("p",{class:"cart__doneHint"},"برای پیگیری وضعیت، به فهرست سفارش‌ها مراجعه کنید.",-1)),e("button",{type:"button",class:"cart__doneCta",onClick:C},"فهرست سفارش‌ها")]))]),_:1})]),_:1},8,["spinning"]),o(n).items.length>0&&s.step===1?(i(),r("div",zt,[e("div",Ut,[e("div",Bt,[t[15]||(t[15]=e("span",{class:"cart__totalLabel"},"جمع وزن",-1)),e("span",Ot,[R(_(o(n).total())+" ",1),t[14]||(t[14]=e("i",null,"گرم",-1))])]),e("button",{type:"button",class:"cart__submit",onClick:t[2]||(t[2]=a=>s.notify=!0)},"ثبت نهایی سفارش")])])):b("",!0),(I=s.tempRow)!=null&&I.product?(i(),N(o(lt),{key:1,visible:s.showPopUp,"onUpdate:visible":t[4]||(t[4]=a=>s.showPopUp=a),placement:"bottom",closable:!1,height:"auto","wrap-class-name":"cart-note-island",class:"rtl","body-style":{padding:0},"drawer-style":{background:"transparent",boxShadow:"none"}},{default:d(()=>[e("div",St,[t[17]||(t[17]=e("div",{class:"sheet__handle","aria-hidden":"true"},null,-1)),e("h3",Tt,"توضیح برای "+_(s.tempRow.product.title),1),l(o(dt),{model:m,name:"noteForm",layout:"vertical",autocomplete:"off",onFinish:x},{default:d(()=>[l(o(rt),{"has-feedback":"",name:"note",class:"sheet__field"},{default:d(()=>[l(o(ct),{value:m.note,"onUpdate:value":t[3]||(t[3]=a=>m.note=a),rows:3,placeholder:"مثلاً سایز یا جزئیات سفارش",class:"sheet__input"},null,8,["value"])]),_:1}),t[16]||(t[16]=e("button",{type:"submit",class:"sheet__cta"},"ثبت توضیحات",-1))]),_:1},8,["model"])])]),_:1},8,["visible"])):b("",!0),l(z,{timeOut:-1,show:s.notify,"onUpdate:show":t[6]||(t[6]=a=>s.notify=a),closeOnClickOverlay:!0},{img:d(()=>[e("img",{src:o(ut),alt:"",class:"opacity-70"},null,8,Et)]),title:d(()=>[...t[18]||(t[18]=[R("آیا مطمئن به ثبت سفارش هستید ؟",-1)])]),button:d(()=>[e("div",{class:"text-center text-[color:var(--c-primary)]",onClick:$},"بله"),e("div",{class:"text-center text-[color:var(--c-inkMuted)]",onClick:t[5]||(t[5]=a=>s.notify=!1)},"بی خیال")]),_:1},8,["show"]),l(z,{timeOut:-1,show:u.value,"onUpdate:show":t[9]||(t[9]=a=>u.value=a),closeOnClickOverlay:!0},{img:d(()=>[e("img",{src:o(H),alt:""},null,8,Lt)]),title:d(()=>[...t[19]||(t[19]=[e("div",{class:"p-8 text-justify"},"برای ثبت سفارش ابتدا باید وارد حساب کاربری خود شوید.",-1)])]),button:d(()=>[e("div",{class:"text-center text-[color:var(--c-primary)]",onClick:t[7]||(t[7]=a=>o(g).push({name:"login"}))},"ورود/ثبت نام"),e("div",{class:"text-center text-danger",onClick:t[8]||(t[8]=a=>u.value=!1)},"بیخیال")]),_:1},8,["show"])])}}}),ee=T(Mt,[["__scopeId","data-v-786f21ac"]]);export{ee as default}; diff --git a/apps/user-app/dist/assets/CartView-CWT8adxX.css b/apps/user-app/dist/assets/CartView-CWT8adxX.css new file mode 100644 index 0000000..88e036b --- /dev/null +++ b/apps/user-app/dist/assets/CartView-CWT8adxX.css @@ -0,0 +1 @@ +.ci[data-v-db69247d]{display:flex;gap:14px;padding:16px;background:var(--c-canvas);border:1px solid var(--c-hairline);border-radius:18px}.ci__art[data-v-db69247d]{flex:0 0 84px;width:84px;height:84px;display:flex;align-items:center;justify-content:center;border-radius:13px;overflow:hidden;background:var(--c-hairlineSoft)}.ci__art img[data-v-db69247d]{width:90px;height:90px;-o-object-fit:contain;object-fit:contain;-o-object-position:center;object-position:center;display:block}html.theme-dark .ci__art img[data-v-db69247d]{background:var(--c-photoMat);border-radius:12px}.ci__artEmpty[data-v-db69247d]{width:100%;height:100%;display:grid;place-items:center;color:var(--c-inkFaint)}.ci__main[data-v-db69247d]{flex:1;min-width:0}.ci__title[data-v-db69247d]{margin:0;font-size:13px;font-weight:700;color:var(--c-ink);line-height:1.6;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ci__meta[data-v-db69247d]{display:flex;align-items:center;gap:7px;padding-top:5px}.ci__weight[data-v-db69247d]{font-size:11.5px;font-weight:700;color:var(--c-inkSoft)}.ci__wage[data-v-db69247d]{font-size:10.5px;color:var(--c-inkFaint);padding-inline-start:7px;border-inline-start:1px solid var(--c-hairline)}.ci__rial[data-v-db69247d]{padding-top:4px;font-size:10.5px;font-weight:700;color:var(--c-inkSoft)}.ci__row[data-v-db69247d]{display:flex;align-items:center;justify-content:space-between;gap:10px;padding-top:10px}.ci__qty[data-v-db69247d]{display:inline-flex;align-items:center;gap:4px;padding:3px;border-radius:999px;background:var(--c-hairlineSoft);border:1px solid var(--c-hairline)}.ci__qtyBtn[data-v-db69247d]{width:27px;height:27px;border:0;cursor:pointer;border-radius:50%;display:grid;place-items:center;color:var(--c-inkSoft);background:var(--c-canvas);transition:transform .15s ease,color .15s ease}.ci__qtyBtn--danger[data-v-db69247d]{color:var(--c-wine)}.ci__qtyBtn[data-v-db69247d]:active{transform:scale(.9)}.ci__qtyValue[data-v-db69247d]{min-width:22px;text-align:center;font-size:12.5px;font-weight:700;color:var(--c-ink)}.ci__note[data-v-db69247d]{display:inline-flex;align-items:center;gap:5px;border:0;background:none;cursor:pointer;padding:0;font-family:inherit;font-size:11.5px;font-weight:700;color:var(--c-wine);white-space:nowrap}.ci__noteText[data-v-db69247d]{margin:8px 0 0;padding:8px 10px;border-radius:11px;background:var(--c-hairlineSoft);font-size:11.5px;line-height:1.7;color:var(--c-inkMuted)}.cart[data-v-6bbbc691]{background:var(--c-page);min-height:100vh}.cart__body[data-v-6bbbc691]{padding-top:76px;padding-bottom:150px}.cart__items[data-v-6bbbc691]{display:flex;flex-direction:column;gap:11px;padding-top:16px}.cart__empty[data-v-6bbbc691]{margin-top:8px;padding:38px 20px;border:1px dashed var(--c-hairline);border-radius:18px;display:flex;flex-direction:column;align-items:center;gap:10px;color:var(--c-inkFaint)}.cart__empty p[data-v-6bbbc691]{margin:0;font-size:12.5px}.cart__emptyCta[data-v-6bbbc691]{margin-top:4px;padding:9px 18px;border:0;cursor:pointer;border-radius:999px;font-family:inherit;font-size:12.5px;font-weight:700;color:#fff;background:var(--c-primary)}.cart__done[data-v-6bbbc691]{margin-top:20px;padding:34px 22px;border:1px solid var(--c-hairline);border-radius:20px;display:flex;flex-direction:column;align-items:center;text-align:center}.cart__doneIcon[data-v-6bbbc691]{width:56px;height:56px;border-radius:50%;display:grid;place-items:center;color:var(--c-wine);background:var(--c-wineWash)}.cart__doneTitle[data-v-6bbbc691]{margin:14px 0 0;font-size:15px;font-weight:800;color:var(--c-ink)}.cart__doneSub[data-v-6bbbc691]{margin:8px 0 0;font-size:12.5px;color:var(--c-inkMuted)}.cart__doneSub b[data-v-6bbbc691]{color:var(--c-ink)}.cart__doneHint[data-v-6bbbc691]{margin:5px 0 0;font-size:11.5px;color:var(--c-inkFaint)}.cart__doneCta[data-v-6bbbc691]{margin-top:18px;padding:11px 22px;border:0;cursor:pointer;border-radius:999px;font-family:inherit;font-size:12.5px;font-weight:700;color:#fff;background:var(--c-primary)}.cart__bar[data-v-6bbbc691]{position:fixed;bottom:0;left:0;right:0;z-index:5;background:rgb(var(--c-canvas-rgb) / 92%);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-top:1px solid var(--c-hairline);padding-bottom:66px}.cart__barInner[data-v-6bbbc691]{max-width:768px;margin:0 auto;padding:12px 16px;display:flex;align-items:center;justify-content:space-between;gap:14px}.cart__totals[data-v-6bbbc691]{display:flex;align-items:flex-start;gap:22px}.cart__total[data-v-6bbbc691]{display:flex;flex-direction:column;gap:3px}.cart__totalLabel[data-v-6bbbc691]{font-size:11px;color:var(--c-inkFaint)}.cart__totalValue[data-v-6bbbc691]{font-size:16px;font-weight:800;color:var(--c-ink)}.cart__totalValue i[data-v-6bbbc691]{font-style:normal;font-size:11px;font-weight:600;color:var(--c-inkFaint);padding-inline-start:3px}.cart__submit[data-v-6bbbc691]{flex:1;max-width:200px;padding:13px 18px;border:0;cursor:pointer;border-radius:14px;font-family:inherit;font-size:13px;font-weight:700;color:#fff;background:var(--c-primary);transition:transform .15s ease}.cart__submit[data-v-6bbbc691]:active{transform:scale(.98)}.sheet[data-v-6bbbc691]{padding:10px 16px 14px;background:var(--c-canvas);border:1px solid var(--c-hairline);border-radius:22px;box-shadow:0 10px 28px -12px #14161a2e}.sheet__handle[data-v-6bbbc691]{width:36px;height:4px;margin:0 auto 12px;border-radius:999px;background:var(--c-hairline)}.sheet__title[data-v-6bbbc691]{margin:0 0 10px;font-size:13.5px;font-weight:800;color:var(--c-ink);line-height:1.5}.sheet__field[data-v-6bbbc691]{margin-bottom:12px}.sheet__cta[data-v-6bbbc691]{width:100%;padding:12px 18px;border:0;cursor:pointer;border-radius:14px;font-family:inherit;font-size:13px;font-weight:700;color:#fff;background:var(--c-primary);transition:transform .15s ease}.sheet__cta[data-v-6bbbc691]:active{transform:scale(.98)}.cart-note-island.ant-drawer-bottom .ant-drawer-content-wrapper{left:14px!important;right:14px!important;bottom:calc(12px + env(safe-area-inset-bottom,0px))!important;width:auto!important;border-radius:22px;box-shadow:none}.cart-note-island .ant-drawer-content{background:transparent;box-shadow:none}.cart-note-island .ant-drawer-body{padding:0!important;background:transparent}.cart-note-island .sheet__input.ant-input{border-radius:14px;border-color:var(--c-hairline);background:var(--c-hairlineSoft);font-family:inherit;font-size:13px;resize:none;box-shadow:none}.cart-note-island .sheet__input.ant-input:focus,.cart-note-island .sheet__input.ant-input:hover{border-color:rgb(var(--c-primary-rgb) / 45%);background:var(--c-canvas)} diff --git a/apps/user-app/dist/assets/CartView-CbLBc7Rt.css b/apps/user-app/dist/assets/CartView-CbLBc7Rt.css deleted file mode 100644 index eb976de..0000000 --- a/apps/user-app/dist/assets/CartView-CbLBc7Rt.css +++ /dev/null @@ -1 +0,0 @@ -.ci[data-v-ecafa0c5]{display:flex;gap:14px;padding:16px;background:var(--c-canvas);border:1px solid var(--c-hairline);border-radius:18px}.ci__art[data-v-ecafa0c5]{flex:0 0 84px;width:84px;height:84px;display:flex;align-items:center;justify-content:center;border-radius:13px;overflow:hidden;background:var(--c-hairlineSoft)}.ci__art img[data-v-ecafa0c5]{width:90px;height:90px;-o-object-fit:contain;object-fit:contain;-o-object-position:center;object-position:center;display:block}html.theme-dark .ci__art img[data-v-ecafa0c5]{background:var(--c-photoMat);border-radius:12px}.ci__artEmpty[data-v-ecafa0c5]{width:100%;height:100%;display:grid;place-items:center;color:var(--c-inkFaint)}.ci__main[data-v-ecafa0c5]{flex:1;min-width:0}.ci__title[data-v-ecafa0c5]{margin:0;font-size:13px;font-weight:700;color:var(--c-ink);line-height:1.6;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ci__meta[data-v-ecafa0c5]{display:flex;align-items:center;gap:7px;padding-top:5px}.ci__weight[data-v-ecafa0c5]{font-size:11.5px;font-weight:700;color:var(--c-inkSoft)}.ci__wage[data-v-ecafa0c5]{font-size:10.5px;color:var(--c-inkFaint);padding-inline-start:7px;border-inline-start:1px solid var(--c-hairline)}.ci__rial[data-v-ecafa0c5]{padding-top:4px;font-size:10.5px;font-weight:700;color:var(--c-inkSoft)}.ci__row[data-v-ecafa0c5]{display:flex;align-items:center;justify-content:space-between;gap:10px;padding-top:10px}.ci__qty[data-v-ecafa0c5]{display:inline-flex;align-items:center;gap:4px;padding:3px;border-radius:999px;background:var(--c-hairlineSoft);border:1px solid var(--c-hairline)}.ci__qtyBtn[data-v-ecafa0c5]{width:27px;height:27px;border:0;cursor:pointer;border-radius:50%;display:grid;place-items:center;color:var(--c-inkSoft);background:var(--c-canvas);transition:transform .15s ease,color .15s ease}.ci__qtyBtn--danger[data-v-ecafa0c5]{color:var(--c-wine)}.ci__qtyBtn[data-v-ecafa0c5]:active{transform:scale(.9)}.ci__qtyValue[data-v-ecafa0c5]{min-width:22px;text-align:center;font-size:12.5px;font-weight:700;color:var(--c-ink)}.ci__note[data-v-ecafa0c5]{display:inline-flex;align-items:center;gap:5px;border:0;background:none;cursor:pointer;padding:0;font-family:inherit;font-size:11.5px;font-weight:700;color:var(--c-wine);white-space:nowrap}.ci__noteText[data-v-ecafa0c5]{margin:8px 0 0;padding:8px 10px;border-radius:11px;background:var(--c-hairlineSoft);font-size:11.5px;line-height:1.7;color:var(--c-inkMuted)}.cart[data-v-786f21ac]{background:var(--c-page);min-height:100vh}.cart__body[data-v-786f21ac]{padding-top:76px;padding-bottom:150px}.cart__items[data-v-786f21ac]{display:flex;flex-direction:column;gap:11px;padding-top:16px}.cart__empty[data-v-786f21ac]{margin-top:8px;padding:38px 20px;border:1px dashed var(--c-hairline);border-radius:18px;display:flex;flex-direction:column;align-items:center;gap:10px;color:var(--c-inkFaint)}.cart__empty p[data-v-786f21ac]{margin:0;font-size:12.5px}.cart__emptyCta[data-v-786f21ac]{margin-top:4px;padding:9px 18px;border:0;cursor:pointer;border-radius:999px;font-family:inherit;font-size:12.5px;font-weight:700;color:#fff;background:var(--c-primary)}.cart__done[data-v-786f21ac]{margin-top:20px;padding:34px 22px;border:1px solid var(--c-hairline);border-radius:20px;display:flex;flex-direction:column;align-items:center;text-align:center}.cart__doneIcon[data-v-786f21ac]{width:56px;height:56px;border-radius:50%;display:grid;place-items:center;color:var(--c-wine);background:var(--c-wineWash)}.cart__doneTitle[data-v-786f21ac]{margin:14px 0 0;font-size:15px;font-weight:800;color:var(--c-ink)}.cart__doneSub[data-v-786f21ac]{margin:8px 0 0;font-size:12.5px;color:var(--c-inkMuted)}.cart__doneSub b[data-v-786f21ac]{color:var(--c-ink)}.cart__doneHint[data-v-786f21ac]{margin:5px 0 0;font-size:11.5px;color:var(--c-inkFaint)}.cart__doneCta[data-v-786f21ac]{margin-top:18px;padding:11px 22px;border:0;cursor:pointer;border-radius:999px;font-family:inherit;font-size:12.5px;font-weight:700;color:#fff;background:var(--c-primary)}.cart__bar[data-v-786f21ac]{position:fixed;bottom:0;left:0;right:0;z-index:5;background:rgb(var(--c-canvas-rgb) / 92%);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-top:1px solid var(--c-hairline);padding-bottom:66px}.cart__barInner[data-v-786f21ac]{max-width:768px;margin:0 auto;padding:12px 16px;display:flex;align-items:center;justify-content:space-between;gap:14px}.cart__total[data-v-786f21ac]{display:flex;flex-direction:column;gap:3px}.cart__totalLabel[data-v-786f21ac]{font-size:11px;color:var(--c-inkFaint)}.cart__totalValue[data-v-786f21ac]{font-size:16px;font-weight:800;color:var(--c-ink)}.cart__totalValue i[data-v-786f21ac]{font-style:normal;font-size:11px;font-weight:600;color:var(--c-inkFaint);padding-inline-start:3px}.cart__submit[data-v-786f21ac]{flex:1;max-width:200px;padding:13px 18px;border:0;cursor:pointer;border-radius:14px;font-family:inherit;font-size:13px;font-weight:700;color:#fff;background:var(--c-primary);transition:transform .15s ease}.cart__submit[data-v-786f21ac]:active{transform:scale(.98)}.sheet[data-v-786f21ac]{padding:10px 16px 14px;background:var(--c-canvas);border:1px solid var(--c-hairline);border-radius:22px;box-shadow:0 10px 28px -12px #14161a2e}.sheet__handle[data-v-786f21ac]{width:36px;height:4px;margin:0 auto 12px;border-radius:999px;background:var(--c-hairline)}.sheet__title[data-v-786f21ac]{margin:0 0 10px;font-size:13.5px;font-weight:800;color:var(--c-ink);line-height:1.5}.sheet__field[data-v-786f21ac]{margin-bottom:12px}.sheet__cta[data-v-786f21ac]{width:100%;padding:12px 18px;border:0;cursor:pointer;border-radius:14px;font-family:inherit;font-size:13px;font-weight:700;color:#fff;background:var(--c-primary);transition:transform .15s ease}.sheet__cta[data-v-786f21ac]:active{transform:scale(.98)}.cart-note-island.ant-drawer-bottom .ant-drawer-content-wrapper{left:14px!important;right:14px!important;bottom:calc(12px + env(safe-area-inset-bottom,0px))!important;width:auto!important;border-radius:22px;box-shadow:none}.cart-note-island .ant-drawer-content{background:transparent;box-shadow:none}.cart-note-island .ant-drawer-body{padding:0!important;background:transparent}.cart-note-island .sheet__input.ant-input{border-radius:14px;border-color:var(--c-hairline);background:var(--c-hairlineSoft);font-family:inherit;font-size:13px;resize:none;box-shadow:none}.cart-note-island .sheet__input.ant-input:focus,.cart-note-island .sheet__input.ant-input:hover{border-color:rgb(var(--c-primary-rgb) / 45%);background:var(--c-canvas)} diff --git a/apps/user-app/dist/assets/CartView-mD4jqxvD.js b/apps/user-app/dist/assets/CartView-mD4jqxvD.js new file mode 100644 index 0000000..77c058d --- /dev/null +++ b/apps/user-app/dist/assets/CartView-mD4jqxvD.js @@ -0,0 +1 @@ +import{d as S,E as T,m as M,p as Q,e as l,f as i,g as e,q as a,v as W,x as r,I as f,t as u,h as b,W as w,j as P,_ as E,G as j,o as A,J as d,T as G,O as N,X as U,k as B,U as O,i as K,F as Y,r as H,Y as J,N as X,D as Z,Z as tt,K as R,M as et,n as st}from"./index-B-RmZRr2.js";import{A as at}from"./AppPullRefresh-RDVLXVM_.js";import{P as ot}from"./PageBar-DmOKrVEQ.js";import{p as z}from"./filters-BLs90kiz.js";import{u as nt}from"./useReveal-Dq2T90sy.js";import{u as lt}from"./catalogStore-D54EVMFO.js";import{D as it}from"./index-DXKwa_Wp.js";import{F as rt,T as ct,a as dt}from"./index-DDItTnD7.js";import"./KeyCode-DsOsmuVa.js";import"./classCallCheck-BMo4V_0Q.js";import"./raf-nDFcuFT6.js";import"./isEqual-CAQ2DK4R.js";import"./FormItemContext-Buff0-hx.js";const ut="/assets/dialogEmpty4-CwEcTBTk.svg",_t={class:"ci"},vt={class:"ci__art"},mt=["alt"],pt={key:1,class:"ci__artEmpty","aria-hidden":"true"},yt={class:"ci__main"},ft={class:"ci__title"},bt={class:"ci__meta"},gt={class:"ci__weight"},wt={key:0,class:"ci__wage"},kt={key:0,class:"ci__rial"},ht={key:1,class:"ci__rial ci__rial--total"},xt={class:"ci__row"},Ct={class:"ci__qty"},$t=["disabled"],It={class:"ci__qtyValue"},qt={key:2,class:"ci__noteText"},Pt=S({__name:"CartItem",props:{value:{}},emits:["note"],setup(_,{emit:g}){const n=_,k=g,v=T(),y=v.find_index(n.value),h=P(()=>v.maxQty(n.value)),x=P(()=>h.value===null||n.value.qty{x.value&&v.updateFeild(n.value.qty+1,y,n.value,"qty")},s=()=>{v.updateFeild(n.value.qty-1,y,n.value,"qty")},{image:m,title:C,selectedVariant:$,wage:I}=M(n.value.product,v.variant(n.value)),D=P(()=>{const t=I.value;return t==null?"":t%1===0?String(t):t.toFixed(2)}),p=P(()=>{var c;const t=(c=$.value)==null?void 0:c.rial_pay;return t!=null&&Number(t)>0?Number(t):0});return(t,c)=>{var o;const q=Q("lazy");return l(),i("article",_t,[e("div",vt,[a(m)?W((l(),i("img",{key:0,alt:a(C)},null,8,mt)),[[q,a(m)]]):(l(),i("div",pt,[r(f,{icon:"vuesax-linear:diamonds",size:"20"})]))]),e("div",yt,[e("h3",ft,u(a(C)),1),e("div",bt,[e("span",gt,u((o=a($))==null?void 0:o.rashWeightGrams)+" گرم",1),a(I)!=null?(l(),i("span",wt,"اجرت "+u(D.value)+"٪",1)):b("",!0)]),p.value>0?(l(),i("div",kt,"اجرت ریالی "+u(a(z)(p.value))+" ریال",1)):b("",!0),p.value>0&&_.value.qty>1?(l(),i("div",ht,"جمع اجرت "+u(a(z)(p.value*_.value.qty))+" ریال",1)):b("",!0),e("div",xt,[e("div",Ct,[e("button",{type:"button",class:"ci__qtyBtn","aria-label":"افزودن",disabled:!x.value,onClick:V},[r(f,{icon:"vuesax-linear:add",size:"16"})],8,$t),e("span",It,u(_.value.qty),1),_.value.qty===1?(l(),i("button",{key:0,type:"button",class:"ci__qtyBtn ci__qtyBtn--danger","aria-label":"حذف",onClick:c[0]||(c[0]=F=>a(v).remove(_.value))},[r(f,{icon:"vuesax-linear:trash",size:"16"})])):(l(),i("button",{key:1,type:"button",class:"ci__qtyBtn","aria-label":"کاهش",onClick:s},[r(f,{icon:"vuesax-linear:minus",size:"16"})]))]),e("button",{type:"button",class:"ci__note",onClick:c[1]||(c[1]=F=>k("note",a(y)))},[r(f,{icon:"vuesax-linear:note-text",size:"15"}),w(" "+u(!_.value.note||_.value.note===""?"توضیحات":"ویرایش توضیحات"),1)])]),_.value.note?(l(),i("p",qt,u(_.value.note),1)):b("",!0)])])}}}),Rt=E(Pt,[["__scopeId","data-v-db69247d"]]),Vt={class:"cart"},Dt={key:1,class:"cart__empty"},Ft={key:1,class:"cart__done"},Nt={class:"cart__doneIcon","aria-hidden":"true"},zt={class:"cart__doneSub"},Ut={key:0,class:"cart__bar"},Bt={class:"cart__barInner"},Ot={class:"cart__totals"},St={class:"cart__total"},Tt={class:"cart__totalValue"},Et={key:0,class:"cart__total"},Lt={class:"cart__totalValue"},Mt={class:"sheet"},Qt={class:"sheet__title"},Wt=["src"],jt=["src"],At=S({__name:"CartView",setup(_){const g=X(),n=T(),k=j(),v=B(!1),y=B(!1),{revealed:h,revealDelay:x,reveal:V}=nt("cart",60),s=O({loadingPage:!1,showPopUp:!1,step:1,notify:!1,orderID:"",tempRowIndex:-1,tempRow:{product:void 0}}),m=O({note:void 0}),C=()=>{n.updateFeild(m.note,s.tempRowIndex,s.tempRow,"note"),s.showPopUp=!1,m.note=void 0,s.tempRow={product:void 0}},$=async()=>{await g.push({name:"ordersList"}),s.step=1},I=async()=>{if(s.notify=!1,!k.isLoggedIn){v.value=!0;return}try{s.loadingPage=!0;const p=await Z.createOrder({customerId:k.customerId??void 0,items:n.items.map(t=>{const c=n.variant(t);return{productVariantId:t.vid,quantity:t.qty,wagePercent:c?parseFloat(c.defaultWagePercent):0}})});s.orderID=p.orderNumber,s.step=2,n.clear(),tt().invalidate(R.orders,R.balance,R.profile,R.ledger),lt().invalidate()}catch(p){console.log(p)}finally{s.loadingPage=!1}};async function D(){await n.init(!0),y.value=!1}return A(async()=>{await n.init(),V()}),(p,t)=>{var q;const c=et("container");return l(),i("div",Vt,[r(ot,{title:"سبد خرید","back-to":"home"}),r(G,{spinning:s.loadingPage,tip:"درحال دریافت اطلاعات"},{default:d(()=>[r(c,{class:"cart__body"},{default:d(()=>[s.step===1?(l(),N(at,{key:0,modelValue:y.value,"onUpdate:modelValue":t[1]||(t[1]=o=>y.value=o),onRefresh:D},{default:d(()=>[a(n).items.length?(l(),i("div",{key:0,class:K(["cart__items",{"is-revealed":a(h)}])},[(l(!0),i(Y,null,H(a(n).items,(o,F)=>(l(),N(Rt,{key:o.pid+o.vid,value:o,class:"reveal",style:st(a(x)(F)),onNote:L=>{s.tempRow=o,s.showPopUp=!0,s.tempRowIndex=L,m.note=o.note??void 0}},null,8,["value","style","onNote"]))),128))],2)):(l(),i("section",Dt,[r(f,{icon:"vuesax-linear:bag-2",size:"26"}),t[10]||(t[10]=e("p",null,"سبد خرید شما خالی است.",-1)),e("button",{type:"button",class:"cart__emptyCta",onClick:t[0]||(t[0]=o=>a(g).push({name:"home"}))}," دیدن محصولات ")]))]),_:1},8,["modelValue"])):(l(),i("section",Ft,[e("div",Nt,[r(f,{icon:"vuesax-linear:tick-circle",size:"30"})]),t[12]||(t[12]=e("h2",{class:"cart__doneTitle"},"سفارش شما ثبت شد",-1)),e("p",zt,[t[11]||(t[11]=w(" شماره سفارش ",-1)),e("b",null,u(s.orderID),1)]),t[13]||(t[13]=e("p",{class:"cart__doneHint"},"برای پیگیری وضعیت، به فهرست سفارش‌ها مراجعه کنید.",-1)),e("button",{type:"button",class:"cart__doneCta",onClick:$},"فهرست سفارش‌ها")]))]),_:1})]),_:1},8,["spinning"]),a(n).items.length>0&&s.step===1?(l(),i("div",Ut,[e("div",Bt,[e("div",Ot,[e("div",St,[t[15]||(t[15]=e("span",{class:"cart__totalLabel"},"جمع وزن",-1)),e("span",Tt,[w(u(a(n).total())+" ",1),t[14]||(t[14]=e("i",null,"گرم",-1))])]),a(n).totalRial()>0?(l(),i("div",Et,[t[17]||(t[17]=e("span",{class:"cart__totalLabel"},"جمع اجرت ریالی",-1)),e("span",Lt,[w(u(a(z)(a(n).totalRial()))+" ",1),t[16]||(t[16]=e("i",null,"ریال",-1))])])):b("",!0)]),e("button",{type:"button",class:"cart__submit",onClick:t[2]||(t[2]=o=>s.notify=!0)},"ثبت نهایی سفارش")])])):b("",!0),(q=s.tempRow)!=null&&q.product?(l(),N(a(it),{key:1,visible:s.showPopUp,"onUpdate:visible":t[4]||(t[4]=o=>s.showPopUp=o),placement:"bottom",closable:!1,height:"auto","wrap-class-name":"cart-note-island",class:"rtl","body-style":{padding:0},"drawer-style":{background:"transparent",boxShadow:"none"}},{default:d(()=>[e("div",Mt,[t[19]||(t[19]=e("div",{class:"sheet__handle","aria-hidden":"true"},null,-1)),e("h3",Qt,"توضیح برای "+u(s.tempRow.product.title),1),r(a(dt),{model:m,name:"noteForm",layout:"vertical",autocomplete:"off",onFinish:C},{default:d(()=>[r(a(rt),{"has-feedback":"",name:"note",class:"sheet__field"},{default:d(()=>[r(a(ct),{value:m.note,"onUpdate:value":t[3]||(t[3]=o=>m.note=o),rows:3,placeholder:"مثلاً سایز یا جزئیات سفارش",class:"sheet__input"},null,8,["value"])]),_:1}),t[18]||(t[18]=e("button",{type:"submit",class:"sheet__cta"},"ثبت توضیحات",-1))]),_:1},8,["model"])])]),_:1},8,["visible"])):b("",!0),r(U,{timeOut:-1,show:s.notify,"onUpdate:show":t[6]||(t[6]=o=>s.notify=o),closeOnClickOverlay:!0},{img:d(()=>[e("img",{src:a(ut),alt:"",class:"opacity-70"},null,8,Wt)]),title:d(()=>[...t[20]||(t[20]=[w("آیا مطمئن به ثبت سفارش هستید ؟",-1)])]),button:d(()=>[e("div",{class:"text-center text-[color:var(--c-primary)]",onClick:I},"بله"),e("div",{class:"text-center text-[color:var(--c-inkMuted)]",onClick:t[5]||(t[5]=o=>s.notify=!1)},"بی خیال")]),_:1},8,["show"]),r(U,{timeOut:-1,show:v.value,"onUpdate:show":t[9]||(t[9]=o=>v.value=o),closeOnClickOverlay:!0},{img:d(()=>[e("img",{src:a(J),alt:""},null,8,jt)]),title:d(()=>[...t[21]||(t[21]=[e("div",{class:"p-8 text-justify"},"برای ثبت سفارش ابتدا باید وارد حساب کاربری خود شوید.",-1)])]),button:d(()=>[e("div",{class:"text-center text-[color:var(--c-primary)]",onClick:t[7]||(t[7]=o=>a(g).push({name:"login"}))},"ورود/ثبت نام"),e("div",{class:"text-center text-danger",onClick:t[8]||(t[8]=o=>v.value=!1)},"بیخیال")]),_:1},8,["show"])])}}}),le=E(At,[["__scopeId","data-v-6bbbc691"]]);export{le as default}; diff --git a/apps/user-app/dist/assets/ChildOrdersView-3bFx9CUY.css b/apps/user-app/dist/assets/ChildOrdersView-3bFx9CUY.css new file mode 100644 index 0000000..37ccada --- /dev/null +++ b/apps/user-app/dist/assets/ChildOrdersView-3bFx9CUY.css @@ -0,0 +1 @@ +.cho__barExtra[data-v-d4b5a22b]{padding:0 16px 12px}.cho__body[data-v-d4b5a22b]{padding-top:132px;padding-bottom:90px}.cho__list[data-v-d4b5a22b]{display:flex;flex-direction:column;padding-top:16px;gap:11px}.cho__card[data-v-d4b5a22b]{padding:16px;background:var(--c-canvas);border:1px solid var(--c-hairline);border-radius:18px;cursor:pointer;transition:transform .2s ease}.cho__card[data-v-d4b5a22b]:active{transform:scale(.99)}.cho__top[data-v-d4b5a22b]{display:flex;justify-content:space-between;gap:12px}.cho__right[data-v-d4b5a22b]{display:flex;flex-direction:column;align-items:flex-end;gap:8px}.cho__num[data-v-d4b5a22b]{font-size:15px;font-weight:700;margin-bottom:10px}.cho__muted[data-v-d4b5a22b]{color:var(--c-inkMuted);font-weight:500;margin-left:4px}.cho__meta[data-v-d4b5a22b]{display:flex;align-items:baseline;gap:4px}.cho__strong[data-v-d4b5a22b]{font-size:15px;font-weight:700}.cho__unit[data-v-d4b5a22b]{font-size:12px;color:var(--c-inkMuted)}.cho__status[data-v-d4b5a22b]{padding:5px 14px;border-radius:8px;font-size:12px;font-weight:600;color:#06b6d4;background:#06b6d41f;white-space:nowrap}.cho__divider[data-v-d4b5a22b]{height:1px;background:var(--c-hairline);margin:12px 0}.cho__bottom[data-v-d4b5a22b]{display:flex;justify-content:space-between;align-items:center}.cho__customer[data-v-d4b5a22b]{font-size:14px;font-weight:600;color:var(--c-inkMuted)}.cho__more[data-v-d4b5a22b],.cho__sentinel[data-v-d4b5a22b]{padding:12px 0;text-align:center;font-size:12px;color:var(--c-inkMuted)}.cho__empty[data-v-d4b5a22b]{margin-top:8px;padding:34px 20px;border:1px dashed var(--c-hairline);border-radius:18px;display:flex;flex-direction:column;align-items:center;gap:10px;color:var(--c-inkMuted);font-size:13px}.cho__retry[data-v-d4b5a22b]{padding:8px 18px;border-radius:999px;border:1px solid var(--c-hairline);background:var(--c-canvas);font-family:inherit;font-size:12px;font-weight:600;cursor:pointer}.cho__detail[data-v-d4b5a22b]{padding:20px 16px 24px}.cho__detailTitle[data-v-d4b5a22b]{margin:0 0 16px;font-size:17px;font-weight:700}.cho__rows[data-v-d4b5a22b]{margin:0;display:flex;flex-direction:column;gap:2px}.cho__row[data-v-d4b5a22b]{display:flex;justify-content:space-between;align-items:center;padding:11px 14px;background:var(--c-canvasSoft);border-radius:10px}.cho__row dt[data-v-d4b5a22b]{font-size:13px;color:var(--c-inkMuted)}.cho__row dd[data-v-d4b5a22b]{margin:0;font-size:14px;font-weight:600}.cho__editTitle[data-v-d4b5a22b]{margin:18px 0 6px;font-size:13px;font-weight:800;color:var(--c-ink)}.cho__line[data-v-d4b5a22b]{padding:12px 0;border-bottom:1px solid var(--c-hairline)}.cho__lineHead[data-v-d4b5a22b]{display:flex;justify-content:space-between;gap:10px;margin-bottom:8px;font-size:12.5px}.cho__lineName[data-v-d4b5a22b]{font-weight:700;color:var(--c-ink)}.cho__lineQty[data-v-d4b5a22b]{color:var(--c-inkFaint);white-space:nowrap}.cho__input[data-v-d4b5a22b]{width:100%}.cho__lineSum[data-v-d4b5a22b]{margin-top:6px;font-size:12px;font-weight:700;color:var(--c-inkSoft)}.cho__previewTotal[data-v-d4b5a22b]{display:flex;justify-content:space-between;padding:14px 0 4px;font-size:13px}.cho__error[data-v-d4b5a22b]{margin:10px 0 0;font-size:12.5px;color:var(--c-red)}.cho__actions[data-v-d4b5a22b]{display:flex;gap:10px;margin-top:14px}.cho__save[data-v-d4b5a22b],.cho__final[data-v-d4b5a22b]{flex:1;padding:12px;border:1px solid var(--c-wine);border-radius:14px;background:transparent;color:var(--c-wine);font-family:inherit;font-size:13.5px;font-weight:700;cursor:pointer}.cho__final[data-v-d4b5a22b]{background:var(--c-wine);color:#fff}.cho__save[data-v-d4b5a22b]:disabled,.cho__final[data-v-d4b5a22b]:disabled{opacity:.5;cursor:default}.cho__confirm[data-v-d4b5a22b]{display:flex;flex-direction:column;gap:8px;margin:12px 0 0;font-size:12.5px;color:var(--c-inkSoft)}.cho__link[data-v-d4b5a22b]{border:none;background:transparent;color:var(--c-inkFaint);font-family:inherit;font-size:12.5px;cursor:pointer}.cho__close[data-v-d4b5a22b]{margin-top:18px;width:100%;padding:13px;border:none;border-radius:14px;background:var(--c-primary);color:#fff;font-family:inherit;font-size:14px;font-weight:700;cursor:pointer} diff --git a/apps/user-app/dist/assets/ChildOrdersView-DaRQcTIW.js b/apps/user-app/dist/assets/ChildOrdersView-DaRQcTIW.js deleted file mode 100644 index 637eefb..0000000 --- a/apps/user-app/dist/assets/ChildOrdersView-DaRQcTIW.js +++ /dev/null @@ -1 +0,0 @@ -import{A as E}from"./AppPullRefresh-CsuQ3Y8x.js";import{d as M,o as R,c as T,f as r,x as a,J as f,T as U,q as O,k as n,D as $,e as d,g as e,F as S,r as j,h as y,I as N,t as l,M as q,W as J,_ as L}from"./index-BFOyCNFT.js";import{P as W}from"./PageBar-Cz1N2fdD.js";import{S as G}from"./SearchInput-C_6TS52w.js";import{j as H}from"./filters-sld47Iy-.js";import{D as K}from"./index-BgbR-bph.js";import"./KeyCode-C6xc2Qke.js";import"./classCallCheck-BVPDkxOa.js";import"./raf-nDFcuFT6.js";const Q={class:"cho"},X={class:"cho__barExtra"},Y={class:"cho__list"},Z=["onClick"],ee={class:"cho__top"},se={class:"cho__left"},te={class:"cho__num"},oe={class:"cho__meta"},le={class:"cho__strong"},ne={class:"cho__right"},ae={class:"cho__meta"},ie={class:"cho__strong"},re={class:"cho__bottom"},de={class:"cho__customer"},ce={key:0,class:"cho__more"},ue={key:1,class:"cho__empty"},_e={key:2,class:"cho__empty"},ve={key:0,class:"cho__detail"},he={class:"cho__detailTitle"},fe={class:"cho__rows"},me={class:"cho__row"},pe={class:"cho__row"},ge={dir:"ltr"},ye={class:"cho__row"},be={dir:"ltr"},we={class:"cho__row"},ke={class:"cho__row"},xe=M({__name:"ChildOrdersView",setup(Ce){const c=n([]),u=n(!1),b=n(!1),m=n(!1),w=n(null),k=n(1),p=n(!0),g=n(!1),i=n(null);function I(t){const s=Number(t??0);return Number.isFinite(s)?s.toFixed(3):"0.000"}async function x(){if(!(u.value||!p.value)){u.value=!0,m.value=!1;try{const t=await $.getExpertChildOrders(k.value,w.value),s=t.rows??[];c.value=[...c.value,...s],s.length<(t.limit??20)?p.value=!1:k.value+=1}catch{m.value=!0,p.value=!1}finally{u.value=!1}}}function B(){c.value=[],k.value=1,p.value=!0,m.value=!1}async function C(){B(),await x()}async function D(t){w.value=t!=null&&t.trim()?t.trim():null,await C()}async function P(){try{await C()}finally{b.value=!1}}function F(t){i.value=t,g.value=!0}const V=n(null);let _=null;return R(async()=>{await x(),typeof IntersectionObserver<"u"&&(_=new IntersectionObserver(t=>{t.some(s=>s.isIntersecting)&&x()}),V.value&&_.observe(V.value))}),T(()=>_==null?void 0:_.disconnect()),(t,s)=>{const z=q("container");return d(),r("div",Q,[a(W,{title:"سفارشات مشتریان","back-to":"userPage::hasSubRoute"},{below:f(()=>[e("div",X,[a(G,{onSearch:D,"place-holder":"جستجو"})])]),_:1}),a(U,{spinning:u.value&&!c.value.length,tip:"درحال دریافت اطلاعات"},{default:f(()=>[a(E,{modelValue:b.value,"onUpdate:modelValue":s[0]||(s[0]=o=>b.value=o),onRefresh:P},{default:f(()=>[a(z,{class:"cho__body"},{default:f(()=>[c.value.length?(d(),r(S,{key:0},[e("div",Y,[(d(!0),r(S,null,j(c.value,o=>{var v,h;return d(),r("article",{key:o.id,class:"cho__card",onClick:A=>F(o)},[e("div",ee,[e("div",se,[e("div",te,[s[3]||(s[3]=e("span",{class:"cho__muted"},"سفارش :",-1)),J(" "+l(o.orderNumber),1)]),e("div",oe,[e("span",le,l(((v=o.items)==null?void 0:v.length)??0),1),s[4]||(s[4]=e("span",{class:"cho__unit"},"آیتم",-1))])]),e("div",ne,[s[6]||(s[6]=e("span",{class:"cho__status"},"تحویل مسئول فروش",-1)),e("div",ae,[e("span",ie,l(I(o.w)),1),s[5]||(s[5]=e("span",{class:"cho__unit"},"گرم",-1))])])]),s[7]||(s[7]=e("div",{class:"cho__divider"},null,-1)),e("div",re,[e("div",de," نام مشتری : "+l(((h=o.customer)==null?void 0:h.name)??"—"),1),a(N,{icon:"vuesax-linear:arrow-left-1",size:"20"})])],8,Z)}),128))]),u.value?(d(),r("div",ce,"در حال دریافت…")):y("",!0)],64)):u.value?y("",!0):(d(),r("section",ue,[a(N,{icon:"vuesax-linear:box",size:"26"}),e("p",null,l(w.value?"سفارشی با این مشخصات پیدا نشد.":"هنوز سفارشی ثبت نشده است."),1)])),m.value?(d(),r("section",_e,[a(N,{icon:"vuesax-linear:danger",size:"26"}),s[8]||(s[8]=e("p",null,"دریافت اطلاعات با خطا روبه‌رو شد.",-1)),e("button",{type:"button",class:"cho__retry",onClick:C},"تلاش دوباره")])):y("",!0),e("div",{ref_key:"sentinel",ref:V,class:"cho__sentinel"},null,512)]),_:1})]),_:1},8,["modelValue"])]),_:1},8,["spinning"]),a(O(K),{visible:g.value,"onUpdate:visible":s[2]||(s[2]=o=>g.value=o),placement:"bottom",height:"auto",closable:!1,"body-style":{padding:"0"}},{default:f(()=>{var o,v,h;return[i.value?(d(),r("div",ve,[e("h2",he,l(i.value.orderNumber),1),e("dl",fe,[e("div",me,[s[9]||(s[9]=e("dt",null,"نام مشتری",-1)),e("dd",null,l(((o=i.value.customer)==null?void 0:o.name)??"—"),1)]),e("div",pe,[s[10]||(s[10]=e("dt",null,"شماره تماس",-1)),e("dd",ge,l(((v=i.value.customer)==null?void 0:v.mobile)??"—"),1)]),e("div",ye,[s[11]||(s[11]=e("dt",null,"وزن کل",-1)),e("dd",be,l(I(i.value.w))+" گرم",1)]),e("div",we,[s[12]||(s[12]=e("dt",null,"تعداد آیتم‌ها",-1)),e("dd",null,l(((h=i.value.items)==null?void 0:h.length)??0),1)]),e("div",ke,[s[13]||(s[13]=e("dt",null,"تاریخ ثبت",-1)),e("dd",null,l(O(H)(i.value.createdAt)),1)]),s[14]||(s[14]=e("div",{class:"cho__row"},[e("dt",null,"وضعیت"),e("dd",null,"تحویل مسئول فروش")],-1))]),e("button",{type:"button",class:"cho__close",onClick:s[1]||(s[1]=A=>g.value=!1)},"بستن")])):y("",!0)]}),_:1},8,["visible"])])}}}),ze=L(xe,[["__scopeId","data-v-360c4f99"]]);export{ze as default}; diff --git a/apps/user-app/dist/assets/ChildOrdersView-DcTtJnk7.js b/apps/user-app/dist/assets/ChildOrdersView-DcTtJnk7.js new file mode 100644 index 0000000..3dcad3f --- /dev/null +++ b/apps/user-app/dist/assets/ChildOrdersView-DcTtJnk7.js @@ -0,0 +1 @@ +import{A as tt}from"./AppPullRefresh-RDVLXVM_.js";import{x as b,ag as Te,ah as N,d as pe,c as Ee,az as ee,aa as V,k as y,aO as nt,ar as at,aH as rt,w as re,aU as Ue,j as ie,a9 as it,aj as ot,ak as _e,o as lt,f as A,J as ae,T as ut,q as ye,D as Pe,e as F,g as o,F as we,r as $e,h as Q,I as Se,t as k,W as fe,M as st,_ as ct}from"./index-B-RmZRr2.js";import{P as dt}from"./PageBar-DmOKrVEQ.js";import{S as vt}from"./SearchInput-BkGXK-xm.js";import{j as ft}from"./filters-BLs90kiz.js";import{D as mt}from"./index-DXKwa_Wp.js";import{_ as He,a as Le,o as pt}from"./classCallCheck-BMo4V_0Q.js";import{w as Ae}from"./raf-nDFcuFT6.js";import{K as me}from"./KeyCode-DsOsmuVa.js";import{a as gt,c as ht}from"./FormItemContext-Buff0-hx.js";const bt=function(){if(typeof navigator>"u"||typeof window>"u")return!1;var n=navigator.userAgent||navigator.vendor||window.opera;return!!(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(n)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/i.test(n==null?void 0:n.substr(0,4)))};var _t={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z"}}]},name:"down",theme:"outlined"};function Fe(n){for(var e=1;eNumber.MAX_SAFE_INTEGER)return String(Ie()?BigInt(n).toString():Number.MAX_SAFE_INTEGER);if(nNumber.MAX_SAFE_INTEGER)return new n(Number.MAX_SAFE_INTEGER);if(s0&&arguments[0]!==void 0?arguments[0]:!0;return t?this.isInvalidate()?"":Be(this.number):this.origin}}]),n}(),xt=function(){function n(e){if(Le(this,n),N(this,"origin",""),Ge(e)){this.empty=!0;return}if(this.origin=String(e),e==="-"||Number.isNaN(e)){this.nan=!0;return}var t=e;if(Ve(t)&&(t=Number(t)),t=typeof t=="string"?t:Be(t),Oe(t)){var l=oe(t);this.negative=l.negative;var s=l.trimStr.split(".");this.integer=BigInt(s[0]);var v=s[1]||"0";this.decimal=BigInt(v),this.decimalLen=v.length}else this.nan=!0}return He(n,[{key:"getMark",value:function(){return this.negative?"-":""}},{key:"getIntegerStr",value:function(){return this.integer.toString()}},{key:"getDecimalStr",value:function(){return this.decimal.toString().padStart(this.decimalLen,"0")}},{key:"alignDecimal",value:function(t){var l="".concat(this.getMark()).concat(this.getIntegerStr()).concat(this.getDecimalStr().padEnd(t,"0"));return BigInt(l)}},{key:"negate",value:function(){var t=new n(this.toString());return t.negative=!t.negative,t}},{key:"add",value:function(t){if(this.isInvalidate())return new n(t);var l=new n(t);if(l.isInvalidate())return this;var s=Math.max(this.getDecimalStr().length,l.getDecimalStr().length),v=this.alignDecimal(s),_=l.alignDecimal(s),f=(v+_).toString(),p=oe(f),d=p.negativeStr,g=p.trimStr,u="".concat(d).concat(g.padStart(s+1,"0"));return new n("".concat(u.slice(0,-s),".").concat(u.slice(-s)))}},{key:"isEmpty",value:function(){return this.empty}},{key:"isNaN",value:function(){return this.nan}},{key:"isInvalidate",value:function(){return this.isEmpty()||this.isNaN()}},{key:"equals",value:function(t){return this.toString()===(t==null?void 0:t.toString())}},{key:"lessEquals",value:function(t){return this.add(t.negate().toString()).toNumber()<=0}},{key:"toNumber",value:function(){return this.isNaN()?NaN:Number(this.toString())}},{key:"toString",value:function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0;return t?this.isInvalidate()?"":oe("".concat(this.getMark()).concat(this.getIntegerStr(),".").concat(this.getDecimalStr())).fullStr:this.origin}}]),n}();function X(n){return Ie()?new xt(n):new Nt(n)}function ke(n,e,t){var l=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;if(n==="")return"";var s=oe(n),v=s.negativeStr,_=s.integerStr,f=s.decimalStr,p="".concat(e).concat(f),d="".concat(v).concat(_);if(t>=0){var g=Number(f[t]);if(g>=5&&!l){var u=X(n).add("".concat(v,"0.").concat("0".repeat(t)).concat(10-g));return ke(u.toString(),e,t,l)}return t===0?d:"".concat(d).concat(e).concat(f.padEnd(t,"0").slice(0,t))}return p===".0"?d:"".concat(d).concat(p)}var It=200,kt=600;const Et=pe({compatConfig:{MODE:3},name:"StepHandler",inheritAttrs:!1,props:{prefixCls:String,upDisabled:Boolean,downDisabled:Boolean,onStep:{type:Function}},slots:["upNode","downNode"],setup:function(e,t){var l=t.slots,s=t.emit,v=y(),_=function(d,g){d.preventDefault(),s("step",g);function u(){s("step",g),v.value=setTimeout(u,It)}v.value=setTimeout(u,kt)},f=function(){clearTimeout(v.value)};return Ee(function(){f()}),function(){if(bt())return null;var p=e.prefixCls,d=e.upDisabled,g=e.downDisabled,u="".concat(p,"-handler"),R=ee(u,"".concat(u,"-up"),N({},"".concat(u,"-up-disabled"),d)),P=ee(u,"".concat(u,"-down"),N({},"".concat(u,"-down-disabled"),g)),j={unselectable:"on",role:"button",onMouseup:f,onMouseleave:f},B=l.upNode,D=l.downNode;return b("div",{class:"".concat(u,"-wrap")},[b("span",V(V({},j),{},{onMousedown:function(E){_(E,!0)},"aria-label":"Increase Value","aria-disabled":d,class:R}),[(B==null?void 0:B())||b("span",{unselectable:"on",class:"".concat(p,"-handler-up-inner")},null)]),b("span",V(V({},j),{},{onMousedown:function(E){_(E,!1)},"aria-label":"Decrease Value","aria-disabled":g,class:P}),[(D==null?void 0:D())||b("span",{unselectable:"on",class:"".concat(p,"-handler-down-inner")},null)])])}}});function Ct(n,e){var t=y(null);function l(){try{var v=n.value,_=v.selectionStart,f=v.selectionEnd,p=v.value,d=p.substring(0,_),g=p.substring(f);t.value={start:_,end:f,value:p,beforeTxt:d,afterTxt:g}}catch{}}function s(){if(n.value&&t.value&&e.value)try{var v=n.value.value,_=t.value,f=_.beforeTxt,p=_.afterTxt,d=_.start,g=v.length;if(v.endsWith(p))g=v.length-t.value.afterTxt.length;else if(v.startsWith(f))g=f.length;else{var u=f[d-1],R=v.indexOf(u,d-1);R!==-1&&(g=R+1)}n.value.setSelectionRange(g,g)}catch(P){nt(!1,"Something warning of cursor restore. Please fire issue about this: ".concat(P.message))}}return[l,s]}const Dt=function(){var n=y(0),e=function(){Ae.cancel(n.value)};return Ee(function(){e()}),function(t){e(),n.value=Ae(function(){t()})}};var Vt=["prefixCls","min","max","step","defaultValue","value","disabled","readonly","keyboard","controls","autofocus","stringMode","parser","formatter","precision","decimalSeparator","onChange","onInput","onPressEnter","onStep","lazy","class","style"],je=function(e,t){return e||t.isEmpty()?t.toString():t.toNumber()},qe=function(e){var t=X(e);return t.isInvalidate()?null:t},We=function(){return{stringMode:{type:Boolean},defaultValue:{type:[String,Number]},value:{type:[String,Number]},prefixCls:{type:String},min:{type:[String,Number]},max:{type:[String,Number]},step:{type:[String,Number],default:1},tabindex:{type:Number},controls:{type:Boolean,default:!0},readonly:{type:Boolean},disabled:{type:Boolean},autofocus:{type:Boolean},keyboard:{type:Boolean,default:!0},parser:{type:Function},formatter:{type:Function},precision:{type:Number},decimalSeparator:{type:String},onInput:{type:Function},onChange:{type:Function},onPressEnter:{type:Function},onStep:{type:Function},onBlur:{type:Function},onFocus:{type:Function}}};const Bt=pe({compatConfig:{MODE:3},name:"InnerInputNumber",inheritAttrs:!1,props:V(V({},We()),{},{lazy:Boolean}),slots:["upHandler","downHandler"],setup:function(e,t){var l=t.attrs,s=t.slots,v=t.emit,_=t.expose,f=y(),p=y(!1),d=y(!1),g=y(!1),u=y(X(e.value));function R(c){e.value===void 0&&(u.value=c)}var P=function(a,m){if(!m)return e.precision>=0?e.precision:Math.max(le(a),le(e.step))},j=function(a){var m=String(a);if(e.parser)return e.parser(m);var i=m;return e.decimalSeparator&&(i=i.replace(e.decimalSeparator,".")),i.replace(/[^\w.-]+/g,"")},B=y(""),D=function(a,m){if(e.formatter)return e.formatter(a,{userTyping:m,input:String(B.value)});var i=typeof a=="number"?Be(a):a;if(!m){var M=P(i,m);if(Oe(i)&&(e.decimalSeparator||M>=0)){var C=e.decimalSeparator||".";i=ke(i,C,M)}}return i},T=function(){var c=e.value;return u.value.isInvalidate()&&["string","number"].includes(at(c))?Number.isNaN(c)?"":c:D(u.value.toString(),!1)}();B.value=T;function E(c,a){B.value=D(c.isInvalidate()?c.toString(!1):c.toString(!a),a)}var q=ie(function(){return qe(e.max)}),O=ie(function(){return qe(e.min)}),w=ie(function(){return!q.value||!u.value||u.value.isInvalidate()?!1:q.value.lessEquals(u.value)}),J=ie(function(){return!O.value||!u.value||u.value.isInvalidate()?!1:u.value.lessEquals(O.value)}),H=Ct(f,p),$=rt(H,2),W=$[0],K=$[1],h=function(a){return q.value&&!a.lessEquals(q.value)?q.value:O.value&&!O.value.lessEquals(a)?O.value:null},r=function(a){return!h(a)},U=function(a,m){var i=a,M=r(i)||i.isEmpty();if(!i.isEmpty()&&!m&&(i=h(i)||i,M=!0),!e.readonly&&!e.disabled&&M){var C=i.toString(),G=P(C,m);if(G>=0&&(i=X(ke(C,".",G))),!i.equals(u.value)){var Y;R(i),(Y=e.onChange)===null||Y===void 0||Y.call(e,i.isEmpty()?null:je(e.stringMode,i)),e.value===void 0&&E(i,m)}return i}return u.value},S=Dt(),z=function c(a){var m;if(W(),B.value=a,!g.value){var i=j(a),M=X(i);M.isNaN()||U(M,!0)}(m=e.onInput)===null||m===void 0||m.call(e,a),S(function(){var C=a;e.parser||(C=a.replace(/。/g,".")),C!==a&&c(C)})},L=function(){g.value=!0},I=function(){g.value=!1,z(f.value.value)},Z=function(a){z(a.target.value)},ne=function(a){var m,i;if(!(a&&w.value||!a&&J.value)){d.value=!1;var M=X(e.step);a||(M=M.negate());var C=(u.value||X(0)).add(M.toString()),G=U(C,!1);(m=e.onStep)===null||m===void 0||m.call(e,je(e.stringMode,G),{offset:e.step,type:a?"up":"down"}),(i=f.value)===null||i===void 0||i.focus()}},ue=function(a){var m=X(j(B.value)),i=m;m.isNaN()?i=u.value:i=U(m,a),e.value!==void 0?E(u.value,!1):i.isNaN()||E(i,!1)},ge=function(a){var m=a.which;if(d.value=!0,m===me.ENTER){var i;g.value||(d.value=!1),ue(!1),(i=e.onPressEnter)===null||i===void 0||i.call(e,a)}e.keyboard!==!1&&!g.value&&[me.UP,me.DOWN].includes(m)&&(ne(me.UP===m),a.preventDefault())},x=function(){d.value=!1},te=function(a){ue(!1),p.value=!1,d.value=!1,v("blur",a)};return re(function(){return e.precision},function(){u.value.isInvalidate()||E(u.value,!1)},{flush:"post"}),re(function(){return e.value},function(){var c=X(e.value);u.value=c;var a=X(j(B.value));(!c.equals(a)||!d.value||e.formatter)&&E(c,d.value)},{flush:"post"}),re(B,function(){e.formatter&&K()},{flush:"post"}),re(function(){return e.disabled},function(c){c&&(p.value=!1)}),_({focus:function(){var a;(a=f.value)===null||a===void 0||a.focus()},blur:function(){var a;(a=f.value)===null||a===void 0||a.blur()}}),function(){var c,a=V(V({},l),e),m=a.prefixCls,i=m===void 0?"rc-input-number":m,M=a.min,C=a.max,G=a.step,Y=G===void 0?1:G;a.defaultValue,a.value;var se=a.disabled,ce=a.readonly;a.keyboard;var de=a.controls,he=de===void 0?!0:de,ve=a.autofocus;a.stringMode,a.parser,a.formatter,a.precision,a.decimalSeparator,a.onChange,a.onInput,a.onPressEnter,a.onStep;var Ke=a.lazy,Xe=a.class,Je=a.style,Qe=Ue(a,Vt),Ye=s.upHandler,Ze=s.downHandler,Me="".concat(i,"-input"),be={};return Ke?be.onChange=Z:be.onInput=Z,b("div",{class:ee(i,Xe,(c={},N(c,"".concat(i,"-focused"),p.value),N(c,"".concat(i,"-disabled"),se),N(c,"".concat(i,"-readonly"),ce),N(c,"".concat(i,"-not-a-number"),u.value.isNaN()),N(c,"".concat(i,"-out-of-range"),!u.value.isInvalidate()&&!r(u.value)),c)),style:Je,onKeydown:ge,onKeyup:x},[he&&b(Et,{prefixCls:i,upDisabled:w.value,downDisabled:J.value,onStep:ne},{upNode:Ye,downNode:Ze}),b("div",{class:"".concat(Me,"-wrap")},[b("input",V(V(V({autofocus:ve,autocomplete:"off",role:"spinbutton","aria-valuemin":M,"aria-valuemax":C,"aria-valuenow":u.value.isInvalidate()?null:u.value.toString(),step:Y},Qe),{},{ref:f,class:Me,value:B.value,disabled:se,readonly:ce,onFocus:function(et){p.value=!0,v("focus",et)}},be),{},{onBlur:te,onCompositionstart:L,onCompositionend:I}),null)])])}}});function Ne(n){return n!=null}var Ot=["class","bordered","readonly","style","addonBefore","addonAfter","prefix","valueModifiers"],Re=We(),Mt=function(){return V(V({},Re),{},{size:{type:String},bordered:{type:Boolean,default:!0},placeholder:String,name:String,id:String,type:String,addonBefore:_e.any,addonAfter:_e.any,prefix:_e.any,"onUpdate:value":Re.onChange,valueModifiers:Object})},xe=pe({compatConfig:{MODE:3},name:"AInputNumber",inheritAttrs:!1,props:Mt(),slots:["addonBefore","addonAfter","prefix"],setup:function(e,t){var l=t.emit,s=t.expose,v=t.attrs,_=t.slots,f=gt(),p=ot("input-number",e),d=p.prefixCls,g=p.size,u=p.direction,R=y(e.value===void 0?e.defaultValue:e.value),P=y(!1);re(function(){return e.value},function(){R.value=e.value});var j=y(null),B=function(){var w;(w=j.value)===null||w===void 0||w.focus()},D=function(){var w;(w=j.value)===null||w===void 0||w.blur()};s({focus:B,blur:D});var T=function(w){e.value===void 0&&(R.value=w),l("update:value",w),l("change",w),f.onFieldChange()},E=function(w){P.value=!1,l("blur",w),f.onFieldBlur()},q=function(w){P.value=!0,l("focus",w)};return function(){var O,w,J,H,$=V(V({},v),e),W=$.class,K=$.bordered,h=$.readonly,r=$.style,U=$.addonBefore,S=U===void 0?(O=_.addonBefore)===null||O===void 0?void 0:O.call(_):U,z=$.addonAfter,L=z===void 0?(w=_.addonAfter)===null||w===void 0?void 0:w.call(_):z,I=$.prefix,Z=I===void 0?(J=_.prefix)===null||J===void 0?void 0:J.call(_):I,ne=$.valueModifiers,ue=ne===void 0?{}:ne,ge=Ue($,Ot),x=d.value,te=g.value,c=ee((H={},N(H,"".concat(x,"-lg"),te==="large"),N(H,"".concat(x,"-sm"),te==="small"),N(H,"".concat(x,"-rtl"),u.value==="rtl"),N(H,"".concat(x,"-readonly"),h),N(H,"".concat(x,"-borderless"),!K),H),W),a=b(Bt,V(V({},pt(ge,["size","defaultValue"])),{},{ref:j,lazy:!!ue.lazy,value:R.value,class:c,prefixCls:x,readonly:h,onChange:T,onBlur:E,onFocus:q}),{upHandler:function(){return b(De,{class:"".concat(x,"-handler-up-inner")},null)},downHandler:function(){return b(Ce,{class:"".concat(x,"-handler-down-inner")},null)}}),m=Ne(S)||Ne(L);if(Ne(Z)){var i,M=ee("".concat(x,"-affix-wrapper"),(i={},N(i,"".concat(x,"-affix-wrapper-focused"),P.value),N(i,"".concat(x,"-affix-wrapper-disabled"),e.disabled),N(i,"".concat(x,"-affix-wrapper-rtl"),u.value==="rtl"),N(i,"".concat(x,"-affix-wrapper-readonly"),h),N(i,"".concat(x,"-affix-wrapper-borderless"),!K),N(i,"".concat(W),!m&&W),i));a=b("div",{class:M,style:r,onMouseup:function(){return j.value.focus()}},[b("span",{class:"".concat(x,"-prefix")},[Z]),a])}if(m){var C,G="".concat(x,"-group"),Y="".concat(G,"-addon"),se=S?b("div",{class:Y},[S]):null,ce=L?b("div",{class:Y},[L]):null,de=ee("".concat(x,"-wrapper"),G,N({},"".concat(G,"-rtl"),u.value==="rtl")),he=ee("".concat(x,"-group-wrapper"),(C={},N(C,"".concat(x,"-group-wrapper-sm"),te==="small"),N(C,"".concat(x,"-group-wrapper-lg"),te==="large"),N(C,"".concat(x,"-group-wrapper-rtl"),u.value==="rtl"),C),W);a=b("div",{class:he,style:r},[b("div",{class:de},[se,a,ce])])}return ht(a,{style:r})}}});const Pt=it(xe,{install:function(e){return e.component(xe.name,xe),e}}),$t={class:"cho"},At={class:"cho__barExtra"},Ft={class:"cho__list"},zt=["onClick"],jt={class:"cho__top"},qt={class:"cho__left"},Rt={class:"cho__num"},Tt={class:"cho__meta"},Ut={class:"cho__strong"},Ht={class:"cho__right"},Lt={class:"cho__meta"},Gt={class:"cho__strong"},Wt={class:"cho__bottom"},Kt={class:"cho__customer"},Xt={key:0,class:"cho__more"},Jt={key:1,class:"cho__empty"},Qt={key:2,class:"cho__empty"},Yt={key:0,class:"cho__detail"},Zt={class:"cho__detailTitle"},en={class:"cho__rows"},tn={class:"cho__row"},nn={class:"cho__row"},an={dir:"ltr"},rn={class:"cho__row"},on={dir:"ltr"},ln={class:"cho__row"},un={class:"cho__row"},sn={key:0,class:"cho__editTitle"},cn={class:"cho__lineHead"},dn={class:"cho__lineName"},vn={class:"cho__lineQty",dir:"rtl"},fn={class:"cho__lineSum",dir:"ltr"},mn={class:"cho__muted"},pn={key:1,class:"cho__previewTotal"},gn={dir:"ltr"},hn={key:2,class:"cho__error"},bn={key:3,class:"cho__actions"},_n=["disabled"],yn=["disabled"],wn={key:4,class:"cho__confirm"},Sn=["disabled"],Nn=pe({__name:"ChildOrdersView",setup(n){const e=y([]),t=y(!1),l=y(!1),s=y(!1),v=y(null),_=y(1),f=y(!0),p=y(!1),d=y(null);function g(h){const r=Number(h??0);return Number.isFinite(r)?r.toFixed(3):"0.000"}async function u(){if(!(t.value||!f.value)){t.value=!0,s.value=!1;try{const h=await Pe.getExpertChildOrders(_.value,v.value),r=h.rows??[];e.value=[...e.value,...r],r.length<(h.limit??20)?f.value=!1:_.value+=1}catch{s.value=!0,f.value=!1}finally{t.value=!1}}}function R(){e.value=[],_.value=1,f.value=!0,s.value=!1}async function P(){R(),await u()}async function j(h){v.value=h!=null&&h.trim()?h.trim():null,await P()}async function B(){try{await P()}finally{l.value=!1}}const D=y([]),T=y(!1),E=y(""),q=y(!1);function O(h){d.value=h,D.value=(h.items??[]).map(r=>{var U,S,z;return{id:r.id,title:[(S=(U=r.productVariant)==null?void 0:U.product)==null?void 0:S.title,(z=r.productVariant)==null?void 0:z.title].filter(Boolean).join(" — ")||"محصول",qty:r.quantity,netPercent:Number(r.wagePercentSnapshot)-Number(r.discountPercentSnapshot),weight:Number(r.rashWeightGramsSnapshot)}}),E.value="",q.value=!1,p.value=!0}const w=h=>(h.weight??0)*(1+h.netPercent/100),J=h=>w(h)*h.qty,H=ie(()=>D.value.reduce((h,r)=>h+J(r),0));async function $(h){if(!(!d.value||T.value)){if(D.value.some(r=>!r.weight||r.weight<=0)){E.value="وزن هر عدد باید بیشتر از صفر باشد.";return}T.value=!0,E.value="";try{await Pe.adjustExpertChildOrder(d.value.id,D.value.map(r=>({id:r.id,rash_weight:r.weight})),h),p.value=!1,await P()}catch(r){const S=(r instanceof Error?r.message:"").match(/"message":"([^"]+)"/);E.value=S?S[1]:"ثبت تغییرات انجام نشد؛ دوباره تلاش کنید."}finally{T.value=!1,q.value=!1}}}const W=y(null);let K=null;return lt(async()=>{await u(),typeof IntersectionObserver<"u"&&(K=new IntersectionObserver(h=>{h.some(r=>r.isIntersecting)&&u()}),W.value&&K.observe(W.value))}),Ee(()=>K==null?void 0:K.disconnect()),(h,r)=>{const U=st("container");return F(),A("div",$t,[b(dt,{title:"سفارشات مشتریان","back-to":"userPage::hasSubRoute"},{below:ae(()=>[o("div",At,[b(vt,{onSearch:j,"place-holder":"جستجو"})])]),_:1}),b(ut,{spinning:t.value&&!e.value.length,tip:"درحال دریافت اطلاعات"},{default:ae(()=>[b(tt,{modelValue:l.value,"onUpdate:modelValue":r[0]||(r[0]=S=>l.value=S),onRefresh:B},{default:ae(()=>[b(U,{class:"cho__body"},{default:ae(()=>[e.value.length?(F(),A(we,{key:0},[o("div",Ft,[(F(!0),A(we,null,$e(e.value,S=>{var z,L;return F(),A("article",{key:S.id,class:"cho__card",onClick:I=>O(S)},[o("div",jt,[o("div",qt,[o("div",Rt,[r[7]||(r[7]=o("span",{class:"cho__muted"},"سفارش :",-1)),fe(" "+k(S.orderNumber),1)]),o("div",Tt,[o("span",Ut,k(((z=S.items)==null?void 0:z.length)??0),1),r[8]||(r[8]=o("span",{class:"cho__unit"},"آیتم",-1))])]),o("div",Ht,[r[10]||(r[10]=o("span",{class:"cho__status"},"تحویل مسئول فروش",-1)),o("div",Lt,[o("span",Gt,k(g(S.w)),1),r[9]||(r[9]=o("span",{class:"cho__unit"},"گرم",-1))])])]),r[11]||(r[11]=o("div",{class:"cho__divider"},null,-1)),o("div",Wt,[o("div",Kt," نام مشتری : "+k(((L=S.customer)==null?void 0:L.name)??"—"),1),b(Se,{icon:"vuesax-linear:arrow-left-1",size:"20"})])],8,zt)}),128))]),t.value?(F(),A("div",Xt,"در حال دریافت…")):Q("",!0)],64)):t.value?Q("",!0):(F(),A("section",Jt,[b(Se,{icon:"vuesax-linear:box",size:"26"}),o("p",null,k(v.value?"سفارشی با این مشخصات پیدا نشد.":"هنوز سفارشی ثبت نشده است."),1)])),s.value?(F(),A("section",Qt,[b(Se,{icon:"vuesax-linear:danger",size:"26"}),r[12]||(r[12]=o("p",null,"دریافت اطلاعات با خطا روبه‌رو شد.",-1)),o("button",{type:"button",class:"cho__retry",onClick:P},"تلاش دوباره")])):Q("",!0),o("div",{ref_key:"sentinel",ref:W,class:"cho__sentinel"},null,512)]),_:1})]),_:1},8,["modelValue"])]),_:1},8,["spinning"]),b(ye(mt),{visible:p.value,"onUpdate:visible":r[6]||(r[6]=S=>p.value=S),placement:"bottom",height:"auto",closable:!1,"body-style":{padding:"0"}},{default:ae(()=>{var S,z,L;return[d.value?(F(),A("div",Yt,[o("h2",Zt,k(d.value.orderNumber),1),o("dl",en,[o("div",tn,[r[13]||(r[13]=o("dt",null,"نام مشتری",-1)),o("dd",null,k(((S=d.value.customer)==null?void 0:S.name)??"—"),1)]),o("div",nn,[r[14]||(r[14]=o("dt",null,"شماره تماس",-1)),o("dd",an,k(((z=d.value.customer)==null?void 0:z.mobile)??"—"),1)]),o("div",rn,[r[15]||(r[15]=o("dt",null,"وزن کل",-1)),o("dd",on,k(g(d.value.w))+" گرم",1)]),o("div",ln,[r[16]||(r[16]=o("dt",null,"تعداد آیتم‌ها",-1)),o("dd",null,k(((L=d.value.items)==null?void 0:L.length)??0),1)]),o("div",un,[r[17]||(r[17]=o("dt",null,"تاریخ ثبت",-1)),o("dd",null,k(ye(ft)(d.value.createdAt)),1)]),r[18]||(r[18]=o("div",{class:"cho__row"},[o("dt",null,"وضعیت"),o("dd",null,"تحویل مسئول فروش")],-1))]),D.value.length?(F(),A("h3",sn,"وزن واقعی هر عدد (گرم)")):Q("",!0),(F(!0),A(we,null,$e(D.value,I=>(F(),A("div",{key:I.id,class:"cho__line"},[o("div",cn,[o("span",dn,k(I.title),1),o("span",vn,[o("bdi",null,k(I.qty),1),r[19]||(r[19]=fe(" عدد · اجرت ",-1)),o("bdi",null,k(I.netPercent)+"٪",1)])]),b(ye(Pt),{value:I.weight,"onUpdate:value":Z=>I.weight=Z,class:"cho__input",min:.001,step:.01,precision:3,size:"large"},null,8,["value","onUpdate:value"]),o("div",fn,[fe(k(g(J(I)))+" g ",1),o("span",mn,"("+k(I.qty)+" × "+k(g(w(I)))+")",1)])]))),128)),D.value.length?(F(),A("div",pn,[r[20]||(r[20]=o("span",null,"جمع وزن پس از ثبت",-1)),o("b",gn,k(g(H.value))+" گرم",1)])):Q("",!0),E.value?(F(),A("p",hn,k(E.value),1)):Q("",!0),D.value.length?(F(),A("div",bn,[o("button",{type:"button",class:"cho__save",disabled:T.value,onClick:r[1]||(r[1]=I=>$(!1))},"ثبت تغییرات",8,_n),o("button",{type:"button",class:"cho__final",disabled:T.value,onClick:r[2]||(r[2]=I=>q.value=!0)},"ثبت نهایی",8,yn)])):Q("",!0),q.value?(F(),A("p",wn,[r[21]||(r[21]=fe(" آیا مطمئن به ثبت نهایی هستید؟ پس از آن سفارش تحویل مشتری می‌شود. ",-1)),o("button",{type:"button",class:"cho__final",disabled:T.value,onClick:r[3]||(r[3]=I=>$(!0))},"بله، ثبت نهایی",8,Sn),o("button",{type:"button",class:"cho__link",onClick:r[4]||(r[4]=I=>q.value=!1)},"بی‌خیال")])):Q("",!0),o("button",{type:"button",class:"cho__close",onClick:r[5]||(r[5]=I=>p.value=!1)},"بستن")])):Q("",!0)]}),_:1},8,["visible"])])}}}),$n=ct(Nn,[["__scopeId","data-v-d4b5a22b"]]);export{$n as default}; diff --git a/apps/user-app/dist/assets/ChildOrdersView-Dv3hDjiw.css b/apps/user-app/dist/assets/ChildOrdersView-Dv3hDjiw.css deleted file mode 100644 index e18fa54..0000000 --- a/apps/user-app/dist/assets/ChildOrdersView-Dv3hDjiw.css +++ /dev/null @@ -1 +0,0 @@ -.cho__barExtra[data-v-360c4f99]{padding:0 16px 12px}.cho__body[data-v-360c4f99]{padding-top:132px;padding-bottom:90px}.cho__list[data-v-360c4f99]{display:flex;flex-direction:column;padding-top:16px;gap:11px}.cho__card[data-v-360c4f99]{padding:16px;background:var(--c-canvas);border:1px solid var(--c-hairline);border-radius:18px;cursor:pointer;transition:transform .2s ease}.cho__card[data-v-360c4f99]:active{transform:scale(.99)}.cho__top[data-v-360c4f99]{display:flex;justify-content:space-between;gap:12px}.cho__right[data-v-360c4f99]{display:flex;flex-direction:column;align-items:flex-end;gap:8px}.cho__num[data-v-360c4f99]{font-size:15px;font-weight:700;margin-bottom:10px}.cho__muted[data-v-360c4f99]{color:var(--c-inkMuted);font-weight:500;margin-left:4px}.cho__meta[data-v-360c4f99]{display:flex;align-items:baseline;gap:4px}.cho__strong[data-v-360c4f99]{font-size:15px;font-weight:700}.cho__unit[data-v-360c4f99]{font-size:12px;color:var(--c-inkMuted)}.cho__status[data-v-360c4f99]{padding:5px 14px;border-radius:8px;font-size:12px;font-weight:600;color:#06b6d4;background:#06b6d41f;white-space:nowrap}.cho__divider[data-v-360c4f99]{height:1px;background:var(--c-hairline);margin:12px 0}.cho__bottom[data-v-360c4f99]{display:flex;justify-content:space-between;align-items:center}.cho__customer[data-v-360c4f99]{font-size:14px;font-weight:600;color:var(--c-inkMuted)}.cho__more[data-v-360c4f99],.cho__sentinel[data-v-360c4f99]{padding:12px 0;text-align:center;font-size:12px;color:var(--c-inkMuted)}.cho__empty[data-v-360c4f99]{margin-top:8px;padding:34px 20px;border:1px dashed var(--c-hairline);border-radius:18px;display:flex;flex-direction:column;align-items:center;gap:10px;color:var(--c-inkMuted);font-size:13px}.cho__retry[data-v-360c4f99]{padding:8px 18px;border-radius:999px;border:1px solid var(--c-hairline);background:var(--c-canvas);font-family:inherit;font-size:12px;font-weight:600;cursor:pointer}.cho__detail[data-v-360c4f99]{padding:20px 16px 24px}.cho__detailTitle[data-v-360c4f99]{margin:0 0 16px;font-size:17px;font-weight:700}.cho__rows[data-v-360c4f99]{margin:0;display:flex;flex-direction:column;gap:2px}.cho__row[data-v-360c4f99]{display:flex;justify-content:space-between;align-items:center;padding:11px 14px;background:var(--c-canvasSoft);border-radius:10px}.cho__row dt[data-v-360c4f99]{font-size:13px;color:var(--c-inkMuted)}.cho__row dd[data-v-360c4f99]{margin:0;font-size:14px;font-weight:600}.cho__close[data-v-360c4f99]{margin-top:18px;width:100%;padding:13px;border:none;border-radius:14px;background:var(--c-primary);color:#fff;font-family:inherit;font-size:14px;font-weight:700;cursor:pointer} diff --git a/apps/user-app/dist/assets/CollectionView-B48MQuIc.js b/apps/user-app/dist/assets/CollectionView-BzWuMq0j.js similarity index 82% rename from apps/user-app/dist/assets/CollectionView-B48MQuIc.js rename to apps/user-app/dist/assets/CollectionView-BzWuMq0j.js index c004554..476f9ec 100644 --- a/apps/user-app/dist/assets/CollectionView-B48MQuIc.js +++ b/apps/user-app/dist/assets/CollectionView-BzWuMq0j.js @@ -1 +1 @@ -import{d as f,o as v,f as l,x as e,J as d,T as g,k as y,j as c,e as o,F as k,r as C,I as h,g as x,h as P,M as b,a1 as B,O as V,_ as w}from"./index-BFOyCNFT.js";import{P as I}from"./PageBar-Cz1N2fdD.js";import{S as N}from"./SectionHead-Cg_UnoI8.js";import{P as S}from"./ProductCard-k7xfI-K2.js";import{u as F}from"./catalogStore-BuqGxGiV.js";const M={class:"coll"},T={key:0,class:"coll__grid"},j={key:1,class:"coll__empty"},q=f({__name:"CollectionView",setup(z){const r=B(),n=F(),t=y(!1),_=c(()=>n.products),p=c(()=>r.query.page||"مجموعه"),i=c(()=>_.value.filter(a=>a.collections.some(s=>s.collectionId===r.params.id)));return v(async()=>{t.value=!n.loaded;try{await n.load()}catch(a){console.log(a)}finally{t.value=!1}}),(a,s)=>{const m=b("container");return o(),l("div",M,[e(I,{title:p.value,"back-to":"search"},null,8,["title"]),e(g,{spinning:t.value,tip:"درحال دریافت اطلاعات"},{default:d(()=>[e(m,{class:"coll__body"},{default:d(()=>[e(N,{title:"محصولات این مجموعه",subtitle:"برای دیدن جزئیات، روی محصول ضربه بزنید"}),i.value.length?(o(),l("div",T,[(o(!0),l(k,null,C(i.value,u=>(o(),V(S,{key:u.id,value:u},null,8,["value"]))),128))])):t.value?P("",!0):(o(),l("section",j,[e(h,{icon:"vuesax-linear:box",size:"26"}),s[0]||(s[0]=x("p",null,"در این مجموعه محصولی ثبت نشده است.",-1))]))]),_:1})]),_:1},8,["spinning"])])}}}),R=w(q,[["__scopeId","data-v-99a5ba6c"]]);export{R as default}; +import{d as f,o as v,f as l,x as e,J as d,T as g,k as y,j as c,e as o,F as k,r as C,I as h,g as x,h as P,M as b,a1 as B,O as V,_ as w}from"./index-B-RmZRr2.js";import{P as I}from"./PageBar-DmOKrVEQ.js";import{S as N}from"./SectionHead-CJoa_aGh.js";import{P as S}from"./ProductCard-AevItfr3.js";import{u as F}from"./catalogStore-D54EVMFO.js";const M={class:"coll"},T={key:0,class:"coll__grid"},j={key:1,class:"coll__empty"},q=f({__name:"CollectionView",setup(z){const r=B(),n=F(),t=y(!1),_=c(()=>n.products),p=c(()=>r.query.page||"مجموعه"),i=c(()=>_.value.filter(a=>a.collections.some(s=>s.collectionId===r.params.id)));return v(async()=>{t.value=!n.loaded;try{await n.load()}catch(a){console.log(a)}finally{t.value=!1}}),(a,s)=>{const m=b("container");return o(),l("div",M,[e(I,{title:p.value,"back-to":"search"},null,8,["title"]),e(g,{spinning:t.value,tip:"درحال دریافت اطلاعات"},{default:d(()=>[e(m,{class:"coll__body"},{default:d(()=>[e(N,{title:"محصولات این مجموعه",subtitle:"برای دیدن جزئیات، روی محصول ضربه بزنید"}),i.value.length?(o(),l("div",T,[(o(!0),l(k,null,C(i.value,u=>(o(),V(S,{key:u.id,value:u},null,8,["value"]))),128))])):t.value?P("",!0):(o(),l("section",j,[e(h,{icon:"vuesax-linear:box",size:"26"}),s[0]||(s[0]=x("p",null,"در این مجموعه محصولی ثبت نشده است.",-1))]))]),_:1})]),_:1},8,["spinning"])])}}}),R=w(q,[["__scopeId","data-v-99a5ba6c"]]);export{R as default}; diff --git a/apps/user-app/dist/assets/CompleteProfileView-Bz-DU0Ra.js b/apps/user-app/dist/assets/CompleteProfileView-Bz-DU0Ra.js deleted file mode 100644 index 7fb44dd..0000000 --- a/apps/user-app/dist/assets/CompleteProfileView-Bz-DU0Ra.js +++ /dev/null @@ -1 +0,0 @@ -import{d as C,O as P,J as h,q as V,aW as T,e as l,g as t,S as x,W as k,t as v,f as p,i as U,x as o,I as S,h as $,k as u,D,_ as I,T as N,y as z,U as O,M as R,N as E,a3 as M,Z as W,K as j}from"./index-BFOyCNFT.js";import{P as K}from"./PageBar-Cz1N2fdD.js";const L={class:"hg-dialog__inner"},Y={class:"hg-dialog__media"},q={class:"hg-dialog__body"},A={class:"hg-dialog__actions"},J=C({__name:"DialogVantOneButton",props:{timeOut:{},text1:{},text2:{},text3:{}},setup(c){return(_,a)=>(l(),P(V(T),{class:"hg-dialog","show-confirm-button":!1,"show-cancel-button":!1},{default:h(()=>[t("div",L,[t("div",Y,[x(_.$slots,"img",{},()=>[k(v(c.text2),1)])]),t("div",q,[x(_.$slots,"title",{},()=>[k(v(c.text1),1)])]),t("div",A,[x(_.$slots,"button",{},()=>[k(v(c.text3),1)])])])]),_:3}))}}),Q=["disabled"],X=["src"],Z={key:1,class:"siu__icon"},F={class:"siu__text"},G={key:2,class:"siu__badge"},H={key:0,class:"siu__error"},ee=8*1024*1024,se=C({__name:"SingleImageUploader",props:{uploadText:{},purpose:{}},emits:["done"],setup(c,{emit:_}){const a=c,m=_,r=u(null),i=u(!1),n=u(null),d=u(null),g=u(null);async function e(y){var b;const s=y.target,f=(b=s.files)==null?void 0:b[0];if(s.value="",!!f){if(n.value=null,f.size>ee){n.value="حجم فایل بیش از حد مجاز است (۸ مگابایت)";return}i.value=!0;try{const B=await D.uploadDocument(f,a.purpose);d.value=B.id,g.value=f.type.startsWith("image/")?URL.createObjectURL(f):null,m("done",B.id)}catch{n.value="بارگذاری انجام نشد. دوباره تلاش کنید.",d.value=null,g.value=null}finally{i.value=!1}}}return(y,s)=>(l(),p("div",{class:U(["siu",{"is-done":!!d.value,"is-error":!!n.value}])},[t("input",{ref_key:"input",ref:r,type:"file",accept:"image/jpeg,image/png,image/webp,application/pdf",class:"siu__input",onChange:e},null,544),t("button",{type:"button",class:"siu__box",disabled:i.value,onClick:s[0]||(s[0]=f=>{var b;return(b=r.value)==null?void 0:b.click()})},[g.value?(l(),p("img",{key:0,src:g.value,class:"siu__preview",alt:""},null,8,X)):(l(),p("span",Z,[o(S,{icon:i.value?"vuesax-linear:refresh":"vuesax-linear:gallery-add",size:"26"},null,8,["icon"])])),t("span",F,v(i.value?"در حال بارگذاری…":d.value?"تغییر تصویر":c.uploadText),1),d.value&&!i.value?(l(),p("span",G,[o(S,{icon:"vuesax-linear:tick-circle",size:"16"})])):$("",!0)],8,Q),n.value?(l(),p("p",H,v(n.value),1)):$("",!0)],2))}}),w=I(se,[["__scopeId","data-v-a2ff4fd6"]]),ae={class:"cpf"},te={key:0,class:"cpf__error"},ie=["disabled"],oe=C({__name:"CompleteProfileView",setup(c){const _=E(),a=O({business_license_image_id:null,shop_image_id:null,ncode_image_id:null}),m=u(!1),r=u(!1),i=u(null);async function n(){if(i.value=null,!a.business_license_image_id||!a.shop_image_id||!a.ncode_image_id){M.warning("لطفا تمامی عکس های خواسته شده را آپلود کنید");return}m.value=!0;try{await D.completeProfile({business_license_image_id:a.business_license_image_id,shop_image_id:a.shop_image_id,ncode_image_id:a.ncode_image_id}),W().invalidate(j.profile),r.value=!0}catch{i.value="ثبت اطلاعات انجام نشد. دوباره تلاش کنید."}finally{m.value=!1}}function d(){r.value=!1,_.replace({name:"home"})}return(g,e)=>{const y=R("container");return l(),p("div",ae,[o(K,{title:"تکمیل پروفایل","back-to":"userPage::hasSubRoute"}),o(N,{spinning:m.value,tip:"در حال ثبت اطلاعات"},{default:h(()=>[o(y,{class:"cpf__body"},{default:h(()=>[e[4]||(e[4]=t("p",{class:"cpf__lead"}," برای تکمیل پروفایل، سه مدرک زیر را بارگذاری کنید. ",-1)),t("form",{class:"cpf__form",onSubmit:z(n,["prevent"])},[o(w,{"upload-text":"بارگذاری عکس جواز کسب",purpose:"business-license",onDone:e[0]||(e[0]=s=>a.business_license_image_id=s)}),o(w,{"upload-text":"بارگذاری عکس سردر مغازه",purpose:"shop-image",onDone:e[1]||(e[1]=s=>a.shop_image_id=s)}),o(w,{"upload-text":"بارگذاری عکس کارت ملی",purpose:"national-card",onDone:e[2]||(e[2]=s=>a.ncode_image_id=s)}),i.value?(l(),p("p",te,v(i.value),1)):$("",!0),t("button",{type:"submit",class:"cpf__submit",disabled:m.value}," بارگذاری اطلاعات ",8,ie)],32)]),_:1})]),_:1},8,["spinning"]),o(J,{show:r.value,"onUpdate:show":e[3]||(e[3]=s=>r.value=s),"time-out":-1,"close-on-click-overlay":!1},{title:h(()=>[...e[5]||(e[5]=[t("div",{class:"cpf__dialogText"}," تکمیل اطلاعات شما با موفقیت انجام شد. ",-1)])]),button:h(()=>[t("div",{class:"cpf__dialogBtn",onClick:d},"متوجه شدم")]),_:1},8,["show"])])}}}),ue=I(oe,[["__scopeId","data-v-f5bc0a51"]]);export{ue as default}; diff --git a/apps/user-app/dist/assets/CompleteProfileView-C-gvGVz2.css b/apps/user-app/dist/assets/CompleteProfileView-C-gvGVz2.css new file mode 100644 index 0000000..1fdb69d --- /dev/null +++ b/apps/user-app/dist/assets/CompleteProfileView-C-gvGVz2.css @@ -0,0 +1 @@ +.van-dialog.hg-dialog{width:min(86vw,340px)!important;max-width:340px;overflow:hidden;border-radius:28px!important;background:var(--c-canvas)!important;box-shadow:0 18px 48px #0f172a2e,0 2px 8px #0f172a0f!important}.van-dialog.hg-dialog .van-dialog__content{padding:0!important}.van-dialog__confirm,.van-dialog__cancel,.van-dialog.hg-dialog .van-dialog__footer{display:none!important}.hg-dialog__inner{display:flex;flex-direction:column;align-items:stretch;padding:8px 0 0}.hg-dialog__media{display:flex;justify-content:center;padding:12px 20px 0}.hg-dialog__media img{max-width:78%;max-height:128px;width:auto;height:auto;-o-object-fit:contain;object-fit:contain}.hg-dialog__body{padding:10px 22px 6px;text-align:center;font-size:14.5px;font-weight:600;line-height:1.75;color:var(--c-ink)}.hg-dialog__body>div{padding:0!important;margin:0!important;text-align:center!important;font-size:inherit;font-weight:inherit;line-height:inherit}.hg-dialog__actions{display:flex;flex-direction:column;gap:8px;padding:14px 16px 16px}.hg-dialog__actions>*{display:flex;align-items:center;justify-content:center;min-height:46px;padding:0 14px;border-radius:14px;font-size:14px;font-weight:700;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;background:var(--c-primary)!important;color:#fff!important;transition:transform .12s ease}.hg-dialog__actions>*:active{transform:scale(.985)}.cpf__body[data-v-f5bc0a51]{padding-top:90px;padding-bottom:40px}.cpf__lead[data-v-f5bc0a51]{margin:4px 0 18px;font-size:13px;color:var(--c-inkMuted)}.cpf__form[data-v-f5bc0a51]{display:flex;flex-direction:column;gap:14px}.cpf__error[data-v-f5bc0a51]{margin:2px;font-size:12.5px;color:var(--c-red)}.cpf__submit[data-v-f5bc0a51]{margin-top:6px;width:100%;padding:14px;border:none;border-radius:14px;background:var(--c-primary);color:#fff;font-family:inherit;font-size:15px;font-weight:700;cursor:pointer}.cpf__submit[data-v-f5bc0a51]:disabled{opacity:.6;cursor:progress}.cpf__dialogText[data-v-f5bc0a51]{padding:20px;line-height:1.9;text-align:justify;font-size:14px}.cpf__dialogBtn[data-v-f5bc0a51]{text-align:center;cursor:pointer} diff --git a/apps/user-app/dist/assets/CompleteProfileView-D9l9B3Tw.css b/apps/user-app/dist/assets/CompleteProfileView-D9l9B3Tw.css deleted file mode 100644 index a83c122..0000000 --- a/apps/user-app/dist/assets/CompleteProfileView-D9l9B3Tw.css +++ /dev/null @@ -1 +0,0 @@ -.van-dialog.hg-dialog{width:min(86vw,340px)!important;max-width:340px;overflow:hidden;border-radius:28px!important;background:var(--c-canvas)!important;box-shadow:0 18px 48px #0f172a2e,0 2px 8px #0f172a0f!important}.van-dialog.hg-dialog .van-dialog__content{padding:0!important}.van-dialog__confirm,.van-dialog__cancel,.van-dialog.hg-dialog .van-dialog__footer{display:none!important}.hg-dialog__inner{display:flex;flex-direction:column;align-items:stretch;padding:8px 0 0}.hg-dialog__media{display:flex;justify-content:center;padding:12px 20px 0}.hg-dialog__media img{max-width:78%;max-height:128px;width:auto;height:auto;-o-object-fit:contain;object-fit:contain}.hg-dialog__body{padding:10px 22px 6px;text-align:center;font-size:14.5px;font-weight:600;line-height:1.75;color:var(--c-ink)}.hg-dialog__body>div{padding:0!important;margin:0!important;text-align:center!important;font-size:inherit;font-weight:inherit;line-height:inherit}.hg-dialog__actions{display:flex;flex-direction:column;gap:8px;padding:14px 16px 16px}.hg-dialog__actions>*{display:flex;align-items:center;justify-content:center;min-height:46px;padding:0 14px;border-radius:14px;font-size:14px;font-weight:700;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;background:var(--c-primary)!important;color:#fff!important;transition:transform .12s ease}.hg-dialog__actions>*:active{transform:scale(.985)}.siu__input[data-v-a2ff4fd6]{display:none}.siu__box[data-v-a2ff4fd6]{position:relative;width:100%;min-height:132px;padding:20px 16px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;border:1px dashed var(--c-hairline);border-radius:18px;background:var(--c-canvasSoft);font-family:inherit;cursor:pointer;overflow:hidden;transition:border-color .2s ease}.siu__box[data-v-a2ff4fd6]:disabled{cursor:progress}.is-done .siu__box[data-v-a2ff4fd6]{border-style:solid;border-color:var(--c-green)}.is-error .siu__box[data-v-a2ff4fd6]{border-color:var(--c-red)}.siu__preview[data-v-a2ff4fd6]{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;-o-object-fit:cover;object-fit:cover;opacity:.32}.siu__icon[data-v-a2ff4fd6],.siu__text[data-v-a2ff4fd6]{position:relative;z-index:1}.siu__text[data-v-a2ff4fd6]{font-size:13px;font-weight:600;color:var(--c-inkMuted)}.siu__badge[data-v-a2ff4fd6]{position:absolute;top:10px;left:10px;z-index:1;display:flex;color:var(--c-green)}.siu__error[data-v-a2ff4fd6]{margin:7px 2px 0;font-size:12px;color:var(--c-red)}.cpf__body[data-v-f5bc0a51]{padding-top:90px;padding-bottom:40px}.cpf__lead[data-v-f5bc0a51]{margin:4px 0 18px;font-size:13px;color:var(--c-inkMuted)}.cpf__form[data-v-f5bc0a51]{display:flex;flex-direction:column;gap:14px}.cpf__error[data-v-f5bc0a51]{margin:2px;font-size:12.5px;color:var(--c-red)}.cpf__submit[data-v-f5bc0a51]{margin-top:6px;width:100%;padding:14px;border:none;border-radius:14px;background:var(--c-primary);color:#fff;font-family:inherit;font-size:15px;font-weight:700;cursor:pointer}.cpf__submit[data-v-f5bc0a51]:disabled{opacity:.6;cursor:progress}.cpf__dialogText[data-v-f5bc0a51]{padding:20px;line-height:1.9;text-align:justify;font-size:14px}.cpf__dialogBtn[data-v-f5bc0a51]{text-align:center;cursor:pointer} diff --git a/apps/user-app/dist/assets/CompleteProfileView-DJF4Zx67.js b/apps/user-app/dist/assets/CompleteProfileView-DJF4Zx67.js new file mode 100644 index 0000000..5a126a7 --- /dev/null +++ b/apps/user-app/dist/assets/CompleteProfileView-DJF4Zx67.js @@ -0,0 +1 @@ +import{d as b,O as y,J as n,q as k,aX as C,e as g,g as t,S as c,W as m,t as u,f as v,x as o,T as S,k as p,h as $,y as B,U as D,M as V,N as P,a3 as N,D as O,Z as T,K as U,_ as E}from"./index-B-RmZRr2.js";import{P as I}from"./PageBar-DmOKrVEQ.js";import{S as f}from"./SingleImageUploader-CX4x2X-j.js";const K={class:"hg-dialog__inner"},M={class:"hg-dialog__media"},R={class:"hg-dialog__body"},q={class:"hg-dialog__actions"},J=b({__name:"DialogVantOneButton",props:{timeOut:{},text1:{},text2:{},text3:{}},setup(l){return(i,s)=>(g(),y(k(C),{class:"hg-dialog","show-confirm-button":!1,"show-cancel-button":!1},{default:n(()=>[t("div",K,[t("div",M,[c(i.$slots,"img",{},()=>[m(u(l.text2),1)])]),t("div",R,[c(i.$slots,"title",{},()=>[m(u(l.text1),1)])]),t("div",q,[c(i.$slots,"button",{},()=>[m(u(l.text3),1)])])])]),_:3}))}}),Q={class:"cpf"},W={key:0,class:"cpf__error"},X=["disabled"],Y=b({__name:"CompleteProfileView",setup(l){const i=P(),s=D({business_license_image_id:null,shop_image_id:null,ncode_image_id:null}),_=p(!1),d=p(!1),r=p(null);async function h(){if(r.value=null,!s.business_license_image_id||!s.shop_image_id||!s.ncode_image_id){N.warning("لطفا تمامی عکس های خواسته شده را آپلود کنید");return}_.value=!0;try{await O.completeProfile({business_license_image_id:s.business_license_image_id,shop_image_id:s.shop_image_id,ncode_image_id:s.ncode_image_id}),T().invalidate(U.profile),d.value=!0}catch{r.value="ثبت اطلاعات انجام نشد. دوباره تلاش کنید."}finally{_.value=!1}}function x(){d.value=!1,i.replace({name:"home"})}return(Z,e)=>{const w=V("container");return g(),v("div",Q,[o(I,{title:"تکمیل پروفایل","back-to":"userPage::hasSubRoute"}),o(S,{spinning:_.value,tip:"در حال ثبت اطلاعات"},{default:n(()=>[o(w,{class:"cpf__body"},{default:n(()=>[e[4]||(e[4]=t("p",{class:"cpf__lead"}," برای تکمیل پروفایل، سه مدرک زیر را بارگذاری کنید. ",-1)),t("form",{class:"cpf__form",onSubmit:B(h,["prevent"])},[o(f,{"upload-text":"بارگذاری عکس جواز کسب",purpose:"business-license",onDone:e[0]||(e[0]=a=>s.business_license_image_id=a)}),o(f,{"upload-text":"بارگذاری عکس سردر مغازه",purpose:"shop-image",onDone:e[1]||(e[1]=a=>s.shop_image_id=a)}),o(f,{"upload-text":"بارگذاری عکس کارت ملی",purpose:"national-card",onDone:e[2]||(e[2]=a=>s.ncode_image_id=a)}),r.value?(g(),v("p",W,u(r.value),1)):$("",!0),t("button",{type:"submit",class:"cpf__submit",disabled:_.value}," بارگذاری اطلاعات ",8,X)],32)]),_:1})]),_:1},8,["spinning"]),o(J,{show:d.value,"onUpdate:show":e[3]||(e[3]=a=>d.value=a),"time-out":-1,"close-on-click-overlay":!1},{title:n(()=>[...e[5]||(e[5]=[t("div",{class:"cpf__dialogText"}," تکمیل اطلاعات شما با موفقیت انجام شد. ",-1)])]),button:n(()=>[t("div",{class:"cpf__dialogBtn",onClick:x},"متوجه شدم")]),_:1},8,["show"])])}}}),F=E(Y,[["__scopeId","data-v-f5bc0a51"]]);export{F as default}; diff --git a/apps/user-app/dist/assets/CustomerChoiceView-BSt75k0Q.css b/apps/user-app/dist/assets/CustomerChoiceView-BSt75k0Q.css deleted file mode 100644 index 701a9dd..0000000 --- a/apps/user-app/dist/assets/CustomerChoiceView-BSt75k0Q.css +++ /dev/null @@ -1 +0,0 @@ -.cch__barExtra[data-v-e75567d6]{padding:0 16px 12px}.cch__body[data-v-e75567d6]{padding-top:132px;padding-bottom:90px}.cch__list[data-v-e75567d6]{display:flex;flex-direction:column;padding-top:16px;gap:11px}.cch__card[data-v-e75567d6]{padding:16px;background:var(--c-canvas);border:1px solid var(--c-hairline);border-radius:18px;cursor:pointer;transition:transform .2s ease}.cch__card[data-v-e75567d6]:active{transform:scale(.99)}.cch__head[data-v-e75567d6]{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:12px}.cch__name[data-v-e75567d6]{margin:0;font-size:15.5px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cch__state[data-v-e75567d6]{flex:0 0 auto;padding:4px 12px;border-radius:999px;font-size:11.5px;font-weight:600}.cch__state.is-on[data-v-e75567d6]{color:var(--c-green);background:rgb(var(--c-green-rgb) / 14%)}.cch__state.is-off[data-v-e75567d6]{color:var(--c-red);background:rgb(var(--c-red-rgb) / 12%)}.cch__facts[data-v-e75567d6]{display:flex;flex-direction:column;gap:7px}.cch__fact[data-v-e75567d6]{display:flex;align-items:center;gap:7px;font-size:13px;font-weight:600;color:var(--c-inkMuted)}.cch__empty[data-v-e75567d6]{margin-top:8px;padding:34px 20px;border:1px dashed var(--c-hairline);border-radius:18px;display:flex;flex-direction:column;align-items:center;gap:10px;color:var(--c-inkMuted);font-size:13px}.cch__retry[data-v-e75567d6]{padding:8px 18px;border-radius:999px;border:1px solid var(--c-hairline);background:var(--c-canvas);font-family:inherit;font-size:12px;font-weight:600;cursor:pointer}.cch__detail[data-v-e75567d6]{padding:20px 16px 24px}.cch__detailTitle[data-v-e75567d6]{margin:0 0 16px;font-size:17px;font-weight:700}.cch__rows[data-v-e75567d6]{margin:0;display:flex;flex-direction:column;gap:2px}.cch__row[data-v-e75567d6]{display:flex;justify-content:space-between;align-items:center;padding:11px 14px;background:var(--c-canvasSoft);border-radius:10px}.cch__row dt[data-v-e75567d6]{font-size:13px;color:var(--c-inkMuted)}.cch__row dd[data-v-e75567d6]{margin:0;font-size:14px;font-weight:600}.cch__enter[data-v-e75567d6]{margin-top:18px;width:100%;padding:13px;border:none;border-radius:14px;background:var(--c-primary);color:#fff;font-family:inherit;font-size:14px;font-weight:700;cursor:pointer}.cch__enter[data-v-e75567d6]:disabled{opacity:.6;cursor:default}.cch__close[data-v-e75567d6]{margin-top:10px;width:100%;padding:13px;border:1px solid rgb(var(--c-primary-rgb) / 35%);border-radius:14px;background:transparent;color:var(--c-primary);font-family:inherit;font-size:14px;font-weight:700;cursor:pointer} diff --git a/apps/user-app/dist/assets/CustomerChoiceView-CCVW8w6E.js b/apps/user-app/dist/assets/CustomerChoiceView-CCVW8w6E.js new file mode 100644 index 0000000..6f8cbb7 --- /dev/null +++ b/apps/user-app/dist/assets/CustomerChoiceView-CCVW8w6E.js @@ -0,0 +1 @@ +import{d as J,G as L,E as H,o as K,f as u,x as d,J as f,T as Q,q as D,k as i,D as N,e as r,g as t,F as X,r as Y,I as g,t as n,h,i as T,W as Z,v as c,aW as _,y as ee,a3 as S,U as te,M as se,N as le,_ as ae}from"./index-B-RmZRr2.js";import{A as ne}from"./AppPullRefresh-RDVLXVM_.js";import{P as oe}from"./PageBar-DmOKrVEQ.js";import{S as ie}from"./SearchInput-BkGXK-xm.js";import{D as P}from"./index-DXKwa_Wp.js";import"./KeyCode-DsOsmuVa.js";import"./classCallCheck-BMo4V_0Q.js";import"./raf-nDFcuFT6.js";const de={class:"cch"},ue={class:"cch__barExtra"},re={key:0,class:"cch__list"},ce=["onClick"],_e={class:"cch__head"},ve={class:"cch__name"},pe={class:"cch__facts"},me={class:"cch__fact"},fe={dir:"ltr"},he={class:"cch__fact"},be={dir:"ltr"},ye={key:0,class:"cch__fact"},ge={key:1,class:"cch__empty"},xe={key:2,class:"cch__empty"},we={key:0,class:"cch__detail"},ke={class:"cch__detailTitle"},Ce={class:"cch__rows"},Ve={class:"cch__row"},ze={dir:"ltr"},Ue={class:"cch__row"},Se={dir:"ltr"},Ee={class:"cch__row"},$e={class:"cch__row"},Ne={class:"cch__row"},Ae={dir:"ltr"},De={class:"cch__row"},Te={dir:"ltr"},Pe={class:"cch__row"},Re=["disabled"],Be={class:"cch__actions"},Fe=["disabled"],Ie={key:0,class:"cch__confirm"},Me=["disabled"],Oe={class:"cch__field"},We={class:"cch__field"},je={class:"cch__field"},qe={class:"cch__field"},Ge={class:"cch__field"},Je={class:"cch__field"},Le={class:"cch__field"},He={class:"cch__field"},Ke={class:"cch__field"},Qe={key:0,class:"cch__error"},Xe=["disabled"],Ye=J({__name:"CustomerChoiceView",setup(Ze){const R=le(),B=L(),F=H(),x=i(!1),v=i([]),w=i(!1),E=i(!1),k=i(!1),$=i(null),p=i(!1),o=i(null);function A(l){const e=Number(l??0);return Number.isFinite(e)?e.toFixed(3):"0.000"}async function b(){w.value=!0,k.value=!1;try{v.value=await N.getExpertCustomers($.value)}catch{k.value=!0,v.value=[]}finally{w.value=!1}}async function I(l){$.value=l!=null&&l.trim()?l.trim():null,await b()}async function M(){try{await b()}finally{E.value=!1}}function O(l){o.value=l,p.value=!0}async function W(l){x.value=!0;try{F.clear(),B.setActingAs({id:l.id,name:l.name??l.fullName??l.mobile??""}),p.value=!1,await R.push({name:"userPage::hasSubRoute"}),S.success(`وارد حساب ${l.name??""} شدید`)}finally{x.value=!1}}const C=i(!1),V=i(!1);async function j(l){C.value=!0;try{const e=await N.toggleExpertCustomer(l.id);l.active=e.active;const U=v.value.find(s=>s.id===l.id);U&&(U.active=e.active),S.success(e.active===1?"کاربر فعال شد":"کاربر غیرفعال شد")}catch{S.error("تغییر وضعیت انجام نشد؛ دوباره تلاش کنید.")}finally{C.value=!1,V.value=!1}}const y=i(!1),z=i(!1),m=i(""),a=te({id:"",fname:"",lname:"",mobile:"",phone:"",store_name:"",pasazh_name:"",national_code:"",birth_date:"",address:""});function q(l){Object.assign(a,{id:l.id,fname:l.fname??"",lname:l.lname??"",mobile:l.mobile??"",phone:l.phone??"",store_name:l.store_name??"",pasazh_name:l.pasazh_name??"",national_code:l.national_code??"",birth_date:l.birth_date??"",address:l.address??""}),m.value="",p.value=!1,y.value=!0}async function G(){if(!a.fname||!a.lname){m.value="نام و نام خانوادگی الزامی است.";return}z.value=!0,m.value="";try{await N.updateExpertCustomer(a.id,{fname:a.fname,lname:a.lname,mobile:a.mobile||void 0,phone:a.phone,store_name:a.store_name,pasazh_name:a.pasazh_name,national_code:a.national_code,birth_date:a.birth_date,address:a.address}),y.value=!1,S.success("اطلاعات مشتری ثبت شد"),await b()}catch(l){const e=(l instanceof Error?l.message:"").match(/"message":"([^"]+)"/);m.value=e?e[1]:"ثبت تغییرات انجام نشد؛ دوباره تلاش کنید."}finally{z.value=!1}}return K(b),(l,e)=>{const U=se("container");return r(),u("div",de,[d(oe,{title:"لیست مشتریان","back-to":"userPage::hasSubRoute"},{below:f(()=>[t("div",ue,[d(ie,{onSearch:I,"place-holder":"جستجو"})])]),_:1}),d(Q,{spinning:w.value&&!v.value.length,tip:"درحال دریافت اطلاعات"},{default:f(()=>[d(ne,{modelValue:E.value,"onUpdate:modelValue":e[0]||(e[0]=s=>E.value=s),onRefresh:M},{default:f(()=>[d(U,{class:"cch__body"},{default:f(()=>[v.value.length?(r(),u("div",re,[(r(!0),u(X,null,Y(v.value,s=>(r(),u("article",{key:s.id,class:"cch__card",onClick:et=>O(s)},[t("div",_e,[t("h3",ve,n(s.name),1),t("span",{class:T(["cch__state",s.active===1?"is-on":"is-off"])},n(s.active===1?"فعال":"غیرفعال"),3)]),t("div",pe,[t("div",me,[d(g,{icon:"vuesax-linear:mobile",size:"15"}),t("span",fe,n(s.mobile||"—"),1)]),t("div",he,[d(g,{icon:"vuesax-linear:call",size:"15"}),t("span",be,n(s.phone||"—"),1)]),s.store_name?(r(),u("div",ye,[d(g,{icon:"vuesax-linear:shop",size:"15"}),t("span",null,n(s.store_name),1)])):h("",!0)])],8,ce))),128))])):!w.value&&!k.value?(r(),u("section",ge,[d(g,{icon:"vuesax-linear:profile-2user",size:"26"}),t("p",null,n($.value?"مشتری با این مشخصات پیدا نشد.":"هنوز مشتری‌ای به شما معرفی نشده است."),1)])):h("",!0),k.value?(r(),u("section",xe,[d(g,{icon:"vuesax-linear:danger",size:"26"}),e[19]||(e[19]=t("p",null,"دریافت اطلاعات با خطا روبه‌رو شد.",-1)),t("button",{type:"button",class:"cch__retry",onClick:b},"تلاش دوباره")])):h("",!0)]),_:1})]),_:1},8,["modelValue"])]),_:1},8,["spinning"]),d(D(P),{visible:p.value,"onUpdate:visible":e[7]||(e[7]=s=>p.value=s),placement:"bottom",height:"auto",closable:!1,"body-style":{padding:"0"}},{default:f(()=>[o.value?(r(),u("div",we,[t("h2",ke,n(o.value.name),1),t("dl",Ce,[t("div",Ve,[e[20]||(e[20]=t("dt",null,"موبایل",-1)),t("dd",ze,n(o.value.mobile||"—"),1)]),t("div",Ue,[e[21]||(e[21]=t("dt",null,"تلفن",-1)),t("dd",Se,n(o.value.phone||"—"),1)]),t("div",Ee,[e[22]||(e[22]=t("dt",null,"نام مغازه",-1)),t("dd",null,n(o.value.store_name||"—"),1)]),t("div",$e,[e[23]||(e[23]=t("dt",null,"نام پاساژ",-1)),t("dd",null,n(o.value.pasazh_name||"—"),1)]),t("div",Ne,[e[24]||(e[24]=t("dt",null,"سقف اعتبار",-1)),t("dd",Ae,n(A(o.value.gram_level))+" گرم",1)]),t("div",De,[e[25]||(e[25]=t("dt",null,"بدهی گرمی",-1)),t("dd",Te,n(A(o.value.remain))+" گرم",1)]),t("div",Pe,[e[26]||(e[26]=t("dt",null,"وضعیت",-1)),t("dd",null,n(o.value.active===1?"فعال":"غیرفعال"),1)])]),t("button",{type:"button",class:"cch__enter",disabled:x.value,onClick:e[1]||(e[1]=s=>W(o.value))},n(x.value?"در حال ورود…":"ورود به حساب این مشتری"),9,Re),t("div",Be,[t("button",{type:"button",class:"cch__act",onClick:e[2]||(e[2]=s=>q(o.value))},"ویرایش اطلاعات"),t("button",{type:"button",class:T(["cch__act",{"is-danger":o.value.active===1}]),disabled:C.value,onClick:e[3]||(e[3]=s=>V.value=!0)},n(o.value.active===1?"غیرفعال کردن":"فعال کردن"),11,Fe)]),V.value?(r(),u("p",Ie,[Z(n(o.value.active===1?"کاربر غیرفعال شود؟":"کاربر فعال شود؟")+" ",1),t("button",{type:"button",class:"cch__act is-danger",disabled:C.value,onClick:e[4]||(e[4]=s=>j(o.value))},"بله",8,Me),t("button",{type:"button",class:"cch__link",onClick:e[5]||(e[5]=s=>V.value=!1)},"بی‌خیال")])):h("",!0),t("button",{type:"button",class:"cch__close",onClick:e[6]||(e[6]=s=>p.value=!1)},"بستن")])):h("",!0)]),_:1},8,["visible"]),d(D(P),{visible:y.value,"onUpdate:visible":e[18]||(e[18]=s=>y.value=s),placement:"bottom",height:"auto",closable:!1,"body-style":{padding:"0"}},{default:f(()=>[t("form",{class:"cch__detail",onSubmit:ee(G,["prevent"])},[e[36]||(e[36]=t("h2",{class:"cch__detailTitle"},"ویرایش اطلاعات مشتری",-1)),t("label",Oe,[e[27]||(e[27]=t("span",null,"نام",-1)),c(t("input",{"onUpdate:modelValue":e[8]||(e[8]=s=>a.fname=s),type:"text",maxlength:"100"},null,512),[[_,a.fname,void 0,{trim:!0}]])]),t("label",We,[e[28]||(e[28]=t("span",null,"نام خانوادگی",-1)),c(t("input",{"onUpdate:modelValue":e[9]||(e[9]=s=>a.lname=s),type:"text",maxlength:"100"},null,512),[[_,a.lname,void 0,{trim:!0}]])]),t("label",je,[e[29]||(e[29]=t("span",null,"موبایل",-1)),c(t("input",{"onUpdate:modelValue":e[10]||(e[10]=s=>a.mobile=s),type:"tel",dir:"ltr",maxlength:"11",inputmode:"numeric"},null,512),[[_,a.mobile,void 0,{trim:!0}]])]),t("label",qe,[e[30]||(e[30]=t("span",null,"تلفن ثابت",-1)),c(t("input",{"onUpdate:modelValue":e[11]||(e[11]=s=>a.phone=s),type:"tel",dir:"ltr",maxlength:"30"},null,512),[[_,a.phone,void 0,{trim:!0}]])]),t("label",Ge,[e[31]||(e[31]=t("span",null,"نام فروشگاه",-1)),c(t("input",{"onUpdate:modelValue":e[12]||(e[12]=s=>a.store_name=s),type:"text",maxlength:"150"},null,512),[[_,a.store_name,void 0,{trim:!0}]])]),t("label",Je,[e[32]||(e[32]=t("span",null,"نام پاساژ",-1)),c(t("input",{"onUpdate:modelValue":e[13]||(e[13]=s=>a.pasazh_name=s),type:"text",maxlength:"150"},null,512),[[_,a.pasazh_name,void 0,{trim:!0}]])]),t("label",Le,[e[33]||(e[33]=t("span",null,"کد ملی",-1)),c(t("input",{"onUpdate:modelValue":e[14]||(e[14]=s=>a.national_code=s),type:"text",dir:"ltr",maxlength:"10",inputmode:"numeric"},null,512),[[_,a.national_code,void 0,{trim:!0}]])]),t("label",He,[e[34]||(e[34]=t("span",null,"تاریخ تولد",-1)),c(t("input",{"onUpdate:modelValue":e[15]||(e[15]=s=>a.birth_date=s),type:"date",dir:"ltr"},null,512),[[_,a.birth_date]])]),t("label",Ke,[e[35]||(e[35]=t("span",null,"آدرس",-1)),c(t("textarea",{"onUpdate:modelValue":e[16]||(e[16]=s=>a.address=s),rows:"2",maxlength:"500"},null,512),[[_,a.address,void 0,{trim:!0}]])]),m.value?(r(),u("p",Qe,n(m.value),1)):h("",!0),t("button",{type:"submit",class:"cch__enter",disabled:z.value},n(z.value?"در حال ثبت…":"ثبت تغییرات"),9,Xe),t("button",{type:"button",class:"cch__close",onClick:e[17]||(e[17]=s=>y.value=!1)},"بستن")],32)]),_:1},8,["visible"])])}}}),ut=ae(Ye,[["__scopeId","data-v-742c3905"]]);export{ut as default}; diff --git a/apps/user-app/dist/assets/CustomerChoiceView-Ck51_wfq.css b/apps/user-app/dist/assets/CustomerChoiceView-Ck51_wfq.css new file mode 100644 index 0000000..fa220a4 --- /dev/null +++ b/apps/user-app/dist/assets/CustomerChoiceView-Ck51_wfq.css @@ -0,0 +1 @@ +.cch__barExtra[data-v-742c3905]{padding:0 16px 12px}.cch__body[data-v-742c3905]{padding-top:132px;padding-bottom:90px}.cch__list[data-v-742c3905]{display:flex;flex-direction:column;padding-top:16px;gap:11px}.cch__card[data-v-742c3905]{padding:16px;background:var(--c-canvas);border:1px solid var(--c-hairline);border-radius:18px;cursor:pointer;transition:transform .2s ease}.cch__card[data-v-742c3905]:active{transform:scale(.99)}.cch__head[data-v-742c3905]{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:12px}.cch__name[data-v-742c3905]{margin:0;font-size:15.5px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cch__state[data-v-742c3905]{flex:0 0 auto;padding:4px 12px;border-radius:999px;font-size:11.5px;font-weight:600}.cch__state.is-on[data-v-742c3905]{color:var(--c-green);background:rgb(var(--c-green-rgb) / 14%)}.cch__state.is-off[data-v-742c3905]{color:var(--c-red);background:rgb(var(--c-red-rgb) / 12%)}.cch__facts[data-v-742c3905]{display:flex;flex-direction:column;gap:7px}.cch__fact[data-v-742c3905]{display:flex;align-items:center;gap:7px;font-size:13px;font-weight:600;color:var(--c-inkMuted)}.cch__empty[data-v-742c3905]{margin-top:8px;padding:34px 20px;border:1px dashed var(--c-hairline);border-radius:18px;display:flex;flex-direction:column;align-items:center;gap:10px;color:var(--c-inkMuted);font-size:13px}.cch__retry[data-v-742c3905]{padding:8px 18px;border-radius:999px;border:1px solid var(--c-hairline);background:var(--c-canvas);font-family:inherit;font-size:12px;font-weight:600;cursor:pointer}.cch__detail[data-v-742c3905]{padding:20px 16px 24px}.cch__detailTitle[data-v-742c3905]{margin:0 0 16px;font-size:17px;font-weight:700}.cch__rows[data-v-742c3905]{margin:0;display:flex;flex-direction:column;gap:2px}.cch__row[data-v-742c3905]{display:flex;justify-content:space-between;align-items:center;padding:11px 14px;background:var(--c-canvasSoft);border-radius:10px}.cch__row dt[data-v-742c3905]{font-size:13px;color:var(--c-inkMuted)}.cch__row dd[data-v-742c3905]{margin:0;font-size:14px;font-weight:600}.cch__enter[data-v-742c3905]{margin-top:18px;width:100%;padding:13px;border:none;border-radius:14px;background:var(--c-primary);color:#fff;font-family:inherit;font-size:14px;font-weight:700;cursor:pointer}.cch__enter[data-v-742c3905]:disabled{opacity:.6;cursor:default}.cch__actions[data-v-742c3905]{display:flex;gap:10px;margin-top:10px}.cch__act[data-v-742c3905]{flex:1;padding:12px;border:1px solid var(--c-wine);border-radius:14px;background:transparent;color:var(--c-wine);font-family:inherit;font-size:13.5px;font-weight:700;cursor:pointer}.cch__act.is-danger[data-v-742c3905]{border-color:var(--c-red);color:var(--c-red)}.cch__act[data-v-742c3905]:disabled{opacity:.5;cursor:default}.cch__confirm[data-v-742c3905]{display:flex;align-items:center;gap:10px;margin:12px 0 0;font-size:13px;color:var(--c-inkSoft)}.cch__link[data-v-742c3905]{border:none;background:transparent;color:var(--c-inkFaint);font-family:inherit;font-size:12.5px;cursor:pointer}.cch__field[data-v-742c3905]{display:flex;flex-direction:column;gap:5px;padding:8px 0;font-size:12.5px;color:var(--c-inkSoft)}.cch__field input[data-v-742c3905],.cch__field textarea[data-v-742c3905]{width:100%;padding:10px 12px;border:1px solid var(--c-hairline);border-radius:12px;background:transparent;color:var(--c-ink);font-family:inherit;font-size:14px}.cch__error[data-v-742c3905]{margin:8px 0 0;font-size:12.5px;color:var(--c-red)}.cch__close[data-v-742c3905]{margin-top:10px;width:100%;padding:13px;border:1px solid rgb(var(--c-primary-rgb) / 35%);border-radius:14px;background:transparent;color:var(--c-primary);font-family:inherit;font-size:14px;font-weight:700;cursor:pointer} diff --git a/apps/user-app/dist/assets/CustomerChoiceView-t2STlBIR.js b/apps/user-app/dist/assets/CustomerChoiceView-t2STlBIR.js deleted file mode 100644 index 0936642..0000000 --- a/apps/user-app/dist/assets/CustomerChoiceView-t2STlBIR.js +++ /dev/null @@ -1 +0,0 @@ -import{d as D,G as P,E as R,o as $,f as i,x as n,J as _,T as B,q as E,k as c,D as F,e as r,g as s,F as I,r as M,I as v,t as o,h as b,a3 as T,M as U,N as q,i as G,_ as J}from"./index-BFOyCNFT.js";import{A as L}from"./AppPullRefresh-CsuQ3Y8x.js";import{P as O}from"./PageBar-Cz1N2fdD.js";import{S as j}from"./SearchInput-C_6TS52w.js";import{D as H}from"./index-BgbR-bph.js";import"./KeyCode-C6xc2Qke.js";import"./classCallCheck-BVPDkxOa.js";import"./raf-nDFcuFT6.js";const K={class:"cch"},Q={class:"cch__barExtra"},W={key:0,class:"cch__list"},X=["onClick"],Y={class:"cch__head"},Z={class:"cch__name"},ss={class:"cch__facts"},es={class:"cch__fact"},ts={dir:"ltr"},as={class:"cch__fact"},os={dir:"ltr"},ls={key:0,class:"cch__fact"},ns={key:1,class:"cch__empty"},is={key:2,class:"cch__empty"},cs={key:0,class:"cch__detail"},rs={class:"cch__detailTitle"},ds={class:"cch__rows"},us={class:"cch__row"},_s={dir:"ltr"},vs={class:"cch__row"},hs={dir:"ltr"},ps={class:"cch__row"},fs={class:"cch__row"},ms={class:"cch__row"},bs={dir:"ltr"},ys={class:"cch__row"},gs={dir:"ltr"},ws={class:"cch__row"},Cs=["disabled"],ks=D({__name:"CustomerChoiceView",setup(xs){const C=q(),k=P(),x=R(),h=c(!1),d=c([]),p=c(!1),y=c(!1),f=c(!1),g=c(null),u=c(!1),l=c(null);function w(t){const e=Number(t??0);return Number.isFinite(e)?e.toFixed(3):"0.000"}async function m(){p.value=!0,f.value=!1;try{d.value=await F.getExpertCustomers(g.value)}catch{f.value=!0,d.value=[]}finally{p.value=!1}}async function S(t){g.value=t!=null&&t.trim()?t.trim():null,await m()}async function V(){try{await m()}finally{y.value=!1}}function z(t){l.value=t,u.value=!0}async function N(t){h.value=!0;try{x.clear(),k.setActingAs({id:t.id,name:t.name??t.fullName??t.mobile??""}),u.value=!1,await C.push({name:"userPage::hasSubRoute"}),T.success(`وارد حساب ${t.name??""} شدید`)}finally{h.value=!1}}return $(m),(t,e)=>{const A=U("container");return r(),i("div",K,[n(O,{title:"لیست مشتریان","back-to":"userPage::hasSubRoute"},{below:_(()=>[s("div",Q,[n(j,{onSearch:S,"place-holder":"جستجو"})])]),_:1}),n(B,{spinning:p.value&&!d.value.length,tip:"درحال دریافت اطلاعات"},{default:_(()=>[n(L,{modelValue:y.value,"onUpdate:modelValue":e[0]||(e[0]=a=>y.value=a),onRefresh:V},{default:_(()=>[n(A,{class:"cch__body"},{default:_(()=>[d.value.length?(r(),i("div",W,[(r(!0),i(I,null,M(d.value,a=>(r(),i("article",{key:a.id,class:"cch__card",onClick:Ss=>z(a)},[s("div",Y,[s("h3",Z,o(a.name),1),s("span",{class:G(["cch__state",a.active===1?"is-on":"is-off"])},o(a.active===1?"فعال":"غیرفعال"),3)]),s("div",ss,[s("div",es,[n(v,{icon:"vuesax-linear:mobile",size:"15"}),s("span",ts,o(a.mobile||"—"),1)]),s("div",as,[n(v,{icon:"vuesax-linear:call",size:"15"}),s("span",os,o(a.phone||"—"),1)]),a.store_name?(r(),i("div",ls,[n(v,{icon:"vuesax-linear:shop",size:"15"}),s("span",null,o(a.store_name),1)])):b("",!0)])],8,X))),128))])):!p.value&&!f.value?(r(),i("section",ns,[n(v,{icon:"vuesax-linear:profile-2user",size:"26"}),s("p",null,o(g.value?"مشتری با این مشخصات پیدا نشد.":"هنوز مشتری‌ای به شما معرفی نشده است."),1)])):b("",!0),f.value?(r(),i("section",is,[n(v,{icon:"vuesax-linear:danger",size:"26"}),e[4]||(e[4]=s("p",null,"دریافت اطلاعات با خطا روبه‌رو شد.",-1)),s("button",{type:"button",class:"cch__retry",onClick:m},"تلاش دوباره")])):b("",!0)]),_:1})]),_:1},8,["modelValue"])]),_:1},8,["spinning"]),n(E(H),{visible:u.value,"onUpdate:visible":e[3]||(e[3]=a=>u.value=a),placement:"bottom",height:"auto",closable:!1,"body-style":{padding:"0"}},{default:_(()=>[l.value?(r(),i("div",cs,[s("h2",rs,o(l.value.name),1),s("dl",ds,[s("div",us,[e[5]||(e[5]=s("dt",null,"موبایل",-1)),s("dd",_s,o(l.value.mobile||"—"),1)]),s("div",vs,[e[6]||(e[6]=s("dt",null,"تلفن",-1)),s("dd",hs,o(l.value.phone||"—"),1)]),s("div",ps,[e[7]||(e[7]=s("dt",null,"نام مغازه",-1)),s("dd",null,o(l.value.store_name||"—"),1)]),s("div",fs,[e[8]||(e[8]=s("dt",null,"نام پاساژ",-1)),s("dd",null,o(l.value.pasazh_name||"—"),1)]),s("div",ms,[e[9]||(e[9]=s("dt",null,"سقف اعتبار",-1)),s("dd",bs,o(w(l.value.gram_level))+" گرم",1)]),s("div",ys,[e[10]||(e[10]=s("dt",null,"بدهی گرمی",-1)),s("dd",gs,o(w(l.value.remain))+" گرم",1)]),s("div",ws,[e[11]||(e[11]=s("dt",null,"وضعیت",-1)),s("dd",null,o(l.value.active===1?"فعال":"غیرفعال"),1)])]),s("button",{type:"button",class:"cch__enter",disabled:h.value,onClick:e[1]||(e[1]=a=>N(l.value))},o(h.value?"در حال ورود…":"ورود به حساب این مشتری"),9,Cs),s("button",{type:"button",class:"cch__close",onClick:e[2]||(e[2]=a=>u.value=!1)},"بستن")])):b("",!0)]),_:1},8,["visible"])])}}}),Bs=J(ks,[["__scopeId","data-v-e75567d6"]]);export{Bs as default}; diff --git a/apps/user-app/dist/assets/DashboardView-BuVa3lpc.css b/apps/user-app/dist/assets/DashboardView-BuVa3lpc.css new file mode 100644 index 0000000..828d976 --- /dev/null +++ b/apps/user-app/dist/assets/DashboardView-BuVa3lpc.css @@ -0,0 +1 @@ +.dash[data-v-8e4889b3]{background:var(--c-page);min-height:100vh}.dash__bar[data-v-8e4889b3]{position:fixed;top:var(--aab-h, 0px);left:0;right:0;z-index:20;background:rgb(var(--c-canvas-rgb) / 88%);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-bottom:1px solid var(--c-hairline)}.dash__barInner[data-v-8e4889b3]{max-width:768px;margin:0 auto;padding:11px 16px;display:flex;align-items:center;justify-content:space-between;gap:12px}.dash__barTitle[data-v-8e4889b3]{margin:0;font-size:14.5px;font-weight:800;color:var(--c-ink)}.dash__barBtn[data-v-8e4889b3]{flex:0 0 auto;width:38px;height:38px;border:0;cursor:pointer;border-radius:12px;display:grid;place-items:center;color:var(--c-wine);background:var(--c-wineWash)}.dash__barBtn[data-v-8e4889b3]:active{transform:scale(.94)}.dash__barSpacer[data-v-8e4889b3]{display:block;width:38px;height:38px}.dash__body[data-v-8e4889b3]{padding-top:76px;padding-bottom:90px}.dash__profileNudge[data-v-8e4889b3]{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:12px;padding:10px 12px;border-radius:14px;border:1px solid rgb(var(--c-wine-rgb) / 16%);background:var(--c-wineWash)}.dash__profileNudgeIcon[data-v-8e4889b3]{flex:0 0 auto;width:32px;height:32px;border-radius:9px;display:grid;place-items:center;color:var(--c-wine);background:rgb(var(--c-wine-rgb) / 10%)}.dash__profileNudgeCopy[data-v-8e4889b3]{flex:1 1 140px;min-width:0}.dash__profileNudgeCopy h3[data-v-8e4889b3]{margin:0;font-size:12.5px;font-weight:500;color:var(--c-ink);line-height:1.35}.dash__profileNudgeCopy p[data-v-8e4889b3]{margin:2px 0 0;font-size:11.5px;font-weight:400;line-height:1.4;color:var(--c-inkMuted)}.dash__profileNudgeCta[data-v-8e4889b3]{flex:0 0 auto;margin-inline-start:auto;padding:7px 11px;border:0;border-radius:10px;cursor:pointer;font-family:inherit;font-size:11.5px;font-weight:500;color:#fff;background:var(--c-primary)}.dash__profileNudgeCta[data-v-8e4889b3]:active{transform:scale(.96)}.dash__balance[data-v-8e4889b3]{padding:16px;border-radius:20px;background:var(--c-primary);color:#fff;box-shadow:0 14px 30px -22px #14161af2}.dash__balanceHead[data-v-8e4889b3]{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.dash__eyebrow[data-v-8e4889b3]{font-size:11.5px;color:#ffffff9e}.dash__figure[data-v-8e4889b3]{padding-top:5px;font-size:25px;font-weight:800;letter-spacing:-.3px}.dash__unit[data-v-8e4889b3]{font-size:11.5px;font-weight:600;color:#ffffff9e;padding-inline-start:4px}.dash__seal[data-v-8e4889b3]{flex:0 0 auto;padding:5px 12px;border-radius:999px;font-size:10.5px;font-weight:700}.dash__seal.is-debtor[data-v-8e4889b3]{color:#fff;background:var(--c-wineSoft)}.dash__seal.is-creditor[data-v-8e4889b3]{color:#14161a;background:#ffffffe6}.dash__balanceRow[data-v-8e4889b3]{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:16px;padding-top:13px;border-top:1px solid rgba(255,255,255,.13)}.dash__rowLabel[data-v-8e4889b3]{font-size:11.5px;color:#ffffff9e}.dash__rowValue[data-v-8e4889b3]{font-size:13.5px;font-weight:700}.dash__rowValue i[data-v-8e4889b3]{font-style:normal;font-size:10.5px;font-weight:600;color:#ffffff9e;padding-inline-start:3px}.dash__identity[data-v-8e4889b3]{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:13px;padding-top:13px;border-top:1px solid rgba(255,255,255,.13)}.dash__name[data-v-8e4889b3]{font-size:12.5px;font-weight:700}.dash__mobile[data-v-8e4889b3]{font-size:11.5px;color:#ffffff9e;direction:ltr}.dash__invite[data-v-8e4889b3]{display:flex;align-items:center;gap:12px;padding:16px;border:1px solid var(--c-hairline);border-radius:20px;background:var(--c-canvasSoft)}.dash__inviteIcon[data-v-8e4889b3]{flex:0 0 42px;width:42px;height:42px;border-radius:50%;display:grid;place-items:center;color:var(--c-wine);background:var(--c-wineWash)}.dash__inviteCopy[data-v-8e4889b3]{flex:1;min-width:0}.dash__inviteCopy h3[data-v-8e4889b3]{margin:0;font-size:13px;font-weight:800;color:var(--c-ink)}.dash__inviteCopy p[data-v-8e4889b3]{margin:4px 0 0;font-size:11.5px;color:var(--c-inkFaint)}.dash__inviteCta[data-v-8e4889b3]{flex:0 0 auto;padding:9px 14px;border:0;cursor:pointer;border-radius:999px;font-family:inherit;font-size:11.5px;font-weight:700;color:#fff;background:var(--c-primary)}.dash__section[data-v-8e4889b3]{margin-top:26px}.dash__access[data-v-8e4889b3]{display:flex;flex-direction:column;gap:1px;padding:6px;border-radius:22px;background:var(--c-canvas);box-shadow:0 1px #0f172a0a,0 10px 28px #0f172a0f;border:1px solid var(--c-hairline)}.dash__tile[data-v-8e4889b3]{display:grid;grid-template-columns:44px 1fr 18px;align-items:center;gap:12px;width:100%;margin:0;padding:11px 12px;border:0;border-radius:16px;cursor:pointer;background:transparent;font-family:inherit;text-align:start;transition:background .15s ease,transform .15s ease}.dash__tile[data-v-8e4889b3]:active{transform:scale(.99);background:var(--c-canvasSoft)}.dash__tile.is-disabled[data-v-8e4889b3]{opacity:.4;pointer-events:none}.dash__tileIcon[data-v-8e4889b3]{width:44px;height:44px;border-radius:14px;display:grid;place-items:center}.dash__tile.is-forest .dash__tileIcon[data-v-8e4889b3]{color:var(--c-primary);background:rgb(var(--c-primary-rgb) / 10%)}.dash__tile.is-sand .dash__tileIcon[data-v-8e4889b3]{color:#8d6a46;background:#8d6a461f}.dash__tile.is-wine .dash__tileIcon[data-v-8e4889b3]{color:var(--c-wine);background:var(--c-wineWash)}.dash__tile.is-rose .dash__tileIcon[data-v-8e4889b3]{color:var(--c-wineSoft);background:rgb(var(--c-wineSoft-rgb) / 12%)}.dash__tile.is-slate .dash__tileIcon[data-v-8e4889b3]{color:var(--c-inkMuted);background:var(--c-hairlineSoft)}.dash__tile.is-ink .dash__tileIcon[data-v-8e4889b3]{color:var(--c-inkSoft);background:rgb(var(--c-ink-rgb) / 6%)}.dash__tileTitle[data-v-8e4889b3]{font-size:13.5px;font-weight:700;color:var(--c-ink);letter-spacing:-.01em}.dash__tileArrow[data-v-8e4889b3]{display:grid;place-items:center;color:var(--c-inkFaint);opacity:.7}.dash__choice[data-v-8e4889b3]{display:flex;flex-direction:column;gap:10px;padding:20px 16px 24px}.dash__choiceBtn[data-v-8e4889b3]{padding:15px;border:1px solid var(--c-wine);border-radius:14px;background:var(--c-wine);color:#fff;font-family:inherit;font-size:15px;font-weight:700;cursor:pointer}.dash__choiceBtn.is-quiet[data-v-8e4889b3]{background:transparent;color:var(--c-wine)} diff --git a/apps/user-app/dist/assets/DashboardView-CuieN8qk.js b/apps/user-app/dist/assets/DashboardView-CuieN8qk.js new file mode 100644 index 0000000..fb6ff75 --- /dev/null +++ b/apps/user-app/dist/assets/DashboardView-CuieN8qk.js @@ -0,0 +1 @@ +import{d as X,G as Y,H as J,k as y,K as O,b as Q,o as Z,f as d,g as s,q as i,x as l,J as v,X as B,U as ee,D as S,e as c,i as I,F as T,n as _,I as h,h as V,t as f,W as D,r as se,B as te,Y as ae,N as ie,j as g,M as oe,_ as le}from"./index-B-RmZRr2.js";import{A as ne}from"./AppPullRefresh-RDVLXVM_.js";import{S as re}from"./SectionHead-CJoa_aGh.js";import{R as de}from"./RateStrip-D4hWdTta.js";import{p as ce}from"./filters-BLs90kiz.js";import{u as ue}from"./useReveal-Dq2T90sy.js";import{D as ve}from"./index-DXKwa_Wp.js";import"./KeyCode-DsOsmuVa.js";import"./classCallCheck-BMo4V_0Q.js";import"./raf-nDFcuFT6.js";const fe="data:image/svg+xml,%3csvg%20width='200'%20height='150'%20viewBox='0%200%20200%20150'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3c!--%20Soft%20brand%20wash%20--%3e%3cellipse%20cx='100'%20cy='122'%20rx='72'%20ry='18'%20fill='%2323493c'%20fill-opacity='0.06'/%3e%3ccircle%20cx='100'%20cy='72'%20r='54'%20fill='%2323493c'%20fill-opacity='0.07'/%3e%3ccircle%20cx='44'%20cy='40'%20r='5'%20fill='%238D6A46'%20fill-opacity='0.3'/%3e%3ccircle%20cx='158'%20cy='48'%20r='7'%20fill='%237A1B33'%20fill-opacity='0.12'/%3e%3c!--%20Door%20frame%20--%3e%3crect%20x='62'%20y='28'%20width='76'%20height='92'%20rx='10'%20fill='%23FFFFFF'%20stroke='%2323493c'%20stroke-opacity='0.16'%20stroke-width='1.75'/%3e%3crect%20x='62'%20y='28'%20width='76'%20height='92'%20rx='10'%20fill='%2323493c'%20fill-opacity='0.04'/%3e%3c!--%20Open%20door%20(hinged%20left,%20swung%20out)%20--%3e%3cpath%20d='M72%2036h28c1.1%200%202%20.9%202%202v76c0%201.1-.9%202-2%202H72c-1.1%200-2-.9-2-2V38c0-1.1.9-2%202-2z'%20fill='%23E8EFEC'%20/%3e%3cpath%20d='M100%2036l34%208v64l-34%208V36z'%20fill='%2323493c'%20fill-opacity='0.12'%20stroke='%2323493c'%20stroke-opacity='0.22'%20stroke-width='1.25'%20/%3e%3cpath%20d='M118%2072h8'%20stroke='%238D6A46'%20stroke-width='3'%20stroke-linecap='round'/%3e%3c!--%20Exit%20arrow%20--%3e%3cg%20transform='translate(128%2058)'%3e%3ccircle%20cx='22'%20cy='22'%20r='20'%20fill='%237A1B33'/%3e%3cpath%20d='M12%2022h16M22%2014l8%208-8%208'%20stroke='%23FAFAFA'%20stroke-width='2.4'%20stroke-linecap='round'%20stroke-linejoin='round'%20fill='none'%20/%3e%3c/g%3e%3c!--%20Soft%20ground%20line%20--%3e%3cpath%20d='M48%20128h104'%20stroke='%23ECEDEF'%20stroke-width='2'%20stroke-linecap='round'/%3e%3c/svg%3e",pe={class:"dash"},_e={class:"dash__bar"},he={class:"dash__barInner"},me={key:1,class:"dash__barSpacer","aria-hidden":"true"},ye={class:"dash__profileNudgeIcon","aria-hidden":"true"},ge={class:"dash__balanceHead"},be={class:"dash__eyebrow"},xe={class:"dash__figure"},ke={class:"dash__balanceRow"},we={class:"dash__rowValue"},Ce={class:"dash__identity"},Ee={class:"dash__name"},Se={class:"dash__mobile"},Ie={class:"dash__inviteIcon","aria-hidden":"true"},De={class:"dash__inviteCopy"},Fe={class:"dash__inviteIcon","aria-hidden":"true"},Le={class:"dash__access"},Ne=["onClick"],Ae={class:"dash__tileIcon","aria-hidden":"true"},Oe={class:"dash__tileTitle"},Be={class:"dash__tileArrow","aria-hidden":"true"},Te=["src"],Ve=["src"],Me={class:"p-8 text-justify"},Pe={class:"dash__choice"},Re=X({__name:"DashboardView",setup($e){const o=ie(),r=Y(),b=J(),n=y(b.peek(O.profile)??null),m=y(!1),F=y(b.peek(O.goldPrice)??null),C=y(!1),E=g(()=>n.value?parseFloat(n.value.goldDebtGrams)>0:!1),M=g(()=>E.value?"بدهکار گرمی":"بستانکار گرمی"),P=g(()=>n.value?Math.abs(parseFloat(n.value.goldDebtGrams)):0),x=g(()=>{var e;const t=(e=n.value)==null?void 0:e.verificationStep;return!!t&&t!=="VERIFIED"&&t!=="STEP_TWO_SUBMITTED"}),u=ee({notify:!1,loginNotify:!1}),R=[{id:0,icon:"vuesax-linear:box",title:"سفارشات",tone:"forest",disabled:!1},{id:1,icon:"vuesax-linear:receipt-text",title:"اسناد",tone:"sand",disabled:!1},{id:2,icon:"vuesax-linear:user",title:"پروفایل",tone:"wine",disabled:!1},{id:3,icon:"vuesax-linear:heart",title:"علاقمندی",tone:"rose",disabled:!1},{id:6,icon:"vuesax-linear:chart-2",title:"گزارش",tone:"slate",disabled:!1},{id:8,icon:"vuesax-linear:3d-cube-scan",title:"سفارش ساخت",tone:"rose",disabled:!1}],$=[{id:4,icon:"vuesax-linear:box-tick",title:"سفارش مشتریان",tone:"forest",disabled:!1},{id:5,icon:"vuesax-linear:profile-2user",title:"مشتریان من",tone:"sand",disabled:!1}],z={id:7,icon:"vuesax-linear:brush",title:"ظاهر",tone:"ink",disabled:!1},U=g(()=>[...R,...r.isSalesExpert?$:[],z]);function q(t){if(t===7){o.push({name:"appearanceSettings"});return}if(!r.isLoggedIn){u.loginNotify=!0;return}t===0&&o.push({name:"ordersList"}),t===1&&o.push({name:"transactionsList"}),t===2&&o.push({name:"profileData"}),t===3&&o.push({name:"favoritesList"}),t===4&&o.push({name:"ChildOrder"}),t===5&&o.push({name:"customerChoice"}),t===6&&o.push({name:"report"}),t===8&&(k.value=!0)}const k=y(!1);function L(t){k.value=!1,o.push({name:t})}async function H(){u.notify=!1;try{await S.endSharedSession()}catch{}let t=null;try{t=(await S.ssoLogoutUrl()).logout_url}catch{t=null}if(r.logout(),sessionStorage.removeItem("gb_iam_sso_checked"),t){window.location.assign(t);return}o.push({name:"home"})}async function w(){m.value=!1;const[t,e]=await Promise.allSettled([r.isLoggedIn?b.me({force:!0}):Promise.resolve(null),b.goldPrice({force:!0})]);t.status==="fulfilled"?(n.value=t.value,m.value=!1):(m.value=r.isLoggedIn&&!n.value,console.log(t.reason)),F.value=e.status==="fulfilled"?e.value:null}async function j(){try{await w()}finally{C.value=!1}}async function N(){if(r.isLoggedIn)try{const t=await S.getExpertIdentity();r.setSalesExpert(t.isSalesExpert)}catch{}}let A=!1;Q(()=>{A&&(w(),N()),A=!0});const{revealed:G,revealDelay:p,reveal:K}=ue("dashboard");return Z(async()=>{N(),await w(),K()}),(t,e)=>{const W=oe("container");return c(),d("div",pe,[s("header",_e,[s("div",he,[e[12]||(e[12]=s("span",{class:"dash__barSpacer","aria-hidden":"true"},null,-1)),e[13]||(e[13]=s("h1",{class:"dash__barTitle"},"میز کار",-1)),i(r).isLoggedIn?(c(),d("button",{key:0,type:"button",class:"dash__barBtn","aria-label":"خروج",onClick:e[0]||(e[0]=a=>u.notify=!0)},[l(h,{icon:"vuesax-linear:logout",size:"19"})])):(c(),d("span",me))])]),l(ne,{modelValue:C.value,"onUpdate:modelValue":e[3]||(e[3]=a=>C.value=a),onRefresh:j},{default:v(()=>[l(W,{class:I(["dash__body",{"is-revealed":i(G)}])},{default:v(()=>[i(r).isLoggedIn&&n.value?(c(),d(T,{key:0},[x.value?(c(),d("section",{key:0,class:"dash__profileNudge reveal",style:_(i(p)(0))},[s("div",ye,[l(h,{icon:"vuesax-linear:info-circle",size:"16"})]),e[14]||(e[14]=s("div",{class:"dash__profileNudgeCopy"},[s("h3",null,"پروفایل شما تکمیل نشده است"),s("p",null,"برای ادامه، مدارک پروفایل را بارگذاری کنید.")],-1)),s("button",{type:"button",class:"dash__profileNudgeCta",onClick:e[1]||(e[1]=a=>i(o).push({name:"completeProfile"}))}," تکمیل پروفایل ")],4)):V("",!0),s("section",{class:"dash__balance reveal",style:_(i(p)(x.value?1:0))},[s("div",ge,[s("div",null,[s("div",be,f(M.value),1),s("div",xe,[D(f(P.value)+" ",1),e[15]||(e[15]=s("span",{class:"dash__unit"},"گرم",-1))])]),s("span",{class:I(["dash__seal",E.value?"is-debtor":"is-creditor"])},f(E.value?"بدهکار":"بستانکار"),3)]),s("div",ke,[e[17]||(e[17]=s("span",{class:"dash__rowLabel"},"بدهی ریالی",-1)),s("span",we,[D(f(i(ce)(n.value.fiatDebtRial))+" ",1),e[16]||(e[16]=s("i",null,"ریال",-1))])]),s("div",Ce,[s("span",Ee,f(n.value.fullName),1),s("span",Se,f(i(r).mobile),1)])],4)],64)):i(r).isLoggedIn?(c(),d("section",{key:1,class:"dash__invite reveal",style:_(i(p)(0))},[s("div",Ie,[l(h,{icon:"vuesax-linear:security-user",size:"20"})]),s("div",De,[e[18]||(e[18]=s("h3",null,"حساب شما",-1)),s("p",null,f(m.value?"موجودی الان در دسترس نیست. دوباره تلاش کنید.":"در حال دریافت موجودی…"),1)]),m.value?(c(),d("button",{key:0,type:"button",class:"dash__inviteCta",onClick:w}," تلاش دوباره ")):V("",!0)],4)):(c(),d("section",{key:2,class:"dash__invite reveal",style:_(i(p)(0))},[s("div",Fe,[l(h,{icon:"vuesax-linear:security-user",size:"20"})]),e[19]||(e[19]=s("div",{class:"dash__inviteCopy"},[s("h3",null,"حساب گرمی شما"),s("p",null,"برای دیدن موجودی، سفارش‌ها و اسناد خود وارد شوید.")],-1)),s("button",{type:"button",class:"dash__inviteCta",onClick:e[2]||(e[2]=a=>i(o).push({name:"login"}))}," ورود / ثبت‌نام ")],4)),s("section",{class:"dash__section reveal",style:_(i(p)(n.value&&x.value?2:1))},[s("div",Le,[(c(!0),d(T,null,se(U.value,a=>(c(),d("button",{key:a.id,type:"button",class:I(["dash__tile",[`is-${a.tone}`,{"is-disabled":a.disabled}]]),onClick:ze=>q(a.id)},[s("span",Ae,[l(h,{icon:a.icon,size:"21"},null,8,["icon"])]),s("span",Oe,f(a.title),1),s("span",Be,[l(h,{icon:"vuesax-linear:arrow-left-2",size:"14"})])],10,Ne))),128))])],4),s("section",{class:"dash__section reveal",style:_(i(p)(n.value&&x.value?3:2))},[l(re,{title:"نرخ روز",subtitle:"آخرین نرخ اعلام‌شده"}),l(de,{quote:F.value},null,8,["quote"])],4)]),_:1},8,["class"])]),_:1},8,["modelValue"]),l(B,{timeOut:-1,show:u.notify,"onUpdate:show":e[5]||(e[5]=a=>u.notify=a),closeOnClickOverlay:!0},{img:v(()=>[s("img",{src:i(fe),alt:""},null,8,Te)]),title:v(()=>[...e[20]||(e[20]=[D("آیا می خواهید از برنامه خارج شوید؟",-1)])]),button:v(()=>[s("div",{class:"text-center text-[color:var(--c-primary)]",onClick:H},"بله"),s("div",{class:"text-center text-[color:var(--c-inkMuted)]",onClick:e[4]||(e[4]=a=>u.notify=!1)},"بی خیال")]),_:1},8,["show"]),l(B,{timeOut:-1,show:u.loginNotify,"onUpdate:show":e[8]||(e[8]=a=>u.loginNotify=a),closeOnClickOverlay:!0},{img:v(()=>[s("img",{src:i(ae),alt:""},null,8,Ve)]),title:v(()=>[s("div",Me," برای دسترسی به تمامی امکانات نرم افزار "+f(i(te).name)+"، ابتدا گزینه ورود/ثبت نام را لمس کنید و در صورت نداشتن حساب کاربری، ثبت نام نمایید. ",1)]),button:v(()=>[s("div",{class:"text-center text-[color:var(--c-primary)]",onClick:e[6]||(e[6]=a=>i(o).push({name:"login"}))},"ورود/ثبت نام"),s("div",{class:"text-center text-danger",onClick:e[7]||(e[7]=a=>u.loginNotify=!1)},"بیخیال")]),_:1},8,["show"]),l(i(ve),{visible:k.value,"onUpdate:visible":e[11]||(e[11]=a=>k.value=a),placement:"bottom",height:"auto",closable:!1,"body-style":{padding:"0"}},{default:v(()=>[s("div",Pe,[s("button",{type:"button",class:"dash__choiceBtn",onClick:e[9]||(e[9]=a=>L("makeOrderList"))},"ثبت سفارش"),s("button",{type:"button",class:"dash__choiceBtn is-quiet",onClick:e[10]||(e[10]=a=>L("makeOrderStatus"))},"مشاهده سفارش")])]),_:1},8,["visible"])])}}}),Qe=le(Re,[["__scopeId","data-v-8e4889b3"]]);export{Qe as default}; diff --git a/apps/user-app/dist/assets/DashboardView-DTn8YzNG.js b/apps/user-app/dist/assets/DashboardView-DTn8YzNG.js deleted file mode 100644 index 9cd03d0..0000000 --- a/apps/user-app/dist/assets/DashboardView-DTn8YzNG.js +++ /dev/null @@ -1 +0,0 @@ -import{d as K,G as W,H as X,k,K as N,b as Y,o as J,f as d,g as e,q as l,x as n,J as _,X as A,U as Q,D as E,e as c,i as S,F as T,n as p,I as h,h as V,t as f,W as I,r as Z,B as ee,Y as se,N as te,j as g,M as ae,_ as le}from"./index-BFOyCNFT.js";import{A as ie}from"./AppPullRefresh-CsuQ3Y8x.js";import{S as oe}from"./SectionHead-Cg_UnoI8.js";import{R as ne}from"./RateStrip-ljKA-iPt.js";import{p as re}from"./filters-sld47Iy-.js";import{u as de}from"./useReveal-CE0IBSnz.js";const ce="data:image/svg+xml,%3csvg%20width='200'%20height='150'%20viewBox='0%200%20200%20150'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3c!--%20Soft%20brand%20wash%20--%3e%3cellipse%20cx='100'%20cy='122'%20rx='72'%20ry='18'%20fill='%2323493c'%20fill-opacity='0.06'/%3e%3ccircle%20cx='100'%20cy='72'%20r='54'%20fill='%2323493c'%20fill-opacity='0.07'/%3e%3ccircle%20cx='44'%20cy='40'%20r='5'%20fill='%238D6A46'%20fill-opacity='0.3'/%3e%3ccircle%20cx='158'%20cy='48'%20r='7'%20fill='%237A1B33'%20fill-opacity='0.12'/%3e%3c!--%20Door%20frame%20--%3e%3crect%20x='62'%20y='28'%20width='76'%20height='92'%20rx='10'%20fill='%23FFFFFF'%20stroke='%2323493c'%20stroke-opacity='0.16'%20stroke-width='1.75'/%3e%3crect%20x='62'%20y='28'%20width='76'%20height='92'%20rx='10'%20fill='%2323493c'%20fill-opacity='0.04'/%3e%3c!--%20Open%20door%20(hinged%20left,%20swung%20out)%20--%3e%3cpath%20d='M72%2036h28c1.1%200%202%20.9%202%202v76c0%201.1-.9%202-2%202H72c-1.1%200-2-.9-2-2V38c0-1.1.9-2%202-2z'%20fill='%23E8EFEC'%20/%3e%3cpath%20d='M100%2036l34%208v64l-34%208V36z'%20fill='%2323493c'%20fill-opacity='0.12'%20stroke='%2323493c'%20stroke-opacity='0.22'%20stroke-width='1.25'%20/%3e%3cpath%20d='M118%2072h8'%20stroke='%238D6A46'%20stroke-width='3'%20stroke-linecap='round'/%3e%3c!--%20Exit%20arrow%20--%3e%3cg%20transform='translate(128%2058)'%3e%3ccircle%20cx='22'%20cy='22'%20r='20'%20fill='%237A1B33'/%3e%3cpath%20d='M12%2022h16M22%2014l8%208-8%208'%20stroke='%23FAFAFA'%20stroke-width='2.4'%20stroke-linecap='round'%20stroke-linejoin='round'%20fill='none'%20/%3e%3c/g%3e%3c!--%20Soft%20ground%20line%20--%3e%3cpath%20d='M48%20128h104'%20stroke='%23ECEDEF'%20stroke-width='2'%20stroke-linecap='round'/%3e%3c/svg%3e",ue={class:"dash"},fe={class:"dash__bar"},_e={class:"dash__barInner"},ve={key:1,class:"dash__barSpacer","aria-hidden":"true"},pe={class:"dash__profileNudgeIcon","aria-hidden":"true"},he={class:"dash__balanceHead"},ye={class:"dash__eyebrow"},ge={class:"dash__figure"},me={class:"dash__balanceRow"},be={class:"dash__rowValue"},xe={class:"dash__identity"},ke={class:"dash__name"},we={class:"dash__mobile"},Ce={class:"dash__inviteIcon","aria-hidden":"true"},Ee={class:"dash__inviteCopy"},Se={class:"dash__inviteIcon","aria-hidden":"true"},Ie={class:"dash__access"},De=["onClick"],Fe={class:"dash__tileIcon","aria-hidden":"true"},Le={class:"dash__tileTitle"},Ne={class:"dash__tileArrow","aria-hidden":"true"},Ae=["src"],Te=["src"],Ve={class:"p-8 text-justify"},Pe=K({__name:"DashboardView",setup(Re){const i=te(),r=W(),m=X(),o=k(m.peek(N.profile)??null),y=k(!1),D=k(m.peek(N.goldPrice)??null),w=k(!1),C=g(()=>o.value?parseFloat(o.value.goldDebtGrams)>0:!1),P=g(()=>C.value?"بدهکار گرمی":"بستانکار گرمی"),R=g(()=>o.value?Math.abs(parseFloat(o.value.goldDebtGrams)):0),b=g(()=>{var s;const t=(s=o.value)==null?void 0:s.verificationStep;return!!t&&t!=="VERIFIED"&&t!=="STEP_TWO_SUBMITTED"}),u=Q({notify:!1,loginNotify:!1}),B=[{id:0,icon:"vuesax-linear:box",title:"سفارشات",tone:"forest",disabled:!1},{id:1,icon:"vuesax-linear:receipt-text",title:"اسناد",tone:"sand",disabled:!1},{id:2,icon:"vuesax-linear:user",title:"پروفایل",tone:"wine",disabled:!1},{id:3,icon:"vuesax-linear:heart",title:"علاقمندی",tone:"rose",disabled:!1},{id:6,icon:"vuesax-linear:chart-2",title:"گزارش",tone:"slate",disabled:!1}],M=[{id:4,icon:"vuesax-linear:box-tick",title:"سفارش مشتریان",tone:"forest",disabled:!1},{id:5,icon:"vuesax-linear:profile-2user",title:"مشتریان من",tone:"sand",disabled:!1}],O={id:7,icon:"vuesax-linear:brush",title:"ظاهر",tone:"ink",disabled:!1},z=g(()=>[...B,...r.isSalesExpert?M:[],O]);function $(t){if(t===7){i.push({name:"appearanceSettings"});return}if(!r.isLoggedIn){u.loginNotify=!0;return}t===0&&i.push({name:"ordersList"}),t===1&&i.push({name:"transactionsList"}),t===2&&i.push({name:"profileData"}),t===3&&i.push({name:"favoritesList"}),t===4&&i.push({name:"ChildOrder"}),t===5&&i.push({name:"customerChoice"}),t===6&&i.push({name:"report"})}async function U(){u.notify=!1;try{await E.endSharedSession()}catch{}let t=null;try{t=(await E.ssoLogoutUrl()).logout_url}catch{t=null}if(r.logout(),sessionStorage.removeItem("gb_iam_sso_checked"),t){window.location.assign(t);return}i.push({name:"home"})}async function x(){y.value=!1;const[t,s]=await Promise.allSettled([r.isLoggedIn?m.me({force:!0}):Promise.resolve(null),m.goldPrice({force:!0})]);t.status==="fulfilled"?(o.value=t.value,y.value=!1):(y.value=r.isLoggedIn&&!o.value,console.log(t.reason)),D.value=s.status==="fulfilled"?s.value:null}async function H(){try{await x()}finally{w.value=!1}}async function F(){if(r.isLoggedIn)try{const t=await E.getExpertIdentity();r.setSalesExpert(t.isSalesExpert)}catch{}}let L=!1;Y(()=>{L&&(x(),F()),L=!0});const{revealed:j,revealDelay:v,reveal:q}=de("dashboard");return J(async()=>{F(),await x(),q()}),(t,s)=>{const G=ae("container");return c(),d("div",ue,[e("header",fe,[e("div",_e,[s[9]||(s[9]=e("span",{class:"dash__barSpacer","aria-hidden":"true"},null,-1)),s[10]||(s[10]=e("h1",{class:"dash__barTitle"},"میز کار",-1)),l(r).isLoggedIn?(c(),d("button",{key:0,type:"button",class:"dash__barBtn","aria-label":"خروج",onClick:s[0]||(s[0]=a=>u.notify=!0)},[n(h,{icon:"vuesax-linear:logout",size:"19"})])):(c(),d("span",ve))])]),n(ie,{modelValue:w.value,"onUpdate:modelValue":s[3]||(s[3]=a=>w.value=a),onRefresh:H},{default:_(()=>[n(G,{class:S(["dash__body",{"is-revealed":l(j)}])},{default:_(()=>[l(r).isLoggedIn&&o.value?(c(),d(T,{key:0},[b.value?(c(),d("section",{key:0,class:"dash__profileNudge reveal",style:p(l(v)(0))},[e("div",pe,[n(h,{icon:"vuesax-linear:info-circle",size:"16"})]),s[11]||(s[11]=e("div",{class:"dash__profileNudgeCopy"},[e("h3",null,"پروفایل شما تکمیل نشده است"),e("p",null,"برای ادامه، مدارک پروفایل را بارگذاری کنید.")],-1)),e("button",{type:"button",class:"dash__profileNudgeCta",onClick:s[1]||(s[1]=a=>l(i).push({name:"completeProfile"}))}," تکمیل پروفایل ")],4)):V("",!0),e("section",{class:"dash__balance reveal",style:p(l(v)(b.value?1:0))},[e("div",he,[e("div",null,[e("div",ye,f(P.value),1),e("div",ge,[I(f(R.value)+" ",1),s[12]||(s[12]=e("span",{class:"dash__unit"},"گرم",-1))])]),e("span",{class:S(["dash__seal",C.value?"is-debtor":"is-creditor"])},f(C.value?"بدهکار":"بستانکار"),3)]),e("div",me,[s[14]||(s[14]=e("span",{class:"dash__rowLabel"},"بدهی ریالی",-1)),e("span",be,[I(f(l(re)(o.value.fiatDebtRial))+" ",1),s[13]||(s[13]=e("i",null,"ریال",-1))])]),e("div",xe,[e("span",ke,f(o.value.fullName),1),e("span",we,f(l(r).mobile),1)])],4)],64)):l(r).isLoggedIn?(c(),d("section",{key:1,class:"dash__invite reveal",style:p(l(v)(0))},[e("div",Ce,[n(h,{icon:"vuesax-linear:security-user",size:"20"})]),e("div",Ee,[s[15]||(s[15]=e("h3",null,"حساب شما",-1)),e("p",null,f(y.value?"موجودی الان در دسترس نیست. دوباره تلاش کنید.":"در حال دریافت موجودی…"),1)]),y.value?(c(),d("button",{key:0,type:"button",class:"dash__inviteCta",onClick:x}," تلاش دوباره ")):V("",!0)],4)):(c(),d("section",{key:2,class:"dash__invite reveal",style:p(l(v)(0))},[e("div",Se,[n(h,{icon:"vuesax-linear:security-user",size:"20"})]),s[16]||(s[16]=e("div",{class:"dash__inviteCopy"},[e("h3",null,"حساب گرمی شما"),e("p",null,"برای دیدن موجودی، سفارش‌ها و اسناد خود وارد شوید.")],-1)),e("button",{type:"button",class:"dash__inviteCta",onClick:s[2]||(s[2]=a=>l(i).push({name:"login"}))}," ورود / ثبت‌نام ")],4)),e("section",{class:"dash__section reveal",style:p(l(v)(o.value&&b.value?2:1))},[e("div",Ie,[(c(!0),d(T,null,Z(z.value,a=>(c(),d("button",{key:a.id,type:"button",class:S(["dash__tile",[`is-${a.tone}`,{"is-disabled":a.disabled}]]),onClick:Be=>$(a.id)},[e("span",Fe,[n(h,{icon:a.icon,size:"21"},null,8,["icon"])]),e("span",Le,f(a.title),1),e("span",Ne,[n(h,{icon:"vuesax-linear:arrow-left-2",size:"14"})])],10,De))),128))])],4),e("section",{class:"dash__section reveal",style:p(l(v)(o.value&&b.value?3:2))},[n(oe,{title:"نرخ روز",subtitle:"آخرین نرخ اعلام‌شده"}),n(ne,{quote:D.value},null,8,["quote"])],4)]),_:1},8,["class"])]),_:1},8,["modelValue"]),n(A,{timeOut:-1,show:u.notify,"onUpdate:show":s[5]||(s[5]=a=>u.notify=a),closeOnClickOverlay:!0},{img:_(()=>[e("img",{src:l(ce),alt:""},null,8,Ae)]),title:_(()=>[...s[17]||(s[17]=[I("آیا می خواهید از برنامه خارج شوید؟",-1)])]),button:_(()=>[e("div",{class:"text-center text-[color:var(--c-primary)]",onClick:U},"بله"),e("div",{class:"text-center text-[color:var(--c-inkMuted)]",onClick:s[4]||(s[4]=a=>u.notify=!1)},"بی خیال")]),_:1},8,["show"]),n(A,{timeOut:-1,show:u.loginNotify,"onUpdate:show":s[8]||(s[8]=a=>u.loginNotify=a),closeOnClickOverlay:!0},{img:_(()=>[e("img",{src:l(se),alt:""},null,8,Te)]),title:_(()=>[e("div",Ve," برای دسترسی به تمامی امکانات نرم افزار "+f(l(ee).name)+"، ابتدا گزینه ورود/ثبت نام را لمس کنید و در صورت نداشتن حساب کاربری، ثبت نام نمایید. ",1)]),button:_(()=>[e("div",{class:"text-center text-[color:var(--c-primary)]",onClick:s[6]||(s[6]=a=>l(i).push({name:"login"}))},"ورود/ثبت نام"),e("div",{class:"text-center text-danger",onClick:s[7]||(s[7]=a=>u.loginNotify=!1)},"بیخیال")]),_:1},8,["show"])])}}}),je=le(Pe,[["__scopeId","data-v-19d54f06"]]);export{je as default}; diff --git a/apps/user-app/dist/assets/DashboardView-Dj4lvaLJ.css b/apps/user-app/dist/assets/DashboardView-Dj4lvaLJ.css deleted file mode 100644 index 7e6ee84..0000000 --- a/apps/user-app/dist/assets/DashboardView-Dj4lvaLJ.css +++ /dev/null @@ -1 +0,0 @@ -.dash[data-v-19d54f06]{background:var(--c-page);min-height:100vh}.dash__bar[data-v-19d54f06]{position:fixed;top:var(--aab-h, 0px);left:0;right:0;z-index:20;background:rgb(var(--c-canvas-rgb) / 88%);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-bottom:1px solid var(--c-hairline)}.dash__barInner[data-v-19d54f06]{max-width:768px;margin:0 auto;padding:11px 16px;display:flex;align-items:center;justify-content:space-between;gap:12px}.dash__barTitle[data-v-19d54f06]{margin:0;font-size:14.5px;font-weight:800;color:var(--c-ink)}.dash__barBtn[data-v-19d54f06]{flex:0 0 auto;width:38px;height:38px;border:0;cursor:pointer;border-radius:12px;display:grid;place-items:center;color:var(--c-wine);background:var(--c-wineWash)}.dash__barBtn[data-v-19d54f06]:active{transform:scale(.94)}.dash__barSpacer[data-v-19d54f06]{display:block;width:38px;height:38px}.dash__body[data-v-19d54f06]{padding-top:76px;padding-bottom:90px}.dash__profileNudge[data-v-19d54f06]{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:12px;padding:10px 12px;border-radius:14px;border:1px solid rgb(var(--c-wine-rgb) / 16%);background:var(--c-wineWash)}.dash__profileNudgeIcon[data-v-19d54f06]{flex:0 0 auto;width:32px;height:32px;border-radius:9px;display:grid;place-items:center;color:var(--c-wine);background:rgb(var(--c-wine-rgb) / 10%)}.dash__profileNudgeCopy[data-v-19d54f06]{flex:1 1 140px;min-width:0}.dash__profileNudgeCopy h3[data-v-19d54f06]{margin:0;font-size:12.5px;font-weight:500;color:var(--c-ink);line-height:1.35}.dash__profileNudgeCopy p[data-v-19d54f06]{margin:2px 0 0;font-size:11.5px;font-weight:400;line-height:1.4;color:var(--c-inkMuted)}.dash__profileNudgeCta[data-v-19d54f06]{flex:0 0 auto;margin-inline-start:auto;padding:7px 11px;border:0;border-radius:10px;cursor:pointer;font-family:inherit;font-size:11.5px;font-weight:500;color:#fff;background:var(--c-primary)}.dash__profileNudgeCta[data-v-19d54f06]:active{transform:scale(.96)}.dash__balance[data-v-19d54f06]{padding:16px;border-radius:20px;background:var(--c-primary);color:#fff;box-shadow:0 14px 30px -22px #14161af2}.dash__balanceHead[data-v-19d54f06]{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.dash__eyebrow[data-v-19d54f06]{font-size:11.5px;color:#ffffff9e}.dash__figure[data-v-19d54f06]{padding-top:5px;font-size:25px;font-weight:800;letter-spacing:-.3px}.dash__unit[data-v-19d54f06]{font-size:11.5px;font-weight:600;color:#ffffff9e;padding-inline-start:4px}.dash__seal[data-v-19d54f06]{flex:0 0 auto;padding:5px 12px;border-radius:999px;font-size:10.5px;font-weight:700}.dash__seal.is-debtor[data-v-19d54f06]{color:#fff;background:var(--c-wineSoft)}.dash__seal.is-creditor[data-v-19d54f06]{color:#14161a;background:#ffffffe6}.dash__balanceRow[data-v-19d54f06]{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:16px;padding-top:13px;border-top:1px solid rgba(255,255,255,.13)}.dash__rowLabel[data-v-19d54f06]{font-size:11.5px;color:#ffffff9e}.dash__rowValue[data-v-19d54f06]{font-size:13.5px;font-weight:700}.dash__rowValue i[data-v-19d54f06]{font-style:normal;font-size:10.5px;font-weight:600;color:#ffffff9e;padding-inline-start:3px}.dash__identity[data-v-19d54f06]{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:13px;padding-top:13px;border-top:1px solid rgba(255,255,255,.13)}.dash__name[data-v-19d54f06]{font-size:12.5px;font-weight:700}.dash__mobile[data-v-19d54f06]{font-size:11.5px;color:#ffffff9e;direction:ltr}.dash__invite[data-v-19d54f06]{display:flex;align-items:center;gap:12px;padding:16px;border:1px solid var(--c-hairline);border-radius:20px;background:var(--c-canvasSoft)}.dash__inviteIcon[data-v-19d54f06]{flex:0 0 42px;width:42px;height:42px;border-radius:50%;display:grid;place-items:center;color:var(--c-wine);background:var(--c-wineWash)}.dash__inviteCopy[data-v-19d54f06]{flex:1;min-width:0}.dash__inviteCopy h3[data-v-19d54f06]{margin:0;font-size:13px;font-weight:800;color:var(--c-ink)}.dash__inviteCopy p[data-v-19d54f06]{margin:4px 0 0;font-size:11.5px;color:var(--c-inkFaint)}.dash__inviteCta[data-v-19d54f06]{flex:0 0 auto;padding:9px 14px;border:0;cursor:pointer;border-radius:999px;font-family:inherit;font-size:11.5px;font-weight:700;color:#fff;background:var(--c-primary)}.dash__section[data-v-19d54f06]{margin-top:26px}.dash__access[data-v-19d54f06]{display:flex;flex-direction:column;gap:1px;padding:6px;border-radius:22px;background:var(--c-canvas);box-shadow:0 1px #0f172a0a,0 10px 28px #0f172a0f;border:1px solid var(--c-hairline)}.dash__tile[data-v-19d54f06]{display:grid;grid-template-columns:44px 1fr 18px;align-items:center;gap:12px;width:100%;margin:0;padding:11px 12px;border:0;border-radius:16px;cursor:pointer;background:transparent;font-family:inherit;text-align:start;transition:background .15s ease,transform .15s ease}.dash__tile[data-v-19d54f06]:active{transform:scale(.99);background:var(--c-canvasSoft)}.dash__tile.is-disabled[data-v-19d54f06]{opacity:.4;pointer-events:none}.dash__tileIcon[data-v-19d54f06]{width:44px;height:44px;border-radius:14px;display:grid;place-items:center}.dash__tile.is-forest .dash__tileIcon[data-v-19d54f06]{color:var(--c-primary);background:rgb(var(--c-primary-rgb) / 10%)}.dash__tile.is-sand .dash__tileIcon[data-v-19d54f06]{color:#8d6a46;background:#8d6a461f}.dash__tile.is-wine .dash__tileIcon[data-v-19d54f06]{color:var(--c-wine);background:var(--c-wineWash)}.dash__tile.is-rose .dash__tileIcon[data-v-19d54f06]{color:var(--c-wineSoft);background:rgb(var(--c-wineSoft-rgb) / 12%)}.dash__tile.is-slate .dash__tileIcon[data-v-19d54f06]{color:var(--c-inkMuted);background:var(--c-hairlineSoft)}.dash__tile.is-ink .dash__tileIcon[data-v-19d54f06]{color:var(--c-inkSoft);background:rgb(var(--c-ink-rgb) / 6%)}.dash__tileTitle[data-v-19d54f06]{font-size:13.5px;font-weight:700;color:var(--c-ink);letter-spacing:-.01em}.dash__tileArrow[data-v-19d54f06]{display:grid;place-items:center;color:var(--c-inkFaint);opacity:.7} diff --git a/apps/user-app/dist/assets/FavoritesView-o6zfIXuM.js b/apps/user-app/dist/assets/FavoritesView-mBGWEKpf.js similarity index 88% rename from apps/user-app/dist/assets/FavoritesView-o6zfIXuM.js rename to apps/user-app/dist/assets/FavoritesView-mBGWEKpf.js index eff98e5..e606b00 100644 --- a/apps/user-app/dist/assets/FavoritesView-o6zfIXuM.js +++ b/apps/user-app/dist/assets/FavoritesView-mBGWEKpf.js @@ -1 +1 @@ -import{d as g,l as h,o as y,w as k,f as r,x as a,J as v,T as b,k as _,D as C,e as s,F as f,g as c,r as P,I as w,q as x,h as B,N as F,j as V,M as I,O as N,_ as S}from"./index-BFOyCNFT.js";import{P as $}from"./PageBar-Cz1N2fdD.js";import{S as j}from"./SectionHead-Cg_UnoI8.js";import{P as M}from"./ProductCard-k7xfI-K2.js";const R={class:"favs"},q={class:"favs__grid"},z={key:1,class:"favs__empty"},D=g({__name:"FavoritesView",setup(E){const p=F(),l=h(),o=_(!1),n=_([]),i=V(()=>n.value.filter(t=>l.isFavorite(t.id)));async function d(){const t=l.ids;if(t.length===0){n.value=[];return}o.value=n.value.length===0;try{n.value=await C.getProductsByIds(t)}catch(e){console.log(e)}finally{o.value=!1}}return y(d),k(()=>l.ids.join(","),d),(t,e)=>{const m=I("container");return s(),r("div",R,[a($,{title:"علاقه‌مندی","back-to":"userPage::hasSubRoute"}),a(b,{spinning:o.value,tip:"در حال دریافت اطلاعات"},{default:v(()=>[a(m,{class:"favs__body"},{default:v(()=>[i.value.length?(s(),r(f,{key:0},[a(j,{title:"ذخیره‌شده‌ها",subtitle:`${i.value.length} محصول`},null,8,["subtitle"]),c("div",q,[(s(!0),r(f,null,P(i.value,u=>(s(),N(M,{key:u.id,value:u},null,8,["value"]))),128))])],64)):o.value?B("",!0):(s(),r("section",z,[a(w,{icon:"vuesax-linear:heart",size:"26"}),e[1]||(e[1]=c("p",null,"هنوز محصولی را به علاقه‌مندی‌ها اضافه نکرده‌اید.",-1)),c("button",{type:"button",class:"favs__emptyCta",onClick:e[0]||(e[0]=u=>x(p).push({name:"home"}))}," دیدن محصولات ")]))]),_:1})]),_:1},8,["spinning"])])}}}),T=S(D,[["__scopeId","data-v-30992de1"]]);export{T as default}; +import{d as g,l as h,o as y,w as k,f as r,x as a,J as v,T as b,k as _,D as C,e as s,F as f,g as c,r as P,I as w,q as x,h as B,N as F,j as V,M as I,O as N,_ as S}from"./index-B-RmZRr2.js";import{P as $}from"./PageBar-DmOKrVEQ.js";import{S as j}from"./SectionHead-CJoa_aGh.js";import{P as M}from"./ProductCard-AevItfr3.js";const R={class:"favs"},q={class:"favs__grid"},z={key:1,class:"favs__empty"},D=g({__name:"FavoritesView",setup(E){const p=F(),l=h(),o=_(!1),n=_([]),i=V(()=>n.value.filter(t=>l.isFavorite(t.id)));async function d(){const t=l.ids;if(t.length===0){n.value=[];return}o.value=n.value.length===0;try{n.value=await C.getProductsByIds(t)}catch(e){console.log(e)}finally{o.value=!1}}return y(d),k(()=>l.ids.join(","),d),(t,e)=>{const m=I("container");return s(),r("div",R,[a($,{title:"علاقه‌مندی","back-to":"userPage::hasSubRoute"}),a(b,{spinning:o.value,tip:"در حال دریافت اطلاعات"},{default:v(()=>[a(m,{class:"favs__body"},{default:v(()=>[i.value.length?(s(),r(f,{key:0},[a(j,{title:"ذخیره‌شده‌ها",subtitle:`${i.value.length} محصول`},null,8,["subtitle"]),c("div",q,[(s(!0),r(f,null,P(i.value,u=>(s(),N(M,{key:u.id,value:u},null,8,["value"]))),128))])],64)):o.value?B("",!0):(s(),r("section",z,[a(w,{icon:"vuesax-linear:heart",size:"26"}),e[1]||(e[1]=c("p",null,"هنوز محصولی را به علاقه‌مندی‌ها اضافه نکرده‌اید.",-1)),c("button",{type:"button",class:"favs__emptyCta",onClick:e[0]||(e[0]=u=>x(p).push({name:"home"}))}," دیدن محصولات ")]))]),_:1})]),_:1},8,["spinning"])])}}}),T=S(D,[["__scopeId","data-v-30992de1"]]);export{T as default}; diff --git a/apps/user-app/dist/assets/FormItemContext-BNYzezPe.js b/apps/user-app/dist/assets/FormItemContext-BNYzezPe.js deleted file mode 100644 index 5dfd7dc..0000000 --- a/apps/user-app/dist/assets/FormItemContext-BNYzezPe.js +++ /dev/null @@ -1 +0,0 @@ -import{aP as Ke,aF as qe,aa as ie,aT as We,ar as Ve,aA as Ie,a5 as j,aB as w,au as oe,a4 as S,ba as Xe,w as Ye,ai as se,c as Je,ab as Ze,j as Ce,k as Qe,d as ke,ax as P}from"./index-BFOyCNFT.js";var Fe=function(){if(typeof Map<"u")return Map;function e(t,r){var n=-1;return t.some(function(a,i){return a[0]===r?(n=i,!0):!1}),n}return function(){function t(){this.__entries__=[]}return Object.defineProperty(t.prototype,"size",{get:function(){return this.__entries__.length},enumerable:!0,configurable:!0}),t.prototype.get=function(r){var n=e(this.__entries__,r),a=this.__entries__[n];return a&&a[1]},t.prototype.set=function(r,n){var a=e(this.__entries__,r);~a?this.__entries__[a][1]=n:this.__entries__.push([r,n])},t.prototype.delete=function(r){var n=this.__entries__,a=e(n,r);~a&&n.splice(a,1)},t.prototype.has=function(r){return!!~e(this.__entries__,r)},t.prototype.clear=function(){this.__entries__.splice(0)},t.prototype.forEach=function(r,n){n===void 0&&(n=null);for(var a=0,i=this.__entries__;a0},e.prototype.connect_=function(){!J||this.connected_||(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),it?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},e.prototype.disconnect_=function(){!J||!this.connected_||(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},e.prototype.onTransitionEnd_=function(t){var r=t.propertyName,n=r===void 0?"":r,a=at.some(function(i){return!!~n.indexOf(i)});a&&this.refresh()},e.getInstance=function(){return this.instance_||(this.instance_=new e),this.instance_},e.instance_=null,e}(),Se=function(e,t){for(var r=0,n=Object.keys(t);r"u"||!(Element instanceof Object))){if(!(t instanceof I(t).Element))throw new TypeError('parameter 1 is not of type "Element".');var r=this.observations_;r.has(t)||(r.set(t,new pt(t)),this.controller_.addObserver(this),this.controller_.refresh())}},e.prototype.unobserve=function(t){if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");if(!(typeof Element>"u"||!(Element instanceof Object))){if(!(t instanceof I(t).Element))throw new TypeError('parameter 1 is not of type "Element".');var r=this.observations_;r.has(t)&&(r.delete(t),r.size||this.controller_.removeObserver(this))}},e.prototype.disconnect=function(){this.clearActive(),this.observations_.clear(),this.controller_.removeObserver(this)},e.prototype.gatherActive=function(){var t=this;this.clearActive(),this.observations_.forEach(function(r){r.isActive()&&t.activeObservations_.push(r)})},e.prototype.broadcastActive=function(){if(this.hasActive()){var t=this.callbackCtx_,r=this.activeObservations_.map(function(n){return new vt(n.target,n.broadcastRect())});this.callback_.call(t,r,t),this.clearActive()}},e.prototype.clearActive=function(){this.activeObservations_.splice(0)},e.prototype.hasActive=function(){return this.activeObservations_.length>0},e}(),Re=typeof WeakMap<"u"?new WeakMap:new Fe,je=function(){function e(t){if(!(this instanceof e))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var r=ot.getInstance(),n=new _t(t,r,this);Re.set(this,n)}return e}();["observe","unobserve","disconnect"].forEach(function(e){je.prototype[e]=function(){var t;return(t=Re.get(this))[e].apply(t,arguments)}});var Zn=function(){return typeof L.ResizeObserver<"u"?L.ResizeObserver:je}();function gt(e,t){return function(r){return e(t(r))}}function fe(e,t,r,n,a,i,o){try{var s=e[i](o),u=s.value}catch(f){return void r(f)}s.done?t(u):Promise.resolve(u).then(n,a)}function Qn(e){return function(){var t=this,r=arguments;return new Promise(function(n,a){var i=e.apply(t,r);function o(u){fe(i,n,a,o,s,"next",u)}function s(u){fe(i,n,a,o,s,"throw",u)}o(void 0)})}}function kn(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1,a=e;if(Array.isArray(e)&&(a=Ke(e)[0]),!a)return null;var i=qe(a,t,n);return i.props=r?ie(ie({},i.props),t):i.props,We(Ve(i.props.class)!=="object","class must be string"),i}function yt(){this.__data__=[],this.size=0}function Me(e,t){return e===t||e!==e&&t!==t}function q(e,t){for(var r=e.length;r--;)if(Me(e[r][0],t))return r;return-1}var bt=Array.prototype,mt=bt.splice;function wt(e){var t=this.__data__,r=q(t,e);if(r<0)return!1;var n=t.length-1;return r==n?t.pop():mt.call(t,r,1),--this.size,!0}function Ot(e){var t=this.__data__,r=q(t,e);return r<0?void 0:t[r][1]}function At(e){return q(this.__data__,e)>-1}function Tt(e,t){var r=this.__data__,n=q(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this}function g(e){var t=-1,r=e==null?0:e.length;for(this.clear();++ts))return!1;var f=i.get(e),d=i.get(t);if(f&&d)return f==t&&d==e;var h=-1,l=!0,_=r&_r?new B:void 0;for(i.set(e,t),i.set(t,e);++h-1&&e%1==0&&e-1&&e%1==0&&e<=Zr}var Qr="[object Arguments]",kr="[object Array]",en="[object Boolean]",tn="[object Date]",rn="[object Error]",nn="[object Function]",an="[object Map]",on="[object Number]",sn="[object Object]",un="[object RegExp]",fn="[object Set]",cn="[object String]",ln="[object WeakMap]",dn="[object ArrayBuffer]",hn="[object DataView]",pn="[object Float32Array]",vn="[object Float64Array]",_n="[object Int8Array]",gn="[object Int16Array]",yn="[object Int32Array]",bn="[object Uint8Array]",mn="[object Uint8ClampedArray]",wn="[object Uint16Array]",On="[object Uint32Array]",c={};c[pn]=c[vn]=c[_n]=c[gn]=c[yn]=c[bn]=c[mn]=c[wn]=c[On]=!0;c[Qr]=c[kr]=c[dn]=c[en]=c[hn]=c[tn]=c[rn]=c[nn]=c[an]=c[on]=c[sn]=c[un]=c[fn]=c[cn]=c[ln]=!1;function An(e){return S(e)&&Be(e.length)&&!!c[j(e)]}function Tn(e){return function(t){return e(t)}}var He=typeof exports=="object"&&exports&&!exports.nodeType&&exports,F=He&&typeof module=="object"&&module&&!module.nodeType&&module,En=F&&F.exports===He,Y=En&&Xe.process,ge=function(){try{var e=F&&F.require&&F.require("util").types;return e||Y&&Y.binding&&Y.binding("util")}catch{}}(),ye=ge&&ge.isTypedArray,Ne=ye?Tn(ye):An,xn=Object.prototype,Pn=xn.hasOwnProperty;function In(e,t){var r=H(e),n=!r&&Kr(e),a=!r&&!n&&Z(e),i=!r&&!n&&!a&&Ne(e),o=r||n||a||i,s=o?Br(e.length,String):[],u=s.length;for(var f in e)(t||Pn.call(e,f))&&!(o&&(f=="length"||a&&(f=="offset"||f=="parent")||i&&(f=="buffer"||f=="byteLength"||f=="byteOffset")||Jr(f,u)))&&s.push(f);return s}var Cn=Object.prototype;function Fn(e){var t=e&&e.constructor,r=typeof t=="function"&&t.prototype||Cn;return e===r}var Sn=gt(Object.keys,Object),$n=Object.prototype,Rn=$n.hasOwnProperty;function jn(e){if(!Fn(e))return Sn(e);var t=[];for(var r in Object(e))Rn.call(e,r)&&r!="constructor"&&t.push(r);return t}function Mn(e){return e!=null&&Be(e.length)&&!De(e)}function Dn(e){return Mn(e)?In(e):jn(e)}function be(e){return jr(e,Dn,Gr)}var zn=1,Ln=Object.prototype,Gn=Ln.hasOwnProperty;function Bn(e,t,r,n,a,i){var o=r&zn,s=be(e),u=s.length,f=be(t),d=f.length;if(u!=d&&!o)return!1;for(var h=u;h--;){var l=s[h];if(!(o?l in t:Gn.call(t,l)))return!1}var _=i.get(e),p=i.get(t);if(_&&p)return _==t&&p==e;var v=!0;i.set(e,t),i.set(t,e);for(var y=o;++h1&&arguments[1]!==void 0?arguments[1]:Ce(function(){return!0}),n=Qe(new Map),a=function(s,u){n.value.set(s,u),n.value=new Map(n.value)},i=function(s){n.value.delete(s),n.value=new Map(n.value)};Ye([r,n],function(){}),P(N,t),P(U,{addFormItemField:a,removeFormItemField:i})},re={id:Ce(function(){}),onFieldBlur:function(){},onFieldChange:function(){},clearValidate:function(){}},ne={addFormItemField:function(){},removeFormItemField:function(){}},ra=function(){var t=se(U,ne),r=Symbol("FormItemFieldKey"),n=Ze();return t.addFormItemField(r,n.type),Je(function(){t.removeFormItemField(r)}),P(U,ne),P(N,re),se(N,re)};const na=ke({compatConfig:{MODE:3},name:"AFormItemRest",setup:function(t,r){var n=r.slots;return P(U,ne),P(N,re),function(){var a;return(a=n.default)===null||a===void 0?void 0:a.call(n)}}});export{ra as A,kn as B,na as F,x as M,m as S,le as U,Qn as _,H as a,Be as b,Jr as c,Kr as d,Me as e,Rr as f,C as g,Fn as h,Zn as i,Mn as j,Dn as k,In as l,Gr as m,jr as n,gt as o,b as p,Tn as q,ge as r,Dr as s,Z as t,be as u,Ue as v,ta as w,B as x,pr as y,ea as z}; diff --git a/apps/user-app/dist/assets/FormItemContext-Buff0-hx.js b/apps/user-app/dist/assets/FormItemContext-Buff0-hx.js new file mode 100644 index 0000000..ad6397d --- /dev/null +++ b/apps/user-app/dist/assets/FormItemContext-Buff0-hx.js @@ -0,0 +1 @@ +import{aP as p,aF as g,aa as F,aT as C,ar as x,w as y,ai as v,c as b,ab as h,j as c,k as j,d as w,ax as m}from"./index-B-RmZRr2.js";function K(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,e=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1,n=t;if(Array.isArray(t)&&(n=p(t)[0]),!n)return null;var o=g(n,r,e);return o.props=a?F(F({},o.props),r):o.props,C(x(o.props.class)!=="object","class must be string"),o}var u=Symbol("ContextProps"),l=Symbol("InternalContextProps"),M=function(r){var a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:c(function(){return!0}),e=j(new Map),n=function(i,I){e.value.set(i,I),e.value=new Map(e.value)},o=function(i){e.value.delete(i),e.value=new Map(e.value)};y([a,e],function(){}),m(u,r),m(l,{addFormItemField:n,removeFormItemField:o})},s={id:c(function(){}),onFieldBlur:function(){},onFieldChange:function(){},clearValidate:function(){}},d={addFormItemField:function(){},removeFormItemField:function(){}},S=function(){var r=v(l,d),a=Symbol("FormItemFieldKey"),e=h();return r.addFormItemField(a,e.type),b(function(){r.removeFormItemField(a)}),m(l,d),m(u,s),v(u,s)};const V=w({compatConfig:{MODE:3},name:"AFormItemRest",setup:function(r,a){var e=a.slots;return m(l,d),m(u,s),function(){var n;return(n=e.default)===null||n===void 0?void 0:n.call(e)}}});export{V as F,S as a,K as c,M as u}; diff --git a/apps/user-app/dist/assets/HomeView-XsVegvBL.js b/apps/user-app/dist/assets/HomeView-CytyOCPn.js similarity index 96% rename from apps/user-app/dist/assets/HomeView-XsVegvBL.js rename to apps/user-app/dist/assets/HomeView-CytyOCPn.js index 65e69d0..ecc4feb 100644 --- a/apps/user-app/dist/assets/HomeView-XsVegvBL.js +++ b/apps/user-app/dist/assets/HomeView-CytyOCPn.js @@ -1 +1 @@ -import{d as re,u as Ie,o as xe,a as Pe,b as $e,w as le,c as Re,e as a,f as l,g as _,F as G,r as K,n as T,h as b,i as ee,j as N,k as V,s as Ae,_ as ce,t as j,l as Fe,m as Me,p as De,q as n,v as Be,x as w,I as Q,y as Le,z as Ee,A as Ne,B as ie,C as we,D as Ve,E as Oe,G as Te,H as Xe,K as ge,J as ne,L as qe,M as he,N as We,O as Z}from"./index-BFOyCNFT.js";import{A as He}from"./AppPullRefresh-CsuQ3Y8x.js";import{R as Ue}from"./RateStrip-ljKA-iPt.js";import{P as ye}from"./ProductCard-k7xfI-K2.js";import{S as be}from"./SectionHead-Cg_UnoI8.js";import{u as je}from"./filtersStore-CRo2e-wH.js";import{u as Ge}from"./notificationsStore-CycZP1fZ.js";import{u as Ke}from"./useReveal-CE0IBSnz.js";import{u as Je}from"./catalogStore-BuqGxGiV.js";import"./filters-sld47Iy-.js";const Ye={key:0,class:"carousel"},Qe=["data-index"],Ze=["src"],et={key:0,class:"carousel__dots",dir:"ltr"},tt=["aria-label","onClick"],ke=.92,st=re({__name:"Carousel",props:{slides:{},sideScale:{default:.72},gap:{default:3},borderRadius:{default:22},stiffness:{default:70},damping:{default:28},autoplay:{type:Boolean,default:!0},autoplayInterval:{default:7500}},setup(g){const e=g,m=Ie(),z=N(()=>{const t=e.slides.filter(s=>s.image);if(!t.length)return[];const o=[];let i=0;for(;o.length=i/2&&(s-=i),s}function se(){const t=e.slides.filter(o=>o.image).length||1;return(Math.round(f)%t+t)%t}function D(){x.value=se()}function R(){var pe;const o=z.value.length;if(!o){I.value=[];return}const s=(((pe=u.value)==null?void 0:pe.clientWidth)||380)*ke,C=e.sideScale,E=e.gap,Y=s*.5+s*C*.5+E,fe=new Array(o);for(let oe=0;oe{const i=Math.min((o-J)/1e3,.064);J=o;const s=d-f,C=-e.stiffness*s,E=-e.damping*p,Y=C+E;if(p+=Y*i,d+=p*i,R(),Math.abs(p)<.002&&Math.abs(f-d)<.001){d=f,p=0,R(),h=null;return}h=requestAnimationFrame(t)};h=requestAnimationFrame(t)}function r(t){var i;if(z.value.length<2||M!==null||t.button!==void 0&&t.button!==0)return;const o=S.value;o&&(M=t.pointerId,$=!0,k.value=!0,ae(),h!=null&&(cancelAnimationFrame(h),h=null),O=t.clientX,P=t.clientX,X=d,p=0,q=0,F=0,v=performance.now(),(i=o.setPointerCapture)==null||i.call(o,t.pointerId))}function y(t){var Y;if(!$||t.pointerId!==M)return;const o=performance.now(),i=Math.max(1,o-v),s=t.clientX-O,C=t.clientX-P;F=Math.abs(s);const E=(((Y=u.value)==null?void 0:Y.clientWidth)??0)*ke||320;d=X-s/E,q=-(C/E)/(i/1e3),P=t.clientX,v=o,R()}function A(t){if(!$||t.pointerId!==M)return;$=!1,k.value=!1,M=null;const o=z.value.length;if(F<6&&t.target instanceof Element){const s=t.target.closest(".carousel__card");if(s){const C=Number(s.dataset.index);if(!Number.isNaN(C)){const E=te(C,d,o);if(Math.abs(E)>.25){f=Math.round(d+E),U(),D(),e.autoplay&&L();return}}}}p=q;const i=d+p*.16;f=Math.round(i),U(),D(),e.autoplay&&L()}function B(t){const o=e.slides.filter(C=>C.image).length;if(o<2)return;const i=se();let s=t-i;s>o/2&&(s-=o),s<-o/2&&(s+=o),f=Math.round(f)+s,U(),D()}let c=!0;function L(){ae(),c&&(!e.autoplay||m.isReducedMotion||e.slides.length<2||(W=setInterval(()=>{!$&&c&&(f=Math.round(f)+1,U(),D())},e.autoplayInterval)))}function ae(){W&&(clearInterval(W),W=void 0)}function de(){c=!1,ae(),h!=null&&(cancelAnimationFrame(h),h=null),d=f,p=0,$=!1,k.value=!1,R(),D()}function Se(){c=!0,R(),e.autoplay&&L()}function _e(){d=0,f=0,p=0,D(),R()}return xe(()=>{c=!0,_e(),u.value&&typeof ResizeObserver<"u"&&(H=new ResizeObserver(()=>R()),H.observe(u.value)),e.autoplay&&L()}),Pe(de),$e(Se),le(()=>e.slides,()=>{_e()}),le(()=>[e.sideScale,e.gap,e.stiffness,e.damping],()=>R()),le(()=>e.autoplay,t=>{t?L():ae()}),Re(()=>{if(de(),H==null||H.disconnect(),M!==null&&S.value)try{S.value.releasePointerCapture(M)}catch{}}),(t,o)=>g.slides.length?(a(),l("section",Ye,[_("div",{ref_key:"viewport",ref:S,class:ee(["carousel__viewport",{"is-dragging":k.value}]),style:T({"--carousel-radius":`${g.borderRadius}px`}),onPointerdown:r,onPointermove:y,onPointerup:A,onPointercancel:A},[_("div",{ref_key:"stage",ref:u,class:"carousel__stage"},[(a(!0),l(G,null,K(z.value,(i,s)=>(a(),l("article",{key:i.key,class:"carousel__card","data-index":s,style:T(I.value[s])},[i.image?(a(),l("img",{key:0,src:i.image,alt:"",class:"carousel__art",draggable:"false"},null,8,Ze)):b("",!0)],12,Qe))),128))],512)],38),g.slides.length>1?(a(),l("div",et,[(a(!0),l(G,null,K(g.slides,(i,s)=>(a(),l("button",{key:i.key,type:"button",class:ee(["carousel__dot",{"is-active":s===x.value}]),"aria-label":`اسلاید ${s+1}`,onClick:C=>B(s)},null,10,tt))),128))])):b("",!0)])):b("",!0)}}),at=ce(st,[["__scopeId","data-v-a34a8c37"]]),ot={class:"rail no-scrollbar"},nt=["onClick"],lt={class:"rail__mark","aria-hidden":"true"},it=["src"],rt={class:"rail__title"},ct=re({__name:"CategoryRail",props:{categories:{},activeId:{}},emits:["select"],setup(g,{emit:e}){const m=e;return(z,S)=>(a(),l("div",ot,[(a(!0),l(G,null,K(g.categories,u=>{var k;return a(),l("button",{key:u.id,type:"button",class:ee(["rail__chip",{"is-active":u.id===g.activeId}]),onClick:x=>m("select",u)},[_("span",lt,[(k=u.icon)!=null&&k.image?(a(),l("img",{key:0,src:u.icon.image,alt:""},null,8,it)):b("",!0)]),_("span",rt,j(u.title),1)],10,nt)}),128))]))}}),ut=ce(ct,[["__scopeId","data-v-b38bbeb0"]]),dt={class:"pr__art"},_t=["alt"],ft={key:1,class:"pr__artEmpty","aria-hidden":"true"},pt=["aria-label"],mt={key:2,class:"pr__flag"},vt={key:3,class:"pr__flag pr__flag--soft"},gt={class:"pr__body"},ht={class:"pr__title"},yt={key:0,class:"pr__tags"},bt={class:"pr__meta"},kt={class:"pr__weight"},xt={key:0,class:"pr__wage"},$t=re({__name:"ProductRow",props:{value:{}},setup(g){const e=g,m=Fe(),{image:z,id:S,title:u,min_gram:k,wage:x,is_exist:I,qty:d,isPreOrder:f}=Me(e.value),p=N(()=>(e.value.tags??[]).filter(Boolean)),$=V(null);function O(){Ee(e.value,$.value)}const X=N(()=>{const P=x.value;return P==null?"":P%1===0?String(P):P.toFixed(2)});return(P,v)=>{const q=De("lazy");return a(),l("article",{ref_key:"root",ref:$,class:"pr","data-product-origin":"",onClick:O},[_("div",dt,[n(z)?Be((a(),l("img",{key:0,alt:n(u)},null,8,_t)),[[q,n(z)]]):(a(),l("div",ft,[w(Q,{icon:"vuesax-linear:diamonds",size:"22"})])),_("button",{type:"button",class:ee(["pr__fav",{"is-on":n(m).isFavorite(n(S))}]),"aria-label":n(m).isFavorite(n(S))?"حذف از علاقه‌مندی":"افزودن به علاقه‌مندی",onClick:v[0]||(v[0]=Le(F=>n(m).toggle(n(S)),["stop"]))},[w(Q,{icon:n(m).isFavorite(n(S))?"vuesax-linear:heart-fill":"vuesax-linear:heart",size:"15"},null,8,["icon"])],10,pt),n(I)?n(f)&&n(d)===0?(a(),l("span",vt,"پیش‌سفارش")):b("",!0):(a(),l("span",mt,"ناموجود"))]),_("div",gt,[_("h3",ht,j(n(u)),1),p.value.length?(a(),l("div",yt,[(a(!0),l(G,null,K(p.value,F=>(a(),l("span",{key:F,class:"pr__tag"},j(F),1))),128))])):b("",!0),_("div",bt,[_("span",kt,j(n(k))+" گرم",1),n(x)!=null?(a(),l("span",xt,"اجرت "+j(X.value)+"٪",1)):b("",!0)]),v[1]||(v[1]=_("span",{class:"pr__cta"},"مشاهده",-1))]),w(Q,{icon:"vuesax-linear:arrow-left-1",size:"18",class:"pr__chev","aria-hidden":"true"})],512)}}}),wt=ce($t,[["__scopeId","data-v-837c0ace"]]),St="/assets/shipping-and-delivery-CyUGL93q.png",Ct="/assets/sports-and-competition-ao926_SX.png",zt=[{type:"popup",src:St,text:"ارسال سریع و مطمئن سفارش‌های شما به سراسر کشور.",link:void 0},{type:"popup",src:Ct,text:`جدیدترین محصولات ${ie.name} را در بخش محصولات جدید ببینید.`,link:void 0},{type:"popup",src:we,text:`${ie.name}، همراه شما در خرید و فروش طلا.`,link:void 0}],It=Ne("config",{state:()=>({config:{main_slider:zt},cats:[],loaded:!1}),actions:{setCats(g){this.cats=g},async init(g=!1){try{const{categories:e}=await Ve.getCatalogFacets();this.cats=e.map(m=>({...m,icon:{image:we}})),this.loaded=!0}catch(e){console.log(e)}}}}),Pt={class:"home"},Rt={class:"home__bar"},At={class:"home__barInner"},Ft={key:0,class:"home__badge"},Mt=["alt"],Dt={key:0,class:"home__badge"},Bt={class:"home__masonry"},Lt={class:"home__masonryCol"},Et={class:"home__masonryCol"},Nt={class:"home__rows"},Vt=re({__name:"HomeView",setup(g){const e=We(),m=It(),z=Oe(),S=je(),u=Je(),k=Te(),x=Ge(),I=Xe(),d=N(()=>x.badgeTotal),f=V(!u.loaded),p=V(!1),$=N(()=>u.products),O=V(I.peek(ge.goldPrice)??null),X=V(I.peek(ge.homeSlider)??null),{revealed:P,revealDelay:v,reveal:q}=Ke("home"),F=N(()=>{const r=$.value.slice(0,8);return r.length%2===1?r.slice(0,-1):r}),M=N(()=>$.value.slice(-10).reverse()),h=[{col:"left",size:"short"},{col:"right",size:"hero"},{col:"left",size:"hero"},{col:"right",size:"short"},{col:"left",size:"tall"},{col:"right",size:"mid"},{col:"left",size:"mid"},{col:"right",size:"tall"}],J=N(()=>{const r=F.value,y=[],A=[];return r.forEach((B,c)=>{const L=h[c]??{col:c%2===0?"left":"right",size:"mid"};L.col==="left"?y.push({item:B,size:L.size}):A.push({item:B,size:L.size})}),{left:y,right:A}}),W=N(()=>(X.value??[]).filter(r=>r.image).map((r,y)=>({key:`${y}-${r.image}`,image:r.image})));function H(r){S.query.cats=[r.id],e.push({name:"search"})}function te(){e.push({name:"search"})}function se(){e.push({name:"newestProduct"})}async function D(r=!1){const[y,A,B,c]=await Promise.allSettled([u.load(r),m.init(r),I.goldPrice({force:r}),I.homeSlider({force:r})]);y.status==="rejected"&&console.log(y.reason),A.status==="rejected"&&console.log(A.reason),O.value=B.status==="fulfilled"?B.value:null,X.value=c.status==="fulfilled"?c.value:null}async function R(){await D(!0),p.value=!1}xe(async()=>{await D(),f.value=!1,q(),k.isLoggedIn&&x.refreshBadge()}),le(()=>k.isLoggedIn,r=>{r?x.refreshBadge():(x.adminUnread=0,x.statusFresh=0)});let U=!1;return $e(async()=>{if(!U){U=!0;return}try{O.value=await I.goldPrice({force:!0})}catch(r){console.log(r)}k.isLoggedIn&&x.refreshBadge()}),(r,y)=>{const A=he("router-link"),B=he("container");return a(),l("div",Pt,[_("header",Rt,[_("div",At,[w(A,{to:{name:"cart"},class:"home__iconBtn","aria-label":"سبد خرید"},{default:ne(()=>[w(Q,{icon:"vuesax-linear:bag-2",size:"21"}),n(z).items.length?(a(),l("span",Ft,j(n(z).items.length),1)):b("",!0)]),_:1}),_("img",{src:qe,alt:n(ie).name,class:"home__logo"},null,8,Mt),w(A,{to:{name:"notifications"},class:"home__iconBtn","aria-label":"پیام‌ها"},{default:ne(()=>[w(Q,{icon:"vuesax-linear:notification",size:"21"}),d.value>0?(a(),l("span",Dt,j(d.value>9?"۹+":d.value),1)):b("",!0)]),_:1})])]),w(He,{modelValue:p.value,"onUpdate:modelValue":y[0]||(y[0]=c=>p.value=c),onRefresh:R},{default:ne(()=>[w(B,{class:ee(["home__body",{"is-revealed":n(P)}])},{default:ne(()=>[w(Ue,{quote:O.value,class:"home__rate reveal",style:T(n(v)(0))},null,8,["quote","style"]),W.value.length?(a(),Z(at,{key:0,slides:W.value,class:"home__hero reveal",style:T(n(v)(1))},null,8,["slides","style"])):b("",!0),n(m).cats.length?(a(),Z(ut,{key:1,categories:n(m).cats,"active-id":null,class:"home__rail reveal",style:T(n(v)(2)),onSelect:H},null,8,["categories","style"])):b("",!0),F.value.length?(a(),l("section",{key:2,class:"home__section reveal",style:T(n(v)(3))},[w(be,{title:`برگزیده ${n(ie).name}`,subtitle:"انتخاب‌شده از میان مجموعه‌های موجود","action-label":"همه محصولات",onAction:te},null,8,["title"]),_("div",Bt,[_("div",Lt,[(a(!0),l(G,null,K(J.value.left,c=>(a(),Z(ye,{key:c.item.id,value:c.item,size:c.size},null,8,["value","size"]))),128))]),_("div",Et,[(a(!0),l(G,null,K(J.value.right,c=>(a(),Z(ye,{key:c.item.id,value:c.item,size:c.size},null,8,["value","size"]))),128))])])],4)):b("",!0),M.value.length?(a(),l("section",{key:3,class:"home__section reveal",style:T(n(v)(4))},[w(be,{title:"تازه‌ها",subtitle:"آخرین افزوده‌های مجموعه","action-label":"مشاهده همه",onAction:se}),_("div",Nt,[(a(!0),l(G,null,K(M.value,c=>(a(),Z(wt,{key:c.id,value:c},null,8,["value"]))),128))])],4)):b("",!0),!f.value&&!$.value.length?(a(),l("section",{key:4,class:"home__empty reveal",style:T(n(v)(3))},[w(Q,{icon:"vuesax-linear:box",size:"26"}),y[1]||(y[1]=_("p",null,"هنوز محصولی در مجموعه ثبت نشده است.",-1))],4)):b("",!0)]),_:1},8,["class"])]),_:1},8,["modelValue"])])}}}),Yt=ce(Vt,[["__scopeId","data-v-ed88c3ab"]]);export{Yt as default}; +import{d as re,u as Ie,o as xe,a as Pe,b as $e,w as le,c as Re,e as a,f as l,g as _,F as G,r as K,n as T,h as b,i as ee,j as N,k as V,s as Ae,_ as ce,t as j,l as Fe,m as Me,p as De,q as n,v as Be,x as w,I as Q,y as Le,z as Ee,A as Ne,B as ie,C as we,D as Ve,E as Oe,G as Te,H as Xe,K as ge,J as ne,L as qe,M as he,N as We,O as Z}from"./index-B-RmZRr2.js";import{A as He}from"./AppPullRefresh-RDVLXVM_.js";import{R as Ue}from"./RateStrip-D4hWdTta.js";import{P as ye}from"./ProductCard-AevItfr3.js";import{S as be}from"./SectionHead-CJoa_aGh.js";import{u as je}from"./filtersStore-B8ucFdIZ.js";import{u as Ge}from"./notificationsStore-CEbLTUwx.js";import{u as Ke}from"./useReveal-Dq2T90sy.js";import{u as Je}from"./catalogStore-D54EVMFO.js";import"./filters-BLs90kiz.js";const Ye={key:0,class:"carousel"},Qe=["data-index"],Ze=["src"],et={key:0,class:"carousel__dots",dir:"ltr"},tt=["aria-label","onClick"],ke=.92,st=re({__name:"Carousel",props:{slides:{},sideScale:{default:.72},gap:{default:3},borderRadius:{default:22},stiffness:{default:70},damping:{default:28},autoplay:{type:Boolean,default:!0},autoplayInterval:{default:7500}},setup(g){const e=g,m=Ie(),z=N(()=>{const t=e.slides.filter(s=>s.image);if(!t.length)return[];const o=[];let i=0;for(;o.length=i/2&&(s-=i),s}function se(){const t=e.slides.filter(o=>o.image).length||1;return(Math.round(f)%t+t)%t}function D(){x.value=se()}function R(){var pe;const o=z.value.length;if(!o){I.value=[];return}const s=(((pe=u.value)==null?void 0:pe.clientWidth)||380)*ke,C=e.sideScale,E=e.gap,Y=s*.5+s*C*.5+E,fe=new Array(o);for(let oe=0;oe{const i=Math.min((o-J)/1e3,.064);J=o;const s=d-f,C=-e.stiffness*s,E=-e.damping*p,Y=C+E;if(p+=Y*i,d+=p*i,R(),Math.abs(p)<.002&&Math.abs(f-d)<.001){d=f,p=0,R(),h=null;return}h=requestAnimationFrame(t)};h=requestAnimationFrame(t)}function r(t){var i;if(z.value.length<2||M!==null||t.button!==void 0&&t.button!==0)return;const o=S.value;o&&(M=t.pointerId,$=!0,k.value=!0,ae(),h!=null&&(cancelAnimationFrame(h),h=null),O=t.clientX,P=t.clientX,X=d,p=0,q=0,F=0,v=performance.now(),(i=o.setPointerCapture)==null||i.call(o,t.pointerId))}function y(t){var Y;if(!$||t.pointerId!==M)return;const o=performance.now(),i=Math.max(1,o-v),s=t.clientX-O,C=t.clientX-P;F=Math.abs(s);const E=(((Y=u.value)==null?void 0:Y.clientWidth)??0)*ke||320;d=X-s/E,q=-(C/E)/(i/1e3),P=t.clientX,v=o,R()}function A(t){if(!$||t.pointerId!==M)return;$=!1,k.value=!1,M=null;const o=z.value.length;if(F<6&&t.target instanceof Element){const s=t.target.closest(".carousel__card");if(s){const C=Number(s.dataset.index);if(!Number.isNaN(C)){const E=te(C,d,o);if(Math.abs(E)>.25){f=Math.round(d+E),U(),D(),e.autoplay&&L();return}}}}p=q;const i=d+p*.16;f=Math.round(i),U(),D(),e.autoplay&&L()}function B(t){const o=e.slides.filter(C=>C.image).length;if(o<2)return;const i=se();let s=t-i;s>o/2&&(s-=o),s<-o/2&&(s+=o),f=Math.round(f)+s,U(),D()}let c=!0;function L(){ae(),c&&(!e.autoplay||m.isReducedMotion||e.slides.length<2||(W=setInterval(()=>{!$&&c&&(f=Math.round(f)+1,U(),D())},e.autoplayInterval)))}function ae(){W&&(clearInterval(W),W=void 0)}function de(){c=!1,ae(),h!=null&&(cancelAnimationFrame(h),h=null),d=f,p=0,$=!1,k.value=!1,R(),D()}function Se(){c=!0,R(),e.autoplay&&L()}function _e(){d=0,f=0,p=0,D(),R()}return xe(()=>{c=!0,_e(),u.value&&typeof ResizeObserver<"u"&&(H=new ResizeObserver(()=>R()),H.observe(u.value)),e.autoplay&&L()}),Pe(de),$e(Se),le(()=>e.slides,()=>{_e()}),le(()=>[e.sideScale,e.gap,e.stiffness,e.damping],()=>R()),le(()=>e.autoplay,t=>{t?L():ae()}),Re(()=>{if(de(),H==null||H.disconnect(),M!==null&&S.value)try{S.value.releasePointerCapture(M)}catch{}}),(t,o)=>g.slides.length?(a(),l("section",Ye,[_("div",{ref_key:"viewport",ref:S,class:ee(["carousel__viewport",{"is-dragging":k.value}]),style:T({"--carousel-radius":`${g.borderRadius}px`}),onPointerdown:r,onPointermove:y,onPointerup:A,onPointercancel:A},[_("div",{ref_key:"stage",ref:u,class:"carousel__stage"},[(a(!0),l(G,null,K(z.value,(i,s)=>(a(),l("article",{key:i.key,class:"carousel__card","data-index":s,style:T(I.value[s])},[i.image?(a(),l("img",{key:0,src:i.image,alt:"",class:"carousel__art",draggable:"false"},null,8,Ze)):b("",!0)],12,Qe))),128))],512)],38),g.slides.length>1?(a(),l("div",et,[(a(!0),l(G,null,K(g.slides,(i,s)=>(a(),l("button",{key:i.key,type:"button",class:ee(["carousel__dot",{"is-active":s===x.value}]),"aria-label":`اسلاید ${s+1}`,onClick:C=>B(s)},null,10,tt))),128))])):b("",!0)])):b("",!0)}}),at=ce(st,[["__scopeId","data-v-a34a8c37"]]),ot={class:"rail no-scrollbar"},nt=["onClick"],lt={class:"rail__mark","aria-hidden":"true"},it=["src"],rt={class:"rail__title"},ct=re({__name:"CategoryRail",props:{categories:{},activeId:{}},emits:["select"],setup(g,{emit:e}){const m=e;return(z,S)=>(a(),l("div",ot,[(a(!0),l(G,null,K(g.categories,u=>{var k;return a(),l("button",{key:u.id,type:"button",class:ee(["rail__chip",{"is-active":u.id===g.activeId}]),onClick:x=>m("select",u)},[_("span",lt,[(k=u.icon)!=null&&k.image?(a(),l("img",{key:0,src:u.icon.image,alt:""},null,8,it)):b("",!0)]),_("span",rt,j(u.title),1)],10,nt)}),128))]))}}),ut=ce(ct,[["__scopeId","data-v-b38bbeb0"]]),dt={class:"pr__art"},_t=["alt"],ft={key:1,class:"pr__artEmpty","aria-hidden":"true"},pt=["aria-label"],mt={key:2,class:"pr__flag"},vt={key:3,class:"pr__flag pr__flag--soft"},gt={class:"pr__body"},ht={class:"pr__title"},yt={key:0,class:"pr__tags"},bt={class:"pr__meta"},kt={class:"pr__weight"},xt={key:0,class:"pr__wage"},$t=re({__name:"ProductRow",props:{value:{}},setup(g){const e=g,m=Fe(),{image:z,id:S,title:u,min_gram:k,wage:x,is_exist:I,qty:d,isPreOrder:f}=Me(e.value),p=N(()=>(e.value.tags??[]).filter(Boolean)),$=V(null);function O(){Ee(e.value,$.value)}const X=N(()=>{const P=x.value;return P==null?"":P%1===0?String(P):P.toFixed(2)});return(P,v)=>{const q=De("lazy");return a(),l("article",{ref_key:"root",ref:$,class:"pr","data-product-origin":"",onClick:O},[_("div",dt,[n(z)?Be((a(),l("img",{key:0,alt:n(u)},null,8,_t)),[[q,n(z)]]):(a(),l("div",ft,[w(Q,{icon:"vuesax-linear:diamonds",size:"22"})])),_("button",{type:"button",class:ee(["pr__fav",{"is-on":n(m).isFavorite(n(S))}]),"aria-label":n(m).isFavorite(n(S))?"حذف از علاقه‌مندی":"افزودن به علاقه‌مندی",onClick:v[0]||(v[0]=Le(F=>n(m).toggle(n(S)),["stop"]))},[w(Q,{icon:n(m).isFavorite(n(S))?"vuesax-linear:heart-fill":"vuesax-linear:heart",size:"15"},null,8,["icon"])],10,pt),n(I)?n(f)&&n(d)===0?(a(),l("span",vt,"پیش‌سفارش")):b("",!0):(a(),l("span",mt,"ناموجود"))]),_("div",gt,[_("h3",ht,j(n(u)),1),p.value.length?(a(),l("div",yt,[(a(!0),l(G,null,K(p.value,F=>(a(),l("span",{key:F,class:"pr__tag"},j(F),1))),128))])):b("",!0),_("div",bt,[_("span",kt,j(n(k))+" گرم",1),n(x)!=null?(a(),l("span",xt,"اجرت "+j(X.value)+"٪",1)):b("",!0)]),v[1]||(v[1]=_("span",{class:"pr__cta"},"مشاهده",-1))]),w(Q,{icon:"vuesax-linear:arrow-left-1",size:"18",class:"pr__chev","aria-hidden":"true"})],512)}}}),wt=ce($t,[["__scopeId","data-v-837c0ace"]]),St="/assets/shipping-and-delivery-CyUGL93q.png",Ct="/assets/sports-and-competition-ao926_SX.png",zt=[{type:"popup",src:St,text:"ارسال سریع و مطمئن سفارش‌های شما به سراسر کشور.",link:void 0},{type:"popup",src:Ct,text:`جدیدترین محصولات ${ie.name} را در بخش محصولات جدید ببینید.`,link:void 0},{type:"popup",src:we,text:`${ie.name}، همراه شما در خرید و فروش طلا.`,link:void 0}],It=Ne("config",{state:()=>({config:{main_slider:zt},cats:[],loaded:!1}),actions:{setCats(g){this.cats=g},async init(g=!1){try{const{categories:e}=await Ve.getCatalogFacets();this.cats=e.map(m=>({...m,icon:{image:we}})),this.loaded=!0}catch(e){console.log(e)}}}}),Pt={class:"home"},Rt={class:"home__bar"},At={class:"home__barInner"},Ft={key:0,class:"home__badge"},Mt=["alt"],Dt={key:0,class:"home__badge"},Bt={class:"home__masonry"},Lt={class:"home__masonryCol"},Et={class:"home__masonryCol"},Nt={class:"home__rows"},Vt=re({__name:"HomeView",setup(g){const e=We(),m=It(),z=Oe(),S=je(),u=Je(),k=Te(),x=Ge(),I=Xe(),d=N(()=>x.badgeTotal),f=V(!u.loaded),p=V(!1),$=N(()=>u.products),O=V(I.peek(ge.goldPrice)??null),X=V(I.peek(ge.homeSlider)??null),{revealed:P,revealDelay:v,reveal:q}=Ke("home"),F=N(()=>{const r=$.value.slice(0,8);return r.length%2===1?r.slice(0,-1):r}),M=N(()=>$.value.slice(-10).reverse()),h=[{col:"left",size:"short"},{col:"right",size:"hero"},{col:"left",size:"hero"},{col:"right",size:"short"},{col:"left",size:"tall"},{col:"right",size:"mid"},{col:"left",size:"mid"},{col:"right",size:"tall"}],J=N(()=>{const r=F.value,y=[],A=[];return r.forEach((B,c)=>{const L=h[c]??{col:c%2===0?"left":"right",size:"mid"};L.col==="left"?y.push({item:B,size:L.size}):A.push({item:B,size:L.size})}),{left:y,right:A}}),W=N(()=>(X.value??[]).filter(r=>r.image).map((r,y)=>({key:`${y}-${r.image}`,image:r.image})));function H(r){S.query.cats=[r.id],e.push({name:"search"})}function te(){e.push({name:"search"})}function se(){e.push({name:"newestProduct"})}async function D(r=!1){const[y,A,B,c]=await Promise.allSettled([u.load(r),m.init(r),I.goldPrice({force:r}),I.homeSlider({force:r})]);y.status==="rejected"&&console.log(y.reason),A.status==="rejected"&&console.log(A.reason),O.value=B.status==="fulfilled"?B.value:null,X.value=c.status==="fulfilled"?c.value:null}async function R(){await D(!0),p.value=!1}xe(async()=>{await D(),f.value=!1,q(),k.isLoggedIn&&x.refreshBadge()}),le(()=>k.isLoggedIn,r=>{r?x.refreshBadge():(x.adminUnread=0,x.statusFresh=0)});let U=!1;return $e(async()=>{if(!U){U=!0;return}try{O.value=await I.goldPrice({force:!0})}catch(r){console.log(r)}k.isLoggedIn&&x.refreshBadge()}),(r,y)=>{const A=he("router-link"),B=he("container");return a(),l("div",Pt,[_("header",Rt,[_("div",At,[w(A,{to:{name:"cart"},class:"home__iconBtn","aria-label":"سبد خرید"},{default:ne(()=>[w(Q,{icon:"vuesax-linear:bag-2",size:"21"}),n(z).items.length?(a(),l("span",Ft,j(n(z).items.length),1)):b("",!0)]),_:1}),_("img",{src:qe,alt:n(ie).name,class:"home__logo"},null,8,Mt),w(A,{to:{name:"notifications"},class:"home__iconBtn","aria-label":"پیام‌ها"},{default:ne(()=>[w(Q,{icon:"vuesax-linear:notification",size:"21"}),d.value>0?(a(),l("span",Dt,j(d.value>9?"۹+":d.value),1)):b("",!0)]),_:1})])]),w(He,{modelValue:p.value,"onUpdate:modelValue":y[0]||(y[0]=c=>p.value=c),onRefresh:R},{default:ne(()=>[w(B,{class:ee(["home__body",{"is-revealed":n(P)}])},{default:ne(()=>[w(Ue,{quote:O.value,class:"home__rate reveal",style:T(n(v)(0))},null,8,["quote","style"]),W.value.length?(a(),Z(at,{key:0,slides:W.value,class:"home__hero reveal",style:T(n(v)(1))},null,8,["slides","style"])):b("",!0),n(m).cats.length?(a(),Z(ut,{key:1,categories:n(m).cats,"active-id":null,class:"home__rail reveal",style:T(n(v)(2)),onSelect:H},null,8,["categories","style"])):b("",!0),F.value.length?(a(),l("section",{key:2,class:"home__section reveal",style:T(n(v)(3))},[w(be,{title:`برگزیده ${n(ie).name}`,subtitle:"انتخاب‌شده از میان مجموعه‌های موجود","action-label":"همه محصولات",onAction:te},null,8,["title"]),_("div",Bt,[_("div",Lt,[(a(!0),l(G,null,K(J.value.left,c=>(a(),Z(ye,{key:c.item.id,value:c.item,size:c.size},null,8,["value","size"]))),128))]),_("div",Et,[(a(!0),l(G,null,K(J.value.right,c=>(a(),Z(ye,{key:c.item.id,value:c.item,size:c.size},null,8,["value","size"]))),128))])])],4)):b("",!0),M.value.length?(a(),l("section",{key:3,class:"home__section reveal",style:T(n(v)(4))},[w(be,{title:"تازه‌ها",subtitle:"آخرین افزوده‌های مجموعه","action-label":"مشاهده همه",onAction:se}),_("div",Nt,[(a(!0),l(G,null,K(M.value,c=>(a(),Z(wt,{key:c.id,value:c},null,8,["value"]))),128))])],4)):b("",!0),!f.value&&!$.value.length?(a(),l("section",{key:4,class:"home__empty reveal",style:T(n(v)(3))},[w(Q,{icon:"vuesax-linear:box",size:"26"}),y[1]||(y[1]=_("p",null,"هنوز محصولی در مجموعه ثبت نشده است.",-1))],4)):b("",!0)]),_:1},8,["class"])]),_:1},8,["modelValue"])])}}}),Yt=ce(Vt,[["__scopeId","data-v-ed88c3ab"]]);export{Yt as default}; diff --git a/apps/user-app/dist/assets/IamCallback-Cd0tQpyP.js b/apps/user-app/dist/assets/IamCallback-BVW6l1Z5.js similarity index 93% rename from apps/user-app/dist/assets/IamCallback-Cd0tQpyP.js rename to apps/user-app/dist/assets/IamCallback-BVW6l1Z5.js index 1f2f369..2b0aafd 100644 --- a/apps/user-app/dist/assets/IamCallback-Cd0tQpyP.js +++ b/apps/user-app/dist/assets/IamCallback-BVW6l1Z5.js @@ -1 +1 @@ -import{d as c,G as i,o as m,D as r,f as l,N as _,e as p}from"./index-BFOyCNFT.js";const g={style:{"min-height":"100vh",display:"grid","place-items":"center"}},h=c({__name:"IamCallback",setup(u){const a=_(),s=i();function o(){sessionStorage.setItem("gb_iam_sso_skip","1");const e=sessionStorage.getItem("gb_iam_return");sessionStorage.removeItem("gb_iam_return");const t=e&&e.startsWith("/")&&!e.startsWith("//")?e:"/";return a.replace(t)}return m(async()=>{const e=new URLSearchParams(window.location.search);if(sessionStorage.removeItem("gb_iam_sso_checked"),e.get("error")||!e.get("code")||!e.get("state")){await o();return}try{const t=await r.ssoCallback(e.get("code"),e.get("state"));s.login(t.token,t.customer.id,t.customer.mobile);try{const n=await r.getExpertIdentity();s.setSalesExpert(n.isSalesExpert)}catch{s.setSalesExpert(!1)}await a.replace({name:"home"})}catch{await o()}}),(e,t)=>(p(),l("div",g,"در حال ورود..."))}});export{h as default}; +import{d as c,G as i,o as m,D as r,f as l,N as _,e as p}from"./index-B-RmZRr2.js";const g={style:{"min-height":"100vh",display:"grid","place-items":"center"}},h=c({__name:"IamCallback",setup(u){const a=_(),s=i();function o(){sessionStorage.setItem("gb_iam_sso_skip","1");const e=sessionStorage.getItem("gb_iam_return");sessionStorage.removeItem("gb_iam_return");const t=e&&e.startsWith("/")&&!e.startsWith("//")?e:"/";return a.replace(t)}return m(async()=>{const e=new URLSearchParams(window.location.search);if(sessionStorage.removeItem("gb_iam_sso_checked"),e.get("error")||!e.get("code")||!e.get("state")){await o();return}try{const t=await r.ssoCallback(e.get("code"),e.get("state"));s.login(t.token,t.customer.id,t.customer.mobile);try{const n=await r.getExpertIdentity();s.setSalesExpert(n.isSalesExpert)}catch{s.setSalesExpert(!1)}await a.replace({name:"home"})}catch{await o()}}),(e,t)=>(p(),l("div",g,"در حال ورود..."))}});export{h as default}; diff --git a/apps/user-app/dist/assets/KeyCode-C6xc2Qke.js b/apps/user-app/dist/assets/KeyCode-C6xc2Qke.js deleted file mode 100644 index 4887b8e..0000000 --- a/apps/user-app/dist/assets/KeyCode-C6xc2Qke.js +++ /dev/null @@ -1 +0,0 @@ -import{ai as d,j as f,ax as g,d as P,ak as p,V as C,w as x,a6 as T,$ as m,c as R,x as h,aV as y}from"./index-BFOyCNFT.js";var E=!1;try{var c=Object.defineProperty({},"passive",{get:function(){E=!0}});window.addEventListener("testPassive",null,c),window.removeEventListener("testPassive",null,c)}catch{}var j=Symbol("TriggerContextKey"),K=function(e){return e?d(j,{setPortal:function(){},popPortal:!1}):{setPortal:function(){},popPortal:!1}},v=Symbol("PortalContextKey"),w=function(e){var i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{inTriggerContext:!0};g(v,{inTriggerContext:i.inTriggerContext,shouldRender:f(function(){var n=e||{},u=n.sPopupVisible,t=n.popupRef,l=n.forceRender,r=n.autoDestroy,s=!1;return(u||t||l)&&(s=!0),!u&&r&&(s=!1),s})})},D=function(){w({},{inTriggerContext:!1});var e=d(v,{shouldRender:f(function(){return!1}),inTriggerContext:!1});return{shouldRender:f(function(){return e.shouldRender.value||e.inTriggerContext===!1})}};const N=P({compatConfig:{MODE:3},name:"Portal",inheritAttrs:!1,props:{getContainer:p.func.isRequired,didUpdate:Function},setup:function(e,i){var n=i.slots,u=!0,t,l=D(),r=l.shouldRender;C(function(){u=!1,r.value&&(t=e.getContainer())});var s=x(r,function(){r.value&&!t&&(t=e.getContainer()),t&&s()});return T(function(){m(function(){if(r.value){var o;(o=e.didUpdate)===null||o===void 0||o.call(e,e)}})}),R(function(){t&&t.parentNode&&t.parentNode.removeChild(t)}),function(){if(!r.value)return null;if(u){var o;return(o=n.default)===null||o===void 0?void 0:o.call(n)}return t?h(y,{to:t},n):null}}});var b={ESC:27,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40};export{b as K,N as P,K as a,E as s,w as u}; diff --git a/apps/user-app/dist/assets/KeyCode-DsOsmuVa.js b/apps/user-app/dist/assets/KeyCode-DsOsmuVa.js new file mode 100644 index 0000000..ca68b43 --- /dev/null +++ b/apps/user-app/dist/assets/KeyCode-DsOsmuVa.js @@ -0,0 +1 @@ +import{ai as d,j as f,ax as g,d as P,ak as p,V as C,w as T,a6 as x,$ as R,c as m,x as h,aV as y}from"./index-B-RmZRr2.js";var E=!1;try{var c=Object.defineProperty({},"passive",{get:function(){E=!0}});window.addEventListener("testPassive",null,c),window.removeEventListener("testPassive",null,c)}catch{}var j=Symbol("TriggerContextKey"),I=function(e){return e?d(j,{setPortal:function(){},popPortal:!1}):{setPortal:function(){},popPortal:!1}},v=Symbol("PortalContextKey"),N=function(e){var i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{inTriggerContext:!0};g(v,{inTriggerContext:i.inTriggerContext,shouldRender:f(function(){var n=e||{},u=n.sPopupVisible,t=n.popupRef,l=n.forceRender,r=n.autoDestroy,s=!1;return(u||t||l)&&(s=!0),!u&&r&&(s=!1),s})})},w=function(){N({},{inTriggerContext:!1});var e=d(v,{shouldRender:f(function(){return!1}),inTriggerContext:!1});return{shouldRender:f(function(){return e.shouldRender.value||e.inTriggerContext===!1})}};const K=P({compatConfig:{MODE:3},name:"Portal",inheritAttrs:!1,props:{getContainer:p.func.isRequired,didUpdate:Function},setup:function(e,i){var n=i.slots,u=!0,t,l=w(),r=l.shouldRender;C(function(){u=!1,r.value&&(t=e.getContainer())});var s=T(r,function(){r.value&&!t&&(t=e.getContainer()),t&&s()});return x(function(){R(function(){if(r.value){var o;(o=e.didUpdate)===null||o===void 0||o.call(e,e)}})}),m(function(){t&&t.parentNode&&t.parentNode.removeChild(t)}),function(){if(!r.value)return null;if(u){var o;return(o=n.default)===null||o===void 0?void 0:o.call(n)}return t?h(y,{to:t},n):null}}});var b={ENTER:13,ESC:27,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40};export{b as K,K as P,I as a,E as s,N as u}; diff --git a/apps/user-app/dist/assets/LoginRegisterView--xd-iA3G.js b/apps/user-app/dist/assets/LoginRegisterView--xd-iA3G.js new file mode 100644 index 0000000..903e333 --- /dev/null +++ b/apps/user-app/dist/assets/LoginRegisterView--xd-iA3G.js @@ -0,0 +1 @@ +import{d as L,k as F,w as q,o as se,$ as H,e as _,f as w,v as K,a0 as ae,g as l,i as W,h as E,F as N,r as ne,O as j,N as J,a1 as le,G as oe,M as G,x as i,J as m,q as n,B as A,L as Z,t as D,W as B,a2 as ue,U as P,D as R,a3 as U,j as re,_ as z,T as ie,X as ce}from"./index-B-RmZRr2.js";import{P as X}from"./PageBar-DmOKrVEQ.js";import{a as Q,F as $,I as S,T as de}from"./index-DDItTnD7.js";import"./isEqual-CAQ2DK4R.js";import"./FormItemContext-Buff0-hx.js";import"./classCallCheck-BMo4V_0Q.js";import"./raf-nDFcuFT6.js";const pe={class:"otp-single-input"},me=["type","placeholder","disabled"],he={key:0},fe=["innerHTML"],ve=L({__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(r,{emit:b}){const c=r,h=b,o=F(c.value||""),u=F(null),a=()=>(o.value=o.value.toString(),o.value.length>1&&(o.value=o.value.slice(0,1)),h("on-change",o.value)),d=t=>t>=48&&t<=57||t>=96&&t<=105,f=t=>{c.disabled&&t.preventDefault();const p=t||window.event,O=p.which?p.which:p.keyCode;d(O)||[8,9,13,37,39,46,86].includes(O)?h("on-keydown",t):p.preventDefault()},g=t=>h("on-paste",t),s=()=>(u.value.select(),h("on-focus")),y=()=>h("on-blur");return q(()=>c.value,(t,p)=>{t!==p&&(o.value=t??"")}),q(()=>c.focus,(t,p)=>{p!==t&&u.value&&c.focus&&(u.value.focus(),u.value.select())}),se(()=>{!c.focus||!c.shouldAutoFocus||H(()=>{var t,p;(t=u.value)==null||t.focus(),(p=u.value)==null||p.select()})}),(t,p)=>(_(),w("div",pe,[K(l("input",{type:r.inputType,placeholder:r.placeholder,disabled:r.disabled,ref_key:"input",ref:u,min:"0",max:"9",maxlength:"1",pattern:"[0-9]","onUpdate:modelValue":p[0]||(p[0]=O=>o.value=O),class:W(r.inputClasses),onInput:a,onKeydown:f,onPaste:g,onFocus:s,onBlur:y},null,42,me),[[ae,o.value]]),!r.isLastChild&&r.separator?(_(),w("span",he,[l("span",{innerHTML:r.separator},null,8,fe)])):E("",!0)]))}}),_e={class:"flex ltr justify-around w-full"},ge=8,ye=37,be=39,we=46,ke=L({__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(r,{emit:b}){const c=r,h=b,o=F(0),u=F([]),a=F([]),d=e=>{c.defaultFocus&&e{o.value=-1},g=()=>u.value.join("").length===c.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(c.numInputs-1,e),0)},y=()=>s(o.value+1),t=()=>s(o.value-1),p=e=>{a.value=Object.assign([],u.value),typeof e=="string"&&e===""?u.value.splice(o.value,1):u.value[o.value]=e,a.value.join("")!==u.value.join("")&&(h("on-change",u.value.join("")),g())},O=e=>{var V;e.preventDefault();const k=(((V=e.clipboardData)==null?void 0:V.getData("text/plain"))??"").slice(0,c.numInputs-o.value).split("");if(c.inputType==="number"&&!k.join("").match(/^\d+$/))return"Invalid pasted data";const T=u.value.slice(0,o.value).concat(k);return T.slice(0,c.numInputs).forEach((ee,te)=>{u.value[te]=ee}),s(T.slice(0,c.numInputs).length),g()},M=e=>{p(e),y()},v=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,x)=>(_(),w("div",null,[l("div",_e,[(_(!0),w(N,null,ne(r.numInputs,(k,I)=>(_(),j(ve,{key:I,focus:o.value===I,value:u.value[I],separator:r.separator,"input-type":r.inputType,"input-classes":r.inputClasses,"is-last-child":I===r.numInputs-1,"should-auto-focus":r.shouldAutoFocus,placeholder:r.placeholder,disabled:r.disabled,onOnChange:M,onOnKeydown:v,onOnPaste:O,onOnFocus:T=>d(I),onOnBlur:f},null,8,["focus","value","separator","input-type","input-classes","is-last-child","should-auto-focus","placeholder","disabled","onOnFocus"]))),128))])]))}}),Oe=r=>` مقدار ${r} نا معتبر است `,Y=r=>({pattern:/^(\+98|0098|98|0)?9\d{9}$/g,message:Oe(r)}),C=r=>({required:!0,message:` لطفا ${r} را وارد کنید `}),xe={class:"auth"},Ie={class:"auth__hero"},$e=["alt"],Ce={class:"auth__title"},Fe={class:"auth__sub"},Se={class:"auth__island"},De={class:"auth__phoneChip"},Te={key:0,class:"auth__timer"},Be={key:1,class:"auth__timer is-ready"},Ee=["disabled"],Le={key:0,class:"auth__ctaSpin","aria-hidden":"true"},Re={class:"auth__switch"},Ue=L({__name:"LoginView",emits:["register"],setup(r,{emit:b}){const c=b,h=J(),o=le(),u=oe(),a=P({username:void 0}),d=P({step:1,loading:!1,defaultFocus:!1}),f=F(0),g=()=>{f.value>0&&setTimeout(()=>{f.value>0&&(f.value-=1,g())},1e3)};function s(){d.step=1,d.defaultFocus=!1,f.value=0}const y=async()=>{try{d.loading=!0,await R.requestOtp(String(a.username??"")),d.step=2,f.value=120,g(),await H(()=>{d.defaultFocus=!0})}catch(v){const e=v instanceof Error&&/\((?:429|404|403)\)/.test(v.message)?p(v):null;U.error(e??"خطا در ارسال کد. لطفاً دوباره تلاش کنید.")}finally{d.loading=!1}},t=async v=>{try{d.loading=!0;const e=await R.verifyOtp(String(a.username??""),v),{token:x,customer:k}=e;if(u.login(x,k.id,k.mobile),e.iamBootstrapUrl){window.location.assign(e.iamBootstrapUrl);return}try{const T=await R.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"}),U.success("با موفقیت وارد شدید")}catch(e){U.error(e instanceof Error&&/\(429\)/.test(e.message)?p(e)??"تعداد تلاش‌ها بیش از حد مجاز است.":"کد وارد شده صحیح نیست")}finally{d.loading=!1}};function p(v){const e=v.message.match(/\{.*\}/);if(!e)return null;try{const x=JSON.parse(e[0]);return typeof x.message=="string"?x.message:null}catch{return null}}const O=v=>v<10?"0"+v:v,M=re(()=>d.step===1?"دریافت کد ورود":"ارسال مجدد کد");return(v,e)=>{const x=G("container");return _(),w("div",xe,[i(X,{title:"ورود","back-to":"home"}),i(x,{class:"auth__body"},{default:m(()=>[l("section",Ie,[l("img",{src:Z,alt:n(A).name,class:"auth__logo"},null,8,$e),l("h2",Ce,"ورود به "+D(n(A).name),1),l("p",Fe,D(d.step===1?"با شماره موبایل وارد شوید؛ کد یکبارمصرف پیامک می‌شود.":"کد ۴ رقمی پیامک‌شده را وارد کنید."),1)]),l("section",Se,[d.step===2?(_(),w(N,{key:0},[l("div",De,[l("span",null,D(a.username),1),l("button",{type:"button",class:"auth__editPhone",onClick:s},"ویرایش")]),i(ke,{class:"auth__otp","input-classes":"otp-input",inputType:"tel","num-inputs":4,"should-auto-focus":!0,defaultFocus:d.defaultFocus,onOnComplete:t},null,8,["defaultFocus"]),f.value>0?(_(),w("p",Te,[e[2]||(e[2]=B(" ارسال مجدد تا ",-1)),l("strong",null,D(O(f.value)),1),e[3]||(e[3]=B(" ثانیه ",-1))])):(_(),w("p",Be,"می‌توانید کد را دوباره دریافت کنید"))],64)):E("",!0),i(n(Q),{model:a,layout:"vertical",onFinish:y,class:"auth__form"},{default:m(()=>[K(i(n($),{name:"username",label:"شماره موبایل",rules:[n(C)("شماره موبایل"),n(Y)("شماره موبایل")]},{default:m(()=>[i(n(S),{type:"tel",inputmode:"numeric",dir:"ltr",placeholder:"09123456789",autocomplete:"tel",value:a.username,"onUpdate:value":e[0]||(e[0]=k=>a.username=k),class:"auth__phoneInput"},null,8,["value"])]),_:1},8,["rules"]),[[ue,d.step===1]]),l("button",{type:"submit",class:W(["auth__cta",{"is-loading":d.loading}]),disabled:d.loading||f.value>0&&d.step===2},[d.loading?(_(),w("span",Le)):E("",!0),B(" "+D(M.value),1)],10,Ee)]),_:1},8,["model"])]),l("p",Re,[e[4]||(e[4]=B(" حساب ندارید؟ ",-1)),l("button",{type:"button",onClick:e[1]||(e[1]=k=>c("register",!0))},"ثبت‌نام فروشگاه")])]),_:1})])}}}),Ae=z(Ue,[["__scopeId","data-v-ca35a984"]]),Pe="/assets/registerDelay-C2Zjomix.svg",Me={class:"auth"},je={class:"auth__hero"},Ne=["alt"],Ve={class:"auth__sub"},qe={class:"auth__island"},He={class:"auth__island"},Ke=["disabled"],We={class:"auth__switch"},Je=["src"],Ge=L({__name:"RegisterView",emits:["register"],setup(r,{emit:b}){const c=b,h=J(),o=P({loading:!1}),u=F(!1),a=P({fname:void 0,lname:void 0,mobile:void 0,store_name:void 0,phone:void 0,address:void 0,city:void 0}),d=async()=>{try{o.loading=!0,await R.register({fname:String(a.fname??""),lname:String(a.lname??""),mobile:String(a.mobile??""),store_name:String(a.store_name??""),phone:String(a.phone??""),address:String(a.address??""),city:String(a.city??"")}),u.value=!0}catch(g){U.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=G("container");return _(),w("div",Me,[i(X,{title:"ثبت‌نام","back-to":"home"}),i(ie,{spinning:o.loading,tip:"در حال ثبت اطلاعات"},{default:m(()=>[i(y,{class:"auth__body"},{default:m(()=>[l("section",je,[l("img",{src:Z,alt:n(A).name,class:"auth__logo"},null,8,Ne),s[10]||(s[10]=l("h2",{class:"auth__title"},"ساخت حساب فروشگاه",-1)),l("p",Ve," پس از ثبت، کارشناسان "+D(n(A).name)+" اطلاعات را بررسی می‌کنند و سپس می‌توانید وارد شوید. ",1)]),i(n(Q),{model:a,layout:"vertical",onFinish:d,class:"auth__form"},{default:m(()=>[l("section",qe,[s[11]||(s[11]=l("header",{class:"auth__groupHead"},[l("h3",null,"اطلاعات شخصی"),l("p",null,"نام و شمارهٔ تماس مالک فروشگاه")],-1)),i(n($),{name:"fname",label:"نام",rules:n(C)("نام")},{default:m(()=>[i(n(S),{value:a.fname,"onUpdate:value":s[0]||(s[0]=t=>a.fname=t),autocomplete:"given-name",placeholder:"مثلاً علی"},null,8,["value"])]),_:1},8,["rules"]),i(n($),{name:"lname",label:"نام خانوادگی",rules:n(C)("نام خانوادگی")},{default:m(()=>[i(n(S),{value:a.lname,"onUpdate:value":s[1]||(s[1]=t=>a.lname=t),autocomplete:"family-name",placeholder:"مثلاً محمدی"},null,8,["value"])]),_:1},8,["rules"]),i(n($),{name:"mobile",label:"شماره موبایل",rules:[n(Y)("شماره موبایل"),n(C)("شماره موبایل")],class:"auth__itemLast"},{default:m(()=>[i(n(S),{value:a.mobile,"onUpdate:value":s[2]||(s[2]=t=>a.mobile=t),type:"tel",inputmode:"numeric",dir:"ltr",placeholder:"09123456789",autocomplete:"tel",class:"auth__ltr"},null,8,["value"])]),_:1},8,["rules"])]),l("section",He,[s[12]||(s[12]=l("header",{class:"auth__groupHead"},[l("h3",null,"اطلاعات فروشگاه"),l("p",null,"برای تأیید و ارسال سفارش‌ها لازم است")],-1)),i(n($),{name:"store_name",label:"نام فروشگاه",rules:n(C)("نام فروشگاه")},{default:m(()=>[i(n(S),{value:a.store_name,"onUpdate:value":s[3]||(s[3]=t=>a.store_name=t),placeholder:"نام تابلو یا واحد صنفی"},null,8,["value"])]),_:1},8,["rules"]),i(n($),{name:"phone",label:"تلفن فروشگاه",rules:[n(C)("تلفن فروشگاه")]},{default:m(()=>[i(n(S),{value:a.phone,"onUpdate:value":s[4]||(s[4]=t=>a.phone=t),type:"tel",inputmode:"numeric",dir:"ltr",placeholder:"021xxxxxxx",class:"auth__ltr"},null,8,["value"])]),_:1},8,["rules"]),i(n($),{name:"city",label:"شهر",rules:n(C)("شهر")},{default:m(()=>[i(n(S),{value:a.city,"onUpdate:value":s[5]||(s[5]=t=>a.city=t),placeholder:"مثلاً تهران"},null,8,["value"])]),_:1},8,["rules"]),i(n($),{name:"address",label:"آدرس پستی",rules:n(C)("آدرس"),class:"auth__itemLast"},{default:m(()=>[i(n(de),{value:a.address,"onUpdate:value":s[6]||(s[6]=t=>a.address=t),rows:3,placeholder:"آدرس کامل برای هماهنگی ارسال"},null,8,["value"])]),_:1},8,["rules"])]),l("button",{type:"submit",class:"auth__cta",disabled:o.loading}," ثبت درخواست عضویت ",8,Ke)]),_:1},8,["model"]),l("p",We,[s[13]||(s[13]=B(" قبلاً ثبت‌نام کرده‌اید؟ ",-1)),l("button",{type:"button",onClick:s[7]||(s[7]=t=>c("register",!1))},"ورود به حساب")])]),_:1})]),_:1},8,["spinning"]),i(ce,{timeOut:-1,show:u.value,"onUpdate:show":s[9]||(s[9]=t=>u.value=t),closeOnClickOverlay:!1},{img:m(()=>[l("img",{src:n(Pe),alt:"",class:"opacity-80"},null,8,Je)]),title:m(()=>[...s[14]||(s[14]=[l("div",null," ثبت‌نام شما ثبت شد. پس از تأیید کارشناسان می‌توانید با همین شماره وارد شوید. ",-1)])]),button:m(()=>[l("div",{class:"text-center",onClick:s[8]||(s[8]=t=>n(h).push({name:"home"}))},"متوجه شدم")]),_:1},8,["show"])])}}}),Ze=z(Ge,[["__scopeId","data-v-069f6683"]]),at=L({__name:"LoginRegisterView",setup(r){const b=F(!1),c=h=>b.value=h;return(h,o)=>(_(),w(N,null,[b.value?E("",!0):(_(),j(Ae,{key:0,onRegister:c})),b.value?(_(),j(Ze,{key:1,onRegister:c})):E("",!0)],64))}});export{at as default}; diff --git a/apps/user-app/dist/assets/LoginRegisterView-DrlMRoCO.js b/apps/user-app/dist/assets/LoginRegisterView-DrlMRoCO.js deleted file mode 100644 index 48c9356..0000000 --- a/apps/user-app/dist/assets/LoginRegisterView-DrlMRoCO.js +++ /dev/null @@ -1 +0,0 @@ -import{d as L,k as F,w as q,o as se,$ as H,e as _,f as w,v as K,a0 as ae,g as l,i as W,h as E,F as N,r as ne,O as j,N as J,a1 as le,G as oe,M as G,x as i,J as m,q as n,B as A,L as Z,t as D,W as B,a2 as ue,U as P,D as R,a3 as U,j as re,_ as z,T as ie,X as ce}from"./index-BFOyCNFT.js";import{P as X}from"./PageBar-Cz1N2fdD.js";import{a as Q,F as $,I as S,T as de}from"./index-D3GLzZ3l.js";import"./FormItemContext-BNYzezPe.js";import"./classCallCheck-BVPDkxOa.js";import"./raf-nDFcuFT6.js";const pe={class:"otp-single-input"},me=["type","placeholder","disabled"],he={key:0},fe=["innerHTML"],ve=L({__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(r,{emit:b}){const c=r,h=b,o=F(c.value||""),u=F(null),a=()=>(o.value=o.value.toString(),o.value.length>1&&(o.value=o.value.slice(0,1)),h("on-change",o.value)),d=t=>t>=48&&t<=57||t>=96&&t<=105,f=t=>{c.disabled&&t.preventDefault();const p=t||window.event,O=p.which?p.which:p.keyCode;d(O)||[8,9,13,37,39,46,86].includes(O)?h("on-keydown",t):p.preventDefault()},g=t=>h("on-paste",t),s=()=>(u.value.select(),h("on-focus")),y=()=>h("on-blur");return q(()=>c.value,(t,p)=>{t!==p&&(o.value=t??"")}),q(()=>c.focus,(t,p)=>{p!==t&&u.value&&c.focus&&(u.value.focus(),u.value.select())}),se(()=>{!c.focus||!c.shouldAutoFocus||H(()=>{var t,p;(t=u.value)==null||t.focus(),(p=u.value)==null||p.select()})}),(t,p)=>(_(),w("div",pe,[K(l("input",{type:r.inputType,placeholder:r.placeholder,disabled:r.disabled,ref_key:"input",ref:u,min:"0",max:"9",maxlength:"1",pattern:"[0-9]","onUpdate:modelValue":p[0]||(p[0]=O=>o.value=O),class:W(r.inputClasses),onInput:a,onKeydown:f,onPaste:g,onFocus:s,onBlur:y},null,42,me),[[ae,o.value]]),!r.isLastChild&&r.separator?(_(),w("span",he,[l("span",{innerHTML:r.separator},null,8,fe)])):E("",!0)]))}}),_e={class:"flex ltr justify-around w-full"},ge=8,ye=37,be=39,we=46,ke=L({__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(r,{emit:b}){const c=r,h=b,o=F(0),u=F([]),a=F([]),d=e=>{c.defaultFocus&&e{o.value=-1},g=()=>u.value.join("").length===c.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(c.numInputs-1,e),0)},y=()=>s(o.value+1),t=()=>s(o.value-1),p=e=>{a.value=Object.assign([],u.value),typeof e=="string"&&e===""?u.value.splice(o.value,1):u.value[o.value]=e,a.value.join("")!==u.value.join("")&&(h("on-change",u.value.join("")),g())},O=e=>{var V;e.preventDefault();const k=(((V=e.clipboardData)==null?void 0:V.getData("text/plain"))??"").slice(0,c.numInputs-o.value).split("");if(c.inputType==="number"&&!k.join("").match(/^\d+$/))return"Invalid pasted data";const T=u.value.slice(0,o.value).concat(k);return T.slice(0,c.numInputs).forEach((ee,te)=>{u.value[te]=ee}),s(T.slice(0,c.numInputs).length),g()},M=e=>{p(e),y()},v=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,x)=>(_(),w("div",null,[l("div",_e,[(_(!0),w(N,null,ne(r.numInputs,(k,I)=>(_(),j(ve,{key:I,focus:o.value===I,value:u.value[I],separator:r.separator,"input-type":r.inputType,"input-classes":r.inputClasses,"is-last-child":I===r.numInputs-1,"should-auto-focus":r.shouldAutoFocus,placeholder:r.placeholder,disabled:r.disabled,onOnChange:M,onOnKeydown:v,onOnPaste:O,onOnFocus:T=>d(I),onOnBlur:f},null,8,["focus","value","separator","input-type","input-classes","is-last-child","should-auto-focus","placeholder","disabled","onOnFocus"]))),128))])]))}}),Oe=r=>` مقدار ${r} نا معتبر است `,Y=r=>({pattern:/^(\+98|0098|98|0)?9\d{9}$/g,message:Oe(r)}),C=r=>({required:!0,message:` لطفا ${r} را وارد کنید `}),xe={class:"auth"},Ie={class:"auth__hero"},$e=["alt"],Ce={class:"auth__title"},Fe={class:"auth__sub"},Se={class:"auth__island"},De={class:"auth__phoneChip"},Te={key:0,class:"auth__timer"},Be={key:1,class:"auth__timer is-ready"},Ee=["disabled"],Le={key:0,class:"auth__ctaSpin","aria-hidden":"true"},Re={class:"auth__switch"},Ue=L({__name:"LoginView",emits:["register"],setup(r,{emit:b}){const c=b,h=J(),o=le(),u=oe(),a=P({username:void 0}),d=P({step:1,loading:!1,defaultFocus:!1}),f=F(0),g=()=>{f.value>0&&setTimeout(()=>{f.value>0&&(f.value-=1,g())},1e3)};function s(){d.step=1,d.defaultFocus=!1,f.value=0}const y=async()=>{try{d.loading=!0,await R.requestOtp(String(a.username??"")),d.step=2,f.value=120,g(),await H(()=>{d.defaultFocus=!0})}catch(v){const e=v instanceof Error&&/\((?:429|404|403)\)/.test(v.message)?p(v):null;U.error(e??"خطا در ارسال کد. لطفاً دوباره تلاش کنید.")}finally{d.loading=!1}},t=async v=>{try{d.loading=!0;const e=await R.verifyOtp(String(a.username??""),v),{token:x,customer:k}=e;if(u.login(x,k.id,k.mobile),e.iamBootstrapUrl){window.location.assign(e.iamBootstrapUrl);return}try{const T=await R.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"}),U.success("با موفقیت وارد شدید")}catch(e){U.error(e instanceof Error&&/\(429\)/.test(e.message)?p(e)??"تعداد تلاش‌ها بیش از حد مجاز است.":"کد وارد شده صحیح نیست")}finally{d.loading=!1}};function p(v){const e=v.message.match(/\{.*\}/);if(!e)return null;try{const x=JSON.parse(e[0]);return typeof x.message=="string"?x.message:null}catch{return null}}const O=v=>v<10?"0"+v:v,M=re(()=>d.step===1?"دریافت کد ورود":"ارسال مجدد کد");return(v,e)=>{const x=G("container");return _(),w("div",xe,[i(X,{title:"ورود","back-to":"home"}),i(x,{class:"auth__body"},{default:m(()=>[l("section",Ie,[l("img",{src:Z,alt:n(A).name,class:"auth__logo"},null,8,$e),l("h2",Ce,"ورود به "+D(n(A).name),1),l("p",Fe,D(d.step===1?"با شماره موبایل وارد شوید؛ کد یکبارمصرف پیامک می‌شود.":"کد ۴ رقمی پیامک‌شده را وارد کنید."),1)]),l("section",Se,[d.step===2?(_(),w(N,{key:0},[l("div",De,[l("span",null,D(a.username),1),l("button",{type:"button",class:"auth__editPhone",onClick:s},"ویرایش")]),i(ke,{class:"auth__otp","input-classes":"otp-input",inputType:"tel","num-inputs":4,"should-auto-focus":!0,defaultFocus:d.defaultFocus,onOnComplete:t},null,8,["defaultFocus"]),f.value>0?(_(),w("p",Te,[e[2]||(e[2]=B(" ارسال مجدد تا ",-1)),l("strong",null,D(O(f.value)),1),e[3]||(e[3]=B(" ثانیه ",-1))])):(_(),w("p",Be,"می‌توانید کد را دوباره دریافت کنید"))],64)):E("",!0),i(n(Q),{model:a,layout:"vertical",onFinish:y,class:"auth__form"},{default:m(()=>[K(i(n($),{name:"username",label:"شماره موبایل",rules:[n(C)("شماره موبایل"),n(Y)("شماره موبایل")]},{default:m(()=>[i(n(S),{type:"tel",inputmode:"numeric",dir:"ltr",placeholder:"09123456789",autocomplete:"tel",value:a.username,"onUpdate:value":e[0]||(e[0]=k=>a.username=k),class:"auth__phoneInput"},null,8,["value"])]),_:1},8,["rules"]),[[ue,d.step===1]]),l("button",{type:"submit",class:W(["auth__cta",{"is-loading":d.loading}]),disabled:d.loading||f.value>0&&d.step===2},[d.loading?(_(),w("span",Le)):E("",!0),B(" "+D(M.value),1)],10,Ee)]),_:1},8,["model"])]),l("p",Re,[e[4]||(e[4]=B(" حساب ندارید؟ ",-1)),l("button",{type:"button",onClick:e[1]||(e[1]=k=>c("register",!0))},"ثبت‌نام فروشگاه")])]),_:1})])}}}),Ae=z(Ue,[["__scopeId","data-v-ca35a984"]]),Pe="/assets/registerDelay-C2Zjomix.svg",Me={class:"auth"},je={class:"auth__hero"},Ne=["alt"],Ve={class:"auth__sub"},qe={class:"auth__island"},He={class:"auth__island"},Ke=["disabled"],We={class:"auth__switch"},Je=["src"],Ge=L({__name:"RegisterView",emits:["register"],setup(r,{emit:b}){const c=b,h=J(),o=P({loading:!1}),u=F(!1),a=P({fname:void 0,lname:void 0,mobile:void 0,store_name:void 0,phone:void 0,address:void 0,city:void 0}),d=async()=>{try{o.loading=!0,await R.register({fname:String(a.fname??""),lname:String(a.lname??""),mobile:String(a.mobile??""),store_name:String(a.store_name??""),phone:String(a.phone??""),address:String(a.address??""),city:String(a.city??"")}),u.value=!0}catch(g){U.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=G("container");return _(),w("div",Me,[i(X,{title:"ثبت‌نام","back-to":"home"}),i(ie,{spinning:o.loading,tip:"در حال ثبت اطلاعات"},{default:m(()=>[i(y,{class:"auth__body"},{default:m(()=>[l("section",je,[l("img",{src:Z,alt:n(A).name,class:"auth__logo"},null,8,Ne),s[10]||(s[10]=l("h2",{class:"auth__title"},"ساخت حساب فروشگاه",-1)),l("p",Ve," پس از ثبت، کارشناسان "+D(n(A).name)+" اطلاعات را بررسی می‌کنند و سپس می‌توانید وارد شوید. ",1)]),i(n(Q),{model:a,layout:"vertical",onFinish:d,class:"auth__form"},{default:m(()=>[l("section",qe,[s[11]||(s[11]=l("header",{class:"auth__groupHead"},[l("h3",null,"اطلاعات شخصی"),l("p",null,"نام و شمارهٔ تماس مالک فروشگاه")],-1)),i(n($),{name:"fname",label:"نام",rules:n(C)("نام")},{default:m(()=>[i(n(S),{value:a.fname,"onUpdate:value":s[0]||(s[0]=t=>a.fname=t),autocomplete:"given-name",placeholder:"مثلاً علی"},null,8,["value"])]),_:1},8,["rules"]),i(n($),{name:"lname",label:"نام خانوادگی",rules:n(C)("نام خانوادگی")},{default:m(()=>[i(n(S),{value:a.lname,"onUpdate:value":s[1]||(s[1]=t=>a.lname=t),autocomplete:"family-name",placeholder:"مثلاً محمدی"},null,8,["value"])]),_:1},8,["rules"]),i(n($),{name:"mobile",label:"شماره موبایل",rules:[n(Y)("شماره موبایل"),n(C)("شماره موبایل")],class:"auth__itemLast"},{default:m(()=>[i(n(S),{value:a.mobile,"onUpdate:value":s[2]||(s[2]=t=>a.mobile=t),type:"tel",inputmode:"numeric",dir:"ltr",placeholder:"09123456789",autocomplete:"tel",class:"auth__ltr"},null,8,["value"])]),_:1},8,["rules"])]),l("section",He,[s[12]||(s[12]=l("header",{class:"auth__groupHead"},[l("h3",null,"اطلاعات فروشگاه"),l("p",null,"برای تأیید و ارسال سفارش‌ها لازم است")],-1)),i(n($),{name:"store_name",label:"نام فروشگاه",rules:n(C)("نام فروشگاه")},{default:m(()=>[i(n(S),{value:a.store_name,"onUpdate:value":s[3]||(s[3]=t=>a.store_name=t),placeholder:"نام تابلو یا واحد صنفی"},null,8,["value"])]),_:1},8,["rules"]),i(n($),{name:"phone",label:"تلفن فروشگاه",rules:[n(C)("تلفن فروشگاه")]},{default:m(()=>[i(n(S),{value:a.phone,"onUpdate:value":s[4]||(s[4]=t=>a.phone=t),type:"tel",inputmode:"numeric",dir:"ltr",placeholder:"021xxxxxxx",class:"auth__ltr"},null,8,["value"])]),_:1},8,["rules"]),i(n($),{name:"city",label:"شهر",rules:n(C)("شهر")},{default:m(()=>[i(n(S),{value:a.city,"onUpdate:value":s[5]||(s[5]=t=>a.city=t),placeholder:"مثلاً تهران"},null,8,["value"])]),_:1},8,["rules"]),i(n($),{name:"address",label:"آدرس پستی",rules:n(C)("آدرس"),class:"auth__itemLast"},{default:m(()=>[i(n(de),{value:a.address,"onUpdate:value":s[6]||(s[6]=t=>a.address=t),rows:3,placeholder:"آدرس کامل برای هماهنگی ارسال"},null,8,["value"])]),_:1},8,["rules"])]),l("button",{type:"submit",class:"auth__cta",disabled:o.loading}," ثبت درخواست عضویت ",8,Ke)]),_:1},8,["model"]),l("p",We,[s[13]||(s[13]=B(" قبلاً ثبت‌نام کرده‌اید؟ ",-1)),l("button",{type:"button",onClick:s[7]||(s[7]=t=>c("register",!1))},"ورود به حساب")])]),_:1})]),_:1},8,["spinning"]),i(ce,{timeOut:-1,show:u.value,"onUpdate:show":s[9]||(s[9]=t=>u.value=t),closeOnClickOverlay:!1},{img:m(()=>[l("img",{src:n(Pe),alt:"",class:"opacity-80"},null,8,Je)]),title:m(()=>[...s[14]||(s[14]=[l("div",null," ثبت‌نام شما ثبت شد. پس از تأیید کارشناسان می‌توانید با همین شماره وارد شوید. ",-1)])]),button:m(()=>[l("div",{class:"text-center",onClick:s[8]||(s[8]=t=>n(h).push({name:"home"}))},"متوجه شدم")]),_:1},8,["show"])])}}}),Ze=z(Ge,[["__scopeId","data-v-069f6683"]]),st=L({__name:"LoginRegisterView",setup(r){const b=F(!1),c=h=>b.value=h;return(h,o)=>(_(),w(N,null,[b.value?E("",!0):(_(),j(Ae,{key:0,onRegister:c})),b.value?(_(),j(Ze,{key:1,onRegister:c})):E("",!0)],64))}});export{st as default}; diff --git a/apps/user-app/dist/assets/MakeOrderStatusView-CABGAYeD.js b/apps/user-app/dist/assets/MakeOrderStatusView-CABGAYeD.js new file mode 100644 index 0000000..0bdd64b --- /dev/null +++ b/apps/user-app/dist/assets/MakeOrderStatusView-CABGAYeD.js @@ -0,0 +1 @@ +import{d as A,o as B,f as e,x as o,J as m,T as M,k as i,D as O,e as n,F as y,r as g,I as b,g as s,q as w,h as _,N as z,M as N,i as R,t as a,_ as T}from"./index-B-RmZRr2.js";import{A as D}from"./AppPullRefresh-RDVLXVM_.js";import{P as I}from"./PageBar-DmOKrVEQ.js";import{j as L}from"./filters-BLs90kiz.js";const j={class:"mks"},E=["aria-label"],F={key:1,class:"mks__cancelled"},$={class:"mks__facts"},q={dir:"ltr"},G={dir:"ltr"},J={key:2,class:"mks__note"},U=["src"],Z={key:0,class:"mks__empty"},H={key:1,class:"mks__empty"},K=A({__name:"MakeOrderStatusView",setup(Q){const x=z(),V=["ثبت سفارش","تایید ادمین","تایید کارگاه","ارسال","تحویل شده"],r=i([]),u=i(!1),p=i(!1),d=i(!1);function C(k){return new Date(k).toLocaleTimeString("en-GB",{hour:"2-digit",minute:"2-digit",timeZone:"Asia/Tehran"})}async function f(){u.value=!0,d.value=!1;try{r.value=(await O.getMyPreOrders()).rows}catch{d.value=!0}finally{u.value=!1}}async function S(){try{await f()}finally{p.value=!1}}return B(f),(k,l)=>{const P=N("container");return n(),e("div",j,[o(I,{title:"وضعیت سفارش","back-to":"userPage::hasSubRoute"}),o(M,{spinning:u.value&&!r.value.length,tip:"درحال دریافت اطلاعات"},{default:m(()=>[o(D,{modelValue:p.value,"onUpdate:modelValue":l[1]||(l[1]=t=>p.value=t),onRefresh:S},{default:m(()=>[o(P,{class:"mks__body"},{default:m(()=>[(n(!0),e(y,null,g(r.value,t=>(n(),e("article",{key:t.id,class:"mks__card"},[t.step>0?(n(),e("ol",{key:0,class:"mks__track","aria-label":t.sts_str_fa},[(n(),e(y,null,g(V,(c,v)=>s("li",{key:c,class:R({"is-done":t.step>v+1,"is-now":t.step===v+1})},[l[2]||(l[2]=s("i",{"aria-hidden":"true"},null,-1)),s("span",null,a(c),1)],2)),64))],8,E)):(n(),e("p",F,"این سفارش لغو شده است.")),s("dl",$,[s("div",null,[l[3]||(l[3]=s("dt",null,"رنگ محصول",-1)),s("dd",null,a(t.color||"—"),1)]),s("div",null,[l[4]||(l[4]=s("dt",null,"سایز محصول",-1)),s("dd",null,a(t.size||"—"),1)]),s("div",null,[l[5]||(l[5]=s("dt",null,"رنگ مینا",-1)),s("dd",null,a(t.color_mina||"—"),1)]),s("div",null,[l[6]||(l[6]=s("dt",null,"رنگ سنگ",-1)),s("dd",null,a(t.color_stone||"—"),1)]),s("div",null,[l[7]||(l[7]=s("dt",null,"تعداد",-1)),s("dd",null,a(t.sum),1)]),s("div",null,[l[8]||(l[8]=s("dt",null,"وضعیت",-1)),s("dd",null,a(t.sts_str_fa),1)]),s("div",null,[l[9]||(l[9]=s("dt",null,"تاریخ ثبت",-1)),s("dd",q,a(w(L)(t.createdAt)),1)]),s("div",null,[l[10]||(l[10]=s("dt",null,"ساعت ثبت",-1)),s("dd",G,a(C(t.createdAt)),1)])]),t.description?(n(),e("p",J,a(t.description),1)):_("",!0),t.image?(n(),e("img",{key:3,class:"mks__photo",src:t.image,alt:""},null,8,U)):_("",!0)]))),128)),!r.value.length&&!u.value&&!d.value?(n(),e("section",Z,[o(b,{icon:"vuesax-linear:box",size:"26"}),l[11]||(l[11]=s("p",null,"هنوز سفارش ساختی ثبت نکرده‌اید.",-1)),s("button",{type:"button",class:"mks__cta",onClick:l[0]||(l[0]=t=>w(x).push({name:"makeOrderList"}))},"ثبت سفارش")])):_("",!0),d.value?(n(),e("section",H,[o(b,{icon:"vuesax-linear:danger",size:"26"}),l[12]||(l[12]=s("p",null,"دریافت اطلاعات با خطا روبه‌رو شد.",-1)),s("button",{type:"button",class:"mks__cta",onClick:f},"تلاش دوباره")])):_("",!0)]),_:1})]),_:1},8,["modelValue"])]),_:1},8,["spinning"])])}}}),ss=T(K,[["__scopeId","data-v-d0e5a087"]]);export{ss as default}; diff --git a/apps/user-app/dist/assets/MakeOrderStatusView-CpLbykh8.css b/apps/user-app/dist/assets/MakeOrderStatusView-CpLbykh8.css new file mode 100644 index 0000000..2452f58 --- /dev/null +++ b/apps/user-app/dist/assets/MakeOrderStatusView-CpLbykh8.css @@ -0,0 +1 @@ +.mks__body[data-v-d0e5a087]{padding-top:84px;padding-bottom:90px}.mks__card[data-v-d0e5a087]{padding:18px 2px;border-bottom:1px solid var(--c-hairline)}.mks__track[data-v-d0e5a087]{display:flex;justify-content:space-between;gap:4px;margin:0 0 16px;padding:0;list-style:none}.mks__track li[data-v-d0e5a087]{flex:1;display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center;font-size:10.5px;color:var(--c-inkFaint)}.mks__track i[data-v-d0e5a087]{display:block;width:100%;height:3px;border-radius:999px;background:var(--c-hairline)}.mks__track li.is-done[data-v-d0e5a087]{color:var(--c-inkSoft)}.mks__track li.is-done i[data-v-d0e5a087]{background:var(--c-wine)}.mks__track li.is-now[data-v-d0e5a087]{color:var(--c-wine);font-weight:800}.mks__track li.is-now i[data-v-d0e5a087]{background:var(--c-wine);opacity:.55}.mks__cancelled[data-v-d0e5a087]{margin:0 0 12px;font-size:12.5px;font-weight:700;color:var(--c-red)}.mks__facts[data-v-d0e5a087]{display:grid;grid-template-columns:1fr 1fr;gap:8px 14px;margin:0}.mks__facts div[data-v-d0e5a087]{display:flex;gap:6px;font-size:12.5px}.mks__facts dt[data-v-d0e5a087]{color:var(--c-inkFaint)}.mks__facts dd[data-v-d0e5a087]{margin:0;font-weight:700;color:var(--c-ink)}.mks__note[data-v-d0e5a087]{margin:12px 0 0;font-size:12.5px;color:var(--c-inkSoft)}.mks__photo[data-v-d0e5a087]{display:block;width:100%;max-height:260px;margin-top:12px;border-radius:14px;-o-object-fit:cover;object-fit:cover}.mks__empty[data-v-d0e5a087]{display:flex;flex-direction:column;align-items:center;gap:10px;padding:48px 0;color:var(--c-inkFaint);text-align:center}.mks__cta[data-v-d0e5a087]{padding:11px 22px;border:none;border-radius:999px;background:var(--c-wine);color:#fff;font-family:inherit;font-size:13.5px;font-weight:700;cursor:pointer} diff --git a/apps/user-app/dist/assets/MakeOrderView-CPwGE5ee.js b/apps/user-app/dist/assets/MakeOrderView-CPwGE5ee.js new file mode 100644 index 0000000..2ac02d1 --- /dev/null +++ b/apps/user-app/dist/assets/MakeOrderView-CPwGE5ee.js @@ -0,0 +1 @@ +import{d as b,w as k,f as u,x as a,J as d,T as g,k as m,e as p,g as o,v as n,aW as i,t as x,h as y,y as V,U as w,M as U,N as z,D as M,a3 as S,_ as N}from"./index-B-RmZRr2.js";import{P as B}from"./PageBar-DmOKrVEQ.js";import{S as C}from"./SingleImageUploader-CX4x2X-j.js";const D={class:"mko"},O={class:"mko__field"},P={class:"mko__field"},I={class:"mko__field"},R={class:"mko__field"},T={class:"mko__field"},E={class:"mko__field"},J={key:0,class:"mko__error"},W=["disabled"],$=b({__name:"MakeOrderView",setup(j){const _=z(),e=w({file_id:null,color:"",size:"",color_mina:"",color_stone:"",sum:1,description:""}),r=m(!1),l=m(null);k(e,()=>l.value=null);function f(){return e.file_id?e.color?e.size?e.color_mina?e.color_stone?!Number.isInteger(e.sum)||e.sum<1?"لطفا تعداد را وارد کنید":null:"لطفا رنگ سنگ را وارد کنید":"لطفا رنگ مینا را وارد کنید":"لطفا سایز محصول را وارد کنید":"لطفا رنگ محصول را وارد کنید":"لطفا تصویر سفارش را آپلود کنید"}async function c(){if(l.value=f(),!l.value){r.value=!0;try{await M.createPreOrder({color:e.color,size:e.size,color_mina:e.color_mina,color_stone:e.color_stone,sum:e.sum,file_id:e.file_id,description:e.description||void 0}),S.success("سفارش با موفقیت ثبت شد"),_.replace({name:"makeOrderStatus"})}catch{l.value="خطا در ثبت سفارش"}finally{r.value=!1}}}return(q,t)=>{const v=U("container");return p(),u("div",D,[a(B,{title:"سفارش ساخت","back-to":"userPage::hasSubRoute"}),a(g,{spinning:r.value,tip:"در حال ثبت اطلاعات"},{default:d(()=>[a(v,{class:"mko__body"},{default:d(()=>[o("form",{class:"mko__form",novalidate:"",onSubmit:V(c,["prevent"])},[a(C,{"upload-text":"بارگذاری عکس سفارش",purpose:"preorder-design",onDone:t[0]||(t[0]=s=>e.file_id=s)}),t[13]||(t[13]=o("p",{class:"mko__lead"},"لطفا به سوالات زیر پاسخ دهید",-1)),o("label",O,[t[7]||(t[7]=o("span",null,"رنگ محصول",-1)),n(o("input",{"onUpdate:modelValue":t[1]||(t[1]=s=>e.color=s),type:"text",maxlength:"100"},null,512),[[i,e.color,void 0,{trim:!0}]])]),o("label",P,[t[8]||(t[8]=o("span",null,"سایز محصول",-1)),n(o("input",{"onUpdate:modelValue":t[2]||(t[2]=s=>e.size=s),type:"text",maxlength:"100"},null,512),[[i,e.size,void 0,{trim:!0}]])]),o("label",I,[t[9]||(t[9]=o("span",null,"رنگ مینا",-1)),n(o("input",{"onUpdate:modelValue":t[3]||(t[3]=s=>e.color_mina=s),type:"text",maxlength:"100"},null,512),[[i,e.color_mina,void 0,{trim:!0}]])]),o("label",R,[t[10]||(t[10]=o("span",null,"رنگ سنگ",-1)),n(o("input",{"onUpdate:modelValue":t[4]||(t[4]=s=>e.color_stone=s),type:"text",maxlength:"100"},null,512),[[i,e.color_stone,void 0,{trim:!0}]])]),o("label",T,[t[11]||(t[11]=o("span",null,"تعداد",-1)),n(o("input",{"onUpdate:modelValue":t[5]||(t[5]=s=>e.sum=s),type:"number",inputmode:"numeric",min:"1",step:"1"},null,512),[[i,e.sum,void 0,{number:!0}]])]),o("label",E,[t[12]||(t[12]=o("span",null,"توضیحات",-1)),n(o("textarea",{"onUpdate:modelValue":t[6]||(t[6]=s=>e.description=s),rows:"3",maxlength:"1000"},null,512),[[i,e.description,void 0,{trim:!0}]])]),l.value?(p(),u("p",J,x(l.value),1)):y("",!0),o("button",{type:"submit",class:"mko__submit",disabled:r.value},"ارسال اطلاعات",8,W)],32)]),_:1})]),_:1},8,["spinning"])])}}}),H=N($,[["__scopeId","data-v-c6980a78"]]);export{H as default}; diff --git a/apps/user-app/dist/assets/MakeOrderView-zElUhN37.css b/apps/user-app/dist/assets/MakeOrderView-zElUhN37.css new file mode 100644 index 0000000..e80ecde --- /dev/null +++ b/apps/user-app/dist/assets/MakeOrderView-zElUhN37.css @@ -0,0 +1 @@ +.mko__body[data-v-c6980a78]{padding-top:84px;padding-bottom:110px}.mko__form[data-v-c6980a78]{display:flex;flex-direction:column}.mko__lead[data-v-c6980a78]{margin:18px 2px 4px;font-size:13px;font-weight:700;color:var(--c-inkMuted)}.mko__field[data-v-c6980a78]{display:flex;flex-direction:column;gap:6px;padding:12px 0;border-bottom:1px solid var(--c-hairline);font-size:12.5px;color:var(--c-inkSoft)}.mko__field input[data-v-c6980a78],.mko__field textarea[data-v-c6980a78]{width:100%;padding:11px 12px;border:1px solid var(--c-hairline);border-radius:12px;background:transparent;color:var(--c-ink);font-family:inherit;font-size:14px}.mko__error[data-v-c6980a78]{margin:12px 2px 0;font-size:12.5px;color:var(--c-red)}.mko__submit[data-v-c6980a78]{position:fixed;left:16px;right:16px;bottom:20px;z-index:20;max-width:736px;margin:0 auto;padding:15px;border:none;border-radius:999px;background:var(--c-wine);color:#fff;font-family:inherit;font-size:15px;font-weight:700;cursor:pointer}.mko__submit[data-v-c6980a78]:disabled{opacity:.6;cursor:progress} diff --git a/apps/user-app/dist/assets/NewestView-BFhp5Jry.js b/apps/user-app/dist/assets/NewestView-U3MIVepY.js similarity index 90% rename from apps/user-app/dist/assets/NewestView-BFhp5Jry.js rename to apps/user-app/dist/assets/NewestView-U3MIVepY.js index 8613821..81acad6 100644 --- a/apps/user-app/dist/assets/NewestView-BFhp5Jry.js +++ b/apps/user-app/dist/assets/NewestView-U3MIVepY.js @@ -1 +1 @@ -import{P as x}from"./PageBar-Cz1N2fdD.js";import{d as f,e as l,f as r,x as n,q as i,P,Q as S,R as k,n as L,S as b,T as _,O as v,h,k as d,U as B,w as C,V as E,J as p,F as V,r as $,j as A,M as F,_ as N}from"./index-BFOyCNFT.js";import{S as I}from"./SectionHead-Cg_UnoI8.js";import{P as T}from"./ProductCard-k7xfI-K2.js";import{u as j}from"./catalogStore-BuqGxGiV.js";const D={class:"flex justify-center items-center empty"},H=f({__name:"EmptyState",props:{description:{},image:{}},setup(t){return(e,c)=>(l(),r("div",D,[n(i(P),{description:"موردی یافت نشد",image:t.image,class:"h-[200px] w-[200px] opacity-70"},null,8,["image"])]))}}),M="/assets/favoritEmpty-kbtPAdi5.svg",q=f({__name:"ScrollFetchSearch",props:{loading:{type:Boolean},flag:{type:Boolean},padding:{}},emits:["fetch"],setup(t,{emit:e}){const c=e,a=S(),s=d(null);return k(s,()=>{c("fetch")},{distance:50}),(o,u)=>(l(),r("main",{class:"flex flex-col flex-1 overflow-auto no-scrollbar w-[100vw] max-w-screen-md m-auto",style:L({paddingTop:t.padding||i(a).headerHeight+"px"}),ref_key:"scrollArea",ref:s},[b(o.$slots,"default"),n(_,{cls:"my-[10px]",spinning:t.loading,indicator:!0,tip:"درحال دریافت اطلاعات"},null,8,["spinning"]),t.flag?(l(),v(H,{key:0,image:i(M)},null,8,["image"])):h("",!0)],4))}});function z(){const t=j(),e=B({totalPages:0,productList:t.products,flag:!1});return C(()=>t.products,a=>{e.productList=a,e.flag=a.length<1}),{productsData:e,getProducts:async(a,s=!1,o=!1)=>{if(!s){a.value=o||!t.loaded;try{e.productList=await t.load(o),e.flag=e.productList.length<1}catch(u){console.log(u)}finally{a.value=!1}}}}}const G={class:"newest"},J={key:0,class:"newest__grid"},g=20,O=f({__name:"NewestView",setup(t){const{productsData:e,getProducts:c}=z(),a=d(!1),s=d(!1),o=d(g),u=A(()=>e.productList.slice(0,o.value));E(async()=>{await c(a,!1)});const y=async()=>{if(o.value{const w=F("container");return l(),r("div",G,[n(x,{title:"جدیدترین محصولات","back-to":"home"}),n(_,{spinning:a.value,tip:"درحال دریافت اطلاعات"},{default:p(()=>[n(q,{class:"newest__scroll",loading:s.value,flag:i(e).flag,padding:"0px",onFetch:y},{default:p(()=>[n(w,{class:"newest__body"},{default:p(()=>[n(I,{title:"تازه‌ها",subtitle:"آخرین افزوده‌های مجموعه"}),i(e).productList.length?(l(),r("div",J,[(l(!0),r(V,null,$(u.value,m=>(l(),v(T,{key:m.id,value:m},null,8,["value"]))),128))])):h("",!0)]),_:1})]),_:1},8,["loading","flag"])]),_:1},8,["spinning"])])}}}),Y=N(O,[["__scopeId","data-v-1566f322"]]);export{Y as default}; +import{P as x}from"./PageBar-DmOKrVEQ.js";import{d as f,e as l,f as r,x as n,q as i,P,Q as S,R as k,n as L,S as b,T as _,O as v,h,k as d,U as B,w as C,V as E,J as p,F as V,r as $,j as A,M as F,_ as N}from"./index-B-RmZRr2.js";import{S as I}from"./SectionHead-CJoa_aGh.js";import{P as T}from"./ProductCard-AevItfr3.js";import{u as j}from"./catalogStore-D54EVMFO.js";const D={class:"flex justify-center items-center empty"},H=f({__name:"EmptyState",props:{description:{},image:{}},setup(t){return(e,c)=>(l(),r("div",D,[n(i(P),{description:"موردی یافت نشد",image:t.image,class:"h-[200px] w-[200px] opacity-70"},null,8,["image"])]))}}),M="/assets/favoritEmpty-kbtPAdi5.svg",q=f({__name:"ScrollFetchSearch",props:{loading:{type:Boolean},flag:{type:Boolean},padding:{}},emits:["fetch"],setup(t,{emit:e}){const c=e,a=S(),s=d(null);return k(s,()=>{c("fetch")},{distance:50}),(o,u)=>(l(),r("main",{class:"flex flex-col flex-1 overflow-auto no-scrollbar w-[100vw] max-w-screen-md m-auto",style:L({paddingTop:t.padding||i(a).headerHeight+"px"}),ref_key:"scrollArea",ref:s},[b(o.$slots,"default"),n(_,{cls:"my-[10px]",spinning:t.loading,indicator:!0,tip:"درحال دریافت اطلاعات"},null,8,["spinning"]),t.flag?(l(),v(H,{key:0,image:i(M)},null,8,["image"])):h("",!0)],4))}});function z(){const t=j(),e=B({totalPages:0,productList:t.products,flag:!1});return C(()=>t.products,a=>{e.productList=a,e.flag=a.length<1}),{productsData:e,getProducts:async(a,s=!1,o=!1)=>{if(!s){a.value=o||!t.loaded;try{e.productList=await t.load(o),e.flag=e.productList.length<1}catch(u){console.log(u)}finally{a.value=!1}}}}}const G={class:"newest"},J={key:0,class:"newest__grid"},g=20,O=f({__name:"NewestView",setup(t){const{productsData:e,getProducts:c}=z(),a=d(!1),s=d(!1),o=d(g),u=A(()=>e.productList.slice(0,o.value));E(async()=>{await c(a,!1)});const y=async()=>{if(o.value{const w=F("container");return l(),r("div",G,[n(x,{title:"جدیدترین محصولات","back-to":"home"}),n(_,{spinning:a.value,tip:"درحال دریافت اطلاعات"},{default:p(()=>[n(q,{class:"newest__scroll",loading:s.value,flag:i(e).flag,padding:"0px",onFetch:y},{default:p(()=>[n(w,{class:"newest__body"},{default:p(()=>[n(I,{title:"تازه‌ها",subtitle:"آخرین افزوده‌های مجموعه"}),i(e).productList.length?(l(),r("div",J,[(l(!0),r(V,null,$(u.value,m=>(l(),v(T,{key:m.id,value:m},null,8,["value"]))),128))])):h("",!0)]),_:1})]),_:1},8,["loading","flag"])]),_:1},8,["spinning"])])}}}),Y=N(O,[["__scopeId","data-v-1566f322"]]);export{Y as default}; diff --git a/apps/user-app/dist/assets/NotificationsView-BBfjG7fu.js b/apps/user-app/dist/assets/NotificationsView-CaeA456U.js similarity index 95% rename from apps/user-app/dist/assets/NotificationsView-BBfjG7fu.js rename to apps/user-app/dist/assets/NotificationsView-CaeA456U.js index 69a0572..b8519ed 100644 --- a/apps/user-app/dist/assets/NotificationsView-BBfjG7fu.js +++ b/apps/user-app/dist/assets/NotificationsView-CaeA456U.js @@ -1 +1 @@ -import{d as G,G as $,o as z,f as i,x as l,J as h,k as u,D as g,e as r,T as F,i as w,q as c,n as _,g as s,I as E,F as L,r as j,j as W,M as Y,N as q,t as A,h as P,_ as J}from"./index-BFOyCNFT.js";import{A as H}from"./AppPullRefresh-CsuQ3Y8x.js";import{P as K}from"./PageBar-Cz1N2fdD.js";import{u as Q}from"./useReveal-CE0IBSnz.js";import{u as X}from"./notificationsStore-CycZP1fZ.js";import{o as Z,b as ee}from"./orderStatus-DQMd9b1t.js";import{a as te}from"./filters-sld47Iy-.js";const oe={SUSPENDED:"سفارش معلق شد",PLACED:"سفارش ثبت شد",ADMIN_APPROVED:"سفارش تأیید شد",SOURCING:"تأمین کالا شروع شد",PREPARING:"آماده‌سازی سفارش",DELIVERED_TO_AGENT:"تحویل به نماینده",DELIVERED_TO_CUSTOMER:"سفارش تحویل شد",CANCELLED:"سفارش لغو شد"},ae={SUSPENDED:"به‌دلیل سقف اعتبار، سفارش شما موقتاً متوقف شده است. با پشتیبانی هماهنگ کنید.",PLACED:"سفارش شما دریافت شد و در صف بررسی قرار گرفت.",ADMIN_APPROVED:"سفارش شما تأیید شد و وارد مراحل بعدی می‌شود.",SOURCING:"کالای سفارش شما در حال تأمین است.",PREPARING:"سفارش شما در حال آماده‌سازی برای ارسال است.",DELIVERED_TO_AGENT:"سفارش به نماینده فروش تحویل داده شد.",DELIVERED_TO_CUSTOMER:"سفارش به شما تحویل داده شد. از خریدتان سپاسگزاریم.",CANCELLED:"این سفارش لغو شده است. اگر پرسشی دارید با پشتیبانی در تماس باشید."};function se(p){return oe[p]??"به‌روزرسانی سفارش"}function ne(p){return ae[p]??"وضعیت سفارش شما تغییر کرده است."}const ie={class:"notif"},re={class:"notif__emptyIcon","aria-hidden":"true"},le={class:"notif__emptyIcon","aria-hidden":"true"},ce={class:"notif__emptyIcon","aria-hidden":"true"},de={class:"notif__list"},ue=["data-kind","onClick"],_e={class:"notif__main"},fe={class:"notif__top"},pe={class:"notif__title"},me=["datetime"],ve={class:"notif__body"},ye={key:0,class:"notif__meta"},ge={key:0,class:"notif__dot","aria-label":"خوانده‌نشده"},Ee=G({__name:"NotificationsView",setup(p){const V=q(),D=$(),N=X(),{revealed:x,revealDelay:f,reveal:S}=Q("notifications"),m=u(!1),v=u(!1),R=u(!1),d=u([]),k=u([]),I=u(null),T={font:"var(--c-wine, #7A1F2B)",background:"var(--c-wineWash, #7A1F2B14)"},y=W(()=>{const a=I.value??0,t=[];for(const e of d.value)t.push({key:`m-${e.id}`,kind:"message",title:e.title,body:e.body,meta:"پیام پشتیبانی",createdAt:e.createdAt,unread:!e.isRead,icon:"vuesax-linear:message-text",color:T,targetId:e.id});for(const e of k.value){if(e.revisionStatus==="AWAITING_CUSTOMER"&&e.pendingRevision){const o=e.pendingRevision.createdAt,n=e.pendingRevision.customerDecision==="REJECTED";t.push({key:`r-${e.pendingRevision.id}`,kind:"status",title:n?"ویرایش ردشده — در انتظار پشتیبانی":"ویرایش سفارش منتظر تأیید شماست",body:n?"رد شما ثبت شد. تا تصمیم پشتیبانی، پیشنهاد ویرایش باز می‌ماند.":"ادمین این سفارش را ویرایش کرده است. می‌توانید تأیید یا رد کنید.",meta:`سفارش ${e.orderNumber}`,createdAt:o,unread:!n&&Date.parse(o)>a,icon:"vuesax-linear:edit-2",color:T,targetId:e.id,orderNumber:e.orderNumber})}for(const o of e.statusEvents??[]){const n=o.toStatus;t.push({key:`s-${o.id}`,kind:"status",title:se(n),body:ne(n),meta:`سفارش ${e.orderNumber}`,createdAt:o.createdAt,unread:Date.parse(o.createdAt)>a,icon:ee(n),color:Z(n),targetId:e.id,orderNumber:e.orderNumber})}}return t.sort((e,o)=>Date.parse(o.createdAt)-Date.parse(e.createdAt)),t});async function b(){if(!D.isLoggedIn){d.value=[],k.value=[],v.value=!1;return}if(I.value===null){const a=N.seenAt();I.value=a?Date.parse(a):Date.now()}m.value=!0,v.value=!1;try{const[a,t]=await Promise.all([g.getMyNotifications(),g.getMyOrders({page:1,limit:30})]);d.value=a,k.value=t.result??[]}catch(a){console.log(a),v.value=!0}finally{m.value=!1}}async function C(){if(D.isLoggedIn){try{await g.markAllNotificationsRead()}catch(a){console.log(a)}N.markSeenNow(),N.adminUnread=0,d.value=d.value.map(a=>({...a,isRead:!0,readAt:a.readAt??new Date().toISOString()}))}}async function O(){await b(),await C(),S()}async function M(){await O(),R.value=!1}function U(){V.push({name:"login",query:{redirect:"/notifications"}})}function B(a){if(a.kind!=="message"||!a.unread)return;g.markNotificationRead(a.targetId).catch(e=>console.log(e));const t=d.value.find(e=>e.id===a.targetId);t&&(t.isRead=!0,t.readAt=new Date().toISOString())}return z(async()=>{await b(),await C(),S()}),(a,t)=>{const e=Y("container");return r(),i("div",ie,[l(K,{title:"پیام‌ها","back-to":"home"}),l(H,{modelValue:R.value,"onUpdate:modelValue":t[0]||(t[0]=o=>R.value=o),onRefresh:M},{default:h(()=>[l(F,{spinning:m.value&&!y.value.length,tip:"در حال دریافت پیام‌ها"},{default:h(()=>[l(e,{class:w(["notif__body",{"is-revealed":c(x)}])},{default:h(()=>[c(D).isLoggedIn?v.value&&!y.value.length?(r(),i("section",{key:1,class:"notif__empty reveal",style:_(c(f)(0))},[s("div",le,[l(E,{icon:"vuesax-linear:danger",size:"28"})]),t[3]||(t[3]=s("h2",{class:"notif__emptyTitle"},"دریافت پیام‌ها ممکن نشد",-1)),t[4]||(t[4]=s("p",{class:"notif__emptyText"},"اتصال را بررسی کنید و دوباره تلاش کنید.",-1)),s("button",{type:"button",class:"notif__cta notif__cta--ghost",onClick:O},"تلاش دوباره")],4)):!m.value&&!y.value.length?(r(),i("section",{key:2,class:"notif__empty reveal",style:_(c(f)(0))},[s("div",ce,[l(E,{icon:"vuesax-linear:notification-bing",size:"28"})]),t[5]||(t[5]=s("h2",{class:"notif__emptyTitle"},"فعلاً پیامی نیست",-1)),t[6]||(t[6]=s("p",{class:"notif__emptyText"}," وقتی پیامی از پشتیبانی یا به‌روزرسانی جدیدی برسد، اینجا نمایش داده می‌شود. ",-1))],4)):(r(),i(L,{key:3},[s("p",{class:"notif__hint reveal",style:_(c(f)(0))}," جدیدترین پیام‌ها ",4),s("ul",de,[(r(!0),i(L,null,j(y.value,(o,n)=>(r(),i("li",{key:o.key,class:w(["notif__item reveal",{"is-unread":o.unread}]),"data-kind":o.kind,style:_(c(f)(Math.min(n+1,8))),onClick:Ae=>B(o)},[s("span",{class:"notif__icon",style:_({color:o.color.font,background:o.color.background}),"aria-hidden":"true"},[l(E,{icon:o.icon,size:"18"},null,8,["icon"])],4),s("div",_e,[s("div",fe,[s("h3",pe,A(o.title),1),s("time",{class:"notif__when",dir:"ltr",datetime:o.createdAt},A(c(te)(o.createdAt)),9,me)]),s("p",ve,A(o.body),1),o.meta?(r(),i("span",ye,A(o.meta),1)):P("",!0)]),o.unread?(r(),i("span",ge)):P("",!0)],14,ue))),128))])],64)):(r(),i("section",{key:0,class:"notif__empty reveal",style:_(c(f)(0))},[s("div",re,[l(E,{icon:"vuesax-linear:notification",size:"28"})]),t[1]||(t[1]=s("h2",{class:"notif__emptyTitle"},"پیام‌های شما اینجاست",-1)),t[2]||(t[2]=s("p",{class:"notif__emptyText"}," پس از ورود، پیام‌های پشتیبانی و به‌روزرسانی‌های حساب را اینجا می‌بینید. ",-1)),s("button",{type:"button",class:"notif__cta",onClick:U},"ورود به حساب")],4))]),_:1},8,["class"])]),_:1},8,["spinning"])]),_:1},8,["modelValue"])])}}}),Te=J(Ee,[["__scopeId","data-v-feb27aa4"]]);export{Te as default}; +import{d as G,G as $,o as z,f as i,x as l,J as h,k as u,D as g,e as r,T as F,i as w,q as c,n as _,g as s,I as E,F as L,r as j,j as W,M as Y,N as q,t as A,h as P,_ as J}from"./index-B-RmZRr2.js";import{A as H}from"./AppPullRefresh-RDVLXVM_.js";import{P as K}from"./PageBar-DmOKrVEQ.js";import{u as Q}from"./useReveal-Dq2T90sy.js";import{u as X}from"./notificationsStore-CEbLTUwx.js";import{o as Z,b as ee}from"./orderStatus-DQMd9b1t.js";import{a as te}from"./filters-BLs90kiz.js";const oe={SUSPENDED:"سفارش معلق شد",PLACED:"سفارش ثبت شد",ADMIN_APPROVED:"سفارش تأیید شد",SOURCING:"تأمین کالا شروع شد",PREPARING:"آماده‌سازی سفارش",DELIVERED_TO_AGENT:"تحویل به نماینده",DELIVERED_TO_CUSTOMER:"سفارش تحویل شد",CANCELLED:"سفارش لغو شد"},ae={SUSPENDED:"به‌دلیل سقف اعتبار، سفارش شما موقتاً متوقف شده است. با پشتیبانی هماهنگ کنید.",PLACED:"سفارش شما دریافت شد و در صف بررسی قرار گرفت.",ADMIN_APPROVED:"سفارش شما تأیید شد و وارد مراحل بعدی می‌شود.",SOURCING:"کالای سفارش شما در حال تأمین است.",PREPARING:"سفارش شما در حال آماده‌سازی برای ارسال است.",DELIVERED_TO_AGENT:"سفارش به نماینده فروش تحویل داده شد.",DELIVERED_TO_CUSTOMER:"سفارش به شما تحویل داده شد. از خریدتان سپاسگزاریم.",CANCELLED:"این سفارش لغو شده است. اگر پرسشی دارید با پشتیبانی در تماس باشید."};function se(p){return oe[p]??"به‌روزرسانی سفارش"}function ne(p){return ae[p]??"وضعیت سفارش شما تغییر کرده است."}const ie={class:"notif"},re={class:"notif__emptyIcon","aria-hidden":"true"},le={class:"notif__emptyIcon","aria-hidden":"true"},ce={class:"notif__emptyIcon","aria-hidden":"true"},de={class:"notif__list"},ue=["data-kind","onClick"],_e={class:"notif__main"},fe={class:"notif__top"},pe={class:"notif__title"},me=["datetime"],ve={class:"notif__body"},ye={key:0,class:"notif__meta"},ge={key:0,class:"notif__dot","aria-label":"خوانده‌نشده"},Ee=G({__name:"NotificationsView",setup(p){const V=q(),D=$(),N=X(),{revealed:x,revealDelay:f,reveal:S}=Q("notifications"),m=u(!1),v=u(!1),R=u(!1),d=u([]),k=u([]),I=u(null),T={font:"var(--c-wine, #7A1F2B)",background:"var(--c-wineWash, #7A1F2B14)"},y=W(()=>{const a=I.value??0,t=[];for(const e of d.value)t.push({key:`m-${e.id}`,kind:"message",title:e.title,body:e.body,meta:"پیام پشتیبانی",createdAt:e.createdAt,unread:!e.isRead,icon:"vuesax-linear:message-text",color:T,targetId:e.id});for(const e of k.value){if(e.revisionStatus==="AWAITING_CUSTOMER"&&e.pendingRevision){const o=e.pendingRevision.createdAt,n=e.pendingRevision.customerDecision==="REJECTED";t.push({key:`r-${e.pendingRevision.id}`,kind:"status",title:n?"ویرایش ردشده — در انتظار پشتیبانی":"ویرایش سفارش منتظر تأیید شماست",body:n?"رد شما ثبت شد. تا تصمیم پشتیبانی، پیشنهاد ویرایش باز می‌ماند.":"ادمین این سفارش را ویرایش کرده است. می‌توانید تأیید یا رد کنید.",meta:`سفارش ${e.orderNumber}`,createdAt:o,unread:!n&&Date.parse(o)>a,icon:"vuesax-linear:edit-2",color:T,targetId:e.id,orderNumber:e.orderNumber})}for(const o of e.statusEvents??[]){const n=o.toStatus;t.push({key:`s-${o.id}`,kind:"status",title:se(n),body:ne(n),meta:`سفارش ${e.orderNumber}`,createdAt:o.createdAt,unread:Date.parse(o.createdAt)>a,icon:ee(n),color:Z(n),targetId:e.id,orderNumber:e.orderNumber})}}return t.sort((e,o)=>Date.parse(o.createdAt)-Date.parse(e.createdAt)),t});async function b(){if(!D.isLoggedIn){d.value=[],k.value=[],v.value=!1;return}if(I.value===null){const a=N.seenAt();I.value=a?Date.parse(a):Date.now()}m.value=!0,v.value=!1;try{const[a,t]=await Promise.all([g.getMyNotifications(),g.getMyOrders({page:1,limit:30})]);d.value=a,k.value=t.result??[]}catch(a){console.log(a),v.value=!0}finally{m.value=!1}}async function C(){if(D.isLoggedIn){try{await g.markAllNotificationsRead()}catch(a){console.log(a)}N.markSeenNow(),N.adminUnread=0,d.value=d.value.map(a=>({...a,isRead:!0,readAt:a.readAt??new Date().toISOString()}))}}async function O(){await b(),await C(),S()}async function M(){await O(),R.value=!1}function U(){V.push({name:"login",query:{redirect:"/notifications"}})}function B(a){if(a.kind!=="message"||!a.unread)return;g.markNotificationRead(a.targetId).catch(e=>console.log(e));const t=d.value.find(e=>e.id===a.targetId);t&&(t.isRead=!0,t.readAt=new Date().toISOString())}return z(async()=>{await b(),await C(),S()}),(a,t)=>{const e=Y("container");return r(),i("div",ie,[l(K,{title:"پیام‌ها","back-to":"home"}),l(H,{modelValue:R.value,"onUpdate:modelValue":t[0]||(t[0]=o=>R.value=o),onRefresh:M},{default:h(()=>[l(F,{spinning:m.value&&!y.value.length,tip:"در حال دریافت پیام‌ها"},{default:h(()=>[l(e,{class:w(["notif__body",{"is-revealed":c(x)}])},{default:h(()=>[c(D).isLoggedIn?v.value&&!y.value.length?(r(),i("section",{key:1,class:"notif__empty reveal",style:_(c(f)(0))},[s("div",le,[l(E,{icon:"vuesax-linear:danger",size:"28"})]),t[3]||(t[3]=s("h2",{class:"notif__emptyTitle"},"دریافت پیام‌ها ممکن نشد",-1)),t[4]||(t[4]=s("p",{class:"notif__emptyText"},"اتصال را بررسی کنید و دوباره تلاش کنید.",-1)),s("button",{type:"button",class:"notif__cta notif__cta--ghost",onClick:O},"تلاش دوباره")],4)):!m.value&&!y.value.length?(r(),i("section",{key:2,class:"notif__empty reveal",style:_(c(f)(0))},[s("div",ce,[l(E,{icon:"vuesax-linear:notification-bing",size:"28"})]),t[5]||(t[5]=s("h2",{class:"notif__emptyTitle"},"فعلاً پیامی نیست",-1)),t[6]||(t[6]=s("p",{class:"notif__emptyText"}," وقتی پیامی از پشتیبانی یا به‌روزرسانی جدیدی برسد، اینجا نمایش داده می‌شود. ",-1))],4)):(r(),i(L,{key:3},[s("p",{class:"notif__hint reveal",style:_(c(f)(0))}," جدیدترین پیام‌ها ",4),s("ul",de,[(r(!0),i(L,null,j(y.value,(o,n)=>(r(),i("li",{key:o.key,class:w(["notif__item reveal",{"is-unread":o.unread}]),"data-kind":o.kind,style:_(c(f)(Math.min(n+1,8))),onClick:Ae=>B(o)},[s("span",{class:"notif__icon",style:_({color:o.color.font,background:o.color.background}),"aria-hidden":"true"},[l(E,{icon:o.icon,size:"18"},null,8,["icon"])],4),s("div",_e,[s("div",fe,[s("h3",pe,A(o.title),1),s("time",{class:"notif__when",dir:"ltr",datetime:o.createdAt},A(c(te)(o.createdAt)),9,me)]),s("p",ve,A(o.body),1),o.meta?(r(),i("span",ye,A(o.meta),1)):P("",!0)]),o.unread?(r(),i("span",ge)):P("",!0)],14,ue))),128))])],64)):(r(),i("section",{key:0,class:"notif__empty reveal",style:_(c(f)(0))},[s("div",re,[l(E,{icon:"vuesax-linear:notification",size:"28"})]),t[1]||(t[1]=s("h2",{class:"notif__emptyTitle"},"پیام‌های شما اینجاست",-1)),t[2]||(t[2]=s("p",{class:"notif__emptyText"}," پس از ورود، پیام‌های پشتیبانی و به‌روزرسانی‌های حساب را اینجا می‌بینید. ",-1)),s("button",{type:"button",class:"notif__cta",onClick:U},"ورود به حساب")],4))]),_:1},8,["class"])]),_:1},8,["spinning"])]),_:1},8,["modelValue"])])}}}),Te=J(Ee,[["__scopeId","data-v-feb27aa4"]]);export{Te as default}; diff --git a/apps/user-app/dist/assets/OrdersView-UefU7h2O.css b/apps/user-app/dist/assets/OrdersView-B7oGowL4.css similarity index 64% rename from apps/user-app/dist/assets/OrdersView-UefU7h2O.css rename to apps/user-app/dist/assets/OrdersView-B7oGowL4.css index 4196faa..bd219b2 100644 --- a/apps/user-app/dist/assets/OrdersView-UefU7h2O.css +++ b/apps/user-app/dist/assets/OrdersView-B7oGowL4.css @@ -1 +1 @@ -.oc[data-v-a37d1f3f]{display:flex;gap:11px;cursor:pointer;padding:12px;background:var(--c-canvas);border:1px solid var(--c-hairline);border-radius:18px;transition:transform .18s ease}.oc[data-v-a37d1f3f]:active{transform:scale(.99)}.oc__mark[data-v-a37d1f3f]{flex:0 0 36px;width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:var(--c-hairlineSoft);color:var(--c-inkFaint)}.oc__main[data-v-a37d1f3f]{flex:1;min-width:0}.oc__head[data-v-a37d1f3f]{display:flex;align-items:center;justify-content:space-between;gap:10px}.oc__id[data-v-a37d1f3f]{margin:0;font-size:13.5px;font-weight:800;color:var(--c-ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.oc__status[data-v-a37d1f3f]{flex:0 0 auto;padding:5px 12px;border-radius:999px;font-size:11px;font-weight:800;letter-spacing:-.01em;white-space:nowrap;line-height:1.2}.oc__status--rev[data-v-a37d1f3f]{color:var(--c-wine);background:var(--c-wineWash)}.oc__figures[data-v-a37d1f3f]{display:flex;gap:14px;padding-top:6px}.oc__figure[data-v-a37d1f3f]{font-size:12px;font-weight:700;color:var(--c-inkSoft)}.oc__figure i[data-v-a37d1f3f]{font-style:normal;font-size:10px;font-weight:600;color:var(--c-inkFaint);padding-inline-start:2px}.oc__foot[data-v-a37d1f3f]{display:flex;align-items:center;justify-content:space-between;gap:10px;padding-top:8px}.oc__date[data-v-a37d1f3f]{font-size:11px;color:var(--c-inkFaint)}.oc__more[data-v-a37d1f3f]{display:inline-flex;align-items:center;gap:4px;font-size:11.5px;font-weight:700;color:var(--c-wine)}.oi[data-v-f788cd63]{display:flex;gap:14px;padding:12px;background:var(--c-canvas);border:1px solid var(--c-hairline);border-radius:18px}.oi__art[data-v-f788cd63]{flex:0 0 92px;width:92px;height:92px;padding:0;border:0;border-radius:14px;overflow:hidden;background:var(--c-hairlineSoft);display:flex;align-items:center;justify-content:center}.oi__art--preview[data-v-f788cd63]{cursor:zoom-in;transition:transform .18s ease}.oi__art--preview[data-v-f788cd63]:active{transform:scale(.97)}.oi__art img[data-v-f788cd63]{width:100%;height:100%;-o-object-fit:contain;object-fit:contain;-o-object-position:center;object-position:center;display:block;pointer-events:none;background:#fff}html.theme-dark .oi__art img[data-v-f788cd63]{background:var(--c-photoMat)}.oi__preview[data-v-f788cd63]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:3000;display:grid;place-items:center;padding:56px 20px calc(24px + env(safe-area-inset-bottom,0px));background:#0a0a0c8c;-webkit-backdrop-filter:blur(28px) saturate(140%);backdrop-filter:blur(28px) saturate(140%)}.oi__previewClose[data-v-f788cd63]{position:absolute;top:calc(14px + env(safe-area-inset-top,0px));inset-inline-end:14px;z-index:2;width:38px;height:38px;display:grid;place-items:center;border:0;border-radius:12px;cursor:pointer;color:#fff;background:#00000059;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);transform:rotate(45deg)}.oi__previewClose[data-v-f788cd63]:active{transform:rotate(45deg) scale(.92)}.oi__previewImg[data-v-f788cd63]{max-width:min(100%,560px);max-height:100%;-o-object-fit:contain;object-fit:contain;border-radius:16px;background:#fff;box-shadow:0 18px 48px #00000059}.oi-preview-enter-active[data-v-f788cd63],.oi-preview-leave-active[data-v-f788cd63]{transition:opacity .22s ease}.oi-preview-enter-from[data-v-f788cd63],.oi-preview-leave-to[data-v-f788cd63]{opacity:0}.oi__artEmpty[data-v-f788cd63]{width:100%;height:100%;display:grid;place-items:center;color:var(--c-inkFaint)}.oi__main[data-v-f788cd63]{flex:1;min-width:0;display:flex;flex-direction:column;justify-content:center;gap:10px}.oi__head[data-v-f788cd63]{min-width:0}.oi__title[data-v-f788cd63]{margin:0;font-size:13.5px;font-weight:800;color:var(--c-ink);line-height:1.45;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.oi__variant[data-v-f788cd63]{display:inline-block;margin-top:3px;font-size:11px;color:var(--c-inkFaint)}.oi__chips[data-v-f788cd63]{display:flex;flex-wrap:wrap;gap:6px}.oi__chip[data-v-f788cd63]{display:inline-flex;align-items:baseline;gap:4px;padding:5px 9px;border-radius:999px;background:var(--c-hairlineSoft);border:1px solid var(--c-hairline);font-size:10.5px;color:var(--c-inkFaint)}.oi__chip b[data-v-f788cd63]{font-size:12px;font-weight:800;color:var(--c-inkSoft)}.oi__chip--accent[data-v-f788cd63]{background:var(--c-wineWash);border-color:color-mix(in srgb,var(--c-wine) 18%,var(--c-hairline));color:var(--c-wine)}.oi__chip--accent b[data-v-f788cd63]{color:var(--c-wine)}.ord[data-v-9aa5253f]{background:var(--c-page);min-height:100vh}.ord__barExtra[data-v-9aa5253f]{max-width:768px;margin:0 auto;padding:0 16px}.ord__chips[data-v-9aa5253f]{display:flex;gap:8px;overflow-x:auto;margin:8px 0 8px -16px;scroll-snap-type:x proximity}.ord__chip[data-v-9aa5253f]{scroll-snap-align:start;flex:0 0 auto;padding:7px 14px;border-radius:999px;cursor:pointer;font-family:inherit;font-size:12px;font-weight:500;white-space:nowrap;color:var(--c-inkSoft);background:var(--c-canvas);border:1px solid var(--c-hairline);transition:all .2s ease}.ord__chip.is-on[data-v-9aa5253f]{color:#fff;background:var(--c-primary);border-color:var(--c-primary)}.ord__chip[data-v-9aa5253f]:active{transform:scale(.97)}.ord__body[data-v-9aa5253f]{padding-top:160px;padding-bottom:90px}.ord__list[data-v-9aa5253f]{display:flex;flex-direction:column;padding-top:16px;gap:11px}.ord__empty[data-v-9aa5253f]{margin-top:8px;padding:34px 20px;border:1px dashed var(--c-hairline);border-radius:18px;display:flex;flex-direction:column;align-items:center;gap:10px;color:var(--c-inkFaint)}.ord__empty p[data-v-9aa5253f]{margin:0;font-size:12.5px}.ord__retry[data-v-9aa5253f]{padding:8px 18px;border-radius:999px;border:1px solid var(--c-hairline);background:var(--c-canvas);font-family:inherit;font-size:12px;font-weight:500;cursor:pointer}.ord__more[data-v-9aa5253f],.ord__sentinel[data-v-9aa5253f]{padding:12px 0;text-align:center;font-size:12px;color:var(--c-inkMuted)}.detail[data-v-9aa5253f]{height:100vh;display:flex;flex-direction:column;background:var(--c-canvas)}.detail__bar[data-v-9aa5253f]{flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 16px;border-bottom:1px solid var(--c-hairline);background:rgb(var(--c-canvas-rgb) / 92%);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.detail__title[data-v-9aa5253f]{margin:0;font-size:13px;font-weight:500;color:var(--c-ink)}.detail__close[data-v-9aa5253f],.detail__trail[data-v-9aa5253f]{width:38px;height:38px;border:0;cursor:pointer;border-radius:12px;display:grid;place-items:center;color:var(--c-ink);background:var(--c-hairlineSoft)}.detail__trail[data-v-9aa5253f]:active{transform:scale(.96)}.detail__scroll[data-v-9aa5253f]{flex:1;overflow-y:auto;padding:16px 16px 40px}.detail__block[data-v-9aa5253f]{margin-bottom:22px}.detail__blockTitle[data-v-9aa5253f]{margin:0 0 11px;font-size:12.5px;font-weight:500;color:var(--c-ink)}.tlSheet[data-v-9aa5253f]{padding:4px 18px 22px;max-height:100%;overflow-y:auto}.tlSheet__grip[data-v-9aa5253f]{display:block;width:38px;height:4px;margin:2px auto 10px;border-radius:4px;background:var(--c-hairline)}.tlSheet__banner[data-v-9aa5253f]{display:flex;align-items:center;gap:10px;margin-bottom:18px}.tlSheet__chip[data-v-9aa5253f]{flex:0 0 auto;padding:6px 12px;border-radius:999px;border:1px solid var(--c-hairline);background:var(--c-canvas);box-shadow:0 1px 2px #14161a0a;font-size:11px;font-weight:500;color:var(--c-inkSoft)}.tlSheet__dash[data-v-9aa5253f]{flex:1 1 auto;height:0;border-top:1.5px dashed var(--c-hairline);min-width:16px}.tlSheet__badge[data-v-9aa5253f]{flex:0 0 auto;display:inline-flex;align-items:center;gap:5px;padding:6px 11px;border-radius:999px;font-size:11px;font-weight:500;white-space:nowrap}.tlSheet__rail[data-v-9aa5253f]{list-style:none;margin:0;padding:0 2px}.tlSheet__node[data-v-9aa5253f]{display:flex;gap:12px;align-items:stretch;min-height:64px}.tlSheet__axis[data-v-9aa5253f]{flex:0 0 40px;width:40px;display:flex;flex-direction:column;align-items:center;position:relative}.tlSheet__halo[data-v-9aa5253f]{position:absolute;top:0;left:50%;width:40px;height:40px;margin-left:-20px;border-radius:50%;pointer-events:none;z-index:0}.tlSheet__halo[data-v-9aa5253f]:before{content:"";position:absolute;top:-14px;right:-14px;bottom:-14px;left:-14px;border-radius:50%;background:radial-gradient(circle,color-mix(in srgb,currentColor 32%,transparent) 0%,color-mix(in srgb,currentColor 12%,transparent) 38%,transparent 70%);filter:blur(1.5px);opacity:0;animation:tlSheetHalo-9aa5253f 4.8s ease-in-out infinite}@keyframes tlSheetHalo-9aa5253f{0%,to{opacity:0}50%{opacity:.7}}@media (prefers-reduced-motion: reduce){.tlSheet__halo[data-v-9aa5253f]:before{animation:none;opacity:.35}}.tlSheet__marker[data-v-9aa5253f]{flex:0 0 40px;width:40px;height:40px;border-radius:50%;border:1.5px solid currentColor;background:var(--c-canvas);display:grid;place-items:center;position:relative;z-index:1}.tlSheet__node.is-pending .tlSheet__marker[data-v-9aa5253f]{color:#9ca3af;background:var(--c-canvas);border-color:#9ca3af;border-style:dashed}.tlSheet__node.is-done .tlSheet__marker[data-v-9aa5253f],.tlSheet__node.is-current .tlSheet__marker[data-v-9aa5253f]{background:var(--c-canvas)}.tlSheet__node.is-pending .tlSheet__status[data-v-9aa5253f],.tlSheet__node.is-pending .tlSheet__blurb[data-v-9aa5253f],.tlSheet__node.is-pending .tlSheet__when[data-v-9aa5253f]{color:var(--c-inkFaint)}.tlSheet__stem[data-v-9aa5253f]{flex:1 1 auto;width:1.5px;margin:4px 0;background:var(--c-hairline);min-height:16px}.tlSheet__node.is-pending .tlSheet__stem[data-v-9aa5253f]{background:var(--c-hairlineSoft);background-image:repeating-linear-gradient(180deg,var(--c-hairline) 0 4px,transparent 4px 8px);width:2px}.tlSheet__main[data-v-9aa5253f]{flex:1;min-width:0;padding-top:4px;padding-bottom:18px}.tlSheet__node:last-child .tlSheet__main[data-v-9aa5253f]{padding-bottom:4px}.tlSheet__row[data-v-9aa5253f]{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.tlSheet__copy[data-v-9aa5253f]{min-width:0;flex:1}.tlSheet__status[data-v-9aa5253f]{font-size:13px;font-weight:500;color:var(--c-ink);line-height:1.35}.tlSheet__blurb[data-v-9aa5253f]{margin:3px 0 0;font-size:11.5px;font-weight:500;line-height:1.45;color:var(--c-inkFaint)}.tlSheet__when[data-v-9aa5253f]{flex:0 0 auto;padding-top:2px;font-size:11px;font-weight:500;color:var(--c-inkFaint);font-variant-numeric:tabular-nums;white-space:nowrap}.tlSheet__when.is-wait[data-v-9aa5253f]{font-weight:500;opacity:.85}.tlSheet__empty[data-v-9aa5253f]{margin:4px 0 0;padding:20px 12px;font-size:12px;color:var(--c-inkFaint);text-align:center;border:1px dashed var(--c-hairline);border-radius:14px}.detail__headline[data-v-9aa5253f]{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding-bottom:14px}.detail__idBlock[data-v-9aa5253f]{min-width:0;flex:1}.detail__eyebrow[data-v-9aa5253f]{font-size:11px;color:var(--c-inkFaint)}.detail__number[data-v-9aa5253f]{padding-top:3px;font-size:13px;font-weight:500;line-height:1.4;color:var(--c-inkSoft);word-break:break-all}.detail__status[data-v-9aa5253f]{flex:0 0 auto;align-self:flex-start;padding:5px 12px;border-radius:999px;font-size:10.5px;font-weight:500;white-space:nowrap}.detail__specs[data-v-9aa5253f]{margin:0;border:1px solid var(--c-hairline);border-radius:16px;overflow:hidden}.detail__spec[data-v-9aa5253f]{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px 14px;border-bottom:1px solid var(--c-hairlineSoft)}.detail__spec[data-v-9aa5253f]:last-child{border-bottom:0}.detail__spec dt[data-v-9aa5253f]{margin:0;font-size:12px;color:var(--c-inkFaint)}.detail__spec dd[data-v-9aa5253f]{margin:0;font-size:12.5px;font-weight:500;color:var(--c-ink)}.detail__items[data-v-9aa5253f]{display:flex;flex-direction:column;gap:10px} +.oc[data-v-a37d1f3f]{display:flex;gap:11px;cursor:pointer;padding:12px;background:var(--c-canvas);border:1px solid var(--c-hairline);border-radius:18px;transition:transform .18s ease}.oc[data-v-a37d1f3f]:active{transform:scale(.99)}.oc__mark[data-v-a37d1f3f]{flex:0 0 36px;width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:var(--c-hairlineSoft);color:var(--c-inkFaint)}.oc__main[data-v-a37d1f3f]{flex:1;min-width:0}.oc__head[data-v-a37d1f3f]{display:flex;align-items:center;justify-content:space-between;gap:10px}.oc__id[data-v-a37d1f3f]{margin:0;font-size:13.5px;font-weight:800;color:var(--c-ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.oc__status[data-v-a37d1f3f]{flex:0 0 auto;padding:5px 12px;border-radius:999px;font-size:11px;font-weight:800;letter-spacing:-.01em;white-space:nowrap;line-height:1.2}.oc__status--rev[data-v-a37d1f3f]{color:var(--c-wine);background:var(--c-wineWash)}.oc__figures[data-v-a37d1f3f]{display:flex;gap:14px;padding-top:6px}.oc__figure[data-v-a37d1f3f]{font-size:12px;font-weight:700;color:var(--c-inkSoft)}.oc__figure i[data-v-a37d1f3f]{font-style:normal;font-size:10px;font-weight:600;color:var(--c-inkFaint);padding-inline-start:2px}.oc__foot[data-v-a37d1f3f]{display:flex;align-items:center;justify-content:space-between;gap:10px;padding-top:8px}.oc__date[data-v-a37d1f3f]{font-size:11px;color:var(--c-inkFaint)}.oc__more[data-v-a37d1f3f]{display:inline-flex;align-items:center;gap:4px;font-size:11.5px;font-weight:700;color:var(--c-wine)}.oi[data-v-f788cd63]{display:flex;gap:14px;padding:12px;background:var(--c-canvas);border:1px solid var(--c-hairline);border-radius:18px}.oi__art[data-v-f788cd63]{flex:0 0 92px;width:92px;height:92px;padding:0;border:0;border-radius:14px;overflow:hidden;background:var(--c-hairlineSoft);display:flex;align-items:center;justify-content:center}.oi__art--preview[data-v-f788cd63]{cursor:zoom-in;transition:transform .18s ease}.oi__art--preview[data-v-f788cd63]:active{transform:scale(.97)}.oi__art img[data-v-f788cd63]{width:100%;height:100%;-o-object-fit:contain;object-fit:contain;-o-object-position:center;object-position:center;display:block;pointer-events:none;background:#fff}html.theme-dark .oi__art img[data-v-f788cd63]{background:var(--c-photoMat)}.oi__preview[data-v-f788cd63]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:3000;display:grid;place-items:center;padding:56px 20px calc(24px + env(safe-area-inset-bottom,0px));background:#0a0a0c8c;-webkit-backdrop-filter:blur(28px) saturate(140%);backdrop-filter:blur(28px) saturate(140%)}.oi__previewClose[data-v-f788cd63]{position:absolute;top:calc(14px + env(safe-area-inset-top,0px));inset-inline-end:14px;z-index:2;width:38px;height:38px;display:grid;place-items:center;border:0;border-radius:12px;cursor:pointer;color:#fff;background:#00000059;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);transform:rotate(45deg)}.oi__previewClose[data-v-f788cd63]:active{transform:rotate(45deg) scale(.92)}.oi__previewImg[data-v-f788cd63]{max-width:min(100%,560px);max-height:100%;-o-object-fit:contain;object-fit:contain;border-radius:16px;background:#fff;box-shadow:0 18px 48px #00000059}.oi-preview-enter-active[data-v-f788cd63],.oi-preview-leave-active[data-v-f788cd63]{transition:opacity .22s ease}.oi-preview-enter-from[data-v-f788cd63],.oi-preview-leave-to[data-v-f788cd63]{opacity:0}.oi__artEmpty[data-v-f788cd63]{width:100%;height:100%;display:grid;place-items:center;color:var(--c-inkFaint)}.oi__main[data-v-f788cd63]{flex:1;min-width:0;display:flex;flex-direction:column;justify-content:center;gap:10px}.oi__head[data-v-f788cd63]{min-width:0}.oi__title[data-v-f788cd63]{margin:0;font-size:13.5px;font-weight:800;color:var(--c-ink);line-height:1.45;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.oi__variant[data-v-f788cd63]{display:inline-block;margin-top:3px;font-size:11px;color:var(--c-inkFaint)}.oi__chips[data-v-f788cd63]{display:flex;flex-wrap:wrap;gap:6px}.oi__chip[data-v-f788cd63]{display:inline-flex;align-items:baseline;gap:4px;padding:5px 9px;border-radius:999px;background:var(--c-hairlineSoft);border:1px solid var(--c-hairline);font-size:10.5px;color:var(--c-inkFaint)}.oi__chip b[data-v-f788cd63]{font-size:12px;font-weight:800;color:var(--c-inkSoft)}.oi__chip--accent[data-v-f788cd63]{background:var(--c-wineWash);border-color:color-mix(in srgb,var(--c-wine) 18%,var(--c-hairline));color:var(--c-wine)}.oi__chip--accent b[data-v-f788cd63]{color:var(--c-wine)}.ord[data-v-d1b9409a]{background:var(--c-page);min-height:100vh}.ord__barExtra[data-v-d1b9409a]{max-width:768px;margin:0 auto;padding:0 16px}.ord__chips[data-v-d1b9409a]{display:flex;gap:8px;overflow-x:auto;margin:8px 0 8px -16px;scroll-snap-type:x proximity}.ord__chip[data-v-d1b9409a]{scroll-snap-align:start;flex:0 0 auto;padding:7px 14px;border-radius:999px;cursor:pointer;font-family:inherit;font-size:12px;font-weight:500;white-space:nowrap;color:var(--c-inkSoft);background:var(--c-canvas);border:1px solid var(--c-hairline);transition:all .2s ease}.ord__chip.is-on[data-v-d1b9409a]{color:#fff;background:var(--c-primary);border-color:var(--c-primary)}.ord__chip[data-v-d1b9409a]:active{transform:scale(.97)}.ord__body[data-v-d1b9409a]{padding-top:160px;padding-bottom:90px}.ord__list[data-v-d1b9409a]{display:flex;flex-direction:column;padding-top:16px;gap:11px}.ord__empty[data-v-d1b9409a]{margin-top:8px;padding:34px 20px;border:1px dashed var(--c-hairline);border-radius:18px;display:flex;flex-direction:column;align-items:center;gap:10px;color:var(--c-inkFaint)}.ord__empty p[data-v-d1b9409a]{margin:0;font-size:12.5px}.ord__retry[data-v-d1b9409a]{padding:8px 18px;border-radius:999px;border:1px solid var(--c-hairline);background:var(--c-canvas);font-family:inherit;font-size:12px;font-weight:500;cursor:pointer}.ord__more[data-v-d1b9409a],.ord__sentinel[data-v-d1b9409a]{padding:12px 0;text-align:center;font-size:12px;color:var(--c-inkMuted)}.detail[data-v-d1b9409a]{height:100vh;display:flex;flex-direction:column;background:var(--c-canvas)}.detail__bar[data-v-d1b9409a]{flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 16px;border-bottom:1px solid var(--c-hairline);background:rgb(var(--c-canvas-rgb) / 92%);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.detail__title[data-v-d1b9409a]{margin:0;font-size:13px;font-weight:500;color:var(--c-ink)}.detail__close[data-v-d1b9409a],.detail__trail[data-v-d1b9409a]{width:38px;height:38px;border:0;cursor:pointer;border-radius:12px;display:grid;place-items:center;color:var(--c-ink);background:var(--c-hairlineSoft)}.detail__trail[data-v-d1b9409a]:active{transform:scale(.96)}.detail__scroll[data-v-d1b9409a]{flex:1;overflow-y:auto;padding:16px 16px 40px}.detail__block[data-v-d1b9409a]{margin-bottom:22px}.detail__blockTitle[data-v-d1b9409a]{margin:0 0 11px;font-size:12.5px;font-weight:500;color:var(--c-ink)}.tlSheet[data-v-d1b9409a]{padding:4px 18px 22px;max-height:100%;overflow-y:auto}.tlSheet__grip[data-v-d1b9409a]{display:block;width:38px;height:4px;margin:2px auto 10px;border-radius:4px;background:var(--c-hairline)}.tlSheet__banner[data-v-d1b9409a]{display:flex;align-items:center;gap:10px;margin-bottom:18px}.tlSheet__chip[data-v-d1b9409a]{flex:0 0 auto;padding:6px 12px;border-radius:999px;border:1px solid var(--c-hairline);background:var(--c-canvas);box-shadow:0 1px 2px #14161a0a;font-size:11px;font-weight:500;color:var(--c-inkSoft)}.tlSheet__dash[data-v-d1b9409a]{flex:1 1 auto;height:0;border-top:1.5px dashed var(--c-hairline);min-width:16px}.tlSheet__badge[data-v-d1b9409a]{flex:0 0 auto;display:inline-flex;align-items:center;gap:5px;padding:6px 11px;border-radius:999px;font-size:11px;font-weight:500;white-space:nowrap}.tlSheet__rail[data-v-d1b9409a]{list-style:none;margin:0;padding:0 2px}.tlSheet__node[data-v-d1b9409a]{display:flex;gap:12px;align-items:stretch;min-height:64px}.tlSheet__axis[data-v-d1b9409a]{flex:0 0 40px;width:40px;display:flex;flex-direction:column;align-items:center;position:relative}.tlSheet__halo[data-v-d1b9409a]{position:absolute;top:0;left:50%;width:40px;height:40px;margin-left:-20px;border-radius:50%;pointer-events:none;z-index:0}.tlSheet__halo[data-v-d1b9409a]:before{content:"";position:absolute;top:-14px;right:-14px;bottom:-14px;left:-14px;border-radius:50%;background:radial-gradient(circle,color-mix(in srgb,currentColor 32%,transparent) 0%,color-mix(in srgb,currentColor 12%,transparent) 38%,transparent 70%);filter:blur(1.5px);opacity:0;animation:tlSheetHalo-d1b9409a 4.8s ease-in-out infinite}@keyframes tlSheetHalo-d1b9409a{0%,to{opacity:0}50%{opacity:.7}}@media (prefers-reduced-motion: reduce){.tlSheet__halo[data-v-d1b9409a]:before{animation:none;opacity:.35}}.tlSheet__marker[data-v-d1b9409a]{flex:0 0 40px;width:40px;height:40px;border-radius:50%;border:1.5px solid currentColor;background:var(--c-canvas);display:grid;place-items:center;position:relative;z-index:1}.tlSheet__node.is-pending .tlSheet__marker[data-v-d1b9409a]{color:#9ca3af;background:var(--c-canvas);border-color:#9ca3af;border-style:dashed}.tlSheet__node.is-done .tlSheet__marker[data-v-d1b9409a],.tlSheet__node.is-current .tlSheet__marker[data-v-d1b9409a]{background:var(--c-canvas)}.tlSheet__node.is-pending .tlSheet__status[data-v-d1b9409a],.tlSheet__node.is-pending .tlSheet__blurb[data-v-d1b9409a],.tlSheet__node.is-pending .tlSheet__when[data-v-d1b9409a]{color:var(--c-inkFaint)}.tlSheet__stem[data-v-d1b9409a]{flex:1 1 auto;width:1.5px;margin:4px 0;background:var(--c-hairline);min-height:16px}.tlSheet__node.is-pending .tlSheet__stem[data-v-d1b9409a]{background:var(--c-hairlineSoft);background-image:repeating-linear-gradient(180deg,var(--c-hairline) 0 4px,transparent 4px 8px);width:2px}.tlSheet__main[data-v-d1b9409a]{flex:1;min-width:0;padding-top:4px;padding-bottom:18px}.tlSheet__node:last-child .tlSheet__main[data-v-d1b9409a]{padding-bottom:4px}.tlSheet__row[data-v-d1b9409a]{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.tlSheet__copy[data-v-d1b9409a]{min-width:0;flex:1}.tlSheet__status[data-v-d1b9409a]{font-size:13px;font-weight:500;color:var(--c-ink);line-height:1.35}.tlSheet__blurb[data-v-d1b9409a]{margin:3px 0 0;font-size:11.5px;font-weight:500;line-height:1.45;color:var(--c-inkFaint)}.tlSheet__when[data-v-d1b9409a]{flex:0 0 auto;padding-top:2px;font-size:11px;font-weight:500;color:var(--c-inkFaint);font-variant-numeric:tabular-nums;white-space:nowrap}.tlSheet__when.is-wait[data-v-d1b9409a]{font-weight:500;opacity:.85}.tlSheet__empty[data-v-d1b9409a]{margin:4px 0 0;padding:20px 12px;font-size:12px;color:var(--c-inkFaint);text-align:center;border:1px dashed var(--c-hairline);border-radius:14px}.detail__headline[data-v-d1b9409a]{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding-bottom:14px}.detail__idBlock[data-v-d1b9409a]{min-width:0;flex:1}.detail__eyebrow[data-v-d1b9409a]{font-size:11px;color:var(--c-inkFaint)}.detail__number[data-v-d1b9409a]{padding-top:3px;font-size:13px;font-weight:500;line-height:1.4;color:var(--c-inkSoft);word-break:break-all}.detail__status[data-v-d1b9409a]{flex:0 0 auto;align-self:flex-start;padding:5px 12px;border-radius:999px;font-size:10.5px;font-weight:500;white-space:nowrap}.detail__specs[data-v-d1b9409a]{margin:0;border:1px solid var(--c-hairline);border-radius:16px;overflow:hidden}.detail__spec[data-v-d1b9409a]{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px 14px;border-bottom:1px solid var(--c-hairlineSoft)}.detail__spec[data-v-d1b9409a]:last-child{border-bottom:0}.detail__spec dt[data-v-d1b9409a]{margin:0;font-size:12px;color:var(--c-inkFaint)}.detail__spec dd[data-v-d1b9409a]{margin:0;font-size:12.5px;font-weight:500;color:var(--c-ink)}.detail__items[data-v-d1b9409a]{display:flex;flex-direction:column;gap:10px} diff --git a/apps/user-app/dist/assets/OrdersView-BuGZsuud.js b/apps/user-app/dist/assets/OrdersView-BuGZsuud.js new file mode 100644 index 0000000..cdd3bf2 --- /dev/null +++ b/apps/user-app/dist/assets/OrdersView-BuGZsuud.js @@ -0,0 +1 @@ +import{A as ue}from"./AppPullRefresh-RDVLXVM_.js";import{d as J,e as a,f as l,g as e,x as c,I as E,n as R,t as n,W as L,q as y,h as b,j as C,_ as Q,c as se,p as de,v as ce,O as q,aV as _e,J as T,y as ve,am as pe,k,G as me,Z as fe,w as he,o as ye,$ as be,b as ge,T as ke,D as Se,U as Ee,F as B,r as W,K as Ce,M as we,i as X}from"./index-B-RmZRr2.js";import{P as De}from"./PageBar-DmOKrVEQ.js";import{S as $e}from"./SearchInput-BkGXK-xm.js";import{O as $,a as Le,o as F,b as Ae,c as ee,d as Ne,e as j}from"./orderStatus-DQMd9b1t.js";import{p as Y,j as ae,a as Ie}from"./filters-BLs90kiz.js";import{D as te}from"./index-DXKwa_Wp.js";import"./KeyCode-DsOsmuVa.js";import"./classCallCheck-BMo4V_0Q.js";import"./raf-nDFcuFT6.js";const Oe={class:"oc__main"},xe={class:"oc__head"},Te={class:"oc__id"},Re={key:0,class:"oc__status oc__status--rev"},Pe={class:"oc__figures"},Ue={class:"oc__figure"},Ve={class:"oc__figure"},Fe={key:0,class:"oc__figure"},ze={class:"oc__foot"},Ge={class:"oc__date"},Me={class:"oc__more"},Be=J({__name:"OrderCard",props:{value:{}},emits:["view"],setup(f,{emit:_}){const r=f,w=_,A=C(()=>$[r.value.status]??r.value.status),v=C(()=>Le[r.value.status]),g=C(()=>{const m=Number(r.value.flatRialCharge);return Number.isFinite(m)&&m>0?m:0});return(m,u)=>{var S,o,p,N;return a(),l("article",{class:"oc",onClick:u[0]||(u[0]=D=>w("view",f.value))},[e("span",{class:"oc__mark",style:R({background:(S=v.value)==null?void 0:S.background,color:(o=v.value)==null?void 0:o.font}),"aria-hidden":"true"},[c(E,{icon:"vuesax-linear:receipt-text",size:"16"})],4),e("div",Oe,[e("div",xe,[e("h3",Te,n(f.value.orderNumber),1),f.value.revisionStatus==="AWAITING_CUSTOMER"?(a(),l("span",Re," منتظر تأیید ویرایش ")):(a(),l("span",{key:1,class:"oc__status",style:R({background:(p=v.value)==null?void 0:p.background,color:(N=v.value)==null?void 0:N.font})},n(A.value),5))]),e("div",Pe,[e("span",Ue,[L(n(f.value.items.length)+" ",1),u[1]||(u[1]=e("i",null,"آیتم",-1))]),e("span",Ve,[L(n(parseFloat(f.value.totalGoldWeightGrams).toFixed(2))+" ",1),u[2]||(u[2]=e("i",null,"گرم",-1))]),g.value>0?(a(),l("span",Fe,[L(n(y(Y)(g.value))+" ",1),u[3]||(u[3]=e("i",null,"ریال اجرت",-1))])):b("",!0)]),e("div",ze,[e("span",Ge,n(y(ae)(f.value.createdAt)),1),e("span",Me,[u[4]||(u[4]=L(" جزئیات ",-1)),c(E,{icon:"vuesax-linear:arrow-left-2",size:"14"})])])])])}}}),We=Q(Be,[["__scopeId","data-v-a37d1f3f"]]);function je(f){var r,w;const _=f.productVariant;if(_)return{productTitle:_.product.title,variantTitle:_.title,imageUrl:((r=_.image)==null?void 0:r.url)??((w=_.product.images[0])==null?void 0:w.url)}}const qe={class:"oi"},Ke=["aria-label"],Je=["alt"],Qe={key:1,class:"oi__art","aria-hidden":"true"},Ye={class:"oi__artEmpty"},Ze={class:"oi__main"},He={class:"oi__head"},Xe={class:"oi__title"},et={key:0,class:"oi__variant"},tt={class:"oi__chips"},st={class:"oi__chip"},at={class:"oi__chip"},lt={class:"oi__chip"},it={key:0,class:"oi__chip oi__chip--accent"},ot=["src","alt"],nt=J({__name:"OrderItemCard",props:{value:{}},setup(f){const _=f,r=C(()=>je(_.value)),w=C(()=>{const o=Number(_.value.flatRialCharge);return Number.isFinite(o)&&o>0?o:0}),A=C(()=>{const o=parseFloat(String(_.value.computedWeightGrams));return Number.isFinite(o)?o.toFixed(2):String(_.value.computedWeightGrams)}),v=C(()=>{const o=parseFloat(String(_.value.wagePercentSnapshot));return Number.isFinite(o)?o%1===0?String(o):o.toFixed(2):String(_.value.wagePercentSnapshot)}),g=k(!1);let m=!1;function u(){var o;(o=r.value)!=null&&o.imageUrl&&(g.value=!0,document.documentElement.style.overflow!=="hidden"&&(document.body.style.overflow="hidden",m=!0))}function S(){g.value=!1,m&&(document.body.style.overflow=""),m=!1}return se(S),(o,p)=>{var D,I,z,P;const N=de("lazy");return a(),l("article",qe,[(D=r.value)!=null&&D.imageUrl?(a(),l("button",{key:0,type:"button",class:"oi__art oi__art--preview","aria-label":`پیش‌نمایش ${r.value.productTitle??"تصویر"}`,onClick:u},[ce(e("img",{alt:((I=r.value)==null?void 0:I.productTitle)??""},null,8,Je),[[N,r.value.imageUrl]])],8,Ke)):(a(),l("div",Qe,[e("div",Ye,[c(E,{icon:"vuesax-linear:diamonds",size:"22"})])])),e("div",Ze,[e("div",He,[e("h4",Xe,n(((z=r.value)==null?void 0:z.productTitle)??"محصول"),1),(P=r.value)!=null&&P.variantTitle?(a(),l("span",et,n(r.value.variantTitle),1)):b("",!0)]),e("div",tt,[e("span",st,[e("b",null,n(f.value.quantity),1),p[0]||(p[0]=L(" عدد ",-1))]),e("span",at,[e("b",null,n(A.value),1),p[1]||(p[1]=L(" گرم ",-1))]),e("span",lt,[e("b",null,n(v.value),1),p[2]||(p[2]=L(" ٪ اجرت ",-1))]),w.value>0?(a(),l("span",it,[e("b",null,n(y(Y)(w.value)),1),p[3]||(p[3]=L(" ریال ",-1))])):b("",!0)])]),(a(),q(_e,{to:"body"},[c(pe,{name:"oi-preview"},{default:T(()=>{var G;return[g.value&&((G=r.value)!=null&&G.imageUrl)?(a(),l("div",{key:0,class:"oi__preview",role:"dialog","aria-modal":"true","aria-label":"پیش‌نمایش تصویر",onClick:ve(S,["self"])},[e("button",{type:"button",class:"oi__previewClose","aria-label":"بستن",onClick:S},[c(E,{icon:"vuesax-linear:add",size:"20"})]),e("img",{class:"oi__previewImg",src:r.value.imageUrl,alt:r.value.productTitle??"",draggable:"false"},null,8,ot)])):b("",!0)]}),_:1})]))])}}}),rt=Q(nt,[["__scopeId","data-v-f788cd63"]]),ut={class:"ord"},dt={class:"ord__barExtra"},ct={class:"ord__chips no-scrollbar"},_t=["onClick"],vt={key:0,class:"ord__list"},pt={key:1,class:"ord__empty"},mt={key:2,class:"ord__empty"},ft={key:3,class:"ord__more"},ht={class:"detail"},yt={class:"detail__bar"},bt={class:"detail__scroll"},gt={class:"detail__block"},kt={class:"detail__headline"},St={class:"detail__idBlock"},Et={class:"detail__number"},Ct={class:"detail__specs"},wt={class:"detail__spec"},Dt={class:"detail__spec"},$t={key:0,class:"detail__spec"},Lt={class:"detail__spec"},At={class:"detail__block"},Nt={class:"detail__items"},It={class:"tlSheet"},Ot={class:"tlSheet__banner"},xt={key:0,class:"tlSheet__rail"},Tt={class:"tlSheet__axis","aria-hidden":"true"},Rt={class:"tlSheet__main"},Pt={class:"tlSheet__row"},Ut={class:"tlSheet__copy"},Vt={class:"tlSheet__status"},Ft={class:"tlSheet__blurb"},zt=["datetime"],Gt={key:1,class:"tlSheet__when is-wait"},Mt={key:1,class:"tlSheet__empty"},Bt=J({__name:"OrdersView",setup(f){const _=me(),r=fe(),w=[{title:"همه",key:"ALL"},{title:$.SUSPENDED,key:"SUSPENDED"},{title:$.PLACED,key:"PLACED"},{title:$.ADMIN_APPROVED,key:"ADMIN_APPROVED"},{title:$.SOURCING,key:"SOURCING"},{title:$.PREPARING,key:"PREPARING"},{title:$.DELIVERED_TO_AGENT,key:"DELIVERED_TO_AGENT"},{title:$.DELIVERED_TO_CUSTOMER,key:"DELIVERED_TO_CUSTOMER"},{title:$.CANCELLED,key:"CANCELLED"}],A=k("ALL"),v=k([]),g=k(1),m=k(!0),u=k(!1),S=k(!1),o=k(!1),p=k(void 0),N=k(null);let D=null,I=0;function z(i){p.value=i}async function P(){if(!_.isLoggedIn){v.value=[],m.value=!1;return}if(u.value||!m.value)return;const i=I;u.value=!0,o.value=!1;try{const t=await Se.getMyOrders({page:g.value,status:A.value,q:p.value});if(i!==I)return;const O=t.result??[];v.value=g.value===1?O:[...v.value,...O],O.length<(t.limit??20)?m.value=!1:g.value+=1}catch(t){if(i!==I)return;o.value=!0,m.value=!1,console.log(t)}finally{i===I&&(u.value=!1)}}function G(){v.value=[],g.value=1,m.value=!0,o.value=!1}async function U(){I+=1,u.value=!1,G(),await P()}const d=Ee({model:!1,item:null}),V=k(!1),Z=C(()=>d.item?ee(d.item.status):""),M=C(()=>d.item?F(d.item.status):F("PLACED"));function le(i){if(i.state==="pending")return;const t=F(i.status);return{color:t.font,borderColor:t.font}}function ie(i){return{background:F(i).font}}const K=C(()=>{const i=d.item;if(!i)return[];const t=new Map;for(const h of i.statusEvents??[])t.has(h.toStatus)||t.set(h.toStatus,h.createdAt);if(t.has(i.status)||t.set(i.status,i.createdAt),i.status==="SUSPENDED")return[{status:"SUSPENDED",at:t.get("SUSPENDED")??i.createdAt,state:"current"},...j.map(h=>({status:h,at:null,state:"pending"}))];if(i.status==="CANCELLED")return[...j.filter(x=>t.has(x)).map(x=>({status:x,at:t.get(x)??null,state:"done"})),{status:"CANCELLED",at:t.get("CANCELLED")??i.createdAt,state:"current"}];const O=j.indexOf(i.status),s=O>=0?O:0;return j.map((h,x)=>({status:h,at:t.get(h)??(x===s?i.createdAt:null),state:x{U()}),ye(async()=>{await U(),await be(),typeof IntersectionObserver<"u"&&(D=new IntersectionObserver(i=>{i.some(t=>t.isIntersecting)&&P()}),N.value&&D.observe(N.value))});let H=!1;return ge(()=>{H&&U(),H=!0}),se(()=>D==null?void 0:D.disconnect()),(i,t)=>{const O=we("container");return a(),l("div",ut,[c(De,{title:"سفارشات","back-to":"home"},{below:T(()=>[e("div",dt,[c($e,{onSearch:z,"place-holder":"جستجوی شماره سفارش"}),e("div",ct,[(a(),l(B,null,W(w,s=>e("button",{key:s.key,type:"button",class:X(["ord__chip",{"is-on":A.value===s.key}]),onClick:h=>A.value=s.key},n(s.title),11,_t)),64))])])]),_:1}),c(ke,{spinning:u.value&&!v.value.length,tip:"درحال دریافت اطلاعات"},{default:T(()=>[c(ue,{modelValue:S.value,"onUpdate:modelValue":t[0]||(t[0]=s=>S.value=s),onRefresh:re},{default:T(()=>[c(O,{class:"ord__body"},{default:T(()=>[v.value.length?(a(),l("div",vt,[(a(!0),l(B,null,W(v.value,s=>(a(),q(We,{key:s.id,value:s,onView:oe},null,8,["value"]))),128))])):!u.value&&!o.value?(a(),l("section",pt,[c(E,{icon:"vuesax-linear:box",size:"26"}),t[4]||(t[4]=e("p",null,"سفارشی با این مشخصات پیدا نشد.",-1))])):b("",!0),o.value?(a(),l("section",mt,[c(E,{icon:"vuesax-linear:danger",size:"26"}),t[5]||(t[5]=e("p",null,"دریافت سفارش‌ها با خطا روبه‌رو شد.",-1)),e("button",{type:"button",class:"ord__retry",onClick:U},"تلاش دوباره")])):b("",!0),u.value&&v.value.length?(a(),l("div",ft,"در حال دریافت…")):b("",!0),e("div",{ref_key:"sentinel",ref:N,class:"ord__sentinel"},null,512)]),_:1})]),_:1},8,["modelValue"])]),_:1},8,["spinning"]),d.item?(a(),q(y(te),{key:0,visible:d.model,"onUpdate:visible":t[2]||(t[2]=s=>d.model=s),placement:"bottom",closable:!1,height:"100vh",class:"rtl",bodyStyle:{padding:0,position:"relative"}},{default:T(()=>[e("div",ht,[e("header",yt,[e("button",{type:"button",class:"detail__close","aria-label":"بستن",onClick:ne},[c(E,{icon:"vuesax-linear:arrow-right-1",size:"20"})]),t[6]||(t[6]=e("h2",{class:"detail__title"},"جزئیات سفارش",-1)),e("button",{type:"button",class:"detail__trail","aria-label":"تاریخچه وضعیت",onClick:t[1]||(t[1]=s=>V.value=!0)},[c(E,{icon:"vuesax-linear:clock-1",size:"18"})])]),e("div",bt,[e("section",gt,[e("div",kt,[e("div",St,[t[7]||(t[7]=e("div",{class:"detail__eyebrow"},"شماره سفارش",-1)),e("div",Et,n(d.item.orderNumber),1)]),e("span",{class:"detail__status",style:R({background:M.value.background,color:M.value.font})},n(Z.value),5)]),e("dl",Ct,[e("div",wt,[t[8]||(t[8]=e("dt",null,"تعداد کالاها",-1)),e("dd",null,n(d.item.items.length)+" آیتم",1)]),e("div",Dt,[t[9]||(t[9]=e("dt",null,"وزن سفارش",-1)),e("dd",null,n(parseFloat(d.item.totalGoldWeightGrams).toFixed(2))+" گرم",1)]),parseFloat(d.item.flatRialCharge)>0?(a(),l("div",$t,[t[10]||(t[10]=e("dt",null,"اجرت ریالی",-1)),e("dd",null,n(y(Y)(Math.round(parseFloat(d.item.flatRialCharge))))+" ریال",1)])):b("",!0),e("div",Lt,[t[11]||(t[11]=e("dt",null,"تاریخ سفارش",-1)),e("dd",null,n(y(ae)(d.item.createdAt)),1)])])]),e("section",At,[t[12]||(t[12]=e("h3",{class:"detail__blockTitle"},"آیتم‌های سفارش",-1)),e("div",Nt,[(a(!0),l(B,null,W(d.item.items,s=>(a(),q(rt,{key:s.id,value:s},null,8,["value"]))),128))])])])])]),_:1},8,["visible"])):b("",!0),c(y(te),{visible:V.value,"onUpdate:visible":t[3]||(t[3]=s=>V.value=s),placement:"bottom",closable:!1,zIndex:1100,height:"70%",class:"rtl",bodyStyle:{padding:0}},{default:T(()=>[e("div",It,[t[15]||(t[15]=e("span",{class:"tlSheet__grip","aria-hidden":"true"},null,-1)),e("header",Ot,[t[13]||(t[13]=e("span",{class:"tlSheet__chip"},"وضعیت",-1)),t[14]||(t[14]=e("span",{class:"tlSheet__dash","aria-hidden":"true"},null,-1)),d.item?(a(),l("span",{key:0,class:"tlSheet__badge",style:R({background:M.value.background,color:M.value.font})},[c(E,{icon:"vuesax-linear:tick-circle",size:"14"}),L(" "+n(Z.value),1)],4)):b("",!0)]),K.value.length?(a(),l("ol",xt,[(a(!0),l(B,null,W(K.value,(s,h)=>(a(),l("li",{key:s.status,class:X(["tlSheet__node",[`is-${s.state}`]])},[e("div",Tt,[s.state==="current"?(a(),l("span",{key:0,class:"tlSheet__halo",style:R({color:y(F)(s.status).font})},null,4)):b("",!0),e("span",{class:"tlSheet__marker",style:R(le(s))},[c(E,{icon:y(Ae)(s.status),size:"16"},null,8,["icon"])],4),h$[r.value.status]??r.value.status),v=C(()=>Le[r.value.status]),y=C(()=>{const p=Number(r.value.flatRialCharge);return Number.isFinite(p)&&p>0?p:0});return(p,u)=>{var S,o,m,N;return a(),i("article",{class:"oc",onClick:u[0]||(u[0]=D=>w("view",f.value))},[e("span",{class:"oc__mark",style:P({background:(S=v.value)==null?void 0:S.background,color:(o=v.value)==null?void 0:o.font}),"aria-hidden":"true"},[d(E,{icon:"vuesax-linear:receipt-text",size:"16"})],4),e("div",Oe,[e("div",xe,[e("h3",Te,n(f.value.orderNumber),1),f.value.revisionStatus==="AWAITING_CUSTOMER"?(a(),i("span",Pe," منتظر تأیید ویرایش ")):(a(),i("span",{key:1,class:"oc__status",style:P({background:(m=v.value)==null?void 0:m.background,color:(N=v.value)==null?void 0:N.font})},n(A.value),5))]),e("div",Re,[e("span",Ue,[L(n(f.value.items.length)+" ",1),u[1]||(u[1]=e("i",null,"آیتم",-1))]),e("span",Ve,[L(n(parseFloat(f.value.totalGoldWeightGrams).toFixed(2))+" ",1),u[2]||(u[2]=e("i",null,"گرم",-1))]),y.value>0?(a(),i("span",ze,[L(n(g(se)(y.value))+" ",1),u[3]||(u[3]=e("i",null,"ریال اجرت",-1))])):k("",!0)]),e("div",Fe,[e("span",Ge,n(g(ae)(f.value.createdAt)),1),e("span",Me,[u[4]||(u[4]=L(" جزئیات ",-1)),d(E,{icon:"vuesax-linear:arrow-left-2",size:"14"})])])])])}}}),We=Q(Be,[["__scopeId","data-v-a37d1f3f"]]);function je(f){var r,w;const _=f.productVariant;if(_)return{productTitle:_.product.title,variantTitle:_.title,imageUrl:((r=_.image)==null?void 0:r.url)??((w=_.product.images[0])==null?void 0:w.url)}}const qe={class:"oi"},Ke=["aria-label"],Je=["alt"],Qe={key:1,class:"oi__art","aria-hidden":"true"},Ye={class:"oi__artEmpty"},Ze={class:"oi__main"},He={class:"oi__head"},Xe={class:"oi__title"},et={key:0,class:"oi__variant"},tt={class:"oi__chips"},st={class:"oi__chip"},at={class:"oi__chip"},lt={class:"oi__chip"},it={key:0,class:"oi__chip oi__chip--accent"},ot=["src","alt"],nt=J({__name:"OrderItemCard",props:{value:{}},setup(f){const _=f,r=C(()=>je(_.value)),w=C(()=>{const o=Number(_.value.flatRialCharge);return Number.isFinite(o)&&o>0?o:0}),A=C(()=>{const o=parseFloat(String(_.value.computedWeightGrams));return Number.isFinite(o)?o.toFixed(2):String(_.value.computedWeightGrams)}),v=C(()=>{const o=parseFloat(String(_.value.wagePercentSnapshot));return Number.isFinite(o)?o%1===0?String(o):o.toFixed(2):String(_.value.wagePercentSnapshot)}),y=b(!1);let p=!1;function u(){var o;(o=r.value)!=null&&o.imageUrl&&(y.value=!0,document.documentElement.style.overflow!=="hidden"&&(document.body.style.overflow="hidden",p=!0))}function S(){y.value=!1,p&&(document.body.style.overflow=""),p=!1}return te(S),(o,m)=>{var D,I,F,R;const N=ce("lazy");return a(),i("article",qe,[(D=r.value)!=null&&D.imageUrl?(a(),i("button",{key:0,type:"button",class:"oi__art oi__art--preview","aria-label":`پیش‌نمایش ${r.value.productTitle??"تصویر"}`,onClick:u},[de(e("img",{alt:((I=r.value)==null?void 0:I.productTitle)??""},null,8,Je),[[N,r.value.imageUrl]])],8,Ke)):(a(),i("div",Qe,[e("div",Ye,[d(E,{icon:"vuesax-linear:diamonds",size:"22"})])])),e("div",Ze,[e("div",He,[e("h4",Xe,n(((F=r.value)==null?void 0:F.productTitle)??"محصول"),1),(R=r.value)!=null&&R.variantTitle?(a(),i("span",et,n(r.value.variantTitle),1)):k("",!0)]),e("div",tt,[e("span",st,[e("b",null,n(f.value.quantity),1),m[0]||(m[0]=L(" عدد ",-1))]),e("span",at,[e("b",null,n(A.value),1),m[1]||(m[1]=L(" گرم ",-1))]),e("span",lt,[e("b",null,n(v.value),1),m[2]||(m[2]=L(" ٪ اجرت ",-1))]),w.value>0?(a(),i("span",it,[e("b",null,n(g(se)(w.value)),1),m[3]||(m[3]=L(" ریال ",-1))])):k("",!0)])]),(a(),q(_e,{to:"body"},[d(me,{name:"oi-preview"},{default:T(()=>{var G;return[y.value&&((G=r.value)!=null&&G.imageUrl)?(a(),i("div",{key:0,class:"oi__preview",role:"dialog","aria-modal":"true","aria-label":"پیش‌نمایش تصویر",onClick:ve(S,["self"])},[e("button",{type:"button",class:"oi__previewClose","aria-label":"بستن",onClick:S},[d(E,{icon:"vuesax-linear:add",size:"20"})]),e("img",{class:"oi__previewImg",src:r.value.imageUrl,alt:r.value.productTitle??"",draggable:"false"},null,8,ot)])):k("",!0)]}),_:1})]))])}}}),rt=Q(nt,[["__scopeId","data-v-f788cd63"]]),ut={class:"ord"},ct={class:"ord__barExtra"},dt={class:"ord__chips no-scrollbar"},_t=["onClick"],vt={key:0,class:"ord__list"},mt={key:1,class:"ord__empty"},pt={key:2,class:"ord__empty"},ft={key:3,class:"ord__more"},ht={class:"detail"},yt={class:"detail__bar"},bt={class:"detail__scroll"},gt={class:"detail__block"},kt={class:"detail__headline"},St={class:"detail__idBlock"},Et={class:"detail__number"},Ct={class:"detail__specs"},wt={class:"detail__spec"},Dt={class:"detail__spec"},$t={class:"detail__spec"},Lt={class:"detail__block"},At={class:"detail__items"},Nt={class:"tlSheet"},It={class:"tlSheet__banner"},Ot={key:0,class:"tlSheet__rail"},xt={class:"tlSheet__axis","aria-hidden":"true"},Tt={class:"tlSheet__main"},Pt={class:"tlSheet__row"},Rt={class:"tlSheet__copy"},Ut={class:"tlSheet__status"},Vt={class:"tlSheet__blurb"},zt=["datetime"],Ft={key:1,class:"tlSheet__when is-wait"},Gt={key:1,class:"tlSheet__empty"},Mt=J({__name:"OrdersView",setup(f){const _=pe(),r=fe(),w=[{title:"همه",key:"ALL"},{title:$.SUSPENDED,key:"SUSPENDED"},{title:$.PLACED,key:"PLACED"},{title:$.ADMIN_APPROVED,key:"ADMIN_APPROVED"},{title:$.SOURCING,key:"SOURCING"},{title:$.PREPARING,key:"PREPARING"},{title:$.DELIVERED_TO_AGENT,key:"DELIVERED_TO_AGENT"},{title:$.DELIVERED_TO_CUSTOMER,key:"DELIVERED_TO_CUSTOMER"},{title:$.CANCELLED,key:"CANCELLED"}],A=b("ALL"),v=b([]),y=b(1),p=b(!0),u=b(!1),S=b(!1),o=b(!1),m=b(void 0),N=b(null);let D=null,I=0;function F(l){m.value=l}async function R(){if(!_.isLoggedIn){v.value=[],p.value=!1;return}if(u.value||!p.value)return;const l=I;u.value=!0,o.value=!1;try{const t=await Se.getMyOrders({page:y.value,status:A.value,q:m.value});if(l!==I)return;const O=t.result??[];v.value=y.value===1?O:[...v.value,...O],O.length<(t.limit??20)?p.value=!1:y.value+=1}catch(t){if(l!==I)return;o.value=!0,p.value=!1,console.log(t)}finally{l===I&&(u.value=!1)}}function G(){v.value=[],y.value=1,p.value=!0,o.value=!1}async function U(){I+=1,u.value=!1,G(),await R()}const c=Ee({model:!1,item:null}),V=b(!1),Y=C(()=>c.item?X(c.item.status):""),M=C(()=>c.item?z(c.item.status):z("PLACED"));function le(l){if(l.state==="pending")return;const t=z(l.status);return{color:t.font,borderColor:t.font}}function ie(l){return{background:z(l).font}}const K=C(()=>{const l=c.item;if(!l)return[];const t=new Map;for(const h of l.statusEvents??[])t.has(h.toStatus)||t.set(h.toStatus,h.createdAt);if(t.has(l.status)||t.set(l.status,l.createdAt),l.status==="SUSPENDED")return[{status:"SUSPENDED",at:t.get("SUSPENDED")??l.createdAt,state:"current"},...j.map(h=>({status:h,at:null,state:"pending"}))];if(l.status==="CANCELLED")return[...j.filter(x=>t.has(x)).map(x=>({status:x,at:t.get(x)??null,state:"done"})),{status:"CANCELLED",at:t.get("CANCELLED")??l.createdAt,state:"current"}];const O=j.indexOf(l.status),s=O>=0?O:0;return j.map((h,x)=>({status:h,at:t.get(h)??(x===s?l.createdAt:null),state:x{U()}),ye(async()=>{await U(),await be(),typeof IntersectionObserver<"u"&&(D=new IntersectionObserver(l=>{l.some(t=>t.isIntersecting)&&R()}),N.value&&D.observe(N.value))});let Z=!1;return ge(()=>{Z&&U(),Z=!0}),te(()=>D==null?void 0:D.disconnect()),(l,t)=>{const O=we("container");return a(),i("div",ut,[d(De,{title:"سفارشات","back-to":"home"},{below:T(()=>[e("div",ct,[d($e,{onSearch:F,"place-holder":"جستجوی شماره سفارش"}),e("div",dt,[(a(),i(B,null,W(w,s=>e("button",{key:s.key,type:"button",class:H(["ord__chip",{"is-on":A.value===s.key}]),onClick:h=>A.value=s.key},n(s.title),11,_t)),64))])])]),_:1}),d(ke,{spinning:u.value&&!v.value.length,tip:"درحال دریافت اطلاعات"},{default:T(()=>[d(ue,{modelValue:S.value,"onUpdate:modelValue":t[0]||(t[0]=s=>S.value=s),onRefresh:re},{default:T(()=>[d(O,{class:"ord__body"},{default:T(()=>[v.value.length?(a(),i("div",vt,[(a(!0),i(B,null,W(v.value,s=>(a(),q(We,{key:s.id,value:s,onView:oe},null,8,["value"]))),128))])):!u.value&&!o.value?(a(),i("section",mt,[d(E,{icon:"vuesax-linear:box",size:"26"}),t[4]||(t[4]=e("p",null,"سفارشی با این مشخصات پیدا نشد.",-1))])):k("",!0),o.value?(a(),i("section",pt,[d(E,{icon:"vuesax-linear:danger",size:"26"}),t[5]||(t[5]=e("p",null,"دریافت سفارش‌ها با خطا روبه‌رو شد.",-1)),e("button",{type:"button",class:"ord__retry",onClick:U},"تلاش دوباره")])):k("",!0),u.value&&v.value.length?(a(),i("div",ft,"در حال دریافت…")):k("",!0),e("div",{ref_key:"sentinel",ref:N,class:"ord__sentinel"},null,512)]),_:1})]),_:1},8,["modelValue"])]),_:1},8,["spinning"]),c.item?(a(),q(g(ee),{key:0,visible:c.model,"onUpdate:visible":t[2]||(t[2]=s=>c.model=s),placement:"bottom",closable:!1,height:"100vh",class:"rtl",bodyStyle:{padding:0,position:"relative"}},{default:T(()=>[e("div",ht,[e("header",yt,[e("button",{type:"button",class:"detail__close","aria-label":"بستن",onClick:ne},[d(E,{icon:"vuesax-linear:arrow-right-1",size:"20"})]),t[6]||(t[6]=e("h2",{class:"detail__title"},"جزئیات سفارش",-1)),e("button",{type:"button",class:"detail__trail","aria-label":"تاریخچه وضعیت",onClick:t[1]||(t[1]=s=>V.value=!0)},[d(E,{icon:"vuesax-linear:clock-1",size:"18"})])]),e("div",bt,[e("section",gt,[e("div",kt,[e("div",St,[t[7]||(t[7]=e("div",{class:"detail__eyebrow"},"شماره سفارش",-1)),e("div",Et,n(c.item.orderNumber),1)]),e("span",{class:"detail__status",style:P({background:M.value.background,color:M.value.font})},n(Y.value),5)]),e("dl",Ct,[e("div",wt,[t[8]||(t[8]=e("dt",null,"تعداد کالاها",-1)),e("dd",null,n(c.item.items.length)+" آیتم",1)]),e("div",Dt,[t[9]||(t[9]=e("dt",null,"وزن سفارش",-1)),e("dd",null,n(parseFloat(c.item.totalGoldWeightGrams).toFixed(2))+" گرم",1)]),e("div",$t,[t[10]||(t[10]=e("dt",null,"تاریخ سفارش",-1)),e("dd",null,n(g(ae)(c.item.createdAt)),1)])])]),e("section",Lt,[t[11]||(t[11]=e("h3",{class:"detail__blockTitle"},"آیتم‌های سفارش",-1)),e("div",At,[(a(!0),i(B,null,W(c.item.items,s=>(a(),q(rt,{key:s.id,value:s},null,8,["value"]))),128))])])])])]),_:1},8,["visible"])):k("",!0),d(g(ee),{visible:V.value,"onUpdate:visible":t[3]||(t[3]=s=>V.value=s),placement:"bottom",closable:!1,zIndex:1100,height:"70%",class:"rtl",bodyStyle:{padding:0}},{default:T(()=>[e("div",Nt,[t[14]||(t[14]=e("span",{class:"tlSheet__grip","aria-hidden":"true"},null,-1)),e("header",It,[t[12]||(t[12]=e("span",{class:"tlSheet__chip"},"وضعیت",-1)),t[13]||(t[13]=e("span",{class:"tlSheet__dash","aria-hidden":"true"},null,-1)),c.item?(a(),i("span",{key:0,class:"tlSheet__badge",style:P({background:M.value.background,color:M.value.font})},[d(E,{icon:"vuesax-linear:tick-circle",size:"14"}),L(" "+n(Y.value),1)],4)):k("",!0)]),K.value.length?(a(),i("ol",Ot,[(a(!0),i(B,null,W(K.value,(s,h)=>(a(),i("li",{key:s.status,class:H(["tlSheet__node",[`is-${s.state}`]])},[e("div",xt,[s.state==="current"?(a(),i("span",{key:0,class:"tlSheet__halo",style:P({color:g(z)(s.status).font})},null,4)):k("",!0),e("span",{class:"tlSheet__marker",style:P(le(s))},[d(E,{icon:g(Ae)(s.status),size:"16"},null,8,["icon"])],4),h(o(),t("header",m,[a("div",B,[e.back?(o(),t("button",{key:0,type:"button",class:"bar__btn","aria-label":"بازگشت",onClick:_},[b(p,{icon:"vuesax-linear:arrow-right-1",size:"20"})])):(o(),t("span",g)),a("h1",v,k(e.title),1),a("div",y,[i(n.$slots,"trailing",{},()=>[c[0]||(c[0]=a("span",{class:"bar__spacer","aria-hidden":"true"},null,-1))],!0)])]),i(n.$slots,"below",{},void 0,!0)]))}}),x=f(N,[["__scopeId","data-v-52b447ce"]]);export{x as P}; +import{d as u,bp as d,f as t,g as a,x as b,I as p,t as k,S as i,e as o,N as h,_ as f}from"./index-B-RmZRr2.js";const m={class:"bar"},B={class:"bar__inner"},g={key:1,class:"bar__spacer","aria-hidden":"true"},v={class:"bar__title"},y={class:"bar__trailing"},N=u({__name:"PageBar",props:{title:{},back:{type:Boolean,default:!0},backTo:{}},setup(e){const r=e,s=h(),l=d();function _(){if(l.canGoBack){s.back();return}if(r.backTo){s.push({name:r.backTo});return}s.push({name:"home"})}return(n,c)=>(o(),t("header",m,[a("div",B,[e.back?(o(),t("button",{key:0,type:"button",class:"bar__btn","aria-label":"بازگشت",onClick:_},[b(p,{icon:"vuesax-linear:arrow-right-1",size:"20"})])):(o(),t("span",g)),a("h1",v,k(e.title),1),a("div",y,[i(n.$slots,"trailing",{},()=>[c[0]||(c[0]=a("span",{class:"bar__spacer","aria-hidden":"true"},null,-1))],!0)])]),i(n.$slots,"below",{},void 0,!0)]))}}),x=f(N,[["__scopeId","data-v-52b447ce"]]);export{x as P}; diff --git a/apps/user-app/dist/assets/ProductCard-k7xfI-K2.js b/apps/user-app/dist/assets/ProductCard-AevItfr3.js similarity index 96% rename from apps/user-app/dist/assets/ProductCard-k7xfI-K2.js rename to apps/user-app/dist/assets/ProductCard-AevItfr3.js index d80f5c3..9d9594f 100644 --- a/apps/user-app/dist/assets/ProductCard-k7xfI-K2.js +++ b/apps/user-app/dist/assets/ProductCard-AevItfr3.js @@ -1 +1 @@ -import{d as D,l as I,m as N,p as S,e as s,f as t,i as m,g as a,q as e,v as V,x as y,I as k,y as q,h as d,t as n,F as E,r as L,j as x,k as $,z as j,_ as M}from"./index-BFOyCNFT.js";const O={class:"pc__art"},A=["alt"],G={key:1,class:"pc__artEmpty","aria-hidden":"true"},H=["aria-label"],J={key:2,class:"pc__flag"},K={key:3,class:"pc__flag pc__flag--soft"},Q={class:"pc__body"},R={class:"pc__title"},T={key:0,class:"pc__tags"},U={class:"pc__meta"},W={class:"pc__weight"},X={key:0,class:"pc__wage"},Y=D({__name:"ProductCard",props:{value:{},size:{}},setup(r){const l=r,i=I(),{image:u,id:c,title:p,min_gram:z,wage:v,is_exist:w,qty:C,isPreOrder:F}=N(l.value),g=x(()=>(l.value.tags??[]).filter(Boolean)),f=$(null);function b(){j(l.value,f.value)}const P=x(()=>{const o=v.value;return o==null?"":o%1===0?String(o):o.toFixed(2)});return(o,h)=>{const B=S("lazy");return s(),t("article",{ref_key:"root",ref:f,class:m(["pc",r.size?`pc--${r.size}`:null]),"data-product-origin":"",onClick:b},[a("div",O,[e(u)?V((s(),t("img",{key:0,alt:e(p)},null,8,A)),[[B,e(u)]]):(s(),t("div",G,[y(k,{icon:"vuesax-linear:diamonds",size:"26"})])),a("button",{type:"button",class:m(["pc__fav",{"is-on":e(i).isFavorite(e(c))}]),"aria-label":e(i).isFavorite(e(c))?"حذف از علاقه‌مندی":"افزودن به علاقه‌مندی",onClick:h[0]||(h[0]=q(_=>e(i).toggle(e(c)),["stop"]))},[y(k,{icon:e(i).isFavorite(e(c))?"vuesax-linear:heart-fill":"vuesax-linear:heart",size:"16"},null,8,["icon"])],10,H),e(w)?e(F)&&e(C)===0?(s(),t("span",K,"پیش‌سفارش")):d("",!0):(s(),t("span",J,"ناموجود"))]),a("div",Q,[a("h3",R,n(e(p)),1),g.value.length?(s(),t("div",T,[(s(!0),t(E,null,L(g.value,_=>(s(),t("span",{key:_,class:"pc__tag"},n(_),1))),128))])):d("",!0),a("div",U,[a("span",W,n(e(z))+" گرم",1),e(v)!=null?(s(),t("span",X,"اجرت "+n(P.value)+"٪",1)):d("",!0)])])],2)}}}),ee=M(Y,[["__scopeId","data-v-a971cd21"]]);export{ee as P}; +import{d as D,l as I,m as N,p as S,e as s,f as t,i as m,g as a,q as e,v as V,x as y,I as k,y as q,h as d,t as n,F as E,r as L,j as x,k as $,z as j,_ as M}from"./index-B-RmZRr2.js";const O={class:"pc__art"},A=["alt"],G={key:1,class:"pc__artEmpty","aria-hidden":"true"},H=["aria-label"],J={key:2,class:"pc__flag"},K={key:3,class:"pc__flag pc__flag--soft"},Q={class:"pc__body"},R={class:"pc__title"},T={key:0,class:"pc__tags"},U={class:"pc__meta"},W={class:"pc__weight"},X={key:0,class:"pc__wage"},Y=D({__name:"ProductCard",props:{value:{},size:{}},setup(r){const l=r,i=I(),{image:u,id:c,title:p,min_gram:z,wage:v,is_exist:w,qty:C,isPreOrder:F}=N(l.value),g=x(()=>(l.value.tags??[]).filter(Boolean)),f=$(null);function b(){j(l.value,f.value)}const P=x(()=>{const o=v.value;return o==null?"":o%1===0?String(o):o.toFixed(2)});return(o,h)=>{const B=S("lazy");return s(),t("article",{ref_key:"root",ref:f,class:m(["pc",r.size?`pc--${r.size}`:null]),"data-product-origin":"",onClick:b},[a("div",O,[e(u)?V((s(),t("img",{key:0,alt:e(p)},null,8,A)),[[B,e(u)]]):(s(),t("div",G,[y(k,{icon:"vuesax-linear:diamonds",size:"26"})])),a("button",{type:"button",class:m(["pc__fav",{"is-on":e(i).isFavorite(e(c))}]),"aria-label":e(i).isFavorite(e(c))?"حذف از علاقه‌مندی":"افزودن به علاقه‌مندی",onClick:h[0]||(h[0]=q(_=>e(i).toggle(e(c)),["stop"]))},[y(k,{icon:e(i).isFavorite(e(c))?"vuesax-linear:heart-fill":"vuesax-linear:heart",size:"16"},null,8,["icon"])],10,H),e(w)?e(F)&&e(C)===0?(s(),t("span",K,"پیش‌سفارش")):d("",!0):(s(),t("span",J,"ناموجود"))]),a("div",Q,[a("h3",R,n(e(p)),1),g.value.length?(s(),t("div",T,[(s(!0),t(E,null,L(g.value,_=>(s(),t("span",{key:_,class:"pc__tag"},n(_),1))),128))])):d("",!0),a("div",U,[a("span",W,n(e(z))+" گرم",1),e(v)!=null?(s(),t("span",X,"اجرت "+n(P.value)+"٪",1)):d("",!0)])])],2)}}}),ee=M(Y,[["__scopeId","data-v-a971cd21"]]);export{ee as P}; diff --git a/apps/user-app/dist/assets/ProfileView-CpqOGnPs.js b/apps/user-app/dist/assets/ProfileView-wOkrkPJE.js similarity index 95% rename from apps/user-app/dist/assets/ProfileView-CpqOGnPs.js rename to apps/user-app/dist/assets/ProfileView-wOkrkPJE.js index 3c0879e..e9c1fe7 100644 --- a/apps/user-app/dist/assets/ProfileView-CpqOGnPs.js +++ b/apps/user-app/dist/assets/ProfileView-wOkrkPJE.js @@ -1 +1 @@ -import{d as L,G as w,H as M,k as _,K as k,o as F,f as n,x as r,J as $,M as O,e as i,g as e,I as g,t as a,h as c,i as v,W as T,q as U,j as m,N as z,_ as W}from"./index-BFOyCNFT.js";import{P as A}from"./PageBar-Cz1N2fdD.js";import{S}from"./SectionHead-Cg_UnoI8.js";const H={class:"prof"},J={class:"prof__identity"},K={class:"prof__avatar","aria-hidden":"true"},j={class:"prof__name"},q={key:0,class:"prof__mobile"},G={key:0,class:"prof__block"},Y={class:"prof__specs"},Q={class:"prof__spec"},X={class:"prof__spec"},Z={class:"prof__spec"},ee={class:"prof__spec"},se={key:1,class:"prof__block"},te={class:"prof__specs"},oe={class:"prof__spec"},le={class:"prof__spec"},ae={key:2,class:"prof__block"},ne={key:3,class:"prof__empty"},ie=L({__name:"ProfileView",setup(re){const b={UNVERIFIED:"احراز نشده",STEP_ONE_SUBMITTED:"مرحله اول ثبت شده",STEP_TWO_SUBMITTED:"مرحله دوم ثبت شده",VERIFIED:"تایید شده",REJECTED:"رد شده"},h=w(),d=M(),o=_(d.peek(k.profile)??null),p=_(!1),C=m(()=>{var s;return((s=o.value)==null?void 0:s.verificationStep)==="VERIFIED"}),R=m(()=>{var t;const s=(t=o.value)==null?void 0:t.verificationStep;return!!s&&s!=="VERIFIED"&&s!=="STEP_TWO_SUBMITTED"}),V=z(),l=_(d.peek(k.balance)??null),f=_(!1),u=s=>Number(s??0),E=s=>u(s)>0?"بدهکار":u(s)<0?"بستانکار":"",I=s=>u(s)>0?"is-debt":u(s)<0?"is-credit":"",B=s=>`${Math.abs(u(s)).toLocaleString("fa-IR",{maximumFractionDigits:3})} گرم`,D=s=>`${Math.abs(u(s)).toLocaleString("fa-IR")} ریال`,N=m(()=>{const s=l.value;if(!(s!=null&&s.at))return"";const t=new Date(s.at).toLocaleString("fa-IR",{dateStyle:"short",timeStyle:"short"});return s.source==="stored"?`آخرین مانده‌ی ثبت‌شده — ${t}`:`از ${s.provider??"حسابداری"} — ${t}`});async function P(){f.value=!l.value;try{l.value=await d.accountingBalance({force:!0})}catch{l.value=null}finally{f.value=!1}}return F(async()=>{if(h.isLoggedIn){P(),p.value=!o.value;try{o.value=await d.me({force:!0})}finally{p.value=!1}}}),(s,t)=>{const x=O("container");return i(),n("div",H,[r(A,{title:"اطلاعات کاربری","back-to":"userPage::hasSubRoute"}),r(x,{class:"prof__body"},{default:$(()=>{var y;return[e("section",J,[e("div",K,[r(g,{icon:"vuesax-linear:user",size:"30"})]),e("h2",j,a(((y=o.value)==null?void 0:y.fullName)??"—"),1),o.value?(i(),n("p",q,a(o.value.mobile),1)):c("",!0),o.value?(i(),n("span",{key:1,class:v(["prof__seal",C.value?"is-ok":"is-pending"])},a(b[o.value.verificationStep]??o.value.verificationStep),3)):c("",!0)]),o.value?(i(),n("section",G,[r(S,{title:"مشخصات",subtitle:"اطلاعات ثبت‌شده حساب شما"}),e("dl",Y,[e("div",Q,[t[1]||(t[1]=e("dt",null,"نام و نام خانوادگی",-1)),e("dd",null,a(o.value.fullName),1)]),e("div",X,[t[2]||(t[2]=e("dt",null,"تلفن همراه",-1)),e("dd",null,a(o.value.mobile),1)]),e("div",Z,[t[3]||(t[3]=e("dt",null,"کد ملی",-1)),e("dd",null,a(o.value.nationalCode||"-"),1)]),e("div",ee,[t[4]||(t[4]=e("dt",null,"وضعیت احراز هویت",-1)),e("dd",null,a(b[o.value.verificationStep]??o.value.verificationStep),1)])])])):c("",!0),l.value&&l.value.source!=="none"?(i(),n("section",se,[r(S,{title:"مانده‌ی حساب",subtitle:N.value},null,8,["subtitle"]),e("dl",te,[e("div",oe,[t[5]||(t[5]=e("dt",null,"مانده‌ی طلا",-1)),e("dd",{class:v(I(l.value.gold))},[T(a(B(l.value.gold))+" ",1),e("small",null,a(E(l.value.gold)),1)],2)]),e("div",le,[t[6]||(t[6]=e("dt",null,"مانده‌ی ریالی",-1)),e("dd",{class:v(I(l.value.rial))},[T(a(D(l.value.rial))+" ",1),e("small",null,a(E(l.value.rial)),1)],2)])])])):f.value?(i(),n("section",ae,[r(S,{title:"مانده‌ی حساب",subtitle:"در حال دریافت از حسابداری…"}),t[7]||(t[7]=e("div",{class:"prof__specs prof__skeleton"},null,-1))])):p.value?c("",!0):(i(),n("section",ne,[r(g,{icon:"vuesax-linear:user",size:"26"}),t[8]||(t[8]=e("p",null,"اطلاعات حساب در دسترس نیست.",-1))])),R.value?(i(),n("button",{key:4,type:"button",class:"prof__complete",onClick:t[0]||(t[0]=ue=>U(V).push({name:"completeProfile"}))}," تکمیل پروفایل ")):c("",!0)]}),_:1})])}}}),pe=W(ie,[["__scopeId","data-v-25e2c773"]]);export{pe as default}; +import{d as L,G as w,H as M,k as _,K as k,o as F,f as n,x as r,J as $,M as O,e as i,g as e,I as g,t as a,h as c,i as v,W as T,q as U,j as m,N as z,_ as W}from"./index-B-RmZRr2.js";import{P as A}from"./PageBar-DmOKrVEQ.js";import{S}from"./SectionHead-CJoa_aGh.js";const H={class:"prof"},J={class:"prof__identity"},K={class:"prof__avatar","aria-hidden":"true"},j={class:"prof__name"},q={key:0,class:"prof__mobile"},G={key:0,class:"prof__block"},Y={class:"prof__specs"},Q={class:"prof__spec"},X={class:"prof__spec"},Z={class:"prof__spec"},ee={class:"prof__spec"},se={key:1,class:"prof__block"},te={class:"prof__specs"},oe={class:"prof__spec"},le={class:"prof__spec"},ae={key:2,class:"prof__block"},ne={key:3,class:"prof__empty"},ie=L({__name:"ProfileView",setup(re){const b={UNVERIFIED:"احراز نشده",STEP_ONE_SUBMITTED:"مرحله اول ثبت شده",STEP_TWO_SUBMITTED:"مرحله دوم ثبت شده",VERIFIED:"تایید شده",REJECTED:"رد شده"},h=w(),d=M(),o=_(d.peek(k.profile)??null),p=_(!1),C=m(()=>{var s;return((s=o.value)==null?void 0:s.verificationStep)==="VERIFIED"}),R=m(()=>{var t;const s=(t=o.value)==null?void 0:t.verificationStep;return!!s&&s!=="VERIFIED"&&s!=="STEP_TWO_SUBMITTED"}),V=z(),l=_(d.peek(k.balance)??null),f=_(!1),u=s=>Number(s??0),E=s=>u(s)>0?"بدهکار":u(s)<0?"بستانکار":"",I=s=>u(s)>0?"is-debt":u(s)<0?"is-credit":"",B=s=>`${Math.abs(u(s)).toLocaleString("fa-IR",{maximumFractionDigits:3})} گرم`,D=s=>`${Math.abs(u(s)).toLocaleString("fa-IR")} ریال`,N=m(()=>{const s=l.value;if(!(s!=null&&s.at))return"";const t=new Date(s.at).toLocaleString("fa-IR",{dateStyle:"short",timeStyle:"short"});return s.source==="stored"?`آخرین مانده‌ی ثبت‌شده — ${t}`:`از ${s.provider??"حسابداری"} — ${t}`});async function P(){f.value=!l.value;try{l.value=await d.accountingBalance({force:!0})}catch{l.value=null}finally{f.value=!1}}return F(async()=>{if(h.isLoggedIn){P(),p.value=!o.value;try{o.value=await d.me({force:!0})}finally{p.value=!1}}}),(s,t)=>{const x=O("container");return i(),n("div",H,[r(A,{title:"اطلاعات کاربری","back-to":"userPage::hasSubRoute"}),r(x,{class:"prof__body"},{default:$(()=>{var y;return[e("section",J,[e("div",K,[r(g,{icon:"vuesax-linear:user",size:"30"})]),e("h2",j,a(((y=o.value)==null?void 0:y.fullName)??"—"),1),o.value?(i(),n("p",q,a(o.value.mobile),1)):c("",!0),o.value?(i(),n("span",{key:1,class:v(["prof__seal",C.value?"is-ok":"is-pending"])},a(b[o.value.verificationStep]??o.value.verificationStep),3)):c("",!0)]),o.value?(i(),n("section",G,[r(S,{title:"مشخصات",subtitle:"اطلاعات ثبت‌شده حساب شما"}),e("dl",Y,[e("div",Q,[t[1]||(t[1]=e("dt",null,"نام و نام خانوادگی",-1)),e("dd",null,a(o.value.fullName),1)]),e("div",X,[t[2]||(t[2]=e("dt",null,"تلفن همراه",-1)),e("dd",null,a(o.value.mobile),1)]),e("div",Z,[t[3]||(t[3]=e("dt",null,"کد ملی",-1)),e("dd",null,a(o.value.nationalCode||"-"),1)]),e("div",ee,[t[4]||(t[4]=e("dt",null,"وضعیت احراز هویت",-1)),e("dd",null,a(b[o.value.verificationStep]??o.value.verificationStep),1)])])])):c("",!0),l.value&&l.value.source!=="none"?(i(),n("section",se,[r(S,{title:"مانده‌ی حساب",subtitle:N.value},null,8,["subtitle"]),e("dl",te,[e("div",oe,[t[5]||(t[5]=e("dt",null,"مانده‌ی طلا",-1)),e("dd",{class:v(I(l.value.gold))},[T(a(B(l.value.gold))+" ",1),e("small",null,a(E(l.value.gold)),1)],2)]),e("div",le,[t[6]||(t[6]=e("dt",null,"مانده‌ی ریالی",-1)),e("dd",{class:v(I(l.value.rial))},[T(a(D(l.value.rial))+" ",1),e("small",null,a(E(l.value.rial)),1)],2)])])])):f.value?(i(),n("section",ae,[r(S,{title:"مانده‌ی حساب",subtitle:"در حال دریافت از حسابداری…"}),t[7]||(t[7]=e("div",{class:"prof__specs prof__skeleton"},null,-1))])):p.value?c("",!0):(i(),n("section",ne,[r(g,{icon:"vuesax-linear:user",size:"26"}),t[8]||(t[8]=e("p",null,"اطلاعات حساب در دسترس نیست.",-1))])),R.value?(i(),n("button",{key:4,type:"button",class:"prof__complete",onClick:t[0]||(t[0]=ue=>U(V).push({name:"completeProfile"}))}," تکمیل پروفایل ")):c("",!0)]}),_:1})])}}}),pe=W(ie,[["__scopeId","data-v-25e2c773"]]);export{pe as default}; diff --git a/apps/user-app/dist/assets/RateStrip-ljKA-iPt.js b/apps/user-app/dist/assets/RateStrip-D4hWdTta.js similarity index 86% rename from apps/user-app/dist/assets/RateStrip-ljKA-iPt.js rename to apps/user-app/dist/assets/RateStrip-D4hWdTta.js index 01763b0..4a8011a 100644 --- a/apps/user-app/dist/assets/RateStrip-ljKA-iPt.js +++ b/apps/user-app/dist/assets/RateStrip-D4hWdTta.js @@ -1 +1 @@ -import{p as c,j as d}from"./filters-sld47Iy-.js";import{d as _,e as s,f as a,i as l,g as r,W as u,t as i,q as n,h as m,j as v,_ as q}from"./index-BFOyCNFT.js";const f={key:0,class:"rate-strip__value"},k={class:"rate-strip__num"},y={key:1,class:"rate-strip__value rate-strip__value--muted"},x={key:2,class:"rate-strip__time"},R=_({__name:"RateStrip",props:{quote:{}},setup(t){const o=t,p=v(()=>o.quote?o.quote.pricePerGramRial.split(".")[0]:"");return(h,e)=>(s(),a("div",{class:l(["rate-strip",{"is-empty":!t.quote}])},[e[1]||(e[1]=r("div",{class:"rate-strip__label"},[r("span",{class:"rate-strip__dot","aria-hidden":"true"}),u(" نرخ طلای ۱۸ عیار ")],-1)),t.quote?(s(),a("div",f,[r("span",k,i(n(c)(p.value)),1),e[0]||(e[0]=r("span",{class:"rate-strip__unit"},"ریال / گرم",-1))])):(s(),a("div",y,"در انتظار اعلام نرخ")),t.quote?(s(),a("div",x,i(n(d)(t.quote.quotedAt)),1)):m("",!0)],2))}}),C=q(R,[["__scopeId","data-v-19b94e39"]]);export{C as R}; +import{p as c,j as d}from"./filters-BLs90kiz.js";import{d as _,e as s,f as a,i as l,g as r,W as u,t as i,q as n,h as m,j as v,_ as q}from"./index-B-RmZRr2.js";const f={key:0,class:"rate-strip__value"},k={class:"rate-strip__num"},y={key:1,class:"rate-strip__value rate-strip__value--muted"},x={key:2,class:"rate-strip__time"},R=_({__name:"RateStrip",props:{quote:{}},setup(t){const o=t,p=v(()=>o.quote?o.quote.pricePerGramRial.split(".")[0]:"");return(h,e)=>(s(),a("div",{class:l(["rate-strip",{"is-empty":!t.quote}])},[e[1]||(e[1]=r("div",{class:"rate-strip__label"},[r("span",{class:"rate-strip__dot","aria-hidden":"true"}),u(" نرخ طلای ۱۸ عیار ")],-1)),t.quote?(s(),a("div",f,[r("span",k,i(n(c)(p.value)),1),e[0]||(e[0]=r("span",{class:"rate-strip__unit"},"ریال / گرم",-1))])):(s(),a("div",y,"در انتظار اعلام نرخ")),t.quote?(s(),a("div",x,i(n(d)(t.quote.quotedAt)),1)):m("",!0)],2))}}),C=q(R,[["__scopeId","data-v-19b94e39"]]);export{C as R}; diff --git a/apps/user-app/dist/assets/ReportView-dGzBNYXh.js b/apps/user-app/dist/assets/ReportView-BU1YURL5.js similarity index 96% rename from apps/user-app/dist/assets/ReportView-dGzBNYXh.js rename to apps/user-app/dist/assets/ReportView-BU1YURL5.js index cc2d99f..e581215 100644 --- a/apps/user-app/dist/assets/ReportView-dGzBNYXh.js +++ b/apps/user-app/dist/assets/ReportView-BU1YURL5.js @@ -1 +1 @@ -import{d as E,e as n,f as a,g as t,W as R,t as i,q as N,h as r,_ as q,k as u,o as H,c as Q,x as m,J as y,T as L,a1 as X,D as M,i as D,F as w,r as P,I as B,M as Y,O as U}from"./index-BFOyCNFT.js";import{A as Z}from"./AppPullRefresh-CsuQ3Y8x.js";import{P as tt}from"./PageBar-Cz1N2fdD.js";import{j as A,p as J}from"./filters-sld47Iy-.js";import{D as et}from"./index-BgbR-bph.js";import"./KeyCode-C6xc2Qke.js";import"./classCallCheck-BVPDkxOa.js";import"./raf-nDFcuFT6.js";const st={class:"doc"},lt={class:"doc__head"},nt={class:"doc__rows"},at={class:"doc__row"},ot={class:"doc__row"},it={dir:"ltr"},rt={key:0,class:"doc__row"},dt={dir:"ltr"},ut={key:1,class:"doc__row"},_t={dir:"ltr"},ct={key:2,class:"doc__row"},vt={key:3,class:"doc__row"},mt={dir:"ltr"},ft={key:4,class:"doc__row"},pt={dir:"ltr"},yt={key:5,class:"doc__row"},kt={dir:"ltr"},bt={key:6,class:"doc__row"},gt={key:7,class:"doc__row"},ht={key:8,class:"doc__row"},wt={key:9,class:"doc__row"},$t={key:10,class:"doc__row"},Ct={class:"doc__gold"},xt={class:"doc__stack"},Dt={dir:"ltr",class:"is-in"},Rt={dir:"ltr",class:"is-out"},Nt=E({__name:"ReportDocument",props:{item:{}},setup(l){function $(c){const e=parseFloat(c);if(!Number.isFinite(e))return c;const v=Math.trunc(Math.abs(e)).toString();return(e<0?"-":"")+J(v)}return(c,e)=>(n(),a("article",st,[t("header",lt,[t("span",null,[e[0]||(e[0]=t("span",{class:"doc__muted"},"شماره سند:",-1)),R(" "+i(l.item.sh_factor),1)]),t("span",null,[e[1]||(e[1]=t("span",{class:"doc__muted"},"تاریخ:",-1)),R(" "+i(N(A)(l.item.tarikh)),1)])]),t("dl",nt,[t("div",at,[e[2]||(e[2]=t("dt",null,"نوع سند",-1)),t("dd",null,i(l.item.no),1)]),t("div",ot,[e[3]||(e[3]=t("dt",null,"وزن خالص",-1)),t("dd",it,i(l.item.vazn),1)]),l.item.ayar!==null?(n(),a("div",rt,[e[4]||(e[4]=t("dt",null,"عیار",-1)),t("dd",dt,i(l.item.ayar),1)])):r("",!0),l.item.sh_sharti?(n(),a("div",ut,[e[5]||(e[5]=t("dt",null,"شماره انگ",-1)),t("dd",_t,i(l.item.sh_sharti),1)])):r("",!0),l.item.name_az?(n(),a("div",ct,[e[6]||(e[6]=t("dt",null,"نام آزمایشگاه",-1)),t("dd",null,i(l.item.name_az),1)])):r("",!0),l.item.Darsad_Talayee?(n(),a("div",vt,[e[7]||(e[7]=t("dt",null,"اجرت (گرم)",-1)),t("dd",mt,i(l.item.Darsad_Talayee),1)])):r("",!0),l.item.fi?(n(),a("div",ft,[e[8]||(e[8]=t("dt",null,"قیمت هر گرم",-1)),t("dd",pt,i($(l.item.fi)),1)])):r("",!0),l.item.fiF?(n(),a("div",yt,[e[9]||(e[9]=t("dt",null,"مبلغ سند",-1)),t("dd",kt,i($(l.item.fiF)),1)])):r("",!0),l.item.bankName?(n(),a("div",bt,[e[10]||(e[10]=t("dt",null,"بانک",-1)),t("dd",null,i(l.item.bankName),1)])):r("",!0),l.item.accountName?(n(),a("div",gt,[e[11]||(e[11]=t("dt",null,"نام حساب",-1)),t("dd",null,i(l.item.accountName),1)])):r("",!0),l.item.transferTo?(n(),a("div",ht,[e[12]||(e[12]=t("dt",null,"مقصد حواله",-1)),t("dd",null,i(l.item.transferTo),1)])):r("",!0),l.item.receivedAt?(n(),a("div",wt,[e[13]||(e[13]=t("dt",null,"تاریخ دریافت",-1)),t("dd",null,i(N(A)(l.item.receivedAt)),1)])):r("",!0),l.item.note?(n(),a("div",$t,[e[14]||(e[14]=t("dt",null,"توضیحات",-1)),t("dd",null,i(l.item.note),1)])):r("",!0)]),t("div",Ct,[e[15]||(e[15]=t("span",null,"طلا",-1)),t("div",xt,[t("span",Dt,i(l.item.tabdil750_v),1),t("span",Rt,i(l.item.tabdil750_kh),1)])])]))}}),j=q(Nt,[["__scopeId","data-v-0fb0dff2"]]),Ft={class:"rep"},Tt={class:"rep__tabs"},Vt={key:0,class:"rep__list"},zt={class:"rep__head"},It={class:"rep__pair"},Mt={class:"rep__stack"},Pt={dir:"ltr",class:"is-in"},Bt={dir:"ltr",class:"is-out"},At={class:"rep__pair is-balance"},Ot={class:"rep__pair"},St={class:"rep__stack"},Lt={dir:"ltr",class:"is-in"},Ut={dir:"ltr",class:"is-out"},jt={class:"rep__pair is-balance"},Et=["onClick"],qt={key:1,class:"rep__empty"},Jt={key:0,class:"rep__list"},Kt={key:1,class:"rep__empty"},Wt={key:2,class:"rep__empty"},Gt={key:3,class:"rep__more"},Ht={class:"rep__modal"},Qt={key:0,class:"rep__modalEmpty"},Xt=E({__name:"ReportView",setup(l){const $=X(),c=u($.name==="reportDetail"?"2":"1"),e=u([]),v=u([]),k=u(1),b=u(!0),f=u(!1),F=u(!1),p=u(!1),C=u(!1),x=u(!1),g=u([]);function T(d){const s=parseFloat(d);if(!Number.isFinite(s))return d;const _=Math.trunc(Math.abs(s)).toString();return(s<0?"-":"")+J(_)}function O(d){return parseFloat(d)<0?"is-out":"is-in"}async function V(){var d,s;if(!(f.value||!b.value)){f.value=!0,p.value=!1;try{if(c.value==="1"){const _=await M.getReport(k.value);e.value=[...e.value,..._.result??[]],(((d=_.result)==null?void 0:d.length)??0)<(_.limit??50)?b.value=!1:k.value+=1}else{const _=await M.getReportDetailList(k.value);v.value=[...v.value,..._.result??[]],(((s=_.result)==null?void 0:s.length)??0)<(_.limit??50)?b.value=!1:k.value+=1}}catch{p.value=!0,b.value=!1}finally{f.value=!1}}}function K(){e.value=[],v.value=[],k.value=1,b.value=!0,p.value=!1}async function z(){K(),await V()}async function S(d){c.value!==d&&(c.value=d,await z())}async function W(){try{await z()}finally{F.value=!1}}async function G(d){C.value=!0,x.value=!0,g.value=[];try{const s=await M.getReportDocument(d.factor_Code);g.value=s.result??[]}catch{g.value=[]}finally{x.value=!1}}const I=u(null);let h=null;return H(async()=>{await V(),typeof IntersectionObserver<"u"&&(h=new IntersectionObserver(d=>{d.some(s=>s.isIntersecting)&&V()}),I.value&&h.observe(I.value))}),Q(()=>h==null?void 0:h.disconnect()),(d,s)=>{const _=Y("container");return n(),a("div",Ft,[m(tt,{title:"گزارش","back-to":"userPage::hasSubRoute"},{below:y(()=>[t("div",Tt,[t("button",{type:"button",class:D(["rep__tab",{"is-on":c.value==="1"}]),onClick:s[0]||(s[0]=o=>S("1"))}," کلیات حساب ",2),t("button",{type:"button",class:D(["rep__tab",{"is-on":c.value==="2"}]),onClick:s[1]||(s[1]=o=>S("2"))}," جزئیات حساب ",2)])]),_:1}),m(L,{spinning:f.value&&!e.value.length&&!v.value.length,tip:"درحال دریافت اطلاعات"},{default:y(()=>[m(Z,{modelValue:F.value,"onUpdate:modelValue":s[2]||(s[2]=o=>F.value=o),onRefresh:W},{default:y(()=>[m(_,{class:"rep__body"},{default:y(()=>[c.value==="1"?(n(),a(w,{key:0},[e.value.length?(n(),a("div",Vt,[(n(!0),a(w,null,P(e.value,o=>(n(),a("article",{key:o.factor_Code,class:"rep__card"},[t("header",zt,[t("span",null,[s[5]||(s[5]=t("span",{class:"rep__muted"},"شماره سند:",-1)),R(" "+i(o.sh_factor),1)]),t("span",null,[s[6]||(s[6]=t("span",{class:"rep__muted"},"تاریخ:",-1)),R(" "+i(N(A)(o.tarikh)),1)])]),t("div",It,[s[7]||(s[7]=t("span",null,"طلا",-1)),t("div",Mt,[t("span",Pt,i(o.geram_v),1),t("span",Bt,i(o.geram_kh),1)])]),t("div",At,[s[8]||(s[8]=t("span",null,"مانده طلا:",-1)),t("span",{dir:"ltr",class:D(O(o.tahesab_T))},i(o.tahesab_T),3)]),t("div",Ot,[s[9]||(s[9]=t("span",null,"ریال",-1)),t("div",St,[t("span",Lt,i(T(o.rial_v)),1),t("span",Ut,i(T(o.rial_kh)),1)])]),t("div",jt,[s[10]||(s[10]=t("span",null,"مانده ریال:",-1)),t("span",{dir:"ltr",class:D(O(o.tahesab_P))},i(T(o.tahesab_P)),3)]),t("button",{type:"button",class:"rep__more",onClick:Yt=>G(o)},"جزئیات",8,Et)]))),128))])):!f.value&&!p.value?(n(),a("section",qt,[m(B,{icon:"vuesax-linear:receipt-text",size:"26"}),s[11]||(s[11]=t("p",null,"هنوز سندی برای حساب شما ثبت نشده است.",-1))])):r("",!0)],64)):(n(),a(w,{key:1},[v.value.length?(n(),a("div",Jt,[(n(!0),a(w,null,P(v.value,o=>(n(),U(j,{key:o.factor_Code,item:o},null,8,["item"]))),128))])):!f.value&&!p.value?(n(),a("section",Kt,[m(B,{icon:"vuesax-linear:receipt-text",size:"26"}),s[12]||(s[12]=t("p",null,"هنوز سندی برای حساب شما ثبت نشده است.",-1))])):r("",!0)],64)),p.value?(n(),a("section",Wt,[m(B,{icon:"vuesax-linear:danger",size:"26"}),s[13]||(s[13]=t("p",null,"دریافت اطلاعات با خطا روبه‌رو شد.",-1)),t("button",{type:"button",class:"rep__retry",onClick:z},"تلاش دوباره")])):r("",!0),f.value&&(e.value.length||v.value.length)?(n(),a("div",Gt,"در حال دریافت…")):r("",!0),t("div",{ref_key:"sentinel",ref:I,class:"rep__sentinel"},null,512)]),_:1})]),_:1},8,["modelValue"])]),_:1},8,["spinning"]),m(N(et),{visible:C.value,"onUpdate:visible":s[4]||(s[4]=o=>C.value=o),placement:"bottom",height:"auto",closable:!1,"body-style":{padding:"0"}},{default:y(()=>[t("div",Ht,[m(L,{spinning:x.value,tip:"درحال دریافت اطلاعات"},{default:y(()=>[(n(!0),a(w,null,P(g.value,o=>(n(),U(j,{key:o.factor_Code,item:o},null,8,["item"]))),128)),!x.value&&!g.value.length?(n(),a("p",Qt," جزئیاتی برای این سند ثبت نشده است. ")):r("",!0)]),_:1},8,["spinning"]),t("button",{type:"button",class:"rep__close",onClick:s[3]||(s[3]=o=>C.value=!1)},"بازگشت")])]),_:1},8,["visible"])])}}}),ie=q(Xt,[["__scopeId","data-v-fb9e4d13"]]);export{ie as default}; +import{d as E,e as n,f as a,g as t,W as R,t as i,q as N,h as r,_ as q,k as u,o as H,c as Q,x as m,J as y,T as L,a1 as X,D as M,i as D,F as w,r as P,I as B,M as Y,O as U}from"./index-B-RmZRr2.js";import{A as Z}from"./AppPullRefresh-RDVLXVM_.js";import{P as tt}from"./PageBar-DmOKrVEQ.js";import{j as A,p as J}from"./filters-BLs90kiz.js";import{D as et}from"./index-DXKwa_Wp.js";import"./KeyCode-DsOsmuVa.js";import"./classCallCheck-BMo4V_0Q.js";import"./raf-nDFcuFT6.js";const st={class:"doc"},lt={class:"doc__head"},nt={class:"doc__rows"},at={class:"doc__row"},ot={class:"doc__row"},it={dir:"ltr"},rt={key:0,class:"doc__row"},dt={dir:"ltr"},ut={key:1,class:"doc__row"},_t={dir:"ltr"},ct={key:2,class:"doc__row"},vt={key:3,class:"doc__row"},mt={dir:"ltr"},ft={key:4,class:"doc__row"},pt={dir:"ltr"},yt={key:5,class:"doc__row"},kt={dir:"ltr"},bt={key:6,class:"doc__row"},gt={key:7,class:"doc__row"},ht={key:8,class:"doc__row"},wt={key:9,class:"doc__row"},$t={key:10,class:"doc__row"},Ct={class:"doc__gold"},xt={class:"doc__stack"},Dt={dir:"ltr",class:"is-in"},Rt={dir:"ltr",class:"is-out"},Nt=E({__name:"ReportDocument",props:{item:{}},setup(l){function $(c){const e=parseFloat(c);if(!Number.isFinite(e))return c;const v=Math.trunc(Math.abs(e)).toString();return(e<0?"-":"")+J(v)}return(c,e)=>(n(),a("article",st,[t("header",lt,[t("span",null,[e[0]||(e[0]=t("span",{class:"doc__muted"},"شماره سند:",-1)),R(" "+i(l.item.sh_factor),1)]),t("span",null,[e[1]||(e[1]=t("span",{class:"doc__muted"},"تاریخ:",-1)),R(" "+i(N(A)(l.item.tarikh)),1)])]),t("dl",nt,[t("div",at,[e[2]||(e[2]=t("dt",null,"نوع سند",-1)),t("dd",null,i(l.item.no),1)]),t("div",ot,[e[3]||(e[3]=t("dt",null,"وزن خالص",-1)),t("dd",it,i(l.item.vazn),1)]),l.item.ayar!==null?(n(),a("div",rt,[e[4]||(e[4]=t("dt",null,"عیار",-1)),t("dd",dt,i(l.item.ayar),1)])):r("",!0),l.item.sh_sharti?(n(),a("div",ut,[e[5]||(e[5]=t("dt",null,"شماره انگ",-1)),t("dd",_t,i(l.item.sh_sharti),1)])):r("",!0),l.item.name_az?(n(),a("div",ct,[e[6]||(e[6]=t("dt",null,"نام آزمایشگاه",-1)),t("dd",null,i(l.item.name_az),1)])):r("",!0),l.item.Darsad_Talayee?(n(),a("div",vt,[e[7]||(e[7]=t("dt",null,"اجرت (گرم)",-1)),t("dd",mt,i(l.item.Darsad_Talayee),1)])):r("",!0),l.item.fi?(n(),a("div",ft,[e[8]||(e[8]=t("dt",null,"قیمت هر گرم",-1)),t("dd",pt,i($(l.item.fi)),1)])):r("",!0),l.item.fiF?(n(),a("div",yt,[e[9]||(e[9]=t("dt",null,"مبلغ سند",-1)),t("dd",kt,i($(l.item.fiF)),1)])):r("",!0),l.item.bankName?(n(),a("div",bt,[e[10]||(e[10]=t("dt",null,"بانک",-1)),t("dd",null,i(l.item.bankName),1)])):r("",!0),l.item.accountName?(n(),a("div",gt,[e[11]||(e[11]=t("dt",null,"نام حساب",-1)),t("dd",null,i(l.item.accountName),1)])):r("",!0),l.item.transferTo?(n(),a("div",ht,[e[12]||(e[12]=t("dt",null,"مقصد حواله",-1)),t("dd",null,i(l.item.transferTo),1)])):r("",!0),l.item.receivedAt?(n(),a("div",wt,[e[13]||(e[13]=t("dt",null,"تاریخ دریافت",-1)),t("dd",null,i(N(A)(l.item.receivedAt)),1)])):r("",!0),l.item.note?(n(),a("div",$t,[e[14]||(e[14]=t("dt",null,"توضیحات",-1)),t("dd",null,i(l.item.note),1)])):r("",!0)]),t("div",Ct,[e[15]||(e[15]=t("span",null,"طلا",-1)),t("div",xt,[t("span",Dt,i(l.item.tabdil750_v),1),t("span",Rt,i(l.item.tabdil750_kh),1)])])]))}}),j=q(Nt,[["__scopeId","data-v-0fb0dff2"]]),Ft={class:"rep"},Tt={class:"rep__tabs"},Vt={key:0,class:"rep__list"},zt={class:"rep__head"},It={class:"rep__pair"},Mt={class:"rep__stack"},Pt={dir:"ltr",class:"is-in"},Bt={dir:"ltr",class:"is-out"},At={class:"rep__pair is-balance"},Ot={class:"rep__pair"},St={class:"rep__stack"},Lt={dir:"ltr",class:"is-in"},Ut={dir:"ltr",class:"is-out"},jt={class:"rep__pair is-balance"},Et=["onClick"],qt={key:1,class:"rep__empty"},Jt={key:0,class:"rep__list"},Kt={key:1,class:"rep__empty"},Wt={key:2,class:"rep__empty"},Gt={key:3,class:"rep__more"},Ht={class:"rep__modal"},Qt={key:0,class:"rep__modalEmpty"},Xt=E({__name:"ReportView",setup(l){const $=X(),c=u($.name==="reportDetail"?"2":"1"),e=u([]),v=u([]),k=u(1),b=u(!0),f=u(!1),F=u(!1),p=u(!1),C=u(!1),x=u(!1),g=u([]);function T(d){const s=parseFloat(d);if(!Number.isFinite(s))return d;const _=Math.trunc(Math.abs(s)).toString();return(s<0?"-":"")+J(_)}function O(d){return parseFloat(d)<0?"is-out":"is-in"}async function V(){var d,s;if(!(f.value||!b.value)){f.value=!0,p.value=!1;try{if(c.value==="1"){const _=await M.getReport(k.value);e.value=[...e.value,..._.result??[]],(((d=_.result)==null?void 0:d.length)??0)<(_.limit??50)?b.value=!1:k.value+=1}else{const _=await M.getReportDetailList(k.value);v.value=[...v.value,..._.result??[]],(((s=_.result)==null?void 0:s.length)??0)<(_.limit??50)?b.value=!1:k.value+=1}}catch{p.value=!0,b.value=!1}finally{f.value=!1}}}function K(){e.value=[],v.value=[],k.value=1,b.value=!0,p.value=!1}async function z(){K(),await V()}async function S(d){c.value!==d&&(c.value=d,await z())}async function W(){try{await z()}finally{F.value=!1}}async function G(d){C.value=!0,x.value=!0,g.value=[];try{const s=await M.getReportDocument(d.factor_Code);g.value=s.result??[]}catch{g.value=[]}finally{x.value=!1}}const I=u(null);let h=null;return H(async()=>{await V(),typeof IntersectionObserver<"u"&&(h=new IntersectionObserver(d=>{d.some(s=>s.isIntersecting)&&V()}),I.value&&h.observe(I.value))}),Q(()=>h==null?void 0:h.disconnect()),(d,s)=>{const _=Y("container");return n(),a("div",Ft,[m(tt,{title:"گزارش","back-to":"userPage::hasSubRoute"},{below:y(()=>[t("div",Tt,[t("button",{type:"button",class:D(["rep__tab",{"is-on":c.value==="1"}]),onClick:s[0]||(s[0]=o=>S("1"))}," کلیات حساب ",2),t("button",{type:"button",class:D(["rep__tab",{"is-on":c.value==="2"}]),onClick:s[1]||(s[1]=o=>S("2"))}," جزئیات حساب ",2)])]),_:1}),m(L,{spinning:f.value&&!e.value.length&&!v.value.length,tip:"درحال دریافت اطلاعات"},{default:y(()=>[m(Z,{modelValue:F.value,"onUpdate:modelValue":s[2]||(s[2]=o=>F.value=o),onRefresh:W},{default:y(()=>[m(_,{class:"rep__body"},{default:y(()=>[c.value==="1"?(n(),a(w,{key:0},[e.value.length?(n(),a("div",Vt,[(n(!0),a(w,null,P(e.value,o=>(n(),a("article",{key:o.factor_Code,class:"rep__card"},[t("header",zt,[t("span",null,[s[5]||(s[5]=t("span",{class:"rep__muted"},"شماره سند:",-1)),R(" "+i(o.sh_factor),1)]),t("span",null,[s[6]||(s[6]=t("span",{class:"rep__muted"},"تاریخ:",-1)),R(" "+i(N(A)(o.tarikh)),1)])]),t("div",It,[s[7]||(s[7]=t("span",null,"طلا",-1)),t("div",Mt,[t("span",Pt,i(o.geram_v),1),t("span",Bt,i(o.geram_kh),1)])]),t("div",At,[s[8]||(s[8]=t("span",null,"مانده طلا:",-1)),t("span",{dir:"ltr",class:D(O(o.tahesab_T))},i(o.tahesab_T),3)]),t("div",Ot,[s[9]||(s[9]=t("span",null,"ریال",-1)),t("div",St,[t("span",Lt,i(T(o.rial_v)),1),t("span",Ut,i(T(o.rial_kh)),1)])]),t("div",jt,[s[10]||(s[10]=t("span",null,"مانده ریال:",-1)),t("span",{dir:"ltr",class:D(O(o.tahesab_P))},i(T(o.tahesab_P)),3)]),t("button",{type:"button",class:"rep__more",onClick:Yt=>G(o)},"جزئیات",8,Et)]))),128))])):!f.value&&!p.value?(n(),a("section",qt,[m(B,{icon:"vuesax-linear:receipt-text",size:"26"}),s[11]||(s[11]=t("p",null,"هنوز سندی برای حساب شما ثبت نشده است.",-1))])):r("",!0)],64)):(n(),a(w,{key:1},[v.value.length?(n(),a("div",Jt,[(n(!0),a(w,null,P(v.value,o=>(n(),U(j,{key:o.factor_Code,item:o},null,8,["item"]))),128))])):!f.value&&!p.value?(n(),a("section",Kt,[m(B,{icon:"vuesax-linear:receipt-text",size:"26"}),s[12]||(s[12]=t("p",null,"هنوز سندی برای حساب شما ثبت نشده است.",-1))])):r("",!0)],64)),p.value?(n(),a("section",Wt,[m(B,{icon:"vuesax-linear:danger",size:"26"}),s[13]||(s[13]=t("p",null,"دریافت اطلاعات با خطا روبه‌رو شد.",-1)),t("button",{type:"button",class:"rep__retry",onClick:z},"تلاش دوباره")])):r("",!0),f.value&&(e.value.length||v.value.length)?(n(),a("div",Gt,"در حال دریافت…")):r("",!0),t("div",{ref_key:"sentinel",ref:I,class:"rep__sentinel"},null,512)]),_:1})]),_:1},8,["modelValue"])]),_:1},8,["spinning"]),m(N(et),{visible:C.value,"onUpdate:visible":s[4]||(s[4]=o=>C.value=o),placement:"bottom",height:"auto",closable:!1,"body-style":{padding:"0"}},{default:y(()=>[t("div",Ht,[m(L,{spinning:x.value,tip:"درحال دریافت اطلاعات"},{default:y(()=>[(n(!0),a(w,null,P(g.value,o=>(n(),U(j,{key:o.factor_Code,item:o},null,8,["item"]))),128)),!x.value&&!g.value.length?(n(),a("p",Qt," جزئیاتی برای این سند ثبت نشده است. ")):r("",!0)]),_:1},8,["spinning"]),t("button",{type:"button",class:"rep__close",onClick:s[3]||(s[3]=o=>C.value=!1)},"بازگشت")])]),_:1},8,["visible"])])}}}),ie=q(Xt,[["__scopeId","data-v-fb9e4d13"]]);export{ie as default}; diff --git a/apps/user-app/dist/assets/SearchInput-C_6TS52w.js b/apps/user-app/dist/assets/SearchInput-BkGXK-xm.js similarity index 79% rename from apps/user-app/dist/assets/SearchInput-C_6TS52w.js rename to apps/user-app/dist/assets/SearchInput-BkGXK-xm.js index fd46a46..1260569 100644 --- a/apps/user-app/dist/assets/SearchInput-C_6TS52w.js +++ b/apps/user-app/dist/assets/SearchInput-BkGXK-xm.js @@ -1 +1 @@ -import{d as v,bb as h,w as m,e as t,f as l,x as n,I as r,v as f,bc as b,g as x,bd as k,h as I,U as w,k as y,_ as C}from"./index-BFOyCNFT.js";const S={class:"si"},V=["placeholder"],B=v({__name:"SearchInput",props:{placeHolder:{}},emits:["search"],setup(i,{emit:d}){const c=d,a=w({clear:!1}),e=y(void 0),s=()=>{c("search",e.value)},u=()=>{e.value=void 0,a.clear=!1,c("search",void 0)},p=h(e,700);return m(p,()=>{e?a.clear=!0:a.clear=!1,s()}),(N,o)=>(t(),l("div",S,[n(r,{icon:"vuesax-linear:search-normal-1",class:"si__icon",size:"18",onClick:s}),f(x("input",{"onUpdate:modelValue":o[0]||(o[0]=_=>e.value=_),class:"si__input",placeholder:i.placeHolder,onKeyup:k(s,["enter"])},null,40,V),[[b,e.value]]),a.clear?(t(),l("button",{key:0,type:"button",class:"si__clear","aria-label":"پاک کردن",onClick:u},[n(r,{icon:"vuesax-linear:add",size:"16"})])):I("",!0)]))}}),D=C(B,[["__scopeId","data-v-4c50067a"]]);export{D as S}; +import{d as v,bd as h,w as m,e as t,f as l,x as n,I as r,v as f,aW as b,g as x,be as k,h as I,U as w,k as y,_ as C}from"./index-B-RmZRr2.js";const S={class:"si"},V=["placeholder"],B=v({__name:"SearchInput",props:{placeHolder:{}},emits:["search"],setup(i,{emit:d}){const c=d,a=w({clear:!1}),e=y(void 0),s=()=>{c("search",e.value)},u=()=>{e.value=void 0,a.clear=!1,c("search",void 0)},p=h(e,700);return m(p,()=>{e?a.clear=!0:a.clear=!1,s()}),(N,o)=>(t(),l("div",S,[n(r,{icon:"vuesax-linear:search-normal-1",class:"si__icon",size:"18",onClick:s}),f(x("input",{"onUpdate:modelValue":o[0]||(o[0]=_=>e.value=_),class:"si__input",placeholder:i.placeHolder,onKeyup:k(s,["enter"])},null,40,V),[[b,e.value]]),a.clear?(t(),l("button",{key:0,type:"button",class:"si__clear","aria-label":"پاک کردن",onClick:u},[n(r,{icon:"vuesax-linear:add",size:"16"})])):I("",!0)]))}}),D=C(B,[["__scopeId","data-v-4c50067a"]]);export{D as S}; diff --git a/apps/user-app/dist/assets/SearchView-CX3YDK4c.js b/apps/user-app/dist/assets/SearchView-CX3YDK4c.js deleted file mode 100644 index 2bf86af..0000000 --- a/apps/user-app/dist/assets/SearchView-CX3YDK4c.js +++ /dev/null @@ -1 +0,0 @@ -import{A as Mn}from"./AppPullRefresh-CsuQ3Y8x.js";import{aa as m,x as k,am as Ke,v as zt,p as On,d as W,ap as Ut,az as G,k as D,w as z,o as Pe,c as Ee,aD as lt,j as L,aH as $e,$ as Ue,a6 as kn,a7 as _n,ar as ve,b0 as Vn,a2 as $n,y as ut,ah as N,b1 as An,aC as q,b2 as Dn,a9 as Bn,ak as O,aP as Xt,b3 as Yt,b4 as ct,F as le,b5 as Ae,b6 as Nn,a8 as Me,ax as En,ai as Fn,an as Hn,aU as De,aY as Rn,ay as Gt,aj as qt,aT as Je,aE as Kt,aq as Ze,b7 as Ln,aX as Jt,b8 as jn,b as In,e as H,f as j,g as B,S as ft,W as we,t as ee,I as Ce,i as ue,_ as Zt,O as Qt,J as ce,q as ae,b9 as Wn,h as re,r as ye,n as zn,T as Un,M as Xn}from"./index-BFOyCNFT.js";import{P as Yn}from"./PageBar-Cz1N2fdD.js";import{S as Gn}from"./SearchInput-C_6TS52w.js";import{s as te,P as dt,u as qn,a as Kn,K as Q}from"./KeyCode-C6xc2Qke.js";import{w as Z}from"./raf-nDFcuFT6.js";import{_ as Jn,i as Zn,B as Be,z as Qn,A as ei}from"./FormItemContext-BNYzezPe.js";import{P as ti}from"./ProductCard-k7xfI-K2.js";import{u as ni}from"./filtersStore-CRo2e-wH.js";import{u as ii}from"./catalogStore-BuqGxGiV.js";function K(i,e,t,n){if(i&&i.addEventListener){var a=n;a===void 0&&te&&(e==="touchstart"||e==="touchmove"||e==="wheel")&&(a={passive:!1}),i.addEventListener(e,t,a)}return{remove:function(){i&&i.removeEventListener&&i.removeEventListener(e,t)}}}function se(i,e){return i?i.contains(e):!1}var en=["moz","ms","webkit"];function ai(){var i=0;return function(e){var t=new Date().getTime(),n=Math.max(0,16-(t-i)),a=window.setTimeout(function(){e(t+n)},n);return i=t+n,a}}function oi(){if(typeof window>"u")return function(){};if(window.requestAnimationFrame)return window.requestAnimationFrame.bind(window);var i=en.filter(function(e){return"".concat(e,"RequestAnimationFrame")in window})[0];return i?window["".concat(i,"RequestAnimationFrame")]:ai()}function ri(i){if(typeof window>"u")return null;if(window.cancelAnimationFrame)return window.cancelAnimationFrame(i);var e=en.filter(function(t){return"".concat(t,"CancelAnimationFrame")in window||"".concat(t,"CancelRequestAnimationFrame")in window})[0];return e?(window["".concat(e,"CancelAnimationFrame")]||window["".concat(e,"CancelRequestAnimationFrame")]).call(this,i):clearTimeout(i)}var vt=oi(),si=function(e){return ri(e.id)},li=function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,n=Date.now();function a(){Date.now()-n>=t?e.call():o.id=vt(a)}var o={id:vt(a)};return o},Qe={visible:Boolean,prefixCls:String,zIndex:Number,destroyPopupOnHide:Boolean,forceRender:Boolean,animation:[String,Object],transitionName:String,stretch:{type:String},align:{type:Object},point:{type:Object},getRootDomNode:{type:Function},getClassNameFromAlign:{type:Function},onMouseenter:{type:Function},onMouseleave:{type:Function},onMousedown:{type:Function},onTouchstart:{type:Function}},ui=m(m({},Qe),{},{mobile:{type:Object}}),ci=m(m({},Qe),{},{mask:Boolean,mobile:{type:Object},maskAnimation:String,maskTransitionName:String});function tn(i){var e=i.prefixCls,t=i.animation,n=i.transitionName;return t?{name:"".concat(e,"-").concat(t)}:n?{name:n}:{}}function nn(i){var e=i.prefixCls,t=i.visible,n=i.zIndex,a=i.mask,o=i.maskAnimation,r=i.maskTransitionName;if(!a)return null;var s={};return(r||o)&&(s=tn({prefixCls:e,transitionName:r,animation:o})),k(Ke,m({appear:!0},s),{default:function(){return[zt(k("div",{style:{zIndex:n},class:"".concat(e,"-mask")},null),[[On("if"),t]])]}})}nn.displayName="Mask";const fi=W({compatConfig:{MODE:3},name:"MobilePopupInner",inheritAttrs:!1,props:ui,emits:["mouseenter","mouseleave","mousedown","touchstart","align"],setup:function(e,t){var n=t.expose,a=t.slots,o=D();return n({forceAlign:function(){},getElement:function(){return o.value}}),function(){var r,s=e.zIndex,l=e.visible,u=e.prefixCls,c=e.mobile,h=c===void 0?{}:c,v=h.popupClassName,b=h.popupStyle,C=h.popupMotion,P=C===void 0?{}:C,V=h.popupRender,T=m({zIndex:s},b),g=Ut((r=a.default)===null||r===void 0?void 0:r.call(a));g.length>1&&(g=k("div",{class:"".concat(u,"-content")},[g])),V&&(g=V(g));var S=G(u,v);return k(Ke,m({ref:o},P),{default:function(){return[l?k("div",{class:S,style:T},[g]):null]}})}}});var pt=["measure","align",null,"motion"];const di=function(i,e){var t=D(null),n=D(),a=D(!1);function o(l){a.value||(t.value=l)}function r(){Z.cancel(n.value)}function s(l){r(),n.value=Z(function(){var u=t.value;switch(t.value){case"align":u="motion";break;case"motion":u="stable";break}o(u),l==null||l()})}return z(i,function(){o("measure")},{immediate:!0,flush:"post"}),Pe(function(){z(t,function(){switch(t.value){case"measure":e();break}t.value&&(n.value=Z(Jn(lt.mark(function l(){var u,c;return lt.wrap(function(v){for(;;)switch(v.prev=v.next){case 0:u=pt.indexOf(t.value),c=pt[u+1],c&&u!==-1&&o(c);case 3:case"end":return v.stop()}},l)}))))},{immediate:!0,flush:"post"})}),Ee(function(){a.value=!0,r()}),[t,s]},vi=function(i){var e=D({width:0,height:0});function t(a){e.value={width:a.offsetWidth,height:a.offsetHeight}}var n=L(function(){var a={};if(i.value){var o=e.value,r=o.width,s=o.height;i.value.indexOf("height")!==-1&&s?a.height="".concat(s,"px"):i.value.indexOf("minHeight")!==-1&&s&&(a.minHeight="".concat(s,"px")),i.value.indexOf("width")!==-1&&r?a.width="".concat(r,"px"):i.value.indexOf("minWidth")!==-1&&r&&(a.minWidth="".concat(r,"px"))}return a});return[n,t]};function ht(i,e){var t=Object.keys(i);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(i);e&&(n=n.filter(function(a){return Object.getOwnPropertyDescriptor(i,a).enumerable})),t.push.apply(t,n)}return t}function mt(i){for(var e=1;e=0&&t.left>=0&&t.bottom>t.top&&t.right>t.left?t:null}function Ei(i,e,t,n){var a=A.clone(i),o={width:e.width,height:e.height};return n.adjustX&&a.left=t.left&&a.left+o.width>t.right&&(o.width-=a.left+o.width-t.right),n.adjustX&&a.left+o.width>t.right&&(a.left=Math.max(t.right-o.width,t.left)),n.adjustY&&a.top=t.top&&a.top+o.height>t.bottom&&(o.height-=a.top+o.height-t.bottom),n.adjustY&&a.top+o.height>t.bottom&&(a.top=Math.max(t.bottom-o.height,t.top)),A.mix(a,o)}function it(i){var e,t,n;if(!A.isWindow(i)&&i.nodeType!==9)e=A.offset(i),t=A.outerWidth(i),n=A.outerHeight(i);else{var a=A.getWindow(i);e={left:A.getWindowScrollLeft(a),top:A.getWindowScrollTop(a)},t=A.viewportWidth(a),n=A.viewportHeight(a)}return e.width=t,e.height=n,e}function Tt(i,e){var t=e.charAt(0),n=e.charAt(1),a=i.width,o=i.height,r=i.left,s=i.top;return t==="c"?s+=o/2:t==="b"&&(s+=o),n==="c"?r+=a/2:n==="r"&&(r+=a),{left:r,top:s}}function ke(i,e,t,n,a){var o=Tt(e,t[1]),r=Tt(i,t[0]),s=[r.left-o.left,r.top-o.top];return{left:Math.round(i.left-s[0]+n[0]-a[0]),top:Math.round(i.top-s[1]+n[1]-a[1])}}function St(i,e,t){return i.leftt.right}function Mt(i,e,t){return i.topt.bottom}function Fi(i,e,t){return i.left>t.right||i.left+e.widtht.bottom||i.top+e.height=t.right||n.top>=t.bottom}function at(i,e,t){var n=t.target||e,a=it(n),o=!Ri(n,t.overflow&&t.overflow.alwaysByViewport);return fn(i,a,t,o)}at.__getOffsetParent=qe;at.__getVisibleRectForElement=nt;function Li(i,e,t){var n,a,o=A.getDocument(i),r=o.defaultView||o.parentWindow,s=A.getWindowScrollLeft(r),l=A.getWindowScrollTop(r),u=A.viewportWidth(r),c=A.viewportHeight(r);"pageX"in e?n=e.pageX:n=s+e.clientX,"pageY"in e?a=e.pageY:a=l+e.clientY;var h={left:n,top:a,width:0,height:0},v=n>=0&&n<=s+u&&a>=0&&a<=l+c,b=[t.points[0],"cc"];return fn(i,h,mt(mt({},t),{},{points:b}),v)}const ji=function(i){if(!i)return!1;if(i.offsetParent)return!0;if(i.getBBox){var e=i.getBBox();if(e.width||e.height)return!0}if(i.getBoundingClientRect){var t=i.getBoundingClientRect();if(t.width||t.height)return!0}return!1};function Ii(i,e){return i===e?!0:!i||!e?!1:"pageX"in e&&"pageY"in e?i.pageX===e.pageX&&i.pageY===e.pageY:"clientX"in e&&"clientY"in e?i.clientX===e.clientX&&i.clientY===e.clientY:!1}function Wi(i,e){i!==document.activeElement&&se(e,i)&&typeof i.focus=="function"&&i.focus()}function _t(i,e){var t=null,n=null;function a(r){var s=$e(r,1),l=s[0].target;if(document.documentElement.contains(l)){var u=l.getBoundingClientRect(),c=u.width,h=u.height,v=Math.floor(c),b=Math.floor(h);(t!==v||n!==b)&&Promise.resolve().then(function(){e({width:v,height:b})}),t=v,n=b}}var o=new Zn(a);return i&&o.observe(i),function(){o.disconnect()}}const zi=function(i,e){var t=!1,n=null;function a(){clearTimeout(n)}function o(r){if(!t||r===!0){if(i()===!1)return;t=!0,a(),n=setTimeout(function(){t=!1},e.value)}else a(),n=setTimeout(function(){t=!1,o()},e.value)}return[o,function(){t=!1,a()}]};var Ui={align:Object,target:[Object,Function],onAlign:Function,monitorBufferTime:Number,monitorWindowResize:Boolean,disabled:Boolean};function Vt(i){return typeof i!="function"?null:i()}function $t(i){return ve(i)!=="object"||!i?null:i}const Xi=W({compatConfig:{MODE:3},name:"Align",props:Ui,emits:["align"],setup:function(e,t){var n=t.expose,a=t.slots,o=D({}),r=D(),s=zi(function(){var P=e.disabled,V=e.target,T=e.align,g=e.onAlign;if(!P&&V&&r.value){var S=r.value,_,M=Vt(V),d=$t(V);o.value.element=M,o.value.point=d,o.value.align=T;var f=document,y=f.activeElement;return M&&ji(M)?_=at(S,M,T):d&&(_=Li(S,d,T)),Wi(y,S),g&&_&&g(S,_),!0}return!1},L(function(){return e.monitorBufferTime})),l=$e(s,2),u=l[0],c=l[1],h=D({cancel:function(){}}),v=D({cancel:function(){}}),b=function(){var V=e.target,T=Vt(V),g=$t(V);r.value!==v.value.element&&(v.value.cancel(),v.value.element=r.value,v.value.cancel=_t(r.value,u)),(o.value.element!==T||!Ii(o.value.point,g)||!Qn(o.value.align,e.align))&&(u(),h.value.element!==T&&(h.value.cancel(),h.value.element=T,h.value.cancel=_t(T,u)))};Pe(function(){Ue(function(){b()})}),kn(function(){Ue(function(){b()})}),z(function(){return e.disabled},function(P){P?c():u()},{immediate:!0,flush:"post"});var C=D(null);return z(function(){return e.monitorWindowResize},function(P){P?C.value||(C.value=K(window,"resize",u)):C.value&&(C.value.remove(),C.value=null)},{flush:"post"}),_n(function(){h.value.cancel(),v.value.cancel(),C.value&&C.value.remove(),c()}),n({forceAlign:function(){return u(!0)}}),function(){var P=a==null?void 0:a.default();return P?Be(P[0],{ref:r},!0,!0):null}}}),Yi=W({compatConfig:{MODE:3},name:"PopupInner",inheritAttrs:!1,props:Qe,emits:["mouseenter","mouseleave","mousedown","touchstart","align"],setup:function(e,t){var n=t.expose,a=t.attrs,o=t.slots,r=D(),s=D(),l=D(),u=vi(An(e,"stretch")),c=$e(u,2),h=c[0],v=c[1],b=function(){e.stretch&&v(e.getRootDomNode())},C=D(!1),P;z(function(){return e.visible},function(p){clearTimeout(P),p?P=setTimeout(function(){C.value=e.visible}):C.value=!1},{immediate:!0});var V=di(C,b),T=$e(V,2),g=T[0],S=T[1],_=D(),M=function(){return e.point?e.point:e.getRootDomNode},d=function(){var $;($=r.value)===null||$===void 0||$.forceAlign()},f=function($,E){var R=e.getClassNameFromAlign(E),I=l.value;if(l.value!==R&&(l.value=R),g.value==="align"){var F;I!==R?Promise.resolve().then(function(){d()}):S(function(){var U;(U=_.value)===null||U===void 0||U.call(_)}),(F=e.onAlign)===null||F===void 0||F.call(e,$,E)}},y=L(function(){var p=ve(e.animation)==="object"?e.animation:tn(e);return["onAfterEnter","onAfterLeave"].forEach(function($){var E=p[$];p[$]=function(R){S(),g.value="stable",E==null||E(R)}}),p}),w=function(){return new Promise(function($){_.value=$})};z([y,g],function(){!y.value&&g.value==="motion"&&S()},{immediate:!0}),n({forceAlign:d,getElement:function(){return s.value.$el||s.value}});var x=L(function(){var p;return!((p=e.align)!==null&&p!==void 0&&p.points&&(g.value==="align"||g.value==="stable"))});return function(){var p,$=e.zIndex,E=e.align,R=e.prefixCls,I=e.destroyPopupOnHide,F=e.onMouseenter,U=e.onMouseleave,oe=e.onTouchstart,pe=oe===void 0?function(){}:oe,st=e.onMousedown,he=g.value,xn=[m(m({},h.value),{},{zIndex:$,opacity:he==="motion"||he==="stable"||!C.value?null:0,pointerEvents:!C.value&&he!=="stable"?"none":null}),a.style],Se=Ut((p=o.default)===null||p===void 0?void 0:p.call(o,{visible:e.visible}));Se.length>1&&(Se=k("div",{class:"".concat(R,"-content")},[Se]));var Pn=G(R,a.class,l.value),Tn=C.value||!e.visible,Sn=Tn?Vn(y.value.name,y.value):{};return k(Ke,m(m({ref:s},Sn),{},{onBeforeEnter:w}),{default:function(){return!I||e.visible?zt(k(Xi,{target:M(),key:"popup",ref:r,monitorWindowResize:!0,disabled:x.value,align:E,onAlign:f},{default:function(){return k("div",m(m({class:Pn,onMouseenter:F,onMouseleave:U,onMousedown:ut(st,["capture"])},N({},te?"onTouchstartPassive":"onTouchstart",ut(pe,["capture"]))),{},{style:xn}),[Se])}}),[[$n,C.value]]):null}})}}}),Gi=W({compatConfig:{MODE:3},name:"Popup",inheritAttrs:!1,props:ci,setup:function(e,t){var n=t.attrs,a=t.slots,o=t.expose,r=D(!1),s=D(!1),l=D();return z([function(){return e.visible},function(){return e.mobile}],function(){r.value=e.visible,e.visible&&e.mobile&&(s.value=!0)},{immediate:!0,flush:"post"}),o({forceAlign:function(){var c;(c=l.value)===null||c===void 0||c.forceAlign()},getElement:function(){var c;return(c=l.value)===null||c===void 0?void 0:c.getElement()}}),function(){var u=m(m(m({},e),n),{},{visible:r.value}),c=s.value?k(fi,m(m({},u),{},{mobile:e.mobile,ref:l}),{default:a.default}):k(Yi,m(m({},u),{},{ref:l}),{default:a.default});return k("div",null,[k(nn,u,null),c])}}});function qi(i,e,t){return t?i[0]===e[0]:i[0]===e[0]&&i[1]===e[1]}function At(i,e,t){var n=i[e]||{};return m(m({},n),t)}function Ki(i,e,t,n){for(var a=t.points,o=Object.keys(i),r=0;r0&&arguments[0]!==void 0?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,n=typeof e=="function"?e(this.$data,this.$props):e;if(this.getDerivedStateFromProps){var a=this.getDerivedStateFromProps(Dn(this),m(m({},this.$data),n));if(a===null)return;n=m(m({},n),a||{})}Bn(this.$data,n),this._.isMounted&&this.$forceUpdate(),Ue(function(){t&&t()})},__emit:function(){var e=[].slice.call(arguments,0),t=e[0];t="on".concat(t[0].toUpperCase()).concat(t.substring(1));var n=this.$props[t]||this.$attrs[t];if(e.length&&n)if(Array.isArray(n))for(var a=0,o=n.length;a0&&arguments[0]!==void 0?arguments[0]:[],e=0,t=i.length;e=0||w.indexOf("Bottom")>=0?p.top="".concat(x.height-f.offset[1],"px"):(w.indexOf("Top")>=0||w.indexOf("bottom")>=0)&&(p.top="".concat(-f.offset[1],"px")),w.indexOf("left")>=0||w.indexOf("Right")>=0?p.left="".concat(x.width-f.offset[0],"px"):(w.indexOf("right")>=0||w.indexOf("Left")>=0)&&(p.left="".concat(-f.offset[0],"px")),d.style.transformOrigin="".concat(p.left," ").concat(p.top)}};return function(){var M,d,f,y=e.openClassName,w=e.color,x=e.overlayClassName,p=(M=Xt((d=n.default)===null||d===void 0?void 0:d.call(n)))!==null&&M!==void 0?M:null;p=p.length===1?p[0]:p;var $=c.value;if(e.visible===void 0&&b()&&($=!1),!p)return null;var E=g(Kt(p)?p:k("span",null,[p])),R=G((f={},N(f,y||"".concat(l.value,"-open"),!0),N(f,E.props&&E.props.class,E.props&&E.props.class),f)),I=G(x,N({},"".concat(l.value,"-").concat(w),w&&Ft.test(w))),F,U;w&&!Ft.test(w)&&(F={backgroundColor:w},U={backgroundColor:w});var oe=m(m(m({},o),e),{},{prefixCls:l.value,getPopupContainer:u.value,builtinPlacements:V.value,visible:$,ref:h,overlayClassName:I,overlayInnerStyle:F,onVisibleChange:C,onPopupAlign:_});return k(aa,oe,{default:function(){return[c.value?Be(E,{class:R}):E]},arrowContent:function(){return k("span",{class:"".concat(l.value,"-arrow-content"),style:U},null)},overlay:S})}}}),va=Jt(da);var ot=function(e,t){var n,a,o=t.attrs,r=o.included,s=o.vertical,l=o.style,u=o.class,c=o.length,h=o.offset,v=o.reverse;c<0&&(v=!v,c=Math.abs(c),h=100-h);var b=s?(n={},N(n,v?"top":"bottom","".concat(h,"%")),N(n,v?"bottom":"top","auto"),N(n,"height","".concat(c,"%")),n):(a={},N(a,v?"right":"left","".concat(h,"%")),N(a,v?"left":"right","auto"),N(a,"width","".concat(c,"%")),a),C=m(m({},l),b);return r?k("div",{class:u,style:C},null):null};ot.inheritAttrs=!1;var pa=function(e,t,n,a,o,r){Je(n?a>0:!0,"Slider","`Slider[step]` should be a positive number in order to make Slider[dots] work.");var s=Object.keys(t).map(parseFloat).sort(function(u,c){return u-c});if(n&&a)for(var l=o;l<=r;l+=a)s.indexOf(l)===-1&&s.push(l);return s},pn=function(e,t){var n=t.attrs,a=n.prefixCls,o=n.vertical,r=n.reverse,s=n.marks,l=n.dots,u=n.step,c=n.included,h=n.lowerBound,v=n.upperBound,b=n.max,C=n.min,P=n.dotStyle,V=n.activeDotStyle,T=b-C,g=pa(o,s,l,u,C,b).map(function(S){var _,M="".concat(Math.abs(S-C)/T*100,"%"),d=!c&&S===v||c&&S<=v&&S>=h,f=o?m(m({},P),{},N({},r?"top":"bottom",M)):m(m({},P),{},N({},r?"right":"left",M));d&&(f=m(m({},f),V));var y=G((_={},N(_,"".concat(a,"-dot"),!0),N(_,"".concat(a,"-dot-active"),d),N(_,"".concat(a,"-dot-reverse"),r),_));return k("span",{class:y,style:f,key:S},null)});return k("div",{class:"".concat(a,"-step")},[g])};pn.inheritAttrs=!1;var hn=function(e,t){var n=t.attrs,a=t.slots,o=n.class,r=n.vertical,s=n.reverse,l=n.marks,u=n.included,c=n.upperBound,h=n.lowerBound,v=n.max,b=n.min,C=n.onClickLabel,P=Object.keys(l),V=a.mark,T=v-b,g=P.map(parseFloat).sort(function(S,_){return S-_}).map(function(S){var _,M=typeof l[S]=="function"?l[S]():l[S],d=ve(M)==="object"&&!Kt(M),f=d?M.label:M;if(!f&&f!==0)return null;V&&(f=V({point:S,label:f}));var y=!u&&S===c||u&&S<=c&&S>=h,w=G((_={},N(_,"".concat(o,"-text"),!0),N(_,"".concat(o,"-text-active"),y),_)),x=N({marginBottom:"-50%"},s?"top":"bottom","".concat((S-b)/T*100,"%")),p=N({transform:"translateX(".concat(s?"50%":"-50%",")"),msTransform:"translateX(".concat(s?"50%":"-50%",")")},s?"right":"left","".concat((S-b)/T*100,"%")),$=r?x:p,E=d?m(m({},$),M.style):$,R=N({},te?"onTouchstartPassive":"onTouchstart",function(I){return C(I,S)});return k("span",m({class:w,style:E,key:S,onMousedown:function(F){return C(F,S)}},R),[f])});return k("div",{class:o},[g])};hn.inheritAttrs=!1;const mn=W({compatConfig:{MODE:3},name:"Handle",inheritAttrs:!1,props:{prefixCls:String,vertical:{type:Boolean,default:void 0},offset:Number,disabled:{type:Boolean,default:void 0},min:Number,max:Number,value:Number,tabindex:O.oneOfType([O.number,O.string]),reverse:{type:Boolean,default:void 0},ariaLabel:String,ariaLabelledBy:String,ariaValueTextFormatter:Function,onMouseenter:{type:Function},onMouseleave:{type:Function},onMousedown:{type:Function}},setup:function(e,t){var n=t.attrs,a=t.emit,o=t.expose,r=D(!1),s=D(),l=function(){document.activeElement===s.value&&(r.value=!0)},u=function(g){r.value=!1,a("blur",g)},c=function(){r.value=!1},h=function(){var g;(g=s.value)===null||g===void 0||g.focus()},v=function(){var g;(g=s.value)===null||g===void 0||g.blur()},b=function(){r.value=!0,h()},C=function(g){g.preventDefault(),h(),a("mousedown",g)};o({focus:h,blur:v,clickFocus:b,ref:s});var P=null;Pe(function(){P=K(document,"mouseup",l)}),Ee(function(){var T;(T=P)===null||T===void 0||T.remove()});var V=L(function(){var T,g,S=e.vertical,_=e.offset,M=e.reverse;return S?(T={},N(T,M?"top":"bottom","".concat(_,"%")),N(T,M?"bottom":"top","auto"),N(T,"transform",M?null:"translateY(+50%)"),T):(g={},N(g,M?"right":"left","".concat(_,"%")),N(g,M?"left":"right","auto"),N(g,"transform","translateX(".concat(M?"+":"-","50%)")),g)});return function(){var T=e.prefixCls,g=e.disabled,S=e.min,_=e.max,M=e.value,d=e.tabindex,f=e.ariaLabel,y=e.ariaLabelledBy,w=e.ariaValueTextFormatter,x=e.onMouseenter,p=e.onMouseleave,$=G(n.class,N({},"".concat(T,"-handle-click-focused"),r.value)),E={"aria-valuemin":S,"aria-valuemax":_,"aria-valuenow":M,"aria-disabled":!!g},R=[n.style,V.value],I=d||0;(g||d===null)&&(I=null);var F;w&&(F=w(M));var U=m(m(m({},n),{},{role:"slider",tabindex:I},E),{},{class:$,onBlur:u,onKeydown:c,onMousedown:C,onMouseenter:x,onMouseleave:p,ref:s,style:R});return k("div",m(m({},U),{},{"aria-label":f,"aria-labelledby":y,"aria-valuetext":F}),null)}}});function We(i,e){try{return Object.keys(e).some(function(t){return i.target===e[t].ref})}catch{return!1}}function gn(i,e){var t=e.min,n=e.max;return in}function Ht(i){return i.touches.length>1||i.type.toLowerCase()==="touchend"&&i.touches.length>0}function Rt(i,e){var t=e.marks,n=e.step,a=e.min,o=e.max,r=Object.keys(t).map(parseFloat);if(n!==null){var s=Math.pow(10,yn(n)),l=Math.floor((o*s-a*s)/(n*s)),u=Math.min((i-a)/n,l),c=Math.round(u)*n+a;r.push(c)}var h=r.map(function(v){return Math.abs(i-v)});return r[h.indexOf(Math.min.apply(Math,q(h)))]}function yn(i){var e=i.toString(),t=0;return e.indexOf(".")>=0&&(t=e.length-e.indexOf(".")-1),t}function Lt(i,e){var t=1;return window.visualViewport&&(t=+(window.visualViewport.width/document.body.getBoundingClientRect().width).toFixed(2)),(i?e.clientY:e.pageX)/t}function jt(i,e){var t=1;return window.visualViewport&&(t=+(window.visualViewport.width/document.body.getBoundingClientRect().width).toFixed(2)),(i?e.touches[0].clientY:e.touches[0].pageX)/t}function It(i,e){var t=e.getBoundingClientRect();return i?t.top+t.height*.5:window.pageXOffset+t.left+t.width*.5}function rt(i,e){var t=e.max,n=e.min;return i<=n?n:i>=t?t:i}function bn(i,e){var t=e.step,n=isFinite(Rt(i,e))?Rt(i,e):0;return t===null?n:parseFloat(n.toFixed(yn(t)))}function de(i){i.stopPropagation(),i.preventDefault()}function ha(i,e,t){var n={increase:function(s,l){return s+l},decrease:function(s,l){return s-l}},a=n[i](Object.keys(t.marks).indexOf(JSON.stringify(e)),1),o=Object.keys(t.marks)[a];return t.step?n[i](e,t.step):Object.keys(t.marks).length&&t.marks[o]?t.marks[o]:e}function wn(i,e,t){var n="increase",a="decrease",o=n;switch(i.keyCode){case Q.UP:o=e&&t?a:n;break;case Q.RIGHT:o=!e&&t?a:n;break;case Q.DOWN:o=e&&t?n:a;break;case Q.LEFT:o=!e&&t?n:a;break;case Q.END:return function(r,s){return s.max};case Q.HOME:return function(r,s){return s.min};case Q.PAGE_UP:return function(r,s){return r+s.step*2};case Q.PAGE_DOWN:return function(r,s){return r-s.step*2};default:return}return function(r,s){return ha(o,r,s)}}var ma=["index","directives","className","style"];function ie(){}function Cn(i){var e={id:String,min:Number,max:Number,step:Number,marks:O.object,included:{type:Boolean,default:void 0},prefixCls:String,disabled:{type:Boolean,default:void 0},handle:Function,dots:{type:Boolean,default:void 0},vertical:{type:Boolean,default:void 0},reverse:{type:Boolean,default:void 0},minimumTrackStyle:O.object,maximumTrackStyle:O.object,handleStyle:O.oneOfType([O.object,O.arrayOf(O.object)]),trackStyle:O.oneOfType([O.object,O.arrayOf(O.object)]),railStyle:O.object,dotStyle:O.object,activeDotStyle:O.object,autofocus:{type:Boolean,default:void 0},draggableTrack:{type:Boolean,default:void 0}};return W({compatConfig:{MODE:3},name:"CreateSlider",mixins:[He,i],inheritAttrs:!1,slots:["mark"],props:Ze(e,{prefixCls:"rc-slider",min:0,max:100,step:1,marks:{},included:!0,disabled:!1,dots:!1,vertical:!1,reverse:!1,trackStyle:[{}],handleStyle:[{}],railStyle:{},dotStyle:{},activeDotStyle:{}}),emits:["change","blur","focus"],data:function(){var n=this.step,a=this.max,o=this.min,r=isFinite(a-o)?(a-o)%n===0:!0;return Je(n&&Math.floor(n)===n?r:!0,"Slider[max] - Slider[min] (".concat(a-o,") should be a multiple of Slider[step] (").concat(n,")")),this.handlesRefs={},{}},mounted:function(){var n=this;this.$nextTick(function(){n.document=n.sliderRef&&n.sliderRef.ownerDocument;var a=n.autofocus,o=n.disabled;a&&!o&&n.focus()})},beforeUnmount:function(){var n=this;this.$nextTick(function(){n.removeDocumentEvents()})},methods:{defaultHandle:function(n){var a=n.index;n.directives;var o=n.className,r=n.style,s=De(n,ma);if(delete s.dragging,s.value===null)return null;var l=m(m({},s),{},{class:o,style:r,key:a});return k(mn,l,null)},onDown:function(n,a){var o=a,r=this.$props,s=r.draggableTrack,l=r.vertical,u=this.$data.bounds,c=s&&this.positionGetValue?this.positionGetValue(o)||[]:[],h=We(n,this.handlesRefs);if(this.dragTrack=s&&u.length>=2&&!h&&!c.map(function(b,C){var P=C?!0:b>=u[C];return C===c.length-1?b<=u[C]:P}).some(function(b){return!b}),this.dragTrack)this.dragOffset=o,this.startBounds=q(u);else{if(!h)this.dragOffset=0;else{var v=It(l,n.target);this.dragOffset=o-v,o=v}this.onStart(o)}},onMouseDown:function(n){if(n.button===0){this.removeDocumentEvents();var a=this.$props.vertical,o=Lt(a,n);this.onDown(n,o),this.addDocumentMouseEvents()}},onTouchStart:function(n){if(!Ht(n)){var a=this.vertical,o=jt(a,n);this.onDown(n,o),this.addDocumentTouchEvents(),de(n)}},onFocus:function(n){var a=this.vertical;if(We(n,this.handlesRefs)&&!this.dragTrack){var o=It(a,n.target);this.dragOffset=0,this.onStart(o),de(n),this.$emit("focus",n)}},onBlur:function(n){this.dragTrack||this.onEnd(),this.$emit("blur",n)},onMouseUp:function(){this.handlesRefs[this.prevMovedHandleIndex]&&this.handlesRefs[this.prevMovedHandleIndex].clickFocus()},onMouseMove:function(n){if(!this.sliderRef){this.onEnd();return}var a=Lt(this.vertical,n);this.onMove(n,a-this.dragOffset,this.dragTrack,this.startBounds)},onTouchMove:function(n){if(Ht(n)||!this.sliderRef){this.onEnd();return}var a=jt(this.vertical,n);this.onMove(n,a-this.dragOffset,this.dragTrack,this.startBounds)},onKeyDown:function(n){this.sliderRef&&We(n,this.handlesRefs)&&this.onKeyboard(n)},onClickMarkLabel:function(n,a){var o=this;n.stopPropagation(),this.onChange({sValue:a}),this.setState({sValue:a},function(){return o.onEnd(!0)})},getSliderStart:function(){var n=this.sliderRef,a=this.vertical,o=this.reverse,r=n.getBoundingClientRect();return a?o?r.bottom:r.top:window.pageXOffset+(o?r.right:r.left)},getSliderLength:function(){var n=this.sliderRef;if(!n)return 0;var a=n.getBoundingClientRect();return this.vertical?a.height:a.width},addDocumentTouchEvents:function(){this.onTouchMoveListener=K(this.document,"touchmove",this.onTouchMove),this.onTouchUpListener=K(this.document,"touchend",this.onEnd)},addDocumentMouseEvents:function(){this.onMouseMoveListener=K(this.document,"mousemove",this.onMouseMove),this.onMouseUpListener=K(this.document,"mouseup",this.onEnd)},removeDocumentEvents:function(){this.onTouchMoveListener&&this.onTouchMoveListener.remove(),this.onTouchUpListener&&this.onTouchUpListener.remove(),this.onMouseMoveListener&&this.onMouseMoveListener.remove(),this.onMouseUpListener&&this.onMouseUpListener.remove()},focus:function(){var n;this.$props.disabled||(n=this.handlesRefs[0])===null||n===void 0||n.focus()},blur:function(){var n=this;this.$props.disabled||Object.keys(this.handlesRefs).forEach(function(a){var o,r;(o=n.handlesRefs[a])===null||o===void 0||(r=o.blur)===null||r===void 0||r.call(o)})},calcValue:function(n){var a=this.vertical,o=this.min,r=this.max,s=Math.abs(Math.max(n,0)/this.getSliderLength()),l=a?(1-s)*(r-o)+o:s*(r-o)+o;return l},calcValueByPos:function(n){var a=this.reverse?-1:1,o=a*(n-this.getSliderStart()),r=this.trimAlignValue(this.calcValue(o));return r},calcOffset:function(n){var a=this.min,o=this.max,r=(n-a)/(o-a);return Math.max(0,r*100)},saveSlider:function(n){this.sliderRef=n},saveHandle:function(n,a){this.handlesRefs[n]=a}},render:function(){var n,a=this.prefixCls,o=this.marks,r=this.dots,s=this.step,l=this.included,u=this.disabled,c=this.vertical,h=this.reverse,v=this.min,b=this.max,C=this.maximumTrackStyle,P=this.railStyle,V=this.dotStyle,T=this.activeDotStyle,g=this.id,S=this.$attrs,_=S.class,M=S.style,d=this.renderSlider(),f=d.tracks,y=d.handles,w=G(a,_,(n={},N(n,"".concat(a,"-with-marks"),Object.keys(o).length),N(n,"".concat(a,"-disabled"),u),N(n,"".concat(a,"-vertical"),c),n)),x={vertical:c,marks:o,included:l,lowerBound:this.getLowerBound(),upperBound:this.getUpperBound(),max:b,min:v,reverse:h,class:"".concat(a,"-mark"),onClickLabel:u?ie:this.onClickMarkLabel},p=N({},te?"onTouchstartPassive":"onTouchstart",u?ie:this.onTouchStart);return k("div",m(m({id:g,ref:this.saveSlider,tabindex:"-1",class:w},p),{},{onMousedown:u?ie:this.onMouseDown,onMouseup:u?ie:this.onMouseUp,onKeydown:u?ie:this.onKeyDown,onFocus:u?ie:this.onFocus,onBlur:u?ie:this.onBlur,style:M}),[k("div",{class:"".concat(a,"-rail"),style:m(m({},C),P)},null),f,k(pn,{prefixCls:a,vertical:c,reverse:h,marks:o,dots:r,step:s,included:l,lowerBound:this.getLowerBound(),upperBound:this.getUpperBound(),max:b,min:v,dotStyle:V,activeDotStyle:T},null),y,k(hn,x,{mark:this.$slots.mark}),Yt(this)])}})}var ga=W({compatConfig:{MODE:3},name:"Slider",mixins:[He],inheritAttrs:!1,props:{defaultValue:Number,value:Number,disabled:{type:Boolean,default:void 0},autofocus:{type:Boolean,default:void 0},tabindex:O.oneOfType([O.number,O.string]),reverse:{type:Boolean,default:void 0},min:Number,max:Number,ariaLabelForHandle:String,ariaLabelledByForHandle:String,ariaValueTextFormatterForHandle:String,startPoint:Number},emits:["beforeChange","afterChange","change"],data:function(){var e=this.defaultValue!==void 0?this.defaultValue:this.min,t=this.value!==void 0?this.value:e;return{sValue:this.trimAlignValue(t),dragging:!1}},watch:{value:{handler:function(e){this.setChangeValue(e)},deep:!0},min:function(){var e=this.sValue;this.setChangeValue(e)},max:function(){var e=this.sValue;this.setChangeValue(e)}},methods:{setChangeValue:function(e){var t=e!==void 0?e:this.sValue,n=this.trimAlignValue(t,this.$props);n!==this.sValue&&(this.setState({sValue:n}),gn(t,this.$props)&&this.$emit("change",n))},onChange:function(e){var t=!Ae(this,"value"),n=e.sValue>this.max?m(m({},e),{},{sValue:this.max}):e;t&&this.setState(n);var a=n.sValue;this.$emit("change",a)},onStart:function(e){this.setState({dragging:!0});var t=this.sValue;this.$emit("beforeChange",t);var n=this.calcValueByPos(e);this.startValue=n,this.startPosition=e,n!==t&&(this.prevMovedHandleIndex=0,this.onChange({sValue:n}))},onEnd:function(e){var t=this.dragging;this.removeDocumentEvents(),(t||e)&&this.$emit("afterChange",this.sValue),this.setState({dragging:!1})},onMove:function(e,t){de(e);var n=this.sValue,a=this.calcValueByPos(t);a!==n&&this.onChange({sValue:a})},onKeyboard:function(e){var t=this.$props,n=t.reverse,a=t.vertical,o=wn(e,a,n);if(o){de(e);var r=this.sValue,s=o(r,this.$props),l=this.trimAlignValue(s);if(l===r)return;this.onChange({sValue:l}),this.$emit("afterChange",l),this.onEnd()}},getLowerBound:function(){var e=this.$props.startPoint||this.$props.min;return this.$data.sValue>e?e:this.$data.sValue},getUpperBound:function(){return this.$data.sValue1&&arguments[1]!==void 0?arguments[1]:{};if(e===null)return null;var n=m(m({},this.$props),t),a=rt(e,n);return bn(a,n)},getTrack:function(e){var t=e.prefixCls,n=e.reverse,a=e.vertical,o=e.included,r=e.minimumTrackStyle,s=e.mergedTrackStyle,l=e.length,u=e.offset;return k(ot,{class:"".concat(t,"-track"),vertical:a,included:o,offset:u,reverse:n,length:l,style:m(m({},r),s)},null)},renderSlider:function(){var e=this,t=this.prefixCls,n=this.vertical,a=this.included,o=this.disabled,r=this.minimumTrackStyle,s=this.trackStyle,l=this.handleStyle,u=this.tabindex,c=this.ariaLabelForHandle,h=this.ariaLabelledByForHandle,v=this.ariaValueTextFormatterForHandle,b=this.min,C=this.max,P=this.startPoint,V=this.reverse,T=this.handle,g=this.defaultHandle,S=T||g,_=this.sValue,M=this.dragging,d=this.calcOffset(_),f=S({class:"".concat(t,"-handle"),prefixCls:t,vertical:n,offset:d,value:_,dragging:M,disabled:o,min:b,max:C,reverse:V,index:0,tabindex:u,ariaLabel:c,ariaLabelledBy:h,ariaValueTextFormatter:v,style:l[0]||l,ref:function(p){return e.saveHandle(0,p)},onFocus:this.onFocus,onBlur:this.onBlur}),y=P!==void 0?this.calcOffset(P):0,w=s[0]||s;return{tracks:this.getTrack({prefixCls:t,reverse:V,vertical:n,included:a,offset:y,minimumTrackStyle:r,mergedTrackStyle:w,length:d-y}),handles:f}}}});const ya=Cn(ga);var ge=function(e){var t=e.value,n=e.handle,a=e.bounds,o=e.props,r=o.allowCross,s=o.pushable,l=Number(s),u=rt(t,o),c=u;return!r&&n!=null&&a!==void 0&&(n>0&&u<=a[n-1]+l&&(c=a[n-1]+l),n=a[n+1]-l&&(c=a[n+1]-l)),bn(c,o)},ba={defaultValue:O.arrayOf(O.number),value:O.arrayOf(O.number),count:Number,pushable:jn(O.oneOfType([O.looseBool,O.number])),allowCross:{type:Boolean,default:void 0},disabled:{type:Boolean,default:void 0},reverse:{type:Boolean,default:void 0},tabindex:O.arrayOf(O.number),prefixCls:String,min:Number,max:Number,autofocus:{type:Boolean,default:void 0},ariaLabelGroupForHandles:Array,ariaLabelledByGroupForHandles:Array,ariaValueTextFormatterGroupForHandles:Array,draggableTrack:{type:Boolean,default:void 0}},wa=W({compatConfig:{MODE:3},name:"Range",mixins:[He],inheritAttrs:!1,props:Ze(ba,{count:1,allowCross:!0,pushable:!1,tabindex:[],draggableTrack:!1,ariaLabelGroupForHandles:[],ariaLabelledByGroupForHandles:[],ariaValueTextFormatterGroupForHandles:[]}),emits:["beforeChange","afterChange","change"],displayName:"Range",data:function(){var e=this,t=this.count,n=this.min,a=this.max,o=Array.apply(void 0,q(Array(t+1))).map(function(){return n}),r=Ae(this,"defaultValue")?this.defaultValue:o,s=this.value;s===void 0&&(s=r);var l=s.map(function(c,h){return ge({value:c,handle:h,props:e.$props})}),u=l[0]===a?0:l.length-1;return{sHandle:null,recent:u,bounds:l}},watch:{value:{handler:function(e){var t=this.bounds;this.setChangeValue(e||t)},deep:!0},min:function(){var e=this.value;this.setChangeValue(e||this.bounds)},max:function(){var e=this.value;this.setChangeValue(e||this.bounds)}},methods:{setChangeValue:function(e){var t=this,n=this.bounds,a=e.map(function(r,s){return ge({value:r,handle:s,bounds:n,props:t.$props})});if(n.length===a.length){if(a.every(function(r,s){return r===n[s]}))return null}else a=e.map(function(r,s){return ge({value:r,handle:s,props:t.$props})});if(this.setState({bounds:a}),e.some(function(r){return gn(r,t.$props)})){var o=e.map(function(r){return rt(r,t.$props)});this.$emit("change",o)}},onChange:function(e){var t=!Ae(this,"value");if(t)this.setState(e);else{var n={};["sHandle","recent"].forEach(function(r){e[r]!==void 0&&(n[r]=e[r])}),Object.keys(n).length&&this.setState(n)}var a=m(m({},this.$data),e),o=a.bounds;this.$emit("change",o)},positionGetValue:function(e){var t=this.getValue(),n=this.calcValueByPos(e),a=this.getClosestBound(n),o=this.getBoundNeedMoving(n,a),r=t[o];if(n===r)return null;var s=q(t);return s[o]=n,s},onStart:function(e){var t=this.bounds;this.$emit("beforeChange",t);var n=this.calcValueByPos(e);this.startValue=n,this.startPosition=e;var a=this.getClosestBound(n);this.prevMovedHandleIndex=this.getBoundNeedMoving(n,a),this.setState({sHandle:this.prevMovedHandleIndex,recent:this.prevMovedHandleIndex});var o=t[this.prevMovedHandleIndex];if(n!==o){var r=q(t);r[this.prevMovedHandleIndex]=n,this.onChange({bounds:r})}},onEnd:function(e){var t=this.sHandle;this.removeDocumentEvents(),t||(this.dragTrack=!1),(t!==null||e)&&this.$emit("afterChange",this.bounds),this.setState({sHandle:null})},onMove:function(e,t,n,a){de(e);var o=this.$data,r=this.$props,s=r.max||100,l=r.min||0;if(n){var u=r.vertical?-t:t;u=r.reverse?-u:u;var c=s-Math.max.apply(Math,q(a)),h=l-Math.min.apply(Math,q(a)),v=Math.min(Math.max(u/(this.getSliderLength()/100),h),c),b=a.map(function(g){return Math.floor(Math.max(Math.min(g+v,s),l))});o.bounds.map(function(g,S){return g===b[S]}).some(function(g){return!g})&&this.onChange({bounds:b});return}var C=this.bounds,P=this.sHandle,V=this.calcValueByPos(t),T=C[P];V!==T&&this.moveTo(V)},onKeyboard:function(e){var t=this.$props,n=t.reverse,a=t.vertical,o=wn(e,a,n);if(o){de(e);var r=this.bounds,s=this.sHandle,l=r[s===null?this.recent:s],u=o(l,this.$props),c=ge({value:u,handle:s,bounds:r,props:this.$props});if(c===l)return;var h=!0;this.moveTo(c,h)}},getClosestBound:function(e){for(var t=this.bounds,n=0,a=1;a=t[a]&&(n=a);return Math.abs(t[n+1]-e)=a.length||r<0)return!1;var s=t+n,l=a[r],u=this.pushable,c=Number(u),h=n*(e[s]-l);return this.pushHandle(e,s,n,c-h)?(e[t]=l,!0):!1},trimAlignValue:function(e){var t=this.sHandle,n=this.bounds;return ge({value:e,handle:t,bounds:n,props:this.$props})},ensureValueNotConflict:function(e,t,n){var a=n.allowCross,o=n.pushable,r=this.$data||{},s=r.bounds;if(e=e===void 0?r.sHandle:e,o=Number(o),!a&&e!=null&&s!==void 0){if(e>0&&t<=s[e-1]+o)return s[e-1]+o;if(e=s[e+1]-o)return s[e+1]-o}return t},getTrack:function(e){var t=e.bounds,n=e.prefixCls,a=e.reverse,o=e.vertical,r=e.included,s=e.offsets,l=e.trackStyle;return t.slice(0,-1).map(function(u,c){var h,v=c+1,b=G((h={},N(h,"".concat(n,"-track"),!0),N(h,"".concat(n,"-track-").concat(v),!0),h));return k(ot,{class:b,vertical:o,reverse:a,included:r,offset:s[v-1],length:s[v]-s[v-1],style:l[c],key:v},null)})},renderSlider:function(){var e=this,t=this.sHandle,n=this.bounds,a=this.prefixCls,o=this.vertical,r=this.included,s=this.disabled,l=this.min,u=this.max,c=this.reverse,h=this.handle,v=this.defaultHandle,b=this.trackStyle,C=this.handleStyle,P=this.tabindex,V=this.ariaLabelGroupForHandles,T=this.ariaLabelledByGroupForHandles,g=this.ariaValueTextFormatterGroupForHandles,S=h||v,_=n.map(function(f){return e.calcOffset(f)}),M="".concat(a,"-handle"),d=n.map(function(f,y){var w,x=P[y]||0;(s||P[y]===null)&&(x=null);var p=t===y;return S({class:G((w={},N(w,M,!0),N(w,"".concat(M,"-").concat(y+1),!0),N(w,"".concat(M,"-dragging"),p),w)),prefixCls:a,vertical:o,dragging:p,offset:_[y],value:f,index:y,tabindex:x,min:l,max:u,reverse:c,disabled:s,style:C[y],ref:function(E){return e.saveHandle(y,E)},onFocus:e.onFocus,onBlur:e.onBlur,ariaLabel:V[y],ariaLabelledBy:T[y],ariaValueTextFormatter:g[y]})});return{tracks:this.getTrack({bounds:n,prefixCls:a,reverse:c,vertical:o,included:r,offsets:_,trackStyle:b}),handles:d}}}});const Ca=Cn(wa),xa=W({compatConfig:{MODE:3},name:"SliderTooltip",inheritAttrs:!1,props:vn(),setup:function(e,t){var n=t.attrs,a=t.slots,o=D(null),r=D(null);function s(){Z.cancel(r.value),r.value=null}function l(){r.value=Z(function(){var c;(c=o.value)===null||c===void 0||c.forcePopupAlign(),r.value=null})}var u=function(){s(),e.visible&&l()};return z([function(){return e.visible},function(){return e.title}],function(){u()},{flush:"post",immediate:!0}),In(function(){u()}),Ee(function(){s()}),function(){return k(va,m(m({ref:o},e),n),a)}}});var Pa=["value","dragging","index"],Ta=["tooltipPrefixCls","range","id"],Sa=function(e){return typeof e=="number"?e.toString():""},Ma=function(){return{id:String,prefixCls:String,tooltipPrefixCls:String,range:{type:[Boolean,Object],default:void 0},reverse:{type:Boolean,default:void 0},min:Number,max:Number,step:{type:[Number,Object]},marks:{type:Object},dots:{type:Boolean,default:void 0},value:{type:[Number,Array]},defaultValue:{type:[Number,Array]},included:{type:Boolean,default:void 0},disabled:{type:Boolean,default:void 0},vertical:{type:Boolean,default:void 0},tipFormatter:{type:[Function,Object],default:function(){return Sa}},tooltipVisible:{type:Boolean,default:void 0},tooltipPlacement:{type:String},getTooltipPopupContainer:{type:Function},autofocus:{type:Boolean,default:void 0},handleStyle:{type:[Object,Array]},trackStyle:{type:[Object,Array]},onChange:{type:Function},onAfterChange:{type:Function},onFocus:{type:Function},onBlur:{type:Function},"onUpdate:value":{type:Function}}},Oa=W({compatConfig:{MODE:3},name:"ASlider",inheritAttrs:!1,props:Ma(),slots:["mark"],setup:function(e,t){var n=t.attrs,a=t.slots,o=t.emit,r=t.expose,s=qt("slider",e),l=s.prefixCls,u=s.rootPrefixCls,c=s.direction,h=s.getPopupContainer,v=s.configProvider,b=ei(),C=D(),P=D({}),V=function(y,w){P.value[y]=w},T=L(function(){return e.tooltipPlacement?e.tooltipPlacement:e.vertical?c.value==="rtl"?"left":"right":"top"}),g=function(){var y;(y=C.value)===null||y===void 0||y.focus()},S=function(){var y;(y=C.value)===null||y===void 0||y.blur()},_=function(y){o("update:value",y),o("change",y),b.onFieldChange()},M=function(y){o("blur",y)};r({focus:g,blur:S});var d=function(y){var w=y.tooltipPrefixCls,x=y.info,p=x.value,$=x.dragging,E=x.index,R=De(x,Pa),I=e.tipFormatter,F=e.tooltipVisible,U=e.getTooltipPopupContainer,oe=I?P.value[E]||$:!1,pe=F||F===void 0&&oe;return k(xa,{prefixCls:w,title:I?I(p):"",visible:pe,placement:T.value,transitionName:"".concat(u.value,"-zoom-down"),key:E,overlayClassName:"".concat(l.value,"-tooltip"),getPopupContainer:U||h.value},{default:function(){return[k(mn,m(m({},R),{},{value:p,onMouseenter:function(){return V(E,!0)},onMouseleave:function(){return V(E,!1)}}),null)]}})};return function(){var f=e.tooltipPrefixCls,y=e.range,w=e.id,x=w===void 0?b.id.value:w,p=De(e,Ta),$=v.getPrefixCls("tooltip",f),E=G(n.class,N({},"".concat(l.value,"-rtl"),c.value==="rtl"));c.value==="rtl"&&!p.vertical&&(p.reverse=!p.reverse);var R;return ve(y)==="object"&&(R=y.draggableTrack),y?k(Ca,m(m({},p),{},{step:p.step,draggableTrack:R,class:E,ref:C,handle:function(F){return d({tooltipPrefixCls:$,prefixCls:l.value,info:F})},prefixCls:l.value,onChange:_,onBlur:M}),{mark:a.mark}):k(ya,m(m({},p),{},{id:x,step:p.step,class:E,ref:C,handle:function(F){return d({tooltipPrefixCls:$,prefixCls:l.value,info:F})},prefixCls:l.value,onChange:_,onBlur:M}),{mark:a.mark})}}});const ka=Jt(Oa),_a=["aria-expanded"],Va={class:"dd__title"},$a={class:"dd__chevron","aria-hidden":"true"},Aa=["inert"],Da={class:"dd__clip"},Ba={class:"dd__body"},Na=W({__name:"DropDown",props:{text:{},defaultOpen:{type:Boolean,default:!1}},setup(i){const t=D(i.defaultOpen);return(n,a)=>(H(),j("div",{class:ue(["dd",{"is-open":t.value}])},[B("button",{type:"button",class:"dd__head","aria-expanded":t.value,onClick:a[0]||(a[0]=o=>t.value=!t.value)},[B("h3",Va,[ft(n.$slots,"text",{},()=>[we(ee(i.text),1)],!0)]),B("span",$a,[k(Ce,{icon:"vuesax-linear:arrow-down",size:"16"})])],8,_a),B("div",{class:"dd__panel",inert:!t.value},[B("div",Da,[B("div",Ba,[ft(n.$slots,"default",{},void 0,!0)])])],8,Aa)],2))}}),Wt=Zt(Na,[["__scopeId","data-v-4d05a970"]]),Ea={class:"fSheet__headRow"},Fa={id:"fSheet-title",class:"fSheet__title"},Ha={key:0,class:"fSheet__count"},Ra={class:"fSheet__body"},La={key:0,class:"fSheet__chips"},ja=["aria-pressed","onClick"],Ia={key:1,class:"fSheet__empty"},Wa={class:"fSheet__gram"},za={class:"fSheet__gramFigures"},Ua={class:"fSheet__gramFigure"},Xa={class:"fSheet__gramFigure"},Ya=90,Ga=.5,qa=W({__name:"Filters",props:{show:{type:Boolean},modelValue:{},filterKeys:{},products:{}},emits:["update:show","update:filterKeys"],setup(i,{emit:e}){const t=i,n=e,a=L(()=>{const x=new Map;for(const p of t.products)p.brand&&x.set(p.brand.id,p.brand);return[...x.values()]}),o=L(()=>{const x=t.products.flatMap(p=>p.variants.map($=>parseFloat($.rashWeightGrams)));return x.length===0?[0,100]:[Math.floor(Math.min(...x)),Math.ceil(Math.max(...x))]}),r=D([]),s=D([...o.value]);let l=!1;function u(){r.value=[...t.modelValue.brands];const x=t.modelValue.limit_gram;l=x.length===2,s.value=x.length===2?[x[0],x[1]]:[...o.value]}z(()=>t.show,x=>{x&&u()},{immediate:!0}),z(o,x=>{l||(s.value=[...x])});function c(x){Array.isArray(x)&&(s.value=[x[0],x[1]],l=!0)}const h=L(()=>{const[x,p]=s.value,[$,E]=o.value;return Math.abs(x-$)>.001||Math.abs(p-E)>.001}),v=L(()=>r.value.length+(h.value?1:0));function b(x){const p=r.value.indexOf(x);r.value=p===-1?[...r.value,x]:r.value.filter($=>$!==x)}function C(x){return x%1===0?String(x):String(+x.toFixed(2))}function P(){const x=t.modelValue;x.brands=[...r.value],x.limit_gram=h.value?[...s.value]:[];const p=[];x.brands.length&&p.push("brands"),x.limit_gram.length&&p.push("limit_gram"),n("update:filterKeys",p),T()}function V(){r.value=[],s.value=[...o.value],l=!1,P()}function T(){n("update:show",!1)}const g=D(0),S=D(!1);let _=0,M=0;const d=L(()=>g.value?{transform:`translate3d(0, ${g.value}px, 0)`}:void 0);function f(x){x.target.closest("button")||(_=x.touches[0].clientY,M=Date.now(),S.value=!0)}function y(x){if(!S.value)return;const p=x.touches[0].clientY-_;g.value=p>0?p:p*.12}function w(){if(!S.value)return;S.value=!1;const x=g.value/Math.max(1,Date.now()-M);g.value>Ya||g.value>30&&x>Ga?T():g.value=0}return(x,p)=>(H(),Qt(ae(Wn),{show:i.show,position:"bottom",teleport:"body",transition:"fSheet-slide",class:"fSheet","overlay-class":"fSheet__overlay","close-on-popstate":"","onUpdate:show":p[0]||(p[0]=$=>n("update:show",$)),onClosed:p[1]||(p[1]=$=>g.value=0)},{default:ce(()=>[B("div",{class:ue(["fSheet__card",{"is-dragging":S.value}]),style:zn(d.value),dir:"rtl",role:"dialog","aria-modal":"true","aria-labelledby":"fSheet-title"},[B("header",{class:"fSheet__head",onTouchstartPassive:f,onTouchmovePassive:y,onTouchend:w,onTouchcancel:w},[p[3]||(p[3]=B("span",{class:"fSheet__grip","aria-hidden":"true"},null,-1)),B("div",Ea,[B("h3",Fa,[p[2]||(p[2]=we(" فیلترها ",-1)),v.value?(H(),j("span",Ha,ee(v.value),1)):re("",!0)]),B("button",{type:"button",class:"fSheet__close","aria-label":"بستن",onClick:T},[k(Ce,{icon:"vuesax-linear:add",size:"18"})])])],32),B("div",Ra,[k(Wt,{text:"برند","default-open":""},{default:ce(()=>[a.value.length?(H(),j("div",La,[(H(!0),j(le,null,ye(a.value,$=>(H(),j("button",{key:$.id,type:"button",class:ue(["fSheet__chip",{"is-on":r.value.includes($.id)}]),"aria-pressed":r.value.includes($.id),onClick:E=>b($.id)},ee($.title),11,ja))),128))])):(H(),j("p",Ia,"برندی برای فیلتر موجود نیست."))]),_:1}),k(Wt,{text:"وزن (گرم)","default-open":""},{default:ce(()=>[B("div",Wa,[k(ae(ka),{value:s.value,step:.01,range:"",reverse:"",min:o.value[0],max:o.value[1],"tooltip-visible":!1,"onUpdate:value":c},null,8,["value","min","max"]),B("div",za,[B("span",Ua,[p[4]||(p[4]=B("i",null,"کمترین",-1)),B("b",null,ee(C(s.value[0])),1),p[5]||(p[5]=we(" گرم ",-1))]),B("span",Xa,[p[6]||(p[6]=B("i",null,"بیشترین",-1)),B("b",null,ee(C(s.value[1])),1),p[7]||(p[7]=we(" گرم ",-1))])])])]),_:1})]),B("footer",{class:"fSheet__bar"},[B("button",{type:"button",class:"fSheet__clear",onClick:V},"پاک کردن"),B("button",{type:"button",class:"fSheet__apply",onClick:P},"اعمال فیلتر")])],6)]),_:1},8,["show"]))}}),Ka={class:"search"},Ja={class:"search__barExtra"},Za={class:"search__chips no-scrollbar"},Qa=["onClick"],eo={key:0,class:"search__skeleton","aria-hidden":"true"},to={class:"search__grid"},no={key:1,class:"search__collections"},io=["onClick"],ao={key:2,class:"search__grid"},oo={key:4,class:"search__empty"},ro=6,ze=20,so=W({__name:"SearchView",setup(i){const e=ni(),t=ii(),n=D(!t.loaded),a=D(!1),o=L(()=>t.products),r=D(!1),s=D([]),l=L(()=>{const d=new Map;for(const f of o.value)f.category&&d.set(f.category.id,f.category);return[...d.values()]}),u=L(()=>{const d=new Map;for(const f of o.value)for(const y of f.collections)d.set(y.collection.id,{id:y.collection.id,title:y.collection.title});return[...d.values()]}),c=L(()=>{let d=o.value;const f=e.query;return f.text&&(d=d.filter(y=>y.title.includes(f.text))),f.cats&&f.cats.length>0&&(d=d.filter(y=>y.category&&f.cats.includes(y.category.id))),f.brands.length>0&&(d=d.filter(y=>y.brand&&f.brands.includes(y.brand.id))),f.limit_gram.length===2&&(d=d.filter(y=>y.variants.some(w=>parseFloat(w.rashWeightGrams)>=f.limit_gram[0]&&parseFloat(w.rashWeightGrams)<=f.limit_gram[1]))),d}),h=D(ze),v=L(()=>c.value.slice(0,h.value)),b=L(()=>h.value{d.some(f=>f.isIntersecting)&&b.value&&(h.value+=ze)},{rootMargin:"400px"}),P.observe(C.value))}z(c,()=>{h.value=ze}),z(C,V),Ee(()=>P==null?void 0:P.disconnect());async function T(d=!1){n.value=!t.loaded;try{await t.load(d)}catch(f){console.log(f)}finally{n.value=!1}}async function g(){await T(!0),a.value=!1}function S(d){e.query.text=d}function _(d){e.query.cats=d?[d]:void 0}function M(){r.value=!0}return Pe(()=>T()),(d,f)=>{const y=Xn("container");return H(),j("div",Ka,[k(Yn,{title:"جستجو"},{below:ce(()=>[B("div",Ja,[k(Gn,{onSearch:S,"place-holder":"جستجوی دسته بندی، محصولات و ..."}),B("div",Za,[B("button",{type:"button",class:ue(["search__chip search__chip--filter",{"is-on":s.value.length>0}]),onClick:M},[k(Ce,{icon:"vuesax-linear:filter",size:"15"}),we(" "+ee(s.value.length>0?`${s.value.length} فیلتر`:"فیلتر"),1)],2),B("button",{type:"button",class:ue(["search__chip",{"is-on":!ae(e).query.cats}]),onClick:f[0]||(f[0]=w=>_(void 0))}," همه ",2),(H(!0),j(le,null,ye(l.value,w=>(H(),j("button",{key:w.id,type:"button",class:ue(["search__chip",{"is-on":ae(e).query.cats&&ae(e).query.cats[0]===w.id}]),onClick:x=>_(w.id)},ee(w.title),11,Qa))),128))])])]),_:1}),B("div",null,[k(Mn,{modelValue:a.value,"onUpdate:modelValue":f[1]||(f[1]=w=>a.value=w),onRefresh:g},{default:ce(()=>[k(y,{class:"search__body"},{default:ce(()=>[n.value&&!o.value.length?(H(),j("div",eo,[f[6]||(f[6]=B("div",{class:"search__skHead"},[B("span",{class:"skeleton search__skLine search__skLine--title"}),B("span",{class:"skeleton search__skLine search__skLine--sub"})],-1)),B("div",to,[(H(),j(le,null,ye(ro,w=>B("div",{key:w,class:"search__skCard"},[...f[5]||(f[5]=[B("div",{class:"skeleton search__skArt"},null,-1),B("div",{class:"search__skBody"},[B("span",{class:"skeleton search__skLine search__skLine--name"}),B("span",{class:"skeleton search__skLine search__skLine--meta"})],-1)])])),64))])])):re("",!0),u.value.length?(H(),j("div",no,[(H(!0),j(le,null,ye(u.value,w=>(H(),j("button",{key:w.id,type:"button",class:"search__collection",onClick:x=>d.$router.push({path:`/collection/${w.id}`,query:{page:w.title}})},[k(Ce,{icon:"vuesax-linear:money-recive",size:"19"}),B("span",null,ee(w.title),1)],8,io))),128))])):re("",!0),c.value.length?(H(),j("div",ao,[(H(!0),j(le,null,ye(v.value,w=>(H(),Qt(ti,{key:w.id,value:w},null,8,["value"]))),128))])):re("",!0),b.value?(H(),j("div",{key:3,ref_key:"sentinel",ref:C,class:"search__more"},[k(Un,{spinning:!0,indicator:!0,fixed:!1,tip:"",cls:"my-[10px]"})],512)):re("",!0),!c.value.length&&!n.value?(H(),j("section",oo,[k(Ce,{icon:"vuesax-linear:search-normal-1",size:"26"}),f[7]||(f[7]=B("p",null,"محصولی با این مشخصات پیدا نشد.",-1))])):re("",!0)]),_:1})]),_:1},8,["modelValue"])]),k(qa,{show:r.value,"onUpdate:show":f[2]||(f[2]=w=>r.value=w),filterKeys:s.value,"onUpdate:filterKeys":f[3]||(f[3]=w=>s.value=w),modelValue:ae(e).query,"onUpdate:modelValue":f[4]||(f[4]=w=>ae(e).query=w),products:o.value},null,8,["show","filterKeys","modelValue","products"])])}}}),Co=Zt(so,[["__scopeId","data-v-da5df41e"]]);export{Co as default}; diff --git a/apps/user-app/dist/assets/SearchView-DrsdyLde.js b/apps/user-app/dist/assets/SearchView-DrsdyLde.js new file mode 100644 index 0000000..0a5fec8 --- /dev/null +++ b/apps/user-app/dist/assets/SearchView-DrsdyLde.js @@ -0,0 +1 @@ +import{A as Mn}from"./AppPullRefresh-RDVLXVM_.js";import{aa as m,x as k,am as Ke,v as zt,p as On,d as W,ap as Ut,az as G,k as D,w as z,o as Pe,c as Ee,aD as lt,j as L,aH as $e,$ as Ue,a6 as kn,a7 as _n,ar as ve,b2 as Vn,a2 as $n,y as ut,ah as N,b3 as An,aC as q,b4 as Dn,a9 as Bn,ak as O,aP as Xt,b5 as Yt,b6 as ct,F as le,b7 as Ae,b8 as Nn,a8 as Me,ax as En,ai as Fn,an as Hn,aU as De,aZ as Rn,ay as Gt,aj as qt,aT as Ze,aE as Kt,aq as Je,b9 as Ln,aY as Zt,ba as jn,b as In,e as H,f as j,g as B,S as ft,W as we,t as ee,I as Ce,i as ue,_ as Jt,O as Qt,J as ce,q as ae,bb as Wn,h as re,r as ye,n as zn,T as Un,M as Xn}from"./index-B-RmZRr2.js";import{P as Yn}from"./PageBar-DmOKrVEQ.js";import{S as Gn}from"./SearchInput-BkGXK-xm.js";import{s as te,P as dt,u as qn,a as Kn,K as Q}from"./KeyCode-DsOsmuVa.js";import{w as J}from"./raf-nDFcuFT6.js";import{_ as Zn,i as Jn,y as Qn}from"./isEqual-CAQ2DK4R.js";import{c as Be,a as ei}from"./FormItemContext-Buff0-hx.js";import{P as ti}from"./ProductCard-AevItfr3.js";import{u as ni}from"./filtersStore-B8ucFdIZ.js";import{u as ii}from"./catalogStore-D54EVMFO.js";function K(i,e,t,n){if(i&&i.addEventListener){var a=n;a===void 0&&te&&(e==="touchstart"||e==="touchmove"||e==="wheel")&&(a={passive:!1}),i.addEventListener(e,t,a)}return{remove:function(){i&&i.removeEventListener&&i.removeEventListener(e,t)}}}function se(i,e){return i?i.contains(e):!1}var en=["moz","ms","webkit"];function ai(){var i=0;return function(e){var t=new Date().getTime(),n=Math.max(0,16-(t-i)),a=window.setTimeout(function(){e(t+n)},n);return i=t+n,a}}function oi(){if(typeof window>"u")return function(){};if(window.requestAnimationFrame)return window.requestAnimationFrame.bind(window);var i=en.filter(function(e){return"".concat(e,"RequestAnimationFrame")in window})[0];return i?window["".concat(i,"RequestAnimationFrame")]:ai()}function ri(i){if(typeof window>"u")return null;if(window.cancelAnimationFrame)return window.cancelAnimationFrame(i);var e=en.filter(function(t){return"".concat(t,"CancelAnimationFrame")in window||"".concat(t,"CancelRequestAnimationFrame")in window})[0];return e?(window["".concat(e,"CancelAnimationFrame")]||window["".concat(e,"CancelRequestAnimationFrame")]).call(this,i):clearTimeout(i)}var vt=oi(),si=function(e){return ri(e.id)},li=function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,n=Date.now();function a(){Date.now()-n>=t?e.call():o.id=vt(a)}var o={id:vt(a)};return o},Qe={visible:Boolean,prefixCls:String,zIndex:Number,destroyPopupOnHide:Boolean,forceRender:Boolean,animation:[String,Object],transitionName:String,stretch:{type:String},align:{type:Object},point:{type:Object},getRootDomNode:{type:Function},getClassNameFromAlign:{type:Function},onMouseenter:{type:Function},onMouseleave:{type:Function},onMousedown:{type:Function},onTouchstart:{type:Function}},ui=m(m({},Qe),{},{mobile:{type:Object}}),ci=m(m({},Qe),{},{mask:Boolean,mobile:{type:Object},maskAnimation:String,maskTransitionName:String});function tn(i){var e=i.prefixCls,t=i.animation,n=i.transitionName;return t?{name:"".concat(e,"-").concat(t)}:n?{name:n}:{}}function nn(i){var e=i.prefixCls,t=i.visible,n=i.zIndex,a=i.mask,o=i.maskAnimation,r=i.maskTransitionName;if(!a)return null;var s={};return(r||o)&&(s=tn({prefixCls:e,transitionName:r,animation:o})),k(Ke,m({appear:!0},s),{default:function(){return[zt(k("div",{style:{zIndex:n},class:"".concat(e,"-mask")},null),[[On("if"),t]])]}})}nn.displayName="Mask";const fi=W({compatConfig:{MODE:3},name:"MobilePopupInner",inheritAttrs:!1,props:ui,emits:["mouseenter","mouseleave","mousedown","touchstart","align"],setup:function(e,t){var n=t.expose,a=t.slots,o=D();return n({forceAlign:function(){},getElement:function(){return o.value}}),function(){var r,s=e.zIndex,l=e.visible,u=e.prefixCls,c=e.mobile,h=c===void 0?{}:c,v=h.popupClassName,b=h.popupStyle,C=h.popupMotion,P=C===void 0?{}:C,V=h.popupRender,T=m({zIndex:s},b),g=Ut((r=a.default)===null||r===void 0?void 0:r.call(a));g.length>1&&(g=k("div",{class:"".concat(u,"-content")},[g])),V&&(g=V(g));var S=G(u,v);return k(Ke,m({ref:o},P),{default:function(){return[l?k("div",{class:S,style:T},[g]):null]}})}}});var pt=["measure","align",null,"motion"];const di=function(i,e){var t=D(null),n=D(),a=D(!1);function o(l){a.value||(t.value=l)}function r(){J.cancel(n.value)}function s(l){r(),n.value=J(function(){var u=t.value;switch(t.value){case"align":u="motion";break;case"motion":u="stable";break}o(u),l==null||l()})}return z(i,function(){o("measure")},{immediate:!0,flush:"post"}),Pe(function(){z(t,function(){switch(t.value){case"measure":e();break}t.value&&(n.value=J(Zn(lt.mark(function l(){var u,c;return lt.wrap(function(v){for(;;)switch(v.prev=v.next){case 0:u=pt.indexOf(t.value),c=pt[u+1],c&&u!==-1&&o(c);case 3:case"end":return v.stop()}},l)}))))},{immediate:!0,flush:"post"})}),Ee(function(){a.value=!0,r()}),[t,s]},vi=function(i){var e=D({width:0,height:0});function t(a){e.value={width:a.offsetWidth,height:a.offsetHeight}}var n=L(function(){var a={};if(i.value){var o=e.value,r=o.width,s=o.height;i.value.indexOf("height")!==-1&&s?a.height="".concat(s,"px"):i.value.indexOf("minHeight")!==-1&&s&&(a.minHeight="".concat(s,"px")),i.value.indexOf("width")!==-1&&r?a.width="".concat(r,"px"):i.value.indexOf("minWidth")!==-1&&r&&(a.minWidth="".concat(r,"px"))}return a});return[n,t]};function ht(i,e){var t=Object.keys(i);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(i);e&&(n=n.filter(function(a){return Object.getOwnPropertyDescriptor(i,a).enumerable})),t.push.apply(t,n)}return t}function mt(i){for(var e=1;e=0&&t.left>=0&&t.bottom>t.top&&t.right>t.left?t:null}function Ei(i,e,t,n){var a=A.clone(i),o={width:e.width,height:e.height};return n.adjustX&&a.left=t.left&&a.left+o.width>t.right&&(o.width-=a.left+o.width-t.right),n.adjustX&&a.left+o.width>t.right&&(a.left=Math.max(t.right-o.width,t.left)),n.adjustY&&a.top=t.top&&a.top+o.height>t.bottom&&(o.height-=a.top+o.height-t.bottom),n.adjustY&&a.top+o.height>t.bottom&&(a.top=Math.max(t.bottom-o.height,t.top)),A.mix(a,o)}function it(i){var e,t,n;if(!A.isWindow(i)&&i.nodeType!==9)e=A.offset(i),t=A.outerWidth(i),n=A.outerHeight(i);else{var a=A.getWindow(i);e={left:A.getWindowScrollLeft(a),top:A.getWindowScrollTop(a)},t=A.viewportWidth(a),n=A.viewportHeight(a)}return e.width=t,e.height=n,e}function Tt(i,e){var t=e.charAt(0),n=e.charAt(1),a=i.width,o=i.height,r=i.left,s=i.top;return t==="c"?s+=o/2:t==="b"&&(s+=o),n==="c"?r+=a/2:n==="r"&&(r+=a),{left:r,top:s}}function ke(i,e,t,n,a){var o=Tt(e,t[1]),r=Tt(i,t[0]),s=[r.left-o.left,r.top-o.top];return{left:Math.round(i.left-s[0]+n[0]-a[0]),top:Math.round(i.top-s[1]+n[1]-a[1])}}function St(i,e,t){return i.leftt.right}function Mt(i,e,t){return i.topt.bottom}function Fi(i,e,t){return i.left>t.right||i.left+e.widtht.bottom||i.top+e.height=t.right||n.top>=t.bottom}function at(i,e,t){var n=t.target||e,a=it(n),o=!Ri(n,t.overflow&&t.overflow.alwaysByViewport);return fn(i,a,t,o)}at.__getOffsetParent=qe;at.__getVisibleRectForElement=nt;function Li(i,e,t){var n,a,o=A.getDocument(i),r=o.defaultView||o.parentWindow,s=A.getWindowScrollLeft(r),l=A.getWindowScrollTop(r),u=A.viewportWidth(r),c=A.viewportHeight(r);"pageX"in e?n=e.pageX:n=s+e.clientX,"pageY"in e?a=e.pageY:a=l+e.clientY;var h={left:n,top:a,width:0,height:0},v=n>=0&&n<=s+u&&a>=0&&a<=l+c,b=[t.points[0],"cc"];return fn(i,h,mt(mt({},t),{},{points:b}),v)}const ji=function(i){if(!i)return!1;if(i.offsetParent)return!0;if(i.getBBox){var e=i.getBBox();if(e.width||e.height)return!0}if(i.getBoundingClientRect){var t=i.getBoundingClientRect();if(t.width||t.height)return!0}return!1};function Ii(i,e){return i===e?!0:!i||!e?!1:"pageX"in e&&"pageY"in e?i.pageX===e.pageX&&i.pageY===e.pageY:"clientX"in e&&"clientY"in e?i.clientX===e.clientX&&i.clientY===e.clientY:!1}function Wi(i,e){i!==document.activeElement&&se(e,i)&&typeof i.focus=="function"&&i.focus()}function _t(i,e){var t=null,n=null;function a(r){var s=$e(r,1),l=s[0].target;if(document.documentElement.contains(l)){var u=l.getBoundingClientRect(),c=u.width,h=u.height,v=Math.floor(c),b=Math.floor(h);(t!==v||n!==b)&&Promise.resolve().then(function(){e({width:v,height:b})}),t=v,n=b}}var o=new Jn(a);return i&&o.observe(i),function(){o.disconnect()}}const zi=function(i,e){var t=!1,n=null;function a(){clearTimeout(n)}function o(r){if(!t||r===!0){if(i()===!1)return;t=!0,a(),n=setTimeout(function(){t=!1},e.value)}else a(),n=setTimeout(function(){t=!1,o()},e.value)}return[o,function(){t=!1,a()}]};var Ui={align:Object,target:[Object,Function],onAlign:Function,monitorBufferTime:Number,monitorWindowResize:Boolean,disabled:Boolean};function Vt(i){return typeof i!="function"?null:i()}function $t(i){return ve(i)!=="object"||!i?null:i}const Xi=W({compatConfig:{MODE:3},name:"Align",props:Ui,emits:["align"],setup:function(e,t){var n=t.expose,a=t.slots,o=D({}),r=D(),s=zi(function(){var P=e.disabled,V=e.target,T=e.align,g=e.onAlign;if(!P&&V&&r.value){var S=r.value,_,M=Vt(V),d=$t(V);o.value.element=M,o.value.point=d,o.value.align=T;var f=document,y=f.activeElement;return M&&ji(M)?_=at(S,M,T):d&&(_=Li(S,d,T)),Wi(y,S),g&&_&&g(S,_),!0}return!1},L(function(){return e.monitorBufferTime})),l=$e(s,2),u=l[0],c=l[1],h=D({cancel:function(){}}),v=D({cancel:function(){}}),b=function(){var V=e.target,T=Vt(V),g=$t(V);r.value!==v.value.element&&(v.value.cancel(),v.value.element=r.value,v.value.cancel=_t(r.value,u)),(o.value.element!==T||!Ii(o.value.point,g)||!Qn(o.value.align,e.align))&&(u(),h.value.element!==T&&(h.value.cancel(),h.value.element=T,h.value.cancel=_t(T,u)))};Pe(function(){Ue(function(){b()})}),kn(function(){Ue(function(){b()})}),z(function(){return e.disabled},function(P){P?c():u()},{immediate:!0,flush:"post"});var C=D(null);return z(function(){return e.monitorWindowResize},function(P){P?C.value||(C.value=K(window,"resize",u)):C.value&&(C.value.remove(),C.value=null)},{flush:"post"}),_n(function(){h.value.cancel(),v.value.cancel(),C.value&&C.value.remove(),c()}),n({forceAlign:function(){return u(!0)}}),function(){var P=a==null?void 0:a.default();return P?Be(P[0],{ref:r},!0,!0):null}}}),Yi=W({compatConfig:{MODE:3},name:"PopupInner",inheritAttrs:!1,props:Qe,emits:["mouseenter","mouseleave","mousedown","touchstart","align"],setup:function(e,t){var n=t.expose,a=t.attrs,o=t.slots,r=D(),s=D(),l=D(),u=vi(An(e,"stretch")),c=$e(u,2),h=c[0],v=c[1],b=function(){e.stretch&&v(e.getRootDomNode())},C=D(!1),P;z(function(){return e.visible},function(p){clearTimeout(P),p?P=setTimeout(function(){C.value=e.visible}):C.value=!1},{immediate:!0});var V=di(C,b),T=$e(V,2),g=T[0],S=T[1],_=D(),M=function(){return e.point?e.point:e.getRootDomNode},d=function(){var $;($=r.value)===null||$===void 0||$.forceAlign()},f=function($,E){var R=e.getClassNameFromAlign(E),I=l.value;if(l.value!==R&&(l.value=R),g.value==="align"){var F;I!==R?Promise.resolve().then(function(){d()}):S(function(){var U;(U=_.value)===null||U===void 0||U.call(_)}),(F=e.onAlign)===null||F===void 0||F.call(e,$,E)}},y=L(function(){var p=ve(e.animation)==="object"?e.animation:tn(e);return["onAfterEnter","onAfterLeave"].forEach(function($){var E=p[$];p[$]=function(R){S(),g.value="stable",E==null||E(R)}}),p}),w=function(){return new Promise(function($){_.value=$})};z([y,g],function(){!y.value&&g.value==="motion"&&S()},{immediate:!0}),n({forceAlign:d,getElement:function(){return s.value.$el||s.value}});var x=L(function(){var p;return!((p=e.align)!==null&&p!==void 0&&p.points&&(g.value==="align"||g.value==="stable"))});return function(){var p,$=e.zIndex,E=e.align,R=e.prefixCls,I=e.destroyPopupOnHide,F=e.onMouseenter,U=e.onMouseleave,oe=e.onTouchstart,pe=oe===void 0?function(){}:oe,st=e.onMousedown,he=g.value,xn=[m(m({},h.value),{},{zIndex:$,opacity:he==="motion"||he==="stable"||!C.value?null:0,pointerEvents:!C.value&&he!=="stable"?"none":null}),a.style],Se=Ut((p=o.default)===null||p===void 0?void 0:p.call(o,{visible:e.visible}));Se.length>1&&(Se=k("div",{class:"".concat(R,"-content")},[Se]));var Pn=G(R,a.class,l.value),Tn=C.value||!e.visible,Sn=Tn?Vn(y.value.name,y.value):{};return k(Ke,m(m({ref:s},Sn),{},{onBeforeEnter:w}),{default:function(){return!I||e.visible?zt(k(Xi,{target:M(),key:"popup",ref:r,monitorWindowResize:!0,disabled:x.value,align:E,onAlign:f},{default:function(){return k("div",m(m({class:Pn,onMouseenter:F,onMouseleave:U,onMousedown:ut(st,["capture"])},N({},te?"onTouchstartPassive":"onTouchstart",ut(pe,["capture"]))),{},{style:xn}),[Se])}}),[[$n,C.value]]):null}})}}}),Gi=W({compatConfig:{MODE:3},name:"Popup",inheritAttrs:!1,props:ci,setup:function(e,t){var n=t.attrs,a=t.slots,o=t.expose,r=D(!1),s=D(!1),l=D();return z([function(){return e.visible},function(){return e.mobile}],function(){r.value=e.visible,e.visible&&e.mobile&&(s.value=!0)},{immediate:!0,flush:"post"}),o({forceAlign:function(){var c;(c=l.value)===null||c===void 0||c.forceAlign()},getElement:function(){var c;return(c=l.value)===null||c===void 0?void 0:c.getElement()}}),function(){var u=m(m(m({},e),n),{},{visible:r.value}),c=s.value?k(fi,m(m({},u),{},{mobile:e.mobile,ref:l}),{default:a.default}):k(Yi,m(m({},u),{},{ref:l}),{default:a.default});return k("div",null,[k(nn,u,null),c])}}});function qi(i,e,t){return t?i[0]===e[0]:i[0]===e[0]&&i[1]===e[1]}function At(i,e,t){var n=i[e]||{};return m(m({},n),t)}function Ki(i,e,t,n){for(var a=t.points,o=Object.keys(i),r=0;r0&&arguments[0]!==void 0?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,n=typeof e=="function"?e(this.$data,this.$props):e;if(this.getDerivedStateFromProps){var a=this.getDerivedStateFromProps(Dn(this),m(m({},this.$data),n));if(a===null)return;n=m(m({},n),a||{})}Bn(this.$data,n),this._.isMounted&&this.$forceUpdate(),Ue(function(){t&&t()})},__emit:function(){var e=[].slice.call(arguments,0),t=e[0];t="on".concat(t[0].toUpperCase()).concat(t.substring(1));var n=this.$props[t]||this.$attrs[t];if(e.length&&n)if(Array.isArray(n))for(var a=0,o=n.length;a0&&arguments[0]!==void 0?arguments[0]:[],e=0,t=i.length;e=0||w.indexOf("Bottom")>=0?p.top="".concat(x.height-f.offset[1],"px"):(w.indexOf("Top")>=0||w.indexOf("bottom")>=0)&&(p.top="".concat(-f.offset[1],"px")),w.indexOf("left")>=0||w.indexOf("Right")>=0?p.left="".concat(x.width-f.offset[0],"px"):(w.indexOf("right")>=0||w.indexOf("Left")>=0)&&(p.left="".concat(-f.offset[0],"px")),d.style.transformOrigin="".concat(p.left," ").concat(p.top)}};return function(){var M,d,f,y=e.openClassName,w=e.color,x=e.overlayClassName,p=(M=Xt((d=n.default)===null||d===void 0?void 0:d.call(n)))!==null&&M!==void 0?M:null;p=p.length===1?p[0]:p;var $=c.value;if(e.visible===void 0&&b()&&($=!1),!p)return null;var E=g(Kt(p)?p:k("span",null,[p])),R=G((f={},N(f,y||"".concat(l.value,"-open"),!0),N(f,E.props&&E.props.class,E.props&&E.props.class),f)),I=G(x,N({},"".concat(l.value,"-").concat(w),w&&Ft.test(w))),F,U;w&&!Ft.test(w)&&(F={backgroundColor:w},U={backgroundColor:w});var oe=m(m(m({},o),e),{},{prefixCls:l.value,getPopupContainer:u.value,builtinPlacements:V.value,visible:$,ref:h,overlayClassName:I,overlayInnerStyle:F,onVisibleChange:C,onPopupAlign:_});return k(aa,oe,{default:function(){return[c.value?Be(E,{class:R}):E]},arrowContent:function(){return k("span",{class:"".concat(l.value,"-arrow-content"),style:U},null)},overlay:S})}}}),va=Zt(da);var ot=function(e,t){var n,a,o=t.attrs,r=o.included,s=o.vertical,l=o.style,u=o.class,c=o.length,h=o.offset,v=o.reverse;c<0&&(v=!v,c=Math.abs(c),h=100-h);var b=s?(n={},N(n,v?"top":"bottom","".concat(h,"%")),N(n,v?"bottom":"top","auto"),N(n,"height","".concat(c,"%")),n):(a={},N(a,v?"right":"left","".concat(h,"%")),N(a,v?"left":"right","auto"),N(a,"width","".concat(c,"%")),a),C=m(m({},l),b);return r?k("div",{class:u,style:C},null):null};ot.inheritAttrs=!1;var pa=function(e,t,n,a,o,r){Ze(n?a>0:!0,"Slider","`Slider[step]` should be a positive number in order to make Slider[dots] work.");var s=Object.keys(t).map(parseFloat).sort(function(u,c){return u-c});if(n&&a)for(var l=o;l<=r;l+=a)s.indexOf(l)===-1&&s.push(l);return s},pn=function(e,t){var n=t.attrs,a=n.prefixCls,o=n.vertical,r=n.reverse,s=n.marks,l=n.dots,u=n.step,c=n.included,h=n.lowerBound,v=n.upperBound,b=n.max,C=n.min,P=n.dotStyle,V=n.activeDotStyle,T=b-C,g=pa(o,s,l,u,C,b).map(function(S){var _,M="".concat(Math.abs(S-C)/T*100,"%"),d=!c&&S===v||c&&S<=v&&S>=h,f=o?m(m({},P),{},N({},r?"top":"bottom",M)):m(m({},P),{},N({},r?"right":"left",M));d&&(f=m(m({},f),V));var y=G((_={},N(_,"".concat(a,"-dot"),!0),N(_,"".concat(a,"-dot-active"),d),N(_,"".concat(a,"-dot-reverse"),r),_));return k("span",{class:y,style:f,key:S},null)});return k("div",{class:"".concat(a,"-step")},[g])};pn.inheritAttrs=!1;var hn=function(e,t){var n=t.attrs,a=t.slots,o=n.class,r=n.vertical,s=n.reverse,l=n.marks,u=n.included,c=n.upperBound,h=n.lowerBound,v=n.max,b=n.min,C=n.onClickLabel,P=Object.keys(l),V=a.mark,T=v-b,g=P.map(parseFloat).sort(function(S,_){return S-_}).map(function(S){var _,M=typeof l[S]=="function"?l[S]():l[S],d=ve(M)==="object"&&!Kt(M),f=d?M.label:M;if(!f&&f!==0)return null;V&&(f=V({point:S,label:f}));var y=!u&&S===c||u&&S<=c&&S>=h,w=G((_={},N(_,"".concat(o,"-text"),!0),N(_,"".concat(o,"-text-active"),y),_)),x=N({marginBottom:"-50%"},s?"top":"bottom","".concat((S-b)/T*100,"%")),p=N({transform:"translateX(".concat(s?"50%":"-50%",")"),msTransform:"translateX(".concat(s?"50%":"-50%",")")},s?"right":"left","".concat((S-b)/T*100,"%")),$=r?x:p,E=d?m(m({},$),M.style):$,R=N({},te?"onTouchstartPassive":"onTouchstart",function(I){return C(I,S)});return k("span",m({class:w,style:E,key:S,onMousedown:function(F){return C(F,S)}},R),[f])});return k("div",{class:o},[g])};hn.inheritAttrs=!1;const mn=W({compatConfig:{MODE:3},name:"Handle",inheritAttrs:!1,props:{prefixCls:String,vertical:{type:Boolean,default:void 0},offset:Number,disabled:{type:Boolean,default:void 0},min:Number,max:Number,value:Number,tabindex:O.oneOfType([O.number,O.string]),reverse:{type:Boolean,default:void 0},ariaLabel:String,ariaLabelledBy:String,ariaValueTextFormatter:Function,onMouseenter:{type:Function},onMouseleave:{type:Function},onMousedown:{type:Function}},setup:function(e,t){var n=t.attrs,a=t.emit,o=t.expose,r=D(!1),s=D(),l=function(){document.activeElement===s.value&&(r.value=!0)},u=function(g){r.value=!1,a("blur",g)},c=function(){r.value=!1},h=function(){var g;(g=s.value)===null||g===void 0||g.focus()},v=function(){var g;(g=s.value)===null||g===void 0||g.blur()},b=function(){r.value=!0,h()},C=function(g){g.preventDefault(),h(),a("mousedown",g)};o({focus:h,blur:v,clickFocus:b,ref:s});var P=null;Pe(function(){P=K(document,"mouseup",l)}),Ee(function(){var T;(T=P)===null||T===void 0||T.remove()});var V=L(function(){var T,g,S=e.vertical,_=e.offset,M=e.reverse;return S?(T={},N(T,M?"top":"bottom","".concat(_,"%")),N(T,M?"bottom":"top","auto"),N(T,"transform",M?null:"translateY(+50%)"),T):(g={},N(g,M?"right":"left","".concat(_,"%")),N(g,M?"left":"right","auto"),N(g,"transform","translateX(".concat(M?"+":"-","50%)")),g)});return function(){var T=e.prefixCls,g=e.disabled,S=e.min,_=e.max,M=e.value,d=e.tabindex,f=e.ariaLabel,y=e.ariaLabelledBy,w=e.ariaValueTextFormatter,x=e.onMouseenter,p=e.onMouseleave,$=G(n.class,N({},"".concat(T,"-handle-click-focused"),r.value)),E={"aria-valuemin":S,"aria-valuemax":_,"aria-valuenow":M,"aria-disabled":!!g},R=[n.style,V.value],I=d||0;(g||d===null)&&(I=null);var F;w&&(F=w(M));var U=m(m(m({},n),{},{role:"slider",tabindex:I},E),{},{class:$,onBlur:u,onKeydown:c,onMousedown:C,onMouseenter:x,onMouseleave:p,ref:s,style:R});return k("div",m(m({},U),{},{"aria-label":f,"aria-labelledby":y,"aria-valuetext":F}),null)}}});function We(i,e){try{return Object.keys(e).some(function(t){return i.target===e[t].ref})}catch{return!1}}function gn(i,e){var t=e.min,n=e.max;return in}function Ht(i){return i.touches.length>1||i.type.toLowerCase()==="touchend"&&i.touches.length>0}function Rt(i,e){var t=e.marks,n=e.step,a=e.min,o=e.max,r=Object.keys(t).map(parseFloat);if(n!==null){var s=Math.pow(10,yn(n)),l=Math.floor((o*s-a*s)/(n*s)),u=Math.min((i-a)/n,l),c=Math.round(u)*n+a;r.push(c)}var h=r.map(function(v){return Math.abs(i-v)});return r[h.indexOf(Math.min.apply(Math,q(h)))]}function yn(i){var e=i.toString(),t=0;return e.indexOf(".")>=0&&(t=e.length-e.indexOf(".")-1),t}function Lt(i,e){var t=1;return window.visualViewport&&(t=+(window.visualViewport.width/document.body.getBoundingClientRect().width).toFixed(2)),(i?e.clientY:e.pageX)/t}function jt(i,e){var t=1;return window.visualViewport&&(t=+(window.visualViewport.width/document.body.getBoundingClientRect().width).toFixed(2)),(i?e.touches[0].clientY:e.touches[0].pageX)/t}function It(i,e){var t=e.getBoundingClientRect();return i?t.top+t.height*.5:window.pageXOffset+t.left+t.width*.5}function rt(i,e){var t=e.max,n=e.min;return i<=n?n:i>=t?t:i}function bn(i,e){var t=e.step,n=isFinite(Rt(i,e))?Rt(i,e):0;return t===null?n:parseFloat(n.toFixed(yn(t)))}function de(i){i.stopPropagation(),i.preventDefault()}function ha(i,e,t){var n={increase:function(s,l){return s+l},decrease:function(s,l){return s-l}},a=n[i](Object.keys(t.marks).indexOf(JSON.stringify(e)),1),o=Object.keys(t.marks)[a];return t.step?n[i](e,t.step):Object.keys(t.marks).length&&t.marks[o]?t.marks[o]:e}function wn(i,e,t){var n="increase",a="decrease",o=n;switch(i.keyCode){case Q.UP:o=e&&t?a:n;break;case Q.RIGHT:o=!e&&t?a:n;break;case Q.DOWN:o=e&&t?n:a;break;case Q.LEFT:o=!e&&t?n:a;break;case Q.END:return function(r,s){return s.max};case Q.HOME:return function(r,s){return s.min};case Q.PAGE_UP:return function(r,s){return r+s.step*2};case Q.PAGE_DOWN:return function(r,s){return r-s.step*2};default:return}return function(r,s){return ha(o,r,s)}}var ma=["index","directives","className","style"];function ie(){}function Cn(i){var e={id:String,min:Number,max:Number,step:Number,marks:O.object,included:{type:Boolean,default:void 0},prefixCls:String,disabled:{type:Boolean,default:void 0},handle:Function,dots:{type:Boolean,default:void 0},vertical:{type:Boolean,default:void 0},reverse:{type:Boolean,default:void 0},minimumTrackStyle:O.object,maximumTrackStyle:O.object,handleStyle:O.oneOfType([O.object,O.arrayOf(O.object)]),trackStyle:O.oneOfType([O.object,O.arrayOf(O.object)]),railStyle:O.object,dotStyle:O.object,activeDotStyle:O.object,autofocus:{type:Boolean,default:void 0},draggableTrack:{type:Boolean,default:void 0}};return W({compatConfig:{MODE:3},name:"CreateSlider",mixins:[He,i],inheritAttrs:!1,slots:["mark"],props:Je(e,{prefixCls:"rc-slider",min:0,max:100,step:1,marks:{},included:!0,disabled:!1,dots:!1,vertical:!1,reverse:!1,trackStyle:[{}],handleStyle:[{}],railStyle:{},dotStyle:{},activeDotStyle:{}}),emits:["change","blur","focus"],data:function(){var n=this.step,a=this.max,o=this.min,r=isFinite(a-o)?(a-o)%n===0:!0;return Ze(n&&Math.floor(n)===n?r:!0,"Slider[max] - Slider[min] (".concat(a-o,") should be a multiple of Slider[step] (").concat(n,")")),this.handlesRefs={},{}},mounted:function(){var n=this;this.$nextTick(function(){n.document=n.sliderRef&&n.sliderRef.ownerDocument;var a=n.autofocus,o=n.disabled;a&&!o&&n.focus()})},beforeUnmount:function(){var n=this;this.$nextTick(function(){n.removeDocumentEvents()})},methods:{defaultHandle:function(n){var a=n.index;n.directives;var o=n.className,r=n.style,s=De(n,ma);if(delete s.dragging,s.value===null)return null;var l=m(m({},s),{},{class:o,style:r,key:a});return k(mn,l,null)},onDown:function(n,a){var o=a,r=this.$props,s=r.draggableTrack,l=r.vertical,u=this.$data.bounds,c=s&&this.positionGetValue?this.positionGetValue(o)||[]:[],h=We(n,this.handlesRefs);if(this.dragTrack=s&&u.length>=2&&!h&&!c.map(function(b,C){var P=C?!0:b>=u[C];return C===c.length-1?b<=u[C]:P}).some(function(b){return!b}),this.dragTrack)this.dragOffset=o,this.startBounds=q(u);else{if(!h)this.dragOffset=0;else{var v=It(l,n.target);this.dragOffset=o-v,o=v}this.onStart(o)}},onMouseDown:function(n){if(n.button===0){this.removeDocumentEvents();var a=this.$props.vertical,o=Lt(a,n);this.onDown(n,o),this.addDocumentMouseEvents()}},onTouchStart:function(n){if(!Ht(n)){var a=this.vertical,o=jt(a,n);this.onDown(n,o),this.addDocumentTouchEvents(),de(n)}},onFocus:function(n){var a=this.vertical;if(We(n,this.handlesRefs)&&!this.dragTrack){var o=It(a,n.target);this.dragOffset=0,this.onStart(o),de(n),this.$emit("focus",n)}},onBlur:function(n){this.dragTrack||this.onEnd(),this.$emit("blur",n)},onMouseUp:function(){this.handlesRefs[this.prevMovedHandleIndex]&&this.handlesRefs[this.prevMovedHandleIndex].clickFocus()},onMouseMove:function(n){if(!this.sliderRef){this.onEnd();return}var a=Lt(this.vertical,n);this.onMove(n,a-this.dragOffset,this.dragTrack,this.startBounds)},onTouchMove:function(n){if(Ht(n)||!this.sliderRef){this.onEnd();return}var a=jt(this.vertical,n);this.onMove(n,a-this.dragOffset,this.dragTrack,this.startBounds)},onKeyDown:function(n){this.sliderRef&&We(n,this.handlesRefs)&&this.onKeyboard(n)},onClickMarkLabel:function(n,a){var o=this;n.stopPropagation(),this.onChange({sValue:a}),this.setState({sValue:a},function(){return o.onEnd(!0)})},getSliderStart:function(){var n=this.sliderRef,a=this.vertical,o=this.reverse,r=n.getBoundingClientRect();return a?o?r.bottom:r.top:window.pageXOffset+(o?r.right:r.left)},getSliderLength:function(){var n=this.sliderRef;if(!n)return 0;var a=n.getBoundingClientRect();return this.vertical?a.height:a.width},addDocumentTouchEvents:function(){this.onTouchMoveListener=K(this.document,"touchmove",this.onTouchMove),this.onTouchUpListener=K(this.document,"touchend",this.onEnd)},addDocumentMouseEvents:function(){this.onMouseMoveListener=K(this.document,"mousemove",this.onMouseMove),this.onMouseUpListener=K(this.document,"mouseup",this.onEnd)},removeDocumentEvents:function(){this.onTouchMoveListener&&this.onTouchMoveListener.remove(),this.onTouchUpListener&&this.onTouchUpListener.remove(),this.onMouseMoveListener&&this.onMouseMoveListener.remove(),this.onMouseUpListener&&this.onMouseUpListener.remove()},focus:function(){var n;this.$props.disabled||(n=this.handlesRefs[0])===null||n===void 0||n.focus()},blur:function(){var n=this;this.$props.disabled||Object.keys(this.handlesRefs).forEach(function(a){var o,r;(o=n.handlesRefs[a])===null||o===void 0||(r=o.blur)===null||r===void 0||r.call(o)})},calcValue:function(n){var a=this.vertical,o=this.min,r=this.max,s=Math.abs(Math.max(n,0)/this.getSliderLength()),l=a?(1-s)*(r-o)+o:s*(r-o)+o;return l},calcValueByPos:function(n){var a=this.reverse?-1:1,o=a*(n-this.getSliderStart()),r=this.trimAlignValue(this.calcValue(o));return r},calcOffset:function(n){var a=this.min,o=this.max,r=(n-a)/(o-a);return Math.max(0,r*100)},saveSlider:function(n){this.sliderRef=n},saveHandle:function(n,a){this.handlesRefs[n]=a}},render:function(){var n,a=this.prefixCls,o=this.marks,r=this.dots,s=this.step,l=this.included,u=this.disabled,c=this.vertical,h=this.reverse,v=this.min,b=this.max,C=this.maximumTrackStyle,P=this.railStyle,V=this.dotStyle,T=this.activeDotStyle,g=this.id,S=this.$attrs,_=S.class,M=S.style,d=this.renderSlider(),f=d.tracks,y=d.handles,w=G(a,_,(n={},N(n,"".concat(a,"-with-marks"),Object.keys(o).length),N(n,"".concat(a,"-disabled"),u),N(n,"".concat(a,"-vertical"),c),n)),x={vertical:c,marks:o,included:l,lowerBound:this.getLowerBound(),upperBound:this.getUpperBound(),max:b,min:v,reverse:h,class:"".concat(a,"-mark"),onClickLabel:u?ie:this.onClickMarkLabel},p=N({},te?"onTouchstartPassive":"onTouchstart",u?ie:this.onTouchStart);return k("div",m(m({id:g,ref:this.saveSlider,tabindex:"-1",class:w},p),{},{onMousedown:u?ie:this.onMouseDown,onMouseup:u?ie:this.onMouseUp,onKeydown:u?ie:this.onKeyDown,onFocus:u?ie:this.onFocus,onBlur:u?ie:this.onBlur,style:M}),[k("div",{class:"".concat(a,"-rail"),style:m(m({},C),P)},null),f,k(pn,{prefixCls:a,vertical:c,reverse:h,marks:o,dots:r,step:s,included:l,lowerBound:this.getLowerBound(),upperBound:this.getUpperBound(),max:b,min:v,dotStyle:V,activeDotStyle:T},null),y,k(hn,x,{mark:this.$slots.mark}),Yt(this)])}})}var ga=W({compatConfig:{MODE:3},name:"Slider",mixins:[He],inheritAttrs:!1,props:{defaultValue:Number,value:Number,disabled:{type:Boolean,default:void 0},autofocus:{type:Boolean,default:void 0},tabindex:O.oneOfType([O.number,O.string]),reverse:{type:Boolean,default:void 0},min:Number,max:Number,ariaLabelForHandle:String,ariaLabelledByForHandle:String,ariaValueTextFormatterForHandle:String,startPoint:Number},emits:["beforeChange","afterChange","change"],data:function(){var e=this.defaultValue!==void 0?this.defaultValue:this.min,t=this.value!==void 0?this.value:e;return{sValue:this.trimAlignValue(t),dragging:!1}},watch:{value:{handler:function(e){this.setChangeValue(e)},deep:!0},min:function(){var e=this.sValue;this.setChangeValue(e)},max:function(){var e=this.sValue;this.setChangeValue(e)}},methods:{setChangeValue:function(e){var t=e!==void 0?e:this.sValue,n=this.trimAlignValue(t,this.$props);n!==this.sValue&&(this.setState({sValue:n}),gn(t,this.$props)&&this.$emit("change",n))},onChange:function(e){var t=!Ae(this,"value"),n=e.sValue>this.max?m(m({},e),{},{sValue:this.max}):e;t&&this.setState(n);var a=n.sValue;this.$emit("change",a)},onStart:function(e){this.setState({dragging:!0});var t=this.sValue;this.$emit("beforeChange",t);var n=this.calcValueByPos(e);this.startValue=n,this.startPosition=e,n!==t&&(this.prevMovedHandleIndex=0,this.onChange({sValue:n}))},onEnd:function(e){var t=this.dragging;this.removeDocumentEvents(),(t||e)&&this.$emit("afterChange",this.sValue),this.setState({dragging:!1})},onMove:function(e,t){de(e);var n=this.sValue,a=this.calcValueByPos(t);a!==n&&this.onChange({sValue:a})},onKeyboard:function(e){var t=this.$props,n=t.reverse,a=t.vertical,o=wn(e,a,n);if(o){de(e);var r=this.sValue,s=o(r,this.$props),l=this.trimAlignValue(s);if(l===r)return;this.onChange({sValue:l}),this.$emit("afterChange",l),this.onEnd()}},getLowerBound:function(){var e=this.$props.startPoint||this.$props.min;return this.$data.sValue>e?e:this.$data.sValue},getUpperBound:function(){return this.$data.sValue1&&arguments[1]!==void 0?arguments[1]:{};if(e===null)return null;var n=m(m({},this.$props),t),a=rt(e,n);return bn(a,n)},getTrack:function(e){var t=e.prefixCls,n=e.reverse,a=e.vertical,o=e.included,r=e.minimumTrackStyle,s=e.mergedTrackStyle,l=e.length,u=e.offset;return k(ot,{class:"".concat(t,"-track"),vertical:a,included:o,offset:u,reverse:n,length:l,style:m(m({},r),s)},null)},renderSlider:function(){var e=this,t=this.prefixCls,n=this.vertical,a=this.included,o=this.disabled,r=this.minimumTrackStyle,s=this.trackStyle,l=this.handleStyle,u=this.tabindex,c=this.ariaLabelForHandle,h=this.ariaLabelledByForHandle,v=this.ariaValueTextFormatterForHandle,b=this.min,C=this.max,P=this.startPoint,V=this.reverse,T=this.handle,g=this.defaultHandle,S=T||g,_=this.sValue,M=this.dragging,d=this.calcOffset(_),f=S({class:"".concat(t,"-handle"),prefixCls:t,vertical:n,offset:d,value:_,dragging:M,disabled:o,min:b,max:C,reverse:V,index:0,tabindex:u,ariaLabel:c,ariaLabelledBy:h,ariaValueTextFormatter:v,style:l[0]||l,ref:function(p){return e.saveHandle(0,p)},onFocus:this.onFocus,onBlur:this.onBlur}),y=P!==void 0?this.calcOffset(P):0,w=s[0]||s;return{tracks:this.getTrack({prefixCls:t,reverse:V,vertical:n,included:a,offset:y,minimumTrackStyle:r,mergedTrackStyle:w,length:d-y}),handles:f}}}});const ya=Cn(ga);var ge=function(e){var t=e.value,n=e.handle,a=e.bounds,o=e.props,r=o.allowCross,s=o.pushable,l=Number(s),u=rt(t,o),c=u;return!r&&n!=null&&a!==void 0&&(n>0&&u<=a[n-1]+l&&(c=a[n-1]+l),n=a[n+1]-l&&(c=a[n+1]-l)),bn(c,o)},ba={defaultValue:O.arrayOf(O.number),value:O.arrayOf(O.number),count:Number,pushable:jn(O.oneOfType([O.looseBool,O.number])),allowCross:{type:Boolean,default:void 0},disabled:{type:Boolean,default:void 0},reverse:{type:Boolean,default:void 0},tabindex:O.arrayOf(O.number),prefixCls:String,min:Number,max:Number,autofocus:{type:Boolean,default:void 0},ariaLabelGroupForHandles:Array,ariaLabelledByGroupForHandles:Array,ariaValueTextFormatterGroupForHandles:Array,draggableTrack:{type:Boolean,default:void 0}},wa=W({compatConfig:{MODE:3},name:"Range",mixins:[He],inheritAttrs:!1,props:Je(ba,{count:1,allowCross:!0,pushable:!1,tabindex:[],draggableTrack:!1,ariaLabelGroupForHandles:[],ariaLabelledByGroupForHandles:[],ariaValueTextFormatterGroupForHandles:[]}),emits:["beforeChange","afterChange","change"],displayName:"Range",data:function(){var e=this,t=this.count,n=this.min,a=this.max,o=Array.apply(void 0,q(Array(t+1))).map(function(){return n}),r=Ae(this,"defaultValue")?this.defaultValue:o,s=this.value;s===void 0&&(s=r);var l=s.map(function(c,h){return ge({value:c,handle:h,props:e.$props})}),u=l[0]===a?0:l.length-1;return{sHandle:null,recent:u,bounds:l}},watch:{value:{handler:function(e){var t=this.bounds;this.setChangeValue(e||t)},deep:!0},min:function(){var e=this.value;this.setChangeValue(e||this.bounds)},max:function(){var e=this.value;this.setChangeValue(e||this.bounds)}},methods:{setChangeValue:function(e){var t=this,n=this.bounds,a=e.map(function(r,s){return ge({value:r,handle:s,bounds:n,props:t.$props})});if(n.length===a.length){if(a.every(function(r,s){return r===n[s]}))return null}else a=e.map(function(r,s){return ge({value:r,handle:s,props:t.$props})});if(this.setState({bounds:a}),e.some(function(r){return gn(r,t.$props)})){var o=e.map(function(r){return rt(r,t.$props)});this.$emit("change",o)}},onChange:function(e){var t=!Ae(this,"value");if(t)this.setState(e);else{var n={};["sHandle","recent"].forEach(function(r){e[r]!==void 0&&(n[r]=e[r])}),Object.keys(n).length&&this.setState(n)}var a=m(m({},this.$data),e),o=a.bounds;this.$emit("change",o)},positionGetValue:function(e){var t=this.getValue(),n=this.calcValueByPos(e),a=this.getClosestBound(n),o=this.getBoundNeedMoving(n,a),r=t[o];if(n===r)return null;var s=q(t);return s[o]=n,s},onStart:function(e){var t=this.bounds;this.$emit("beforeChange",t);var n=this.calcValueByPos(e);this.startValue=n,this.startPosition=e;var a=this.getClosestBound(n);this.prevMovedHandleIndex=this.getBoundNeedMoving(n,a),this.setState({sHandle:this.prevMovedHandleIndex,recent:this.prevMovedHandleIndex});var o=t[this.prevMovedHandleIndex];if(n!==o){var r=q(t);r[this.prevMovedHandleIndex]=n,this.onChange({bounds:r})}},onEnd:function(e){var t=this.sHandle;this.removeDocumentEvents(),t||(this.dragTrack=!1),(t!==null||e)&&this.$emit("afterChange",this.bounds),this.setState({sHandle:null})},onMove:function(e,t,n,a){de(e);var o=this.$data,r=this.$props,s=r.max||100,l=r.min||0;if(n){var u=r.vertical?-t:t;u=r.reverse?-u:u;var c=s-Math.max.apply(Math,q(a)),h=l-Math.min.apply(Math,q(a)),v=Math.min(Math.max(u/(this.getSliderLength()/100),h),c),b=a.map(function(g){return Math.floor(Math.max(Math.min(g+v,s),l))});o.bounds.map(function(g,S){return g===b[S]}).some(function(g){return!g})&&this.onChange({bounds:b});return}var C=this.bounds,P=this.sHandle,V=this.calcValueByPos(t),T=C[P];V!==T&&this.moveTo(V)},onKeyboard:function(e){var t=this.$props,n=t.reverse,a=t.vertical,o=wn(e,a,n);if(o){de(e);var r=this.bounds,s=this.sHandle,l=r[s===null?this.recent:s],u=o(l,this.$props),c=ge({value:u,handle:s,bounds:r,props:this.$props});if(c===l)return;var h=!0;this.moveTo(c,h)}},getClosestBound:function(e){for(var t=this.bounds,n=0,a=1;a=t[a]&&(n=a);return Math.abs(t[n+1]-e)=a.length||r<0)return!1;var s=t+n,l=a[r],u=this.pushable,c=Number(u),h=n*(e[s]-l);return this.pushHandle(e,s,n,c-h)?(e[t]=l,!0):!1},trimAlignValue:function(e){var t=this.sHandle,n=this.bounds;return ge({value:e,handle:t,bounds:n,props:this.$props})},ensureValueNotConflict:function(e,t,n){var a=n.allowCross,o=n.pushable,r=this.$data||{},s=r.bounds;if(e=e===void 0?r.sHandle:e,o=Number(o),!a&&e!=null&&s!==void 0){if(e>0&&t<=s[e-1]+o)return s[e-1]+o;if(e=s[e+1]-o)return s[e+1]-o}return t},getTrack:function(e){var t=e.bounds,n=e.prefixCls,a=e.reverse,o=e.vertical,r=e.included,s=e.offsets,l=e.trackStyle;return t.slice(0,-1).map(function(u,c){var h,v=c+1,b=G((h={},N(h,"".concat(n,"-track"),!0),N(h,"".concat(n,"-track-").concat(v),!0),h));return k(ot,{class:b,vertical:o,reverse:a,included:r,offset:s[v-1],length:s[v]-s[v-1],style:l[c],key:v},null)})},renderSlider:function(){var e=this,t=this.sHandle,n=this.bounds,a=this.prefixCls,o=this.vertical,r=this.included,s=this.disabled,l=this.min,u=this.max,c=this.reverse,h=this.handle,v=this.defaultHandle,b=this.trackStyle,C=this.handleStyle,P=this.tabindex,V=this.ariaLabelGroupForHandles,T=this.ariaLabelledByGroupForHandles,g=this.ariaValueTextFormatterGroupForHandles,S=h||v,_=n.map(function(f){return e.calcOffset(f)}),M="".concat(a,"-handle"),d=n.map(function(f,y){var w,x=P[y]||0;(s||P[y]===null)&&(x=null);var p=t===y;return S({class:G((w={},N(w,M,!0),N(w,"".concat(M,"-").concat(y+1),!0),N(w,"".concat(M,"-dragging"),p),w)),prefixCls:a,vertical:o,dragging:p,offset:_[y],value:f,index:y,tabindex:x,min:l,max:u,reverse:c,disabled:s,style:C[y],ref:function(E){return e.saveHandle(y,E)},onFocus:e.onFocus,onBlur:e.onBlur,ariaLabel:V[y],ariaLabelledBy:T[y],ariaValueTextFormatter:g[y]})});return{tracks:this.getTrack({bounds:n,prefixCls:a,reverse:c,vertical:o,included:r,offsets:_,trackStyle:b}),handles:d}}}});const Ca=Cn(wa),xa=W({compatConfig:{MODE:3},name:"SliderTooltip",inheritAttrs:!1,props:vn(),setup:function(e,t){var n=t.attrs,a=t.slots,o=D(null),r=D(null);function s(){J.cancel(r.value),r.value=null}function l(){r.value=J(function(){var c;(c=o.value)===null||c===void 0||c.forcePopupAlign(),r.value=null})}var u=function(){s(),e.visible&&l()};return z([function(){return e.visible},function(){return e.title}],function(){u()},{flush:"post",immediate:!0}),In(function(){u()}),Ee(function(){s()}),function(){return k(va,m(m({ref:o},e),n),a)}}});var Pa=["value","dragging","index"],Ta=["tooltipPrefixCls","range","id"],Sa=function(e){return typeof e=="number"?e.toString():""},Ma=function(){return{id:String,prefixCls:String,tooltipPrefixCls:String,range:{type:[Boolean,Object],default:void 0},reverse:{type:Boolean,default:void 0},min:Number,max:Number,step:{type:[Number,Object]},marks:{type:Object},dots:{type:Boolean,default:void 0},value:{type:[Number,Array]},defaultValue:{type:[Number,Array]},included:{type:Boolean,default:void 0},disabled:{type:Boolean,default:void 0},vertical:{type:Boolean,default:void 0},tipFormatter:{type:[Function,Object],default:function(){return Sa}},tooltipVisible:{type:Boolean,default:void 0},tooltipPlacement:{type:String},getTooltipPopupContainer:{type:Function},autofocus:{type:Boolean,default:void 0},handleStyle:{type:[Object,Array]},trackStyle:{type:[Object,Array]},onChange:{type:Function},onAfterChange:{type:Function},onFocus:{type:Function},onBlur:{type:Function},"onUpdate:value":{type:Function}}},Oa=W({compatConfig:{MODE:3},name:"ASlider",inheritAttrs:!1,props:Ma(),slots:["mark"],setup:function(e,t){var n=t.attrs,a=t.slots,o=t.emit,r=t.expose,s=qt("slider",e),l=s.prefixCls,u=s.rootPrefixCls,c=s.direction,h=s.getPopupContainer,v=s.configProvider,b=ei(),C=D(),P=D({}),V=function(y,w){P.value[y]=w},T=L(function(){return e.tooltipPlacement?e.tooltipPlacement:e.vertical?c.value==="rtl"?"left":"right":"top"}),g=function(){var y;(y=C.value)===null||y===void 0||y.focus()},S=function(){var y;(y=C.value)===null||y===void 0||y.blur()},_=function(y){o("update:value",y),o("change",y),b.onFieldChange()},M=function(y){o("blur",y)};r({focus:g,blur:S});var d=function(y){var w=y.tooltipPrefixCls,x=y.info,p=x.value,$=x.dragging,E=x.index,R=De(x,Pa),I=e.tipFormatter,F=e.tooltipVisible,U=e.getTooltipPopupContainer,oe=I?P.value[E]||$:!1,pe=F||F===void 0&&oe;return k(xa,{prefixCls:w,title:I?I(p):"",visible:pe,placement:T.value,transitionName:"".concat(u.value,"-zoom-down"),key:E,overlayClassName:"".concat(l.value,"-tooltip"),getPopupContainer:U||h.value},{default:function(){return[k(mn,m(m({},R),{},{value:p,onMouseenter:function(){return V(E,!0)},onMouseleave:function(){return V(E,!1)}}),null)]}})};return function(){var f=e.tooltipPrefixCls,y=e.range,w=e.id,x=w===void 0?b.id.value:w,p=De(e,Ta),$=v.getPrefixCls("tooltip",f),E=G(n.class,N({},"".concat(l.value,"-rtl"),c.value==="rtl"));c.value==="rtl"&&!p.vertical&&(p.reverse=!p.reverse);var R;return ve(y)==="object"&&(R=y.draggableTrack),y?k(Ca,m(m({},p),{},{step:p.step,draggableTrack:R,class:E,ref:C,handle:function(F){return d({tooltipPrefixCls:$,prefixCls:l.value,info:F})},prefixCls:l.value,onChange:_,onBlur:M}),{mark:a.mark}):k(ya,m(m({},p),{},{id:x,step:p.step,class:E,ref:C,handle:function(F){return d({tooltipPrefixCls:$,prefixCls:l.value,info:F})},prefixCls:l.value,onChange:_,onBlur:M}),{mark:a.mark})}}});const ka=Zt(Oa),_a=["aria-expanded"],Va={class:"dd__title"},$a={class:"dd__chevron","aria-hidden":"true"},Aa=["inert"],Da={class:"dd__clip"},Ba={class:"dd__body"},Na=W({__name:"DropDown",props:{text:{},defaultOpen:{type:Boolean,default:!1}},setup(i){const t=D(i.defaultOpen);return(n,a)=>(H(),j("div",{class:ue(["dd",{"is-open":t.value}])},[B("button",{type:"button",class:"dd__head","aria-expanded":t.value,onClick:a[0]||(a[0]=o=>t.value=!t.value)},[B("h3",Va,[ft(n.$slots,"text",{},()=>[we(ee(i.text),1)],!0)]),B("span",$a,[k(Ce,{icon:"vuesax-linear:arrow-down",size:"16"})])],8,_a),B("div",{class:"dd__panel",inert:!t.value},[B("div",Da,[B("div",Ba,[ft(n.$slots,"default",{},void 0,!0)])])],8,Aa)],2))}}),Wt=Jt(Na,[["__scopeId","data-v-4d05a970"]]),Ea={class:"fSheet__headRow"},Fa={id:"fSheet-title",class:"fSheet__title"},Ha={key:0,class:"fSheet__count"},Ra={class:"fSheet__body"},La={key:0,class:"fSheet__chips"},ja=["aria-pressed","onClick"],Ia={key:1,class:"fSheet__empty"},Wa={class:"fSheet__gram"},za={class:"fSheet__gramFigures"},Ua={class:"fSheet__gramFigure"},Xa={class:"fSheet__gramFigure"},Ya=90,Ga=.5,qa=W({__name:"Filters",props:{show:{type:Boolean},modelValue:{},filterKeys:{},products:{}},emits:["update:show","update:filterKeys"],setup(i,{emit:e}){const t=i,n=e,a=L(()=>{const x=new Map;for(const p of t.products)p.brand&&x.set(p.brand.id,p.brand);return[...x.values()]}),o=L(()=>{const x=t.products.flatMap(p=>p.variants.map($=>parseFloat($.rashWeightGrams)));return x.length===0?[0,100]:[Math.floor(Math.min(...x)),Math.ceil(Math.max(...x))]}),r=D([]),s=D([...o.value]);let l=!1;function u(){r.value=[...t.modelValue.brands];const x=t.modelValue.limit_gram;l=x.length===2,s.value=x.length===2?[x[0],x[1]]:[...o.value]}z(()=>t.show,x=>{x&&u()},{immediate:!0}),z(o,x=>{l||(s.value=[...x])});function c(x){Array.isArray(x)&&(s.value=[x[0],x[1]],l=!0)}const h=L(()=>{const[x,p]=s.value,[$,E]=o.value;return Math.abs(x-$)>.001||Math.abs(p-E)>.001}),v=L(()=>r.value.length+(h.value?1:0));function b(x){const p=r.value.indexOf(x);r.value=p===-1?[...r.value,x]:r.value.filter($=>$!==x)}function C(x){return x%1===0?String(x):String(+x.toFixed(2))}function P(){const x=t.modelValue;x.brands=[...r.value],x.limit_gram=h.value?[...s.value]:[];const p=[];x.brands.length&&p.push("brands"),x.limit_gram.length&&p.push("limit_gram"),n("update:filterKeys",p),T()}function V(){r.value=[],s.value=[...o.value],l=!1,P()}function T(){n("update:show",!1)}const g=D(0),S=D(!1);let _=0,M=0;const d=L(()=>g.value?{transform:`translate3d(0, ${g.value}px, 0)`}:void 0);function f(x){x.target.closest("button")||(_=x.touches[0].clientY,M=Date.now(),S.value=!0)}function y(x){if(!S.value)return;const p=x.touches[0].clientY-_;g.value=p>0?p:p*.12}function w(){if(!S.value)return;S.value=!1;const x=g.value/Math.max(1,Date.now()-M);g.value>Ya||g.value>30&&x>Ga?T():g.value=0}return(x,p)=>(H(),Qt(ae(Wn),{show:i.show,position:"bottom",teleport:"body",transition:"fSheet-slide",class:"fSheet","overlay-class":"fSheet__overlay","close-on-popstate":"","onUpdate:show":p[0]||(p[0]=$=>n("update:show",$)),onClosed:p[1]||(p[1]=$=>g.value=0)},{default:ce(()=>[B("div",{class:ue(["fSheet__card",{"is-dragging":S.value}]),style:zn(d.value),dir:"rtl",role:"dialog","aria-modal":"true","aria-labelledby":"fSheet-title"},[B("header",{class:"fSheet__head",onTouchstartPassive:f,onTouchmovePassive:y,onTouchend:w,onTouchcancel:w},[p[3]||(p[3]=B("span",{class:"fSheet__grip","aria-hidden":"true"},null,-1)),B("div",Ea,[B("h3",Fa,[p[2]||(p[2]=we(" فیلترها ",-1)),v.value?(H(),j("span",Ha,ee(v.value),1)):re("",!0)]),B("button",{type:"button",class:"fSheet__close","aria-label":"بستن",onClick:T},[k(Ce,{icon:"vuesax-linear:add",size:"18"})])])],32),B("div",Ra,[k(Wt,{text:"برند","default-open":""},{default:ce(()=>[a.value.length?(H(),j("div",La,[(H(!0),j(le,null,ye(a.value,$=>(H(),j("button",{key:$.id,type:"button",class:ue(["fSheet__chip",{"is-on":r.value.includes($.id)}]),"aria-pressed":r.value.includes($.id),onClick:E=>b($.id)},ee($.title),11,ja))),128))])):(H(),j("p",Ia,"برندی برای فیلتر موجود نیست."))]),_:1}),k(Wt,{text:"وزن (گرم)","default-open":""},{default:ce(()=>[B("div",Wa,[k(ae(ka),{value:s.value,step:.01,range:"",reverse:"",min:o.value[0],max:o.value[1],"tooltip-visible":!1,"onUpdate:value":c},null,8,["value","min","max"]),B("div",za,[B("span",Ua,[p[4]||(p[4]=B("i",null,"کمترین",-1)),B("b",null,ee(C(s.value[0])),1),p[5]||(p[5]=we(" گرم ",-1))]),B("span",Xa,[p[6]||(p[6]=B("i",null,"بیشترین",-1)),B("b",null,ee(C(s.value[1])),1),p[7]||(p[7]=we(" گرم ",-1))])])])]),_:1})]),B("footer",{class:"fSheet__bar"},[B("button",{type:"button",class:"fSheet__clear",onClick:V},"پاک کردن"),B("button",{type:"button",class:"fSheet__apply",onClick:P},"اعمال فیلتر")])],6)]),_:1},8,["show"]))}}),Ka={class:"search"},Za={class:"search__barExtra"},Ja={class:"search__chips no-scrollbar"},Qa=["onClick"],eo={key:0,class:"search__skeleton","aria-hidden":"true"},to={class:"search__grid"},no={key:1,class:"search__collections"},io=["onClick"],ao={key:2,class:"search__grid"},oo={key:4,class:"search__empty"},ro=6,ze=20,so=W({__name:"SearchView",setup(i){const e=ni(),t=ii(),n=D(!t.loaded),a=D(!1),o=L(()=>t.products),r=D(!1),s=D([]),l=L(()=>{const d=new Map;for(const f of o.value)f.category&&d.set(f.category.id,f.category);return[...d.values()]}),u=L(()=>{const d=new Map;for(const f of o.value)for(const y of f.collections)d.set(y.collection.id,{id:y.collection.id,title:y.collection.title});return[...d.values()]}),c=L(()=>{let d=o.value;const f=e.query;return f.text&&(d=d.filter(y=>y.title.includes(f.text))),f.cats&&f.cats.length>0&&(d=d.filter(y=>y.category&&f.cats.includes(y.category.id))),f.brands.length>0&&(d=d.filter(y=>y.brand&&f.brands.includes(y.brand.id))),f.limit_gram.length===2&&(d=d.filter(y=>y.variants.some(w=>parseFloat(w.rashWeightGrams)>=f.limit_gram[0]&&parseFloat(w.rashWeightGrams)<=f.limit_gram[1]))),d}),h=D(ze),v=L(()=>c.value.slice(0,h.value)),b=L(()=>h.value{d.some(f=>f.isIntersecting)&&b.value&&(h.value+=ze)},{rootMargin:"400px"}),P.observe(C.value))}z(c,()=>{h.value=ze}),z(C,V),Ee(()=>P==null?void 0:P.disconnect());async function T(d=!1){n.value=!t.loaded;try{await t.load(d)}catch(f){console.log(f)}finally{n.value=!1}}async function g(){await T(!0),a.value=!1}function S(d){e.query.text=d}function _(d){e.query.cats=d?[d]:void 0}function M(){r.value=!0}return Pe(()=>T()),(d,f)=>{const y=Xn("container");return H(),j("div",Ka,[k(Yn,{title:"جستجو"},{below:ce(()=>[B("div",Za,[k(Gn,{onSearch:S,"place-holder":"جستجوی دسته بندی، محصولات و ..."}),B("div",Ja,[B("button",{type:"button",class:ue(["search__chip search__chip--filter",{"is-on":s.value.length>0}]),onClick:M},[k(Ce,{icon:"vuesax-linear:filter",size:"15"}),we(" "+ee(s.value.length>0?`${s.value.length} فیلتر`:"فیلتر"),1)],2),B("button",{type:"button",class:ue(["search__chip",{"is-on":!ae(e).query.cats}]),onClick:f[0]||(f[0]=w=>_(void 0))}," همه ",2),(H(!0),j(le,null,ye(l.value,w=>(H(),j("button",{key:w.id,type:"button",class:ue(["search__chip",{"is-on":ae(e).query.cats&&ae(e).query.cats[0]===w.id}]),onClick:x=>_(w.id)},ee(w.title),11,Qa))),128))])])]),_:1}),B("div",null,[k(Mn,{modelValue:a.value,"onUpdate:modelValue":f[1]||(f[1]=w=>a.value=w),onRefresh:g},{default:ce(()=>[k(y,{class:"search__body"},{default:ce(()=>[n.value&&!o.value.length?(H(),j("div",eo,[f[6]||(f[6]=B("div",{class:"search__skHead"},[B("span",{class:"skeleton search__skLine search__skLine--title"}),B("span",{class:"skeleton search__skLine search__skLine--sub"})],-1)),B("div",to,[(H(),j(le,null,ye(ro,w=>B("div",{key:w,class:"search__skCard"},[...f[5]||(f[5]=[B("div",{class:"skeleton search__skArt"},null,-1),B("div",{class:"search__skBody"},[B("span",{class:"skeleton search__skLine search__skLine--name"}),B("span",{class:"skeleton search__skLine search__skLine--meta"})],-1)])])),64))])])):re("",!0),u.value.length?(H(),j("div",no,[(H(!0),j(le,null,ye(u.value,w=>(H(),j("button",{key:w.id,type:"button",class:"search__collection",onClick:x=>d.$router.push({path:`/collection/${w.id}`,query:{page:w.title}})},[k(Ce,{icon:"vuesax-linear:money-recive",size:"19"}),B("span",null,ee(w.title),1)],8,io))),128))])):re("",!0),c.value.length?(H(),j("div",ao,[(H(!0),j(le,null,ye(v.value,w=>(H(),Qt(ti,{key:w.id,value:w},null,8,["value"]))),128))])):re("",!0),b.value?(H(),j("div",{key:3,ref_key:"sentinel",ref:C,class:"search__more"},[k(Un,{spinning:!0,indicator:!0,fixed:!1,tip:"",cls:"my-[10px]"})],512)):re("",!0),!c.value.length&&!n.value?(H(),j("section",oo,[k(Ce,{icon:"vuesax-linear:search-normal-1",size:"26"}),f[7]||(f[7]=B("p",null,"محصولی با این مشخصات پیدا نشد.",-1))])):re("",!0)]),_:1})]),_:1},8,["modelValue"])]),k(qa,{show:r.value,"onUpdate:show":f[2]||(f[2]=w=>r.value=w),filterKeys:s.value,"onUpdate:filterKeys":f[3]||(f[3]=w=>s.value=w),modelValue:ae(e).query,"onUpdate:modelValue":f[4]||(f[4]=w=>ae(e).query=w),products:o.value},null,8,["show","filterKeys","modelValue","products"])])}}}),xo=Jt(so,[["__scopeId","data-v-da5df41e"]]);export{xo as default}; diff --git a/apps/user-app/dist/assets/SectionHead-Cg_UnoI8.js b/apps/user-app/dist/assets/SectionHead-CJoa_aGh.js similarity index 90% rename from apps/user-app/dist/assets/SectionHead-Cg_UnoI8.js rename to apps/user-app/dist/assets/SectionHead-CJoa_aGh.js index f02da8b..bf20333 100644 --- a/apps/user-app/dist/assets/SectionHead-Cg_UnoI8.js +++ b/apps/user-app/dist/assets/SectionHead-CJoa_aGh.js @@ -1 +1 @@ -import{d as r,e as t,f as s,g as o,t as a,h as n,W as _,x as d,I as u,_ as m}from"./index-BFOyCNFT.js";const b={class:"sec"},x={class:"sec__text"},f={class:"sec__title"},h={key:0,class:"sec__sub"},k=r({__name:"SectionHead",props:{title:{},subtitle:{},actionLabel:{}},emits:["action"],setup(e,{emit:i}){const l=i;return(p,c)=>(t(),s("header",b,[o("div",x,[o("h2",f,a(e.title),1),e.subtitle?(t(),s("p",h,a(e.subtitle),1)):n("",!0)]),e.actionLabel?(t(),s("button",{key:0,type:"button",class:"sec__action",onClick:c[0]||(c[0]=v=>l("action"))},[_(a(e.actionLabel)+" ",1),d(u,{icon:"vuesax-linear:arrow-left-2",size:"15"})])):n("",!0)]))}}),N=m(k,[["__scopeId","data-v-e5c65b7c"]]);export{N as S}; +import{d as r,e as t,f as s,g as o,t as a,h as n,W as _,x as d,I as u,_ as m}from"./index-B-RmZRr2.js";const b={class:"sec"},x={class:"sec__text"},f={class:"sec__title"},h={key:0,class:"sec__sub"},k=r({__name:"SectionHead",props:{title:{},subtitle:{},actionLabel:{}},emits:["action"],setup(e,{emit:i}){const l=i;return(p,c)=>(t(),s("header",b,[o("div",x,[o("h2",f,a(e.title),1),e.subtitle?(t(),s("p",h,a(e.subtitle),1)):n("",!0)]),e.actionLabel?(t(),s("button",{key:0,type:"button",class:"sec__action",onClick:c[0]||(c[0]=v=>l("action"))},[_(a(e.actionLabel)+" ",1),d(u,{icon:"vuesax-linear:arrow-left-2",size:"15"})])):n("",!0)]))}}),N=m(k,[["__scopeId","data-v-e5c65b7c"]]);export{N as S}; diff --git a/apps/user-app/dist/assets/SingleImageUploader-CX4x2X-j.js b/apps/user-app/dist/assets/SingleImageUploader-CX4x2X-j.js new file mode 100644 index 0000000..f400713 --- /dev/null +++ b/apps/user-app/dist/assets/SingleImageUploader-CX4x2X-j.js @@ -0,0 +1 @@ +import{d as B,e as o,f as i,i as I,g as r,x as f,I as m,t as g,h as y,k as u,D as C,_ as S}from"./index-B-RmZRr2.js";const w=["disabled"],z=["src"],U={key:1,class:"siu__icon"},D={class:"siu__text"},N={key:2,class:"siu__badge"},T={key:0,class:"siu__error"},V=8*1024*1024,j=B({__name:"SingleImageUploader",props:{uploadText:{},purpose:{}},emits:["done"],setup(p,{emit:k}){const x=p,h=k,d=u(null),e=u(!1),a=u(null),l=u(null),c=u(null);async function b(_){var n;const t=_.target,s=(n=t.files)==null?void 0:n[0];if(t.value="",!!s){if(a.value=null,s.size>V){a.value="حجم فایل بیش از حد مجاز است (۸ مگابایت)";return}e.value=!0;try{const v=await C.uploadDocument(s,x.purpose);l.value=v.id,c.value=s.type.startsWith("image/")?URL.createObjectURL(s):null,h("done",v.id)}catch{a.value="بارگذاری انجام نشد. دوباره تلاش کنید.",l.value=null,c.value=null}finally{e.value=!1}}}return(_,t)=>(o(),i("div",{class:I(["siu",{"is-done":!!l.value,"is-error":!!a.value}])},[r("input",{ref_key:"input",ref:d,type:"file",accept:"image/jpeg,image/png,image/webp,application/pdf",class:"siu__input",onChange:b},null,544),r("button",{type:"button",class:"siu__box",disabled:e.value,onClick:t[0]||(t[0]=s=>{var n;return(n=d.value)==null?void 0:n.click()})},[c.value?(o(),i("img",{key:0,src:c.value,class:"siu__preview",alt:""},null,8,z)):(o(),i("span",U,[f(m,{icon:e.value?"vuesax-linear:refresh":"vuesax-linear:gallery-add",size:"26"},null,8,["icon"])])),r("span",D,g(e.value?"در حال بارگذاری…":l.value?"تغییر تصویر":p.uploadText),1),l.value&&!e.value?(o(),i("span",N,[f(m,{icon:"vuesax-linear:tick-circle",size:"16"})])):y("",!0)],8,w),a.value?(o(),i("p",T,g(a.value),1)):y("",!0)],2))}}),L=S(j,[["__scopeId","data-v-a2ff4fd6"]]);export{L as S}; diff --git a/apps/user-app/dist/assets/SingleImageUploader-VLjcKc1D.css b/apps/user-app/dist/assets/SingleImageUploader-VLjcKc1D.css new file mode 100644 index 0000000..d8d29ef --- /dev/null +++ b/apps/user-app/dist/assets/SingleImageUploader-VLjcKc1D.css @@ -0,0 +1 @@ +.siu__input[data-v-a2ff4fd6]{display:none}.siu__box[data-v-a2ff4fd6]{position:relative;width:100%;min-height:132px;padding:20px 16px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;border:1px dashed var(--c-hairline);border-radius:18px;background:var(--c-canvasSoft);font-family:inherit;cursor:pointer;overflow:hidden;transition:border-color .2s ease}.siu__box[data-v-a2ff4fd6]:disabled{cursor:progress}.is-done .siu__box[data-v-a2ff4fd6]{border-style:solid;border-color:var(--c-green)}.is-error .siu__box[data-v-a2ff4fd6]{border-color:var(--c-red)}.siu__preview[data-v-a2ff4fd6]{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;-o-object-fit:cover;object-fit:cover;opacity:.32}.siu__icon[data-v-a2ff4fd6],.siu__text[data-v-a2ff4fd6]{position:relative;z-index:1}.siu__text[data-v-a2ff4fd6]{font-size:13px;font-weight:600;color:var(--c-inkMuted)}.siu__badge[data-v-a2ff4fd6]{position:absolute;top:10px;left:10px;z-index:1;display:flex;color:var(--c-green)}.siu__error[data-v-a2ff4fd6]{margin:7px 2px 0;font-size:12px;color:var(--c-red)} diff --git a/apps/user-app/dist/assets/TransactionsView-5Ti1Tz-b.js b/apps/user-app/dist/assets/TransactionsView-DU94ZdnQ.js similarity index 91% rename from apps/user-app/dist/assets/TransactionsView-5Ti1Tz-b.js rename to apps/user-app/dist/assets/TransactionsView-DU94ZdnQ.js index b0df75f..fc546ba 100644 --- a/apps/user-app/dist/assets/TransactionsView-5Ti1Tz-b.js +++ b/apps/user-app/dist/assets/TransactionsView-DU94ZdnQ.js @@ -1 +1 @@ -import{d as b,G as D,H as w,k as u,K as g,o as L,f as i,x as r,J as E,T as N,O as M,q as m,h as x,e as l,F as R,g as s,r as O,I as T,t as o,i as p,M as P,_ as B}from"./index-BFOyCNFT.js";import{P as U}from"./PageBar-Cz1N2fdD.js";import{S as I}from"./SectionHead-Cg_UnoI8.js";import{j as k,p as V}from"./filters-sld47Iy-.js";import{D as Y}from"./index-BgbR-bph.js";import"./KeyCode-C6xc2Qke.js";import"./classCallCheck-BVPDkxOa.js";import"./raf-nDFcuFT6.js";const $={class:"tx"},G={class:"tx__list"},H=["onClick"],z={class:"tx__main"},F={class:"tx__head"},K={class:"tx__kind"},j={key:0,class:"tx__note"},J={class:"tx__foot"},q={class:"tx__date"},Q={key:1,class:"tx__empty"},W={class:"sheet"},X={class:"sheet__specs"},Z={class:"sheet__spec"},ss={class:"sheet__spec"},es={class:"sheet__spec"},ts={class:"sheet__spec"},os={class:"sheet__spec"},ns=b({__name:"TransactionsView",setup(as){const h={ORDER_STOCK:"سفارش",ORDER_PRE_ORDER:"سفارش ساخت",REPAYMENT_MELTED_GOLD:"طلای آب‌شده",REPAYMENT_TRANSFER:"حواله",REPAYMENT_CHEQUE:"چک",REPAYMENT_CASH:"پولی",WALLET_BONUS:"پاداش",ADJUSTMENT:"اصلاحیه"},S=D(),v=w(),_=u(!1),d=u(v.peek(g.ledger)??[]),f=u(!1),n=u(null),c=a=>a.direction==="CREDIT",y=a=>a.currency==="GOLD_GRAM"?`${a.amount} گرم`:`${V(a.amount)} ریال`,C=a=>{n.value=a,f.value=!0};return L(async()=>{if(S.isLoggedIn){_.value=v.peek(g.ledger)===void 0;try{d.value=await v.myLedgerEntries({force:!0})}finally{_.value=!1}}}),(a,e)=>{const A=P("container");return l(),i("div",$,[r(U,{title:"اسناد","back-to":"userPage::hasSubRoute"}),r(N,{spinning:_.value,tip:"درحال دریافت اطلاعات"},{default:E(()=>[r(A,{class:"tx__body"},{default:E(()=>[d.value.length?(l(),i(R,{key:0},[r(I,{title:"گردش حساب",subtitle:`${d.value.length} سند`},null,8,["subtitle"]),s("div",G,[(l(!0),i(R,null,O(d.value,t=>(l(),i("article",{key:t.id,class:"tx__row",onClick:ls=>C(t)},[s("span",{class:p(["tx__mark",c(t)?"is-in":"is-out"]),"aria-hidden":"true"},[r(T,{icon:c(t)?"vuesax-linear:arrow-down":"vuesax-linear:arrow-up",size:"16"},null,8,["icon"])],2),s("div",z,[s("div",F,[s("h3",K,o(h[t.sourceType]??t.sourceType),1),s("span",{class:p(["tx__amount",c(t)?"is-in":"is-out"])},o(y(t)),3)]),t.note?(l(),i("p",j,o(t.note),1)):x("",!0),s("div",J,[s("span",q,o(m(k)(t.createdAt)),1),s("span",{class:p(["tx__state",{"is-pending":!t.confirmed}])},o(t.confirmed?"تایید شده":"در انتظار تایید"),3)])])],8,H))),128))])],64)):_.value?x("",!0):(l(),i("section",Q,[r(T,{icon:"vuesax-linear:receipt-text",size:"26"}),e[1]||(e[1]=s("p",null,"سندی برای حساب شما ثبت نشده است.",-1))]))]),_:1})]),_:1},8,["spinning"]),n.value?(l(),M(m(Y),{key:0,visible:f.value,"onUpdate:visible":e[0]||(e[0]=t=>f.value=t),placement:"bottom",closable:!1,height:"420px",class:"rtl",bodyStyle:{padding:0}},{default:E(()=>[s("div",W,[e[7]||(e[7]=s("h3",{class:"sheet__title"},"جزئیات سند",-1)),s("dl",X,[s("div",Z,[e[2]||(e[2]=s("dt",null,"نوع سند",-1)),s("dd",null,o(h[n.value.sourceType]??n.value.sourceType),1)]),s("div",ss,[e[3]||(e[3]=s("dt",null,"مبلغ",-1)),s("dd",{class:p(c(n.value)?"is-in":"is-out")},o(y(n.value)),3)]),s("div",es,[e[4]||(e[4]=s("dt",null,"وضعیت",-1)),s("dd",null,o(n.value.confirmed?"تایید شده":"در انتظار تایید"),1)]),s("div",ts,[e[5]||(e[5]=s("dt",null,"تاریخ",-1)),s("dd",null,o(m(k)(n.value.createdAt)),1)]),s("div",os,[e[6]||(e[6]=s("dt",null,"توضیحات",-1)),s("dd",null,o(n.value.note||"—"),1)])])])]),_:1},8,["visible"])):x("",!0)])}}}),fs=B(ns,[["__scopeId","data-v-4e8ef6ab"]]);export{fs as default}; +import{d as b,G as D,H as w,k as u,K as g,o as L,f as i,x as r,J as E,T as N,O as M,q as m,h as x,e as l,F as R,g as s,r as O,I as T,t as o,i as p,M as P,_ as B}from"./index-B-RmZRr2.js";import{P as U}from"./PageBar-DmOKrVEQ.js";import{S as I}from"./SectionHead-CJoa_aGh.js";import{j as k,p as V}from"./filters-BLs90kiz.js";import{D as Y}from"./index-DXKwa_Wp.js";import"./KeyCode-DsOsmuVa.js";import"./classCallCheck-BMo4V_0Q.js";import"./raf-nDFcuFT6.js";const $={class:"tx"},G={class:"tx__list"},H=["onClick"],z={class:"tx__main"},F={class:"tx__head"},K={class:"tx__kind"},j={key:0,class:"tx__note"},J={class:"tx__foot"},q={class:"tx__date"},Q={key:1,class:"tx__empty"},W={class:"sheet"},X={class:"sheet__specs"},Z={class:"sheet__spec"},ss={class:"sheet__spec"},es={class:"sheet__spec"},ts={class:"sheet__spec"},os={class:"sheet__spec"},ns=b({__name:"TransactionsView",setup(as){const h={ORDER_STOCK:"سفارش",ORDER_PRE_ORDER:"سفارش ساخت",REPAYMENT_MELTED_GOLD:"طلای آب‌شده",REPAYMENT_TRANSFER:"حواله",REPAYMENT_CHEQUE:"چک",REPAYMENT_CASH:"پولی",WALLET_BONUS:"پاداش",ADJUSTMENT:"اصلاحیه"},S=D(),v=w(),_=u(!1),d=u(v.peek(g.ledger)??[]),f=u(!1),n=u(null),c=a=>a.direction==="CREDIT",y=a=>a.currency==="GOLD_GRAM"?`${a.amount} گرم`:`${V(a.amount)} ریال`,C=a=>{n.value=a,f.value=!0};return L(async()=>{if(S.isLoggedIn){_.value=v.peek(g.ledger)===void 0;try{d.value=await v.myLedgerEntries({force:!0})}finally{_.value=!1}}}),(a,e)=>{const A=P("container");return l(),i("div",$,[r(U,{title:"اسناد","back-to":"userPage::hasSubRoute"}),r(N,{spinning:_.value,tip:"درحال دریافت اطلاعات"},{default:E(()=>[r(A,{class:"tx__body"},{default:E(()=>[d.value.length?(l(),i(R,{key:0},[r(I,{title:"گردش حساب",subtitle:`${d.value.length} سند`},null,8,["subtitle"]),s("div",G,[(l(!0),i(R,null,O(d.value,t=>(l(),i("article",{key:t.id,class:"tx__row",onClick:ls=>C(t)},[s("span",{class:p(["tx__mark",c(t)?"is-in":"is-out"]),"aria-hidden":"true"},[r(T,{icon:c(t)?"vuesax-linear:arrow-down":"vuesax-linear:arrow-up",size:"16"},null,8,["icon"])],2),s("div",z,[s("div",F,[s("h3",K,o(h[t.sourceType]??t.sourceType),1),s("span",{class:p(["tx__amount",c(t)?"is-in":"is-out"])},o(y(t)),3)]),t.note?(l(),i("p",j,o(t.note),1)):x("",!0),s("div",J,[s("span",q,o(m(k)(t.createdAt)),1),s("span",{class:p(["tx__state",{"is-pending":!t.confirmed}])},o(t.confirmed?"تایید شده":"در انتظار تایید"),3)])])],8,H))),128))])],64)):_.value?x("",!0):(l(),i("section",Q,[r(T,{icon:"vuesax-linear:receipt-text",size:"26"}),e[1]||(e[1]=s("p",null,"سندی برای حساب شما ثبت نشده است.",-1))]))]),_:1})]),_:1},8,["spinning"]),n.value?(l(),M(m(Y),{key:0,visible:f.value,"onUpdate:visible":e[0]||(e[0]=t=>f.value=t),placement:"bottom",closable:!1,height:"420px",class:"rtl",bodyStyle:{padding:0}},{default:E(()=>[s("div",W,[e[7]||(e[7]=s("h3",{class:"sheet__title"},"جزئیات سند",-1)),s("dl",X,[s("div",Z,[e[2]||(e[2]=s("dt",null,"نوع سند",-1)),s("dd",null,o(h[n.value.sourceType]??n.value.sourceType),1)]),s("div",ss,[e[3]||(e[3]=s("dt",null,"مبلغ",-1)),s("dd",{class:p(c(n.value)?"is-in":"is-out")},o(y(n.value)),3)]),s("div",es,[e[4]||(e[4]=s("dt",null,"وضعیت",-1)),s("dd",null,o(n.value.confirmed?"تایید شده":"در انتظار تایید"),1)]),s("div",ts,[e[5]||(e[5]=s("dt",null,"تاریخ",-1)),s("dd",null,o(m(k)(n.value.createdAt)),1)]),s("div",os,[e[6]||(e[6]=s("dt",null,"توضیحات",-1)),s("dd",null,o(n.value.note||"—"),1)])])])]),_:1},8,["visible"])):x("",!0)])}}}),fs=B(ns,[["__scopeId","data-v-4e8ef6ab"]]);export{fs as default}; diff --git a/apps/user-app/dist/assets/catalogStore-BuqGxGiV.js b/apps/user-app/dist/assets/catalogStore-D54EVMFO.js similarity index 89% rename from apps/user-app/dist/assets/catalogStore-BuqGxGiV.js rename to apps/user-app/dist/assets/catalogStore-D54EVMFO.js index a21a202..5d39d9e 100644 --- a/apps/user-app/dist/assets/catalogStore-BuqGxGiV.js +++ b/apps/user-app/dist/assets/catalogStore-D54EVMFO.js @@ -1 +1 @@ -import{A as d,Z as f,K as c,s as g,k as p,j as v,D as y}from"./index-BFOyCNFT.js";const m=d("catalog",()=>{const o=f(),s=o.peek(c.catalog),e=g(s??[]),n=p(s!==void 0),r=v(()=>{const t=new Map;for(const a of e.value)a.category&&!t.has(a.category.id)&&t.set(a.category.id,{id:a.category.id,title:a.category.title});return[...t.values()]});async function i(t=!1){const a=await o.fetch(c.catalog,y.listProducts,{force:t});return e.value=a,n.value=!0,a}function l(t){return e.value.find(a=>a.id===t)??null}function u(){o.invalidate(c.catalog)}return{products:e,loaded:n,categories:r,load:i,byId:l,invalidate:u}});export{m as u}; +import{A as d,Z as f,K as c,s as g,k as p,j as v,D as y}from"./index-B-RmZRr2.js";const m=d("catalog",()=>{const o=f(),s=o.peek(c.catalog),e=g(s??[]),n=p(s!==void 0),r=v(()=>{const t=new Map;for(const a of e.value)a.category&&!t.has(a.category.id)&&t.set(a.category.id,{id:a.category.id,title:a.category.title});return[...t.values()]});async function i(t=!1){const a=await o.fetch(c.catalog,y.listProducts,{force:t});return e.value=a,n.value=!0,a}function l(t){return e.value.find(a=>a.id===t)??null}function u(){o.invalidate(c.catalog)}return{products:e,loaded:n,categories:r,load:i,byId:l,invalidate:u}});export{m as u}; diff --git a/apps/user-app/dist/assets/classCallCheck-BMo4V_0Q.js b/apps/user-app/dist/assets/classCallCheck-BMo4V_0Q.js new file mode 100644 index 0000000..777463e --- /dev/null +++ b/apps/user-app/dist/assets/classCallCheck-BMo4V_0Q.js @@ -0,0 +1 @@ +import{a9 as o,a$ as l}from"./index-B-RmZRr2.js";function c(a,r){for(var t=o({},a),e=0;e>>0,s;for(s=0;s0)for(r=0;r>>0,s;for(s=0;s0)for(r=0;r=0;return(i?r?"+":"":"-")+Math.pow(10,Math.max(0,a)).toString().substr(1)+s}var pt=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,Ve=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,Yt={},pe={};function M(e,t,r,s){var a=s;typeof s=="string"&&(a=function(){return this[s]()}),e&&(pe[e]=a),t&&(pe[t[0]]=function(){return B(a.apply(this,arguments),t[1],t[2])}),r&&(pe[r]=function(){return this.localeData().ordinal(a.apply(this,arguments),e)})}function Ys(e){return e.match(/\[[\s\S]/)?e.replace(/^\[|\]$/g,""):e.replace(/\\/g,"")}function ws(e){var t=e.match(pt),r,s;for(r=0,s=t.length;r=0&&Ve.test(e);)e=e.replace(Ve,s),Ve.lastIndex=0,r-=1;return e}var gs={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"};function ks(e){var t=this._longDateFormat[e],r=this._longDateFormat[e.toUpperCase()];return t||!r?t:(this._longDateFormat[e]=r.match(pt).map(function(s){return s==="MMMM"||s==="MM"||s==="DD"||s==="dddd"?s.slice(1):s}).join(""),this._longDateFormat[e])}var Ss="Invalid date";function vs(){return this._invalidDate}var Os="%d",js=/\d{1,2}/;function Ts(e){return this._ordinal.replace("%d",e)}var bs={future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"};function xs(e,t,r,s){var a=this._relativeTime[r];return q(a)?a(e,t,r,s):a.replace(/%d/i,e)}function Ps(e,t){var r=this._relativeTime[e>0?"future":"past"];return q(r)?r(t):r.replace(/%s/i,t)}var ar={D:"date",dates:"date",date:"date",d:"day",days:"day",day:"day",e:"weekday",weekdays:"weekday",weekday:"weekday",E:"isoWeekday",isoweekdays:"isoWeekday",isoweekday:"isoWeekday",DDD:"dayOfYear",dayofyears:"dayOfYear",dayofyear:"dayOfYear",h:"hour",hours:"hour",hour:"hour",ms:"millisecond",milliseconds:"millisecond",millisecond:"millisecond",m:"minute",minutes:"minute",minute:"minute",M:"month",months:"month",month:"month",Q:"quarter",quarters:"quarter",quarter:"quarter",s:"second",seconds:"second",second:"second",gg:"weekYear",weekyears:"weekYear",weekyear:"weekYear",GG:"isoWeekYear",isoweekyears:"isoWeekYear",isoweekyear:"isoWeekYear",w:"week",weeks:"week",week:"week",W:"isoWeek",isoweeks:"isoWeek",isoweek:"isoWeek",y:"year",years:"year",year:"year"};function V(e){return typeof e=="string"?ar[e]||ar[e.toLowerCase()]:void 0}function wt(e){var t={},r,s;for(s in e)c(e,s)&&(r=V(s),r&&(t[r]=e[s]));return t}var Ls={date:9,day:11,weekday:11,isoWeekday:11,dayOfYear:4,hour:13,millisecond:16,minute:14,month:8,quarter:7,second:15,weekYear:1,isoWeekYear:1,week:5,isoWeek:5,year:1};function Ns(e){var t=[],r;for(r in e)c(e,r)&&t.push({unit:r,priority:Ls[r]});return t.sort(function(s,a){return s.priority-a.priority}),t}var nr=/\d/,H=/\d\d/,ir=/\d{3}/,gt=/\d{4}/,ze=/[+-]?\d{6}/,T=/\d\d?/,or=/\d\d\d\d?/,lr=/\d\d\d\d\d\d?/,Ze=/\d{1,3}/,kt=/\d{1,4}/,$e=/[+-]?\d{1,6}/,Ye=/\d+/,Je=/[+-]?\d+/,Ws=/Z|[+-]\d\d:?\d\d/gi,qe=/Z|[+-]\d\d(?::?\d\d)?/gi,Fs=/[+-]?\d+(\.\d{1,3})?/,be=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,we=/^[1-9]\d?/,St=/^([1-9]\d|\d)/,Be;Be={};function y(e,t,r){Be[e]=q(t)?t:function(s,a){return s&&r?r:t}}function Rs(e,t){return c(Be,e)?Be[e](t._strict,t._locale):new RegExp(Cs(e))}function Cs(e){return K(e.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,r,s,a,i){return r||s||a||i}))}function K(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function G(e){return e<0?Math.ceil(e)||0:Math.floor(e)}function g(e){var t=+e,r=0;return t!==0&&isFinite(t)&&(r=G(t)),r}var vt={};function O(e,t){var r,s=t,a;for(typeof e=="string"&&(e=[e]),C(t)&&(s=function(i,d){d[t]=g(i)}),a=e.length,r=0;r68?1900:2e3)};var ur=ge("FullYear",!0);function As(){return Qe(this.year())}function ge(e,t){return function(r){return r!=null?(dr(this,e,r),l.updateOffset(this,t),this):Le(this,e)}}function Le(e,t){if(!e.isValid())return NaN;var r=e._d,s=e._isUTC;switch(t){case"Milliseconds":return s?r.getUTCMilliseconds():r.getMilliseconds();case"Seconds":return s?r.getUTCSeconds():r.getSeconds();case"Minutes":return s?r.getUTCMinutes():r.getMinutes();case"Hours":return s?r.getUTCHours():r.getHours();case"Date":return s?r.getUTCDate():r.getDate();case"Day":return s?r.getUTCDay():r.getDay();case"Month":return s?r.getUTCMonth():r.getMonth();case"FullYear":return s?r.getUTCFullYear():r.getFullYear();default:return NaN}}function dr(e,t,r){var s,a,i,d,m;if(!(!e.isValid()||isNaN(r))){switch(s=e._d,a=e._isUTC,t){case"Milliseconds":return void(a?s.setUTCMilliseconds(r):s.setMilliseconds(r));case"Seconds":return void(a?s.setUTCSeconds(r):s.setSeconds(r));case"Minutes":return void(a?s.setUTCMinutes(r):s.setMinutes(r));case"Hours":return void(a?s.setUTCHours(r):s.setHours(r));case"Date":return void(a?s.setUTCDate(r):s.setDate(r));case"FullYear":break;default:return}i=r,d=e.month(),m=e.date(),m=m===29&&d===1&&!Qe(i)?28:m,a?s.setUTCFullYear(i,d,m):s.setFullYear(i,d,m)}}function Es(e){return e=V(e),q(this[e])?this[e]():this}function Vs(e,t){if(typeof e=="object"){e=wt(e);var r=Ns(e),s,a=r.length;for(s=0;s=0?(m=new Date(e+400,t,r,s,a,i,d),isFinite(m.getFullYear())&&m.setFullYear(e)):m=new Date(e,t,r,s,a,i,d),m}function Ne(e){var t,r;return e<100&&e>=0?(r=Array.prototype.slice.call(arguments),r[0]=e+400,t=new Date(Date.UTC.apply(null,r)),isFinite(t.getUTCFullYear())&&t.setUTCFullYear(e)):t=new Date(Date.UTC.apply(null,arguments)),t}function Xe(e,t,r){var s=7+t-r,a=(7+Ne(e,0,s).getUTCDay()-t)%7;return-a+s-1}function yr(e,t,r,s,a){var i=(7+r-s)%7,d=Xe(e,s,a),m=1+7*(t-1)+i+d,D,k;return m<=0?(D=e-1,k=Pe(D)+m):m>Pe(e)?(D=e+1,k=m-Pe(e)):(D=e,k=m),{year:D,dayOfYear:k}}function We(e,t,r){var s=Xe(e.year(),t,r),a=Math.floor((e.dayOfYear()-s-1)/7)+1,i,d;return a<1?(d=e.year()-1,i=a+re(d,t,r)):a>re(e.year(),t,r)?(i=a-re(e.year(),t,r),d=e.year()+1):(d=e.year(),i=a),{week:i,year:d}}function re(e,t,r){var s=Xe(e,t,r),a=Xe(e+1,t,r);return(Pe(e)-s+a)/7}M("w",["ww",2],"wo","week"),M("W",["WW",2],"Wo","isoWeek"),y("w",T,we),y("ww",T,H),y("W",T,we),y("WW",T,H),xe(["w","ww","W","WW"],function(e,t,r,s){t[s.substr(0,1)]=g(e)});function ra(e){return We(e,this._week.dow,this._week.doy).week}var sa={dow:0,doy:6};function aa(){return this._week.dow}function na(){return this._week.doy}function ia(e){var t=this.localeData().week(this);return e==null?t:this.add((e-t)*7,"d")}function oa(e){var t=We(this,1,4).week;return e==null?t:this.add((e-t)*7,"d")}M("d",0,"do","day"),M("dd",0,0,function(e){return this.localeData().weekdaysMin(this,e)}),M("ddd",0,0,function(e){return this.localeData().weekdaysShort(this,e)}),M("dddd",0,0,function(e){return this.localeData().weekdays(this,e)}),M("e",0,0,"weekday"),M("E",0,0,"isoWeekday"),y("d",T),y("e",T),y("E",T),y("dd",function(e,t){return t.weekdaysMinRegex(e)}),y("ddd",function(e,t){return t.weekdaysShortRegex(e)}),y("dddd",function(e,t){return t.weekdaysRegex(e)}),xe(["dd","ddd","dddd"],function(e,t,r,s){var a=r._locale.weekdaysParse(e,s,r._strict);a!=null?t.d=a:w(r).invalidWeekday=e}),xe(["d","e","E"],function(e,t,r,s){t[s]=g(e)});function la(e,t){return typeof e!="string"?e:isNaN(e)?(e=t.weekdaysParse(e),typeof e=="number"?e:null):parseInt(e,10)}function ua(e,t){return typeof e=="string"?t.weekdaysParse(e)%7||7:isNaN(e)?null:e}function jt(e,t){return e.slice(t,7).concat(e.slice(0,t))}var da="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Mr="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),fa="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),ha=be,ca=be,_a=be;function ma(e,t){var r=_(this._weekdays)?this._weekdays:this._weekdays[e&&e!==!0&&this._weekdays.isFormat.test(t)?"format":"standalone"];return e===!0?jt(r,this._week.dow):e?r[e.day()]:r}function ya(e){return e===!0?jt(this._weekdaysShort,this._week.dow):e?this._weekdaysShort[e.day()]:this._weekdaysShort}function Ma(e){return e===!0?jt(this._weekdaysMin,this._week.dow):e?this._weekdaysMin[e.day()]:this._weekdaysMin}function Da(e,t,r){var s,a,i,d=e.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],s=0;s<7;++s)i=J([2e3,1]).day(s),this._minWeekdaysParse[s]=this.weekdaysMin(i,"").toLocaleLowerCase(),this._shortWeekdaysParse[s]=this.weekdaysShort(i,"").toLocaleLowerCase(),this._weekdaysParse[s]=this.weekdays(i,"").toLocaleLowerCase();return r?t==="dddd"?(a=N.call(this._weekdaysParse,d),a!==-1?a:null):t==="ddd"?(a=N.call(this._shortWeekdaysParse,d),a!==-1?a:null):(a=N.call(this._minWeekdaysParse,d),a!==-1?a:null):t==="dddd"?(a=N.call(this._weekdaysParse,d),a!==-1||(a=N.call(this._shortWeekdaysParse,d),a!==-1)?a:(a=N.call(this._minWeekdaysParse,d),a!==-1?a:null)):t==="ddd"?(a=N.call(this._shortWeekdaysParse,d),a!==-1||(a=N.call(this._weekdaysParse,d),a!==-1)?a:(a=N.call(this._minWeekdaysParse,d),a!==-1?a:null)):(a=N.call(this._minWeekdaysParse,d),a!==-1||(a=N.call(this._weekdaysParse,d),a!==-1)?a:(a=N.call(this._shortWeekdaysParse,d),a!==-1?a:null))}function pa(e,t,r){var s,a,i;if(this._weekdaysParseExact)return Da.call(this,e,t,r);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),s=0;s<7;s++){if(a=J([2e3,1]).day(s),r&&!this._fullWeekdaysParse[s]&&(this._fullWeekdaysParse[s]=new RegExp("^"+this.weekdays(a,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[s]=new RegExp("^"+this.weekdaysShort(a,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[s]=new RegExp("^"+this.weekdaysMin(a,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[s]||(i="^"+this.weekdays(a,"")+"|^"+this.weekdaysShort(a,"")+"|^"+this.weekdaysMin(a,""),this._weekdaysParse[s]=new RegExp(i.replace(".",""),"i")),r&&t==="dddd"&&this._fullWeekdaysParse[s].test(e))return s;if(r&&t==="ddd"&&this._shortWeekdaysParse[s].test(e))return s;if(r&&t==="dd"&&this._minWeekdaysParse[s].test(e))return s;if(!r&&this._weekdaysParse[s].test(e))return s}}function Ya(e){if(!this.isValid())return e!=null?this:NaN;var t=Le(this,"Day");return e!=null?(e=la(e,this.localeData()),this.add(e-t,"d")):t}function wa(e){if(!this.isValid())return e!=null?this:NaN;var t=(this.day()+7-this.localeData()._week.dow)%7;return e==null?t:this.add(e-t,"d")}function ga(e){if(!this.isValid())return e!=null?this:NaN;if(e!=null){var t=ua(e,this.localeData());return this.day(this.day()%7?t:t-7)}else return this.day()||7}function ka(e){return this._weekdaysParseExact?(c(this,"_weekdaysRegex")||Tt.call(this),e?this._weekdaysStrictRegex:this._weekdaysRegex):(c(this,"_weekdaysRegex")||(this._weekdaysRegex=ha),this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex)}function Sa(e){return this._weekdaysParseExact?(c(this,"_weekdaysRegex")||Tt.call(this),e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(c(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=ca),this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)}function va(e){return this._weekdaysParseExact?(c(this,"_weekdaysRegex")||Tt.call(this),e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(c(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=_a),this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)}function Tt(){function e(U,oe){return oe.length-U.length}var t=[],r=[],s=[],a=[],i,d,m,D,k;for(i=0;i<7;i++)d=J([2e3,1]).day(i),m=K(this.weekdaysMin(d,"")),D=K(this.weekdaysShort(d,"")),k=K(this.weekdays(d,"")),t.push(m),r.push(D),s.push(k),a.push(m),a.push(D),a.push(k);t.sort(e),r.sort(e),s.sort(e),a.sort(e),this._weekdaysRegex=new RegExp("^("+a.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+s.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+r.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+t.join("|")+")","i")}function bt(){return this.hours()%12||12}function Oa(){return this.hours()||24}M("H",["HH",2],0,"hour"),M("h",["hh",2],0,bt),M("k",["kk",2],0,Oa),M("hmm",0,0,function(){return""+bt.apply(this)+B(this.minutes(),2)}),M("hmmss",0,0,function(){return""+bt.apply(this)+B(this.minutes(),2)+B(this.seconds(),2)}),M("Hmm",0,0,function(){return""+this.hours()+B(this.minutes(),2)}),M("Hmmss",0,0,function(){return""+this.hours()+B(this.minutes(),2)+B(this.seconds(),2)});function Dr(e,t){M(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)})}Dr("a",!0),Dr("A",!1);function pr(e,t){return t._meridiemParse}y("a",pr),y("A",pr),y("H",T,St),y("h",T,we),y("k",T,we),y("HH",T,H),y("hh",T,H),y("kk",T,H),y("hmm",or),y("hmmss",lr),y("Hmm",or),y("Hmmss",lr),O(["H","HH"],F),O(["k","kk"],function(e,t,r){var s=g(e);t[F]=s===24?0:s}),O(["a","A"],function(e,t,r){r._isPm=r._locale.isPM(e),r._meridiem=e}),O(["h","hh"],function(e,t,r){t[F]=g(e),w(r).bigHour=!0}),O("hmm",function(e,t,r){var s=e.length-2;t[F]=g(e.substr(0,s)),t[Z]=g(e.substr(s)),w(r).bigHour=!0}),O("hmmss",function(e,t,r){var s=e.length-4,a=e.length-2;t[F]=g(e.substr(0,s)),t[Z]=g(e.substr(s,2)),t[te]=g(e.substr(a)),w(r).bigHour=!0}),O("Hmm",function(e,t,r){var s=e.length-2;t[F]=g(e.substr(0,s)),t[Z]=g(e.substr(s))}),O("Hmmss",function(e,t,r){var s=e.length-4,a=e.length-2;t[F]=g(e.substr(0,s)),t[Z]=g(e.substr(s,2)),t[te]=g(e.substr(a))});function ja(e){return(e+"").toLowerCase().charAt(0)==="p"}var Ta=/[ap]\.?m?\.?/i,ba=ge("Hours",!0);function xa(e,t,r){return e>11?r?"pm":"PM":r?"am":"AM"}var Yr={calendar:Ds,longDateFormat:gs,invalidDate:Ss,ordinal:Os,dayOfMonthOrdinalParse:js,relativeTime:bs,months:zs,monthsShort:fr,week:sa,weekdays:da,weekdaysMin:fa,weekdaysShort:Mr,meridiemParse:Ta},P={},Fe={},Re;function Pa(e,t){var r,s=Math.min(e.length,t.length);for(r=0;r0;){if(a=Ke(i.slice(0,r).join("-")),a)return a;if(s&&s.length>=r&&Pa(i,s)>=r-1)break;r--}t++}return Re}function Na(e){return!!(e&&e.match("^[^/\\\\]*$"))}function Ke(e){var t=null,r;if(P[e]===void 0&&n&&n.exports&&Na(e))try{t=Re._abbr,r=po,r("./locale/"+e),de(t)}catch{P[e]=null}return P[e]}function de(e,t){var r;return e&&(W(t)?r=se(e):r=xt(e,t),r?Re=r:typeof console<"u"&&console.warn&&console.warn("Locale "+e+" not found. Did you forget to load it?")),Re._abbr}function xt(e,t){if(t!==null){var r,s=Yr;if(t.abbr=e,P[e]!=null)rr("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),s=P[e]._config;else if(t.parentLocale!=null)if(P[t.parentLocale]!=null)s=P[t.parentLocale]._config;else if(r=Ke(t.parentLocale),r!=null)s=r._config;else return Fe[t.parentLocale]||(Fe[t.parentLocale]=[]),Fe[t.parentLocale].push({name:e,config:t}),null;return P[e]=new Mt(yt(s,t)),Fe[e]&&Fe[e].forEach(function(a){xt(a.name,a.config)}),de(e),P[e]}else return delete P[e],null}function Wa(e,t){if(t!=null){var r,s,a=Yr;P[e]!=null&&P[e].parentLocale!=null?P[e].set(yt(P[e]._config,t)):(s=Ke(e),s!=null&&(a=s._config),t=yt(a,t),s==null&&(t.abbr=e),r=new Mt(t),r.parentLocale=P[e],P[e]=r),de(e)}else P[e]!=null&&(P[e].parentLocale!=null?(P[e]=P[e].parentLocale,e===de()&&de(e)):P[e]!=null&&delete P[e]);return P[e]}function se(e){var t;if(e&&e._locale&&e._locale._abbr&&(e=e._locale._abbr),!e)return Re;if(!_(e)){if(t=Ke(e),t)return t;e=[e]}return La(e)}function Fa(){return Dt(P)}function Pt(e){var t,r=e._a;return r&&w(e).overflow===-2&&(t=r[ee]<0||r[ee]>11?ee:r[Q]<1||r[Q]>Ot(r[R],r[ee])?Q:r[F]<0||r[F]>24||r[F]===24&&(r[Z]!==0||r[te]!==0||r[ye]!==0)?F:r[Z]<0||r[Z]>59?Z:r[te]<0||r[te]>59?te:r[ye]<0||r[ye]>999?ye:-1,w(e)._overflowDayOfYear&&(tQ)&&(t=Q),w(e)._overflowWeeks&&t===-1&&(t=Is),w(e)._overflowWeekday&&t===-1&&(t=Hs),w(e).overflow=t),e}var Ra=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,Ca=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,Ua=/Z|[+-]\d\d(?::?\d\d)?/,et=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/],["YYYYMM",/\d{6}/,!1],["YYYY",/\d{4}/,!1]],Lt=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],Ia=/^\/?Date\((-?\d+)/i,Ha=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,Aa={UT:0,GMT:0,EDT:-4*60,EST:-5*60,CDT:-5*60,CST:-6*60,MDT:-6*60,MST:-7*60,PDT:-7*60,PST:-8*60};function gr(e){var t,r,s=e._i,a=Ra.exec(s)||Ca.exec(s),i,d,m,D,k=et.length,U=Lt.length;if(a){for(w(e).iso=!0,t=0,r=k;tPe(d)||e._dayOfYear===0)&&(w(e)._overflowDayOfYear=!0),r=Ne(d,0,e._dayOfYear),e._a[ee]=r.getUTCMonth(),e._a[Q]=r.getUTCDate()),t=0;t<3&&e._a[t]==null;++t)e._a[t]=s[t]=a[t];for(;t<7;t++)e._a[t]=s[t]=e._a[t]==null?t===2?1:0:e._a[t];e._a[F]===24&&e._a[Z]===0&&e._a[te]===0&&e._a[ye]===0&&(e._nextDay=!0,e._a[F]=0),e._d=(e._useUTC?Ne:ta).apply(null,s),i=e._useUTC?e._d.getUTCDay():e._d.getDay(),e._tzm!=null&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[F]=24),e._w&&typeof e._w.d<"u"&&e._w.d!==i&&(w(e).weekdayMismatch=!0)}}function qa(e){var t,r,s,a,i,d,m,D,k;t=e._w,t.GG!=null||t.W!=null||t.E!=null?(i=1,d=4,r=ke(t.GG,e._a[R],We(b(),1,4).year),s=ke(t.W,1),a=ke(t.E,1),(a<1||a>7)&&(D=!0)):(i=e._locale._week.dow,d=e._locale._week.doy,k=We(b(),i,d),r=ke(t.gg,e._a[R],k.year),s=ke(t.w,k.week),t.d!=null?(a=t.d,(a<0||a>6)&&(D=!0)):t.e!=null?(a=t.e+i,(t.e<0||t.e>6)&&(D=!0)):a=i),s<1||s>re(r,i,d)?w(e)._overflowWeeks=!0:D!=null?w(e)._overflowWeekday=!0:(m=yr(r,s,a,i,d),e._a[R]=m.year,e._dayOfYear=m.dayOfYear)}l.ISO_8601=function(){},l.RFC_2822=function(){};function Wt(e){if(e._f===l.ISO_8601){gr(e);return}if(e._f===l.RFC_2822){kr(e);return}e._a=[],w(e).empty=!0;var t=""+e._i,r,s,a,i,d,m=t.length,D=0,k,U;for(a=sr(e._f,e._locale).match(pt)||[],U=a.length,r=0;r0&&w(e).unusedInput.push(d),t=t.slice(t.indexOf(s)+s.length),D+=s.length),pe[i]?(s?w(e).empty=!1:w(e).unusedTokens.push(i),Us(i,s,e)):e._strict&&!s&&w(e).unusedTokens.push(i);w(e).charsLeftOver=m-D,t.length>0&&w(e).unusedInput.push(t),e._a[F]<=12&&w(e).bigHour===!0&&e._a[F]>0&&(w(e).bigHour=void 0),w(e).parsedDateParts=e._a.slice(0),w(e).meridiem=e._meridiem,e._a[F]=Ba(e._locale,e._a[F],e._meridiem),k=w(e).era,k!==null&&(e._a[R]=e._locale.erasConvertYear(k,e._a[R])),Nt(e),Pt(e)}function Ba(e,t,r){var s;return r==null?t:e.meridiemHour!=null?e.meridiemHour(t,r):(e.isPM!=null&&(s=e.isPM(r),s&&t<12&&(t+=12),!s&&t===12&&(t=0)),t)}function Qa(e){var t,r,s,a,i,d,m=!1,D=e._f.length;if(D===0){w(e).invalidFormat=!0,e._d=new Date(NaN);return}for(a=0;athis?this:e:Ee()});function Or(e,t){var r,s;if(t.length===1&&_(t[0])&&(t=t[0]),!t.length)return b();for(r=t[0],s=1;sthis.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function pn(){if(!W(this._isDSTShifted))return this._isDSTShifted;var e={},t;return mt(e,this),e=Sr(e),e._a?(t=e._isUTC?J(e._a):b(e._a),this._isDSTShifted=this.isValid()&&dn(e._a,t.toArray())>0):this._isDSTShifted=!1,this._isDSTShifted}function Yn(){return this.isValid()?!this._isUTC:!1}function wn(){return this.isValid()?this._isUTC:!1}function Tr(){return this.isValid()?this._isUTC&&this._offset===0:!1}var gn=/^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,kn=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function $(e,t){var r=e,s=null,a,i,d;return rt(e)?r={ms:e._milliseconds,d:e._days,M:e._months}:C(e)||!isNaN(+e)?(r={},t?r[t]=+e:r.milliseconds=+e):(s=gn.exec(e))?(a=s[1]==="-"?-1:1,r={y:0,d:g(s[Q])*a,h:g(s[F])*a,m:g(s[Z])*a,s:g(s[te])*a,ms:g(Ft(s[ye]*1e3))*a}):(s=kn.exec(e))?(a=s[1]==="-"?-1:1,r={y:Me(s[2],a),M:Me(s[3],a),w:Me(s[4],a),d:Me(s[5],a),h:Me(s[6],a),m:Me(s[7],a),s:Me(s[8],a)}):r==null?r={}:typeof r=="object"&&("from"in r||"to"in r)&&(d=Sn(b(r.from),b(r.to)),r={},r.ms=d.milliseconds,r.M=d.months),i=new tt(r),rt(e)&&c(e,"_locale")&&(i._locale=e._locale),rt(e)&&c(e,"_isValid")&&(i._isValid=e._isValid),i}$.fn=tt.prototype,$.invalid=un;function Me(e,t){var r=e&&parseFloat(e.replace(",","."));return(isNaN(r)?0:r)*t}function br(e,t){var r={};return r.months=t.month()-e.month()+(t.year()-e.year())*12,e.clone().add(r.months,"M").isAfter(t)&&--r.months,r.milliseconds=+t-+e.clone().add(r.months,"M"),r}function Sn(e,t){var r;return e.isValid()&&t.isValid()?(t=Ct(t,e),e.isBefore(t)?r=br(e,t):(r=br(t,e),r.milliseconds=-r.milliseconds,r.months=-r.months),r):{milliseconds:0,months:0}}function xr(e,t){return function(r,s){var a,i;return s!==null&&!isNaN(+s)&&(rr(t,"moment()."+t+"(period, number) is deprecated. Please use moment()."+t+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),i=r,r=s,s=i),a=$(r,s),Pr(this,a,e),this}}function Pr(e,t,r,s){var a=t._milliseconds,i=Ft(t._days),d=Ft(t._months);e.isValid()&&(s=s??!0,d&&cr(e,Le(e,"Month")+d*r),i&&dr(e,"Date",Le(e,"Date")+i*r),a&&e._d.setTime(e._d.valueOf()+a*r),s&&l.updateOffset(e,i||d))}var vn=xr(1,"add"),On=xr(-1,"subtract");function Lr(e){return typeof e=="string"||e instanceof String}function jn(e){return z(e)||I(e)||Lr(e)||C(e)||bn(e)||Tn(e)||e===null||e===void 0}function Tn(e){var t=p(e)&&!j(e),r=!1,s=["years","year","y","months","month","M","days","day","d","dates","date","D","hours","hour","h","minutes","minute","m","seconds","second","s","milliseconds","millisecond","ms"],a,i,d=s.length;for(a=0;ar.valueOf():r.valueOf()9999?Ge(r,t?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):q(Date.prototype.toISOString)?t?this.toDate().toISOString():new Date(this.valueOf()+this.utcOffset()*60*1e3).toISOString().replace("Z",Ge(r,"Z")):Ge(r,t?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")}function Vn(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var e="moment",t="",r,s,a,i;return this.isLocal()||(e=this.utcOffset()===0?"moment.utc":"moment.parseZone",t="Z"),r="["+e+'("]',s=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",a="-MM-DD[T]HH:mm:ss.SSS",i=t+'[")]',this.format(r+s+a+i)}function Gn(e){e||(e=this.isUtc()?l.defaultFormatUtc:l.defaultFormat);var t=Ge(this,e);return this.localeData().postformat(t)}function zn(e,t){return this.isValid()&&(z(e)&&e.isValid()||b(e).isValid())?$({to:this,from:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()}function Zn(e){return this.from(b(),e)}function $n(e,t){return this.isValid()&&(z(e)&&e.isValid()||b(e).isValid())?$({from:this,to:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()}function Jn(e){return this.to(b(),e)}function Nr(e){var t;return e===void 0?this._locale._abbr:(t=se(e),t!=null&&(this._locale=t),this)}var Wr=E("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(e){return e===void 0?this.localeData():this.locale(e)});function Fr(){return this._locale}var at=1e3,Se=60*at,nt=60*Se,Rr=(365*400+97)*24*nt;function ve(e,t){return(e%t+t)%t}function Cr(e,t,r){return e<100&&e>=0?new Date(e+400,t,r)-Rr:new Date(e,t,r).valueOf()}function Ur(e,t,r){return e<100&&e>=0?Date.UTC(e+400,t,r)-Rr:Date.UTC(e,t,r)}function qn(e){var t,r;if(e=V(e),e===void 0||e==="millisecond"||!this.isValid())return this;switch(r=this._isUTC?Ur:Cr,e){case"year":t=r(this.year(),0,1);break;case"quarter":t=r(this.year(),this.month()-this.month()%3,1);break;case"month":t=r(this.year(),this.month(),1);break;case"week":t=r(this.year(),this.month(),this.date()-this.weekday());break;case"isoWeek":t=r(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case"day":case"date":t=r(this.year(),this.month(),this.date());break;case"hour":t=this._d.valueOf(),t-=ve(t+(this._isUTC?0:this.utcOffset()*Se),nt);break;case"minute":t=this._d.valueOf(),t-=ve(t,Se);break;case"second":t=this._d.valueOf(),t-=ve(t,at);break}return this._d.setTime(t),l.updateOffset(this,!0),this}function Bn(e){var t,r;if(e=V(e),e===void 0||e==="millisecond"||!this.isValid())return this;switch(r=this._isUTC?Ur:Cr,e){case"year":t=r(this.year()+1,0,1)-1;break;case"quarter":t=r(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":t=r(this.year(),this.month()+1,1)-1;break;case"week":t=r(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":t=r(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":t=r(this.year(),this.month(),this.date()+1)-1;break;case"hour":t=this._d.valueOf(),t+=nt-ve(t+(this._isUTC?0:this.utcOffset()*Se),nt)-1;break;case"minute":t=this._d.valueOf(),t+=Se-ve(t,Se)-1;break;case"second":t=this._d.valueOf(),t+=at-ve(t,at)-1;break}return this._d.setTime(t),l.updateOffset(this,!0),this}function Qn(){return this._d.valueOf()-(this._offset||0)*6e4}function Xn(){return Math.floor(this.valueOf()/1e3)}function Kn(){return new Date(this.valueOf())}function ei(){var e=this;return[e.year(),e.month(),e.date(),e.hour(),e.minute(),e.second(),e.millisecond()]}function ti(){var e=this;return{years:e.year(),months:e.month(),date:e.date(),hours:e.hours(),minutes:e.minutes(),seconds:e.seconds(),milliseconds:e.milliseconds()}}function ri(){return this.isValid()?this.toISOString():null}function si(){return ct(this)}function ai(){return ue({},w(this))}function ni(){return w(this).overflow}function ii(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}}M("N",0,0,"eraAbbr"),M("NN",0,0,"eraAbbr"),M("NNN",0,0,"eraAbbr"),M("NNNN",0,0,"eraName"),M("NNNNN",0,0,"eraNarrow"),M("y",["y",1],"yo","eraYear"),M("y",["yy",2],0,"eraYear"),M("y",["yyy",3],0,"eraYear"),M("y",["yyyy",4],0,"eraYear"),y("N",It),y("NN",It),y("NNN",It),y("NNNN",Mi),y("NNNNN",Di),O(["N","NN","NNN","NNNN","NNNNN"],function(e,t,r,s){var a=r._locale.erasParse(e,s,r._strict);a?w(r).era=a:w(r).invalidEra=e}),y("y",Ye),y("yy",Ye),y("yyy",Ye),y("yyyy",Ye),y("yo",pi),O(["y","yy","yyy","yyyy"],R),O(["yo"],function(e,t,r,s){var a;r._locale._eraYearOrdinalRegex&&(a=e.match(r._locale._eraYearOrdinalRegex)),r._locale.eraYearOrdinalParse?t[R]=r._locale.eraYearOrdinalParse(e,a):t[R]=parseInt(e,10)});function oi(e,t){var r,s,a,i=this._eras||se("en")._eras;for(r=0,s=i.length;r=0)return i[s]}function ui(e,t){var r=e.since<=e.until?1:-1;return t===void 0?l(e.since).year():l(e.since).year()+(t-e.offset)*r}function di(){var e,t,r,s=this.localeData().eras();for(e=0,t=s.length;ei&&(t=i),Oi.call(this,e,t,r,s,a))}function Oi(e,t,r,s,a){var i=yr(e,t,r,s,a),d=Ne(i.year,0,i.dayOfYear);return this.year(d.getUTCFullYear()),this.month(d.getUTCMonth()),this.date(d.getUTCDate()),this}M("Q",0,"Qo","quarter"),y("Q",nr),O("Q",function(e,t){t[ee]=(g(e)-1)*3});function ji(e){return e==null?Math.ceil((this.month()+1)/3):this.month((e-1)*3+this.month()%3)}M("D",["DD",2],"Do","date"),y("D",T,we),y("DD",T,H),y("Do",function(e,t){return e?t._dayOfMonthOrdinalParse||t._ordinalParse:t._dayOfMonthOrdinalParseLenient}),O(["D","DD"],Q),O("Do",function(e,t){t[Q]=g(e.match(T)[0])});var Hr=ge("Date",!0);M("DDD",["DDDD",3],"DDDo","dayOfYear"),y("DDD",Ze),y("DDDD",ir),O(["DDD","DDDD"],function(e,t,r){r._dayOfYear=g(e)});function Ti(e){var t=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return e==null?t:this.add(e-t,"d")}M("m",["mm",2],0,"minute"),y("m",T,St),y("mm",T,H),O(["m","mm"],Z);var bi=ge("Minutes",!1);M("s",["ss",2],0,"second"),y("s",T,St),y("ss",T,H),O(["s","ss"],te);var xi=ge("Seconds",!1);M("S",0,0,function(){return~~(this.millisecond()/100)}),M(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),M(0,["SSS",3],0,"millisecond"),M(0,["SSSS",4],0,function(){return this.millisecond()*10}),M(0,["SSSSS",5],0,function(){return this.millisecond()*100}),M(0,["SSSSSS",6],0,function(){return this.millisecond()*1e3}),M(0,["SSSSSSS",7],0,function(){return this.millisecond()*1e4}),M(0,["SSSSSSSS",8],0,function(){return this.millisecond()*1e5}),M(0,["SSSSSSSSS",9],0,function(){return this.millisecond()*1e6}),y("S",Ze,nr),y("SS",Ze,H),y("SSS",Ze,ir);var fe,Ar;for(fe="SSSS";fe.length<=9;fe+="S")y(fe,Ye);function Pi(e,t){t[ye]=g(("0."+e)*1e3)}for(fe="S";fe.length<=9;fe+="S")O(fe,Pi);Ar=ge("Milliseconds",!1),M("z",0,0,"zoneAbbr"),M("zz",0,0,"zoneName");function Li(){return this._isUTC?"UTC":""}function Ni(){return this._isUTC?"Coordinated Universal Time":""}var f=Te.prototype;f.add=vn,f.calendar=Ln,f.clone=Nn,f.diff=Hn,f.endOf=Bn,f.format=Gn,f.from=zn,f.fromNow=Zn,f.to=$n,f.toNow=Jn,f.get=Es,f.invalidAt=ni,f.isAfter=Wn,f.isBefore=Fn,f.isBetween=Rn,f.isSame=Cn,f.isSameOrAfter=Un,f.isSameOrBefore=In,f.isValid=si,f.lang=Wr,f.locale=Nr,f.localeData=Fr,f.max=rn,f.min=tn,f.parsingFlags=ai,f.set=Vs,f.startOf=qn,f.subtract=On,f.toArray=ei,f.toObject=ti,f.toDate=Kn,f.toISOString=En,f.inspect=Vn,typeof Symbol<"u"&&Symbol.for!=null&&(f[Symbol.for("nodejs.util.inspect.custom")]=function(){return"Moment<"+this.format()+">"}),f.toJSON=ri,f.toString=An,f.unix=Xn,f.valueOf=Qn,f.creationData=ii,f.eraName=di,f.eraNarrow=fi,f.eraAbbr=hi,f.eraYear=ci,f.year=ur,f.isLeapYear=As,f.weekYear=Yi,f.isoWeekYear=wi,f.quarter=f.quarters=ji,f.month=_r,f.daysInMonth=Xs,f.week=f.weeks=ia,f.isoWeek=f.isoWeeks=oa,f.weeksInYear=Si,f.weeksInWeekYear=vi,f.isoWeeksInYear=gi,f.isoWeeksInISOWeekYear=ki,f.date=Hr,f.day=f.days=Ya,f.weekday=wa,f.isoWeekday=ga,f.dayOfYear=Ti,f.hour=f.hours=ba,f.minute=f.minutes=bi,f.second=f.seconds=xi,f.millisecond=f.milliseconds=Ar,f.utcOffset=hn,f.utc=_n,f.local=mn,f.parseZone=yn,f.hasAlignedHourOffset=Mn,f.isDST=Dn,f.isLocal=Yn,f.isUtcOffset=wn,f.isUtc=Tr,f.isUTC=Tr,f.zoneAbbr=Li,f.zoneName=Ni,f.dates=E("dates accessor is deprecated. Use date instead.",Hr),f.months=E("months accessor is deprecated. Use month instead",_r),f.years=E("years accessor is deprecated. Use year instead",ur),f.zone=E("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",cn),f.isDSTShifted=E("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",pn);function Wi(e){return b(e*1e3)}function Fi(){return b.apply(null,arguments).parseZone()}function Er(e){return e}var v=Mt.prototype;v.calendar=ps,v.longDateFormat=ks,v.invalidDate=vs,v.ordinal=Ts,v.preparse=Er,v.postformat=Er,v.relativeTime=xs,v.pastFuture=Ps,v.set=Ms,v.eras=oi,v.erasParse=li,v.erasConvertYear=ui,v.erasAbbrRegex=mi,v.erasNameRegex=_i,v.erasNarrowRegex=yi,v.months=Js,v.monthsShort=qs,v.monthsParse=Qs,v.monthsRegex=ea,v.monthsShortRegex=Ks,v.week=ra,v.firstDayOfYear=na,v.firstDayOfWeek=aa,v.weekdays=ma,v.weekdaysMin=Ma,v.weekdaysShort=ya,v.weekdaysParse=pa,v.weekdaysRegex=ka,v.weekdaysShortRegex=Sa,v.weekdaysMinRegex=va,v.isPM=ja,v.meridiem=xa;function ot(e,t,r,s){var a=se(),i=J().set(s,t);return a[r](i,e)}function Vr(e,t,r){if(C(e)&&(t=e,e=void 0),e=e||"",t!=null)return ot(e,t,r,"month");var s,a=[];for(s=0;s<12;s++)a[s]=ot(e,s,r,"month");return a}function At(e,t,r,s){typeof e=="boolean"?(C(t)&&(r=t,t=void 0),t=t||""):(t=e,r=t,e=!1,C(t)&&(r=t,t=void 0),t=t||"");var a=se(),i=e?a._week.dow:0,d,m=[];if(r!=null)return ot(t,(r+i)%7,s,"day");for(d=0;d<7;d++)m[d]=ot(t,(d+i)%7,s,"day");return m}function Ri(e,t){return Vr(e,t,"months")}function Ci(e,t){return Vr(e,t,"monthsShort")}function Ui(e,t,r){return At(e,t,r,"weekdays")}function Ii(e,t,r){return At(e,t,r,"weekdaysShort")}function Hi(e,t,r){return At(e,t,r,"weekdaysMin")}de("en",{eras:[{since:"0001-01-01",until:1/0,offset:1,name:"Anno Domini",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"Before Christ",narrow:"BC",abbr:"BC"}],dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10,r=g(e%100/10)===1?"th":t===1?"st":t===2?"nd":t===3?"rd":"th";return e+r}}),l.lang=E("moment.lang is deprecated. Use moment.locale instead.",de),l.langData=E("moment.langData is deprecated. Use moment.localeData instead.",se);var ae=Math.abs;function Ai(){var e=this._data;return this._milliseconds=ae(this._milliseconds),this._days=ae(this._days),this._months=ae(this._months),e.milliseconds=ae(e.milliseconds),e.seconds=ae(e.seconds),e.minutes=ae(e.minutes),e.hours=ae(e.hours),e.months=ae(e.months),e.years=ae(e.years),this}function Gr(e,t,r,s){var a=$(t,r);return e._milliseconds+=s*a._milliseconds,e._days+=s*a._days,e._months+=s*a._months,e._bubble()}function Ei(e,t){return Gr(this,e,t,1)}function Vi(e,t){return Gr(this,e,t,-1)}function zr(e){return e<0?Math.floor(e):Math.ceil(e)}function Gi(){var e=this._milliseconds,t=this._days,r=this._months,s=this._data,a,i,d,m,D;return e>=0&&t>=0&&r>=0||e<=0&&t<=0&&r<=0||(e+=zr(Et(r)+t)*864e5,t=0,r=0),s.milliseconds=e%1e3,a=G(e/1e3),s.seconds=a%60,i=G(a/60),s.minutes=i%60,d=G(i/60),s.hours=d%24,t+=G(d/24),D=G(Zr(t)),r+=D,t-=zr(Et(D)),m=G(r/12),r%=12,s.days=t,s.months=r,s.years=m,this}function Zr(e){return e*4800/146097}function Et(e){return e*146097/4800}function zi(e){if(!this.isValid())return NaN;var t,r,s=this._milliseconds;if(e=V(e),e==="month"||e==="quarter"||e==="year")switch(t=this._days+s/864e5,r=this._months+Zr(t),e){case"month":return r;case"quarter":return r/3;case"year":return r/12}else switch(t=this._days+Math.round(Et(this._months)),e){case"week":return t/7+s/6048e5;case"day":return t+s/864e5;case"hour":return t*24+s/36e5;case"minute":return t*1440+s/6e4;case"second":return t*86400+s/1e3;case"millisecond":return Math.floor(t*864e5)+s;default:throw new Error("Unknown unit "+e)}}function ne(e){return function(){return this.as(e)}}var $r=ne("ms"),Zi=ne("s"),$i=ne("m"),Ji=ne("h"),qi=ne("d"),Bi=ne("w"),Qi=ne("M"),Xi=ne("Q"),Ki=ne("y"),eo=$r;function to(){return $(this)}function ro(e){return e=V(e),this.isValid()?this[e+"s"]():NaN}function De(e){return function(){return this.isValid()?this._data[e]:NaN}}var so=De("milliseconds"),ao=De("seconds"),no=De("minutes"),io=De("hours"),oo=De("days"),lo=De("months"),uo=De("years");function fo(){return G(this.days()/7)}var ie=Math.round,Oe={ss:44,s:45,m:45,h:22,d:26,w:null,M:11};function ho(e,t,r,s,a){return a.relativeTime(t||1,!!r,e,s)}function co(e,t,r,s){var a=$(e).abs(),i=ie(a.as("s")),d=ie(a.as("m")),m=ie(a.as("h")),D=ie(a.as("d")),k=ie(a.as("M")),U=ie(a.as("w")),oe=ie(a.as("y")),he=i<=r.ss&&["s",i]||i0,he[4]=s,ho.apply(null,he)}function _o(e){return e===void 0?ie:typeof e=="function"?(ie=e,!0):!1}function mo(e,t){return Oe[e]===void 0?!1:t===void 0?Oe[e]:(Oe[e]=t,e==="s"&&(Oe.ss=t-1),!0)}function yo(e,t){if(!this.isValid())return this.localeData().invalidDate();var r=!1,s=Oe,a,i;return typeof e=="object"&&(t=e,e=!1),typeof e=="boolean"&&(r=e),typeof t=="object"&&(s=Object.assign({},Oe,t),t.s!=null&&t.ss==null&&(s.ss=t.s-1)),a=this.localeData(),i=co(this,!r,s,a),r&&(i=a.pastFuture(+this,i)),a.postformat(i)}var Vt=Math.abs;function je(e){return(e>0)-(e<0)||+e}function lt(){if(!this.isValid())return this.localeData().invalidDate();var e=Vt(this._milliseconds)/1e3,t=Vt(this._days),r=Vt(this._months),s,a,i,d,m=this.asSeconds(),D,k,U,oe;return m?(s=G(e/60),a=G(s/60),e%=60,s%=60,i=G(r/12),r%=12,d=e?e.toFixed(3).replace(/\.?0+$/,""):"",D=m<0?"-":"",k=je(this._months)!==je(m)?"-":"",U=je(this._days)!==je(m)?"-":"",oe=je(this._milliseconds)!==je(m)?"-":"",D+"P"+(i?k+i+"Y":"")+(r?k+r+"M":"")+(t?U+t+"D":"")+(a||s||e?"T":"")+(a?oe+a+"H":"")+(s?oe+s+"M":"")+(e?oe+d+"S":"")):"P0D"}var S=tt.prototype;S.isValid=ln,S.abs=Ai,S.add=Ei,S.subtract=Vi,S.as=zi,S.asMilliseconds=$r,S.asSeconds=Zi,S.asMinutes=$i,S.asHours=Ji,S.asDays=qi,S.asWeeks=Bi,S.asMonths=Qi,S.asQuarters=Xi,S.asYears=Ki,S.valueOf=eo,S._bubble=Gi,S.clone=to,S.get=ro,S.milliseconds=so,S.seconds=ao,S.minutes=no,S.hours=io,S.days=oo,S.weeks=fo,S.months=lo,S.years=uo,S.humanize=yo,S.toISOString=lt,S.toString=lt,S.toJSON=lt,S.locale=Nr,S.localeData=Fr,S.toIsoString=E("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",lt),S.lang=Wr,M("X",0,0,"unix"),M("x",0,0,"valueOf"),y("x",Je),y("X",Fs),O("X",function(e,t,r){r._d=new Date(parseFloat(e)*1e3)}),O("x",function(e,t,r){r._d=new Date(g(e))});//! moment.js diff --git a/apps/user-app/dist/assets/filtersStore-CRo2e-wH.js b/apps/user-app/dist/assets/filtersStore-B8ucFdIZ.js similarity index 75% rename from apps/user-app/dist/assets/filtersStore-CRo2e-wH.js rename to apps/user-app/dist/assets/filtersStore-B8ucFdIZ.js index bd30e82..bc5ffc3 100644 --- a/apps/user-app/dist/assets/filtersStore-CRo2e-wH.js +++ b/apps/user-app/dist/assets/filtersStore-B8ucFdIZ.js @@ -1 +1 @@ -import{A as e}from"./index-BFOyCNFT.js";const t=()=>({colors:[],brands:[],ciny_id:[],limit_percent:[],limit_gram:[],has_discount:!1,text:void 0,cats:void 0,page:0}),i=e("filters",{state:()=>({query:t()}),actions:{reset(){this.query=t()}}});export{i as u}; +import{A as e}from"./index-B-RmZRr2.js";const t=()=>({colors:[],brands:[],ciny_id:[],limit_percent:[],limit_gram:[],has_discount:!1,text:void 0,cats:void 0,page:0}),i=e("filters",{state:()=>({query:t()}),actions:{reset(){this.query=t()}}});export{i as u}; diff --git a/apps/user-app/dist/assets/index-BFOyCNFT.js b/apps/user-app/dist/assets/index-B-RmZRr2.js similarity index 95% rename from apps/user-app/dist/assets/index-BFOyCNFT.js rename to apps/user-app/dist/assets/index-B-RmZRr2.js index f578a6e..5719cf3 100644 --- a/apps/user-app/dist/assets/index-BFOyCNFT.js +++ b/apps/user-app/dist/assets/index-B-RmZRr2.js @@ -1,39 +1,39 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/HomeView-XsVegvBL.js","assets/AppPullRefresh-CsuQ3Y8x.js","assets/AppPullRefresh-gZ_s2cpM.css","assets/RateStrip-ljKA-iPt.js","assets/filters-sld47Iy-.js","assets/RateStrip-B0IIPPeC.css","assets/ProductCard-k7xfI-K2.js","assets/ProductCard-BaiSrMlA.css","assets/SectionHead-Cg_UnoI8.js","assets/SectionHead-X7JFvmOG.css","assets/filtersStore-CRo2e-wH.js","assets/notificationsStore-CycZP1fZ.js","assets/useReveal-CE0IBSnz.js","assets/catalogStore-BuqGxGiV.js","assets/HomeView-Dz_SFaCw.css","assets/NewestView-BFhp5Jry.js","assets/PageBar-Cz1N2fdD.js","assets/PageBar-Cjc9-xat.css","assets/NewestView-DerjwzWa.css","assets/CartView-CIolGKJ4.js","assets/index-BgbR-bph.js","assets/KeyCode-C6xc2Qke.js","assets/classCallCheck-BVPDkxOa.js","assets/raf-nDFcuFT6.js","assets/index-D3GLzZ3l.js","assets/FormItemContext-BNYzezPe.js","assets/CartView-CbLBc7Rt.css","assets/LoginRegisterView-DrlMRoCO.js","assets/LoginRegisterView-CbO5D26D.css","assets/DashboardView-DTn8YzNG.js","assets/DashboardView-Dj4lvaLJ.css","assets/OrdersView-DfF-Dg7U.js","assets/SearchInput-C_6TS52w.js","assets/SearchInput-BkDeGG-K.css","assets/orderStatus-DQMd9b1t.js","assets/OrdersView-UefU7h2O.css","assets/TransactionsView-5Ti1Tz-b.js","assets/TransactionsView-QJUT0Agr.css","assets/ProfileView-CpqOGnPs.js","assets/ProfileView-15PPV3MU.css","assets/FavoritesView-o6zfIXuM.js","assets/FavoritesView-CXia5ep7.css","assets/AppearanceView-DFGqsdWs.js","assets/AppearanceView-COyZOyul.css","assets/ChildOrdersView-DaRQcTIW.js","assets/ChildOrdersView-Dv3hDjiw.css","assets/CustomerChoiceView-t2STlBIR.js","assets/CustomerChoiceView-BSt75k0Q.css","assets/CompleteProfileView-Bz-DU0Ra.js","assets/CompleteProfileView-D9l9B3Tw.css","assets/ReportView-dGzBNYXh.js","assets/ReportView-0o86enB4.css","assets/NotificationsView-BBfjG7fu.js","assets/NotificationsView-BpHQiLIG.css","assets/SearchView-CX3YDK4c.js","assets/SearchView-FqBYHVVr.css","assets/CollectionView-B48MQuIc.js","assets/CollectionView-NYLhVKst.css"])))=>i.map(i=>d[i]); +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/HomeView-CytyOCPn.js","assets/AppPullRefresh-RDVLXVM_.js","assets/AppPullRefresh-gZ_s2cpM.css","assets/RateStrip-D4hWdTta.js","assets/filters-BLs90kiz.js","assets/RateStrip-B0IIPPeC.css","assets/ProductCard-AevItfr3.js","assets/ProductCard-BaiSrMlA.css","assets/SectionHead-CJoa_aGh.js","assets/SectionHead-X7JFvmOG.css","assets/filtersStore-B8ucFdIZ.js","assets/notificationsStore-CEbLTUwx.js","assets/useReveal-Dq2T90sy.js","assets/catalogStore-D54EVMFO.js","assets/HomeView-Dz_SFaCw.css","assets/NewestView-U3MIVepY.js","assets/PageBar-DmOKrVEQ.js","assets/PageBar-Cjc9-xat.css","assets/NewestView-DerjwzWa.css","assets/CartView-mD4jqxvD.js","assets/index-DXKwa_Wp.js","assets/KeyCode-DsOsmuVa.js","assets/classCallCheck-BMo4V_0Q.js","assets/raf-nDFcuFT6.js","assets/index-DDItTnD7.js","assets/isEqual-CAQ2DK4R.js","assets/FormItemContext-Buff0-hx.js","assets/CartView-CWT8adxX.css","assets/LoginRegisterView--xd-iA3G.js","assets/LoginRegisterView-CbO5D26D.css","assets/DashboardView-CuieN8qk.js","assets/DashboardView-BuVa3lpc.css","assets/OrdersView-BuGZsuud.js","assets/SearchInput-BkGXK-xm.js","assets/SearchInput-BkDeGG-K.css","assets/orderStatus-DQMd9b1t.js","assets/OrdersView-B7oGowL4.css","assets/TransactionsView-DU94ZdnQ.js","assets/TransactionsView-QJUT0Agr.css","assets/ProfileView-wOkrkPJE.js","assets/ProfileView-15PPV3MU.css","assets/FavoritesView-mBGWEKpf.js","assets/FavoritesView-CXia5ep7.css","assets/MakeOrderView-CPwGE5ee.js","assets/SingleImageUploader-CX4x2X-j.js","assets/SingleImageUploader-VLjcKc1D.css","assets/MakeOrderView-zElUhN37.css","assets/MakeOrderStatusView-CABGAYeD.js","assets/MakeOrderStatusView-CpLbykh8.css","assets/AppearanceView-Dvo5IEVp.js","assets/AppearanceView-COyZOyul.css","assets/ChildOrdersView-DcTtJnk7.js","assets/ChildOrdersView-3bFx9CUY.css","assets/CustomerChoiceView-CCVW8w6E.js","assets/CustomerChoiceView-Ck51_wfq.css","assets/CompleteProfileView-DJF4Zx67.js","assets/CompleteProfileView-C-gvGVz2.css","assets/ReportView-BU1YURL5.js","assets/ReportView-0o86enB4.css","assets/NotificationsView-CaeA456U.js","assets/NotificationsView-BpHQiLIG.css","assets/SearchView-DrsdyLde.js","assets/SearchView-FqBYHVVr.css","assets/CollectionView-BzWuMq0j.js","assets/CollectionView-NYLhVKst.css"])))=>i.map(i=>d[i]); (function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))o(r);new MutationObserver(r=>{for(const i of r)if(i.type==="childList")for(const s of i.addedNodes)s.tagName==="LINK"&&s.rel==="modulepreload"&&o(s)}).observe(document,{childList:!0,subtree:!0});function n(r){const i={};return r.integrity&&(i.integrity=r.integrity),r.referrerPolicy&&(i.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?i.credentials="include":r.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function o(r){if(r.ep)return;r.ep=!0;const i=n(r);fetch(r.href,i)}})();/** * @vue/shared v3.5.42 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT -**/function Zr(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const M1={},ht=[],Q2=()=>{},a5=()=>!1,Bo=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),So=e=>e.startsWith("onUpdate:"),T1=Object.assign,_r=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Jd=Object.prototype.hasOwnProperty,L1=(e,t)=>Jd.call(e,t),X=Array.isArray,Se=e=>bt(e)==="[object Map]",pe=e=>bt(e)==="[object Set]",Zi=e=>bt(e)==="[object Date]",Xd=e=>bt(e)==="[object RegExp]",a1=e=>typeof e=="function",S1=e=>typeof e=="string",M2=e=>typeof e=="symbol",j1=e=>e!==null&&typeof e=="object",k5=e=>(j1(e)||a1(e))&&a1(e.then)&&a1(e.catch),u5=Object.prototype.toString,bt=e=>u5.call(e),e3=e=>bt(e).slice(8,-1),h5=e=>bt(e)==="[object Object]",Eo=e=>S1(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Yt=Zr(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Oo=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},t3=/-\w/g,r2=Oo(e=>e.replace(t3,t=>t.slice(1).toUpperCase())),n3=/\B([A-Z])/g,fe=Oo(e=>e.replace(n3,"-$1").toLowerCase()),Ao=Oo(e=>e.charAt(0).toUpperCase()+e.slice(1)),i9=Oo(e=>e?`on${Ao(e)}`:""),Q1=(e,t)=>!Object.is(e,t),pt=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:o,value:n})},Po=e=>{const t=parseFloat(e);return isNaN(t)?e:t},c5=e=>{const t=S1(e)?Number(e):NaN;return isNaN(t)?e:t};let _i;const To=()=>_i||(_i=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function ce(e){if(X(e)){const t={};for(let n=0;n{if(n){const o=n.split(r3);o.length>1&&(t[o[0].trim()]=o[1].trim())}}),t}function G1(e){let t="";if(S1(e))t=e;else if(X(e))for(let n=0;nT2(n,t))}const C5=e=>!!(e&&e.__v_isRef===!0),p1=e=>S1(e)?e:e==null?"":X(e)||j1(e)&&(e.toString===u5||!a1(e.toString))?C5(e)?p1(e.value):JSON.stringify(e,g5,2):String(e),g5=(e,t)=>C5(t)?g5(e,t.value):Se(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[o,r],i)=>(n[s9(o,i)+" =>"]=r,n),{})}:pe(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>s9(n))}:M2(t)?s9(t):j1(t)&&!X(t)&&!h5(t)?String(t):t,s9=(e,t="")=>{var n;return M2(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** +**/function Zr(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const M1={},ht=[],J2=()=>{},a5=()=>!1,Bo=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),So=e=>e.startsWith("onUpdate:"),T1=Object.assign,_r=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Qd=Object.prototype.hasOwnProperty,L1=(e,t)=>Qd.call(e,t),X=Array.isArray,Se=e=>bt(e)==="[object Map]",pe=e=>bt(e)==="[object Set]",Zi=e=>bt(e)==="[object Date]",Xd=e=>bt(e)==="[object RegExp]",a1=e=>typeof e=="function",S1=e=>typeof e=="string",M2=e=>typeof e=="symbol",j1=e=>e!==null&&typeof e=="object",k5=e=>(j1(e)||a1(e))&&a1(e.then)&&a1(e.catch),u5=Object.prototype.toString,bt=e=>u5.call(e),e3=e=>bt(e).slice(8,-1),h5=e=>bt(e)==="[object Object]",Eo=e=>S1(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Yt=Zr(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Oo=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},t3=/-\w/g,r2=Oo(e=>e.replace(t3,t=>t.slice(1).toUpperCase())),n3=/\B([A-Z])/g,fe=Oo(e=>e.replace(n3,"-$1").toLowerCase()),Ao=Oo(e=>e.charAt(0).toUpperCase()+e.slice(1)),i9=Oo(e=>e?`on${Ao(e)}`:""),J1=(e,t)=>!Object.is(e,t),pt=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:o,value:n})},Po=e=>{const t=parseFloat(e);return isNaN(t)?e:t},c5=e=>{const t=S1(e)?Number(e):NaN;return isNaN(t)?e:t};let _i;const To=()=>_i||(_i=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function ce(e){if(X(e)){const t={};for(let n=0;n{if(n){const o=n.split(r3);o.length>1&&(t[o[0].trim()]=o[1].trim())}}),t}function G1(e){let t="";if(S1(e))t=e;else if(X(e))for(let n=0;nT2(n,t))}const C5=e=>!!(e&&e.__v_isRef===!0),p1=e=>S1(e)?e:e==null?"":X(e)||j1(e)&&(e.toString===u5||!a1(e.toString))?C5(e)?p1(e.value):JSON.stringify(e,g5,2):String(e),g5=(e,t)=>C5(t)?g5(e,t.value):Se(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[o,r],i)=>(n[s9(o,i)+" =>"]=r,n),{})}:pe(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>s9(n))}:M2(t)?s9(t):j1(t)&&!X(t)&&!h5(t)?String(t):t,s9=(e,t="")=>{var n;return M2(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** * @vue/reactivity v3.5.42 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT -**/let q1;class v5{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this._warnOnRun=!0,this.__v_skip=!0,!t&&q1&&(q1.active?(this.parent=q1,this.index=(q1.scopes||(q1.scopes=[])).push(this)-1):(this._active=!1,this._warnOnRun=!1))}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes){const o=this.scopes.slice();for(t=0,n=o.length;t0&&--this._on===0){if(q1===this)q1=this.prevScope;else{let t=q1;for(;t;){if(t.prevScope===this){t.prevScope=this.prevScope;break}t=t.prevScope}}this.prevScope=void 0}}stop(t){if(this._active){this._active=!1;let n,o;for(n=0,o=this.effects.length;n0)return;if(Jt){let t=Jt;for(Jt=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;Qt;){let t=Qt;for(Qt=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(o){e||(e=o)}t=n}}if(e)throw e}function D5(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function L5(e){let t,n=e.depsTail,o=n;for(;o;){const r=o.prevDep;o.version===-1?(o===n&&(n=r),Ar(o),k3(o)):t=o,o.dep.activeLink=o.prevActiveLink,o.prevActiveLink=void 0,o=r}e.deps=t,e.depsTail=n}function $9(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(H5(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function H5(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===kn)||(e.globalVersion=kn,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!$9(e))))return;e.flags|=2;const t=e.dep,n=B1,o=P2;B1=e,P2=!0;try{D5(e);const r=e.fn(e._value);(t.version===0||Q1(r,e._value))&&(e.flags|=128,e._value=r,t.version++)}catch(r){throw t.version++,r}finally{B1=n,P2=o,L5(e),e.flags&=-3}}function Ar(e,t=!1){const{dep:n,prevSub:o,nextSub:r}=e;if(o&&(o.nextSub=r,e.prevSub=void 0),r&&(r.prevSub=o,e.nextSub=void 0),n.subs===e&&(n.subs=o,!o&&n.computed)){n.computed.flags&=-5;for(let i=n.computed.deps;i;i=i.nextDep)Ar(i,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function k3(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let P2=!0;const V5=[];function we(){V5.push(P2),P2=!1}function Ce(){const e=V5.pop();P2=e===void 0?!0:e}function Si(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=B1;B1=void 0;try{t()}finally{B1=n}}}let kn=0;class u3{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class Io{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!B1||!P2||B1===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==B1)n=this.activeLink=new u3(B1,this),B1.deps?(n.prevDep=B1.depsTail,B1.depsTail.nextDep=n,B1.depsTail=n):B1.deps=B1.depsTail=n,y5(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const o=n.nextDep;o.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=o),n.prevDep=B1.depsTail,n.nextDep=void 0,B1.depsTail.nextDep=n,B1.depsTail=n,B1.deps===n&&(B1.deps=o)}return n}trigger(t){this.version++,kn++,this.notify(t)}notify(t){Er();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{Or()}}}function y5(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let o=t.deps;o;o=o.nextDep)y5(o)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const so=new WeakMap,Ke=Symbol(""),F9=Symbol(""),un=Symbol("");function t2(e,t,n){if(P2&&B1){let o=so.get(e);o||so.set(e,o=new Map);let r=o.get(n);r||(o.set(n,r=new Io),r.map=o,r.key=n),r.track()}}function se(e,t,n,o,r,i){const s=so.get(e);if(!s){kn++;return}const l=d=>{d&&d.trigger()};if(Er(),t==="clear")s.forEach(l);else{const d=X(e),a=d&&Eo(n);if(d&&n==="length"){const k=Number(o);s.forEach((u,h)=>{(h==="length"||h===un||!M2(h)&&h>=k)&&l(u)})}else switch((n!==void 0||s.has(void 0))&&l(s.get(n)),a&&l(s.get(un)),t){case"add":d?a&&l(s.get("length")):(l(s.get(Ke)),Se(e)&&l(s.get(F9)));break;case"delete":d||(l(s.get(Ke)),Se(e)&&l(s.get(F9)));break;case"set":Se(e)&&l(s.get(Ke));break}}Or()}function h3(e,t){const n=so.get(e);return n&&n.get(t)}function rt(e){const t=g1(e);return t===e?t:(t2(t,"iterate",un),f2(e)?t:t.map(I2))}function Ro(e){return t2(e=g1(e),"iterate",un),e}function K2(e,t){return ge(e)?ft(ae(e)?I2(t):t):I2(t)}const p3={__proto__:null,[Symbol.iterator](){return d9(this,Symbol.iterator,e=>K2(this,e))},concat(...e){return rt(this).concat(...e.map(t=>X(t)?rt(t):t))},entries(){return d9(this,"entries",e=>(e[1]=K2(this,e[1]),e))},every(e,t){return ee(this,"every",e,t,void 0,arguments)},filter(e,t){return ee(this,"filter",e,t,n=>n.map(o=>K2(this,o)),arguments)},find(e,t){return ee(this,"find",e,t,n=>K2(this,n),arguments)},findIndex(e,t){return ee(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return ee(this,"findLast",e,t,n=>K2(this,n),arguments)},findLastIndex(e,t){return ee(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return ee(this,"forEach",e,t,void 0,arguments)},includes(...e){return a9(this,"includes",e)},indexOf(...e){return a9(this,"indexOf",e)},join(e){return rt(this).join(e)},lastIndexOf(...e){return a9(this,"lastIndexOf",e)},map(e,t){return ee(this,"map",e,t,void 0,arguments)},pop(){return Bt(this,"pop")},push(...e){return Bt(this,"push",e)},reduce(e,...t){return Ei(this,"reduce",e,t)},reduceRight(e,...t){return Ei(this,"reduceRight",e,t)},shift(){return Bt(this,"shift")},some(e,t){return ee(this,"some",e,t,void 0,arguments)},splice(...e){return Bt(this,"splice",e)},toReversed(){return rt(this).toReversed()},toSorted(e){return rt(this).toSorted(e)},toSpliced(...e){return rt(this).toSpliced(...e)},unshift(...e){return Bt(this,"unshift",e)},values(){return d9(this,"values",e=>K2(this,e))}};function d9(e,t,n){const o=Ro(e),r=o[t]();return o!==e&&!f2(e)&&(r._next=r.next,r.next=()=>{const i=r._next();return i.done||(i.value=n(i.value)),i}),r}const c3=Array.prototype;function ee(e,t,n,o,r,i){const s=Ro(e),l=s!==e&&!f2(e),d=s[t];if(d!==c3[t]){const u=d.apply(e,i);return l?I2(u):u}let a=n;s!==e&&(l?a=function(u,h){return n.call(this,K2(e,u),h,e)}:n.length>2&&(a=function(u,h){return n.call(this,u,h,e)}));const k=d.call(s,a,o);return l&&r?r(k):k}function Ei(e,t,n,o){const r=Ro(e),i=r!==e&&!f2(e);let s=n,l=!1;r!==e&&(i?(l=o.length===0,s=function(a,k,u){return l&&(l=!1,a=K2(e,a)),n.call(this,a,K2(e,k),u,e)}):n.length>3&&(s=function(a,k,u){return n.call(this,a,k,u,e)}));const d=r[t](s,...o);return l?K2(e,d):d}function a9(e,t,n){const o=g1(e);t2(o,"iterate",un);const r=o[t](...n);return(r===-1||r===!1)&&$o(n[0])?(n[0]=g1(n[0]),o[t](...n)):r}function Bt(e,t,n=[]){we(),Er();const o=g1(e)[t].apply(e,n);return Or(),Ce(),o}const w3=Zr("__proto__,__v_isRef,__isVue"),b5=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(M2));function C3(e){M2(e)||(e=String(e));const t=g1(this);return t2(t,"has",e),t.hasOwnProperty(e)}class Z5{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,o){if(n==="__v_skip")return t.__v_skip;const r=this._isReadonly,i=this._isShallow;if(n==="__v_isReactive")return!r;if(n==="__v_isReadonly")return r;if(n==="__v_isShallow")return i;if(n==="__v_raw")return o===(r?i?H3:E5:i?S5:B5).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(o)?t:void 0;const s=X(t);if(!r){let d;if(s&&(d=p3[n]))return d;if(n==="hasOwnProperty")return C3}const l=Reflect.get(t,n,E1(t)?t:o);if((M2(n)?b5.has(n):w3(n))||(r||t2(t,"get",n),i))return l;if(E1(l)){const d=s&&Eo(n)?l:l.value;return r&&j1(d)?U9(d):d}return j1(l)?r?U9(l):I1(l):l}}class _5 extends Z5{constructor(t=!1){super(!1,t)}set(t,n,o,r){let i=t[n];const s=X(t)&&Eo(n);if(!this._isShallow){const a=ge(i);if(!f2(o)&&!ge(o)&&(i=g1(i),o=g1(o)),!s&&E1(i)&&!E1(o))return a||(i.value=o),!0}const l=s?Number(n)e,Sn=e=>Reflect.getPrototypeOf(e);function M3(e,t,n){return function(...o){const r=this.__v_raw,i=g1(r),s=Se(i),l=e==="entries"||e===Symbol.iterator&&s,d=e==="keys"&&s,a=r[e](...o),k=n?N9:t?ft:I2;return!t&&t2(i,"iterate",d?F9:Ke),T1(Object.create(a),{next(){const{value:u,done:h}=a.next();return h?{value:u,done:h}:{value:l?[k(u[0]),k(u[1])]:k(u),done:h}}})}}function En(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function j3(e,t){const n={get(r){const i=this.__v_raw,s=g1(i),l=g1(r);e||(Q1(r,l)&&t2(s,"get",r),t2(s,"get",l));const{has:d}=Sn(s),a=t?N9:e?ft:I2;if(d.call(s,r))return a(i.get(r));if(d.call(s,l))return a(i.get(l));i!==s&&i.get(r)},get size(){const r=this.__v_raw;return!e&&t2(g1(r),"iterate",Ke),r.size},has(r){const i=this.__v_raw,s=g1(i),l=g1(r);return e||(Q1(r,l)&&t2(s,"has",r),t2(s,"has",l)),r===l?i.has(r):i.has(r)||i.has(l)},forEach(r,i){const s=this,l=s.__v_raw,d=g1(l),a=t?N9:e?ft:I2;return!e&&t2(d,"iterate",Ke),l.forEach((k,u)=>r.call(i,a(k),a(u),s))}};return T1(n,e?{add:En("add"),set:En("set"),delete:En("delete"),clear:En("clear")}:{add(r){const i=g1(this),s=Sn(i),l=g1(r),d=!t&&!f2(r)&&!ge(r)?l:r;return s.has.call(i,d)||Q1(r,d)&&s.has.call(i,r)||Q1(l,d)&&s.has.call(i,l)||(i.add(d),se(i,"add",d,d)),this},set(r,i){!t&&!f2(i)&&!ge(i)&&(i=g1(i));const s=g1(this),{has:l,get:d}=Sn(s);let a=l.call(s,r);a||(r=g1(r),a=l.call(s,r));const k=d.call(s,r);return s.set(r,i),a?Q1(i,k)&&se(s,"set",r,i):se(s,"add",r,i),this},delete(r){const i=g1(this),{has:s,get:l}=Sn(i);let d=s.call(i,r);d||(r=g1(r),d=s.call(i,r)),l&&l.call(i,r);const a=i.delete(r);return d&&se(i,"delete",r,void 0),a},clear(){const r=g1(this),i=r.size!==0,s=r.clear();return i&&se(r,"clear",void 0,void 0),s}}),["keys","values","entries",Symbol.iterator].forEach(r=>{n[r]=M3(r,e,t)}),n}function Pr(e,t){const n=j3(e,t);return(o,r,i)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?o:Reflect.get(L1(n,r)&&r in o?n:o,r,i)}const x3={get:Pr(!1,!1)},D3={get:Pr(!1,!0)},L3={get:Pr(!0,!1)};const B5=new WeakMap,S5=new WeakMap,E5=new WeakMap,H3=new WeakMap;function V3(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function I1(e){return ge(e)?e:Tr(e,!1,v3,x3,B5)}function O5(e){return Tr(e,!1,m3,D3,S5)}function U9(e){return Tr(e,!0,f3,L3,E5)}function Tr(e,t,n,o,r){if(!j1(e)||e.__v_raw&&!(t&&e.__v_isReactive)||e.__v_skip||!Object.isExtensible(e))return e;const i=r.get(e);if(i)return i;const s=V3(e3(e));if(s===0)return e;const l=new Proxy(e,s===2?o:n);return r.set(e,l),l}function ae(e){return ge(e)?ae(e.__v_raw):!!(e&&e.__v_isReactive)}function ge(e){return!!(e&&e.__v_isReadonly)}function f2(e){return!!(e&&e.__v_isShallow)}function $o(e){return e?!!e.__v_raw:!1}function g1(e){const t=e&&e.__v_raw;return t?g1(t):e}function Ir(e){return!L1(e,"__v_skip")&&Object.isExtensible(e)&&p5(e,"__v_skip",!0),e}const I2=e=>j1(e)?I1(e):e,ft=e=>j1(e)?U9(e):e;function E1(e){return e?e.__v_isRef===!0:!1}function K(e){return A5(e,!1)}function Rr(e){return A5(e,!0)}function A5(e,t){return E1(e)?e:new y3(e,t)}class y3{constructor(t,n){this.dep=new Io,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:g1(t),this._value=n?t:I2(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,o=this.__v_isShallow||f2(t)||ge(t);t=o?t:g1(t),Q1(t,n)&&(this._rawValue=t,this._value=o?t:I2(t),this.dep.trigger())}}function t1(e){return E1(e)?e.value:e}const b3={get:(e,t,n)=>t==="__v_raw"?e:t1(Reflect.get(e,t,n)),set:(e,t,n,o)=>{const r=e[t];return E1(r)&&!E1(n)?(r.value=n,!0):Reflect.set(e,t,n,o)}};function P5(e){return ae(e)?e:new Proxy(e,b3)}class Z3{constructor(t){this.__v_isRef=!0,this._value=void 0;const n=this.dep=new Io,{get:o,set:r}=t(n.track.bind(n),n.trigger.bind(n));this._get=o,this._set=r}get value(){return this._value=this._get()}set value(t){this._set(t)}}function _3(e){return new Z3(e)}function B3(e){const t=X(e)?new Array(e.length):{};for(const n in e)t[n]=T5(e,n);return t}class S3{constructor(t,n,o){this._object=t,this._defaultValue=o,this.__v_isRef=!0,this._value=void 0,this._key=M2(n)?n:String(n),this._raw=g1(t);let r=!0,i=t;if(!X(t)||M2(this._key)||!Eo(this._key))do r=!$o(i)||f2(i);while(r&&(i=i.__v_raw));this._shallow=r}get value(){let t=this._object[this._key];return this._shallow&&(t=t1(t)),this._value=t===void 0?this._defaultValue:t}set value(t){if(this._shallow&&E1(this._raw[this._key])){const n=this._object[this._key];if(E1(n)){n.value=t;return}}this._object[this._key]=t}get dep(){return h3(this._raw,this._key)}}class E3{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0,this._value=void 0}get value(){return this._value=this._getter()}}function _g(e,t,n){return E1(e)?e:a1(e)?new E3(e):j1(e)&&arguments.length>1?T5(e,t,n):K(e)}function T5(e,t,n){return new S3(e,t,n)}class O3{constructor(t,n,o){this.fn=t,this.setter=n,this._value=void 0,this.dep=new Io(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=kn-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=o}notify(){if(this.flags|=16,!(this.flags&8)&&B1!==this)return x5(this,!0),!0}get value(){const t=this.dep.track();return H5(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function A3(e,t,n=!1){let o,r;return a1(e)?o=e:(o=e.get,r=e.set),new O3(o,r,n)}const On={},lo=new WeakMap;let Ne;function P3(e,t=!1,n=Ne){if(n){let o=lo.get(n);o||lo.set(n,o=[]),o.push(e)}}function T3(e,t,n=M1){const{immediate:o,deep:r,once:i,scheduler:s,augmentJob:l,call:d}=n,a=v=>r?v:f2(v)||r===!1||r===0?le(v,1):le(v);let k,u,h,p,C=!1,f=!1;if(E1(e)?(u=()=>e.value,C=f2(e)):ae(e)?(u=()=>a(e),C=!0):X(e)?(f=!0,C=e.some(v=>ae(v)||f2(v)),u=()=>e.map(v=>{if(E1(v))return v.value;if(ae(v))return a(v);if(a1(v))return d?d(v,2):v()})):a1(e)?t?u=d?()=>d(e,2):e:u=()=>{if(h){we();try{h()}finally{Ce()}}const v=Ne;Ne=k;try{return d?d(e,3,[p]):e(p)}finally{Ne=v}}:u=Q2,t&&r){const v=u,j=r===!0?1/0:r;u=()=>le(v(),j)}const m=Sr(),x=()=>{k.stop(),m&&m.active&&_r(m.effects,k)};if(i&&t){const v=t;t=(...j)=>{const L=v(...j);return x(),L}}let w=f?new Array(e.length).fill(On):On;const D=v=>{if(!(!(k.flags&1)||!k.dirty&&!v))if(t){const j=k.run();if(v||r||C||(f?j.some((L,b)=>Q1(L,w[b])):Q1(j,w))){h&&h();const L=Ne;Ne=k;try{const b=[j,w===On?void 0:f&&w[0]===On?[]:w,p];w=j,d?d(t,3,b):t(...b)}finally{Ne=L}}}else k.run()};return l&&l(D),k=new M5(u),k.scheduler=s?()=>s(D,!1):D,p=v=>P3(v,!1,k),h=k.onStop=()=>{const v=lo.get(k);if(v){if(d)d(v,4);else for(const j of v)j();lo.delete(k)}},t?o?D(!0):w=k.run():s?s(D.bind(null,!0),!0):k.run(),x.pause=k.pause.bind(k),x.resume=k.resume.bind(k),x.stop=x,x}function le(e,t=1/0,n){if(t<=0||!j1(e)||e.__v_skip||(n=n||new Map,(n.get(e)||0)>=t))return e;if(n.set(e,t),t--,E1(e))le(e.value,t,n);else if(X(e))for(let o=0;o{le(o,t,n)});else if(h5(e)){for(const o in e)le(e[o],t,n);for(const o of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,o)&&le(e[o],t,n)}return e}/** +**/let q1;class v5{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this._warnOnRun=!0,this.__v_skip=!0,!t&&q1&&(q1.active?(this.parent=q1,this.index=(q1.scopes||(q1.scopes=[])).push(this)-1):(this._active=!1,this._warnOnRun=!1))}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes){const o=this.scopes.slice();for(t=0,n=o.length;t0&&--this._on===0){if(q1===this)q1=this.prevScope;else{let t=q1;for(;t;){if(t.prevScope===this){t.prevScope=this.prevScope;break}t=t.prevScope}}this.prevScope=void 0}}stop(t){if(this._active){this._active=!1;let n,o;for(n=0,o=this.effects.length;n0)return;if(Qt){let t=Qt;for(Qt=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;Jt;){let t=Jt;for(Jt=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(o){e||(e=o)}t=n}}if(e)throw e}function D5(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function L5(e){let t,n=e.depsTail,o=n;for(;o;){const r=o.prevDep;o.version===-1?(o===n&&(n=r),Ar(o),k3(o)):t=o,o.dep.activeLink=o.prevActiveLink,o.prevActiveLink=void 0,o=r}e.deps=t,e.depsTail=n}function $9(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(H5(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function H5(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===kn)||(e.globalVersion=kn,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!$9(e))))return;e.flags|=2;const t=e.dep,n=B1,o=P2;B1=e,P2=!0;try{D5(e);const r=e.fn(e._value);(t.version===0||J1(r,e._value))&&(e.flags|=128,e._value=r,t.version++)}catch(r){throw t.version++,r}finally{B1=n,P2=o,L5(e),e.flags&=-3}}function Ar(e,t=!1){const{dep:n,prevSub:o,nextSub:r}=e;if(o&&(o.nextSub=r,e.prevSub=void 0),r&&(r.prevSub=o,e.nextSub=void 0),n.subs===e&&(n.subs=o,!o&&n.computed)){n.computed.flags&=-5;for(let i=n.computed.deps;i;i=i.nextDep)Ar(i,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function k3(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let P2=!0;const V5=[];function we(){V5.push(P2),P2=!1}function Ce(){const e=V5.pop();P2=e===void 0?!0:e}function Si(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=B1;B1=void 0;try{t()}finally{B1=n}}}let kn=0;class u3{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class Io{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!B1||!P2||B1===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==B1)n=this.activeLink=new u3(B1,this),B1.deps?(n.prevDep=B1.depsTail,B1.depsTail.nextDep=n,B1.depsTail=n):B1.deps=B1.depsTail=n,y5(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const o=n.nextDep;o.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=o),n.prevDep=B1.depsTail,n.nextDep=void 0,B1.depsTail.nextDep=n,B1.depsTail=n,B1.deps===n&&(B1.deps=o)}return n}trigger(t){this.version++,kn++,this.notify(t)}notify(t){Er();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{Or()}}}function y5(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let o=t.deps;o;o=o.nextDep)y5(o)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const so=new WeakMap,Ke=Symbol(""),F9=Symbol(""),un=Symbol("");function t2(e,t,n){if(P2&&B1){let o=so.get(e);o||so.set(e,o=new Map);let r=o.get(n);r||(o.set(n,r=new Io),r.map=o,r.key=n),r.track()}}function se(e,t,n,o,r,i){const s=so.get(e);if(!s){kn++;return}const l=d=>{d&&d.trigger()};if(Er(),t==="clear")s.forEach(l);else{const d=X(e),a=d&&Eo(n);if(d&&n==="length"){const k=Number(o);s.forEach((u,h)=>{(h==="length"||h===un||!M2(h)&&h>=k)&&l(u)})}else switch((n!==void 0||s.has(void 0))&&l(s.get(n)),a&&l(s.get(un)),t){case"add":d?a&&l(s.get("length")):(l(s.get(Ke)),Se(e)&&l(s.get(F9)));break;case"delete":d||(l(s.get(Ke)),Se(e)&&l(s.get(F9)));break;case"set":Se(e)&&l(s.get(Ke));break}}Or()}function h3(e,t){const n=so.get(e);return n&&n.get(t)}function rt(e){const t=g1(e);return t===e?t:(t2(t,"iterate",un),f2(e)?t:t.map(I2))}function Ro(e){return t2(e=g1(e),"iterate",un),e}function K2(e,t){return ge(e)?ft(ae(e)?I2(t):t):I2(t)}const p3={__proto__:null,[Symbol.iterator](){return d9(this,Symbol.iterator,e=>K2(this,e))},concat(...e){return rt(this).concat(...e.map(t=>X(t)?rt(t):t))},entries(){return d9(this,"entries",e=>(e[1]=K2(this,e[1]),e))},every(e,t){return ee(this,"every",e,t,void 0,arguments)},filter(e,t){return ee(this,"filter",e,t,n=>n.map(o=>K2(this,o)),arguments)},find(e,t){return ee(this,"find",e,t,n=>K2(this,n),arguments)},findIndex(e,t){return ee(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return ee(this,"findLast",e,t,n=>K2(this,n),arguments)},findLastIndex(e,t){return ee(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return ee(this,"forEach",e,t,void 0,arguments)},includes(...e){return a9(this,"includes",e)},indexOf(...e){return a9(this,"indexOf",e)},join(e){return rt(this).join(e)},lastIndexOf(...e){return a9(this,"lastIndexOf",e)},map(e,t){return ee(this,"map",e,t,void 0,arguments)},pop(){return Bt(this,"pop")},push(...e){return Bt(this,"push",e)},reduce(e,...t){return Ei(this,"reduce",e,t)},reduceRight(e,...t){return Ei(this,"reduceRight",e,t)},shift(){return Bt(this,"shift")},some(e,t){return ee(this,"some",e,t,void 0,arguments)},splice(...e){return Bt(this,"splice",e)},toReversed(){return rt(this).toReversed()},toSorted(e){return rt(this).toSorted(e)},toSpliced(...e){return rt(this).toSpliced(...e)},unshift(...e){return Bt(this,"unshift",e)},values(){return d9(this,"values",e=>K2(this,e))}};function d9(e,t,n){const o=Ro(e),r=o[t]();return o!==e&&!f2(e)&&(r._next=r.next,r.next=()=>{const i=r._next();return i.done||(i.value=n(i.value)),i}),r}const c3=Array.prototype;function ee(e,t,n,o,r,i){const s=Ro(e),l=s!==e&&!f2(e),d=s[t];if(d!==c3[t]){const u=d.apply(e,i);return l?I2(u):u}let a=n;s!==e&&(l?a=function(u,h){return n.call(this,K2(e,u),h,e)}:n.length>2&&(a=function(u,h){return n.call(this,u,h,e)}));const k=d.call(s,a,o);return l&&r?r(k):k}function Ei(e,t,n,o){const r=Ro(e),i=r!==e&&!f2(e);let s=n,l=!1;r!==e&&(i?(l=o.length===0,s=function(a,k,u){return l&&(l=!1,a=K2(e,a)),n.call(this,a,K2(e,k),u,e)}):n.length>3&&(s=function(a,k,u){return n.call(this,a,k,u,e)}));const d=r[t](s,...o);return l?K2(e,d):d}function a9(e,t,n){const o=g1(e);t2(o,"iterate",un);const r=o[t](...n);return(r===-1||r===!1)&&$o(n[0])?(n[0]=g1(n[0]),o[t](...n)):r}function Bt(e,t,n=[]){we(),Er();const o=g1(e)[t].apply(e,n);return Or(),Ce(),o}const w3=Zr("__proto__,__v_isRef,__isVue"),b5=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(M2));function C3(e){M2(e)||(e=String(e));const t=g1(this);return t2(t,"has",e),t.hasOwnProperty(e)}class Z5{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,o){if(n==="__v_skip")return t.__v_skip;const r=this._isReadonly,i=this._isShallow;if(n==="__v_isReactive")return!r;if(n==="__v_isReadonly")return r;if(n==="__v_isShallow")return i;if(n==="__v_raw")return o===(r?i?H3:E5:i?S5:B5).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(o)?t:void 0;const s=X(t);if(!r){let d;if(s&&(d=p3[n]))return d;if(n==="hasOwnProperty")return C3}const l=Reflect.get(t,n,E1(t)?t:o);if((M2(n)?b5.has(n):w3(n))||(r||t2(t,"get",n),i))return l;if(E1(l)){const d=s&&Eo(n)?l:l.value;return r&&j1(d)?U9(d):d}return j1(l)?r?U9(l):I1(l):l}}class _5 extends Z5{constructor(t=!1){super(!1,t)}set(t,n,o,r){let i=t[n];const s=X(t)&&Eo(n);if(!this._isShallow){const a=ge(i);if(!f2(o)&&!ge(o)&&(i=g1(i),o=g1(o)),!s&&E1(i)&&!E1(o))return a||(i.value=o),!0}const l=s?Number(n)e,Sn=e=>Reflect.getPrototypeOf(e);function M3(e,t,n){return function(...o){const r=this.__v_raw,i=g1(r),s=Se(i),l=e==="entries"||e===Symbol.iterator&&s,d=e==="keys"&&s,a=r[e](...o),k=n?N9:t?ft:I2;return!t&&t2(i,"iterate",d?F9:Ke),T1(Object.create(a),{next(){const{value:u,done:h}=a.next();return h?{value:u,done:h}:{value:l?[k(u[0]),k(u[1])]:k(u),done:h}}})}}function En(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function j3(e,t){const n={get(r){const i=this.__v_raw,s=g1(i),l=g1(r);e||(J1(r,l)&&t2(s,"get",r),t2(s,"get",l));const{has:d}=Sn(s),a=t?N9:e?ft:I2;if(d.call(s,r))return a(i.get(r));if(d.call(s,l))return a(i.get(l));i!==s&&i.get(r)},get size(){const r=this.__v_raw;return!e&&t2(g1(r),"iterate",Ke),r.size},has(r){const i=this.__v_raw,s=g1(i),l=g1(r);return e||(J1(r,l)&&t2(s,"has",r),t2(s,"has",l)),r===l?i.has(r):i.has(r)||i.has(l)},forEach(r,i){const s=this,l=s.__v_raw,d=g1(l),a=t?N9:e?ft:I2;return!e&&t2(d,"iterate",Ke),l.forEach((k,u)=>r.call(i,a(k),a(u),s))}};return T1(n,e?{add:En("add"),set:En("set"),delete:En("delete"),clear:En("clear")}:{add(r){const i=g1(this),s=Sn(i),l=g1(r),d=!t&&!f2(r)&&!ge(r)?l:r;return s.has.call(i,d)||J1(r,d)&&s.has.call(i,r)||J1(l,d)&&s.has.call(i,l)||(i.add(d),se(i,"add",d,d)),this},set(r,i){!t&&!f2(i)&&!ge(i)&&(i=g1(i));const s=g1(this),{has:l,get:d}=Sn(s);let a=l.call(s,r);a||(r=g1(r),a=l.call(s,r));const k=d.call(s,r);return s.set(r,i),a?J1(i,k)&&se(s,"set",r,i):se(s,"add",r,i),this},delete(r){const i=g1(this),{has:s,get:l}=Sn(i);let d=s.call(i,r);d||(r=g1(r),d=s.call(i,r)),l&&l.call(i,r);const a=i.delete(r);return d&&se(i,"delete",r,void 0),a},clear(){const r=g1(this),i=r.size!==0,s=r.clear();return i&&se(r,"clear",void 0,void 0),s}}),["keys","values","entries",Symbol.iterator].forEach(r=>{n[r]=M3(r,e,t)}),n}function Pr(e,t){const n=j3(e,t);return(o,r,i)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?o:Reflect.get(L1(n,r)&&r in o?n:o,r,i)}const x3={get:Pr(!1,!1)},D3={get:Pr(!1,!0)},L3={get:Pr(!0,!1)};const B5=new WeakMap,S5=new WeakMap,E5=new WeakMap,H3=new WeakMap;function V3(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function I1(e){return ge(e)?e:Tr(e,!1,v3,x3,B5)}function O5(e){return Tr(e,!1,m3,D3,S5)}function U9(e){return Tr(e,!0,f3,L3,E5)}function Tr(e,t,n,o,r){if(!j1(e)||e.__v_raw&&!(t&&e.__v_isReactive)||e.__v_skip||!Object.isExtensible(e))return e;const i=r.get(e);if(i)return i;const s=V3(e3(e));if(s===0)return e;const l=new Proxy(e,s===2?o:n);return r.set(e,l),l}function ae(e){return ge(e)?ae(e.__v_raw):!!(e&&e.__v_isReactive)}function ge(e){return!!(e&&e.__v_isReadonly)}function f2(e){return!!(e&&e.__v_isShallow)}function $o(e){return e?!!e.__v_raw:!1}function g1(e){const t=e&&e.__v_raw;return t?g1(t):e}function Ir(e){return!L1(e,"__v_skip")&&Object.isExtensible(e)&&p5(e,"__v_skip",!0),e}const I2=e=>j1(e)?I1(e):e,ft=e=>j1(e)?U9(e):e;function E1(e){return e?e.__v_isRef===!0:!1}function K(e){return A5(e,!1)}function Rr(e){return A5(e,!0)}function A5(e,t){return E1(e)?e:new y3(e,t)}class y3{constructor(t,n){this.dep=new Io,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:g1(t),this._value=n?t:I2(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,o=this.__v_isShallow||f2(t)||ge(t);t=o?t:g1(t),J1(t,n)&&(this._rawValue=t,this._value=o?t:I2(t),this.dep.trigger())}}function t1(e){return E1(e)?e.value:e}const b3={get:(e,t,n)=>t==="__v_raw"?e:t1(Reflect.get(e,t,n)),set:(e,t,n,o)=>{const r=e[t];return E1(r)&&!E1(n)?(r.value=n,!0):Reflect.set(e,t,n,o)}};function P5(e){return ae(e)?e:new Proxy(e,b3)}class Z3{constructor(t){this.__v_isRef=!0,this._value=void 0;const n=this.dep=new Io,{get:o,set:r}=t(n.track.bind(n),n.trigger.bind(n));this._get=o,this._set=r}get value(){return this._value=this._get()}set value(t){this._set(t)}}function _3(e){return new Z3(e)}function B3(e){const t=X(e)?new Array(e.length):{};for(const n in e)t[n]=T5(e,n);return t}class S3{constructor(t,n,o){this._object=t,this._defaultValue=o,this.__v_isRef=!0,this._value=void 0,this._key=M2(n)?n:String(n),this._raw=g1(t);let r=!0,i=t;if(!X(t)||M2(this._key)||!Eo(this._key))do r=!$o(i)||f2(i);while(r&&(i=i.__v_raw));this._shallow=r}get value(){let t=this._object[this._key];return this._shallow&&(t=t1(t)),this._value=t===void 0?this._defaultValue:t}set value(t){if(this._shallow&&E1(this._raw[this._key])){const n=this._object[this._key];if(E1(n)){n.value=t;return}}this._object[this._key]=t}get dep(){return h3(this._raw,this._key)}}class E3{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0,this._value=void 0}get value(){return this._value=this._getter()}}function _g(e,t,n){return E1(e)?e:a1(e)?new E3(e):j1(e)&&arguments.length>1?T5(e,t,n):K(e)}function T5(e,t,n){return new S3(e,t,n)}class O3{constructor(t,n,o){this.fn=t,this.setter=n,this._value=void 0,this.dep=new Io(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=kn-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=o}notify(){if(this.flags|=16,!(this.flags&8)&&B1!==this)return x5(this,!0),!0}get value(){const t=this.dep.track();return H5(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function A3(e,t,n=!1){let o,r;return a1(e)?o=e:(o=e.get,r=e.set),new O3(o,r,n)}const On={},lo=new WeakMap;let Ne;function P3(e,t=!1,n=Ne){if(n){let o=lo.get(n);o||lo.set(n,o=[]),o.push(e)}}function T3(e,t,n=M1){const{immediate:o,deep:r,once:i,scheduler:s,augmentJob:l,call:d}=n,a=v=>r?v:f2(v)||r===!1||r===0?le(v,1):le(v);let k,u,h,p,C=!1,f=!1;if(E1(e)?(u=()=>e.value,C=f2(e)):ae(e)?(u=()=>a(e),C=!0):X(e)?(f=!0,C=e.some(v=>ae(v)||f2(v)),u=()=>e.map(v=>{if(E1(v))return v.value;if(ae(v))return a(v);if(a1(v))return d?d(v,2):v()})):a1(e)?t?u=d?()=>d(e,2):e:u=()=>{if(h){we();try{h()}finally{Ce()}}const v=Ne;Ne=k;try{return d?d(e,3,[p]):e(p)}finally{Ne=v}}:u=J2,t&&r){const v=u,j=r===!0?1/0:r;u=()=>le(v(),j)}const m=Sr(),x=()=>{k.stop(),m&&m.active&&_r(m.effects,k)};if(i&&t){const v=t;t=(...j)=>{const L=v(...j);return x(),L}}let w=f?new Array(e.length).fill(On):On;const D=v=>{if(!(!(k.flags&1)||!k.dirty&&!v))if(t){const j=k.run();if(v||r||C||(f?j.some((L,b)=>J1(L,w[b])):J1(j,w))){h&&h();const L=Ne;Ne=k;try{const b=[j,w===On?void 0:f&&w[0]===On?[]:w,p];w=j,d?d(t,3,b):t(...b)}finally{Ne=L}}}else k.run()};return l&&l(D),k=new M5(u),k.scheduler=s?()=>s(D,!1):D,p=v=>P3(v,!1,k),h=k.onStop=()=>{const v=lo.get(k);if(v){if(d)d(v,4);else for(const j of v)j();lo.delete(k)}},t?o?D(!0):w=k.run():s?s(D.bind(null,!0),!0):k.run(),x.pause=k.pause.bind(k),x.resume=k.resume.bind(k),x.stop=x,x}function le(e,t=1/0,n){if(t<=0||!j1(e)||e.__v_skip||(n=n||new Map,(n.get(e)||0)>=t))return e;if(n.set(e,t),t--,E1(e))le(e.value,t,n);else if(X(e))for(let o=0;o{le(o,t,n)});else if(h5(e)){for(const o in e)le(e[o],t,n);for(const o of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,o)&&le(e[o],t,n)}return e}/** * @vue/runtime-core v3.5.42 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT -**/function Dn(e,t,n,o){try{return o?e(...o):e()}catch(r){Ln(r,t,n)}}function b2(e,t,n,o){if(a1(e)){const r=Dn(e,t,n,o);return r&&k5(r)&&r.catch(i=>{Ln(i,t,n)}),r}if(X(e)){const r=[];for(let i=0;i>>1,r=l2[o],i=hn(r);i=hn(n)?l2.push(e):l2.splice(R3(t),0,e),e.flags|=1,R5()}}function R5(){ao||(ao=I5.then(F5))}function q9(e){if(!X(e))Ze&&e.id===-1?Ze.splice(at+1,0,e):e.flags&1||(ct.push(e),e.flags|=1);else for(let t=0;thn(n)-hn(o));if(ct.length=0,Ze){for(let n=0;ne.id==null?e.flags&2?-1:1/0:e.id;function F5(e){try{for(G2=0;G2{o._d&&go(-1);const i=ko(t),s=he.length;let l;try{l=e(...r)}finally{for(let d=he.length;d>s;d--)Go();ko(i),o._d&&go(1)}return l};return o._n=!0,o._c=!0,o._d=!0,o}function Fr(e,t){if(J1===null)return e;const n=Ko(J1),o=e.dirs||(e.dirs=[]);for(let r=0;r1)return n&&a1(t)?t.call(o&&o.proxy):t}}function $3(){return!!(Z2()||Ye)}const F3=Symbol.for("v-scx"),N3=()=>N1(F3);function Nr(e,t){return Fo(e,null,t)}function U3(e,t){return Fo(e,null,{flush:"sync"})}function V1(e,t,n){return Fo(e,t,n)}function Fo(e,t,n=M1){const{immediate:o,deep:r,flush:i,once:s}=n,l=T1({},n),d=t&&o||!t&&i!=="post";let a;if(Cn){if(i==="sync"){const p=N3();a=p.__watcherHandles||(p.__watcherHandles=[])}else if(!d){const p=()=>{};return p.stop=Q2,p.resume=Q2,p.pause=Q2,p}}const k=n2;l.call=(p,C,f)=>b2(p,k,C,f);let u=!1;i==="post"?l.scheduler=p=>{$1(p,k&&k.suspense)}:i!=="sync"&&(u=!0,l.scheduler=(p,C)=>{C?p():$r(p)}),l.augmentJob=p=>{t&&(p.flags|=4),u&&(p.flags|=2,k&&(p.id=k.uid,p.i=k))};const h=T3(e,t,l);return Cn&&(a?a.push(h):d&&h()),h}function q3(e,t,n){const o=this.proxy,r=S1(e)?e.includes(".")?U5(o,e):()=>o[e]:e.bind(o,o);let i;a1(t)?i=t:(i=t.handler,n=t);const s=bn(this),l=Fo(r,i.bind(o),n);return s(),l}function U5(e,t){const n=t.split(".");return()=>{let o=e;for(let r=0;re.__isTeleport,Ue=e=>e&&(e.disabled||e.disabled===""),z3=e=>e&&(e.defer||e.defer===""),Ai=e=>typeof SVGElement<"u"&&e instanceof SVGElement,Pi=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,z9=(e,t)=>{const n=e&&e.to;return S1(n)?t?t(n):null:n},W3={name:"Teleport",__isTeleport:!0,process(e,t,n,o,r,i,s,l,d,a){const{mc:k,pc:u,pbc:h,o:{insert:p,querySelector:C,createText:f,createComment:m,parentNode:x}}=a,w=Ue(t.props);let{dynamicChildren:D}=t;const v=(b,O,V)=>{b.shapeFlag&16&&k(b.children,O,V,r,i,s,l,d)},j=(b=t)=>{const O=Ue(b.props),V=b.target=z9(b.props,C),P=W9(V,b,f,p);V&&(s!=="svg"&&Ai(V)?s="svg":s!=="mathml"&&Pi(V)&&(s="mathml"),r&&r.isCE&&(r.ce._teleportTargets||(r.ce._teleportTargets=new Set)).add(V),O||(v(b,V,P),qt(b,!1)))},L=b=>{const O=()=>{if(Ve.get(b)===O){if(Ve.delete(b),Ue(b.props)){const V=x(b.el)||n;v(b,V,b.anchor),qt(b,!0)}j(b)}};Ve.set(b,O),$1(O,i)};if(e==null){const b=t.el=f(""),O=t.anchor=f("");if(p(b,n,o),p(O,n,o),z3(t.props)||i&&i.pendingBranch){L(t);return}w&&(v(t,n,O),qt(t,!0)),j()}else{t.el=e.el;const b=t.anchor=e.anchor,O=Ve.get(e);if(O){O.flags|=8,Ve.delete(e),L(t);return}t.targetStart=e.targetStart;const V=t.target=e.target,P=t.targetAnchor=e.targetAnchor,G=Ue(e.props),T=G?n:V,o1=G?b:P;if(s==="svg"||Ai(V)?s="svg":(s==="mathml"||Pi(V))&&(s="mathml"),D?(h(e.dynamicChildren,D,T,r,i,s,l),Xr(e,t,!0)):d||u(e,t,T,o1,r,i,s,l,!1),w)G?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):An(t,n,b,a,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const k1=z9(t.props,C);k1&&(t.target=k1,An(t,k1,null,a,0))}else G&&An(t,V,P,a,1);qt(t,w)}},remove(e,t,n,{um:o,o:{remove:r}},i){const{shapeFlag:s,children:l,anchor:d,targetStart:a,targetAnchor:k,target:u,props:h}=e,p=Ue(h),C=i||!p,f=Ve.get(e);if(f&&(f.flags|=8,Ve.delete(e)),u&&(r(a),r(k)),i&&r(d),!f&&(p||u)&&s&16)for(let m=0;m{e.isMounted=!0}),Pe(()=>{e.isUnmounting=!0}),e}const D2=[Function,Array],W5={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:D2,onEnter:D2,onAfterEnter:D2,onEnterCancelled:D2,onBeforeLeave:D2,onLeave:D2,onAfterLeave:D2,onLeaveCancelled:D2,onBeforeAppear:D2,onAppear:D2,onAfterAppear:D2,onAppearCancelled:D2},G5=e=>{const t=e.subTree;return t.component?G5(t.component):t},K3={name:"BaseTransition",props:W5,setup(e,{slots:t}){const n=Z2(),o=z5();return()=>{const r=t.default&&Ur(t.default(),!0),i=r&&r.length?K5(r):n.subTree?x1():void 0;if(!i)return;const s=g1(e),{mode:l}=s;if(o.isLeaving)return k9(i);const d=uo(i);if(!d)return k9(i);let a=pn(d,s,o,n,u=>a=u);d.type!==F1&&Oe(d,a);let k=n.subTree&&uo(n.subTree);if(k&&k.type!==F1&&!O2(k,d)&&G5(n).type!==F1){let u=pn(k,s,o,n);if(Oe(k,u),l==="out-in"&&d.type!==F1)return o.isLeaving=!0,u.afterLeave=()=>{o.isLeaving=!1,n.job.flags&8||n.update(),delete u.afterLeave,k=void 0},k9(i);l==="in-out"&&d.type!==F1?u.delayLeave=(h,p,C)=>{const f=Y5(o,k);f[String(k.key)]=k,h[H2]=()=>{p(),h[H2]=void 0,delete a.delayedLeave,k=void 0},a.delayedLeave=()=>{C(),delete a.delayedLeave,k=void 0}}:k=void 0}else k&&(k=void 0);return i}}};function K5(e){let t=e[0];if(e.length>1){for(const n of e)if(n.type!==F1){t=n;break}}return t}const Y3=K3;function Y5(e,t){const{leavingVNodes:n}=e;let o=n.get(t.type);return o||(o=Object.create(null),n.set(t.type,o)),o}function pn(e,t,n,o,r){const{appear:i,mode:s,persisted:l=!1,onBeforeEnter:d,onEnter:a,onAfterEnter:k,onEnterCancelled:u,onBeforeLeave:h,onLeave:p,onAfterLeave:C,onLeaveCancelled:f,onBeforeAppear:m,onAppear:x,onAfterAppear:w,onAppearCancelled:D}=t,v=String(e.key),j=Y5(n,e),L=(V,P)=>{V&&b2(V,o,9,P)},b=(V,P)=>{const G=P[1];L(V,P),X(V)?V.every(T=>T.length<=1)&&G():V.length<=1&&G()},O={mode:s,persisted:l,beforeEnter(V){let P=d;if(!n.isMounted)if(i)P=m||d;else return;V[H2]&&V[H2](!0);const G=j[v];G&&O2(e,G)&&G.el[H2]&&G.el[H2](),L(P,[V])},enter(V){if(j[v]===e)return;let P=a,G=k,T=u;if(!n.isMounted)if(i)P=x||a,G=w||k,T=D||u;else return;let o1=!1;V[St]=c1=>{o1||(o1=!0,c1?L(T,[V]):L(G,[V]),O.delayedLeave&&O.delayedLeave(),V[St]=void 0)};const k1=V[St].bind(null,!1);P?b(P,[V,k1]):k1()},leave(V,P){const G=String(e.key);if(V[St]&&V[St](!0),n.isUnmounting)return P();L(h,[V]);let T=!1;V[H2]=k1=>{T||(T=!0,P(),k1?L(f,[V]):L(C,[V]),V[H2]=void 0,j[G]===e&&delete j[G])};const o1=V[H2].bind(null,!1);j[G]=e,p?b(p,[V,o1]):o1()},clone(V){const P=pn(V,t,n,o,r);return r&&r(P),P}};return O}function k9(e){if(Uo(e))return e=R2(e),e.children=null,e}function uo(e){if(!Uo(e))return No(e.type)&&e.children?K5(e.children):e;if(e.component)return e.component.subTree;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&a1(n.default))return n.default()}}function Oe(e,t){if(e.shapeFlag&6&&e.component){e.transition=t;const n=e.component.subTree;Oe(No(n.type)&&uo(n)||n,t)}else e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Ur(e,t=!1,n){let o=[],r=0;for(let i=0;i1)for(let i=0;iXt(f,t&&(X(t)?t[m]:t),n,o,r));return}if(Ee(o)&&!r){o.shapeFlag&512&&o.type.__asyncResolved&&o.component.subTree.component&&Xt(e,t,n,o.component.subTree);return}const i=o.shapeFlag&4?Ko(o.component):o.el,s=r?null:i,{i:l,r:d}=e,a=t&&t.r,k=l.refs===M1?l.refs={}:l.refs,u=l.setupState,h=g1(u),p=u===M1?a5:f=>Ti(k,f)?!1:L1(h,f),C=(f,m)=>!(m&&Ti(k,m));if(a!=null&&a!==d){if(Ii(t),S1(a))k[a]=null,p(a)&&(u[a]=null);else if(E1(a)){const f=t;C(a,f.k)&&(a.value=null),f.k&&(k[f.k]=null)}}if(a1(d))Dn(d,l,12,[s,k]);else{const f=S1(d),m=E1(d);if(f||m){const x=()=>{if(e.f){const w=f?p(d)?u[d]:k[d]:C()||!e.k?d.value:k[e.k];if(r)X(w)&&_r(w,i);else if(X(w))w.includes(i)||w.push(i);else if(f)k[d]=[i],p(d)&&(u[d]=k[d]);else{const D=[i];C(d,e.k)&&(d.value=D),e.k&&(k[e.k]=D)}}else f?(k[d]=s,p(d)&&(u[d]=s)):m&&(C(d,e.k)&&(d.value=s),e.k&&(k[e.k]=s))};if(s){const w=()=>{x(),ho.delete(e)};w.id=-1,ho.set(e,w),$1(w,n)}else Ii(e),x()}}}function Ii(e){const t=ho.get(e);t&&(t.flags|=8,ho.delete(e))}To().requestIdleCallback;To().cancelIdleCallback;const Ee=e=>!!e.type.__asyncLoader,Uo=e=>e.type.__isKeepAlive,Q3={name:"KeepAlive",__isKeepAlive:!0,props:{include:[String,RegExp,Array],exclude:[String,RegExp,Array],max:[String,Number]},setup(e,{slots:t}){const n=Z2(),o=n.ctx;if(!o.renderer)return()=>{const w=t.default&&t.default();return w&&w.length===1?w[0]:w};const r=new Map,i=new Set;let s=null;const l=n.suspense,{renderer:{p:d,m:a,um:k,o:{createElement:u}}}=o,h=u("div");o.activate=(w,D,v,j,L)=>{const b=w.component;a(w,D,v,0,l),d(b.vnode,w,D,v,b,l,j,w.slotScopeIds,L),$1(()=>{b.isDeactivated=!1,b.a&&pt(b.a);const O=w.props&&w.props.onVnodeMounted;O&&L2(O,b.parent,w)},l)},o.deactivate=w=>{const D=w.component;wo(D.m),wo(D.a),a(w,h,null,1,l),$1(()=>{D.da&&pt(D.da);const v=w.props&&w.props.onVnodeUnmounted;v&&L2(v,D.parent,w),D.isDeactivated=!0},l)};function p(w){u9(w),k(w,n,l,!0)}function C(w){r.forEach((D,v)=>{const j=nr(Ee(D)?D.type.__asyncResolved||{}:D.type);j&&!w(j)&&f(v)})}function f(w){const D=r.get(w);D&&(!s||!O2(D,s))?p(D):s&&u9(s),r.delete(w),i.delete(w)}V1(()=>[e.include,e.exclude],([w,D])=>{w&&C(v=>zt(w,v)),D&&C(v=>!zt(D,v))},{flush:"post",deep:!0});let m=null;const x=()=>{m!=null&&(Co(n.subTree.type)?$1(()=>{const w=Pn(n.subTree);w.component&&r.set(m,w)},n.subTree.suspense):r.set(m,Pn(n.subTree)))};return F2(x),Wr(x),Pe(()=>{r.forEach(w=>{const{subTree:D,suspense:v}=n,j=Pn(D);if(w.type===j.type&&w.key===j.key){u9(j);const L=j.component.da;L&&$1(L,v);return}p(w)})}),()=>{if(m=null,!t.default)return s=null;const w=t.default(),D=w[0];if(w.length>1)return s=null,w;if(!k2(D)||!(D.shapeFlag&4)&&!(D.shapeFlag&128))return s=null,D;let v=Pn(D);if(v.type===F1)return s=null,v;const j=v.type,L=nr(Ee(v)?v.type.__asyncResolved||{}:j),{include:b,exclude:O,max:V}=e;if(b&&(!L||!zt(b,L))||O&&L&&zt(O,L))return v.shapeFlag&=-257,s=v,D;const P=v.key==null?j:v.key,G=r.get(P);return v.el&&(v=R2(v),D.shapeFlag&128&&(D.ssContent=v)),m=P,G?(v.el=G.el,v.component=G.component,v.transition&&Oe(v,v.transition),v.shapeFlag|=512,i.delete(P),i.add(P)):(i.add(P),V&&i.size>parseInt(V,10)&&f(i.values().next().value)),v.shapeFlag|=256,s=v,Co(D.type)?D:v}}},J5=Q3;function zt(e,t){return X(e)?e.some(n=>zt(n,t)):S1(e)?e.split(",").includes(t):Xd(e)?(e.lastIndex=0,e.test(t)):!1}function qr(e,t){X5(e,"a",t)}function qo(e,t){X5(e,"da",t)}function X5(e,t,n=n2){const o=e.__wdc||(e.__wdc=()=>{let r=n;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(zo(t,o,n),n){let r=n.parent;for(;r&&r.parent;)Uo(r.parent.vnode)&&J3(o,t,n,r),r=r.parent}}function J3(e,t,n,o){const r=zo(t,e,o,!0);Hn(()=>{_r(o[t],r)},n)}function u9(e){e.shapeFlag&=-257,e.shapeFlag&=-513}function Pn(e){return e.shapeFlag&128?e.ssContent:e}function zo(e,t,n=n2,o=!1){if(n){const r=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...s)=>{we();const l=bn(n),d=b2(t,n,e,s);return l(),Ce(),d});return o?r.unshift(i):r.push(i),i}}const me=e=>(t,n=n2)=>{(!Cn||e==="sp")&&zo(e,(...o)=>t(...o),n)},zr=me("bm"),F2=me("m"),X3=me("bu"),Wr=me("u"),Pe=me("bum"),Hn=me("um"),ea=me("sp"),ta=me("rtg"),na=me("rtc");function oa(e,t=n2){zo("ec",e,t)}const Gr="components",ra="directives";function Vn(e,t){return Kr(Gr,e,!0,t)||e}const e4=Symbol.for("v-ndc");function G9(e){return S1(e)?Kr(Gr,e,!1)||e:e||e4}function Bg(e){return Kr(ra,e)}function Kr(e,t,n=!0,o=!1){const r=J1||n2;if(r){const i=r.type;if(e===Gr){const l=nr(i,!1);if(l&&(l===t||l===r2(t)||l===Ao(r2(t))))return i}const s=Ri(r[e]||i[e],t)||Ri(r.appContext[e],t);return!s&&o?i:s}}function Ri(e,t){return e&&(e[t]||e[r2(t)]||e[Ao(r2(t))])}function ue(e,t,n,o){let r;const i=n,s=X(e);if(s||S1(e)){const l=s&&ae(e);let d=!1,a=!1;l&&(d=!f2(e),a=ge(e),e=Ro(e)),r=new Array(e.length);for(let k=0,u=e.length;kt(l,d,void 0,i));else{const l=Object.keys(e);r=new Array(l.length);for(let d=0,a=l.length;d0;return t!=="default"&&(a.name=t),U(),O1(v1,null,[H("slot",a,o&&o())],k?-2:64)}let s=e[t];s&&s._c&&(s._d=!1);const l=he.length;U();let d;try{const a=s&&t4(s(n)),k=n.key||i||a&&a.key;d=O1(v1,{key:(k&&!M2(k)?k:`_${t}`)+(!a&&o?"_fb":"")},a||(o?o():[]),a&&e._===1?64:-2)}catch(a){for(let k=he.length;k>l;k--)Go();throw a}finally{s&&s._c&&(s._d=!0)}return!r&&d.scopeId&&(d.slotScopeIds=[d.scopeId+"-s"]),d}function t4(e){return e.some(t=>k2(t)?!(t.type===F1||t.type===v1&&!t4(t.children)):!0)?e:null}const K9=e=>e?M4(e)?Ko(e):K9(e.parent):null,en=T1(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>K9(e.parent),$root:e=>K9(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>o4(e),$forceUpdate:e=>e.f||(e.f=()=>{$r(e.update)}),$nextTick:e=>e.n||(e.n=a2.bind(e.proxy)),$watch:e=>q3.bind(e)}),h9=(e,t)=>e!==M1&&!e.__isScriptSetup&&L1(e,t),ia={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:o,data:r,props:i,accessCache:s,type:l,appContext:d}=e;if(t[0]!=="$"){const h=s[t];if(h!==void 0)switch(h){case 1:return o[t];case 2:return r[t];case 4:return n[t];case 3:return i[t]}else{if(h9(o,t))return s[t]=1,o[t];if(r!==M1&&L1(r,t))return s[t]=2,r[t];if(L1(i,t))return s[t]=3,i[t];if(n!==M1&&L1(n,t))return s[t]=4,n[t];Y9&&(s[t]=0)}}const a=en[t];let k,u;if(a)return t==="$attrs"&&t2(e.attrs,"get",""),a(e);if((k=l.__cssModules)&&(k=k[t]))return k;if(n!==M1&&L1(n,t))return s[t]=4,n[t];if(u=d.config.globalProperties,L1(u,t))return u[t]},set({_:e},t,n){const{data:o,setupState:r,ctx:i}=e;return h9(r,t)?(r[t]=n,!0):o!==M1&&L1(o,t)?(o[t]=n,!0):L1(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:o,appContext:r,props:i,type:s}},l){let d;return!!(n[l]||e!==M1&&l[0]!=="$"&&L1(e,l)||h9(t,l)||L1(i,l)||L1(o,l)||L1(en,l)||L1(r.config.globalProperties,l)||(d=s.__cssModules)&&d[l])},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:L1(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function po(e){return X(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}function $i(e,t){return!e||!t?e||t:X(e)&&X(t)?e.concat(t):T1({},po(e),po(t))}let Y9=!0;function sa(e){const t=o4(e),n=e.proxy,o=e.ctx;Y9=!1,t.beforeCreate&&Fi(t.beforeCreate,e,"bc");const{data:r,computed:i,methods:s,watch:l,provide:d,inject:a,created:k,beforeMount:u,mounted:h,beforeUpdate:p,updated:C,activated:f,deactivated:m,beforeDestroy:x,beforeUnmount:w,destroyed:D,unmounted:v,render:j,renderTracked:L,renderTriggered:b,errorCaptured:O,serverPrefetch:V,expose:P,inheritAttrs:G,components:T,directives:o1,filters:k1}=t;if(a&&la(a,o,null),s)for(const Y in s){const r1=s[Y];a1(r1)&&(o[Y]=r1.bind(n))}if(r){const Y=r.call(n,n);j1(Y)&&(e.data=I1(Y))}if(Y9=!0,i)for(const Y in i){const r1=i[Y],m1=a1(r1)?r1.bind(n,n):a1(r1.get)?r1.get.bind(n,n):Q2,y1=!a1(r1)&&a1(r1.set)?r1.set.bind(n):Q2,H1=N({get:m1,set:y1});Object.defineProperty(o,Y,{enumerable:!0,configurable:!0,get:()=>H1.value,set:_1=>H1.value=_1})}if(l)for(const Y in l)n4(l[Y],o,n,Y);if(d){const Y=a1(d)?d.call(n):d;Reflect.ownKeys(Y).forEach(r1=>{ke(r1,Y[r1])})}k&&Fi(k,e,"c");function u1(Y,r1){X(r1)?r1.forEach(m1=>Y(m1.bind(n))):r1&&Y(r1.bind(n))}if(u1(zr,u),u1(F2,h),u1(X3,p),u1(Wr,C),u1(qr,f),u1(qo,m),u1(oa,O),u1(na,L),u1(ta,b),u1(Pe,w),u1(Hn,v),u1(ea,V),X(P))if(P.length){const Y=e.exposed||(e.exposed={});P.forEach(r1=>{Object.defineProperty(Y,r1,{get:()=>n[r1],set:m1=>n[r1]=m1,enumerable:!0})})}else e.exposed||(e.exposed={});j&&e.render===Q2&&(e.render=j),G!=null&&(e.inheritAttrs=G),T&&(e.components=T),o1&&(e.directives=o1),V&&Q5(e)}function la(e,t,n=Q2){X(e)&&(e=Q9(e));for(const o in e){const r=e[o];let i;j1(r)?"default"in r?i=N1(r.from||o,r.default,!0):i=N1(r.from||o):i=N1(r),E1(i)?Object.defineProperty(t,o,{enumerable:!0,configurable:!0,get:()=>i.value,set:s=>i.value=s}):t[o]=i}}function Fi(e,t,n){b2(X(e)?e.map(o=>o.bind(t.proxy)):e.bind(t.proxy),t,n)}function n4(e,t,n,o){let r=o.includes(".")?U5(n,o):()=>n[o];if(S1(e)){const i=t[e];a1(i)&&V1(r,i)}else if(a1(e))V1(r,e.bind(n));else if(j1(e))if(X(e))e.forEach(i=>n4(i,t,n,o));else{const i=a1(e.handler)?e.handler.bind(n):t[e.handler];a1(i)&&V1(r,i,e)}}function o4(e){const t=e.type,{mixins:n,extends:o}=t,{mixins:r,optionsCache:i,config:{optionMergeStrategies:s}}=e.appContext,l=i.get(t);let d;return l?d=l:!r.length&&!n&&!o?d=t:(d={},r.length&&r.forEach(a=>co(d,a,s,!0)),co(d,t,s)),j1(t)&&i.set(t,d),d}function co(e,t,n,o=!1){const{mixins:r,extends:i}=t;i&&co(e,i,n,!0),r&&r.forEach(s=>co(e,s,n,!0));for(const s in t)if(!(o&&s==="expose")){const l=da[s]||n&&n[s];e[s]=l?l(e[s],t[s]):t[s]}return e}const da={data:Ni,props:Ui,emits:Ui,methods:Wt,computed:Wt,beforeCreate:i2,created:i2,beforeMount:i2,mounted:i2,beforeUpdate:i2,updated:i2,beforeDestroy:i2,beforeUnmount:i2,destroyed:i2,unmounted:i2,activated:i2,deactivated:i2,errorCaptured:i2,serverPrefetch:i2,components:Wt,directives:Wt,watch:ka,provide:Ni,inject:aa};function Ni(e,t){return t?e?function(){return T1(a1(e)?e.call(this,this):e,a1(t)?t.call(this,this):t)}:t:e}function aa(e,t){return Wt(Q9(e),Q9(t))}function Q9(e){if(X(e)){const t={};for(let n=0;n{let k,u=M1,h;return U3(()=>{const p=e[r];Q1(k,p)&&(k=p,a())}),{get(){return d(),n.get?n.get(k):k},set(p){const C=n.set?n.set(p):p;if(!Q1(C,k)&&!(u!==M1&&Q1(p,u)))return;const f=o.vnode.props,m=!!(f&&(t in f||r in f||i in f)&&(`onUpdate:${t}`in f||`onUpdate:${r}`in f||`onUpdate:${i}`in f));m||(k=p,a()),o.emit(`update:${t}`,C),Q1(p,u)&&(Q1(p,C)&&!Q1(C,h)||m&&u!==M1&&!Q1(C,k))&&a(),u=p,h=C}}});return l[Symbol.iterator]=()=>{let d=0;return{next(){return d<2?{value:d++?s||M1:l,done:!1}:{done:!0}}}},l}const i4=(e,t)=>t==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${r2(t)}Modifiers`]||e[`${fe(t)}Modifiers`];function ca(e,t,...n){if(e.isUnmounted)return;const o=e.vnode.props||M1;let r=n;const i=t.startsWith("update:"),s=i&&i4(o,t.slice(7));s&&(s.trim&&(r=n.map(k=>S1(k)?k.trim():k)),s.number&&(r=r.map(Po)));let l,d=o[l=i9(t)]||o[l=i9(r2(t))];!d&&i&&(d=o[l=i9(fe(t))]),d&&b2(d,e,6,r);const a=o[l+"Once"];if(a){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,b2(a,e,6,r)}}const wa=new WeakMap;function s4(e,t,n=!1){const o=n?wa:t.emitsCache,r=o.get(e);if(r!==void 0)return r;const i=e.emits;let s={},l=!1;if(!a1(e)){const d=a=>{const k=s4(a,t,!0);k&&(l=!0,T1(s,k))};!n&&t.mixins.length&&t.mixins.forEach(d),e.extends&&d(e.extends),e.mixins&&e.mixins.forEach(d)}return!i&&!l?(j1(e)&&o.set(e,null),null):(X(i)?i.forEach(d=>s[d]=null):T1(s,i),j1(e)&&o.set(e,s),s)}function Wo(e,t){return!e||!Bo(t)?!1:(t=t.slice(2),t=t==="Once"?t:t.replace(/Once$/,""),L1(e,t[0].toLowerCase()+t.slice(1))||L1(e,fe(t))||L1(e,t))}function qi(e){const{type:t,vnode:n,proxy:o,withProxy:r,propsOptions:[i],slots:s,attrs:l,emit:d,render:a,renderCache:k,props:u,data:h,setupState:p,ctx:C,inheritAttrs:f}=e,m=ko(e);let x,w;try{if(n.shapeFlag&4){const v=r||o,j=v;x=E2(a.call(j,v,k,u,p,h,C)),w=l}else{const v=t;x=E2(v.length>1?v(u,{attrs:l,slots:s,emit:d}):v(u,null)),w=t.props?l:ga(l)}}catch(v){he.length=0,Ln(v,e,1),x=H(F1)}let D=x;if(w&&f!==!1){const v=Object.keys(w),{shapeFlag:j}=D;v.length&&j&7&&(i&&v.some(So)&&(w=va(w,i)),D=R2(D,w,!1,!0))}if(n.dirs&&(D=R2(D,null,!1,!0),D.dirs=D.dirs?D.dirs.concat(n.dirs):n.dirs),n.transition){const v=No(D.type)&&uo(D)||D;Oe(v,n.transition)}return x=D,ko(m),x}function Ca(e,t=!0){let n;for(let o=0;o{let t;for(const n in e)(n==="class"||n==="style"||Bo(n))&&((t||(t={}))[n]=e[n]);return t},va=(e,t)=>{const n={};for(const o in e)(!So(o)||!(o.slice(9)in t))&&(n[o]=e[o]);return n};function fa(e,t,n){const{props:o,children:r,component:i}=e,{props:s,children:l,patchFlag:d}=t,a=i.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&d>=0){if(d&1024)return!0;if(d&16)return o?zi(o,s,a):!!s;if(d&8){const k=t.dynamicProps;for(let u=0;uObject.create(d4),k4=e=>Object.getPrototypeOf(e)===d4;function ma(e,t,n,o=!1){const r={},i=a4();e.propsDefaults=Object.create(null),u4(e,t,r,i);for(const s in e.propsOptions[0])s in r||(r[s]=void 0);n?e.props=o?r:O5(r):e.type.props?e.props=r:e.props=i,e.attrs=i}function Ma(e,t,n,o){const{props:r,attrs:i,vnode:{patchFlag:s}}=e,l=g1(r),[d]=e.propsOptions;let a=!1;if((o||s>0)&&!(s&16)){if(s&8){const k=e.vnode.dynamicProps;for(let u=0;u{d=!0;const[h,p]=h4(u,t,!0);T1(s,h),p&&l.push(...p)};!n&&t.mixins.length&&t.mixins.forEach(k),e.extends&&k(e.extends),e.mixins&&e.mixins.forEach(k)}if(!i&&!d)return j1(e)&&o.set(e,ht),ht;if(X(i))for(let k=0;ke==="_"||e==="_ctx"||e==="$stable",Jr=e=>X(e)?e.map(E2):[E2(e)],xa=(e,t,n)=>{if(t._n)return t;const o=z1((...r)=>Jr(t(...r)),n);return o._c=!1,o},p4=(e,t,n)=>{const o=e._ctx;for(const r in e){if(Qr(r))continue;const i=e[r];if(a1(i))t[r]=xa(r,i,o);else if(i!=null){const s=Jr(i);t[r]=()=>s}}},c4=(e,t)=>{const n=Jr(t);e.slots.default=()=>n},w4=(e,t,n)=>{for(const o in t)(n||!Qr(o))&&(e[o]=t[o])},Da=(e,t,n)=>{const o=e.slots=a4();if(e.vnode.shapeFlag&32){const r=t._;r?(w4(o,t,n),n&&p5(o,"_",r,!0)):p4(t,o)}else t&&c4(e,t)},La=(e,t,n)=>{const{vnode:o,slots:r}=e;let i=!0,s=M1;if(o.shapeFlag&32){const l=t._;l?n&&l===1?i=!1:w4(r,t,n):(i=!t.$stable,p4(t,r)),s=t}else t&&(c4(e,t),s={default:1});if(i)for(const l in r)!Qr(l)&&s[l]==null&&delete r[l]},$1=Aa;function Ha(e){return Va(e)}function Va(e,t){const n=To();n.__VUE__=!0;const{insert:o,remove:r,patchProp:i,createElement:s,createText:l,createComment:d,setText:a,setElementText:k,parentNode:u,nextSibling:h,setScopeId:p=Q2,insertStaticContent:C}=e,f=(c,g,M,_=null,E=null,S=null,z=void 0,B=null,y=!!g.dynamicChildren)=>{if(c===g)return;c&&!O2(c,g)&&(_=Z(c),_1(c,E,S,!0),c=null),g.patchFlag===-2&&(y=!1,g.dynamicChildren=null);const{type:I,ref:q,shapeFlag:W}=g;switch(I){case yn:m(c,g,M,_);break;case F1:x(c,g,M,_);break;case c9:c==null&&w(g,M,_,z);break;case v1:T(c,g,M,_,E,S,z,B,y);break;default:W&1?j(c,g,M,_,E,S,z,B,y):W&6?o1(c,g,M,_,E,S,z,B,y):(W&64||W&128)&&I.process(c,g,M,_,E,S,z,B,y,Q)}q!=null&&E?Xt(q,c&&c.ref,S,g||c,!g):q==null&&c&&c.ref!=null&&Xt(c.ref,null,S,c,!0)},m=(c,g,M,_)=>{if(c==null)o(g.el=l(g.children),M,_);else{const E=g.el=c.el;g.children!==c.children&&a(E,g.children)}},x=(c,g,M,_)=>{c==null?o(g.el=d(g.children||""),M,_):g.el=c.el},w=(c,g,M,_)=>{[c.el,c.anchor]=C(c.children,g,M,_,c.el,c.anchor)},D=({el:c,anchor:g},M,_)=>{let E;for(;c&&c!==g;)E=h(c),o(c,M,_),c=E;o(g,M,_)},v=({el:c,anchor:g})=>{let M;for(;c&&c!==g;)M=h(c),r(c),c=M;r(g)},j=(c,g,M,_,E,S,z,B,y)=>{if(g.type==="svg"?z="svg":g.type==="math"&&(z="mathml"),c==null)L(g,M,_,E,S,z,B,y);else{const I=c.el&&c.el._isVueCE?c.el:null;try{I&&I._beginPatch(),V(c,g,E,S,z,B,y)}finally{I&&I._endPatch()}}},L=(c,g,M,_,E,S,z,B)=>{let y,I;const{props:q,shapeFlag:W,transition:e1,dirs:i1}=c;if(y=c.el=s(c.type,S,q&&q.is,q),W&8?k(y,c.children):W&16&&O(c.children,y,null,_,E,p9(c,S),z,B),i1&&Re(c,null,_,"created"),b(y,c,c.scopeId,z,_),q){for(const Z1 in q)Z1!=="value"&&!Yt(Z1)&&i(y,Z1,null,q[Z1],S,_);"value"in q&&i(y,"value",null,q.value,S),(I=q.onVnodeBeforeMount)&&L2(I,_,c)}i1&&Re(c,null,_,"beforeMount");const C1=ya(E,e1);C1&&e1.beforeEnter(y),o(y,g,M),((I=q&&q.onVnodeMounted)||C1||i1)&&$1(()=>{try{I&&L2(I,_,c),C1&&e1.enter(y),i1&&Re(c,null,_,"mounted")}finally{}},E)},b=(c,g,M,_,E)=>{if(M&&p(c,M),_)for(let S=0;S<_.length;S++)p(c,_[S]);if(E){let S=E.subTree;if(g===S||Co(S.type)&&(S.ssContent===g||S.ssFallback===g)){const z=E.vnode;b(c,z,z.scopeId,z.slotScopeIds,E.parent)}}},O=(c,g,M,_,E,S,z,B,y=0)=>{for(let I=y;I{const B=g.el=c.el;let{patchFlag:y,dynamicChildren:I,dirs:q}=g;y|=c.patchFlag&16;const W=c.props||M1,e1=g.props||M1;let i1;if(M&&$e(M,!1),(i1=e1.onVnodeBeforeUpdate)&&L2(i1,M,g,c),q&&Re(g,c,M,"beforeUpdate"),M&&$e(M,!0),I&&(!c.dynamicChildren||c.dynamicChildren.length!==I.length)&&(y=0,z=!1,I=null),(W.innerHTML&&e1.innerHTML==null||W.textContent&&e1.textContent==null)&&k(B,""),I?P(c.dynamicChildren,I,B,M,_,p9(g,E),S):z||r1(c,g,B,null,M,_,p9(g,E),S,!1),y>0){if(y&16)G(B,W,e1,M,E);else if(y&2&&W.class!==e1.class&&i(B,"class",null,e1.class,E),y&4&&i(B,"style",W.style,e1.style,E),y&8){const C1=g.dynamicProps;for(let Z1=0;Z1{i1&&L2(i1,M,g,c),q&&Re(g,c,M,"updated")},_)},P=(c,g,M,_,E,S,z)=>{for(let B=0;B{if(g!==M){if(g!==M1)for(const S in g)!Yt(S)&&!(S in M)&&i(c,S,g[S],null,E,_);for(const S in M){if(Yt(S))continue;const z=M[S],B=g[S];z!==B&&S!=="value"&&i(c,S,B,z,E,_)}"value"in M&&i(c,"value",g.value,M.value,E)}},T=(c,g,M,_,E,S,z,B,y)=>{const I=g.el=c?c.el:l(""),q=g.anchor=c?c.anchor:l("");let{patchFlag:W,dynamicChildren:e1,slotScopeIds:i1}=g;i1&&(B=B?B.concat(i1):i1),c==null?(o(I,M,_),o(q,M,_),O(g.children||[],M,q,E,S,z,B,y)):W>0&&W&64&&e1&&c.dynamicChildren&&c.dynamicChildren.length===e1.length?(P(c.dynamicChildren,e1,M,E,S,z,B),(g.key!=null||E&&g===E.subTree)&&Xr(c,g,!0)):r1(c,g,M,q,E,S,z,B,y)},o1=(c,g,M,_,E,S,z,B,y)=>{g.slotScopeIds=B,c==null?g.shapeFlag&512?E.ctx.activate(g,M,_,z,y):k1(g,M,_,E,S,z,y):c1(c,g,y)},k1=(c,g,M,_,E,S,z)=>{const B=c.component=Fa(c,_,E);if(Uo(c)&&(B.ctx.renderer=Q),Na(B,!1,z),B.asyncDep){if(E&&E.registerDep(B,u1,z),!c.el){const y=B.subTree=H(F1);x(null,y,g,M),c.placeholder=y.el}}else u1(B,c,g,M,E,S,z)},c1=(c,g,M)=>{const _=g.component=c.component;if(fa(c,g,M))if(_.asyncDep&&!_.asyncResolved){Y(_,g,M);return}else _.next=g,_.update();else g.el=c.el,_.vnode=g},u1=(c,g,M,_,E,S,z)=>{const B=()=>{if(c.isMounted){let{next:W,bu:e1,u:i1,parent:C1,vnode:Z1}=c;{const U2=C4(c);if(U2){W&&(W.el=Z1.el,Y(c,W,z)),U2.asyncDep.then(()=>{$1(()=>{c.isUnmounted||I()},E)});return}}let b1=W,R1;$e(c,!1),W?(W.el=Z1.el,Y(c,W,z)):W=Z1,e1&&pt(e1),(R1=W.props&&W.props.onVnodeBeforeUpdate)&&L2(R1,C1,W,Z1),$e(c,!0);const K1=qi(c),N2=c.subTree;c.subTree=K1,f(N2,K1,u(N2.el),Z(N2),c,E,S),W.el=K1.el,b1===null&&Yr(c,K1.el),i1&&$1(i1,E),(R1=W.props&&W.props.onVnodeUpdated)&&$1(()=>L2(R1,C1,W,Z1),E)}else{let W;const{el:e1,props:i1}=g,{bm:C1,m:Z1,parent:b1,root:R1,type:K1}=c,N2=Ee(g);$e(c,!1),C1&&pt(C1),!N2&&(W=i1&&i1.onVnodeBeforeMount)&&L2(W,b1,g),$e(c,!0);{R1.ce&&R1.ce._hasShadowRoot()&&R1.ce._injectChildStyle(K1,c.parent?c.parent.type:void 0);const U2=c.subTree=qi(c);f(null,U2,M,_,c,E,S),g.el=U2.el}if(Z1&&$1(Z1,E),!N2&&(W=i1&&i1.onVnodeMounted)){const U2=g;$1(()=>L2(W,b1,U2),E)}(g.shapeFlag&256||b1&&Ee(b1.vnode)&&b1.vnode.shapeFlag&256)&&c.a&&$1(c.a,E),c.isMounted=!0,g=M=_=null}};c.scope.on();const y=c.effect=new M5(B);c.scope.off();const I=c.update=y.run.bind(y),q=c.job=y.runIfDirty.bind(y);q.i=c,q.id=c.uid,y.scheduler=()=>$r(q),$e(c,!0),I()},Y=(c,g,M)=>{g.component=c;const _=c.vnode.props;c.vnode=g,c.next=null,Ma(c,g.props,_,M),La(c,g.children,M),we(),Oi(c),Ce()},r1=(c,g,M,_,E,S,z,B,y=!1)=>{const I=c&&c.children,q=c?c.shapeFlag:0,W=g.children,{patchFlag:e1,shapeFlag:i1}=g;if(e1>0){if(e1&128){y1(I,W,M,_,E,S,z,B,y);return}else if(e1&256){m1(I,W,M,_,E,S,z,B,y);return}}i1&8?(q&16&&n1(I,E,S),W!==I&&k(M,W)):q&16?i1&16?y1(I,W,M,_,E,S,z,B,y):n1(I,E,S,!0):(q&8&&k(M,""),i1&16&&O(W,M,_,E,S,z,B,y))},m1=(c,g,M,_,E,S,z,B,y)=>{c=c||ht,g=g||ht;const I=c.length,q=g.length,W=Math.min(I,q);let e1;for(e1=0;e1q?n1(c,E,S,!0,!1,W):O(g,M,_,E,S,z,B,y,W)},y1=(c,g,M,_,E,S,z,B,y)=>{let I=0;const q=g.length;let W=c.length-1,e1=q-1;for(;I<=W&&I<=e1;){const i1=c[I],C1=g[I]=y?re(g[I]):E2(g[I]);if(O2(i1,C1))f(i1,C1,M,null,E,S,z,B,y);else break;I++}for(;I<=W&&I<=e1;){const i1=c[W],C1=g[e1]=y?re(g[e1]):E2(g[e1]);if(O2(i1,C1))f(i1,C1,M,null,E,S,z,B,y);else break;W--,e1--}if(I>W){if(I<=e1){const i1=e1+1,C1=i1e1)for(;I<=W;)_1(c[I],E,S,!0),I++;else{const i1=I,C1=I,Z1=new Map;for(I=C1;I<=e1;I++){const p2=g[I]=y?re(g[I]):E2(g[I]);p2.key!=null&&Z1.set(p2.key,I)}let b1,R1=0;const K1=e1-C1+1;let N2=!1,U2=0;const _t=new Array(K1);for(I=0;I=K1){_1(p2,E,S,!0);continue}let q2;if(p2.key!=null)q2=Z1.get(p2.key);else for(b1=C1;b1<=e1;b1++)if(_t[b1-C1]===0&&O2(p2,g[b1])){q2=b1;break}q2===void 0?_1(p2,E,S,!0):(_t[q2-C1]=I+1,q2>=U2?U2=q2:N2=!0,f(p2,g[q2],M,null,E,S,z,B,y),R1++)}const Vi=N2?ba(_t):ht;for(b1=Vi.length-1,I=K1-1;I>=0;I--){const p2=C1+I,q2=g[p2],yi=g[p2+1],bi=p2+1{const{el:S,type:z,transition:B,children:y,shapeFlag:I}=c;if(I&6){H1(c.component.subTree,g,M,_);return}if(I&128){c.suspense.move(g,M,_);return}if(I&64){z.move(c,g,M,Q);return}if(z===v1){o(S,g,M);for(let W=0;WB.enter(S),E));else{const{leave:W,delayLeave:e1,afterLeave:i1}=B,C1=()=>{c.ctx.isUnmounted?r(S):o(S,g,M)},Z1=()=>{const b1=S._isLeaving||!!S[H2];S._isLeaving&&S[H2](!0),B.persisted&&!b1?C1():W(S,()=>{C1(),i1&&i1()})};e1?e1(S,C1,Z1):Z1()}else o(S,g,M)},_1=(c,g,M,_=!1,E=!1)=>{const{type:S,props:z,ref:B,children:y,dynamicChildren:I,shapeFlag:q,patchFlag:W,dirs:e1,cacheIndex:i1,memo:C1}=c;if(W===-2&&(E=!1),B!=null&&(we(),Xt(B,null,M,c,!0),Ce()),i1!=null&&(g.renderCache[i1]=void 0),q&256){g.ctx.deactivate(c);return}const Z1=q&1&&e1,b1=!Ee(c);let R1;if(b1&&(R1=z&&z.onVnodeBeforeUnmount)&&L2(R1,g,c),q&6)d1(c.component,M,_);else{if(q&128){c.suspense.unmount(M,_);return}Z1&&Re(c,null,g,"beforeUnmount"),q&64?c.type.remove(c,g,M,Q,_):I&&!I.hasOnce&&(S!==v1||W>0&&W&64)?n1(I,g,M,!1,!0):(S===v1&&W&384||!E&&q&16)&&n1(y,g,M),_&&$(c)}const K1=C1!=null&&i1==null;(b1&&(R1=z&&z.onVnodeUnmounted)||Z1||K1)&&$1(()=>{R1&&L2(R1,g,c),Z1&&Re(c,null,g,"unmounted"),K1&&(c.el=null)},M)},$=c=>{const{type:g,el:M,anchor:_,transition:E}=c;if(g===v1){l1(M,_);return}if(g===c9){v(c);return}const S=()=>{r(M),E&&!E.persisted&&E.afterLeave&&E.afterLeave()};if(c.shapeFlag&1&&E&&!E.persisted){const{leave:z,delayLeave:B}=E,y=()=>z(M,S);B?B(c.el,S,y):y()}else S()},l1=(c,g)=>{let M;for(;c!==g;)M=h(c),r(c),c=M;r(g)},d1=(c,g,M)=>{const{bum:_,scope:E,job:S,subTree:z,um:B,m:y,a:I}=c;wo(y),wo(I),_&&pt(_),E.stop(),S&&(S.flags|=8,_1(z,c,g,M)),B&&$1(B,g),$1(()=>{c.isUnmounted=!0},g)},n1=(c,g,M,_=!1,E=!1,S=0)=>{for(let z=S;z{if(c.shapeFlag&6)return Z(c.component.subTree);if(c.shapeFlag&128)return c.suspense.next();const g=h(c.anchor||c.el),M=g&&g[q5];return M?h(M):g};let F=!1;const R=(c,g,M)=>{let _;c==null?g._vnode&&(_1(g._vnode,null,null,!0),_=g._vnode.component):f(g._vnode||null,c,g,null,null,null,M),g._vnode=c,F||(F=!0,Oi(_),$5(),F=!1)},Q={p:f,um:_1,m:H1,r:$,mt:k1,mc:O,pc:r1,pbc:P,n:Z,o:e};return{render:R,hydrate:void 0,createApp:ha(R)}}function p9({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function $e({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function ya(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Xr(e,t,n=!1){const o=e.children,r=t.children;if(X(o)&&X(r))for(let i=0;i>1,e[n[l]]0&&(t[o]=n[i-1]),n[i]=o)}}for(i=n.length,s=n[i-1];i-- >0;)n[i]=s,s=t[s];return n}function C4(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:C4(t)}function wo(e){if(e)for(let t=0;te.__isSuspense;let X9=0;const Za={name:"Suspense",__isSuspense:!0,process(e,t,n,o,r,i,s,l,d,a){if(e==null)Ba(t,n,o,r,i,s,l,d,a);else{if(i&&i.deps>0&&!e.suspense.isInFallback){t.suspense=e.suspense,t.suspense.vnode=t,t.el=e.el;return}Sa(e,t,n,o,r,s,l,d,a)}},hydrate:Ea,normalize:Oa},_a=Za;function cn(e,t){const n=e.props&&e.props[t];a1(n)&&n()}function Ba(e,t,n,o,r,i,s,l,d){const{p:a,o:{createElement:k}}=d,u=k("div"),h=e.suspense=v4(e,r,o,t,u,n,i,s,l,d);a(null,h.pendingBranch=e.ssContent,u,null,o,h,i,s),h.deps>0?(cn(e,"onPending"),cn(e,"onFallback"),a(null,e.ssFallback,t,n,o,null,i,s),Ct(h,e.ssFallback)):h.resolve(!1,!0)}function Sa(e,t,n,o,r,i,s,l,{p:d,um:a,o:{createElement:k}}){const u=t.suspense=e.suspense;u.vnode=t,t.el=e.el;const h=t.ssContent,p=t.ssFallback,{activeBranch:C,pendingBranch:f,isInFallback:m,isHydrating:x}=u;if(f)u.pendingBranch=h,O2(f,h)?(d(f,h,u.hiddenContainer,null,r,u,i,s,l),u.deps<=0?u.resolve():m&&!x&&!u.isFallbackMountPending&&(d(C,p,n,o,r,null,i,s,l),Ct(u,p))):(u.pendingId=X9++,x?(u.isHydrating=!1,u.activeBranch=f):a(f,r,u),u.deps=0,u.effects.length=0,u.hiddenContainer=k("div"),m?(d(null,h,u.hiddenContainer,null,r,u,i,s,l),u.deps<=0?u.resolve():u.isFallbackMountPending||(d(C,p,n,o,r,null,i,s,l),Ct(u,p))):C&&O2(C,h)?(d(C,h,n,o,r,u,i,s,l),u.resolve(!0)):(d(null,h,u.hiddenContainer,null,r,u,i,s,l),u.deps<=0&&u.resolve()));else if(C&&O2(C,h))d(C,h,n,o,r,u,i,s,l),Ct(u,h);else if(cn(t,"onPending"),u.pendingBranch=h,h.shapeFlag&512?u.pendingId=h.component.suspenseId:u.pendingId=X9++,d(null,h,u.hiddenContainer,null,r,u,i,s,l),u.deps<=0)u.resolve();else{const{timeout:w,pendingId:D}=u;w>0?setTimeout(()=>{u.pendingId===D&&u.fallback(p)},w):w===0&&u.fallback(p)}}function v4(e,t,n,o,r,i,s,l,d,a,k=!1){const{p:u,m:h,um:p,n:C,o:{parentNode:f,remove:m}}=a;let x;const w=Pa(e);w&&t&&t.pendingBranch&&(x=t.pendingId,t.deps++);const D=e.props?c5(e.props.timeout):void 0,v=i,j={vnode:e,parent:t,parentComponent:n,namespace:s,container:o,hiddenContainer:r,deps:0,pendingId:X9++,timeout:typeof D=="number"?D:-1,activeBranch:null,isFallbackMountPending:!1,pendingBranch:null,isInFallback:!k,isHydrating:k,isUnmounted:!1,effects:[],resolve(L=!1,b=!1){const{vnode:O,activeBranch:V,pendingBranch:P,pendingId:G,effects:T,parentComponent:o1,container:k1,isInFallback:c1}=j;let u1=!1;if(j.isHydrating)j.isHydrating=!1;else if(!L){u1=V&&P.transition&&P.transition.mode==="out-in";let m1=!1;u1&&(V.transition.afterLeave=()=>{G===j.pendingId&&(h(P,k1,i===v&&!m1?C(V):i,0),q9(T),c1&&O.ssFallback&&(O.ssFallback.el=null))}),V&&!j.isFallbackMountPending&&(f(V.el)===k1&&(i=C(V),m1=!0),p(V,o1,j,!0),!u1&&c1&&O.ssFallback&&$1(()=>O.ssFallback.el=null,j)),u1||h(P,k1,i,0)}j.isFallbackMountPending=!1,Ct(j,P),j.pendingBranch=null,j.isInFallback=!1;let Y=j.parent,r1=!1;for(;Y;){if(Y.pendingBranch){for(let m1=0;m1{if(j.isFallbackMountPending=!1,!j.isInFallback)return;const c1=j.vnode.ssFallback;u(null,c1,P,T,V,null,G,l,d),Ct(j,c1)},k1=L.transition&&L.transition.mode==="out-in";k1&&(j.isFallbackMountPending=!0,O.transition.afterLeave=o1),j.isInFallback=!0,p(O,V,null,!0),k1||o1()},move(L,b,O){j.activeBranch&&h(j.activeBranch,L,b,O),j.container=L},next(){return j.activeBranch&&C(j.activeBranch)},registerDep(L,b,O){const V=!!j.pendingBranch;V&&j.deps++;const P=L.vnode.el;L.asyncDep.catch(G=>{Ln(G,L,0)}).then(G=>{if(L.isUnmounted||j.isUnmounted||j.pendingId!==L.suspenseId)return;er(),L.asyncResolved=!0;const{vnode:T}=L;tr(L,G),P&&(T.el=P);const o1=!P&&L.subTree.el;b(L,T,f(P||L.subTree.el),P?null:C(L.subTree),j,s,O),o1&&(T.placeholder=null,m(o1)),Yr(L,T.el),V&&--j.deps===0&&j.resolve()})},unmount(L,b){j.isUnmounted=!0,j.activeBranch&&p(j.activeBranch,n,L,b),j.pendingBranch&&p(j.pendingBranch,n,L,b)}};return j}function Ea(e,t,n,o,r,i,s,l,d){const a=t.suspense=v4(t,o,n,e.parentNode,document.createElement("div"),null,r,i,s,l,!0),k=d(e,a.pendingBranch=t.ssContent,n,a,i,s);return a.deps===0&&a.resolve(!1,!0),k}function Oa(e){const{shapeFlag:t,children:n}=e,o=t&32;e.ssContent=Gi(o?n.default:n),e.ssFallback=o?Gi(n.fallback):H(F1)}function Gi(e){let t;if(a1(e)){const n=mt&&e._c;n&&(e._d=!1,U()),e=e(),n&&(e._d=!0,t=h2,Go())}return X(e)&&(e=Ca(e)),e=E2(e),t&&!e.dynamicChildren&&(e.dynamicChildren=t.filter(n=>n!==e)),e}function Aa(e,t){t&&t.pendingBranch?X(e)?t.effects.push(...e):t.effects.push(e):q9(e)}function Ct(e,t){e.activeBranch=t;const{vnode:n,parentComponent:o}=e;let r=t.el;for(;!r&&t.component;)t=t.component.subTree,r=t.el;n.el=r,o&&o.subTree===n&&(o.vnode.el=r,Yr(o,r))}function Pa(e){const t=e.props&&e.props.suspensible;return t!=null&&t!==!1}const v1=Symbol.for("v-fgt"),yn=Symbol.for("v-txt"),F1=Symbol.for("v-cmt"),c9=Symbol.for("v-stc"),he=[];let h2=null;function U(e=!1){he.push(h2=e?null:[])}function Go(){he.pop(),h2=he[he.length-1]||null}let mt=1;function go(e,t=!1){mt+=e,e<0&&h2&&t&&(h2.hasOnce=!0)}function f4(e){return e.dynamicChildren=mt>0?h2||ht:null,Go(),mt>0&&h2&&h2.push(e),e}function J(e,t,n,o,r,i){return f4(A(e,t,n,o,r,i,!0))}function O1(e,t,n,o,r){return f4(H(e,t,n,o,r,!0))}function k2(e){return e?e.__v_isVNode===!0:!1}function O2(e,t){return e.type===t.type&&e.key===t.key}const m4=({key:e})=>e??null,Kn=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?S1(e)||E1(e)||a1(e)?{i:J1,r:e,k:t,f:!!n}:e:null);function A(e,t=null,n=null,o=0,r=null,i=e===v1?0:1,s=!1,l=!1){const d={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&m4(t),ref:t&&Kn(t),scopeId:N5,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:o,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:J1};return l?(vo(d,n),i&128&&e.normalize(d)):n&&(d.shapeFlag|=S1(n)?8:16),mt>0&&!s&&h2&&(d.patchFlag>0||i&6)&&d.patchFlag!==32&&h2.push(d),d}const H=Ta;function Ta(e,t=null,n=null,o=0,r=null,i=!1){if((!e||e===e4)&&(e=F1),k2(e)){const l=R2(e,t,!0);return n&&vo(l,n),mt>0&&!i&&h2&&(l.shapeFlag&6?h2[h2.indexOf(e)]=l:h2.push(l)),l.patchFlag=-2,l}if(Wa(e)&&(e=e.__vccOpts),t){t=Ia(t);let{class:l,style:d}=t;l&&!S1(l)&&(t.class=G1(l)),j1(d)&&($o(d)&&!X(d)&&(d=T1({},d)),t.style=ce(d))}const s=S1(e)?1:Co(e)?128:No(e)?64:j1(e)?4:a1(e)?2:0;return A(e,t,n,o,r,s,i,!0)}function Ia(e){return e?$o(e)||k4(e)?T1({},e):e:null}function R2(e,t,n=!1,o=!1){const{props:r,ref:i,patchFlag:s,children:l,transition:d}=e,a=t?Mt(r||{},t):r,k={__v_isVNode:!0,__v_skip:!0,type:e.type,props:a,key:a&&m4(a),ref:t&&t.ref?n&&i?X(i)?i.concat(Kn(t)):[i,Kn(t)]:Kn(t):i,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==v1?s===-1?16:s|16:s,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:d,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&R2(e.ssContent),ssFallback:e.ssFallback&&R2(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return d&&o&&Oe(k,d.clone(k)),k}function e2(e=" ",t=0){return H(yn,null,e,t)}function x1(e="",t=!1){return t?(U(),O1(F1,null,e)):H(F1,null,e)}function E2(e){return e==null||typeof e=="boolean"?H(F1):X(e)?H(v1,null,e.slice()):k2(e)?re(e):H(yn,null,String(e))}function re(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:R2(e)}function vo(e,t){let n=0;const{shapeFlag:o}=e;if(t==null)t=null;else if(X(t))n=16;else if(typeof t=="object")if(o&65){const r=t.default;r&&(r._c&&(r._d=!1),vo(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!k4(t)?t._ctx=J1:r===3&&J1&&(J1.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else if(a1(t)){if(o&65){vo(e,{default:t});return}t={default:t,_ctx:J1},n=32}else t=String(t),o&64?(n=16,t=[e2(t)]):n=8;e.children=t,e.shapeFlag|=n}function Mt(...e){const t={};for(let n=0;nn2||J1;let fo,wn;{const e=To(),t=(n,o)=>{let r;return(r=e[n])||(r=e[n]=[]),r.push(o),i=>{r.length>1?r.forEach(s=>s(i)):r[0](i)}};fo=t("__VUE_INSTANCE_SETTERS__",n=>n2=n),wn=t("__VUE_SSR_SETTERS__",n=>Cn=n)}const bn=e=>{const t=n2;return fo(e),e.scope.on(),()=>{e.scope.off(),fo(t)}},er=()=>{n2&&n2.scope.off(),fo(null)};function M4(e){return e.vnode.shapeFlag&4}let Cn=!1;function Na(e,t=!1,n=!1){t&&wn(t);const{props:o,children:r}=e.vnode,i=M4(e);ma(e,o,i,t),Da(e,r,n||t);const s=i?Ua(e,t):void 0;return t&&wn(!1),s}function Ua(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,ia);const{setup:o}=n;if(o){we();const r=e.setupContext=o.length>1?za(e):null,i=bn(e),s=Dn(o,e,0,[e.props,r]),l=k5(s);if(Ce(),i(),(l||e.sp)&&!Ee(e)&&Q5(e),l){if(s.then(er,er),t)return s.then(d=>{wn(!0);try{tr(e,d,t)}finally{wn(!1)}}).catch(d=>{Ln(d,e,0)});e.asyncDep=s}else tr(e,s)}else j4(e)}function tr(e,t,n){a1(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:j1(t)&&(e.setupState=P5(t)),j4(e)}function j4(e,t,n){const o=e.type;e.render||(e.render=o.render||Q2);{const r=bn(e);we();try{sa(e)}finally{Ce(),r()}}}const qa={get(e,t){return t2(e,"get",""),e[t]}};function za(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,qa),slots:e.slots,emit:e.emit,expose:t}}function Ko(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(P5(Ir(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in en)return en[n](e)},has(t,n){return n in t||n in en}})):e.proxy}function nr(e,t=!0){return a1(e)?e.displayName||e.name:e.name||t&&e.__name}function Wa(e){return a1(e)&&"__vccOpts"in e}const N=(e,t)=>A3(e,t,Cn);function gn(e,t,n){try{go(-1);const o=arguments.length;return o===2?j1(t)&&!X(t)?k2(t)?H(e,null,[t]):H(e,t):H(e,null,t):(o>3?n=Array.prototype.slice.call(arguments,2):o===3&&k2(n)&&(n=[n]),H(e,t,n))}finally{go(1)}}const Ga="3.5.42";/** +**/function Dn(e,t,n,o){try{return o?e(...o):e()}catch(r){Ln(r,t,n)}}function b2(e,t,n,o){if(a1(e)){const r=Dn(e,t,n,o);return r&&k5(r)&&r.catch(i=>{Ln(i,t,n)}),r}if(X(e)){const r=[];for(let i=0;i>>1,r=l2[o],i=hn(r);i=hn(n)?l2.push(e):l2.splice(R3(t),0,e),e.flags|=1,R5()}}function R5(){ao||(ao=I5.then(F5))}function q9(e){if(!X(e))Ze&&e.id===-1?Ze.splice(at+1,0,e):e.flags&1||(ct.push(e),e.flags|=1);else for(let t=0;thn(n)-hn(o));if(ct.length=0,Ze){for(let n=0;ne.id==null?e.flags&2?-1:1/0:e.id;function F5(e){try{for(G2=0;G2{o._d&&go(-1);const i=ko(t),s=he.length;let l;try{l=e(...r)}finally{for(let d=he.length;d>s;d--)Go();ko(i),o._d&&go(1)}return l};return o._n=!0,o._c=!0,o._d=!0,o}function Fr(e,t){if(Q1===null)return e;const n=Ko(Q1),o=e.dirs||(e.dirs=[]);for(let r=0;r1)return n&&a1(t)?t.call(o&&o.proxy):t}}function $3(){return!!(Z2()||Ye)}const F3=Symbol.for("v-scx"),N3=()=>N1(F3);function Nr(e,t){return Fo(e,null,t)}function U3(e,t){return Fo(e,null,{flush:"sync"})}function V1(e,t,n){return Fo(e,t,n)}function Fo(e,t,n=M1){const{immediate:o,deep:r,flush:i,once:s}=n,l=T1({},n),d=t&&o||!t&&i!=="post";let a;if(Cn){if(i==="sync"){const p=N3();a=p.__watcherHandles||(p.__watcherHandles=[])}else if(!d){const p=()=>{};return p.stop=J2,p.resume=J2,p.pause=J2,p}}const k=n2;l.call=(p,C,f)=>b2(p,k,C,f);let u=!1;i==="post"?l.scheduler=p=>{$1(p,k&&k.suspense)}:i!=="sync"&&(u=!0,l.scheduler=(p,C)=>{C?p():$r(p)}),l.augmentJob=p=>{t&&(p.flags|=4),u&&(p.flags|=2,k&&(p.id=k.uid,p.i=k))};const h=T3(e,t,l);return Cn&&(a?a.push(h):d&&h()),h}function q3(e,t,n){const o=this.proxy,r=S1(e)?e.includes(".")?U5(o,e):()=>o[e]:e.bind(o,o);let i;a1(t)?i=t:(i=t.handler,n=t);const s=bn(this),l=Fo(r,i.bind(o),n);return s(),l}function U5(e,t){const n=t.split(".");return()=>{let o=e;for(let r=0;re.__isTeleport,Ue=e=>e&&(e.disabled||e.disabled===""),z3=e=>e&&(e.defer||e.defer===""),Ai=e=>typeof SVGElement<"u"&&e instanceof SVGElement,Pi=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,z9=(e,t)=>{const n=e&&e.to;return S1(n)?t?t(n):null:n},W3={name:"Teleport",__isTeleport:!0,process(e,t,n,o,r,i,s,l,d,a){const{mc:k,pc:u,pbc:h,o:{insert:p,querySelector:C,createText:f,createComment:m,parentNode:x}}=a,w=Ue(t.props);let{dynamicChildren:D}=t;const v=(b,O,V)=>{b.shapeFlag&16&&k(b.children,O,V,r,i,s,l,d)},j=(b=t)=>{const O=Ue(b.props),V=b.target=z9(b.props,C),P=W9(V,b,f,p);V&&(s!=="svg"&&Ai(V)?s="svg":s!=="mathml"&&Pi(V)&&(s="mathml"),r&&r.isCE&&(r.ce._teleportTargets||(r.ce._teleportTargets=new Set)).add(V),O||(v(b,V,P),qt(b,!1)))},L=b=>{const O=()=>{if(Ve.get(b)===O){if(Ve.delete(b),Ue(b.props)){const V=x(b.el)||n;v(b,V,b.anchor),qt(b,!0)}j(b)}};Ve.set(b,O),$1(O,i)};if(e==null){const b=t.el=f(""),O=t.anchor=f("");if(p(b,n,o),p(O,n,o),z3(t.props)||i&&i.pendingBranch){L(t);return}w&&(v(t,n,O),qt(t,!0)),j()}else{t.el=e.el;const b=t.anchor=e.anchor,O=Ve.get(e);if(O){O.flags|=8,Ve.delete(e),L(t);return}t.targetStart=e.targetStart;const V=t.target=e.target,P=t.targetAnchor=e.targetAnchor,G=Ue(e.props),T=G?n:V,o1=G?b:P;if(s==="svg"||Ai(V)?s="svg":(s==="mathml"||Pi(V))&&(s="mathml"),D?(h(e.dynamicChildren,D,T,r,i,s,l),Xr(e,t,!0)):d||u(e,t,T,o1,r,i,s,l,!1),w)G?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):An(t,n,b,a,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const k1=z9(t.props,C);k1&&(t.target=k1,An(t,k1,null,a,0))}else G&&An(t,V,P,a,1);qt(t,w)}},remove(e,t,n,{um:o,o:{remove:r}},i){const{shapeFlag:s,children:l,anchor:d,targetStart:a,targetAnchor:k,target:u,props:h}=e,p=Ue(h),C=i||!p,f=Ve.get(e);if(f&&(f.flags|=8,Ve.delete(e)),u&&(r(a),r(k)),i&&r(d),!f&&(p||u)&&s&16)for(let m=0;m{e.isMounted=!0}),Pe(()=>{e.isUnmounting=!0}),e}const D2=[Function,Array],W5={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:D2,onEnter:D2,onAfterEnter:D2,onEnterCancelled:D2,onBeforeLeave:D2,onLeave:D2,onAfterLeave:D2,onLeaveCancelled:D2,onBeforeAppear:D2,onAppear:D2,onAfterAppear:D2,onAppearCancelled:D2},G5=e=>{const t=e.subTree;return t.component?G5(t.component):t},K3={name:"BaseTransition",props:W5,setup(e,{slots:t}){const n=Z2(),o=z5();return()=>{const r=t.default&&Ur(t.default(),!0),i=r&&r.length?K5(r):n.subTree?x1():void 0;if(!i)return;const s=g1(e),{mode:l}=s;if(o.isLeaving)return k9(i);const d=uo(i);if(!d)return k9(i);let a=pn(d,s,o,n,u=>a=u);d.type!==F1&&Oe(d,a);let k=n.subTree&&uo(n.subTree);if(k&&k.type!==F1&&!O2(k,d)&&G5(n).type!==F1){let u=pn(k,s,o,n);if(Oe(k,u),l==="out-in"&&d.type!==F1)return o.isLeaving=!0,u.afterLeave=()=>{o.isLeaving=!1,n.job.flags&8||n.update(),delete u.afterLeave,k=void 0},k9(i);l==="in-out"&&d.type!==F1?u.delayLeave=(h,p,C)=>{const f=Y5(o,k);f[String(k.key)]=k,h[H2]=()=>{p(),h[H2]=void 0,delete a.delayedLeave,k=void 0},a.delayedLeave=()=>{C(),delete a.delayedLeave,k=void 0}}:k=void 0}else k&&(k=void 0);return i}}};function K5(e){let t=e[0];if(e.length>1){for(const n of e)if(n.type!==F1){t=n;break}}return t}const Y3=K3;function Y5(e,t){const{leavingVNodes:n}=e;let o=n.get(t.type);return o||(o=Object.create(null),n.set(t.type,o)),o}function pn(e,t,n,o,r){const{appear:i,mode:s,persisted:l=!1,onBeforeEnter:d,onEnter:a,onAfterEnter:k,onEnterCancelled:u,onBeforeLeave:h,onLeave:p,onAfterLeave:C,onLeaveCancelled:f,onBeforeAppear:m,onAppear:x,onAfterAppear:w,onAppearCancelled:D}=t,v=String(e.key),j=Y5(n,e),L=(V,P)=>{V&&b2(V,o,9,P)},b=(V,P)=>{const G=P[1];L(V,P),X(V)?V.every(T=>T.length<=1)&&G():V.length<=1&&G()},O={mode:s,persisted:l,beforeEnter(V){let P=d;if(!n.isMounted)if(i)P=m||d;else return;V[H2]&&V[H2](!0);const G=j[v];G&&O2(e,G)&&G.el[H2]&&G.el[H2](),L(P,[V])},enter(V){if(j[v]===e)return;let P=a,G=k,T=u;if(!n.isMounted)if(i)P=x||a,G=w||k,T=D||u;else return;let o1=!1;V[St]=w1=>{o1||(o1=!0,w1?L(T,[V]):L(G,[V]),O.delayedLeave&&O.delayedLeave(),V[St]=void 0)};const k1=V[St].bind(null,!1);P?b(P,[V,k1]):k1()},leave(V,P){const G=String(e.key);if(V[St]&&V[St](!0),n.isUnmounting)return P();L(h,[V]);let T=!1;V[H2]=k1=>{T||(T=!0,P(),k1?L(f,[V]):L(C,[V]),V[H2]=void 0,j[G]===e&&delete j[G])};const o1=V[H2].bind(null,!1);j[G]=e,p?b(p,[V,o1]):o1()},clone(V){const P=pn(V,t,n,o,r);return r&&r(P),P}};return O}function k9(e){if(Uo(e))return e=R2(e),e.children=null,e}function uo(e){if(!Uo(e))return No(e.type)&&e.children?K5(e.children):e;if(e.component)return e.component.subTree;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&a1(n.default))return n.default()}}function Oe(e,t){if(e.shapeFlag&6&&e.component){e.transition=t;const n=e.component.subTree;Oe(No(n.type)&&uo(n)||n,t)}else e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Ur(e,t=!1,n){let o=[],r=0;for(let i=0;i1)for(let i=0;iXt(f,t&&(X(t)?t[m]:t),n,o,r));return}if(Ee(o)&&!r){o.shapeFlag&512&&o.type.__asyncResolved&&o.component.subTree.component&&Xt(e,t,n,o.component.subTree);return}const i=o.shapeFlag&4?Ko(o.component):o.el,s=r?null:i,{i:l,r:d}=e,a=t&&t.r,k=l.refs===M1?l.refs={}:l.refs,u=l.setupState,h=g1(u),p=u===M1?a5:f=>Ti(k,f)?!1:L1(h,f),C=(f,m)=>!(m&&Ti(k,m));if(a!=null&&a!==d){if(Ii(t),S1(a))k[a]=null,p(a)&&(u[a]=null);else if(E1(a)){const f=t;C(a,f.k)&&(a.value=null),f.k&&(k[f.k]=null)}}if(a1(d))Dn(d,l,12,[s,k]);else{const f=S1(d),m=E1(d);if(f||m){const x=()=>{if(e.f){const w=f?p(d)?u[d]:k[d]:C()||!e.k?d.value:k[e.k];if(r)X(w)&&_r(w,i);else if(X(w))w.includes(i)||w.push(i);else if(f)k[d]=[i],p(d)&&(u[d]=k[d]);else{const D=[i];C(d,e.k)&&(d.value=D),e.k&&(k[e.k]=D)}}else f?(k[d]=s,p(d)&&(u[d]=s)):m&&(C(d,e.k)&&(d.value=s),e.k&&(k[e.k]=s))};if(s){const w=()=>{x(),ho.delete(e)};w.id=-1,ho.set(e,w),$1(w,n)}else Ii(e),x()}}}function Ii(e){const t=ho.get(e);t&&(t.flags|=8,ho.delete(e))}To().requestIdleCallback;To().cancelIdleCallback;const Ee=e=>!!e.type.__asyncLoader,Uo=e=>e.type.__isKeepAlive,J3={name:"KeepAlive",__isKeepAlive:!0,props:{include:[String,RegExp,Array],exclude:[String,RegExp,Array],max:[String,Number]},setup(e,{slots:t}){const n=Z2(),o=n.ctx;if(!o.renderer)return()=>{const w=t.default&&t.default();return w&&w.length===1?w[0]:w};const r=new Map,i=new Set;let s=null;const l=n.suspense,{renderer:{p:d,m:a,um:k,o:{createElement:u}}}=o,h=u("div");o.activate=(w,D,v,j,L)=>{const b=w.component;a(w,D,v,0,l),d(b.vnode,w,D,v,b,l,j,w.slotScopeIds,L),$1(()=>{b.isDeactivated=!1,b.a&&pt(b.a);const O=w.props&&w.props.onVnodeMounted;O&&L2(O,b.parent,w)},l)},o.deactivate=w=>{const D=w.component;wo(D.m),wo(D.a),a(w,h,null,1,l),$1(()=>{D.da&&pt(D.da);const v=w.props&&w.props.onVnodeUnmounted;v&&L2(v,D.parent,w),D.isDeactivated=!0},l)};function p(w){u9(w),k(w,n,l,!0)}function C(w){r.forEach((D,v)=>{const j=nr(Ee(D)?D.type.__asyncResolved||{}:D.type);j&&!w(j)&&f(v)})}function f(w){const D=r.get(w);D&&(!s||!O2(D,s))?p(D):s&&u9(s),r.delete(w),i.delete(w)}V1(()=>[e.include,e.exclude],([w,D])=>{w&&C(v=>zt(w,v)),D&&C(v=>!zt(D,v))},{flush:"post",deep:!0});let m=null;const x=()=>{m!=null&&(Co(n.subTree.type)?$1(()=>{const w=Pn(n.subTree);w.component&&r.set(m,w)},n.subTree.suspense):r.set(m,Pn(n.subTree)))};return F2(x),Wr(x),Pe(()=>{r.forEach(w=>{const{subTree:D,suspense:v}=n,j=Pn(D);if(w.type===j.type&&w.key===j.key){u9(j);const L=j.component.da;L&&$1(L,v);return}p(w)})}),()=>{if(m=null,!t.default)return s=null;const w=t.default(),D=w[0];if(w.length>1)return s=null,w;if(!k2(D)||!(D.shapeFlag&4)&&!(D.shapeFlag&128))return s=null,D;let v=Pn(D);if(v.type===F1)return s=null,v;const j=v.type,L=nr(Ee(v)?v.type.__asyncResolved||{}:j),{include:b,exclude:O,max:V}=e;if(b&&(!L||!zt(b,L))||O&&L&&zt(O,L))return v.shapeFlag&=-257,s=v,D;const P=v.key==null?j:v.key,G=r.get(P);return v.el&&(v=R2(v),D.shapeFlag&128&&(D.ssContent=v)),m=P,G?(v.el=G.el,v.component=G.component,v.transition&&Oe(v,v.transition),v.shapeFlag|=512,i.delete(P),i.add(P)):(i.add(P),V&&i.size>parseInt(V,10)&&f(i.values().next().value)),v.shapeFlag|=256,s=v,Co(D.type)?D:v}}},Q5=J3;function zt(e,t){return X(e)?e.some(n=>zt(n,t)):S1(e)?e.split(",").includes(t):Xd(e)?(e.lastIndex=0,e.test(t)):!1}function qr(e,t){X5(e,"a",t)}function qo(e,t){X5(e,"da",t)}function X5(e,t,n=n2){const o=e.__wdc||(e.__wdc=()=>{let r=n;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(zo(t,o,n),n){let r=n.parent;for(;r&&r.parent;)Uo(r.parent.vnode)&&Q3(o,t,n,r),r=r.parent}}function Q3(e,t,n,o){const r=zo(t,e,o,!0);Hn(()=>{_r(o[t],r)},n)}function u9(e){e.shapeFlag&=-257,e.shapeFlag&=-513}function Pn(e){return e.shapeFlag&128?e.ssContent:e}function zo(e,t,n=n2,o=!1){if(n){const r=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...s)=>{we();const l=bn(n),d=b2(t,n,e,s);return l(),Ce(),d});return o?r.unshift(i):r.push(i),i}}const me=e=>(t,n=n2)=>{(!Cn||e==="sp")&&zo(e,(...o)=>t(...o),n)},zr=me("bm"),F2=me("m"),X3=me("bu"),Wr=me("u"),Pe=me("bum"),Hn=me("um"),ea=me("sp"),ta=me("rtg"),na=me("rtc");function oa(e,t=n2){zo("ec",e,t)}const Gr="components",ra="directives";function Vn(e,t){return Kr(Gr,e,!0,t)||e}const e4=Symbol.for("v-ndc");function G9(e){return S1(e)?Kr(Gr,e,!1)||e:e||e4}function Bg(e){return Kr(ra,e)}function Kr(e,t,n=!0,o=!1){const r=Q1||n2;if(r){const i=r.type;if(e===Gr){const l=nr(i,!1);if(l&&(l===t||l===r2(t)||l===Ao(r2(t))))return i}const s=Ri(r[e]||i[e],t)||Ri(r.appContext[e],t);return!s&&o?i:s}}function Ri(e,t){return e&&(e[t]||e[r2(t)]||e[Ao(r2(t))])}function ue(e,t,n,o){let r;const i=n,s=X(e);if(s||S1(e)){const l=s&&ae(e);let d=!1,a=!1;l&&(d=!f2(e),a=ge(e),e=Ro(e)),r=new Array(e.length);for(let k=0,u=e.length;kt(l,d,void 0,i));else{const l=Object.keys(e);r=new Array(l.length);for(let d=0,a=l.length;d0;return t!=="default"&&(a.name=t),U(),A1(v1,null,[H("slot",a,o&&o())],k?-2:64)}let s=e[t];s&&s._c&&(s._d=!1);const l=he.length;U();let d;try{const a=s&&t4(s(n)),k=n.key||i||a&&a.key;d=A1(v1,{key:(k&&!M2(k)?k:`_${t}`)+(!a&&o?"_fb":"")},a||(o?o():[]),a&&e._===1?64:-2)}catch(a){for(let k=he.length;k>l;k--)Go();throw a}finally{s&&s._c&&(s._d=!0)}return!r&&d.scopeId&&(d.slotScopeIds=[d.scopeId+"-s"]),d}function t4(e){return e.some(t=>k2(t)?!(t.type===F1||t.type===v1&&!t4(t.children)):!0)?e:null}const K9=e=>e?M4(e)?Ko(e):K9(e.parent):null,en=T1(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>K9(e.parent),$root:e=>K9(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>o4(e),$forceUpdate:e=>e.f||(e.f=()=>{$r(e.update)}),$nextTick:e=>e.n||(e.n=a2.bind(e.proxy)),$watch:e=>q3.bind(e)}),h9=(e,t)=>e!==M1&&!e.__isScriptSetup&&L1(e,t),ia={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:o,data:r,props:i,accessCache:s,type:l,appContext:d}=e;if(t[0]!=="$"){const h=s[t];if(h!==void 0)switch(h){case 1:return o[t];case 2:return r[t];case 4:return n[t];case 3:return i[t]}else{if(h9(o,t))return s[t]=1,o[t];if(r!==M1&&L1(r,t))return s[t]=2,r[t];if(L1(i,t))return s[t]=3,i[t];if(n!==M1&&L1(n,t))return s[t]=4,n[t];Y9&&(s[t]=0)}}const a=en[t];let k,u;if(a)return t==="$attrs"&&t2(e.attrs,"get",""),a(e);if((k=l.__cssModules)&&(k=k[t]))return k;if(n!==M1&&L1(n,t))return s[t]=4,n[t];if(u=d.config.globalProperties,L1(u,t))return u[t]},set({_:e},t,n){const{data:o,setupState:r,ctx:i}=e;return h9(r,t)?(r[t]=n,!0):o!==M1&&L1(o,t)?(o[t]=n,!0):L1(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:o,appContext:r,props:i,type:s}},l){let d;return!!(n[l]||e!==M1&&l[0]!=="$"&&L1(e,l)||h9(t,l)||L1(i,l)||L1(o,l)||L1(en,l)||L1(r.config.globalProperties,l)||(d=s.__cssModules)&&d[l])},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:L1(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function po(e){return X(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}function $i(e,t){return!e||!t?e||t:X(e)&&X(t)?e.concat(t):T1({},po(e),po(t))}let Y9=!0;function sa(e){const t=o4(e),n=e.proxy,o=e.ctx;Y9=!1,t.beforeCreate&&Fi(t.beforeCreate,e,"bc");const{data:r,computed:i,methods:s,watch:l,provide:d,inject:a,created:k,beforeMount:u,mounted:h,beforeUpdate:p,updated:C,activated:f,deactivated:m,beforeDestroy:x,beforeUnmount:w,destroyed:D,unmounted:v,render:j,renderTracked:L,renderTriggered:b,errorCaptured:O,serverPrefetch:V,expose:P,inheritAttrs:G,components:T,directives:o1,filters:k1}=t;if(a&&la(a,o,null),s)for(const Y in s){const r1=s[Y];a1(r1)&&(o[Y]=r1.bind(n))}if(r){const Y=r.call(n,n);j1(Y)&&(e.data=I1(Y))}if(Y9=!0,i)for(const Y in i){const r1=i[Y],m1=a1(r1)?r1.bind(n,n):a1(r1.get)?r1.get.bind(n,n):J2,y1=!a1(r1)&&a1(r1.set)?r1.set.bind(n):J2,H1=N({get:m1,set:y1});Object.defineProperty(o,Y,{enumerable:!0,configurable:!0,get:()=>H1.value,set:_1=>H1.value=_1})}if(l)for(const Y in l)n4(l[Y],o,n,Y);if(d){const Y=a1(d)?d.call(n):d;Reflect.ownKeys(Y).forEach(r1=>{ke(r1,Y[r1])})}k&&Fi(k,e,"c");function u1(Y,r1){X(r1)?r1.forEach(m1=>Y(m1.bind(n))):r1&&Y(r1.bind(n))}if(u1(zr,u),u1(F2,h),u1(X3,p),u1(Wr,C),u1(qr,f),u1(qo,m),u1(oa,O),u1(na,L),u1(ta,b),u1(Pe,w),u1(Hn,v),u1(ea,V),X(P))if(P.length){const Y=e.exposed||(e.exposed={});P.forEach(r1=>{Object.defineProperty(Y,r1,{get:()=>n[r1],set:m1=>n[r1]=m1,enumerable:!0})})}else e.exposed||(e.exposed={});j&&e.render===J2&&(e.render=j),G!=null&&(e.inheritAttrs=G),T&&(e.components=T),o1&&(e.directives=o1),V&&J5(e)}function la(e,t,n=J2){X(e)&&(e=J9(e));for(const o in e){const r=e[o];let i;j1(r)?"default"in r?i=N1(r.from||o,r.default,!0):i=N1(r.from||o):i=N1(r),E1(i)?Object.defineProperty(t,o,{enumerable:!0,configurable:!0,get:()=>i.value,set:s=>i.value=s}):t[o]=i}}function Fi(e,t,n){b2(X(e)?e.map(o=>o.bind(t.proxy)):e.bind(t.proxy),t,n)}function n4(e,t,n,o){let r=o.includes(".")?U5(n,o):()=>n[o];if(S1(e)){const i=t[e];a1(i)&&V1(r,i)}else if(a1(e))V1(r,e.bind(n));else if(j1(e))if(X(e))e.forEach(i=>n4(i,t,n,o));else{const i=a1(e.handler)?e.handler.bind(n):t[e.handler];a1(i)&&V1(r,i,e)}}function o4(e){const t=e.type,{mixins:n,extends:o}=t,{mixins:r,optionsCache:i,config:{optionMergeStrategies:s}}=e.appContext,l=i.get(t);let d;return l?d=l:!r.length&&!n&&!o?d=t:(d={},r.length&&r.forEach(a=>co(d,a,s,!0)),co(d,t,s)),j1(t)&&i.set(t,d),d}function co(e,t,n,o=!1){const{mixins:r,extends:i}=t;i&&co(e,i,n,!0),r&&r.forEach(s=>co(e,s,n,!0));for(const s in t)if(!(o&&s==="expose")){const l=da[s]||n&&n[s];e[s]=l?l(e[s],t[s]):t[s]}return e}const da={data:Ni,props:Ui,emits:Ui,methods:Wt,computed:Wt,beforeCreate:i2,created:i2,beforeMount:i2,mounted:i2,beforeUpdate:i2,updated:i2,beforeDestroy:i2,beforeUnmount:i2,destroyed:i2,unmounted:i2,activated:i2,deactivated:i2,errorCaptured:i2,serverPrefetch:i2,components:Wt,directives:Wt,watch:ka,provide:Ni,inject:aa};function Ni(e,t){return t?e?function(){return T1(a1(e)?e.call(this,this):e,a1(t)?t.call(this,this):t)}:t:e}function aa(e,t){return Wt(J9(e),J9(t))}function J9(e){if(X(e)){const t={};for(let n=0;n{let k,u=M1,h;return U3(()=>{const p=e[r];J1(k,p)&&(k=p,a())}),{get(){return d(),n.get?n.get(k):k},set(p){const C=n.set?n.set(p):p;if(!J1(C,k)&&!(u!==M1&&J1(p,u)))return;const f=o.vnode.props,m=!!(f&&(t in f||r in f||i in f)&&(`onUpdate:${t}`in f||`onUpdate:${r}`in f||`onUpdate:${i}`in f));m||(k=p,a()),o.emit(`update:${t}`,C),J1(p,u)&&(J1(p,C)&&!J1(C,h)||m&&u!==M1&&!J1(C,k))&&a(),u=p,h=C}}});return l[Symbol.iterator]=()=>{let d=0;return{next(){return d<2?{value:d++?s||M1:l,done:!1}:{done:!0}}}},l}const i4=(e,t)=>t==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${r2(t)}Modifiers`]||e[`${fe(t)}Modifiers`];function ca(e,t,...n){if(e.isUnmounted)return;const o=e.vnode.props||M1;let r=n;const i=t.startsWith("update:"),s=i&&i4(o,t.slice(7));s&&(s.trim&&(r=n.map(k=>S1(k)?k.trim():k)),s.number&&(r=r.map(Po)));let l,d=o[l=i9(t)]||o[l=i9(r2(t))];!d&&i&&(d=o[l=i9(fe(t))]),d&&b2(d,e,6,r);const a=o[l+"Once"];if(a){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,b2(a,e,6,r)}}const wa=new WeakMap;function s4(e,t,n=!1){const o=n?wa:t.emitsCache,r=o.get(e);if(r!==void 0)return r;const i=e.emits;let s={},l=!1;if(!a1(e)){const d=a=>{const k=s4(a,t,!0);k&&(l=!0,T1(s,k))};!n&&t.mixins.length&&t.mixins.forEach(d),e.extends&&d(e.extends),e.mixins&&e.mixins.forEach(d)}return!i&&!l?(j1(e)&&o.set(e,null),null):(X(i)?i.forEach(d=>s[d]=null):T1(s,i),j1(e)&&o.set(e,s),s)}function Wo(e,t){return!e||!Bo(t)?!1:(t=t.slice(2),t=t==="Once"?t:t.replace(/Once$/,""),L1(e,t[0].toLowerCase()+t.slice(1))||L1(e,fe(t))||L1(e,t))}function qi(e){const{type:t,vnode:n,proxy:o,withProxy:r,propsOptions:[i],slots:s,attrs:l,emit:d,render:a,renderCache:k,props:u,data:h,setupState:p,ctx:C,inheritAttrs:f}=e,m=ko(e);let x,w;try{if(n.shapeFlag&4){const v=r||o,j=v;x=E2(a.call(j,v,k,u,p,h,C)),w=l}else{const v=t;x=E2(v.length>1?v(u,{attrs:l,slots:s,emit:d}):v(u,null)),w=t.props?l:ga(l)}}catch(v){he.length=0,Ln(v,e,1),x=H(F1)}let D=x;if(w&&f!==!1){const v=Object.keys(w),{shapeFlag:j}=D;v.length&&j&7&&(i&&v.some(So)&&(w=va(w,i)),D=R2(D,w,!1,!0))}if(n.dirs&&(D=R2(D,null,!1,!0),D.dirs=D.dirs?D.dirs.concat(n.dirs):n.dirs),n.transition){const v=No(D.type)&&uo(D)||D;Oe(v,n.transition)}return x=D,ko(m),x}function Ca(e,t=!0){let n;for(let o=0;o{let t;for(const n in e)(n==="class"||n==="style"||Bo(n))&&((t||(t={}))[n]=e[n]);return t},va=(e,t)=>{const n={};for(const o in e)(!So(o)||!(o.slice(9)in t))&&(n[o]=e[o]);return n};function fa(e,t,n){const{props:o,children:r,component:i}=e,{props:s,children:l,patchFlag:d}=t,a=i.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&d>=0){if(d&1024)return!0;if(d&16)return o?zi(o,s,a):!!s;if(d&8){const k=t.dynamicProps;for(let u=0;uObject.create(d4),k4=e=>Object.getPrototypeOf(e)===d4;function ma(e,t,n,o=!1){const r={},i=a4();e.propsDefaults=Object.create(null),u4(e,t,r,i);for(const s in e.propsOptions[0])s in r||(r[s]=void 0);n?e.props=o?r:O5(r):e.type.props?e.props=r:e.props=i,e.attrs=i}function Ma(e,t,n,o){const{props:r,attrs:i,vnode:{patchFlag:s}}=e,l=g1(r),[d]=e.propsOptions;let a=!1;if((o||s>0)&&!(s&16)){if(s&8){const k=e.vnode.dynamicProps;for(let u=0;u{d=!0;const[h,p]=h4(u,t,!0);T1(s,h),p&&l.push(...p)};!n&&t.mixins.length&&t.mixins.forEach(k),e.extends&&k(e.extends),e.mixins&&e.mixins.forEach(k)}if(!i&&!d)return j1(e)&&o.set(e,ht),ht;if(X(i))for(let k=0;ke==="_"||e==="_ctx"||e==="$stable",Qr=e=>X(e)?e.map(E2):[E2(e)],xa=(e,t,n)=>{if(t._n)return t;const o=z1((...r)=>Qr(t(...r)),n);return o._c=!1,o},p4=(e,t,n)=>{const o=e._ctx;for(const r in e){if(Jr(r))continue;const i=e[r];if(a1(i))t[r]=xa(r,i,o);else if(i!=null){const s=Qr(i);t[r]=()=>s}}},c4=(e,t)=>{const n=Qr(t);e.slots.default=()=>n},w4=(e,t,n)=>{for(const o in t)(n||!Jr(o))&&(e[o]=t[o])},Da=(e,t,n)=>{const o=e.slots=a4();if(e.vnode.shapeFlag&32){const r=t._;r?(w4(o,t,n),n&&p5(o,"_",r,!0)):p4(t,o)}else t&&c4(e,t)},La=(e,t,n)=>{const{vnode:o,slots:r}=e;let i=!0,s=M1;if(o.shapeFlag&32){const l=t._;l?n&&l===1?i=!1:w4(r,t,n):(i=!t.$stable,p4(t,r)),s=t}else t&&(c4(e,t),s={default:1});if(i)for(const l in r)!Jr(l)&&s[l]==null&&delete r[l]},$1=Aa;function Ha(e){return Va(e)}function Va(e,t){const n=To();n.__VUE__=!0;const{insert:o,remove:r,patchProp:i,createElement:s,createText:l,createComment:d,setText:a,setElementText:k,parentNode:u,nextSibling:h,setScopeId:p=J2,insertStaticContent:C}=e,f=(c,g,M,_=null,E=null,S=null,z=void 0,B=null,y=!!g.dynamicChildren)=>{if(c===g)return;c&&!O2(c,g)&&(_=Z(c),_1(c,E,S,!0),c=null),g.patchFlag===-2&&(y=!1,g.dynamicChildren=null);const{type:I,ref:q,shapeFlag:W}=g;switch(I){case yn:m(c,g,M,_);break;case F1:x(c,g,M,_);break;case c9:c==null&&w(g,M,_,z);break;case v1:T(c,g,M,_,E,S,z,B,y);break;default:W&1?j(c,g,M,_,E,S,z,B,y):W&6?o1(c,g,M,_,E,S,z,B,y):(W&64||W&128)&&I.process(c,g,M,_,E,S,z,B,y,J)}q!=null&&E?Xt(q,c&&c.ref,S,g||c,!g):q==null&&c&&c.ref!=null&&Xt(c.ref,null,S,c,!0)},m=(c,g,M,_)=>{if(c==null)o(g.el=l(g.children),M,_);else{const E=g.el=c.el;g.children!==c.children&&a(E,g.children)}},x=(c,g,M,_)=>{c==null?o(g.el=d(g.children||""),M,_):g.el=c.el},w=(c,g,M,_)=>{[c.el,c.anchor]=C(c.children,g,M,_,c.el,c.anchor)},D=({el:c,anchor:g},M,_)=>{let E;for(;c&&c!==g;)E=h(c),o(c,M,_),c=E;o(g,M,_)},v=({el:c,anchor:g})=>{let M;for(;c&&c!==g;)M=h(c),r(c),c=M;r(g)},j=(c,g,M,_,E,S,z,B,y)=>{if(g.type==="svg"?z="svg":g.type==="math"&&(z="mathml"),c==null)L(g,M,_,E,S,z,B,y);else{const I=c.el&&c.el._isVueCE?c.el:null;try{I&&I._beginPatch(),V(c,g,E,S,z,B,y)}finally{I&&I._endPatch()}}},L=(c,g,M,_,E,S,z,B)=>{let y,I;const{props:q,shapeFlag:W,transition:e1,dirs:i1}=c;if(y=c.el=s(c.type,S,q&&q.is,q),W&8?k(y,c.children):W&16&&O(c.children,y,null,_,E,p9(c,S),z,B),i1&&Re(c,null,_,"created"),b(y,c,c.scopeId,z,_),q){for(const Z1 in q)Z1!=="value"&&!Yt(Z1)&&i(y,Z1,null,q[Z1],S,_);"value"in q&&i(y,"value",null,q.value,S),(I=q.onVnodeBeforeMount)&&L2(I,_,c)}i1&&Re(c,null,_,"beforeMount");const C1=ya(E,e1);C1&&e1.beforeEnter(y),o(y,g,M),((I=q&&q.onVnodeMounted)||C1||i1)&&$1(()=>{try{I&&L2(I,_,c),C1&&e1.enter(y),i1&&Re(c,null,_,"mounted")}finally{}},E)},b=(c,g,M,_,E)=>{if(M&&p(c,M),_)for(let S=0;S<_.length;S++)p(c,_[S]);if(E){let S=E.subTree;if(g===S||Co(S.type)&&(S.ssContent===g||S.ssFallback===g)){const z=E.vnode;b(c,z,z.scopeId,z.slotScopeIds,E.parent)}}},O=(c,g,M,_,E,S,z,B,y=0)=>{for(let I=y;I{const B=g.el=c.el;let{patchFlag:y,dynamicChildren:I,dirs:q}=g;y|=c.patchFlag&16;const W=c.props||M1,e1=g.props||M1;let i1;if(M&&$e(M,!1),(i1=e1.onVnodeBeforeUpdate)&&L2(i1,M,g,c),q&&Re(g,c,M,"beforeUpdate"),M&&$e(M,!0),I&&(!c.dynamicChildren||c.dynamicChildren.length!==I.length)&&(y=0,z=!1,I=null),(W.innerHTML&&e1.innerHTML==null||W.textContent&&e1.textContent==null)&&k(B,""),I?P(c.dynamicChildren,I,B,M,_,p9(g,E),S):z||r1(c,g,B,null,M,_,p9(g,E),S,!1),y>0){if(y&16)G(B,W,e1,M,E);else if(y&2&&W.class!==e1.class&&i(B,"class",null,e1.class,E),y&4&&i(B,"style",W.style,e1.style,E),y&8){const C1=g.dynamicProps;for(let Z1=0;Z1{i1&&L2(i1,M,g,c),q&&Re(g,c,M,"updated")},_)},P=(c,g,M,_,E,S,z)=>{for(let B=0;B{if(g!==M){if(g!==M1)for(const S in g)!Yt(S)&&!(S in M)&&i(c,S,g[S],null,E,_);for(const S in M){if(Yt(S))continue;const z=M[S],B=g[S];z!==B&&S!=="value"&&i(c,S,B,z,E,_)}"value"in M&&i(c,"value",g.value,M.value,E)}},T=(c,g,M,_,E,S,z,B,y)=>{const I=g.el=c?c.el:l(""),q=g.anchor=c?c.anchor:l("");let{patchFlag:W,dynamicChildren:e1,slotScopeIds:i1}=g;i1&&(B=B?B.concat(i1):i1),c==null?(o(I,M,_),o(q,M,_),O(g.children||[],M,q,E,S,z,B,y)):W>0&&W&64&&e1&&c.dynamicChildren&&c.dynamicChildren.length===e1.length?(P(c.dynamicChildren,e1,M,E,S,z,B),(g.key!=null||E&&g===E.subTree)&&Xr(c,g,!0)):r1(c,g,M,q,E,S,z,B,y)},o1=(c,g,M,_,E,S,z,B,y)=>{g.slotScopeIds=B,c==null?g.shapeFlag&512?E.ctx.activate(g,M,_,z,y):k1(g,M,_,E,S,z,y):w1(c,g,y)},k1=(c,g,M,_,E,S,z)=>{const B=c.component=Fa(c,_,E);if(Uo(c)&&(B.ctx.renderer=J),Na(B,!1,z),B.asyncDep){if(E&&E.registerDep(B,u1,z),!c.el){const y=B.subTree=H(F1);x(null,y,g,M),c.placeholder=y.el}}else u1(B,c,g,M,E,S,z)},w1=(c,g,M)=>{const _=g.component=c.component;if(fa(c,g,M))if(_.asyncDep&&!_.asyncResolved){Y(_,g,M);return}else _.next=g,_.update();else g.el=c.el,_.vnode=g},u1=(c,g,M,_,E,S,z)=>{const B=()=>{if(c.isMounted){let{next:W,bu:e1,u:i1,parent:C1,vnode:Z1}=c;{const U2=C4(c);if(U2){W&&(W.el=Z1.el,Y(c,W,z)),U2.asyncDep.then(()=>{$1(()=>{c.isUnmounted||I()},E)});return}}let b1=W,R1;$e(c,!1),W?(W.el=Z1.el,Y(c,W,z)):W=Z1,e1&&pt(e1),(R1=W.props&&W.props.onVnodeBeforeUpdate)&&L2(R1,C1,W,Z1),$e(c,!0);const K1=qi(c),N2=c.subTree;c.subTree=K1,f(N2,K1,u(N2.el),Z(N2),c,E,S),W.el=K1.el,b1===null&&Yr(c,K1.el),i1&&$1(i1,E),(R1=W.props&&W.props.onVnodeUpdated)&&$1(()=>L2(R1,C1,W,Z1),E)}else{let W;const{el:e1,props:i1}=g,{bm:C1,m:Z1,parent:b1,root:R1,type:K1}=c,N2=Ee(g);$e(c,!1),C1&&pt(C1),!N2&&(W=i1&&i1.onVnodeBeforeMount)&&L2(W,b1,g),$e(c,!0);{R1.ce&&R1.ce._hasShadowRoot()&&R1.ce._injectChildStyle(K1,c.parent?c.parent.type:void 0);const U2=c.subTree=qi(c);f(null,U2,M,_,c,E,S),g.el=U2.el}if(Z1&&$1(Z1,E),!N2&&(W=i1&&i1.onVnodeMounted)){const U2=g;$1(()=>L2(W,b1,U2),E)}(g.shapeFlag&256||b1&&Ee(b1.vnode)&&b1.vnode.shapeFlag&256)&&c.a&&$1(c.a,E),c.isMounted=!0,g=M=_=null}};c.scope.on();const y=c.effect=new M5(B);c.scope.off();const I=c.update=y.run.bind(y),q=c.job=y.runIfDirty.bind(y);q.i=c,q.id=c.uid,y.scheduler=()=>$r(q),$e(c,!0),I()},Y=(c,g,M)=>{g.component=c;const _=c.vnode.props;c.vnode=g,c.next=null,Ma(c,g.props,_,M),La(c,g.children,M),we(),Oi(c),Ce()},r1=(c,g,M,_,E,S,z,B,y=!1)=>{const I=c&&c.children,q=c?c.shapeFlag:0,W=g.children,{patchFlag:e1,shapeFlag:i1}=g;if(e1>0){if(e1&128){y1(I,W,M,_,E,S,z,B,y);return}else if(e1&256){m1(I,W,M,_,E,S,z,B,y);return}}i1&8?(q&16&&n1(I,E,S),W!==I&&k(M,W)):q&16?i1&16?y1(I,W,M,_,E,S,z,B,y):n1(I,E,S,!0):(q&8&&k(M,""),i1&16&&O(W,M,_,E,S,z,B,y))},m1=(c,g,M,_,E,S,z,B,y)=>{c=c||ht,g=g||ht;const I=c.length,q=g.length,W=Math.min(I,q);let e1;for(e1=0;e1q?n1(c,E,S,!0,!1,W):O(g,M,_,E,S,z,B,y,W)},y1=(c,g,M,_,E,S,z,B,y)=>{let I=0;const q=g.length;let W=c.length-1,e1=q-1;for(;I<=W&&I<=e1;){const i1=c[I],C1=g[I]=y?re(g[I]):E2(g[I]);if(O2(i1,C1))f(i1,C1,M,null,E,S,z,B,y);else break;I++}for(;I<=W&&I<=e1;){const i1=c[W],C1=g[e1]=y?re(g[e1]):E2(g[e1]);if(O2(i1,C1))f(i1,C1,M,null,E,S,z,B,y);else break;W--,e1--}if(I>W){if(I<=e1){const i1=e1+1,C1=i1e1)for(;I<=W;)_1(c[I],E,S,!0),I++;else{const i1=I,C1=I,Z1=new Map;for(I=C1;I<=e1;I++){const p2=g[I]=y?re(g[I]):E2(g[I]);p2.key!=null&&Z1.set(p2.key,I)}let b1,R1=0;const K1=e1-C1+1;let N2=!1,U2=0;const _t=new Array(K1);for(I=0;I=K1){_1(p2,E,S,!0);continue}let q2;if(p2.key!=null)q2=Z1.get(p2.key);else for(b1=C1;b1<=e1;b1++)if(_t[b1-C1]===0&&O2(p2,g[b1])){q2=b1;break}q2===void 0?_1(p2,E,S,!0):(_t[q2-C1]=I+1,q2>=U2?U2=q2:N2=!0,f(p2,g[q2],M,null,E,S,z,B,y),R1++)}const Vi=N2?ba(_t):ht;for(b1=Vi.length-1,I=K1-1;I>=0;I--){const p2=C1+I,q2=g[p2],yi=g[p2+1],bi=p2+1{const{el:S,type:z,transition:B,children:y,shapeFlag:I}=c;if(I&6){H1(c.component.subTree,g,M,_);return}if(I&128){c.suspense.move(g,M,_);return}if(I&64){z.move(c,g,M,J);return}if(z===v1){o(S,g,M);for(let W=0;WB.enter(S),E));else{const{leave:W,delayLeave:e1,afterLeave:i1}=B,C1=()=>{c.ctx.isUnmounted?r(S):o(S,g,M)},Z1=()=>{const b1=S._isLeaving||!!S[H2];S._isLeaving&&S[H2](!0),B.persisted&&!b1?C1():W(S,()=>{C1(),i1&&i1()})};e1?e1(S,C1,Z1):Z1()}else o(S,g,M)},_1=(c,g,M,_=!1,E=!1)=>{const{type:S,props:z,ref:B,children:y,dynamicChildren:I,shapeFlag:q,patchFlag:W,dirs:e1,cacheIndex:i1,memo:C1}=c;if(W===-2&&(E=!1),B!=null&&(we(),Xt(B,null,M,c,!0),Ce()),i1!=null&&(g.renderCache[i1]=void 0),q&256){g.ctx.deactivate(c);return}const Z1=q&1&&e1,b1=!Ee(c);let R1;if(b1&&(R1=z&&z.onVnodeBeforeUnmount)&&L2(R1,g,c),q&6)d1(c.component,M,_);else{if(q&128){c.suspense.unmount(M,_);return}Z1&&Re(c,null,g,"beforeUnmount"),q&64?c.type.remove(c,g,M,J,_):I&&!I.hasOnce&&(S!==v1||W>0&&W&64)?n1(I,g,M,!1,!0):(S===v1&&W&384||!E&&q&16)&&n1(y,g,M),_&&$(c)}const K1=C1!=null&&i1==null;(b1&&(R1=z&&z.onVnodeUnmounted)||Z1||K1)&&$1(()=>{R1&&L2(R1,g,c),Z1&&Re(c,null,g,"unmounted"),K1&&(c.el=null)},M)},$=c=>{const{type:g,el:M,anchor:_,transition:E}=c;if(g===v1){l1(M,_);return}if(g===c9){v(c);return}const S=()=>{r(M),E&&!E.persisted&&E.afterLeave&&E.afterLeave()};if(c.shapeFlag&1&&E&&!E.persisted){const{leave:z,delayLeave:B}=E,y=()=>z(M,S);B?B(c.el,S,y):y()}else S()},l1=(c,g)=>{let M;for(;c!==g;)M=h(c),r(c),c=M;r(g)},d1=(c,g,M)=>{const{bum:_,scope:E,job:S,subTree:z,um:B,m:y,a:I}=c;wo(y),wo(I),_&&pt(_),E.stop(),S&&(S.flags|=8,_1(z,c,g,M)),B&&$1(B,g),$1(()=>{c.isUnmounted=!0},g)},n1=(c,g,M,_=!1,E=!1,S=0)=>{for(let z=S;z{if(c.shapeFlag&6)return Z(c.component.subTree);if(c.shapeFlag&128)return c.suspense.next();const g=h(c.anchor||c.el),M=g&&g[q5];return M?h(M):g};let F=!1;const R=(c,g,M)=>{let _;c==null?g._vnode&&(_1(g._vnode,null,null,!0),_=g._vnode.component):f(g._vnode||null,c,g,null,null,null,M),g._vnode=c,F||(F=!0,Oi(_),$5(),F=!1)},J={p:f,um:_1,m:H1,r:$,mt:k1,mc:O,pc:r1,pbc:P,n:Z,o:e};return{render:R,hydrate:void 0,createApp:ha(R)}}function p9({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function $e({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function ya(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Xr(e,t,n=!1){const o=e.children,r=t.children;if(X(o)&&X(r))for(let i=0;i>1,e[n[l]]0&&(t[o]=n[i-1]),n[i]=o)}}for(i=n.length,s=n[i-1];i-- >0;)n[i]=s,s=t[s];return n}function C4(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:C4(t)}function wo(e){if(e)for(let t=0;te.__isSuspense;let X9=0;const Za={name:"Suspense",__isSuspense:!0,process(e,t,n,o,r,i,s,l,d,a){if(e==null)Ba(t,n,o,r,i,s,l,d,a);else{if(i&&i.deps>0&&!e.suspense.isInFallback){t.suspense=e.suspense,t.suspense.vnode=t,t.el=e.el;return}Sa(e,t,n,o,r,s,l,d,a)}},hydrate:Ea,normalize:Oa},_a=Za;function cn(e,t){const n=e.props&&e.props[t];a1(n)&&n()}function Ba(e,t,n,o,r,i,s,l,d){const{p:a,o:{createElement:k}}=d,u=k("div"),h=e.suspense=v4(e,r,o,t,u,n,i,s,l,d);a(null,h.pendingBranch=e.ssContent,u,null,o,h,i,s),h.deps>0?(cn(e,"onPending"),cn(e,"onFallback"),a(null,e.ssFallback,t,n,o,null,i,s),Ct(h,e.ssFallback)):h.resolve(!1,!0)}function Sa(e,t,n,o,r,i,s,l,{p:d,um:a,o:{createElement:k}}){const u=t.suspense=e.suspense;u.vnode=t,t.el=e.el;const h=t.ssContent,p=t.ssFallback,{activeBranch:C,pendingBranch:f,isInFallback:m,isHydrating:x}=u;if(f)u.pendingBranch=h,O2(f,h)?(d(f,h,u.hiddenContainer,null,r,u,i,s,l),u.deps<=0?u.resolve():m&&!x&&!u.isFallbackMountPending&&(d(C,p,n,o,r,null,i,s,l),Ct(u,p))):(u.pendingId=X9++,x?(u.isHydrating=!1,u.activeBranch=f):a(f,r,u),u.deps=0,u.effects.length=0,u.hiddenContainer=k("div"),m?(d(null,h,u.hiddenContainer,null,r,u,i,s,l),u.deps<=0?u.resolve():u.isFallbackMountPending||(d(C,p,n,o,r,null,i,s,l),Ct(u,p))):C&&O2(C,h)?(d(C,h,n,o,r,u,i,s,l),u.resolve(!0)):(d(null,h,u.hiddenContainer,null,r,u,i,s,l),u.deps<=0&&u.resolve()));else if(C&&O2(C,h))d(C,h,n,o,r,u,i,s,l),Ct(u,h);else if(cn(t,"onPending"),u.pendingBranch=h,h.shapeFlag&512?u.pendingId=h.component.suspenseId:u.pendingId=X9++,d(null,h,u.hiddenContainer,null,r,u,i,s,l),u.deps<=0)u.resolve();else{const{timeout:w,pendingId:D}=u;w>0?setTimeout(()=>{u.pendingId===D&&u.fallback(p)},w):w===0&&u.fallback(p)}}function v4(e,t,n,o,r,i,s,l,d,a,k=!1){const{p:u,m:h,um:p,n:C,o:{parentNode:f,remove:m}}=a;let x;const w=Pa(e);w&&t&&t.pendingBranch&&(x=t.pendingId,t.deps++);const D=e.props?c5(e.props.timeout):void 0,v=i,j={vnode:e,parent:t,parentComponent:n,namespace:s,container:o,hiddenContainer:r,deps:0,pendingId:X9++,timeout:typeof D=="number"?D:-1,activeBranch:null,isFallbackMountPending:!1,pendingBranch:null,isInFallback:!k,isHydrating:k,isUnmounted:!1,effects:[],resolve(L=!1,b=!1){const{vnode:O,activeBranch:V,pendingBranch:P,pendingId:G,effects:T,parentComponent:o1,container:k1,isInFallback:w1}=j;let u1=!1;if(j.isHydrating)j.isHydrating=!1;else if(!L){u1=V&&P.transition&&P.transition.mode==="out-in";let m1=!1;u1&&(V.transition.afterLeave=()=>{G===j.pendingId&&(h(P,k1,i===v&&!m1?C(V):i,0),q9(T),w1&&O.ssFallback&&(O.ssFallback.el=null))}),V&&!j.isFallbackMountPending&&(f(V.el)===k1&&(i=C(V),m1=!0),p(V,o1,j,!0),!u1&&w1&&O.ssFallback&&$1(()=>O.ssFallback.el=null,j)),u1||h(P,k1,i,0)}j.isFallbackMountPending=!1,Ct(j,P),j.pendingBranch=null,j.isInFallback=!1;let Y=j.parent,r1=!1;for(;Y;){if(Y.pendingBranch){for(let m1=0;m1{if(j.isFallbackMountPending=!1,!j.isInFallback)return;const w1=j.vnode.ssFallback;u(null,w1,P,T,V,null,G,l,d),Ct(j,w1)},k1=L.transition&&L.transition.mode==="out-in";k1&&(j.isFallbackMountPending=!0,O.transition.afterLeave=o1),j.isInFallback=!0,p(O,V,null,!0),k1||o1()},move(L,b,O){j.activeBranch&&h(j.activeBranch,L,b,O),j.container=L},next(){return j.activeBranch&&C(j.activeBranch)},registerDep(L,b,O){const V=!!j.pendingBranch;V&&j.deps++;const P=L.vnode.el;L.asyncDep.catch(G=>{Ln(G,L,0)}).then(G=>{if(L.isUnmounted||j.isUnmounted||j.pendingId!==L.suspenseId)return;er(),L.asyncResolved=!0;const{vnode:T}=L;tr(L,G),P&&(T.el=P);const o1=!P&&L.subTree.el;b(L,T,f(P||L.subTree.el),P?null:C(L.subTree),j,s,O),o1&&(T.placeholder=null,m(o1)),Yr(L,T.el),V&&--j.deps===0&&j.resolve()})},unmount(L,b){j.isUnmounted=!0,j.activeBranch&&p(j.activeBranch,n,L,b),j.pendingBranch&&p(j.pendingBranch,n,L,b)}};return j}function Ea(e,t,n,o,r,i,s,l,d){const a=t.suspense=v4(t,o,n,e.parentNode,document.createElement("div"),null,r,i,s,l,!0),k=d(e,a.pendingBranch=t.ssContent,n,a,i,s);return a.deps===0&&a.resolve(!1,!0),k}function Oa(e){const{shapeFlag:t,children:n}=e,o=t&32;e.ssContent=Gi(o?n.default:n),e.ssFallback=o?Gi(n.fallback):H(F1)}function Gi(e){let t;if(a1(e)){const n=mt&&e._c;n&&(e._d=!1,U()),e=e(),n&&(e._d=!0,t=h2,Go())}return X(e)&&(e=Ca(e)),e=E2(e),t&&!e.dynamicChildren&&(e.dynamicChildren=t.filter(n=>n!==e)),e}function Aa(e,t){t&&t.pendingBranch?X(e)?t.effects.push(...e):t.effects.push(e):q9(e)}function Ct(e,t){e.activeBranch=t;const{vnode:n,parentComponent:o}=e;let r=t.el;for(;!r&&t.component;)t=t.component.subTree,r=t.el;n.el=r,o&&o.subTree===n&&(o.vnode.el=r,Yr(o,r))}function Pa(e){const t=e.props&&e.props.suspensible;return t!=null&&t!==!1}const v1=Symbol.for("v-fgt"),yn=Symbol.for("v-txt"),F1=Symbol.for("v-cmt"),c9=Symbol.for("v-stc"),he=[];let h2=null;function U(e=!1){he.push(h2=e?null:[])}function Go(){he.pop(),h2=he[he.length-1]||null}let mt=1;function go(e,t=!1){mt+=e,e<0&&h2&&t&&(h2.hasOnce=!0)}function f4(e){return e.dynamicChildren=mt>0?h2||ht:null,Go(),mt>0&&h2&&h2.push(e),e}function Q(e,t,n,o,r,i){return f4(A(e,t,n,o,r,i,!0))}function A1(e,t,n,o,r){return f4(H(e,t,n,o,r,!0))}function k2(e){return e?e.__v_isVNode===!0:!1}function O2(e,t){return e.type===t.type&&e.key===t.key}const m4=({key:e})=>e??null,Kn=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?S1(e)||E1(e)||a1(e)?{i:Q1,r:e,k:t,f:!!n}:e:null);function A(e,t=null,n=null,o=0,r=null,i=e===v1?0:1,s=!1,l=!1){const d={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&m4(t),ref:t&&Kn(t),scopeId:N5,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:o,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:Q1};return l?(vo(d,n),i&128&&e.normalize(d)):n&&(d.shapeFlag|=S1(n)?8:16),mt>0&&!s&&h2&&(d.patchFlag>0||i&6)&&d.patchFlag!==32&&h2.push(d),d}const H=Ta;function Ta(e,t=null,n=null,o=0,r=null,i=!1){if((!e||e===e4)&&(e=F1),k2(e)){const l=R2(e,t,!0);return n&&vo(l,n),mt>0&&!i&&h2&&(l.shapeFlag&6?h2[h2.indexOf(e)]=l:h2.push(l)),l.patchFlag=-2,l}if(Wa(e)&&(e=e.__vccOpts),t){t=Ia(t);let{class:l,style:d}=t;l&&!S1(l)&&(t.class=G1(l)),j1(d)&&($o(d)&&!X(d)&&(d=T1({},d)),t.style=ce(d))}const s=S1(e)?1:Co(e)?128:No(e)?64:j1(e)?4:a1(e)?2:0;return A(e,t,n,o,r,s,i,!0)}function Ia(e){return e?$o(e)||k4(e)?T1({},e):e:null}function R2(e,t,n=!1,o=!1){const{props:r,ref:i,patchFlag:s,children:l,transition:d}=e,a=t?Mt(r||{},t):r,k={__v_isVNode:!0,__v_skip:!0,type:e.type,props:a,key:a&&m4(a),ref:t&&t.ref?n&&i?X(i)?i.concat(Kn(t)):[i,Kn(t)]:Kn(t):i,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==v1?s===-1?16:s|16:s,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:d,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&R2(e.ssContent),ssFallback:e.ssFallback&&R2(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return d&&o&&Oe(k,d.clone(k)),k}function e2(e=" ",t=0){return H(yn,null,e,t)}function x1(e="",t=!1){return t?(U(),A1(F1,null,e)):H(F1,null,e)}function E2(e){return e==null||typeof e=="boolean"?H(F1):X(e)?H(v1,null,e.slice()):k2(e)?re(e):H(yn,null,String(e))}function re(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:R2(e)}function vo(e,t){let n=0;const{shapeFlag:o}=e;if(t==null)t=null;else if(X(t))n=16;else if(typeof t=="object")if(o&65){const r=t.default;r&&(r._c&&(r._d=!1),vo(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!k4(t)?t._ctx=Q1:r===3&&Q1&&(Q1.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else if(a1(t)){if(o&65){vo(e,{default:t});return}t={default:t,_ctx:Q1},n=32}else t=String(t),o&64?(n=16,t=[e2(t)]):n=8;e.children=t,e.shapeFlag|=n}function Mt(...e){const t={};for(let n=0;nn2||Q1;let fo,wn;{const e=To(),t=(n,o)=>{let r;return(r=e[n])||(r=e[n]=[]),r.push(o),i=>{r.length>1?r.forEach(s=>s(i)):r[0](i)}};fo=t("__VUE_INSTANCE_SETTERS__",n=>n2=n),wn=t("__VUE_SSR_SETTERS__",n=>Cn=n)}const bn=e=>{const t=n2;return fo(e),e.scope.on(),()=>{e.scope.off(),fo(t)}},er=()=>{n2&&n2.scope.off(),fo(null)};function M4(e){return e.vnode.shapeFlag&4}let Cn=!1;function Na(e,t=!1,n=!1){t&&wn(t);const{props:o,children:r}=e.vnode,i=M4(e);ma(e,o,i,t),Da(e,r,n||t);const s=i?Ua(e,t):void 0;return t&&wn(!1),s}function Ua(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,ia);const{setup:o}=n;if(o){we();const r=e.setupContext=o.length>1?za(e):null,i=bn(e),s=Dn(o,e,0,[e.props,r]),l=k5(s);if(Ce(),i(),(l||e.sp)&&!Ee(e)&&J5(e),l){if(s.then(er,er),t)return s.then(d=>{wn(!0);try{tr(e,d,t)}finally{wn(!1)}}).catch(d=>{Ln(d,e,0)});e.asyncDep=s}else tr(e,s)}else j4(e)}function tr(e,t,n){a1(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:j1(t)&&(e.setupState=P5(t)),j4(e)}function j4(e,t,n){const o=e.type;e.render||(e.render=o.render||J2);{const r=bn(e);we();try{sa(e)}finally{Ce(),r()}}}const qa={get(e,t){return t2(e,"get",""),e[t]}};function za(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,qa),slots:e.slots,emit:e.emit,expose:t}}function Ko(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(P5(Ir(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in en)return en[n](e)},has(t,n){return n in t||n in en}})):e.proxy}function nr(e,t=!0){return a1(e)?e.displayName||e.name:e.name||t&&e.__name}function Wa(e){return a1(e)&&"__vccOpts"in e}const N=(e,t)=>A3(e,t,Cn);function gn(e,t,n){try{go(-1);const o=arguments.length;return o===2?j1(t)&&!X(t)?k2(t)?H(e,null,[t]):H(e,t):H(e,null,t):(o>3?n=Array.prototype.slice.call(arguments,2):o===3&&k2(n)&&(n=[n]),H(e,t,n))}finally{go(1)}}const Ga="3.5.42";/** * @vue/runtime-dom v3.5.42 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT -**/let or;const Ki=typeof window<"u"&&window.trustedTypes;if(Ki)try{or=Ki.createPolicy("vue",{createHTML:e=>e})}catch{}const x4=or?e=>or.createHTML(e):e=>e,Ka="http://www.w3.org/2000/svg",Ya="http://www.w3.org/1998/Math/MathML",oe=typeof document<"u"?document:null,Yi=oe&&oe.createElement("template"),Qa={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,o)=>{const r=t==="svg"?oe.createElementNS(Ka,e):t==="mathml"?oe.createElementNS(Ya,e):n?oe.createElement(e,{is:n}):oe.createElement(e);return e==="select"&&o&&o.multiple!=null&&r.setAttribute("multiple",o.multiple),r},createText:e=>oe.createTextNode(e),createComment:e=>oe.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>oe.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,o,r,i){const s=n?n.previousSibling:t.lastChild;if(r&&(r===i||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===i||!(r=r.nextSibling)););else{Yi.innerHTML=x4(o==="svg"?`${e}`:o==="mathml"?`${e}`:e);const l=Yi.content;if(o==="svg"||o==="mathml"){const d=l.firstChild;for(;d.firstChild;)l.appendChild(d.firstChild);l.removeChild(d)}t.insertBefore(l,n)}return[s?s.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},Le="transition",Et="animation",jt=Symbol("_vtc"),D4={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},L4=T1({},W5,D4),Ja=e=>(e.displayName="Transition",e.props=L4,e),Yo=Ja((e,{slots:t})=>gn(Y3,H4(e),t)),Fe=(e,t=[])=>{X(e)?e.forEach(n=>n(...t)):e&&e(...t)},Qi=e=>e?X(e)?e.some(t=>t.length>1):e.length>1:!1;function H4(e){const t={};for(const T in e)T in D4||(t[T]=e[T]);if(e.css===!1)return t;const{name:n="v",type:o,duration:r,enterFromClass:i=`${n}-enter-from`,enterActiveClass:s=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:d=i,appearActiveClass:a=s,appearToClass:k=l,leaveFromClass:u=`${n}-leave-from`,leaveActiveClass:h=`${n}-leave-active`,leaveToClass:p=`${n}-leave-to`}=e,C=Xa(r),f=C&&C[0],m=C&&C[1],{onBeforeEnter:x,onEnter:w,onEnterCancelled:D,onLeave:v,onLeaveCancelled:j,onBeforeAppear:L=x,onAppear:b=w,onAppearCancelled:O=D}=t,V=(T,o1,k1,c1)=>{T._enterCancelled=c1,ye(T,o1?k:l),ye(T,o1?a:s),k1&&k1()},P=(T,o1)=>{T._isLeaving=!1,ye(T,u),ye(T,p),ye(T,h),o1&&o1()},G=T=>(o1,k1)=>{const c1=T?b:w,u1=()=>V(o1,T,k1);Fe(c1,[o1,u1]),Ji(()=>{ye(o1,T?d:i),z2(o1,T?k:l),Qi(c1)||Xi(o1,o,f,u1)})};return T1(t,{onBeforeEnter(T){Fe(x,[T]),z2(T,i),z2(T,s)},onBeforeAppear(T){Fe(L,[T]),z2(T,d),z2(T,a)},onEnter:G(!1),onAppear:G(!0),onLeave(T,o1){T._isLeaving=!0;const k1=()=>P(T,o1);z2(T,u),T._enterCancelled?(z2(T,h),rr(T)):(rr(T),z2(T,h)),Ji(()=>{T._isLeaving&&(ye(T,u),z2(T,p),Qi(v)||Xi(T,o,m,k1))}),Fe(v,[T,k1])},onEnterCancelled(T){V(T,!1,void 0,!0),Fe(D,[T])},onAppearCancelled(T){V(T,!0,void 0,!0),Fe(O,[T])},onLeaveCancelled(T){P(T),Fe(j,[T])}})}function Xa(e){if(e==null)return null;if(j1(e))return[w9(e.enter),w9(e.leave)];{const t=w9(e);return[t,t]}}function w9(e){return c5(e)}function z2(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[jt]||(e[jt]=new Set)).add(t)}function ye(e,t){t.split(/\s+/).forEach(o=>o&&e.classList.remove(o));const n=e[jt];n&&(n.delete(t),n.size||(e[jt]=void 0))}function Ji(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let e7=0;function Xi(e,t,n,o){const r=e._endId=++e7,i=()=>{r===e._endId&&o()};if(n!=null)return setTimeout(i,n);const{type:s,timeout:l,propCount:d}=V4(e,t);if(!s)return o();const a=s+"end";let k=0;const u=()=>{e.removeEventListener(a,h),i()},h=p=>{p.target===e&&++k>=d&&u()};setTimeout(()=>{k(n[C]||"").split(", "),r=o(`${Le}Delay`),i=o(`${Le}Duration`),s=e0(r,i),l=o(`${Et}Delay`),d=o(`${Et}Duration`),a=e0(l,d);let k=null,u=0,h=0;t===Le?s>0&&(k=Le,u=s,h=i.length):t===Et?a>0&&(k=Et,u=a,h=d.length):(u=Math.max(s,a),k=u>0?s>a?Le:Et:null,h=k?k===Le?i.length:d.length:0);const p=k===Le&&/\b(?:transform|all)(?:,|$)/.test(o(`${Le}Property`).toString());return{type:k,timeout:u,propCount:h,hasTransform:p}}function e0(e,t){for(;e.lengtht0(n)+t0(e[o])))}function t0(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function rr(e){return(e?e.ownerDocument:document).body.offsetHeight}function t7(e,t,n){const o=e[jt];o&&(t=(t?[t,...o]:[...o]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const mo=Symbol("_vod"),ei=Symbol("_vsh"),ti={name:"show",beforeMount(e,{value:t},{transition:n}){e[mo]=e.style.display==="none"?"":e.style.display,n&&t?n.beforeEnter(e):Ot(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:o}){!t!=!n&&(o?t?(o.beforeEnter(e),Ot(e,!0),o.enter(e)):o.leave(e,()=>{Ot(e,!1)}):Ot(e,t))},beforeUnmount(e,{value:t}){Ot(e,t)}};function Ot(e,t){e.style.display=t?e[mo]:"none",e[ei]=!t}const n7=Symbol(""),o7=/(?:^|;)\s*display\s*:/;function r7(e,t,n){const o=e.style,r=S1(n);let i=!1;if(n&&!r){if(t)if(S1(t))for(const s of t.split(";")){const l=s.slice(0,s.indexOf(":")).trim();n[l]==null&&Gt(o,l,"")}else for(const s in t)n[s]==null&&Gt(o,s,"");for(const s in n){s==="display"&&(i=!0);const l=n[s];l!=null?s7(e,s,!S1(t)&&t?t[s]:void 0,l)||Gt(o,s,l):Gt(o,s,"")}}else if(r){if(t!==n){const s=o[n7];s&&(n+=";"+s),o.cssText=n,i=o7.test(n)}}else t&&e.removeAttribute("style");mo in e&&(e[mo]=i?o.display:"",e[ei]&&(o.display="none"))}const Tn=/\s*!important$/;function Gt(e,t,n){if(X(n))n.forEach(o=>Gt(e,t,o));else if(n==null&&(n=""),t.startsWith("--"))Tn.test(n)?e.setProperty(t,n.replace(Tn,""),"important"):e.setProperty(t,n);else{const o=i7(e,t);Tn.test(n)?e.setProperty(fe(o),n.replace(Tn,""),"important"):e[o]=n}}const n0=["Webkit","Moz","ms"],C9={};function i7(e,t){const n=C9[t];if(n)return n;let o=r2(t);if(o!=="filter"&&o in e)return C9[t]=o;o=Ao(o);for(let r=0;rg9||(h7.then(()=>g9=0),g9=Date.now());function c7(e,t){const n=o=>{if(!o._vts)o._vts=Date.now();else if(o._vts<=n.attached)return;const r=n.value;if(X(r)){const i=o.stopImmediatePropagation;o.stopImmediatePropagation=()=>{i.call(o),o._stopped=!0};const s=r.slice(),l=[o];for(let d=0;de.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,w7=(e,t,n,o,r,i)=>{const s=r==="svg";t==="class"?t7(e,o,s):t==="style"?r7(e,n,o):Bo(t)?So(t)||d7(e,t,n,o,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):C7(e,t,o,s))?(i0(e,t,o),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&r0(e,t,o,s,i,t!=="value")):e._isVueCE&&(g7(e,t)||e._def.__asyncLoader&&(/[A-Z]/.test(t)||!S1(o)))?i0(e,r2(t),o,i,t):(t==="true-value"?e._trueValue=o:t==="false-value"&&(e._falseValue=o),r0(e,t,o,s))};function C7(e,t,n,o){if(o)return!!(t==="innerHTML"||t==="textContent"||t in e&&l0(t)&&a1(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="sandbox"&&e.tagName==="IFRAME"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const r=e.tagName;if(r==="IMG"||r==="VIDEO"||r==="CANVAS"||r==="SOURCE")return!1}return l0(t)&&S1(n)?!1:t in e}function g7(e,t){const n=e._def.props;if(!n)return!1;const o=r2(t);return Array.isArray(n)?n.some(r=>r2(r)===o):Object.keys(n).some(r=>r2(r)===o)}const y4=new WeakMap,b4=new WeakMap,Mo=Symbol("_moveCb"),d0=Symbol("_enterCb"),v7=e=>(delete e.props.mode,e),f7=v7({name:"TransitionGroup",props:T1({},L4,{tag:String,moveClass:String}),setup(e,{slots:t}){const n=Z2(),o=z5();let r,i;return Wr(()=>{if(!r.length)return;const s=e.moveClass||`${e.name||"v"}-move`;if(!x7(r[0].el,n.vnode.el,s)){r=[];return}r.forEach(m7),r.forEach(M7);const l=r.filter(j7);rr(n.vnode.el),l.forEach(d=>{const a=d.el,k=a.style;z2(a,s),k.transform=k.webkitTransform=k.transitionDuration="";const u=a[Mo]=h=>{h&&h.target!==a||(!h||h.propertyName.endsWith("transform"))&&(a.removeEventListener("transitionend",u),a[Mo]=null,ye(a,s))};a.addEventListener("transitionend",u)}),r=[]}),()=>{const s=g1(e),l=H4(s);let d=s.tag||v1;if(r=[],i)for(let a=0;a{l.split(/\s+/).forEach(d=>d&&o.classList.remove(d))}),n.split(/\s+/).forEach(l=>l&&o.classList.add(l)),o.style.display="none";const i=t.nodeType===1?t:t.parentNode;i.appendChild(o);const{hasTransform:s}=V4(o);return i.removeChild(o),s}const Ae=e=>{const t=e.props["onUpdate:modelValue"]||!1;return X(t)?n=>pt(t,n):t};function D7(e){e.target.composing=!0}function a0(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const v2=Symbol("_assign"),In=Symbol("_initialValue");function v9(e,t,n){return t&&(e=e.trim()),n&&(e=Po(e)),e}const k0={created(e,{modifiers:{lazy:t,trim:n,number:o}},r){e.parentNode&&(e.type==="text"?e[In]=e.defaultValue.replace(/[\r\n]/g,""):e.type==="textarea"&&(e[In]=e.defaultValue.replace(/\r\n?/g,` -`))),e[v2]=Ae(r);const i=o||r.props&&r.props.type==="number";de(e,t?"change":"input",s=>{s.target.composing||e[v2](v9(e.value,n,i))}),(n||i)&&de(e,"change",()=>{e.value=v9(e.value,n,i)}),t||(de(e,"compositionstart",D7),de(e,"compositionend",a0),de(e,"change",a0))},mounted(e,{value:t,modifiers:{trim:n,number:o}}){const r=t??"",i=e[In];delete e[In],i!==void 0&&(e.type==="text"||e.type==="textarea")&&e.value!==i?e[v2](v9(e.value,n,o)):e.value=r},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:o,trim:r,number:i}},s){if(e[v2]=Ae(s),e.composing)return;const l=(i||e.type==="number")&&!/^0\d/.test(e.value)?Po(e.value):e.value,d=t??"";if(l===d)return;const a=e.getRootNode();(a instanceof Document||a instanceof ShadowRoot)&&a.activeElement===e&&e.type!=="range"&&(o&&t===n||r&&e.value.trim()===d)||(e.value=d)}},L7={deep:!0,created(e,t,n){e[v2]=Ae(n),de(e,"change",()=>{const o=e._modelValue,r=xt(e),i=e.checked,s=e[v2];if(X(o)){const l=Br(o,r),d=l!==-1;if(i&&!d)s(o.concat(r));else if(!i&&d){const a=[...o];a.splice(l,1),s(a)}}else if(pe(o)){const l=new Set(o);i?l.add(r):l.delete(r),s(l)}else s(B4(e,i))})},mounted:u0,beforeUpdate(e,t,n){e[v2]=Ae(n),u0(e,t,n)}};function u0(e,{value:t,oldValue:n},o){e._modelValue=t;let r;if(X(t))r=Br(t,o.props.value)>-1;else if(pe(t))r=t.has(o.props.value);else{if(t===n)return;r=T2(t,B4(e,!0))}e.checked!==r&&(e.checked=r)}const H7={created(e,{value:t},n){e.checked=T2(t,n.props.value),e[v2]=Ae(n),de(e,"change",()=>{e[v2](xt(e))})},beforeUpdate(e,{value:t,oldValue:n},o){e[v2]=Ae(o),t!==n&&(e.checked=T2(t,o.props.value))}},V7={deep:!0,created(e,{value:t,modifiers:{number:n}},o){e._modelValue=t,de(e,"change",()=>{const r=Array.prototype.filter.call(e.options,d=>d.selected).map(d=>n?Po(xt(d)):xt(d)),i=e.multiple,s=i?pe(e._modelValue)?new Set(r):r:r[0],l=e._pendingValue=[i,i?X(s)?r.slice():r:s];try{e[v2](s)}finally{a2(()=>{e._pendingValue===l&&(e._pendingValue=void 0)})}}),e[v2]=Ae(o)},mounted(e,{value:t}){h0(e,t)},beforeUpdate(e,{value:t},n){e._modelValue=t,e[v2]=Ae(n)},updated(e,{value:t}){const n=e._pendingValue;e._pendingValue=void 0,(!n||n[0]!==e.multiple||!y7(t,n[1],n[0]))&&h0(e,t)}};function y7(e,t,n){if(!n||X(e))return T2(e,t);if(pe(e)){if(e.size!==t.length)return!1;for(const o of t)if(!e.has(o))return!1;return!0}return!1}function h0(e,t){const n=e.multiple,o=X(t);if(!(n&&!o&&!pe(t))){for(let r=0,i=e.options.length;rString(a)===String(l)):s.selected=Br(t,l)>-1}else s.selected=t.has(l);else if(T2(xt(s),t)){e.selectedIndex!==r&&(e.selectedIndex=r);return}}!n&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function xt(e){return"_value"in e?e._value:e.value}function B4(e,t){const n=t?"_trueValue":"_falseValue";return n in e?e[n]:t}const Sg={created(e,t,n){Rn(e,t,n,null,"created")},mounted(e,t,n){Rn(e,t,n,null,"mounted")},beforeUpdate(e,t,n,o){Rn(e,t,n,o,"beforeUpdate")},updated(e,t,n,o){Rn(e,t,n,o,"updated")}};function b7(e,t){switch(e){case"SELECT":return V7;case"TEXTAREA":return k0;default:switch(t){case"checkbox":return L7;case"radio":return H7;default:return k0}}}function Rn(e,t,n,o,r){const s=b7(e.tagName,n.props&&n.props.type)[r];s&&s(e,t,n,o)}const Z7=["ctrl","shift","alt","meta"],_7={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>Z7.some(n=>e[`${n}Key`]&&!t.includes(n))},p0=(e,t)=>{if(!e)return e;const n=e._withMods||(e._withMods={}),o=t.join(".");return n[o]||(n[o]=(r,...i)=>{for(let s=0;s{const n=e._withKeys||(e._withKeys={}),o=t.join(".");return n[o]||(n[o]=r=>{if(!("key"in r))return;const i=fe(r.key);if(t.some(s=>s===i||B7[s]===i))return e(r)})},E7=T1({patchProp:w7},Qa);let c0;function S4(){return c0||(c0=Ha(E7))}const w0=(...e)=>{S4().render(...e)},O7=(...e)=>{const t=S4().createApp(...e),{mount:n}=t;return t.mount=o=>{const r=P7(o);if(!r)return;const i=t._component;!a1(i)&&!i.render&&!i.template&&(i.template=r.innerHTML),r.nodeType===1&&(r.textContent="");const s=n(r,!1,A7(r));return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),s},t};function A7(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function P7(e){return S1(e)?document.querySelector(e):e}/*! +**/let or;const Ki=typeof window<"u"&&window.trustedTypes;if(Ki)try{or=Ki.createPolicy("vue",{createHTML:e=>e})}catch{}const x4=or?e=>or.createHTML(e):e=>e,Ka="http://www.w3.org/2000/svg",Ya="http://www.w3.org/1998/Math/MathML",oe=typeof document<"u"?document:null,Yi=oe&&oe.createElement("template"),Ja={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,o)=>{const r=t==="svg"?oe.createElementNS(Ka,e):t==="mathml"?oe.createElementNS(Ya,e):n?oe.createElement(e,{is:n}):oe.createElement(e);return e==="select"&&o&&o.multiple!=null&&r.setAttribute("multiple",o.multiple),r},createText:e=>oe.createTextNode(e),createComment:e=>oe.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>oe.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,o,r,i){const s=n?n.previousSibling:t.lastChild;if(r&&(r===i||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===i||!(r=r.nextSibling)););else{Yi.innerHTML=x4(o==="svg"?`${e}`:o==="mathml"?`${e}`:e);const l=Yi.content;if(o==="svg"||o==="mathml"){const d=l.firstChild;for(;d.firstChild;)l.appendChild(d.firstChild);l.removeChild(d)}t.insertBefore(l,n)}return[s?s.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},Le="transition",Et="animation",jt=Symbol("_vtc"),D4={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},L4=T1({},W5,D4),Qa=e=>(e.displayName="Transition",e.props=L4,e),Yo=Qa((e,{slots:t})=>gn(Y3,H4(e),t)),Fe=(e,t=[])=>{X(e)?e.forEach(n=>n(...t)):e&&e(...t)},Ji=e=>e?X(e)?e.some(t=>t.length>1):e.length>1:!1;function H4(e){const t={};for(const T in e)T in D4||(t[T]=e[T]);if(e.css===!1)return t;const{name:n="v",type:o,duration:r,enterFromClass:i=`${n}-enter-from`,enterActiveClass:s=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:d=i,appearActiveClass:a=s,appearToClass:k=l,leaveFromClass:u=`${n}-leave-from`,leaveActiveClass:h=`${n}-leave-active`,leaveToClass:p=`${n}-leave-to`}=e,C=Xa(r),f=C&&C[0],m=C&&C[1],{onBeforeEnter:x,onEnter:w,onEnterCancelled:D,onLeave:v,onLeaveCancelled:j,onBeforeAppear:L=x,onAppear:b=w,onAppearCancelled:O=D}=t,V=(T,o1,k1,w1)=>{T._enterCancelled=w1,ye(T,o1?k:l),ye(T,o1?a:s),k1&&k1()},P=(T,o1)=>{T._isLeaving=!1,ye(T,u),ye(T,p),ye(T,h),o1&&o1()},G=T=>(o1,k1)=>{const w1=T?b:w,u1=()=>V(o1,T,k1);Fe(w1,[o1,u1]),Qi(()=>{ye(o1,T?d:i),z2(o1,T?k:l),Ji(w1)||Xi(o1,o,f,u1)})};return T1(t,{onBeforeEnter(T){Fe(x,[T]),z2(T,i),z2(T,s)},onBeforeAppear(T){Fe(L,[T]),z2(T,d),z2(T,a)},onEnter:G(!1),onAppear:G(!0),onLeave(T,o1){T._isLeaving=!0;const k1=()=>P(T,o1);z2(T,u),T._enterCancelled?(z2(T,h),rr(T)):(rr(T),z2(T,h)),Qi(()=>{T._isLeaving&&(ye(T,u),z2(T,p),Ji(v)||Xi(T,o,m,k1))}),Fe(v,[T,k1])},onEnterCancelled(T){V(T,!1,void 0,!0),Fe(D,[T])},onAppearCancelled(T){V(T,!0,void 0,!0),Fe(O,[T])},onLeaveCancelled(T){P(T),Fe(j,[T])}})}function Xa(e){if(e==null)return null;if(j1(e))return[w9(e.enter),w9(e.leave)];{const t=w9(e);return[t,t]}}function w9(e){return c5(e)}function z2(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[jt]||(e[jt]=new Set)).add(t)}function ye(e,t){t.split(/\s+/).forEach(o=>o&&e.classList.remove(o));const n=e[jt];n&&(n.delete(t),n.size||(e[jt]=void 0))}function Qi(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let e7=0;function Xi(e,t,n,o){const r=e._endId=++e7,i=()=>{r===e._endId&&o()};if(n!=null)return setTimeout(i,n);const{type:s,timeout:l,propCount:d}=V4(e,t);if(!s)return o();const a=s+"end";let k=0;const u=()=>{e.removeEventListener(a,h),i()},h=p=>{p.target===e&&++k>=d&&u()};setTimeout(()=>{k(n[C]||"").split(", "),r=o(`${Le}Delay`),i=o(`${Le}Duration`),s=e0(r,i),l=o(`${Et}Delay`),d=o(`${Et}Duration`),a=e0(l,d);let k=null,u=0,h=0;t===Le?s>0&&(k=Le,u=s,h=i.length):t===Et?a>0&&(k=Et,u=a,h=d.length):(u=Math.max(s,a),k=u>0?s>a?Le:Et:null,h=k?k===Le?i.length:d.length:0);const p=k===Le&&/\b(?:transform|all)(?:,|$)/.test(o(`${Le}Property`).toString());return{type:k,timeout:u,propCount:h,hasTransform:p}}function e0(e,t){for(;e.lengtht0(n)+t0(e[o])))}function t0(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function rr(e){return(e?e.ownerDocument:document).body.offsetHeight}function t7(e,t,n){const o=e[jt];o&&(t=(t?[t,...o]:[...o]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const mo=Symbol("_vod"),ei=Symbol("_vsh"),ti={name:"show",beforeMount(e,{value:t},{transition:n}){e[mo]=e.style.display==="none"?"":e.style.display,n&&t?n.beforeEnter(e):Ot(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:o}){!t!=!n&&(o?t?(o.beforeEnter(e),Ot(e,!0),o.enter(e)):o.leave(e,()=>{Ot(e,!1)}):Ot(e,t))},beforeUnmount(e,{value:t}){Ot(e,t)}};function Ot(e,t){e.style.display=t?e[mo]:"none",e[ei]=!t}const n7=Symbol(""),o7=/(?:^|;)\s*display\s*:/;function r7(e,t,n){const o=e.style,r=S1(n);let i=!1;if(n&&!r){if(t)if(S1(t))for(const s of t.split(";")){const l=s.slice(0,s.indexOf(":")).trim();n[l]==null&&Gt(o,l,"")}else for(const s in t)n[s]==null&&Gt(o,s,"");for(const s in n){s==="display"&&(i=!0);const l=n[s];l!=null?s7(e,s,!S1(t)&&t?t[s]:void 0,l)||Gt(o,s,l):Gt(o,s,"")}}else if(r){if(t!==n){const s=o[n7];s&&(n+=";"+s),o.cssText=n,i=o7.test(n)}}else t&&e.removeAttribute("style");mo in e&&(e[mo]=i?o.display:"",e[ei]&&(o.display="none"))}const Tn=/\s*!important$/;function Gt(e,t,n){if(X(n))n.forEach(o=>Gt(e,t,o));else if(n==null&&(n=""),t.startsWith("--"))Tn.test(n)?e.setProperty(t,n.replace(Tn,""),"important"):e.setProperty(t,n);else{const o=i7(e,t);Tn.test(n)?e.setProperty(fe(o),n.replace(Tn,""),"important"):e[o]=n}}const n0=["Webkit","Moz","ms"],C9={};function i7(e,t){const n=C9[t];if(n)return n;let o=r2(t);if(o!=="filter"&&o in e)return C9[t]=o;o=Ao(o);for(let r=0;rg9||(h7.then(()=>g9=0),g9=Date.now());function c7(e,t){const n=o=>{if(!o._vts)o._vts=Date.now();else if(o._vts<=n.attached)return;const r=n.value;if(X(r)){const i=o.stopImmediatePropagation;o.stopImmediatePropagation=()=>{i.call(o),o._stopped=!0};const s=r.slice(),l=[o];for(let d=0;de.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,w7=(e,t,n,o,r,i)=>{const s=r==="svg";t==="class"?t7(e,o,s):t==="style"?r7(e,n,o):Bo(t)?So(t)||d7(e,t,n,o,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):C7(e,t,o,s))?(i0(e,t,o),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&r0(e,t,o,s,i,t!=="value")):e._isVueCE&&(g7(e,t)||e._def.__asyncLoader&&(/[A-Z]/.test(t)||!S1(o)))?i0(e,r2(t),o,i,t):(t==="true-value"?e._trueValue=o:t==="false-value"&&(e._falseValue=o),r0(e,t,o,s))};function C7(e,t,n,o){if(o)return!!(t==="innerHTML"||t==="textContent"||t in e&&l0(t)&&a1(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="sandbox"&&e.tagName==="IFRAME"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const r=e.tagName;if(r==="IMG"||r==="VIDEO"||r==="CANVAS"||r==="SOURCE")return!1}return l0(t)&&S1(n)?!1:t in e}function g7(e,t){const n=e._def.props;if(!n)return!1;const o=r2(t);return Array.isArray(n)?n.some(r=>r2(r)===o):Object.keys(n).some(r=>r2(r)===o)}const y4=new WeakMap,b4=new WeakMap,Mo=Symbol("_moveCb"),d0=Symbol("_enterCb"),v7=e=>(delete e.props.mode,e),f7=v7({name:"TransitionGroup",props:T1({},L4,{tag:String,moveClass:String}),setup(e,{slots:t}){const n=Z2(),o=z5();let r,i;return Wr(()=>{if(!r.length)return;const s=e.moveClass||`${e.name||"v"}-move`;if(!x7(r[0].el,n.vnode.el,s)){r=[];return}r.forEach(m7),r.forEach(M7);const l=r.filter(j7);rr(n.vnode.el),l.forEach(d=>{const a=d.el,k=a.style;z2(a,s),k.transform=k.webkitTransform=k.transitionDuration="";const u=a[Mo]=h=>{h&&h.target!==a||(!h||h.propertyName.endsWith("transform"))&&(a.removeEventListener("transitionend",u),a[Mo]=null,ye(a,s))};a.addEventListener("transitionend",u)}),r=[]}),()=>{const s=g1(e),l=H4(s);let d=s.tag||v1;if(r=[],i)for(let a=0;a{l.split(/\s+/).forEach(d=>d&&o.classList.remove(d))}),n.split(/\s+/).forEach(l=>l&&o.classList.add(l)),o.style.display="none";const i=t.nodeType===1?t:t.parentNode;i.appendChild(o);const{hasTransform:s}=V4(o);return i.removeChild(o),s}const Ae=e=>{const t=e.props["onUpdate:modelValue"]||!1;return X(t)?n=>pt(t,n):t};function D7(e){e.target.composing=!0}function a0(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const v2=Symbol("_assign"),In=Symbol("_initialValue");function v9(e,t,n){return t&&(e=e.trim()),n&&(e=Po(e)),e}const k0={created(e,{modifiers:{lazy:t,trim:n,number:o}},r){e.parentNode&&(e.type==="text"?e[In]=e.defaultValue.replace(/[\r\n]/g,""):e.type==="textarea"&&(e[In]=e.defaultValue.replace(/\r\n?/g,` +`))),e[v2]=Ae(r);const i=o||r.props&&r.props.type==="number";de(e,t?"change":"input",s=>{s.target.composing||e[v2](v9(e.value,n,i))}),(n||i)&&de(e,"change",()=>{e.value=v9(e.value,n,i)}),t||(de(e,"compositionstart",D7),de(e,"compositionend",a0),de(e,"change",a0))},mounted(e,{value:t,modifiers:{trim:n,number:o}}){const r=t??"",i=e[In];delete e[In],i!==void 0&&(e.type==="text"||e.type==="textarea")&&e.value!==i?e[v2](v9(e.value,n,o)):e.value=r},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:o,trim:r,number:i}},s){if(e[v2]=Ae(s),e.composing)return;const l=(i||e.type==="number")&&!/^0\d/.test(e.value)?Po(e.value):e.value,d=t??"";if(l===d)return;const a=e.getRootNode();(a instanceof Document||a instanceof ShadowRoot)&&a.activeElement===e&&e.type!=="range"&&(o&&t===n||r&&e.value.trim()===d)||(e.value=d)}},L7={deep:!0,created(e,t,n){e[v2]=Ae(n),de(e,"change",()=>{const o=e._modelValue,r=xt(e),i=e.checked,s=e[v2];if(X(o)){const l=Br(o,r),d=l!==-1;if(i&&!d)s(o.concat(r));else if(!i&&d){const a=[...o];a.splice(l,1),s(a)}}else if(pe(o)){const l=new Set(o);i?l.add(r):l.delete(r),s(l)}else s(B4(e,i))})},mounted:u0,beforeUpdate(e,t,n){e[v2]=Ae(n),u0(e,t,n)}};function u0(e,{value:t,oldValue:n},o){e._modelValue=t;let r;if(X(t))r=Br(t,o.props.value)>-1;else if(pe(t))r=t.has(o.props.value);else{if(t===n)return;r=T2(t,B4(e,!0))}e.checked!==r&&(e.checked=r)}const H7={created(e,{value:t},n){e.checked=T2(t,n.props.value),e[v2]=Ae(n),de(e,"change",()=>{e[v2](xt(e))})},beforeUpdate(e,{value:t,oldValue:n},o){e[v2]=Ae(o),t!==n&&(e.checked=T2(t,o.props.value))}},V7={deep:!0,created(e,{value:t,modifiers:{number:n}},o){e._modelValue=t,de(e,"change",()=>{const r=Array.prototype.filter.call(e.options,d=>d.selected).map(d=>n?Po(xt(d)):xt(d)),i=e.multiple,s=i?pe(e._modelValue)?new Set(r):r:r[0],l=e._pendingValue=[i,i?X(s)?r.slice():r:s];try{e[v2](s)}finally{a2(()=>{e._pendingValue===l&&(e._pendingValue=void 0)})}}),e[v2]=Ae(o)},mounted(e,{value:t}){h0(e,t)},beforeUpdate(e,{value:t},n){e._modelValue=t,e[v2]=Ae(n)},updated(e,{value:t}){const n=e._pendingValue;e._pendingValue=void 0,(!n||n[0]!==e.multiple||!y7(t,n[1],n[0]))&&h0(e,t)}};function y7(e,t,n){if(!n||X(e))return T2(e,t);if(pe(e)){if(e.size!==t.length)return!1;for(const o of t)if(!e.has(o))return!1;return!0}return!1}function h0(e,t){const n=e.multiple,o=X(t);if(!(n&&!o&&!pe(t))){for(let r=0,i=e.options.length;rString(a)===String(l)):s.selected=Br(t,l)>-1}else s.selected=t.has(l);else if(T2(xt(s),t)){e.selectedIndex!==r&&(e.selectedIndex=r);return}}!n&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function xt(e){return"_value"in e?e._value:e.value}function B4(e,t){const n=t?"_trueValue":"_falseValue";return n in e?e[n]:t}const Sg={created(e,t,n){Rn(e,t,n,null,"created")},mounted(e,t,n){Rn(e,t,n,null,"mounted")},beforeUpdate(e,t,n,o){Rn(e,t,n,o,"beforeUpdate")},updated(e,t,n,o){Rn(e,t,n,o,"updated")}};function b7(e,t){switch(e){case"SELECT":return V7;case"TEXTAREA":return k0;default:switch(t){case"checkbox":return L7;case"radio":return H7;default:return k0}}}function Rn(e,t,n,o,r){const s=b7(e.tagName,n.props&&n.props.type)[r];s&&s(e,t,n,o)}const Z7=["ctrl","shift","alt","meta"],_7={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>Z7.some(n=>e[`${n}Key`]&&!t.includes(n))},p0=(e,t)=>{if(!e)return e;const n=e._withMods||(e._withMods={}),o=t.join(".");return n[o]||(n[o]=(r,...i)=>{for(let s=0;s{const n=e._withKeys||(e._withKeys={}),o=t.join(".");return n[o]||(n[o]=r=>{if(!("key"in r))return;const i=fe(r.key);if(t.some(s=>s===i||B7[s]===i))return e(r)})},E7=T1({patchProp:w7},Ja);let c0;function S4(){return c0||(c0=Ha(E7))}const w0=(...e)=>{S4().render(...e)},O7=(...e)=>{const t=S4().createApp(...e),{mount:n}=t;return t.mount=o=>{const r=P7(o);if(!r)return;const i=t._component;!a1(i)&&!i.render&&!i.template&&(i.template=r.innerHTML),r.nodeType===1&&(r.textContent="");const s=n(r,!1,A7(r));return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),s},t};function A7(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function P7(e){return S1(e)?document.querySelector(e):e}/*! * pinia v2.3.1 * (c) 2025 Eduardo San Martin Morote * @license MIT - */let E4;const Qo=e=>E4=e,O4=Symbol();function ir(e){return e&&typeof e=="object"&&Object.prototype.toString.call(e)==="[object Object]"&&typeof e.toJSON!="function"}var tn;(function(e){e.direct="direct",e.patchObject="patch object",e.patchFunction="patch function"})(tn||(tn={}));function T7(){const e=f5(!0),t=e.run(()=>K({}));let n=[],o=[];const r=Ir({install(i){Qo(r),r._a=i,i.provide(O4,r),i.config.globalProperties.$pinia=r,o.forEach(s=>n.push(s)),o=[]},use(i){return this._a?n.push(i):o.push(i),this},_p:n,_a:null,_e:e,_s:new Map,state:t});return r}const A4=()=>{};function C0(e,t,n,o=A4){e.push(t);const r=()=>{const i=e.indexOf(t);i>-1&&(e.splice(i,1),o())};return!n&&Sr()&&m5(r),r}function it(e,...t){e.slice().forEach(n=>{n(...t)})}const I7=e=>e(),g0=Symbol(),f9=Symbol();function sr(e,t){e instanceof Map&&t instanceof Map?t.forEach((n,o)=>e.set(o,n)):e instanceof Set&&t instanceof Set&&t.forEach(e.add,e);for(const n in t){if(!t.hasOwnProperty(n))continue;const o=t[n],r=e[n];ir(r)&&ir(o)&&e.hasOwnProperty(n)&&!E1(o)&&!ae(o)?e[n]=sr(r,o):e[n]=o}return e}const R7=Symbol();function $7(e){return!ir(e)||!e.hasOwnProperty(R7)}const{assign:be}=Object;function F7(e){return!!(E1(e)&&e.effect)}function N7(e,t,n,o){const{state:r,actions:i,getters:s}=t,l=n.state.value[e];let d;function a(){l||(n.state.value[e]=r?r():{});const k=B3(n.state.value[e]);return be(k,i,Object.keys(s||{}).reduce((u,h)=>(u[h]=Ir(N(()=>{Qo(n);const p=n._s.get(e);return s[h].call(p,p)})),u),{}))}return d=P4(e,a,t,n,o,!0),d}function P4(e,t,n={},o,r,i){let s;const l=be({actions:{}},n),d={deep:!0};let a,k,u=[],h=[],p;const C=o.state.value[e];!i&&!C&&(o.state.value[e]={});let f;function m(O){let V;a=k=!1,typeof O=="function"?(O(o.state.value[e]),V={type:tn.patchFunction,storeId:e,events:p}):(sr(o.state.value[e],O),V={type:tn.patchObject,payload:O,storeId:e,events:p});const P=f=Symbol();a2().then(()=>{f===P&&(a=!0)}),k=!0,it(u,V,o.state.value[e])}const x=i?function(){const{state:V}=n,P=V?V():{};this.$patch(G=>{be(G,P)})}:A4;function w(){s.stop(),u=[],h=[],o._s.delete(e)}const D=(O,V="")=>{if(g0 in O)return O[f9]=V,O;const P=function(){Qo(o);const G=Array.from(arguments),T=[],o1=[];function k1(Y){T.push(Y)}function c1(Y){o1.push(Y)}it(h,{args:G,name:P[f9],store:j,after:k1,onError:c1});let u1;try{u1=O.apply(this&&this.$id===e?this:j,G)}catch(Y){throw it(o1,Y),Y}return u1 instanceof Promise?u1.then(Y=>(it(T,Y),Y)).catch(Y=>(it(o1,Y),Promise.reject(Y))):(it(T,u1),u1)};return P[g0]=!0,P[f9]=V,P},v={_p:o,$id:e,$onAction:C0.bind(null,h),$patch:m,$reset:x,$subscribe(O,V={}){const P=C0(u,O,V.detached,()=>G()),G=s.run(()=>V1(()=>o.state.value[e],T=>{(V.flush==="sync"?k:a)&&O({storeId:e,type:tn.direct,events:p},T)},be({},d,V)));return P},$dispose:w},j=I1(v);o._s.set(e,j);const b=(o._a&&o._a.runWithContext||I7)(()=>o._e.run(()=>(s=f5()).run(()=>t({action:D}))));for(const O in b){const V=b[O];if(E1(V)&&!F7(V)||ae(V))i||(C&&$7(V)&&(E1(V)?V.value=C[O]:sr(V,C[O])),o.state.value[e][O]=V);else if(typeof V=="function"){const P=D(V,O);b[O]=P,l.actions[O]=V}}return be(j,b),be(g1(j),b),Object.defineProperty(j,"$state",{get:()=>o.state.value[e],set:O=>{m(V=>{be(V,O)})}}),o._p.forEach(O=>{be(j,s.run(()=>O({store:j,app:o._a,pinia:o,options:l})))}),C&&i&&n.hydrate&&n.hydrate(j.$state,C),a=!0,k=!0,j}/*! #__NO_SIDE_EFFECTS__ */function Me(e,t,n){let o,r;const i=typeof t=="function";typeof e=="string"?(o=e,r=i?n:t):(r=e,o=e.id);function s(l,d){const a=$3();return l=l||(a?N1(O4,null):null),l&&Qo(l),l=E4,l._s.has(o)||(i?P4(o,t,r,l):N7(o,r,l)),l._s.get(o)}return s.$id=o,s}/*! + */let E4;const Jo=e=>E4=e,O4=Symbol();function ir(e){return e&&typeof e=="object"&&Object.prototype.toString.call(e)==="[object Object]"&&typeof e.toJSON!="function"}var tn;(function(e){e.direct="direct",e.patchObject="patch object",e.patchFunction="patch function"})(tn||(tn={}));function T7(){const e=f5(!0),t=e.run(()=>K({}));let n=[],o=[];const r=Ir({install(i){Jo(r),r._a=i,i.provide(O4,r),i.config.globalProperties.$pinia=r,o.forEach(s=>n.push(s)),o=[]},use(i){return this._a?n.push(i):o.push(i),this},_p:n,_a:null,_e:e,_s:new Map,state:t});return r}const A4=()=>{};function C0(e,t,n,o=A4){e.push(t);const r=()=>{const i=e.indexOf(t);i>-1&&(e.splice(i,1),o())};return!n&&Sr()&&m5(r),r}function it(e,...t){e.slice().forEach(n=>{n(...t)})}const I7=e=>e(),g0=Symbol(),f9=Symbol();function sr(e,t){e instanceof Map&&t instanceof Map?t.forEach((n,o)=>e.set(o,n)):e instanceof Set&&t instanceof Set&&t.forEach(e.add,e);for(const n in t){if(!t.hasOwnProperty(n))continue;const o=t[n],r=e[n];ir(r)&&ir(o)&&e.hasOwnProperty(n)&&!E1(o)&&!ae(o)?e[n]=sr(r,o):e[n]=o}return e}const R7=Symbol();function $7(e){return!ir(e)||!e.hasOwnProperty(R7)}const{assign:be}=Object;function F7(e){return!!(E1(e)&&e.effect)}function N7(e,t,n,o){const{state:r,actions:i,getters:s}=t,l=n.state.value[e];let d;function a(){l||(n.state.value[e]=r?r():{});const k=B3(n.state.value[e]);return be(k,i,Object.keys(s||{}).reduce((u,h)=>(u[h]=Ir(N(()=>{Jo(n);const p=n._s.get(e);return s[h].call(p,p)})),u),{}))}return d=P4(e,a,t,n,o,!0),d}function P4(e,t,n={},o,r,i){let s;const l=be({actions:{}},n),d={deep:!0};let a,k,u=[],h=[],p;const C=o.state.value[e];!i&&!C&&(o.state.value[e]={});let f;function m(O){let V;a=k=!1,typeof O=="function"?(O(o.state.value[e]),V={type:tn.patchFunction,storeId:e,events:p}):(sr(o.state.value[e],O),V={type:tn.patchObject,payload:O,storeId:e,events:p});const P=f=Symbol();a2().then(()=>{f===P&&(a=!0)}),k=!0,it(u,V,o.state.value[e])}const x=i?function(){const{state:V}=n,P=V?V():{};this.$patch(G=>{be(G,P)})}:A4;function w(){s.stop(),u=[],h=[],o._s.delete(e)}const D=(O,V="")=>{if(g0 in O)return O[f9]=V,O;const P=function(){Jo(o);const G=Array.from(arguments),T=[],o1=[];function k1(Y){T.push(Y)}function w1(Y){o1.push(Y)}it(h,{args:G,name:P[f9],store:j,after:k1,onError:w1});let u1;try{u1=O.apply(this&&this.$id===e?this:j,G)}catch(Y){throw it(o1,Y),Y}return u1 instanceof Promise?u1.then(Y=>(it(T,Y),Y)).catch(Y=>(it(o1,Y),Promise.reject(Y))):(it(T,u1),u1)};return P[g0]=!0,P[f9]=V,P},v={_p:o,$id:e,$onAction:C0.bind(null,h),$patch:m,$reset:x,$subscribe(O,V={}){const P=C0(u,O,V.detached,()=>G()),G=s.run(()=>V1(()=>o.state.value[e],T=>{(V.flush==="sync"?k:a)&&O({storeId:e,type:tn.direct,events:p},T)},be({},d,V)));return P},$dispose:w},j=I1(v);o._s.set(e,j);const b=(o._a&&o._a.runWithContext||I7)(()=>o._e.run(()=>(s=f5()).run(()=>t({action:D}))));for(const O in b){const V=b[O];if(E1(V)&&!F7(V)||ae(V))i||(C&&$7(V)&&(E1(V)?V.value=C[O]:sr(V,C[O])),o.state.value[e][O]=V);else if(typeof V=="function"){const P=D(V,O);b[O]=P,l.actions[O]=V}}return be(j,b),be(g1(j),b),Object.defineProperty(j,"$state",{get:()=>o.state.value[e],set:O=>{m(V=>{be(V,O)})}}),o._p.forEach(O=>{be(j,s.run(()=>O({store:j,app:o._a,pinia:o,options:l})))}),C&&i&&n.hydrate&&n.hydrate(j.$state,C),a=!0,k=!0,j}/*! #__NO_SIDE_EFFECTS__ */function Me(e,t,n){let o,r;const i=typeof t=="function";typeof e=="string"?(o=e,r=i?n:t):(r=e,o=e.id);function s(l,d){const a=$3();return l=l||(a?N1(O4,null):null),l&&Jo(l),l=E4,l._s.has(o)||(i?P4(o,t,r,l):N7(o,r,l)),l._s.get(o)}return s.$id=o,s}/*! * Vue3-Lazyload.js v0.2.5-beta * A Vue3.x image lazyload plugin * (c) 2021 MuRong * Released under the MIT License. - */var S2;(function(e){e.LOADING="loading",e.LOADED="loaded",e.ERROR="error"})(S2||(S2={}));var U7=typeof window<"u"&&window!==null,q7=K7(),z7=Object.prototype.propertyIsEnumerable,v0=Object.getOwnPropertySymbols;function nn(e){return typeof e=="function"||toString.call(e)==="[object Object]"}function W7(e){return typeof e=="object"?e===null:typeof e!="function"}function G7(e){return e!=="__proto__"&&e!=="constructor"&&e!=="prototype"}function K7(){return U7&&"IntersectionObserver"in window&&"IntersectionObserverEntry"in window&&"intersectionRatio"in window.IntersectionObserverEntry.prototype?("isIntersecting"in window.IntersectionObserverEntry.prototype||Object.defineProperty(window.IntersectionObserverEntry.prototype,"isIntersecting",{get:function(){return this.intersectionRatio>0}}),!0):!1}function Y7(e){for(var t=[],n=1;ne!==null&&typeof e=="object",Je=e=>e!=null,jo=e=>typeof e=="function",n8=e=>ni(e)&&jo(e.then)&&jo(e.catch),I4=e=>typeof e=="number"||/^\d+(\.\d+)?$/.test(e),o8=()=>t8?/ios|iphone|ipad|ipod/.test(navigator.userAgent.toLowerCase()):!1;function m0(e,t){const n=t.split(".");let o=e;return n.forEach(r=>{var i;o=ni(o)&&(i=o[r])!=null?i:""}),o}function r8(e,t,n){return t.reduce((o,r)=>(o[r]=e[r],o),{})}const oi=null,j2=[Number,String],A2={type:Boolean,default:!0},Eg=e=>({type:j2,default:e}),g2=e=>({type:String,default:e});var ri=typeof window<"u",i8=e=>e===window,M0=(e,t)=>({top:0,left:0,right:e,bottom:t,width:e,height:t}),s8=e=>{const t=t1(e);if(i8(t)){const n=t.innerWidth,o=t.innerHeight;return M0(n,o)}return t!=null&&t.getBoundingClientRect?t.getBoundingClientRect():M0(0,0)};function l8(e){const t=N1(e,null);if(t){const n=Z2(),{link:o,unlink:r,internalChildren:i}=t;o(n),Hn(()=>r(n));const s=N(()=>i.indexOf(n));return{parent:t,index:s}}return{parent:null,index:K(-1)}}function d8(e){const t=[],n=o=>{Array.isArray(o)&&o.forEach(r=>{var i;k2(r)&&(t.push(r),(i=r.component)!=null&&i.subTree&&(t.push(r.component.subTree),n(r.component.subTree.children)),r.children&&n(r.children))})};return n(e),t}var j0=(e,t)=>{const n=e.indexOf(t);return n===-1?e.findIndex(o=>t.key!==void 0&&t.key!==null&&o.type===t.type&&o.key===t.key):n};function a8(e,t,n){const o=d8(e.subTree.children);n.sort((i,s)=>j0(o,i.vnode)-j0(o,s.vnode));const r=n.map(i=>i.proxy);t.sort((i,s)=>{const l=r.indexOf(i),d=r.indexOf(s);return l-d})}function k8(e){const t=I1([]),n=I1([]),o=Z2();return{children:t,linkChildren:i=>{ke(e,Object.assign({link:d=>{d.proxy&&(n.push(d),t.push(d.proxy),a8(o,t,n))},unlink:d=>{const a=n.indexOf(d);t.splice(a,1),n.splice(a,1)},children:t,internalChildren:n},i))}}}function R4(e){let t;F2(()=>{e(),a2(()=>{t=!0})}),qr(()=>{t&&e()})}function $4(e,t,n={}){if(!ri)return;const{target:o=window,passive:r=!1,capture:i=!1}=n;let s=!1,l;const d=u=>{if(s)return;const h=t1(u);h&&!l&&(h.addEventListener(e,t,{capture:i,passive:r}),l=!0)},a=u=>{if(s)return;const h=t1(u);h&&l&&(h.removeEventListener(e,t,i),l=!1)};Hn(()=>a(o)),qo(()=>a(o)),R4(()=>d(o));let k;return E1(o)&&(k=V1(o,(u,h)=>{a(h),d(u)})),()=>{k==null||k(),a(o),s=!0}}var $n,m9;function u8(){if(!$n&&($n=K(0),m9=K(0),ri)){const e=()=>{$n.value=window.innerWidth,m9.value=window.innerHeight};e(),window.addEventListener("resize",e,{passive:!0}),window.addEventListener("orientationchange",e,{passive:!0})}return{width:$n,height:m9}}var h8=/scroll|auto|overlay/i,F4=ri?window:void 0;function p8(e){return e.tagName!=="HTML"&&e.tagName!=="BODY"&&e.nodeType===1}function dr(e,t=F4){let n=e;for(;n&&n!==t&&p8(n);){const{overflowY:o}=window.getComputedStyle(n);if(h8.test(o))return n;n=n.parentNode}return t}function Og(e,t=F4){const n=K();return F2(()=>{e.value&&(n.value=dr(e.value,t))}),n}function Ag(e){const t="scrollTop"in e?e.scrollTop:e.pageYOffset;return Math.max(t,0)}o8();const c8=e=>e.stopPropagation();function ii(e,t){(typeof e.cancelable!="boolean"||e.cancelable)&&e.preventDefault(),t&&c8(e)}const{width:w8,height:C8}=u8();function V2(e){if(Je(e))return I4(e)?`${e}px`:String(e)}function g8(e){if(Je(e)){if(Array.isArray(e))return{width:V2(e[0]),height:V2(e[1])};const t=V2(e);return{width:t,height:t}}}function v8(e){const t={};return e!==void 0&&(t.zIndex=+e),t}const f8=/-(\w)/g,N4=e=>e.replace(f8,(t,n)=>n.toUpperCase()),{hasOwnProperty:m8}=Object.prototype;function M8(e,t,n){const o=t[n];Je(o)&&(!m8.call(e,n)||!ni(o)?e[n]=o:e[n]=U4(Object(e[n]),o))}function U4(e,t){return Object.keys(t).forEach(n=>{M8(e,t,n)}),e}var j8={name:"姓名",tel:"电话",save:"保存",clear:"清空",undo:"撤销",cancel:"取消",confirm:"确认",delete:"删除",loading:"加载中...",noCoupon:"暂无优惠券",nameEmpty:"请填写姓名",addContact:"添加联系人",telInvalid:"请填写正确的电话",vanCalendar:{end:"结束",start:"开始",title:"日期选择",weekdays:["日","一","二","三","四","五","六"],monthTitle:(e,t)=>`${e}年${t}月`,rangePrompt:e=>`最多选择 ${e} 天`},vanCascader:{select:"请选择"},vanPagination:{prev:"上一页",next:"下一页"},vanPullRefresh:{pulling:"下拉即可刷新...",loosing:"释放即可刷新..."},vanSubmitBar:{label:"合计:"},vanCoupon:{unlimited:"无门槛",discount:e=>`${e}折`,condition:e=>`满${e}元可用`},vanCouponCell:{title:"优惠券",count:e=>`${e}张可用`},vanCouponList:{exchange:"兑换",close:"不使用",enable:"可用",disabled:"不可用",placeholder:"输入优惠码"},vanAddressEdit:{area:"地区",areaEmpty:"请选择地区",addressEmpty:"请填写详细地址",addressDetail:"详细地址",defaultAddress:"设为默认收货地址"},vanAddressList:{add:"新增地址"}};const x0=K("zh-CN"),D0=I1({"zh-CN":j8}),q4={messages(){return D0[x0.value]},use(e,t){x0.value=e,this.add({[e]:t})},add(e={}){U4(D0,e)}};var x8=q4;function D8(e){const t=N4(e)+".";return(n,...o)=>{const r=x8.messages(),i=m0(r,t+n)||m0(r,n);return jo(i)?i(...o):i}}function ar(e,t){return t?typeof t=="string"?` ${e}--${t}`:Array.isArray(t)?t.reduce((n,o)=>n+ar(e,o),""):Object.keys(t).reduce((n,o)=>n+(t[o]?ar(e,o):""),""):""}function L8(e){return(t,n)=>(t&&typeof t!="string"&&(n=t,t=""),t=t?`${e}__${t}`:e,`${t}${ar(t,n)}`)}function X2(e){const t=`van-${e}`;return[t,L8(t),D8(t)]}const si="van-hairline",H8=`${si}--top`,V8=`${si}--left`,y8=`${si}--surround`,b8="van-haptics-feedback",L0=5;function z4(e,{args:t=[],done:n,canceled:o,error:r}){if(e){const i=e.apply(null,t);n8(i)?i.then(s=>{s?n():o&&o()}).catch(r||lr):i?n():o&&o()}else n()}function je(e){return e.install=t=>{const{name:n}=e;n&&(t.component(n,e),t.component(N4(`-${n}`),e))},e}const W4=Symbol();function Z8(e){const t=N1(W4,null);t&&V1(t,n=>{n&&e()})}const _8=(e,t)=>{const n=K(),o=()=>{n.value=s8(e).height};return F2(()=>{a2(o);for(let r=1;r<=3;r++)setTimeout(o,100*r)}),Z8(()=>a2(o)),V1([w8,C8],o),n};function B8(e,t){const n=_8(e);return o=>H("div",{class:t("placeholder"),style:{height:n.value?`${n.value}px`:void 0}},[o()])}const[G4,H0]=X2("action-bar"),K4=Symbol(G4),S8={placeholder:Boolean,safeAreaInsetBottom:A2};var E8=f1({name:G4,props:S8,setup(e,{slots:t}){const n=K(),o=B8(n,H0),{linkChildren:r}=k8(K4);r();const i=()=>{var s;return H("div",{ref:n,class:[H0(),{"van-safe-area-bottom":e.safeAreaInsetBottom}]},[(s=t.default)==null?void 0:s.call(t)])};return()=>e.placeholder?o(i):i()}});const O8=je(E8);function Y4(e){const t=Z2();t&&Te(t.proxy,e)}const Q4={to:[String,Object],url:String,replace:Boolean};function A8({to:e,url:t,replace:n,$router:o}){e&&o?o[n?"replace":"push"](e):t&&(n?location.replace(t):location.href=t)}function J4(){const e=Z2().proxy;return()=>A8(e)}const[P8,V0]=X2("badge"),T8={dot:Boolean,max:j2,tag:g2("div"),color:String,offset:Array,content:j2,showZero:A2,position:g2("top-right")};var I8=f1({name:P8,props:T8,setup(e,{slots:t}){const n=()=>{if(t.content)return!0;const{content:l,showZero:d}=e;return Je(l)&&l!==""&&(d||l!==0&&l!=="0")},o=()=>{const{dot:l,max:d,content:a}=e;if(!l&&n())return t.content?t.content():Je(d)&&I4(a)&&+a>+d?`${d}+`:a},r=l=>l.startsWith("-")?l.replace("-",""):`-${l}`,i=N(()=>{const l={background:e.color};if(e.offset){const[d,a]=e.offset,{position:k}=e,[u,h]=k.split("-");t.default?(typeof a=="number"?l[u]=V2(u==="top"?a:-a):l[u]=u==="top"?V2(a):r(a),typeof d=="number"?l[h]=V2(h==="left"?d:-d):l[h]=h==="left"?V2(d):r(d)):(l.marginTop=V2(a),l.marginLeft=V2(d))}return l}),s=()=>{if(n()||e.dot)return H("div",{class:V0([e.position,{dot:e.dot,fixed:!!t.default}]),style:i.value},[o()])};return()=>{if(t.default){const{tag:l}=e;return H(l,{class:V0("wrapper")},{default:()=>[t.default(),s()]})}return s()}}});const R8=je(I8);let $8=2e3;const F8=()=>++$8,[N8]=X2("config-provider"),U8=Symbol(N8),[q8,y0]=X2("icon"),z8=e=>e==null?void 0:e.includes("/"),W8={dot:Boolean,tag:g2("i"),name:String,size:j2,badge:j2,color:String,badgeProps:Object,classPrefix:String};var G8=f1({name:q8,props:W8,setup(e,{slots:t}){const n=N1(U8,null),o=N(()=>e.classPrefix||(n==null?void 0:n.iconPrefix)||y0());return()=>{const{tag:r,dot:i,name:s,size:l,badge:d,color:a}=e,k=z8(s);return H(R8,Mt({dot:i,tag:r,class:[o.value,k?"":`${o.value}-${s}`],style:{color:a,fontSize:V2(l)},content:d},e.badgeProps),{default:()=>{var u;return[(u=t.default)==null?void 0:u.call(t),k&&H("img",{class:y0("image"),src:s},null)]}})}}});const X4=je(G8),[K8,on]=X2("loading"),Y8=Array(12).fill(null).map((e,t)=>H("i",{class:on("line",String(t+1))},null)),Q8=H("svg",{class:on("circular"),viewBox:"25 25 50 50"},[H("circle",{cx:"50",cy:"50",r:"20",fill:"none"},null)]),J8={size:j2,type:g2("circular"),color:String,vertical:Boolean,textSize:j2,textColor:String};var X8=f1({name:K8,props:J8,setup(e,{slots:t}){const n=N(()=>Te({color:e.color},g8(e.size))),o=()=>{const i=e.type==="spinner"?Y8:Q8;return H("span",{class:on("spinner",e.type),style:n.value},[t.icon?t.icon():i])},r=()=>{var i;if(t.default)return H("span",{class:on("text"),style:{fontSize:V2(e.textSize),color:(i=e.textColor)!=null?i:e.color}},[t.default()])};return()=>{const{type:i,vertical:s}=e;return H("div",{class:on([i,{vertical:s}]),"aria-live":"polite","aria-busy":!0},[o(),r()])}}});const e6=je(X8),[t6,st]=X2("button"),n6=Te({},Q4,{tag:g2("button"),text:String,icon:String,type:g2("default"),size:g2("normal"),color:String,block:Boolean,plain:Boolean,round:Boolean,square:Boolean,loading:Boolean,hairline:Boolean,disabled:Boolean,iconPrefix:String,nativeType:g2("button"),loadingSize:j2,loadingText:String,loadingType:String,iconPosition:g2("left")});var o6=f1({name:t6,props:n6,emits:["click"],setup(e,{emit:t,slots:n}){const o=J4(),r=()=>n.loading?n.loading():H(e6,{size:e.loadingSize,type:e.loadingType,class:st("loading")},null),i=()=>{if(e.loading)return r();if(n.icon)return H("div",{class:st("icon")},[n.icon()]);if(e.icon)return H(X4,{name:e.icon,class:st("icon"),classPrefix:e.iconPrefix},null)},s=()=>{let a;if(e.loading?a=e.loadingText:a=n.default?n.default():e.text,a)return H("span",{class:st("text")},[a])},l=()=>{const{color:a,plain:k}=e;if(a){const u={color:k?a:"white"};return k||(u.background=a),a.includes("gradient")?u.border=0:u.borderColor=a,u}},d=a=>{e.loading?ii(a):e.disabled||(t("click",a),o())};return()=>{const{tag:a,type:k,size:u,block:h,round:p,plain:C,square:f,loading:m,disabled:x,hairline:w,nativeType:D,iconPosition:v}=e,j=[st([k,u,{plain:C,block:h,round:p,square:f,loading:m,disabled:x,hairline:w}]),{[y8]:w}];return H(a,{type:D,class:j,style:l(),disabled:x,onClick:d},{default:()=>[H("div",{class:st("content")},[v==="left"&&i(),s(),v==="right"&&i()])]})}}});const kr=je(o6),[r6,i6]=X2("action-bar-button"),s6=Te({},Q4,{type:String,text:String,icon:String,color:String,loading:Boolean,disabled:Boolean});var l6=f1({name:r6,props:s6,setup(e,{slots:t}){const n=J4(),{parent:o,index:r}=l8(K4),i=N(()=>{if(o){const l=o.children[r.value-1];return!(l&&"isButton"in l)}}),s=N(()=>{if(o){const l=o.children[r.value+1];return!(l&&"isButton"in l)}});return Y4({isButton:!0}),()=>{const{type:l,icon:d,text:a,color:k,loading:u,disabled:h}=e;return H(kr,{class:i6([l,{last:s.value,first:i.value}]),size:"large",type:l,icon:d,color:k,loading:u,disabled:h,onClick:n},{default:()=>[t.default?t.default():a]})}}});const b0=je(l6),li={show:Boolean,zIndex:j2,overlay:A2,duration:j2,teleport:[String,Object],lockScroll:A2,lazyRender:A2,beforeClose:Function,overlayProps:Object,overlayStyle:Object,overlayClass:oi,transitionAppear:Boolean,closeOnClickOverlay:A2},d6=Object.keys(li);function a6(e,t){return e>t?"horizontal":t>e?"vertical":""}function k6(){const e=K(0),t=K(0),n=K(0),o=K(0),r=K(0),i=K(0),s=K(""),l=K(!0),d=()=>s.value==="vertical",a=()=>s.value==="horizontal",k=()=>{n.value=0,o.value=0,r.value=0,i.value=0,s.value="",l.value=!0};return{move:p=>{const C=p.touches[0];n.value=(C.clientX<0?0:C.clientX)-e.value,o.value=C.clientY-t.value,r.value=Math.abs(n.value),i.value=Math.abs(o.value);const f=10;(!s.value||r.valueL0||i.value>L0)&&(l.value=!1)},start:p=>{k(),e.value=p.touches[0].clientX,t.value=p.touches[0].clientY},reset:k,startX:e,startY:t,deltaX:n,deltaY:o,offsetX:r,offsetY:i,direction:s,isVertical:d,isHorizontal:a,isTap:l}}let At=0;const Z0="van-overflow-hidden";function u6(e,t){const n=k6(),o="01",r="10",i=k=>{n.move(k);const u=n.deltaY.value>0?r:o;let h=dr(k.target,e.value);for(;h.scrollHeight<=h.offsetHeight&&h!==e.value&&h.parentElement;)h=dr(h.parentElement,e.value);const{scrollHeight:p,offsetHeight:C,scrollTop:f}=h;let m="11";f===0?m=C>=p?"00":"01":f+C>=p&&(m="10"),m!=="11"&&n.isVertical()&&!(parseInt(m,2)&parseInt(u,2))&&ii(k,!0)},s=()=>{document.addEventListener("touchstart",n.start),document.addEventListener("touchmove",i,{passive:!1}),At||document.body.classList.add(Z0),At++},l=()=>{At&&(document.removeEventListener("touchstart",n.start),document.removeEventListener("touchmove",i),At--,At||document.body.classList.remove(Z0))},d=()=>t()&&s(),a=()=>t()&&l();R4(d),qo(a),Pe(a),V1(t,k=>{k?s():l()})}function el(e){const t=K(!1);return V1(e,n=>{n&&(t.value=n)},{immediate:!0}),n=>()=>t.value?n():null}const _0=()=>{var e;const{scopeId:t}=((e=Z2())==null?void 0:e.vnode)||{};return t?{[t]:""}:null},[h6,p6]=X2("overlay"),c6={show:Boolean,zIndex:j2,duration:j2,className:oi,lockScroll:A2,lazyRender:A2,customStyle:Object,teleport:[String,Object]};var w6=f1({name:h6,inheritAttrs:!1,props:c6,setup(e,{attrs:t,slots:n}){const o=K(),r=el(()=>e.show||!e.lazyRender),i=l=>{e.lockScroll&&ii(l,!0)},s=r(()=>{var l;const d=Te(v8(e.zIndex),e.customStyle);return Je(e.duration)&&(d.animationDuration=`${e.duration}s`),Fr(H("div",Mt({ref:o,style:d,class:[p6(),e.className]},t),[(l=n.default)==null?void 0:l.call(n)]),[[ti,e.show]])});return $4("touchmove",i,{target:o}),()=>{const l=H(Yo,{name:"van-fade",appear:!0},{default:s});return e.teleport?H(nt,{to:e.teleport},{default:()=>[l]}):l}}});const C6=je(w6),g6=Te({},li,{round:Boolean,position:g2("center"),closeIcon:g2("cross"),closeable:Boolean,transition:String,iconPrefix:String,closeOnPopstate:Boolean,closeIconPosition:g2("top-right"),destroyOnClose:Boolean,safeAreaInsetTop:Boolean,safeAreaInsetBottom:Boolean}),[v6,B0]=X2("popup");var f6=f1({name:v6,inheritAttrs:!1,props:g6,emits:["open","close","opened","closed","keydown","update:show","clickOverlay","clickCloseIcon"],setup(e,{emit:t,attrs:n,slots:o}){let r,i;const s=K(),l=K(),d=el(()=>e.show||!e.lazyRender),a=N(()=>{const L={zIndex:s.value};if(Je(e.duration)){const b=e.position==="center"?"animationDuration":"transitionDuration";L[b]=`${e.duration}s`}return L}),k=()=>{r||(r=!0,s.value=e.zIndex!==void 0?+e.zIndex:F8(),t("open"))},u=()=>{r&&z4(e.beforeClose,{done(){r=!1,t("close"),t("update:show",!1)}})},h=L=>{t("clickOverlay",L),e.closeOnClickOverlay&&u()},p=()=>{if(e.overlay){const L=Te({show:e.show,class:e.overlayClass,zIndex:s.value,duration:e.duration,customStyle:e.overlayStyle,role:e.closeOnClickOverlay?"button":void 0,tabindex:e.closeOnClickOverlay?0:void 0},e.overlayProps);return H(C6,Mt(L,_0(),{onClick:h}),{default:o["overlay-content"]})}},C=L=>{t("clickCloseIcon",L),u()},f=()=>{if(e.closeable)return H(X4,{role:"button",tabindex:0,name:e.closeIcon,class:[B0("close-icon",e.closeIconPosition),b8],classPrefix:e.iconPrefix,onClick:C},null)};let m;const x=()=>{m&&clearTimeout(m),m=setTimeout(()=>{t("opened")})},w=()=>t("closed"),D=L=>t("keydown",L),v=d(()=>{var L;const{destroyOnClose:b,round:O,position:V,safeAreaInsetTop:P,safeAreaInsetBottom:G,show:T}=e;if(!(!T&&b))return Fr(H("div",Mt({ref:l,style:a.value,role:"dialog",tabindex:0,class:[B0({round:O,[V]:V}),{"van-safe-area-top":P,"van-safe-area-bottom":G}],onKeydown:D},n,_0()),[(L=o.default)==null?void 0:L.call(o),f()]),[[ti,T]])}),j=()=>{const{position:L,transition:b,transitionAppear:O}=e,V=L==="center"?"van-fade":`van-popup-slide-${L}`;return H(Yo,{name:b||V,appear:O,onAfterEnter:x,onAfterLeave:w},{default:v})};return V1(()=>e.show,L=>{L&&!r&&(k(),n.tabindex===0&&a2(()=>{var b;(b=l.value)==null||b.focus()})),!L&&r&&(r=!1,t("close"))}),Y4({popupRef:l}),u6(l,()=>e.show&&e.lockScroll),$4("popstate",()=>{e.closeOnPopstate&&(u(),i=!1)}),F2(()=>{e.show&&k()}),qr(()=>{i&&(t("update:show",!0),i=!1)}),qo(()=>{e.show&&e.teleport&&(u(),i=!0)}),ke(W4,()=>e.show),()=>e.teleport?H(nt,{to:e.teleport},{default:()=>[p(),j()]}):H(v1,null,[p(),j()])}});const m6=je(f6),[M6,_2,Fn]=X2("dialog"),j6=Te({},li,{title:String,theme:String,width:j2,message:[String,Function],callback:Function,allowHtml:Boolean,className:oi,transition:g2("van-dialog-bounce"),messageAlign:String,closeOnPopstate:A2,showCancelButton:Boolean,cancelButtonText:String,cancelButtonColor:String,cancelButtonDisabled:Boolean,confirmButtonText:String,confirmButtonColor:String,confirmButtonDisabled:Boolean,showConfirmButton:A2,closeOnClickOverlay:Boolean,keyboardEnabled:A2,destroyOnClose:Boolean}),x6=[...d6,"transition","closeOnPopstate","destroyOnClose"];var D6=f1({name:M6,props:j6,emits:["confirm","cancel","keydown","update:show"],setup(e,{emit:t,slots:n}){const o=K(),r=I1({confirm:!1,cancel:!1}),i=x=>t("update:show",x),s=x=>{var w;i(!1),(w=e.callback)==null||w.call(e,x)},l=x=>()=>{e.show&&(t(x),e.beforeClose?(r[x]=!0,z4(e.beforeClose,{args:[x],done(){s(x),r[x]=!1},canceled(){r[x]=!1}})):s(x))},d=l("cancel"),a=l("confirm"),k=S7(x=>{var w,D;if(!e.keyboardEnabled||x.target!==((D=(w=o.value)==null?void 0:w.popupRef)==null?void 0:D.value))return;({Enter:e.showConfirmButton?a:lr,Escape:e.showCancelButton?d:lr})[x.key](),t("keydown",x)},["enter","esc"]),u=()=>{const x=n.title?n.title():e.title;if(x)return H("div",{class:_2("header",{isolated:!e.message&&!n.default})},[x])},h=x=>{const{message:w,allowHtml:D,messageAlign:v}=e,j=_2("message",{"has-title":x,[v]:v}),L=jo(w)?w():w;return D&&typeof L=="string"?H("div",{class:j,innerHTML:L},null):H("div",{class:j},[L])},p=()=>{if(n.default)return H("div",{class:_2("content")},[n.default()]);const{title:x,message:w,allowHtml:D}=e;if(w){const v=!!(x||n.title);return H("div",{key:D?1:0,class:_2("content",{isolated:!v})},[h(v)])}},C=()=>H("div",{class:[H8,_2("footer")]},[e.showCancelButton&&H(kr,{size:"large",text:e.cancelButtonText||Fn("cancel"),class:_2("cancel"),style:{color:e.cancelButtonColor},loading:r.cancel,disabled:e.cancelButtonDisabled,onClick:d},null),e.showConfirmButton&&H(kr,{size:"large",text:e.confirmButtonText||Fn("confirm"),class:[_2("confirm"),{[V8]:e.showCancelButton}],style:{color:e.confirmButtonColor},loading:r.confirm,disabled:e.confirmButtonDisabled,onClick:a},null)]),f=()=>H(O8,{class:_2("footer")},{default:()=>[e.showCancelButton&&H(b0,{type:"warning",text:e.cancelButtonText||Fn("cancel"),class:_2("cancel"),color:e.cancelButtonColor,loading:r.cancel,disabled:e.cancelButtonDisabled,onClick:d},null),e.showConfirmButton&&H(b0,{type:"danger",text:e.confirmButtonText||Fn("confirm"),class:_2("confirm"),color:e.confirmButtonColor,loading:r.confirm,disabled:e.confirmButtonDisabled,onClick:a},null)]}),m=()=>n.footer?n.footer():e.theme==="round-button"?f():C();return()=>{const{width:x,title:w,theme:D,message:v,className:j}=e;return H(m6,Mt({ref:o,role:"dialog",class:[_2([D]),j],style:{width:V2(x)},tabindex:0,"aria-labelledby":w||v,onKeydown:k,"onUpdate:show":i},r8(e,x6)),{default:()=>[u(),p(),m()]})}}});const tl=je(D6);var L6={name:"نام",tel:"تلفن",save:"ذخیره",clear:"پاک کردن",undo:"واگرد",cancel:"انصراف",confirm:"تایید",delete:"حذف",loading:"در حال بارگزاری ...",noCoupon:"بدون کوپن",nameEmpty:"لطفا نام را وارد کنید",addContact:"افزودن مخاطب",telInvalid:"شماره تلفن ناقص",vanCalendar:{end:"پایان",start:"شروع",title:"تقویم",weekdays:["شنبه","یکشنبه","دوشنبه","سه‌شنبه","چهارشنبه","پنج‌شنبه","جمعه"],monthTitle:(e,t)=>`${e}/${t}`,rangePrompt:e=>`بیشتر از ${e} روز انتخاب کنید`},vanCascader:{select:"انتخاب"},vanPagination:{prev:"قبلی",next:"بعدی"},vanPullRefresh:{pulling:"بکشید تا تازه شود ...",loosing:"رها کنید تا تازه شود ..."},vanSubmitBar:{label:"مجموع:"},vanCoupon:{unlimited:"نامحدود",discount:e=>`${e*10}% تخفیف`,condition:e=>`حداقل ${e}`},vanCouponCell:{title:"کوپن",count:e=>`شما ${e} کوپن دارید`},vanCouponList:{exchange:"تبادل",close:"بستن",enable:"موجود",disabled:"ناموجود",placeholder:"کد کوپن"},vanAddressEdit:{area:"محدوده",postal:"کد پستی",areaEmpty:"لطفا یک منطقه برای دریافت انتخاب کنید",addressEmpty:"آدرس نمی‌تواند خالی باشد",postalEmpty:"کد پستی نامعتبر است",addressDetail:"آدرس",defaultAddress:"تنظیم به عنوان آدرس پیش فرض"},vanAddressList:{add:"افزودن آدرس جدید"}};/*! + */var S2;(function(e){e.LOADING="loading",e.LOADED="loaded",e.ERROR="error"})(S2||(S2={}));var U7=typeof window<"u"&&window!==null,q7=K7(),z7=Object.prototype.propertyIsEnumerable,v0=Object.getOwnPropertySymbols;function nn(e){return typeof e=="function"||toString.call(e)==="[object Object]"}function W7(e){return typeof e=="object"?e===null:typeof e!="function"}function G7(e){return e!=="__proto__"&&e!=="constructor"&&e!=="prototype"}function K7(){return U7&&"IntersectionObserver"in window&&"IntersectionObserverEntry"in window&&"intersectionRatio"in window.IntersectionObserverEntry.prototype?("isIntersecting"in window.IntersectionObserverEntry.prototype||Object.defineProperty(window.IntersectionObserverEntry.prototype,"isIntersecting",{get:function(){return this.intersectionRatio>0}}),!0):!1}function Y7(e){for(var t=[],n=1;ne!==null&&typeof e=="object",Qe=e=>e!=null,jo=e=>typeof e=="function",n8=e=>ni(e)&&jo(e.then)&&jo(e.catch),I4=e=>typeof e=="number"||/^\d+(\.\d+)?$/.test(e),o8=()=>t8?/ios|iphone|ipad|ipod/.test(navigator.userAgent.toLowerCase()):!1;function m0(e,t){const n=t.split(".");let o=e;return n.forEach(r=>{var i;o=ni(o)&&(i=o[r])!=null?i:""}),o}function r8(e,t,n){return t.reduce((o,r)=>(o[r]=e[r],o),{})}const oi=null,j2=[Number,String],A2={type:Boolean,default:!0},Eg=e=>({type:j2,default:e}),g2=e=>({type:String,default:e});var ri=typeof window<"u",i8=e=>e===window,M0=(e,t)=>({top:0,left:0,right:e,bottom:t,width:e,height:t}),s8=e=>{const t=t1(e);if(i8(t)){const n=t.innerWidth,o=t.innerHeight;return M0(n,o)}return t!=null&&t.getBoundingClientRect?t.getBoundingClientRect():M0(0,0)};function l8(e){const t=N1(e,null);if(t){const n=Z2(),{link:o,unlink:r,internalChildren:i}=t;o(n),Hn(()=>r(n));const s=N(()=>i.indexOf(n));return{parent:t,index:s}}return{parent:null,index:K(-1)}}function d8(e){const t=[],n=o=>{Array.isArray(o)&&o.forEach(r=>{var i;k2(r)&&(t.push(r),(i=r.component)!=null&&i.subTree&&(t.push(r.component.subTree),n(r.component.subTree.children)),r.children&&n(r.children))})};return n(e),t}var j0=(e,t)=>{const n=e.indexOf(t);return n===-1?e.findIndex(o=>t.key!==void 0&&t.key!==null&&o.type===t.type&&o.key===t.key):n};function a8(e,t,n){const o=d8(e.subTree.children);n.sort((i,s)=>j0(o,i.vnode)-j0(o,s.vnode));const r=n.map(i=>i.proxy);t.sort((i,s)=>{const l=r.indexOf(i),d=r.indexOf(s);return l-d})}function k8(e){const t=I1([]),n=I1([]),o=Z2();return{children:t,linkChildren:i=>{ke(e,Object.assign({link:d=>{d.proxy&&(n.push(d),t.push(d.proxy),a8(o,t,n))},unlink:d=>{const a=n.indexOf(d);t.splice(a,1),n.splice(a,1)},children:t,internalChildren:n},i))}}}function R4(e){let t;F2(()=>{e(),a2(()=>{t=!0})}),qr(()=>{t&&e()})}function $4(e,t,n={}){if(!ri)return;const{target:o=window,passive:r=!1,capture:i=!1}=n;let s=!1,l;const d=u=>{if(s)return;const h=t1(u);h&&!l&&(h.addEventListener(e,t,{capture:i,passive:r}),l=!0)},a=u=>{if(s)return;const h=t1(u);h&&l&&(h.removeEventListener(e,t,i),l=!1)};Hn(()=>a(o)),qo(()=>a(o)),R4(()=>d(o));let k;return E1(o)&&(k=V1(o,(u,h)=>{a(h),d(u)})),()=>{k==null||k(),a(o),s=!0}}var $n,m9;function u8(){if(!$n&&($n=K(0),m9=K(0),ri)){const e=()=>{$n.value=window.innerWidth,m9.value=window.innerHeight};e(),window.addEventListener("resize",e,{passive:!0}),window.addEventListener("orientationchange",e,{passive:!0})}return{width:$n,height:m9}}var h8=/scroll|auto|overlay/i,F4=ri?window:void 0;function p8(e){return e.tagName!=="HTML"&&e.tagName!=="BODY"&&e.nodeType===1}function dr(e,t=F4){let n=e;for(;n&&n!==t&&p8(n);){const{overflowY:o}=window.getComputedStyle(n);if(h8.test(o))return n;n=n.parentNode}return t}function Og(e,t=F4){const n=K();return F2(()=>{e.value&&(n.value=dr(e.value,t))}),n}function Ag(e){const t="scrollTop"in e?e.scrollTop:e.pageYOffset;return Math.max(t,0)}o8();const c8=e=>e.stopPropagation();function ii(e,t){(typeof e.cancelable!="boolean"||e.cancelable)&&e.preventDefault(),t&&c8(e)}const{width:w8,height:C8}=u8();function V2(e){if(Qe(e))return I4(e)?`${e}px`:String(e)}function g8(e){if(Qe(e)){if(Array.isArray(e))return{width:V2(e[0]),height:V2(e[1])};const t=V2(e);return{width:t,height:t}}}function v8(e){const t={};return e!==void 0&&(t.zIndex=+e),t}const f8=/-(\w)/g,N4=e=>e.replace(f8,(t,n)=>n.toUpperCase()),{hasOwnProperty:m8}=Object.prototype;function M8(e,t,n){const o=t[n];Qe(o)&&(!m8.call(e,n)||!ni(o)?e[n]=o:e[n]=U4(Object(e[n]),o))}function U4(e,t){return Object.keys(t).forEach(n=>{M8(e,t,n)}),e}var j8={name:"姓名",tel:"电话",save:"保存",clear:"清空",undo:"撤销",cancel:"取消",confirm:"确认",delete:"删除",loading:"加载中...",noCoupon:"暂无优惠券",nameEmpty:"请填写姓名",addContact:"添加联系人",telInvalid:"请填写正确的电话",vanCalendar:{end:"结束",start:"开始",title:"日期选择",weekdays:["日","一","二","三","四","五","六"],monthTitle:(e,t)=>`${e}年${t}月`,rangePrompt:e=>`最多选择 ${e} 天`},vanCascader:{select:"请选择"},vanPagination:{prev:"上一页",next:"下一页"},vanPullRefresh:{pulling:"下拉即可刷新...",loosing:"释放即可刷新..."},vanSubmitBar:{label:"合计:"},vanCoupon:{unlimited:"无门槛",discount:e=>`${e}折`,condition:e=>`满${e}元可用`},vanCouponCell:{title:"优惠券",count:e=>`${e}张可用`},vanCouponList:{exchange:"兑换",close:"不使用",enable:"可用",disabled:"不可用",placeholder:"输入优惠码"},vanAddressEdit:{area:"地区",areaEmpty:"请选择地区",addressEmpty:"请填写详细地址",addressDetail:"详细地址",defaultAddress:"设为默认收货地址"},vanAddressList:{add:"新增地址"}};const x0=K("zh-CN"),D0=I1({"zh-CN":j8}),q4={messages(){return D0[x0.value]},use(e,t){x0.value=e,this.add({[e]:t})},add(e={}){U4(D0,e)}};var x8=q4;function D8(e){const t=N4(e)+".";return(n,...o)=>{const r=x8.messages(),i=m0(r,t+n)||m0(r,n);return jo(i)?i(...o):i}}function ar(e,t){return t?typeof t=="string"?` ${e}--${t}`:Array.isArray(t)?t.reduce((n,o)=>n+ar(e,o),""):Object.keys(t).reduce((n,o)=>n+(t[o]?ar(e,o):""),""):""}function L8(e){return(t,n)=>(t&&typeof t!="string"&&(n=t,t=""),t=t?`${e}__${t}`:e,`${t}${ar(t,n)}`)}function X2(e){const t=`van-${e}`;return[t,L8(t),D8(t)]}const si="van-hairline",H8=`${si}--top`,V8=`${si}--left`,y8=`${si}--surround`,b8="van-haptics-feedback",L0=5;function z4(e,{args:t=[],done:n,canceled:o,error:r}){if(e){const i=e.apply(null,t);n8(i)?i.then(s=>{s?n():o&&o()}).catch(r||lr):i?n():o&&o()}else n()}function je(e){return e.install=t=>{const{name:n}=e;n&&(t.component(n,e),t.component(N4(`-${n}`),e))},e}const W4=Symbol();function Z8(e){const t=N1(W4,null);t&&V1(t,n=>{n&&e()})}const _8=(e,t)=>{const n=K(),o=()=>{n.value=s8(e).height};return F2(()=>{a2(o);for(let r=1;r<=3;r++)setTimeout(o,100*r)}),Z8(()=>a2(o)),V1([w8,C8],o),n};function B8(e,t){const n=_8(e);return o=>H("div",{class:t("placeholder"),style:{height:n.value?`${n.value}px`:void 0}},[o()])}const[G4,H0]=X2("action-bar"),K4=Symbol(G4),S8={placeholder:Boolean,safeAreaInsetBottom:A2};var E8=f1({name:G4,props:S8,setup(e,{slots:t}){const n=K(),o=B8(n,H0),{linkChildren:r}=k8(K4);r();const i=()=>{var s;return H("div",{ref:n,class:[H0(),{"van-safe-area-bottom":e.safeAreaInsetBottom}]},[(s=t.default)==null?void 0:s.call(t)])};return()=>e.placeholder?o(i):i()}});const O8=je(E8);function Y4(e){const t=Z2();t&&Te(t.proxy,e)}const J4={to:[String,Object],url:String,replace:Boolean};function A8({to:e,url:t,replace:n,$router:o}){e&&o?o[n?"replace":"push"](e):t&&(n?location.replace(t):location.href=t)}function Q4(){const e=Z2().proxy;return()=>A8(e)}const[P8,V0]=X2("badge"),T8={dot:Boolean,max:j2,tag:g2("div"),color:String,offset:Array,content:j2,showZero:A2,position:g2("top-right")};var I8=f1({name:P8,props:T8,setup(e,{slots:t}){const n=()=>{if(t.content)return!0;const{content:l,showZero:d}=e;return Qe(l)&&l!==""&&(d||l!==0&&l!=="0")},o=()=>{const{dot:l,max:d,content:a}=e;if(!l&&n())return t.content?t.content():Qe(d)&&I4(a)&&+a>+d?`${d}+`:a},r=l=>l.startsWith("-")?l.replace("-",""):`-${l}`,i=N(()=>{const l={background:e.color};if(e.offset){const[d,a]=e.offset,{position:k}=e,[u,h]=k.split("-");t.default?(typeof a=="number"?l[u]=V2(u==="top"?a:-a):l[u]=u==="top"?V2(a):r(a),typeof d=="number"?l[h]=V2(h==="left"?d:-d):l[h]=h==="left"?V2(d):r(d)):(l.marginTop=V2(a),l.marginLeft=V2(d))}return l}),s=()=>{if(n()||e.dot)return H("div",{class:V0([e.position,{dot:e.dot,fixed:!!t.default}]),style:i.value},[o()])};return()=>{if(t.default){const{tag:l}=e;return H(l,{class:V0("wrapper")},{default:()=>[t.default(),s()]})}return s()}}});const R8=je(I8);let $8=2e3;const F8=()=>++$8,[N8]=X2("config-provider"),U8=Symbol(N8),[q8,y0]=X2("icon"),z8=e=>e==null?void 0:e.includes("/"),W8={dot:Boolean,tag:g2("i"),name:String,size:j2,badge:j2,color:String,badgeProps:Object,classPrefix:String};var G8=f1({name:q8,props:W8,setup(e,{slots:t}){const n=N1(U8,null),o=N(()=>e.classPrefix||(n==null?void 0:n.iconPrefix)||y0());return()=>{const{tag:r,dot:i,name:s,size:l,badge:d,color:a}=e,k=z8(s);return H(R8,Mt({dot:i,tag:r,class:[o.value,k?"":`${o.value}-${s}`],style:{color:a,fontSize:V2(l)},content:d},e.badgeProps),{default:()=>{var u;return[(u=t.default)==null?void 0:u.call(t),k&&H("img",{class:y0("image"),src:s},null)]}})}}});const X4=je(G8),[K8,on]=X2("loading"),Y8=Array(12).fill(null).map((e,t)=>H("i",{class:on("line",String(t+1))},null)),J8=H("svg",{class:on("circular"),viewBox:"25 25 50 50"},[H("circle",{cx:"50",cy:"50",r:"20",fill:"none"},null)]),Q8={size:j2,type:g2("circular"),color:String,vertical:Boolean,textSize:j2,textColor:String};var X8=f1({name:K8,props:Q8,setup(e,{slots:t}){const n=N(()=>Te({color:e.color},g8(e.size))),o=()=>{const i=e.type==="spinner"?Y8:J8;return H("span",{class:on("spinner",e.type),style:n.value},[t.icon?t.icon():i])},r=()=>{var i;if(t.default)return H("span",{class:on("text"),style:{fontSize:V2(e.textSize),color:(i=e.textColor)!=null?i:e.color}},[t.default()])};return()=>{const{type:i,vertical:s}=e;return H("div",{class:on([i,{vertical:s}]),"aria-live":"polite","aria-busy":!0},[o(),r()])}}});const e6=je(X8),[t6,st]=X2("button"),n6=Te({},J4,{tag:g2("button"),text:String,icon:String,type:g2("default"),size:g2("normal"),color:String,block:Boolean,plain:Boolean,round:Boolean,square:Boolean,loading:Boolean,hairline:Boolean,disabled:Boolean,iconPrefix:String,nativeType:g2("button"),loadingSize:j2,loadingText:String,loadingType:String,iconPosition:g2("left")});var o6=f1({name:t6,props:n6,emits:["click"],setup(e,{emit:t,slots:n}){const o=Q4(),r=()=>n.loading?n.loading():H(e6,{size:e.loadingSize,type:e.loadingType,class:st("loading")},null),i=()=>{if(e.loading)return r();if(n.icon)return H("div",{class:st("icon")},[n.icon()]);if(e.icon)return H(X4,{name:e.icon,class:st("icon"),classPrefix:e.iconPrefix},null)},s=()=>{let a;if(e.loading?a=e.loadingText:a=n.default?n.default():e.text,a)return H("span",{class:st("text")},[a])},l=()=>{const{color:a,plain:k}=e;if(a){const u={color:k?a:"white"};return k||(u.background=a),a.includes("gradient")?u.border=0:u.borderColor=a,u}},d=a=>{e.loading?ii(a):e.disabled||(t("click",a),o())};return()=>{const{tag:a,type:k,size:u,block:h,round:p,plain:C,square:f,loading:m,disabled:x,hairline:w,nativeType:D,iconPosition:v}=e,j=[st([k,u,{plain:C,block:h,round:p,square:f,loading:m,disabled:x,hairline:w}]),{[y8]:w}];return H(a,{type:D,class:j,style:l(),disabled:x,onClick:d},{default:()=>[H("div",{class:st("content")},[v==="left"&&i(),s(),v==="right"&&i()])]})}}});const kr=je(o6),[r6,i6]=X2("action-bar-button"),s6=Te({},J4,{type:String,text:String,icon:String,color:String,loading:Boolean,disabled:Boolean});var l6=f1({name:r6,props:s6,setup(e,{slots:t}){const n=Q4(),{parent:o,index:r}=l8(K4),i=N(()=>{if(o){const l=o.children[r.value-1];return!(l&&"isButton"in l)}}),s=N(()=>{if(o){const l=o.children[r.value+1];return!(l&&"isButton"in l)}});return Y4({isButton:!0}),()=>{const{type:l,icon:d,text:a,color:k,loading:u,disabled:h}=e;return H(kr,{class:i6([l,{last:s.value,first:i.value}]),size:"large",type:l,icon:d,color:k,loading:u,disabled:h,onClick:n},{default:()=>[t.default?t.default():a]})}}});const b0=je(l6),li={show:Boolean,zIndex:j2,overlay:A2,duration:j2,teleport:[String,Object],lockScroll:A2,lazyRender:A2,beforeClose:Function,overlayProps:Object,overlayStyle:Object,overlayClass:oi,transitionAppear:Boolean,closeOnClickOverlay:A2},d6=Object.keys(li);function a6(e,t){return e>t?"horizontal":t>e?"vertical":""}function k6(){const e=K(0),t=K(0),n=K(0),o=K(0),r=K(0),i=K(0),s=K(""),l=K(!0),d=()=>s.value==="vertical",a=()=>s.value==="horizontal",k=()=>{n.value=0,o.value=0,r.value=0,i.value=0,s.value="",l.value=!0};return{move:p=>{const C=p.touches[0];n.value=(C.clientX<0?0:C.clientX)-e.value,o.value=C.clientY-t.value,r.value=Math.abs(n.value),i.value=Math.abs(o.value);const f=10;(!s.value||r.valueL0||i.value>L0)&&(l.value=!1)},start:p=>{k(),e.value=p.touches[0].clientX,t.value=p.touches[0].clientY},reset:k,startX:e,startY:t,deltaX:n,deltaY:o,offsetX:r,offsetY:i,direction:s,isVertical:d,isHorizontal:a,isTap:l}}let At=0;const Z0="van-overflow-hidden";function u6(e,t){const n=k6(),o="01",r="10",i=k=>{n.move(k);const u=n.deltaY.value>0?r:o;let h=dr(k.target,e.value);for(;h.scrollHeight<=h.offsetHeight&&h!==e.value&&h.parentElement;)h=dr(h.parentElement,e.value);const{scrollHeight:p,offsetHeight:C,scrollTop:f}=h;let m="11";f===0?m=C>=p?"00":"01":f+C>=p&&(m="10"),m!=="11"&&n.isVertical()&&!(parseInt(m,2)&parseInt(u,2))&&ii(k,!0)},s=()=>{document.addEventListener("touchstart",n.start),document.addEventListener("touchmove",i,{passive:!1}),At||document.body.classList.add(Z0),At++},l=()=>{At&&(document.removeEventListener("touchstart",n.start),document.removeEventListener("touchmove",i),At--,At||document.body.classList.remove(Z0))},d=()=>t()&&s(),a=()=>t()&&l();R4(d),qo(a),Pe(a),V1(t,k=>{k?s():l()})}function el(e){const t=K(!1);return V1(e,n=>{n&&(t.value=n)},{immediate:!0}),n=>()=>t.value?n():null}const _0=()=>{var e;const{scopeId:t}=((e=Z2())==null?void 0:e.vnode)||{};return t?{[t]:""}:null},[h6,p6]=X2("overlay"),c6={show:Boolean,zIndex:j2,duration:j2,className:oi,lockScroll:A2,lazyRender:A2,customStyle:Object,teleport:[String,Object]};var w6=f1({name:h6,inheritAttrs:!1,props:c6,setup(e,{attrs:t,slots:n}){const o=K(),r=el(()=>e.show||!e.lazyRender),i=l=>{e.lockScroll&&ii(l,!0)},s=r(()=>{var l;const d=Te(v8(e.zIndex),e.customStyle);return Qe(e.duration)&&(d.animationDuration=`${e.duration}s`),Fr(H("div",Mt({ref:o,style:d,class:[p6(),e.className]},t),[(l=n.default)==null?void 0:l.call(n)]),[[ti,e.show]])});return $4("touchmove",i,{target:o}),()=>{const l=H(Yo,{name:"van-fade",appear:!0},{default:s});return e.teleport?H(nt,{to:e.teleport},{default:()=>[l]}):l}}});const C6=je(w6),g6=Te({},li,{round:Boolean,position:g2("center"),closeIcon:g2("cross"),closeable:Boolean,transition:String,iconPrefix:String,closeOnPopstate:Boolean,closeIconPosition:g2("top-right"),destroyOnClose:Boolean,safeAreaInsetTop:Boolean,safeAreaInsetBottom:Boolean}),[v6,B0]=X2("popup");var f6=f1({name:v6,inheritAttrs:!1,props:g6,emits:["open","close","opened","closed","keydown","update:show","clickOverlay","clickCloseIcon"],setup(e,{emit:t,attrs:n,slots:o}){let r,i;const s=K(),l=K(),d=el(()=>e.show||!e.lazyRender),a=N(()=>{const L={zIndex:s.value};if(Qe(e.duration)){const b=e.position==="center"?"animationDuration":"transitionDuration";L[b]=`${e.duration}s`}return L}),k=()=>{r||(r=!0,s.value=e.zIndex!==void 0?+e.zIndex:F8(),t("open"))},u=()=>{r&&z4(e.beforeClose,{done(){r=!1,t("close"),t("update:show",!1)}})},h=L=>{t("clickOverlay",L),e.closeOnClickOverlay&&u()},p=()=>{if(e.overlay){const L=Te({show:e.show,class:e.overlayClass,zIndex:s.value,duration:e.duration,customStyle:e.overlayStyle,role:e.closeOnClickOverlay?"button":void 0,tabindex:e.closeOnClickOverlay?0:void 0},e.overlayProps);return H(C6,Mt(L,_0(),{onClick:h}),{default:o["overlay-content"]})}},C=L=>{t("clickCloseIcon",L),u()},f=()=>{if(e.closeable)return H(X4,{role:"button",tabindex:0,name:e.closeIcon,class:[B0("close-icon",e.closeIconPosition),b8],classPrefix:e.iconPrefix,onClick:C},null)};let m;const x=()=>{m&&clearTimeout(m),m=setTimeout(()=>{t("opened")})},w=()=>t("closed"),D=L=>t("keydown",L),v=d(()=>{var L;const{destroyOnClose:b,round:O,position:V,safeAreaInsetTop:P,safeAreaInsetBottom:G,show:T}=e;if(!(!T&&b))return Fr(H("div",Mt({ref:l,style:a.value,role:"dialog",tabindex:0,class:[B0({round:O,[V]:V}),{"van-safe-area-top":P,"van-safe-area-bottom":G}],onKeydown:D},n,_0()),[(L=o.default)==null?void 0:L.call(o),f()]),[[ti,T]])}),j=()=>{const{position:L,transition:b,transitionAppear:O}=e,V=L==="center"?"van-fade":`van-popup-slide-${L}`;return H(Yo,{name:b||V,appear:O,onAfterEnter:x,onAfterLeave:w},{default:v})};return V1(()=>e.show,L=>{L&&!r&&(k(),n.tabindex===0&&a2(()=>{var b;(b=l.value)==null||b.focus()})),!L&&r&&(r=!1,t("close"))}),Y4({popupRef:l}),u6(l,()=>e.show&&e.lockScroll),$4("popstate",()=>{e.closeOnPopstate&&(u(),i=!1)}),F2(()=>{e.show&&k()}),qr(()=>{i&&(t("update:show",!0),i=!1)}),qo(()=>{e.show&&e.teleport&&(u(),i=!0)}),ke(W4,()=>e.show),()=>e.teleport?H(nt,{to:e.teleport},{default:()=>[p(),j()]}):H(v1,null,[p(),j()])}});const m6=je(f6),[M6,_2,Fn]=X2("dialog"),j6=Te({},li,{title:String,theme:String,width:j2,message:[String,Function],callback:Function,allowHtml:Boolean,className:oi,transition:g2("van-dialog-bounce"),messageAlign:String,closeOnPopstate:A2,showCancelButton:Boolean,cancelButtonText:String,cancelButtonColor:String,cancelButtonDisabled:Boolean,confirmButtonText:String,confirmButtonColor:String,confirmButtonDisabled:Boolean,showConfirmButton:A2,closeOnClickOverlay:Boolean,keyboardEnabled:A2,destroyOnClose:Boolean}),x6=[...d6,"transition","closeOnPopstate","destroyOnClose"];var D6=f1({name:M6,props:j6,emits:["confirm","cancel","keydown","update:show"],setup(e,{emit:t,slots:n}){const o=K(),r=I1({confirm:!1,cancel:!1}),i=x=>t("update:show",x),s=x=>{var w;i(!1),(w=e.callback)==null||w.call(e,x)},l=x=>()=>{e.show&&(t(x),e.beforeClose?(r[x]=!0,z4(e.beforeClose,{args:[x],done(){s(x),r[x]=!1},canceled(){r[x]=!1}})):s(x))},d=l("cancel"),a=l("confirm"),k=S7(x=>{var w,D;if(!e.keyboardEnabled||x.target!==((D=(w=o.value)==null?void 0:w.popupRef)==null?void 0:D.value))return;({Enter:e.showConfirmButton?a:lr,Escape:e.showCancelButton?d:lr})[x.key](),t("keydown",x)},["enter","esc"]),u=()=>{const x=n.title?n.title():e.title;if(x)return H("div",{class:_2("header",{isolated:!e.message&&!n.default})},[x])},h=x=>{const{message:w,allowHtml:D,messageAlign:v}=e,j=_2("message",{"has-title":x,[v]:v}),L=jo(w)?w():w;return D&&typeof L=="string"?H("div",{class:j,innerHTML:L},null):H("div",{class:j},[L])},p=()=>{if(n.default)return H("div",{class:_2("content")},[n.default()]);const{title:x,message:w,allowHtml:D}=e;if(w){const v=!!(x||n.title);return H("div",{key:D?1:0,class:_2("content",{isolated:!v})},[h(v)])}},C=()=>H("div",{class:[H8,_2("footer")]},[e.showCancelButton&&H(kr,{size:"large",text:e.cancelButtonText||Fn("cancel"),class:_2("cancel"),style:{color:e.cancelButtonColor},loading:r.cancel,disabled:e.cancelButtonDisabled,onClick:d},null),e.showConfirmButton&&H(kr,{size:"large",text:e.confirmButtonText||Fn("confirm"),class:[_2("confirm"),{[V8]:e.showCancelButton}],style:{color:e.confirmButtonColor},loading:r.confirm,disabled:e.confirmButtonDisabled,onClick:a},null)]),f=()=>H(O8,{class:_2("footer")},{default:()=>[e.showCancelButton&&H(b0,{type:"warning",text:e.cancelButtonText||Fn("cancel"),class:_2("cancel"),color:e.cancelButtonColor,loading:r.cancel,disabled:e.cancelButtonDisabled,onClick:d},null),e.showConfirmButton&&H(b0,{type:"danger",text:e.confirmButtonText||Fn("confirm"),class:_2("confirm"),color:e.confirmButtonColor,loading:r.confirm,disabled:e.confirmButtonDisabled,onClick:a},null)]}),m=()=>n.footer?n.footer():e.theme==="round-button"?f():C();return()=>{const{width:x,title:w,theme:D,message:v,className:j}=e;return H(m6,Mt({ref:o,role:"dialog",class:[_2([D]),j],style:{width:V2(x)},tabindex:0,"aria-labelledby":w||v,onKeydown:k,"onUpdate:show":i},r8(e,x6)),{default:()=>[u(),p(),m()]})}}});const tl=je(D6);var L6={name:"نام",tel:"تلفن",save:"ذخیره",clear:"پاک کردن",undo:"واگرد",cancel:"انصراف",confirm:"تایید",delete:"حذف",loading:"در حال بارگزاری ...",noCoupon:"بدون کوپن",nameEmpty:"لطفا نام را وارد کنید",addContact:"افزودن مخاطب",telInvalid:"شماره تلفن ناقص",vanCalendar:{end:"پایان",start:"شروع",title:"تقویم",weekdays:["شنبه","یکشنبه","دوشنبه","سه‌شنبه","چهارشنبه","پنج‌شنبه","جمعه"],monthTitle:(e,t)=>`${e}/${t}`,rangePrompt:e=>`بیشتر از ${e} روز انتخاب کنید`},vanCascader:{select:"انتخاب"},vanPagination:{prev:"قبلی",next:"بعدی"},vanPullRefresh:{pulling:"بکشید تا تازه شود ...",loosing:"رها کنید تا تازه شود ..."},vanSubmitBar:{label:"مجموع:"},vanCoupon:{unlimited:"نامحدود",discount:e=>`${e*10}% تخفیف`,condition:e=>`حداقل ${e}`},vanCouponCell:{title:"کوپن",count:e=>`شما ${e} کوپن دارید`},vanCouponList:{exchange:"تبادل",close:"بستن",enable:"موجود",disabled:"ناموجود",placeholder:"کد کوپن"},vanAddressEdit:{area:"محدوده",postal:"کد پستی",areaEmpty:"لطفا یک منطقه برای دریافت انتخاب کنید",addressEmpty:"آدرس نمی‌تواند خالی باشد",postalEmpty:"کد پستی نامعتبر است",addressDetail:"آدرس",defaultAddress:"تنظیم به عنوان آدرس پیش فرض"},vanAddressList:{add:"افزودن آدرس جدید"}};/*! * vue-router v4.6.4 * (c) 2025 Eduardo San Martin Morote * @license MIT - */const kt=typeof document<"u";function nl(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function H6(e){return e.__esModule||e[Symbol.toStringTag]==="Module"||e.default&&nl(e.default)}const D1=Object.assign;function M9(e,t){const n={};for(const o in t){const r=t[o];n[o]=$2(r)?r.map(e):e(r)}return n}const rn=()=>{},$2=Array.isArray;function S0(e,t){const n={};for(const o in e)n[o]=o in t?t[o]:e[o];return n}const ol=/#/g,V6=/&/g,y6=/\//g,b6=/=/g,Z6=/\?/g,rl=/\+/g,_6=/%5B/g,B6=/%5D/g,il=/%5E/g,S6=/%60/g,sl=/%7B/g,E6=/%7C/g,ll=/%7D/g,O6=/%20/g;function di(e){return e==null?"":encodeURI(""+e).replace(E6,"|").replace(_6,"[").replace(B6,"]")}function A6(e){return di(e).replace(sl,"{").replace(ll,"}").replace(il,"^")}function ur(e){return di(e).replace(rl,"%2B").replace(O6,"+").replace(ol,"%23").replace(V6,"%26").replace(S6,"`").replace(sl,"{").replace(ll,"}").replace(il,"^")}function P6(e){return ur(e).replace(b6,"%3D")}function T6(e){return di(e).replace(ol,"%23").replace(Z6,"%3F")}function I6(e){return T6(e).replace(y6,"%2F")}function vn(e){if(e==null)return null;try{return decodeURIComponent(""+e)}catch{}return""+e}const R6=/\/$/,$6=e=>e.replace(R6,"");function j9(e,t,n="/"){let o,r={},i="",s="";const l=t.indexOf("#");let d=t.indexOf("?");return d=l>=0&&d>l?-1:d,d>=0&&(o=t.slice(0,d),i=t.slice(d,l>0?l:t.length),r=e(i.slice(1))),l>=0&&(o=o||t.slice(0,l),s=t.slice(l,t.length)),o=q6(o??t,n),{fullPath:o+i+s,path:o,query:r,hash:vn(s)}}function F6(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function E0(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function N6(e,t,n){const o=t.matched.length-1,r=n.matched.length-1;return o>-1&&o===r&&Dt(t.matched[o],n.matched[r])&&dl(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function Dt(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function dl(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(var n in e)if(!U6(e[n],t[n]))return!1;return!0}function U6(e,t){return $2(e)?O0(e,t):$2(t)?O0(t,e):(e==null?void 0:e.valueOf())===(t==null?void 0:t.valueOf())}function O0(e,t){return $2(t)?e.length===t.length&&e.every((n,o)=>n===t[o]):e.length===1&&e[0]===t}function q6(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),o=e.split("/"),r=o[o.length-1];(r===".."||r===".")&&o.push("");let i=n.length-1,s,l;for(s=0;s1&&i--;else break;return n.slice(0,i).join("/")+"/"+o.slice(s).join("/")}const He={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0};let hr=function(e){return e.pop="pop",e.push="push",e}({}),x9=function(e){return e.back="back",e.forward="forward",e.unknown="",e}({});function z6(e){if(!e)if(kt){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),$6(e)}const W6=/^[^#]+#/;function G6(e,t){return e.replace(W6,"#")+t}function K6(e,t){const n=document.documentElement.getBoundingClientRect(),o=e.getBoundingClientRect();return{behavior:t.behavior,left:o.left-n.left-(t.left||0),top:o.top-n.top-(t.top||0)}}const Jo=()=>({left:window.scrollX,top:window.scrollY});function Y6(e){let t;if("el"in e){const n=e.el,o=typeof n=="string"&&n.startsWith("#"),r=typeof n=="string"?o?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!r)return;t=K6(r,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.scrollX,t.top!=null?t.top:window.scrollY)}function A0(e,t){return(history.state?history.state.position-t:-1)+e}const pr=new Map;function Q6(e,t){pr.set(e,t)}function J6(e){const t=pr.get(e);return pr.delete(e),t}function X6(e){return typeof e=="string"||e&&typeof e=="object"}function al(e){return typeof e=="string"||typeof e=="symbol"}let A1=function(e){return e[e.MATCHER_NOT_FOUND=1]="MATCHER_NOT_FOUND",e[e.NAVIGATION_GUARD_REDIRECT=2]="NAVIGATION_GUARD_REDIRECT",e[e.NAVIGATION_ABORTED=4]="NAVIGATION_ABORTED",e[e.NAVIGATION_CANCELLED=8]="NAVIGATION_CANCELLED",e[e.NAVIGATION_DUPLICATED=16]="NAVIGATION_DUPLICATED",e}({});const kl=Symbol("");A1.MATCHER_NOT_FOUND+"",A1.NAVIGATION_GUARD_REDIRECT+"",A1.NAVIGATION_ABORTED+"",A1.NAVIGATION_CANCELLED+"",A1.NAVIGATION_DUPLICATED+"";function Lt(e,t){return D1(new Error,{type:e,[kl]:!0},t)}function te(e,t){return e instanceof Error&&kl in e&&(t==null||!!(e.type&t))}const ek=["params","query","hash"];function tk(e){if(typeof e=="string")return e;if(e.path!=null)return e.path;const t={};for(const n of ek)n in e&&(t[n]=e[n]);return JSON.stringify(t,null,2)}function nk(e){const t={};if(e===""||e==="?")return t;const n=(e[0]==="?"?e.slice(1):e).split("&");for(let o=0;or&&ur(r)):[o&&ur(o)]).forEach(r=>{r!==void 0&&(t+=(t.length?"&":"")+n,r!=null&&(t+="="+r))})}return t}function ok(e){const t={};for(const n in e){const o=e[n];o!==void 0&&(t[n]=$2(o)?o.map(r=>r==null?null:""+r):o==null?o:""+o)}return t}const rk=Symbol(""),T0=Symbol(""),Xo=Symbol(""),ai=Symbol(""),cr=Symbol("");function Pt(){let e=[];function t(o){return e.push(o),()=>{const r=e.indexOf(o);r>-1&&e.splice(r,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function _e(e,t,n,o,r,i=s=>s()){const s=o&&(o.enterCallbacks[r]=o.enterCallbacks[r]||[]);return()=>new Promise((l,d)=>{const a=h=>{h===!1?d(Lt(A1.NAVIGATION_ABORTED,{from:n,to:t})):h instanceof Error?d(h):X6(h)?d(Lt(A1.NAVIGATION_GUARD_REDIRECT,{from:t,to:h})):(s&&o.enterCallbacks[r]===s&&typeof h=="function"&&s.push(h),l())},k=i(()=>e.call(o&&o.instances[r],t,n,a));let u=Promise.resolve(k);e.length<3&&(u=u.then(a)),u.catch(h=>d(h))})}function D9(e,t,n,o,r=i=>i()){const i=[];for(const s of e)for(const l in s.components){let d=s.components[l];if(!(t!=="beforeRouteEnter"&&!s.instances[l]))if(nl(d)){const a=(d.__vccOpts||d)[t];a&&i.push(_e(a,n,o,s,l,r))}else{let a=d();i.push(()=>a.then(k=>{if(!k)throw new Error(`Couldn't resolve component "${l}" at "${s.path}"`);const u=H6(k)?k.default:k;s.mods[l]=k,s.components[l]=u;const h=(u.__vccOpts||u)[t];return h&&_e(h,n,o,s,l,r)()}))}}return i}function ik(e,t){const n=[],o=[],r=[],i=Math.max(t.matched.length,e.matched.length);for(let s=0;sDt(a,l))?o.push(l):n.push(l));const d=e.matched[s];d&&(t.matched.find(a=>Dt(a,d))||r.push(d))}return[n,o,r]}/*! + */const kt=typeof document<"u";function nl(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function H6(e){return e.__esModule||e[Symbol.toStringTag]==="Module"||e.default&&nl(e.default)}const D1=Object.assign;function M9(e,t){const n={};for(const o in t){const r=t[o];n[o]=$2(r)?r.map(e):e(r)}return n}const rn=()=>{},$2=Array.isArray;function S0(e,t){const n={};for(const o in e)n[o]=o in t?t[o]:e[o];return n}const ol=/#/g,V6=/&/g,y6=/\//g,b6=/=/g,Z6=/\?/g,rl=/\+/g,_6=/%5B/g,B6=/%5D/g,il=/%5E/g,S6=/%60/g,sl=/%7B/g,E6=/%7C/g,ll=/%7D/g,O6=/%20/g;function di(e){return e==null?"":encodeURI(""+e).replace(E6,"|").replace(_6,"[").replace(B6,"]")}function A6(e){return di(e).replace(sl,"{").replace(ll,"}").replace(il,"^")}function ur(e){return di(e).replace(rl,"%2B").replace(O6,"+").replace(ol,"%23").replace(V6,"%26").replace(S6,"`").replace(sl,"{").replace(ll,"}").replace(il,"^")}function P6(e){return ur(e).replace(b6,"%3D")}function T6(e){return di(e).replace(ol,"%23").replace(Z6,"%3F")}function I6(e){return T6(e).replace(y6,"%2F")}function vn(e){if(e==null)return null;try{return decodeURIComponent(""+e)}catch{}return""+e}const R6=/\/$/,$6=e=>e.replace(R6,"");function j9(e,t,n="/"){let o,r={},i="",s="";const l=t.indexOf("#");let d=t.indexOf("?");return d=l>=0&&d>l?-1:d,d>=0&&(o=t.slice(0,d),i=t.slice(d,l>0?l:t.length),r=e(i.slice(1))),l>=0&&(o=o||t.slice(0,l),s=t.slice(l,t.length)),o=q6(o??t,n),{fullPath:o+i+s,path:o,query:r,hash:vn(s)}}function F6(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function E0(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function N6(e,t,n){const o=t.matched.length-1,r=n.matched.length-1;return o>-1&&o===r&&Dt(t.matched[o],n.matched[r])&&dl(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function Dt(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function dl(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(var n in e)if(!U6(e[n],t[n]))return!1;return!0}function U6(e,t){return $2(e)?O0(e,t):$2(t)?O0(t,e):(e==null?void 0:e.valueOf())===(t==null?void 0:t.valueOf())}function O0(e,t){return $2(t)?e.length===t.length&&e.every((n,o)=>n===t[o]):e.length===1&&e[0]===t}function q6(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),o=e.split("/"),r=o[o.length-1];(r===".."||r===".")&&o.push("");let i=n.length-1,s,l;for(s=0;s1&&i--;else break;return n.slice(0,i).join("/")+"/"+o.slice(s).join("/")}const He={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0};let hr=function(e){return e.pop="pop",e.push="push",e}({}),x9=function(e){return e.back="back",e.forward="forward",e.unknown="",e}({});function z6(e){if(!e)if(kt){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),$6(e)}const W6=/^[^#]+#/;function G6(e,t){return e.replace(W6,"#")+t}function K6(e,t){const n=document.documentElement.getBoundingClientRect(),o=e.getBoundingClientRect();return{behavior:t.behavior,left:o.left-n.left-(t.left||0),top:o.top-n.top-(t.top||0)}}const Qo=()=>({left:window.scrollX,top:window.scrollY});function Y6(e){let t;if("el"in e){const n=e.el,o=typeof n=="string"&&n.startsWith("#"),r=typeof n=="string"?o?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!r)return;t=K6(r,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.scrollX,t.top!=null?t.top:window.scrollY)}function A0(e,t){return(history.state?history.state.position-t:-1)+e}const pr=new Map;function J6(e,t){pr.set(e,t)}function Q6(e){const t=pr.get(e);return pr.delete(e),t}function X6(e){return typeof e=="string"||e&&typeof e=="object"}function al(e){return typeof e=="string"||typeof e=="symbol"}let P1=function(e){return e[e.MATCHER_NOT_FOUND=1]="MATCHER_NOT_FOUND",e[e.NAVIGATION_GUARD_REDIRECT=2]="NAVIGATION_GUARD_REDIRECT",e[e.NAVIGATION_ABORTED=4]="NAVIGATION_ABORTED",e[e.NAVIGATION_CANCELLED=8]="NAVIGATION_CANCELLED",e[e.NAVIGATION_DUPLICATED=16]="NAVIGATION_DUPLICATED",e}({});const kl=Symbol("");P1.MATCHER_NOT_FOUND+"",P1.NAVIGATION_GUARD_REDIRECT+"",P1.NAVIGATION_ABORTED+"",P1.NAVIGATION_CANCELLED+"",P1.NAVIGATION_DUPLICATED+"";function Lt(e,t){return D1(new Error,{type:e,[kl]:!0},t)}function te(e,t){return e instanceof Error&&kl in e&&(t==null||!!(e.type&t))}const ek=["params","query","hash"];function tk(e){if(typeof e=="string")return e;if(e.path!=null)return e.path;const t={};for(const n of ek)n in e&&(t[n]=e[n]);return JSON.stringify(t,null,2)}function nk(e){const t={};if(e===""||e==="?")return t;const n=(e[0]==="?"?e.slice(1):e).split("&");for(let o=0;or&&ur(r)):[o&&ur(o)]).forEach(r=>{r!==void 0&&(t+=(t.length?"&":"")+n,r!=null&&(t+="="+r))})}return t}function ok(e){const t={};for(const n in e){const o=e[n];o!==void 0&&(t[n]=$2(o)?o.map(r=>r==null?null:""+r):o==null?o:""+o)}return t}const rk=Symbol(""),T0=Symbol(""),Xo=Symbol(""),ai=Symbol(""),cr=Symbol("");function Pt(){let e=[];function t(o){return e.push(o),()=>{const r=e.indexOf(o);r>-1&&e.splice(r,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function _e(e,t,n,o,r,i=s=>s()){const s=o&&(o.enterCallbacks[r]=o.enterCallbacks[r]||[]);return()=>new Promise((l,d)=>{const a=h=>{h===!1?d(Lt(P1.NAVIGATION_ABORTED,{from:n,to:t})):h instanceof Error?d(h):X6(h)?d(Lt(P1.NAVIGATION_GUARD_REDIRECT,{from:t,to:h})):(s&&o.enterCallbacks[r]===s&&typeof h=="function"&&s.push(h),l())},k=i(()=>e.call(o&&o.instances[r],t,n,a));let u=Promise.resolve(k);e.length<3&&(u=u.then(a)),u.catch(h=>d(h))})}function D9(e,t,n,o,r=i=>i()){const i=[];for(const s of e)for(const l in s.components){let d=s.components[l];if(!(t!=="beforeRouteEnter"&&!s.instances[l]))if(nl(d)){const a=(d.__vccOpts||d)[t];a&&i.push(_e(a,n,o,s,l,r))}else{let a=d();i.push(()=>a.then(k=>{if(!k)throw new Error(`Couldn't resolve component "${l}" at "${s.path}"`);const u=H6(k)?k.default:k;s.mods[l]=k,s.components[l]=u;const h=(u.__vccOpts||u)[t];return h&&_e(h,n,o,s,l,r)()}))}}return i}function ik(e,t){const n=[],o=[],r=[],i=Math.max(t.matched.length,e.matched.length);for(let s=0;sDt(a,l))?o.push(l):n.push(l));const d=e.matched[s];d&&(t.matched.find(a=>Dt(a,d))||r.push(d))}return[n,o,r]}/*! * vue-router v4.6.4 * (c) 2025 Eduardo San Martin Morote * @license MIT - */let sk=()=>location.protocol+"//"+location.host;function ul(e,t){const{pathname:n,search:o,hash:r}=t,i=e.indexOf("#");if(i>-1){let s=r.includes(e.slice(i))?e.slice(i).length:1,l=r.slice(s);return l[0]!=="/"&&(l="/"+l),E0(l,"")}return E0(n,e)+o+r}function lk(e,t,n,o){let r=[],i=[],s=null;const l=({state:h})=>{const p=ul(e,location),C=n.value,f=t.value;let m=0;if(h){if(n.value=p,t.value=h,s&&s===C){s=null;return}m=f?h.position-f.position:0}else o(p);r.forEach(x=>{x(n.value,C,{delta:m,type:hr.pop,direction:m?m>0?x9.forward:x9.back:x9.unknown})})};function d(){s=n.value}function a(h){r.push(h);const p=()=>{const C=r.indexOf(h);C>-1&&r.splice(C,1)};return i.push(p),p}function k(){if(document.visibilityState==="hidden"){const{history:h}=window;if(!h.state)return;h.replaceState(D1({},h.state,{scroll:Jo()}),"")}}function u(){for(const h of i)h();i=[],window.removeEventListener("popstate",l),window.removeEventListener("pagehide",k),document.removeEventListener("visibilitychange",k)}return window.addEventListener("popstate",l),window.addEventListener("pagehide",k),document.addEventListener("visibilitychange",k),{pauseListeners:d,listen:a,destroy:u}}function I0(e,t,n,o=!1,r=!1){return{back:e,current:t,forward:n,replaced:o,position:window.history.length,scroll:r?Jo():null}}function dk(e){const{history:t,location:n}=window,o={value:ul(e,n)},r={value:t.state};r.value||i(o.value,{back:null,current:o.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function i(d,a,k){const u=e.indexOf("#"),h=u>-1?(n.host&&document.querySelector("base")?e:e.slice(u))+d:sk()+e+d;try{t[k?"replaceState":"pushState"](a,"",h),r.value=a}catch(p){console.error(p),n[k?"replace":"assign"](h)}}function s(d,a){i(d,D1({},t.state,I0(r.value.back,d,r.value.forward,!0),a,{position:r.value.position}),!0),o.value=d}function l(d,a){const k=D1({},r.value,t.state,{forward:d,scroll:Jo()});i(k.current,k,!0),i(d,D1({},I0(o.value,d,null),{position:k.position+1},a),!1),o.value=d}return{location:o,state:r,push:l,replace:s}}function ak(e){e=z6(e);const t=dk(e),n=lk(e,t.state,t.location,t.replace);function o(i,s=!0){s||n.pauseListeners(),history.go(i)}const r=D1({location:"",base:e,go:o,createHref:G6.bind(null,e)},t,n);return Object.defineProperty(r,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(r,"state",{enumerable:!0,get:()=>t.state.value}),r}let ze=function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.Group=2]="Group",e}({});var U1=function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.ParamRegExp=2]="ParamRegExp",e[e.ParamRegExpEnd=3]="ParamRegExpEnd",e[e.EscapeNext=4]="EscapeNext",e}(U1||{});const kk={type:ze.Static,value:""},uk=/[a-zA-Z0-9_]/;function hk(e){if(!e)return[[]];if(e==="/")return[[kk]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(p){throw new Error(`ERR (${n})/"${a}": ${p}`)}let n=U1.Static,o=n;const r=[];let i;function s(){i&&r.push(i),i=[]}let l=0,d,a="",k="";function u(){a&&(n===U1.Static?i.push({type:ze.Static,value:a}):n===U1.Param||n===U1.ParamRegExp||n===U1.ParamRegExpEnd?(i.length>1&&(d==="*"||d==="+")&&t(`A repeatable param (${a}) must be alone in its segment. eg: '/:ids+.`),i.push({type:ze.Param,value:a,regexp:k,repeatable:d==="*"||d==="+",optional:d==="*"||d==="?"})):t("Invalid state to consume buffer"),a="")}function h(){a+=d}for(;lt.length?t.length===1&&t[0]===s2.Static+s2.Segment?1:-1:0}function hl(e,t){let n=0;const o=e.score,r=t.score;for(;n0&&t[t.length-1]<0}const gk={strict:!1,end:!0,sensitive:!1};function vk(e,t,n){const o=wk(hk(e.path),n),r=D1(o,{record:e,parent:t,children:[],alias:[]});return t&&!r.record.aliasOf==!t.record.aliasOf&&t.children.push(r),r}function fk(e,t){const n=[],o=new Map;t=S0(gk,t);function r(u){return o.get(u)}function i(u,h,p){const C=!p,f=N0(u);f.aliasOf=p&&p.record;const m=S0(t,u),x=[f];if("alias"in u){const v=typeof u.alias=="string"?[u.alias]:u.alias;for(const j of v)x.push(N0(D1({},f,{components:p?p.record.components:f.components,path:j,aliasOf:p?p.record:f})))}let w,D;for(const v of x){const{path:j}=v;if(h&&j[0]!=="/"){const L=h.record.path,b=L[L.length-1]==="/"?"":"/";v.path=h.record.path+(j&&b+j)}if(w=vk(v,h,m),p?p.alias.push(w):(D=D||w,D!==w&&D.alias.push(w),C&&u.name&&!U0(w)&&s(u.name)),pl(w)&&d(w),f.children){const L=f.children;for(let b=0;b{s(D)}:rn}function s(u){if(al(u)){const h=o.get(u);h&&(o.delete(u),n.splice(n.indexOf(h),1),h.children.forEach(s),h.alias.forEach(s))}else{const h=n.indexOf(u);h>-1&&(n.splice(h,1),u.record.name&&o.delete(u.record.name),u.children.forEach(s),u.alias.forEach(s))}}function l(){return n}function d(u){const h=jk(u,n);n.splice(h,0,u),u.record.name&&!U0(u)&&o.set(u.record.name,u)}function a(u,h){let p,C={},f,m;if("name"in u&&u.name){if(p=o.get(u.name),!p)throw Lt(A1.MATCHER_NOT_FOUND,{location:u});m=p.record.name,C=D1(F0(h.params,p.keys.filter(D=>!D.optional).concat(p.parent?p.parent.keys.filter(D=>D.optional):[]).map(D=>D.name)),u.params&&F0(u.params,p.keys.map(D=>D.name))),f=p.stringify(C)}else if(u.path!=null)f=u.path,p=n.find(D=>D.re.test(f)),p&&(C=p.parse(f),m=p.record.name);else{if(p=h.name?o.get(h.name):n.find(D=>D.re.test(h.path)),!p)throw Lt(A1.MATCHER_NOT_FOUND,{location:u,currentLocation:h});m=p.record.name,C=D1({},h.params,u.params),f=p.stringify(C)}const x=[];let w=p;for(;w;)x.unshift(w.record),w=w.parent;return{name:m,path:f,params:C,matched:x,meta:Mk(x)}}e.forEach(u=>i(u));function k(){n.length=0,o.clear()}return{addRoute:i,resolve:a,removeRoute:s,clearRoutes:k,getRoutes:l,getRecordMatcher:r}}function F0(e,t){const n={};for(const o of t)o in e&&(n[o]=e[o]);return n}function N0(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:mk(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function mk(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const o in e.components)t[o]=typeof n=="object"?n[o]:n;return t}function U0(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function Mk(e){return e.reduce((t,n)=>D1(t,n.meta),{})}function jk(e,t){let n=0,o=t.length;for(;n!==o;){const i=n+o>>1;hl(e,t[i])<0?o=i:n=i+1}const r=xk(e);return r&&(o=t.lastIndexOf(r,o-1)),o}function xk(e){let t=e;for(;t=t.parent;)if(pl(t)&&hl(e,t)===0)return t}function pl({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function q0(e){const t=N1(Xo),n=N1(ai),o=N(()=>{const d=t1(e.to);return t.resolve(d)}),r=N(()=>{const{matched:d}=o.value,{length:a}=d,k=d[a-1],u=n.matched;if(!k||!u.length)return-1;const h=u.findIndex(Dt.bind(null,k));if(h>-1)return h;const p=z0(d[a-2]);return a>1&&z0(k)===p&&u[u.length-1].path!==p?u.findIndex(Dt.bind(null,d[a-2])):h}),i=N(()=>r.value>-1&&yk(n.params,o.value.params)),s=N(()=>r.value>-1&&r.value===n.matched.length-1&&dl(n.params,o.value.params));function l(d={}){if(Vk(d)){const a=t[t1(e.replace)?"replace":"push"](t1(e.to)).catch(rn);return e.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>a),a}return Promise.resolve()}return{route:o,href:N(()=>o.value.href),isActive:i,isExactActive:s,navigate:l}}function Dk(e){return e.length===1?e[0]:e}const Lk=f1({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"},viewTransition:Boolean},useLink:q0,setup(e,{slots:t}){const n=I1(q0(e)),{options:o}=N1(Xo),r=N(()=>({[W0(e.activeClass,o.linkActiveClass,"router-link-active")]:n.isActive,[W0(e.exactActiveClass,o.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const i=t.default&&Dk(t.default(n));return e.custom?i:gn("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:r.value},i)}}}),Hk=Lk;function Vk(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function yk(e,t){for(const n in t){const o=t[n],r=e[n];if(typeof o=="string"){if(o!==r)return!1}else if(!$2(r)||r.length!==o.length||o.some((i,s)=>i.valueOf()!==r[s].valueOf()))return!1}return!0}function z0(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const W0=(e,t,n)=>e??t??n,bk=f1({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const o=N1(cr),r=N(()=>e.route||o.value),i=N1(T0,0),s=N(()=>{let a=t1(i);const{matched:k}=r.value;let u;for(;(u=k[a])&&!u.components;)a++;return a}),l=N(()=>r.value.matched[s.value]);ke(T0,N(()=>s.value+1)),ke(rk,l),ke(cr,r);const d=K();return V1(()=>[d.value,l.value,e.name],([a,k,u],[h,p,C])=>{k&&(k.instances[u]=a,p&&p!==k&&a&&a===h&&(k.leaveGuards.size||(k.leaveGuards=p.leaveGuards),k.updateGuards.size||(k.updateGuards=p.updateGuards))),a&&k&&(!p||!Dt(k,p)||!h)&&(k.enterCallbacks[u]||[]).forEach(f=>f(a))},{flush:"post"}),()=>{const a=r.value,k=e.name,u=l.value,h=u&&u.components[k];if(!h)return G0(n.default,{Component:h,route:a});const p=u.props[k],C=p?p===!0?a.params:typeof p=="function"?p(a):p:null,m=gn(h,D1({},C,t,{onVnodeUnmounted:x=>{x.component.isUnmounted&&(u.instances[k]=null)},ref:d}));return G0(n.default,{Component:m,route:a})||m}}});function G0(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const Zk=bk;function _k(e){const t=fk(e.routes,e),n=e.parseQuery||nk,o=e.stringifyQuery||P0,r=e.history,i=Pt(),s=Pt(),l=Pt(),d=Rr(He);let a=He;kt&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const k=M9.bind(null,Z=>""+Z),u=M9.bind(null,I6),h=M9.bind(null,vn);function p(Z,F){let R,Q;return al(Z)?(R=t.getRecordMatcher(Z),Q=F):Q=Z,t.addRoute(Q,R)}function C(Z){const F=t.getRecordMatcher(Z);F&&t.removeRoute(F)}function f(){return t.getRoutes().map(Z=>Z.record)}function m(Z){return!!t.getRecordMatcher(Z)}function x(Z,F){if(F=D1({},F||d.value),typeof Z=="string"){const M=j9(n,Z,F.path),_=t.resolve({path:M.path},F),E=r.createHref(M.fullPath);return D1(M,_,{params:h(_.params),hash:vn(M.hash),redirectedFrom:void 0,href:E})}let R;if(Z.path!=null)R=D1({},Z,{path:j9(n,Z.path,F.path).path});else{const M=D1({},Z.params);for(const _ in M)M[_]==null&&delete M[_];R=D1({},Z,{params:u(M)}),F.params=u(F.params)}const Q=t.resolve(R,F),s1=Z.hash||"";Q.params=k(h(Q.params));const c=F6(o,D1({},Z,{hash:A6(s1),path:Q.path})),g=r.createHref(c);return D1({fullPath:c,hash:s1,query:o===P0?ok(Z.query):Z.query||{}},Q,{redirectedFrom:void 0,href:g})}function w(Z){return typeof Z=="string"?j9(n,Z,d.value.path):D1({},Z)}function D(Z,F){if(a!==Z)return Lt(A1.NAVIGATION_CANCELLED,{from:F,to:Z})}function v(Z){return b(Z)}function j(Z){return v(D1(w(Z),{replace:!0}))}function L(Z,F){const R=Z.matched[Z.matched.length-1];if(R&&R.redirect){const{redirect:Q}=R;let s1=typeof Q=="function"?Q(Z,F):Q;return typeof s1=="string"&&(s1=s1.includes("?")||s1.includes("#")?s1=w(s1):{path:s1},s1.params={}),D1({query:Z.query,hash:Z.hash,params:s1.path!=null?{}:Z.params},s1)}}function b(Z,F){const R=a=x(Z),Q=d.value,s1=Z.state,c=Z.force,g=Z.replace===!0,M=L(R,Q);if(M)return b(D1(w(M),{state:typeof M=="object"?D1({},s1,M.state):s1,force:c,replace:g}),F||R);const _=R;_.redirectedFrom=F;let E;return!c&&N6(o,Q,R)&&(E=Lt(A1.NAVIGATION_DUPLICATED,{to:_,from:Q}),H1(Q,Q,!0,!1)),(E?Promise.resolve(E):P(_,Q)).catch(S=>te(S)?te(S,A1.NAVIGATION_GUARD_REDIRECT)?S:y1(S):r1(S,_,Q)).then(S=>{if(S){if(te(S,A1.NAVIGATION_GUARD_REDIRECT))return b(D1({replace:g},w(S.to),{state:typeof S.to=="object"?D1({},s1,S.to.state):s1,force:c}),F||_)}else S=T(_,Q,!0,g,s1);return G(_,Q,S),S})}function O(Z,F){const R=D(Z,F);return R?Promise.reject(R):Promise.resolve()}function V(Z){const F=l1.values().next().value;return F&&typeof F.runWithContext=="function"?F.runWithContext(Z):Z()}function P(Z,F){let R;const[Q,s1,c]=ik(Z,F);R=D9(Q.reverse(),"beforeRouteLeave",Z,F);for(const M of Q)M.leaveGuards.forEach(_=>{R.push(_e(_,Z,F))});const g=O.bind(null,Z,F);return R.push(g),n1(R).then(()=>{R=[];for(const M of i.list())R.push(_e(M,Z,F));return R.push(g),n1(R)}).then(()=>{R=D9(s1,"beforeRouteUpdate",Z,F);for(const M of s1)M.updateGuards.forEach(_=>{R.push(_e(_,Z,F))});return R.push(g),n1(R)}).then(()=>{R=[];for(const M of c)if(M.beforeEnter)if($2(M.beforeEnter))for(const _ of M.beforeEnter)R.push(_e(_,Z,F));else R.push(_e(M.beforeEnter,Z,F));return R.push(g),n1(R)}).then(()=>(Z.matched.forEach(M=>M.enterCallbacks={}),R=D9(c,"beforeRouteEnter",Z,F,V),R.push(g),n1(R))).then(()=>{R=[];for(const M of s.list())R.push(_e(M,Z,F));return R.push(g),n1(R)}).catch(M=>te(M,A1.NAVIGATION_CANCELLED)?M:Promise.reject(M))}function G(Z,F,R){l.list().forEach(Q=>V(()=>Q(Z,F,R)))}function T(Z,F,R,Q,s1){const c=D(Z,F);if(c)return c;const g=F===He,M=kt?history.state:{};R&&(Q||g?r.replace(Z.fullPath,D1({scroll:g&&M&&M.scroll},s1)):r.push(Z.fullPath,s1)),d.value=Z,H1(Z,F,R,g),y1()}let o1;function k1(){o1||(o1=r.listen((Z,F,R)=>{if(!d1.listening)return;const Q=x(Z),s1=L(Q,d1.currentRoute.value);if(s1){b(D1(s1,{replace:!0,force:!0}),Q).catch(rn);return}a=Q;const c=d.value;kt&&Q6(A0(c.fullPath,R.delta),Jo()),P(Q,c).catch(g=>te(g,A1.NAVIGATION_ABORTED|A1.NAVIGATION_CANCELLED)?g:te(g,A1.NAVIGATION_GUARD_REDIRECT)?(b(D1(w(g.to),{force:!0}),Q).then(M=>{te(M,A1.NAVIGATION_ABORTED|A1.NAVIGATION_DUPLICATED)&&!R.delta&&R.type===hr.pop&&r.go(-1,!1)}).catch(rn),Promise.reject()):(R.delta&&r.go(-R.delta,!1),r1(g,Q,c))).then(g=>{g=g||T(Q,c,!1),g&&(R.delta&&!te(g,A1.NAVIGATION_CANCELLED)?r.go(-R.delta,!1):R.type===hr.pop&&te(g,A1.NAVIGATION_ABORTED|A1.NAVIGATION_DUPLICATED)&&r.go(-1,!1)),G(Q,c,g)}).catch(rn)}))}let c1=Pt(),u1=Pt(),Y;function r1(Z,F,R){y1(Z);const Q=u1.list();return Q.length?Q.forEach(s1=>s1(Z,F,R)):console.error(Z),Promise.reject(Z)}function m1(){return Y&&d.value!==He?Promise.resolve():new Promise((Z,F)=>{c1.add([Z,F])})}function y1(Z){return Y||(Y=!Z,k1(),c1.list().forEach(([F,R])=>Z?R(Z):F()),c1.reset()),Z}function H1(Z,F,R,Q){const{scrollBehavior:s1}=e;if(!kt||!s1)return Promise.resolve();const c=!R&&J6(A0(Z.fullPath,0))||(Q||!R)&&history.state&&history.state.scroll||null;return a2().then(()=>s1(Z,F,c)).then(g=>g&&Y6(g)).catch(g=>r1(g,Z,F))}const _1=Z=>r.go(Z);let $;const l1=new Set,d1={currentRoute:d,listening:!0,addRoute:p,removeRoute:C,clearRoutes:t.clearRoutes,hasRoute:m,getRoutes:f,resolve:x,options:e,push:v,replace:j,go:_1,back:()=>_1(-1),forward:()=>_1(1),beforeEach:i.add,beforeResolve:s.add,afterEach:l.add,onError:u1.add,isReady:m1,install(Z){Z.component("RouterLink",Hk),Z.component("RouterView",Zk),Z.config.globalProperties.$router=d1,Object.defineProperty(Z.config.globalProperties,"$route",{enumerable:!0,get:()=>t1(d)}),kt&&!$&&d.value===He&&($=!0,v(r.location).catch(Q=>{}));const F={};for(const Q in He)Object.defineProperty(F,Q,{get:()=>d.value[Q],enumerable:!0});Z.provide(Xo,d1),Z.provide(ai,O5(F)),Z.provide(cr,d);const R=Z.unmount;l1.add(Z),Z.unmount=function(){l1.delete(Z),l1.size<1&&(a=He,o1&&o1(),o1=null,d.value=He,$=!1,Y=!1),R()}}};function n1(Z){return Z.reduce((F,R)=>F.then(()=>V(R)),Promise.resolve())}return d1}function ki(){return N1(Xo)}function Bk(e){return N1(ai)}const Sk="modulepreload",Ek=function(e){return"/"+e},K0={},P1=function(t,n,o){let r=Promise.resolve();if(n&&n.length>0){document.getElementsByTagName("link");const s=document.querySelector("meta[property=csp-nonce]"),l=(s==null?void 0:s.nonce)||(s==null?void 0:s.getAttribute("nonce"));r=Promise.allSettled(n.map(d=>{if(d=Ek(d),d in K0)return;K0[d]=!0;const a=d.endsWith(".css"),k=a?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${d}"]${k}`))return;const u=document.createElement("link");if(u.rel=a?"stylesheet":Sk,a||(u.as="script"),u.crossOrigin="",u.href=d,l&&u.setAttribute("nonce",l),document.head.appendChild(u),a)return new Promise((h,p)=>{u.addEventListener("load",h),u.addEventListener("error",()=>p(new Error(`Unable to preload CSS for ${d}`)))})}))}function i(s){const l=new Event("vite:preloadError",{cancelable:!0});if(l.payload=s,window.dispatchEvent(l),!l.defaultPrevented)throw s}return r.then(s=>{for(const l of s||[])l.status==="rejected"&&i(l.reason);return t().catch(i)})};function Ok(e={}){const{immediate:t=!1,onNeedRefresh:n,onOfflineReady:o,onRegistered:r,onRegisteredSW:i,onRegisterError:s}=e;let l,d,a;const k=async(h=!0)=>{await d,await(a==null?void 0:a())};async function u(){if("serviceWorker"in navigator){if(l=await P1(async()=>{const{Workbox:h}=await import("./workbox-window.prod.es5-BqEJf4Xk.js");return{Workbox:h}},[]).then(({Workbox:h})=>new h("/sw.js",{scope:"/",type:"classic"})).catch(h=>{s==null||s(h)}),!l)return;a=async()=>{await(l==null?void 0:l.messageSkipWaiting())};{let h=!1;const p=()=>{h=!0,l==null||l.addEventListener("controlling",C=>{C.isUpdate&&window.location.reload()}),n==null||n()};l.addEventListener("installed",C=>{typeof C.isUpdate>"u"?typeof C.isExternal<"u"?C.isExternal?p():!h&&(o==null||o()):C.isExternal?window.location.reload():!h&&(o==null||o()):C.isUpdate||o==null||o()}),l.addEventListener("waiting",p),l.addEventListener("externalwaiting",p)}l.register({immediate:t}).then(h=>{i?i("/sw.js",h):r==null||r(h)}).catch(h=>{s==null||s(h)})}}return d=u(),k}function Ak(e={}){const{immediate:t=!0,onNeedRefresh:n,onOfflineReady:o,onRegistered:r,onRegisteredSW:i,onRegisterError:s}=e,l=K(!1),d=K(!1);return{updateServiceWorker:Ok({immediate:t,onNeedRefresh(){l.value=!0,n==null||n()},onOfflineReady(){d.value=!0,o==null||o()},onRegistered:r,onRegisteredSW:i,onRegisterError:s}),offlineReady:d,needRefresh:l}}var Y0;const cl=typeof window<"u",Pk=e=>typeof e=="string",Xe=()=>{};cl&&((Y0=window==null?void 0:window.navigator)!=null&&Y0.userAgent)&&/iP(ad|hone|od)/.test(window.navigator.userAgent);function Y2(e){return typeof e=="function"?e():t1(e)}function wl(e,t){function n(...o){return new Promise((r,i)=>{Promise.resolve(e(()=>t.apply(this,o),{fn:t,thisArg:this,args:o})).then(r).catch(i)})}return n}function Tk(e,t={}){let n,o,r=Xe;const i=l=>{clearTimeout(l),r(),r=Xe};return l=>{const d=Y2(e),a=Y2(t.maxWait);return n&&i(n),d<=0||a!==void 0&&a<=0?(o&&(i(o),o=null),Promise.resolve(l())):new Promise((k,u)=>{r=t.rejectOnCancel?u:k,a&&!o&&(o=setTimeout(()=>{n&&i(n),o=null,k(l())},a)),n=setTimeout(()=>{o&&i(o),o=null,k(l())},d)})}}function Ik(e,t=!0,n=!0,o=!1){let r=0,i,s=!0,l=Xe,d;const a=()=>{i&&(clearTimeout(i),i=void 0,l(),l=Xe)};return u=>{const h=Y2(e),p=Date.now()-r,C=()=>d=u();return a(),h<=0?(r=Date.now(),C()):(p>h&&(n||!s)?(r=Date.now(),C()):t&&(d=new Promise((f,m)=>{l=o?m:f,i=setTimeout(()=>{r=Date.now(),s=!0,f(C()),a()},Math.max(0,h-p))})),!n&&!i&&(i=setTimeout(()=>s=!0,h)),s=!1,d)}}function Rk(e){return e}function Cl(e){return Sr()?(m5(e),!0):!1}function gl(e,t=200,n={}){return wl(Tk(t,n),e)}function Pg(e,t=200,n={}){const o=K(e.value),r=gl(()=>{o.value=e.value},t,n);return V1(e,()=>r()),o}function $k(e,t=200,n=!1,o=!0,r=!1){return wl(Ik(t,n,o,r),e)}function Fk(e,t=!0){Z2()?F2(e):t?e():a2(e)}function vl(e){var t;const n=Y2(e);return(t=n==null?void 0:n.$el)!=null?t:n}const fl=cl?window:void 0;function Q0(...e){let t,n,o,r;if(Pk(e[0])||Array.isArray(e[0])?([n,o,r]=e,t=fl):[t,n,o,r]=e,!t)return Xe;Array.isArray(n)||(n=[n]),Array.isArray(o)||(o=[o]);const i=[],s=()=>{i.forEach(k=>k()),i.length=0},l=(k,u,h,p)=>(k.addEventListener(u,h,p),()=>k.removeEventListener(u,h,p)),d=V1(()=>[vl(t),Y2(r)],([k,u])=>{s(),k&&i.push(...n.flatMap(h=>o.map(p=>l(k,h,p,u))))},{immediate:!0,flush:"post"}),a=()=>{d(),s()};return Cl(a),a}function Nk(e,t=!1){const n=K(),o=()=>n.value=!!e();return o(),Fk(o,t),n}const J0=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},X0="__vueuse_ssr_handlers__";J0[X0]=J0[X0]||{};var es=Object.getOwnPropertySymbols,Uk=Object.prototype.hasOwnProperty,qk=Object.prototype.propertyIsEnumerable,zk=(e,t)=>{var n={};for(var o in e)Uk.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&es)for(var o of es(e))t.indexOf(o)<0&&qk.call(e,o)&&(n[o]=e[o]);return n};function Wk(e,t,n={}){const o=n,{window:r=fl}=o,i=zk(o,["window"]);let s;const l=Nk(()=>r&&"ResizeObserver"in r),d=()=>{s&&(s.disconnect(),s=void 0)},a=V1(()=>vl(e),u=>{d(),l.value&&r&&u&&(s=new ResizeObserver(t),s.observe(u,i))},{immediate:!0,flush:"post"}),k=()=>{d(),a()};return Cl(k),{isSupported:l,stop:k}}const ts=1;function Gk(e,t={}){const{throttle:n=0,idle:o=200,onStop:r=Xe,onScroll:i=Xe,offset:s={left:0,right:0,top:0,bottom:0},eventListenerOptions:l={capture:!1,passive:!0},behavior:d="auto"}=t,a=K(0),k=K(0),u=N({get(){return a.value},set(v){p(v,void 0)}}),h=N({get(){return k.value},set(v){p(void 0,v)}});function p(v,j){var L,b,O;const V=Y2(e);V&&((O=V instanceof Document?document.body:V)==null||O.scrollTo({top:(L=Y2(j))!=null?L:h.value,left:(b=Y2(v))!=null?b:u.value,behavior:Y2(d)}))}const C=K(!1),f=I1({left:!0,right:!1,top:!0,bottom:!1}),m=I1({left:!1,right:!1,top:!1,bottom:!1}),x=v=>{C.value&&(C.value=!1,m.left=!1,m.right=!1,m.top=!1,m.bottom=!1,r(v))},w=gl(x,n+o),D=v=>{const j=v.target===document?v.target.documentElement:v.target,L=j.scrollLeft;m.left=Lk.value,f.left=L<=0+(s.left||0),f.right=L+j.clientWidth>=j.scrollWidth-(s.right||0)-ts,a.value=L;let b=j.scrollTop;v.target===document&&!b&&(b=document.body.scrollTop),m.top=bk.value,f.top=b<=0+(s.top||0),f.bottom=b+j.clientHeight>=j.scrollHeight-(s.bottom||0)-ts,k.value=b,C.value=!0,w(v),i(v)};return Q0(e,"scroll",n?$k(D,n,!0,!1):D,l),Q0(e,"scrollend",x,l),{x:u,y:h,isScrolling:C,arrivedState:f,directions:m}}var Kk=Object.defineProperty,Yk=Object.defineProperties,Qk=Object.getOwnPropertyDescriptors,ns=Object.getOwnPropertySymbols,Jk=Object.prototype.hasOwnProperty,Xk=Object.prototype.propertyIsEnumerable,os=(e,t,n)=>t in e?Kk(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,rs=(e,t)=>{for(var n in t||(t={}))Jk.call(t,n)&&os(e,n,t[n]);if(ns)for(var n of ns(t))Xk.call(t,n)&&os(e,n,t[n]);return e},eu=(e,t)=>Yk(e,Qk(t));function Tg(e,t,n={}){var o,r;const i=(o=n.direction)!=null?o:"bottom",s=I1(Gk(e,eu(rs({},n),{offset:rs({[i]:(r=n.distance)!=null?r:0},n.offset)})));V1(()=>s.arrivedState[i],async l=>{var d,a;if(l){const k=Y2(e),u={height:(d=k==null?void 0:k.scrollHeight)!=null?d:0,width:(a=k==null?void 0:k.scrollWidth)!=null?a:0};await t(s),n.preserveScrollPosition&&k&&a2(()=>{k.scrollTo({top:k.scrollHeight-u.height,left:k.scrollWidth-u.width})})}})}var is;(function(e){e.UP="UP",e.RIGHT="RIGHT",e.DOWN="DOWN",e.LEFT="LEFT",e.NONE="NONE"})(is||(is={}));var tu=Object.defineProperty,ss=Object.getOwnPropertySymbols,nu=Object.prototype.hasOwnProperty,ou=Object.prototype.propertyIsEnumerable,ls=(e,t,n)=>t in e?tu(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,ru=(e,t)=>{for(var n in t||(t={}))nu.call(t,n)&&ls(e,n,t[n]);if(ss)for(var n of ss(t))ou.call(t,n)&&ls(e,n,t[n]);return e};const iu={easeInSine:[.12,0,.39,0],easeOutSine:[.61,1,.88,1],easeInOutSine:[.37,0,.63,1],easeInQuad:[.11,0,.5,0],easeOutQuad:[.5,1,.89,1],easeInOutQuad:[.45,0,.55,1],easeInCubic:[.32,0,.67,0],easeOutCubic:[.33,1,.68,1],easeInOutCubic:[.65,0,.35,1],easeInQuart:[.5,0,.75,0],easeOutQuart:[.25,1,.5,1],easeInOutQuart:[.76,0,.24,1],easeInQuint:[.64,0,.78,0],easeOutQuint:[.22,1,.36,1],easeInOutQuint:[.83,0,.17,1],easeInExpo:[.7,0,.84,0],easeOutExpo:[.16,1,.3,1],easeInOutExpo:[.87,0,.13,1],easeInCirc:[.55,0,1,.45],easeOutCirc:[0,.55,.45,1],easeInOutCirc:[.85,0,.15,1],easeInBack:[.36,0,.66,-.56],easeOutBack:[.34,1.56,.64,1],easeInOutBack:[.68,-.6,.32,1.6]};ru({linear:Rk},iu);const su={"vuesax-linear:24-support":` + */let sk=()=>location.protocol+"//"+location.host;function ul(e,t){const{pathname:n,search:o,hash:r}=t,i=e.indexOf("#");if(i>-1){let s=r.includes(e.slice(i))?e.slice(i).length:1,l=r.slice(s);return l[0]!=="/"&&(l="/"+l),E0(l,"")}return E0(n,e)+o+r}function lk(e,t,n,o){let r=[],i=[],s=null;const l=({state:h})=>{const p=ul(e,location),C=n.value,f=t.value;let m=0;if(h){if(n.value=p,t.value=h,s&&s===C){s=null;return}m=f?h.position-f.position:0}else o(p);r.forEach(x=>{x(n.value,C,{delta:m,type:hr.pop,direction:m?m>0?x9.forward:x9.back:x9.unknown})})};function d(){s=n.value}function a(h){r.push(h);const p=()=>{const C=r.indexOf(h);C>-1&&r.splice(C,1)};return i.push(p),p}function k(){if(document.visibilityState==="hidden"){const{history:h}=window;if(!h.state)return;h.replaceState(D1({},h.state,{scroll:Qo()}),"")}}function u(){for(const h of i)h();i=[],window.removeEventListener("popstate",l),window.removeEventListener("pagehide",k),document.removeEventListener("visibilitychange",k)}return window.addEventListener("popstate",l),window.addEventListener("pagehide",k),document.addEventListener("visibilitychange",k),{pauseListeners:d,listen:a,destroy:u}}function I0(e,t,n,o=!1,r=!1){return{back:e,current:t,forward:n,replaced:o,position:window.history.length,scroll:r?Qo():null}}function dk(e){const{history:t,location:n}=window,o={value:ul(e,n)},r={value:t.state};r.value||i(o.value,{back:null,current:o.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function i(d,a,k){const u=e.indexOf("#"),h=u>-1?(n.host&&document.querySelector("base")?e:e.slice(u))+d:sk()+e+d;try{t[k?"replaceState":"pushState"](a,"",h),r.value=a}catch(p){console.error(p),n[k?"replace":"assign"](h)}}function s(d,a){i(d,D1({},t.state,I0(r.value.back,d,r.value.forward,!0),a,{position:r.value.position}),!0),o.value=d}function l(d,a){const k=D1({},r.value,t.state,{forward:d,scroll:Qo()});i(k.current,k,!0),i(d,D1({},I0(o.value,d,null),{position:k.position+1},a),!1),o.value=d}return{location:o,state:r,push:l,replace:s}}function ak(e){e=z6(e);const t=dk(e),n=lk(e,t.state,t.location,t.replace);function o(i,s=!0){s||n.pauseListeners(),history.go(i)}const r=D1({location:"",base:e,go:o,createHref:G6.bind(null,e)},t,n);return Object.defineProperty(r,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(r,"state",{enumerable:!0,get:()=>t.state.value}),r}let ze=function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.Group=2]="Group",e}({});var U1=function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.ParamRegExp=2]="ParamRegExp",e[e.ParamRegExpEnd=3]="ParamRegExpEnd",e[e.EscapeNext=4]="EscapeNext",e}(U1||{});const kk={type:ze.Static,value:""},uk=/[a-zA-Z0-9_]/;function hk(e){if(!e)return[[]];if(e==="/")return[[kk]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(p){throw new Error(`ERR (${n})/"${a}": ${p}`)}let n=U1.Static,o=n;const r=[];let i;function s(){i&&r.push(i),i=[]}let l=0,d,a="",k="";function u(){a&&(n===U1.Static?i.push({type:ze.Static,value:a}):n===U1.Param||n===U1.ParamRegExp||n===U1.ParamRegExpEnd?(i.length>1&&(d==="*"||d==="+")&&t(`A repeatable param (${a}) must be alone in its segment. eg: '/:ids+.`),i.push({type:ze.Param,value:a,regexp:k,repeatable:d==="*"||d==="+",optional:d==="*"||d==="?"})):t("Invalid state to consume buffer"),a="")}function h(){a+=d}for(;lt.length?t.length===1&&t[0]===s2.Static+s2.Segment?1:-1:0}function hl(e,t){let n=0;const o=e.score,r=t.score;for(;n0&&t[t.length-1]<0}const gk={strict:!1,end:!0,sensitive:!1};function vk(e,t,n){const o=wk(hk(e.path),n),r=D1(o,{record:e,parent:t,children:[],alias:[]});return t&&!r.record.aliasOf==!t.record.aliasOf&&t.children.push(r),r}function fk(e,t){const n=[],o=new Map;t=S0(gk,t);function r(u){return o.get(u)}function i(u,h,p){const C=!p,f=N0(u);f.aliasOf=p&&p.record;const m=S0(t,u),x=[f];if("alias"in u){const v=typeof u.alias=="string"?[u.alias]:u.alias;for(const j of v)x.push(N0(D1({},f,{components:p?p.record.components:f.components,path:j,aliasOf:p?p.record:f})))}let w,D;for(const v of x){const{path:j}=v;if(h&&j[0]!=="/"){const L=h.record.path,b=L[L.length-1]==="/"?"":"/";v.path=h.record.path+(j&&b+j)}if(w=vk(v,h,m),p?p.alias.push(w):(D=D||w,D!==w&&D.alias.push(w),C&&u.name&&!U0(w)&&s(u.name)),pl(w)&&d(w),f.children){const L=f.children;for(let b=0;b{s(D)}:rn}function s(u){if(al(u)){const h=o.get(u);h&&(o.delete(u),n.splice(n.indexOf(h),1),h.children.forEach(s),h.alias.forEach(s))}else{const h=n.indexOf(u);h>-1&&(n.splice(h,1),u.record.name&&o.delete(u.record.name),u.children.forEach(s),u.alias.forEach(s))}}function l(){return n}function d(u){const h=jk(u,n);n.splice(h,0,u),u.record.name&&!U0(u)&&o.set(u.record.name,u)}function a(u,h){let p,C={},f,m;if("name"in u&&u.name){if(p=o.get(u.name),!p)throw Lt(P1.MATCHER_NOT_FOUND,{location:u});m=p.record.name,C=D1(F0(h.params,p.keys.filter(D=>!D.optional).concat(p.parent?p.parent.keys.filter(D=>D.optional):[]).map(D=>D.name)),u.params&&F0(u.params,p.keys.map(D=>D.name))),f=p.stringify(C)}else if(u.path!=null)f=u.path,p=n.find(D=>D.re.test(f)),p&&(C=p.parse(f),m=p.record.name);else{if(p=h.name?o.get(h.name):n.find(D=>D.re.test(h.path)),!p)throw Lt(P1.MATCHER_NOT_FOUND,{location:u,currentLocation:h});m=p.record.name,C=D1({},h.params,u.params),f=p.stringify(C)}const x=[];let w=p;for(;w;)x.unshift(w.record),w=w.parent;return{name:m,path:f,params:C,matched:x,meta:Mk(x)}}e.forEach(u=>i(u));function k(){n.length=0,o.clear()}return{addRoute:i,resolve:a,removeRoute:s,clearRoutes:k,getRoutes:l,getRecordMatcher:r}}function F0(e,t){const n={};for(const o of t)o in e&&(n[o]=e[o]);return n}function N0(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:mk(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function mk(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const o in e.components)t[o]=typeof n=="object"?n[o]:n;return t}function U0(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function Mk(e){return e.reduce((t,n)=>D1(t,n.meta),{})}function jk(e,t){let n=0,o=t.length;for(;n!==o;){const i=n+o>>1;hl(e,t[i])<0?o=i:n=i+1}const r=xk(e);return r&&(o=t.lastIndexOf(r,o-1)),o}function xk(e){let t=e;for(;t=t.parent;)if(pl(t)&&hl(e,t)===0)return t}function pl({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function q0(e){const t=N1(Xo),n=N1(ai),o=N(()=>{const d=t1(e.to);return t.resolve(d)}),r=N(()=>{const{matched:d}=o.value,{length:a}=d,k=d[a-1],u=n.matched;if(!k||!u.length)return-1;const h=u.findIndex(Dt.bind(null,k));if(h>-1)return h;const p=z0(d[a-2]);return a>1&&z0(k)===p&&u[u.length-1].path!==p?u.findIndex(Dt.bind(null,d[a-2])):h}),i=N(()=>r.value>-1&&yk(n.params,o.value.params)),s=N(()=>r.value>-1&&r.value===n.matched.length-1&&dl(n.params,o.value.params));function l(d={}){if(Vk(d)){const a=t[t1(e.replace)?"replace":"push"](t1(e.to)).catch(rn);return e.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>a),a}return Promise.resolve()}return{route:o,href:N(()=>o.value.href),isActive:i,isExactActive:s,navigate:l}}function Dk(e){return e.length===1?e[0]:e}const Lk=f1({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"},viewTransition:Boolean},useLink:q0,setup(e,{slots:t}){const n=I1(q0(e)),{options:o}=N1(Xo),r=N(()=>({[W0(e.activeClass,o.linkActiveClass,"router-link-active")]:n.isActive,[W0(e.exactActiveClass,o.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const i=t.default&&Dk(t.default(n));return e.custom?i:gn("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:r.value},i)}}}),Hk=Lk;function Vk(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function yk(e,t){for(const n in t){const o=t[n],r=e[n];if(typeof o=="string"){if(o!==r)return!1}else if(!$2(r)||r.length!==o.length||o.some((i,s)=>i.valueOf()!==r[s].valueOf()))return!1}return!0}function z0(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const W0=(e,t,n)=>e??t??n,bk=f1({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const o=N1(cr),r=N(()=>e.route||o.value),i=N1(T0,0),s=N(()=>{let a=t1(i);const{matched:k}=r.value;let u;for(;(u=k[a])&&!u.components;)a++;return a}),l=N(()=>r.value.matched[s.value]);ke(T0,N(()=>s.value+1)),ke(rk,l),ke(cr,r);const d=K();return V1(()=>[d.value,l.value,e.name],([a,k,u],[h,p,C])=>{k&&(k.instances[u]=a,p&&p!==k&&a&&a===h&&(k.leaveGuards.size||(k.leaveGuards=p.leaveGuards),k.updateGuards.size||(k.updateGuards=p.updateGuards))),a&&k&&(!p||!Dt(k,p)||!h)&&(k.enterCallbacks[u]||[]).forEach(f=>f(a))},{flush:"post"}),()=>{const a=r.value,k=e.name,u=l.value,h=u&&u.components[k];if(!h)return G0(n.default,{Component:h,route:a});const p=u.props[k],C=p?p===!0?a.params:typeof p=="function"?p(a):p:null,m=gn(h,D1({},C,t,{onVnodeUnmounted:x=>{x.component.isUnmounted&&(u.instances[k]=null)},ref:d}));return G0(n.default,{Component:m,route:a})||m}}});function G0(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const Zk=bk;function _k(e){const t=fk(e.routes,e),n=e.parseQuery||nk,o=e.stringifyQuery||P0,r=e.history,i=Pt(),s=Pt(),l=Pt(),d=Rr(He);let a=He;kt&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const k=M9.bind(null,Z=>""+Z),u=M9.bind(null,I6),h=M9.bind(null,vn);function p(Z,F){let R,J;return al(Z)?(R=t.getRecordMatcher(Z),J=F):J=Z,t.addRoute(J,R)}function C(Z){const F=t.getRecordMatcher(Z);F&&t.removeRoute(F)}function f(){return t.getRoutes().map(Z=>Z.record)}function m(Z){return!!t.getRecordMatcher(Z)}function x(Z,F){if(F=D1({},F||d.value),typeof Z=="string"){const M=j9(n,Z,F.path),_=t.resolve({path:M.path},F),E=r.createHref(M.fullPath);return D1(M,_,{params:h(_.params),hash:vn(M.hash),redirectedFrom:void 0,href:E})}let R;if(Z.path!=null)R=D1({},Z,{path:j9(n,Z.path,F.path).path});else{const M=D1({},Z.params);for(const _ in M)M[_]==null&&delete M[_];R=D1({},Z,{params:u(M)}),F.params=u(F.params)}const J=t.resolve(R,F),s1=Z.hash||"";J.params=k(h(J.params));const c=F6(o,D1({},Z,{hash:A6(s1),path:J.path})),g=r.createHref(c);return D1({fullPath:c,hash:s1,query:o===P0?ok(Z.query):Z.query||{}},J,{redirectedFrom:void 0,href:g})}function w(Z){return typeof Z=="string"?j9(n,Z,d.value.path):D1({},Z)}function D(Z,F){if(a!==Z)return Lt(P1.NAVIGATION_CANCELLED,{from:F,to:Z})}function v(Z){return b(Z)}function j(Z){return v(D1(w(Z),{replace:!0}))}function L(Z,F){const R=Z.matched[Z.matched.length-1];if(R&&R.redirect){const{redirect:J}=R;let s1=typeof J=="function"?J(Z,F):J;return typeof s1=="string"&&(s1=s1.includes("?")||s1.includes("#")?s1=w(s1):{path:s1},s1.params={}),D1({query:Z.query,hash:Z.hash,params:s1.path!=null?{}:Z.params},s1)}}function b(Z,F){const R=a=x(Z),J=d.value,s1=Z.state,c=Z.force,g=Z.replace===!0,M=L(R,J);if(M)return b(D1(w(M),{state:typeof M=="object"?D1({},s1,M.state):s1,force:c,replace:g}),F||R);const _=R;_.redirectedFrom=F;let E;return!c&&N6(o,J,R)&&(E=Lt(P1.NAVIGATION_DUPLICATED,{to:_,from:J}),H1(J,J,!0,!1)),(E?Promise.resolve(E):P(_,J)).catch(S=>te(S)?te(S,P1.NAVIGATION_GUARD_REDIRECT)?S:y1(S):r1(S,_,J)).then(S=>{if(S){if(te(S,P1.NAVIGATION_GUARD_REDIRECT))return b(D1({replace:g},w(S.to),{state:typeof S.to=="object"?D1({},s1,S.to.state):s1,force:c}),F||_)}else S=T(_,J,!0,g,s1);return G(_,J,S),S})}function O(Z,F){const R=D(Z,F);return R?Promise.reject(R):Promise.resolve()}function V(Z){const F=l1.values().next().value;return F&&typeof F.runWithContext=="function"?F.runWithContext(Z):Z()}function P(Z,F){let R;const[J,s1,c]=ik(Z,F);R=D9(J.reverse(),"beforeRouteLeave",Z,F);for(const M of J)M.leaveGuards.forEach(_=>{R.push(_e(_,Z,F))});const g=O.bind(null,Z,F);return R.push(g),n1(R).then(()=>{R=[];for(const M of i.list())R.push(_e(M,Z,F));return R.push(g),n1(R)}).then(()=>{R=D9(s1,"beforeRouteUpdate",Z,F);for(const M of s1)M.updateGuards.forEach(_=>{R.push(_e(_,Z,F))});return R.push(g),n1(R)}).then(()=>{R=[];for(const M of c)if(M.beforeEnter)if($2(M.beforeEnter))for(const _ of M.beforeEnter)R.push(_e(_,Z,F));else R.push(_e(M.beforeEnter,Z,F));return R.push(g),n1(R)}).then(()=>(Z.matched.forEach(M=>M.enterCallbacks={}),R=D9(c,"beforeRouteEnter",Z,F,V),R.push(g),n1(R))).then(()=>{R=[];for(const M of s.list())R.push(_e(M,Z,F));return R.push(g),n1(R)}).catch(M=>te(M,P1.NAVIGATION_CANCELLED)?M:Promise.reject(M))}function G(Z,F,R){l.list().forEach(J=>V(()=>J(Z,F,R)))}function T(Z,F,R,J,s1){const c=D(Z,F);if(c)return c;const g=F===He,M=kt?history.state:{};R&&(J||g?r.replace(Z.fullPath,D1({scroll:g&&M&&M.scroll},s1)):r.push(Z.fullPath,s1)),d.value=Z,H1(Z,F,R,g),y1()}let o1;function k1(){o1||(o1=r.listen((Z,F,R)=>{if(!d1.listening)return;const J=x(Z),s1=L(J,d1.currentRoute.value);if(s1){b(D1(s1,{replace:!0,force:!0}),J).catch(rn);return}a=J;const c=d.value;kt&&J6(A0(c.fullPath,R.delta),Qo()),P(J,c).catch(g=>te(g,P1.NAVIGATION_ABORTED|P1.NAVIGATION_CANCELLED)?g:te(g,P1.NAVIGATION_GUARD_REDIRECT)?(b(D1(w(g.to),{force:!0}),J).then(M=>{te(M,P1.NAVIGATION_ABORTED|P1.NAVIGATION_DUPLICATED)&&!R.delta&&R.type===hr.pop&&r.go(-1,!1)}).catch(rn),Promise.reject()):(R.delta&&r.go(-R.delta,!1),r1(g,J,c))).then(g=>{g=g||T(J,c,!1),g&&(R.delta&&!te(g,P1.NAVIGATION_CANCELLED)?r.go(-R.delta,!1):R.type===hr.pop&&te(g,P1.NAVIGATION_ABORTED|P1.NAVIGATION_DUPLICATED)&&r.go(-1,!1)),G(J,c,g)}).catch(rn)}))}let w1=Pt(),u1=Pt(),Y;function r1(Z,F,R){y1(Z);const J=u1.list();return J.length?J.forEach(s1=>s1(Z,F,R)):console.error(Z),Promise.reject(Z)}function m1(){return Y&&d.value!==He?Promise.resolve():new Promise((Z,F)=>{w1.add([Z,F])})}function y1(Z){return Y||(Y=!Z,k1(),w1.list().forEach(([F,R])=>Z?R(Z):F()),w1.reset()),Z}function H1(Z,F,R,J){const{scrollBehavior:s1}=e;if(!kt||!s1)return Promise.resolve();const c=!R&&Q6(A0(Z.fullPath,0))||(J||!R)&&history.state&&history.state.scroll||null;return a2().then(()=>s1(Z,F,c)).then(g=>g&&Y6(g)).catch(g=>r1(g,Z,F))}const _1=Z=>r.go(Z);let $;const l1=new Set,d1={currentRoute:d,listening:!0,addRoute:p,removeRoute:C,clearRoutes:t.clearRoutes,hasRoute:m,getRoutes:f,resolve:x,options:e,push:v,replace:j,go:_1,back:()=>_1(-1),forward:()=>_1(1),beforeEach:i.add,beforeResolve:s.add,afterEach:l.add,onError:u1.add,isReady:m1,install(Z){Z.component("RouterLink",Hk),Z.component("RouterView",Zk),Z.config.globalProperties.$router=d1,Object.defineProperty(Z.config.globalProperties,"$route",{enumerable:!0,get:()=>t1(d)}),kt&&!$&&d.value===He&&($=!0,v(r.location).catch(J=>{}));const F={};for(const J in He)Object.defineProperty(F,J,{get:()=>d.value[J],enumerable:!0});Z.provide(Xo,d1),Z.provide(ai,O5(F)),Z.provide(cr,d);const R=Z.unmount;l1.add(Z),Z.unmount=function(){l1.delete(Z),l1.size<1&&(a=He,o1&&o1(),o1=null,d.value=He,$=!1,Y=!1),R()}}};function n1(Z){return Z.reduce((F,R)=>F.then(()=>V(R)),Promise.resolve())}return d1}function ki(){return N1(Xo)}function Bk(e){return N1(ai)}const Sk="modulepreload",Ek=function(e){return"/"+e},K0={},O1=function(t,n,o){let r=Promise.resolve();if(n&&n.length>0){document.getElementsByTagName("link");const s=document.querySelector("meta[property=csp-nonce]"),l=(s==null?void 0:s.nonce)||(s==null?void 0:s.getAttribute("nonce"));r=Promise.allSettled(n.map(d=>{if(d=Ek(d),d in K0)return;K0[d]=!0;const a=d.endsWith(".css"),k=a?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${d}"]${k}`))return;const u=document.createElement("link");if(u.rel=a?"stylesheet":Sk,a||(u.as="script"),u.crossOrigin="",u.href=d,l&&u.setAttribute("nonce",l),document.head.appendChild(u),a)return new Promise((h,p)=>{u.addEventListener("load",h),u.addEventListener("error",()=>p(new Error(`Unable to preload CSS for ${d}`)))})}))}function i(s){const l=new Event("vite:preloadError",{cancelable:!0});if(l.payload=s,window.dispatchEvent(l),!l.defaultPrevented)throw s}return r.then(s=>{for(const l of s||[])l.status==="rejected"&&i(l.reason);return t().catch(i)})};function Ok(e={}){const{immediate:t=!1,onNeedRefresh:n,onOfflineReady:o,onRegistered:r,onRegisteredSW:i,onRegisterError:s}=e;let l,d,a;const k=async(h=!0)=>{await d,await(a==null?void 0:a())};async function u(){if("serviceWorker"in navigator){if(l=await O1(async()=>{const{Workbox:h}=await import("./workbox-window.prod.es5-BqEJf4Xk.js");return{Workbox:h}},[]).then(({Workbox:h})=>new h("/sw.js",{scope:"/",type:"classic"})).catch(h=>{s==null||s(h)}),!l)return;a=async()=>{await(l==null?void 0:l.messageSkipWaiting())};{let h=!1;const p=()=>{h=!0,l==null||l.addEventListener("controlling",C=>{C.isUpdate&&window.location.reload()}),n==null||n()};l.addEventListener("installed",C=>{typeof C.isUpdate>"u"?typeof C.isExternal<"u"?C.isExternal?p():!h&&(o==null||o()):C.isExternal?window.location.reload():!h&&(o==null||o()):C.isUpdate||o==null||o()}),l.addEventListener("waiting",p),l.addEventListener("externalwaiting",p)}l.register({immediate:t}).then(h=>{i?i("/sw.js",h):r==null||r(h)}).catch(h=>{s==null||s(h)})}}return d=u(),k}function Ak(e={}){const{immediate:t=!0,onNeedRefresh:n,onOfflineReady:o,onRegistered:r,onRegisteredSW:i,onRegisterError:s}=e,l=K(!1),d=K(!1);return{updateServiceWorker:Ok({immediate:t,onNeedRefresh(){l.value=!0,n==null||n()},onOfflineReady(){d.value=!0,o==null||o()},onRegistered:r,onRegisteredSW:i,onRegisterError:s}),offlineReady:d,needRefresh:l}}var Y0;const cl=typeof window<"u",Pk=e=>typeof e=="string",Xe=()=>{};cl&&((Y0=window==null?void 0:window.navigator)!=null&&Y0.userAgent)&&/iP(ad|hone|od)/.test(window.navigator.userAgent);function Y2(e){return typeof e=="function"?e():t1(e)}function wl(e,t){function n(...o){return new Promise((r,i)=>{Promise.resolve(e(()=>t.apply(this,o),{fn:t,thisArg:this,args:o})).then(r).catch(i)})}return n}function Tk(e,t={}){let n,o,r=Xe;const i=l=>{clearTimeout(l),r(),r=Xe};return l=>{const d=Y2(e),a=Y2(t.maxWait);return n&&i(n),d<=0||a!==void 0&&a<=0?(o&&(i(o),o=null),Promise.resolve(l())):new Promise((k,u)=>{r=t.rejectOnCancel?u:k,a&&!o&&(o=setTimeout(()=>{n&&i(n),o=null,k(l())},a)),n=setTimeout(()=>{o&&i(o),o=null,k(l())},d)})}}function Ik(e,t=!0,n=!0,o=!1){let r=0,i,s=!0,l=Xe,d;const a=()=>{i&&(clearTimeout(i),i=void 0,l(),l=Xe)};return u=>{const h=Y2(e),p=Date.now()-r,C=()=>d=u();return a(),h<=0?(r=Date.now(),C()):(p>h&&(n||!s)?(r=Date.now(),C()):t&&(d=new Promise((f,m)=>{l=o?m:f,i=setTimeout(()=>{r=Date.now(),s=!0,f(C()),a()},Math.max(0,h-p))})),!n&&!i&&(i=setTimeout(()=>s=!0,h)),s=!1,d)}}function Rk(e){return e}function Cl(e){return Sr()?(m5(e),!0):!1}function gl(e,t=200,n={}){return wl(Tk(t,n),e)}function Pg(e,t=200,n={}){const o=K(e.value),r=gl(()=>{o.value=e.value},t,n);return V1(e,()=>r()),o}function $k(e,t=200,n=!1,o=!0,r=!1){return wl(Ik(t,n,o,r),e)}function Fk(e,t=!0){Z2()?F2(e):t?e():a2(e)}function vl(e){var t;const n=Y2(e);return(t=n==null?void 0:n.$el)!=null?t:n}const fl=cl?window:void 0;function J0(...e){let t,n,o,r;if(Pk(e[0])||Array.isArray(e[0])?([n,o,r]=e,t=fl):[t,n,o,r]=e,!t)return Xe;Array.isArray(n)||(n=[n]),Array.isArray(o)||(o=[o]);const i=[],s=()=>{i.forEach(k=>k()),i.length=0},l=(k,u,h,p)=>(k.addEventListener(u,h,p),()=>k.removeEventListener(u,h,p)),d=V1(()=>[vl(t),Y2(r)],([k,u])=>{s(),k&&i.push(...n.flatMap(h=>o.map(p=>l(k,h,p,u))))},{immediate:!0,flush:"post"}),a=()=>{d(),s()};return Cl(a),a}function Nk(e,t=!1){const n=K(),o=()=>n.value=!!e();return o(),Fk(o,t),n}const Q0=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},X0="__vueuse_ssr_handlers__";Q0[X0]=Q0[X0]||{};var es=Object.getOwnPropertySymbols,Uk=Object.prototype.hasOwnProperty,qk=Object.prototype.propertyIsEnumerable,zk=(e,t)=>{var n={};for(var o in e)Uk.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&es)for(var o of es(e))t.indexOf(o)<0&&qk.call(e,o)&&(n[o]=e[o]);return n};function Wk(e,t,n={}){const o=n,{window:r=fl}=o,i=zk(o,["window"]);let s;const l=Nk(()=>r&&"ResizeObserver"in r),d=()=>{s&&(s.disconnect(),s=void 0)},a=V1(()=>vl(e),u=>{d(),l.value&&r&&u&&(s=new ResizeObserver(t),s.observe(u,i))},{immediate:!0,flush:"post"}),k=()=>{d(),a()};return Cl(k),{isSupported:l,stop:k}}const ts=1;function Gk(e,t={}){const{throttle:n=0,idle:o=200,onStop:r=Xe,onScroll:i=Xe,offset:s={left:0,right:0,top:0,bottom:0},eventListenerOptions:l={capture:!1,passive:!0},behavior:d="auto"}=t,a=K(0),k=K(0),u=N({get(){return a.value},set(v){p(v,void 0)}}),h=N({get(){return k.value},set(v){p(void 0,v)}});function p(v,j){var L,b,O;const V=Y2(e);V&&((O=V instanceof Document?document.body:V)==null||O.scrollTo({top:(L=Y2(j))!=null?L:h.value,left:(b=Y2(v))!=null?b:u.value,behavior:Y2(d)}))}const C=K(!1),f=I1({left:!0,right:!1,top:!0,bottom:!1}),m=I1({left:!1,right:!1,top:!1,bottom:!1}),x=v=>{C.value&&(C.value=!1,m.left=!1,m.right=!1,m.top=!1,m.bottom=!1,r(v))},w=gl(x,n+o),D=v=>{const j=v.target===document?v.target.documentElement:v.target,L=j.scrollLeft;m.left=Lk.value,f.left=L<=0+(s.left||0),f.right=L+j.clientWidth>=j.scrollWidth-(s.right||0)-ts,a.value=L;let b=j.scrollTop;v.target===document&&!b&&(b=document.body.scrollTop),m.top=bk.value,f.top=b<=0+(s.top||0),f.bottom=b+j.clientHeight>=j.scrollHeight-(s.bottom||0)-ts,k.value=b,C.value=!0,w(v),i(v)};return J0(e,"scroll",n?$k(D,n,!0,!1):D,l),J0(e,"scrollend",x,l),{x:u,y:h,isScrolling:C,arrivedState:f,directions:m}}var Kk=Object.defineProperty,Yk=Object.defineProperties,Jk=Object.getOwnPropertyDescriptors,ns=Object.getOwnPropertySymbols,Qk=Object.prototype.hasOwnProperty,Xk=Object.prototype.propertyIsEnumerable,os=(e,t,n)=>t in e?Kk(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,rs=(e,t)=>{for(var n in t||(t={}))Qk.call(t,n)&&os(e,n,t[n]);if(ns)for(var n of ns(t))Xk.call(t,n)&&os(e,n,t[n]);return e},eu=(e,t)=>Yk(e,Jk(t));function Tg(e,t,n={}){var o,r;const i=(o=n.direction)!=null?o:"bottom",s=I1(Gk(e,eu(rs({},n),{offset:rs({[i]:(r=n.distance)!=null?r:0},n.offset)})));V1(()=>s.arrivedState[i],async l=>{var d,a;if(l){const k=Y2(e),u={height:(d=k==null?void 0:k.scrollHeight)!=null?d:0,width:(a=k==null?void 0:k.scrollWidth)!=null?a:0};await t(s),n.preserveScrollPosition&&k&&a2(()=>{k.scrollTo({top:k.scrollHeight-u.height,left:k.scrollWidth-u.width})})}})}var is;(function(e){e.UP="UP",e.RIGHT="RIGHT",e.DOWN="DOWN",e.LEFT="LEFT",e.NONE="NONE"})(is||(is={}));var tu=Object.defineProperty,ss=Object.getOwnPropertySymbols,nu=Object.prototype.hasOwnProperty,ou=Object.prototype.propertyIsEnumerable,ls=(e,t,n)=>t in e?tu(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,ru=(e,t)=>{for(var n in t||(t={}))nu.call(t,n)&&ls(e,n,t[n]);if(ss)for(var n of ss(t))ou.call(t,n)&&ls(e,n,t[n]);return e};const iu={easeInSine:[.12,0,.39,0],easeOutSine:[.61,1,.88,1],easeInOutSine:[.37,0,.63,1],easeInQuad:[.11,0,.5,0],easeOutQuad:[.5,1,.89,1],easeInOutQuad:[.45,0,.55,1],easeInCubic:[.32,0,.67,0],easeOutCubic:[.33,1,.68,1],easeInOutCubic:[.65,0,.35,1],easeInQuart:[.5,0,.75,0],easeOutQuart:[.25,1,.5,1],easeInOutQuart:[.76,0,.24,1],easeInQuint:[.64,0,.78,0],easeOutQuint:[.22,1,.36,1],easeInOutQuint:[.83,0,.17,1],easeInExpo:[.7,0,.84,0],easeOutExpo:[.16,1,.3,1],easeInOutExpo:[.87,0,.13,1],easeInCirc:[.55,0,1,.45],easeOutCirc:[0,.55,.45,1],easeInOutCirc:[.85,0,.15,1],easeInBack:[.36,0,.66,-.56],easeOutBack:[.34,1.56,.64,1],easeInOutBack:[.68,-.6,.32,1.6]};ru({linear:Rk},iu);const su={"vuesax-linear:24-support":` @@ -6191,16 +6191,16 @@ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/HomeView-XsVegv -`},lu=["innerHTML"],du=f1({__name:"Icon",props:{icon:{},color:{default:null},size:{}},setup(e){const t=e,n=K(),o=N(()=>su[`${t.icon}`]);function r(){var s;if(!t.size)return;const i=(s=n.value)==null?void 0:s.children[0];i==null||i.setAttribute("width",t.size),i==null||i.setAttribute("height",t.size)}return V1(o,()=>a2(r),{immediate:!0}),(i,s)=>(U(),J("span",{ref_key:"refIcon",ref:n,style:ce({color:e.color??void 0}),class:"liman-icons flex",innerHTML:o.value},null,12,lu))}}),xe=(e,t)=>{const n=e.__vccOpts||e;for(const[o,r]of t)n[o]=r;return n},Y1=xe(du,[["__scopeId","data-v-d43d3684"]]),L9="gold-bank:token",H9="gold-bank:customerId",V9="gold-bank:mobile",ds="appToken",Nn="gold-bank:isSalesExpert",Yn="gold-bank:actingAs";function au(){try{const e=sessionStorage.getItem(Yn);if(!e)return null;const t=JSON.parse(e);return t&&typeof t.id=="string"?t:null}catch{return null}}const De=Me("session",{state:()=>({token:localStorage.getItem(L9),customerId:localStorage.getItem(H9),mobile:localStorage.getItem(V9),isSalesExpert:localStorage.getItem(Nn)==="1",actingAs:au()}),getters:{isLoggedIn:e=>!!e.token},actions:{login(e,t,n){this.token=e,this.customerId=t,this.mobile=n,localStorage.setItem(L9,e),localStorage.setItem(H9,t),localStorage.setItem(V9,n),localStorage.setItem(ds,e)},setSalesExpert(e){this.isSalesExpert=e,e?localStorage.setItem(Nn,"1"):localStorage.removeItem(Nn)},setActingAs(e){this.actingAs=e;try{e?sessionStorage.setItem(Yn,JSON.stringify(e)):sessionStorage.removeItem(Yn)}catch{}},logout(){this.token=null,this.customerId=null,this.mobile=null,this.isSalesExpert=!1,this.actingAs=null;try{sessionStorage.removeItem(Yn)}catch{}localStorage.removeItem(Nn),localStorage.removeItem(L9),localStorage.removeItem(H9),localStorage.removeItem(V9),localStorage.removeItem(ds)}}}),as=[{name:"home",path:"/home",icon:"vuesax-linear:home-2",label:"خانه"},{name:"search",path:"/search",icon:"vuesax-linear:search-normal-1",label:"جستجو"},{name:"cart",path:"/cart",icon:"vuesax-linear:bag-happy",label:"سبد خرید"},{name:"ordersList",path:"/orders",icon:"vuesax-linear:receipt-text",label:"سفارشات"},{name:"userPage::hasSubRoute",path:"/user",icon:"vuesax-linear:user",label:"پروفایل"}],ui=Me("nav",{state:()=>({activeLink:1,showNav:!0,pageTransition:"right",entryIndex:null}),getters:{visibleNavBarRoutes(){return(De().isLoggedIn?as:as.filter(n=>n.name!=="ordersList")).map((n,o)=>({...n,index:o+1}))},canGoBack:e=>{var n;if(e.entryIndex===null)return!1;const t=(n=window.history.state)==null?void 0:n.position;return typeof t=="number"?t>e.entryIndex:!1}},actions:{noteFirstNavigation(){var t;if(this.entryIndex!==null)return;const e=(t=window.history.state)==null?void 0:t.position;this.entryIndex=typeof e=="number"?e:0},setNavVisibility(e){this.showNav=e},setActiveLink(e){this.activeLink=e},setPgaTransition(e){this.pageTransition=e}}}),ku={class:"tabbar"},uu={class:"tabbar__label"},hu=f1({__name:"Navigation",setup(e){const t=ui(),n=N(()=>-(t.activeLink-1)*100);return(o,r)=>{const i=Vn("router-link");return Fr((U(),J("nav",ku,[A("div",{class:"tabbar__inner",style:ce({"--count":t1(t).visibleNavBarRoutes.length})},[A("div",{class:"tabbar__indicator",style:ce({transform:`translateX(${n.value}%)`}),"aria-hidden":"true"},null,4),(U(!0),J(v1,null,ue(t1(t).visibleNavBarRoutes,s=>(U(),O1(i,{key:s.name,to:{name:s.name},class:G1(["tabbar__item",{"is-active":t1(t).activeLink===s.index}])},{default:z1(()=>[H(Y1,{icon:s.icon,size:"21"},null,8,["icon"]),A("span",uu,p1(s.label),1)]),_:2},1032,["to","class"]))),128))],4)],512)),[[ti,t1(t).showNav]])}}}),pu=xe(hu,[["__scopeId","data-v-4dc8ae78"]]),cu=Me("windowData",{state:()=>({width:0,pullingDown:!1}),actions:{setWidth(e){this.width=e},setPullingDown(e){this.pullingDown=e}}}),wu=400;let wr=null,ie=null;function Cu(){ie==null||ie(),wr=new Promise(e=>{const t=setTimeout(n,wu);function n(){clearTimeout(t),ie===n&&(ie=null,wr=null),e()}ie=n})}function ks(){ie==null||ie()}function gu(){return wr??Promise.resolve()}const vu=f1({__name:"MasterLayout",setup(e){const t=["HomeView","SearchView","OrdersView","DashboardView"],n=cu(),o=K(null);return zr(()=>{n.setWidth(window.innerWidth)}),Wk(o,r=>{const i=r[0],{width:s}=i.contentRect;n.width!==s&&n.setWidth(s)}),(r,i)=>{const s=Vn("router-view");return U(),J("section",{ref_key:"content",ref:o},[H(s,null,{default:z1(({Component:l,route:d})=>[H(Yo,{name:"page",mode:"out-in",onBeforeLeave:t1(Cu),onAfterLeave:t1(ks),onLeaveCancelled:t1(ks)},{default:z1(()=>[(U(),O1(J5,{include:t},[(U(),O1(G9(l),{key:d.name}))],1024))]),_:2},1032,["onBeforeLeave","onAfterLeave","onLeaveCancelled"])]),_:1}),H(pu),i[0]||(i[0]=A("div",{class:"bg-primary top-[-2rem] fixed h-[2rem] w-full z-10"},null,-1))],512)}}}),fu={};function mu(e,t){const n=Vn("router-view");return U(),J("div",null,[H(n)])}const Mu=xe(fu,[["render",mu]]),ju=5*60*1e3,ml=229,Ml=K(null),xo=Ml,us=K(!1);let Un,Tt=0;async function Qn(){if(!xo.value)try{const e=await fetch(`/version.json?t=${Date.now()}`,{cache:"no-store"});if(!e.ok)return;const t=await e.json();typeof t.build=="number"&&t.build>ml&&(xo.value=t)}catch{}}const hs=()=>{document.visibilityState==="visible"&&Qn()};function xu(){const e=N(()=>{const n=xo.value;return n?(n.history??[]).filter(o=>o.build>ml&&o.build<=n.build):[]});async function t(){var n,o;us.value=!0;try{const r=await((o=(n=navigator.serviceWorker)==null?void 0:n.getRegistrations)==null?void 0:o.call(n));r&&await Promise.all(r.map(i=>i.unregister()))}catch{}try{if("caches"in window){const r=await caches.keys();await Promise.all(r.map(i=>caches.delete(i)))}}catch{}window.location.reload()}return F2(()=>{Tt+=1,Tt===1&&(Qn(),Un=setInterval(Qn,ju),document.addEventListener("visibilitychange",hs))}),Pe(()=>{Tt-=1,Tt<=0&&(Tt=0,Un&&clearInterval(Un),Un=void 0,document.removeEventListener("visibilitychange",hs))}),{available:xo,changes:e,updating:us,applyUpdate:t,check:Qn}}const Du={key:0,class:"update-gate",role:"dialog","aria-modal":"true","aria-labelledby":"update-gate-title"},Lu={class:"update-gate__card"},Hu={class:"update-gate__badge"},Vu={class:"update-gate__body"},yu={class:"update-gate__list"},bu={key:1,class:"update-gate__lead"},Zu=["disabled"],_u=f1({__name:"AppUpdateGate",setup(e){const{available:t,changes:n,updating:o,applyUpdate:r}=xu();return(i,s)=>(U(),O1(nt,{to:"body"},[t1(t)?(U(),J("div",Du,[A("div",Lu,[A("div",Hu,"نسخه‌ی "+p1(t1(t).version),1),s[2]||(s[2]=A("h2",{id:"update-gate-title",class:"update-gate__title"},"نسخه‌ی تازه آماده است",-1)),A("div",Vu,[t1(n).length?(U(),J(v1,{key:0},[s[1]||(s[1]=A("p",{class:"update-gate__lead"},"در این نسخه:",-1)),A("ul",yu,[(U(!0),J(v1,null,ue(t1(n),l=>(U(),J(v1,{key:l.build},[(U(!0),J(v1,null,ue(l.notes,(d,a)=>(U(),J("li",{key:l.build+"-"+a},p1(d),1))),128))],64))),128))])],64)):(U(),J("p",bu,"بهبودها و رفع اشکال‌ها."))]),A("button",{type:"button",class:"update-gate__button",disabled:t1(o),onClick:s[0]||(s[0]=(...l)=>t1(r)&&t1(r)(...l))},p1(t1(o)?"در حال به‌روزرسانی…":"به‌روزرسانی"),9,Zu),s[3]||(s[3]=A("p",{class:"update-gate__hint"},"ورود و سبد خرید شما سر جایش می‌ماند.",-1))])])):x1("",!0)]))}}),Bu=xe(_u,[["__scopeId","data-v-d1179f36"]]),jl="/img/brand-logo.png",Do={name:"هدناگلد",nameEn:"Hedena Gold",appTitle:"طلای هدناگلد",adminTitle:"هدناگلد — پنل مدیریت",siteUrl:"https://bnk.montzar.ir"},xl="pwaInstall",Su=7*24*60*60*1e3,Eu=4e3,sn=K(!1),Ht=K("offer"),Zn=K(!1),Dl=K(Vl());let gt=null,Ll=!1,ps=!1,Lo=!0,Cr=!1;function Hl(){var n,o;if(typeof window>"u")return!1;const e=(o=(n=window.matchMedia)==null?void 0:n.call(window,"(display-mode: standalone)"))==null?void 0:o.matches,t=navigator.standalone===!0;return!!(e||t)}function Vl(){if(typeof navigator>"u")return"android";const e=navigator.userAgent||"";return/iPad|iPhone|iPod/.test(e)||navigator.platform==="MacIntel"&&navigator.maxTouchPoints>1?"ios":"android"}function Ou(){const e={dismissedAt:null,installed:!1};try{const t=localStorage.getItem(xl);if(!t)return e;const n=JSON.parse(t);return{dismissedAt:typeof n.dismissedAt=="number"?n.dismissedAt:null,installed:n.installed===!0}}catch{return Lo=!1,e}}function e9(e){if(Lo)try{localStorage.setItem(xl,JSON.stringify(e))}catch{Lo=!1}}const o2=K(Ou());function yl(){Hl()&&(o2.value.installed||(o2.value={...o2.value,installed:!0},e9(o2.value)))}function bl(){if(!Lo||(yl(),o2.value.installed||Hl()))return!1;const e=o2.value.dismissedAt;return!(e!=null&&Date.now()-ebl());function t9(e){Cr=(e==null?void 0:e.silent)===!0,sn.value=!1,Ht.value="offer"}function Pu(){o2.value={...o2.value,dismissedAt:Date.now()},e9(o2.value),t9({silent:!0})}function hi(){o2.value={dismissedAt:o2.value.dismissedAt,installed:!0},e9(o2.value),gt=null,Zn.value=!1,t9({silent:!0})}function Tu(){if(Cr){Cr=!1,Ht.value="offer";return}o2.value.installed||(o2.value={...o2.value,dismissedAt:Date.now()},e9(o2.value)),Ht.value="offer"}function Zl(){Ht.value="guide"}async function _l(){if(!gt)return"unavailable";const e=gt;gt=null,Zn.value=!1;try{await e.prompt();const{outcome:t}=await e.userChoice;return t==="accepted"?(hi(),"accepted"):"dismissed"}catch{return"dismissed"}}async function Iu(){if(Zn.value&>){await _l();return}Zl()}function y9(e,t){if(Ll){if(e||t){sn.value&&t9({silent:!0});return}bl()&&(sn.value||(Ht.value="offer",sn.value=!0))}}function Ru(e){e.preventDefault(),gt=e,Zn.value=!0}function $u(){hi()}function Fu(e,t){if(ps||typeof window>"u")return;ps=!0,Dl.value=Vl(),yl(),window.addEventListener("beforeinstallprompt",Ru),window.addEventListener("appinstalled",$u);const n=()=>{var r;return((r=e.currentRoute.value.meta)==null?void 0:r.layout)==="FullPage"},o=()=>!!t.value;setTimeout(()=>{Ll=!0,y9(n(),o())},Eu),V1(()=>{var r;return[e.currentRoute.value.fullPath,(r=e.currentRoute.value.meta)==null?void 0:r.layout,t.value]},()=>y9(n(),o())),document.addEventListener("visibilitychange",()=>{document.visibilityState==="visible"&&y9(n(),o())})}function Bl(){function e(t){Fu(t,Ml)}return{visible:sn,mode:Ht,platform:Dl,canNativeInstall:Zn,shouldShowPrompt:Au,start:e,dismiss:Pu,markInstalled:hi,openGuide:Zl,promptInstall:_l,onPrimaryCta:Iu,closeModal:t9,onDialogClosed:Tu}}const Nu={class:"hg-dialog__inner hg-install"},Uu={class:"hg-dialog__media"},qu=["alt"],zu={class:"hg-dialog__body hg-install__copy"},Wu={class:"hg-install__title"},Gu={class:"hg-dialog__actions"},Ku={class:"hg-dialog__body hg-install__copy"},Yu={class:"hg-install__steps"},Qu={class:"hg-install__step-icon","aria-hidden":"true"},Ju={key:0,width:"20",height:"20",viewBox:"0 0 24 24",fill:"none"},Xu={key:1,width:"20",height:"20",viewBox:"0 0 24 24",fill:"none"},eh={key:2,width:"20",height:"20",viewBox:"0 0 24 24",fill:"none"},th={key:3,width:"20",height:"20",viewBox:"0 0 24 24",fill:"none"},nh={class:"hg-install__step-text"},oh={class:"hg-dialog__actions"},rh=f1({__name:"InstallPromptModal",setup(e){const{visible:t,mode:n,platform:o,canNativeInstall:r,dismiss:i,onPrimaryCta:s,onDialogClosed:l}=Bl(),d=[{icon:"menu",text:"منوی مرورگر (⋮) را باز کنید"},{icon:"plus",text:"گزینهٔ «نصب برنامه» یا «Add to Home screen» را بزنید"},{icon:"home",text:"نصب را تأیید کنید"}],a=[{icon:"share",text:"دکمهٔ Share (مربع با فلش رو به بالا) را بزنید"},{icon:"plus",text:"«Add to Home Screen» / افزودن به صفحهٔ اصلی را انتخاب کنید"},{icon:"home",text:"Add را تأیید کنید"}],k=N(()=>o.value==="ios"?a:d);return(u,h)=>(U(),O1(t1(tl),{show:t1(t),"onUpdate:show":h[3]||(h[3]=p=>E1(t)?t.value=p:null),class:"hg-dialog hg-install-dialog","show-confirm-button":!1,"show-cancel-button":!1,"close-on-click-overlay":!0,onClosed:t1(l)},{default:z1(()=>[A("div",Nu,[A("button",{type:"button",class:"hg-install__close","aria-label":"بستن",onClick:h[0]||(h[0]=(...p)=>t1(i)&&t1(i)(...p))},[...h[4]||(h[4]=[A("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none","aria-hidden":"true"},[A("path",{d:"M6 6l12 12M18 6L6 18",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round"})],-1)])]),t1(n)==="offer"?(U(),J(v1,{key:0},[A("div",Uu,[A("img",{src:jl,alt:t1(Do).name},null,8,qu)]),A("div",zu,[A("h2",Wu,"نصب اپلیکیشن "+p1(t1(Do).name),1),h[5]||(h[5]=A("p",{class:"hg-install__lead"},"دسترسی سریع‌تر و تجربهٔ شبیه اپ واقعی",-1))]),A("div",Gu,[A("button",{type:"button",class:"hg-install__cta",onClick:h[1]||(h[1]=(...p)=>t1(s)&&t1(s)(...p))},p1(t1(r)?"نصب اپ":"مشاهده راهنما"),1)])],64)):(U(),J(v1,{key:1},[A("div",Ku,[h[10]||(h[10]=A("h2",{class:"hg-install__title"},"راهنمای نصب",-1)),A("ol",Yu,[(U(!0),J(v1,null,ue(k.value,(p,C)=>(U(),J("li",{key:C,class:"hg-install__step"},[A("span",Qu,[p.icon==="menu"?(U(),J("svg",Ju,[...h[6]||(h[6]=[A("circle",{cx:"12",cy:"5",r:"1.6",fill:"currentColor"},null,-1),A("circle",{cx:"12",cy:"12",r:"1.6",fill:"currentColor"},null,-1),A("circle",{cx:"12",cy:"19",r:"1.6",fill:"currentColor"},null,-1)])])):p.icon==="share"?(U(),J("svg",Xu,[...h[7]||(h[7]=[A("path",{d:"M12 3v10M8 7l4-4 4 4",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},null,-1),A("path",{d:"M5 14v4a2 2 0 002 2h10a2 2 0 002-2v-4",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round"},null,-1)])])):p.icon==="home"?(U(),J("svg",eh,[...h[8]||(h[8]=[A("path",{d:"M4 11.5L12 4l8 7.5V20a1 1 0 01-1 1h-5v-5H10v5H5a1 1 0 01-1-1v-8.5z",stroke:"currentColor","stroke-width":"2","stroke-linejoin":"round"},null,-1)])])):(U(),J("svg",th,[...h[9]||(h[9]=[A("path",{d:"M5 12h14M13 6l6 6-6 6",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},null,-1)])]))]),A("span",nh,p1(p.text),1)]))),128))])]),A("div",oh,[A("button",{type:"button",class:"hg-install__cta",onClick:h[2]||(h[2]=(...p)=>t1(i)&&t1(i)(...p))},"متوجه شدم")])],64))])]),_:1},8,["show","onClosed"]))}}),ih={class:"toast__tile","aria-hidden":"true"},sh={class:"toast__body"},lh={key:0,class:"toast__title"},dh={class:"toast__message"},cs=80,ah=f1({__name:"ToastCard",props:{item:{}},emits:["close"],setup(e,{emit:t}){const n=t,o=K(!1),r=K(!1),i=K(0),s=K(0);let l=0,d=0;const a=K(!1);let k=0;const u=N(()=>{if(a.value)return{transform:`translate(${i.value}px, ${s.value}px)`,opacity:"0",transition:"transform 0.22s ease-in, opacity 0.22s ease-in"};if(!r.value)return;const f=s.value<0?s.value:s.value*.25,m=1-Math.min(Math.abs(i.value)/220,.6);return{transform:`translate(${i.value}px, ${f}px) rotate(${i.value*.03}deg)`,opacity:String(m),transition:"none"}});function h(f){o.value=!0,l=f.clientX,d=f.clientY,k=Date.now(),f.currentTarget.setPointerCapture(f.pointerId)}function p(f){o.value&&(i.value=f.clientX-l,s.value=f.clientY-d,!r.value&&Math.hypot(i.value,s.value)>6&&(r.value=!0))}function C(){if(o.value=!1,!r.value){Date.now()-k<250&&n("close");return}if(Math.abs(i.value)>cs||s.value<-36){a.value=!0,i.value=Math.abs(i.value)>cs?Math.sign(i.value)*window.innerWidth:i.value,s.value=s.value<-36?-160:s.value,r.value=!1,setTimeout(()=>n("close"),200);return}r.value=!1,i.value=0,s.value=0}return(f,m)=>(U(),J("div",{class:G1(["toast",[`toast--${e.item.type}`,{"is-held":o.value,"is-dragging":r.value}]]),style:ce(u.value),role:"status",onPointerdown:h,onPointermove:p,onPointerup:C,onPointercancel:C},[A("span",ih,[m[1]||(m[1]=A("span",{class:"toast__ripple"},null,-1)),H(Y1,{icon:e.item.icon,size:"22"},null,8,["icon"])]),A("div",sh,[e.item.title?(U(),J("div",lh,p1(e.item.title),1)):x1("",!0),A("div",dh,p1(e.item.message),1)]),e.item.duration>0?(U(),J("span",{key:0,class:"toast__progress keep-motion",style:ce({animationDuration:`${e.item.duration}ms`}),onAnimationend:m[0]||(m[0]=x=>n("close"))},null,36)):x1("",!0)],38))}}),kh=xe(ah,[["__scopeId","data-v-39e31559"]]),uh=3200,ws=3,hh={success:"vuesax-linear:tick-circle",error:"vuesax-linear:close-circle",info:"vuesax-linear:info-circle",warning:"vuesax-linear:warning-2"},We=I1({items:[]});let ph=1;function It(e,t,n={}){const o=ph++;return We.items.push({id:o,type:e,message:t,title:n.title,icon:n.icon??hh[e],duration:n.duration??uh}),We.items.length>ws&&We.items.splice(0,We.items.length-ws),o}function ch(e){const t=We.items.findIndex(n=>n.id===e);t!==-1&&We.items.splice(t,1)}const n9={show:It,dismiss:ch,success:(e,t)=>It("success",e,t),error:(e,t)=>It("error",e,t),info:(e,t)=>It("info",e,t),warning:(e,t)=>It("warning",e,t)};function wh(){return{toasts:We.items,...n9}}const Ch={class:"toast-host"},gh=f1({__name:"ToastHost",setup(e){const{toasts:t,dismiss:n}=wh();return(o,r)=>(U(),O1(nt,{to:"body"},[A("div",Ch,[H(Z4,{name:"toast"},{default:z1(()=>[(U(!0),J(v1,null,ue(t1(t),i=>(U(),O1(kh,{key:i.id,item:i,onClose:s=>t1(n)(i.id)},null,8,["item","onClose"]))),128))]),_:1})])]))}}),vh=["src","alt"],fh={key:0,class:"gs__counter"},Cs=.18,mh=6,Mh=f1({__name:"GallerySlider",props:$i({slides:{},alt:{},fit:{default:"cover"},showCounter:{type:Boolean,default:!1}},{index:{default:0},indexModifiers:{}}),emits:$i(["tap"],["update:index"]),setup(e,{emit:t}){const n=e,o=pa(e,"index"),r=t,i=N(()=>n.fit==="contain"?"gs__img--contain":"gs__img--cover"),s=K(null),l=K(!1),d=K(0);let a=null,k=0,u=0;function h(v){var L;if(n.slides.length<2||a!==null)return;const j=s.value;j&&(a=v.pointerId,k=v.clientX,u=j.getBoundingClientRect().width||1,d.value=0,l.value=!0,(L=j.setPointerCapture)==null||L.call(j,v.pointerId))}function p(v){!l.value||v.pointerId!==a||(d.value=v.clientX-k)}function C(){if(!l.value)return;const v=d.value,j=v/u;l.value=!1,a=null,d.value=0,j<=-Cs&&o.value=Cs&&o.value>0&&o.value--,Math.abs(v)<=mh&&r("tap")}function f(v){v.pointerId===a&&C()}function m(v){v.pointerId===a&&(l.value=!1,a=null,d.value=0)}function x(){}function w(v){o.value=v}const D=N(()=>{const v=-o.value*100,j=u?d.value/u*100:0;return{transform:`translate3d(${v+j}%, 0, 0)`,transition:l.value?"none":void 0}});return Pe(()=>{if(a!==null&&s.value)try{s.value.releasePointerCapture(a)}catch{}}),(v,j)=>(U(),J("div",{ref_key:"root",ref:s,class:G1(["gs",{"is-dragging":l.value}]),onPointerdown:h,onPointermove:p,onPointerup:f,onPointercancel:m,onClick:x},[A("div",{class:"gs__track",style:ce(D.value)},[(U(!0),J(v1,null,ue(e.slides,L=>(U(),J("div",{key:L,class:"gs__cell"},[A("img",{src:L,alt:e.alt,class:G1(["gs__img",i.value]),draggable:"false"},null,10,vh)]))),128))],4),e.showCounter&&e.slides.length>1?(U(),J("div",fh,p1(o.value+1)+"/"+p1(e.slides.length),1)):x1("",!0),wt(v.$slots,"dots",{index:o.value,go:w},void 0,!0)],34))}}),gs=xe(Mh,[["__scopeId","data-v-0e0334e8"]]);function ve(e){"@babel/helpers - typeof";return ve=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},ve(e)}function jh(e,t){if(ve(e)!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var o=n.call(e,t);if(ve(o)!="object")return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function xh(e){var t=jh(e,"string");return ve(t)=="symbol"?t:t+""}function W1(e,t,n){return(t=xh(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function vs(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable})),n.push.apply(n,o)}return n}function h1(e){for(var t=1;t1&&arguments[1]!==void 0?arguments[1]:{},n=arguments.length>2?arguments[2]:void 0;return typeof e=="function"?e(t):e??n}function _n(){for(var e=[],t=0;te.length)&&(t=e.length);for(var n=0,o=Array(t);nsu[`${t.icon}`]);function r(){var s;if(!t.size)return;const i=(s=n.value)==null?void 0:s.children[0];i==null||i.setAttribute("width",t.size),i==null||i.setAttribute("height",t.size)}return V1(o,()=>a2(r),{immediate:!0}),(i,s)=>(U(),Q("span",{ref_key:"refIcon",ref:n,style:ce({color:e.color??void 0}),class:"liman-icons flex",innerHTML:o.value},null,12,lu))}}),xe=(e,t)=>{const n=e.__vccOpts||e;for(const[o,r]of t)n[o]=r;return n},Y1=xe(du,[["__scopeId","data-v-d43d3684"]]),L9="gold-bank:token",H9="gold-bank:customerId",V9="gold-bank:mobile",ds="appToken",Nn="gold-bank:isSalesExpert",Yn="gold-bank:actingAs";function au(){try{const e=sessionStorage.getItem(Yn);if(!e)return null;const t=JSON.parse(e);return t&&typeof t.id=="string"?t:null}catch{return null}}const De=Me("session",{state:()=>({token:localStorage.getItem(L9),customerId:localStorage.getItem(H9),mobile:localStorage.getItem(V9),isSalesExpert:localStorage.getItem(Nn)==="1",actingAs:au()}),getters:{isLoggedIn:e=>!!e.token},actions:{login(e,t,n){this.token=e,this.customerId=t,this.mobile=n,localStorage.setItem(L9,e),localStorage.setItem(H9,t),localStorage.setItem(V9,n),localStorage.setItem(ds,e)},setSalesExpert(e){this.isSalesExpert=e,e?localStorage.setItem(Nn,"1"):localStorage.removeItem(Nn)},setActingAs(e){this.actingAs=e;try{e?sessionStorage.setItem(Yn,JSON.stringify(e)):sessionStorage.removeItem(Yn)}catch{}},logout(){this.token=null,this.customerId=null,this.mobile=null,this.isSalesExpert=!1,this.actingAs=null;try{sessionStorage.removeItem(Yn)}catch{}localStorage.removeItem(Nn),localStorage.removeItem(L9),localStorage.removeItem(H9),localStorage.removeItem(V9),localStorage.removeItem(ds)}}}),as=[{name:"home",path:"/home",icon:"vuesax-linear:home-2",label:"خانه"},{name:"search",path:"/search",icon:"vuesax-linear:search-normal-1",label:"جستجو"},{name:"cart",path:"/cart",icon:"vuesax-linear:bag-happy",label:"سبد خرید"},{name:"ordersList",path:"/orders",icon:"vuesax-linear:receipt-text",label:"سفارشات"},{name:"userPage::hasSubRoute",path:"/user",icon:"vuesax-linear:user",label:"پروفایل"}],ui=Me("nav",{state:()=>({activeLink:1,showNav:!0,pageTransition:"right",entryIndex:null}),getters:{visibleNavBarRoutes(){return(De().isLoggedIn?as:as.filter(n=>n.name!=="ordersList")).map((n,o)=>({...n,index:o+1}))},canGoBack:e=>{var n;if(e.entryIndex===null)return!1;const t=(n=window.history.state)==null?void 0:n.position;return typeof t=="number"?t>e.entryIndex:!1}},actions:{noteFirstNavigation(){var t;if(this.entryIndex!==null)return;const e=(t=window.history.state)==null?void 0:t.position;this.entryIndex=typeof e=="number"?e:0},setNavVisibility(e){this.showNav=e},setActiveLink(e){this.activeLink=e},setPgaTransition(e){this.pageTransition=e}}}),ku={class:"tabbar"},uu={class:"tabbar__label"},hu=f1({__name:"Navigation",setup(e){const t=ui(),n=N(()=>-(t.activeLink-1)*100);return(o,r)=>{const i=Vn("router-link");return Fr((U(),Q("nav",ku,[A("div",{class:"tabbar__inner",style:ce({"--count":t1(t).visibleNavBarRoutes.length})},[A("div",{class:"tabbar__indicator",style:ce({transform:`translateX(${n.value}%)`}),"aria-hidden":"true"},null,4),(U(!0),Q(v1,null,ue(t1(t).visibleNavBarRoutes,s=>(U(),A1(i,{key:s.name,to:{name:s.name},class:G1(["tabbar__item",{"is-active":t1(t).activeLink===s.index}])},{default:z1(()=>[H(Y1,{icon:s.icon,size:"21"},null,8,["icon"]),A("span",uu,p1(s.label),1)]),_:2},1032,["to","class"]))),128))],4)],512)),[[ti,t1(t).showNav]])}}}),pu=xe(hu,[["__scopeId","data-v-4dc8ae78"]]),cu=Me("windowData",{state:()=>({width:0,pullingDown:!1}),actions:{setWidth(e){this.width=e},setPullingDown(e){this.pullingDown=e}}}),wu=400;let wr=null,ie=null;function Cu(){ie==null||ie(),wr=new Promise(e=>{const t=setTimeout(n,wu);function n(){clearTimeout(t),ie===n&&(ie=null,wr=null),e()}ie=n})}function ks(){ie==null||ie()}function gu(){return wr??Promise.resolve()}const vu=f1({__name:"MasterLayout",setup(e){const t=["HomeView","SearchView","OrdersView","DashboardView"],n=cu(),o=K(null);return zr(()=>{n.setWidth(window.innerWidth)}),Wk(o,r=>{const i=r[0],{width:s}=i.contentRect;n.width!==s&&n.setWidth(s)}),(r,i)=>{const s=Vn("router-view");return U(),Q("section",{ref_key:"content",ref:o},[H(s,null,{default:z1(({Component:l,route:d})=>[H(Yo,{name:"page",mode:"out-in",onBeforeLeave:t1(Cu),onAfterLeave:t1(ks),onLeaveCancelled:t1(ks)},{default:z1(()=>[(U(),A1(Q5,{include:t},[(U(),A1(G9(l),{key:d.name}))],1024))]),_:2},1032,["onBeforeLeave","onAfterLeave","onLeaveCancelled"])]),_:1}),H(pu),i[0]||(i[0]=A("div",{class:"bg-primary top-[-2rem] fixed h-[2rem] w-full z-10"},null,-1))],512)}}}),fu={};function mu(e,t){const n=Vn("router-view");return U(),Q("div",null,[H(n)])}const Mu=xe(fu,[["render",mu]]),ju=5*60*1e3,ml=231,Ml=K(null),xo=Ml,us=K(!1);let Un,Tt=0;async function Jn(){if(!xo.value)try{const e=await fetch(`/version.json?t=${Date.now()}`,{cache:"no-store"});if(!e.ok)return;const t=await e.json();typeof t.build=="number"&&t.build>ml&&(xo.value=t)}catch{}}const hs=()=>{document.visibilityState==="visible"&&Jn()};function xu(){const e=N(()=>{const n=xo.value;return n?(n.history??[]).filter(o=>o.build>ml&&o.build<=n.build):[]});async function t(){var n,o;us.value=!0;try{const r=await((o=(n=navigator.serviceWorker)==null?void 0:n.getRegistrations)==null?void 0:o.call(n));r&&await Promise.all(r.map(i=>i.unregister()))}catch{}try{if("caches"in window){const r=await caches.keys();await Promise.all(r.map(i=>caches.delete(i)))}}catch{}window.location.reload()}return F2(()=>{Tt+=1,Tt===1&&(Jn(),Un=setInterval(Jn,ju),document.addEventListener("visibilitychange",hs))}),Pe(()=>{Tt-=1,Tt<=0&&(Tt=0,Un&&clearInterval(Un),Un=void 0,document.removeEventListener("visibilitychange",hs))}),{available:xo,changes:e,updating:us,applyUpdate:t,check:Jn}}const Du={key:0,class:"update-gate",role:"dialog","aria-modal":"true","aria-labelledby":"update-gate-title"},Lu={class:"update-gate__card"},Hu={class:"update-gate__badge"},Vu={class:"update-gate__body"},yu={class:"update-gate__list"},bu={key:1,class:"update-gate__lead"},Zu=["disabled"],_u=f1({__name:"AppUpdateGate",setup(e){const{available:t,changes:n,updating:o,applyUpdate:r}=xu();return(i,s)=>(U(),A1(nt,{to:"body"},[t1(t)?(U(),Q("div",Du,[A("div",Lu,[A("div",Hu,"نسخه‌ی "+p1(t1(t).version),1),s[2]||(s[2]=A("h2",{id:"update-gate-title",class:"update-gate__title"},"نسخه‌ی تازه آماده است",-1)),A("div",Vu,[t1(n).length?(U(),Q(v1,{key:0},[s[1]||(s[1]=A("p",{class:"update-gate__lead"},"در این نسخه:",-1)),A("ul",yu,[(U(!0),Q(v1,null,ue(t1(n),l=>(U(),Q(v1,{key:l.build},[(U(!0),Q(v1,null,ue(l.notes,(d,a)=>(U(),Q("li",{key:l.build+"-"+a},p1(d),1))),128))],64))),128))])],64)):(U(),Q("p",bu,"بهبودها و رفع اشکال‌ها."))]),A("button",{type:"button",class:"update-gate__button",disabled:t1(o),onClick:s[0]||(s[0]=(...l)=>t1(r)&&t1(r)(...l))},p1(t1(o)?"در حال به‌روزرسانی…":"به‌روزرسانی"),9,Zu),s[3]||(s[3]=A("p",{class:"update-gate__hint"},"ورود و سبد خرید شما سر جایش می‌ماند.",-1))])])):x1("",!0)]))}}),Bu=xe(_u,[["__scopeId","data-v-d1179f36"]]),jl="/img/brand-logo.png",Do={name:"هدناگلد",nameEn:"Hedena Gold",appTitle:"طلای هدناگلد",adminTitle:"هدناگلد — پنل مدیریت",siteUrl:"https://bnk.montzar.ir"},xl="pwaInstall",Su=7*24*60*60*1e3,Eu=4e3,sn=K(!1),Ht=K("offer"),Zn=K(!1),Dl=K(Vl());let gt=null,Ll=!1,ps=!1,Lo=!0,Cr=!1;function Hl(){var n,o;if(typeof window>"u")return!1;const e=(o=(n=window.matchMedia)==null?void 0:n.call(window,"(display-mode: standalone)"))==null?void 0:o.matches,t=navigator.standalone===!0;return!!(e||t)}function Vl(){if(typeof navigator>"u")return"android";const e=navigator.userAgent||"";return/iPad|iPhone|iPod/.test(e)||navigator.platform==="MacIntel"&&navigator.maxTouchPoints>1?"ios":"android"}function Ou(){const e={dismissedAt:null,installed:!1};try{const t=localStorage.getItem(xl);if(!t)return e;const n=JSON.parse(t);return{dismissedAt:typeof n.dismissedAt=="number"?n.dismissedAt:null,installed:n.installed===!0}}catch{return Lo=!1,e}}function e9(e){if(Lo)try{localStorage.setItem(xl,JSON.stringify(e))}catch{Lo=!1}}const o2=K(Ou());function yl(){Hl()&&(o2.value.installed||(o2.value={...o2.value,installed:!0},e9(o2.value)))}function bl(){if(!Lo||(yl(),o2.value.installed||Hl()))return!1;const e=o2.value.dismissedAt;return!(e!=null&&Date.now()-ebl());function t9(e){Cr=(e==null?void 0:e.silent)===!0,sn.value=!1,Ht.value="offer"}function Pu(){o2.value={...o2.value,dismissedAt:Date.now()},e9(o2.value),t9({silent:!0})}function hi(){o2.value={dismissedAt:o2.value.dismissedAt,installed:!0},e9(o2.value),gt=null,Zn.value=!1,t9({silent:!0})}function Tu(){if(Cr){Cr=!1,Ht.value="offer";return}o2.value.installed||(o2.value={...o2.value,dismissedAt:Date.now()},e9(o2.value)),Ht.value="offer"}function Zl(){Ht.value="guide"}async function _l(){if(!gt)return"unavailable";const e=gt;gt=null,Zn.value=!1;try{await e.prompt();const{outcome:t}=await e.userChoice;return t==="accepted"?(hi(),"accepted"):"dismissed"}catch{return"dismissed"}}async function Iu(){if(Zn.value&>){await _l();return}Zl()}function y9(e,t){if(Ll){if(e||t){sn.value&&t9({silent:!0});return}bl()&&(sn.value||(Ht.value="offer",sn.value=!0))}}function Ru(e){e.preventDefault(),gt=e,Zn.value=!0}function $u(){hi()}function Fu(e,t){if(ps||typeof window>"u")return;ps=!0,Dl.value=Vl(),yl(),window.addEventListener("beforeinstallprompt",Ru),window.addEventListener("appinstalled",$u);const n=()=>{var r;return((r=e.currentRoute.value.meta)==null?void 0:r.layout)==="FullPage"},o=()=>!!t.value;setTimeout(()=>{Ll=!0,y9(n(),o())},Eu),V1(()=>{var r;return[e.currentRoute.value.fullPath,(r=e.currentRoute.value.meta)==null?void 0:r.layout,t.value]},()=>y9(n(),o())),document.addEventListener("visibilitychange",()=>{document.visibilityState==="visible"&&y9(n(),o())})}function Bl(){function e(t){Fu(t,Ml)}return{visible:sn,mode:Ht,platform:Dl,canNativeInstall:Zn,shouldShowPrompt:Au,start:e,dismiss:Pu,markInstalled:hi,openGuide:Zl,promptInstall:_l,onPrimaryCta:Iu,closeModal:t9,onDialogClosed:Tu}}const Nu={class:"hg-dialog__inner hg-install"},Uu={class:"hg-dialog__media"},qu=["alt"],zu={class:"hg-dialog__body hg-install__copy"},Wu={class:"hg-install__title"},Gu={class:"hg-dialog__actions"},Ku={class:"hg-dialog__body hg-install__copy"},Yu={class:"hg-install__steps"},Ju={class:"hg-install__step-icon","aria-hidden":"true"},Qu={key:0,width:"20",height:"20",viewBox:"0 0 24 24",fill:"none"},Xu={key:1,width:"20",height:"20",viewBox:"0 0 24 24",fill:"none"},eh={key:2,width:"20",height:"20",viewBox:"0 0 24 24",fill:"none"},th={key:3,width:"20",height:"20",viewBox:"0 0 24 24",fill:"none"},nh={class:"hg-install__step-text"},oh={class:"hg-dialog__actions"},rh=f1({__name:"InstallPromptModal",setup(e){const{visible:t,mode:n,platform:o,canNativeInstall:r,dismiss:i,onPrimaryCta:s,onDialogClosed:l}=Bl(),d=[{icon:"menu",text:"منوی مرورگر (⋮) را باز کنید"},{icon:"plus",text:"گزینهٔ «نصب برنامه» یا «Add to Home screen» را بزنید"},{icon:"home",text:"نصب را تأیید کنید"}],a=[{icon:"share",text:"دکمهٔ Share (مربع با فلش رو به بالا) را بزنید"},{icon:"plus",text:"«Add to Home Screen» / افزودن به صفحهٔ اصلی را انتخاب کنید"},{icon:"home",text:"Add را تأیید کنید"}],k=N(()=>o.value==="ios"?a:d);return(u,h)=>(U(),A1(t1(tl),{show:t1(t),"onUpdate:show":h[3]||(h[3]=p=>E1(t)?t.value=p:null),class:"hg-dialog hg-install-dialog","show-confirm-button":!1,"show-cancel-button":!1,"close-on-click-overlay":!0,onClosed:t1(l)},{default:z1(()=>[A("div",Nu,[A("button",{type:"button",class:"hg-install__close","aria-label":"بستن",onClick:h[0]||(h[0]=(...p)=>t1(i)&&t1(i)(...p))},[...h[4]||(h[4]=[A("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none","aria-hidden":"true"},[A("path",{d:"M6 6l12 12M18 6L6 18",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round"})],-1)])]),t1(n)==="offer"?(U(),Q(v1,{key:0},[A("div",Uu,[A("img",{src:jl,alt:t1(Do).name},null,8,qu)]),A("div",zu,[A("h2",Wu,"نصب اپلیکیشن "+p1(t1(Do).name),1),h[5]||(h[5]=A("p",{class:"hg-install__lead"},"دسترسی سریع‌تر و تجربهٔ شبیه اپ واقعی",-1))]),A("div",Gu,[A("button",{type:"button",class:"hg-install__cta",onClick:h[1]||(h[1]=(...p)=>t1(s)&&t1(s)(...p))},p1(t1(r)?"نصب اپ":"مشاهده راهنما"),1)])],64)):(U(),Q(v1,{key:1},[A("div",Ku,[h[10]||(h[10]=A("h2",{class:"hg-install__title"},"راهنمای نصب",-1)),A("ol",Yu,[(U(!0),Q(v1,null,ue(k.value,(p,C)=>(U(),Q("li",{key:C,class:"hg-install__step"},[A("span",Ju,[p.icon==="menu"?(U(),Q("svg",Qu,[...h[6]||(h[6]=[A("circle",{cx:"12",cy:"5",r:"1.6",fill:"currentColor"},null,-1),A("circle",{cx:"12",cy:"12",r:"1.6",fill:"currentColor"},null,-1),A("circle",{cx:"12",cy:"19",r:"1.6",fill:"currentColor"},null,-1)])])):p.icon==="share"?(U(),Q("svg",Xu,[...h[7]||(h[7]=[A("path",{d:"M12 3v10M8 7l4-4 4 4",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},null,-1),A("path",{d:"M5 14v4a2 2 0 002 2h10a2 2 0 002-2v-4",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round"},null,-1)])])):p.icon==="home"?(U(),Q("svg",eh,[...h[8]||(h[8]=[A("path",{d:"M4 11.5L12 4l8 7.5V20a1 1 0 01-1 1h-5v-5H10v5H5a1 1 0 01-1-1v-8.5z",stroke:"currentColor","stroke-width":"2","stroke-linejoin":"round"},null,-1)])])):(U(),Q("svg",th,[...h[9]||(h[9]=[A("path",{d:"M5 12h14M13 6l6 6-6 6",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},null,-1)])]))]),A("span",nh,p1(p.text),1)]))),128))])]),A("div",oh,[A("button",{type:"button",class:"hg-install__cta",onClick:h[2]||(h[2]=(...p)=>t1(i)&&t1(i)(...p))},"متوجه شدم")])],64))])]),_:1},8,["show","onClosed"]))}}),ih={class:"toast__tile","aria-hidden":"true"},sh={class:"toast__body"},lh={key:0,class:"toast__title"},dh={class:"toast__message"},cs=80,ah=f1({__name:"ToastCard",props:{item:{}},emits:["close"],setup(e,{emit:t}){const n=t,o=K(!1),r=K(!1),i=K(0),s=K(0);let l=0,d=0;const a=K(!1);let k=0;const u=N(()=>{if(a.value)return{transform:`translate(${i.value}px, ${s.value}px)`,opacity:"0",transition:"transform 0.22s ease-in, opacity 0.22s ease-in"};if(!r.value)return;const f=s.value<0?s.value:s.value*.25,m=1-Math.min(Math.abs(i.value)/220,.6);return{transform:`translate(${i.value}px, ${f}px) rotate(${i.value*.03}deg)`,opacity:String(m),transition:"none"}});function h(f){o.value=!0,l=f.clientX,d=f.clientY,k=Date.now(),f.currentTarget.setPointerCapture(f.pointerId)}function p(f){o.value&&(i.value=f.clientX-l,s.value=f.clientY-d,!r.value&&Math.hypot(i.value,s.value)>6&&(r.value=!0))}function C(){if(o.value=!1,!r.value){Date.now()-k<250&&n("close");return}if(Math.abs(i.value)>cs||s.value<-36){a.value=!0,i.value=Math.abs(i.value)>cs?Math.sign(i.value)*window.innerWidth:i.value,s.value=s.value<-36?-160:s.value,r.value=!1,setTimeout(()=>n("close"),200);return}r.value=!1,i.value=0,s.value=0}return(f,m)=>(U(),Q("div",{class:G1(["toast",[`toast--${e.item.type}`,{"is-held":o.value,"is-dragging":r.value}]]),style:ce(u.value),role:"status",onPointerdown:h,onPointermove:p,onPointerup:C,onPointercancel:C},[A("span",ih,[m[1]||(m[1]=A("span",{class:"toast__ripple"},null,-1)),H(Y1,{icon:e.item.icon,size:"22"},null,8,["icon"])]),A("div",sh,[e.item.title?(U(),Q("div",lh,p1(e.item.title),1)):x1("",!0),A("div",dh,p1(e.item.message),1)]),e.item.duration>0?(U(),Q("span",{key:0,class:"toast__progress keep-motion",style:ce({animationDuration:`${e.item.duration}ms`}),onAnimationend:m[0]||(m[0]=x=>n("close"))},null,36)):x1("",!0)],38))}}),kh=xe(ah,[["__scopeId","data-v-39e31559"]]),uh=3200,ws=3,hh={success:"vuesax-linear:tick-circle",error:"vuesax-linear:close-circle",info:"vuesax-linear:info-circle",warning:"vuesax-linear:warning-2"},We=I1({items:[]});let ph=1;function It(e,t,n={}){const o=ph++;return We.items.push({id:o,type:e,message:t,title:n.title,icon:n.icon??hh[e],duration:n.duration??uh}),We.items.length>ws&&We.items.splice(0,We.items.length-ws),o}function ch(e){const t=We.items.findIndex(n=>n.id===e);t!==-1&&We.items.splice(t,1)}const n9={show:It,dismiss:ch,success:(e,t)=>It("success",e,t),error:(e,t)=>It("error",e,t),info:(e,t)=>It("info",e,t),warning:(e,t)=>It("warning",e,t)};function wh(){return{toasts:We.items,...n9}}const Ch={class:"toast-host"},gh=f1({__name:"ToastHost",setup(e){const{toasts:t,dismiss:n}=wh();return(o,r)=>(U(),A1(nt,{to:"body"},[A("div",Ch,[H(Z4,{name:"toast"},{default:z1(()=>[(U(!0),Q(v1,null,ue(t1(t),i=>(U(),A1(kh,{key:i.id,item:i,onClose:s=>t1(n)(i.id)},null,8,["item","onClose"]))),128))]),_:1})])]))}}),vh=["src","alt"],fh={key:0,class:"gs__counter"},Cs=.18,mh=6,Mh=f1({__name:"GallerySlider",props:$i({slides:{},alt:{},fit:{default:"cover"},showCounter:{type:Boolean,default:!1}},{index:{default:0},indexModifiers:{}}),emits:$i(["tap"],["update:index"]),setup(e,{emit:t}){const n=e,o=pa(e,"index"),r=t,i=N(()=>n.fit==="contain"?"gs__img--contain":"gs__img--cover"),s=K(null),l=K(!1),d=K(0);let a=null,k=0,u=0;function h(v){var L;if(n.slides.length<2||a!==null)return;const j=s.value;j&&(a=v.pointerId,k=v.clientX,u=j.getBoundingClientRect().width||1,d.value=0,l.value=!0,(L=j.setPointerCapture)==null||L.call(j,v.pointerId))}function p(v){!l.value||v.pointerId!==a||(d.value=v.clientX-k)}function C(){if(!l.value)return;const v=d.value,j=v/u;l.value=!1,a=null,d.value=0,j<=-Cs&&o.value=Cs&&o.value>0&&o.value--,Math.abs(v)<=mh&&r("tap")}function f(v){v.pointerId===a&&C()}function m(v){v.pointerId===a&&(l.value=!1,a=null,d.value=0)}function x(){}function w(v){o.value=v}const D=N(()=>{const v=-o.value*100,j=u?d.value/u*100:0;return{transform:`translate3d(${v+j}%, 0, 0)`,transition:l.value?"none":void 0}});return Pe(()=>{if(a!==null&&s.value)try{s.value.releasePointerCapture(a)}catch{}}),(v,j)=>(U(),Q("div",{ref_key:"root",ref:s,class:G1(["gs",{"is-dragging":l.value}]),onPointerdown:h,onPointermove:p,onPointerup:f,onPointercancel:m,onClick:x},[A("div",{class:"gs__track",style:ce(D.value)},[(U(!0),Q(v1,null,ue(e.slides,L=>(U(),Q("div",{key:L,class:"gs__cell"},[A("img",{src:L,alt:e.alt,class:G1(["gs__img",i.value]),draggable:"false"},null,10,vh)]))),128))],4),e.showCounter&&e.slides.length>1?(U(),Q("div",fh,p1(o.value+1)+"/"+p1(e.slides.length),1)):x1("",!0),wt(v.$slots,"dots",{index:o.value,go:w},void 0,!0)],34))}}),gs=xe(Mh,[["__scopeId","data-v-0e0334e8"]]);function ve(e){"@babel/helpers - typeof";return ve=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},ve(e)}function jh(e,t){if(ve(e)!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var o=n.call(e,t);if(ve(o)!="object")return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function xh(e){var t=jh(e,"string");return ve(t)=="symbol"?t:t+""}function W1(e,t,n){return(t=xh(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function vs(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable})),n.push.apply(n,o)}return n}function h1(e){for(var t=1;t1&&arguments[1]!==void 0?arguments[1]:{},n=arguments.length>2?arguments[2]:void 0;return typeof e=="function"?e(t):e??n}function _n(){for(var e=[],t=0;te.length)&&(t=e.length);for(var n=0,o=Array(t);n0&&arguments[0]!==void 0?arguments[0]:"",n=arguments.length>1?arguments[1]:void 0,o={},r=/;(?![^(]*\))/g,i=/:(.+)/;return ve(t)==="object"?t:(t.split(r).forEach(function(s){if(s){var l=s.split(i);if(l.length>1){var d=n?El(l[0].trim()):l[0].trim();o[d]=l[1].trim()}}}),o)},Ig=function(t,n){return t[n]!==void 0},Jn=function e(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,o=Array.isArray(t)?t:[t],r=[];return o.forEach(function(i){Array.isArray(i)?r.push.apply(r,Ho(e(i,n))):i&&i.type===v1?r.push.apply(r,Ho(e(i.children,n))):i&&k2(i)?n&&!Tl(i)?r.push(i):n||r.push(i):Xh(i)&&r.push(i)}),r},op=function(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"default",o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(k2(t))return t.type===v1?n==="default"?Jn(t.children):[]:t.children&&t.children[n]?Jn(t.children[n](o)):[];var r=t.$slots[n]&&t.$slots[n](o);return Jn(r)},Rg=function(t){for(var n,o=(t==null||(n=t.vnode)===null||n===void 0?void 0:n.el)||t&&(t.$el||t);o&&!o.tagName;)o=o.nextSibling;return o},$g=function(t){var n={};if(t.$&&t.$.vnode){var o=t.$.vnode.props||{};Object.keys(t.$props).forEach(function(l){var d=t.$props[l],a=Bh(l);(d!==void 0||a in o)&&(n[l]=d)})}else if(k2(t)&&ve(t.type)==="object"){var r=t.props||{},i={};Object.keys(r).forEach(function(l){i[El(l)]=r[l]});var s=t.type.props||{};Object.keys(s).forEach(function(l){var d=Eh(s,i,l,i[l]);(d!==void 0||l in i)&&(n[l]=d)})}return n},rp=function(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"default",o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:t,r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,i=void 0;if(t.$){var s=t[n];if(s!==void 0)return typeof s=="function"&&r?s(o):s;i=t.$slots[n],i=r&&i?i(o):i}else if(k2(t)){var l=t.props&&t.props[n];if(l!==void 0&&t.props!==null)return typeof l=="function"&&r?l(o):l;t.type===v1?i=t.children:t.children&&t.children[n]&&(i=t.children[n],i=r&&i?i(o):i)}return Array.isArray(i)&&(i=Jn(i),i=i.length===1?i[0]:i,i=i.length===0?void 0:i),i};function Fg(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,n={};return e.$?n=h1(h1({},n),e.$attrs):n=h1(h1({},n),e.props),tp(n)[t?"onEvents":"events"]}function Ng(e,t){var n=(k2(e)?e.props:e.$attrs)||{},o=n.style||{};return typeof o=="string"&&(o=np(o,t)),o}function Tl(e){return e&&(e.type===F1||e.type===v1&&e.children.length===0||e.type===yn&&e.children.trim()==="")}function Il(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],t=[];return e.forEach(function(n){Array.isArray(n)?t.push.apply(t,Ho(n)):(n==null?void 0:n.type)===v1?t.push.apply(t,Ho(Il(n.children))):t.push(n)}),t.filter(function(n){return!Tl(n)})}function Ug(e){return Array.isArray(e)&&e.length===1&&(e=e[0]),e&&e.__v_isVNode&&ve(e.type)!=="symbol"}function qg(e,t){var n,o,r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"default";return(n=t[r])!==null&&n!==void 0?n:(o=e[r])===null||o===void 0?void 0:o.call(e)}var ip=function(){for(var t=arguments.length,n=new Array(t),o=0;o=0||(r[n]=e[n]);return r}function xs(e){return((t=e)!=null&&typeof t=="object"&&Array.isArray(t)===!1)==1&&Object.prototype.toString.call(e)==="[object Object]";var t}var Gl=Object.prototype,Kl=Gl.toString,kp=Gl.hasOwnProperty,Yl=/^\s*function (\w+)/;function Ds(e){var t,n=(t=e==null?void 0:e.type)!==null&&t!==void 0?t:e;if(n){var o=n.toString().match(Yl);return o?o[1]:""}return""}var tt=function(e){var t,n;return xs(e)!==!1&&typeof(t=e.constructor)=="function"&&xs(n=t.prototype)!==!1&&n.hasOwnProperty("isPrototypeOf")!==!1},up=function(e){return e},m2=up,fn=function(e,t){return kp.call(e,t)},hp=Number.isInteger||function(e){return typeof e=="number"&&isFinite(e)&&Math.floor(e)===e},Vt=Array.isArray||function(e){return Kl.call(e)==="[object Array]"},yt=function(e){return Kl.call(e)==="[object Function]"},bo=function(e){return tt(e)&&fn(e,"_vueTypes_name")},Ql=function(e){return tt(e)&&(fn(e,"type")||["_vueTypes_name","validator","default","required"].some(function(t){return fn(e,t)}))};function ci(e,t){return Object.defineProperty(e.bind(t),"__original",{value:e})}function ot(e,t,n){var o,r=!0,i="";o=tt(e)?e:{type:e};var s=bo(o)?o._vueTypes_name+" - ":"";if(Ql(o)&&o.type!==null){if(o.type===void 0||o.type===!0||!o.required&&t===void 0)return r;Vt(o.type)?(r=o.type.some(function(u){return ot(u,t)===!0}),i=o.type.map(function(u){return Ds(u)}).join(" or ")):r=(i=Ds(o))==="Array"?Vt(t):i==="Object"?tt(t):i==="String"||i==="Number"||i==="Boolean"||i==="Function"?function(u){if(u==null)return"";var h=u.constructor.toString().match(Yl);return h?h[1]:""}(t)===i:t instanceof o.type}if(!r){var l=s+'value "'+t+'" should be of type "'+i+'"';return l}if(fn(o,"validator")&&yt(o.validator)){var d=m2,a=[];if(m2=function(u){a.push(u)},r=o.validator(t),m2=d,!r){var k=(a.length>1?"* ":"")+a.join(` -* `);return a.length=0,k}}return r}function x2(e,t){var n=Object.defineProperties(t,{_vueTypes_name:{value:e,writable:!0},isRequired:{get:function(){return this.required=!0,this}},def:{value:function(r){return r!==void 0||this.default?yt(r)||ot(this,r)===!0?(this.default=Vt(r)?function(){return[].concat(r)}:tt(r)?function(){return Object.assign({},r)}:r,this):(m2(this._vueTypes_name+' - invalid default value: "'+r+'"'),this):this}}}),o=n.validator;return yt(o)&&(n.validator=ci(o,n)),n}function J2(e,t){var n=x2(e,t);return Object.defineProperty(n,"validate",{value:function(o){return yt(this.validator)&&m2(this._vueTypes_name+` - calling .validate() will overwrite the current custom validator function. Validator info: -`+JSON.stringify(this)),this.validator=ci(o,this),this}})}function Ls(e,t,n){var o,r,i=(o=t,r={},Object.getOwnPropertyNames(o).forEach(function(u){r[u]=Object.getOwnPropertyDescriptor(o,u)}),Object.defineProperties({},r));if(i._vueTypes_name=e,!tt(n))return i;var s,l,d=n.validator,a=Wl(n,["validator"]);if(yt(d)){var k=i.validator;k&&(k=(l=(s=k).__original)!==null&&l!==void 0?l:s),i.validator=ci(k?function(u){return k.call(this,u)&&d.call(this,u)}:d,i)}return Object.assign(i,a)}function o9(e){return e.replace(/^(?!\s*$)/gm," ")}var pp=function(){return J2("any",{})},cp=function(){return J2("function",{type:Function})},wp=function(){return J2("boolean",{type:Boolean})},Cp=function(){return J2("string",{type:String})},gp=function(){return J2("number",{type:Number})},vp=function(){return J2("array",{type:Array})},fp=function(){return J2("object",{type:Object})},mp=function(){return x2("integer",{type:Number,validator:function(e){return hp(e)}})},Mp=function(){return x2("symbol",{validator:function(e){return typeof e=="symbol"}})};function jp(e,t){if(t===void 0&&(t="custom validation failed"),typeof e!="function")throw new TypeError("[VueTypes error]: You must provide a function as argument");return x2(e.name||"<>",{validator:function(n){var o=e(n);return o||m2(this._vueTypes_name+" - "+t),o}})}function xp(e){if(!Vt(e))throw new TypeError("[VueTypes error]: You must provide an array as argument.");var t='oneOf - value should be one of "'+e.join('", "')+'".',n=e.reduce(function(o,r){if(r!=null){var i=r.constructor;o.indexOf(i)===-1&&o.push(i)}return o},[]);return x2("oneOf",{type:n.length>0?n:void 0,validator:function(o){var r=e.indexOf(o)!==-1;return r||m2(t),r}})}function Dp(e){if(!Vt(e))throw new TypeError("[VueTypes error]: You must provide an array as argument");for(var t=!1,n=[],o=0;o0&&arguments[0]!==void 0?arguments[0]:"",n=arguments.length>1?arguments[1]:void 0,o={},r=/;(?![^(]*\))/g,i=/:(.+)/;return ve(t)==="object"?t:(t.split(r).forEach(function(s){if(s){var l=s.split(i);if(l.length>1){var d=n?El(l[0].trim()):l[0].trim();o[d]=l[1].trim()}}}),o)},Ig=function(t,n){return t[n]!==void 0},Qn=function e(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,o=Array.isArray(t)?t:[t],r=[];return o.forEach(function(i){Array.isArray(i)?r.push.apply(r,Ho(e(i,n))):i&&i.type===v1?r.push.apply(r,Ho(e(i.children,n))):i&&k2(i)?n&&!Tl(i)?r.push(i):n||r.push(i):Xh(i)&&r.push(i)}),r},op=function(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"default",o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(k2(t))return t.type===v1?n==="default"?Qn(t.children):[]:t.children&&t.children[n]?Qn(t.children[n](o)):[];var r=t.$slots[n]&&t.$slots[n](o);return Qn(r)},Rg=function(t){for(var n,o=(t==null||(n=t.vnode)===null||n===void 0?void 0:n.el)||t&&(t.$el||t);o&&!o.tagName;)o=o.nextSibling;return o},$g=function(t){var n={};if(t.$&&t.$.vnode){var o=t.$.vnode.props||{};Object.keys(t.$props).forEach(function(l){var d=t.$props[l],a=Bh(l);(d!==void 0||a in o)&&(n[l]=d)})}else if(k2(t)&&ve(t.type)==="object"){var r=t.props||{},i={};Object.keys(r).forEach(function(l){i[El(l)]=r[l]});var s=t.type.props||{};Object.keys(s).forEach(function(l){var d=Eh(s,i,l,i[l]);(d!==void 0||l in i)&&(n[l]=d)})}return n},rp=function(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"default",o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:t,r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,i=void 0;if(t.$){var s=t[n];if(s!==void 0)return typeof s=="function"&&r?s(o):s;i=t.$slots[n],i=r&&i?i(o):i}else if(k2(t)){var l=t.props&&t.props[n];if(l!==void 0&&t.props!==null)return typeof l=="function"&&r?l(o):l;t.type===v1?i=t.children:t.children&&t.children[n]&&(i=t.children[n],i=r&&i?i(o):i)}return Array.isArray(i)&&(i=Qn(i),i=i.length===1?i[0]:i,i=i.length===0?void 0:i),i};function Fg(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,n={};return e.$?n=h1(h1({},n),e.$attrs):n=h1(h1({},n),e.props),tp(n)[t?"onEvents":"events"]}function Ng(e,t){var n=(k2(e)?e.props:e.$attrs)||{},o=n.style||{};return typeof o=="string"&&(o=np(o,t)),o}function Tl(e){return e&&(e.type===F1||e.type===v1&&e.children.length===0||e.type===yn&&e.children.trim()==="")}function Il(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],t=[];return e.forEach(function(n){Array.isArray(n)?t.push.apply(t,Ho(n)):(n==null?void 0:n.type)===v1?t.push.apply(t,Ho(Il(n.children))):t.push(n)}),t.filter(function(n){return!Tl(n)})}function Ug(e){return Array.isArray(e)&&e.length===1&&(e=e[0]),e&&e.__v_isVNode&&ve(e.type)!=="symbol"}function qg(e,t){var n,o,r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"default";return(n=t[r])!==null&&n!==void 0?n:(o=e[r])===null||o===void 0?void 0:o.call(e)}var ip=function(){for(var t=arguments.length,n=new Array(t),o=0;o=0||(r[n]=e[n]);return r}function xs(e){return((t=e)!=null&&typeof t=="object"&&Array.isArray(t)===!1)==1&&Object.prototype.toString.call(e)==="[object Object]";var t}var Gl=Object.prototype,Kl=Gl.toString,kp=Gl.hasOwnProperty,Yl=/^\s*function (\w+)/;function Ds(e){var t,n=(t=e==null?void 0:e.type)!==null&&t!==void 0?t:e;if(n){var o=n.toString().match(Yl);return o?o[1]:""}return""}var tt=function(e){var t,n;return xs(e)!==!1&&typeof(t=e.constructor)=="function"&&xs(n=t.prototype)!==!1&&n.hasOwnProperty("isPrototypeOf")!==!1},up=function(e){return e},m2=up,fn=function(e,t){return kp.call(e,t)},hp=Number.isInteger||function(e){return typeof e=="number"&&isFinite(e)&&Math.floor(e)===e},Vt=Array.isArray||function(e){return Kl.call(e)==="[object Array]"},yt=function(e){return Kl.call(e)==="[object Function]"},bo=function(e){return tt(e)&&fn(e,"_vueTypes_name")},Jl=function(e){return tt(e)&&(fn(e,"type")||["_vueTypes_name","validator","default","required"].some(function(t){return fn(e,t)}))};function ci(e,t){return Object.defineProperty(e.bind(t),"__original",{value:e})}function ot(e,t,n){var o,r=!0,i="";o=tt(e)?e:{type:e};var s=bo(o)?o._vueTypes_name+" - ":"";if(Jl(o)&&o.type!==null){if(o.type===void 0||o.type===!0||!o.required&&t===void 0)return r;Vt(o.type)?(r=o.type.some(function(u){return ot(u,t)===!0}),i=o.type.map(function(u){return Ds(u)}).join(" or ")):r=(i=Ds(o))==="Array"?Vt(t):i==="Object"?tt(t):i==="String"||i==="Number"||i==="Boolean"||i==="Function"?function(u){if(u==null)return"";var h=u.constructor.toString().match(Yl);return h?h[1]:""}(t)===i:t instanceof o.type}if(!r){var l=s+'value "'+t+'" should be of type "'+i+'"';return l}if(fn(o,"validator")&&yt(o.validator)){var d=m2,a=[];if(m2=function(u){a.push(u)},r=o.validator(t),m2=d,!r){var k=(a.length>1?"* ":"")+a.join(` +* `);return a.length=0,k}}return r}function x2(e,t){var n=Object.defineProperties(t,{_vueTypes_name:{value:e,writable:!0},isRequired:{get:function(){return this.required=!0,this}},def:{value:function(r){return r!==void 0||this.default?yt(r)||ot(this,r)===!0?(this.default=Vt(r)?function(){return[].concat(r)}:tt(r)?function(){return Object.assign({},r)}:r,this):(m2(this._vueTypes_name+' - invalid default value: "'+r+'"'),this):this}}}),o=n.validator;return yt(o)&&(n.validator=ci(o,n)),n}function Q2(e,t){var n=x2(e,t);return Object.defineProperty(n,"validate",{value:function(o){return yt(this.validator)&&m2(this._vueTypes_name+` - calling .validate() will overwrite the current custom validator function. Validator info: +`+JSON.stringify(this)),this.validator=ci(o,this),this}})}function Ls(e,t,n){var o,r,i=(o=t,r={},Object.getOwnPropertyNames(o).forEach(function(u){r[u]=Object.getOwnPropertyDescriptor(o,u)}),Object.defineProperties({},r));if(i._vueTypes_name=e,!tt(n))return i;var s,l,d=n.validator,a=Wl(n,["validator"]);if(yt(d)){var k=i.validator;k&&(k=(l=(s=k).__original)!==null&&l!==void 0?l:s),i.validator=ci(k?function(u){return k.call(this,u)&&d.call(this,u)}:d,i)}return Object.assign(i,a)}function o9(e){return e.replace(/^(?!\s*$)/gm," ")}var pp=function(){return Q2("any",{})},cp=function(){return Q2("function",{type:Function})},wp=function(){return Q2("boolean",{type:Boolean})},Cp=function(){return Q2("string",{type:String})},gp=function(){return Q2("number",{type:Number})},vp=function(){return Q2("array",{type:Array})},fp=function(){return Q2("object",{type:Object})},mp=function(){return x2("integer",{type:Number,validator:function(e){return hp(e)}})},Mp=function(){return x2("symbol",{validator:function(e){return typeof e=="symbol"}})};function jp(e,t){if(t===void 0&&(t="custom validation failed"),typeof e!="function")throw new TypeError("[VueTypes error]: You must provide a function as argument");return x2(e.name||"<>",{validator:function(n){var o=e(n);return o||m2(this._vueTypes_name+" - "+t),o}})}function xp(e){if(!Vt(e))throw new TypeError("[VueTypes error]: You must provide an array as argument.");var t='oneOf - value should be one of "'+e.join('", "')+'".',n=e.reduce(function(o,r){if(r!=null){var i=r.constructor;o.indexOf(i)===-1&&o.push(i)}return o},[]);return x2("oneOf",{type:n.length>0?n:void 0,validator:function(o){var r=e.indexOf(o)!==-1;return r||m2(t),r}})}function Dp(e){if(!Vt(e))throw new TypeError("[VueTypes error]: You must provide an array as argument");for(var t=!1,n=[],o=0;o0&&n.some(function(d){return s.indexOf(d)===-1})){var l=n.filter(function(d){return s.indexOf(d)===-1});return m2(l.length===1?'shape - required property "'+l[0]+'" is not defined.':'shape - required properties "'+l.join('", "')+'" are not defined.'),!1}return s.every(function(d){if(t.indexOf(d)===-1)return i._vueTypes_isLoose===!0||(m2('shape - shape definition does not include a "'+d+'" property. Allowed keys: "'+t.join('", "')+'".'),!1);var a=ot(e[d],r[d]);return typeof a=="string"&&m2('shape - "'+d+`" property validation error: - `+o9(a)),a===!0})}});return Object.defineProperty(o,"_vueTypes_isLoose",{writable:!0,value:!1}),Object.defineProperty(o,"loose",{get:function(){return this._vueTypes_isLoose=!0,this}}),o}var W2=function(){function e(){}return e.extend=function(t){var n=this;if(Vt(t))return t.forEach(function(u){return n.extend(u)}),this;var o=t.name,r=t.validate,i=r!==void 0&&r,s=t.getter,l=s!==void 0&&s,d=Wl(t,["name","validate","getter"]);if(fn(this,o))throw new TypeError('[VueTypes error]: Type "'+o+'" already defined');var a,k=d.type;return bo(k)?(delete d.type,Object.defineProperty(this,o,l?{get:function(){return Ls(o,k,d)}}:{value:function(){var u,h=Ls(o,k,d);return h.validator&&(h.validator=(u=h.validator).bind.apply(u,[h].concat([].slice.call(arguments)))),h}})):(a=l?{get:function(){var u=Object.assign({},d);return i?J2(o,u):x2(o,u)},enumerable:!0}:{value:function(){var u,h,p=Object.assign({},d);return u=i?J2(o,p):x2(o,p),p.validator&&(u.validator=(h=p.validator).bind.apply(h,[u].concat([].slice.call(arguments)))),u},enumerable:!0},Object.defineProperty(this,o,a))},ql(e,null,[{key:"any",get:function(){return pp()}},{key:"func",get:function(){return cp().def(this.defaults.func)}},{key:"bool",get:function(){return wp().def(this.defaults.bool)}},{key:"string",get:function(){return Cp().def(this.defaults.string)}},{key:"number",get:function(){return gp().def(this.defaults.number)}},{key:"array",get:function(){return vp().def(this.defaults.array)}},{key:"object",get:function(){return fp().def(this.defaults.object)}},{key:"integer",get:function(){return mp().def(this.defaults.integer)}},{key:"symbol",get:function(){return Mp()}}]),e}();function Jl(e){var t;return e===void 0&&(e={func:function(){},bool:!0,string:"",number:0,array:function(){return[]},object:function(){return{}},integer:0}),(t=function(n){function o(){return n.apply(this,arguments)||this}return zl(o,n),ql(o,null,[{key:"sensibleDefaults",get:function(){return Xn({},this.defaults)},set:function(r){this.defaults=r!==!1?Xn({},r!==!0?r:e):{}}}]),o}(W2)).defaults=Xn({},e),t}W2.defaults={},W2.custom=jp,W2.oneOf=xp,W2.instanceOf=Hp,W2.oneOfType=Dp,W2.arrayOf=Lp,W2.objectOf=Vp,W2.shape=yp,W2.utils={validate:function(e,t){return ot(t,e)===!0},toType:function(e,t,n){return n===void 0&&(n=!1),n?J2(e,t):x2(e,t)}};(function(e){function t(){return e.apply(this,arguments)||this}return zl(t,e),t})(Jl());var mn=Jl({func:void 0,bool:void 0,string:void 0,number:void 0,array:void 0,object:void 0,integer:void 0});mn.extend([{name:"looseBool",getter:!0,type:Boolean,default:void 0},{name:"style",getter:!0,type:[String,Object],default:void 0},{name:"VueNode",getter:!0,type:null}]);function Wg(e){return e.default=void 0,e}var bp=["image","description","imageStyle","class"],Xl=H(Nl,null,null),ed=H(Ul,null,null),Zt=function(t,n){var o,r=n.slots,i=r===void 0?{}:r,s=n.attrs,l=r9("empty",t),d=l.direction,a=l.prefixCls,k=a.value,u=h1(h1({},t),s),h=u.image,p=h===void 0?Xl:h,C=u.description,f=C===void 0?((o=i.description)===null||o===void 0?void 0:o.call(i))||void 0:C,m=u.imageStyle,x=u.class,w=x===void 0?"":x,D=pi(u,bp);return H(Fl,{componentName:"Empty",children:function(j){var L,b=typeof f<"u"?f:j.description,O=typeof b=="string"?b:"empty",V=null;return typeof p=="string"?V=H("img",{alt:O,src:p},null):V=p,H("div",h1({class:_n(k,w,(L={},W1(L,"".concat(k,"-normal"),p===ed),W1(L,"".concat(k,"-rtl"),d.value==="rtl"),L))},D),[H("div",{class:"".concat(k,"-image"),style:m},[V]),b&&H("p",{class:"".concat(k,"-description")},[b]),i.default&&H("div",{class:"".concat(k,"-footer")},[Il(i.default())])])}},null)};Zt.displayName="AEmpty";Zt.PRESENTED_IMAGE_DEFAULT=Xl;Zt.PRESENTED_IMAGE_SIMPLE=ed;Zt.inheritAttrs=!1;Zt.props={prefixCls:String,image:mn.any,description:mn.any,imageStyle:{type:Object,default:void 0}};const $t=Rl(Zt);var Zp=function(t){var n=r9("empty",t),o=n.prefixCls,r=function(s){switch(s){case"Table":case"List":return H($t,{image:$t.PRESENTED_IMAGE_SIMPLE},null);case"Select":case"TreeSelect":case"Cascader":case"Transfer":case"Mentions":return H($t,{image:$t.PRESENTED_IMAGE_SIMPLE,class:"".concat(o.value,"-small")},null);default:return H($t,null,null)}};return r(t.componentName)};function td(e){return H(Zp,{componentName:e},null)}var Hs={};function _p(e,t){}function Bp(e,t,n){!t&&!Hs[n]&&(Hs[n]=!0)}function nd(e,t){Bp(_p,e,t)}const Sp=function(e,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"";nd(e,"[antdv: ".concat(t,"] ").concat(n))};var vr="internalMark",eo=f1({compatConfig:{MODE:3},name:"ALocaleProvider",props:{locale:{type:Object},ANT_MARK__:String},setup:function(t,n){var o=n.slots;Sp(t.ANT_MARK__===vr,"LocaleProvider","`LocaleProvider` is deprecated. Please use `locale` with `ConfigProvider` instead");var r=I1({antLocale:h1(h1({},t.locale),{},{exist:!0}),ANT_MARK__:vr});return ke("localeData",r),V1(function(){return t.locale},function(){r.antLocale=h1(h1({},t.locale),{},{exist:!0})},{immediate:!0}),function(){var i;return(i=o.default)===null||i===void 0?void 0:i.call(o)}}});eo.install=function(e){return e.component(eo.name,eo),e};const Ep=Rl(eo);ip("bottomLeft","bottomRight","topLeft","topRight");var Gg=function(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},o=h1(t?{name:t,appear:!0,enterFromClass:"".concat(t,"-enter ").concat(t,"-enter-prepare"),enterActiveClass:"".concat(t,"-enter ").concat(t,"-enter-prepare"),enterToClass:"".concat(t,"-enter ").concat(t,"-enter-active"),leaveFromClass:" ".concat(t,"-leave"),leaveActiveClass:"".concat(t,"-leave ").concat(t,"-leave-active"),leaveToClass:"".concat(t,"-leave ").concat(t,"-leave-active")}:{css:!1},n);return o},Op=function(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},o=h1(t?{name:t,appear:!0,appearActiveClass:"".concat(t),appearToClass:"".concat(t,"-appear ").concat(t,"-appear-active"),enterFromClass:"".concat(t,"-appear ").concat(t,"-enter ").concat(t,"-appear-prepare ").concat(t,"-enter-prepare"),enterActiveClass:"".concat(t),enterToClass:"".concat(t,"-enter ").concat(t,"-appear ").concat(t,"-appear-active ").concat(t,"-enter-active"),leaveActiveClass:"".concat(t," ").concat(t,"-leave"),leaveToClass:"".concat(t,"-leave-active")}:{css:!1},n);return o};const Ap=f1({name:"Notice",inheritAttrs:!1,props:["prefixCls","duration","updateMark","noticeKey","closeIcon","closable","props","onClick","onClose","holder","visible"],setup:function(t,n){var o=n.attrs,r=n.slots,i,s=!1,l=N(function(){return t.duration===void 0?4.5:t.duration}),d=function(){l.value&&!s&&(i=setTimeout(function(){k()},l.value*1e3))},a=function(){i&&(clearTimeout(i),i=null)},k=function(p){p&&p.stopPropagation(),a();var C=t.onClose,f=t.noticeKey;C&&C(f)},u=function(){a(),d()};return F2(function(){d()}),Hn(function(){s=!0,a()}),V1([l,function(){return t.updateMark},function(){return t.visible}],function(h,p){var C=ms(h,3),f=C[0],m=C[1],x=C[2],w=ms(p,3),D=w[0],v=w[1],j=w[2];(f!==D||m!==v||x!==j&&j)&&u()},{flush:"post"}),function(){var h,p,C=t.prefixCls,f=t.closable,m=t.closeIcon,x=m===void 0?(h=r.closeIcon)===null||h===void 0?void 0:h.call(r):m,w=t.onClick,D=t.holder,v=o.class,j=o.style,L="".concat(C,"-notice"),b=Object.keys(o).reduce(function(V,P){return(P.substr(0,5)==="data-"||P.substr(0,5)==="aria-"||P==="role")&&(V[P]=o[P]),V},{}),O=H("div",h1({class:_n(L,v,W1({},"".concat(L,"-closable"),f)),style:j,onMouseenter:a,onMouseleave:d,onClick:w},b),[H("div",{class:"".concat(L,"-content")},[(p=r.default)===null||p===void 0?void 0:p.call(r)]),f?H("a",{tabindex:0,onClick:k,class:"".concat(L,"-close")},[x||H("span",{class:"".concat(L,"-close-x")},null)]):null]);return D?H(nt,{to:D},{default:function(){return O}}):O}}});var Pp=["name","getContainer","appContext","prefixCls","rootPrefixCls","transitionName","hasTransitionName"],Vs=0,Tp=Date.now();function ys(){var e=Vs;return Vs+=1,"rcNotification_".concat(Tp,"_").concat(e)}var Zo=f1({name:"Notification",inheritAttrs:!1,props:["prefixCls","transitionName","animation","maxCount","closeIcon"],setup:function(t,n){var o=n.attrs,r=n.expose,i=n.slots,s=new Map,l=K([]),d=N(function(){var u=t.prefixCls,h=t.animation,p=h===void 0?"fade":h,C=t.transitionName;return!C&&p&&(C="".concat(u,"-").concat(p)),Op(C)}),a=function(h,p){var C=h.key||ys(),f=h1(h1({},h),{},{key:C}),m=t.maxCount,x=l.value.map(function(D){return D.notice.key}).indexOf(C),w=l.value.concat();x!==-1?w.splice(x,1,{notice:f,holderCallback:p}):(m&&l.value.length>=m&&(f.key=w[0].notice.key,f.updateMark=ys(),f.userPassKey=C,w.shift()),w.push({notice:f,holderCallback:p})),l.value=w},k=function(h){l.value=l.value.filter(function(p){var C=p.notice,f=C.key,m=C.userPassKey,x=m||f;return x!==h})};return r({add:a,remove:k,notices:l}),function(){var u,h,p=t.prefixCls,C=t.closeIcon,f=C===void 0?(u=i.closeIcon)===null||u===void 0?void 0:u.call(i,{prefixCls:p}):C,m=l.value.map(function(w,D){var v=w.notice,j=w.holderCallback,L=D===l.value.length-1?v.updateMark:void 0,b=v.key,O=v.userPassKey,V=v.content,P=h1(h1(h1({prefixCls:p,closeIcon:typeof f=="function"?f({prefixCls:p}):f},v),v.props),{},{key:b,noticeKey:O||b,updateMark:L,onClose:function(T){var o1;k(T),(o1=v.onClose)===null||o1===void 0||o1.call(v)},onClick:v.onClick});return j?H("div",{key:b,class:"".concat(p,"-hook-holder"),ref:function(T){typeof b>"u"||(T?(s.set(b,T),j(T,P)):s.delete(b))}},null):H(Ap,P,{default:function(){return[typeof V=="function"?V({prefixCls:p}):V]}})}),x=(h={},W1(h,p,1),W1(h,o.class,!!o.class),h);return H("div",{class:x,style:o.style||{top:"65px",left:"50%"}},[H(Z4,h1({tag:"div"},d.value),{default:function(){return[m]}})])}}});Zo.newInstance=function(t,n){var o=t||{},r=o.name,i=r===void 0?"notification":r,s=o.getContainer,l=o.appContext,d=o.prefixCls,a=o.rootPrefixCls,k=o.transitionName,u=o.hasTransitionName,h=pi(o,Pp),p=document.createElement("div");if(s){var C=s();C.appendChild(p)}else document.body.appendChild(p);var f=f1({compatConfig:{MODE:3},name:"NotificationWrapper",setup:function(w,D){var v=D.attrs,j=K();return F2(function(){n({notice:function(b){var O;(O=j.value)===null||O===void 0||O.add(b)},removeNotice:function(b){var O;(O=j.value)===null||O===void 0||O.remove(b)},destroy:function(){w0(null,p),p.parentNode&&p.parentNode.removeChild(p)},component:j})}),function(){var L=C2,b=L.getPrefixCls(i,d),O=L.getRootPrefixCls(a,b),V=u?k:"".concat(O,"-").concat(k);return H(dn,h1(h1({},L),{},{notUpdateGlobalConfig:!0,prefixCls:O}),{default:function(){return[H(Zo,h1(h1({ref:j},v),{},{prefixCls:b,transitionName:V}),null)]}})}}}),m=H(f,h);m.appContext=l||m.appContext,w0(m,p)};var Ip={icon:{tag:"svg",attrs:{viewBox:"0 0 1024 1024",focusable:"false"},children:[{tag:"path",attrs:{d:"M988 548c-19.9 0-36-16.1-36-36 0-59.4-11.6-117-34.6-171.3a440.45 440.45 0 00-94.3-139.9 437.71 437.71 0 00-139.9-94.3C629 83.6 571.4 72 512 72c-19.9 0-36-16.1-36-36s16.1-36 36-36c69.1 0 136.2 13.5 199.3 40.3C772.3 66 827 103 874 150c47 47 83.9 101.8 109.7 162.7 26.7 63.1 40.2 130.2 40.2 199.3.1 19.9-16 36-35.9 36z"}}]},name:"loading",theme:"outlined"};function X1(e,t){Rp(e)&&(e="100%");var n=$p(e);return e=t===360?e:Math.min(t,Math.max(0,parseFloat(e))),n&&(e=parseInt(String(e*t),10)/100),Math.abs(e-t)<1e-6?1:(t===360?e=(e<0?e%t+t:e%t)/parseFloat(String(t)):e=e%t/parseFloat(String(t)),e)}function qn(e){return Math.min(1,Math.max(0,e))}function Rp(e){return typeof e=="string"&&e.indexOf(".")!==-1&&parseFloat(e)===1}function $p(e){return typeof e=="string"&&e.indexOf("%")!==-1}function od(e){return e=parseFloat(e),(isNaN(e)||e<0||e>1)&&(e=1),e}function zn(e){return e<=1?"".concat(Number(e)*100,"%"):e}function Ge(e){return e.length===1?"0"+e:String(e)}function Fp(e,t,n){return{r:X1(e,255)*255,g:X1(t,255)*255,b:X1(n,255)*255}}function bs(e,t,n){e=X1(e,255),t=X1(t,255),n=X1(n,255);var o=Math.max(e,t,n),r=Math.min(e,t,n),i=0,s=0,l=(o+r)/2;if(o===r)s=0,i=0;else{var d=o-r;switch(s=l>.5?d/(2-o-r):d/(o+r),o){case e:i=(t-n)/d+(t1&&(n-=1),n<1/6?e+(t-e)*(6*n):n<1/2?t:n<2/3?e+(t-e)*(2/3-n)*6:e}function Np(e,t,n){var o,r,i;if(e=X1(e,360),t=X1(t,100),n=X1(n,100),t===0)r=n,i=n,o=n;else{var s=n<.5?n*(1+t):n+t-n*t,l=2*n-s;o=b9(l,s,e+1/3),r=b9(l,s,e),i=b9(l,s,e-1/3)}return{r:o*255,g:r*255,b:i*255}}function fr(e,t,n){e=X1(e,255),t=X1(t,255),n=X1(n,255);var o=Math.max(e,t,n),r=Math.min(e,t,n),i=0,s=o,l=o-r,d=o===0?0:l/o;if(o===r)i=0;else{switch(o){case e:i=(t-n)/l+(t>16,g:(e&65280)>>8,b:e&255}}var Mr={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",goldenrod:"#daa520",gold:"#ffd700",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavenderblush:"#fff0f5",lavender:"#e6e6fa",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"};function ut(e){var t={r:0,g:0,b:0},n=1,o=null,r=null,i=null,s=!1,l=!1;return typeof e=="string"&&(e=Yp(e)),typeof e=="object"&&(ne(e.r)&&ne(e.g)&&ne(e.b)?(t=Fp(e.r,e.g,e.b),s=!0,l=String(e.r).substr(-1)==="%"?"prgb":"rgb"):ne(e.h)&&ne(e.s)&&ne(e.v)?(o=zn(e.s),r=zn(e.v),t=Up(e.h,o,r),s=!0,l="hsv"):ne(e.h)&&ne(e.s)&&ne(e.l)&&(o=zn(e.s),i=zn(e.l),t=Np(e.h,o,i),s=!0,l="hsl"),Object.prototype.hasOwnProperty.call(e,"a")&&(n=e.a)),n=od(n),{ok:s,format:e.format||l,r:Math.min(255,Math.max(t.r,0)),g:Math.min(255,Math.max(t.g,0)),b:Math.min(255,Math.max(t.b,0)),a:n}}var Gp="[-\\+]?\\d+%?",Kp="[-\\+]?\\d*\\.\\d+%?",Be="(?:".concat(Kp,")|(?:").concat(Gp,")"),Z9="[\\s|\\(]+(".concat(Be,")[,|\\s]+(").concat(Be,")[,|\\s]+(").concat(Be,")\\s*\\)?"),_9="[\\s|\\(]+(".concat(Be,")[,|\\s]+(").concat(Be,")[,|\\s]+(").concat(Be,")[,|\\s]+(").concat(Be,")\\s*\\)?"),B2={CSS_UNIT:new RegExp(Be),rgb:new RegExp("rgb"+Z9),rgba:new RegExp("rgba"+_9),hsl:new RegExp("hsl"+Z9),hsla:new RegExp("hsla"+_9),hsv:new RegExp("hsv"+Z9),hsva:new RegExp("hsva"+_9),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/};function Yp(e){if(e=e.trim().toLowerCase(),e.length===0)return!1;var t=!1;if(Mr[e])e=Mr[e],t=!0;else if(e==="transparent")return{r:0,g:0,b:0,a:0,format:"name"};var n=B2.rgb.exec(e);return n?{r:n[1],g:n[2],b:n[3]}:(n=B2.rgba.exec(e),n?{r:n[1],g:n[2],b:n[3],a:n[4]}:(n=B2.hsl.exec(e),n?{h:n[1],s:n[2],l:n[3]}:(n=B2.hsla.exec(e),n?{h:n[1],s:n[2],l:n[3],a:n[4]}:(n=B2.hsv.exec(e),n?{h:n[1],s:n[2],v:n[3]}:(n=B2.hsva.exec(e),n?{h:n[1],s:n[2],v:n[3],a:n[4]}:(n=B2.hex8.exec(e),n?{r:w2(n[1]),g:w2(n[2]),b:w2(n[3]),a:Zs(n[4]),format:t?"name":"hex8"}:(n=B2.hex6.exec(e),n?{r:w2(n[1]),g:w2(n[2]),b:w2(n[3]),format:t?"name":"hex"}:(n=B2.hex4.exec(e),n?{r:w2(n[1]+n[1]),g:w2(n[2]+n[2]),b:w2(n[3]+n[3]),a:Zs(n[4]+n[4]),format:t?"name":"hex8"}:(n=B2.hex3.exec(e),n?{r:w2(n[1]+n[1]),g:w2(n[2]+n[2]),b:w2(n[3]+n[3]),format:t?"name":"hex"}:!1)))))))))}function ne(e){return!!B2.CSS_UNIT.exec(String(e))}var B9=function(){function e(t,n){t===void 0&&(t=""),n===void 0&&(n={});var o;if(t instanceof e)return t;typeof t=="number"&&(t=Wp(t)),this.originalInput=t;var r=ut(t);this.originalInput=t,this.r=r.r,this.g=r.g,this.b=r.b,this.a=r.a,this.roundA=Math.round(100*this.a)/100,this.format=(o=n.format)!==null&&o!==void 0?o:r.format,this.gradientType=n.gradientType,this.r<1&&(this.r=Math.round(this.r)),this.g<1&&(this.g=Math.round(this.g)),this.b<1&&(this.b=Math.round(this.b)),this.isValid=r.ok}return e.prototype.isDark=function(){return this.getBrightness()<128},e.prototype.isLight=function(){return!this.isDark()},e.prototype.getBrightness=function(){var t=this.toRgb();return(t.r*299+t.g*587+t.b*114)/1e3},e.prototype.getLuminance=function(){var t=this.toRgb(),n,o,r,i=t.r/255,s=t.g/255,l=t.b/255;return i<=.03928?n=i/12.92:n=Math.pow((i+.055)/1.055,2.4),s<=.03928?o=s/12.92:o=Math.pow((s+.055)/1.055,2.4),l<=.03928?r=l/12.92:r=Math.pow((l+.055)/1.055,2.4),.2126*n+.7152*o+.0722*r},e.prototype.getAlpha=function(){return this.a},e.prototype.setAlpha=function(t){return this.a=od(t),this.roundA=Math.round(100*this.a)/100,this},e.prototype.isMonochrome=function(){var t=this.toHsl().s;return t===0},e.prototype.toHsv=function(){var t=fr(this.r,this.g,this.b);return{h:t.h*360,s:t.s,v:t.v,a:this.a}},e.prototype.toHsvString=function(){var t=fr(this.r,this.g,this.b),n=Math.round(t.h*360),o=Math.round(t.s*100),r=Math.round(t.v*100);return this.a===1?"hsv(".concat(n,", ").concat(o,"%, ").concat(r,"%)"):"hsva(".concat(n,", ").concat(o,"%, ").concat(r,"%, ").concat(this.roundA,")")},e.prototype.toHsl=function(){var t=bs(this.r,this.g,this.b);return{h:t.h*360,s:t.s,l:t.l,a:this.a}},e.prototype.toHslString=function(){var t=bs(this.r,this.g,this.b),n=Math.round(t.h*360),o=Math.round(t.s*100),r=Math.round(t.l*100);return this.a===1?"hsl(".concat(n,", ").concat(o,"%, ").concat(r,"%)"):"hsla(".concat(n,", ").concat(o,"%, ").concat(r,"%, ").concat(this.roundA,")")},e.prototype.toHex=function(t){return t===void 0&&(t=!1),mr(this.r,this.g,this.b,t)},e.prototype.toHexString=function(t){return t===void 0&&(t=!1),"#"+this.toHex(t)},e.prototype.toHex8=function(t){return t===void 0&&(t=!1),qp(this.r,this.g,this.b,this.a,t)},e.prototype.toHex8String=function(t){return t===void 0&&(t=!1),"#"+this.toHex8(t)},e.prototype.toHexShortString=function(t){return t===void 0&&(t=!1),this.a===1?this.toHexString(t):this.toHex8String(t)},e.prototype.toRgb=function(){return{r:Math.round(this.r),g:Math.round(this.g),b:Math.round(this.b),a:this.a}},e.prototype.toRgbString=function(){var t=Math.round(this.r),n=Math.round(this.g),o=Math.round(this.b);return this.a===1?"rgb(".concat(t,", ").concat(n,", ").concat(o,")"):"rgba(".concat(t,", ").concat(n,", ").concat(o,", ").concat(this.roundA,")")},e.prototype.toPercentageRgb=function(){var t=function(n){return"".concat(Math.round(X1(n,255)*100),"%")};return{r:t(this.r),g:t(this.g),b:t(this.b),a:this.a}},e.prototype.toPercentageRgbString=function(){var t=function(n){return Math.round(X1(n,255)*100)};return this.a===1?"rgb(".concat(t(this.r),"%, ").concat(t(this.g),"%, ").concat(t(this.b),"%)"):"rgba(".concat(t(this.r),"%, ").concat(t(this.g),"%, ").concat(t(this.b),"%, ").concat(this.roundA,")")},e.prototype.toName=function(){if(this.a===0)return"transparent";if(this.a<1)return!1;for(var t="#"+mr(this.r,this.g,this.b,!1),n=0,o=Object.entries(Mr);n=0,i=!n&&r&&(t.startsWith("hex")||t==="name");return i?t==="name"&&this.a===0?this.toName():this.toRgbString():(t==="rgb"&&(o=this.toRgbString()),t==="prgb"&&(o=this.toPercentageRgbString()),(t==="hex"||t==="hex6")&&(o=this.toHexString()),t==="hex3"&&(o=this.toHexString(!0)),t==="hex4"&&(o=this.toHex8String(!0)),t==="hex8"&&(o=this.toHex8String()),t==="name"&&(o=this.toName()),t==="hsl"&&(o=this.toHslString()),t==="hsv"&&(o=this.toHsvString()),o||this.toHexString())},e.prototype.toNumber=function(){return(Math.round(this.r)<<16)+(Math.round(this.g)<<8)+Math.round(this.b)},e.prototype.clone=function(){return new e(this.toString())},e.prototype.lighten=function(t){t===void 0&&(t=10);var n=this.toHsl();return n.l+=t/100,n.l=qn(n.l),new e(n)},e.prototype.brighten=function(t){t===void 0&&(t=10);var n=this.toRgb();return n.r=Math.max(0,Math.min(255,n.r-Math.round(255*-(t/100)))),n.g=Math.max(0,Math.min(255,n.g-Math.round(255*-(t/100)))),n.b=Math.max(0,Math.min(255,n.b-Math.round(255*-(t/100)))),new e(n)},e.prototype.darken=function(t){t===void 0&&(t=10);var n=this.toHsl();return n.l-=t/100,n.l=qn(n.l),new e(n)},e.prototype.tint=function(t){return t===void 0&&(t=10),this.mix("white",t)},e.prototype.shade=function(t){return t===void 0&&(t=10),this.mix("black",t)},e.prototype.desaturate=function(t){t===void 0&&(t=10);var n=this.toHsl();return n.s-=t/100,n.s=qn(n.s),new e(n)},e.prototype.saturate=function(t){t===void 0&&(t=10);var n=this.toHsl();return n.s+=t/100,n.s=qn(n.s),new e(n)},e.prototype.greyscale=function(){return this.desaturate(100)},e.prototype.spin=function(t){var n=this.toHsl(),o=(n.h+t)%360;return n.h=o<0?360+o:o,new e(n)},e.prototype.mix=function(t,n){n===void 0&&(n=50);var o=this.toRgb(),r=new e(t).toRgb(),i=n/100,s={r:(r.r-o.r)*i+o.r,g:(r.g-o.g)*i+o.g,b:(r.b-o.b)*i+o.b,a:(r.a-o.a)*i+o.a};return new e(s)},e.prototype.analogous=function(t,n){t===void 0&&(t=6),n===void 0&&(n=30);var o=this.toHsl(),r=360/n,i=[this];for(o.h=(o.h-(r*t>>1)+720)%360;--t;)o.h=(o.h+r)%360,i.push(new e(o));return i},e.prototype.complement=function(){var t=this.toHsl();return t.h=(t.h+180)%360,new e(t)},e.prototype.monochromatic=function(t){t===void 0&&(t=6);for(var n=this.toHsv(),o=n.h,r=n.s,i=n.v,s=[],l=1/t;t--;)s.push(new e({h:o,s:r,v:i})),i=(i+l)%1;return s},e.prototype.splitcomplement=function(){var t=this.toHsl(),n=t.h;return[this,new e({h:(n+72)%360,s:t.s,l:t.l}),new e({h:(n+216)%360,s:t.s,l:t.l})]},e.prototype.onBackground=function(t){var n=this.toRgb(),o=new e(t).toRgb(),r=n.a+o.a*(1-n.a);return new e({r:(n.r*n.a+o.r*o.a*(1-n.a))/r,g:(n.g*n.a+o.g*o.a*(1-n.a))/r,b:(n.b*n.a+o.b*o.a*(1-n.a))/r,a:r})},e.prototype.triad=function(){return this.polyad(3)},e.prototype.tetrad=function(){return this.polyad(4)},e.prototype.polyad=function(t){for(var n=this.toHsl(),o=n.h,r=[this],i=360/t,s=1;s=60&&Math.round(e.h)<=240?o=n?Math.round(e.h)-Wn*t:Math.round(e.h)+Wn*t:o=n?Math.round(e.h)+Wn*t:Math.round(e.h)-Wn*t,o<0?o+=360:o>=360&&(o-=360),o}function Es(e,t,n){if(e.h===0&&e.s===0)return e.s;var o;return n?o=e.s-_s*t:t===id?o=e.s+_s:o=e.s+Qp*t,o>1&&(o=1),n&&t===rd&&o>.1&&(o=.1),o<.06&&(o=.06),Number(o.toFixed(2))}function Os(e,t,n){var o;return n?o=e.v+Jp*t:o=e.v-Xp*t,o>1&&(o=1),Number(o.toFixed(2))}function Mn(e){for(var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=[],o=ut(e),r=rd;r>0;r-=1){var i=Bs(o),s=Gn(ut({h:Ss(i,r,!0),s:Es(i,r,!0),v:Os(i,r,!0)}));n.push(s)}n.push(Gn(o));for(var l=1;l<=id;l+=1){var d=Bs(o),a=Gn(ut({h:Ss(d,l),s:Es(d,l),v:Os(d,l)}));n.push(a)}return t.theme==="dark"?ec.map(function(k){var u=k.index,h=k.opacity,p=Gn(tc(ut(t.backgroundColor||"#141414"),ut(n[u]),h*100));return p}):n}var S9={red:"#F5222D",volcano:"#FA541C",orange:"#FA8C16",gold:"#FAAD14",yellow:"#FADB14",lime:"#A0D911",green:"#52C41A",cyan:"#13C2C2",blue:"#1890FF",geekblue:"#2F54EB",purple:"#722ED1",magenta:"#EB2F96",grey:"#666666"},E9={},O9={};Object.keys(S9).forEach(function(e){E9[e]=Mn(S9[e]),E9[e].primary=E9[e][5],O9[e]=Mn(S9[e],{theme:"dark",backgroundColor:"#141414"}),O9[e].primary=O9[e][5]});var As=[],Ft=[],nc="insert-css: You need to provide a CSS string. Usage: insertCss(cssString[, options]).";function oc(){var e=document.createElement("style");return e.setAttribute("type","text/css"),e}function rc(e,t){if(t=t||{},e===void 0)throw new Error(nc);var n=t.prepend===!0?"prepend":"append",o=t.container!==void 0?t.container:document.querySelector("head"),r=As.indexOf(o);r===-1&&(r=As.push(o)-1,Ft[r]={});var i;return Ft[r]!==void 0&&Ft[r][n]!==void 0?i=Ft[r][n]:(i=Ft[r][n]=oc(),n==="prepend"?o.insertBefore(i,o.childNodes[0]):o.appendChild(i)),e.charCodeAt(0)===65279&&(e=e.substr(1,e.length)),i.styleSheet?i.styleSheet.cssText+=e:i.textContent+=e,i}function Ps(e){for(var t=1;t2&&arguments[2]!==void 0?arguments[2]:"";nd(e,"[antdv: ".concat(t,"] ").concat(n))};var vr="internalMark",eo=f1({compatConfig:{MODE:3},name:"ALocaleProvider",props:{locale:{type:Object},ANT_MARK__:String},setup:function(t,n){var o=n.slots;Sp(t.ANT_MARK__===vr,"LocaleProvider","`LocaleProvider` is deprecated. Please use `locale` with `ConfigProvider` instead");var r=I1({antLocale:h1(h1({},t.locale),{},{exist:!0}),ANT_MARK__:vr});return ke("localeData",r),V1(function(){return t.locale},function(){r.antLocale=h1(h1({},t.locale),{},{exist:!0})},{immediate:!0}),function(){var i;return(i=o.default)===null||i===void 0?void 0:i.call(o)}}});eo.install=function(e){return e.component(eo.name,eo),e};const Ep=Rl(eo);ip("bottomLeft","bottomRight","topLeft","topRight");var Gg=function(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},o=h1(t?{name:t,appear:!0,enterFromClass:"".concat(t,"-enter ").concat(t,"-enter-prepare"),enterActiveClass:"".concat(t,"-enter ").concat(t,"-enter-prepare"),enterToClass:"".concat(t,"-enter ").concat(t,"-enter-active"),leaveFromClass:" ".concat(t,"-leave"),leaveActiveClass:"".concat(t,"-leave ").concat(t,"-leave-active"),leaveToClass:"".concat(t,"-leave ").concat(t,"-leave-active")}:{css:!1},n);return o},Op=function(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},o=h1(t?{name:t,appear:!0,appearActiveClass:"".concat(t),appearToClass:"".concat(t,"-appear ").concat(t,"-appear-active"),enterFromClass:"".concat(t,"-appear ").concat(t,"-enter ").concat(t,"-appear-prepare ").concat(t,"-enter-prepare"),enterActiveClass:"".concat(t),enterToClass:"".concat(t,"-enter ").concat(t,"-appear ").concat(t,"-appear-active ").concat(t,"-enter-active"),leaveActiveClass:"".concat(t," ").concat(t,"-leave"),leaveToClass:"".concat(t,"-leave-active")}:{css:!1},n);return o};const Ap=f1({name:"Notice",inheritAttrs:!1,props:["prefixCls","duration","updateMark","noticeKey","closeIcon","closable","props","onClick","onClose","holder","visible"],setup:function(t,n){var o=n.attrs,r=n.slots,i,s=!1,l=N(function(){return t.duration===void 0?4.5:t.duration}),d=function(){l.value&&!s&&(i=setTimeout(function(){k()},l.value*1e3))},a=function(){i&&(clearTimeout(i),i=null)},k=function(p){p&&p.stopPropagation(),a();var C=t.onClose,f=t.noticeKey;C&&C(f)},u=function(){a(),d()};return F2(function(){d()}),Hn(function(){s=!0,a()}),V1([l,function(){return t.updateMark},function(){return t.visible}],function(h,p){var C=ms(h,3),f=C[0],m=C[1],x=C[2],w=ms(p,3),D=w[0],v=w[1],j=w[2];(f!==D||m!==v||x!==j&&j)&&u()},{flush:"post"}),function(){var h,p,C=t.prefixCls,f=t.closable,m=t.closeIcon,x=m===void 0?(h=r.closeIcon)===null||h===void 0?void 0:h.call(r):m,w=t.onClick,D=t.holder,v=o.class,j=o.style,L="".concat(C,"-notice"),b=Object.keys(o).reduce(function(V,P){return(P.substr(0,5)==="data-"||P.substr(0,5)==="aria-"||P==="role")&&(V[P]=o[P]),V},{}),O=H("div",h1({class:_n(L,v,W1({},"".concat(L,"-closable"),f)),style:j,onMouseenter:a,onMouseleave:d,onClick:w},b),[H("div",{class:"".concat(L,"-content")},[(p=r.default)===null||p===void 0?void 0:p.call(r)]),f?H("a",{tabindex:0,onClick:k,class:"".concat(L,"-close")},[x||H("span",{class:"".concat(L,"-close-x")},null)]):null]);return D?H(nt,{to:D},{default:function(){return O}}):O}}});var Pp=["name","getContainer","appContext","prefixCls","rootPrefixCls","transitionName","hasTransitionName"],Vs=0,Tp=Date.now();function ys(){var e=Vs;return Vs+=1,"rcNotification_".concat(Tp,"_").concat(e)}var Zo=f1({name:"Notification",inheritAttrs:!1,props:["prefixCls","transitionName","animation","maxCount","closeIcon"],setup:function(t,n){var o=n.attrs,r=n.expose,i=n.slots,s=new Map,l=K([]),d=N(function(){var u=t.prefixCls,h=t.animation,p=h===void 0?"fade":h,C=t.transitionName;return!C&&p&&(C="".concat(u,"-").concat(p)),Op(C)}),a=function(h,p){var C=h.key||ys(),f=h1(h1({},h),{},{key:C}),m=t.maxCount,x=l.value.map(function(D){return D.notice.key}).indexOf(C),w=l.value.concat();x!==-1?w.splice(x,1,{notice:f,holderCallback:p}):(m&&l.value.length>=m&&(f.key=w[0].notice.key,f.updateMark=ys(),f.userPassKey=C,w.shift()),w.push({notice:f,holderCallback:p})),l.value=w},k=function(h){l.value=l.value.filter(function(p){var C=p.notice,f=C.key,m=C.userPassKey,x=m||f;return x!==h})};return r({add:a,remove:k,notices:l}),function(){var u,h,p=t.prefixCls,C=t.closeIcon,f=C===void 0?(u=i.closeIcon)===null||u===void 0?void 0:u.call(i,{prefixCls:p}):C,m=l.value.map(function(w,D){var v=w.notice,j=w.holderCallback,L=D===l.value.length-1?v.updateMark:void 0,b=v.key,O=v.userPassKey,V=v.content,P=h1(h1(h1({prefixCls:p,closeIcon:typeof f=="function"?f({prefixCls:p}):f},v),v.props),{},{key:b,noticeKey:O||b,updateMark:L,onClose:function(T){var o1;k(T),(o1=v.onClose)===null||o1===void 0||o1.call(v)},onClick:v.onClick});return j?H("div",{key:b,class:"".concat(p,"-hook-holder"),ref:function(T){typeof b>"u"||(T?(s.set(b,T),j(T,P)):s.delete(b))}},null):H(Ap,P,{default:function(){return[typeof V=="function"?V({prefixCls:p}):V]}})}),x=(h={},W1(h,p,1),W1(h,o.class,!!o.class),h);return H("div",{class:x,style:o.style||{top:"65px",left:"50%"}},[H(Z4,h1({tag:"div"},d.value),{default:function(){return[m]}})])}}});Zo.newInstance=function(t,n){var o=t||{},r=o.name,i=r===void 0?"notification":r,s=o.getContainer,l=o.appContext,d=o.prefixCls,a=o.rootPrefixCls,k=o.transitionName,u=o.hasTransitionName,h=pi(o,Pp),p=document.createElement("div");if(s){var C=s();C.appendChild(p)}else document.body.appendChild(p);var f=f1({compatConfig:{MODE:3},name:"NotificationWrapper",setup:function(w,D){var v=D.attrs,j=K();return F2(function(){n({notice:function(b){var O;(O=j.value)===null||O===void 0||O.add(b)},removeNotice:function(b){var O;(O=j.value)===null||O===void 0||O.remove(b)},destroy:function(){w0(null,p),p.parentNode&&p.parentNode.removeChild(p)},component:j})}),function(){var L=C2,b=L.getPrefixCls(i,d),O=L.getRootPrefixCls(a,b),V=u?k:"".concat(O,"-").concat(k);return H(dn,h1(h1({},L),{},{notUpdateGlobalConfig:!0,prefixCls:O}),{default:function(){return[H(Zo,h1(h1({ref:j},v),{},{prefixCls:b,transitionName:V}),null)]}})}}}),m=H(f,h);m.appContext=l||m.appContext,w0(m,p)};var Ip={icon:{tag:"svg",attrs:{viewBox:"0 0 1024 1024",focusable:"false"},children:[{tag:"path",attrs:{d:"M988 548c-19.9 0-36-16.1-36-36 0-59.4-11.6-117-34.6-171.3a440.45 440.45 0 00-94.3-139.9 437.71 437.71 0 00-139.9-94.3C629 83.6 571.4 72 512 72c-19.9 0-36-16.1-36-36s16.1-36 36-36c69.1 0 136.2 13.5 199.3 40.3C772.3 66 827 103 874 150c47 47 83.9 101.8 109.7 162.7 26.7 63.1 40.2 130.2 40.2 199.3.1 19.9-16 36-35.9 36z"}}]},name:"loading",theme:"outlined"};function X1(e,t){Rp(e)&&(e="100%");var n=$p(e);return e=t===360?e:Math.min(t,Math.max(0,parseFloat(e))),n&&(e=parseInt(String(e*t),10)/100),Math.abs(e-t)<1e-6?1:(t===360?e=(e<0?e%t+t:e%t)/parseFloat(String(t)):e=e%t/parseFloat(String(t)),e)}function qn(e){return Math.min(1,Math.max(0,e))}function Rp(e){return typeof e=="string"&&e.indexOf(".")!==-1&&parseFloat(e)===1}function $p(e){return typeof e=="string"&&e.indexOf("%")!==-1}function od(e){return e=parseFloat(e),(isNaN(e)||e<0||e>1)&&(e=1),e}function zn(e){return e<=1?"".concat(Number(e)*100,"%"):e}function Ge(e){return e.length===1?"0"+e:String(e)}function Fp(e,t,n){return{r:X1(e,255)*255,g:X1(t,255)*255,b:X1(n,255)*255}}function bs(e,t,n){e=X1(e,255),t=X1(t,255),n=X1(n,255);var o=Math.max(e,t,n),r=Math.min(e,t,n),i=0,s=0,l=(o+r)/2;if(o===r)s=0,i=0;else{var d=o-r;switch(s=l>.5?d/(2-o-r):d/(o+r),o){case e:i=(t-n)/d+(t1&&(n-=1),n<1/6?e+(t-e)*(6*n):n<1/2?t:n<2/3?e+(t-e)*(2/3-n)*6:e}function Np(e,t,n){var o,r,i;if(e=X1(e,360),t=X1(t,100),n=X1(n,100),t===0)r=n,i=n,o=n;else{var s=n<.5?n*(1+t):n+t-n*t,l=2*n-s;o=b9(l,s,e+1/3),r=b9(l,s,e),i=b9(l,s,e-1/3)}return{r:o*255,g:r*255,b:i*255}}function fr(e,t,n){e=X1(e,255),t=X1(t,255),n=X1(n,255);var o=Math.max(e,t,n),r=Math.min(e,t,n),i=0,s=o,l=o-r,d=o===0?0:l/o;if(o===r)i=0;else{switch(o){case e:i=(t-n)/l+(t>16,g:(e&65280)>>8,b:e&255}}var Mr={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",goldenrod:"#daa520",gold:"#ffd700",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavenderblush:"#fff0f5",lavender:"#e6e6fa",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"};function ut(e){var t={r:0,g:0,b:0},n=1,o=null,r=null,i=null,s=!1,l=!1;return typeof e=="string"&&(e=Yp(e)),typeof e=="object"&&(ne(e.r)&&ne(e.g)&&ne(e.b)?(t=Fp(e.r,e.g,e.b),s=!0,l=String(e.r).substr(-1)==="%"?"prgb":"rgb"):ne(e.h)&&ne(e.s)&&ne(e.v)?(o=zn(e.s),r=zn(e.v),t=Up(e.h,o,r),s=!0,l="hsv"):ne(e.h)&&ne(e.s)&&ne(e.l)&&(o=zn(e.s),i=zn(e.l),t=Np(e.h,o,i),s=!0,l="hsl"),Object.prototype.hasOwnProperty.call(e,"a")&&(n=e.a)),n=od(n),{ok:s,format:e.format||l,r:Math.min(255,Math.max(t.r,0)),g:Math.min(255,Math.max(t.g,0)),b:Math.min(255,Math.max(t.b,0)),a:n}}var Gp="[-\\+]?\\d+%?",Kp="[-\\+]?\\d*\\.\\d+%?",Be="(?:".concat(Kp,")|(?:").concat(Gp,")"),Z9="[\\s|\\(]+(".concat(Be,")[,|\\s]+(").concat(Be,")[,|\\s]+(").concat(Be,")\\s*\\)?"),_9="[\\s|\\(]+(".concat(Be,")[,|\\s]+(").concat(Be,")[,|\\s]+(").concat(Be,")[,|\\s]+(").concat(Be,")\\s*\\)?"),B2={CSS_UNIT:new RegExp(Be),rgb:new RegExp("rgb"+Z9),rgba:new RegExp("rgba"+_9),hsl:new RegExp("hsl"+Z9),hsla:new RegExp("hsla"+_9),hsv:new RegExp("hsv"+Z9),hsva:new RegExp("hsva"+_9),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/};function Yp(e){if(e=e.trim().toLowerCase(),e.length===0)return!1;var t=!1;if(Mr[e])e=Mr[e],t=!0;else if(e==="transparent")return{r:0,g:0,b:0,a:0,format:"name"};var n=B2.rgb.exec(e);return n?{r:n[1],g:n[2],b:n[3]}:(n=B2.rgba.exec(e),n?{r:n[1],g:n[2],b:n[3],a:n[4]}:(n=B2.hsl.exec(e),n?{h:n[1],s:n[2],l:n[3]}:(n=B2.hsla.exec(e),n?{h:n[1],s:n[2],l:n[3],a:n[4]}:(n=B2.hsv.exec(e),n?{h:n[1],s:n[2],v:n[3]}:(n=B2.hsva.exec(e),n?{h:n[1],s:n[2],v:n[3],a:n[4]}:(n=B2.hex8.exec(e),n?{r:w2(n[1]),g:w2(n[2]),b:w2(n[3]),a:Zs(n[4]),format:t?"name":"hex8"}:(n=B2.hex6.exec(e),n?{r:w2(n[1]),g:w2(n[2]),b:w2(n[3]),format:t?"name":"hex"}:(n=B2.hex4.exec(e),n?{r:w2(n[1]+n[1]),g:w2(n[2]+n[2]),b:w2(n[3]+n[3]),a:Zs(n[4]+n[4]),format:t?"name":"hex8"}:(n=B2.hex3.exec(e),n?{r:w2(n[1]+n[1]),g:w2(n[2]+n[2]),b:w2(n[3]+n[3]),format:t?"name":"hex"}:!1)))))))))}function ne(e){return!!B2.CSS_UNIT.exec(String(e))}var B9=function(){function e(t,n){t===void 0&&(t=""),n===void 0&&(n={});var o;if(t instanceof e)return t;typeof t=="number"&&(t=Wp(t)),this.originalInput=t;var r=ut(t);this.originalInput=t,this.r=r.r,this.g=r.g,this.b=r.b,this.a=r.a,this.roundA=Math.round(100*this.a)/100,this.format=(o=n.format)!==null&&o!==void 0?o:r.format,this.gradientType=n.gradientType,this.r<1&&(this.r=Math.round(this.r)),this.g<1&&(this.g=Math.round(this.g)),this.b<1&&(this.b=Math.round(this.b)),this.isValid=r.ok}return e.prototype.isDark=function(){return this.getBrightness()<128},e.prototype.isLight=function(){return!this.isDark()},e.prototype.getBrightness=function(){var t=this.toRgb();return(t.r*299+t.g*587+t.b*114)/1e3},e.prototype.getLuminance=function(){var t=this.toRgb(),n,o,r,i=t.r/255,s=t.g/255,l=t.b/255;return i<=.03928?n=i/12.92:n=Math.pow((i+.055)/1.055,2.4),s<=.03928?o=s/12.92:o=Math.pow((s+.055)/1.055,2.4),l<=.03928?r=l/12.92:r=Math.pow((l+.055)/1.055,2.4),.2126*n+.7152*o+.0722*r},e.prototype.getAlpha=function(){return this.a},e.prototype.setAlpha=function(t){return this.a=od(t),this.roundA=Math.round(100*this.a)/100,this},e.prototype.isMonochrome=function(){var t=this.toHsl().s;return t===0},e.prototype.toHsv=function(){var t=fr(this.r,this.g,this.b);return{h:t.h*360,s:t.s,v:t.v,a:this.a}},e.prototype.toHsvString=function(){var t=fr(this.r,this.g,this.b),n=Math.round(t.h*360),o=Math.round(t.s*100),r=Math.round(t.v*100);return this.a===1?"hsv(".concat(n,", ").concat(o,"%, ").concat(r,"%)"):"hsva(".concat(n,", ").concat(o,"%, ").concat(r,"%, ").concat(this.roundA,")")},e.prototype.toHsl=function(){var t=bs(this.r,this.g,this.b);return{h:t.h*360,s:t.s,l:t.l,a:this.a}},e.prototype.toHslString=function(){var t=bs(this.r,this.g,this.b),n=Math.round(t.h*360),o=Math.round(t.s*100),r=Math.round(t.l*100);return this.a===1?"hsl(".concat(n,", ").concat(o,"%, ").concat(r,"%)"):"hsla(".concat(n,", ").concat(o,"%, ").concat(r,"%, ").concat(this.roundA,")")},e.prototype.toHex=function(t){return t===void 0&&(t=!1),mr(this.r,this.g,this.b,t)},e.prototype.toHexString=function(t){return t===void 0&&(t=!1),"#"+this.toHex(t)},e.prototype.toHex8=function(t){return t===void 0&&(t=!1),qp(this.r,this.g,this.b,this.a,t)},e.prototype.toHex8String=function(t){return t===void 0&&(t=!1),"#"+this.toHex8(t)},e.prototype.toHexShortString=function(t){return t===void 0&&(t=!1),this.a===1?this.toHexString(t):this.toHex8String(t)},e.prototype.toRgb=function(){return{r:Math.round(this.r),g:Math.round(this.g),b:Math.round(this.b),a:this.a}},e.prototype.toRgbString=function(){var t=Math.round(this.r),n=Math.round(this.g),o=Math.round(this.b);return this.a===1?"rgb(".concat(t,", ").concat(n,", ").concat(o,")"):"rgba(".concat(t,", ").concat(n,", ").concat(o,", ").concat(this.roundA,")")},e.prototype.toPercentageRgb=function(){var t=function(n){return"".concat(Math.round(X1(n,255)*100),"%")};return{r:t(this.r),g:t(this.g),b:t(this.b),a:this.a}},e.prototype.toPercentageRgbString=function(){var t=function(n){return Math.round(X1(n,255)*100)};return this.a===1?"rgb(".concat(t(this.r),"%, ").concat(t(this.g),"%, ").concat(t(this.b),"%)"):"rgba(".concat(t(this.r),"%, ").concat(t(this.g),"%, ").concat(t(this.b),"%, ").concat(this.roundA,")")},e.prototype.toName=function(){if(this.a===0)return"transparent";if(this.a<1)return!1;for(var t="#"+mr(this.r,this.g,this.b,!1),n=0,o=Object.entries(Mr);n=0,i=!n&&r&&(t.startsWith("hex")||t==="name");return i?t==="name"&&this.a===0?this.toName():this.toRgbString():(t==="rgb"&&(o=this.toRgbString()),t==="prgb"&&(o=this.toPercentageRgbString()),(t==="hex"||t==="hex6")&&(o=this.toHexString()),t==="hex3"&&(o=this.toHexString(!0)),t==="hex4"&&(o=this.toHex8String(!0)),t==="hex8"&&(o=this.toHex8String()),t==="name"&&(o=this.toName()),t==="hsl"&&(o=this.toHslString()),t==="hsv"&&(o=this.toHsvString()),o||this.toHexString())},e.prototype.toNumber=function(){return(Math.round(this.r)<<16)+(Math.round(this.g)<<8)+Math.round(this.b)},e.prototype.clone=function(){return new e(this.toString())},e.prototype.lighten=function(t){t===void 0&&(t=10);var n=this.toHsl();return n.l+=t/100,n.l=qn(n.l),new e(n)},e.prototype.brighten=function(t){t===void 0&&(t=10);var n=this.toRgb();return n.r=Math.max(0,Math.min(255,n.r-Math.round(255*-(t/100)))),n.g=Math.max(0,Math.min(255,n.g-Math.round(255*-(t/100)))),n.b=Math.max(0,Math.min(255,n.b-Math.round(255*-(t/100)))),new e(n)},e.prototype.darken=function(t){t===void 0&&(t=10);var n=this.toHsl();return n.l-=t/100,n.l=qn(n.l),new e(n)},e.prototype.tint=function(t){return t===void 0&&(t=10),this.mix("white",t)},e.prototype.shade=function(t){return t===void 0&&(t=10),this.mix("black",t)},e.prototype.desaturate=function(t){t===void 0&&(t=10);var n=this.toHsl();return n.s-=t/100,n.s=qn(n.s),new e(n)},e.prototype.saturate=function(t){t===void 0&&(t=10);var n=this.toHsl();return n.s+=t/100,n.s=qn(n.s),new e(n)},e.prototype.greyscale=function(){return this.desaturate(100)},e.prototype.spin=function(t){var n=this.toHsl(),o=(n.h+t)%360;return n.h=o<0?360+o:o,new e(n)},e.prototype.mix=function(t,n){n===void 0&&(n=50);var o=this.toRgb(),r=new e(t).toRgb(),i=n/100,s={r:(r.r-o.r)*i+o.r,g:(r.g-o.g)*i+o.g,b:(r.b-o.b)*i+o.b,a:(r.a-o.a)*i+o.a};return new e(s)},e.prototype.analogous=function(t,n){t===void 0&&(t=6),n===void 0&&(n=30);var o=this.toHsl(),r=360/n,i=[this];for(o.h=(o.h-(r*t>>1)+720)%360;--t;)o.h=(o.h+r)%360,i.push(new e(o));return i},e.prototype.complement=function(){var t=this.toHsl();return t.h=(t.h+180)%360,new e(t)},e.prototype.monochromatic=function(t){t===void 0&&(t=6);for(var n=this.toHsv(),o=n.h,r=n.s,i=n.v,s=[],l=1/t;t--;)s.push(new e({h:o,s:r,v:i})),i=(i+l)%1;return s},e.prototype.splitcomplement=function(){var t=this.toHsl(),n=t.h;return[this,new e({h:(n+72)%360,s:t.s,l:t.l}),new e({h:(n+216)%360,s:t.s,l:t.l})]},e.prototype.onBackground=function(t){var n=this.toRgb(),o=new e(t).toRgb(),r=n.a+o.a*(1-n.a);return new e({r:(n.r*n.a+o.r*o.a*(1-n.a))/r,g:(n.g*n.a+o.g*o.a*(1-n.a))/r,b:(n.b*n.a+o.b*o.a*(1-n.a))/r,a:r})},e.prototype.triad=function(){return this.polyad(3)},e.prototype.tetrad=function(){return this.polyad(4)},e.prototype.polyad=function(t){for(var n=this.toHsl(),o=n.h,r=[this],i=360/t,s=1;s=60&&Math.round(e.h)<=240?o=n?Math.round(e.h)-Wn*t:Math.round(e.h)+Wn*t:o=n?Math.round(e.h)+Wn*t:Math.round(e.h)-Wn*t,o<0?o+=360:o>=360&&(o-=360),o}function Es(e,t,n){if(e.h===0&&e.s===0)return e.s;var o;return n?o=e.s-_s*t:t===id?o=e.s+_s:o=e.s+Jp*t,o>1&&(o=1),n&&t===rd&&o>.1&&(o=.1),o<.06&&(o=.06),Number(o.toFixed(2))}function Os(e,t,n){var o;return n?o=e.v+Qp*t:o=e.v-Xp*t,o>1&&(o=1),Number(o.toFixed(2))}function Mn(e){for(var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=[],o=ut(e),r=rd;r>0;r-=1){var i=Bs(o),s=Gn(ut({h:Ss(i,r,!0),s:Es(i,r,!0),v:Os(i,r,!0)}));n.push(s)}n.push(Gn(o));for(var l=1;l<=id;l+=1){var d=Bs(o),a=Gn(ut({h:Ss(d,l),s:Es(d,l),v:Os(d,l)}));n.push(a)}return t.theme==="dark"?ec.map(function(k){var u=k.index,h=k.opacity,p=Gn(tc(ut(t.backgroundColor||"#141414"),ut(n[u]),h*100));return p}):n}var S9={red:"#F5222D",volcano:"#FA541C",orange:"#FA8C16",gold:"#FAAD14",yellow:"#FADB14",lime:"#A0D911",green:"#52C41A",cyan:"#13C2C2",blue:"#1890FF",geekblue:"#2F54EB",purple:"#722ED1",magenta:"#EB2F96",grey:"#666666"},E9={},O9={};Object.keys(S9).forEach(function(e){E9[e]=Mn(S9[e]),E9[e].primary=E9[e][5],O9[e]=Mn(S9[e],{theme:"dark",backgroundColor:"#141414"}),O9[e].primary=O9[e][5]});var As=[],Ft=[],nc="insert-css: You need to provide a CSS string. Usage: insertCss(cssString[, options]).";function oc(){var e=document.createElement("style");return e.setAttribute("type","text/css"),e}function rc(e,t){if(t=t||{},e===void 0)throw new Error(nc);var n=t.prepend===!0?"prepend":"append",o=t.container!==void 0?t.container:document.querySelector("head"),r=As.indexOf(o);r===-1&&(r=As.push(o)-1,Ft[r]={});var i;return Ft[r]!==void 0&&Ft[r][n]!==void 0?i=Ft[r][n]:(i=Ft[r][n]=oc(),n==="prepend"?o.insertBefore(i,o.childNodes[0]):o.appendChild(i)),e.charCodeAt(0)===65279&&(e=e.substr(1,e.length)),i.styleSheet?i.styleSheet.cssText+=e:i.textContent+=e,i}function Ps(e){for(var t=1;t0&&arguments[0]!==void 0?arguments[0]:sc;a2(function(){Is||(typeof window<"u"&&window.document&&window.document.documentElement&&rc(t,{prepend:!0}),Is=!0)})},dc=["icon","primaryColor","secondaryColor"];function ac(e,t){if(e==null)return{};var n=kc(e,t),o,r;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}function kc(e,t){if(e==null)return{};var n={},o=Object.keys(e),r,i;for(i=0;i=0)&&(n[r]=e[r]);return n}function to(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,o=new Array(t);ne.length)&&(t=e.length);for(var n=0,o=new Array(t);n=0)&&Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}function Vc(e,t){if(e==null)return{};var n={},o=Object.keys(e),r,i;for(i=0;i=0)&&(n[r]=e[r]);return n}dd("#1890ff");var u2=function(t,n){var o,r=Fs({},t,n.attrs),i=r.class,s=r.icon,l=r.spin,d=r.rotate,a=r.tabindex,k=r.twoToneColor,u=r.onClick,h=Hc(r,mc),p=(o={anticon:!0},xr(o,"anticon-".concat(s.name),!!s.name),xr(o,i,i),o),C=l===""||l||s.name==="loading"?"anticon-spin":"",f=a;f===void 0&&u&&(f=-1,h.tabindex=f);var m=d?{msTransform:"rotate(".concat(d,"deg)"),transform:"rotate(".concat(d,"deg)")}:void 0,x=ld(k),w=Mc(x,2),D=w[0],v=w[1];return H("span",Fs({role:"img","aria-label":s.name},h,{onClick:u,class:p}),[H(Ie,{class:C,icon:s,primaryColor:D,secondaryColor:v,style:m},null)])};u2.props={spin:Boolean,rotate:Number,icon:Object,twoToneColor:String};u2.displayName="AntdIcon";u2.inheritAttrs=!1;u2.getTwoToneColor=fc;u2.setTwoToneColor=dd;function Ns(e){for(var t=1;t3?(m1=_1===r1)&&(G=y1[(P=y1[4])?5:(P=3,3)],y1[4]=y1[5]=o):y1[0]<=H1&&((m1=Y<2&&H1r1||r1>_1)&&(y1[4]=Y,y1[5]=r1,c1.n=_1,P=0))}if(m1||Y>1)return a;throw k1=!0,r1}return function(Y,r1,m1){if(T>1)throw TypeError("Generator is already running");for(k1&&r1===1&&u1(r1,m1),P=r1,G=m1;(r=P<2?o:G)||!k1;){V||(P?P<3?(P>1&&(c1.n=-1),u1(P,G)):c1.n=G:c1.v=G);try{if(T=2,V){if(P||(Y="next"),r=V[Y]){if(!(r=r.call(V,G)))throw TypeError("iterator result is not an object");if(!r.done)return r;G=r.value,P<2&&(P=0)}else P===1&&(r=V.return)&&r.call(V),P<2&&(G=TypeError("The iterator does not provide a '"+Y+"' method"),P=1);V=o}else if((r=(k1=c1.n<0)?G:L.call(b,c1))!==a)break}catch(y1){V=o,P=1,G=y1}finally{T=1}}return{value:r,done:k1}}}(m,w,D),!0),j}var a={};function k(){}function u(){}function h(){}r=Object.getPrototypeOf;var p=[][s]?r(r([][s]())):(t(r={},s,function(){return this}),r),C=h.prototype=k.prototype=Object.create(p);function f(m){return Object.setPrototypeOf?Object.setPrototypeOf(m,h):(m.__proto__=h,t(m,l,"GeneratorFunction")),m.prototype=Object.create(C),m}return u.prototype=h,t(C,"constructor",h),t(h,"constructor",u),u.displayName="GeneratorFunction",t(h,l,"GeneratorFunction"),t(C),t(C,l,"Generator"),t(C,s,function(){return this}),t(C,"toString",function(){return"[object Generator]"}),(e.exports=n=function(){return{w:d,m:f}},e.exports.__esModule=!0,e.exports.default=e.exports)()}e.exports=n,e.exports.__esModule=!0,e.exports.default=e.exports})(md);var xd=md.exports,Dd={exports:{}},Ld={exports:{}},Hd={exports:{}};(function(e){var t=fd,n=jd;function o(r,i){function s(d,a,k,u){try{var h=r[d](a),p=h.value;return p instanceof t?i.resolve(p.v).then(function(C){s("next",C,k,u)},function(C){s("throw",C,k,u)}):i.resolve(p).then(function(C){h.value=C,k(h)},function(C){return s("throw",C,k,u)})}catch(C){u(C)}}var l;this.next||(n(o.prototype),n(o.prototype,typeof Symbol=="function"&&Symbol.asyncIterator||"@asyncIterator",function(){return this})),n(this,"_invoke",function(d,a,k){function u(){return new i(function(h,p){s(d,k,h,p)})}return l=l?l.then(u,u):u()},!0)}e.exports=o,e.exports.__esModule=!0,e.exports.default=e.exports})(Hd);var Vd=Hd.exports;(function(e){var t=xd,n=Vd;function o(r,i,s,l,d){return new n(t().w(r,i,s,l),d||Promise)}e.exports=o,e.exports.__esModule=!0,e.exports.default=e.exports})(Ld);var yd=Ld.exports;(function(e){var t=yd;function n(o,r,i,s,l){var d=t(o,r,i,s,l);return d.next().then(function(a){return a.done?a.value:d.next()})}e.exports=n,e.exports.__esModule=!0,e.exports.default=e.exports})(Dd);var zc=Dd.exports,bd={exports:{}};(function(e){function t(n){var o=Object(n),r=[];for(var i in o)r.unshift(i);return function s(){for(;r.length;)if((i=r.pop())in o)return s.value=i,s.done=!1,s;return s.done=!0,s}}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports})(bd);var Wc=bd.exports,Zd={exports:{}},_d={exports:{}};(function(e){function t(n){"@babel/helpers - typeof";return e.exports=t=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(o){return typeof o}:function(o){return o&&typeof Symbol=="function"&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},e.exports.__esModule=!0,e.exports.default=e.exports,t(n)}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports})(_d);var Gc=_d.exports;(function(e){var t=Gc.default;function n(o){if(o!=null){var r=o[typeof Symbol=="function"&&Symbol.iterator||"@@iterator"],i=0;if(r)return r.call(o);if(typeof o.next=="function")return o;if(!isNaN(o.length))return{next:function(){return o&&i>=o.length&&(o=void 0),{value:o&&o[i++],done:!o}}}}throw new TypeError(t(o)+" is not iterable")}e.exports=n,e.exports.__esModule=!0,e.exports.default=e.exports})(Zd);var Kc=Zd.exports;(function(e){var t=fd,n=xd,o=zc,r=yd,i=Vd,s=Wc,l=Kc;function d(){var a=n(),k=a.m(d),u=(Object.getPrototypeOf?Object.getPrototypeOf(k):k.__proto__).constructor;function h(f){var m=typeof f=="function"&&f.constructor;return!!m&&(m===u||(m.displayName||m.name)==="GeneratorFunction")}var p={throw:1,return:2,break:3,continue:3};function C(f){var m,x;return function(w){m||(m={stop:function(){return x(w.a,2)},catch:function(){return w.v},abrupt:function(v,j){return x(w.a,p[v],j)},delegateYield:function(v,j,L){return m.resultName=j,x(w.d,l(v),L)},finish:function(v){return x(w.f,v)}},x=function(v,j,L){w.p=m.prev,w.n=m.next;try{return v(j,L)}finally{m.next=w.n}}),m.resultName&&(m[m.resultName]=w.v,m.resultName=void 0),m.sent=w.v,m.next=w.n;try{return f.call(this,m)}finally{w.p=m.prev,w.n=m.next}}}return(e.exports=d=function(){return{wrap:function(x,w,D,v){return a.w(C(x),w,D,v&&v.reverse())},isGeneratorFunction:h,mark:a.m,awrap:function(x,w){return new t(x,w)},AsyncIterator:i,async:function(x,w,D,v,j){return(h(w)?r:o)(C(x),w,D,v,j)},keys:s,values:l}},e.exports.__esModule=!0,e.exports.default=e.exports)()}e.exports=d,e.exports.__esModule=!0,e.exports.default=e.exports})(gd);var Yc=gd.exports,no=Yc(),Qc=no;try{regeneratorRuntime=no}catch{typeof globalThis=="object"?globalThis.regeneratorRuntime=no:Function("r","regeneratorRuntime = r")(no)}const Yg=qc(Qc);var Jc={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M699 353h-46.9c-10.2 0-19.9 4.9-25.9 13.3L469 584.3l-71.2-98.8c-6-8.3-15.6-13.3-25.9-13.3H325c-6.5 0-10.3 7.4-6.5 12.7l124.6 172.8a31.8 31.8 0 0051.7 0l210.6-292c3.9-5.3.1-12.7-6.4-12.7z"}},{tag:"path",attrs:{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"}}]},name:"check-circle",theme:"outlined"};function Gs(e){for(var t=1;t1&&arguments[1]!==void 0?arguments[1]:Sd,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:Ed,o;switch(e){case"topLeft":o={left:"0px",top:t,bottom:"auto"};break;case"topRight":o={right:"0px",top:t,bottom:"auto"};break;case"bottomLeft":o={left:"0px",top:"auto",bottom:n};break;default:o={right:"0px",top:"auto",bottom:n};break}return o}function kw(e,t){var n=e.prefixCls,o=e.placement,r=o===void 0?Od:o,i=e.getContainer,s=i===void 0?Ad:i,l=e.top,d=e.bottom,a=e.closeIcon,k=a===void 0?Pd:a,u=e.appContext,h=Dw(),p=h.getPrefixCls,C=p("notification",n||Dr),f="".concat(C,"-").concat(r,"-").concat(Lr),m=qe[f];if(m){Promise.resolve(m).then(function(w){t(w)});return}var x=_n("".concat(C,"-").concat(r),W1({},"".concat(C,"-rtl"),Lr===!0));Zo.newInstance({name:"notification",prefixCls:n||Dr,class:x,style:aw(r,l,d),appContext:u,getContainer:s,closeIcon:function(D){var v=D.prefixCls,j=H("span",{class:"".concat(v,"-close-x")},[Kt(k,{},H(Di,{class:"".concat(v,"-close-icon")},null))]);return j},maxCount:Td,hasTransitionName:!0},function(w){qe[f]=w,t(w)})}var uw={success:mi,info:Mi,error:ji,warning:xi};function hw(e){var t=e.icon,n=e.type,o=e.description,r=e.message,i=e.btn,s=e.duration===void 0?Bd:e.duration;kw(e,function(l){l.notice({content:function(a){var k=a.prefixCls,u="".concat(k,"-notice"),h=null;if(t)h=function(){return H("span",{class:"".concat(u,"-icon")},[Kt(t)])};else if(n){var p=uw[n];h=function(){return H(p,{class:"".concat(u,"-icon ").concat(u,"-icon-").concat(n)},null)}}return H("div",{class:h?"".concat(u,"-with-icon"):""},[h&&h(),H("div",{class:"".concat(u,"-message")},[!o&&h?H("span",{class:"".concat(u,"-message-single-line-auto-margin")},null):null,Kt(r)]),H("div",{class:"".concat(u,"-description")},[Kt(o)]),i?H("span",{class:"".concat(u,"-btn")},[Kt(i)]):null])},duration:s,closable:!0,onClose:e.onClose,onClick:e.onClick,key:e.key,style:e.style||{},class:e.class})})}var jn={open:hw,close:function(t){Object.keys(qe).forEach(function(n){return Promise.resolve(qe[n]).then(function(o){o.removeNotice(t)})})},config:dw,destroy:function(){Object.keys(qe).forEach(function(t){Promise.resolve(qe[t]).then(function(n){n.destroy()}),delete qe[t]})}},pw=["success","info","warning","error"];pw.forEach(function(e){jn[e]=function(t){return jn.open(h1(h1({},t),{},{type:e}))}});jn.warn=jn.warning;function Id(){return!!(typeof window<"u"&&window.document&&window.document.createElement)}var cw="vc-util-key";function Rd(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=e.mark;return t?t.startsWith("data-")?t:"data-".concat(t):cw}function Li(e){if(e.attachTo)return e.attachTo;var t=document.querySelector("head");return t||document.body}function Xs(e){var t,n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(!Id())return null;var o=document.createElement("style");if((t=n.csp)!==null&&t!==void 0&&t.nonce){var r;o.nonce=(r=n.csp)===null||r===void 0?void 0:r.nonce}o.innerHTML=e;var i=Li(n),s=i.firstChild;return n.prepend&&i.prepend?i.prepend(o):n.prepend&&s?i.insertBefore(o,s):i.appendChild(o),o}var Hr=new Map;function ww(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=Li(t);return Array.from(Hr.get(n).children).find(function(o){return o.tagName==="STYLE"&&o.getAttribute(Rd(t))===e})}function Cw(e,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},o=Li(n);if(!Hr.has(o)){var r=Xs("",n),i=r.parentNode;Hr.set(o,i),i.removeChild(r)}var s=ww(t,n);if(s){var l,d;if((l=n.csp)!==null&&l!==void 0&&l.nonce&&s.nonce!==((d=n.csp)===null||d===void 0?void 0:d.nonce)){var a;s.nonce=(a=n.csp)===null||a===void 0?void 0:a.nonce}return s.innerHTML!==e&&(s.innerHTML=e),s}var k=Xs(e,n);return k.setAttribute(Rd(n),t),k}const gw=function(e,t,n){nd(e,"[ant-design-vue: ".concat(t,"] ").concat(n))};var vw="-ant-".concat(Date.now(),"-").concat(Math.random());function fw(e,t){var n={},o=function(k,u){var h=k.clone();return h=(u==null?void 0:u(h))||h,h.toRgbString()},r=function(k,u){var h=new B9(k),p=Mn(h.toRgbString());n["".concat(u,"-color")]=o(h),n["".concat(u,"-color-disabled")]=p[1],n["".concat(u,"-color-hover")]=p[4],n["".concat(u,"-color-active")]=p[6],n["".concat(u,"-color-outline")]=h.clone().setAlpha(.2).toRgbString(),n["".concat(u,"-color-deprecated-bg")]=p[1],n["".concat(u,"-color-deprecated-border")]=p[3]};if(t.primaryColor){r(t.primaryColor,"primary");var i=new B9(t.primaryColor),s=Mn(i.toRgbString());s.forEach(function(a,k){n["primary-".concat(k+1)]=a}),n["primary-color-deprecated-l-35"]=o(i,function(a){return a.lighten(35)}),n["primary-color-deprecated-l-20"]=o(i,function(a){return a.lighten(20)}),n["primary-color-deprecated-t-20"]=o(i,function(a){return a.tint(20)}),n["primary-color-deprecated-t-50"]=o(i,function(a){return a.tint(50)}),n["primary-color-deprecated-f-12"]=o(i,function(a){return a.setAlpha(a.getAlpha()*.12)});var l=new B9(s[0]);n["primary-color-active-deprecated-f-30"]=o(l,function(a){return a.setAlpha(a.getAlpha()*.3)}),n["primary-color-active-deprecated-d-02"]=o(l,function(a){return a.darken(2)})}t.successColor&&r(t.successColor,"success"),t.warningColor&&r(t.warningColor,"warning"),t.errorColor&&r(t.errorColor,"error"),t.infoColor&&r(t.infoColor,"info");var d=Object.keys(n).map(function(a){return"--".concat(e,"-").concat(a,": ").concat(n[a],";")});Id()?Cw(` +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function xc(e,t){if(e){if(typeof e=="string")return $s(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(n==="Object"&&e.constructor&&(n=e.constructor.name),n==="Map"||n==="Set")return Array.from(e);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return $s(e,t)}}function $s(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n=0)&&Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}function Vc(e,t){if(e==null)return{};var n={},o=Object.keys(e),r,i;for(i=0;i=0)&&(n[r]=e[r]);return n}dd("#1890ff");var u2=function(t,n){var o,r=Fs({},t,n.attrs),i=r.class,s=r.icon,l=r.spin,d=r.rotate,a=r.tabindex,k=r.twoToneColor,u=r.onClick,h=Hc(r,mc),p=(o={anticon:!0},xr(o,"anticon-".concat(s.name),!!s.name),xr(o,i,i),o),C=l===""||l||s.name==="loading"?"anticon-spin":"",f=a;f===void 0&&u&&(f=-1,h.tabindex=f);var m=d?{msTransform:"rotate(".concat(d,"deg)"),transform:"rotate(".concat(d,"deg)")}:void 0,x=ld(k),w=Mc(x,2),D=w[0],v=w[1];return H("span",Fs({role:"img","aria-label":s.name},h,{onClick:u,class:p}),[H(Ie,{class:C,icon:s,primaryColor:D,secondaryColor:v,style:m},null)])};u2.props={spin:Boolean,rotate:Number,icon:Object,twoToneColor:String};u2.displayName="AntdIcon";u2.inheritAttrs=!1;u2.getTwoToneColor=fc;u2.setTwoToneColor=dd;function Ns(e){for(var t=1;t3?(m1=_1===r1)&&(G=y1[(P=y1[4])?5:(P=3,3)],y1[4]=y1[5]=o):y1[0]<=H1&&((m1=Y<2&&H1r1||r1>_1)&&(y1[4]=Y,y1[5]=r1,w1.n=_1,P=0))}if(m1||Y>1)return a;throw k1=!0,r1}return function(Y,r1,m1){if(T>1)throw TypeError("Generator is already running");for(k1&&r1===1&&u1(r1,m1),P=r1,G=m1;(r=P<2?o:G)||!k1;){V||(P?P<3?(P>1&&(w1.n=-1),u1(P,G)):w1.n=G:w1.v=G);try{if(T=2,V){if(P||(Y="next"),r=V[Y]){if(!(r=r.call(V,G)))throw TypeError("iterator result is not an object");if(!r.done)return r;G=r.value,P<2&&(P=0)}else P===1&&(r=V.return)&&r.call(V),P<2&&(G=TypeError("The iterator does not provide a '"+Y+"' method"),P=1);V=o}else if((r=(k1=w1.n<0)?G:L.call(b,w1))!==a)break}catch(y1){V=o,P=1,G=y1}finally{T=1}}return{value:r,done:k1}}}(m,w,D),!0),j}var a={};function k(){}function u(){}function h(){}r=Object.getPrototypeOf;var p=[][s]?r(r([][s]())):(t(r={},s,function(){return this}),r),C=h.prototype=k.prototype=Object.create(p);function f(m){return Object.setPrototypeOf?Object.setPrototypeOf(m,h):(m.__proto__=h,t(m,l,"GeneratorFunction")),m.prototype=Object.create(C),m}return u.prototype=h,t(C,"constructor",h),t(h,"constructor",u),u.displayName="GeneratorFunction",t(h,l,"GeneratorFunction"),t(C),t(C,l,"Generator"),t(C,s,function(){return this}),t(C,"toString",function(){return"[object Generator]"}),(e.exports=n=function(){return{w:d,m:f}},e.exports.__esModule=!0,e.exports.default=e.exports)()}e.exports=n,e.exports.__esModule=!0,e.exports.default=e.exports})(md);var xd=md.exports,Dd={exports:{}},Ld={exports:{}},Hd={exports:{}};(function(e){var t=fd,n=jd;function o(r,i){function s(d,a,k,u){try{var h=r[d](a),p=h.value;return p instanceof t?i.resolve(p.v).then(function(C){s("next",C,k,u)},function(C){s("throw",C,k,u)}):i.resolve(p).then(function(C){h.value=C,k(h)},function(C){return s("throw",C,k,u)})}catch(C){u(C)}}var l;this.next||(n(o.prototype),n(o.prototype,typeof Symbol=="function"&&Symbol.asyncIterator||"@asyncIterator",function(){return this})),n(this,"_invoke",function(d,a,k){function u(){return new i(function(h,p){s(d,k,h,p)})}return l=l?l.then(u,u):u()},!0)}e.exports=o,e.exports.__esModule=!0,e.exports.default=e.exports})(Hd);var Vd=Hd.exports;(function(e){var t=xd,n=Vd;function o(r,i,s,l,d){return new n(t().w(r,i,s,l),d||Promise)}e.exports=o,e.exports.__esModule=!0,e.exports.default=e.exports})(Ld);var yd=Ld.exports;(function(e){var t=yd;function n(o,r,i,s,l){var d=t(o,r,i,s,l);return d.next().then(function(a){return a.done?a.value:d.next()})}e.exports=n,e.exports.__esModule=!0,e.exports.default=e.exports})(Dd);var zc=Dd.exports,bd={exports:{}};(function(e){function t(n){var o=Object(n),r=[];for(var i in o)r.unshift(i);return function s(){for(;r.length;)if((i=r.pop())in o)return s.value=i,s.done=!1,s;return s.done=!0,s}}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports})(bd);var Wc=bd.exports,Zd={exports:{}},_d={exports:{}};(function(e){function t(n){"@babel/helpers - typeof";return e.exports=t=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(o){return typeof o}:function(o){return o&&typeof Symbol=="function"&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},e.exports.__esModule=!0,e.exports.default=e.exports,t(n)}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports})(_d);var Gc=_d.exports;(function(e){var t=Gc.default;function n(o){if(o!=null){var r=o[typeof Symbol=="function"&&Symbol.iterator||"@@iterator"],i=0;if(r)return r.call(o);if(typeof o.next=="function")return o;if(!isNaN(o.length))return{next:function(){return o&&i>=o.length&&(o=void 0),{value:o&&o[i++],done:!o}}}}throw new TypeError(t(o)+" is not iterable")}e.exports=n,e.exports.__esModule=!0,e.exports.default=e.exports})(Zd);var Kc=Zd.exports;(function(e){var t=fd,n=xd,o=zc,r=yd,i=Vd,s=Wc,l=Kc;function d(){var a=n(),k=a.m(d),u=(Object.getPrototypeOf?Object.getPrototypeOf(k):k.__proto__).constructor;function h(f){var m=typeof f=="function"&&f.constructor;return!!m&&(m===u||(m.displayName||m.name)==="GeneratorFunction")}var p={throw:1,return:2,break:3,continue:3};function C(f){var m,x;return function(w){m||(m={stop:function(){return x(w.a,2)},catch:function(){return w.v},abrupt:function(v,j){return x(w.a,p[v],j)},delegateYield:function(v,j,L){return m.resultName=j,x(w.d,l(v),L)},finish:function(v){return x(w.f,v)}},x=function(v,j,L){w.p=m.prev,w.n=m.next;try{return v(j,L)}finally{m.next=w.n}}),m.resultName&&(m[m.resultName]=w.v,m.resultName=void 0),m.sent=w.v,m.next=w.n;try{return f.call(this,m)}finally{w.p=m.prev,w.n=m.next}}}return(e.exports=d=function(){return{wrap:function(x,w,D,v){return a.w(C(x),w,D,v&&v.reverse())},isGeneratorFunction:h,mark:a.m,awrap:function(x,w){return new t(x,w)},AsyncIterator:i,async:function(x,w,D,v,j){return(h(w)?r:o)(C(x),w,D,v,j)},keys:s,values:l}},e.exports.__esModule=!0,e.exports.default=e.exports)()}e.exports=d,e.exports.__esModule=!0,e.exports.default=e.exports})(gd);var Yc=gd.exports,no=Yc(),Jc=no;try{regeneratorRuntime=no}catch{typeof globalThis=="object"?globalThis.regeneratorRuntime=no:Function("r","regeneratorRuntime = r")(no)}const Yg=qc(Jc);var Qc={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M699 353h-46.9c-10.2 0-19.9 4.9-25.9 13.3L469 584.3l-71.2-98.8c-6-8.3-15.6-13.3-25.9-13.3H325c-6.5 0-10.3 7.4-6.5 12.7l124.6 172.8a31.8 31.8 0 0051.7 0l210.6-292c3.9-5.3.1-12.7-6.4-12.7z"}},{tag:"path",attrs:{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"}}]},name:"check-circle",theme:"outlined"};function Gs(e){for(var t=1;t1&&arguments[1]!==void 0?arguments[1]:Sd,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:Ed,o;switch(e){case"topLeft":o={left:"0px",top:t,bottom:"auto"};break;case"topRight":o={right:"0px",top:t,bottom:"auto"};break;case"bottomLeft":o={left:"0px",top:"auto",bottom:n};break;default:o={right:"0px",top:"auto",bottom:n};break}return o}function kw(e,t){var n=e.prefixCls,o=e.placement,r=o===void 0?Od:o,i=e.getContainer,s=i===void 0?Ad:i,l=e.top,d=e.bottom,a=e.closeIcon,k=a===void 0?Pd:a,u=e.appContext,h=Dw(),p=h.getPrefixCls,C=p("notification",n||Dr),f="".concat(C,"-").concat(r,"-").concat(Lr),m=qe[f];if(m){Promise.resolve(m).then(function(w){t(w)});return}var x=_n("".concat(C,"-").concat(r),W1({},"".concat(C,"-rtl"),Lr===!0));Zo.newInstance({name:"notification",prefixCls:n||Dr,class:x,style:aw(r,l,d),appContext:u,getContainer:s,closeIcon:function(D){var v=D.prefixCls,j=H("span",{class:"".concat(v,"-close-x")},[Kt(k,{},H(Di,{class:"".concat(v,"-close-icon")},null))]);return j},maxCount:Td,hasTransitionName:!0},function(w){qe[f]=w,t(w)})}var uw={success:mi,info:Mi,error:ji,warning:xi};function hw(e){var t=e.icon,n=e.type,o=e.description,r=e.message,i=e.btn,s=e.duration===void 0?Bd:e.duration;kw(e,function(l){l.notice({content:function(a){var k=a.prefixCls,u="".concat(k,"-notice"),h=null;if(t)h=function(){return H("span",{class:"".concat(u,"-icon")},[Kt(t)])};else if(n){var p=uw[n];h=function(){return H(p,{class:"".concat(u,"-icon ").concat(u,"-icon-").concat(n)},null)}}return H("div",{class:h?"".concat(u,"-with-icon"):""},[h&&h(),H("div",{class:"".concat(u,"-message")},[!o&&h?H("span",{class:"".concat(u,"-message-single-line-auto-margin")},null):null,Kt(r)]),H("div",{class:"".concat(u,"-description")},[Kt(o)]),i?H("span",{class:"".concat(u,"-btn")},[Kt(i)]):null])},duration:s,closable:!0,onClose:e.onClose,onClick:e.onClick,key:e.key,style:e.style||{},class:e.class})})}var jn={open:hw,close:function(t){Object.keys(qe).forEach(function(n){return Promise.resolve(qe[n]).then(function(o){o.removeNotice(t)})})},config:dw,destroy:function(){Object.keys(qe).forEach(function(t){Promise.resolve(qe[t]).then(function(n){n.destroy()}),delete qe[t]})}},pw=["success","info","warning","error"];pw.forEach(function(e){jn[e]=function(t){return jn.open(h1(h1({},t),{},{type:e}))}});jn.warn=jn.warning;function Id(){return!!(typeof window<"u"&&window.document&&window.document.createElement)}var cw="vc-util-key";function Rd(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=e.mark;return t?t.startsWith("data-")?t:"data-".concat(t):cw}function Li(e){if(e.attachTo)return e.attachTo;var t=document.querySelector("head");return t||document.body}function Xs(e){var t,n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(!Id())return null;var o=document.createElement("style");if((t=n.csp)!==null&&t!==void 0&&t.nonce){var r;o.nonce=(r=n.csp)===null||r===void 0?void 0:r.nonce}o.innerHTML=e;var i=Li(n),s=i.firstChild;return n.prepend&&i.prepend?i.prepend(o):n.prepend&&s?i.insertBefore(o,s):i.appendChild(o),o}var Hr=new Map;function ww(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=Li(t);return Array.from(Hr.get(n).children).find(function(o){return o.tagName==="STYLE"&&o.getAttribute(Rd(t))===e})}function Cw(e,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},o=Li(n);if(!Hr.has(o)){var r=Xs("",n),i=r.parentNode;Hr.set(o,i),i.removeChild(r)}var s=ww(t,n);if(s){var l,d;if((l=n.csp)!==null&&l!==void 0&&l.nonce&&s.nonce!==((d=n.csp)===null||d===void 0?void 0:d.nonce)){var a;s.nonce=(a=n.csp)===null||a===void 0?void 0:a.nonce}return s.innerHTML!==e&&(s.innerHTML=e),s}var k=Xs(e,n);return k.setAttribute(Rd(n),t),k}const gw=function(e,t,n){nd(e,"[ant-design-vue: ".concat(t,"] ").concat(n))};var vw="-ant-".concat(Date.now(),"-").concat(Math.random());function fw(e,t){var n={},o=function(k,u){var h=k.clone();return h=(u==null?void 0:u(h))||h,h.toRgbString()},r=function(k,u){var h=new B9(k),p=Mn(h.toRgbString());n["".concat(u,"-color")]=o(h),n["".concat(u,"-color-disabled")]=p[1],n["".concat(u,"-color-hover")]=p[4],n["".concat(u,"-color-active")]=p[6],n["".concat(u,"-color-outline")]=h.clone().setAlpha(.2).toRgbString(),n["".concat(u,"-color-deprecated-bg")]=p[1],n["".concat(u,"-color-deprecated-border")]=p[3]};if(t.primaryColor){r(t.primaryColor,"primary");var i=new B9(t.primaryColor),s=Mn(i.toRgbString());s.forEach(function(a,k){n["primary-".concat(k+1)]=a}),n["primary-color-deprecated-l-35"]=o(i,function(a){return a.lighten(35)}),n["primary-color-deprecated-l-20"]=o(i,function(a){return a.lighten(20)}),n["primary-color-deprecated-t-20"]=o(i,function(a){return a.tint(20)}),n["primary-color-deprecated-t-50"]=o(i,function(a){return a.tint(50)}),n["primary-color-deprecated-f-12"]=o(i,function(a){return a.setAlpha(a.getAlpha()*.12)});var l=new B9(s[0]);n["primary-color-active-deprecated-f-30"]=o(l,function(a){return a.setAlpha(a.getAlpha()*.3)}),n["primary-color-active-deprecated-d-02"]=o(l,function(a){return a.darken(2)})}t.successColor&&r(t.successColor,"success"),t.warningColor&&r(t.warningColor,"warning"),t.errorColor&&r(t.errorColor,"error"),t.infoColor&&r(t.infoColor,"info");var d=Object.keys(n).map(function(a){return"--".concat(e,"-").concat(a,": ").concat(n[a],";")});Id()?Cw(` :root { `.concat(d.join(` `),` } - `),"".concat(vw,"-dynamic-theme")):gw(!1,"ConfigProvider","SSR do not support dynamic theme with css variables.")}var $d=Symbol("GlobalFormContextKey"),mw=function(t){ke($d,t)},Qg=function(){return N1($d,{validateMessages:N(function(){})})},Mw=function(){return{getTargetContainer:{type:Function},getPopupContainer:{type:Function},prefixCls:String,getPrefixCls:{type:Function},renderEmpty:{type:Function},transformCellText:{type:Function},csp:{type:Object,default:void 0},input:{type:Object},autoInsertSpaceInButton:{type:Boolean,default:void 0},locale:{type:Object,default:void 0},pageHeader:{type:Object},componentSize:{type:String},direction:{type:String},space:{type:Object},virtual:{type:Boolean,default:void 0},dropdownMatchSelectWidth:{type:[Number,Boolean],default:!0},form:{type:Object,default:void 0},notUpdateGlobalConfig:Boolean}},jw="ant";function vt(){return C2.prefixCls||jw}var Vr=I1({}),Fd=I1({}),C2=I1({});Nr(function(){et(C2,Vr,Fd),C2.prefixCls=vt(),C2.getPrefixCls=function(e,t){return t||(e?"".concat(C2.prefixCls,"-").concat(e):C2.prefixCls)},C2.getRootPrefixCls=function(e,t){return e||(C2.prefixCls?C2.prefixCls:t&&t.includes("-")?t.replace(/^(.*)-[^-]*$/,"$1"):vt())}});var A9,xw=function(t){A9&&A9(),A9=Nr(function(){et(Fd,I1(t)),et(C2,I1(t))}),t.theme&&fw(vt(),t.theme)},Dw=function(){return{getPrefixCls:function(n,o){return o||(n?"".concat(vt(),"-").concat(n):vt())},getRootPrefixCls:function(n,o){return n||(C2.prefixCls?C2.prefixCls:o&&o.includes("-")?o.replace(/^(.*)-[^-]*$/,"$1"):vt())}}},dn=f1({compatConfig:{MODE:3},name:"AConfigProvider",inheritAttrs:!1,props:Mw(),setup:function(t,n){var o=n.slots,r=function(u,h){var p=t.prefixCls,C=p===void 0?"ant":p;return u?"".concat(C,"-").concat(u):C},i=function(u){var h=t.renderEmpty||o.renderEmpty||td;return h(u)},s=function(u,h){var p=t.prefixCls;if(h)return h;var C=p||r("");return u?"".concat(C,"-").concat(u):C},l=I1(h1(h1({},t),{},{getPrefixCls:s,renderEmpty:i}));Object.keys(t).forEach(function(k){V1(function(){return t[k]},function(){l[k]=t[k]})}),t.notUpdateGlobalConfig||(et(Vr,l),V1(l,function(){et(Vr,l)}));var d=N(function(){var k={};if(t.locale){var u,h;k=((u=t.locale.Form)===null||u===void 0?void 0:u.defaultValidateMessages)||((h=yo.Form)===null||h===void 0?void 0:h.defaultValidateMessages)||{}}return t.form&&t.form.validateMessages&&(k=h1(h1({},k),t.form.validateMessages)),k});mw({validateMessages:d}),ke("configProvider",l);var a=function(u){var h;return H(Ep,{locale:t.locale||u,ANT_MARK__:vr},{default:function(){return[(h=o.default)===null||h===void 0?void 0:h.call(o)]}})};return Nr(function(){t.direction&&(_o.config({rtl:t.direction==="rtl"}),jn.config({rtl:t.direction==="rtl"}))}),function(){return H(Fl,{children:function(u,h,p){return a(p)}},null)}}}),Nd=I1({getPrefixCls:function(t,n){return n||(t?"ant-".concat(t):"ant")},renderEmpty:td,direction:"ltr"});dn.config=xw;dn.install=function(e){e.component(dn.name,dn)};const r9=function(e,t){var n=N1("configProvider",Nd),o=N(function(){return n.getPrefixCls(e,t.prefixCls)}),r=N(function(){var w;return(w=t.direction)!==null&&w!==void 0?w:n.direction}),i=N(function(){return n.getPrefixCls()}),s=N(function(){return n.autoInsertSpaceInButton}),l=N(function(){return n.renderEmpty}),d=N(function(){return n.space}),a=N(function(){return n.pageHeader}),k=N(function(){return n.form}),u=N(function(){return t.getTargetContainer||n.getTargetContainer}),h=N(function(){return t.getPopupContainer||n.getPopupContainer}),p=N(function(){var w;return(w=t.dropdownMatchSelectWidth)!==null&&w!==void 0?w:n.dropdownMatchSelectWidth}),C=N(function(){return(t.virtual===void 0?n.virtual!==!1:t.virtual!==!1)&&p.value!==!1}),f=N(function(){return t.size||n.componentSize}),m=N(function(){var w;return t.autocomplete||((w=n.input)===null||w===void 0?void 0:w.autocomplete)}),x=N(function(){return n.csp});return{configProvider:n,prefixCls:o,direction:r,size:f,getTargetContainer:u,getPopupContainer:h,space:d,pageHeader:a,form:k,autoInsertSpaceInButton:s,renderEmpty:l,virtual:C,dropdownMatchSelectWidth:p,rootPrefixCls:i,getPrefixCls:n.getPrefixCls,autocomplete:m,csp:x}};function yr(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}var Lw="[object Symbol]";function Hw(e){return typeof e=="symbol"||Jh(e)&&Qh(e)==Lw}var Vw=/\s/;function yw(e){for(var t=e.length;t--&&Vw.test(e.charAt(t)););return t}var bw=/^\s+/;function Zw(e){return e&&e.slice(0,yw(e)+1).replace(bw,"")}var e5=NaN,_w=/^[-+]0x[0-9a-f]+$/i,Bw=/^0b[01]+$/i,Sw=/^0o[0-7]+$/i,Ew=parseInt;function t5(e){if(typeof e=="number")return e;if(Hw(e))return e5;if(yr(e)){var t=typeof e.valueOf=="function"?e.valueOf():e;e=yr(t)?t+"":t}if(typeof e!="string")return e===0?e:+e;e=Zw(e);var n=Bw.test(e);return n||Sw.test(e)?Ew(e.slice(2),n?2:8):_w.test(e)?e5:+e}var P9=function(){return Al.Date.now()},Ow="Expected a function",Aw=Math.max,Pw=Math.min;function Tw(e,t,n){var o,r,i,s,l,d,a=0,k=!1,u=!1,h=!0;if(typeof e!="function")throw new TypeError(Ow);t=t5(t)||0,yr(n)&&(k=!!n.leading,u="maxWait"in n,i=u?Aw(t5(n.maxWait)||0,t):i,h="trailing"in n?!!n.trailing:h);function p(L){var b=o,O=r;return o=r=void 0,a=L,s=e.apply(O,b),s}function C(L){return a=L,l=setTimeout(x,t),k?p(L):s}function f(L){var b=L-d,O=L-a,V=t-b;return u?Pw(V,i-O):V}function m(L){var b=L-d,O=L-a;return d===void 0||b>=t||b<0||u&&O>=i}function x(){var L=P9();if(m(L))return w(L);l=setTimeout(x,f(L))}function w(L){return l=void 0,h&&o?p(L):(o=r=void 0,s)}function D(){l!==void 0&&clearTimeout(l),a=0,o=d=r=l=void 0}function v(){return l===void 0?s:w(P9())}function j(){var L=P9(),b=m(L);if(o=arguments,r=this,d=L,b){if(l===void 0)return C(d);if(u)return clearTimeout(l),l=setTimeout(x,t),p(d)}return l===void 0&&(l=setTimeout(x,t)),s}return j.cancel=D,j.flush=v,j}var Iw=["class","style"],Rw=function(){return{prefixCls:String,spinning:{type:Boolean,default:void 0},size:String,wrapperClassName:String,tip:mn.any,delay:Number,indicator:mn.any}},oo=null;function $w(e,t){return!!e&&!!t&&!isNaN(Number(t))}function Fw(e){var t=e.indicator;oo=typeof t=="function"?t:function(){return H(t,null,null)}}const an=f1({compatConfig:{MODE:3},name:"ASpin",inheritAttrs:!1,props:ep(Rw(),{size:"default",spinning:!0,wrapperClassName:""}),setup:function(){return{originalUpdateSpinning:null,configProvider:N1("configProvider",Nd)}},data:function(){var t=this.spinning,n=this.delay,o=$w(t,n);return{sSpinning:t&&!o}},created:function(){this.originalUpdateSpinning=this.updateSpinning,this.debouncifyUpdateSpinning(this.$props)},mounted:function(){this.updateSpinning()},updated:function(){var t=this;a2(function(){t.debouncifyUpdateSpinning(),t.updateSpinning()})},beforeUnmount:function(){this.cancelExistingSpin()},methods:{debouncifyUpdateSpinning:function(t){var n=t||this.$props,o=n.delay;o&&(this.cancelExistingSpin(),this.updateSpinning=Tw(this.originalUpdateSpinning,o))},updateSpinning:function(){var t=this.spinning,n=this.sSpinning;n!==t&&(this.sSpinning=t)},cancelExistingSpin:function(){var t=this.updateSpinning;t&&t.cancel&&t.cancel()},renderIndicator:function(t){var n="".concat(t,"-dot"),o=rp(this,"indicator");return o===null?null:(Array.isArray(o)&&(o=o.length===1?o[0]:o),k2(o)?R2(o,{class:n}):oo&&k2(oo())?R2(oo(),{class:n}):H("span",{class:"".concat(n," ").concat(t,"-dot-spin")},[H("i",{class:"".concat(t,"-dot-item")},null),H("i",{class:"".concat(t,"-dot-item")},null),H("i",{class:"".concat(t,"-dot-item")},null),H("i",{class:"".concat(t,"-dot-item")},null)]))}},render:function(){var t,n,o,r=this.$props,i=r.size,s=r.prefixCls,l=r.tip,d=l===void 0?(t=(n=this.$slots).tip)===null||t===void 0?void 0:t.call(n):l,a=r.wrapperClassName,k=this.$attrs,u=k.class,h=k.style,p=pi(k,Iw),C=this.configProvider,f=C.getPrefixCls,m=C.direction,x=f("spin",s),w=this.sSpinning,D=(o={},W1(o,x,!0),W1(o,"".concat(x,"-sm"),i==="small"),W1(o,"".concat(x,"-lg"),i==="large"),W1(o,"".concat(x,"-spinning"),w),W1(o,"".concat(x,"-show-text"),!!d),W1(o,"".concat(x,"-rtl"),m==="rtl"),W1(o,u,!!u),o),v=H("div",h1(h1({},p),{},{style:h,class:D}),[this.renderIndicator(x),d?H("div",{class:"".concat(x,"-text")},[d]):null]),j=op(this);if(j&&j.length){var L,b=(L={},W1(L,"".concat(x,"-container"),!0),W1(L,"".concat(x,"-blur"),w),L);return H("div",{class:["".concat(x,"-nested-loading"),a]},[w&&H("div",{key:"loading"},[v]),H("div",{class:b,key:"container"},[j])])}return v}});an.setDefaultIndicator=Fw;an.install=function(e){return e.component(an.name,an),e};const Nw=["alt"],Uw={key:1,class:"loading keep-motion"},qw=f1({__name:"Spinner",props:{tip:{},size:{default:"large"},cls:{},delay:{},spinning:{type:Boolean},indicator:{type:Boolean},fixed:{type:Boolean,default:!0}},setup(e){return(t,n)=>(U(),O1(t1(an),{spinning:e.spinning,tip:e.tip,size:e.size,delay:e.delay,class:G1(e.fixed?"!max-h-screen !fixed":"")},{indicator:z1(()=>[e.indicator?(U(),J("div",Uw,[...n[0]||(n[0]=[A("div",{class:"effect-1 effects"},null,-1),A("div",{class:"effect-2 effects"},null,-1),A("div",{class:"effect-3 effects"},null,-1)])])):(U(),J("img",{key:0,src:jl,alt:t1(Do).nameEn,class:"spinner-brand",width:"48",height:"48"},null,8,Nw))]),default:z1(()=>[A("div",{class:G1(e.cls)},[wt(t.$slots,"default")],2)]),_:3},8,["spinning","tip","size","delay","class"]))}}),zw={class:"hg-dialog__inner"},Ww={class:"hg-dialog__media"},Gw={class:"hg-dialog__body"},Kw={class:"hg-dialog__actions hg-dialog__actions--pair"},Yw=f1({__name:"DialogVant",props:{timeOut:{},text1:{},text2:{},text3:{}},setup(e){return(t,n)=>(U(),O1(t1(tl),{class:"hg-dialog","show-confirm-button":!1,"show-cancel-button":!1},{default:z1(()=>[A("div",zw,[A("div",Ww,[wt(t.$slots,"img",{},()=>[e2(p1(e.text2),1)])]),A("div",Gw,[wt(t.$slots,"title",{},()=>[e2(p1(e.text1),1)])]),A("div",Kw,[wt(t.$slots,"button",{},()=>[e2(p1(e.text3),1)])])])]),_:3}))}}),Ud="/api",Qw="gold-bank:token",Jw="gold-bank:actingAs",T9=100;let Qe=null;function Xw(e){Qe=e}class Hi extends Error{constructor(t){super(`API ${t} rejected the session (401)`),this.name="UnauthorizedError"}}function qd(){try{return localStorage.getItem(Qw)}catch{return null}}function zd(){try{const e=sessionStorage.getItem(Jw);if(!e)return null;const t=JSON.parse(e);return typeof(t==null?void 0:t.id)=="string"&&t.id?t.id:null}catch{return null}}async function w1(e,t){const n=qd(),o=zd(),r=await fetch(`${Ud}${e}`,{...t,headers:{"Content-Type":"application/json",...n?{Authorization:`Bearer ${n}`}:{},...o?{"X-Act-As-Customer":o}:{},...t==null?void 0:t.headers}});if(r.status===401)throw Qe==null||Qe(),new Hi(e);if(!r.ok){const i=await r.text();throw new Error(`API ${e} failed (${r.status}): ${i}`)}return r.json()}function eC(e){const t=new URLSearchParams;for(const[o,r]of Object.entries(e))r!==void 0&&r!==""&&t.set(o,String(r));const n=t.toString();return n?`?${n}`:""}function n5(e){const t="/",n=t.endsWith("/")?t:`${t}/`;return`${window.location.origin}${n}${e.replace(/^\//,"")}`}const y2={listProducts:()=>w1("/catalog/products"),listProductsPaged:(e={})=>w1(`/catalog/products${eC(e)}`),getProduct:e=>w1(`/catalog/products/${encodeURIComponent(e)}`),getProductsByIds:async e=>{const t=[...new Set(e)].filter(Boolean);if(t.length===0)return[];const n=Array.from({length:Math.ceil(t.length/T9)},(r,i)=>t.slice(i*T9,(i+1)*T9));return(await Promise.all(n.map(r=>w1(`/catalog/products?ids=${r.map(encodeURIComponent).join(",")}`)))).flatMap(r=>r.rows)},getCatalogFacets:()=>w1("/catalog/products/facets"),register:e=>w1("/customer/auth/register",{method:"POST",body:JSON.stringify(e)}),requestOtp:e=>w1("/customer/auth/request-otp",{method:"POST",body:JSON.stringify({username:e})}),verifyOtp:(e,t)=>w1("/customer/auth/verify-otp",{method:"POST",body:JSON.stringify({username:e,password:t})}),ssoStart:()=>w1(`/customer/auth/sso/start?redirect_uri=${encodeURIComponent(n5("auth/iam/callback"))}`),ssoCallback:(e,t)=>w1("/customer/auth/sso/callback",{method:"POST",body:JSON.stringify({code:e,state:t})}),ssoLogoutUrl:()=>w1(`/customer/auth/sso/logout-url?return_url=${encodeURIComponent(n5(""))}`),endSharedSession:()=>w1("/customer/auth/logout",{method:"POST",body:"{}"}),getMe:()=>w1("/customer/me"),getAccountingBalance:()=>w1("/customer/me/accounting-balance"),getMyOrders:(e={})=>{var o;const t=new URLSearchParams;e.page&&t.set("page",String(e.page)),e.limit&&t.set("limit",String(e.limit)),e.status&&e.status!=="ALL"&&t.set("status",e.status),(o=e.q)!=null&&o.trim()&&t.set("q",e.q.trim());const n=t.toString();return w1(`/customer/me/orders${n?`?${n}`:""}`)},confirmOrderRevision:e=>w1(`/customer/me/orders/${encodeURIComponent(e)}/revision/confirm`,{method:"POST",body:"{}"}),rejectOrderRevision:e=>w1(`/customer/me/orders/${encodeURIComponent(e)}/revision/reject`,{method:"POST",body:"{}"}),getMyLedgerEntries:()=>w1("/customer/me/ledger-entries"),getMyNotifications:()=>w1("/customer/me/notifications"),getMyUnreadNotificationCount:()=>w1("/customer/me/notifications/unread-count"),markNotificationRead:e=>w1(`/customer/me/notifications/${encodeURIComponent(e)}/read`,{method:"POST",body:"{}"}),markAllNotificationsRead:()=>w1("/customer/me/notifications/read-all",{method:"POST",body:"{}"}),getWageQuotes:e=>w1("/customer/me/wage-quote",{method:"POST",body:JSON.stringify({variantIds:e})}),getFavorites:()=>w1("/customer/me/favorites"),toggleFavorite:e=>w1("/customer/me/favorites/toggle",{method:"POST",body:JSON.stringify({productId:e})}),createOrder:e=>w1("/orders",{method:"POST",body:JSON.stringify(e)}),getLatestGoldPrice:(e=750)=>w1(`/pricing/latest?karatPerMille=${e}`),getHomeSlider:()=>w1("/home/slider"),getExpertIdentity:()=>w1("/expert/whoami"),getExpertCustomers:e=>w1("/expert/my-customers",{method:"POST",body:JSON.stringify({search:e??null})}),getExpertChildOrders:(e=1,t)=>w1("/expert/child-orders",{method:"POST",body:JSON.stringify({page:e,search:t??null})}),uploadDocument:async(e,t)=>{const n=new FormData;n.append("file",e),n.append("purpose",t);const o=qd(),r=zd(),i=await fetch(`${Ud}/customer/me/documents`,{method:"POST",headers:{...o?{Authorization:`Bearer ${o}`}:{},...r?{"X-Act-As-Customer":r}:{}},body:n});if(i.status===401)throw Qe==null||Qe(),new Hi("/customer/me/documents");if(!i.ok)throw new Error(`آپلود فایل ناموفق بود (${i.status})`);return i.json()},completeProfile:e=>w1("/customer/me/complete-profile",{method:"POST",body:JSON.stringify(e)}),getReport:(e=1)=>w1(`/customer/me/report?page=${e}`),getReportDetailList:(e=1)=>w1(`/customer/me/report/detail?page=${e}`),getReportBalances:()=>w1("/customer/me/report/balances"),getReportDocument:e=>w1(`/customer/me/report/${encodeURIComponent(e)}`)},tC=Me("wageQuotes",()=>{const e=De(),t=K({}),n=new Set,o=new Set,r=new Set;let i=0,s=null;V1(()=>{var k;return[e.token,((k=e.actingAs)==null?void 0:k.id)??null]},()=>{t.value={},n.clear(),o.clear(),r.clear(),i=0});async function l(){s=null;const k=[...n].slice(0,200);if(k.forEach(u=>{n.delete(u),o.add(u)}),n.size&&(s=setTimeout(l,0)),!!k.length)try{const u=await y2.getWageQuotes(k),h=new Set(u.map(p=>p.variantId));if(k.forEach(p=>{h.has(p)||r.add(p)}),u.length){const p={...t.value};for(const C of u)p[C.variantId]=C;t.value=p}}catch(u){i=Date.now()+3e4,console.warn("wage quote failed",u)}finally{k.forEach(u=>o.delete(u))}}function d(k){!e.token||Date.now()0||!!e.isPreOrder}function nC(e){if(!e||e.length===0)return null;const t=e.filter(Wd);return(t.length?t:e).reduce((o,r)=>parseFloat(r.defaultWagePercent)n.value.id),r=N(()=>n.value.title),i=N(()=>n.value.variants),s=K(t??nC(t1(i))),l=N(()=>{var w,D,v,j;return((D=(w=s.value)==null?void 0:w.image)==null?void 0:D.url)??((j=(v=n.value.images)==null?void 0:v[0])==null?void 0:j.url)}),d=N(()=>s.value?parseFloat(s.value.rashWeightGrams):0),a=De(),k=tC(),u=N(()=>{const w=s.value;return w?a.isLoggedIn?(k.request(w.id),k.finalPercent(w.id)):parseFloat(w.defaultWagePercent):null}),h=K(null),p=N(()=>{var w;return((w=s.value)==null?void 0:w.qty)??0}),C=N(()=>{var w;return((w=s.value)==null?void 0:w.isPreOrder)??!1}),f=N(()=>p.value>0||C.value),m=N(()=>n.value.productCode??null);return{product:n,image:l,id:o,title:r,productCode:m,variants:i,selectedVariant:s,min_gram:d,wage:u,hasDiscountWage:h,qty:p,isPreOrder:C,is_exist:f,has_warranty:K(!1)}}const rC=600;function iC(e){return e instanceof Error&&!(e instanceof Hi)&&/\(404\)/.test(e.message)}function sC(e,t){const n=K(!1),o=K(!!t),r=K(!1),i=K(t??null);return{loading:n,flag:o,notFound:r,productRef:i,load:async()=>{const l=i.value!==null;l?await new Promise(d=>setTimeout(d,rC)):n.value=!0;try{const d=await y2.getProduct(e);l?JSON.stringify(d)!==JSON.stringify(i.value)&&(i.value=d):i.value=d,o.value=!0}catch(d){iC(d)?l||(i.value=null,r.value=!0):console.log(d),o.value=!0}finally{n.value=!1}}}}const lC=Me("favorites",()=>{const e=K([]),t=De();async function n(){try{e.value=(await y2.getFavorites()).ids}catch(i){console.warn("favorites: load failed",i)}}V1(()=>{var i;return[t.token,((i=t.actingAs)==null?void 0:i.id)??null]},([i])=>{e.value=[],i&&n()},{immediate:!0});async function o(i){const s=e.value.includes(i);e.value=s?e.value.filter(l=>l!==i):[i,...e.value];try{const{favorite:l}=await y2.toggleFavorite(i),d=e.value.includes(i);l&&!d&&(e.value=[i,...e.value]),!l&&d&&(e.value=e.value.filter(a=>a!==i))}catch(l){e.value=s?[i,...e.value.filter(d=>d!==i)]:e.value.filter(d=>d!==i),console.warn("favorites: toggle failed",l)}}function r(i){return e.value.includes(i)}return{ids:e,load:n,toggle:o,isFavorite:r}}),Gd="appCart";function dC(){try{const e=localStorage.getItem(Gd);return e?JSON.parse(e):[]}catch{return[]}}function Nt(e){localStorage.setItem(Gd,JSON.stringify(e))}const Kd=Me("cart",{state:()=>({items:dC()}),actions:{async init(e=!1){if(this.items.length!==0)try{const t=[...new Set(this.items.map(i=>i.pid))],n=await y2.getProductsByIds(t),o=new Map(n.map(i=>[i.id,i])),r=[];for(const i of this.items){const s=o.get(i.pid),l=s==null?void 0:s.variants.find(d=>d.id===i.vid);s&&l&&r.push({...i,product:s})}this.items=r,Nt(this.items)}catch(t){console.log(t)}},addToCart(e){var o,r;const t=(r=(o=e.product)==null?void 0:o.variants)==null?void 0:r.find(i=>i.id===e.vid);if(!t||!((t.qty??0)>0||t.isPreOrder))return!1;const n=this.find_index(e);return n===-1?this.items.push({...e,qty:this.capQty(e.qty,t)}):(this.items[n].product=e.product,this.items[n].qty=this.capQty(e.qty,t)),Nt(this.items),!0},capQty(e,t){const n=Math.max(1,Math.floor(e)||1);if(t.isPreOrder)return n;const o=t.qty??0;return o>0?Math.min(n,o):n},maxQty(e){const t=this.find_index(e);if(t===-1)return null;const n=this.variant(this.items[t]);return!n||n.isPreOrder?null:(n.qty??0)>0?n.qty:null},remove(e){const t=this.find_index(e);t>-1&&this.items.splice(t,1),Nt(this.items)},updateFeild(e,t,n,o){if(!this.isInCart(n))return!1;const r=t??this.find_index(n);if(o==="qty"){const i=this.variant(this.items[r]);e=i?this.capQty(Number(e),i):Math.max(1,Number(e)||1)}return this.items[r][o]=e,Nt(this.items),!0},find_index(e){return this.items.findIndex(t=>t.pid===e.pid&&t.vid===e.vid)},isInCart(e){return this.find_index(e)>-1},variant(e){return e.product.variants.find(t=>t.id===e.vid)},total(){return this.items.reduce((e,t)=>{const n=this.variant(t);return e+(n?parseFloat(n.rashWeightGrams)*t.qty:0)},0).toFixed(2)},totalRial(){return this.items.reduce((e,t)=>{const n=this.variant(t),o=(n==null?void 0:n.rial_pay)!=null?Number(n.rial_pay):0;return e+(Number.isFinite(o)?o*t.qty:0)},0)},clear(){this.items=[],Nt(this.items)}}});function aC(){return localStorage.getItem("appToken")}const kC="data:image/svg+xml,%3csvg%20width='200'%20height='160'%20viewBox='0%200%20200%20160'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3c!--%20Soft%20brand%20wash%20--%3e%3cellipse%20cx='100'%20cy='118'%20rx='78'%20ry='22'%20fill='%2323493c'%20fill-opacity='0.06'/%3e%3ccircle%20cx='100'%20cy='78'%20r='58'%20fill='%2323493c'%20fill-opacity='0.07'/%3e%3ccircle%20cx='148'%20cy='42'%20r='10'%20fill='%237A1B33'%20fill-opacity='0.12'/%3e%3ccircle%20cx='48'%20cy='52'%20r='6'%20fill='%238D6A46'%20fill-opacity='0.28'/%3e%3ccircle%20cx='162'%20cy='88'%20r='4'%20fill='%2323493c'%20fill-opacity='0.18'/%3e%3c!--%20Back%20card%20--%3e%3cg%20transform='translate(58%2028)%20rotate(-8%2042%2052)'%3e%3crect%20x='0'%20y='0'%20width='84'%20height='104'%20rx='14'%20fill='%23FAFAFA'%20stroke='%23ECEDEF'%20stroke-width='1.5'/%3e%3crect%20x='14'%20y='16'%20width='36'%20height='36'%20rx='18'%20fill='%23FBF2F4'/%3e%3ccircle%20cx='32'%20cy='30'%20r='10'%20fill='%23A33C55'%20fill-opacity='0.55'/%3e%3cpath%20d='M22%2048c2.8-6%2016.2-6%2019%200'%20stroke='%23A33C55'%20stroke-opacity='0.45'%20stroke-width='3'%20stroke-linecap='round'/%3e%3crect%20x='14'%20y='64'%20width='40'%20height='7'%20rx='3.5'%20fill='%237A1B33'%20fill-opacity='0.2'/%3e%3crect%20x='14'%20y='78'%20width='28'%20height='5'%20rx='2.5'%20fill='%23ECEDEF'/%3e%3c/g%3e%3c!--%20Front%20card%20--%3e%3cg%20transform='translate(78%2036)%20rotate(6%2042%2052)'%3e%3crect%20x='0'%20y='0'%20width='84'%20height='104'%20rx='14'%20fill='%23FFFFFF'%20stroke='%2323493c'%20stroke-opacity='0.14'%20stroke-width='1.5'/%3e%3crect%20x='0'%20y='0'%20width='84'%20height='104'%20rx='14'%20fill='%2323493c'%20fill-opacity='0.03'/%3e%3crect%20x='14'%20y='16'%20width='36'%20height='36'%20rx='18'%20fill='%23E8EFEC'/%3e%3ccircle%20cx='32'%20cy='30'%20r='10'%20fill='%2323493c'%20fill-opacity='0.55'/%3e%3cpath%20d='M22%2048c2.8-6%2016.2-6%2019%200'%20stroke='%2323493c'%20stroke-opacity='0.4'%20stroke-width='3'%20stroke-linecap='round'/%3e%3crect%20x='14'%20y='64'%20width='44'%20height='7'%20rx='3.5'%20fill='%238D6A46'/%3e%3crect%20x='14'%20y='78'%20width='30'%20height='5'%20rx='2.5'%20fill='%23ECEDEF'/%3e%3c/g%3e%3c!--%20Gold%20seal%20/%20coin%20accent%20--%3e%3cg%20transform='translate(138%2096)'%3e%3ccircle%20cx='18'%20cy='18'%20r='18'%20fill='%238D6A46'/%3e%3ccircle%20cx='18'%20cy='18'%20r='13.5'%20fill='%23F4C57A'%20fill-opacity='0.35'/%3e%3ccircle%20cx='18'%20cy='18'%20r='11'%20fill='none'%20stroke='%23FAFAFA'%20stroke-opacity='0.55'%20stroke-width='1.25'/%3e%3cpath%20d='M18%2010.5v15M12.5%2018h11'%20stroke='%23FAFAFA'%20stroke-width='2'%20stroke-linecap='round'/%3e%3c/g%3e%3c/svg%3e",uC={class:"pd"},hC={class:"pd__gallery"},pC={key:0,class:"pd__counter"},cC={key:1,class:"pd__dots"},wC=["aria-label","onClick"],CC={key:1,class:"pd__stage pd__stage--empty"},gC={class:"pd__sheet"},vC={class:"pd__head"},fC={class:"pd__headMain"},mC={class:"pd__title"},MC={class:"pd__sub"},jC={key:0,class:"pd__code"},xC={key:1,class:"pd__dotSep"},DC={key:2},LC={class:"pd__figures"},HC={class:"pd__figure"},VC={class:"pd__figureValue"},yC={key:0,class:"pd__figure"},bC={class:"pd__figureValue"},ZC={key:0,class:"pd__block pd__block--variants"},_C={class:"pd__blockHead"},BC={key:0,class:"pd__variantsHint"},SC={class:"pd__variants"},EC=["disabled","title","onClick"],OC=["src","alt"],AC={class:"pd__variantText"},PC={class:"pd__variantTitle"},TC={class:"pd__variantWeight"},IC={class:"pd__block"},RC={class:"pd__specs"},$C={class:"pd__spec"},FC={key:0,class:"pd__spec"},NC={key:1,class:"pd__spec"},UC={key:2,class:"pd__spec"},qC={key:3,class:"pd__spec"},zC={key:1,class:"pd__block"},WC={class:"pd__trust"},GC={class:"pd__bar"},KC={key:0,class:"pd__qty"},YC=["disabled"],QC={class:"pd__qtyValue"},JC=["aria-label"],XC=["disabled"],eg={key:0,class:"pd__previewCounter"},tg={key:1,class:"pd__previewThumbs no-scrollbar"},ng=["aria-label","onClick"],og=["src","alt"],rg=["src"],ig={class:"p-8 text-justify"},I9=8,sg=f1({__name:"SingleProduct",props:{id:{},initial:{}},emits:["closeDrawer"],setup(e,{emit:t}){const n=e,o=t,r=ki(),i=lC(),s=Kd(),l=()=>{o("closeDrawer"),r.currentRoute.value.name==="singleProduct"&&r.back()},d=K(!1),a=K(0),k=K(!1),u=sC(n.id,n.initial),h=u.loading,p=u.flag,C={id:n.id,title:"",description:null,variants:[],images:[],category:null,brand:null,collections:[]},f=N(()=>oC(u.productRef.value??C)),m=N(()=>f.value.id.value),x=N(()=>f.value.title.value),w=N(()=>f.value.productCode.value),D=N(()=>f.value.variants.value),v=N({get:()=>f.value.selectedVariant.value,set:B=>f.value.selectedVariant.value=B}),j=N(()=>f.value.min_gram.value),L=N(()=>f.value.wage.value),b=N(()=>f.value.qty.value),O=N(()=>f.value.isPreOrder.value),V=N(()=>f.value.is_exist.value),P=K(!1),G=N(()=>P.value?D.value:D.value.slice(0,I9)),T=B=>Wd(B),o1=B=>(B.qty??0)>0?"موجود":B.isPreOrder?"پیش‌سفارش":"ناموجود",k1=B=>(B.qty??0)>0?"موجود":B.isPreOrder?"پیش":"—",c1=B=>(B.qty??0)>0?"is-in":B.isPreOrder?"is-pre":"is-none",u1=N(()=>{var B;return((B=u.productRef.value)==null?void 0:B.description)??""}),Y=N(()=>u1.value.length>120),r1=N(()=>{var B,y;return((y=(B=u.productRef.value)==null?void 0:B.category)==null?void 0:y.title)??""}),m1=N(()=>{var B,y;return((y=(B=u.productRef.value)==null?void 0:B.brand)==null?void 0:y.title)??""}),y1=N(()=>{var B;return(((B=u.productRef.value)==null?void 0:B.images.length)??0)>0}),H1=N(()=>{var B;return((B=u.productRef.value)==null?void 0:B.images.map(y=>y.url))??[]});V1(H1,B=>{a.value>B.length-1&&(a.value=0)}),V1(v,B=>{var q;const y=(q=B==null?void 0:B.image)==null?void 0:q.url;if(!y)return;const I=H1.value.indexOf(y);I>-1&&(a.value=I)});const _1=K(!1);let $=!1;function l1(){y1.value&&(_1.value=!0,document.documentElement.style.overflow!=="hidden"&&(document.body.style.overflow="hidden",$=!0))}function d1(){_1.value=!1,$&&(document.body.style.overflow=""),$=!1}const n1=N(()=>{const B=L.value;return B==null?"":B%1===0?String(B):B.toFixed(2)}),Z=N(()=>b.value>0?`${b.value} عدد موجود`:O.value?"پیش‌سفارش":"ناموجود"),F=N(()=>b.value>0?"is-in":O.value?"is-pre":"is-out"),R=N(()=>{var B,y;return{vid:((B=v.value)==null?void 0:B.id)??"",note:null,pid:((y=u.productRef.value)==null?void 0:y.id)??n.id,product:u.productRef.value??C,qty:1}}),Q=N(()=>s.isInCart(R.value)),s1=N(()=>s.find_index(R.value)),c=N(()=>s1.value>-1?s.items[s1.value].qty:0),g=N(()=>s.maxQty(R.value)),M=N(()=>g.value===null||c.value{M.value&&s.updateFeild(c.value+1,s1.value,R.value,"qty")},E=()=>{if(c.value<=1){s.remove(R.value);return}s.updateFeild(c.value-1,s1.value,R.value,"qty")},S=()=>{s.addToCart(R.value)&&n9.success("محصول با موفقیت به سبد خرید افزوده شد",{title:"ثبت سفارش"})},z=B=>{B.stopPropagation(),i.toggle(n.id)};return zr(async()=>{await u.load()}),Pe(()=>{$&&(document.body.style.overflow="")}),(B,y)=>{const I=Vn("router-link");return t1(p)&&t1(u).productRef.value?(U(),O1(qw,{key:0,spinning:t1(h),tip:"درحال دریافت اطلاعات"},{default:z1(()=>[A("article",uC,[A("div",hC,[A("button",{type:"button",class:"pd__round pd__round--back","aria-label":"بازگشت",onClick:l},[H(Y1,{icon:"vuesax-linear:arrow-right-1",size:"19"})]),A("button",{type:"button",class:G1(["pd__round pd__round--fav",{"is-on":t1(i).isFavorite(m.value)}]),"aria-label":"علاقه‌مندی",onClick:z},[H(Y1,{icon:t1(i).isFavorite(m.value)?"vuesax-linear:heart-fill":"vuesax-linear:heart",size:"19"},null,8,["icon"])],2),y1.value?(U(),O1(gs,{key:0,index:a.value,"onUpdate:index":y[0]||(y[0]=q=>a.value=q),slides:H1.value,alt:x.value,class:"pd__stage",onTap:l1},{dots:z1(({index:q,go:W})=>[H1.value.length>1?(U(),J("div",pC,p1(q+1)+"/"+p1(H1.value.length),1)):x1("",!0),H1.value.length>1?(U(),J("div",cC,[(U(!0),J(v1,null,ue(H1.value,(e1,i1)=>(U(),J("button",{key:e1,type:"button",class:G1(["pd__dot",{"is-on":i1===q}]),"aria-label":`تصویر ${i1+1}`,onClick:p0(C1=>W(i1),["stop"])},null,10,wC))),128))])):x1("",!0)]),_:1},8,["index","slides","alt"])):(U(),J("div",CC,[H(Y1,{icon:"vuesax-linear:diamonds",size:"46"})]))]),A("div",gC,[A("header",vC,[A("div",fC,[A("h1",mC,p1(x.value),1),A("div",MC,[w.value?(U(),J("span",jC,p1(w.value),1)):x1("",!0),r1.value?(U(),J("span",xC,"·")):x1("",!0),r1.value?(U(),J("span",DC,p1(r1.value),1)):x1("",!0)])]),A("span",{class:G1(["pd__stock",F.value])},p1(Z.value),3)]),A("div",LC,[A("div",HC,[y[9]||(y[9]=A("span",{class:"pd__figureLabel"},"وزن تقریبی",-1)),A("span",VC,[e2(p1(j.value)+" ",1),y[8]||(y[8]=A("span",{class:"pd__figureUnit"},"گرم",-1))])]),L.value!=null?(U(),J("div",yC,[y[11]||(y[11]=A("span",{class:"pd__figureLabel"},"اجرت",-1)),A("span",bC,[e2(p1(n1.value)+" ",1),y[10]||(y[10]=A("span",{class:"pd__figureUnit"},"درصد",-1))])])):x1("",!0)]),D.value&&D.value.length?(U(),J("section",ZC,[A("div",_C,[y[12]||(y[12]=A("h2",{class:"pd__blockTitle"},"انتخاب تنوع",-1)),v.value?(U(),J("span",BC,p1(Number(v.value.rashWeightGrams))+" گرم ",1)):x1("",!0)]),A("div",SC,[(U(!0),J(v1,null,ue(G.value,q=>{var W,e1,i1;return U(),J("button",{key:q.id,type:"button",class:G1(["pd__variant",{"is-on":((W=v.value)==null?void 0:W.id)===q.id,"is-out":!T(q),"has-img":!!((e1=q.image)!=null&&e1.url)}]),disabled:!T(q),title:o1(q),onClick:C1=>v.value=q},[(i1=q.image)!=null&&i1.url?(U(),J("img",{key:0,class:"pd__variantImg",src:q.image.url,alt:q.title},null,8,OC)):x1("",!0),A("span",AC,[A("span",PC,p1(q.title),1),A("span",TC,p1(Number(q.rashWeightGrams))+" گرم",1)]),A("span",{class:G1(["pd__variantStock",c1(q)])},p1(k1(q)),3)],10,EC)}),128))]),D.value.length>I9?(U(),J("button",{key:0,type:"button",class:"pd__variantsMore",onClick:y[1]||(y[1]=q=>P.value=!P.value)},p1(P.value?"نمایش کمتر":`+${D.value.length-I9} تنوع دیگر`),1)):x1("",!0)])):x1("",!0),A("section",IC,[y[18]||(y[18]=A("h2",{class:"pd__blockTitle"},"مشخصات",-1)),A("dl",RC,[A("div",$C,[A("dt",null,[H(Y1,{icon:"vuesax-linear:weight",size:"15"}),y[13]||(y[13]=e2(" وزن",-1))]),A("dd",null,p1(j.value)+" گرم",1)]),L.value!=null?(U(),J("div",FC,[A("dt",null,[H(Y1,{icon:"vuesax-linear:percentage-square",size:"15"}),y[14]||(y[14]=e2(" اجرت",-1))]),A("dd",null,p1(n1.value)+"٪",1)])):x1("",!0),v.value?(U(),J("div",NC,[A("dt",null,[H(Y1,{icon:"vuesax-linear:diamonds",size:"15"}),y[15]||(y[15]=e2(" تنوع",-1))]),A("dd",null,p1(v.value.title),1)])):x1("",!0),r1.value?(U(),J("div",UC,[A("dt",null,[H(Y1,{icon:"vuesax-linear:category",size:"15"}),y[16]||(y[16]=e2(" دسته‌بندی",-1))]),A("dd",null,p1(r1.value),1)])):x1("",!0),m1.value?(U(),J("div",qC,[A("dt",null,[H(Y1,{icon:"vuesax-linear:shop",size:"15"}),y[17]||(y[17]=e2(" برند",-1))]),A("dd",null,p1(m1.value),1)])):x1("",!0)])]),u1.value?(U(),J("section",zC,[y[19]||(y[19]=A("h2",{class:"pd__blockTitle"},"توضیحات",-1)),A("p",{class:G1(["pd__body",{"is-clamped":!k.value}])},p1(u1.value),3),Y.value?(U(),J("button",{key:0,type:"button",class:"pd__more",onClick:y[2]||(y[2]=q=>k.value=!k.value)},p1(k.value?"بستن":"ادامه مطلب"),1)):x1("",!0)])):x1("",!0),A("div",WC,[A("span",null,[H(Y1,{icon:"vuesax-linear:shield-tick",size:"16"}),y[20]||(y[20]=e2(" خرید امن",-1))]),A("span",null,[H(Y1,{icon:"vuesax-linear:verify",size:"16"}),y[21]||(y[21]=e2(" اصالت کالا",-1))])])]),A("div",GC,[Q.value?(U(),J("div",KC,[A("button",{type:"button",class:"pd__qtyBtn","aria-label":"افزایش",disabled:!M.value,onClick:_},[H(Y1,{icon:"vuesax-linear:add",size:"16"})],8,YC),A("span",QC,p1(c.value),1),A("button",{type:"button",class:"pd__qtyBtn","aria-label":c.value===1?"حذف":"کاهش",onClick:E},[H(Y1,{icon:c.value===1?"vuesax-linear:trash":"vuesax-linear:minus-square",size:"16"},null,8,["icon"])],8,JC)])):x1("",!0),Q.value?(U(),O1(I,{key:2,class:"pd__cta pd__cta--ghost",to:{name:"cart"}},{default:z1(()=>[y[22]||(y[22]=e2(" مشاهده سبد خرید ",-1)),H(Y1,{icon:"vuesax-linear:arrow-left-2",size:"17"})]),_:1})):(U(),J("button",{key:1,type:"button",class:"pd__cta",disabled:!V.value,onClick:y[3]||(y[3]=q=>t1(aC)()?S():d.value=!0)},[e2(p1(V.value?"افزودن به سفارش":"ناموجود")+" ",1),V.value?(U(),O1(Y1,{key:0,icon:"vuesax-linear:arrow-left-2",size:"17"})):x1("",!0)],8,XC))])]),(U(),O1(nt,{to:"body"},[H(Yo,{name:"pd-preview"},{default:z1(()=>[_1.value?(U(),J("div",{key:0,class:"pd__preview",onClick:p0(d1,["self"])},[A("button",{type:"button",class:"pd__previewClose","aria-label":"بستن",onClick:d1},[H(Y1,{icon:"vuesax-linear:add",size:"20"})]),H1.value.length>1?(U(),J("div",eg,p1(a.value+1)+" / "+p1(H1.value.length),1)):x1("",!0),H(gs,{index:a.value,"onUpdate:index":y[4]||(y[4]=q=>a.value=q),slides:H1.value,alt:x.value,class:"pd__previewStage",fit:"contain"},null,8,["index","slides","alt"]),H1.value.length>1?(U(),J("div",tg,[(U(!0),J(v1,null,ue(H1.value,(q,W)=>(U(),J("button",{key:q,type:"button",class:G1(["pd__previewThumb",{"is-on":W===a.value}]),"aria-label":`تصویر ${W+1}`,onClick:e1=>a.value=W},[A("img",{src:q,alt:`${x.value} ${W+1}`,draggable:"false"},null,8,og)],10,ng))),128))])):x1("",!0)])):x1("",!0)]),_:1})])),H(Yw,{timeOut:-1,show:d.value,"onUpdate:show":y[7]||(y[7]=q=>d.value=q),closeOnClickOverlay:!0},{img:z1(()=>[A("img",{src:t1(kC),alt:""},null,8,rg)]),title:z1(()=>[A("div",ig," برای دسترسی به تمامی امکانات نرم افزار "+p1(t1(Do).name)+"، ابتدا گزینه ورود/ثبت نام را لمس کنید و در صورت نداشتن حساب کاربری، ثبت نام نمایید. ",1)]),button:z1(()=>[A("div",{class:"text-center font-bold",onClick:y[5]||(y[5]=q=>t1(r).push({name:"login"}))},"ورود/ثبت نام"),A("div",{class:"text-center",onClick:y[6]||(y[6]=q=>d.value=!1)},"بیخیال")]),_:1},8,["show"])]),_:1},8,["spinning"])):x1("",!0)}}}),Yd=xe(sg,[["__scopeId","data-v-6ab94f35"]]),lg=Object.freeze(Object.defineProperty({__proto__:null,default:Yd},Symbol.toStringTag,{value:"Module"})),ro=Rr(null);let io=null;typeof document<"u"&&document.addEventListener("pointerdown",e=>{io=e.target instanceof Element?e.target:null},{capture:!0,passive:!0});function Jg(e,t){const n=(io==null?void 0:io.closest("[data-product-origin]"))??null;ro.value={product:e,origin:t??n}}const dg=["src"],lt=420,Ut=300,o5=300,r5=220,R9="cubic-bezier(0.32, 0.72, 0, 1)",ag="cubic-bezier(0.22, 1, 0.36, 1)",i5=.9,s5="inset(0px 0px 0px 0px round 0px)",kg=f1({__name:"ProductMorph",setup(e){const t=Bk(),n=Rr(null),o=K(null),r=K(!1),i=K(!1),s=K(null),l=K(null),d=K(null),a=K(null);function k($=.82,l1=7,d1=32){const n1=Math.sqrt(1-$*$),Z=[];for(let F=0;F<=d1;F++){const R=F/d1*l1,Q=F===d1?1:1-Math.exp(-$*R)*(Math.cos(n1*R)+$/n1*Math.sin(n1*R));Z.push(String(+Q.toFixed(4)))}return`linear(${Z.join(", ")})`}const h=typeof CSS<"u"&&CSS.supports("animation-timing-function","linear(0, 1)")?k():"cubic-bezier(0.22, 1, 0.36, 1)",p=()=>document.documentElement.classList.contains("motion-reduced")||typeof matchMedia<"u"&&matchMedia("(prefers-reduced-motion: reduce)").matches;function C($,l1,d1){const n1=$.getBoundingClientRect(),Z=getComputedStyle($),F=parseFloat(Z.paddingLeft)||0,R=parseFloat(Z.paddingRight)||0,Q=parseFloat(Z.paddingTop)||0,s1=parseFloat(Z.paddingBottom)||0,c=n1.left+F,g=n1.top+Q,M=n1.width-F-R,_=n1.height-Q-s1;if(Z.objectFit!=="contain"&&Z.objectFit!=="scale-down")return{x:c,y:g,w:M,h:_};let E=Math.min(M/l1,_/d1);return Z.objectFit==="scale-down"&&(E=Math.min(E,1)),{x:c+(M-l1*E)/2,y:g+(_-d1*E)/2,w:l1*E,h:d1*E}}function f($,l1){const d1=document.documentElement.clientWidth,n1=window.innerHeight;return`inset(${$.top}px ${d1-$.right}px ${n1-$.bottom}px ${$.left}px round ${l1})`}function m($){return $.width>0&&$.height>0&&$.bottom>0&&$.top0}function w($,l1){return($.currentSrc||$.src)===(l1.currentSrc||l1.src)}function D(){var n1;const $=(n1=d.value)==null?void 0:n1.querySelector(".pd__stage");if(!$)return null;const l1=$.getBoundingClientRect(),d1=$.querySelectorAll("img");for(const Z of d1){const F=Z.getBoundingClientRect(),R=F.left+F.width/2;if(R>l1.left&&R`translate(${n1.x-l1.x}px, ${n1.y-l1.y}px) scale(${n1.w/l1.w}, ${n1.h/l1.h})`;return[{transform:d1($)},{transform:d1(l1)}]}function O($,l1){$.style.left=`${l1.x}px`,$.style.top=`${l1.y}px`,$.style.width=`${l1.w}px`,$.style.height=`${l1.h}px`}let V=0,P=[],G="idle",T=[];function o1($){$&&($.style.opacity="0",T.push($))}function k1(){T.forEach($=>$.style.opacity=""),T=[]}function c1(){P.forEach($=>$.cancel()),P=[]}async function u1($){P=$,await Promise.all($.map(l1=>l1.finished.catch(()=>{})))}function Y($){document.documentElement.style.overflow=$?"hidden":""}async function r1($){var R;const l1=++V;c1(),k1(),i.value=!1,r.value=!0,G="opening";const d1=v($.origin),n1=(R=$.origin)==null?void 0:R.getBoundingClientRect(),Z=!p()&&!!$.origin&&!!n1&&m(n1);if(o.value=Z&&x(d1)?d1.currentSrc||d1.src:null,n.value=$,await a2(),l1!==V||!d.value||!s.value)return;let F;Z&&n1&&$.origin?F=m1($.origin,n1,d1):p()?F=[d.value.animate({opacity:[0,1]},{duration:160,easing:"ease-out",fill:"both"}),s.value.animate({opacity:[0,1]},{duration:160,easing:"ease-out",fill:"both"})]:F=[d.value.animate({transform:["translateY(6%)","none"],opacity:[0,1]},{duration:o5,easing:ag,fill:"both"}),s.value.animate({opacity:[0,1]},{duration:o5,easing:"ease-out",fill:"both"})],await u1(F),l1===V&&(c1(),k1(),o.value=null,r.value=!1,G="open",Y(!0))}function m1($,l1,d1){const n1=d.value,Z=l.value,F=s.value,{pageBg:R,cardBg:Q,radius:s1}=j($),c=D(),g=a.value;let M=null;if(g&&x(d1)&&c&&w(d1,c)){const E=d1.naturalWidth,S=d1.naturalHeight,z=C(c,E,S);z.w>0&&z.h>0&&(M={from:C(d1,E,S),to:z})}n1.style.transformOrigin=L(l1);const _=[Z.animate({clipPath:[f(l1,s1),s5],backgroundColor:[Q,R]},{duration:lt,easing:h,fill:"both"}),F.animate({opacity:[0,1]},{duration:lt*.6,easing:"ease-out",fill:"both"}),n1.animate({transform:[`scale(${i5})`,"none"]},{duration:lt,easing:h,fill:"both"}),n1.animate({opacity:[0,1]},{duration:lt*.55,delay:lt*.1,easing:"cubic-bezier(0.3, 0, 0.2, 1)",fill:"both"})];return g&&M&&c?(O(g,M.to),o1(c),_.push(g.animate(b(M.from,M.to),{duration:lt,easing:h,fill:"both"}))):o.value=null,_}async function y1(){if(!n.value||G==="closing")return;const $=++V,l1=G==="opening";G="closing",i.value=!0,r.value=!0;let d1;l1&&P.length?(P.forEach(n1=>n1.reverse()),d1=P):(c1(),k1(),d1=await H1()),await u1(d1),$===V&&_1()}async function H1(){var E;const $=d.value,l1=l.value,d1=s.value;if(!$||!l1||!d1)return[];if(p())return[$.animate({opacity:[1,0]},{duration:140,easing:"ease-in",fill:"forwards"}),d1.animate({opacity:[1,0]},{duration:140,easing:"ease-in",fill:"forwards"})];const n1=((E=n.value)==null?void 0:E.origin)??null,Z=n1!=null&&n1.isConnected?n1.getBoundingClientRect():null;if(!n1||!Z||!m(Z))return[$.animate({transform:["none","translateY(6%)"],opacity:[1,0]},{duration:r5,easing:"cubic-bezier(0.4, 0, 1, 1)",fill:"forwards"}),d1.animate({opacity:[1,0]},{duration:r5,easing:"ease-in",fill:"forwards"})];const{pageBg:F,cardBg:R,radius:Q}=j(n1),s1=v(n1),c=D();let g=null;if(x(s1)&&c&&w(s1,c)&&m(c.getBoundingClientRect())){const S=s1.naturalWidth,z=s1.naturalHeight,B=C(c,S,z);B.w>0&&B.h>0&&(g={from:B,to:C(s1,S,z)})}g&&s1&&(o.value=s1.currentSrc||s1.src,await a2()),$.style.transformOrigin=L(Z);const M=[l1.animate([{clipPath:s5,backgroundColor:F,opacity:1},{opacity:1,offset:.7},{clipPath:f(Z,Q),backgroundColor:R,opacity:0}],{duration:Ut,easing:R9,fill:"forwards"}),$.animate({transform:["none",`scale(${i5})`]},{duration:Ut,easing:R9,fill:"forwards"}),$.animate({opacity:[1,0]},{duration:Ut*.45,easing:"ease-in",fill:"forwards"}),d1.animate({opacity:[1,0]},{duration:Ut,easing:"ease-out",fill:"forwards"})],_=a.value;return _&&g&&c&&(O(_,g.from),o1(c),M.push(_.animate(b(g.to,g.from).reverse(),{duration:Ut,easing:R9,fill:"forwards"}))),M}function _1(){c1(),k1(),o.value=null,r.value=!1,i.value=!1,G="idle",n.value=null,Y(!1),ro.value&&(ro.value=null)}return V1(ro,$=>{$?r1($):n.value&&y1()}),V1(()=>t.fullPath,()=>{n.value&&(++V,_1())}),Pe(()=>{c1(),k1(),Y(!1)}),($,l1)=>(U(),O1(nt,{to:"body"},[n.value?(U(),J("div",{key:0,class:G1(["pm",{"is-moving":r.value,"is-closing":i.value}]),dir:"rtl"},[A("div",{ref_key:"veil",ref:s,class:"pm__veil","aria-hidden":"true"},null,512),A("div",{ref_key:"shape",ref:l,class:"pm__shape","aria-hidden":"true"},null,512),A("div",{ref_key:"sheet",ref:d,class:"pm__sheet no-scrollbar"},[(U(),O1(Yd,{id:n.value.product.id,key:n.value.product.id,initial:n.value.product,onCloseDrawer:y1},null,8,["id","initial"]))],512),o.value?(U(),J("img",{key:0,ref_key:"ghost",ref:a,class:"pm__ghost",src:o.value,alt:"","aria-hidden":"true",decoding:"sync"},null,8,dg)):x1("",!0)],2)):x1("",!0)]))}}),ug=xe(kg,[["__scopeId","data-v-c77d4a00"]]),hg={key:0,class:"aab",role:"status"},pg={class:"aab__text"},cg=["disabled"],wg=f1({__name:"ActingAsBar",setup(e){const t=De(),n=Kd(),o=ki(),r=K(!1);async function i(){r.value=!0;try{n.clear(),t.setActingAs(null),await o.push({name:"home"}),n9.info("به حساب خودتان بازگشتید")}finally{r.value=!1}}return(s,l)=>t1(t).actingAs?(U(),J("div",hg,[l[1]||(l[1]=A("span",{class:"aab__dot","aria-hidden":"true"},null,-1)),A("span",pg,[l[0]||(l[0]=e2(" در حال مشاهده به‌عنوان ",-1)),A("strong",null,p1(t1(t).actingAs.name||"مشتری"),1)]),A("button",{type:"button",class:"aab__exit",disabled:r.value,onClick:i},p1(r.value?"…":"خروج"),9,cg)])):x1("",!0)}}),Cg=xe(wg,[["__scopeId","data-v-469fbf01"]]),gg=f1({__name:"App",setup(e){const t=ki(),n=De();Ak(),Bl().start(t);const o=N(()=>t.currentRoute.value.meta&&t.currentRoute.value.meta.layout==="FullPage"?Mu:vu);return(r,i)=>{const s=Vn("router-view");return U(),J("div",{class:G1({"is-actingAs":!!t1(n).actingAs})},[H(Cg),(U(),O1(G9(o.value),{class:"relative"},{default:z1(()=>[H(s,null,{default:z1(({Component:l,route:d})=>[(U(),O1(J5,null,[(U(),O1(_a,null,{default:z1(()=>[(U(),O1(G9(l),{key:d.name}))]),_:2},1024))],1024))]),_:1})]),_:1})),H(Bu),H(rh),H(ug),H(gh)],2)}}}),vg=Me("transition",{state:()=>({transitionFlag:!0,transitionEnded:!0,headerHeight:0}),actions:{setTransitionFlag(e){this.transitionFlag=e},setTransitionEnded(e){this.transitionEnded=e},setHeaderHeight(e){this.headerHeight=e}}}),dt={catalog:"catalog",goldPrice:"goldPrice",homeSlider:"homeSlider",profile:"me:profile",orders:"me:orders",balance:"me:balance",ledger:"me:ledger"},fg="me:",mg=Me("queryCache",()=>{const e=new Map,t=De();function n(l,d){const a=e.get(l);if(a!=null&&a.inflight)return a.inflight;const k=d().then(u=>{var h;return((h=e.get(l))==null?void 0:h.inflight)===k&&e.set(l,{data:u,has:!0}),u}).finally(()=>{const u=e.get(l);(u==null?void 0:u.inflight)===k&&(u.inflight=void 0)});return e.set(l,{...a??{has:!1},inflight:k}),k}async function o(l,d,a={}){const k=e.get(l);return!a.force&&(k!=null&&k.has)?k.data:n(l,d)}function r(l){const d=e.get(l);return d!=null&&d.has?d.data:void 0}function i(...l){for(const d of l)e.delete(d)}function s(){for(const l of[...e.keys()])l.startsWith(fg)&&e.delete(l)}return V1(()=>{var l;return[t.token,((l=t.actingAs)==null?void 0:l.id)??null]},()=>s()),{fetch:o,peek:r,invalidate:i,clearUserScoped:s}});function Mg(){const e=mg();return{me:t=>e.fetch(dt.profile,y2.getMe,t),myOrders:t=>e.fetch(dt.orders,y2.getMyOrders,t),accountingBalance:t=>e.fetch(dt.balance,y2.getAccountingBalance,t),myLedgerEntries:t=>e.fetch(dt.ledger,y2.getMyLedgerEntries,t),goldPrice:t=>e.fetch(dt.goldPrice,()=>y2.getLatestGoldPrice(),t),homeSlider:t=>e.fetch(dt.homeSlider,y2.getHomeSlider,t),peek:e.peek,invalidate:e.invalidate}}const xn=_k({history:ak(),async scrollBehavior(e,t,n){return await gu(),n||{top:0}},routes:[{path:"/home",name:"home",component:()=>P1(()=>import("./HomeView-XsVegvBL.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]))},{path:"/product/:id",name:"singleProduct",component:()=>P1(()=>Promise.resolve().then(()=>lg),void 0),props:!0,meta:{layout:"FullPage"}},{path:"/newest",name:"newestProduct",component:()=>P1(()=>import("./NewestView-BFhp5Jry.js"),__vite__mapDeps([15,16,17,8,9,6,7,13,18])),meta:{layout:"FullPage"}},{path:"/cart",name:"cart",component:()=>P1(()=>import("./CartView-CIolGKJ4.js"),__vite__mapDeps([19,1,2,16,17,4,12,13,20,21,22,23,24,25,26]))},{path:"/login",name:"login",component:()=>P1(()=>import("./LoginRegisterView-DrlMRoCO.js"),__vite__mapDeps([27,16,17,24,25,22,23,28])),meta:{layout:"FullPage"}},{path:"/auth/iam/callback",name:"iamCallback",component:()=>P1(()=>import("./IamCallback-Cd0tQpyP.js"),[]),meta:{layout:"FullPage"}},{path:"/user",name:"userPage::hasSubRoute",component:()=>P1(()=>import("./DashboardView-DTn8YzNG.js"),__vite__mapDeps([29,1,2,8,9,3,4,5,12,30]))},{path:"/orders",name:"ordersList",component:()=>P1(()=>import("./OrdersView-DfF-Dg7U.js"),__vite__mapDeps([31,1,2,16,17,32,33,34,4,20,21,22,23,35])),meta:{requiresAuth:!0}},{path:"/transactions",name:"transactionsList",component:()=>P1(()=>import("./TransactionsView-5Ti1Tz-b.js"),__vite__mapDeps([36,16,17,8,9,4,20,21,22,23,37])),meta:{requiresAuth:!0}},{path:"/profile",name:"profileData",component:()=>P1(()=>import("./ProfileView-CpqOGnPs.js"),__vite__mapDeps([38,16,17,8,9,39])),meta:{requiresAuth:!0}},{path:"/favorites",name:"favoritesList",component:()=>P1(()=>import("./FavoritesView-o6zfIXuM.js"),__vite__mapDeps([40,16,17,8,9,6,7,41])),meta:{requiresAuth:!0}},{path:"/settings/appearance",name:"appearanceSettings",component:()=>P1(()=>import("./AppearanceView-DFGqsdWs.js"),__vite__mapDeps([42,16,17,43]))},{path:"/ChildOrder",name:"ChildOrder",component:()=>P1(()=>import("./ChildOrdersView-DaRQcTIW.js"),__vite__mapDeps([44,1,2,16,17,32,33,4,20,21,22,23,45])),meta:{title:"سفارش مشتریان",layout:"FullPage",requiresAuth:!0,requiresExpert:!0}},{path:"/customerChoice",name:"customerChoice",component:()=>P1(()=>import("./CustomerChoiceView-t2STlBIR.js"),__vite__mapDeps([46,1,2,16,17,32,33,20,21,22,23,47])),meta:{title:"انتخاب مشتری",layout:"FullPage",requiresAuth:!0,requiresExpert:!0}},{path:"/complete_profile",name:"completeProfile",component:()=>P1(()=>import("./CompleteProfileView-Bz-DU0Ra.js"),__vite__mapDeps([48,16,17,49])),meta:{title:"تکمیل پروفایل",layout:"FullPage",requiresAuth:!0,requiresIncompleteProfile:!0}},{path:"/report",name:"report",component:()=>P1(()=>import("./ReportView-dGzBNYXh.js"),__vite__mapDeps([50,1,2,16,17,4,20,21,22,23,51])),meta:{title:"گزارش",layout:"FullPage",requiresAuth:!0}},{path:"/report/detail",name:"reportDetail",component:()=>P1(()=>import("./ReportView-dGzBNYXh.js"),__vite__mapDeps([50,1,2,16,17,4,20,21,22,23,51])),meta:{title:"جزئیات حساب",layout:"FullPage",requiresAuth:!0}},{path:"/notifications",name:"notifications",component:()=>P1(()=>import("./NotificationsView-BBfjG7fu.js"),__vite__mapDeps([52,1,2,16,17,12,11,34,4,53])),meta:{title:"پیام‌ها"}},{path:"/search",name:"search",component:()=>P1(()=>import("./SearchView-CX3YDK4c.js"),__vite__mapDeps([54,1,2,16,17,32,33,21,23,25,6,7,10,13,55]))},{path:"/collection/:id?",name:"collection",component:()=>P1(()=>import("./CollectionView-B48MQuIc.js"),__vite__mapDeps([56,16,17,8,9,6,7,13,57]))},{path:"/",redirect:{name:"home"}},{path:"/:pathMatch(.*)*",redirect:{name:"home"}}]});let br=!1;function jg(){return sessionStorage.getItem("gb_iam_sso_skip")==="1"?(sessionStorage.removeItem("gb_iam_sso_skip"),br=!0,!0):br}xn.beforeEach(async e=>{const t=De(),n=ui();if(!t.isLoggedIn&&e.name!=="iamCallback"&&!jg()){br=!0,sessionStorage.removeItem("gb_iam_sso_checked");try{const o=await y2.ssoStart();if(o.enabled&&o.authorize_url)return e.fullPath.startsWith("/")&&!e.fullPath.startsWith("//")&&sessionStorage.setItem("gb_iam_return",e.fullPath),window.location.assign(o.authorize_url),!1}catch{}}if(e.name==="login"&&t.isLoggedIn)return{name:"home"};if(e.meta.requiresAuth&&!t.isLoggedIn)return n9.info("ابتدا وارد شوید"),{name:"login",query:{redirect:e.fullPath}};if(e.meta.requiresExpert&&!t.isSalesExpert)return{name:"userPage::hasSubRoute"};if(e.meta.requiresIncompleteProfile&&t.isLoggedIn)try{const o=await Mg().me();if(o.verificationStep==="VERIFIED"||o.verificationStep==="STEP_TWO_SUBMITTED")return{name:"home"}}catch{}e.name==="singleProduct"?n.setPgaTransition("slideDown"):n.setPgaTransition(void 0)});xn.afterEach(e=>{const t=ui(),n=vg();t.noteFirstNavigation(),n.setTransitionFlag(!1),n.setTransitionEnded(!1),setTimeout(()=>{n.setTransitionFlag(!0)},100);const o=t.visibleNavBarRoutes.find(r=>e.name===r.name);o?(t.setActiveLink(o.index),t.setNavVisibility(!0)):t.setNavVisibility(!1)});const Qd="hedena-gold:appearance",l5=()=>typeof matchMedia<"u"?matchMedia("(prefers-color-scheme: dark)"):null,xg=()=>typeof matchMedia<"u"?matchMedia("(prefers-reduced-motion: reduce)"):null;function Dg(){var t;const e={theme:"light",reduceMotion:!!((t=xg())!=null&&t.matches)};try{const n=localStorage.getItem(Qd);if(!n)return e;const o=JSON.parse(n);return{theme:o.theme==="light"||o.theme==="dark"||o.theme==="system"?o.theme:e.theme,reduceMotion:typeof o.reduceMotion=="boolean"?o.reduceMotion:e.reduceMotion}}catch{return e}}function Lg(e){try{localStorage.setItem(Qd,JSON.stringify(e))}catch{}}const Hg="#15171A";let d5=null;const Vg=Me("appearance",{state:()=>{var e;return{...Dg(),systemDark:!!((e=l5())!=null&&e.matches)}},getters:{resolvedTheme:e=>e.theme==="system"?e.systemDark?"dark":"light":e.theme,isReducedMotion:e=>e.reduceMotion},actions:{init(){var t;const e=l5();(t=e==null?void 0:e.addEventListener)==null||t.call(e,"change",n=>{this.systemDark=n.matches,this.theme==="system"&&this.apply()}),this.apply(!1)},setTheme(e){e!==this.theme&&(this.theme=e,this.save(),this.apply())},setReduceMotion(e){e!==this.reduceMotion&&(this.reduceMotion=e,this.save(),this.apply(!1))},save(){Lg({theme:this.theme,reduceMotion:this.reduceMotion})},apply(e=!0){const t=document.documentElement,n=this.resolvedTheme==="dark";e&&t.classList.add("theme-switching"),t.classList.toggle("theme-dark",n),t.classList.toggle("van-theme-dark",n),t.classList.toggle("motion-reduced",this.reduceMotion);const o=document.querySelector('meta[name="theme-color"]');o&&(d5??(d5=o.getAttribute("data-light")??o.getAttribute("content")),o.setAttribute("content",n?Hg:d5??"")),e&&requestAnimationFrame(()=>requestAnimationFrame(()=>t.classList.remove("theme-switching")))}}}),yg={class:"px-[16px] max-w-screen-md m-auto relative no-scrollbar"},bg=f1({__name:"Container",props:{padding:{}},setup(e){return(t,n)=>(U(),J("main",yg,[wt(t.$slots,"default")]))}}),Zg="/assets/brand-logo-c8-B3-lR.png";q4.use("fa-IR",L6);const Bn=O7(gg);Bn.use(T7());Vg().init();Bn.use(xn);Xw(()=>{De().logout(),xn.currentRoute.value.name!=="login"&&xn.replace({name:"login"})});Bn.use(e8,{error:Zg});Bn.component("container",bg);Bn.mount("#app");export{a2 as $,Me as A,Do as B,Zg as C,y2 as D,Kd as E,v1 as F,De as G,Mg as H,Y1 as I,z1 as J,dt as K,jl as L,Vn as M,ki as N,O1 as O,$t as P,vg as Q,Tg as R,wt as S,qw as T,I1 as U,zr as V,e2 as W,Yw as X,kC as Y,mg as Z,xe as _,qo as a,qc as a$,Sg as a0,Bk as a1,ti as a2,n9 as a3,Jh as a4,Qh as a5,Wr as a6,Hn as a7,Rg as a8,et as a9,yr as aA,Al as aB,Ho as aC,Yg as aD,Ug as aE,R2 as aF,zg as aG,ms as aH,yo as aI,Op as aJ,Z4 as aK,gi as aL,Ci as aM,vi as aN,_p as aO,Il as aP,g1 as aQ,Tw as aR,Qg as aS,Sp as aT,pi as aU,nt as aV,tl as aW,Rl as aX,qg as aY,Di as aZ,Kg as a_,h1 as aa,Z2 as ab,Oh as ac,Ih as ad,Ol as ae,Ph as af,u2 as ag,W1 as ah,N1 as ai,r9 as aj,mn as ak,wi as al,Yo as am,Nr as an,gw as ao,Jn as ap,ep as aq,ve as ar,yn as as,Hw as at,Vo as au,t5 as av,Id as aw,ke as ax,ip as ay,_n as az,qr as b,Gg as b0,_g as b1,$g as b2,op as b3,Fg as b4,Ig as b5,rp as b6,Ng as b7,Wg as b8,m6 as b9,$h as ba,Pg as bb,k0 as bc,S7 as bd,X2 as be,j2 as bf,Og as bg,$4 as bh,e6 as bi,ii as bj,Eg as bk,Ag as bl,k6 as bm,je as bn,ui as bo,Pe as c,f1 as d,U as e,J as f,A as g,x1 as h,G1 as i,N as j,K as k,lC as l,oC as m,ce as n,F2 as o,Bg as p,t1 as q,ue as r,Rr as s,p1 as t,Vg as u,Fr as v,V1 as w,H as x,p0 as y,Jg as z}; + `),"".concat(vw,"-dynamic-theme")):gw(!1,"ConfigProvider","SSR do not support dynamic theme with css variables.")}var $d=Symbol("GlobalFormContextKey"),mw=function(t){ke($d,t)},Jg=function(){return N1($d,{validateMessages:N(function(){})})},Mw=function(){return{getTargetContainer:{type:Function},getPopupContainer:{type:Function},prefixCls:String,getPrefixCls:{type:Function},renderEmpty:{type:Function},transformCellText:{type:Function},csp:{type:Object,default:void 0},input:{type:Object},autoInsertSpaceInButton:{type:Boolean,default:void 0},locale:{type:Object,default:void 0},pageHeader:{type:Object},componentSize:{type:String},direction:{type:String},space:{type:Object},virtual:{type:Boolean,default:void 0},dropdownMatchSelectWidth:{type:[Number,Boolean],default:!0},form:{type:Object,default:void 0},notUpdateGlobalConfig:Boolean}},jw="ant";function vt(){return C2.prefixCls||jw}var Vr=I1({}),Fd=I1({}),C2=I1({});Nr(function(){et(C2,Vr,Fd),C2.prefixCls=vt(),C2.getPrefixCls=function(e,t){return t||(e?"".concat(C2.prefixCls,"-").concat(e):C2.prefixCls)},C2.getRootPrefixCls=function(e,t){return e||(C2.prefixCls?C2.prefixCls:t&&t.includes("-")?t.replace(/^(.*)-[^-]*$/,"$1"):vt())}});var A9,xw=function(t){A9&&A9(),A9=Nr(function(){et(Fd,I1(t)),et(C2,I1(t))}),t.theme&&fw(vt(),t.theme)},Dw=function(){return{getPrefixCls:function(n,o){return o||(n?"".concat(vt(),"-").concat(n):vt())},getRootPrefixCls:function(n,o){return n||(C2.prefixCls?C2.prefixCls:o&&o.includes("-")?o.replace(/^(.*)-[^-]*$/,"$1"):vt())}}},dn=f1({compatConfig:{MODE:3},name:"AConfigProvider",inheritAttrs:!1,props:Mw(),setup:function(t,n){var o=n.slots,r=function(u,h){var p=t.prefixCls,C=p===void 0?"ant":p;return u?"".concat(C,"-").concat(u):C},i=function(u){var h=t.renderEmpty||o.renderEmpty||td;return h(u)},s=function(u,h){var p=t.prefixCls;if(h)return h;var C=p||r("");return u?"".concat(C,"-").concat(u):C},l=I1(h1(h1({},t),{},{getPrefixCls:s,renderEmpty:i}));Object.keys(t).forEach(function(k){V1(function(){return t[k]},function(){l[k]=t[k]})}),t.notUpdateGlobalConfig||(et(Vr,l),V1(l,function(){et(Vr,l)}));var d=N(function(){var k={};if(t.locale){var u,h;k=((u=t.locale.Form)===null||u===void 0?void 0:u.defaultValidateMessages)||((h=yo.Form)===null||h===void 0?void 0:h.defaultValidateMessages)||{}}return t.form&&t.form.validateMessages&&(k=h1(h1({},k),t.form.validateMessages)),k});mw({validateMessages:d}),ke("configProvider",l);var a=function(u){var h;return H(Ep,{locale:t.locale||u,ANT_MARK__:vr},{default:function(){return[(h=o.default)===null||h===void 0?void 0:h.call(o)]}})};return Nr(function(){t.direction&&(_o.config({rtl:t.direction==="rtl"}),jn.config({rtl:t.direction==="rtl"}))}),function(){return H(Fl,{children:function(u,h,p){return a(p)}},null)}}}),Nd=I1({getPrefixCls:function(t,n){return n||(t?"ant-".concat(t):"ant")},renderEmpty:td,direction:"ltr"});dn.config=xw;dn.install=function(e){e.component(dn.name,dn)};const r9=function(e,t){var n=N1("configProvider",Nd),o=N(function(){return n.getPrefixCls(e,t.prefixCls)}),r=N(function(){var w;return(w=t.direction)!==null&&w!==void 0?w:n.direction}),i=N(function(){return n.getPrefixCls()}),s=N(function(){return n.autoInsertSpaceInButton}),l=N(function(){return n.renderEmpty}),d=N(function(){return n.space}),a=N(function(){return n.pageHeader}),k=N(function(){return n.form}),u=N(function(){return t.getTargetContainer||n.getTargetContainer}),h=N(function(){return t.getPopupContainer||n.getPopupContainer}),p=N(function(){var w;return(w=t.dropdownMatchSelectWidth)!==null&&w!==void 0?w:n.dropdownMatchSelectWidth}),C=N(function(){return(t.virtual===void 0?n.virtual!==!1:t.virtual!==!1)&&p.value!==!1}),f=N(function(){return t.size||n.componentSize}),m=N(function(){var w;return t.autocomplete||((w=n.input)===null||w===void 0?void 0:w.autocomplete)}),x=N(function(){return n.csp});return{configProvider:n,prefixCls:o,direction:r,size:f,getTargetContainer:u,getPopupContainer:h,space:d,pageHeader:a,form:k,autoInsertSpaceInButton:s,renderEmpty:l,virtual:C,dropdownMatchSelectWidth:p,rootPrefixCls:i,getPrefixCls:n.getPrefixCls,autocomplete:m,csp:x}};function yr(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}var Lw="[object Symbol]";function Hw(e){return typeof e=="symbol"||Qh(e)&&Jh(e)==Lw}var Vw=/\s/;function yw(e){for(var t=e.length;t--&&Vw.test(e.charAt(t)););return t}var bw=/^\s+/;function Zw(e){return e&&e.slice(0,yw(e)+1).replace(bw,"")}var e5=NaN,_w=/^[-+]0x[0-9a-f]+$/i,Bw=/^0b[01]+$/i,Sw=/^0o[0-7]+$/i,Ew=parseInt;function t5(e){if(typeof e=="number")return e;if(Hw(e))return e5;if(yr(e)){var t=typeof e.valueOf=="function"?e.valueOf():e;e=yr(t)?t+"":t}if(typeof e!="string")return e===0?e:+e;e=Zw(e);var n=Bw.test(e);return n||Sw.test(e)?Ew(e.slice(2),n?2:8):_w.test(e)?e5:+e}var P9=function(){return Al.Date.now()},Ow="Expected a function",Aw=Math.max,Pw=Math.min;function Tw(e,t,n){var o,r,i,s,l,d,a=0,k=!1,u=!1,h=!0;if(typeof e!="function")throw new TypeError(Ow);t=t5(t)||0,yr(n)&&(k=!!n.leading,u="maxWait"in n,i=u?Aw(t5(n.maxWait)||0,t):i,h="trailing"in n?!!n.trailing:h);function p(L){var b=o,O=r;return o=r=void 0,a=L,s=e.apply(O,b),s}function C(L){return a=L,l=setTimeout(x,t),k?p(L):s}function f(L){var b=L-d,O=L-a,V=t-b;return u?Pw(V,i-O):V}function m(L){var b=L-d,O=L-a;return d===void 0||b>=t||b<0||u&&O>=i}function x(){var L=P9();if(m(L))return w(L);l=setTimeout(x,f(L))}function w(L){return l=void 0,h&&o?p(L):(o=r=void 0,s)}function D(){l!==void 0&&clearTimeout(l),a=0,o=d=r=l=void 0}function v(){return l===void 0?s:w(P9())}function j(){var L=P9(),b=m(L);if(o=arguments,r=this,d=L,b){if(l===void 0)return C(d);if(u)return clearTimeout(l),l=setTimeout(x,t),p(d)}return l===void 0&&(l=setTimeout(x,t)),s}return j.cancel=D,j.flush=v,j}var Iw=["class","style"],Rw=function(){return{prefixCls:String,spinning:{type:Boolean,default:void 0},size:String,wrapperClassName:String,tip:mn.any,delay:Number,indicator:mn.any}},oo=null;function $w(e,t){return!!e&&!!t&&!isNaN(Number(t))}function Fw(e){var t=e.indicator;oo=typeof t=="function"?t:function(){return H(t,null,null)}}const an=f1({compatConfig:{MODE:3},name:"ASpin",inheritAttrs:!1,props:ep(Rw(),{size:"default",spinning:!0,wrapperClassName:""}),setup:function(){return{originalUpdateSpinning:null,configProvider:N1("configProvider",Nd)}},data:function(){var t=this.spinning,n=this.delay,o=$w(t,n);return{sSpinning:t&&!o}},created:function(){this.originalUpdateSpinning=this.updateSpinning,this.debouncifyUpdateSpinning(this.$props)},mounted:function(){this.updateSpinning()},updated:function(){var t=this;a2(function(){t.debouncifyUpdateSpinning(),t.updateSpinning()})},beforeUnmount:function(){this.cancelExistingSpin()},methods:{debouncifyUpdateSpinning:function(t){var n=t||this.$props,o=n.delay;o&&(this.cancelExistingSpin(),this.updateSpinning=Tw(this.originalUpdateSpinning,o))},updateSpinning:function(){var t=this.spinning,n=this.sSpinning;n!==t&&(this.sSpinning=t)},cancelExistingSpin:function(){var t=this.updateSpinning;t&&t.cancel&&t.cancel()},renderIndicator:function(t){var n="".concat(t,"-dot"),o=rp(this,"indicator");return o===null?null:(Array.isArray(o)&&(o=o.length===1?o[0]:o),k2(o)?R2(o,{class:n}):oo&&k2(oo())?R2(oo(),{class:n}):H("span",{class:"".concat(n," ").concat(t,"-dot-spin")},[H("i",{class:"".concat(t,"-dot-item")},null),H("i",{class:"".concat(t,"-dot-item")},null),H("i",{class:"".concat(t,"-dot-item")},null),H("i",{class:"".concat(t,"-dot-item")},null)]))}},render:function(){var t,n,o,r=this.$props,i=r.size,s=r.prefixCls,l=r.tip,d=l===void 0?(t=(n=this.$slots).tip)===null||t===void 0?void 0:t.call(n):l,a=r.wrapperClassName,k=this.$attrs,u=k.class,h=k.style,p=pi(k,Iw),C=this.configProvider,f=C.getPrefixCls,m=C.direction,x=f("spin",s),w=this.sSpinning,D=(o={},W1(o,x,!0),W1(o,"".concat(x,"-sm"),i==="small"),W1(o,"".concat(x,"-lg"),i==="large"),W1(o,"".concat(x,"-spinning"),w),W1(o,"".concat(x,"-show-text"),!!d),W1(o,"".concat(x,"-rtl"),m==="rtl"),W1(o,u,!!u),o),v=H("div",h1(h1({},p),{},{style:h,class:D}),[this.renderIndicator(x),d?H("div",{class:"".concat(x,"-text")},[d]):null]),j=op(this);if(j&&j.length){var L,b=(L={},W1(L,"".concat(x,"-container"),!0),W1(L,"".concat(x,"-blur"),w),L);return H("div",{class:["".concat(x,"-nested-loading"),a]},[w&&H("div",{key:"loading"},[v]),H("div",{class:b,key:"container"},[j])])}return v}});an.setDefaultIndicator=Fw;an.install=function(e){return e.component(an.name,an),e};const Nw=["alt"],Uw={key:1,class:"loading keep-motion"},qw=f1({__name:"Spinner",props:{tip:{},size:{default:"large"},cls:{},delay:{},spinning:{type:Boolean},indicator:{type:Boolean},fixed:{type:Boolean,default:!0}},setup(e){return(t,n)=>(U(),A1(t1(an),{spinning:e.spinning,tip:e.tip,size:e.size,delay:e.delay,class:G1(e.fixed?"!max-h-screen !fixed":"")},{indicator:z1(()=>[e.indicator?(U(),Q("div",Uw,[...n[0]||(n[0]=[A("div",{class:"effect-1 effects"},null,-1),A("div",{class:"effect-2 effects"},null,-1),A("div",{class:"effect-3 effects"},null,-1)])])):(U(),Q("img",{key:0,src:jl,alt:t1(Do).nameEn,class:"spinner-brand",width:"48",height:"48"},null,8,Nw))]),default:z1(()=>[A("div",{class:G1(e.cls)},[wt(t.$slots,"default")],2)]),_:3},8,["spinning","tip","size","delay","class"]))}}),zw={class:"hg-dialog__inner"},Ww={class:"hg-dialog__media"},Gw={class:"hg-dialog__body"},Kw={class:"hg-dialog__actions hg-dialog__actions--pair"},Yw=f1({__name:"DialogVant",props:{timeOut:{},text1:{},text2:{},text3:{}},setup(e){return(t,n)=>(U(),A1(t1(tl),{class:"hg-dialog","show-confirm-button":!1,"show-cancel-button":!1},{default:z1(()=>[A("div",zw,[A("div",Ww,[wt(t.$slots,"img",{},()=>[e2(p1(e.text2),1)])]),A("div",Gw,[wt(t.$slots,"title",{},()=>[e2(p1(e.text1),1)])]),A("div",Kw,[wt(t.$slots,"button",{},()=>[e2(p1(e.text3),1)])])])]),_:3}))}}),Ud="/api",Jw="gold-bank:token",Qw="gold-bank:actingAs",T9=100;let Je=null;function Xw(e){Je=e}class Hi extends Error{constructor(t){super(`API ${t} rejected the session (401)`),this.name="UnauthorizedError"}}function qd(){try{return localStorage.getItem(Jw)}catch{return null}}function zd(){try{const e=sessionStorage.getItem(Qw);if(!e)return null;const t=JSON.parse(e);return typeof(t==null?void 0:t.id)=="string"&&t.id?t.id:null}catch{return null}}async function c1(e,t){const n=qd(),o=zd(),r=await fetch(`${Ud}${e}`,{...t,headers:{"Content-Type":"application/json",...n?{Authorization:`Bearer ${n}`}:{},...o?{"X-Act-As-Customer":o}:{},...t==null?void 0:t.headers}});if(r.status===401)throw Je==null||Je(),new Hi(e);if(!r.ok){const i=await r.text();throw new Error(`API ${e} failed (${r.status}): ${i}`)}return r.json()}function eC(e){const t=new URLSearchParams;for(const[o,r]of Object.entries(e))r!==void 0&&r!==""&&t.set(o,String(r));const n=t.toString();return n?`?${n}`:""}function n5(e){const t="/",n=t.endsWith("/")?t:`${t}/`;return`${window.location.origin}${n}${e.replace(/^\//,"")}`}const y2={listProducts:()=>c1("/catalog/products"),listProductsPaged:(e={})=>c1(`/catalog/products${eC(e)}`),getProduct:e=>c1(`/catalog/products/${encodeURIComponent(e)}`),getProductsByIds:async e=>{const t=[...new Set(e)].filter(Boolean);if(t.length===0)return[];const n=Array.from({length:Math.ceil(t.length/T9)},(r,i)=>t.slice(i*T9,(i+1)*T9));return(await Promise.all(n.map(r=>c1(`/catalog/products?ids=${r.map(encodeURIComponent).join(",")}`)))).flatMap(r=>r.rows)},getCatalogFacets:()=>c1("/catalog/products/facets"),register:e=>c1("/customer/auth/register",{method:"POST",body:JSON.stringify(e)}),requestOtp:e=>c1("/customer/auth/request-otp",{method:"POST",body:JSON.stringify({username:e})}),verifyOtp:(e,t)=>c1("/customer/auth/verify-otp",{method:"POST",body:JSON.stringify({username:e,password:t})}),ssoStart:()=>c1(`/customer/auth/sso/start?redirect_uri=${encodeURIComponent(n5("auth/iam/callback"))}`),ssoCallback:(e,t)=>c1("/customer/auth/sso/callback",{method:"POST",body:JSON.stringify({code:e,state:t})}),ssoLogoutUrl:()=>c1(`/customer/auth/sso/logout-url?return_url=${encodeURIComponent(n5(""))}`),endSharedSession:()=>c1("/customer/auth/logout",{method:"POST",body:"{}"}),getMe:()=>c1("/customer/me"),getAccountingBalance:()=>c1("/customer/me/accounting-balance"),getMyOrders:(e={})=>{var o;const t=new URLSearchParams;e.page&&t.set("page",String(e.page)),e.limit&&t.set("limit",String(e.limit)),e.status&&e.status!=="ALL"&&t.set("status",e.status),(o=e.q)!=null&&o.trim()&&t.set("q",e.q.trim());const n=t.toString();return c1(`/customer/me/orders${n?`?${n}`:""}`)},confirmOrderRevision:e=>c1(`/customer/me/orders/${encodeURIComponent(e)}/revision/confirm`,{method:"POST",body:"{}"}),rejectOrderRevision:e=>c1(`/customer/me/orders/${encodeURIComponent(e)}/revision/reject`,{method:"POST",body:"{}"}),getMyLedgerEntries:()=>c1("/customer/me/ledger-entries"),getMyNotifications:()=>c1("/customer/me/notifications"),getMyUnreadNotificationCount:()=>c1("/customer/me/notifications/unread-count"),markNotificationRead:e=>c1(`/customer/me/notifications/${encodeURIComponent(e)}/read`,{method:"POST",body:"{}"}),markAllNotificationsRead:()=>c1("/customer/me/notifications/read-all",{method:"POST",body:"{}"}),getWageQuotes:e=>c1("/customer/me/wage-quote",{method:"POST",body:JSON.stringify({variantIds:e})}),getFavorites:()=>c1("/customer/me/favorites"),toggleFavorite:e=>c1("/customer/me/favorites/toggle",{method:"POST",body:JSON.stringify({productId:e})}),createOrder:e=>c1("/orders",{method:"POST",body:JSON.stringify(e)}),getLatestGoldPrice:(e=750)=>c1(`/pricing/latest?karatPerMille=${e}`),getHomeSlider:()=>c1("/home/slider"),getExpertIdentity:()=>c1("/expert/whoami"),getExpertCustomers:e=>c1("/expert/my-customers",{method:"POST",body:JSON.stringify({search:e??null})}),getExpertChildOrders:(e=1,t)=>c1("/expert/child-orders",{method:"POST",body:JSON.stringify({page:e,search:t??null})}),toggleExpertCustomer:e=>c1(`/expert/customers/${encodeURIComponent(e)}/toggle-active`,{method:"POST"}),updateExpertCustomer:(e,t)=>c1(`/expert/customers/${encodeURIComponent(e)}`,{method:"PUT",body:JSON.stringify(t)}),createPreOrder:e=>c1("/customer/me/pre-orders",{method:"POST",body:JSON.stringify(e)}),getMyPreOrders:()=>c1("/customer/me/pre-orders"),adjustExpertChildOrder:(e,t,n)=>c1(`/expert/child-orders/${encodeURIComponent(e)}`,{method:"PUT",body:JSON.stringify({items:t,final_submit:n})}),uploadDocument:async(e,t)=>{const n=new FormData;n.append("file",e),n.append("purpose",t);const o=qd(),r=zd(),i=await fetch(`${Ud}/customer/me/documents`,{method:"POST",headers:{...o?{Authorization:`Bearer ${o}`}:{},...r?{"X-Act-As-Customer":r}:{}},body:n});if(i.status===401)throw Je==null||Je(),new Hi("/customer/me/documents");if(!i.ok)throw new Error(`آپلود فایل ناموفق بود (${i.status})`);return i.json()},completeProfile:e=>c1("/customer/me/complete-profile",{method:"POST",body:JSON.stringify(e)}),getReport:(e=1)=>c1(`/customer/me/report?page=${e}`),getReportDetailList:(e=1)=>c1(`/customer/me/report/detail?page=${e}`),getReportBalances:()=>c1("/customer/me/report/balances"),getReportDocument:e=>c1(`/customer/me/report/${encodeURIComponent(e)}`)},tC=Me("wageQuotes",()=>{const e=De(),t=K({}),n=new Set,o=new Set,r=new Set;let i=0,s=null;V1(()=>{var k;return[e.token,((k=e.actingAs)==null?void 0:k.id)??null]},()=>{t.value={},n.clear(),o.clear(),r.clear(),i=0});async function l(){s=null;const k=[...n].slice(0,200);if(k.forEach(u=>{n.delete(u),o.add(u)}),n.size&&(s=setTimeout(l,0)),!!k.length)try{const u=await y2.getWageQuotes(k),h=new Set(u.map(p=>p.variantId));if(k.forEach(p=>{h.has(p)||r.add(p)}),u.length){const p={...t.value};for(const C of u)p[C.variantId]=C;t.value=p}}catch(u){i=Date.now()+3e4,console.warn("wage quote failed",u)}finally{k.forEach(u=>o.delete(u))}}function d(k){!e.token||Date.now()0||!!e.isPreOrder}function nC(e){if(!e||e.length===0)return null;const t=e.filter(Wd);return(t.length?t:e).reduce((o,r)=>parseFloat(r.defaultWagePercent)n.value.id),r=N(()=>n.value.title),i=N(()=>n.value.variants),s=K(t??nC(t1(i))),l=N(()=>{var w,D,v,j;return((D=(w=s.value)==null?void 0:w.image)==null?void 0:D.url)??((j=(v=n.value.images)==null?void 0:v[0])==null?void 0:j.url)}),d=N(()=>s.value?parseFloat(s.value.rashWeightGrams):0),a=De(),k=tC(),u=N(()=>{const w=s.value;return w?a.isLoggedIn?(k.request(w.id),k.finalPercent(w.id)):parseFloat(w.defaultWagePercent):null}),h=K(null),p=N(()=>{var w;return((w=s.value)==null?void 0:w.qty)??0}),C=N(()=>{var w;return((w=s.value)==null?void 0:w.isPreOrder)??!1}),f=N(()=>p.value>0||C.value),m=N(()=>n.value.productCode??null);return{product:n,image:l,id:o,title:r,productCode:m,variants:i,selectedVariant:s,min_gram:d,wage:u,hasDiscountWage:h,qty:p,isPreOrder:C,is_exist:f,has_warranty:K(!1)}}const rC=600;function iC(e){return e instanceof Error&&!(e instanceof Hi)&&/\(404\)/.test(e.message)}function sC(e,t){const n=K(!1),o=K(!!t),r=K(!1),i=K(t??null);return{loading:n,flag:o,notFound:r,productRef:i,load:async()=>{const l=i.value!==null;l?await new Promise(d=>setTimeout(d,rC)):n.value=!0;try{const d=await y2.getProduct(e);l?JSON.stringify(d)!==JSON.stringify(i.value)&&(i.value=d):i.value=d,o.value=!0}catch(d){iC(d)?l||(i.value=null,r.value=!0):console.log(d),o.value=!0}finally{n.value=!1}}}}const lC=Me("favorites",()=>{const e=K([]),t=De();async function n(){try{e.value=(await y2.getFavorites()).ids}catch(i){console.warn("favorites: load failed",i)}}V1(()=>{var i;return[t.token,((i=t.actingAs)==null?void 0:i.id)??null]},([i])=>{e.value=[],i&&n()},{immediate:!0});async function o(i){const s=e.value.includes(i);e.value=s?e.value.filter(l=>l!==i):[i,...e.value];try{const{favorite:l}=await y2.toggleFavorite(i),d=e.value.includes(i);l&&!d&&(e.value=[i,...e.value]),!l&&d&&(e.value=e.value.filter(a=>a!==i))}catch(l){e.value=s?[i,...e.value.filter(d=>d!==i)]:e.value.filter(d=>d!==i),console.warn("favorites: toggle failed",l)}}function r(i){return e.value.includes(i)}return{ids:e,load:n,toggle:o,isFavorite:r}}),Gd="appCart";function dC(){try{const e=localStorage.getItem(Gd);return e?JSON.parse(e):[]}catch{return[]}}function Nt(e){localStorage.setItem(Gd,JSON.stringify(e))}const Kd=Me("cart",{state:()=>({items:dC()}),actions:{async init(e=!1){if(this.items.length!==0)try{const t=[...new Set(this.items.map(i=>i.pid))],n=await y2.getProductsByIds(t),o=new Map(n.map(i=>[i.id,i])),r=[];for(const i of this.items){const s=o.get(i.pid),l=s==null?void 0:s.variants.find(d=>d.id===i.vid);s&&l&&r.push({...i,product:s})}this.items=r,Nt(this.items)}catch(t){console.log(t)}},addToCart(e){var o,r;const t=(r=(o=e.product)==null?void 0:o.variants)==null?void 0:r.find(i=>i.id===e.vid);if(!t||!((t.qty??0)>0||t.isPreOrder))return!1;const n=this.find_index(e);return n===-1?this.items.push({...e,qty:this.capQty(e.qty,t)}):(this.items[n].product=e.product,this.items[n].qty=this.capQty(e.qty,t)),Nt(this.items),!0},capQty(e,t){const n=Math.max(1,Math.floor(e)||1);if(t.isPreOrder)return n;const o=t.qty??0;return o>0?Math.min(n,o):n},maxQty(e){const t=this.find_index(e);if(t===-1)return null;const n=this.variant(this.items[t]);return!n||n.isPreOrder?null:(n.qty??0)>0?n.qty:null},remove(e){const t=this.find_index(e);t>-1&&this.items.splice(t,1),Nt(this.items)},updateFeild(e,t,n,o){if(!this.isInCart(n))return!1;const r=t??this.find_index(n);if(o==="qty"){const i=this.variant(this.items[r]);e=i?this.capQty(Number(e),i):Math.max(1,Number(e)||1)}return this.items[r][o]=e,Nt(this.items),!0},find_index(e){return this.items.findIndex(t=>t.pid===e.pid&&t.vid===e.vid)},isInCart(e){return this.find_index(e)>-1},variant(e){return e.product.variants.find(t=>t.id===e.vid)},total(){return this.items.reduce((e,t)=>{const n=this.variant(t);return e+(n?parseFloat(n.rashWeightGrams)*t.qty:0)},0).toFixed(2)},totalRial(){return this.items.reduce((e,t)=>{const n=this.variant(t),o=(n==null?void 0:n.rial_pay)!=null?Number(n.rial_pay):0;return e+(Number.isFinite(o)?o*t.qty:0)},0)},clear(){this.items=[],Nt(this.items)}}});function aC(){return localStorage.getItem("appToken")}const kC="data:image/svg+xml,%3csvg%20width='200'%20height='160'%20viewBox='0%200%20200%20160'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3c!--%20Soft%20brand%20wash%20--%3e%3cellipse%20cx='100'%20cy='118'%20rx='78'%20ry='22'%20fill='%2323493c'%20fill-opacity='0.06'/%3e%3ccircle%20cx='100'%20cy='78'%20r='58'%20fill='%2323493c'%20fill-opacity='0.07'/%3e%3ccircle%20cx='148'%20cy='42'%20r='10'%20fill='%237A1B33'%20fill-opacity='0.12'/%3e%3ccircle%20cx='48'%20cy='52'%20r='6'%20fill='%238D6A46'%20fill-opacity='0.28'/%3e%3ccircle%20cx='162'%20cy='88'%20r='4'%20fill='%2323493c'%20fill-opacity='0.18'/%3e%3c!--%20Back%20card%20--%3e%3cg%20transform='translate(58%2028)%20rotate(-8%2042%2052)'%3e%3crect%20x='0'%20y='0'%20width='84'%20height='104'%20rx='14'%20fill='%23FAFAFA'%20stroke='%23ECEDEF'%20stroke-width='1.5'/%3e%3crect%20x='14'%20y='16'%20width='36'%20height='36'%20rx='18'%20fill='%23FBF2F4'/%3e%3ccircle%20cx='32'%20cy='30'%20r='10'%20fill='%23A33C55'%20fill-opacity='0.55'/%3e%3cpath%20d='M22%2048c2.8-6%2016.2-6%2019%200'%20stroke='%23A33C55'%20stroke-opacity='0.45'%20stroke-width='3'%20stroke-linecap='round'/%3e%3crect%20x='14'%20y='64'%20width='40'%20height='7'%20rx='3.5'%20fill='%237A1B33'%20fill-opacity='0.2'/%3e%3crect%20x='14'%20y='78'%20width='28'%20height='5'%20rx='2.5'%20fill='%23ECEDEF'/%3e%3c/g%3e%3c!--%20Front%20card%20--%3e%3cg%20transform='translate(78%2036)%20rotate(6%2042%2052)'%3e%3crect%20x='0'%20y='0'%20width='84'%20height='104'%20rx='14'%20fill='%23FFFFFF'%20stroke='%2323493c'%20stroke-opacity='0.14'%20stroke-width='1.5'/%3e%3crect%20x='0'%20y='0'%20width='84'%20height='104'%20rx='14'%20fill='%2323493c'%20fill-opacity='0.03'/%3e%3crect%20x='14'%20y='16'%20width='36'%20height='36'%20rx='18'%20fill='%23E8EFEC'/%3e%3ccircle%20cx='32'%20cy='30'%20r='10'%20fill='%2323493c'%20fill-opacity='0.55'/%3e%3cpath%20d='M22%2048c2.8-6%2016.2-6%2019%200'%20stroke='%2323493c'%20stroke-opacity='0.4'%20stroke-width='3'%20stroke-linecap='round'/%3e%3crect%20x='14'%20y='64'%20width='44'%20height='7'%20rx='3.5'%20fill='%238D6A46'/%3e%3crect%20x='14'%20y='78'%20width='30'%20height='5'%20rx='2.5'%20fill='%23ECEDEF'/%3e%3c/g%3e%3c!--%20Gold%20seal%20/%20coin%20accent%20--%3e%3cg%20transform='translate(138%2096)'%3e%3ccircle%20cx='18'%20cy='18'%20r='18'%20fill='%238D6A46'/%3e%3ccircle%20cx='18'%20cy='18'%20r='13.5'%20fill='%23F4C57A'%20fill-opacity='0.35'/%3e%3ccircle%20cx='18'%20cy='18'%20r='11'%20fill='none'%20stroke='%23FAFAFA'%20stroke-opacity='0.55'%20stroke-width='1.25'/%3e%3cpath%20d='M18%2010.5v15M12.5%2018h11'%20stroke='%23FAFAFA'%20stroke-width='2'%20stroke-linecap='round'/%3e%3c/g%3e%3c/svg%3e",uC={class:"pd"},hC={class:"pd__gallery"},pC={key:0,class:"pd__counter"},cC={key:1,class:"pd__dots"},wC=["aria-label","onClick"],CC={key:1,class:"pd__stage pd__stage--empty"},gC={class:"pd__sheet"},vC={class:"pd__head"},fC={class:"pd__headMain"},mC={class:"pd__title"},MC={class:"pd__sub"},jC={key:0,class:"pd__code"},xC={key:1,class:"pd__dotSep"},DC={key:2},LC={class:"pd__figures"},HC={class:"pd__figure"},VC={class:"pd__figureValue"},yC={key:0,class:"pd__figure"},bC={class:"pd__figureValue"},ZC={key:0,class:"pd__block pd__block--variants"},_C={class:"pd__blockHead"},BC={key:0,class:"pd__variantsHint"},SC={class:"pd__variants"},EC=["disabled","title","onClick"],OC=["src","alt"],AC={class:"pd__variantText"},PC={class:"pd__variantTitle"},TC={class:"pd__variantWeight"},IC={class:"pd__block"},RC={class:"pd__specs"},$C={class:"pd__spec"},FC={key:0,class:"pd__spec"},NC={key:1,class:"pd__spec"},UC={key:2,class:"pd__spec"},qC={key:3,class:"pd__spec"},zC={key:1,class:"pd__block"},WC={class:"pd__trust"},GC={class:"pd__bar"},KC={key:0,class:"pd__qty"},YC=["disabled"],JC={class:"pd__qtyValue"},QC=["aria-label"],XC=["disabled"],eg={key:0,class:"pd__previewCounter"},tg={key:1,class:"pd__previewThumbs no-scrollbar"},ng=["aria-label","onClick"],og=["src","alt"],rg=["src"],ig={class:"p-8 text-justify"},I9=8,sg=f1({__name:"SingleProduct",props:{id:{},initial:{}},emits:["closeDrawer"],setup(e,{emit:t}){const n=e,o=t,r=ki(),i=lC(),s=Kd(),l=()=>{o("closeDrawer"),r.currentRoute.value.name==="singleProduct"&&r.back()},d=K(!1),a=K(0),k=K(!1),u=sC(n.id,n.initial),h=u.loading,p=u.flag,C={id:n.id,title:"",description:null,variants:[],images:[],category:null,brand:null,collections:[]},f=N(()=>oC(u.productRef.value??C)),m=N(()=>f.value.id.value),x=N(()=>f.value.title.value),w=N(()=>f.value.productCode.value),D=N(()=>f.value.variants.value),v=N({get:()=>f.value.selectedVariant.value,set:B=>f.value.selectedVariant.value=B}),j=N(()=>f.value.min_gram.value),L=N(()=>f.value.wage.value),b=N(()=>f.value.qty.value),O=N(()=>f.value.isPreOrder.value),V=N(()=>f.value.is_exist.value),P=K(!1),G=N(()=>P.value?D.value:D.value.slice(0,I9)),T=B=>Wd(B),o1=B=>(B.qty??0)>0?"موجود":B.isPreOrder?"پیش‌سفارش":"ناموجود",k1=B=>(B.qty??0)>0?"موجود":B.isPreOrder?"پیش":"—",w1=B=>(B.qty??0)>0?"is-in":B.isPreOrder?"is-pre":"is-none",u1=N(()=>{var B;return((B=u.productRef.value)==null?void 0:B.description)??""}),Y=N(()=>u1.value.length>120),r1=N(()=>{var B,y;return((y=(B=u.productRef.value)==null?void 0:B.category)==null?void 0:y.title)??""}),m1=N(()=>{var B,y;return((y=(B=u.productRef.value)==null?void 0:B.brand)==null?void 0:y.title)??""}),y1=N(()=>{var B;return(((B=u.productRef.value)==null?void 0:B.images.length)??0)>0}),H1=N(()=>{var B;return((B=u.productRef.value)==null?void 0:B.images.map(y=>y.url))??[]});V1(H1,B=>{a.value>B.length-1&&(a.value=0)}),V1(v,B=>{var q;const y=(q=B==null?void 0:B.image)==null?void 0:q.url;if(!y)return;const I=H1.value.indexOf(y);I>-1&&(a.value=I)});const _1=K(!1);let $=!1;function l1(){y1.value&&(_1.value=!0,document.documentElement.style.overflow!=="hidden"&&(document.body.style.overflow="hidden",$=!0))}function d1(){_1.value=!1,$&&(document.body.style.overflow=""),$=!1}const n1=N(()=>{const B=L.value;return B==null?"":B%1===0?String(B):B.toFixed(2)}),Z=N(()=>b.value>0?`${b.value} عدد موجود`:O.value?"پیش‌سفارش":"ناموجود"),F=N(()=>b.value>0?"is-in":O.value?"is-pre":"is-out"),R=N(()=>{var B,y;return{vid:((B=v.value)==null?void 0:B.id)??"",note:null,pid:((y=u.productRef.value)==null?void 0:y.id)??n.id,product:u.productRef.value??C,qty:1}}),J=N(()=>s.isInCart(R.value)),s1=N(()=>s.find_index(R.value)),c=N(()=>s1.value>-1?s.items[s1.value].qty:0),g=N(()=>s.maxQty(R.value)),M=N(()=>g.value===null||c.value{M.value&&s.updateFeild(c.value+1,s1.value,R.value,"qty")},E=()=>{if(c.value<=1){s.remove(R.value);return}s.updateFeild(c.value-1,s1.value,R.value,"qty")},S=()=>{s.addToCart(R.value)&&n9.success("محصول با موفقیت به سبد خرید افزوده شد",{title:"ثبت سفارش"})},z=B=>{B.stopPropagation(),i.toggle(n.id)};return zr(async()=>{await u.load()}),Pe(()=>{$&&(document.body.style.overflow="")}),(B,y)=>{const I=Vn("router-link");return t1(p)&&t1(u).productRef.value?(U(),A1(qw,{key:0,spinning:t1(h),tip:"درحال دریافت اطلاعات"},{default:z1(()=>[A("article",uC,[A("div",hC,[A("button",{type:"button",class:"pd__round pd__round--back","aria-label":"بازگشت",onClick:l},[H(Y1,{icon:"vuesax-linear:arrow-right-1",size:"19"})]),A("button",{type:"button",class:G1(["pd__round pd__round--fav",{"is-on":t1(i).isFavorite(m.value)}]),"aria-label":"علاقه‌مندی",onClick:z},[H(Y1,{icon:t1(i).isFavorite(m.value)?"vuesax-linear:heart-fill":"vuesax-linear:heart",size:"19"},null,8,["icon"])],2),y1.value?(U(),A1(gs,{key:0,index:a.value,"onUpdate:index":y[0]||(y[0]=q=>a.value=q),slides:H1.value,alt:x.value,class:"pd__stage",onTap:l1},{dots:z1(({index:q,go:W})=>[H1.value.length>1?(U(),Q("div",pC,p1(q+1)+"/"+p1(H1.value.length),1)):x1("",!0),H1.value.length>1?(U(),Q("div",cC,[(U(!0),Q(v1,null,ue(H1.value,(e1,i1)=>(U(),Q("button",{key:e1,type:"button",class:G1(["pd__dot",{"is-on":i1===q}]),"aria-label":`تصویر ${i1+1}`,onClick:p0(C1=>W(i1),["stop"])},null,10,wC))),128))])):x1("",!0)]),_:1},8,["index","slides","alt"])):(U(),Q("div",CC,[H(Y1,{icon:"vuesax-linear:diamonds",size:"46"})]))]),A("div",gC,[A("header",vC,[A("div",fC,[A("h1",mC,p1(x.value),1),A("div",MC,[w.value?(U(),Q("span",jC,p1(w.value),1)):x1("",!0),r1.value?(U(),Q("span",xC,"·")):x1("",!0),r1.value?(U(),Q("span",DC,p1(r1.value),1)):x1("",!0)])]),A("span",{class:G1(["pd__stock",F.value])},p1(Z.value),3)]),A("div",LC,[A("div",HC,[y[9]||(y[9]=A("span",{class:"pd__figureLabel"},"وزن تقریبی",-1)),A("span",VC,[e2(p1(j.value)+" ",1),y[8]||(y[8]=A("span",{class:"pd__figureUnit"},"گرم",-1))])]),L.value!=null?(U(),Q("div",yC,[y[11]||(y[11]=A("span",{class:"pd__figureLabel"},"اجرت",-1)),A("span",bC,[e2(p1(n1.value)+" ",1),y[10]||(y[10]=A("span",{class:"pd__figureUnit"},"درصد",-1))])])):x1("",!0)]),D.value&&D.value.length?(U(),Q("section",ZC,[A("div",_C,[y[12]||(y[12]=A("h2",{class:"pd__blockTitle"},"انتخاب تنوع",-1)),v.value?(U(),Q("span",BC,p1(Number(v.value.rashWeightGrams))+" گرم ",1)):x1("",!0)]),A("div",SC,[(U(!0),Q(v1,null,ue(G.value,q=>{var W,e1,i1;return U(),Q("button",{key:q.id,type:"button",class:G1(["pd__variant",{"is-on":((W=v.value)==null?void 0:W.id)===q.id,"is-out":!T(q),"has-img":!!((e1=q.image)!=null&&e1.url)}]),disabled:!T(q),title:o1(q),onClick:C1=>v.value=q},[(i1=q.image)!=null&&i1.url?(U(),Q("img",{key:0,class:"pd__variantImg",src:q.image.url,alt:q.title},null,8,OC)):x1("",!0),A("span",AC,[A("span",PC,p1(q.title),1),A("span",TC,p1(Number(q.rashWeightGrams))+" گرم",1)]),A("span",{class:G1(["pd__variantStock",w1(q)])},p1(k1(q)),3)],10,EC)}),128))]),D.value.length>I9?(U(),Q("button",{key:0,type:"button",class:"pd__variantsMore",onClick:y[1]||(y[1]=q=>P.value=!P.value)},p1(P.value?"نمایش کمتر":`+${D.value.length-I9} تنوع دیگر`),1)):x1("",!0)])):x1("",!0),A("section",IC,[y[18]||(y[18]=A("h2",{class:"pd__blockTitle"},"مشخصات",-1)),A("dl",RC,[A("div",$C,[A("dt",null,[H(Y1,{icon:"vuesax-linear:weight",size:"15"}),y[13]||(y[13]=e2(" وزن",-1))]),A("dd",null,p1(j.value)+" گرم",1)]),L.value!=null?(U(),Q("div",FC,[A("dt",null,[H(Y1,{icon:"vuesax-linear:percentage-square",size:"15"}),y[14]||(y[14]=e2(" اجرت",-1))]),A("dd",null,p1(n1.value)+"٪",1)])):x1("",!0),v.value?(U(),Q("div",NC,[A("dt",null,[H(Y1,{icon:"vuesax-linear:diamonds",size:"15"}),y[15]||(y[15]=e2(" تنوع",-1))]),A("dd",null,p1(v.value.title),1)])):x1("",!0),r1.value?(U(),Q("div",UC,[A("dt",null,[H(Y1,{icon:"vuesax-linear:category",size:"15"}),y[16]||(y[16]=e2(" دسته‌بندی",-1))]),A("dd",null,p1(r1.value),1)])):x1("",!0),m1.value?(U(),Q("div",qC,[A("dt",null,[H(Y1,{icon:"vuesax-linear:shop",size:"15"}),y[17]||(y[17]=e2(" برند",-1))]),A("dd",null,p1(m1.value),1)])):x1("",!0)])]),u1.value?(U(),Q("section",zC,[y[19]||(y[19]=A("h2",{class:"pd__blockTitle"},"توضیحات",-1)),A("p",{class:G1(["pd__body",{"is-clamped":!k.value}])},p1(u1.value),3),Y.value?(U(),Q("button",{key:0,type:"button",class:"pd__more",onClick:y[2]||(y[2]=q=>k.value=!k.value)},p1(k.value?"بستن":"ادامه مطلب"),1)):x1("",!0)])):x1("",!0),A("div",WC,[A("span",null,[H(Y1,{icon:"vuesax-linear:shield-tick",size:"16"}),y[20]||(y[20]=e2(" خرید امن",-1))]),A("span",null,[H(Y1,{icon:"vuesax-linear:verify",size:"16"}),y[21]||(y[21]=e2(" اصالت کالا",-1))])])]),A("div",GC,[J.value?(U(),Q("div",KC,[A("button",{type:"button",class:"pd__qtyBtn","aria-label":"افزایش",disabled:!M.value,onClick:_},[H(Y1,{icon:"vuesax-linear:add",size:"16"})],8,YC),A("span",JC,p1(c.value),1),A("button",{type:"button",class:"pd__qtyBtn","aria-label":c.value===1?"حذف":"کاهش",onClick:E},[H(Y1,{icon:c.value===1?"vuesax-linear:trash":"vuesax-linear:minus-square",size:"16"},null,8,["icon"])],8,QC)])):x1("",!0),J.value?(U(),A1(I,{key:2,class:"pd__cta pd__cta--ghost",to:{name:"cart"}},{default:z1(()=>[y[22]||(y[22]=e2(" مشاهده سبد خرید ",-1)),H(Y1,{icon:"vuesax-linear:arrow-left-2",size:"17"})]),_:1})):(U(),Q("button",{key:1,type:"button",class:"pd__cta",disabled:!V.value,onClick:y[3]||(y[3]=q=>t1(aC)()?S():d.value=!0)},[e2(p1(V.value?"افزودن به سفارش":"ناموجود")+" ",1),V.value?(U(),A1(Y1,{key:0,icon:"vuesax-linear:arrow-left-2",size:"17"})):x1("",!0)],8,XC))])]),(U(),A1(nt,{to:"body"},[H(Yo,{name:"pd-preview"},{default:z1(()=>[_1.value?(U(),Q("div",{key:0,class:"pd__preview",onClick:p0(d1,["self"])},[A("button",{type:"button",class:"pd__previewClose","aria-label":"بستن",onClick:d1},[H(Y1,{icon:"vuesax-linear:add",size:"20"})]),H1.value.length>1?(U(),Q("div",eg,p1(a.value+1)+" / "+p1(H1.value.length),1)):x1("",!0),H(gs,{index:a.value,"onUpdate:index":y[4]||(y[4]=q=>a.value=q),slides:H1.value,alt:x.value,class:"pd__previewStage",fit:"contain"},null,8,["index","slides","alt"]),H1.value.length>1?(U(),Q("div",tg,[(U(!0),Q(v1,null,ue(H1.value,(q,W)=>(U(),Q("button",{key:q,type:"button",class:G1(["pd__previewThumb",{"is-on":W===a.value}]),"aria-label":`تصویر ${W+1}`,onClick:e1=>a.value=W},[A("img",{src:q,alt:`${x.value} ${W+1}`,draggable:"false"},null,8,og)],10,ng))),128))])):x1("",!0)])):x1("",!0)]),_:1})])),H(Yw,{timeOut:-1,show:d.value,"onUpdate:show":y[7]||(y[7]=q=>d.value=q),closeOnClickOverlay:!0},{img:z1(()=>[A("img",{src:t1(kC),alt:""},null,8,rg)]),title:z1(()=>[A("div",ig," برای دسترسی به تمامی امکانات نرم افزار "+p1(t1(Do).name)+"، ابتدا گزینه ورود/ثبت نام را لمس کنید و در صورت نداشتن حساب کاربری، ثبت نام نمایید. ",1)]),button:z1(()=>[A("div",{class:"text-center font-bold",onClick:y[5]||(y[5]=q=>t1(r).push({name:"login"}))},"ورود/ثبت نام"),A("div",{class:"text-center",onClick:y[6]||(y[6]=q=>d.value=!1)},"بیخیال")]),_:1},8,["show"])]),_:1},8,["spinning"])):x1("",!0)}}}),Yd=xe(sg,[["__scopeId","data-v-6ab94f35"]]),lg=Object.freeze(Object.defineProperty({__proto__:null,default:Yd},Symbol.toStringTag,{value:"Module"})),ro=Rr(null);let io=null;typeof document<"u"&&document.addEventListener("pointerdown",e=>{io=e.target instanceof Element?e.target:null},{capture:!0,passive:!0});function Qg(e,t){const n=(io==null?void 0:io.closest("[data-product-origin]"))??null;ro.value={product:e,origin:t??n}}const dg=["src"],lt=420,Ut=300,o5=300,r5=220,R9="cubic-bezier(0.32, 0.72, 0, 1)",ag="cubic-bezier(0.22, 1, 0.36, 1)",i5=.9,s5="inset(0px 0px 0px 0px round 0px)",kg=f1({__name:"ProductMorph",setup(e){const t=Bk(),n=Rr(null),o=K(null),r=K(!1),i=K(!1),s=K(null),l=K(null),d=K(null),a=K(null);function k($=.82,l1=7,d1=32){const n1=Math.sqrt(1-$*$),Z=[];for(let F=0;F<=d1;F++){const R=F/d1*l1,J=F===d1?1:1-Math.exp(-$*R)*(Math.cos(n1*R)+$/n1*Math.sin(n1*R));Z.push(String(+J.toFixed(4)))}return`linear(${Z.join(", ")})`}const h=typeof CSS<"u"&&CSS.supports("animation-timing-function","linear(0, 1)")?k():"cubic-bezier(0.22, 1, 0.36, 1)",p=()=>document.documentElement.classList.contains("motion-reduced")||typeof matchMedia<"u"&&matchMedia("(prefers-reduced-motion: reduce)").matches;function C($,l1,d1){const n1=$.getBoundingClientRect(),Z=getComputedStyle($),F=parseFloat(Z.paddingLeft)||0,R=parseFloat(Z.paddingRight)||0,J=parseFloat(Z.paddingTop)||0,s1=parseFloat(Z.paddingBottom)||0,c=n1.left+F,g=n1.top+J,M=n1.width-F-R,_=n1.height-J-s1;if(Z.objectFit!=="contain"&&Z.objectFit!=="scale-down")return{x:c,y:g,w:M,h:_};let E=Math.min(M/l1,_/d1);return Z.objectFit==="scale-down"&&(E=Math.min(E,1)),{x:c+(M-l1*E)/2,y:g+(_-d1*E)/2,w:l1*E,h:d1*E}}function f($,l1){const d1=document.documentElement.clientWidth,n1=window.innerHeight;return`inset(${$.top}px ${d1-$.right}px ${n1-$.bottom}px ${$.left}px round ${l1})`}function m($){return $.width>0&&$.height>0&&$.bottom>0&&$.top0}function w($,l1){return($.currentSrc||$.src)===(l1.currentSrc||l1.src)}function D(){var n1;const $=(n1=d.value)==null?void 0:n1.querySelector(".pd__stage");if(!$)return null;const l1=$.getBoundingClientRect(),d1=$.querySelectorAll("img");for(const Z of d1){const F=Z.getBoundingClientRect(),R=F.left+F.width/2;if(R>l1.left&&R`translate(${n1.x-l1.x}px, ${n1.y-l1.y}px) scale(${n1.w/l1.w}, ${n1.h/l1.h})`;return[{transform:d1($)},{transform:d1(l1)}]}function O($,l1){$.style.left=`${l1.x}px`,$.style.top=`${l1.y}px`,$.style.width=`${l1.w}px`,$.style.height=`${l1.h}px`}let V=0,P=[],G="idle",T=[];function o1($){$&&($.style.opacity="0",T.push($))}function k1(){T.forEach($=>$.style.opacity=""),T=[]}function w1(){P.forEach($=>$.cancel()),P=[]}async function u1($){P=$,await Promise.all($.map(l1=>l1.finished.catch(()=>{})))}function Y($){document.documentElement.style.overflow=$?"hidden":""}async function r1($){var R;const l1=++V;w1(),k1(),i.value=!1,r.value=!0,G="opening";const d1=v($.origin),n1=(R=$.origin)==null?void 0:R.getBoundingClientRect(),Z=!p()&&!!$.origin&&!!n1&&m(n1);if(o.value=Z&&x(d1)?d1.currentSrc||d1.src:null,n.value=$,await a2(),l1!==V||!d.value||!s.value)return;let F;Z&&n1&&$.origin?F=m1($.origin,n1,d1):p()?F=[d.value.animate({opacity:[0,1]},{duration:160,easing:"ease-out",fill:"both"}),s.value.animate({opacity:[0,1]},{duration:160,easing:"ease-out",fill:"both"})]:F=[d.value.animate({transform:["translateY(6%)","none"],opacity:[0,1]},{duration:o5,easing:ag,fill:"both"}),s.value.animate({opacity:[0,1]},{duration:o5,easing:"ease-out",fill:"both"})],await u1(F),l1===V&&(w1(),k1(),o.value=null,r.value=!1,G="open",Y(!0))}function m1($,l1,d1){const n1=d.value,Z=l.value,F=s.value,{pageBg:R,cardBg:J,radius:s1}=j($),c=D(),g=a.value;let M=null;if(g&&x(d1)&&c&&w(d1,c)){const E=d1.naturalWidth,S=d1.naturalHeight,z=C(c,E,S);z.w>0&&z.h>0&&(M={from:C(d1,E,S),to:z})}n1.style.transformOrigin=L(l1);const _=[Z.animate({clipPath:[f(l1,s1),s5],backgroundColor:[J,R]},{duration:lt,easing:h,fill:"both"}),F.animate({opacity:[0,1]},{duration:lt*.6,easing:"ease-out",fill:"both"}),n1.animate({transform:[`scale(${i5})`,"none"]},{duration:lt,easing:h,fill:"both"}),n1.animate({opacity:[0,1]},{duration:lt*.55,delay:lt*.1,easing:"cubic-bezier(0.3, 0, 0.2, 1)",fill:"both"})];return g&&M&&c?(O(g,M.to),o1(c),_.push(g.animate(b(M.from,M.to),{duration:lt,easing:h,fill:"both"}))):o.value=null,_}async function y1(){if(!n.value||G==="closing")return;const $=++V,l1=G==="opening";G="closing",i.value=!0,r.value=!0;let d1;l1&&P.length?(P.forEach(n1=>n1.reverse()),d1=P):(w1(),k1(),d1=await H1()),await u1(d1),$===V&&_1()}async function H1(){var E;const $=d.value,l1=l.value,d1=s.value;if(!$||!l1||!d1)return[];if(p())return[$.animate({opacity:[1,0]},{duration:140,easing:"ease-in",fill:"forwards"}),d1.animate({opacity:[1,0]},{duration:140,easing:"ease-in",fill:"forwards"})];const n1=((E=n.value)==null?void 0:E.origin)??null,Z=n1!=null&&n1.isConnected?n1.getBoundingClientRect():null;if(!n1||!Z||!m(Z))return[$.animate({transform:["none","translateY(6%)"],opacity:[1,0]},{duration:r5,easing:"cubic-bezier(0.4, 0, 1, 1)",fill:"forwards"}),d1.animate({opacity:[1,0]},{duration:r5,easing:"ease-in",fill:"forwards"})];const{pageBg:F,cardBg:R,radius:J}=j(n1),s1=v(n1),c=D();let g=null;if(x(s1)&&c&&w(s1,c)&&m(c.getBoundingClientRect())){const S=s1.naturalWidth,z=s1.naturalHeight,B=C(c,S,z);B.w>0&&B.h>0&&(g={from:B,to:C(s1,S,z)})}g&&s1&&(o.value=s1.currentSrc||s1.src,await a2()),$.style.transformOrigin=L(Z);const M=[l1.animate([{clipPath:s5,backgroundColor:F,opacity:1},{opacity:1,offset:.7},{clipPath:f(Z,J),backgroundColor:R,opacity:0}],{duration:Ut,easing:R9,fill:"forwards"}),$.animate({transform:["none",`scale(${i5})`]},{duration:Ut,easing:R9,fill:"forwards"}),$.animate({opacity:[1,0]},{duration:Ut*.45,easing:"ease-in",fill:"forwards"}),d1.animate({opacity:[1,0]},{duration:Ut,easing:"ease-out",fill:"forwards"})],_=a.value;return _&&g&&c&&(O(_,g.from),o1(c),M.push(_.animate(b(g.to,g.from).reverse(),{duration:Ut,easing:R9,fill:"forwards"}))),M}function _1(){w1(),k1(),o.value=null,r.value=!1,i.value=!1,G="idle",n.value=null,Y(!1),ro.value&&(ro.value=null)}return V1(ro,$=>{$?r1($):n.value&&y1()}),V1(()=>t.fullPath,()=>{n.value&&(++V,_1())}),Pe(()=>{w1(),k1(),Y(!1)}),($,l1)=>(U(),A1(nt,{to:"body"},[n.value?(U(),Q("div",{key:0,class:G1(["pm",{"is-moving":r.value,"is-closing":i.value}]),dir:"rtl"},[A("div",{ref_key:"veil",ref:s,class:"pm__veil","aria-hidden":"true"},null,512),A("div",{ref_key:"shape",ref:l,class:"pm__shape","aria-hidden":"true"},null,512),A("div",{ref_key:"sheet",ref:d,class:"pm__sheet no-scrollbar"},[(U(),A1(Yd,{id:n.value.product.id,key:n.value.product.id,initial:n.value.product,onCloseDrawer:y1},null,8,["id","initial"]))],512),o.value?(U(),Q("img",{key:0,ref_key:"ghost",ref:a,class:"pm__ghost",src:o.value,alt:"","aria-hidden":"true",decoding:"sync"},null,8,dg)):x1("",!0)],2)):x1("",!0)]))}}),ug=xe(kg,[["__scopeId","data-v-c77d4a00"]]),hg={key:0,class:"aab",role:"status"},pg={class:"aab__text"},cg=["disabled"],wg=f1({__name:"ActingAsBar",setup(e){const t=De(),n=Kd(),o=ki(),r=K(!1);async function i(){r.value=!0;try{n.clear(),t.setActingAs(null),await o.push({name:"home"}),n9.info("به حساب خودتان بازگشتید")}finally{r.value=!1}}return(s,l)=>t1(t).actingAs?(U(),Q("div",hg,[l[1]||(l[1]=A("span",{class:"aab__dot","aria-hidden":"true"},null,-1)),A("span",pg,[l[0]||(l[0]=e2(" در حال مشاهده به‌عنوان ",-1)),A("strong",null,p1(t1(t).actingAs.name||"مشتری"),1)]),A("button",{type:"button",class:"aab__exit",disabled:r.value,onClick:i},p1(r.value?"…":"خروج"),9,cg)])):x1("",!0)}}),Cg=xe(wg,[["__scopeId","data-v-469fbf01"]]),gg=f1({__name:"App",setup(e){const t=ki(),n=De();Ak(),Bl().start(t);const o=N(()=>t.currentRoute.value.meta&&t.currentRoute.value.meta.layout==="FullPage"?Mu:vu);return(r,i)=>{const s=Vn("router-view");return U(),Q("div",{class:G1({"is-actingAs":!!t1(n).actingAs})},[H(Cg),(U(),A1(G9(o.value),{class:"relative"},{default:z1(()=>[H(s,null,{default:z1(({Component:l,route:d})=>[(U(),A1(Q5,null,[(U(),A1(_a,null,{default:z1(()=>[(U(),A1(G9(l),{key:d.name}))]),_:2},1024))],1024))]),_:1})]),_:1})),H(Bu),H(rh),H(ug),H(gh)],2)}}}),vg=Me("transition",{state:()=>({transitionFlag:!0,transitionEnded:!0,headerHeight:0}),actions:{setTransitionFlag(e){this.transitionFlag=e},setTransitionEnded(e){this.transitionEnded=e},setHeaderHeight(e){this.headerHeight=e}}}),dt={catalog:"catalog",goldPrice:"goldPrice",homeSlider:"homeSlider",profile:"me:profile",orders:"me:orders",balance:"me:balance",ledger:"me:ledger"},fg="me:",mg=Me("queryCache",()=>{const e=new Map,t=De();function n(l,d){const a=e.get(l);if(a!=null&&a.inflight)return a.inflight;const k=d().then(u=>{var h;return((h=e.get(l))==null?void 0:h.inflight)===k&&e.set(l,{data:u,has:!0}),u}).finally(()=>{const u=e.get(l);(u==null?void 0:u.inflight)===k&&(u.inflight=void 0)});return e.set(l,{...a??{has:!1},inflight:k}),k}async function o(l,d,a={}){const k=e.get(l);return!a.force&&(k!=null&&k.has)?k.data:n(l,d)}function r(l){const d=e.get(l);return d!=null&&d.has?d.data:void 0}function i(...l){for(const d of l)e.delete(d)}function s(){for(const l of[...e.keys()])l.startsWith(fg)&&e.delete(l)}return V1(()=>{var l;return[t.token,((l=t.actingAs)==null?void 0:l.id)??null]},()=>s()),{fetch:o,peek:r,invalidate:i,clearUserScoped:s}});function Mg(){const e=mg();return{me:t=>e.fetch(dt.profile,y2.getMe,t),myOrders:t=>e.fetch(dt.orders,y2.getMyOrders,t),accountingBalance:t=>e.fetch(dt.balance,y2.getAccountingBalance,t),myLedgerEntries:t=>e.fetch(dt.ledger,y2.getMyLedgerEntries,t),goldPrice:t=>e.fetch(dt.goldPrice,()=>y2.getLatestGoldPrice(),t),homeSlider:t=>e.fetch(dt.homeSlider,y2.getHomeSlider,t),peek:e.peek,invalidate:e.invalidate}}const xn=_k({history:ak(),async scrollBehavior(e,t,n){return await gu(),n||{top:0}},routes:[{path:"/home",name:"home",component:()=>O1(()=>import("./HomeView-CytyOCPn.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]))},{path:"/product/:id",name:"singleProduct",component:()=>O1(()=>Promise.resolve().then(()=>lg),void 0),props:!0,meta:{layout:"FullPage"}},{path:"/newest",name:"newestProduct",component:()=>O1(()=>import("./NewestView-U3MIVepY.js"),__vite__mapDeps([15,16,17,8,9,6,7,13,18])),meta:{layout:"FullPage"}},{path:"/cart",name:"cart",component:()=>O1(()=>import("./CartView-mD4jqxvD.js"),__vite__mapDeps([19,1,2,16,17,4,12,13,20,21,22,23,24,25,26,27]))},{path:"/login",name:"login",component:()=>O1(()=>import("./LoginRegisterView--xd-iA3G.js"),__vite__mapDeps([28,16,17,24,25,26,22,23,29])),meta:{layout:"FullPage"}},{path:"/auth/iam/callback",name:"iamCallback",component:()=>O1(()=>import("./IamCallback-BVW6l1Z5.js"),[]),meta:{layout:"FullPage"}},{path:"/user",name:"userPage::hasSubRoute",component:()=>O1(()=>import("./DashboardView-CuieN8qk.js"),__vite__mapDeps([30,1,2,8,9,3,4,5,12,20,21,22,23,31]))},{path:"/orders",name:"ordersList",component:()=>O1(()=>import("./OrdersView-BuGZsuud.js"),__vite__mapDeps([32,1,2,16,17,33,34,35,4,20,21,22,23,36])),meta:{requiresAuth:!0}},{path:"/transactions",name:"transactionsList",component:()=>O1(()=>import("./TransactionsView-DU94ZdnQ.js"),__vite__mapDeps([37,16,17,8,9,4,20,21,22,23,38])),meta:{requiresAuth:!0}},{path:"/profile",name:"profileData",component:()=>O1(()=>import("./ProfileView-wOkrkPJE.js"),__vite__mapDeps([39,16,17,8,9,40])),meta:{requiresAuth:!0}},{path:"/favorites",name:"favoritesList",component:()=>O1(()=>import("./FavoritesView-mBGWEKpf.js"),__vite__mapDeps([41,16,17,8,9,6,7,42])),meta:{requiresAuth:!0}},{path:"/makeOrder",name:"makeOrderList",component:()=>O1(()=>import("./MakeOrderView-CPwGE5ee.js"),__vite__mapDeps([43,16,17,44,45,46])),meta:{requiresAuth:!0}},{path:"/makeOrder_status",name:"makeOrderStatus",component:()=>O1(()=>import("./MakeOrderStatusView-CABGAYeD.js"),__vite__mapDeps([47,1,2,16,17,4,48])),meta:{requiresAuth:!0}},{path:"/settings/appearance",name:"appearanceSettings",component:()=>O1(()=>import("./AppearanceView-Dvo5IEVp.js"),__vite__mapDeps([49,16,17,50]))},{path:"/ChildOrder",name:"ChildOrder",component:()=>O1(()=>import("./ChildOrdersView-DcTtJnk7.js"),__vite__mapDeps([51,1,2,16,17,33,34,4,20,21,22,23,26,52])),meta:{title:"سفارش مشتریان",layout:"FullPage",requiresAuth:!0,requiresExpert:!0}},{path:"/customerChoice",name:"customerChoice",component:()=>O1(()=>import("./CustomerChoiceView-CCVW8w6E.js"),__vite__mapDeps([53,1,2,16,17,33,34,20,21,22,23,54])),meta:{title:"انتخاب مشتری",layout:"FullPage",requiresAuth:!0,requiresExpert:!0}},{path:"/complete_profile",name:"completeProfile",component:()=>O1(()=>import("./CompleteProfileView-DJF4Zx67.js"),__vite__mapDeps([55,16,17,44,45,56])),meta:{title:"تکمیل پروفایل",layout:"FullPage",requiresAuth:!0,requiresIncompleteProfile:!0}},{path:"/report",name:"report",component:()=>O1(()=>import("./ReportView-BU1YURL5.js"),__vite__mapDeps([57,1,2,16,17,4,20,21,22,23,58])),meta:{title:"گزارش",layout:"FullPage",requiresAuth:!0}},{path:"/report/detail",name:"reportDetail",component:()=>O1(()=>import("./ReportView-BU1YURL5.js"),__vite__mapDeps([57,1,2,16,17,4,20,21,22,23,58])),meta:{title:"جزئیات حساب",layout:"FullPage",requiresAuth:!0}},{path:"/notifications",name:"notifications",component:()=>O1(()=>import("./NotificationsView-CaeA456U.js"),__vite__mapDeps([59,1,2,16,17,12,11,35,4,60])),meta:{title:"پیام‌ها"}},{path:"/search",name:"search",component:()=>O1(()=>import("./SearchView-DrsdyLde.js"),__vite__mapDeps([61,1,2,16,17,33,34,21,23,25,26,6,7,10,13,62]))},{path:"/collection/:id?",name:"collection",component:()=>O1(()=>import("./CollectionView-BzWuMq0j.js"),__vite__mapDeps([63,16,17,8,9,6,7,13,64]))},{path:"/",redirect:{name:"home"}},{path:"/:pathMatch(.*)*",redirect:{name:"home"}}]});let br=!1;function jg(){return sessionStorage.getItem("gb_iam_sso_skip")==="1"?(sessionStorage.removeItem("gb_iam_sso_skip"),br=!0,!0):br}xn.beforeEach(async e=>{const t=De(),n=ui();if(!t.isLoggedIn&&e.name!=="iamCallback"&&!jg()){br=!0,sessionStorage.removeItem("gb_iam_sso_checked");try{const o=await y2.ssoStart();if(o.enabled&&o.authorize_url)return e.fullPath.startsWith("/")&&!e.fullPath.startsWith("//")&&sessionStorage.setItem("gb_iam_return",e.fullPath),window.location.assign(o.authorize_url),!1}catch{}}if(e.name==="login"&&t.isLoggedIn)return{name:"home"};if(e.meta.requiresAuth&&!t.isLoggedIn)return n9.info("ابتدا وارد شوید"),{name:"login",query:{redirect:e.fullPath}};if(e.meta.requiresExpert&&!t.isSalesExpert)return{name:"userPage::hasSubRoute"};if(e.meta.requiresIncompleteProfile&&t.isLoggedIn)try{const o=await Mg().me();if(o.verificationStep==="VERIFIED"||o.verificationStep==="STEP_TWO_SUBMITTED")return{name:"home"}}catch{}e.name==="singleProduct"?n.setPgaTransition("slideDown"):n.setPgaTransition(void 0)});xn.afterEach(e=>{const t=ui(),n=vg();t.noteFirstNavigation(),n.setTransitionFlag(!1),n.setTransitionEnded(!1),setTimeout(()=>{n.setTransitionFlag(!0)},100);const o=t.visibleNavBarRoutes.find(r=>e.name===r.name);o?(t.setActiveLink(o.index),t.setNavVisibility(!0)):t.setNavVisibility(!1)});const Jd="hedena-gold:appearance",l5=()=>typeof matchMedia<"u"?matchMedia("(prefers-color-scheme: dark)"):null,xg=()=>typeof matchMedia<"u"?matchMedia("(prefers-reduced-motion: reduce)"):null;function Dg(){var t;const e={theme:"light",reduceMotion:!!((t=xg())!=null&&t.matches)};try{const n=localStorage.getItem(Jd);if(!n)return e;const o=JSON.parse(n);return{theme:o.theme==="light"||o.theme==="dark"||o.theme==="system"?o.theme:e.theme,reduceMotion:typeof o.reduceMotion=="boolean"?o.reduceMotion:e.reduceMotion}}catch{return e}}function Lg(e){try{localStorage.setItem(Jd,JSON.stringify(e))}catch{}}const Hg="#15171A";let d5=null;const Vg=Me("appearance",{state:()=>{var e;return{...Dg(),systemDark:!!((e=l5())!=null&&e.matches)}},getters:{resolvedTheme:e=>e.theme==="system"?e.systemDark?"dark":"light":e.theme,isReducedMotion:e=>e.reduceMotion},actions:{init(){var t;const e=l5();(t=e==null?void 0:e.addEventListener)==null||t.call(e,"change",n=>{this.systemDark=n.matches,this.theme==="system"&&this.apply()}),this.apply(!1)},setTheme(e){e!==this.theme&&(this.theme=e,this.save(),this.apply())},setReduceMotion(e){e!==this.reduceMotion&&(this.reduceMotion=e,this.save(),this.apply(!1))},save(){Lg({theme:this.theme,reduceMotion:this.reduceMotion})},apply(e=!0){const t=document.documentElement,n=this.resolvedTheme==="dark";e&&t.classList.add("theme-switching"),t.classList.toggle("theme-dark",n),t.classList.toggle("van-theme-dark",n),t.classList.toggle("motion-reduced",this.reduceMotion);const o=document.querySelector('meta[name="theme-color"]');o&&(d5??(d5=o.getAttribute("data-light")??o.getAttribute("content")),o.setAttribute("content",n?Hg:d5??"")),e&&requestAnimationFrame(()=>requestAnimationFrame(()=>t.classList.remove("theme-switching")))}}}),yg={class:"px-[16px] max-w-screen-md m-auto relative no-scrollbar"},bg=f1({__name:"Container",props:{padding:{}},setup(e){return(t,n)=>(U(),Q("main",yg,[wt(t.$slots,"default")]))}}),Zg="/assets/brand-logo-c8-B3-lR.png";q4.use("fa-IR",L6);const Bn=O7(gg);Bn.use(T7());Vg().init();Bn.use(xn);Xw(()=>{De().logout(),xn.currentRoute.value.name!=="login"&&xn.replace({name:"login"})});Bn.use(e8,{error:Zg});Bn.component("container",bg);Bn.mount("#app");export{a2 as $,Me as A,Do as B,Zg as C,y2 as D,Kd as E,v1 as F,De as G,Mg as H,Y1 as I,z1 as J,dt as K,jl as L,Vn as M,ki as N,A1 as O,$t as P,vg as Q,Tg as R,wt as S,qw as T,I1 as U,zr as V,e2 as W,Yw as X,kC as Y,mg as Z,xe as _,qo as a,xh as a$,Sg as a0,Bk as a1,ti as a2,n9 as a3,Qh as a4,Jh as a5,Wr as a6,Hn as a7,Rg as a8,et as a9,yr as aA,Al as aB,Ho as aC,Yg as aD,Ug as aE,R2 as aF,zg as aG,ms as aH,yo as aI,Op as aJ,Z4 as aK,gi as aL,Ci as aM,vi as aN,_p as aO,Il as aP,g1 as aQ,Tw as aR,Jg as aS,Sp as aT,pi as aU,nt as aV,k0 as aW,tl as aX,Rl as aY,qg as aZ,Di as a_,h1 as aa,Z2 as ab,Oh as ac,Ih as ad,Ol as ae,Ph as af,u2 as ag,W1 as ah,N1 as ai,r9 as aj,mn as ak,wi as al,Yo as am,Nr as an,gw as ao,Qn as ap,ep as aq,ve as ar,yn as as,Hw as at,Vo as au,t5 as av,Id as aw,ke as ax,ip as ay,_n as az,qr as b,Kg as b0,qc as b1,Gg as b2,_g as b3,$g as b4,op as b5,Fg as b6,Ig as b7,rp as b8,Ng as b9,Wg as ba,m6 as bb,$h as bc,Pg as bd,S7 as be,X2 as bf,j2 as bg,Og as bh,$4 as bi,e6 as bj,ii as bk,Eg as bl,Ag as bm,k6 as bn,je as bo,ui as bp,Pe as c,f1 as d,U as e,Q as f,A as g,x1 as h,G1 as i,N as j,K as k,lC as l,oC as m,ce as n,F2 as o,Bg as p,t1 as q,ue as r,Rr as s,p1 as t,Vg as u,Fr as v,V1 as w,H as x,p0 as y,Qg as z}; diff --git a/apps/user-app/dist/assets/index-D3GLzZ3l.js b/apps/user-app/dist/assets/index-DDItTnD7.js similarity index 92% rename from apps/user-app/dist/assets/index-D3GLzZ3l.js rename to apps/user-app/dist/assets/index-DDItTnD7.js index f8f3aa9..41959f4 100644 --- a/apps/user-app/dist/assets/index-D3GLzZ3l.js +++ b/apps/user-app/dist/assets/index-DDItTnD7.js @@ -1,4 +1,4 @@ -import{a4 as ft,a5 as pa,d as te,o as Oe,a6 as hr,a7 as ba,w as de,a8 as It,a9 as ze,aa as _,ab as Ue,U as pr,ac as ya,ad as xa,ae as wa,af as Ca,x as z,ag as Zt,ah as T,j as R,ai as ct,aj as fe,$ as le,c as Ne,ak as X,al as Mt,am as Fa,an as dt,ao as Aa,ap as br,aq as yr,k as H,ar as ve,as as Sa,at as Yt,au as Me,av as Ea,aw as Oa,ax as Xt,ay as Ee,az as J,aA as vt,aB as Pa,aC as ie,aD as xe,aE as xr,aF as Ta,aG as _a,aH as jt,F as We,aI as $a,aJ as Ia,aK as Ma,aL as wr,aM as ja,aN as Na,s as Cr,aO as Ra,aP as Fr,aQ as Nt,q as we,aR as za,aS as Ba,aT as it,v as Ar,aU as Sr}from"./index-BFOyCNFT.js";import{o as qa,i as La,a as Pe,M as Er,g as Va,e as ka,b as Da,c as Wa,d as Or,f as Pr,k as gt,h as Tr,j as Qt,l as Ga,m as _r,s as Ua,n as Ha,U as mn,p as Jt,q as $r,r as lt,t as Ka,S as Ir,u as Za,_ as mt,v as Mr,w as Ya,x as Xa,y as hn,z as jr,A as en,F as Rt,B as Fe}from"./FormItemContext-BNYzezPe.js";import{_ as Qa,a as Ja,o as be}from"./classCallCheck-BVPDkxOa.js";import{w as he}from"./raf-nDFcuFT6.js";var tn=qa(Object.getPrototypeOf,Object),ei="[object Object]",ti=Function.prototype,ni=Object.prototype,Nr=ti.toString,ri=ni.hasOwnProperty,ai=Nr.call(Object);function Rr(t){if(!ft(t)||pa(t)!=ei)return!1;var e=tn(t);if(e===null)return!0;var n=ri.call(e,"constructor")&&e.constructor;return typeof n=="function"&&n instanceof n&&Nr.call(n)==ai}const ii=te({compatConfig:{MODE:3},name:"ResizeObserver",props:{disabled:Boolean,onResize:Function},emits:["resize"],setup:function(e,n){var r=n.slots,a=pr({width:0,height:0,offsetHeight:0,offsetWidth:0}),i=null,o=null,u=function(){o&&(o.disconnect(),o=null)},l=function(S){var s=e.onResize,m=S[0].target,f=m.getBoundingClientRect(),p=f.width,c=f.height,A=m.offsetWidth,v=m.offsetHeight,d=Math.floor(p),b=Math.floor(c);if(a.width!==d||a.height!==b||a.offsetWidth!==A||a.offsetHeight!==v){var g={width:d,height:b,offsetWidth:A,offsetHeight:v};ze(a,g),s&&Promise.resolve().then(function(){s(_(_({},g),{},{offsetWidth:A,offsetHeight:v}),m)})}},C=Ue(),y=function(){var S=e.disabled;if(S){u();return}var s=It(C),m=s!==i;m&&(u(),i=s),!o&&s&&(o=new La(l),o.observe(s))};return Oe(function(){y()}),hr(function(){y()}),ba(function(){u()}),de(function(){return e.disabled},function(){y()},{flush:"post"}),function(){var x;return(x=r.default)===null||x===void 0?void 0:x.call(r)[0]}}});function oi(t){return ya(t)||xa(t)||wa(t)||Ca()}function ui(t){t.target.composing=!0}function pn(t){t.target.composing&&(t.target.composing=!1,li(t.target,"input"))}function li(t,e){var n=document.createEvent("HTMLEvents");n.initEvent(e,!0,!0),t.dispatchEvent(n)}function yt(t,e,n,r){t.addEventListener(e,n,r)}var zr={created:function(e,n){(!n.modifiers||!n.modifiers.lazy)&&(yt(e,"compositionstart",ui),yt(e,"compositionend",pn),yt(e,"change",pn))}},si={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z"}}]},name:"search",theme:"outlined"};function bn(t){for(var e=1;e=1},subscribe:function(e){return Ce.size||this.register(),xt+=1,Ce.set(xt,e),e(Qe),xt},unsubscribe:function(e){Ce.delete(e),Ce.size||this.unregister()},unregister:function(){var e=this;Object.keys(Xe).forEach(function(n){var r=Xe[n],a=e.matchHandlers[r];a==null||a.mql.removeListener(a==null?void 0:a.listener)}),Ce.clear()},register:function(){var e=this;Object.keys(Xe).forEach(function(n){var r=Xe[n],a=function(u){var l=u.matches;e.dispatch(_(_({},Qe),{},T({},n,l)))},i=window.matchMedia(r);i.addListener(a),e.matchHandlers[r]={mql:i,listener:a},a(i)})}},ci=Symbol("SizeProvider"),di=function(e){var n=e?R(function(){return e.size}):ct(ci,R(function(){return"default"}));return n},wt={transitionstart:{transition:"transitionstart",WebkitTransition:"webkitTransitionStart",MozTransition:"mozTransitionStart",OTransition:"oTransitionStart",msTransition:"MSTransitionStart"},animationstart:{animation:"animationstart",WebkitAnimation:"webkitAnimationStart",MozAnimation:"mozAnimationStart",OAnimation:"oAnimationStart",msAnimation:"MSAnimationStart"}},Ct={transitionend:{transition:"transitionend",WebkitTransition:"webkitTransitionEnd",MozTransition:"mozTransitionEnd",OTransition:"oTransitionEnd",msTransition:"MSTransitionEnd"},animationend:{animation:"animationend",WebkitAnimation:"webkitAnimationEnd",MozAnimation:"mozAnimationEnd",OAnimation:"oAnimationEnd",msAnimation:"MSAnimationEnd"}},$e=[],Ie=[];function vi(){var t=document.createElement("div"),e=t.style;"AnimationEvent"in window||(delete wt.animationstart.animation,delete Ct.animationend.animation),"TransitionEvent"in window||(delete wt.transitionstart.transition,delete Ct.transitionend.transition);function n(r,a){for(var i in r)if(r.hasOwnProperty(i)){var o=r[i];for(var u in o)if(u in e){a.push(o[u]);break}}}n(wt,$e),n(Ct,Ie)}typeof window<"u"&&typeof document<"u"&&vi();function wn(t,e,n){t.addEventListener(e,n,!1)}function Cn(t,e,n){t.removeEventListener(e,n,!1)}var Je={startEvents:$e,addStartEventListener:function(e,n){if($e.length===0){setTimeout(n,0);return}$e.forEach(function(r){wn(e,r,n)})},removeStartEventListener:function(e,n){$e.length!==0&&$e.forEach(function(r){Cn(e,r,n)})},endEvents:Ie,addEndEventListener:function(e,n){if(Ie.length===0){setTimeout(n,0);return}Ie.forEach(function(r){wn(e,r,n)})},removeEndEventListener:function(e,n){Ie.length!==0&&Ie.forEach(function(r){Cn(e,r,n)})}},pe;function Fn(t){return!t||t.offsetParent===null}function gi(t){var e=(t||"").match(/rgba?\((\d*), (\d*), (\d*)(, [\.\d]*)?\)/);return e&&e[1]&&e[2]&&e[3]?!(e[1]===e[2]&&e[2]===e[3]):!0}const mi=te({compatConfig:{MODE:3},name:"Wave",props:{insertExtraNode:Boolean,disabled:Boolean},setup:function(e,n){var r=n.slots,a=n.expose,i=Ue(),o=fe("",e),u=o.csp,l=o.prefixCls;a({csp:u});var C=null,y=null,x=null,S=!1,s=null,m=!1,f=function(g){if(!m){var F=It(i);!g||g.target!==F||S||v(F)}},p=function(g){!g||g.animationName!=="fadeEffect"||v(g.target)},c=function(){var g=e.insertExtraNode;return g?"".concat(l.value,"-click-animating"):"".concat(l.value,"-click-animating-without-extra-node")},A=function(g,F){var I=e.insertExtraNode,O=e.disabled;if(!(O||!g||Fn(g)||g.className.indexOf("-leave")>=0)){s=document.createElement("div"),s.className="".concat(l.value,"-click-animating-node");var M=c();if(g.removeAttribute(M),g.setAttribute(M,"true"),pe=pe||document.createElement("style"),F&&F!=="#ffffff"&&F!=="rgb(255, 255, 255)"&&gi(F)&&!/rgba\(\d*, \d*, \d*, 0\)/.test(F)&&F!=="transparent"){var q;(q=u.value)!==null&&q!==void 0&&q.nonce&&(pe.nonce=u.value.nonce),s.style.borderColor=F,pe.innerHTML=` +import{a4 as ft,a5 as pa,d as te,o as Oe,a6 as hr,a7 as ba,w as de,a8 as It,a9 as ze,aa as _,ab as Ue,U as pr,ac as ya,ad as xa,ae as wa,af as Ca,x as z,ag as Zt,ah as T,j as R,ai as ct,aj as fe,$ as le,c as Ne,ak as X,al as Mt,am as Fa,an as dt,ao as Aa,ap as br,aq as yr,k as H,ar as ve,as as Sa,at as Yt,au as Me,av as Ea,aw as Oa,ax as Xt,ay as Ee,az as J,aA as vt,aB as Pa,aC as ie,aD as xe,aE as xr,aF as Ta,aG as _a,aH as jt,F as We,aI as $a,aJ as Ia,aK as Ma,aL as wr,aM as ja,aN as Na,s as Cr,aO as Ra,aP as Fr,aQ as Nt,q as we,aR as za,aS as Ba,aT as it,v as Ar,aU as Sr}from"./index-B-RmZRr2.js";import{o as qa,i as La,a as Pe,M as Er,g as Va,e as ka,b as Da,c as Wa,d as Or,f as Pr,k as gt,h as Tr,j as Qt,l as Ga,m as _r,s as Ua,n as Ha,U as mn,p as Jt,q as $r,r as lt,t as Ka,S as Ir,u as Za,_ as mt,v as Mr,w as Ya,x as hn,y as jr}from"./isEqual-CAQ2DK4R.js";import{u as Xa,a as en,F as Rt,c as Fe}from"./FormItemContext-Buff0-hx.js";import{_ as Qa,a as Ja,o as be}from"./classCallCheck-BMo4V_0Q.js";import{w as he}from"./raf-nDFcuFT6.js";var tn=qa(Object.getPrototypeOf,Object),ei="[object Object]",ti=Function.prototype,ni=Object.prototype,Nr=ti.toString,ri=ni.hasOwnProperty,ai=Nr.call(Object);function Rr(t){if(!ft(t)||pa(t)!=ei)return!1;var e=tn(t);if(e===null)return!0;var n=ri.call(e,"constructor")&&e.constructor;return typeof n=="function"&&n instanceof n&&Nr.call(n)==ai}const ii=te({compatConfig:{MODE:3},name:"ResizeObserver",props:{disabled:Boolean,onResize:Function},emits:["resize"],setup:function(e,n){var r=n.slots,a=pr({width:0,height:0,offsetHeight:0,offsetWidth:0}),i=null,o=null,u=function(){o&&(o.disconnect(),o=null)},l=function(S){var s=e.onResize,m=S[0].target,f=m.getBoundingClientRect(),p=f.width,c=f.height,A=m.offsetWidth,v=m.offsetHeight,d=Math.floor(p),b=Math.floor(c);if(a.width!==d||a.height!==b||a.offsetWidth!==A||a.offsetHeight!==v){var g={width:d,height:b,offsetWidth:A,offsetHeight:v};ze(a,g),s&&Promise.resolve().then(function(){s(_(_({},g),{},{offsetWidth:A,offsetHeight:v}),m)})}},C=Ue(),y=function(){var S=e.disabled;if(S){u();return}var s=It(C),m=s!==i;m&&(u(),i=s),!o&&s&&(o=new La(l),o.observe(s))};return Oe(function(){y()}),hr(function(){y()}),ba(function(){u()}),de(function(){return e.disabled},function(){y()},{flush:"post"}),function(){var x;return(x=r.default)===null||x===void 0?void 0:x.call(r)[0]}}});function oi(t){return ya(t)||xa(t)||wa(t)||Ca()}function ui(t){t.target.composing=!0}function pn(t){t.target.composing&&(t.target.composing=!1,li(t.target,"input"))}function li(t,e){var n=document.createEvent("HTMLEvents");n.initEvent(e,!0,!0),t.dispatchEvent(n)}function yt(t,e,n,r){t.addEventListener(e,n,r)}var zr={created:function(e,n){(!n.modifiers||!n.modifiers.lazy)&&(yt(e,"compositionstart",ui),yt(e,"compositionend",pn),yt(e,"change",pn))}},si={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z"}}]},name:"search",theme:"outlined"};function bn(t){for(var e=1;e=1},subscribe:function(e){return Ce.size||this.register(),xt+=1,Ce.set(xt,e),e(Qe),xt},unsubscribe:function(e){Ce.delete(e),Ce.size||this.unregister()},unregister:function(){var e=this;Object.keys(Xe).forEach(function(n){var r=Xe[n],a=e.matchHandlers[r];a==null||a.mql.removeListener(a==null?void 0:a.listener)}),Ce.clear()},register:function(){var e=this;Object.keys(Xe).forEach(function(n){var r=Xe[n],a=function(u){var l=u.matches;e.dispatch(_(_({},Qe),{},T({},n,l)))},i=window.matchMedia(r);i.addListener(a),e.matchHandlers[r]={mql:i,listener:a},a(i)})}},ci=Symbol("SizeProvider"),di=function(e){var n=e?R(function(){return e.size}):ct(ci,R(function(){return"default"}));return n},wt={transitionstart:{transition:"transitionstart",WebkitTransition:"webkitTransitionStart",MozTransition:"mozTransitionStart",OTransition:"oTransitionStart",msTransition:"MSTransitionStart"},animationstart:{animation:"animationstart",WebkitAnimation:"webkitAnimationStart",MozAnimation:"mozAnimationStart",OAnimation:"oAnimationStart",msAnimation:"MSAnimationStart"}},Ct={transitionend:{transition:"transitionend",WebkitTransition:"webkitTransitionEnd",MozTransition:"mozTransitionEnd",OTransition:"oTransitionEnd",msTransition:"MSTransitionEnd"},animationend:{animation:"animationend",WebkitAnimation:"webkitAnimationEnd",MozAnimation:"mozAnimationEnd",OAnimation:"oAnimationEnd",msAnimation:"MSAnimationEnd"}},$e=[],Ie=[];function vi(){var t=document.createElement("div"),e=t.style;"AnimationEvent"in window||(delete wt.animationstart.animation,delete Ct.animationend.animation),"TransitionEvent"in window||(delete wt.transitionstart.transition,delete Ct.transitionend.transition);function n(r,a){for(var i in r)if(r.hasOwnProperty(i)){var o=r[i];for(var u in o)if(u in e){a.push(o[u]);break}}}n(wt,$e),n(Ct,Ie)}typeof window<"u"&&typeof document<"u"&&vi();function wn(t,e,n){t.addEventListener(e,n,!1)}function Cn(t,e,n){t.removeEventListener(e,n,!1)}var Je={startEvents:$e,addStartEventListener:function(e,n){if($e.length===0){setTimeout(n,0);return}$e.forEach(function(r){wn(e,r,n)})},removeStartEventListener:function(e,n){$e.length!==0&&$e.forEach(function(r){Cn(e,r,n)})},endEvents:Ie,addEndEventListener:function(e,n){if(Ie.length===0){setTimeout(n,0);return}Ie.forEach(function(r){wn(e,r,n)})},removeEndEventListener:function(e,n){Ie.length!==0&&Ie.forEach(function(r){Cn(e,r,n)})}},pe;function Fn(t){return!t||t.offsetParent===null}function gi(t){var e=(t||"").match(/rgba?\((\d*), (\d*), (\d*)(, [\.\d]*)?\)/);return e&&e[1]&&e[2]&&e[3]?!(e[1]===e[2]&&e[2]===e[3]):!0}const mi=te({compatConfig:{MODE:3},name:"Wave",props:{insertExtraNode:Boolean,disabled:Boolean},setup:function(e,n){var r=n.slots,a=n.expose,i=Ue(),o=fe("",e),u=o.csp,l=o.prefixCls;a({csp:u});var C=null,y=null,x=null,S=!1,s=null,m=!1,f=function(g){if(!m){var F=It(i);!g||g.target!==F||S||v(F)}},p=function(g){!g||g.animationName!=="fadeEffect"||v(g.target)},c=function(){var g=e.insertExtraNode;return g?"".concat(l.value,"-click-animating"):"".concat(l.value,"-click-animating-without-extra-node")},A=function(g,F){var I=e.insertExtraNode,O=e.disabled;if(!(O||!g||Fn(g)||g.className.indexOf("-leave")>=0)){s=document.createElement("div"),s.className="".concat(l.value,"-click-animating-node");var M=c();if(g.removeAttribute(M),g.setAttribute(M,"true"),pe=pe||document.createElement("style"),F&&F!=="#ffffff"&&F!=="rgb(255, 255, 255)"&&gi(F)&&!/rgba\(\d*, \d*, \d*, 0\)/.test(F)&&F!=="transparent"){var q;(q=u.value)!==null&&q!==void 0&&q.nonce&&(pe.nonce=u.value.nonce),s.style.borderColor=F,pe.innerHTML=` [`.concat(l.value,"-click-animating-without-extra-node='true']::after, .").concat(l.value,`-click-animating-node { --antd-wave-shadow-color: `).concat(F,`; }`),document.body.contains(pe)||document.body.appendChild(pe)}I&&g.appendChild(s),Je.addStartEventListener(g,f),Je.addEndEventListener(g,p)}},v=function(g){if(!(!g||g===s||!(g instanceof Element))){var F=e.insertExtraNode,I=c();g.setAttribute(I,"false"),pe&&(pe.innerHTML=""),F&&s&&g.contains(s)&&g.removeChild(s),Je.removeStartEventListener(g,f),Je.removeEndEventListener(g,p)}},d=function(g){if(!(!g||!g.getAttribute||g.getAttribute("disabled")||g.className.indexOf("disabled")>=0)){var F=function(O){if(!(O.target.tagName==="INPUT"||Fn(O.target))){v(g);var M=getComputedStyle(g).getPropertyValue("border-top-color")||getComputedStyle(g).getPropertyValue("border-color")||getComputedStyle(g).getPropertyValue("background-color");y=setTimeout(function(){return A(g,M)},0),he.cancel(x),S=!0,x=he(function(){S=!1},10)}};return g.addEventListener("click",F,!0),{cancel:function(){g.removeEventListener("click",F,!0)}}}};return Oe(function(){le(function(){var b=It(i);b.nodeType===1&&(C=d(b))})}),Ne(function(){C&&C.cancel(),clearTimeout(y),m=!0}),function(){var b;return(b=r.default)===null||b===void 0?void 0:b.call(r)[0]}}});var hi=function(){return{prefixCls:String,type:String,htmlType:{type:String,default:"button"},shape:{type:String},size:{type:String},loading:{type:[Boolean,Object],default:function(){return!1}},disabled:{type:Boolean,default:void 0},ghost:{type:Boolean,default:void 0},block:{type:Boolean,default:void 0},danger:{type:Boolean,default:void 0},icon:X.any,href:String,target:String,title:String,onClick:{type:Function},onMousedown:{type:Function}}},An=function(e){e&&(e.style.width="0px",e.style.opacity="0",e.style.transform="scale(0)")},Sn=function(e){le(function(){e&&(e.style.width="".concat(e.scrollWidth,"px"),e.style.opacity="1",e.style.transform="scale(1)")})},En=function(e){e&&e.style&&(e.style.width=null,e.style.opacity=null,e.style.transform=null)};const pi=te({compatConfig:{MODE:3},name:"LoadingIcon",props:{prefixCls:String,loading:[Boolean,Object],existIcon:Boolean},setup:function(e){return function(){var n=e.existIcon,r=e.prefixCls,a=e.loading;if(n)return z("span",{class:"".concat(r,"-loading-icon")},[z(Mt,null,null)]);var i=!!a;return z(Fa,{name:"".concat(r,"-loading-icon-motion"),onBeforeEnter:An,onEnter:Sn,onAfterEnter:En,onBeforeLeave:Sn,onLeave:function(u){setTimeout(function(){An(u)})},onAfterLeave:En},{default:function(){return[i?z("span",{class:"".concat(r,"-loading-icon")},[z(Mt,null,null)]):null]}})}}});var On=/^[\u4e00-\u9fa5]{2}$/,Pn=On.test.bind(On);function et(t){return t==="text"||t==="link"}const qe=te({compatConfig:{MODE:3},name:"AButton",inheritAttrs:!1,__ANT_BUTTON:!0,props:yr(hi(),{type:"default"}),slots:["icon"],setup:function(e,n){var r=n.slots,a=n.attrs,i=n.emit,o=n.expose,u=fe("btn",e),l=u.prefixCls,C=u.autoInsertSpaceInButton,y=u.direction,x=u.size,S=H(null),s=H(void 0),m=!1,f=H(!1),p=H(!1),c=R(function(){return C.value!==!1}),A=R(function(){return ve(e.loading)==="object"&&e.loading.delay?e.loading.delay||!0:!!e.loading});de(A,function(O){clearTimeout(s.value),typeof A.value=="number"?s.value=setTimeout(function(){f.value=O},A.value):f.value=O},{immediate:!0});var v=R(function(){var O,M=e.type,q=e.shape,L=q===void 0?"default":q,j=e.ghost,W=e.block,B=e.danger,P=l.value,E={large:"lg",small:"sm",middle:void 0},w=x.value,h=w&&E[w]||"";return O={},T(O,"".concat(P),!0),T(O,"".concat(P,"-").concat(M),M),T(O,"".concat(P,"-").concat(L),L!=="default"&&L),T(O,"".concat(P,"-").concat(h),h),T(O,"".concat(P,"-loading"),f.value),T(O,"".concat(P,"-background-ghost"),j&&!et(M)),T(O,"".concat(P,"-two-chinese-chars"),p.value&&c.value),T(O,"".concat(P,"-block"),W),T(O,"".concat(P,"-dangerous"),!!B),T(O,"".concat(P,"-rtl"),y.value==="rtl"),O}),d=function(){var M=S.value;if(!(!M||C.value===!1)){var q=M.textContent;m&&Pn(q)?p.value||(p.value=!0):p.value&&(p.value=!1)}},b=function(M){if(f.value||e.disabled){M.preventDefault();return}i("click",M)},g=function(M,q){var L=q?" ":"";if(M.type===Sa){var j=M.children.trim();return Pn(j)&&(j=j.split("").join(L)),z("span",null,[j])}return M};dt(function(){Aa(!(e.ghost&&et(e.type)),"Button","`link` or `text` button can't be a `ghost` button.")}),Oe(d),hr(d),Ne(function(){s.value&&clearTimeout(s.value)});var F=function(){var M;(M=S.value)===null||M===void 0||M.focus()},I=function(){var M;(M=S.value)===null||M===void 0||M.blur()};return o({focus:F,blur:I}),function(){var O,M,q=e.icon,L=q===void 0?(O=r.icon)===null||O===void 0?void 0:O.call(r):q,j=br((M=r.default)===null||M===void 0?void 0:M.call(r));m=j.length===1&&!L&&!et(e.type);var W=e.type,B=e.htmlType,P=e.disabled,E=e.href,w=e.title,h=e.target,$=e.onMousedown,N=f.value?"loading":L,V=_(_({},a),{},{title:w,disabled:P,class:[v.value,a.class,T({},"".concat(l.value,"-icon-only"),j.length===0&&!!N)],onClick:b,onMousedown:$});P||delete V.disabled;var D=L&&!f.value?L:z(pi,{existIcon:!!L,prefixCls:l.value,loading:!!f.value},null),U=j.map(function(Z){return g(Z,m&&c.value)});if(E!==void 0)return z("a",_(_({},V),{},{href:E,target:h,ref:S}),[D,U]);var K=z("button",_(_({},V),{},{ref:S,type:B}),[D,U]);return et(W)?K:z(mi,{ref:"wave",disabled:!!f.value},{default:function(){return[K]}})}}});var bi=Qa(function t(e){Ja(this,t),this.error=new Error("unreachable case: ".concat(JSON.stringify(e)))}),yi=function(){return{prefixCls:String,size:{type:String}}};const zt=te({compatConfig:{MODE:3},name:"AButtonGroup",props:yi(),setup:function(e,n){var r=n.slots,a=fe("btn-group",e),i=a.prefixCls,o=a.direction,u=R(function(){var l,C=e.size,y="";switch(C){case"large":y="lg";break;case"small":y="sm";break;case"middle":case void 0:break;default:console.warn(new bi(C).error)}return l={},T(l,"".concat(i.value),!0),T(l,"".concat(i.value,"-").concat(y),y),T(l,"".concat(i.value,"-rtl"),o.value==="rtl"),l});return function(){var l;return z("div",{class:u.value},[br((l=r.default)===null||l===void 0?void 0:l.call(r))])}}});qe.Group=zt;qe.install=function(t){return t.component(qe.name,qe),t.component(zt.name,zt),t};function Br(t,e,n,r){for(var a=t.length,i=n+-1;++i-1}function qr(t,e){if(t.classList)return t.classList.contains(e);var n=t.className;return" ".concat(n," ").indexOf(" ".concat(e," "))>-1}function Tn(t,e){t.classList?t.classList.add(e):qr(t,e)||(t.className="".concat(t.className," ").concat(e))}function _n(t,e){if(t.classList)t.classList.remove(e);else if(qr(t,e)){var n=t.className;t.className=" ".concat(n," ").replace(" ".concat(e," ")," ")}}var Ai=function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"ant-motion-collapse",n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return{name:e,appear:n,css:!0,onBeforeEnter:function(a){a.style.height="0px",a.style.opacity="0",Tn(a,e)},onEnter:function(a){le(function(){a.style.height="".concat(a.scrollHeight,"px"),a.style.opacity="1"})},onAfterEnter:function(a){a&&(_n(a,e),a.style.height=null,a.style.opacity=null)},onBeforeLeave:function(a){Tn(a,e),a.style.height="".concat(a.offsetHeight,"px"),a.style.opacity=null},onLeave:function(a){setTimeout(function(){a.style.height="0px",a.style.opacity="0"})},onAfterLeave:function(a){a&&(_n(a,e),a.style&&(a.style.height=null,a.style.opacity=null))}}};function rn(t,e){for(var n=-1,r=t==null?0:t.length,a=Array(r);++na?0:a+e),n=n>a?a:n,n<0&&(n+=a),a=e>n?0:n-e>>>0,e>>>=0;for(var i=Array(a);++r0){if(++e>=Yi)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}var Wr=Ji(Zi);function eo(t){return Wr(Dr(t,void 0,Ui),t+"")}var to=function(){return Oa()&&window.document.documentElement},tt,no=function(){if(!to())return!1;if(tt!==void 0)return tt;var e=document.createElement("div");return e.style.display="flex",e.style.flexDirection="column",e.style.rowGap="1px",e.appendChild(document.createElement("div")),e.appendChild(document.createElement("div")),document.body.appendChild(e),tt=e.scrollHeight===1,document.body.removeChild(e),tt};const ro=function(){var t=H(!1);return Oe(function(){t.value=no()}),t};var Gr=Symbol("rowContextKey"),ao=function(e){Xt(Gr,e)},io=function(){return ct(Gr,{gutter:R(function(){}),wrap:R(function(){}),supportFlexGap:R(function(){})})};Ee("top","middle","bottom","stretch");Ee("start","end","center","space-around","space-between");var oo=function(){return{align:String,justify:String,prefixCls:String,gutter:{type:[Number,Array,Object],default:0},wrap:{type:Boolean,default:void 0}}},uo=te({compatConfig:{MODE:3},name:"ARow",props:oo(),setup:function(e,n){var r=n.slots,a=fe("row",e),i=a.prefixCls,o=a.direction,u,l=H({xs:!0,sm:!0,md:!0,lg:!0,xl:!0,xxl:!0,xxxl:!0}),C=ro();Oe(function(){u=xn.subscribe(function(s){var m=e.gutter||0;(!Array.isArray(m)&&ve(m)==="object"||Array.isArray(m)&&(ve(m[0])==="object"||ve(m[1])==="object"))&&(l.value=s)})}),Ne(function(){xn.unsubscribe(u)});var y=R(function(){var s=[0,0],m=e.gutter,f=m===void 0?0:m,p=Array.isArray(f)?f:[f,0];return p.forEach(function(c,A){if(ve(c)==="object")for(var v=0;v0?"".concat(s[0]/-2,"px"):void 0,p=s[1]>0?"".concat(s[1]/-2,"px"):void 0;return f&&(m.marginLeft=f,m.marginRight=f),C.value?m.rowGap="".concat(s[1],"px"):p&&(m.marginTop=p,m.marginBottom=p),m});return function(){var s;return z("div",{class:x.value,style:S.value},[(s=r.default)===null||s===void 0?void 0:s.call(r)])}}});function lo(t){return typeof t=="number"?"".concat(t," ").concat(t," auto"):/^\d+(\.\d+)?(px|em|rem|%)$/.test(t)?"0 0 ".concat(t):t}var so=function(){return{span:[String,Number],order:[String,Number],offset:[String,Number],push:[String,Number],pull:[String,Number],xs:{type:[String,Number,Object],default:void 0},sm:{type:[String,Number,Object],default:void 0},md:{type:[String,Number,Object],default:void 0},lg:{type:[String,Number,Object],default:void 0},xl:{type:[String,Number,Object],default:void 0},xxl:{type:[String,Number,Object],default:void 0},xxxl:{type:[String,Number,Object],default:void 0},prefixCls:String,flex:[String,Number]}};const Ur=te({compatConfig:{MODE:3},name:"ACol",props:so(),setup:function(e,n){var r=n.slots,a=io(),i=a.gutter,o=a.supportFlexGap,u=a.wrap,l=fe("col",e),C=l.prefixCls,y=l.direction,x=R(function(){var s,m=e.span,f=e.order,p=e.offset,c=e.push,A=e.pull,v=C.value,d={};return["xs","sm","md","lg","xl","xxl","xxxl"].forEach(function(b){var g,F={},I=e[b];typeof I=="number"?F.span=I:ve(I)==="object"&&(F=I||{}),d=_(_({},d),{},(g={},T(g,"".concat(v,"-").concat(b,"-").concat(F.span),F.span!==void 0),T(g,"".concat(v,"-").concat(b,"-order-").concat(F.order),F.order||F.order===0),T(g,"".concat(v,"-").concat(b,"-offset-").concat(F.offset),F.offset||F.offset===0),T(g,"".concat(v,"-").concat(b,"-push-").concat(F.push),F.push||F.push===0),T(g,"".concat(v,"-").concat(b,"-pull-").concat(F.pull),F.pull||F.pull===0),T(g,"".concat(v,"-rtl"),y.value==="rtl"),g))}),J(v,(s={},T(s,"".concat(v,"-").concat(m),m!==void 0),T(s,"".concat(v,"-order-").concat(f),f),T(s,"".concat(v,"-offset-").concat(p),p),T(s,"".concat(v,"-push-").concat(c),c),T(s,"".concat(v,"-pull-").concat(A),A),s),d)}),S=R(function(){var s=e.flex,m=i.value,f={};if(m&&m[0]>0){var p="".concat(m[0]/2,"px");f.paddingLeft=p,f.paddingRight=p}if(m&&m[1]>0&&!o.value){var c="".concat(m[1]/2,"px");f.paddingTop=c,f.paddingBottom=c}return s&&(f.flex=lo(s),u.value===!1&&!f.minWidth&&(f.minWidth=0)),f});return function(){var s;return z("div",{class:x.value,style:S.value},[(s=r.default)===null||s===void 0?void 0:s.call(r)])}}});function fo(t,e){for(var n=-1,r=t==null?0:t.length;++n"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function ut(t,e,n){return Nu()?ut=Reflect.construct.bind():ut=function(a,i,o){var u=[null];u.push.apply(u,i);var l=Function.bind.apply(a,u),C=new l;return o&&Ge(C,o.prototype),C},ut.apply(null,arguments)}function Ru(t){return Function.toString.call(t).indexOf("[native code]")!==-1}function qt(t){var e=typeof Map=="function"?new Map:void 0;return qt=function(r){if(r===null||!Ru(r))return r;if(typeof r!="function")throw new TypeError("Super expression must either be null or a function");if(typeof e<"u"){if(e.has(r))return e.get(r);e.set(r,a)}function a(){return ut(r,arguments,Bt(this).constructor)}return a.prototype=Object.create(r.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),Ge(a,r)},qt(t)}var zu=/%[sdj%]/g,Bu=function(){};function Lt(t){if(!t||!t.length)return null;var e={};return t.forEach(function(n){var r=n.field;e[r]=e[r]||[],e[r].push(n)}),e}function se(t){for(var e=arguments.length,n=new Array(e>1?e-1:0),r=1;r=i)return u;switch(u){case"%s":return String(n[a++]);case"%d":return Number(n[a++]);case"%j":try{return JSON.stringify(n[a++])}catch{return"[Circular]"}break;default:return u}});return o}return t}function qu(t){return t==="string"||t==="url"||t==="hex"||t==="email"||t==="date"||t==="pattern"}function ee(t,e){return!!(t==null||e==="array"&&Array.isArray(t)&&!t.length||qu(e)&&typeof t=="string"&&!t)}function Lu(t,e,n){var r=[],a=0,i=t.length;function o(u){r.push.apply(r,u||[]),a++,a===i&&n(r)}t.forEach(function(u){e(u,o)})}function Wn(t,e,n){var r=0,a=t.length;function i(o){if(o&&o.length){n(o);return}var u=r;r=r+1,u()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+\.)+[a-zA-Z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]{2,}))$/,hex:/^#?([a-f0-9]{6}|[a-f0-9]{3})$/i},Be={integer:function(e){return Be.number(e)&&parseInt(e,10)===e},float:function(e){return Be.number(e)&&!Be.integer(e)},array:function(e){return Array.isArray(e)},regexp:function(e){if(e instanceof RegExp)return!0;try{return!!new RegExp(e)}catch{return!1}},date:function(e){return typeof e.getTime=="function"&&typeof e.getMonth=="function"&&typeof e.getYear=="function"&&!isNaN(e.getTime())},number:function(e){return isNaN(e)?!1:typeof e=="number"},object:function(e){return typeof e=="object"&&!Be.array(e)},method:function(e){return typeof e=="function"},email:function(e){return typeof e=="string"&&e.length<=320&&!!e.match(Kn.email)},url:function(e){return typeof e=="string"&&e.length<=2048&&!!e.match(Uu())},hex:function(e){return typeof e=="string"&&!!e.match(Kn.hex)}},Hu=function(e,n,r,a,i){if(e.required&&n===void 0){Jr(e,n,r,a,i);return}var o=["integer","float","array","regexp","object","method","email","number","date","url","hex"],u=e.type;o.indexOf(u)>-1?Be[u](n)||a.push(se(i.messages.types[u],e.fullField,e.type)):u&&typeof n!==e.type&&a.push(se(i.messages.types[u],e.fullField,e.type))},Ku=function(e,n,r,a,i){var o=typeof e.len=="number",u=typeof e.min=="number",l=typeof e.max=="number",C=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,y=n,x=null,S=typeof n=="number",s=typeof n=="string",m=Array.isArray(n);if(S?x="number":s?x="string":m&&(x="array"),!x)return!1;m&&(y=n.length),s&&(y=n.replace(C,"_").length),o?y!==e.len&&a.push(se(i.messages[x].len,e.fullField,e.len)):u&&!l&&ye.max?a.push(se(i.messages[x].max,e.fullField,e.max)):u&&l&&(ye.max)&&a.push(se(i.messages[x].range,e.fullField,e.min,e.max))},Te="enum",Zu=function(e,n,r,a,i){e[Te]=Array.isArray(e[Te])?e[Te]:[],e[Te].indexOf(n)===-1&&a.push(se(i.messages[Te],e.fullField,e[Te].join(", ")))},Yu=function(e,n,r,a,i){if(e.pattern){if(e.pattern instanceof RegExp)e.pattern.lastIndex=0,e.pattern.test(n)||a.push(se(i.messages.pattern.mismatch,e.fullField,n,e.pattern));else if(typeof e.pattern=="string"){var o=new RegExp(e.pattern);o.test(n)||a.push(se(i.messages.pattern.mismatch,e.fullField,n,e.pattern))}}},G={required:Jr,whitespace:Gu,type:Hu,range:Ku,enum:Zu,pattern:Yu},Xu=function(e,n,r,a,i){var o=[],u=e.required||!e.required&&a.hasOwnProperty(e.field);if(u){if(ee(n,"string")&&!e.required)return r();G.required(e,n,a,o,i,"string"),ee(n,"string")||(G.type(e,n,a,o,i),G.range(e,n,a,o,i),G.pattern(e,n,a,o,i),e.whitespace===!0&&G.whitespace(e,n,a,o,i))}r(o)},Qu=function(e,n,r,a,i){var o=[],u=e.required||!e.required&&a.hasOwnProperty(e.field);if(u){if(ee(n)&&!e.required)return r();G.required(e,n,a,o,i),n!==void 0&&G.type(e,n,a,o,i)}r(o)},Ju=function(e,n,r,a,i){var o=[],u=e.required||!e.required&&a.hasOwnProperty(e.field);if(u){if(n===""&&(n=void 0),ee(n)&&!e.required)return r();G.required(e,n,a,o,i),n!==void 0&&(G.type(e,n,a,o,i),G.range(e,n,a,o,i))}r(o)},el=function(e,n,r,a,i){var o=[],u=e.required||!e.required&&a.hasOwnProperty(e.field);if(u){if(ee(n)&&!e.required)return r();G.required(e,n,a,o,i),n!==void 0&&G.type(e,n,a,o,i)}r(o)},tl=function(e,n,r,a,i){var o=[],u=e.required||!e.required&&a.hasOwnProperty(e.field);if(u){if(ee(n)&&!e.required)return r();G.required(e,n,a,o,i),ee(n)||G.type(e,n,a,o,i)}r(o)},nl=function(e,n,r,a,i){var o=[],u=e.required||!e.required&&a.hasOwnProperty(e.field);if(u){if(ee(n)&&!e.required)return r();G.required(e,n,a,o,i),n!==void 0&&(G.type(e,n,a,o,i),G.range(e,n,a,o,i))}r(o)},rl=function(e,n,r,a,i){var o=[],u=e.required||!e.required&&a.hasOwnProperty(e.field);if(u){if(ee(n)&&!e.required)return r();G.required(e,n,a,o,i),n!==void 0&&(G.type(e,n,a,o,i),G.range(e,n,a,o,i))}r(o)},al=function(e,n,r,a,i){var o=[],u=e.required||!e.required&&a.hasOwnProperty(e.field);if(u){if(n==null&&!e.required)return r();G.required(e,n,a,o,i,"array"),n!=null&&(G.type(e,n,a,o,i),G.range(e,n,a,o,i))}r(o)},il=function(e,n,r,a,i){var o=[],u=e.required||!e.required&&a.hasOwnProperty(e.field);if(u){if(ee(n)&&!e.required)return r();G.required(e,n,a,o,i),n!==void 0&&G.type(e,n,a,o,i)}r(o)},ol="enum",ul=function(e,n,r,a,i){var o=[],u=e.required||!e.required&&a.hasOwnProperty(e.field);if(u){if(ee(n)&&!e.required)return r();G.required(e,n,a,o,i),n!==void 0&&G[ol](e,n,a,o,i)}r(o)},ll=function(e,n,r,a,i){var o=[],u=e.required||!e.required&&a.hasOwnProperty(e.field);if(u){if(ee(n,"string")&&!e.required)return r();G.required(e,n,a,o,i),ee(n,"string")||G.pattern(e,n,a,o,i)}r(o)},sl=function(e,n,r,a,i){var o=[],u=e.required||!e.required&&a.hasOwnProperty(e.field);if(u){if(ee(n,"date")&&!e.required)return r();if(G.required(e,n,a,o,i),!ee(n,"date")){var l;n instanceof Date?l=n:l=new Date(n),G.type(e,l,a,o,i),l&&G.range(e,l.getTime(),a,o,i)}}r(o)},fl=function(e,n,r,a,i){var o=[],u=Array.isArray(n)?"array":typeof n;G.required(e,n,a,o,i,u),r(o)},Ft=function(e,n,r,a,i){var o=e.type,u=[],l=e.required||!e.required&&a.hasOwnProperty(e.field);if(l){if(ee(n,o)&&!e.required)return r();G.required(e,n,a,u,i,o),ee(n,o)||G.type(e,n,a,u,i)}r(u)},cl=function(e,n,r,a,i){var o=[],u=e.required||!e.required&&a.hasOwnProperty(e.field);if(u){if(ee(n)&&!e.required)return r();G.required(e,n,a,o,i)}r(o)},Ve={string:Xu,method:Qu,number:Ju,boolean:el,regexp:tl,integer:nl,float:rl,array:al,object:il,enum:ul,pattern:ll,date:sl,url:Ft,hex:Ft,email:Ft,required:fl,any:cl};function Vt(){return{default:"Validation error on field %s",required:"%s is required",enum:"%s must be one of %s",whitespace:"%s cannot be empty",date:{format:"%s date %s is invalid for format %s",parse:"%s date could not be parsed, %s is invalid ",invalid:"%s date %s is invalid"},types:{string:"%s is not a %s",method:"%s is not a %s (function)",array:"%s is not an %s",object:"%s is not an %s",number:"%s is not a %s",date:"%s is not a %s",boolean:"%s is not a %s",integer:"%s is not an %s",float:"%s is not a %s",regexp:"%s is not a valid %s",email:"%s is not a valid %s",url:"%s is not a valid %s",hex:"%s is not a valid %s"},string:{len:"%s must be exactly %s characters",min:"%s must be at least %s characters",max:"%s cannot be longer than %s characters",range:"%s must be between %s and %s characters"},number:{len:"%s must equal %s",min:"%s cannot be less than %s",max:"%s cannot be greater than %s",range:"%s must be between %s and %s"},array:{len:"%s must be exactly %s in length",min:"%s cannot be less than %s in length",max:"%s cannot be greater than %s in length",range:"%s must be between %s and %s in length"},pattern:{mismatch:"%s value %s does not match pattern %s"},clone:function(){var e=JSON.parse(JSON.stringify(this));return e.clone=this.clone,e}}}var kt=Vt(),Ke=function(){function t(n){this.rules=null,this._messages=kt,this.define(n)}var e=t.prototype;return e.define=function(r){var a=this;if(!r)throw new Error("Cannot configure a schema with no rules");if(typeof r!="object"||Array.isArray(r))throw new Error("Rules must be an object");this.rules={},Object.keys(r).forEach(function(i){var o=r[i];a.rules[i]=Array.isArray(o)?o:[o]})},e.messages=function(r){return r&&(this._messages=Hn(Vt(),r)),this._messages},e.validate=function(r,a,i){var o=this;a===void 0&&(a={}),i===void 0&&(i=function(){});var u=r,l=a,C=i;if(typeof l=="function"&&(C=l,l={}),!this.rules||Object.keys(this.rules).length===0)return C&&C(null,u),Promise.resolve(u);function y(f){var p=[],c={};function A(d){if(Array.isArray(d)){var b;p=(b=p).concat.apply(b,d)}else p.push(d)}for(var v=0;v3&&arguments[3]!==void 0?arguments[3]:!1;return e.length&&r&&n===void 0&&!ea(t,e.slice(0,-1))?t:ta(t,e,n,r)}function Dt(t){return ye(t)}function vl(t,e){var n=ea(t,e);return n}function gl(t,e,n){var r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1,a=dl(t,e,n,r);return a}function ml(t,e){return t&&t.some(function(n){return pl(n,e)})}function Zn(t){return ve(t)==="object"&&t!==null&&Object.getPrototypeOf(t)===Object.prototype}function na(t,e){var n=Array.isArray(t)?ie(t):_({},t);return e&&Object.keys(e).forEach(function(r){var a=n[r],i=e[r],o=Zn(a)&&Zn(i);n[r]=o?na(a,i||{}):i}),n}function hl(t){for(var e=arguments.length,n=new Array(e>1?e-1:0),r=1;r-1?a[i?e[o]:o]:void 0}}var jl=Math.max;function Nl(t,e,n){var r=t==null?0:t.length;if(!r)return-1;var a=n==null?0:Ti(n);return a<0&&(a=jl(r+a,0)),Br(t,oa(e),a)}var Rl=Ml(Nl),ua=Symbol("formContextKey"),la=function(e){Xt(ua,e)},cn=function(){return ct(ua,{name:R(function(){}),labelAlign:R(function(){return"right"}),vertical:R(function(){return!1}),addField:function(n,r){},removeField:function(n){},model:R(function(){}),rules:R(function(){}),colon:R(function(){}),labelWrap:R(function(){}),labelCol:R(function(){}),requiredMark:R(function(){return!1}),validateTrigger:R(function(){}),onValidate:function(){},validateMessages:R(function(){return pt})})},sa=Symbol("formItemPrefixContextKey"),zl=function(e){Xt(sa,e)},Bl=function(){return ct(sa,{prefixCls:R(function(){return""})})},dn=function(e,n){var r,a,i,o,u=n.slots,l=n.emit,C=n.attrs,y=_(_({},e),C),x=y.prefixCls,S=y.htmlFor,s=y.labelCol,m=y.labelAlign,f=y.colon,p=y.required,c=y.requiredMark,A=_a("Form"),v=jt(A,1),d=v[0],b=(r=e.label)!==null&&r!==void 0?r:(a=u.label)===null||a===void 0?void 0:a.call(u);if(!b)return null;var g=cn(),F=g.vertical,I=g.labelAlign,O=g.labelCol,M=g.labelWrap,q=g.colon,L=s||(O==null?void 0:O.value)||{},j=m||(I==null?void 0:I.value),W="".concat(x,"-item-label"),B=J(W,j==="left"&&"".concat(W,"-left"),L.class,T({},"".concat(W,"-wrap"),!!M.value)),P=b,E=f===!0||(q==null?void 0:q.value)!==!1&&f!==!1,w=E&&!F.value;if(w&&typeof b=="string"&&b.trim()!==""&&(P=b.replace(/[:|:]\s*$/,"")),P=z(We,null,[P,(i=u.tooltip)===null||i===void 0?void 0:i.call(u,{class:"".concat(x,"-item-tooltip")})]),c==="optional"&&!p){var h,$;P=z(We,null,[P,z("span",{class:"".concat(x,"-item-optional")},[((h=d.value)===null||h===void 0?void 0:h.optional)||(($=$a.Form)===null||$===void 0?void 0:$.optional)])])}var N=J((o={},T(o,"".concat(x,"-item-required"),p),T(o,"".concat(x,"-item-required-mark-optional"),c==="optional"),T(o,"".concat(x,"-item-no-colon"),!E),o));return z(Ur,_(_({},L),{},{class:B}),{default:function(){return[z("label",{for:S,class:N,title:typeof b=="string"?b:"",onClick:function(U){return l("click",U)}},[P])]}})};dn.displayName="FormItemLabel";dn.inheritAttrs=!1;const ql=te({compatConfig:{MODE:3},name:"ErrorList",props:["errors","help","onDomErrorVisibleChange","helpStatus","warnings"],setup:function(e){var n=fe("",e),r=n.prefixCls,a=Bl(),i=a.prefixCls,o=a.status,u=R(function(){return"".concat(i.value,"-item-explain")}),l=R(function(){return!!(e.errors&&e.errors.length)}),C=H(o.value);return de([l,o],function(){l.value&&(C.value=o.value)}),function(){var y,x,S=Ai("".concat(r.value,"-show-help-item")),s=Ia("".concat(r.value,"-show-help-item"),S);return s.class=u.value,(y=e.errors)!==null&&y!==void 0&&y.length?z(Ma,_(_({},s),{},{tag:"div"}),{default:function(){return[(x=e.errors)===null||x===void 0?void 0:x.map(function(f,p){return z("div",{key:p,role:"alert",class:C.value?"".concat(u.value,"-").concat(C.value):""},[f])})]}}):null}}});var Ll={success:Na,warning:ja,error:wr,validating:Mt},Vl=te({compatConfig:{MODE:3},slots:["help","extra","errors"],inheritAttrs:!1,props:["prefixCls","errors","hasFeedback","onDomErrorVisibleChange","wrapperCol","help","extra","status"],setup:function(e,n){var r=n.slots,a=cn(),i=a.wrapperCol,o=_({},a);return delete o.labelCol,delete o.wrapperCol,la(o),zl({prefixCls:R(function(){return e.prefixCls}),status:R(function(){return e.status})}),function(){var u,l,C,y=e.prefixCls,x=e.wrapperCol,S=e.help,s=S===void 0?(u=r.help)===null||u===void 0?void 0:u.call(r):S,m=e.errors,f=m===void 0?(l=r.errors)===null||l===void 0?void 0:l.call(r):m,p=e.hasFeedback,c=e.status,A=e.extra,v=A===void 0?(C=r.extra)===null||C===void 0?void 0:C.call(r):A,d="".concat(y,"-item"),b=x||(i==null?void 0:i.value)||{},g=J("".concat(d,"-control"),b.class),F=c&&Ll[c];return z(Ur,_(_({},b),{},{class:g}),{default:function(){var O;return z(We,null,[z("div",{class:"".concat(d,"-control-input")},[z("div",{class:"".concat(d,"-control-input-content")},[(O=r.default)===null||O===void 0?void 0:O.call(r)]),p&&F?z("span",{class:"".concat(d,"-children-icon")},[z(F,null,null)]):null]),z(ql,{errors:f,help:s,class:"".concat(d,"-explain-connected")},null),v?z("div",{class:"".concat(d,"-extra")},[v]):null])}})}}});function kl(t){var e=Cr(t.value.slice()),n=null;return dt(function(){clearTimeout(n),n=setTimeout(function(){e.value=t.value},t.value.length?0:10)}),e}Ee("success","warning","error","validating","");function At(t,e,n){var r=t,a=e,i=0;try{for(var o=a.length;i0&&arguments[0]!==void 0?arguments[0]:[];if(g.value==="validating"){var ae=Q.filter(function(re){return re&&re.errors.length});g.value=ae.length?"error":"success",x.value=ae.map(function(re){return re.errors}),C.onValidate(y.value,!x.value.length,x.value.length?Nt(x.value[0]):null)}}),Z}},O=function(){I({triggerName:"blur"})},M=function(){if(S.value){S.value=!1;return}I({triggerName:"change"})},q=function(){g.value=e.validateStatus,S.value=!1,x.value=[]},L=function(){g.value=e.validateStatus,S.value=!0,x.value=[];var $=C.model.value||{},N=c.value,V=At($,m.value,!0);Array.isArray(N)?V.o[V.k]=[].concat(A.value):V.o[V.k]=A.value,le(function(){S.value=!1})},j=R(function(){return e.htmlFor===void 0?f.value:e.htmlFor}),W=function(){var $=j.value;if(!(!$||!s.value)){var N=s.value.$el.querySelector('[id="'.concat($,'"]'));N&&N.focus&&N.focus()}};i({onFieldBlur:O,onFieldChange:M,clearValidate:q,resetField:L}),Ya({id:f,onFieldBlur:function(){e.autoLink&&O()},onFieldChange:function(){e.autoLink&&M()},clearValidate:q},R(function(){return!!(e.autoLink&&C.model.value&&y.value)}));var B=!1;de(y,function(h){h?B||(B=!0,C.addField(o,{fieldValue:c,fieldId:f,fieldName:y,resetField:L,clearValidate:q,namePath:m,validateRules:I,rules:d})):(B=!1,C.removeField(o))},{immediate:!0}),Ne(function(){C.removeField(o)});var P=kl(x),E=R(function(){return e.validateStatus!==void 0?e.validateStatus:P.value.length?"error":g.value}),w=R(function(){var h;return h={},T(h,"".concat(l.value,"-item"),!0),T(h,"".concat(l.value,"-item-has-feedback"),E.value&&e.hasFeedback),T(h,"".concat(l.value,"-item-has-success"),E.value==="success"),T(h,"".concat(l.value,"-item-has-warning"),E.value==="warning"),T(h,"".concat(l.value,"-item-has-error"),E.value==="error"),T(h,"".concat(l.value,"-item-is-validating"),E.value==="validating"),T(h,"".concat(l.value,"-item-hidden"),e.hidden),h});return function(){var h,$;if(e.noStyle)return(h=r.default)===null||h===void 0?void 0:h.call(r);var N=($=e.help)!==null&&$!==void 0?$:r.help?Fr(r.help()):null;return z(uo,_(_({},a),{},{class:[w.value,N!=null||P.value.length?"".concat(l.value,"-item-with-help"):"",a.class],key:"row"}),{default:function(){var D,U,K,Z;return z(We,null,[z(dn,_(_({},e),{},{htmlFor:j.value,required:b.value,requiredMark:C.requiredMark.value,prefixCls:l.value,onClick:W,label:(D=e.label)!==null&&D!==void 0?D:(U=r.label)===null||U===void 0?void 0:U.call(r)}),null),z(Vl,_(_({},e),{},{errors:N!=null?ye(N):P.value,prefixCls:l.value,status:E.value,ref:s,help:N,extra:(K=e.extra)!==null&&K!==void 0?K:(Z=r.extra)===null||Z===void 0?void 0:Z.call(r)}),{default:r.default})])}})}}});function fa(t){var e=!1,n=t.length,r=[];return t.length?new Promise(function(a,i){t.forEach(function(o,u){o.catch(function(l){return e=!0,l}).then(function(l){n-=1,r[u]=l,!(n>0)&&(e&&i(r),a(r))})})}):Promise.resolve([])}function Xn(t){return typeof t=="object"&&t!=null&&t.nodeType===1}function Qn(t,e){return(!e||t!=="hidden")&&t!=="visible"&&t!=="clip"}function St(t,e){if(t.clientHeighte||i>t&&o=e&&u>=n?i-t-r:o>e&&un?o-e+a:0}var Jn=function(t,e){var n=window,r=e.scrollMode,a=e.block,i=e.inline,o=e.boundary,u=e.skipOverflowHiddenElements,l=typeof o=="function"?o:function(Ye){return Ye!==o};if(!Xn(t))throw new TypeError("Invalid target");for(var C,y,x=document.scrollingElement||document.documentElement,S=[],s=t;Xn(s)&&l(s);){if((s=(y=(C=s).parentElement)==null?C.getRootNode().host||null:y)===x){S.push(s);break}s!=null&&s===document.body&&St(s)&&!St(document.documentElement)||s!=null&&St(s,u)&&S.push(s)}for(var m=n.visualViewport?n.visualViewport.width:innerWidth,f=n.visualViewport?n.visualViewport.height:innerHeight,p=window.scrollX||pageXOffset,c=window.scrollY||pageYOffset,A=t.getBoundingClientRect(),v=A.height,d=A.width,b=A.top,g=A.right,F=A.bottom,I=A.left,O=a==="start"||a==="nearest"?b:a==="end"?F:b+v/2,M=i==="center"?I+d/2:i==="end"?g:I,q=[],L=0;L=0&&I>=0&&F<=f&&g<=m&&b>=E&&F<=h&&I>=$&&g<=w)return q;var N=getComputedStyle(j),V=parseInt(N.borderLeftWidth,10),D=parseInt(N.borderTopWidth,10),U=parseInt(N.borderRightWidth,10),K=parseInt(N.borderBottomWidth,10),Z=0,Q=0,ae="offsetWidth"in j?j.offsetWidth-j.clientWidth-V-U:0,re="offsetHeight"in j?j.offsetHeight-j.clientHeight-D-K:0,oe="offsetWidth"in j?j.offsetWidth===0?0:P/j.offsetWidth:0,ge="offsetHeight"in j?j.offsetHeight===0?0:B/j.offsetHeight:0;if(x===j)Z=a==="start"?O:a==="end"?O-f:a==="nearest"?rt(c,c+f,f,D,K,c+O,c+O+v,v):O-f/2,Q=i==="start"?M:i==="center"?M-m/2:i==="end"?M-m:rt(p,p+m,m,V,U,p+M,p+M+d,d),Z=Math.max(0,Z+c),Q=Math.max(0,Q+p);else{Z=a==="start"?O-E-D:a==="end"?O-h+K+re:a==="nearest"?rt(E,h,B,D,K+re,O,O+v,v):O-(E+B/2)+re/2,Q=i==="start"?M-$-V:i==="center"?M-($+P/2)+ae/2:i==="end"?M-w+U+ae:rt($,w,P,V,U+ae,M,M+d,d);var Re=j.scrollLeft,Ze=j.scrollTop;O+=Ze-(Z=Math.max(0,Math.min(Ze+Z/ge,j.scrollHeight-B/ge+re))),M+=Re-(Q=Math.max(0,Math.min(Re+Q/oe,j.scrollWidth-P/oe+ae)))}q.push({el:j,top:Z,left:Q})}return q};function ca(t){return t===Object(t)&&Object.keys(t).length!==0}function Hl(t,e){e===void 0&&(e="auto");var n="scrollBehavior"in document.body.style;t.forEach(function(r){var a=r.el,i=r.top,o=r.left;a.scroll&&n?a.scroll({top:i,left:o,behavior:e}):(a.scrollTop=i,a.scrollLeft=o)})}function Kl(t){return t===!1?{block:"end",inline:"nearest"}:ca(t)?t:{block:"start",inline:"nearest"}}function Zl(t,e){var n=t.isConnected||t.ownerDocument.documentElement.contains(t);if(ca(e)&&typeof e.behavior=="function")return e.behavior(n?Jn(t,e):[]);if(n){var r=Kl(e);return Hl(Jn(t,r),r.behavior)}}var Yl=Math.min;function Xl(t,e,n){for(var r=Fi,a=t[0].length,i=t.length,o=i,u=Array(i),l=1/0,C=[];o--;){var y=t[o];l=Yl(y.length,l),u[o]=a>=120&&y.length>=120?new Xa(o&&y):void 0}y=t[0];var x=-1,S=u[0];e:for(;++x1),i}),He(t,Zr(t),n),r&&(n=Le(n,ls|ss|fs,us));for(var a=e.length;a--;)os(n,e[a]);return n});function er(t){var e=!1;return t&&t.length&&t.every(function(n){return n.required?(e=!0,!1):!0}),e}function tr(t){return t==null?[]:Array.isArray(t)?t:[t]}function Et(t,e,n){var r=t;e=e.replace(/\[(\w+)\]/g,".$1"),e=e.replace(/^\./,"");for(var a=e.split("."),i=0,o=a.length;i1&&arguments[1]!==void 0?arguments[1]:H({}),n=arguments.length>2?arguments[2]:void 0,r=ot(we(t)),a=pr({}),i=Cr([]),o=function(d){ze(we(t),_(_({},ot(r)),d)),le(function(){Object.keys(a).forEach(function(b){a[b]={autoLink:!1,required:er(we(e)[b])}})})},u=function(){var d=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],b=arguments.length>1?arguments[1]:void 0;return b.length?d.filter(function(g){var F=tr(g.trigger||"change");return ts(F,b).length}):d},l=null,C=function(d){for(var b=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},g=arguments.length>2?arguments[2]:void 0,F=[],I={},O=function(){var B=d[M],P=Et(we(t),B,g);if(!P.isValid)return"continue";I[B]=P.v;var E=u(we(e)[B],tr(b&&b.trigger));E.length&&F.push(y(B,P.v,E,b||{}).then(function(){return{name:B,errors:[],warnings:[]}}).catch(function(w){var h=[],$=[];return w.forEach(function(N){var V=N.rule.warningOnly,D=N.errors;V?$.push.apply($,ie(D)):h.push.apply(h,ie(D))}),h.length?Promise.reject({name:B,errors:h,warnings:$}):{name:B,errors:h,warnings:$}}))},M=0;M3&&arguments[3]!==void 0?arguments[3]:{},I=ra([d],b,g,_({validateMessages:pt},F),!!F.validateFirst);return a[d]?(a[d].validateStatus="validating",I.catch(function(O){return O}).then(function(){var O=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[];if(a[d].validateStatus==="validating"){var M,q=O.filter(function(L){return L&&L.errors.length});a[d].validateStatus=q.length?"error":"success",a[d].help=q.length?q.map(function(L){return L.errors}):null,n==null||(M=n.onValidate)===null||M===void 0||M.call(n,d,!q.length,q.length?Nt(a[d].help[0]):null)}}),I):I.catch(function(O){return O})},x=function(d,b){var g=[],F=!0;d?Array.isArray(d)?g=d:g=[d]:(F=!1,g=i.value);var I=C(g,b||{},F);return I.catch(function(O){return O}),I},S=function(d){var b=[];d?Array.isArray(d)?b=d:b=[d]:b=i.value,b.forEach(function(g){a[g]&&ze(a[g],{validateStatus:"",help:null})})},s=function(d){for(var b={autoLink:!1},g=[],F=Array.isArray(d)?d:[d],I=0;I-1}):Object.values(d)},I=function(w){if(!e.model){it(!1,"Form","model is required for resetFields to work.");return}F(w).forEach(function(h){h.resetField()})},O=function(w){F(w).forEach(function(h){h.clearValidate()})},M=function(w){var h=e.scrollToFirstError;if(r("finishFailed",w),h&&w.errorFields.length){var $={};ve(h)==="object"&&($=h),L(w.errorFields[0].name,$)}},q=function(){return B.apply(void 0,arguments)},L=function(w){var h=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},$=F(w?[w]:void 0);if($.length){var N=$[0].fieldId.value,V=N?document.getElementById(N):null;V&&Zl(V,_({scrollMode:"if-needed",block:"nearest"},h))}},j=function(){var w=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0;if(w===!0){var h=[];return Object.values(d).forEach(function($){var N=$.namePath;h.push(N.value)}),Yn(e.model,h)}else return Yn(e.model,w)},W=function(w,h){if(it(!(w instanceof Function),"Form","validateFields/validateField/validate not support callback, please use promise instead"),!e.model)return it(!1,"Form","model is required for validateFields to work."),Promise.reject("Form `model` is required for validateFields to work.");var $=!!w,N=$?ye(w).map(Dt):[],V=[];Object.values(d).forEach(function(K){var Z;if($||N.push(K.namePath.value),!!((Z=K.rules)!==null&&Z!==void 0&&Z.value.length)){var Q=K.namePath.value;if(!$||ml(N,Q)){var ae=K.validateRules(_({validateMessages:c.value},h));V.push(ae.then(function(){return{name:Q,errors:[],warnings:[]}}).catch(function(re){var oe=[],ge=[];return re.forEach(function(Re){var Ze=Re.rule.warningOnly,Ye=Re.errors;Ze?ge.push.apply(ge,ie(Ye)):oe.push.apply(oe,ie(Ye))}),oe.length?Promise.reject({name:Q,errors:oe,warnings:ge}):{name:Q,errors:oe,warnings:ge}}))}}});var D=fa(V);v.value=D;var U=D.then(function(){return v.value===D?Promise.resolve(j(N)):Promise.reject([])}).catch(function(K){var Z=K.filter(function(Q){return Q&&Q.errors.length});return Promise.reject({values:j(N),errorFields:Z,outOfDate:v.value!==D})});return U.catch(function(K){return K}),U},B=function(){return W.apply(void 0,arguments)},P=function(w){if(w.preventDefault(),w.stopPropagation(),r("submit",w),e.model){var h=W();h.then(function($){r("finish",$)}).catch(function($){M($)})}};return i({resetFields:I,clearValidate:O,validateFields:W,getFieldsValue:j,validate:q,scrollToField:L}),la({model:R(function(){return e.model}),name:R(function(){return e.name}),labelAlign:R(function(){return e.labelAlign}),labelCol:R(function(){return e.labelCol}),labelWrap:R(function(){return e.labelWrap}),wrapperCol:R(function(){return e.wrapperCol}),vertical:R(function(){return e.layout==="vertical"}),colon:m,requiredMark:s,validateTrigger:R(function(){return e.validateTrigger}),rules:R(function(){return e.rules}),addField:b,removeField:g,onValidate:function(w,h,$){r("validate",w,h,$)},validateMessages:c}),de(function(){return e.rules},function(){e.validateOnRuleChange&&W()}),function(){var E;return z("form",_(_({},o),{},{onSubmit:P,class:[A.value,o.class]}),[(E=a.default)===null||E===void 0?void 0:E.call(a)])}}});Ae.useInjectFormItemContext=en;Ae.ItemRest=Rt;Ae.install=function(t){return t.component(Ae.name,Ae),t.component(Ae.Item.name,Ae.Item),t.component(Rt.name,Rt),t};var bt=function(){return{id:String,prefixCls:String,inputPrefixCls:String,defaultValue:X.oneOfType([X.string,X.number]),value:{type:[String,Number,Symbol],default:void 0},placeholder:{type:[String,Number]},autocomplete:String,type:{type:String,default:"text"},name:String,size:{type:String},disabled:{type:Boolean,default:void 0},readonly:{type:Boolean,default:void 0},addonBefore:X.any,addonAfter:X.any,prefix:X.any,suffix:X.any,autofocus:{type:Boolean,default:void 0},allowClear:{type:Boolean,default:void 0},lazy:{type:Boolean,default:!0},maxlength:Number,loading:{type:Boolean,default:void 0},bordered:{type:Boolean,default:void 0},showCount:{type:[Boolean,Object]},htmlSize:Number,onPressEnter:Function,onKeydown:Function,onKeyup:Function,onFocus:Function,onBlur:Function,onChange:Function,onInput:Function,"onUpdate:value":Function,valueModifiers:Object,hidden:Boolean}},da=function(){return _(_({},be(bt(),["prefix","addonBefore","addonAfter","suffix"])),{},{rows:Number,autosize:{type:[Boolean,Object],default:void 0},autoSize:{type:[Boolean,Object],default:void 0},onResize:{type:Function},onCompositionstart:Function,onCompositionend:Function,valueModifiers:Object})};function va(t,e,n,r,a){var i;return J(t,(i={},T(i,"".concat(t,"-sm"),n==="small"),T(i,"".concat(t,"-lg"),n==="large"),T(i,"".concat(t,"-disabled"),r),T(i,"".concat(t,"-rtl"),a==="rtl"),T(i,"".concat(t,"-borderless"),!e),i))}var ke=function(e){return e!=null&&(Array.isArray(e)?Fr(e).length:!0)};function ms(t){return ke(t.prefix)||ke(t.suffix)||ke(t.allowClear)}function Ot(t){return ke(t.addonBefore)||ke(t.addonAfter)}var hs=["text","input"];const ga=te({compatConfig:{MODE:3},name:"ClearableLabeledInput",inheritAttrs:!1,props:{prefixCls:String,inputType:X.oneOf(Ee("text","input")),value:X.any,defaultValue:X.any,allowClear:{type:Boolean,default:void 0},element:X.any,handleReset:Function,disabled:{type:Boolean,default:void 0},direction:{type:String},size:{type:String},suffix:X.any,prefix:X.any,addonBefore:X.any,addonAfter:X.any,readonly:{type:Boolean,default:void 0},focused:{type:Boolean,default:void 0},bordered:{type:Boolean,default:!0},triggerFocus:{type:Function},hidden:Boolean},setup:function(e,n){var r=n.slots,a=n.attrs,i=H(),o=function(s){var m;if((m=i.value)!==null&&m!==void 0&&m.contains(s.target)){var f=e.triggerFocus;f==null||f()}},u=function(s){var m,f=e.allowClear,p=e.value,c=e.disabled,A=e.readonly,v=e.handleReset,d=e.suffix,b=d===void 0?r.suffix:d;if(!f)return null;var g=!c&&!A&&p,F="".concat(s,"-clear-icon");return z(wr,{onClick:v,onMousedown:function(O){return O.preventDefault()},class:J((m={},T(m,"".concat(F,"-hidden"),!g),T(m,"".concat(F,"-has-suffix"),!!b),m),F),role:"button"},null)},l=function(s){var m,f=e.suffix,p=f===void 0?(m=r.suffix)===null||m===void 0?void 0:m.call(r):f,c=e.allowClear;return p||c?z("span",{class:"".concat(s,"-suffix")},[u(s),p]):null},C=function(s,m){var f,p,c,A=e.focused,v=e.value,d=e.prefix,b=d===void 0?(f=r.prefix)===null||f===void 0?void 0:f.call(r):d,g=e.size,F=e.suffix,I=F===void 0?(p=r.suffix)===null||p===void 0?void 0:p.call(r):F,O=e.disabled,M=e.allowClear,q=e.direction,L=e.readonly,j=e.bordered,W=e.hidden,B=e.addonAfter,P=B===void 0?r.addonAfter:B,E=e.addonBefore,w=E===void 0?r.addonBefore:E,h=l(s);if(!ms({prefix:b,suffix:I,allowClear:M}))return Fe(m,{value:v});var $=b?z("span",{class:"".concat(s,"-prefix")},[b]):null,N=J("".concat(s,"-affix-wrapper"),(c={},T(c,"".concat(s,"-affix-wrapper-focused"),A),T(c,"".concat(s,"-affix-wrapper-disabled"),O),T(c,"".concat(s,"-affix-wrapper-sm"),g==="small"),T(c,"".concat(s,"-affix-wrapper-lg"),g==="large"),T(c,"".concat(s,"-affix-wrapper-input-with-clear-btn"),I&&M&&v),T(c,"".concat(s,"-affix-wrapper-rtl"),q==="rtl"),T(c,"".concat(s,"-affix-wrapper-readonly"),L),T(c,"".concat(s,"-affix-wrapper-borderless"),!j),T(c,"".concat(a.class),!Ot({addonAfter:P,addonBefore:w})&&a.class),c));return z("span",{ref:i,class:N,style:a.style,onMouseup:o,hidden:W},[$,Fe(m,{style:null,value:v,class:va(s,j,g,O)}),h])},y=function(s,m){var f,p,c,A=e.addonBefore,v=A===void 0?(f=r.addonBefore)===null||f===void 0?void 0:f.call(r):A,d=e.addonAfter,b=d===void 0?(p=r.addonAfter)===null||p===void 0?void 0:p.call(r):d,g=e.size,F=e.direction,I=e.hidden,O=e.disabled;if(!Ot({addonBefore:v,addonAfter:b}))return m;var M="".concat(s,"-group"),q="".concat(M,"-addon"),L=J(q,T({},"".concat(q,"-disabled"),O)),j=v?z("span",{class:L},[v]):null,W=b?z("span",{class:L},[b]):null,B=J("".concat(s,"-wrapper"),M,T({},"".concat(M,"-rtl"),F==="rtl")),P=J("".concat(s,"-group-wrapper"),(c={},T(c,"".concat(s,"-group-wrapper-sm"),g==="small"),T(c,"".concat(s,"-group-wrapper-lg"),g==="large"),T(c,"".concat(s,"-group-wrapper-rtl"),F==="rtl"),c),a.class);return z("span",{class:P,style:a.style,hidden:I},[z("span",{class:B},[j,Fe(m,{style:null}),W])])},x=function(s,m){var f,p=e.value,c=e.allowClear,A=e.direction,v=e.bordered,d=e.hidden,b=e.addonAfter,g=b===void 0?r.addonAfter:b,F=e.addonBefore,I=F===void 0?r.addonBefore:F;if(!c)return Fe(m,{value:p});var O=J("".concat(s,"-affix-wrapper"),"".concat(s,"-affix-wrapper-textarea-with-clear-btn"),(f={},T(f,"".concat(s,"-affix-wrapper-rtl"),A==="rtl"),T(f,"".concat(s,"-affix-wrapper-borderless"),!v),T(f,"".concat(a.class),!Ot({addonAfter:g,addonBefore:I})&&a.class),f));return z("span",{class:O,style:a.style,hidden:d},[Fe(m,{style:null,value:p}),u(s)])};return function(){var S,s=e.prefixCls,m=e.inputType,f=e.element,p=f===void 0?(S=r.element)===null||S===void 0?void 0:S.call(r):f;return m===hs[0]?x(s,p):y(s,C(s,p))}}});function Kt(t){return typeof t>"u"||t===null?"":String(t)}function De(t,e,n,r){if(n){var a=e;if(e.type==="click"){Object.defineProperty(a,"target",{writable:!0}),Object.defineProperty(a,"currentTarget",{writable:!0});var i=t.cloneNode(!0);a.target=i,a.currentTarget=i,i.value="",n(a);return}if(r!==void 0){Object.defineProperty(a,"target",{writable:!0}),Object.defineProperty(a,"currentTarget",{writable:!0}),a.target=t,a.currentTarget=t,t.value=r,n(a);return}n(a)}}function ma(t,e){if(t){t.focus(e);var n=e||{},r=n.cursor;if(r){var a=t.value.length;switch(r){case"start":t.setSelectionRange(0,0);break;case"end":t.setSelectionRange(a,a);break;default:t.setSelectionRange(0,a)}}}}const ne=te({compatConfig:{MODE:3},name:"AInput",inheritAttrs:!1,props:bt(),setup:function(e,n){var r=n.slots,a=n.attrs,i=n.expose,o=n.emit,u=H(),l=H(),C,y=en(),x=fe("input",e),S=x.direction,s=x.prefixCls,m=x.size,f=x.autocomplete,p=H(e.value===void 0?e.defaultValue:e.value),c=H(!1);de(function(){return e.value},function(){p.value=e.value}),de(function(){return e.disabled},function(){e.value!==void 0&&(p.value=e.value),e.disabled&&(c.value=!1)});var A=function(){C=setTimeout(function(){var w;((w=u.value)===null||w===void 0?void 0:w.getAttribute("type"))==="password"&&u.value.hasAttribute("value")&&u.value.removeAttribute("value")})},v=function(w){ma(u.value,w)},d=function(){var w;(w=u.value)===null||w===void 0||w.blur()},b=function(w,h,$){var N;(N=u.value)===null||N===void 0||N.setSelectionRange(w,h,$)},g=function(){var w;(w=u.value)===null||w===void 0||w.select()};i({focus:v,blur:d,input:u,stateValue:p,setSelectionRange:b,select:g});var F=function(w){var h=e.onFocus;c.value=!0,h==null||h(w),le(function(){A()})},I=function(w){var h=e.onBlur;c.value=!1,h==null||h(w),y.onFieldBlur(),le(function(){A()})},O=function(w){o("update:value",w.target.value),o("change",w),o("input",w),y.onFieldChange()},M=Ue(),q=function(w,h){p.value!==w&&(e.value===void 0?p.value=w:le(function(){u.value.value!==p.value&&M.update()}),le(function(){h&&h()}))},L=function(w){De(u.value,w,O),q("",function(){v()})},j=function(w){var h=w.target,$=h.value,N=h.composing;if(!((w.isComposing||N)&&e.lazy||p.value===$)){var V=w.target.value;De(u.value,w,O),q(V,function(){A()})}},W=function(w){w.keyCode===13&&o("pressEnter",w),o("keydown",w)};Oe(function(){A()}),Ne(function(){clearTimeout(C)});var B=function(){var w,h=e.addonBefore,$=h===void 0?r.addonBefore:h,N=e.addonAfter,V=N===void 0?r.addonAfter:N,D=e.disabled,U=e.bordered,K=U===void 0?!0:U,Z=e.valueModifiers,Q=Z===void 0?{}:Z,ae=e.htmlSize,re=be(e,["prefixCls","onPressEnter","addonBefore","addonAfter","prefix","suffix","allowClear","defaultValue","size","bordered","htmlSize","lazy","showCount","valueModifiers"]),oe=_(_(_({},re),a),{},{autocomplete:f.value,onChange:j,onInput:j,onFocus:F,onBlur:I,onKeydown:W,class:J(va(s.value,K,m.value,D,S.value),T({},a.class,a.class&&!$&&!V)),ref:u,key:"ant-input",size:ae,id:(w=re.id)!==null&&w!==void 0?w:y.id.value});Q.lazy&&delete oe.onInput,oe.autofocus||delete oe.autofocus;var ge=z("input",be(oe,["size"]),null);return Ar(ge,[[zr]])},P=function(){var w,h=p.value,$=e.maxlength,N=e.suffix,V=N===void 0?(w=r.suffix)===null||w===void 0?void 0:w.call(r):N,D=e.showCount,U=Number($)>0;if(V||D){var K=ie(Kt(h)).length,Z=null;return ve(D)==="object"?Z=D.formatter({count:K,maxlength:$}):Z="".concat(K).concat(U?" / ".concat($):""),z(We,null,[!!D&&z("span",{class:J("".concat(s.value,"-show-count-suffix"),T({},"".concat(s.value,"-show-count-has-suffix"),!!V))},[Z]),V])}return null};return function(){var E=_(_(_({},a),e),{},{prefixCls:s.value,inputType:"input",value:Kt(p.value),handleReset:L,focused:c.value&&!e.disabled});return z(ga,_(_({},be(E,["element","valueModifiers","suffix","showCount"])),{},{ref:l}),_(_({},r),{},{element:B,suffix:P}))}}}),ps=te({compatConfig:{MODE:3},name:"AInputGroup",props:{prefixCls:String,size:{type:String},compact:{type:Boolean,default:void 0},onMouseenter:{type:Function},onMouseleave:{type:Function},onFocus:{type:Function},onBlur:{type:Function}},setup:function(e,n){var r=n.slots,a=fe("input-group",e),i=a.prefixCls,o=a.direction,u=R(function(){var l,C=i.value;return l={},T(l,"".concat(C),!0),T(l,"".concat(C,"-lg"),e.size==="large"),T(l,"".concat(C,"-sm"),e.size==="small"),T(l,"".concat(C,"-compact"),e.compact),T(l,"".concat(C,"-rtl"),o.value==="rtl"),l});return function(){var l;return z("span",{class:u.value,onMouseenter:e.onMouseenter,onMouseleave:e.onMouseleave,onFocus:e.onFocus,onBlur:e.onBlur},[(l=r.default)===null||l===void 0?void 0:l.call(r)])}}});var Pt=/iPhone/i,nr=/iPod/i,rr=/iPad/i,Tt=/\bAndroid(?:.+)Mobile\b/i,ar=/Android/i,_e=/\bAndroid(?:.+)SD4930UR\b/i,at=/\bAndroid(?:.+)(?:KF[A-Z]{2,4})\b/i,me=/Windows Phone/i,ir=/\bWindows(?:.+)ARM\b/i,or=/BlackBerry/i,ur=/BB10/i,lr=/Opera Mini/i,sr=/\b(CriOS|Chrome)(?:.+)Mobile/i,fr=/Mobile(?:.+)Firefox\b/i;function k(t,e){return t.test(e)}function cr(t){var e=t||(typeof navigator<"u"?navigator.userAgent:""),n=e.split("[FBAN");if(typeof n[1]<"u"){var r=n,a=jt(r,1);e=a[0]}if(n=e.split("Twitter"),typeof n[1]<"u"){var i=n,o=jt(i,1);e=o[0]}var u={apple:{phone:k(Pt,e)&&!k(me,e),ipod:k(nr,e),tablet:!k(Pt,e)&&k(rr,e)&&!k(me,e),device:(k(Pt,e)||k(nr,e)||k(rr,e))&&!k(me,e)},amazon:{phone:k(_e,e),tablet:!k(_e,e)&&k(at,e),device:k(_e,e)||k(at,e)},android:{phone:!k(me,e)&&k(_e,e)||!k(me,e)&&k(Tt,e),tablet:!k(me,e)&&!k(_e,e)&&!k(Tt,e)&&(k(at,e)||k(ar,e)),device:!k(me,e)&&(k(_e,e)||k(at,e)||k(Tt,e)||k(ar,e))||k(/\bokhttp\b/i,e)},windows:{phone:k(me,e),tablet:k(ir,e),device:k(me,e)||k(ir,e)},other:{blackberry:k(or,e),blackberry10:k(ur,e),opera:k(lr,e),firefox:k(fr,e),chrome:k(sr,e),device:k(or,e)||k(ur,e)||k(lr,e)||k(fr,e)||k(sr,e)},any:null,phone:null,tablet:null};return u.any=u.apple.device||u.android.device||u.windows.device||u.other.device,u.phone=u.apple.phone||u.android.phone||u.windows.phone,u.tablet=u.apple.tablet||u.android.tablet||u.windows.tablet,u}var bs=_(_({},cr()),{},{isMobile:cr}),ys=["disabled","loading","addonAfter","suffix"];const xs=te({compatConfig:{MODE:3},name:"AInputSearch",inheritAttrs:!1,props:_(_({},bt()),{},{inputPrefixCls:String,enterButton:X.any,onSearch:{type:Function}}),setup:function(e,n){var r=n.slots,a=n.attrs,i=n.expose,o=n.emit,u=H(),l=function(){var d;(d=u.value)===null||d===void 0||d.focus()},C=function(){var d;(d=u.value)===null||d===void 0||d.blur()};i({focus:l,blur:C});var y=function(d){o("update:value",d.target.value),d&&d.target&&d.type==="click"&&o("search",d.target.value,d),o("change",d)},x=function(d){var b;document.activeElement===((b=u.value)===null||b===void 0?void 0:b.input)&&d.preventDefault()},S=function(d){var b;o("search",(b=u.value)===null||b===void 0?void 0:b.stateValue,d),bs.tablet||u.value.focus()},s=fe("input-search",e),m=s.prefixCls,f=s.getPrefixCls,p=s.direction,c=s.size,A=R(function(){return f("input",e.inputPrefixCls)});return function(){var v,d,b,g,F,I=e.disabled,O=e.loading,M=e.addonAfter,q=M===void 0?(v=r.addonAfter)===null||v===void 0?void 0:v.call(r):M,L=e.suffix,j=L===void 0?(d=r.suffix)===null||d===void 0?void 0:d.call(r):L,W=Sr(e,ys),B=e.enterButton,P=B===void 0?(b=(g=r.enterButton)===null||g===void 0?void 0:g.call(r))!==null&&b!==void 0?b:!1:B;P=P||P==="";var E=typeof P=="boolean"?z(nn,null,null):null,w="".concat(m.value,"-button"),h=Array.isArray(P)?P[0]:P,$,N=h.type&&Rr(h.type)&&h.type.__ANT_BUTTON;if(N||h.tagName==="button")$=Fe(h,_({onMousedown:x,onClick:S,key:"enterButton"},N?{class:w,size:c.value}:{}),!1);else{var V=E&&!P;$=z(qe,{class:w,type:P?"primary":void 0,size:c.value,disabled:I,key:"enterButton",onMousedown:x,onClick:S,loading:O,icon:V?E:null},{default:function(){return[V?null:E||P]}})}q&&($=[$,q]);var D=J(m.value,(F={},T(F,"".concat(m.value,"-rtl"),p.value==="rtl"),T(F,"".concat(m.value,"-").concat(c.value),!!c.value),T(F,"".concat(m.value,"-with-button"),!!P),F),a.class);return z(ne,_(_(_({ref:u},be(W,["onUpdate:value","onSearch","enterButton"])),a),{},{onPressEnter:S,size:c.value,prefixCls:A.value,addonAfter:$,suffix:j,onChange:y,class:D,disabled:I}),r)}}});var ws=` +`).replace(/\s*\/\/.*$/gm,"").replace(/\n/g,"").trim(),i=new RegExp("(?:^"+n+"$)|(?:^"+a+"$)"),o=new RegExp("^"+n+"$"),u=new RegExp("^"+a+"$"),l=function(d){return d&&d.exact?i:new RegExp("(?:"+e(d)+n+e(d)+")|(?:"+e(d)+a+e(d)+")","g")};l.v4=function(v){return v&&v.exact?o:new RegExp(""+e(v)+n+e(v),"g")},l.v6=function(v){return v&&v.exact?u:new RegExp(""+e(v)+a+e(v),"g")};var C="(?:(?:[a-z]+:)?//)",y="(?:\\S+(?::\\S*)?@)?",x=l.v4().source,S=l.v6().source,s="(?:(?:[a-z\\u00a1-\\uffff0-9][-_]*)*[a-z\\u00a1-\\uffff0-9]+)",m="(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*",f="(?:\\.(?:[a-z\\u00a1-\\uffff]{2,}))",p="(?::\\d{2,5})?",c='(?:[/?#][^\\s"]*)?',A="(?:"+C+"|www\\.)"+y+"(?:localhost|"+x+"|"+S+"|"+s+m+f+")"+p+c;return nt=new RegExp("(?:^"+A+"$)","i"),nt},Kn={email:/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+\.)+[a-zA-Z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]{2,}))$/,hex:/^#?([a-f0-9]{6}|[a-f0-9]{3})$/i},Be={integer:function(e){return Be.number(e)&&parseInt(e,10)===e},float:function(e){return Be.number(e)&&!Be.integer(e)},array:function(e){return Array.isArray(e)},regexp:function(e){if(e instanceof RegExp)return!0;try{return!!new RegExp(e)}catch{return!1}},date:function(e){return typeof e.getTime=="function"&&typeof e.getMonth=="function"&&typeof e.getYear=="function"&&!isNaN(e.getTime())},number:function(e){return isNaN(e)?!1:typeof e=="number"},object:function(e){return typeof e=="object"&&!Be.array(e)},method:function(e){return typeof e=="function"},email:function(e){return typeof e=="string"&&e.length<=320&&!!e.match(Kn.email)},url:function(e){return typeof e=="string"&&e.length<=2048&&!!e.match(Uu())},hex:function(e){return typeof e=="string"&&!!e.match(Kn.hex)}},Hu=function(e,n,r,a,i){if(e.required&&n===void 0){Jr(e,n,r,a,i);return}var o=["integer","float","array","regexp","object","method","email","number","date","url","hex"],u=e.type;o.indexOf(u)>-1?Be[u](n)||a.push(se(i.messages.types[u],e.fullField,e.type)):u&&typeof n!==e.type&&a.push(se(i.messages.types[u],e.fullField,e.type))},Ku=function(e,n,r,a,i){var o=typeof e.len=="number",u=typeof e.min=="number",l=typeof e.max=="number",C=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,y=n,x=null,S=typeof n=="number",s=typeof n=="string",m=Array.isArray(n);if(S?x="number":s?x="string":m&&(x="array"),!x)return!1;m&&(y=n.length),s&&(y=n.replace(C,"_").length),o?y!==e.len&&a.push(se(i.messages[x].len,e.fullField,e.len)):u&&!l&&ye.max?a.push(se(i.messages[x].max,e.fullField,e.max)):u&&l&&(ye.max)&&a.push(se(i.messages[x].range,e.fullField,e.min,e.max))},Te="enum",Zu=function(e,n,r,a,i){e[Te]=Array.isArray(e[Te])?e[Te]:[],e[Te].indexOf(n)===-1&&a.push(se(i.messages[Te],e.fullField,e[Te].join(", ")))},Yu=function(e,n,r,a,i){if(e.pattern){if(e.pattern instanceof RegExp)e.pattern.lastIndex=0,e.pattern.test(n)||a.push(se(i.messages.pattern.mismatch,e.fullField,n,e.pattern));else if(typeof e.pattern=="string"){var o=new RegExp(e.pattern);o.test(n)||a.push(se(i.messages.pattern.mismatch,e.fullField,n,e.pattern))}}},G={required:Jr,whitespace:Gu,type:Hu,range:Ku,enum:Zu,pattern:Yu},Xu=function(e,n,r,a,i){var o=[],u=e.required||!e.required&&a.hasOwnProperty(e.field);if(u){if(ee(n,"string")&&!e.required)return r();G.required(e,n,a,o,i,"string"),ee(n,"string")||(G.type(e,n,a,o,i),G.range(e,n,a,o,i),G.pattern(e,n,a,o,i),e.whitespace===!0&&G.whitespace(e,n,a,o,i))}r(o)},Qu=function(e,n,r,a,i){var o=[],u=e.required||!e.required&&a.hasOwnProperty(e.field);if(u){if(ee(n)&&!e.required)return r();G.required(e,n,a,o,i),n!==void 0&&G.type(e,n,a,o,i)}r(o)},Ju=function(e,n,r,a,i){var o=[],u=e.required||!e.required&&a.hasOwnProperty(e.field);if(u){if(n===""&&(n=void 0),ee(n)&&!e.required)return r();G.required(e,n,a,o,i),n!==void 0&&(G.type(e,n,a,o,i),G.range(e,n,a,o,i))}r(o)},el=function(e,n,r,a,i){var o=[],u=e.required||!e.required&&a.hasOwnProperty(e.field);if(u){if(ee(n)&&!e.required)return r();G.required(e,n,a,o,i),n!==void 0&&G.type(e,n,a,o,i)}r(o)},tl=function(e,n,r,a,i){var o=[],u=e.required||!e.required&&a.hasOwnProperty(e.field);if(u){if(ee(n)&&!e.required)return r();G.required(e,n,a,o,i),ee(n)||G.type(e,n,a,o,i)}r(o)},nl=function(e,n,r,a,i){var o=[],u=e.required||!e.required&&a.hasOwnProperty(e.field);if(u){if(ee(n)&&!e.required)return r();G.required(e,n,a,o,i),n!==void 0&&(G.type(e,n,a,o,i),G.range(e,n,a,o,i))}r(o)},rl=function(e,n,r,a,i){var o=[],u=e.required||!e.required&&a.hasOwnProperty(e.field);if(u){if(ee(n)&&!e.required)return r();G.required(e,n,a,o,i),n!==void 0&&(G.type(e,n,a,o,i),G.range(e,n,a,o,i))}r(o)},al=function(e,n,r,a,i){var o=[],u=e.required||!e.required&&a.hasOwnProperty(e.field);if(u){if(n==null&&!e.required)return r();G.required(e,n,a,o,i,"array"),n!=null&&(G.type(e,n,a,o,i),G.range(e,n,a,o,i))}r(o)},il=function(e,n,r,a,i){var o=[],u=e.required||!e.required&&a.hasOwnProperty(e.field);if(u){if(ee(n)&&!e.required)return r();G.required(e,n,a,o,i),n!==void 0&&G.type(e,n,a,o,i)}r(o)},ol="enum",ul=function(e,n,r,a,i){var o=[],u=e.required||!e.required&&a.hasOwnProperty(e.field);if(u){if(ee(n)&&!e.required)return r();G.required(e,n,a,o,i),n!==void 0&&G[ol](e,n,a,o,i)}r(o)},ll=function(e,n,r,a,i){var o=[],u=e.required||!e.required&&a.hasOwnProperty(e.field);if(u){if(ee(n,"string")&&!e.required)return r();G.required(e,n,a,o,i),ee(n,"string")||G.pattern(e,n,a,o,i)}r(o)},sl=function(e,n,r,a,i){var o=[],u=e.required||!e.required&&a.hasOwnProperty(e.field);if(u){if(ee(n,"date")&&!e.required)return r();if(G.required(e,n,a,o,i),!ee(n,"date")){var l;n instanceof Date?l=n:l=new Date(n),G.type(e,l,a,o,i),l&&G.range(e,l.getTime(),a,o,i)}}r(o)},fl=function(e,n,r,a,i){var o=[],u=Array.isArray(n)?"array":typeof n;G.required(e,n,a,o,i,u),r(o)},Ft=function(e,n,r,a,i){var o=e.type,u=[],l=e.required||!e.required&&a.hasOwnProperty(e.field);if(l){if(ee(n,o)&&!e.required)return r();G.required(e,n,a,u,i,o),ee(n,o)||G.type(e,n,a,u,i)}r(u)},cl=function(e,n,r,a,i){var o=[],u=e.required||!e.required&&a.hasOwnProperty(e.field);if(u){if(ee(n)&&!e.required)return r();G.required(e,n,a,o,i)}r(o)},Ve={string:Xu,method:Qu,number:Ju,boolean:el,regexp:tl,integer:nl,float:rl,array:al,object:il,enum:ul,pattern:ll,date:sl,url:Ft,hex:Ft,email:Ft,required:fl,any:cl};function Vt(){return{default:"Validation error on field %s",required:"%s is required",enum:"%s must be one of %s",whitespace:"%s cannot be empty",date:{format:"%s date %s is invalid for format %s",parse:"%s date could not be parsed, %s is invalid ",invalid:"%s date %s is invalid"},types:{string:"%s is not a %s",method:"%s is not a %s (function)",array:"%s is not an %s",object:"%s is not an %s",number:"%s is not a %s",date:"%s is not a %s",boolean:"%s is not a %s",integer:"%s is not an %s",float:"%s is not a %s",regexp:"%s is not a valid %s",email:"%s is not a valid %s",url:"%s is not a valid %s",hex:"%s is not a valid %s"},string:{len:"%s must be exactly %s characters",min:"%s must be at least %s characters",max:"%s cannot be longer than %s characters",range:"%s must be between %s and %s characters"},number:{len:"%s must equal %s",min:"%s cannot be less than %s",max:"%s cannot be greater than %s",range:"%s must be between %s and %s"},array:{len:"%s must be exactly %s in length",min:"%s cannot be less than %s in length",max:"%s cannot be greater than %s in length",range:"%s must be between %s and %s in length"},pattern:{mismatch:"%s value %s does not match pattern %s"},clone:function(){var e=JSON.parse(JSON.stringify(this));return e.clone=this.clone,e}}}var kt=Vt(),Ke=function(){function t(n){this.rules=null,this._messages=kt,this.define(n)}var e=t.prototype;return e.define=function(r){var a=this;if(!r)throw new Error("Cannot configure a schema with no rules");if(typeof r!="object"||Array.isArray(r))throw new Error("Rules must be an object");this.rules={},Object.keys(r).forEach(function(i){var o=r[i];a.rules[i]=Array.isArray(o)?o:[o]})},e.messages=function(r){return r&&(this._messages=Hn(Vt(),r)),this._messages},e.validate=function(r,a,i){var o=this;a===void 0&&(a={}),i===void 0&&(i=function(){});var u=r,l=a,C=i;if(typeof l=="function"&&(C=l,l={}),!this.rules||Object.keys(this.rules).length===0)return C&&C(null,u),Promise.resolve(u);function y(f){var p=[],c={};function A(d){if(Array.isArray(d)){var b;p=(b=p).concat.apply(b,d)}else p.push(d)}for(var v=0;v3&&arguments[3]!==void 0?arguments[3]:!1;return e.length&&r&&n===void 0&&!ea(t,e.slice(0,-1))?t:ta(t,e,n,r)}function Dt(t){return ye(t)}function vl(t,e){var n=ea(t,e);return n}function gl(t,e,n){var r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1,a=dl(t,e,n,r);return a}function ml(t,e){return t&&t.some(function(n){return pl(n,e)})}function Zn(t){return ve(t)==="object"&&t!==null&&Object.getPrototypeOf(t)===Object.prototype}function na(t,e){var n=Array.isArray(t)?ie(t):_({},t);return e&&Object.keys(e).forEach(function(r){var a=n[r],i=e[r],o=Zn(a)&&Zn(i);n[r]=o?na(a,i||{}):i}),n}function hl(t){for(var e=arguments.length,n=new Array(e>1?e-1:0),r=1;r-1?a[i?e[o]:o]:void 0}}var jl=Math.max;function Nl(t,e,n){var r=t==null?0:t.length;if(!r)return-1;var a=n==null?0:Ti(n);return a<0&&(a=jl(r+a,0)),Br(t,oa(e),a)}var Rl=Ml(Nl),ua=Symbol("formContextKey"),la=function(e){Xt(ua,e)},cn=function(){return ct(ua,{name:R(function(){}),labelAlign:R(function(){return"right"}),vertical:R(function(){return!1}),addField:function(n,r){},removeField:function(n){},model:R(function(){}),rules:R(function(){}),colon:R(function(){}),labelWrap:R(function(){}),labelCol:R(function(){}),requiredMark:R(function(){return!1}),validateTrigger:R(function(){}),onValidate:function(){},validateMessages:R(function(){return pt})})},sa=Symbol("formItemPrefixContextKey"),zl=function(e){Xt(sa,e)},Bl=function(){return ct(sa,{prefixCls:R(function(){return""})})},dn=function(e,n){var r,a,i,o,u=n.slots,l=n.emit,C=n.attrs,y=_(_({},e),C),x=y.prefixCls,S=y.htmlFor,s=y.labelCol,m=y.labelAlign,f=y.colon,p=y.required,c=y.requiredMark,A=_a("Form"),v=jt(A,1),d=v[0],b=(r=e.label)!==null&&r!==void 0?r:(a=u.label)===null||a===void 0?void 0:a.call(u);if(!b)return null;var g=cn(),F=g.vertical,I=g.labelAlign,O=g.labelCol,M=g.labelWrap,q=g.colon,L=s||(O==null?void 0:O.value)||{},j=m||(I==null?void 0:I.value),W="".concat(x,"-item-label"),B=J(W,j==="left"&&"".concat(W,"-left"),L.class,T({},"".concat(W,"-wrap"),!!M.value)),P=b,E=f===!0||(q==null?void 0:q.value)!==!1&&f!==!1,w=E&&!F.value;if(w&&typeof b=="string"&&b.trim()!==""&&(P=b.replace(/[:|:]\s*$/,"")),P=z(We,null,[P,(i=u.tooltip)===null||i===void 0?void 0:i.call(u,{class:"".concat(x,"-item-tooltip")})]),c==="optional"&&!p){var h,$;P=z(We,null,[P,z("span",{class:"".concat(x,"-item-optional")},[((h=d.value)===null||h===void 0?void 0:h.optional)||(($=$a.Form)===null||$===void 0?void 0:$.optional)])])}var N=J((o={},T(o,"".concat(x,"-item-required"),p),T(o,"".concat(x,"-item-required-mark-optional"),c==="optional"),T(o,"".concat(x,"-item-no-colon"),!E),o));return z(Ur,_(_({},L),{},{class:B}),{default:function(){return[z("label",{for:S,class:N,title:typeof b=="string"?b:"",onClick:function(U){return l("click",U)}},[P])]}})};dn.displayName="FormItemLabel";dn.inheritAttrs=!1;const ql=te({compatConfig:{MODE:3},name:"ErrorList",props:["errors","help","onDomErrorVisibleChange","helpStatus","warnings"],setup:function(e){var n=fe("",e),r=n.prefixCls,a=Bl(),i=a.prefixCls,o=a.status,u=R(function(){return"".concat(i.value,"-item-explain")}),l=R(function(){return!!(e.errors&&e.errors.length)}),C=H(o.value);return de([l,o],function(){l.value&&(C.value=o.value)}),function(){var y,x,S=Ai("".concat(r.value,"-show-help-item")),s=Ia("".concat(r.value,"-show-help-item"),S);return s.class=u.value,(y=e.errors)!==null&&y!==void 0&&y.length?z(Ma,_(_({},s),{},{tag:"div"}),{default:function(){return[(x=e.errors)===null||x===void 0?void 0:x.map(function(f,p){return z("div",{key:p,role:"alert",class:C.value?"".concat(u.value,"-").concat(C.value):""},[f])})]}}):null}}});var Ll={success:Na,warning:ja,error:wr,validating:Mt},Vl=te({compatConfig:{MODE:3},slots:["help","extra","errors"],inheritAttrs:!1,props:["prefixCls","errors","hasFeedback","onDomErrorVisibleChange","wrapperCol","help","extra","status"],setup:function(e,n){var r=n.slots,a=cn(),i=a.wrapperCol,o=_({},a);return delete o.labelCol,delete o.wrapperCol,la(o),zl({prefixCls:R(function(){return e.prefixCls}),status:R(function(){return e.status})}),function(){var u,l,C,y=e.prefixCls,x=e.wrapperCol,S=e.help,s=S===void 0?(u=r.help)===null||u===void 0?void 0:u.call(r):S,m=e.errors,f=m===void 0?(l=r.errors)===null||l===void 0?void 0:l.call(r):m,p=e.hasFeedback,c=e.status,A=e.extra,v=A===void 0?(C=r.extra)===null||C===void 0?void 0:C.call(r):A,d="".concat(y,"-item"),b=x||(i==null?void 0:i.value)||{},g=J("".concat(d,"-control"),b.class),F=c&&Ll[c];return z(Ur,_(_({},b),{},{class:g}),{default:function(){var O;return z(We,null,[z("div",{class:"".concat(d,"-control-input")},[z("div",{class:"".concat(d,"-control-input-content")},[(O=r.default)===null||O===void 0?void 0:O.call(r)]),p&&F?z("span",{class:"".concat(d,"-children-icon")},[z(F,null,null)]):null]),z(ql,{errors:f,help:s,class:"".concat(d,"-explain-connected")},null),v?z("div",{class:"".concat(d,"-extra")},[v]):null])}})}}});function kl(t){var e=Cr(t.value.slice()),n=null;return dt(function(){clearTimeout(n),n=setTimeout(function(){e.value=t.value},t.value.length?0:10)}),e}Ee("success","warning","error","validating","");function At(t,e,n){var r=t,a=e,i=0;try{for(var o=a.length;i0&&arguments[0]!==void 0?arguments[0]:[];if(g.value==="validating"){var ae=Q.filter(function(re){return re&&re.errors.length});g.value=ae.length?"error":"success",x.value=ae.map(function(re){return re.errors}),C.onValidate(y.value,!x.value.length,x.value.length?Nt(x.value[0]):null)}}),Z}},O=function(){I({triggerName:"blur"})},M=function(){if(S.value){S.value=!1;return}I({triggerName:"change"})},q=function(){g.value=e.validateStatus,S.value=!1,x.value=[]},L=function(){g.value=e.validateStatus,S.value=!0,x.value=[];var $=C.model.value||{},N=c.value,V=At($,m.value,!0);Array.isArray(N)?V.o[V.k]=[].concat(A.value):V.o[V.k]=A.value,le(function(){S.value=!1})},j=R(function(){return e.htmlFor===void 0?f.value:e.htmlFor}),W=function(){var $=j.value;if(!(!$||!s.value)){var N=s.value.$el.querySelector('[id="'.concat($,'"]'));N&&N.focus&&N.focus()}};i({onFieldBlur:O,onFieldChange:M,clearValidate:q,resetField:L}),Xa({id:f,onFieldBlur:function(){e.autoLink&&O()},onFieldChange:function(){e.autoLink&&M()},clearValidate:q},R(function(){return!!(e.autoLink&&C.model.value&&y.value)}));var B=!1;de(y,function(h){h?B||(B=!0,C.addField(o,{fieldValue:c,fieldId:f,fieldName:y,resetField:L,clearValidate:q,namePath:m,validateRules:I,rules:d})):(B=!1,C.removeField(o))},{immediate:!0}),Ne(function(){C.removeField(o)});var P=kl(x),E=R(function(){return e.validateStatus!==void 0?e.validateStatus:P.value.length?"error":g.value}),w=R(function(){var h;return h={},T(h,"".concat(l.value,"-item"),!0),T(h,"".concat(l.value,"-item-has-feedback"),E.value&&e.hasFeedback),T(h,"".concat(l.value,"-item-has-success"),E.value==="success"),T(h,"".concat(l.value,"-item-has-warning"),E.value==="warning"),T(h,"".concat(l.value,"-item-has-error"),E.value==="error"),T(h,"".concat(l.value,"-item-is-validating"),E.value==="validating"),T(h,"".concat(l.value,"-item-hidden"),e.hidden),h});return function(){var h,$;if(e.noStyle)return(h=r.default)===null||h===void 0?void 0:h.call(r);var N=($=e.help)!==null&&$!==void 0?$:r.help?Fr(r.help()):null;return z(uo,_(_({},a),{},{class:[w.value,N!=null||P.value.length?"".concat(l.value,"-item-with-help"):"",a.class],key:"row"}),{default:function(){var D,U,K,Z;return z(We,null,[z(dn,_(_({},e),{},{htmlFor:j.value,required:b.value,requiredMark:C.requiredMark.value,prefixCls:l.value,onClick:W,label:(D=e.label)!==null&&D!==void 0?D:(U=r.label)===null||U===void 0?void 0:U.call(r)}),null),z(Vl,_(_({},e),{},{errors:N!=null?ye(N):P.value,prefixCls:l.value,status:E.value,ref:s,help:N,extra:(K=e.extra)!==null&&K!==void 0?K:(Z=r.extra)===null||Z===void 0?void 0:Z.call(r)}),{default:r.default})])}})}}});function fa(t){var e=!1,n=t.length,r=[];return t.length?new Promise(function(a,i){t.forEach(function(o,u){o.catch(function(l){return e=!0,l}).then(function(l){n-=1,r[u]=l,!(n>0)&&(e&&i(r),a(r))})})}):Promise.resolve([])}function Xn(t){return typeof t=="object"&&t!=null&&t.nodeType===1}function Qn(t,e){return(!e||t!=="hidden")&&t!=="visible"&&t!=="clip"}function St(t,e){if(t.clientHeighte||i>t&&o=e&&u>=n?i-t-r:o>e&&un?o-e+a:0}var Jn=function(t,e){var n=window,r=e.scrollMode,a=e.block,i=e.inline,o=e.boundary,u=e.skipOverflowHiddenElements,l=typeof o=="function"?o:function(Ye){return Ye!==o};if(!Xn(t))throw new TypeError("Invalid target");for(var C,y,x=document.scrollingElement||document.documentElement,S=[],s=t;Xn(s)&&l(s);){if((s=(y=(C=s).parentElement)==null?C.getRootNode().host||null:y)===x){S.push(s);break}s!=null&&s===document.body&&St(s)&&!St(document.documentElement)||s!=null&&St(s,u)&&S.push(s)}for(var m=n.visualViewport?n.visualViewport.width:innerWidth,f=n.visualViewport?n.visualViewport.height:innerHeight,p=window.scrollX||pageXOffset,c=window.scrollY||pageYOffset,A=t.getBoundingClientRect(),v=A.height,d=A.width,b=A.top,g=A.right,F=A.bottom,I=A.left,O=a==="start"||a==="nearest"?b:a==="end"?F:b+v/2,M=i==="center"?I+d/2:i==="end"?g:I,q=[],L=0;L=0&&I>=0&&F<=f&&g<=m&&b>=E&&F<=h&&I>=$&&g<=w)return q;var N=getComputedStyle(j),V=parseInt(N.borderLeftWidth,10),D=parseInt(N.borderTopWidth,10),U=parseInt(N.borderRightWidth,10),K=parseInt(N.borderBottomWidth,10),Z=0,Q=0,ae="offsetWidth"in j?j.offsetWidth-j.clientWidth-V-U:0,re="offsetHeight"in j?j.offsetHeight-j.clientHeight-D-K:0,oe="offsetWidth"in j?j.offsetWidth===0?0:P/j.offsetWidth:0,ge="offsetHeight"in j?j.offsetHeight===0?0:B/j.offsetHeight:0;if(x===j)Z=a==="start"?O:a==="end"?O-f:a==="nearest"?rt(c,c+f,f,D,K,c+O,c+O+v,v):O-f/2,Q=i==="start"?M:i==="center"?M-m/2:i==="end"?M-m:rt(p,p+m,m,V,U,p+M,p+M+d,d),Z=Math.max(0,Z+c),Q=Math.max(0,Q+p);else{Z=a==="start"?O-E-D:a==="end"?O-h+K+re:a==="nearest"?rt(E,h,B,D,K+re,O,O+v,v):O-(E+B/2)+re/2,Q=i==="start"?M-$-V:i==="center"?M-($+P/2)+ae/2:i==="end"?M-w+U+ae:rt($,w,P,V,U+ae,M,M+d,d);var Re=j.scrollLeft,Ze=j.scrollTop;O+=Ze-(Z=Math.max(0,Math.min(Ze+Z/ge,j.scrollHeight-B/ge+re))),M+=Re-(Q=Math.max(0,Math.min(Re+Q/oe,j.scrollWidth-P/oe+ae)))}q.push({el:j,top:Z,left:Q})}return q};function ca(t){return t===Object(t)&&Object.keys(t).length!==0}function Hl(t,e){e===void 0&&(e="auto");var n="scrollBehavior"in document.body.style;t.forEach(function(r){var a=r.el,i=r.top,o=r.left;a.scroll&&n?a.scroll({top:i,left:o,behavior:e}):(a.scrollTop=i,a.scrollLeft=o)})}function Kl(t){return t===!1?{block:"end",inline:"nearest"}:ca(t)?t:{block:"start",inline:"nearest"}}function Zl(t,e){var n=t.isConnected||t.ownerDocument.documentElement.contains(t);if(ca(e)&&typeof e.behavior=="function")return e.behavior(n?Jn(t,e):[]);if(n){var r=Kl(e);return Hl(Jn(t,r),r.behavior)}}var Yl=Math.min;function Xl(t,e,n){for(var r=Fi,a=t[0].length,i=t.length,o=i,u=Array(i),l=1/0,C=[];o--;){var y=t[o];l=Yl(y.length,l),u[o]=a>=120&&y.length>=120?new Ya(o&&y):void 0}y=t[0];var x=-1,S=u[0];e:for(;++x1),i}),He(t,Zr(t),n),r&&(n=Le(n,ls|ss|fs,us));for(var a=e.length;a--;)os(n,e[a]);return n});function er(t){var e=!1;return t&&t.length&&t.every(function(n){return n.required?(e=!0,!1):!0}),e}function tr(t){return t==null?[]:Array.isArray(t)?t:[t]}function Et(t,e,n){var r=t;e=e.replace(/\[(\w+)\]/g,".$1"),e=e.replace(/^\./,"");for(var a=e.split("."),i=0,o=a.length;i1&&arguments[1]!==void 0?arguments[1]:H({}),n=arguments.length>2?arguments[2]:void 0,r=ot(we(t)),a=pr({}),i=Cr([]),o=function(d){ze(we(t),_(_({},ot(r)),d)),le(function(){Object.keys(a).forEach(function(b){a[b]={autoLink:!1,required:er(we(e)[b])}})})},u=function(){var d=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],b=arguments.length>1?arguments[1]:void 0;return b.length?d.filter(function(g){var F=tr(g.trigger||"change");return ts(F,b).length}):d},l=null,C=function(d){for(var b=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},g=arguments.length>2?arguments[2]:void 0,F=[],I={},O=function(){var B=d[M],P=Et(we(t),B,g);if(!P.isValid)return"continue";I[B]=P.v;var E=u(we(e)[B],tr(b&&b.trigger));E.length&&F.push(y(B,P.v,E,b||{}).then(function(){return{name:B,errors:[],warnings:[]}}).catch(function(w){var h=[],$=[];return w.forEach(function(N){var V=N.rule.warningOnly,D=N.errors;V?$.push.apply($,ie(D)):h.push.apply(h,ie(D))}),h.length?Promise.reject({name:B,errors:h,warnings:$}):{name:B,errors:h,warnings:$}}))},M=0;M3&&arguments[3]!==void 0?arguments[3]:{},I=ra([d],b,g,_({validateMessages:pt},F),!!F.validateFirst);return a[d]?(a[d].validateStatus="validating",I.catch(function(O){return O}).then(function(){var O=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[];if(a[d].validateStatus==="validating"){var M,q=O.filter(function(L){return L&&L.errors.length});a[d].validateStatus=q.length?"error":"success",a[d].help=q.length?q.map(function(L){return L.errors}):null,n==null||(M=n.onValidate)===null||M===void 0||M.call(n,d,!q.length,q.length?Nt(a[d].help[0]):null)}}),I):I.catch(function(O){return O})},x=function(d,b){var g=[],F=!0;d?Array.isArray(d)?g=d:g=[d]:(F=!1,g=i.value);var I=C(g,b||{},F);return I.catch(function(O){return O}),I},S=function(d){var b=[];d?Array.isArray(d)?b=d:b=[d]:b=i.value,b.forEach(function(g){a[g]&&ze(a[g],{validateStatus:"",help:null})})},s=function(d){for(var b={autoLink:!1},g=[],F=Array.isArray(d)?d:[d],I=0;I-1}):Object.values(d)},I=function(w){if(!e.model){it(!1,"Form","model is required for resetFields to work.");return}F(w).forEach(function(h){h.resetField()})},O=function(w){F(w).forEach(function(h){h.clearValidate()})},M=function(w){var h=e.scrollToFirstError;if(r("finishFailed",w),h&&w.errorFields.length){var $={};ve(h)==="object"&&($=h),L(w.errorFields[0].name,$)}},q=function(){return B.apply(void 0,arguments)},L=function(w){var h=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},$=F(w?[w]:void 0);if($.length){var N=$[0].fieldId.value,V=N?document.getElementById(N):null;V&&Zl(V,_({scrollMode:"if-needed",block:"nearest"},h))}},j=function(){var w=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0;if(w===!0){var h=[];return Object.values(d).forEach(function($){var N=$.namePath;h.push(N.value)}),Yn(e.model,h)}else return Yn(e.model,w)},W=function(w,h){if(it(!(w instanceof Function),"Form","validateFields/validateField/validate not support callback, please use promise instead"),!e.model)return it(!1,"Form","model is required for validateFields to work."),Promise.reject("Form `model` is required for validateFields to work.");var $=!!w,N=$?ye(w).map(Dt):[],V=[];Object.values(d).forEach(function(K){var Z;if($||N.push(K.namePath.value),!!((Z=K.rules)!==null&&Z!==void 0&&Z.value.length)){var Q=K.namePath.value;if(!$||ml(N,Q)){var ae=K.validateRules(_({validateMessages:c.value},h));V.push(ae.then(function(){return{name:Q,errors:[],warnings:[]}}).catch(function(re){var oe=[],ge=[];return re.forEach(function(Re){var Ze=Re.rule.warningOnly,Ye=Re.errors;Ze?ge.push.apply(ge,ie(Ye)):oe.push.apply(oe,ie(Ye))}),oe.length?Promise.reject({name:Q,errors:oe,warnings:ge}):{name:Q,errors:oe,warnings:ge}}))}}});var D=fa(V);v.value=D;var U=D.then(function(){return v.value===D?Promise.resolve(j(N)):Promise.reject([])}).catch(function(K){var Z=K.filter(function(Q){return Q&&Q.errors.length});return Promise.reject({values:j(N),errorFields:Z,outOfDate:v.value!==D})});return U.catch(function(K){return K}),U},B=function(){return W.apply(void 0,arguments)},P=function(w){if(w.preventDefault(),w.stopPropagation(),r("submit",w),e.model){var h=W();h.then(function($){r("finish",$)}).catch(function($){M($)})}};return i({resetFields:I,clearValidate:O,validateFields:W,getFieldsValue:j,validate:q,scrollToField:L}),la({model:R(function(){return e.model}),name:R(function(){return e.name}),labelAlign:R(function(){return e.labelAlign}),labelCol:R(function(){return e.labelCol}),labelWrap:R(function(){return e.labelWrap}),wrapperCol:R(function(){return e.wrapperCol}),vertical:R(function(){return e.layout==="vertical"}),colon:m,requiredMark:s,validateTrigger:R(function(){return e.validateTrigger}),rules:R(function(){return e.rules}),addField:b,removeField:g,onValidate:function(w,h,$){r("validate",w,h,$)},validateMessages:c}),de(function(){return e.rules},function(){e.validateOnRuleChange&&W()}),function(){var E;return z("form",_(_({},o),{},{onSubmit:P,class:[A.value,o.class]}),[(E=a.default)===null||E===void 0?void 0:E.call(a)])}}});Ae.useInjectFormItemContext=en;Ae.ItemRest=Rt;Ae.install=function(t){return t.component(Ae.name,Ae),t.component(Ae.Item.name,Ae.Item),t.component(Rt.name,Rt),t};var bt=function(){return{id:String,prefixCls:String,inputPrefixCls:String,defaultValue:X.oneOfType([X.string,X.number]),value:{type:[String,Number,Symbol],default:void 0},placeholder:{type:[String,Number]},autocomplete:String,type:{type:String,default:"text"},name:String,size:{type:String},disabled:{type:Boolean,default:void 0},readonly:{type:Boolean,default:void 0},addonBefore:X.any,addonAfter:X.any,prefix:X.any,suffix:X.any,autofocus:{type:Boolean,default:void 0},allowClear:{type:Boolean,default:void 0},lazy:{type:Boolean,default:!0},maxlength:Number,loading:{type:Boolean,default:void 0},bordered:{type:Boolean,default:void 0},showCount:{type:[Boolean,Object]},htmlSize:Number,onPressEnter:Function,onKeydown:Function,onKeyup:Function,onFocus:Function,onBlur:Function,onChange:Function,onInput:Function,"onUpdate:value":Function,valueModifiers:Object,hidden:Boolean}},da=function(){return _(_({},be(bt(),["prefix","addonBefore","addonAfter","suffix"])),{},{rows:Number,autosize:{type:[Boolean,Object],default:void 0},autoSize:{type:[Boolean,Object],default:void 0},onResize:{type:Function},onCompositionstart:Function,onCompositionend:Function,valueModifiers:Object})};function va(t,e,n,r,a){var i;return J(t,(i={},T(i,"".concat(t,"-sm"),n==="small"),T(i,"".concat(t,"-lg"),n==="large"),T(i,"".concat(t,"-disabled"),r),T(i,"".concat(t,"-rtl"),a==="rtl"),T(i,"".concat(t,"-borderless"),!e),i))}var ke=function(e){return e!=null&&(Array.isArray(e)?Fr(e).length:!0)};function ms(t){return ke(t.prefix)||ke(t.suffix)||ke(t.allowClear)}function Ot(t){return ke(t.addonBefore)||ke(t.addonAfter)}var hs=["text","input"];const ga=te({compatConfig:{MODE:3},name:"ClearableLabeledInput",inheritAttrs:!1,props:{prefixCls:String,inputType:X.oneOf(Ee("text","input")),value:X.any,defaultValue:X.any,allowClear:{type:Boolean,default:void 0},element:X.any,handleReset:Function,disabled:{type:Boolean,default:void 0},direction:{type:String},size:{type:String},suffix:X.any,prefix:X.any,addonBefore:X.any,addonAfter:X.any,readonly:{type:Boolean,default:void 0},focused:{type:Boolean,default:void 0},bordered:{type:Boolean,default:!0},triggerFocus:{type:Function},hidden:Boolean},setup:function(e,n){var r=n.slots,a=n.attrs,i=H(),o=function(s){var m;if((m=i.value)!==null&&m!==void 0&&m.contains(s.target)){var f=e.triggerFocus;f==null||f()}},u=function(s){var m,f=e.allowClear,p=e.value,c=e.disabled,A=e.readonly,v=e.handleReset,d=e.suffix,b=d===void 0?r.suffix:d;if(!f)return null;var g=!c&&!A&&p,F="".concat(s,"-clear-icon");return z(wr,{onClick:v,onMousedown:function(O){return O.preventDefault()},class:J((m={},T(m,"".concat(F,"-hidden"),!g),T(m,"".concat(F,"-has-suffix"),!!b),m),F),role:"button"},null)},l=function(s){var m,f=e.suffix,p=f===void 0?(m=r.suffix)===null||m===void 0?void 0:m.call(r):f,c=e.allowClear;return p||c?z("span",{class:"".concat(s,"-suffix")},[u(s),p]):null},C=function(s,m){var f,p,c,A=e.focused,v=e.value,d=e.prefix,b=d===void 0?(f=r.prefix)===null||f===void 0?void 0:f.call(r):d,g=e.size,F=e.suffix,I=F===void 0?(p=r.suffix)===null||p===void 0?void 0:p.call(r):F,O=e.disabled,M=e.allowClear,q=e.direction,L=e.readonly,j=e.bordered,W=e.hidden,B=e.addonAfter,P=B===void 0?r.addonAfter:B,E=e.addonBefore,w=E===void 0?r.addonBefore:E,h=l(s);if(!ms({prefix:b,suffix:I,allowClear:M}))return Fe(m,{value:v});var $=b?z("span",{class:"".concat(s,"-prefix")},[b]):null,N=J("".concat(s,"-affix-wrapper"),(c={},T(c,"".concat(s,"-affix-wrapper-focused"),A),T(c,"".concat(s,"-affix-wrapper-disabled"),O),T(c,"".concat(s,"-affix-wrapper-sm"),g==="small"),T(c,"".concat(s,"-affix-wrapper-lg"),g==="large"),T(c,"".concat(s,"-affix-wrapper-input-with-clear-btn"),I&&M&&v),T(c,"".concat(s,"-affix-wrapper-rtl"),q==="rtl"),T(c,"".concat(s,"-affix-wrapper-readonly"),L),T(c,"".concat(s,"-affix-wrapper-borderless"),!j),T(c,"".concat(a.class),!Ot({addonAfter:P,addonBefore:w})&&a.class),c));return z("span",{ref:i,class:N,style:a.style,onMouseup:o,hidden:W},[$,Fe(m,{style:null,value:v,class:va(s,j,g,O)}),h])},y=function(s,m){var f,p,c,A=e.addonBefore,v=A===void 0?(f=r.addonBefore)===null||f===void 0?void 0:f.call(r):A,d=e.addonAfter,b=d===void 0?(p=r.addonAfter)===null||p===void 0?void 0:p.call(r):d,g=e.size,F=e.direction,I=e.hidden,O=e.disabled;if(!Ot({addonBefore:v,addonAfter:b}))return m;var M="".concat(s,"-group"),q="".concat(M,"-addon"),L=J(q,T({},"".concat(q,"-disabled"),O)),j=v?z("span",{class:L},[v]):null,W=b?z("span",{class:L},[b]):null,B=J("".concat(s,"-wrapper"),M,T({},"".concat(M,"-rtl"),F==="rtl")),P=J("".concat(s,"-group-wrapper"),(c={},T(c,"".concat(s,"-group-wrapper-sm"),g==="small"),T(c,"".concat(s,"-group-wrapper-lg"),g==="large"),T(c,"".concat(s,"-group-wrapper-rtl"),F==="rtl"),c),a.class);return z("span",{class:P,style:a.style,hidden:I},[z("span",{class:B},[j,Fe(m,{style:null}),W])])},x=function(s,m){var f,p=e.value,c=e.allowClear,A=e.direction,v=e.bordered,d=e.hidden,b=e.addonAfter,g=b===void 0?r.addonAfter:b,F=e.addonBefore,I=F===void 0?r.addonBefore:F;if(!c)return Fe(m,{value:p});var O=J("".concat(s,"-affix-wrapper"),"".concat(s,"-affix-wrapper-textarea-with-clear-btn"),(f={},T(f,"".concat(s,"-affix-wrapper-rtl"),A==="rtl"),T(f,"".concat(s,"-affix-wrapper-borderless"),!v),T(f,"".concat(a.class),!Ot({addonAfter:g,addonBefore:I})&&a.class),f));return z("span",{class:O,style:a.style,hidden:d},[Fe(m,{style:null,value:p}),u(s)])};return function(){var S,s=e.prefixCls,m=e.inputType,f=e.element,p=f===void 0?(S=r.element)===null||S===void 0?void 0:S.call(r):f;return m===hs[0]?x(s,p):y(s,C(s,p))}}});function Kt(t){return typeof t>"u"||t===null?"":String(t)}function De(t,e,n,r){if(n){var a=e;if(e.type==="click"){Object.defineProperty(a,"target",{writable:!0}),Object.defineProperty(a,"currentTarget",{writable:!0});var i=t.cloneNode(!0);a.target=i,a.currentTarget=i,i.value="",n(a);return}if(r!==void 0){Object.defineProperty(a,"target",{writable:!0}),Object.defineProperty(a,"currentTarget",{writable:!0}),a.target=t,a.currentTarget=t,t.value=r,n(a);return}n(a)}}function ma(t,e){if(t){t.focus(e);var n=e||{},r=n.cursor;if(r){var a=t.value.length;switch(r){case"start":t.setSelectionRange(0,0);break;case"end":t.setSelectionRange(a,a);break;default:t.setSelectionRange(0,a)}}}}const ne=te({compatConfig:{MODE:3},name:"AInput",inheritAttrs:!1,props:bt(),setup:function(e,n){var r=n.slots,a=n.attrs,i=n.expose,o=n.emit,u=H(),l=H(),C,y=en(),x=fe("input",e),S=x.direction,s=x.prefixCls,m=x.size,f=x.autocomplete,p=H(e.value===void 0?e.defaultValue:e.value),c=H(!1);de(function(){return e.value},function(){p.value=e.value}),de(function(){return e.disabled},function(){e.value!==void 0&&(p.value=e.value),e.disabled&&(c.value=!1)});var A=function(){C=setTimeout(function(){var w;((w=u.value)===null||w===void 0?void 0:w.getAttribute("type"))==="password"&&u.value.hasAttribute("value")&&u.value.removeAttribute("value")})},v=function(w){ma(u.value,w)},d=function(){var w;(w=u.value)===null||w===void 0||w.blur()},b=function(w,h,$){var N;(N=u.value)===null||N===void 0||N.setSelectionRange(w,h,$)},g=function(){var w;(w=u.value)===null||w===void 0||w.select()};i({focus:v,blur:d,input:u,stateValue:p,setSelectionRange:b,select:g});var F=function(w){var h=e.onFocus;c.value=!0,h==null||h(w),le(function(){A()})},I=function(w){var h=e.onBlur;c.value=!1,h==null||h(w),y.onFieldBlur(),le(function(){A()})},O=function(w){o("update:value",w.target.value),o("change",w),o("input",w),y.onFieldChange()},M=Ue(),q=function(w,h){p.value!==w&&(e.value===void 0?p.value=w:le(function(){u.value.value!==p.value&&M.update()}),le(function(){h&&h()}))},L=function(w){De(u.value,w,O),q("",function(){v()})},j=function(w){var h=w.target,$=h.value,N=h.composing;if(!((w.isComposing||N)&&e.lazy||p.value===$)){var V=w.target.value;De(u.value,w,O),q(V,function(){A()})}},W=function(w){w.keyCode===13&&o("pressEnter",w),o("keydown",w)};Oe(function(){A()}),Ne(function(){clearTimeout(C)});var B=function(){var w,h=e.addonBefore,$=h===void 0?r.addonBefore:h,N=e.addonAfter,V=N===void 0?r.addonAfter:N,D=e.disabled,U=e.bordered,K=U===void 0?!0:U,Z=e.valueModifiers,Q=Z===void 0?{}:Z,ae=e.htmlSize,re=be(e,["prefixCls","onPressEnter","addonBefore","addonAfter","prefix","suffix","allowClear","defaultValue","size","bordered","htmlSize","lazy","showCount","valueModifiers"]),oe=_(_(_({},re),a),{},{autocomplete:f.value,onChange:j,onInput:j,onFocus:F,onBlur:I,onKeydown:W,class:J(va(s.value,K,m.value,D,S.value),T({},a.class,a.class&&!$&&!V)),ref:u,key:"ant-input",size:ae,id:(w=re.id)!==null&&w!==void 0?w:y.id.value});Q.lazy&&delete oe.onInput,oe.autofocus||delete oe.autofocus;var ge=z("input",be(oe,["size"]),null);return Ar(ge,[[zr]])},P=function(){var w,h=p.value,$=e.maxlength,N=e.suffix,V=N===void 0?(w=r.suffix)===null||w===void 0?void 0:w.call(r):N,D=e.showCount,U=Number($)>0;if(V||D){var K=ie(Kt(h)).length,Z=null;return ve(D)==="object"?Z=D.formatter({count:K,maxlength:$}):Z="".concat(K).concat(U?" / ".concat($):""),z(We,null,[!!D&&z("span",{class:J("".concat(s.value,"-show-count-suffix"),T({},"".concat(s.value,"-show-count-has-suffix"),!!V))},[Z]),V])}return null};return function(){var E=_(_(_({},a),e),{},{prefixCls:s.value,inputType:"input",value:Kt(p.value),handleReset:L,focused:c.value&&!e.disabled});return z(ga,_(_({},be(E,["element","valueModifiers","suffix","showCount"])),{},{ref:l}),_(_({},r),{},{element:B,suffix:P}))}}}),ps=te({compatConfig:{MODE:3},name:"AInputGroup",props:{prefixCls:String,size:{type:String},compact:{type:Boolean,default:void 0},onMouseenter:{type:Function},onMouseleave:{type:Function},onFocus:{type:Function},onBlur:{type:Function}},setup:function(e,n){var r=n.slots,a=fe("input-group",e),i=a.prefixCls,o=a.direction,u=R(function(){var l,C=i.value;return l={},T(l,"".concat(C),!0),T(l,"".concat(C,"-lg"),e.size==="large"),T(l,"".concat(C,"-sm"),e.size==="small"),T(l,"".concat(C,"-compact"),e.compact),T(l,"".concat(C,"-rtl"),o.value==="rtl"),l});return function(){var l;return z("span",{class:u.value,onMouseenter:e.onMouseenter,onMouseleave:e.onMouseleave,onFocus:e.onFocus,onBlur:e.onBlur},[(l=r.default)===null||l===void 0?void 0:l.call(r)])}}});var Pt=/iPhone/i,nr=/iPod/i,rr=/iPad/i,Tt=/\bAndroid(?:.+)Mobile\b/i,ar=/Android/i,_e=/\bAndroid(?:.+)SD4930UR\b/i,at=/\bAndroid(?:.+)(?:KF[A-Z]{2,4})\b/i,me=/Windows Phone/i,ir=/\bWindows(?:.+)ARM\b/i,or=/BlackBerry/i,ur=/BB10/i,lr=/Opera Mini/i,sr=/\b(CriOS|Chrome)(?:.+)Mobile/i,fr=/Mobile(?:.+)Firefox\b/i;function k(t,e){return t.test(e)}function cr(t){var e=t||(typeof navigator<"u"?navigator.userAgent:""),n=e.split("[FBAN");if(typeof n[1]<"u"){var r=n,a=jt(r,1);e=a[0]}if(n=e.split("Twitter"),typeof n[1]<"u"){var i=n,o=jt(i,1);e=o[0]}var u={apple:{phone:k(Pt,e)&&!k(me,e),ipod:k(nr,e),tablet:!k(Pt,e)&&k(rr,e)&&!k(me,e),device:(k(Pt,e)||k(nr,e)||k(rr,e))&&!k(me,e)},amazon:{phone:k(_e,e),tablet:!k(_e,e)&&k(at,e),device:k(_e,e)||k(at,e)},android:{phone:!k(me,e)&&k(_e,e)||!k(me,e)&&k(Tt,e),tablet:!k(me,e)&&!k(_e,e)&&!k(Tt,e)&&(k(at,e)||k(ar,e)),device:!k(me,e)&&(k(_e,e)||k(at,e)||k(Tt,e)||k(ar,e))||k(/\bokhttp\b/i,e)},windows:{phone:k(me,e),tablet:k(ir,e),device:k(me,e)||k(ir,e)},other:{blackberry:k(or,e),blackberry10:k(ur,e),opera:k(lr,e),firefox:k(fr,e),chrome:k(sr,e),device:k(or,e)||k(ur,e)||k(lr,e)||k(fr,e)||k(sr,e)},any:null,phone:null,tablet:null};return u.any=u.apple.device||u.android.device||u.windows.device||u.other.device,u.phone=u.apple.phone||u.android.phone||u.windows.phone,u.tablet=u.apple.tablet||u.android.tablet||u.windows.tablet,u}var bs=_(_({},cr()),{},{isMobile:cr}),ys=["disabled","loading","addonAfter","suffix"];const xs=te({compatConfig:{MODE:3},name:"AInputSearch",inheritAttrs:!1,props:_(_({},bt()),{},{inputPrefixCls:String,enterButton:X.any,onSearch:{type:Function}}),setup:function(e,n){var r=n.slots,a=n.attrs,i=n.expose,o=n.emit,u=H(),l=function(){var d;(d=u.value)===null||d===void 0||d.focus()},C=function(){var d;(d=u.value)===null||d===void 0||d.blur()};i({focus:l,blur:C});var y=function(d){o("update:value",d.target.value),d&&d.target&&d.type==="click"&&o("search",d.target.value,d),o("change",d)},x=function(d){var b;document.activeElement===((b=u.value)===null||b===void 0?void 0:b.input)&&d.preventDefault()},S=function(d){var b;o("search",(b=u.value)===null||b===void 0?void 0:b.stateValue,d),bs.tablet||u.value.focus()},s=fe("input-search",e),m=s.prefixCls,f=s.getPrefixCls,p=s.direction,c=s.size,A=R(function(){return f("input",e.inputPrefixCls)});return function(){var v,d,b,g,F,I=e.disabled,O=e.loading,M=e.addonAfter,q=M===void 0?(v=r.addonAfter)===null||v===void 0?void 0:v.call(r):M,L=e.suffix,j=L===void 0?(d=r.suffix)===null||d===void 0?void 0:d.call(r):L,W=Sr(e,ys),B=e.enterButton,P=B===void 0?(b=(g=r.enterButton)===null||g===void 0?void 0:g.call(r))!==null&&b!==void 0?b:!1:B;P=P||P==="";var E=typeof P=="boolean"?z(nn,null,null):null,w="".concat(m.value,"-button"),h=Array.isArray(P)?P[0]:P,$,N=h.type&&Rr(h.type)&&h.type.__ANT_BUTTON;if(N||h.tagName==="button")$=Fe(h,_({onMousedown:x,onClick:S,key:"enterButton"},N?{class:w,size:c.value}:{}),!1);else{var V=E&&!P;$=z(qe,{class:w,type:P?"primary":void 0,size:c.value,disabled:I,key:"enterButton",onMousedown:x,onClick:S,loading:O,icon:V?E:null},{default:function(){return[V?null:E||P]}})}q&&($=[$,q]);var D=J(m.value,(F={},T(F,"".concat(m.value,"-rtl"),p.value==="rtl"),T(F,"".concat(m.value,"-").concat(c.value),!!c.value),T(F,"".concat(m.value,"-with-button"),!!P),F),a.class);return z(ne,_(_(_({ref:u},be(W,["onUpdate:value","onSearch","enterButton"])),a),{},{onPressEnter:S,size:c.value,prefixCls:A.value,addonAfter:$,suffix:j,onChange:y,class:D,disabled:I}),r)}}});var ws=` min-height:0 !important; max-height:none !important; height:0 !important; diff --git a/apps/user-app/dist/assets/index-BgbR-bph.js b/apps/user-app/dist/assets/index-DXKwa_Wp.js similarity index 89% rename from apps/user-app/dist/assets/index-BgbR-bph.js rename to apps/user-app/dist/assets/index-DXKwa_Wp.js index a2f4883..624fa5b 100644 --- a/apps/user-app/dist/assets/index-BgbR-bph.js +++ b/apps/user-app/dist/assets/index-DXKwa_Wp.js @@ -1 +1 @@ -import{aa as k,ak as h,d as se,o as Ce,$ as ae,w as J,a7 as _e,aU as ce,az as be,ah as j,x as E,k as H,j as te,U as Re,aC as Se,a6 as Xe,aH as Ne,c as Ue,ab as Ye,ar as Ke,aw as qe,aq as $e,aX as Ze,ay as Be,ai as Ge,aj as Je,ao as fe,aY as ve,aZ as Qe,ax as et}from"./index-BFOyCNFT.js";import{K as tt,s as nt,P as at}from"./KeyCode-C6xc2Qke.js";import{o as Ae,_ as ot,a as rt}from"./classCallCheck-BVPDkxOa.js";import{w as Ee}from"./raf-nDFcuFT6.js";var me;function pe(s){if(typeof document>"u")return 0;if(s||me===void 0){var e=document.createElement("div");e.style.width="100%",e.style.height="200px";var n=document.createElement("div"),o=n.style;o.position="absolute",o.top="0",o.left="0",o.pointerEvents="none",o.visibility="hidden",o.width="200px",o.height="150px",o.overflow="hidden",n.appendChild(e),document.body.appendChild(n);var a=e.offsetWidth;n.style.overflow="scroll";var d=e.offsetWidth;a===d&&(d=n.clientWidth),document.body.removeChild(n),me=a-d}return me}var He=function(){return{prefixCls:String,width:h.oneOfType([h.string,h.number]),height:h.oneOfType([h.string,h.number]),style:{type:Object,default:void 0},class:String,placement:{type:String},wrapperClassName:String,level:{type:[String,Array]},levelMove:{type:[Number,Function,Array]},duration:String,ease:String,showMask:{type:Boolean,default:void 0},maskClosable:{type:Boolean,default:void 0},maskStyle:{type:Object,default:void 0},afterVisibleChange:Function,keyboard:{type:Boolean,default:void 0},contentWrapperStyle:{type:Object,default:void 0},autofocus:{type:Boolean,default:void 0},open:{type:Boolean,default:void 0}}},lt=function(){return k(k({},He()),{},{forceRender:{type:Boolean,default:void 0},getContainer:h.oneOfType([h.string,h.func,h.object,h.looseBool])})},it=function(){return k(k({},He()),{},{getContainer:Function,getOpenCount:Function,scrollLocker:h.any,switchScrollingEffect:Function})};function ct(s){return Array.isArray(s)?s:[s]}var Ve={transition:"transitionend",WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend"},st=Object.keys(Ve).filter(function(s){if(typeof document>"u")return!1;var e=document.getElementsByTagName("html")[0];return s in(e?e.style:{})})[0],Pe=Ve[st];function Oe(s,e,n,o){s.addEventListener?s.addEventListener(e,n,o):s.attachEvent&&s.attachEvent("on".concat(e),n)}function xe(s,e,n,o){s.removeEventListener?s.removeEventListener(e,n,o):s.attachEvent&&s.detachEvent("on".concat(e),n)}function ut(s,e){var n=typeof s=="function"?s(e):s;return Array.isArray(n)?n.length===2?n:[n[0],n[1]]:[n]}var Te=function(e){return!isNaN(parseFloat(e))&&isFinite(e)},he=!(typeof window<"u"&&window.document&&window.document.createElement),dt=function s(e,n,o,a){if(!n||n===document||n instanceof Document)return!1;if(n===e.parentNode)return!0;var d=Math.max(Math.abs(o),Math.abs(a))===Math.abs(a),y=Math.max(Math.abs(o),Math.abs(a))===Math.abs(o),C=n.scrollHeight-n.clientHeight,r=n.scrollWidth-n.clientWidth,c=document.defaultView.getComputedStyle(n),S=c.overflowY==="auto"||c.overflowY==="scroll",D=c.overflowX==="auto"||c.overflowX==="scroll",L=C&&S,B=r&&D;return d&&(!L||L&&(n.scrollTop>=C&&a<0||n.scrollTop<=0&&a>0))||y&&(!B||B&&(n.scrollLeft>=r&&o<0||n.scrollLeft<=0&&o>0))?s(e,n.parentNode,o,a):!1},ft=["width","height","open","prefixCls","placement","level","levelMove","ease","duration","getContainer","onChange","afterVisibleChange","showMask","maskClosable","maskStyle","keyboard","getOpenCount","scrollLocker","contentWrapperStyle","style","class"],ee={},De=se({compatConfig:{MODE:3},inheritAttrs:!1,props:it(),emits:["close","handleClick","change"],setup:function(e,n){var o=n.emit,a=n.slots,d=Re({startPos:{x:null,y:null}}),y,C=H(),r=H(),c=H(),S=H(),D=H(),L=[],B="drawer_id_".concat(Number((Date.now()+Math.random()).toString().replace(".",Math.round(Math.random()*9).toString())).toString(16)),P=!he&&nt?{passive:!1}:!1;Ce(function(){ae(function(){var l=e.open,t=e.getContainer,i=e.showMask,v=e.autofocus,m=t==null?void 0:t();if(T(e),l&&(m&&m.parentNode===document.body&&(ee[B]=l),q(),ae(function(){v&&b()}),i)){var w;(w=e.scrollLocker)===null||w===void 0||w.lock()}})}),J(function(){return e.level},function(){T(e)},{flush:"post"}),J(function(){return e.open},function(){var l=e.open,t=e.getContainer,i=e.scrollLocker,v=e.showMask,m=e.autofocus,w=t==null?void 0:t();w&&w.parentNode===document.body&&(ee[B]=!!l),q(),l?(m&&b(),v&&(i==null||i.lock())):i==null||i.unLock()},{flush:"post"}),_e(function(){var l,t=e.open;delete ee[B],t&&(oe(!1),document.body.style.touchAction=""),(l=e.scrollLocker)===null||l===void 0||l.unLock()}),J(function(){return e.placement},function(l){l&&(D.value=null)});var b=function(){var t,i;(t=r.value)===null||t===void 0||(i=t.focus)===null||i===void 0||i.call(t)},O=function(t){t.touches.length>1||(d.startPos={x:t.touches[0].clientX,y:t.touches[0].clientY})},A=function(t){if(!(t.changedTouches.length>1)){var i=t.currentTarget,v=t.changedTouches[0].clientX-d.startPos.x,m=t.changedTouches[0].clientY-d.startPos.y;(i===c.value||i===S.value||i===D.value&&dt(i,t.target,v,m))&&t.cancelable&&t.preventDefault()}},W=function l(t){var i=t.target;xe(i,Pe,l),i.style.transition=""},_=function(t){o("close",t)},X=function(t){t.keyCode===tt.ESC&&(t.stopPropagation(),_(t))},K=function(t){var i=e.open,v=e.afterVisibleChange;t.target===C.value&&t.propertyName.match(/transform$/)&&(r.value.style.transition="",!i&&x()&&(document.body.style.overflowX="",c.value&&(c.value.style.left="",c.value.style.width="")),v&&v(!!i))},R=te(function(){var l=e.placement,t=l==="left"||l==="right",i="translate".concat(t?"X":"Y");return{isHorizontal:t,placementName:i}}),q=function(){var t=e.open,i=e.width,v=e.height,m=R.value,w=m.isHorizontal,p=m.placementName,N=D.value?D.value.getBoundingClientRect()[w?"width":"height"]:0,$=(w?i:v)||N;ue(t,p,$)},oe=function(t,i,v,m){var w=e.placement,p=e.levelMove,N=e.duration,$=e.ease,F=e.showMask;L.forEach(function(Z){Z.style.transition="transform ".concat(N," ").concat($),Oe(Z,Pe,W);var U=t?v:0;if(p){var re=ut(p,{target:Z,open:t});U=t?re[0]:re[1]||0}var le=typeof U=="number"?"".concat(U,"px"):U,Y=w==="left"||w==="top"?le:"-".concat(le);Y=F&&w==="right"&&m?"calc(".concat(Y," + ").concat(m,"px)"):Y,Z.style.transform=U?"".concat(i,"(").concat(Y,")"):""})},ue=function(t,i,v){if(!he){var m=document.body.scrollHeight>(window.innerHeight||document.documentElement.clientHeight)&&window.innerWidth>document.body.offsetWidth?pe(!0):0;oe(t,i,v,m),g(m)}o("change",t)},g=function(t){var i=e.getContainer,v=e.showMask,m=e.open,w=i==null?void 0:i();if(w&&w.parentNode===document.body&&v){var p=["touchstart"],N=[document.body,c.value,S.value,D.value];m&&document.body.style.overflow!=="hidden"?(t&&u(t),document.body.style.touchAction="none",N.forEach(function($,F){$&&Oe($,p[F]||"touchmove",F?A:O,P)})):x()&&(document.body.style.touchAction="",t&&f(t),N.forEach(function($,F){$&&xe($,p[F]||"touchmove",F?A:O,P)}))}},u=function(t){var i=e.placement,v=e.duration,m=e.ease,w="width ".concat(v," ").concat(m),p="transform ".concat(v," ").concat(m);switch(r.value.style.transition="none",i){case"right":r.value.style.transform="translateX(-".concat(t,"px)");break;case"top":case"bottom":r.value.style.width="calc(100% - ".concat(t,"px)"),r.value.style.transform="translateZ(0)";break}clearTimeout(y),y=setTimeout(function(){r.value&&(r.value.style.transition="".concat(p,",").concat(w),r.value.style.width="",r.value.style.transform="")})},f=function(t){var i=e.placement,v=e.duration,m=e.ease;r.value.style.transition="none";var w,p="width ".concat(v," ").concat(m),N="transform ".concat(v," ").concat(m);switch(i){case"left":{r.value.style.width="100%",p="width 0s ".concat(m," ").concat(v);break}case"right":{r.value.style.transform="translateX(".concat(t,"px)"),r.value.style.width="100%",p="width 0s ".concat(m," ").concat(v),c.value&&(c.value.style.left="-".concat(t,"px"),c.value.style.width="calc(100% + ".concat(t,"px)"));break}case"top":case"bottom":{r.value.style.width="calc(100% + ".concat(t,"px)"),r.value.style.height="100%",r.value.style.transform="translateZ(0)",w="height 0s ".concat(m," ").concat(v);break}}clearTimeout(y),y=setTimeout(function(){r.value&&(r.value.style.transition="".concat(N,",").concat(w?"".concat(w,","):"").concat(p),r.value.style.transform="",r.value.style.width="",r.value.style.height="")})},x=function(){return!Object.keys(ee).some(function(t){return ee[t]})},T=function(t){var i=t.level,v=t.getContainer;if(!he){var m=v==null?void 0:v(),w=m?m.parentNode:null;if(L=[],i==="all"){var p=w?Array.prototype.slice.call(w.children):[];p.forEach(function(N){N.nodeName!=="SCRIPT"&&N.nodeName!=="STYLE"&&N.nodeName!=="LINK"&&N!==m&&L.push(N)})}else i&&ct(i).forEach(function(N){document.querySelectorAll(N).forEach(function($){L.push($)})})}},M=function(t){o("handleClick",t)},I=H(!1);return J(r,function(){ae(function(){I.value=!0})}),function(){var l,t,i,v=e.width,m=e.height,w=e.open,p=e.prefixCls,N=e.placement;e.level,e.levelMove,e.ease,e.duration,e.getContainer,e.onChange,e.afterVisibleChange;var $=e.showMask,F=e.maskClosable,Z=e.maskStyle,U=e.keyboard;e.getOpenCount,e.scrollLocker;var re=e.contentWrapperStyle,le=e.style,Y=e.class,We=ce(e,ft),de=w&&I.value,Ie=be(p,(l={},j(l,"".concat(p,"-").concat(N),!0),j(l,"".concat(p,"-open"),de),j(l,Y,!!Y),j(l,"no-mask",!$),l)),Fe=R.value.placementName,ze=N==="left"||N==="top"?"-100%":"100%",ke=de?"":"".concat(Fe,"(").concat(ze,")");return E("div",k(k({},Ae(We,["switchScrollingEffect","autofocus"])),{},{tabindex:-1,class:Ie,style:le,ref:r,onKeydown:de&&U?X:void 0,onTransitionend:K}),[$&&E("div",{class:"".concat(p,"-mask"),onClick:F?_:void 0,style:Z,ref:c},null),E("div",{class:"".concat(p,"-content-wrapper"),style:k({transform:ke,msTransform:ke,width:Te(v)?"".concat(v,"px"):v,height:Te(m)?"".concat(m,"px"):m},re),ref:C},[E("div",{class:"".concat(p,"-content"),ref:D},[(t=a.default)===null||t===void 0?void 0:t.call(a)]),a.handler?E("div",{onClick:M,ref:S},[(i=a.handler)===null||i===void 0?void 0:i.call(a)]):null])])}}});function Q(s){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=e.element,o=n===void 0?document.body:n,a={},d=Object.keys(s);return d.forEach(function(y){a[y]=o.style[y]}),d.forEach(function(y){o.style[y]=s[y]}),a}function vt(){return document.body.scrollHeight>(window.innerHeight||document.documentElement.clientHeight)&&window.innerWidth>document.body.offsetWidth}var ye={};const Me=function(s){if(!(!vt()&&!s)){var e="ant-scrolling-effect",n=new RegExp("".concat(e),"g"),o=document.body.className;if(s){if(!n.test(o))return;Q(ye),ye={},document.body.className=o.replace(n,"").trim();return}var a=pe();if(a&&(ye=Q({position:"relative",width:"calc(100% - ".concat(a,"px)")}),!n.test(o))){var d="".concat(o," ").concat(e);document.body.className=d.trim()}}};var V=[],je="ant-scrolling-effect",ge=new RegExp("".concat(je),"g"),mt=0,we=new Map,ht=ot(function s(e){var n=this;rt(this,s),j(this,"getContainer",function(){var o;return(o=n.options)===null||o===void 0?void 0:o.container}),j(this,"reLock",function(o){var a=V.find(function(d){var y=d.target;return y===n.lockTarget});a&&n.unLock(),n.options=o,a&&(a.options=o,n.lock())}),j(this,"lock",function(){var o;if(!V.some(function(r){var c=r.target;return c===n.lockTarget})){if(V.some(function(r){var c,S=r.options;return(S==null?void 0:S.container)===((c=n.options)===null||c===void 0?void 0:c.container)})){V=[].concat(Se(V),[{target:n.lockTarget,options:n.options}]);return}var a=0,d=((o=n.options)===null||o===void 0?void 0:o.container)||document.body;(d===document.body&&window.innerWidth-document.documentElement.clientWidth>0||d.scrollHeight>d.clientHeight)&&(a=pe());var y=d.className;if(V.filter(function(r){var c,S=r.options;return(S==null?void 0:S.container)===((c=n.options)===null||c===void 0?void 0:c.container)}).length===0&&we.set(d,Q({width:a!==0?"calc(100% - ".concat(a,"px)"):void 0,overflow:"hidden",overflowX:"hidden",overflowY:"hidden"},{element:d})),!ge.test(y)){var C="".concat(y," ").concat(je);d.className=C.trim()}V=[].concat(Se(V),[{target:n.lockTarget,options:n.options}])}}),j(this,"unLock",function(){var o,a=V.find(function(C){var r=C.target;return r===n.lockTarget});if(V=V.filter(function(C){var r=C.target;return r!==n.lockTarget}),!(!a||V.some(function(C){var r,c=C.options;return(c==null?void 0:c.container)===((r=a.options)===null||r===void 0?void 0:r.container)}))){var d=((o=n.options)===null||o===void 0?void 0:o.container)||document.body,y=d.className;ge.test(y)&&(Q(we.get(d),{element:d}),we.delete(d),d.className=d.className.replace(ge,"").trim())}}),this.lockTarget=mt++,this.options=e}),z=0,ne=qe(),ie={},G=function(e){if(!ne)return null;if(e){if(typeof e=="string")return document.querySelectorAll(e)[0];if(typeof e=="function")return e();if(Ke(e)==="object"&&e instanceof window.HTMLElement)return e}return document.body};const yt=se({compatConfig:{MODE:3},name:"PortalWrapper",inheritAttrs:!1,props:{wrapperClassName:String,forceRender:{type:Boolean,default:void 0},getContainer:h.any,visible:{type:Boolean,default:void 0}},setup:function(e,n){var o=n.slots,a=H(),d=H(),y=H(),C=new ht({container:G(e.getContainer)}),r=function(){var b,O;(b=a.value)===null||b===void 0||(O=b.parentNode)===null||O===void 0||O.removeChild(a.value)},c=function(){var b=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1;if(b||a.value&&!a.value.parentNode){var O=G(e.getContainer);return O?(O.appendChild(a.value),!0):!1}return!0},S=function(){return ne?(a.value||(a.value=document.createElement("div"),c(!0)),D(),a.value):null},D=function(){var b=e.wrapperClassName;a.value&&b&&b!==a.value.className&&(a.value.className=b)};Xe(function(){D(),c()});var L=function(){z===1&&!Object.keys(ie).length?(Me(),ie=Q({overflow:"hidden",overflowX:"hidden",overflowY:"hidden"})):z||(Q(ie),ie={},Me(!0))},B=Ye();return Ce(function(){var P=!1;J([function(){return e.visible},function(){return e.getContainer}],function(b,O){var A=Ne(b,2),W=A[0],_=A[1],X=Ne(O,2),K=X[0],R=X[1];if(ne&&G(e.getContainer)===document.body&&(W&&!K?z+=1:P&&(z-=1)),P){var q=typeof _=="function"&&typeof R=="function";(q?_.toString()!==R.toString():_!==R)&&r(),W&&W!==K&&ne&&G(_)!==C.getContainer()&&C.reLock({container:G(_)})}P=!0},{immediate:!0,flush:"post"}),ae(function(){c()||(y.value=Ee(function(){B.update()}))})}),Ue(function(){var P=e.visible,b=e.getContainer;ne&&G(b)===document.body&&(z=P&&z?z-1:z),r(),Ee.cancel(y.value)}),function(){var P=e.forceRender,b=e.visible,O=null,A={getOpenCount:function(){return z},getContainer:S,switchScrollingEffect:L,scrollLocker:C};return(P||b||d.value)&&(O=E(at,{getContainer:S,ref:d},{default:function(){var _;return(_=o.default)===null||_===void 0?void 0:_.call(o,A)}})),O}}});var gt=["afterVisibleChange","getContainer","wrapperClassName","forceRender"],wt=["visible","afterClose"],bt=se({compatConfig:{MODE:3},inheritAttrs:!1,props:$e(lt(),{prefixCls:"drawer",placement:"left",getContainer:"body",level:"all",duration:".3s",ease:"cubic-bezier(0.78, 0.14, 0.15, 0.86)",afterVisibleChange:function(){},showMask:!0,maskClosable:!0,maskStyle:{},wrapperClassName:"",keyboard:!0,forceRender:!1,autofocus:!0}),emits:["handleClick","close"],slots:["handler"],setup:function(e,n){var o=n.emit,a=n.slots,d=H(null),y=function(c){o("handleClick",c)},C=function(c){o("close",c)};return function(){e.afterVisibleChange;var r=e.getContainer,c=e.wrapperClassName,S=e.forceRender,D=ce(e,gt),L=null;if(!r)return E("div",{class:c,ref:d},[E(De,k(k({},D),{},{open:e.open,getContainer:function(){return d.value},onClose:C,onHandleClick:y}),a)]);var B=!!a.handler||S;return(B||e.open||d.value)&&(L=E(yt,{visible:e.open,forceRender:B,getContainer:r,wrapperClassName:c},{default:function(b){var O=b.visible,A=b.afterClose,W=ce(b,wt);return E(De,k(k(k({ref:d},D),W),{},{open:O!==void 0?O:e.open,afterVisibleChange:A!==void 0?A:e.afterVisibleChange,onClose:C,onHandleClick:y}),a)}})),L}}}),Ct=["width","height","visible","placement","mask","wrapClassName","class"],pt=Be("top","right","bottom","left");Be("default","large");var Le={distance:180},kt=function(){return{autofocus:{type:Boolean,default:void 0},closable:{type:Boolean,default:void 0},closeIcon:h.any,destroyOnClose:{type:Boolean,default:void 0},forceRender:{type:Boolean,default:void 0},getContainer:h.any,maskClosable:{type:Boolean,default:void 0},mask:{type:Boolean,default:void 0},maskStyle:{type:Object,default:void 0},wrapStyle:{type:Object,default:void 0},style:{type:Object,default:void 0},class:h.any,wrapClassName:String,size:{type:String},drawerStyle:{type:Object,default:void 0},headerStyle:{type:Object,default:void 0},bodyStyle:{type:Object,default:void 0},contentWrapperStyle:{type:Object,default:void 0},title:h.any,visible:{type:Boolean,default:void 0},width:h.oneOfType([h.string,h.number]),height:h.oneOfType([h.string,h.number]),zIndex:Number,prefixCls:String,push:h.oneOfType([h.looseBool,{type:Object}]),placement:h.oneOf(pt),keyboard:{type:Boolean,default:void 0},extra:h.any,footer:h.any,footerStyle:{type:Object,default:void 0},level:h.any,levelMove:{type:[Number,Array,Function]},handle:h.any,afterVisibleChange:Function,onAfterVisibleChange:Function,"onUpdate:visible":Function,onClose:Function}},St=se({compatConfig:{MODE:3},name:"ADrawer",inheritAttrs:!1,props:$e(kt(),{closable:!0,placement:"right",maskClosable:!0,mask:!0,level:null,keyboard:!0,push:Le}),slots:["closeIcon","title","extra","footer","handle"],setup:function(e,n){var o=n.emit,a=n.slots,d=n.attrs,y=H(!1),C=H(!1),r=H(null),c=Ge("parentDrawerOpts",null),S=Je("drawer",e),D=S.prefixCls;fe(!e.afterVisibleChange,"Drawer","`afterVisibleChange` prop is deprecated, please use `@afterVisibleChange` event instead"),fe(e.wrapStyle===void 0,"Drawer","`wrapStyle` prop is deprecated, please use `style` instead"),fe(e.wrapClassName===void 0,"Drawer","`wrapClassName` prop is deprecated, please use `class` instead");var L=function(){y.value=!0},B=function(){y.value=!1,ae(function(){P()})};et("parentDrawerOpts",{setPush:L,setPull:B}),Ce(function(){var g=e.visible;g&&c&&c.setPush()}),_e(function(){c&&c.setPull()}),J(function(){return e.visible},function(g){c&&(g?c.setPush():c.setPull())},{flush:"post"});var P=function(){var u,f;(u=r.value)===null||u===void 0||(f=u.domFocus)===null||f===void 0||f.call(u)},b=function(u){o("update:visible",!1),o("close",u)},O=function(u){var f;(f=e.afterVisibleChange)===null||f===void 0||f.call(e,u),o("afterVisibleChange",u)},A=te(function(){return e.destroyOnClose&&!e.visible}),W=function(){var u=A.value;u&&(e.visible||(C.value=!0))},_=te(function(){var g=e.push,u=e.placement,f;return typeof g=="boolean"?f=g?Le.distance:0:f=g.distance,f=parseFloat(String(f||0)),u==="left"||u==="right"?"translateX(".concat(u==="left"?f:-f,"px)"):u==="top"||u==="bottom"?"translateY(".concat(u==="top"?f:-f,"px)"):null}),X=te(function(){var g=e.visible,u=e.mask,f=e.placement,x=e.size,T=x===void 0?"default":x,M=e.width,I=e.height;if(!g&&!u)return{};var l={};if(f==="left"||f==="right"){var t=T==="large"?736:378;l.width=typeof M>"u"?t:M,l.width=typeof l.width=="string"?l.width:"".concat(l.width,"px")}else{var i=T==="large"?736:378;l.height=typeof I>"u"?i:I,l.height=typeof l.height=="string"?l.height:"".concat(l.height,"px")}return l}),K=te(function(){var g=e.zIndex,u=e.wrapStyle,f=e.mask,x=e.style,T=f?{}:X.value;return k(k(k({zIndex:g,transform:y.value?_.value:void 0},T),u),x)}),R=function(u){var f=e.closable,x=e.headerStyle,T=ve(a,e,"extra"),M=ve(a,e,"title");return!M&&!f?null:E("div",{class:be("".concat(u,"-header"),j({},"".concat(u,"-header-close-only"),f&&!M&&!T)),style:x},[E("div",{class:"".concat(u,"-header-title")},[q(u),M&&E("div",{class:"".concat(u,"-title")},[M])]),T&&E("div",{class:"".concat(u,"-extra")},[T])])},q=function(u){var f,x=e.closable,T=a.closeIcon?(f=a.closeIcon)===null||f===void 0?void 0:f.call(a):e.closeIcon;return x&&E("button",{key:"closer",onClick:b,"aria-label":"Close",class:"".concat(u,"-close")},[T===void 0?E(Qe,null,null):T])},oe=function(u){var f;if(C.value&&!e.visible)return null;C.value=!1;var x=e.bodyStyle,T=e.drawerStyle,M={},I=A.value;return I&&(M.opacity=0,M.transition="opacity .3s"),E("div",{class:"".concat(u,"-wrapper-body"),style:k(k({},M),T),onTransitionend:W},[R(u),E("div",{key:"body",class:"".concat(u,"-body"),style:x},[(f=a.default)===null||f===void 0?void 0:f.call(a)]),ue(u)])},ue=function(u){var f=ve(a,e,"footer");if(!f)return null;var x="".concat(u,"-footer");return E("div",{class:x,style:e.footerStyle},[f])};return function(){var g;e.width,e.height;var u=e.visible,f=e.placement,x=e.mask,T=e.wrapClassName,M=e.class,I=ce(e,Ct),l=x?X.value:{},t=x?"":"no-mask",i=k(k(k(k({},d),Ae(I,["size","closeIcon","closable","destroyOnClose","drawerStyle","headerStyle","bodyStyle","title","push","wrapStyle","onAfterVisibleChange","onClose","onUpdate:visible"])),l),{},{onClose:b,afterVisibleChange:O,handler:!1,prefixCls:D.value,open:u,showMask:x,placement:f,class:be((g={},j(g,M,M),j(g,T,!!T),j(g,t,!!t),g)),style:K.value,ref:r});return E(bt,i,{handler:e.handle?function(){return e.handle}:a.handle,default:function(){return oe(D.value)}})}}});const xt=Ze(St);export{xt as D}; +import{aa as k,ak as h,d as se,o as Ce,$ as ae,w as J,a7 as Le,aU as ce,az as be,ah as j,x as E,k as H,j as te,U as Re,aC as Se,a6 as Xe,aH as Ne,c as Ue,ab as Ye,ar as Ke,aw as qe,aq as $e,aY as Ze,ay as Be,ai as Ge,aj as Je,ao as fe,aZ as ve,a_ as Qe,ax as et}from"./index-B-RmZRr2.js";import{K as tt,s as nt,P as at}from"./KeyCode-DsOsmuVa.js";import{o as Ae,_ as ot,a as rt}from"./classCallCheck-BMo4V_0Q.js";import{w as Ee}from"./raf-nDFcuFT6.js";var me;function pe(s){if(typeof document>"u")return 0;if(s||me===void 0){var e=document.createElement("div");e.style.width="100%",e.style.height="200px";var n=document.createElement("div"),o=n.style;o.position="absolute",o.top="0",o.left="0",o.pointerEvents="none",o.visibility="hidden",o.width="200px",o.height="150px",o.overflow="hidden",n.appendChild(e),document.body.appendChild(n);var a=e.offsetWidth;n.style.overflow="scroll";var d=e.offsetWidth;a===d&&(d=n.clientWidth),document.body.removeChild(n),me=a-d}return me}var He=function(){return{prefixCls:String,width:h.oneOfType([h.string,h.number]),height:h.oneOfType([h.string,h.number]),style:{type:Object,default:void 0},class:String,placement:{type:String},wrapperClassName:String,level:{type:[String,Array]},levelMove:{type:[Number,Function,Array]},duration:String,ease:String,showMask:{type:Boolean,default:void 0},maskClosable:{type:Boolean,default:void 0},maskStyle:{type:Object,default:void 0},afterVisibleChange:Function,keyboard:{type:Boolean,default:void 0},contentWrapperStyle:{type:Object,default:void 0},autofocus:{type:Boolean,default:void 0},open:{type:Boolean,default:void 0}}},lt=function(){return k(k({},He()),{},{forceRender:{type:Boolean,default:void 0},getContainer:h.oneOfType([h.string,h.func,h.object,h.looseBool])})},it=function(){return k(k({},He()),{},{getContainer:Function,getOpenCount:Function,scrollLocker:h.any,switchScrollingEffect:Function})};function ct(s){return Array.isArray(s)?s:[s]}var Ve={transition:"transitionend",WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend"},st=Object.keys(Ve).filter(function(s){if(typeof document>"u")return!1;var e=document.getElementsByTagName("html")[0];return s in(e?e.style:{})})[0],Pe=Ve[st];function Oe(s,e,n,o){s.addEventListener?s.addEventListener(e,n,o):s.attachEvent&&s.attachEvent("on".concat(e),n)}function xe(s,e,n,o){s.removeEventListener?s.removeEventListener(e,n,o):s.attachEvent&&s.detachEvent("on".concat(e),n)}function ut(s,e){var n=typeof s=="function"?s(e):s;return Array.isArray(n)?n.length===2?n:[n[0],n[1]]:[n]}var Te=function(e){return!isNaN(parseFloat(e))&&isFinite(e)},he=!(typeof window<"u"&&window.document&&window.document.createElement),dt=function s(e,n,o,a){if(!n||n===document||n instanceof Document)return!1;if(n===e.parentNode)return!0;var d=Math.max(Math.abs(o),Math.abs(a))===Math.abs(a),y=Math.max(Math.abs(o),Math.abs(a))===Math.abs(o),C=n.scrollHeight-n.clientHeight,r=n.scrollWidth-n.clientWidth,c=document.defaultView.getComputedStyle(n),S=c.overflowY==="auto"||c.overflowY==="scroll",D=c.overflowX==="auto"||c.overflowX==="scroll",_=C&&S,B=r&&D;return d&&(!_||_&&(n.scrollTop>=C&&a<0||n.scrollTop<=0&&a>0))||y&&(!B||B&&(n.scrollLeft>=r&&o<0||n.scrollLeft<=0&&o>0))?s(e,n.parentNode,o,a):!1},ft=["width","height","open","prefixCls","placement","level","levelMove","ease","duration","getContainer","onChange","afterVisibleChange","showMask","maskClosable","maskStyle","keyboard","getOpenCount","scrollLocker","contentWrapperStyle","style","class"],ee={},De=se({compatConfig:{MODE:3},inheritAttrs:!1,props:it(),emits:["close","handleClick","change"],setup:function(e,n){var o=n.emit,a=n.slots,d=Re({startPos:{x:null,y:null}}),y,C=H(),r=H(),c=H(),S=H(),D=H(),_=[],B="drawer_id_".concat(Number((Date.now()+Math.random()).toString().replace(".",Math.round(Math.random()*9).toString())).toString(16)),P=!he&&nt?{passive:!1}:!1;Ce(function(){ae(function(){var l=e.open,t=e.getContainer,i=e.showMask,v=e.autofocus,m=t==null?void 0:t();if(T(e),l&&(m&&m.parentNode===document.body&&(ee[B]=l),q(),ae(function(){v&&b()}),i)){var w;(w=e.scrollLocker)===null||w===void 0||w.lock()}})}),J(function(){return e.level},function(){T(e)},{flush:"post"}),J(function(){return e.open},function(){var l=e.open,t=e.getContainer,i=e.scrollLocker,v=e.showMask,m=e.autofocus,w=t==null?void 0:t();w&&w.parentNode===document.body&&(ee[B]=!!l),q(),l?(m&&b(),v&&(i==null||i.lock())):i==null||i.unLock()},{flush:"post"}),Le(function(){var l,t=e.open;delete ee[B],t&&(oe(!1),document.body.style.touchAction=""),(l=e.scrollLocker)===null||l===void 0||l.unLock()}),J(function(){return e.placement},function(l){l&&(D.value=null)});var b=function(){var t,i;(t=r.value)===null||t===void 0||(i=t.focus)===null||i===void 0||i.call(t)},O=function(t){t.touches.length>1||(d.startPos={x:t.touches[0].clientX,y:t.touches[0].clientY})},A=function(t){if(!(t.changedTouches.length>1)){var i=t.currentTarget,v=t.changedTouches[0].clientX-d.startPos.x,m=t.changedTouches[0].clientY-d.startPos.y;(i===c.value||i===S.value||i===D.value&&dt(i,t.target,v,m))&&t.cancelable&&t.preventDefault()}},W=function l(t){var i=t.target;xe(i,Pe,l),i.style.transition=""},L=function(t){o("close",t)},X=function(t){t.keyCode===tt.ESC&&(t.stopPropagation(),L(t))},K=function(t){var i=e.open,v=e.afterVisibleChange;t.target===C.value&&t.propertyName.match(/transform$/)&&(r.value.style.transition="",!i&&x()&&(document.body.style.overflowX="",c.value&&(c.value.style.left="",c.value.style.width="")),v&&v(!!i))},R=te(function(){var l=e.placement,t=l==="left"||l==="right",i="translate".concat(t?"X":"Y");return{isHorizontal:t,placementName:i}}),q=function(){var t=e.open,i=e.width,v=e.height,m=R.value,w=m.isHorizontal,p=m.placementName,N=D.value?D.value.getBoundingClientRect()[w?"width":"height"]:0,$=(w?i:v)||N;ue(t,p,$)},oe=function(t,i,v,m){var w=e.placement,p=e.levelMove,N=e.duration,$=e.ease,F=e.showMask;_.forEach(function(Z){Z.style.transition="transform ".concat(N," ").concat($),Oe(Z,Pe,W);var U=t?v:0;if(p){var re=ut(p,{target:Z,open:t});U=t?re[0]:re[1]||0}var le=typeof U=="number"?"".concat(U,"px"):U,Y=w==="left"||w==="top"?le:"-".concat(le);Y=F&&w==="right"&&m?"calc(".concat(Y," + ").concat(m,"px)"):Y,Z.style.transform=U?"".concat(i,"(").concat(Y,")"):""})},ue=function(t,i,v){if(!he){var m=document.body.scrollHeight>(window.innerHeight||document.documentElement.clientHeight)&&window.innerWidth>document.body.offsetWidth?pe(!0):0;oe(t,i,v,m),g(m)}o("change",t)},g=function(t){var i=e.getContainer,v=e.showMask,m=e.open,w=i==null?void 0:i();if(w&&w.parentNode===document.body&&v){var p=["touchstart"],N=[document.body,c.value,S.value,D.value];m&&document.body.style.overflow!=="hidden"?(t&&u(t),document.body.style.touchAction="none",N.forEach(function($,F){$&&Oe($,p[F]||"touchmove",F?A:O,P)})):x()&&(document.body.style.touchAction="",t&&f(t),N.forEach(function($,F){$&&xe($,p[F]||"touchmove",F?A:O,P)}))}},u=function(t){var i=e.placement,v=e.duration,m=e.ease,w="width ".concat(v," ").concat(m),p="transform ".concat(v," ").concat(m);switch(r.value.style.transition="none",i){case"right":r.value.style.transform="translateX(-".concat(t,"px)");break;case"top":case"bottom":r.value.style.width="calc(100% - ".concat(t,"px)"),r.value.style.transform="translateZ(0)";break}clearTimeout(y),y=setTimeout(function(){r.value&&(r.value.style.transition="".concat(p,",").concat(w),r.value.style.width="",r.value.style.transform="")})},f=function(t){var i=e.placement,v=e.duration,m=e.ease;r.value.style.transition="none";var w,p="width ".concat(v," ").concat(m),N="transform ".concat(v," ").concat(m);switch(i){case"left":{r.value.style.width="100%",p="width 0s ".concat(m," ").concat(v);break}case"right":{r.value.style.transform="translateX(".concat(t,"px)"),r.value.style.width="100%",p="width 0s ".concat(m," ").concat(v),c.value&&(c.value.style.left="-".concat(t,"px"),c.value.style.width="calc(100% + ".concat(t,"px)"));break}case"top":case"bottom":{r.value.style.width="calc(100% + ".concat(t,"px)"),r.value.style.height="100%",r.value.style.transform="translateZ(0)",w="height 0s ".concat(m," ").concat(v);break}}clearTimeout(y),y=setTimeout(function(){r.value&&(r.value.style.transition="".concat(N,",").concat(w?"".concat(w,","):"").concat(p),r.value.style.transform="",r.value.style.width="",r.value.style.height="")})},x=function(){return!Object.keys(ee).some(function(t){return ee[t]})},T=function(t){var i=t.level,v=t.getContainer;if(!he){var m=v==null?void 0:v(),w=m?m.parentNode:null;if(_=[],i==="all"){var p=w?Array.prototype.slice.call(w.children):[];p.forEach(function(N){N.nodeName!=="SCRIPT"&&N.nodeName!=="STYLE"&&N.nodeName!=="LINK"&&N!==m&&_.push(N)})}else i&&ct(i).forEach(function(N){document.querySelectorAll(N).forEach(function($){_.push($)})})}},M=function(t){o("handleClick",t)},I=H(!1);return J(r,function(){ae(function(){I.value=!0})}),function(){var l,t,i,v=e.width,m=e.height,w=e.open,p=e.prefixCls,N=e.placement;e.level,e.levelMove,e.ease,e.duration,e.getContainer,e.onChange,e.afterVisibleChange;var $=e.showMask,F=e.maskClosable,Z=e.maskStyle,U=e.keyboard;e.getOpenCount,e.scrollLocker;var re=e.contentWrapperStyle,le=e.style,Y=e.class,We=ce(e,ft),de=w&&I.value,Ie=be(p,(l={},j(l,"".concat(p,"-").concat(N),!0),j(l,"".concat(p,"-open"),de),j(l,Y,!!Y),j(l,"no-mask",!$),l)),Fe=R.value.placementName,ze=N==="left"||N==="top"?"-100%":"100%",ke=de?"":"".concat(Fe,"(").concat(ze,")");return E("div",k(k({},Ae(We,["switchScrollingEffect","autofocus"])),{},{tabindex:-1,class:Ie,style:le,ref:r,onKeydown:de&&U?X:void 0,onTransitionend:K}),[$&&E("div",{class:"".concat(p,"-mask"),onClick:F?L:void 0,style:Z,ref:c},null),E("div",{class:"".concat(p,"-content-wrapper"),style:k({transform:ke,msTransform:ke,width:Te(v)?"".concat(v,"px"):v,height:Te(m)?"".concat(m,"px"):m},re),ref:C},[E("div",{class:"".concat(p,"-content"),ref:D},[(t=a.default)===null||t===void 0?void 0:t.call(a)]),a.handler?E("div",{onClick:M,ref:S},[(i=a.handler)===null||i===void 0?void 0:i.call(a)]):null])])}}});function Q(s){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=e.element,o=n===void 0?document.body:n,a={},d=Object.keys(s);return d.forEach(function(y){a[y]=o.style[y]}),d.forEach(function(y){o.style[y]=s[y]}),a}function vt(){return document.body.scrollHeight>(window.innerHeight||document.documentElement.clientHeight)&&window.innerWidth>document.body.offsetWidth}var ye={};const Me=function(s){if(!(!vt()&&!s)){var e="ant-scrolling-effect",n=new RegExp("".concat(e),"g"),o=document.body.className;if(s){if(!n.test(o))return;Q(ye),ye={},document.body.className=o.replace(n,"").trim();return}var a=pe();if(a&&(ye=Q({position:"relative",width:"calc(100% - ".concat(a,"px)")}),!n.test(o))){var d="".concat(o," ").concat(e);document.body.className=d.trim()}}};var V=[],je="ant-scrolling-effect",ge=new RegExp("".concat(je),"g"),mt=0,we=new Map,ht=ot(function s(e){var n=this;rt(this,s),j(this,"getContainer",function(){var o;return(o=n.options)===null||o===void 0?void 0:o.container}),j(this,"reLock",function(o){var a=V.find(function(d){var y=d.target;return y===n.lockTarget});a&&n.unLock(),n.options=o,a&&(a.options=o,n.lock())}),j(this,"lock",function(){var o;if(!V.some(function(r){var c=r.target;return c===n.lockTarget})){if(V.some(function(r){var c,S=r.options;return(S==null?void 0:S.container)===((c=n.options)===null||c===void 0?void 0:c.container)})){V=[].concat(Se(V),[{target:n.lockTarget,options:n.options}]);return}var a=0,d=((o=n.options)===null||o===void 0?void 0:o.container)||document.body;(d===document.body&&window.innerWidth-document.documentElement.clientWidth>0||d.scrollHeight>d.clientHeight)&&(a=pe());var y=d.className;if(V.filter(function(r){var c,S=r.options;return(S==null?void 0:S.container)===((c=n.options)===null||c===void 0?void 0:c.container)}).length===0&&we.set(d,Q({width:a!==0?"calc(100% - ".concat(a,"px)"):void 0,overflow:"hidden",overflowX:"hidden",overflowY:"hidden"},{element:d})),!ge.test(y)){var C="".concat(y," ").concat(je);d.className=C.trim()}V=[].concat(Se(V),[{target:n.lockTarget,options:n.options}])}}),j(this,"unLock",function(){var o,a=V.find(function(C){var r=C.target;return r===n.lockTarget});if(V=V.filter(function(C){var r=C.target;return r!==n.lockTarget}),!(!a||V.some(function(C){var r,c=C.options;return(c==null?void 0:c.container)===((r=a.options)===null||r===void 0?void 0:r.container)}))){var d=((o=n.options)===null||o===void 0?void 0:o.container)||document.body,y=d.className;ge.test(y)&&(Q(we.get(d),{element:d}),we.delete(d),d.className=d.className.replace(ge,"").trim())}}),this.lockTarget=mt++,this.options=e}),z=0,ne=qe(),ie={},G=function(e){if(!ne)return null;if(e){if(typeof e=="string")return document.querySelectorAll(e)[0];if(typeof e=="function")return e();if(Ke(e)==="object"&&e instanceof window.HTMLElement)return e}return document.body};const yt=se({compatConfig:{MODE:3},name:"PortalWrapper",inheritAttrs:!1,props:{wrapperClassName:String,forceRender:{type:Boolean,default:void 0},getContainer:h.any,visible:{type:Boolean,default:void 0}},setup:function(e,n){var o=n.slots,a=H(),d=H(),y=H(),C=new ht({container:G(e.getContainer)}),r=function(){var b,O;(b=a.value)===null||b===void 0||(O=b.parentNode)===null||O===void 0||O.removeChild(a.value)},c=function(){var b=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1;if(b||a.value&&!a.value.parentNode){var O=G(e.getContainer);return O?(O.appendChild(a.value),!0):!1}return!0},S=function(){return ne?(a.value||(a.value=document.createElement("div"),c(!0)),D(),a.value):null},D=function(){var b=e.wrapperClassName;a.value&&b&&b!==a.value.className&&(a.value.className=b)};Xe(function(){D(),c()});var _=function(){z===1&&!Object.keys(ie).length?(Me(),ie=Q({overflow:"hidden",overflowX:"hidden",overflowY:"hidden"})):z||(Q(ie),ie={},Me(!0))},B=Ye();return Ce(function(){var P=!1;J([function(){return e.visible},function(){return e.getContainer}],function(b,O){var A=Ne(b,2),W=A[0],L=A[1],X=Ne(O,2),K=X[0],R=X[1];if(ne&&G(e.getContainer)===document.body&&(W&&!K?z+=1:P&&(z-=1)),P){var q=typeof L=="function"&&typeof R=="function";(q?L.toString()!==R.toString():L!==R)&&r(),W&&W!==K&&ne&&G(L)!==C.getContainer()&&C.reLock({container:G(L)})}P=!0},{immediate:!0,flush:"post"}),ae(function(){c()||(y.value=Ee(function(){B.update()}))})}),Ue(function(){var P=e.visible,b=e.getContainer;ne&&G(b)===document.body&&(z=P&&z?z-1:z),r(),Ee.cancel(y.value)}),function(){var P=e.forceRender,b=e.visible,O=null,A={getOpenCount:function(){return z},getContainer:S,switchScrollingEffect:_,scrollLocker:C};return(P||b||d.value)&&(O=E(at,{getContainer:S,ref:d},{default:function(){var L;return(L=o.default)===null||L===void 0?void 0:L.call(o,A)}})),O}}});var gt=["afterVisibleChange","getContainer","wrapperClassName","forceRender"],wt=["visible","afterClose"],bt=se({compatConfig:{MODE:3},inheritAttrs:!1,props:$e(lt(),{prefixCls:"drawer",placement:"left",getContainer:"body",level:"all",duration:".3s",ease:"cubic-bezier(0.78, 0.14, 0.15, 0.86)",afterVisibleChange:function(){},showMask:!0,maskClosable:!0,maskStyle:{},wrapperClassName:"",keyboard:!0,forceRender:!1,autofocus:!0}),emits:["handleClick","close"],slots:["handler"],setup:function(e,n){var o=n.emit,a=n.slots,d=H(null),y=function(c){o("handleClick",c)},C=function(c){o("close",c)};return function(){e.afterVisibleChange;var r=e.getContainer,c=e.wrapperClassName,S=e.forceRender,D=ce(e,gt),_=null;if(!r)return E("div",{class:c,ref:d},[E(De,k(k({},D),{},{open:e.open,getContainer:function(){return d.value},onClose:C,onHandleClick:y}),a)]);var B=!!a.handler||S;return(B||e.open||d.value)&&(_=E(yt,{visible:e.open,forceRender:B,getContainer:r,wrapperClassName:c},{default:function(b){var O=b.visible,A=b.afterClose,W=ce(b,wt);return E(De,k(k(k({ref:d},D),W),{},{open:O!==void 0?O:e.open,afterVisibleChange:A!==void 0?A:e.afterVisibleChange,onClose:C,onHandleClick:y}),a)}})),_}}}),Ct=["width","height","visible","placement","mask","wrapClassName","class"],pt=Be("top","right","bottom","left");Be("default","large");var _e={distance:180},kt=function(){return{autofocus:{type:Boolean,default:void 0},closable:{type:Boolean,default:void 0},closeIcon:h.any,destroyOnClose:{type:Boolean,default:void 0},forceRender:{type:Boolean,default:void 0},getContainer:h.any,maskClosable:{type:Boolean,default:void 0},mask:{type:Boolean,default:void 0},maskStyle:{type:Object,default:void 0},wrapStyle:{type:Object,default:void 0},style:{type:Object,default:void 0},class:h.any,wrapClassName:String,size:{type:String},drawerStyle:{type:Object,default:void 0},headerStyle:{type:Object,default:void 0},bodyStyle:{type:Object,default:void 0},contentWrapperStyle:{type:Object,default:void 0},title:h.any,visible:{type:Boolean,default:void 0},width:h.oneOfType([h.string,h.number]),height:h.oneOfType([h.string,h.number]),zIndex:Number,prefixCls:String,push:h.oneOfType([h.looseBool,{type:Object}]),placement:h.oneOf(pt),keyboard:{type:Boolean,default:void 0},extra:h.any,footer:h.any,footerStyle:{type:Object,default:void 0},level:h.any,levelMove:{type:[Number,Array,Function]},handle:h.any,afterVisibleChange:Function,onAfterVisibleChange:Function,"onUpdate:visible":Function,onClose:Function}},St=se({compatConfig:{MODE:3},name:"ADrawer",inheritAttrs:!1,props:$e(kt(),{closable:!0,placement:"right",maskClosable:!0,mask:!0,level:null,keyboard:!0,push:_e}),slots:["closeIcon","title","extra","footer","handle"],setup:function(e,n){var o=n.emit,a=n.slots,d=n.attrs,y=H(!1),C=H(!1),r=H(null),c=Ge("parentDrawerOpts",null),S=Je("drawer",e),D=S.prefixCls;fe(!e.afterVisibleChange,"Drawer","`afterVisibleChange` prop is deprecated, please use `@afterVisibleChange` event instead"),fe(e.wrapStyle===void 0,"Drawer","`wrapStyle` prop is deprecated, please use `style` instead"),fe(e.wrapClassName===void 0,"Drawer","`wrapClassName` prop is deprecated, please use `class` instead");var _=function(){y.value=!0},B=function(){y.value=!1,ae(function(){P()})};et("parentDrawerOpts",{setPush:_,setPull:B}),Ce(function(){var g=e.visible;g&&c&&c.setPush()}),Le(function(){c&&c.setPull()}),J(function(){return e.visible},function(g){c&&(g?c.setPush():c.setPull())},{flush:"post"});var P=function(){var u,f;(u=r.value)===null||u===void 0||(f=u.domFocus)===null||f===void 0||f.call(u)},b=function(u){o("update:visible",!1),o("close",u)},O=function(u){var f;(f=e.afterVisibleChange)===null||f===void 0||f.call(e,u),o("afterVisibleChange",u)},A=te(function(){return e.destroyOnClose&&!e.visible}),W=function(){var u=A.value;u&&(e.visible||(C.value=!0))},L=te(function(){var g=e.push,u=e.placement,f;return typeof g=="boolean"?f=g?_e.distance:0:f=g.distance,f=parseFloat(String(f||0)),u==="left"||u==="right"?"translateX(".concat(u==="left"?f:-f,"px)"):u==="top"||u==="bottom"?"translateY(".concat(u==="top"?f:-f,"px)"):null}),X=te(function(){var g=e.visible,u=e.mask,f=e.placement,x=e.size,T=x===void 0?"default":x,M=e.width,I=e.height;if(!g&&!u)return{};var l={};if(f==="left"||f==="right"){var t=T==="large"?736:378;l.width=typeof M>"u"?t:M,l.width=typeof l.width=="string"?l.width:"".concat(l.width,"px")}else{var i=T==="large"?736:378;l.height=typeof I>"u"?i:I,l.height=typeof l.height=="string"?l.height:"".concat(l.height,"px")}return l}),K=te(function(){var g=e.zIndex,u=e.wrapStyle,f=e.mask,x=e.style,T=f?{}:X.value;return k(k(k({zIndex:g,transform:y.value?L.value:void 0},T),u),x)}),R=function(u){var f=e.closable,x=e.headerStyle,T=ve(a,e,"extra"),M=ve(a,e,"title");return!M&&!f?null:E("div",{class:be("".concat(u,"-header"),j({},"".concat(u,"-header-close-only"),f&&!M&&!T)),style:x},[E("div",{class:"".concat(u,"-header-title")},[q(u),M&&E("div",{class:"".concat(u,"-title")},[M])]),T&&E("div",{class:"".concat(u,"-extra")},[T])])},q=function(u){var f,x=e.closable,T=a.closeIcon?(f=a.closeIcon)===null||f===void 0?void 0:f.call(a):e.closeIcon;return x&&E("button",{key:"closer",onClick:b,"aria-label":"Close",class:"".concat(u,"-close")},[T===void 0?E(Qe,null,null):T])},oe=function(u){var f;if(C.value&&!e.visible)return null;C.value=!1;var x=e.bodyStyle,T=e.drawerStyle,M={},I=A.value;return I&&(M.opacity=0,M.transition="opacity .3s"),E("div",{class:"".concat(u,"-wrapper-body"),style:k(k({},M),T),onTransitionend:W},[R(u),E("div",{key:"body",class:"".concat(u,"-body"),style:x},[(f=a.default)===null||f===void 0?void 0:f.call(a)]),ue(u)])},ue=function(u){var f=ve(a,e,"footer");if(!f)return null;var x="".concat(u,"-footer");return E("div",{class:x,style:e.footerStyle},[f])};return function(){var g;e.width,e.height;var u=e.visible,f=e.placement,x=e.mask,T=e.wrapClassName,M=e.class,I=ce(e,Ct),l=x?X.value:{},t=x?"":"no-mask",i=k(k(k(k({},d),Ae(I,["size","closeIcon","closable","destroyOnClose","drawerStyle","headerStyle","bodyStyle","title","push","wrapStyle","onAfterVisibleChange","onClose","onUpdate:visible"])),l),{},{onClose:b,afterVisibleChange:O,handler:!1,prefixCls:D.value,open:u,showMask:x,placement:f,class:be((g={},j(g,M,M),j(g,T,!!T),j(g,t,!!t),g)),style:K.value,ref:r});return E(bt,i,{handler:e.handle?function(){return e.handle}:a.handle,default:function(){return oe(D.value)}})}}});const xt=Ze(St);export{xt as D}; diff --git a/apps/user-app/dist/assets/isEqual-CAQ2DK4R.js b/apps/user-app/dist/assets/isEqual-CAQ2DK4R.js new file mode 100644 index 0000000..6ce0126 --- /dev/null +++ b/apps/user-app/dist/assets/isEqual-CAQ2DK4R.js @@ -0,0 +1 @@ +import{aA as we,a5 as C,aB as w,au as ee,a4 as R,bc as ze}from"./index-B-RmZRr2.js";var Oe=function(){if(typeof Map<"u")return Map;function e(t,r){var n=-1;return t.some(function(i,a){return i[0]===r?(n=a,!0):!1}),n}return function(){function t(){this.__entries__=[]}return Object.defineProperty(t.prototype,"size",{get:function(){return this.__entries__.length},enumerable:!0,configurable:!0}),t.prototype.get=function(r){var n=e(this.__entries__,r),i=this.__entries__[n];return i&&i[1]},t.prototype.set=function(r,n){var i=e(this.__entries__,r);~i?this.__entries__[i][1]=n:this.__entries__.push([r,n])},t.prototype.delete=function(r){var n=this.__entries__,i=e(n,r);~i&&n.splice(i,1)},t.prototype.has=function(r){return!!~e(this.__entries__,r)},t.prototype.clear=function(){this.__entries__.splice(0)},t.prototype.forEach=function(r,n){n===void 0&&(n=null);for(var i=0,a=this.__entries__;i0},e.prototype.connect_=function(){!V||this.connected_||(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),Ne?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},e.prototype.disconnect_=function(){!V||!this.connected_||(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},e.prototype.onTransitionEnd_=function(t){var r=t.propertyName,n=r===void 0?"":r,i=He.some(function(a){return!!~n.indexOf(a)});i&&this.refresh()},e.getInstance=function(){return this.instance_||(this.instance_=new e),this.instance_},e.instance_=null,e}(),Ae=function(e,t){for(var r=0,n=Object.keys(t);r"u"||!(Element instanceof Object))){if(!(t instanceof P(t).Element))throw new TypeError('parameter 1 is not of type "Element".');var r=this.observations_;r.has(t)||(r.set(t,new Ze(t)),this.controller_.addObserver(this),this.controller_.refresh())}},e.prototype.unobserve=function(t){if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");if(!(typeof Element>"u"||!(Element instanceof Object))){if(!(t instanceof P(t).Element))throw new TypeError('parameter 1 is not of type "Element".');var r=this.observations_;r.has(t)&&(r.delete(t),r.size||this.controller_.removeObserver(this))}},e.prototype.disconnect=function(){this.clearActive(),this.observations_.clear(),this.controller_.removeObserver(this)},e.prototype.gatherActive=function(){var t=this;this.clearActive(),this.observations_.forEach(function(r){r.isActive()&&t.activeObservations_.push(r)})},e.prototype.broadcastActive=function(){if(this.hasActive()){var t=this.callbackCtx_,r=this.activeObservations_.map(function(n){return new Qe(n.target,n.broadcastRect())});this.callback_.call(t,r,t),this.clearActive()}},e.prototype.clearActive=function(){this.activeObservations_.splice(0)},e.prototype.hasActive=function(){return this.activeObservations_.length>0},e}(),Ee=typeof WeakMap<"u"?new WeakMap:new Oe,xe=function(){function e(t){if(!(this instanceof e))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var r=Ue.getInstance(),n=new ke(t,r,this);Ee.set(this,n)}return e}();["observe","unobserve","disconnect"].forEach(function(e){xe.prototype[e]=function(){var t;return(t=Ee.get(this))[e].apply(t,arguments)}});var In=function(){return typeof L.ResizeObserver<"u"?L.ResizeObserver:xe}();function et(e,t){return function(r){return e(t(r))}}function re(e,t,r,n,i,a,s){try{var o=e[a](s),u=o.value}catch(f){return void r(f)}o.done?t(u):Promise.resolve(u).then(n,i)}function Dn(e){return function(){var t=this,r=arguments;return new Promise(function(n,i){var a=e.apply(t,r);function s(u){re(a,n,i,s,o,"next",u)}function o(u){re(a,n,i,s,o,"throw",u)}s(void 0)})}}function tt(){this.__data__=[],this.size=0}function Pe(e,t){return e===t||e!==e&&t!==t}function N(e,t){for(var r=e.length;r--;)if(Pe(e[r][0],t))return r;return-1}var rt=Array.prototype,nt=rt.splice;function it(e){var t=this.__data__,r=N(t,e);if(r<0)return!1;var n=t.length-1;return r==n?t.pop():nt.call(t,r,1),--this.size,!0}function at(e){var t=this.__data__,r=N(t,e);return r<0?void 0:t[r][1]}function st(e){return N(this.__data__,e)>-1}function ot(e,t){var r=this.__data__,n=N(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this}function g(e){var t=-1,r=e==null?0:e.length;for(this.clear();++to))return!1;var f=a.get(e),l=a.get(t);if(f&&l)return f==t&&l==e;var p=-1,h=!0,_=r&kt?new F:void 0;for(a.set(e,t),a.set(t,e);++p-1&&e%1==0&&e-1&&e%1==0&&e<=Ir}var Dr="[object Arguments]",zr="[object Array]",Lr="[object Boolean]",Gr="[object Date]",Fr="[object Error]",Br="[object Function]",Hr="[object Map]",Nr="[object Number]",Ur="[object Object]",qr="[object RegExp]",Wr="[object Set]",Kr="[object String]",Vr="[object WeakMap]",Xr="[object ArrayBuffer]",Yr="[object DataView]",Jr="[object Float32Array]",Zr="[object Float64Array]",Qr="[object Int8Array]",kr="[object Int16Array]",en="[object Int32Array]",tn="[object Uint8Array]",rn="[object Uint8ClampedArray]",nn="[object Uint16Array]",an="[object Uint32Array]",c={};c[Jr]=c[Zr]=c[Qr]=c[kr]=c[en]=c[tn]=c[rn]=c[nn]=c[an]=!0;c[Dr]=c[zr]=c[Xr]=c[Lr]=c[Yr]=c[Gr]=c[Fr]=c[Br]=c[Hr]=c[Nr]=c[Ur]=c[qr]=c[Wr]=c[Kr]=c[Vr]=!1;function sn(e){return R(e)&&Me(e.length)&&!!c[C(e)]}function on(e){return function(t){return e(t)}}var Ce=typeof exports=="object"&&exports&&!exports.nodeType&&exports,S=Ce&&typeof module=="object"&&module&&!module.nodeType&&module,un=S&&S.exports===Ce,K=un&&ze.process,ce=function(){try{var e=S&&S.require&&S.require("util").types;return e||K&&K.binding&&K.binding("util")}catch{}}(),he=ce&&ce.isTypedArray,Ie=he?on(he):sn,fn=Object.prototype,cn=fn.hasOwnProperty;function hn(e,t){var r=B(e),n=!r&&Pr(e),i=!r&&!n&&X(e),a=!r&&!n&&!i&&Ie(e),s=r||n||i||a,o=s?Ar(e.length,String):[],u=o.length;for(var f in e)(t||cn.call(e,f))&&!(s&&(f=="length"||i&&(f=="offset"||f=="parent")||a&&(f=="buffer"||f=="byteLength"||f=="byteOffset")||Cr(f,u)))&&o.push(f);return o}var ln=Object.prototype;function pn(e){var t=e&&e.constructor,r=typeof t=="function"&&t.prototype||ln;return e===r}var dn=et(Object.keys,Object),vn=Object.prototype,_n=vn.hasOwnProperty;function gn(e){if(!pn(e))return dn(e);var t=[];for(var r in Object(e))_n.call(e,r)&&r!="constructor"&&t.push(r);return t}function bn(e){return e!=null&&Me(e.length)&&!$e(e)}function yn(e){return bn(e)?hn(e):gn(e)}function le(e){return gr(e,yn,Or)}var mn=1,wn=Object.prototype,On=wn.hasOwnProperty;function An(e,t,r,n,i,a){var s=r&mn,o=le(e),u=o.length,f=le(t),l=f.length;if(u!=l&&!s)return!1;for(var p=u;p--;){var h=o[p];if(!(s?h in t:On.call(t,h)))return!1}var _=a.get(e),d=a.get(t);if(_&&d)return _==t&&d==e;var v=!0;a.set(e,t),a.set(t,e);for(var b=s;++p({adminUnread:0,statusFresh:0,loading:!1}),getters:{badgeTotal(){return this.adminUnread+this.statusFresh}},actions:{seenAt(){try{return localStorage.getItem(n)}catch{return null}},markSeenNow(){try{localStorage.setItem(n,new Date().toISOString())}catch{}this.statusFresh=0},async refreshBadge(){if(!d().isLoggedIn){this.adminUnread=0,this.statusFresh=0;return}this.loading=!0;try{const[t,r]=await Promise.all([a.getMyUnreadNotificationCount(),a.getMyOrders({page:1,limit:20})]);this.adminUnread=t.count??0;const s=this.seenAt();if(!s)this.statusFresh=0;else{const o=Date.parse(s);let e=0;for(const i of r.result??[])for(const c of i.statusEvents??[])Date.parse(c.createdAt)>o&&(e+=1);this.statusFresh=e}}catch(t){console.log(t)}finally{this.loading=!1}}}});export{f as u}; +import{A as l,G as d,D as a}from"./index-B-RmZRr2.js";const n="gold-bank:notificationsSeenAt",f=l("notifications",{state:()=>({adminUnread:0,statusFresh:0,loading:!1}),getters:{badgeTotal(){return this.adminUnread+this.statusFresh}},actions:{seenAt(){try{return localStorage.getItem(n)}catch{return null}},markSeenNow(){try{localStorage.setItem(n,new Date().toISOString())}catch{}this.statusFresh=0},async refreshBadge(){if(!d().isLoggedIn){this.adminUnread=0,this.statusFresh=0;return}this.loading=!0;try{const[t,r]=await Promise.all([a.getMyUnreadNotificationCount(),a.getMyOrders({page:1,limit:20})]);this.adminUnread=t.count??0;const s=this.seenAt();if(!s)this.statusFresh=0;else{const o=Date.parse(s);let e=0;for(const i of r.result??[])for(const c of i.statusEvents??[])Date.parse(c.createdAt)>o&&(e+=1);this.statusFresh=e}}catch(t){console.log(t)}finally{this.loading=!1}}}});export{f as u}; diff --git a/apps/user-app/dist/assets/useReveal-CE0IBSnz.js b/apps/user-app/dist/assets/useReveal-Dq2T90sy.js similarity index 80% rename from apps/user-app/dist/assets/useReveal-CE0IBSnz.js rename to apps/user-app/dist/assets/useReveal-Dq2T90sy.js index f09e9fc..374a61e 100644 --- a/apps/user-app/dist/assets/useReveal-CE0IBSnz.js +++ b/apps/user-app/dist/assets/useReveal-Dq2T90sy.js @@ -1 +1 @@ -import{k as s,$ as l}from"./index-BFOyCNFT.js";const r=new Set;function c(a,n=70){const e=s(r.has(a));function t(i){return{"--reveal-delay":`${i*n}ms`}}async function u(){e.value||(await l(),requestAnimationFrame(()=>requestAnimationFrame(()=>{e.value=!0,r.add(a)})))}return{revealed:e,revealDelay:t,reveal:u}}export{c as u}; +import{k as s,$ as l}from"./index-B-RmZRr2.js";const r=new Set;function c(a,n=70){const e=s(r.has(a));function t(i){return{"--reveal-delay":`${i*n}ms`}}async function u(){e.value||(await l(),requestAnimationFrame(()=>requestAnimationFrame(()=>{e.value=!0,r.add(a)})))}return{revealed:e,revealDelay:t,reveal:u}}export{c as u}; diff --git a/apps/user-app/dist/index.html b/apps/user-app/dist/index.html index e3549ab..fcdecb3 100644 --- a/apps/user-app/dist/index.html +++ b/apps/user-app/dist/index.html @@ -33,7 +33,7 @@ html.theme-dark, html.theme-dark body { background-color: #15171A !important; } طلای هدناگلد - + diff --git a/apps/user-app/dist/sw.js b/apps/user-app/dist/sw.js index 8e9cd08..3261503 100644 --- a/apps/user-app/dist/sw.js +++ b/apps/user-app/dist/sw.js @@ -1,2 +1,2 @@ try{self["workbox:core:7.4.0"]&&_()}catch{}const T=(a,...e)=>{let t=a;return e.length>0&&(t+=` :: ${JSON.stringify(e)}`),t},x=T;class l extends Error{constructor(e,t){const s=x(e,t);super(s),this.name=e,this.details=t}}const f={googleAnalytics:"googleAnalytics",precache:"precache-v2",prefix:"workbox",runtime:"runtime",suffix:typeof registration<"u"?registration.scope:""},C=a=>[f.prefix,a,f.suffix].filter(e=>e&&e.length>0).join("-"),N=a=>{for(const e of Object.keys(f))a(e)},U={updateDetails:a=>{N(e=>{typeof a[e]=="string"&&(f[e]=a[e])})},getGoogleAnalyticsName:a=>a||C(f.googleAnalytics),getPrecacheName:a=>a||C(f.precache),getPrefix:()=>f.prefix,getRuntimeName:a=>a||C(f.runtime),getSuffix:()=>f.suffix};function k(a,e){const t=e();return a.waitUntil(t),t}try{self["workbox:precaching:7.4.0"]&&_()}catch{}const E="__WB_REVISION__";function I(a){if(!a)throw new l("add-to-cache-list-unexpected-type",{entry:a});if(typeof a=="string"){const n=new URL(a,location.href);return{cacheKey:n.href,url:n.href}}const{revision:e,url:t}=a;if(!t)throw new l("add-to-cache-list-unexpected-type",{entry:a});if(!e){const n=new URL(t,location.href);return{cacheKey:n.href,url:n.href}}const s=new URL(t,location.href),r=new URL(t,location.href);return s.searchParams.set(E,e),{cacheKey:s.href,url:r.href}}class O{constructor(){this.updatedURLs=[],this.notUpdatedURLs=[],this.handlerWillStart=async({request:e,state:t})=>{t&&(t.originalRequest=e)},this.cachedResponseWillBeUsed=async({event:e,state:t,cachedResponse:s})=>{if(e.type==="install"&&t&&t.originalRequest&&t.originalRequest instanceof Request){const r=t.originalRequest.url;s?this.notUpdatedURLs.push(r):this.updatedURLs.push(r)}return s}}}class M{constructor({precacheController:e}){this.cacheKeyWillBeUsed=async({request:t,params:s})=>{const r=(s==null?void 0:s.cacheKey)||this._precacheController.getCacheKeyForURL(t.url);return r?new Request(r,{headers:t.headers}):t},this._precacheController=e}}let p;function W(){if(p===void 0){const a=new Response("");if("body"in a)try{new Response(a.body),p=!0}catch{p=!1}p=!1}return p}async function A(a,e){let t=null;if(a.url&&(t=new URL(a.url).origin),t!==self.location.origin)throw new l("cross-origin-copy-response",{origin:t});const s=a.clone(),n={headers:new Headers(s.headers),status:s.status,statusText:s.statusText},c=W()?s.body:await s.blob();return new Response(c,n)}const q=a=>new URL(String(a),location.href).href.replace(new RegExp(`^${location.origin}`),"");function P(a,e){const t=new URL(a);for(const s of e)t.searchParams.delete(s);return t.href}async function S(a,e,t,s){const r=P(e.url,t);if(e.url===r)return a.match(e,s);const n=Object.assign(Object.assign({},s),{ignoreSearch:!0}),c=await a.keys(e,n);for(const i of c){const o=P(i.url,t);if(r===o)return a.match(i,s)}}class D{constructor(){this.promise=new Promise((e,t)=>{this.resolve=e,this.reject=t})}}const j=new Set;async function H(){for(const a of j)await a()}function F(a){return new Promise(e=>setTimeout(e,a))}try{self["workbox:strategies:7.4.0"]&&_()}catch{}function m(a){return typeof a=="string"?new Request(a):a}class B{constructor(e,t){this._cacheKeys={},Object.assign(this,t),this.event=t.event,this._strategy=e,this._handlerDeferred=new D,this._extendLifetimePromises=[],this._plugins=[...e.plugins],this._pluginStateMap=new Map;for(const s of this._plugins)this._pluginStateMap.set(s,{});this.event.waitUntil(this._handlerDeferred.promise)}async fetch(e){const{event:t}=this;let s=m(e);if(s.mode==="navigate"&&t instanceof FetchEvent&&t.preloadResponse){const c=await t.preloadResponse;if(c)return c}const r=this.hasCallback("fetchDidFail")?s.clone():null;try{for(const c of this.iterateCallbacks("requestWillFetch"))s=await c({request:s.clone(),event:t})}catch(c){if(c instanceof Error)throw new l("plugin-error-request-will-fetch",{thrownErrorMessage:c.message})}const n=s.clone();try{let c;c=await fetch(s,s.mode==="navigate"?void 0:this._strategy.fetchOptions);for(const i of this.iterateCallbacks("fetchDidSucceed"))c=await i({event:t,request:n,response:c});return c}catch(c){throw r&&await this.runCallbacks("fetchDidFail",{error:c,event:t,originalRequest:r.clone(),request:n.clone()}),c}}async fetchAndCachePut(e){const t=await this.fetch(e),s=t.clone();return this.waitUntil(this.cachePut(e,s)),t}async cacheMatch(e){const t=m(e);let s;const{cacheName:r,matchOptions:n}=this._strategy,c=await this.getCacheKey(t,"read"),i=Object.assign(Object.assign({},n),{cacheName:r});s=await caches.match(c,i);for(const o of this.iterateCallbacks("cachedResponseWillBeUsed"))s=await o({cacheName:r,matchOptions:n,cachedResponse:s,request:c,event:this.event})||void 0;return s}async cachePut(e,t){const s=m(e);await F(0);const r=await this.getCacheKey(s,"write");if(!t)throw new l("cache-put-with-no-response",{url:q(r.url)});const n=await this._ensureResponseSafeToCache(t);if(!n)return!1;const{cacheName:c,matchOptions:i}=this._strategy,o=await self.caches.open(c),h=this.hasCallback("cacheDidUpdate"),g=h?await S(o,r.clone(),["__WB_REVISION__"],i):null;try{await o.put(r,h?n.clone():n)}catch(u){if(u instanceof Error)throw u.name==="QuotaExceededError"&&await H(),u}for(const u of this.iterateCallbacks("cacheDidUpdate"))await u({cacheName:c,oldResponse:g,newResponse:n.clone(),request:r,event:this.event});return!0}async getCacheKey(e,t){const s=`${e.url} | ${t}`;if(!this._cacheKeys[s]){let r=e;for(const n of this.iterateCallbacks("cacheKeyWillBeUsed"))r=m(await n({mode:t,request:r,event:this.event,params:this.params}));this._cacheKeys[s]=r}return this._cacheKeys[s]}hasCallback(e){for(const t of this._strategy.plugins)if(e in t)return!0;return!1}async runCallbacks(e,t){for(const s of this.iterateCallbacks(e))await s(t)}*iterateCallbacks(e){for(const t of this._strategy.plugins)if(typeof t[e]=="function"){const s=this._pluginStateMap.get(t);yield n=>{const c=Object.assign(Object.assign({},n),{state:s});return t[e](c)}}}waitUntil(e){return this._extendLifetimePromises.push(e),e}async doneWaiting(){for(;this._extendLifetimePromises.length;){const e=this._extendLifetimePromises.splice(0),s=(await Promise.allSettled(e)).find(r=>r.status==="rejected");if(s)throw s.reason}}destroy(){this._handlerDeferred.resolve(null)}async _ensureResponseSafeToCache(e){let t=e,s=!1;for(const r of this.iterateCallbacks("cacheWillUpdate"))if(t=await r({request:this.request,response:t,event:this.event})||void 0,s=!0,!t)break;return s||t&&t.status!==200&&(t=void 0),t}}class ${constructor(e={}){this.cacheName=U.getRuntimeName(e.cacheName),this.plugins=e.plugins||[],this.fetchOptions=e.fetchOptions,this.matchOptions=e.matchOptions}handle(e){const[t]=this.handleAll(e);return t}handleAll(e){e instanceof FetchEvent&&(e={event:e,request:e.request});const t=e.event,s=typeof e.request=="string"?new Request(e.request):e.request,r="params"in e?e.params:void 0,n=new B(this,{event:t,request:s,params:r}),c=this._getResponse(n,s,t),i=this._awaitComplete(c,n,s,t);return[c,i]}async _getResponse(e,t,s){await e.runCallbacks("handlerWillStart",{event:s,request:t});let r;try{if(r=await this._handle(t,e),!r||r.type==="error")throw new l("no-response",{url:t.url})}catch(n){if(n instanceof Error){for(const c of e.iterateCallbacks("handlerDidError"))if(r=await c({error:n,event:s,request:t}),r)break}if(!r)throw n}for(const n of e.iterateCallbacks("handlerWillRespond"))r=await n({event:s,request:t,response:r});return r}async _awaitComplete(e,t,s,r){let n,c;try{n=await e}catch{}try{await t.runCallbacks("handlerDidRespond",{event:r,request:s,response:n}),await t.doneWaiting()}catch(i){i instanceof Error&&(c=i)}if(await t.runCallbacks("handlerDidComplete",{event:r,request:s,response:n,error:c}),t.destroy(),c)throw c}}class d extends ${constructor(e={}){e.cacheName=U.getPrecacheName(e.cacheName),super(e),this._fallbackToNetwork=e.fallbackToNetwork!==!1,this.plugins.push(d.copyRedirectedCacheableResponsesPlugin)}async _handle(e,t){const s=await t.cacheMatch(e);return s||(t.event&&t.event.type==="install"?await this._handleInstall(e,t):await this._handleFetch(e,t))}async _handleFetch(e,t){let s;const r=t.params||{};if(this._fallbackToNetwork){const n=r.integrity,c=e.integrity,i=!c||c===n;s=await t.fetch(new Request(e,{integrity:e.mode!=="no-cors"?c||n:void 0})),n&&i&&e.mode!=="no-cors"&&(this._useDefaultCacheabilityPluginIfNeeded(),await t.cachePut(e,s.clone()))}else throw new l("missing-precache-entry",{cacheName:this.cacheName,url:e.url});return s}async _handleInstall(e,t){this._useDefaultCacheabilityPluginIfNeeded();const s=await t.fetch(e);if(!await t.cachePut(e,s.clone()))throw new l("bad-precaching-response",{url:e.url,status:s.status});return s}_useDefaultCacheabilityPluginIfNeeded(){let e=null,t=0;for(const[s,r]of this.plugins.entries())r!==d.copyRedirectedCacheableResponsesPlugin&&(r===d.defaultPrecacheCacheabilityPlugin&&(e=s),r.cacheWillUpdate&&t++);t===0?this.plugins.push(d.defaultPrecacheCacheabilityPlugin):t>1&&e!==null&&this.plugins.splice(e,1)}}d.defaultPrecacheCacheabilityPlugin={async cacheWillUpdate({response:a}){return!a||a.status>=400?null:a}};d.copyRedirectedCacheableResponsesPlugin={async cacheWillUpdate({response:a}){return a.redirected?await A(a):a}};class G{constructor({cacheName:e,plugins:t=[],fallbackToNetwork:s=!0}={}){this._urlsToCacheKeys=new Map,this._urlsToCacheModes=new Map,this._cacheKeysToIntegrities=new Map,this._strategy=new d({cacheName:U.getPrecacheName(e),plugins:[...t,new M({precacheController:this})],fallbackToNetwork:s}),this.install=this.install.bind(this),this.activate=this.activate.bind(this)}get strategy(){return this._strategy}precache(e){this.addToCacheList(e),this._installAndActiveListenersAdded||(self.addEventListener("install",this.install),self.addEventListener("activate",this.activate),this._installAndActiveListenersAdded=!0)}addToCacheList(e){const t=[];for(const s of e){typeof s=="string"?t.push(s):s&&s.revision===void 0&&t.push(s.url);const{cacheKey:r,url:n}=I(s),c=typeof s!="string"&&s.revision?"reload":"default";if(this._urlsToCacheKeys.has(n)&&this._urlsToCacheKeys.get(n)!==r)throw new l("add-to-cache-list-conflicting-entries",{firstEntry:this._urlsToCacheKeys.get(n),secondEntry:r});if(typeof s!="string"&&s.integrity){if(this._cacheKeysToIntegrities.has(r)&&this._cacheKeysToIntegrities.get(r)!==s.integrity)throw new l("add-to-cache-list-conflicting-integrities",{url:n});this._cacheKeysToIntegrities.set(r,s.integrity)}if(this._urlsToCacheKeys.set(n,r),this._urlsToCacheModes.set(n,c),t.length>0){const i=`Workbox is precaching URLs without revision info: ${t.join(", ")} -This is generally NOT safe. Learn more at https://bit.ly/wb-precache`;console.warn(i)}}}install(e){return k(e,async()=>{const t=new O;this.strategy.plugins.push(t);for(const[n,c]of this._urlsToCacheKeys){const i=this._cacheKeysToIntegrities.get(c),o=this._urlsToCacheModes.get(n),h=new Request(n,{integrity:i,cache:o,credentials:"same-origin"});await Promise.all(this.strategy.handleAll({params:{cacheKey:c},request:h,event:e}))}const{updatedURLs:s,notUpdatedURLs:r}=t;return{updatedURLs:s,notUpdatedURLs:r}})}activate(e){return k(e,async()=>{const t=await self.caches.open(this.strategy.cacheName),s=await t.keys(),r=new Set(this._urlsToCacheKeys.values()),n=[];for(const c of s)r.has(c.url)||(await t.delete(c),n.push(c.url));return{deletedURLs:n}})}getURLsToCacheKeys(){return this._urlsToCacheKeys}getCachedURLs(){return[...this._urlsToCacheKeys.keys()]}getCacheKeyForURL(e){const t=new URL(e,location.href);return this._urlsToCacheKeys.get(t.href)}getIntegrityForCacheKey(e){return this._cacheKeysToIntegrities.get(e)}async matchPrecache(e){const t=e instanceof Request?e.url:e,s=this.getCacheKeyForURL(t);if(s)return(await self.caches.open(this.strategy.cacheName)).match(s)}createHandlerBoundToURL(e){const t=this.getCacheKeyForURL(e);if(!t)throw new l("non-precached-url",{url:e});return s=>(s.request=new Request(e),s.params=Object.assign({cacheKey:t},s.params),this.strategy.handle(s))}}let b;const K=()=>(b||(b=new G),b);try{self["workbox:routing:7.4.0"]&&_()}catch{}const v="GET",R=a=>a&&typeof a=="object"?a:{handle:a};class w{constructor(e,t,s=v){this.handler=R(t),this.match=e,this.method=s}setCatchHandler(e){this.catchHandler=R(e)}}class V extends w{constructor(e,t,s){const r=({url:n})=>{const c=e.exec(n.href);if(c&&!(n.origin!==location.origin&&c.index!==0))return c.slice(1)};super(r,t,s)}}class Q{constructor(){this._routes=new Map,this._defaultHandlerMap=new Map}get routes(){return this._routes}addFetchListener(){self.addEventListener("fetch",e=>{const{request:t}=e,s=this.handleRequest({request:t,event:e});s&&e.respondWith(s)})}addCacheListener(){self.addEventListener("message",e=>{if(e.data&&e.data.type==="CACHE_URLS"){const{payload:t}=e.data,s=Promise.all(t.urlsToCache.map(r=>{typeof r=="string"&&(r=[r]);const n=new Request(...r);return this.handleRequest({request:n,event:e})}));e.waitUntil(s),e.ports&&e.ports[0]&&s.then(()=>e.ports[0].postMessage(!0))}})}handleRequest({request:e,event:t}){const s=new URL(e.url,location.href);if(!s.protocol.startsWith("http"))return;const r=s.origin===location.origin,{params:n,route:c}=this.findMatchingRoute({event:t,request:e,sameOrigin:r,url:s});let i=c&&c.handler;const o=e.method;if(!i&&this._defaultHandlerMap.has(o)&&(i=this._defaultHandlerMap.get(o)),!i)return;let h;try{h=i.handle({url:s,request:e,event:t,params:n})}catch(u){h=Promise.reject(u)}const g=c&&c.catchHandler;return h instanceof Promise&&(this._catchHandler||g)&&(h=h.catch(async u=>{if(g)try{return await g.handle({url:s,request:e,event:t,params:n})}catch(L){L instanceof Error&&(u=L)}if(this._catchHandler)return this._catchHandler.handle({url:s,request:e,event:t});throw u})),h}findMatchingRoute({url:e,sameOrigin:t,request:s,event:r}){const n=this._routes.get(s.method)||[];for(const c of n){let i;const o=c.match({url:e,sameOrigin:t,request:s,event:r});if(o)return i=o,(Array.isArray(i)&&i.length===0||o.constructor===Object&&Object.keys(o).length===0||typeof o=="boolean")&&(i=void 0),{route:c,params:i}}return{}}setDefaultHandler(e,t=v){this._defaultHandlerMap.set(t,R(e))}setCatchHandler(e){this._catchHandler=R(e)}registerRoute(e){this._routes.has(e.method)||this._routes.set(e.method,[]),this._routes.get(e.method).push(e)}unregisterRoute(e){if(!this._routes.has(e.method))throw new l("unregister-route-but-not-found-with-method",{method:e.method});const t=this._routes.get(e.method).indexOf(e);if(t>-1)this._routes.get(e.method).splice(t,1);else throw new l("unregister-route-route-not-registered")}}let y;const z=()=>(y||(y=new Q,y.addFetchListener(),y.addCacheListener()),y);function J(a,e,t){let s;if(typeof a=="string"){const n=new URL(a,location.href),c=({url:i})=>i.href===n.href;s=new w(c,e,t)}else if(a instanceof RegExp)s=new V(a,e,t);else if(typeof a=="function")s=new w(a,e,t);else if(a instanceof w)s=a;else throw new l("unsupported-route-type",{moduleName:"workbox-routing",funcName:"registerRoute",paramName:"capture"});return z().registerRoute(s),s}function X(a,e=[]){for(const t of[...a.searchParams.keys()])e.some(s=>s.test(t))&&a.searchParams.delete(t);return a}function*Y(a,{ignoreURLParametersMatching:e=[/^utm_/,/^fbclid$/],directoryIndex:t="index.html",cleanURLs:s=!0,urlManipulation:r}={}){const n=new URL(a,location.href);n.hash="",yield n.href;const c=X(n,e);if(yield c.href,t&&c.pathname.endsWith("/")){const i=new URL(c.href);i.pathname+=t,yield i.href}if(s){const i=new URL(c.href);i.pathname+=".html",yield i.href}if(r){const i=r({url:n});for(const o of i)yield o.href}}class Z extends w{constructor(e,t){const s=({request:r})=>{const n=e.getURLsToCacheKeys();for(const c of Y(r.url,t)){const i=n.get(c);if(i){const o=e.getIntegrityForCacheKey(i);return{cacheKey:i,integrity:o}}}};super(s,e.strategy)}}function ee(a){const e=K(),t=new Z(e,a);J(t)}function te(a){K().precache(a)}function se(a,e){te(a),ee(e)}self.addEventListener("message",a=>{a.data&&a.data.type==="SKIP_WAITING"&&self.skipWaiting()});se([{"revision":"7aeab2cc9edd5fbf347e21976330c17c","url":"index.html"},{"revision":null,"url":"assets/workbox-window.prod.es5-BqEJf4Xk.js"},{"revision":null,"url":"assets/useReveal-CE0IBSnz.js"},{"revision":null,"url":"assets/TransactionsView-QJUT0Agr.css"},{"revision":null,"url":"assets/TransactionsView-5Ti1Tz-b.js"},{"revision":null,"url":"assets/SectionHead-X7JFvmOG.css"},{"revision":null,"url":"assets/SectionHead-Cg_UnoI8.js"},{"revision":null,"url":"assets/SearchView-FqBYHVVr.css"},{"revision":null,"url":"assets/SearchView-CX3YDK4c.js"},{"revision":null,"url":"assets/SearchInput-C_6TS52w.js"},{"revision":null,"url":"assets/SearchInput-BkDeGG-K.css"},{"revision":null,"url":"assets/ReportView-dGzBNYXh.js"},{"revision":null,"url":"assets/ReportView-0o86enB4.css"},{"revision":null,"url":"assets/RateStrip-ljKA-iPt.js"},{"revision":null,"url":"assets/RateStrip-B0IIPPeC.css"},{"revision":null,"url":"assets/raf-nDFcuFT6.js"},{"revision":null,"url":"assets/ProfileView-CpqOGnPs.js"},{"revision":null,"url":"assets/ProfileView-15PPV3MU.css"},{"revision":null,"url":"assets/ProductCard-k7xfI-K2.js"},{"revision":null,"url":"assets/ProductCard-BaiSrMlA.css"},{"revision":null,"url":"assets/PageBar-Cz1N2fdD.js"},{"revision":null,"url":"assets/PageBar-Cjc9-xat.css"},{"revision":null,"url":"assets/OrdersView-UefU7h2O.css"},{"revision":null,"url":"assets/OrdersView-DfF-Dg7U.js"},{"revision":null,"url":"assets/orderStatus-DQMd9b1t.js"},{"revision":null,"url":"assets/NotificationsView-BpHQiLIG.css"},{"revision":null,"url":"assets/NotificationsView-BBfjG7fu.js"},{"revision":null,"url":"assets/notificationsStore-CycZP1fZ.js"},{"revision":null,"url":"assets/NewestView-DerjwzWa.css"},{"revision":null,"url":"assets/NewestView-BFhp5Jry.js"},{"revision":null,"url":"assets/LoginRegisterView-DrlMRoCO.js"},{"revision":null,"url":"assets/LoginRegisterView-CbO5D26D.css"},{"revision":null,"url":"assets/KeyCode-C6xc2Qke.js"},{"revision":null,"url":"assets/index-D3GLzZ3l.js"},{"revision":null,"url":"assets/index-BgbR-bph.js"},{"revision":null,"url":"assets/index-BFOyCNFT.js"},{"revision":null,"url":"assets/index-BAtEjZfz.css"},{"revision":null,"url":"assets/IamCallback-Cd0tQpyP.js"},{"revision":null,"url":"assets/HomeView-XsVegvBL.js"},{"revision":null,"url":"assets/HomeView-Dz_SFaCw.css"},{"revision":null,"url":"assets/FormItemContext-BNYzezPe.js"},{"revision":null,"url":"assets/filtersStore-CRo2e-wH.js"},{"revision":null,"url":"assets/filters-sld47Iy-.js"},{"revision":null,"url":"assets/FavoritesView-o6zfIXuM.js"},{"revision":null,"url":"assets/FavoritesView-CXia5ep7.css"},{"revision":null,"url":"assets/DashboardView-DTn8YzNG.js"},{"revision":null,"url":"assets/DashboardView-Dj4lvaLJ.css"},{"revision":null,"url":"assets/CustomerChoiceView-t2STlBIR.js"},{"revision":null,"url":"assets/CustomerChoiceView-BSt75k0Q.css"},{"revision":null,"url":"assets/CompleteProfileView-D9l9B3Tw.css"},{"revision":null,"url":"assets/CompleteProfileView-Bz-DU0Ra.js"},{"revision":null,"url":"assets/CollectionView-NYLhVKst.css"},{"revision":null,"url":"assets/CollectionView-B48MQuIc.js"},{"revision":null,"url":"assets/classCallCheck-BVPDkxOa.js"},{"revision":null,"url":"assets/ChildOrdersView-Dv3hDjiw.css"},{"revision":null,"url":"assets/ChildOrdersView-DaRQcTIW.js"},{"revision":null,"url":"assets/catalogStore-BuqGxGiV.js"},{"revision":null,"url":"assets/CartView-CIolGKJ4.js"},{"revision":null,"url":"assets/CartView-CbLBc7Rt.css"},{"revision":null,"url":"assets/AppPullRefresh-gZ_s2cpM.css"},{"revision":null,"url":"assets/AppPullRefresh-CsuQ3Y8x.js"},{"revision":null,"url":"assets/AppearanceView-DFGqsdWs.js"},{"revision":null,"url":"assets/AppearanceView-COyZOyul.css"},{"revision":"a6000389a44b0489dc5bfcb4bd9954a9","url":"favicon.ico"},{"revision":"3b17aaaa42469f15762c3be108c162ab","url":"icon-192.png"},{"revision":"4acf6a7f74f474aef993122284150950","url":"icon-512.png"},{"revision":"7beee8257643bc5b28fab4c3677ea3ff","url":"manifest.webmanifest"}]); +This is generally NOT safe. Learn more at https://bit.ly/wb-precache`;console.warn(i)}}}install(e){return k(e,async()=>{const t=new O;this.strategy.plugins.push(t);for(const[n,c]of this._urlsToCacheKeys){const i=this._cacheKeysToIntegrities.get(c),o=this._urlsToCacheModes.get(n),h=new Request(n,{integrity:i,cache:o,credentials:"same-origin"});await Promise.all(this.strategy.handleAll({params:{cacheKey:c},request:h,event:e}))}const{updatedURLs:s,notUpdatedURLs:r}=t;return{updatedURLs:s,notUpdatedURLs:r}})}activate(e){return k(e,async()=>{const t=await self.caches.open(this.strategy.cacheName),s=await t.keys(),r=new Set(this._urlsToCacheKeys.values()),n=[];for(const c of s)r.has(c.url)||(await t.delete(c),n.push(c.url));return{deletedURLs:n}})}getURLsToCacheKeys(){return this._urlsToCacheKeys}getCachedURLs(){return[...this._urlsToCacheKeys.keys()]}getCacheKeyForURL(e){const t=new URL(e,location.href);return this._urlsToCacheKeys.get(t.href)}getIntegrityForCacheKey(e){return this._cacheKeysToIntegrities.get(e)}async matchPrecache(e){const t=e instanceof Request?e.url:e,s=this.getCacheKeyForURL(t);if(s)return(await self.caches.open(this.strategy.cacheName)).match(s)}createHandlerBoundToURL(e){const t=this.getCacheKeyForURL(e);if(!t)throw new l("non-precached-url",{url:e});return s=>(s.request=new Request(e),s.params=Object.assign({cacheKey:t},s.params),this.strategy.handle(s))}}let b;const K=()=>(b||(b=new G),b);try{self["workbox:routing:7.4.0"]&&_()}catch{}const v="GET",R=a=>a&&typeof a=="object"?a:{handle:a};class w{constructor(e,t,s=v){this.handler=R(t),this.match=e,this.method=s}setCatchHandler(e){this.catchHandler=R(e)}}class V extends w{constructor(e,t,s){const r=({url:n})=>{const c=e.exec(n.href);if(c&&!(n.origin!==location.origin&&c.index!==0))return c.slice(1)};super(r,t,s)}}class Q{constructor(){this._routes=new Map,this._defaultHandlerMap=new Map}get routes(){return this._routes}addFetchListener(){self.addEventListener("fetch",e=>{const{request:t}=e,s=this.handleRequest({request:t,event:e});s&&e.respondWith(s)})}addCacheListener(){self.addEventListener("message",e=>{if(e.data&&e.data.type==="CACHE_URLS"){const{payload:t}=e.data,s=Promise.all(t.urlsToCache.map(r=>{typeof r=="string"&&(r=[r]);const n=new Request(...r);return this.handleRequest({request:n,event:e})}));e.waitUntil(s),e.ports&&e.ports[0]&&s.then(()=>e.ports[0].postMessage(!0))}})}handleRequest({request:e,event:t}){const s=new URL(e.url,location.href);if(!s.protocol.startsWith("http"))return;const r=s.origin===location.origin,{params:n,route:c}=this.findMatchingRoute({event:t,request:e,sameOrigin:r,url:s});let i=c&&c.handler;const o=e.method;if(!i&&this._defaultHandlerMap.has(o)&&(i=this._defaultHandlerMap.get(o)),!i)return;let h;try{h=i.handle({url:s,request:e,event:t,params:n})}catch(u){h=Promise.reject(u)}const g=c&&c.catchHandler;return h instanceof Promise&&(this._catchHandler||g)&&(h=h.catch(async u=>{if(g)try{return await g.handle({url:s,request:e,event:t,params:n})}catch(L){L instanceof Error&&(u=L)}if(this._catchHandler)return this._catchHandler.handle({url:s,request:e,event:t});throw u})),h}findMatchingRoute({url:e,sameOrigin:t,request:s,event:r}){const n=this._routes.get(s.method)||[];for(const c of n){let i;const o=c.match({url:e,sameOrigin:t,request:s,event:r});if(o)return i=o,(Array.isArray(i)&&i.length===0||o.constructor===Object&&Object.keys(o).length===0||typeof o=="boolean")&&(i=void 0),{route:c,params:i}}return{}}setDefaultHandler(e,t=v){this._defaultHandlerMap.set(t,R(e))}setCatchHandler(e){this._catchHandler=R(e)}registerRoute(e){this._routes.has(e.method)||this._routes.set(e.method,[]),this._routes.get(e.method).push(e)}unregisterRoute(e){if(!this._routes.has(e.method))throw new l("unregister-route-but-not-found-with-method",{method:e.method});const t=this._routes.get(e.method).indexOf(e);if(t>-1)this._routes.get(e.method).splice(t,1);else throw new l("unregister-route-route-not-registered")}}let y;const z=()=>(y||(y=new Q,y.addFetchListener(),y.addCacheListener()),y);function J(a,e,t){let s;if(typeof a=="string"){const n=new URL(a,location.href),c=({url:i})=>i.href===n.href;s=new w(c,e,t)}else if(a instanceof RegExp)s=new V(a,e,t);else if(typeof a=="function")s=new w(a,e,t);else if(a instanceof w)s=a;else throw new l("unsupported-route-type",{moduleName:"workbox-routing",funcName:"registerRoute",paramName:"capture"});return z().registerRoute(s),s}function X(a,e=[]){for(const t of[...a.searchParams.keys()])e.some(s=>s.test(t))&&a.searchParams.delete(t);return a}function*Y(a,{ignoreURLParametersMatching:e=[/^utm_/,/^fbclid$/],directoryIndex:t="index.html",cleanURLs:s=!0,urlManipulation:r}={}){const n=new URL(a,location.href);n.hash="",yield n.href;const c=X(n,e);if(yield c.href,t&&c.pathname.endsWith("/")){const i=new URL(c.href);i.pathname+=t,yield i.href}if(s){const i=new URL(c.href);i.pathname+=".html",yield i.href}if(r){const i=r({url:n});for(const o of i)yield o.href}}class Z extends w{constructor(e,t){const s=({request:r})=>{const n=e.getURLsToCacheKeys();for(const c of Y(r.url,t)){const i=n.get(c);if(i){const o=e.getIntegrityForCacheKey(i);return{cacheKey:i,integrity:o}}}};super(s,e.strategy)}}function ee(a){const e=K(),t=new Z(e,a);J(t)}function te(a){K().precache(a)}function se(a,e){te(a),ee(e)}self.addEventListener("message",a=>{a.data&&a.data.type==="SKIP_WAITING"&&self.skipWaiting()});se([{"revision":"17b91808feb18bacfae47c499b00199e","url":"index.html"},{"revision":null,"url":"assets/workbox-window.prod.es5-BqEJf4Xk.js"},{"revision":null,"url":"assets/useReveal-Dq2T90sy.js"},{"revision":null,"url":"assets/TransactionsView-QJUT0Agr.css"},{"revision":null,"url":"assets/TransactionsView-DU94ZdnQ.js"},{"revision":null,"url":"assets/SingleImageUploader-VLjcKc1D.css"},{"revision":null,"url":"assets/SingleImageUploader-CX4x2X-j.js"},{"revision":null,"url":"assets/SectionHead-X7JFvmOG.css"},{"revision":null,"url":"assets/SectionHead-CJoa_aGh.js"},{"revision":null,"url":"assets/SearchView-FqBYHVVr.css"},{"revision":null,"url":"assets/SearchView-DrsdyLde.js"},{"revision":null,"url":"assets/SearchInput-BkGXK-xm.js"},{"revision":null,"url":"assets/SearchInput-BkDeGG-K.css"},{"revision":null,"url":"assets/ReportView-BU1YURL5.js"},{"revision":null,"url":"assets/ReportView-0o86enB4.css"},{"revision":null,"url":"assets/RateStrip-D4hWdTta.js"},{"revision":null,"url":"assets/RateStrip-B0IIPPeC.css"},{"revision":null,"url":"assets/raf-nDFcuFT6.js"},{"revision":null,"url":"assets/ProfileView-wOkrkPJE.js"},{"revision":null,"url":"assets/ProfileView-15PPV3MU.css"},{"revision":null,"url":"assets/ProductCard-BaiSrMlA.css"},{"revision":null,"url":"assets/ProductCard-AevItfr3.js"},{"revision":null,"url":"assets/PageBar-DmOKrVEQ.js"},{"revision":null,"url":"assets/PageBar-Cjc9-xat.css"},{"revision":null,"url":"assets/OrdersView-BuGZsuud.js"},{"revision":null,"url":"assets/OrdersView-B7oGowL4.css"},{"revision":null,"url":"assets/orderStatus-DQMd9b1t.js"},{"revision":null,"url":"assets/NotificationsView-CaeA456U.js"},{"revision":null,"url":"assets/NotificationsView-BpHQiLIG.css"},{"revision":null,"url":"assets/notificationsStore-CEbLTUwx.js"},{"revision":null,"url":"assets/NewestView-U3MIVepY.js"},{"revision":null,"url":"assets/NewestView-DerjwzWa.css"},{"revision":null,"url":"assets/MakeOrderView-zElUhN37.css"},{"revision":null,"url":"assets/MakeOrderView-CPwGE5ee.js"},{"revision":null,"url":"assets/MakeOrderStatusView-CpLbykh8.css"},{"revision":null,"url":"assets/MakeOrderStatusView-CABGAYeD.js"},{"revision":null,"url":"assets/LoginRegisterView-CbO5D26D.css"},{"revision":null,"url":"assets/LoginRegisterView--xd-iA3G.js"},{"revision":null,"url":"assets/KeyCode-DsOsmuVa.js"},{"revision":null,"url":"assets/isEqual-CAQ2DK4R.js"},{"revision":null,"url":"assets/index-DXKwa_Wp.js"},{"revision":null,"url":"assets/index-DDItTnD7.js"},{"revision":null,"url":"assets/index-BAtEjZfz.css"},{"revision":null,"url":"assets/index-B-RmZRr2.js"},{"revision":null,"url":"assets/IamCallback-BVW6l1Z5.js"},{"revision":null,"url":"assets/HomeView-Dz_SFaCw.css"},{"revision":null,"url":"assets/HomeView-CytyOCPn.js"},{"revision":null,"url":"assets/FormItemContext-Buff0-hx.js"},{"revision":null,"url":"assets/filtersStore-B8ucFdIZ.js"},{"revision":null,"url":"assets/filters-BLs90kiz.js"},{"revision":null,"url":"assets/FavoritesView-mBGWEKpf.js"},{"revision":null,"url":"assets/FavoritesView-CXia5ep7.css"},{"revision":null,"url":"assets/DashboardView-CuieN8qk.js"},{"revision":null,"url":"assets/DashboardView-BuVa3lpc.css"},{"revision":null,"url":"assets/CustomerChoiceView-Ck51_wfq.css"},{"revision":null,"url":"assets/CustomerChoiceView-CCVW8w6E.js"},{"revision":null,"url":"assets/CompleteProfileView-DJF4Zx67.js"},{"revision":null,"url":"assets/CompleteProfileView-C-gvGVz2.css"},{"revision":null,"url":"assets/CollectionView-NYLhVKst.css"},{"revision":null,"url":"assets/CollectionView-BzWuMq0j.js"},{"revision":null,"url":"assets/classCallCheck-BMo4V_0Q.js"},{"revision":null,"url":"assets/ChildOrdersView-DcTtJnk7.js"},{"revision":null,"url":"assets/ChildOrdersView-3bFx9CUY.css"},{"revision":null,"url":"assets/catalogStore-D54EVMFO.js"},{"revision":null,"url":"assets/CartView-mD4jqxvD.js"},{"revision":null,"url":"assets/CartView-CWT8adxX.css"},{"revision":null,"url":"assets/AppPullRefresh-RDVLXVM_.js"},{"revision":null,"url":"assets/AppPullRefresh-gZ_s2cpM.css"},{"revision":null,"url":"assets/AppearanceView-Dvo5IEVp.js"},{"revision":null,"url":"assets/AppearanceView-COyZOyul.css"},{"revision":"a6000389a44b0489dc5bfcb4bd9954a9","url":"favicon.ico"},{"revision":"3b17aaaa42469f15762c3be108c162ab","url":"icon-192.png"},{"revision":"4acf6a7f74f474aef993122284150950","url":"icon-512.png"},{"revision":"7beee8257643bc5b28fab4c3677ea3ff","url":"manifest.webmanifest"}]); diff --git a/apps/user-app/dist/version.json b/apps/user-app/dist/version.json index f18c13b..29f5658 100644 --- a/apps/user-app/dist/version.json +++ b/apps/user-app/dist/version.json @@ -1,9 +1,9 @@ { "app": "user-app", - "build": 229, - "version": "1.229", - "commit": "6181940", - "builtAt": "2026-10-28T14:20:31.299Z", + "build": 231, + "version": "1.231", + "commit": "3eaecde", + "builtAt": "2026-10-31T07:52:50.361Z", "history": [ { "build": 183,